/* ============================================================
   科创赛事云 · Aurora Dark 深色科技设计系统  (v4.0)
   统一深色基底 / 青蓝辉光 / 玻璃卡片 / 等齐控件 / 翻页倒计时
   ============================================================ */
*{ margin:0; padding:0; box-sizing:border-box; }
:root{
  /* 基底层次 */
  --bg:#070b16; --bg-2:#0b1120; --surface:#111a2e; --surface-2:#16213a; --surface-3:#1c2947;
  --line:rgba(148,163,184,.13); --line-2:rgba(148,163,184,.22);
  /* 文字 */
  --ink:#f5f8ff; --text:#dce5f5; --muted:#8d9bb8; --faint:#7686a6;
  /* 主色青蓝 */
  --blue-900:#0a1730; --blue-800:#12306b; --blue-700:#1d4ed8; --blue-600:#3b82f6; --blue-500:#60a5fa;
  --cyan:#22d3ee; --cyan-soft:#67e8f9;
  --orange:#fb923c; --orange-600:#f97316; --orange-700:#ea580c;
  --purple:#a78bfa; --green:#34d399; --amber:#fbbf24; --red:#f87171;
  --grad:linear-gradient(135deg,#3b82f6 0%,#22d3ee 100%);
  --grad-soft:linear-gradient(135deg,rgba(59,130,246,.18),rgba(34,211,238,.12));
  --glow:0 0 0 1px rgba(56,189,248,.35),0 8px 28px -8px rgba(34,211,238,.45);
  --card-sh:0 18px 44px -20px rgba(0,0,0,.75);
  --radius:16px;
  /* 赛事主题色（由赛事页内联覆盖） */
  --th-primary:#3b82f6; --th-primary2:#22d3ee; --th-glow:rgba(56,189,248,.4);
}
html{ scroll-behavior:smooth; }
body{
  font-family:"PingFang SC","Microsoft YaHei","Helvetica Neue",Arial,sans-serif;
  color:var(--text); background:var(--bg);
  -webkit-font-smoothing:antialiased; text-rendering:optimizeLegibility;
}
body::before{ content:""; position:fixed; inset:0; z-index:-1; pointer-events:none;
  background:
   radial-gradient(900px 480px at 12% -8%, rgba(37,99,235,.16), transparent 60%),
   radial-gradient(820px 460px at 92% -4%, rgba(34,211,238,.10), transparent 60%);
}
a{ text-decoration:none; color:inherit; }
img{ display:block; max-width:100%; }
ul{ list-style:none; }
::selection{ background:rgba(34,211,238,.28); color:#fff; }
::-webkit-scrollbar{ width:10px; height:10px; }
::-webkit-scrollbar-track{ background:var(--bg); }
::-webkit-scrollbar-thumb{ background:#243150; border-radius:8px; border:2px solid var(--bg); }
::-webkit-scrollbar-thumb:hover{ background:#31436b; }
.container{ width:1200px; max-width:94%; margin:0 auto; }

/* ============ 按钮 / 控件统一（等齐高度、居中、间隙） ============ */
.btn{ display:inline-flex; align-items:center; justify-content:center; gap:7px; border:none; cursor:pointer;
  font-size:14px; font-weight:600; letter-spacing:.3px; line-height:1; font-family:inherit;
  border-radius:10px; padding:0 22px; height:40px; white-space:nowrap;
  transition:transform .18s ease, box-shadow .22s ease, background .2s ease, border-color .2s, color .2s, filter .2s;
  text-align:center; vertical-align:middle; }
.btn:active{ transform:translateY(1px); }
.btn.solid{ background:var(--grad); color:#fff; box-shadow:0 10px 24px -10px rgba(37,99,235,.7); }
.btn.solid:hover{ box-shadow:0 14px 30px -8px rgba(34,211,238,.6); filter:brightness(1.07); }
.btn.ghost{ background:rgba(148,163,184,.08); color:var(--text); border:1px solid var(--line-2); }
.btn.ghost:hover{ background:rgba(148,163,184,.14); border-color:rgba(148,163,184,.4); color:#fff; }
.btn.big{ height:48px; padding:0 32px; font-size:15px; border-radius:12px; }
.btn.sm{ height:32px; padding:0 14px; font-size:13px; border-radius:8px; }
.ico{ width:22px; height:22px; stroke:currentColor; fill:none; stroke-width:1.7; stroke-linecap:round; stroke-linejoin:round; flex:none;}
input,select,textarea{ font-family:inherit; }
input:focus,select:focus,textarea:focus{ outline:none; }
input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{ -webkit-appearance:none; margin:0; }
input[type=number]{ -moz-appearance:textfield; appearance:textfield; }
input[type=checkbox],input[type=radio]{ accent-color:#22d3ee; width:15px; height:15px; cursor:pointer; vertical-align:-2px; }

/* ============ 视图切换 ============ */
.view{ display:none; }
.view.active{ display:block; animation:fadeIn .45s ease; }
@keyframes fadeIn{ from{opacity:0; transform:translateY(10px);} to{opacity:1; transform:none;} }
.demo-switch{ position:fixed; bottom:24px; left:50%; transform:translateX(-50%); z-index:999;
  background:rgba(13,19,34,.82); backdrop-filter:blur(14px); border:1px solid var(--line-2);
  border-radius:999px; padding:7px 10px; display:flex; align-items:center; gap:4px;
  box-shadow:0 16px 44px rgba(0,0,0,.6); }
.demo-label{ color:var(--faint); font-size:12px; padding:0 12px; border-right:1px solid var(--line-2); margin-right:4px; }
.demo-switch button{ border:none; cursor:pointer; background:transparent; color:var(--muted); font-size:13px;
  padding:8px 16px; border-radius:999px; font-family:inherit; transition:.2s; white-space:nowrap; }
.demo-switch button:hover{ color:#fff; }
.demo-switch button.on{ background:var(--grad); color:#fff; box-shadow:0 6px 16px -6px rgba(34,211,238,.6); }

/* ============ 顶部信息条 ============ */
.topbar{ background:rgba(7,11,22,.9); backdrop-filter:blur(10px); color:var(--faint); font-size:12px;
  border-bottom:1px solid var(--line); }
.topbar-in{ display:flex; justify-content:space-between; align-items:center; height:36px; }
.topbar a{ color:var(--muted); margin-left:18px; transition:.2s; }
.topbar a:hover{ color:var(--cyan-soft); }
.topbar .hl{ color:var(--cyan-soft); }

/* ============ 导航 ============ */
.nav{ background:rgba(11,17,32,.82); backdrop-filter:blur(14px); border-bottom:1px solid var(--line);
  position:sticky; top:0; z-index:100; }
.nav-in{ display:flex; align-items:center; height:66px; gap:36px; }
.logo{ display:flex; align-items:center; gap:11px; }
.logo-mark{ width:40px; height:40px; border-radius:11px; background:var(--grad); color:#fff; font-weight:700;
  font-size:17px; display:flex; align-items:center; justify-content:center;
  box-shadow:0 8px 20px -8px rgba(34,211,238,.7), inset 0 1px 0 rgba(255,255,255,.25); }
.logo b{ font-size:17px; color:var(--ink); display:block; line-height:1.25; font-weight:700; letter-spacing:.5px; }
.logo i{ font-style:normal; font-size:9.5px; color:var(--faint); letter-spacing:1.6px; }
.nav nav{ display:flex; gap:28px; flex:1; }
.nav nav a{ font-size:14.5px; color:var(--muted); padding:7px 2px; border-bottom:2px solid transparent; transition:.2s; }
.nav nav a.on, .nav nav a:hover{ color:#fff; border-bottom-color:var(--cyan); }
.nav-acts{ display:flex; gap:10px; }

/* ============ Hero ============ */
.hero{ position:relative; overflow:hidden; color:#fff;
  background:radial-gradient(1100px 520px at 80% -10%,rgba(34,211,238,.14),transparent 55%),
             linear-gradient(135deg,#0a1430 0%,#0b1120 55%,#081426 100%);
  border-bottom:1px solid var(--line); }
.hero::before{ content:""; position:absolute; inset:0;
  background-image:linear-gradient(rgba(148,163,184,.07) 1px,transparent 1px),linear-gradient(90deg,rgba(148,163,184,.07) 1px,transparent 1px);
  background-size:46px 46px;
  -webkit-mask-image:radial-gradient(ellipse 90% 120% at 30% 0%,#000 30%,transparent 78%);
  mask-image:radial-gradient(ellipse 90% 120% at 30% 0%,#000 30%,transparent 78%); }
.hero-nebula{ position:absolute; inset:0; width:100%; height:100%; z-index:0; pointer-events:none; }
.hero-in{ position:relative; z-index:1; display:grid; grid-template-columns:1.12fr .88fr; gap:48px; align-items:center; padding:72px 0 80px; }
.hero-badge{ display:inline-flex; align-items:center; gap:8px; font-size:13px; color:var(--cyan-soft);
  background:rgba(34,211,238,.08); border:1px solid rgba(34,211,238,.28); padding:7px 15px; border-radius:999px; margin-bottom:24px; }
.hero-badge::before{ content:""; width:7px; height:7px; border-radius:50%; background:var(--cyan); box-shadow:0 0 10px var(--cyan); }
.hero h1{ font-size:46px; line-height:1.26; margin-bottom:20px; letter-spacing:1px; font-weight:800; }
.hero h1 em{ font-style:normal; background:linear-gradient(90deg,#60a5fa,#22d3ee); -webkit-background-clip:text; background-clip:text; -webkit-text-fill-color:transparent; }
.hero p{ font-size:15px; line-height:1.95; color:#aebcd6; max-width:560px; }
.hero p b{ color:#fff; font-weight:600; }
.hero-search{ display:flex; margin-top:30px; max-width:520px; background:rgba(255,255,255,.06);
  border:1px solid var(--line-2); border-radius:13px; overflow:hidden; transition:.2s; }
.hero-search:focus-within{ border-color:rgba(34,211,238,.5); box-shadow:var(--glow); }
.hero-search input{ flex:1; border:none; outline:none; padding:16px 18px; font-size:14px; font-family:inherit; background:transparent; color:#fff; }
.hero-search input::placeholder{ color:var(--faint); }
.hero-search button{ border:none; background:var(--grad); color:#fff; font-size:15px; font-weight:600; padding:0 30px; cursor:pointer; font-family:inherit; }
.hero-tags{ margin-top:18px; font-size:13px; color:var(--faint); display:flex; align-items:center; gap:14px; flex-wrap:wrap; }
.hero-tags a{ color:var(--muted); transition:.2s; }
.hero-tags a:hover{ color:var(--cyan-soft); }
.hero-img{ position:relative; border-radius:20px; overflow:hidden; min-height:340px;
  border:1px solid var(--line-2); background:linear-gradient(160deg,#122046,#0c1730);
  box-shadow:0 30px 70px -24px rgba(0,0,0,.8), inset 0 1px 0 rgba(255,255,255,.06); }
.hero-img img{ width:100%; height:100%; object-fit:cover; }

/* Hero 自有科技视觉（替代外链图） */
.hero-visual{ position:absolute; inset:0; display:flex; align-items:center; justify-content:center; }
.hv-ring{ position:absolute; border-radius:50%; border:1px solid rgba(56,189,248,.22); }
.hv-ring.r1{ width:300px; height:300px; border-style:dashed; animation:spin 26s linear infinite; }
.hv-ring.r2{ width:210px; height:210px; border-color:rgba(96,165,250,.28); animation:spin 18s linear infinite reverse; }
.hv-ring.r3{ width:120px; height:120px; background:radial-gradient(circle at 35% 30%,rgba(56,189,248,.35),rgba(37,99,235,.08) 70%,transparent); box-shadow:0 0 60px rgba(34,211,238,.35) inset; }
.hv-core{ position:relative; z-index:2; width:74px; height:74px; border-radius:20px; background:var(--grad);
  display:flex; align-items:center; justify-content:center; box-shadow:0 0 50px rgba(34,211,238,.55); }
.hv-core svg{ width:40px; height:40px; stroke:#fff; }
.hv-dot{ position:absolute; width:9px; height:9px; border-radius:50%; background:var(--cyan); box-shadow:0 0 14px var(--cyan); }
@keyframes spin{ to{ transform:rotate(360deg); } }

/* ============ 统计条 ============ */
.stats{ background:var(--bg-2); border-bottom:1px solid var(--line); border-top:1px solid var(--line); }
.stats-in{ display:grid; grid-template-columns:repeat(6,1fr); }
.stats-in>div{ text-align:center; padding:26px 8px; border-right:1px solid var(--line); position:relative; }
.stats-in>div:last-child{ border-right:none; }
.stats-in b{ font-size:28px; font-weight:800; display:block;
  background:linear-gradient(180deg,#fff,#9fc4ff); -webkit-background-clip:text; background-clip:text; -webkit-text-fill-color:transparent; }
.stats-in span{ font-size:13px; color:var(--muted); }

/* ============ 通用区块 ============ */
.sec{ padding:72px 0; }
.sec.alt{ background:var(--bg-2); border-top:1px solid var(--line); border-bottom:1px solid var(--line); }
.sec-head{ text-align:center; margin-bottom:46px; }
.sec-head h2{ font-size:29px; color:var(--ink); font-weight:800; position:relative; display:inline-block; padding-bottom:15px; letter-spacing:.5px; }
.sec-head h2::after{ content:""; position:absolute; left:50%; transform:translateX(-50%); bottom:0; width:52px; height:4px; border-radius:4px; background:var(--grad); box-shadow:0 0 14px rgba(34,211,238,.6); }
.sec-head p{ margin-top:14px; color:var(--muted); font-size:14px; }

/* 通用玻璃卡片 */
.cat,.ev-card,.feat,.partner,.open-card,.tree-box,.sso-box,.p-card,.p-two-wrap,.p-note,.qz-card,.qz-quiz{
  background:linear-gradient(165deg,rgba(255,255,255,.045),rgba(255,255,255,.012));
  border:1px solid var(--line); border-radius:var(--radius); box-shadow:var(--card-sh);
}

/* ============ 赛事分类 ============ */
.cat-grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:22px; }
.cat{ padding:28px 24px; transition:.28s; position:relative; overflow:hidden; }
.cat::before{ content:""; position:absolute; inset:0 0 auto 0; height:2px; background:var(--grad); opacity:0; transition:.28s; }
.cat:hover{ transform:translateY(-6px); border-color:rgba(56,189,248,.35); box-shadow:0 22px 48px -18px rgba(0,0,0,.8),0 0 0 1px rgba(56,189,248,.2); }
.cat:hover::before{ opacity:1; }
.cat-ico{ width:54px; height:54px; border-radius:14px; display:flex; align-items:center; justify-content:center; margin-bottom:18px;
  background:var(--bg,var(--grad-soft)); border:1px solid var(--line-2); color:#fff; box-shadow:0 10px 22px -12px rgba(0,0,0,.7); }
.cat-ico .ico{ width:27px; height:27px; }
.cat h3{ font-size:17px; margin-bottom:9px; color:var(--ink); }
.cat p{ font-size:13px; color:var(--muted); line-height:1.75; margin-bottom:15px; }
.cat-tags{ display:flex; flex-wrap:wrap; gap:8px; }
.cat-tags span{ font-size:12px; background:rgba(59,130,246,.12); color:#9cc6ff; border:1px solid rgba(59,130,246,.2); padding:4px 11px; border-radius:999px; }

/* ============ 赛事卡片 ============ */
.ev-grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:22px; }
.ev-card{ overflow:hidden; transition:.28s; display:flex; flex-direction:column; }
.ev-card:hover{ transform:translateY(-6px); border-color:rgba(56,189,248,.35); box-shadow:0 22px 48px -18px rgba(0,0,0,.8); }
.ev-img{ position:relative; height:158px; overflow:hidden;
  background:linear-gradient(135deg,#16244d,#0c1730); border-bottom:1px solid var(--line); }
.ev-img img{ width:100%; height:100%; object-fit:cover; }
.ev-img::after{ content:""; position:absolute; inset:0;
  background-image:linear-gradient(rgba(148,163,184,.08) 1px,transparent 1px),linear-gradient(90deg,rgba(148,163,184,.08) 1px,transparent 1px);
  background-size:26px 26px; opacity:.6; }
.ev-img .ev-ph{ position:absolute; inset:0; display:flex; align-items:center; justify-content:center; color:rgba(103,232,249,.5); z-index:1; }
.ev-img .ev-ph svg{ width:46px; height:46px; }
.ev-badges{ position:absolute; top:11px; left:11px; display:flex; gap:8px; z-index:2; }
.tag{ font-size:11px; padding:4px 11px; border-radius:999px; color:#fff; font-weight:600; letter-spacing:.3px; }
.tag.c{ background:rgba(59,130,246,.92); } .tag.a{ background:rgba(139,92,246,.92); }
.tag.s{ background:rgba(16,185,129,.92); } .tag.g{ background:var(--green); color:#04241a; }
.tag.b{ background:var(--blue-600); } .tag.o{ background:var(--amber); color:#3a2a00; } .tag.w{ background:#475569; }
.ev-body{ padding:17px 17px 9px; flex:1; }
.ev-body h3{ font-size:15px; line-height:1.5; height:45px; overflow:hidden; color:var(--ink); font-weight:600; }
.ev-meta{ margin-top:11px; font-size:12px; color:var(--muted); line-height:1.95; }
.ev-meta b{ color:#9cc6ff; font-weight:600; }
.ev-foot{ display:flex; justify-content:space-between; align-items:center; padding:13px 17px; border-top:1px solid var(--line); font-size:12px; color:var(--faint); }
.ev-foot a{ color:var(--cyan-soft); font-size:13px; font-weight:600; }

/* ============ 核心能力 ============ */
.feat-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:22px; }
.feat{ padding:26px 24px; display:flex; gap:17px; transition:.28s; }
.feat:hover{ transform:translateY(-5px); border-color:rgba(56,189,248,.3); box-shadow:0 22px 48px -18px rgba(0,0,0,.8); }
.feat-ico{ flex:none; width:48px; height:48px; border-radius:13px; background:var(--grad); color:#fff;
  display:flex; align-items:center; justify-content:center; box-shadow:0 10px 22px -10px rgba(34,211,238,.7); }
.feat h3{ font-size:16px; margin-bottom:7px; color:var(--ink); }
.feat p{ font-size:13px; color:var(--muted); line-height:1.8; }

/* ============ 独立门户体系 ============ */
.ps-grid{ display:grid; grid-template-columns:.9fr 1.1fr; gap:44px; align-items:center; }
.ps-info h3{ font-size:24px; margin-bottom:17px; color:var(--ink); }
.ps-info>p{ color:var(--muted); font-size:14px; line-height:1.95; margin-bottom:22px; }
.ps-list li{ display:flex; gap:10px; font-size:14px; line-height:2.05; color:var(--text); }
.ps-list .dot{ color:var(--cyan); font-weight:700; }
.ps-cta{ margin-top:28px; display:flex; gap:12px; }
.ps-diagram{ background:linear-gradient(160deg,rgba(59,130,246,.1),rgba(34,211,238,.05));
  border:1px solid rgba(56,189,248,.22); border-radius:20px; padding:28px; }
.mini-row{ display:grid; grid-template-columns:repeat(3,1fr); gap:12px; }
.mini-portal{ background:rgba(13,19,34,.7); border:1px solid var(--line-2); border-radius:12px; padding:13px; border-top:3px solid var(--mp,var(--cyan)); }
.mini-portal .mp-bar{ display:flex; gap:5px; margin-bottom:9px; }
.mini-portal .mp-bar i{ width:7px; height:7px; border-radius:50%; background:#2a3a5e; }
.mini-portal b{ font-size:12px; display:block; margin-bottom:4px; color:var(--text); }
.mini-portal span{ font-size:10px; color:var(--faint); display:block; line-height:1.6; }
.mini-portal em{ font-style:normal; font-size:10px; margin-top:7px; display:inline-block; padding:2px 8px; border-radius:999px; background:rgba(148,163,184,.12); color:var(--muted); }
.dg-arrow{ text-align:center; color:var(--faint); font-size:12px; padding:11px 0; letter-spacing:3px; }
.dg-bar{ background:rgba(13,19,34,.7); border:1px solid var(--line-2); border-radius:12px; padding:13px 17px; margin-bottom:12px; }
.dg-bar b{ font-size:12px; color:#9cc6ff; display:block; margin-bottom:9px; }
.dg-chips{ display:flex; flex-wrap:wrap; gap:8px; }
.dg-chips span{ font-size:11px; padding:4px 12px; border-radius:999px; background:rgba(59,130,246,.12); color:#9cc6ff; border:1px solid rgba(59,130,246,.18); }
.dg-bar.data b{ color:var(--cyan-soft); }
.dg-bar.data .dg-chips span{ background:rgba(34,211,238,.1); color:var(--cyan-soft); border-color:rgba(34,211,238,.2); }

/* ============ 第三方入驻 ============ */
.partner-grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:22px; margin-bottom:42px; }
.partner{ padding:30px 24px; text-align:center; transition:.28s; }
.partner:hover{ transform:translateY(-6px); border-color:rgba(56,189,248,.3); }
.partner .p-ico{ width:58px; height:58px; margin:0 auto 17px; border-radius:16px;
  background:var(--grad-soft); border:1px solid var(--line-2); color:var(--cyan-soft); display:flex; align-items:center; justify-content:center; }
.partner h3{ font-size:16px; margin-bottom:11px; color:var(--ink); }
.partner p{ font-size:12.5px; color:var(--muted); line-height:1.85; }
.flow{ display:grid; grid-template-columns:repeat(4,1fr);
  background:linear-gradient(165deg,rgba(255,255,255,.04),rgba(255,255,255,.01)); border:1px solid var(--line); border-radius:16px; overflow:hidden; }
.flow-step{ padding:26px 24px; border-right:1px solid var(--line); position:relative; }
.flow-step:last-child{ border-right:none; }
.flow-step i{ font-style:normal; font-size:12px; font-weight:700; color:#fff; background:var(--grad); width:28px; height:28px;
  border-radius:50%; display:inline-flex; align-items:center; justify-content:center; margin-bottom:13px; box-shadow:0 6px 14px -4px rgba(34,211,238,.6); }
.flow-step b{ display:block; font-size:15px; margin-bottom:7px; color:var(--ink); }
.flow-step span{ font-size:12px; color:var(--muted); line-height:1.75; display:block; }

/* ============ 三库 + SSO ============ */
.data-grid{ display:grid; grid-template-columns:1fr 1fr; gap:26px; }
.tree-box,.sso-box{ padding:32px; }
.tree-box h3,.sso-box h3{ font-size:18px; margin-bottom:7px; color:var(--ink); }
.tree-box .sub,.sso-box .sub{ font-size:13px; color:var(--muted); margin-bottom:23px; }
.tree{ background:rgba(7,11,22,.5); border:1px solid var(--line); border-radius:12px; padding:18px 22px; margin-bottom:18px; }
.tree-row{ display:flex; align-items:center; gap:12px; padding:10px 0; border-bottom:1px dashed var(--line); font-size:14px; }
.tree-row:last-child{ border-bottom:none; }
.tree-row .lv{ font-size:11px; color:#fff; background:var(--grad); border-radius:6px; padding:2px 9px; flex:none; }
.tree-row b{ color:#9cc6ff; }
.tree-row span:not(.lv){ color:var(--faint); font-size:12px; margin-left:auto; }
.tree-chips{ display:flex; flex-wrap:wrap; gap:10px; }
.tree-chips span{ font-size:12px; background:rgba(34,211,238,.09); color:var(--cyan-soft); border:1px solid rgba(34,211,238,.18); padding:6px 14px; border-radius:999px; }
.sso-steps{ display:flex; flex-direction:column; margin-bottom:22px; }
.sso-step{ display:flex; gap:16px; }
.sso-step .no{ flex:none; width:34px; height:34px; border-radius:50%; background:var(--grad-soft); border:1px solid rgba(56,189,248,.3); color:var(--cyan-soft); font-weight:700; display:flex; align-items:center; justify-content:center; font-size:14px; }
.sso-step .tx{ padding-bottom:23px; border-left:2px dashed var(--line-2); margin-left:-25px; padding-left:34px; }
.sso-step:last-child .tx{ border-left-color:transparent; padding-bottom:0; }
.sso-step b{ font-size:15px; display:block; margin:6px 0 4px; color:var(--ink); }
.sso-step span{ font-size:13px; color:var(--muted); line-height:1.75; display:block; }
.sso-note{ background:rgba(251,191,36,.08); border:1px solid rgba(251,191,36,.28); color:#fcd9a1; font-size:12.5px; border-radius:11px; padding:13px 17px; line-height:1.75; }

/* ============ 架构图 ============ */
.arch-wrap{ display:grid; grid-template-columns:1fr 220px; gap:20px; align-items:stretch; }
.arch{ display:flex; flex-direction:column; gap:11px; }
.arch-layer{ display:grid; grid-template-columns:118px 1fr; border-radius:14px; overflow:hidden; border:1px solid var(--line); }
.arch-name{ color:#fff; display:flex; align-items:center; justify-content:center; font-size:14px; font-weight:600; padding:18px 8px; text-align:center; line-height:1.5; }
.arch-chips{ background:rgba(7,11,22,.55); display:flex; flex-wrap:wrap; gap:8px; align-items:center; padding:16px 18px; }
.arch-chips span{ font-size:12px; padding:6px 14px; border-radius:8px; background:rgba(148,163,184,.1); color:var(--text); border:1px solid var(--line-2); }
.l1 .arch-name{ background:linear-gradient(135deg,#1e3a8a,#1d4ed8);} .l1 .arch-chips span{ background:rgba(59,130,246,.14); color:#bcd4ff; border-color:rgba(59,130,246,.28);}
.l2 .arch-name{ background:linear-gradient(135deg,#1d4ed8,#0ea5e9);} .l2 .arch-chips span{ background:rgba(14,165,233,.12); color:#bae0fd; border-color:rgba(14,165,233,.26);}
.l3 .arch-name{ background:linear-gradient(135deg,#0e7490,#06b6d4);} .l3 .arch-chips span{ background:rgba(6,182,212,.12); color:#a5f3fc; border-color:rgba(6,182,212,.26);}
.l4 .arch-name{ background:linear-gradient(135deg,#6d28d9,#8b5cf6);} .l4 .arch-chips span{ background:rgba(139,92,246,.14); color:#ddd6fe; border-color:rgba(139,92,246,.28);}
.l5 .arch-name{ background:linear-gradient(135deg,#334155,#475569);} .l5 .arch-chips span{ background:rgba(100,116,139,.16); color:#cbd5e1; border-color:rgba(100,116,139,.3);}
.arch-side{ background:linear-gradient(180deg,#0e1a3a,#0a1330); border:1px solid var(--line-2); border-radius:14px; color:#fff; padding:24px 20px; display:flex; flex-direction:column; }
.arch-side b{ font-size:15px; margin-bottom:6px; }
.arch-side .sub{ font-size:11px; color:var(--faint); margin-bottom:18px; display:block; }
.arch-side ul{ display:flex; flex-direction:column; gap:12px; flex:1; }
.arch-side li{ background:rgba(255,255,255,.05); border:1px solid rgba(255,255,255,.12); border-radius:10px; padding:11px 14px; font-size:12.5px; }
.arch-side li b{ font-size:13px; display:block; margin:0 0 2px; color:var(--cyan-soft); }
.arch-side li span{ color:var(--muted); font-size:11px; }

/* ============ 开放能力 ============ */
.open-grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:22px; margin-bottom:26px; }
.open-card{ padding:26px; transition:.28s; }
.open-card:hover{ transform:translateY(-5px); border-color:rgba(56,189,248,.3); }
.open-card .o-ico{ width:46px; height:46px; border-radius:12px; background:var(--grad-soft); border:1px solid var(--line-2); color:var(--cyan-soft); display:flex; align-items:center; justify-content:center; margin-bottom:17px; }
.open-card h3{ font-size:15px; margin-bottom:9px; color:var(--ink); }
.open-card p{ font-size:12.5px; color:var(--muted); line-height:1.8; }
.code-box{ background:#060a14; border:1px solid var(--line-2); border-radius:16px; padding:28px 32px; overflow-x:auto; }
.code-box .cmt{ color:var(--faint); font-size:13px; margin-bottom:14px; }
.code-box pre{ font-family:"Cascadia Code",Consolas,"Courier New",monospace; font-size:13px; line-height:2.05; color:#cdd9ee; }
.code-box .k{ color:#7dd3fc; } .code-box .m{ color:#fbbf24; } .code-box .g{ color:#86efac; }

/* ============ Footer ============ */
.footer{ background:#05080f; color:var(--muted); padding:56px 0 28px; border-top:1px solid var(--line); }
.f-grid{ display:grid; grid-template-columns:1.4fr 1fr 1fr 1fr; gap:32px; margin-bottom:38px; }
.f-brand .logo-mark{ margin-bottom:15px; }
.f-brand p{ font-size:13px; line-height:1.95; }
.f-grid h4{ color:#fff; font-size:15px; margin-bottom:17px; }
.f-grid li{ font-size:13px; line-height:2.5; }
.f-grid li a{ transition:.2s; }
.f-grid li a:hover{ color:var(--cyan-soft); }
.f-bottom{ border-top:1px solid rgba(148,163,184,.12); padding-top:23px; font-size:12px; color:var(--faint); display:flex; justify-content:space-between; flex-wrap:wrap; gap:8px; }
.f-bottom a{ color:var(--muted); } .f-bottom a:hover{ color:var(--cyan-soft); }

/* ============================================================
   赛事独立门户 .p-* （皮肤系统 + 赛事主题色辉光）
   皮肤只改语义变量，不改结构；强调色 --th-* 与皮肤正交
   ============================================================ */
#ev-root{ min-height:100vh; background:var(--bg); color:var(--text); }

/* ---- 默认：科技深色 dark-tech ---- */
#ev-root[data-skin="dark-tech"], #ev-root{
  --bg:#070b16; --bg-2:#0b1120; --surface:#111a2e; --surface-2:#16213a;
  --line:rgba(148,163,184,.13); --line-2:rgba(148,163,184,.22);
  --ink:#f5f8ff; --text:#dce5f5; --muted:#8d9bb8; --faint:#7686a6;
  --pv-nav:rgba(11,17,32,.85); --pv-footer:#05080f; --pv-input:#0c1426;
  --pv-hero:radial-gradient(1000px 480px at 85% -10%,var(--th-glow),transparent 60%),linear-gradient(120deg,#0a1228 0%,#0b1120 60%,#0a1526 120%);
  --pv-hero-ink:#ffffff; --pv-hero-sub:#bcd0f2; --pv-hero-p:#9db0d0;
  --pv-inset:rgba(7,11,22,.45); --pv-inset-2:rgba(7,11,22,.5); --pv-th-bg:rgba(7,11,22,.5);
  --pv-card-grad:linear-gradient(165deg,rgba(255,255,255,.045),rgba(255,255,255,.012));
  --pv-input-mix:#0c1426;
}
/* ---- 浅色清爽 light ---- */
#ev-root[data-skin="light"]{
  --bg:#f4f7fc; --bg-2:#eef2f9; --surface:#ffffff; --surface-2:#f1f5fb;
  --line:rgba(15,40,80,.10); --line-2:rgba(15,40,80,.18);
  --ink:#0f1c33; --text:#28364f; --muted:#51607c; --faint:#66738b;
  --pv-nav:rgba(255,255,255,.88); --pv-footer:#e9eef6; --pv-input:#ffffff;
  --pv-hero:linear-gradient(120deg,#eaf1ff 0%,#f7faff 100%);
  --pv-hero-ink:#10244a; --pv-hero-sub:#3a4d72; --pv-hero-p:#556685;
  --pv-inset:#f1f5fb; --pv-inset-2:#eaf0f8; --pv-th-bg:#eef2f9;
  --pv-card-grad:linear-gradient(165deg,#ffffff,#f6f9fe); --pv-input-mix:#eef3fa;
}
/* ---- 官方庄重 official（浅内容 + 藏青 hero） ---- */
#ev-root[data-skin="official"]{
  --bg:#f5f6f8; --bg-2:#eceff4; --surface:#ffffff; --surface-2:#f1f3f7;
  --line:rgba(20,33,61,.10); --line-2:rgba(20,33,61,.20);
  --ink:#14213d; --text:#33415c; --muted:#52607a; --faint:#66728a;
  --pv-nav:rgba(255,255,255,.92); --pv-footer:#e7ebf1; --pv-input:#ffffff;
  --pv-hero:linear-gradient(125deg,#14213d 0%,#1d325c 120%);
  --pv-hero-ink:#ffffff; --pv-hero-sub:#cdd8ec; --pv-hero-p:#aebcd6;
  --pv-inset:#eef1f6; --pv-inset-2:#e9edf3; --pv-th-bg:#eef1f6;
  --pv-card-grad:linear-gradient(165deg,#ffffff,#f7f9fc); --pv-input-mix:#eef1f6;
}
/* ---- 沉稳大气 calm（石墨深色，低饱和） ---- */
#ev-root[data-skin="calm"]{
  --bg:#0c1016; --bg-2:#10151d; --surface:#161c26; --surface-2:#1d2430;
  --line:rgba(180,195,215,.10); --line-2:rgba(180,195,215,.20);
  --ink:#eef2f8; --text:#cbd4e0; --muted:#8b97a8; --faint:#7a889c;
  --pv-nav:rgba(16,21,29,.88); --pv-footer:#080b10; --pv-input:#141a24;
  --pv-hero:linear-gradient(125deg,#161e2b 0%,#0d1219 120%);
  --pv-hero-ink:#ffffff; --pv-hero-sub:#c2ccda; --pv-hero-p:#98a5b8;
  --pv-inset:rgba(0,0,0,.30); --pv-inset-2:rgba(0,0,0,.36); --pv-th-bg:rgba(0,0,0,.30);
  --pv-card-grad:linear-gradient(165deg,rgba(255,255,255,.035),rgba(255,255,255,.008)); --pv-input-mix:#141a24;
}
/* ---- 科幻活泼 playful（紫粉霓虹） ---- */
#ev-root[data-skin="playful"]{
  --bg:#0d0a1c; --bg-2:#130e28; --surface:#1b1438; --surface-2:#241a48;
  --line:rgba(190,170,255,.14); --line-2:rgba(190,170,255,.26);
  --ink:#f7f3ff; --text:#e4dbfb; --muted:#a99cc9; --faint:#9c8ec6;
  --pv-nav:rgba(19,14,40,.86); --pv-footer:#0a0718; --pv-input:#191233;
  --pv-hero:radial-gradient(1000px 480px at 85% -10%,rgba(167,139,250,.25),transparent 60%),linear-gradient(125deg,#1a1040 0%,#120c2a 120%);
  --pv-hero-ink:#ffffff; --pv-hero-sub:#d9ccff; --pv-hero-p:#b6a8e0;
  --pv-inset:rgba(0,0,0,.32); --pv-inset-2:rgba(0,0,0,.40); --pv-th-bg:rgba(0,0,0,.32);
  --pv-card-grad:linear-gradient(165deg,rgba(255,255,255,.05),rgba(255,255,255,.012)); --pv-input-mix:#191233;
}
/* ---- 极光幻彩 aurora（青绿紫流光） ---- */
#ev-root[data-skin="aurora"]{
  --bg:#07121a; --bg-2:#0a1822; --surface:#0f2029; --surface-2:#142a33;
  --line:rgba(120,220,210,.12); --line-2:rgba(120,220,210,.22);
  --ink:#f0fbf9; --text:#d3ece8; --muted:#86b3ad; --faint:#83ada7;
  --pv-nav:rgba(10,24,34,.86); --pv-footer:#050d12; --pv-input:#0d1e25;
  --pv-hero:radial-gradient(900px 460px at 12% -10%,rgba(52,211,153,.18),transparent 60%),radial-gradient(900px 460px at 90% 0,rgba(34,211,238,.16),transparent 60%),linear-gradient(125deg,#082027 0%,#07121a 120%);
  --pv-hero-ink:#ffffff; --pv-hero-sub:#c4ece4; --pv-hero-p:#9cc9c2;
  --pv-inset:rgba(0,0,0,.30); --pv-inset-2:rgba(0,0,0,.38); --pv-th-bg:rgba(0,0,0,.30);
  --pv-card-grad:linear-gradient(165deg,rgba(255,255,255,.045),rgba(255,255,255,.01)); --pv-input-mix:#0d1e25;
}

.p-ribbon{ background:linear-gradient(90deg,rgba(59,130,246,.16),rgba(34,211,238,.1)); color:#cfe0fb;
  text-align:center; font-size:12.5px; padding:10px 16px; line-height:1.7; border-bottom:1px solid var(--line); }
.p-ribbon b{ color:var(--cyan-soft); }
.p-nav{ background:var(--pv-nav); backdrop-filter:blur(14px); border-bottom:1px solid var(--line); position:sticky; top:0; z-index:100; }
.p-nav-in{ display:flex; align-items:center; height:68px; gap:34px; }
.p-logo{ display:flex; align-items:center; gap:12px; }
.p-badge{ width:44px; height:44px; border-radius:12px; background:linear-gradient(135deg,var(--th-primary),var(--th-primary2)); color:#fff;
  font-size:15px; font-weight:700; display:flex; align-items:center; justify-content:center;
  box-shadow:0 8px 20px -8px var(--th-glow); }
.p-logo b{ font-size:16.5px; display:block; line-height:1.35; color:var(--ink); }
.p-logo i{ font-style:normal; font-size:11px; color:var(--faint); }
.p-nav nav{ display:flex; gap:24px; flex:1; }
.p-nav nav a{ font-size:14.5px; padding:7px 2px; color:var(--muted); border-bottom:2px solid transparent; transition:.2s; }
.p-nav nav a.on,.p-nav nav a:hover{ color:var(--ink); border-bottom-color:var(--th-primary); }
.p-btn{ background:linear-gradient(120deg,var(--th-primary),var(--th-primary2)); color:#fff; box-shadow:0 10px 24px -10px var(--th-glow); }
.p-btn:hover{ filter:brightness(1.1); color:#fff; }
.p-ghost{ background:color-mix(in srgb,var(--ink) 6%,transparent); color:var(--ink); border:1.5px solid color-mix(in srgb,var(--th-primary) 60%,transparent); }
.p-ghost:hover{ background:color-mix(in srgb,var(--ink) 12%,transparent); color:var(--ink); }
.p-cta .p-ghost{ color:var(--pv-hero-ink); border-color:color-mix(in srgb,var(--pv-hero-ink) 55%,transparent);
  background:color-mix(in srgb,var(--pv-hero-ink) 7%,transparent); }
.p-cta .p-ghost:hover{ background:color-mix(in srgb,var(--pv-hero-ink) 15%,transparent); color:var(--pv-hero-ink); }
.p-hero{ position:relative; overflow:hidden; color:var(--pv-hero-ink);
  background:var(--pv-hero);
  border-bottom:1px solid var(--line); }
.p-hero::before{ content:""; position:absolute; inset:0;
  background-image:linear-gradient(rgba(148,163,184,.07) 1px,transparent 1px),linear-gradient(90deg,rgba(148,163,184,.07) 1px,transparent 1px);
  background-size:44px 44px; }
.p-hero-in{ position:relative; display:grid; grid-template-columns:1.05fr .95fr; gap:48px; align-items:center; padding:64px 0; }
.p-hero-tag{ display:inline-block; font-size:12.5px; color:var(--pv-hero-sub); background:color-mix(in srgb,var(--th-primary) 10%,transparent);
  border:1px solid color-mix(in srgb,var(--th-primary) 30%,transparent); border-radius:999px; padding:7px 15px; margin-bottom:21px; }
.p-hero h1{ font-size:40px; margin-bottom:15px; letter-spacing:1px; font-weight:800; line-height:1.25; }
.p-hero .p-sub{ font-size:14px; color:var(--pv-hero-sub); margin-bottom:6px; }
.p-hero p{ font-size:14px; color:var(--pv-hero-p); line-height:1.95; margin:12px 0 24px; max-width:520px; }
.p-cta{ display:flex; gap:14px; }
.p-hero-img{ position:relative; border-radius:20px; overflow:hidden; min-height:310px; border:1px solid var(--line-2);
  background:var(--pv-inset-2); box-shadow:0 30px 70px -24px rgba(0,0,0,.4); }
.p-hero-img img{ width:100%; height:100%; object-fit:cover; }
.p-hero-img .hv-banner{ position:absolute; inset:0; z-index:1; }
.p-sec{ padding:60px 0; background:var(--bg); }
.p-sec.alt{ background:var(--bg-2); }
.p-sec-head{ display:flex; align-items:baseline; gap:16px; margin-bottom:36px; }
.p-sec-head h2{ font-size:24px; color:var(--ink); font-weight:800; position:relative; padding-left:17px; }
.p-sec-head h2::before{ content:""; position:absolute; left:0; top:5px; bottom:5px; width:5px; border-radius:4px;
  background:linear-gradient(180deg,var(--th-primary),var(--th-primary2)); box-shadow:0 0 12px var(--th-glow); }
.p-sec-head span{ font-size:13px; color:var(--faint); }
.p-steps{ display:grid; grid-template-columns:repeat(5,1fr); }
.p-step{ position:relative; text-align:center; padding:0 10px; }
.p-step .dot{ width:54px; height:54px; border-radius:50%; background:var(--surface); border:2px solid rgba(148,163,184,.3); color:var(--muted);
  display:flex; align-items:center; justify-content:center; margin:0 auto 15px; font-size:17px; font-weight:700; position:relative; z-index:2; }
.p-step::before{ content:""; position:absolute; top:27px; left:-50%; width:100%; height:2px; background:rgba(148,163,184,.25); }
.p-step:first-child::before{ display:none; }
.p-step.done .dot{ background:linear-gradient(135deg,var(--th-primary),var(--th-primary2)); border-color:transparent; color:#fff; box-shadow:0 8px 18px -8px var(--th-glow); }
.p-step.done::before{ background:var(--th-primary); }
.p-step b{ font-size:14.5px; display:block; margin-bottom:5px; color:var(--ink); }
.p-step span{ font-size:12px; color:var(--faint); display:block; line-height:1.6; }
.p-cards{ display:grid; grid-template-columns:repeat(4,1fr); gap:22px; align-items:stretch; }
.p-card{ padding:27px 23px; transition:.28s; display:flex; flex-direction:column; }
#ev-root .p-card,#ev-root .qz-card,#ev-root .qz-quiz{ background:var(--pv-card-grad); }
.p-card:hover{ transform:translateY(-5px); border-color:rgba(56,189,248,.3); }
.p-card h3{ font-size:16px; margin-bottom:13px; color:var(--ink); }
.p-card ul{ margin-bottom:17px; }
.p-card li{ font-size:12.5px; color:var(--muted); line-height:2.05; display:flex; gap:8px; }
.p-card li::before{ content:""; width:5px; height:5px; border-radius:50%; background:var(--th-primary); margin-top:9px; flex:none; }
.p-card .p-desc{ flex:1; }
.p-card .p-line{ display:flex; gap:10px; margin-top:auto; padding-top:16px; }
.p-card .btn{ padding:0 16px; height:34px; font-size:13px; }
.p-two{ display:grid; grid-template-columns:1fr 1fr; gap:26px; padding:0 0 60px; }
.p-two-wrap{ overflow:hidden; }
.p-two-head{ padding:19px 24px; border-bottom:1px solid var(--line); display:flex; justify-content:space-between; align-items:center; }
.p-two-head b{ font-size:16px; color:var(--ink); }
.p-two-head a{ font-size:13px; color:var(--cyan-soft); }
.p-table{ width:100%; border-collapse:collapse; }
.p-table th{ text-align:left; font-size:12.5px; color:var(--muted); font-weight:600; background:var(--pv-th-bg); padding:13px 24px; }
.p-table td{ font-size:13.5px; padding:15px 24px; border-top:1px solid var(--line); color:var(--text); }
.p-table a{ color:var(--cyan-soft); font-size:13px; }
.p-prods{ padding:20px 24px; display:flex; flex-direction:column; gap:14px; }
.p-prod{ display:flex; align-items:center; gap:16px; background:var(--pv-inset); border:1px solid var(--line); border-radius:12px; padding:13px 17px; }
.p-prod .ph{ flex:none; width:64px; height:64px; border-radius:11px; background:linear-gradient(135deg,var(--th-primary),var(--th-primary2)); display:flex; align-items:center; justify-content:center; color:#fff; }
.p-prod b{ font-size:14px; display:block; margin-bottom:4px; color:var(--text); }
.p-prod span{ font-size:12px; color:var(--faint); }
.p-prod .price{ margin-left:auto; text-align:right; }
.p-prod .price b{ color:var(--cyan-soft); font-size:17px; display:block; }
.p-prod .price s{ color:var(--faint); font-size:12px; font-weight:400; }
.p-note{ border-style:dashed; border-color:rgba(56,189,248,.3); border-radius:16px; padding:24px 28px; margin-bottom:60px; }
.p-note b{ color:var(--ink); font-size:14.5px; display:block; margin-bottom:11px; }
.p-note p{ font-size:13px; color:var(--muted); line-height:1.95; margin-bottom:15px; }
.p-note .chips{ display:flex; flex-wrap:wrap; gap:10px; }
.p-note .chips span{ font-size:12px; background:rgba(34,211,238,.08); color:var(--cyan-soft); border:1px solid rgba(34,211,238,.2); padding:6px 14px; border-radius:999px; }
.p-footer{ background:var(--pv-footer); color:var(--muted); padding:36px 0; font-size:12.5px; text-align:center; line-height:2.1; border-top:1px solid var(--line); }
.p-footer b{ color:var(--ink); }

/* ============ 七段数码管 LED 像素倒计时（纯手写 CSS） ============ */
.led-count{ display:flex; align-items:flex-start; gap:12px; margin-bottom:28px; flex-wrap:wrap; }
.led-count .cd-lbl{ font-size:13px; color:var(--pv-hero-p,#9db0d0); letter-spacing:1px; line-height:60px; margin-right:2px; }
.led-cell{ display:flex; flex-direction:column; align-items:center; gap:7px; }
.led-grp{ display:flex; gap:6px; padding:8px 9px; border-radius:10px; background:#05080f;
  border:1px solid var(--line-2);
  box-shadow:inset 0 2px 10px rgba(0,0,0,.6), 0 8px 22px -12px var(--th-glow); }
.led{ position:relative; width:26px; height:44px; }
.led .s{ position:absolute; background:rgba(148,163,184,.10); border-radius:1px;
  transition:background .18s ease, box-shadow .18s ease; }
.led .s.a,.led .s.g,.led .s.d{ left:3px; right:3px; height:5px;
  clip-path:polygon(0 50%,3px 0,calc(100% - 3px) 0,100% 50%,calc(100% - 3px) 100%,3px 100%); }
.led .s.a{ top:0; } .led .s.g{ top:calc(50% - 2.5px); } .led .s.d{ bottom:0; }
.led .s.f,.led .s.b,.led .s.e,.led .s.c{ width:5px;
  clip-path:polygon(50% 0,100% 3px,100% calc(100% - 3px),50% 100%,0 calc(100% - 3px),0 3px); }
.led .s.f,.led .s.b{ top:3px; height:calc(50% - 5px); }
.led .s.e,.led .s.c{ bottom:3px; height:calc(50% - 5px); }
.led .s.f,.led .s.e{ left:0; } .led .s.b,.led .s.c{ right:0; }
.led .s.on{ background:linear-gradient(135deg,var(--th-primary),var(--th-primary2));
  box-shadow:0 0 9px var(--th-glow), 0 0 2px var(--th-primary); }
.led-colon{ font-size:26px; font-weight:800; color:var(--th-primary); margin-top:15px;
  text-shadow:0 0 12px var(--th-glow); animation:ledBlink 1s steps(2,start) infinite; }
.led-cell em{ font-style:normal; font-size:11px; letter-spacing:2px; color:var(--pv-hero-p,#9db0d0); }
@keyframes ledBlink{ 50%{ opacity:.2; } }
@media (max-width:560px){
  .led{ width:19px; height:33px; }
  .led .s.a,.led .s.g,.led .s.d{ height:4px; left:2px; right:2px; }
  .led .s.g{ top:calc(50% - 2px); }
  .led .s.f,.led .s.b,.led .s.e,.led .s.c{ width:4px; }
  .led-grp{ padding:6px; gap:4px; } .led-colon{ font-size:19px; margin-top:10px; }
  .led-count{ gap:7px; } .led-count .cd-lbl{ line-height:1.4; flex:0 0 100%; margin-bottom:1px; }
}

/* ============================================================
   后台 Dashboard（超管 / 机构）深色专业风
   ============================================================ */
#view-admin{ display:none; min-height:100vh; background:var(--bg); }
#view-admin.active{ display:flex; }
.ad-app{ display:flex; min-height:100vh; background:var(--bg); }
.a-side{ flex:none; width:236px; background:#080d1a; border-right:1px solid var(--line); color:var(--muted); display:flex; flex-direction:column; }
.a-brand{ padding:22px 20px; border-bottom:1px solid var(--line); display:flex; align-items:center; gap:11px; }
.a-brand .logo-mark{ width:36px; height:36px; font-size:14px; border-radius:10px; }
.a-brand b{ color:#fff; font-size:14.5px; display:block; line-height:1.3; }
.a-brand i{ font-style:normal; font-size:9.5px; color:var(--faint); letter-spacing:1px; }
.a-menu{ flex:1; padding:16px 12px; }
.a-menu a{ display:block; padding:12px 18px; border-radius:10px; font-size:14px; margin-bottom:3px; color:var(--muted); transition:.18s; }
.a-menu a.on,.a-menu a:hover{ background:linear-gradient(90deg,rgba(59,130,246,.2),rgba(34,211,238,.06)); color:#fff; }
.a-menu a.on{ box-shadow:inset 2px 0 0 var(--cyan); }
.a-side-foot{ padding:16px 18px; font-size:11px; color:var(--faint); border-top:1px solid var(--line); }
.a-side-foot .btn.ghost{ background:rgba(148,163,184,.08); }
.a-main{ flex:1; padding:34px 44px; overflow-x:auto; }
.a-top{ display:flex; align-items:center; gap:14px; margin-bottom:26px; flex-wrap:wrap; }
.a-top b{ font-size:22px; color:var(--ink); font-weight:800; }
.a-top span{ font-size:13px; color:var(--faint); }
.a-top .btn{ margin-left:auto; }
.a-top select{ height:38px; }
.a-cards{ display:grid; grid-template-columns:repeat(4,1fr); gap:20px; margin-bottom:24px; }
.a-card{ background:linear-gradient(165deg,rgba(255,255,255,.045),rgba(255,255,255,.012)); border:1px solid var(--line);
  border-radius:15px; padding:22px 24px; position:relative; overflow:hidden; }
.a-card::after{ content:""; position:absolute; right:-24px; top:-24px; width:84px; height:84px; border-radius:50%;
  background:radial-gradient(circle,rgba(34,211,238,.16),transparent 70%); }
.a-card span{ font-size:12.5px; color:var(--muted); display:block; margin-bottom:9px; }
.a-card b{ font-size:27px; color:var(--ink); display:block; font-weight:800; }
.a-card i{ font-style:normal; font-size:11.5px; color:var(--green); display:block; margin-top:7px; }
.a-body{ display:grid; grid-template-columns:250px 1fr; gap:18px; margin-bottom:22px; }
.a-tree{ background:linear-gradient(165deg,rgba(255,255,255,.04),rgba(255,255,255,.01)); border:1px solid var(--line); border-radius:14px; padding:18px; align-self:start; }
.a-tree-title{ font-size:13px; color:var(--faint); margin-bottom:12px; }
.a-tree li{ font-size:13.5px; padding:8px 11px; border-radius:8px; cursor:pointer; color:var(--text); }
.a-tree li.on{ background:rgba(59,130,246,.18); color:#bcd4ff; font-weight:600; }
.a-tree li:hover{ background:rgba(148,163,184,.1); }
.a-tree ul{ padding-left:18px; border-left:1px dashed var(--line-2); margin-left:8px; }
.a-tree .cnt{ float:right; color:var(--faint); font-size:11.5px; }
.kc-table,.a-table-wrap{ background:linear-gradient(165deg,rgba(255,255,255,.035),rgba(255,255,255,.008)); border:1px solid var(--line); border-radius:14px; overflow:hidden; overflow-x:auto; }
.a-filters{ display:flex; gap:11px; padding:18px 22px; border-bottom:1px solid var(--line); flex-wrap:wrap; align-items:center; }
.a-filters select,.a-filters input,.toolbar select,.toolbar input,
.pa-modal-card input,.pa-modal-card select,.pa-modal-card textarea,
.ad-login-card input,.pa-form input,.pa-form select{
  background:#0c1426; border:1px solid var(--line-2); border-radius:9px; padding:0 13px; height:40px;
  font-size:13.5px; font-family:inherit; color:var(--text); outline:none; transition:.18s; }
.a-filters input{ width:230px; }
.a-filters select:focus,.a-filters input:focus,.toolbar select:focus,.toolbar input:focus,
.pa-modal-card input:focus,.pa-modal-card select:focus,.pa-modal-card textarea:focus,
.ad-login-card input:focus,.pa-form input:focus,.pa-form select:focus{
  border-color:rgba(34,211,238,.55); box-shadow:0 0 0 3px rgba(34,211,238,.12); }
select option{ background:#0c1426; color:var(--text); }
.a-filters button{ border:none; border-radius:9px; height:40px; padding:0 22px; font-size:13.5px; font-weight:600; cursor:pointer; font-family:inherit; background:var(--grad); color:#fff; }
.a-filters button.ghost{ background:rgba(148,163,184,.08); color:var(--muted); border:1px solid var(--line-2); }
.a-table{ width:100%; min-width:880px; border-collapse:collapse; }
.a-table th{ text-align:left; font-size:12.5px; font-weight:600; color:var(--muted); background:rgba(7,11,22,.6); padding:13px 22px; white-space:nowrap; }
.a-table td{ font-size:13.5px; padding:14px 22px; border-top:1px solid var(--line); white-space:nowrap; color:var(--text); }
.a-table tbody tr:hover,.kc-table tbody tr:hover{ background:rgba(59,130,246,.07); }
.a-table td a{ color:var(--cyan-soft); font-size:13.5px; margin-right:8px; }
.a-table .name b{ display:block; color:var(--ink); }
.a-table .name i{ font-style:normal; font-size:11px; color:var(--faint); }
.a-page{ padding:15px 22px; font-size:13px; color:var(--faint); display:flex; justify-content:space-between; align-items:center; border-top:1px solid var(--line); gap:10px; flex-wrap:wrap; }
.a-page button{ height:32px; padding:0 14px; border-radius:8px; border:1px solid var(--line-2); background:rgba(148,163,184,.08); color:var(--text); cursor:pointer; font-family:inherit; }
.a-open{ background:#060a14; border:1px solid var(--line-2); border-radius:14px; padding:22px 26px; }
.a-open b{ color:#fff; font-size:14px; display:block; margin-bottom:14px; }
.a-open code{ font-family:"Cascadia Code",Consolas,monospace; font-size:13px; color:#7dd3fc; line-height:2.1; display:block; }
.ad-quick{ background:linear-gradient(165deg,rgba(255,255,255,.04),rgba(255,255,255,.01)); border:1px solid var(--line); border-radius:14px; padding:20px 24px; margin-top:20px; }
.ad-quick>b{ font-size:14px; color:var(--ink); display:block; margin-bottom:13px; }
.ad-quick>div{ display:flex; gap:10px; flex-wrap:wrap; }
.co-sub{ margin:26px 0 13px; }
.co-sub b{ font-size:15px; color:var(--ink); }
.md-list{ display:flex; flex-direction:column; gap:14px; }
.md-row{ background:linear-gradient(165deg,rgba(255,255,255,.04),rgba(255,255,255,.01)); border:1px solid var(--line); border-radius:14px; padding:18px 22px; }
.md-row>b{ font-size:14.5px; color:var(--ink); display:block; margin-bottom:13px; }
.md-chips{ display:flex; flex-wrap:wrap; gap:10px; }
.md-chip{ display:inline-flex; align-items:center; gap:7px; font-size:13px; color:var(--muted);
  background:rgba(148,163,184,.07); border:1px solid var(--line-2); border-radius:999px; padding:8px 15px;
  cursor:pointer; transition:.18s; user-select:none; }
.md-chip:hover{ border-color:rgba(34,211,238,.4); color:var(--text); }
.md-chip.on{ color:#a5f3fc; border-color:rgba(34,211,238,.45); background:rgba(34,211,238,.1); }
.md-chip input{ accent-color:#22d3ee; width:14px; height:14px; margin:0; cursor:pointer; }

/* ============ 登录卡（超管/机构） ============ */
.ad-login{ min-height:100vh; display:flex; align-items:center; justify-content:center; position:relative; overflow:hidden;
  background:radial-gradient(900px 500px at 20% 0%,rgba(37,99,235,.22),transparent 60%),radial-gradient(800px 480px at 90% 100%,rgba(34,211,238,.14),transparent 60%),#070b16; padding:24px; }
.ad-login::before{ content:""; position:absolute; inset:0;
  background-image:linear-gradient(rgba(148,163,184,.06) 1px,transparent 1px),linear-gradient(90deg,rgba(148,163,184,.06) 1px,transparent 1px); background-size:44px 44px; }
.ad-login-card{ position:relative; background:linear-gradient(165deg,rgba(255,255,255,.06),rgba(255,255,255,.02));
  border:1px solid var(--line-2); border-radius:20px; padding:36px 34px 30px; width:408px; max-width:94vw;
  box-shadow:0 40px 90px -30px rgba(0,0,0,.9); text-align:center; }
.ad-login-card>b{ display:block; font-size:18px; color:var(--ink); margin-bottom:5px; }
.ad-login-card>span{ display:block; font-size:12px; color:var(--faint); margin-bottom:8px; }
.ad-login-card input,.ad-login-card select,.ad-login-card textarea{ display:block; width:100%; margin:11px 0; }
.ad-login-card textarea{ height:auto; padding:11px 13px; }
.ad-login-card .btn{ width:100%; margin-top:13px; }
.ad-login-card .logo-mark{ background:var(--grad); margin:0 auto; }
.co-tabs{ display:flex; background:rgba(7,11,22,.6); border:1px solid var(--line); border-radius:11px; padding:4px; margin:16px 0 6px; }
.co-tabs button{ flex:1; border:none; background:transparent; cursor:pointer; font-family:inherit; font-size:13.5px; color:var(--muted); padding:10px 0; border-radius:8px; transition:.2s; }
.co-tabs button.on{ background:var(--grad); color:#fff; font-weight:600; box-shadow:0 6px 16px -6px rgba(34,211,238,.6); }

/* ============ toast / modal ============ */
.kc-toast{ position:fixed; top:78px; left:50%; transform:translateX(-50%); z-index:1200;
  display:flex; flex-direction:column; gap:10px; align-items:center; pointer-events:none; }
.kc-toast-item{ background:rgba(20,29,54,.96); border:1px solid var(--line-2); color:#fff; font-size:13.5px; border-radius:11px;
  padding:12px 22px; box-shadow:0 14px 36px rgba(0,0,0,.5); animation:kcIn .25s ease; max-width:86vw; }
.kc-toast-item.ok{ background:linear-gradient(135deg,rgba(16,185,129,.95),rgba(5,150,105,.95)); border-color:transparent; }
.kc-toast-item.err{ background:linear-gradient(135deg,rgba(220,38,38,.95),rgba(185,28,28,.95)); border-color:transparent; }
.kc-toast-item.out{ opacity:0; transform:translateY(-8px); transition:.3s; }
@keyframes kcIn{ from{opacity:0; transform:translateY(-10px);} to{opacity:1; transform:none;} }
.pa-modal{ position:fixed; inset:0; background:rgba(3,6,14,.68); backdrop-filter:blur(5px);
  z-index:1100; display:none; align-items:center; justify-content:center; padding:24px; }
.pa-modal.show{ display:flex; }
.pa-modal-card{ background:linear-gradient(165deg,#16203c,#101830); border:1px solid var(--line-2); border-radius:18px;
  padding:30px 34px; width:640px; max-width:96vw; max-height:88vh; overflow-y:auto; box-shadow:0 40px 90px -30px #000; }
.pa-modal-card>b{ display:block; font-size:18px; color:var(--ink); margin-bottom:12px; }
.pa-modal-card label{ display:block; font-size:12.5px; color:var(--muted); margin:14px 0 6px; }
.pa-modal-card textarea{ height:auto; padding:11px 13px; resize:vertical; width:100%; }
.pa-modal-card input:not([type=checkbox]):not([type=radio]),.pa-modal-card select{ width:100%; }
.pa-modal-btns{ display:flex; gap:10px; margin-top:22px; }
.pa-modal-btns .btn{ flex:1; }
/* 紧凑日期区间：起 — 止 合并为一个框 */
.range-row{ display:flex; align-items:center; gap:12px; margin-top:14px; }
.range-row>label{ flex:none; width:62px; margin:0; font-size:12.5px; color:var(--muted); }
.range-fields{ flex:1; display:flex; align-items:center; gap:8px; min-width:0; }
.range-fields input{ flex:1; min-width:0; width:auto!important; margin:0; }
.range-fields i{ font-style:normal; color:var(--faint); font-size:12px; flex:none; }
.m-hint{ color:var(--faint); font-weight:normal; font-size:11.5px; }
/* 赛事 Banner 上传 */
.banner-up{ display:flex; gap:14px; align-items:center; margin-top:8px; flex-wrap:wrap;
  border:1px dashed var(--line-2); border-radius:12px; padding:12px; background:rgba(7,11,22,.25); }
.banner-prev{ width:104px; height:76px; flex:none; border-radius:9px; overflow:hidden;
  background:var(--pv-input-mix,#0c1426); border:1px solid var(--line);
  display:flex; align-items:center; justify-content:center; text-align:center; }
.banner-prev img{ width:100%; height:100%; object-fit:cover; }
.banner-prev span{ font-size:11px; color:var(--faint); padding:6px; line-height:1.5; }
.banner-up-act{ display:flex; align-items:center; flex-wrap:wrap; gap:10px; }
.banner-up-act .btn{ height:32px; padding:0 14px; font-size:12.5px; margin:0; width:auto; }
.banner-up-act small{ font-size:11px; color:var(--faint); }

/* ============ 统一账号页（全局兜底，pass.html 内联会细化） ============ */
.pa-wrap{ min-height:100vh; background:var(--bg); }
.pa-nav{ background:rgba(11,17,32,.85); backdrop-filter:blur(14px); border-bottom:1px solid var(--line); position:sticky; top:0; z-index:100; }
.pa-nav-in{ display:flex; align-items:center; height:66px; gap:30px; }
.pa-nav-in nav{ display:flex; gap:8px; flex:1; }
.pa-nav-in nav a{ font-size:14.5px; color:var(--muted); padding:8px 15px; border-radius:10px; transition:.2s; }
.pa-nav-in nav a.on,.pa-nav-in nav a:hover{ color:#fff; background:rgba(148,163,184,.1); }
.pa-nav-in nav a.on{ background:var(--grad); }
.pa-link{ display:block; text-align:center; color:var(--cyan-soft); }
.pa-empty{ text-align:center; color:var(--muted); font-size:13px; padding:48px 0; line-height:2.2; }
.pa-empty-cell{ text-align:center; color:var(--faint); padding:26px 0 !important; }
.pa-cancel{ color:var(--red); font-size:13px; cursor:pointer; }

/* ============ 后台内卡片/芯片（console 渲染） ============ */
.pm-card{ background:rgba(7,11,22,.45); border:1px solid var(--line); border-radius:14px; padding:17px 19px; margin-bottom:14px; }
.pm-card-head{ display:flex; align-items:center; justify-content:space-between; gap:10px; margin-bottom:6px; }
.pm-card-title{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; min-width:0; }
.pm-card-title>b{ font-size:15px; color:var(--ink); }
.pm-card-acts a{ color:var(--red); font-size:13px; cursor:pointer; }
.pm-card-desc{ font-size:12.5px; color:var(--faint); line-height:1.7; margin:4px 0 10px; }
.pm-card-grps{ display:flex; flex-wrap:wrap; gap:8px; margin:8px 0; }
.pm-grp-chip{ background:var(--surface-2); border:1px solid var(--line-2); border-radius:20px; padding:5px 4px 5px 12px;
  display:inline-flex; align-items:center; gap:8px; font-size:13px; color:var(--text); max-width:100%; }
.pm-grp-chip b{ font-weight:500; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; max-width:220px; }
.pm-grp-chip em{ font-style:normal; font-size:11.5px; color:var(--cyan-soft); background:rgba(34,211,238,.1); padding:2px 8px; border-radius:10px; }
.pm-grp-chip a{ font-size:12px; color:var(--faint); cursor:pointer; padding:3px 7px; border-radius:6px; }
.pm-grp-chip a:hover{ background:rgba(248,113,113,.15); color:var(--red); }
.pm-add-grp{ display:flex; gap:8px; margin-top:10px; flex-wrap:wrap; }
.pm-add-grp input{ flex:1; min-width:140px; height:38px; }
.pm-add-grp .pm-gquota{ flex:none; width:120px; }
input[type=number]{ -moz-appearance:textfield; }
input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{ -webkit-appearance:auto; margin:0; opacity:1; }
.row-acts{ display:flex; gap:12px; flex-wrap:nowrap; white-space:nowrap; align-items:center; }
.row-acts a{ color:var(--cyan-soft); font-size:12.5px; cursor:pointer; }
.row-acts a.danger{ color:var(--red); }
.row-acts a:hover{ text-decoration:underline; }
.toolbar{ display:flex; gap:10px; align-items:center; flex-wrap:wrap; margin-bottom:14px; }
.toolbar .filter{ display:flex; gap:8px; align-items:center; flex:1; flex-wrap:wrap; }
.toolbar select{ min-width:120px; }
.imp-btn{ position:relative; overflow:hidden; }
.imp-btn input[type=file]{ position:absolute; inset:0; opacity:0; cursor:pointer; }

/* ============ 主题色选择器 ============ */
.th-picker{ display:grid; grid-template-columns:repeat(5,1fr); gap:10px; margin:6px 0 8px; }
.th-swatch{ position:relative; aspect-ratio:1.8/1; border-radius:12px; cursor:pointer;
  display:flex; align-items:flex-end; padding:8px 10px; color:#fff; font-size:12px; font-weight:600;
  box-shadow:0 2px 8px rgba(0,0,0,.3); transition:.2s; border:3px solid transparent; text-shadow:0 1px 3px rgba(0,0,0,.35); }
.th-swatch:hover{ transform:translateY(-2px); }
.th-swatch.on{ border-color:#7dd3fc; transform:scale(1.04); box-shadow:0 0 0 2px rgba(125,211,252,.4),0 8px 20px rgba(0,0,0,.4); }
.th-swatch.on::after{ content:"✓"; position:absolute; top:6px; right:8px; font-size:14px; color:#fff; }
@media(max-width:560px){ .th-picker{ grid-template-columns:repeat(2,1fr);} }
.th-dot{ display:inline-block; width:10px; height:10px; border-radius:50%; margin-right:8px; vertical-align:middle; box-shadow:0 0 0 2px rgba(255,255,255,.15); }

/* ============ 赛事答题区 ============ */
.qz-card{ padding:22px 24px; display:flex; align-items:center; gap:16px; }
.qz-card .qz-ico{ flex:none; width:52px; height:52px; border-radius:14px;
  background:linear-gradient(135deg,var(--th-primary),var(--th-primary2)); color:#fff;
  display:flex; align-items:center; justify-content:center; }
.qz-card .qz-ico svg{ width:26px; height:26px; }
.qz-card .qz-ico{ font-size:21px; font-weight:800; letter-spacing:1px; }
.qz-card b{ font-size:15.5px; color:var(--ink); display:block; margin-bottom:5px; }
.qz-card span{ font-size:12.5px; color:var(--muted); line-height:1.7; display:block; }
.qz-card .btn{ margin-left:auto; flex:none; }
.qz-grid{ display:grid; grid-template-columns:repeat(2,1fr); gap:18px; }
.qz-quiz{ padding:28px 32px; }
.qz-quiz h3{ font-size:17px; color:var(--ink); margin-bottom:6px; }
.qz-quiz .qz-meta{ font-size:12.5px; color:var(--faint); margin-bottom:18px; }
.qz-q{ border-top:1px dashed var(--line-2); padding:18px 0; }
.qz-q:first-of-type{ border-top:none; }
.qz-q b{ font-size:14px; display:block; margin-bottom:12px; line-height:1.7; color:var(--text); }
.qz-q label{ display:flex; align-items:center; gap:10px; font-size:13.5px; padding:10px 14px;
  background:var(--pv-inset); border:1px solid var(--line-2); border-radius:10px; margin-bottom:8px; cursor:pointer; transition:.15s; color:var(--text); }
.qz-q label:hover{ border-color:var(--th-primary); background:rgba(59,130,246,.08); }
.qz-q input{ accent-color:var(--th-primary); }
.qz-result{ background:var(--pv-inset-2); border:1px dashed rgba(56,189,248,.4); border-radius:16px; padding:28px; text-align:center; }
.qz-result b{ font-size:32px; background:linear-gradient(135deg,var(--th-primary),var(--th-primary2)); -webkit-background-clip:text; background-clip:text; -webkit-text-fill-color:transparent; display:block; margin-bottom:6px; }
.qz-result span{ font-size:13px; color:var(--muted); }

/* ============ 响应式 ============ */
@media (max-width:1080px){
  .hero-in,.p-hero-in{ grid-template-columns:1fr; }
  .hero-img,.p-hero-img{ min-height:220px; }
  .cat-grid,.ev-grid,.partner-grid,.open-grid,.p-cards{ grid-template-columns:repeat(2,1fr); }
  .feat-grid{ grid-template-columns:1fr; }
  .ps-grid,.data-grid,.p-two,.arch-wrap{ grid-template-columns:1fr; }
  .stats-in{ grid-template-columns:repeat(3,1fr); }
  .flow,.p-steps{ grid-template-columns:repeat(2,1fr); }
  .a-body{ grid-template-columns:1fr; }
  .a-cards{ grid-template-columns:repeat(2,1fr); }
  .nav nav,.p-nav nav{ display:none; }
  .a-side{ width:200px; } .a-main{ padding:22px; }
  .pa-honor-list,.qz-grid,.pa-row{ grid-template-columns:1fr; }
  .pa-stats{ grid-template-columns:1fr; }
  .pa-nav .pa-nav-in nav{ display:none !important; }
  .a-filters input{ width:100%; }
  .a-filters select,.a-filters input{ flex:1; min-width:140px; }
  .hero h1{font-size:34px;} .p-hero h1{font-size:30px;}
}
@media (max-width:560px){
  .cat-grid,.ev-grid,.partner-grid,.open-grid,.p-cards,.stats-in,.a-cards,.f-grid{ grid-template-columns:1fr; }
  .flow,.p-steps{ grid-template-columns:1fr; }
}

/* ============================================================
   v4.1 交互统一：手型 / 报名弹层 / 赛事通勋章 / 皮肤输入适配
   ============================================================ */
/* 可点元素统一手型，输入框保持文本光标 */
a,button,.btn,.md-chip,.th-swatch,.step-btn,.pm-grp-chip,.row-acts a,.a-tab,[data-tab],summary{ cursor:pointer; }
button:disabled,.btn:disabled,.btn.disabled{ cursor:not-allowed; }
input:not([type=checkbox]):not([type=radio]):not([type=button]):not([type=submit]),textarea{ cursor:text; }
select{ cursor:pointer; }

/* 赛事页顶部登录入口 */
.ev-loginbar{ display:flex; flex-direction:row; align-items:center; justify-content:flex-end; gap:10px; }

/* 赛事通像素勋章 v1（真实尺寸固定 60×20，深紫金齿边，奖杯为 11×11 像素网格逐格点亮） */
.sst-medal{ position:relative; flex:none; box-sizing:border-box;
  width:60px; height:20px; padding:0 2px;
  display:inline-flex; align-items:center; justify-content:center; gap:2px;
  vertical-align:middle; white-space:nowrap; user-select:none;
  font-weight:900; color:#F5D061; --bd:#F2C14E;
  background:linear-gradient(180deg,#352D6B 0%,#272155 52%,#1A153D 100%); }
.sst-medal::before{ content:""; position:absolute; inset:0; pointer-events:none;
  background:
   repeating-linear-gradient(to right,var(--bd) 0 1px,transparent 1px 2px) top left/100% 1px no-repeat,
   repeating-linear-gradient(to right,var(--bd) 0 1px,transparent 1px 2px) bottom left/100% 1px no-repeat,
   repeating-linear-gradient(to bottom,var(--bd) 0 1px,transparent 1px 2px) top left/1px 100% no-repeat,
   repeating-linear-gradient(to bottom,var(--bd) 0 1px,transparent 1px 2px) top right/1px 100% no-repeat; }
.sst-medal::after{ content:""; position:absolute; inset:1px; border:1px solid var(--bd); pointer-events:none; }
.sst-medal .cup{ width:11px; height:11px; flex:none; position:relative; z-index:1; display:grid;
  grid-template-columns:repeat(11,1px); grid-template-rows:repeat(11,1px); }
.sst-medal .cup i{ width:1px; height:1px; display:block; }
.sst-medal .cup i.on{ background:#37E1D6; }
.sst-medal .tx{ position:relative; z-index:1; font-size:11px; line-height:1; letter-spacing:.5px; white-space:nowrap; }
.sst-line{ display:inline-flex; align-items:center; gap:7px; font-size:11px; color:var(--faint); }
.sst-line i{ font-style:normal; }
.lm-title{ display:flex; align-items:center; justify-content:center; gap:10px; }
.lm-title .modal-title{ margin:0; }

/* 报名弹层：五级位置 / 年级班级步进 */
.reg-fields{ display:flex; flex-direction:column; gap:14px; }
.reg-fields .reg-row2{ display:grid; grid-template-columns:1fr 1fr; gap:12px; }
.reg-area{ display:grid; grid-template-columns:1fr 1fr; gap:12px; }
.reg-area select{ width:100%; }
.stepper{ display:flex; align-items:stretch; }
.stepper .step-btn{ width:40px; flex:none; height:42px; line-height:1;
  border:1px solid var(--line-2); background:var(--surface-2); color:var(--ink);
  font-size:18px; font-weight:700; transition:.15s; }
.stepper .step-btn:first-child{ border-radius:10px 0 0 10px; }
.stepper .step-btn:last-child{ border-radius:0 10px 10px 0; }
.stepper .step-btn:hover{ border-color:var(--th-primary); color:var(--th-primary); }
.stepper input{ border-radius:0!important; border-left:none!important; border-right:none!important; text-align:center; -moz-appearance:textfield; appearance:textfield; }
.stepper input::-webkit-outer-spin-button,.stepper input::-webkit-inner-spin-button{ -webkit-appearance:none; margin:0; }
.me-tip{ font-size:12px; color:var(--muted); line-height:1.7;
  background:var(--pv-inset); border:1px solid var(--line); border-radius:10px; padding:9px 12px; }

/* 浅色 / 官方皮肤下，赛事页弹层输入控件翻为浅底深字 */
#ev-root[data-skin="light"] .modal-body input,#ev-root[data-skin="light"] .modal-body select,
#ev-root[data-skin="official"] .modal-body input,#ev-root[data-skin="official"] .modal-body select{
  background:#ffffff; border-color:rgba(15,40,80,.16); color:#0f1c33; }
#ev-root[data-skin="light"] .stepper .step-btn,#ev-root[data-skin="official"] .stepper .step-btn{ background:#f1f5fb; color:#10244a; }
#ev-root[data-skin="light"] select option,#ev-root[data-skin="official"] select option{ background:#ffffff; color:#0f1c33; }

@media (max-width:560px){
  .reg-fields .reg-row2,.reg-area{ grid-template-columns:1fr; }
}

/* ============================================================
   v4.1 后台：皮肤选择 / 审核开关 / 消息中心
   ============================================================ */
.skin-picker{ display:flex; flex-wrap:wrap; gap:9px; margin-bottom:4px; }
.skin-pill{ padding:7px 14px; border-radius:999px; border:1px solid var(--line-2); font-size:12.5px;
  color:var(--text); background:var(--surface-2); transition:.15s; user-select:none; }
.skin-pill:hover{ border-color:var(--th-primary); color:var(--ink); }
.skin-pill.on{ border-color:var(--th-primary); color:#fff;
  background:linear-gradient(135deg,var(--th-primary),var(--th-primary2)); box-shadow:0 4px 14px -4px var(--th-glow); }
.switch-row{ display:flex!important; align-items:flex-start; gap:9px; font-size:13px; color:var(--text);
  font-weight:normal!important; line-height:1.7; margin:4px 0 2px; }
.switch-row input{ width:auto!important; margin-top:3px; accent-color:var(--th-primary); }
.msg-dot{ display:inline-flex; align-items:center; justify-content:center; min-width:17px; height:17px; padding:0 5px;
  margin-left:6px; border-radius:999px; background:#ef4444; color:#fff; font-size:10.5px; font-weight:700; font-style:normal; }
.msg-list{ display:flex; flex-direction:column; gap:12px; }
.msg-item{ border:1px solid var(--line); border-radius:14px; padding:15px 18px; background:var(--surface); transition:.15s; }
.msg-item.unread{ border-color:color-mix(in srgb,var(--th-primary) 42%,var(--line));
  background:color-mix(in srgb,var(--th-primary) 6%,var(--surface)); }
.msg-h{ display:flex; align-items:center; gap:10px; margin-bottom:7px; flex-wrap:wrap; }
.msg-h b{ font-size:14px; color:var(--ink); }
.msg-h i{ font-style:normal; font-size:12px; color:var(--faint); margin-left:auto; }
.msg-new{ font-size:11px; color:#ef4444; font-weight:700; }
.msg-c{ font-size:13px; color:var(--text); line-height:1.8; }
.reg-me{ display:flex; flex-direction:column; gap:6px; padding:11px 14px; border-radius:12px;
  background:var(--pv-inset); border:1px solid var(--line); margin-bottom:4px; }
.reg-me b{ font-size:13.5px; color:var(--ink); }
.lock-icon{ background:linear-gradient(135deg,var(--th-primary),var(--th-primary2));
  box-shadow:0 12px 28px -12px var(--th-glow); }

/* ===================== 赛事大厅（五级分层）===================== */
.hall-page{ min-height:100vh; background:var(--bg); color:var(--text); }
.hall-hero{ position:relative; padding:64px 0 46px; overflow:hidden;
  background:radial-gradient(1200px 420px at 12% -10%, rgba(56,189,248,.16), transparent 60%),
             radial-gradient(900px 380px at 92% 0%, rgba(139,92,246,.16), transparent 60%),
             linear-gradient(180deg,#0a1124,#070b16);
  border-bottom:1px solid var(--line); }
.hall-nebula{ position:absolute; inset:0; pointer-events:none; opacity:.9;
  background:
    radial-gradient(2px 2px at 18% 30%, rgba(255,255,255,.85), transparent 60%),
    radial-gradient(2px 2px at 42% 62%, rgba(186,230,253,.7), transparent 60%),
    radial-gradient(1.5px 1.5px at 66% 28%, rgba(255,255,255,.6), transparent 60%),
    radial-gradient(2px 2px at 82% 58%, rgba(216,180,254,.7), transparent 60%),
    radial-gradient(1.5px 1.5px at 30% 78%, rgba(255,255,255,.55), transparent 60%);
  animation:hallDrift 26s linear infinite; }
@keyframes hallDrift{ from{background-position:0 0,0 0,0 0,0 0,0 0;} to{background-position:120px 40px,-90px 60px,70px -50px,-60px 80px,100px 30px;} }
.hall-hero-in{ position:relative; z-index:1; }
.hall-kicker{ font-size:12px; letter-spacing:4px; color:#38bdf8; font-weight:600; margin-bottom:10px; }
.hall-hero h1{ font-size:40px; font-weight:800; color:var(--ink); letter-spacing:2px; margin:0 0 12px; }
.hall-hero p{ color:var(--muted); font-size:15px; max-width:720px; line-height:1.7; margin:0 0 22px; }
.hall-filter{ display:flex; flex-wrap:wrap; gap:10px; }
.hf-chip{ display:inline-flex; align-items:center; gap:7px; cursor:pointer;
  padding:8px 16px; border-radius:999px; font-size:13.5px; color:var(--text);
  background:rgba(148,163,184,.08); border:1px solid var(--line-2); transition:.18s; }
.hf-chip i{ font-style:normal; font-size:12px; color:var(--faint); }
.hf-chip:hover{ border-color:var(--lc, #38bdf8); color:var(--ink); }
.hf-chip.on{ background:color-mix(in srgb, var(--lc,#38bdf8) 18%, transparent);
  border-color:var(--lc,#38bdf8); color:var(--ink); box-shadow:0 0 0 1px var(--lc,#38bdf8) inset; }
.hf-chip.on i{ color:var(--lc,#38bdf8); }
.hall-main{ padding:38px 0 60px; }
.hall-loading{ display:flex; align-items:center; justify-content:center; gap:12px;
  color:var(--muted); padding:80px 0; }
.hall-spin{ width:22px; height:22px; border-radius:50%; border:2px solid var(--line-2);
  border-top-color:#38bdf8; animation:hallRot .8s linear infinite; }
@keyframes hallRot{ to{ transform:rotate(360deg);} }
.hg-block{ margin-bottom:46px; }
.hg-head{ display:flex; align-items:center; gap:16px; margin-bottom:20px; }
.hg-badge{ flex:none; width:52px; height:52px; border-radius:15px; display:grid; place-items:center;
  font-size:24px; font-weight:800; color:#fff; background:linear-gradient(145deg,var(--lc),color-mix(in srgb,var(--lc) 62%, #000));
  box-shadow:0 14px 30px -12px var(--lc-glow); }
.hg-title h2{ margin:0; font-size:22px; font-weight:800; color:var(--ink); display:flex; align-items:baseline; gap:10px; }
.hg-full{ font-size:13px; font-weight:500; color:var(--muted); }
.hg-title p{ margin:3px 0 0; font-size:13px; color:var(--faint); }
.hg-line{ flex:1; height:1px; background:linear-gradient(90deg,color-mix(in srgb,var(--lc) 55%,transparent),transparent); }
.hg-grid{ display:grid; grid-template-columns:repeat(auto-fill,minmax(300px,1fr)); gap:18px; }
.hc-card{ position:relative; display:flex; flex-direction:column; gap:9px; padding:20px;
  border-radius:16px; text-decoration:none; color:var(--text);
  background:linear-gradient(160deg,var(--surface),var(--bg-2));
  border:1px solid var(--line-2); transition:.2s; overflow:hidden; }
.hc-card::before{ content:""; position:absolute; left:0; top:0; bottom:0; width:3px;
  background:var(--lc); opacity:.85; }
.hc-card:hover{ transform:translateY(-4px); border-color:color-mix(in srgb,var(--lc) 55%,var(--line-2));
  box-shadow:0 22px 44px -22px var(--lc-glow); }
.hc-top{ display:flex; align-items:center; justify-content:space-between; gap:10px; }
.hc-lv{ font-size:12px; font-weight:700; color:var(--lc); padding:3px 10px; border-radius:999px;
  background:color-mix(in srgb,var(--lc) 15%,transparent); }
.hc-date{ font-size:12px; color:var(--faint); }
.hc-card h3{ margin:0; font-size:17px; font-weight:700; color:var(--ink); line-height:1.45; }
.hc-sub{ margin:0; font-size:13px; color:var(--muted); line-height:1.6;
  display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
.hc-meta{ display:flex; align-items:center; gap:14px; margin-top:auto; padding-top:10px;
  border-top:1px dashed var(--line-2); font-size:12.5px; color:var(--muted); }
.hc-go{ margin-left:auto; color:var(--lc); font-weight:600; }
.hc-host{ font-size:12px; color:var(--faint); }
.hall-empty{ text-align:center; padding:90px 0; color:var(--muted); }
.hall-empty-ic{ font-size:34px; color:var(--faint); margin-bottom:14px; }
.hall-empty h3{ color:var(--ink); margin:0 0 8px; }
.hall-empty p{ margin:0 0 22px; }
@media(max-width:640px){
  .hall-hero{ padding:44px 0 34px; } .hall-hero h1{ font-size:30px; }
  .hg-grid{ grid-template-columns:1fr; } .hg-badge{ width:44px; height:44px; font-size:20px; border-radius:12px; }
}

/* ===================== v4.2 赛事级别徽章 / 添加学校 / 短信登录 ===================== */
.ev-level{ display:inline-flex; align-items:center; height:24px; padding:0 12px; margin-right:8px;
  border-radius:999px; font-size:12px; font-weight:700; color:var(--lc,#38bdf8);
  background:color-mix(in srgb,var(--lc,#38bdf8) 15%,transparent);
  border:1px solid color-mix(in srgb,var(--lc,#38bdf8) 45%,transparent); }
.p-hero-tag{ display:flex; align-items:center; flex-wrap:wrap; gap:2px; }
/* 报名弹层：没找到学校，自行添加 */
.school-add-row{ margin-top:7px; }
.school-add-link{ background:none; border:none; padding:0; cursor:pointer; font-size:12.5px;
  color:var(--th-primary); text-decoration:underline dotted; }
.school-add-form{ display:none; flex-direction:column; gap:8px; margin-top:9px; padding:12px;
  border-radius:11px; border:1px dashed var(--line-2); background:var(--pv-inset); }
.school-add-form.show{ display:flex; }
.school-add-form .saf-acts{ display:flex; gap:8px; }
.school-add-form .saf-acts button{ flex:1; height:36px; border-radius:9px; font-size:13px; cursor:pointer; }
.saf-ok{ background:var(--th-primary); color:#fff; border:none; }
.saf-cancel{ background:transparent; color:var(--muted); border:1px solid var(--line-2); }
.school-pending-tag{ font-size:11px; color:#f59e0b; margin-left:6px; }
/* 登录方式切换（密码 / 验证码）*/
.auth-switch{ display:flex; gap:6px; background:rgba(148,163,184,.08); border-radius:11px; padding:4px; margin-bottom:16px; }
.auth-switch button{ flex:1; height:36px; border:none; background:transparent; cursor:pointer;
  border-radius:8px; font-size:13.5px; color:var(--muted); transition:.16s; }
.auth-switch button.on{ background:var(--surface-2); color:var(--ink); font-weight:600;
  box-shadow:0 2px 10px -4px rgba(0,0,0,.5); }
.sms-row{ display:flex; gap:8px; }
.sms-row input{ flex:1; min-width:0; }
.sms-btn{ flex:none; height:44px; padding:0 14px; border-radius:11px; cursor:pointer; white-space:nowrap;
  font-size:13px; color:var(--th-primary); background:color-mix(in srgb,var(--th-primary) 12%,transparent);
  border:1px solid color-mix(in srgb,var(--th-primary) 40%,transparent); }
.sms-btn:disabled{ color:var(--faint); border-color:var(--line-2); background:rgba(148,163,184,.06); cursor:not-allowed; }
.reset-step{ font-size:12.5px; color:var(--muted); line-height:1.7; margin:-6px 0 12px;
  padding:9px 12px; border-radius:10px; background:rgba(148,163,184,.07); border:1px solid var(--line); }
.login-medal{ display:flex; justify-content:center; margin:2px 0 14px; }
/* 后台学校审核/合并 */
.sc-status{ font-size:11.5px; padding:2px 9px; border-radius:999px; font-weight:600; }
.sc-status.normal{ color:#16a34a; background:rgba(22,163,74,.12); }
.sc-status.pending{ color:#f59e0b; background:rgba(245,158,11,.14); }
.sc-status.merged{ color:#94a3b8; background:rgba(148,163,184,.14); }
.sc-status.rejected{ color:#ef4444; background:rgba(239,68,68,.12); }
.merge-sel{ padding:6px 8px; border-radius:8px; background:var(--surface-2); color:var(--ink);
  border:1px solid var(--line-2); font-size:12.5px; max-width:200px; }
.mini-btn{ height:30px; padding:0 11px; border-radius:8px; font-size:12px; cursor:pointer;
  border:1px solid var(--line-2); background:rgba(148,163,184,.08); color:var(--text); }
.mini-btn.ok{ color:#16a34a; border-color:rgba(22,163,74,.4); }
.mini-btn.warn{ color:#f59e0b; border-color:rgba(245,158,11,.4); }
.mini-btn.danger{ color:#ef4444; border-color:rgba(239,68,68,.4); }

/* ===== 第二期：订阅计费 / 成员 / 日志（v4.5）===== */
.tag.r{ background:var(--red); color:#3a0a0a; }
.bl-plan-grid{ display:grid; grid-template-columns:repeat(auto-fill,minmax(230px,1fr)); gap:14px; margin:10px 0 20px; }
.bl-card{ background:var(--surface-2); border:1px solid var(--line); border-radius:14px; padding:16px;
  display:flex; flex-direction:column; gap:8px; }
.bl-card.cur{ border-color:var(--cyan); box-shadow:var(--glow); }
.bl-card b{ font-size:16px; }
.bl-price{ color:var(--muted); font-size:13px; }
.bl-card ul{ margin:2px 0; padding-left:16px; color:var(--text); font-size:13px; line-height:1.9; }
.bl-bar{ height:8px; border-radius:6px; background:rgba(148,163,184,.15); overflow:hidden; margin-top:6px; min-width:160px; }
.bl-bar i{ display:block; height:100%; background:var(--grad); border-radius:6px; transition:width .4s; }

/* ============ 第三期 · 作品评审 / 考务 / 看板（v4.7–v4.8） ============ */
.pa-chk{ display:inline-flex; align-items:center; gap:6px; margin:4px 14px 4px 0; font-size:13.5px; color:var(--text); cursor:pointer; }
.pa-chk input{ accent-color:var(--cyan); width:15px; height:15px; }
.pa-chkbox{ display:flex; flex-wrap:wrap; gap:4px 8px; margin:4px 0 10px; padding:10px 12px; border:1px solid var(--line); border-radius:10px; background:rgba(148,163,184,.05); }
.pa-list{ display:flex; flex-direction:column; gap:8px; margin-top:10px; max-height:52vh; overflow:auto; }
.pa-pick{ text-align:left; padding:11px 14px; border-radius:10px; border:1px solid var(--line-2); background:var(--surface-2); color:var(--text); cursor:pointer; font-size:14px; transition:.18s; }
.pa-pick:hover{ border-color:var(--cyan); background:var(--surface-3); box-shadow:var(--glow); }
.pa-readonly{ white-space:pre-wrap; background:rgba(148,163,184,.07); border:1px solid var(--line); border-radius:10px; padding:10px 12px; font-size:13.5px; color:var(--text); line-height:1.7; margin:4px 0 10px; max-height:200px; overflow:auto; }
.btn.sm{ padding:4px 12px; font-size:12.5px; border-radius:8px; }
.rv-subnav{ display:flex; gap:6px; margin:14px 0 12px; flex-wrap:wrap; }
.rv-subnav a{ padding:6px 16px; border-radius:999px; font-size:13.5px; color:var(--muted); border:1px solid var(--line); cursor:pointer; transition:.18s; }
.rv-subnav a.on{ color:#04121f; background:var(--grad); border-color:transparent; font-weight:600; }
/* 看板 */
.db-kpi{ display:grid; grid-template-columns:repeat(7,1fr); gap:12px; margin-bottom:14px; }
.db-kpi-card{ background:linear-gradient(160deg,var(--surface-2),var(--surface)); border:1px solid var(--line); border-radius:14px; padding:16px 14px; text-align:center; }
.db-kpi-card b{ display:block; font-size:26px; background:var(--grad); -webkit-background-clip:text; background-clip:text; color:transparent; font-weight:800; }
.db-kpi-card span{ color:var(--muted); font-size:12.5px; }
.db-cols{ display:grid; grid-template-columns:1fr 1fr; gap:14px; margin-bottom:14px; }
.db-card{ background:var(--surface); border:1px solid var(--line); border-radius:14px; padding:14px 16px; }
.db-bar{ display:grid; grid-template-columns:120px 1fr 42px; align-items:center; gap:10px; margin:7px 0; font-size:13px; }
.db-bar-label{ color:var(--text); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.db-bar-track{ height:10px; border-radius:6px; background:rgba(148,163,184,.12); overflow:hidden; }
.db-bar-track i{ display:block; height:100%; border-radius:6px; background:linear-gradient(90deg,var(--blue-600),var(--cyan)); }
.db-bar-val{ text-align:right; color:var(--cyan-soft); font-weight:700; }
.db-spark{ display:flex; align-items:flex-end; gap:3px; height:120px; padding-top:8px; }
.db-spark i{ flex:1; background:linear-gradient(180deg,var(--cyan),var(--blue-700)); border-radius:3px 3px 0 0; min-height:2px; opacity:.9; }
.db-spark-x{ display:flex; justify-content:space-between; color:var(--faint); font-size:11px; margin-top:6px; }
@media(max-width:1100px){ .db-kpi{ grid-template-columns:repeat(4,1fr);} .db-cols{ grid-template-columns:1fr; } }
/* 对阵 */
.ar-bracket{ display:flex; gap:22px; overflow-x:auto; padding:14px 2px; }
.ar-stage{ flex:0 0 auto; min-width:180px; }
.ar-stage>b{ display:block; color:var(--cyan-soft); font-size:13px; margin-bottom:10px; }
.ar-slot{ position:relative; background:var(--surface-2); border:1px solid var(--line); border-radius:10px; padding:8px 10px; margin-bottom:12px; min-width:170px; }
.ar-slot.done{ border-color:rgba(52,211,153,.4); }
.ar-slot span{ display:flex; justify-content:space-between; font-size:13px; padding:3px 0; color:var(--text); }
.ar-slot span.win{ color:var(--green); font-weight:700; }
.ar-slot span em{ font-style:normal; color:var(--muted); }
.ar-slot a{ font-size:12px; color:var(--cyan); cursor:pointer; }
/* 学生门户 · 作品提交 / 准考证 / 填空 */
.sub-wrap{ display:grid; grid-template-columns:1.2fr .8fr; gap:18px; }
.sub-form,.sub-mine{ background:var(--surface); border:1px solid var(--line); border-radius:16px; padding:18px 20px; }
.sub-form label{ display:block; margin:10px 0 6px; font-size:13.5px; color:var(--text); }
.sub-upload{ border:1.5px dashed var(--line-2); border-radius:12px; padding:22px; text-align:center; color:var(--muted); cursor:pointer; position:relative; transition:.18s; }
.sub-upload:hover{ border-color:var(--cyan); color:var(--cyan-soft); }
.sub-upload input{ position:absolute; inset:0; opacity:0; cursor:pointer; }
.sub-files{ margin:10px 0; display:flex; flex-direction:column; gap:6px; }
.sub-file{ display:flex; justify-content:space-between; align-items:center; background:rgba(148,163,184,.07); border-radius:8px; padding:7px 12px; font-size:13px; }
.sub-file a{ color:var(--cyan); }
.sub-card{ background:rgba(148,163,184,.06); border:1px solid var(--line); border-radius:10px; padding:10px 12px; margin-bottom:8px; }
.sub-card b{ display:block; font-size:14px; } .sub-card code{ color:var(--cyan-soft); font-size:12px; margin-left:6px; }
.sub-card span{ display:block; color:var(--muted); font-size:12.5px; margin-top:3px; } .sub-card em{ font-style:normal; font-size:12.5px; }
.tk-grid{ display:grid; grid-template-columns:repeat(auto-fill,minmax(300px,1fr)); gap:16px; }
.tk-card{ background:linear-gradient(160deg,var(--surface-2),var(--surface)); border:1px solid var(--line-2); border-radius:16px; padding:18px 20px; }
.tk-no{ display:flex; justify-content:space-between; align-items:center; margin-bottom:12px; }
.tk-no b{ font-size:20px; letter-spacing:1px; color:var(--cyan-soft); } .tk-no span{ font-size:12px; color:var(--muted); }
.tk-meta{ font-size:13.5px; line-height:2; color:var(--text); margin-bottom:12px; }
.qz-fill{ width:100%; margin-top:6px; padding:9px 12px; border-radius:9px; border:1px solid var(--line-2); background:var(--bg-2); color:var(--ink); font-size:14px; }
.qz-q label{ display:flex; align-items:center; gap:8px; margin:7px 0; font-weight:normal; cursor:pointer; }
@media(max-width:860px){ .sub-wrap{ grid-template-columns:1fr; } }
/* 评委工作台 */
.j-root{ min-height:100vh; }
.j-login{ min-height:100vh; display:flex; align-items:center; justify-content:center; padding:24px; }
.j-login-card{ width:400px; max-width:100%; background:linear-gradient(160deg,var(--surface-2),var(--surface)); border:1px solid var(--line-2); border-radius:20px; padding:34px 30px; text-align:center; box-shadow:var(--card-sh); }
.j-badge{ letter-spacing:4px; font-size:12px; color:var(--cyan); margin-bottom:14px; }
.j-login-card h2{ font-size:22px; margin-bottom:10px; }
.j-login-card p{ color:var(--muted); font-size:13px; line-height:1.8; margin-bottom:20px; }
.j-login-card input{ width:100%; padding:12px 14px; border-radius:11px; border:1px solid var(--line-2); background:var(--bg-2); color:var(--ink); margin-bottom:14px; letter-spacing:1px; }
.j-login-card .btn{ width:100%; padding:12px; }
.j-err{ color:var(--red,#f87171); font-size:13px; margin-top:10px; min-height:18px; }
.j-work{ max-width:1200px; margin:0 auto; padding:22px; }
.j-top{ display:flex; justify-content:space-between; align-items:center; background:var(--surface); border:1px solid var(--line); border-radius:14px; padding:14px 20px; margin-bottom:16px; }
.j-top-l b{ font-size:16px; margin-right:12px; } .j-top-l span{ color:var(--muted); font-size:13px; }
.j-top-r{ display:flex; align-items:center; gap:14px; color:var(--cyan-soft); font-size:13.5px; }
.j-body{ display:grid; grid-template-columns:300px 1fr; gap:16px; align-items:start; }
.j-list{ background:var(--surface); border:1px solid var(--line); border-radius:14px; padding:10px; max-height:72vh; overflow:auto; }
.j-item{ padding:11px 13px; border-radius:10px; cursor:pointer; border:1px solid transparent; margin-bottom:6px; }
.j-item:hover{ background:var(--surface-2); } .j-item.on{ background:var(--surface-3); border-color:var(--cyan); }
.j-item b{ display:block; font-size:13.5px; letter-spacing:.5px; } .j-item b{ color:var(--cyan-soft); }
.j-item span{ display:block; font-size:13px; color:var(--text); margin:2px 0; }
.j-item i{ font-style:normal; font-size:12px; color:var(--muted); } .j-item.done i{ color:var(--green); }
.j-detail{ background:var(--surface); border:1px solid var(--line); border-radius:14px; padding:22px 24px; min-height:60vh; }
.jd-head{ display:flex; justify-content:space-between; align-items:flex-start; gap:12px; padding-bottom:14px; border-bottom:1px solid var(--line); }
.jd-head code{ color:var(--cyan-soft); font-size:13px; } .jd-head h3{ font-size:19px; margin:6px 0 4px; } .jd-head span{ color:var(--muted); font-size:13px; }
.jd-intro{ white-space:pre-wrap; color:var(--text); font-size:14px; line-height:1.9; padding:14px 0; border-bottom:1px solid var(--line); }
.jd-files{ padding:14px 0; border-bottom:1px solid var(--line); } .jd-files b{ display:block; margin-bottom:8px; font-size:14px; }
.jd-files a{ display:inline-block; margin:0 8px 8px 0; padding:6px 12px; border:1px solid var(--line-2); border-radius:8px; font-size:13px; color:var(--cyan-soft); }
.jd-score{ padding-top:16px; } .jd-score>b{ font-size:14px; }
.jd-dim{ margin:10px 0; } .jd-dim label{ display:block; font-size:13.5px; margin-bottom:5px; } .jd-dim label em{ font-style:normal; color:var(--muted); font-size:12px; }
.jd-dim input{ width:160px; padding:9px 12px; border-radius:9px; border:1px solid var(--line-2); background:var(--bg-2); color:var(--ink); }
.jd-cm{ display:block; margin:14px 0 6px; font-size:13.5px; } #jd-comment{ width:100%; padding:10px 12px; border-radius:10px; border:1px solid var(--line-2); background:var(--bg-2); color:var(--ink); }
@media(max-width:860px){ .j-body{ grid-template-columns:1fr; } .j-list{ max-height:34vh; } }
