/* ==========================================================================
   2026 广东省「粤数杯」数据标注大赛 · 门户网站
   设计母题：坐标网格 / 标注框 / 锚点 / 标签   —— 给无序数据建立秩序
   视觉基调：明亮赛场（白 + 晴蓝 + 数据青 + 标定橙 + 荣誉金）
   深色仅保留在「标注工作台屏幕」与页脚，作为视觉锚点，不再作为全站底色
   ========================================================================== */

:root {
  /* 深蓝：仅用于页脚、工作台屏幕、强调按钮 */
  --ink-950: #0a2c5c;
  --ink-900: #0e3f80;
  --ink-800: #1657a8;
  --ink-700: #1b6fd6;
  --ink-600: #2c7fdc;

  /* 主色：明快赛场色 */
  --blue: #1268e8;          /* 主品牌蓝 */
  --blue-deep: #0b4fbf;     /* 浅底可读的深蓝 */
  --cyan: #078fa9;          /* 浅底可读的数据青 */
  --cyan-live: #38d9e8;     /* 深底上使用的亮青 */
  --amber: #ea6a12;         /* 标定橙 */
  --amber-live: #ff9a4d;
  --gold: #a9741a;          /* 浅底可读的荣誉金 */
  --gold-live: #e9c77b;

  /* 明度层级 */
  --paper: #f7fbff;
  --paper-2: #ffffff;
  --text: #102a4c;
  --muted: #587394;
  --muted-2: #66809f;
  --line: #dce8f6;
  --line-strong: #bfd4ec;

  --maxw: 1200px;
  --radius: 18px;
  --radius-sm: 10px;

  --font-cn: "PingFang SC", "Microsoft YaHei", "Noto Sans CJK SC", "Source Han Sans SC", "Hiragino Sans GB", sans-serif;
  --font-en: "Inter", "Helvetica Neue", "Segoe UI", Arial, sans-serif;

  --ease: cubic-bezier(.22, .8, .3, 1);
}

/* ---------- reset ---------- */
*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  margin: 0;
  background: var(--paper);
  color: var(--text);
  font-family: var(--font-cn);
  font-size: 15px;
  line-height: 1.7;
  -webkit-font-smoothing: antialiased;
  overflow-x: hidden;
}
body[data-page="home"] { background: linear-gradient(180deg, #eaf7ff 0%, #f2fbff 26%, var(--paper) 58%); }
a { color: inherit; text-decoration: none; }
img, svg { display: block; max-width: 100%; }
h1, h2, h3, h4, p, ul, ol, figure { margin: 0; }
ul, ol { padding: 0; list-style: none; }
button { font: inherit; cursor: pointer; }
::selection { background: var(--blue); color: #fff; }

/* ---------- ambient grid ---------- */
body::before {
  content: "";
  position: fixed;
  inset: 0;
  z-index: -2;
  pointer-events: none;
  background-image:
    linear-gradient(rgba(18, 104, 232, .05) 1px, transparent 1px),
    linear-gradient(90deg, rgba(18, 104, 232, .05) 1px, transparent 1px);
  background-size: 64px 64px;
  mask-image: linear-gradient(180deg, rgba(0,0,0,.75), rgba(0,0,0,.2) 70%, transparent);
}
body::after {
  content: "";
  position: fixed;
  inset: -20% -10% auto -10%;
  height: 90vh;
  z-index: -1;
  pointer-events: none;
  background:
    radial-gradient(46% 42% at 76% 20%, rgba(18, 168, 224, .17), transparent 70%),
    radial-gradient(38% 40% at 16% 6%, rgba(18, 104, 232, .12), transparent 72%),
    radial-gradient(34% 34% at 52% 34%, rgba(255, 154, 77, .09), transparent 74%),
    radial-gradient(28% 28% at 92% 4%, rgba(233, 199, 123, .12), transparent 76%);
}

/* ---------- layout primitives ---------- */
.wrap { max-width: var(--maxw); margin: 0 auto; padding: 0 28px; }
.section { padding: 100px 0; position: relative; }
.section--tight { padding: 72px 0; }
.band {
  background: linear-gradient(180deg, #e9f4ff 0%, #f3faff 100%);
  color: var(--text);
  position: relative;
  border-top: 1px solid #d6e8fa;
  border-bottom: 1px solid #d6e8fa;
}
.band--soft { background: linear-gradient(180deg, #e4f7ff 0%, #eef9ff 100%); }
.band .wrap { position: relative; z-index: 1; }

/* ---------- header ---------- */
.site-header {
  position: sticky;
  top: 0;
  z-index: 60;
  background: rgba(255, 255, 255, .86);
  backdrop-filter: blur(20px) saturate(150%);
  -webkit-backdrop-filter: blur(20px) saturate(150%);
  border-bottom: 1px solid var(--line);
  transition: background .35s var(--ease), box-shadow .35s var(--ease);
}
/* 赛事节奏色带：蓝 → 青 → 橙 → 金 */
.site-header::after {
  content: "";
  position: absolute;
  left: 0; right: 0; bottom: -2px;
  height: 3px;
  background: linear-gradient(90deg, var(--blue) 0%, #12b8d8 38%, #ffab5e 70%, var(--gold-live) 100%);
  opacity: .9;
  pointer-events: none;
}
.site-header.is-scrolled { background: rgba(255, 255, 255, .96); box-shadow: 0 12px 34px rgba(16, 70, 140, .10); }
.header-inner {
  max-width: var(--maxw);
  margin: 0 auto;
  padding: 0 28px;
  height: 76px;
  display: flex;
  align-items: center;
  gap: 28px;
}
.brand { display: flex; align-items: center; gap: 12px; flex-shrink: 0; }
.brand__mark { width: 40px; height: 40px; flex-shrink: 0; }
.brand__txt { display: flex; flex-direction: column; line-height: 1.15; }
.brand__txt b { font-size: 17px; font-weight: 800; letter-spacing: .12em; color: #0a2c5c; }
.brand__txt small {
  font: 600 9px/1.4 var(--font-en);
  letter-spacing: .24em;
  color: var(--muted);
  margin-top: 3px;
}
.main-nav { display: flex; align-items: center; gap: 2px; margin-left: auto; }
.main-nav a {
  position: relative;
  padding: 9px 13px;
  font-size: 13.5px;
  color: #48627f;
  border-radius: 9px;
  white-space: nowrap;
  transition: color .25s, background .25s;
}
.main-nav a:hover { color: var(--blue-deep); background: rgba(18, 104, 232, .07); }
.main-nav a.is-active { color: var(--blue-deep); background: rgba(18, 104, 232, .10); }
.main-nav a.is-active::after {
  content: "";
  position: absolute;
  left: 50%; bottom: -14px;
  width: 16px; height: 2px;
  transform: translateX(-50%);
  background: var(--blue);
  border-radius: 2px;
}
.header-cta { flex-shrink: 0; }
.nav-toggle {
  display: none;
  margin-left: auto;
  width: 42px; height: 42px;
  border: 1px solid var(--line-strong);
  border-radius: 10px;
  background: #fff;
  color: var(--text);
  align-items: center;
  justify-content: center;
}
.nav-toggle svg { width: 20px; height: 20px; }

/* ---------- buttons ---------- */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  padding: 13px 26px;
  border-radius: 999px;
  font-size: 14px;
  font-weight: 700;
  letter-spacing: .02em;
  border: 1px solid transparent;
  transition: transform .3s var(--ease), box-shadow .3s var(--ease), background .3s;
  white-space: nowrap;
}
.btn:hover { transform: translateY(-3px); }
.btn--primary {
  background: linear-gradient(115deg, var(--blue), #089fc0);
  color: #fff;
  box-shadow: 0 12px 30px rgba(18, 104, 232, .26);
}
.btn--primary:hover { box-shadow: 0 18px 42px rgba(18, 104, 232, .36); }
.btn--amber { background: linear-gradient(115deg, #ffb066, var(--amber)); color: #3a1a00; box-shadow: 0 12px 30px rgba(234, 106, 18, .24); }
.btn--ghost { border-color: var(--line-strong); color: var(--blue-deep); background: rgba(255, 255, 255, .82); }
.btn--ghost:hover { background: #fff; border-color: var(--blue); box-shadow: 0 10px 26px rgba(16, 70, 140, .12); }
.btn--dark { background: var(--ink-950); color: #fff; }
.btn--sm { padding: 9px 18px; font-size: 13px; }
.btn svg { width: 16px; height: 16px; }
.btn[aria-disabled="true"] { opacity: .55; cursor: not-allowed; transform: none; }

/* ---------- eyebrow / labels ---------- */
.eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  padding: 7px 15px 7px 11px;
  border: 1px solid rgba(18, 104, 232, .24);
  border-radius: 999px;
  background: #eaf4ff;
  font: 600 11px/1 var(--font-en);
  letter-spacing: .16em;
  color: var(--blue-deep);
  text-transform: uppercase;
}
.eyebrow i { width: 6px; height: 6px; border-radius: 50%; background: var(--blue); box-shadow: 0 0 0 4px rgba(18, 104, 232, .14); }
.tag {
  display: inline-flex;
  padding: 5px 12px;
  border-radius: 6px;
  font: 600 11px/1.4 var(--font-en);
  letter-spacing: .1em;
  background: #eaf4ff;
  border: 1px solid #cfe3fa;
  color: var(--blue-deep);
}
.tag--amber { background: #fff2e4; border-color: #ffd7b3; color: #b45309; }
.tag--gold { background: #fff6e0; border-color: #f0dca8; color: #8f6108; }
.band .tag { background: #fff; border-color: #cfe3fa; color: var(--blue-deep); }

/* ---------- section head ---------- */
.sec-head { display: flex; justify-content: space-between; align-items: flex-end; gap: 40px; margin-bottom: 48px; }
.sec-head__left { max-width: 680px; }
.sec-kicker {
  display: flex; align-items: center; gap: 12px;
  font: 700 11px/1 var(--font-en);
  letter-spacing: .26em;
  text-transform: uppercase;
  color: var(--blue);
  margin-bottom: 18px;
}
.sec-kicker::before {
  content: ""; width: 26px; height: 2px; border-radius: 2px;
  background: linear-gradient(90deg, var(--blue), var(--cyan-live));
}
.band .sec-kicker { color: var(--blue-deep); }
.sec-head h2 { font-size: clamp(30px, 3.6vw, 46px); font-weight: 800; line-height: 1.2; letter-spacing: -.02em; color: #0a2c5c; }
.sec-head h2 em {
  font-style: normal;
  background: linear-gradient(96deg, var(--blue-deep), var(--cyan) 62%, #0aa7c4);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
}
.band .sec-head h2 em { background: linear-gradient(96deg, var(--blue-deep), #0aa7c4); -webkit-background-clip: text; background-clip: text; color: transparent; }
.sec-head p { margin-top: 16px; font-size: 15px; line-height: 1.9; color: var(--muted); max-width: 560px; }
.band .sec-head p { color: var(--muted-2); }
.sec-head__aside { flex-shrink: 0; }

/* ---------- page hero (inner pages) ---------- */
.page-hero {
  position: relative;
  padding: 86px 0 74px;
  border-bottom: 1px solid var(--line);
  background: linear-gradient(118deg, #ffffff 0%, #edf7ff 52%, #e4f7ff 100%);
  overflow: hidden;
}
.page-hero::before {
  content: "";
  position: absolute;
  right: -8%; top: -60%;
  width: 62%; height: 200%;
  background:
    radial-gradient(closest-side, rgba(18, 150, 220, .14), transparent 70%),
    radial-gradient(closest-side, rgba(255, 154, 77, .10), transparent 72%),
    linear-gradient(rgba(18, 104, 232, .07) 1px, transparent 1px),
    linear-gradient(90deg, rgba(18, 104, 232, .07) 1px, transparent 1px);
  background-size: auto, auto, 44px 44px, 44px 44px;
  transform: skewX(-12deg);
  pointer-events: none;
}
.page-hero .wrap { position: relative; z-index: 1; }
.page-hero__index {
  font: 700 12px/1 var(--font-en);
  letter-spacing: .22em;
  color: var(--blue);
  margin-bottom: 22px;
}
.page-hero h1 { font-size: clamp(36px, 5vw, 62px); font-weight: 800; letter-spacing: -.025em; line-height: 1.14; color: #0a2c5c; }
.page-hero h1 span { color: var(--blue); }
.page-hero__lead { margin-top: 20px; max-width: 720px; font-size: 16px; line-height: 1.95; color: #48627f; }
.page-hero__meta { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 28px; }
.crumb { font-size: 12px; color: var(--muted); margin-bottom: 26px; }
.crumb a:hover { color: var(--blue); }
.crumb span { margin: 0 8px; opacity: .5; }

/* ---------- home KV banner（大赛主视觉首屏） ---------- */
.sr-only {
  position: absolute !important; width: 1px; height: 1px;
  padding: 0; margin: -1px; overflow: hidden;
  clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}
.kv-hero { position: relative; background: #04122f; overflow: hidden; }
.kv-hero__media { margin: 0; line-height: 0; }
.kv-hero__media img { display: block; width: 100%; height: auto; }
.kv-hero__bar {
  position: relative;
  background: linear-gradient(180deg, #061a3d 0%, #0a2c5c 100%);
  border-top: 1px solid rgba(120, 200, 255, .16);
}
.kv-hero__bar-in {
  display: flex; align-items: center; justify-content: space-between;
  flex-wrap: wrap; gap: 14px 20px; padding: 16px 28px 18px;
}
.kv-hero__meta {
  display: flex; align-items: center; flex-wrap: wrap; gap: 10px;
  font-size: 13px; letter-spacing: .02em; color: #b7d0ec;
}
.kv-hero__meta i { font-style: normal; opacity: .45; }
.kv-hero__live {
  display: inline-flex; align-items: center; gap: 7px;
  padding: 4px 12px; border-radius: 999px;
  font-size: 12px; font-weight: 700; letter-spacing: .05em;
  color: #9ff2ff; background: rgba(56, 217, 232, .12);
  border: 1px solid rgba(56, 217, 232, .36);
}
.kv-hero__live::before {
  content: ""; width: 6px; height: 6px; border-radius: 50%;
  background: #38d9e8; box-shadow: 0 0 0 3px rgba(56, 217, 232, .18);
}
.kv-hero__actions { display: flex; flex-wrap: wrap; gap: 12px; }
.kv-hero__actions .btn--ghost {
  background: rgba(255, 255, 255, .1);
  border-color: rgba(255, 255, 255, .34);
  color: #eaf4ff;
}
.kv-hero__actions .btn--ghost:hover {
  background: rgba(255, 255, 255, .18);
  border-color: rgba(255, 255, 255, .62);
  box-shadow: 0 10px 26px rgba(0, 12, 40, .3);
}

/* ---------- home hero ---------- */
.hero {
  position: relative;
  max-width: var(--maxw);
  margin: 0 auto;
  padding: 78px 28px 0;
  display: grid;
  grid-template-columns: 1.04fr .96fr;
  gap: 34px;
  align-items: center;
}
.hero__copy { position: relative; z-index: 2; padding-bottom: 30px; }
.hero h1 {
  margin-top: 28px;
  font-size: clamp(46px, 5.8vw, 80px);
  font-weight: 800;
  line-height: 1.08;
  letter-spacing: -.035em;
  color: #0a2c5c;
}
.hero h1 .l2 { display: block; }
.hero h1 em {
  font-style: normal;
  background: linear-gradient(100deg, #0b4fbf 0%, #1268e8 26%, #0aa7c4 58%, #a06ae8 80%, #ea6a12 100%);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
}
.hero__slogan {
  margin-top: 22px;
  font-size: 19px;
  letter-spacing: .18em;
  font-weight: 600;
  color: #2a4a70;
}
.hero__slogan b { color: var(--amber); font-weight: 700; }
.hero__lead { margin-top: 18px; max-width: 540px; font-size: 15px; line-height: 2; color: #4a6787; }
.hero__actions { display: flex; flex-wrap: wrap; gap: 14px; margin-top: 34px; }
.hero__note { margin-top: 20px; font-size: 12px; color: #7b93ad; }

/* 标注工作台：全站唯一的深色「设备屏幕」，作为视觉焦点保留 */
.hero__art { position: relative; min-height: 500px; }
.annot-panel {
  --cyan: #5ce8f5;
  --amber: #ffb066;
  position: relative;
  border-radius: 22px;
  padding: 16px;
  background: linear-gradient(150deg, #1a5aa8, #0a2f63 78%);
  border: 1px solid rgba(255, 255, 255, .3);
  box-shadow: 0 34px 76px rgba(12, 62, 130, .28), inset 0 1px 0 rgba(255, 255, 255, .18);
  transform: perspective(1200px) rotateY(-6deg) rotateX(2deg);
}
.annot-panel__bar { display: flex; align-items: center; gap: 7px; padding: 4px 6px 14px; }
.annot-panel__bar i { width: 8px; height: 8px; border-radius: 50%; background: #8fb8e0; }
.annot-panel__bar i:first-child { background: #ffb066; }
.annot-panel__bar span { margin-left: auto; font: 600 10px var(--font-en); letter-spacing: .16em; color: #b4d2ee; }
.annot-stage {
  position: relative;
  border-radius: 12px;
  overflow: hidden;
  background:
    radial-gradient(60% 60% at 50% 40%, rgba(36, 116, 190, .48), transparent 75%),
    linear-gradient(rgba(150, 205, 245, .09) 1px, transparent 1px),
    linear-gradient(90deg, rgba(150, 205, 245, .09) 1px, transparent 1px),
    #082248;
  background-size: auto, 32px 32px, 32px 32px, auto;
  aspect-ratio: 1 / .86;
}
.annot-stage svg { position: absolute; inset: 0; width: 100%; height: 100%; }
.annot-scan {
  position: absolute; left: 0; right: 0; height: 2px;
  background: linear-gradient(90deg, transparent, rgba(92, 232, 245, .8), transparent);
  box-shadow: 0 0 22px rgba(92, 232, 245, .6);
  animation: scan 7s linear infinite;
}
@keyframes scan { 0% { top: 4%; opacity: 0; } 12% { opacity: 1; } 88% { opacity: 1; } 100% { top: 96%; opacity: 0; } }
.annot-float {
  position: absolute;
  padding: 9px 13px;
  border-radius: 9px;
  background: rgba(9, 40, 84, .9);
  border: 1px solid rgba(92, 232, 245, .42);
  backdrop-filter: blur(10px);
  font: 600 10px/1.5 var(--font-en);
  letter-spacing: .1em;
  color: var(--cyan);
  box-shadow: 0 14px 30px rgba(8, 34, 72, .3);
}
.annot-float b { display: block; color: #fff; font-size: 13px; letter-spacing: .02em; margin-top: 3px; }
.annot-float--a { top: -22px; right: -16px; }
.annot-float--b { bottom: 24px; left: -26px; }
.annot-float--b { border-color: rgba(255, 176, 102, .5); color: var(--amber); }

/* ---------- stats strip ---------- */
.stats-strip {
  max-width: var(--maxw);
  margin: 26px auto 0;
  padding: 0 28px;
}
.stats-strip__inner {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 1px;
  background: var(--line);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  overflow: hidden;
  box-shadow: 0 20px 48px rgba(16, 70, 140, .09);
}
.stat { position: relative; background: #fff; padding: 26px 26px 24px; }
.stat::before {
  content: ""; position: absolute; left: 0; right: 0; top: 0; height: 3px;
  background: linear-gradient(90deg, var(--blue), var(--cyan-live), var(--amber-live));
}
.stat__num { font: 800 32px/1.1 var(--font-en); letter-spacing: -.02em; color: #0a2c5c; }
.stat__num small { font-size: 15px; font-weight: 600; margin-left: 4px; color: var(--blue); }
.stat__label { margin-top: 8px; font-size: 12.5px; color: var(--muted); letter-spacing: .04em; }

/* ---------- grids & cards ---------- */
.grid { display: grid; gap: 18px; }
.g2 { grid-template-columns: repeat(2, 1fr); }
.g3 { grid-template-columns: repeat(3, 1fr); }
.g4 { grid-template-columns: repeat(4, 1fr); }
.g5 { grid-template-columns: repeat(5, 1fr); }

.card {
  position: relative;
  padding: 30px;
  border-radius: var(--radius);
  border: 1px solid var(--line);
  background: #fff;
  box-shadow: 0 10px 30px rgba(16, 70, 140, .055);
  overflow: hidden;
  transition: transform .4s var(--ease), border-color .4s, box-shadow .4s;
}
.card::after {
  content: "";
  position: absolute;
  top: 0; right: 0;
  width: 46px; height: 46px;
  border-top: 2px solid rgba(18, 104, 232, .38);
  border-right: 2px solid rgba(18, 104, 232, .38);
  border-top-right-radius: var(--radius);
  opacity: .8;
}
.card:hover { transform: translateY(-6px); border-color: #8fc0f5; box-shadow: 0 24px 50px rgba(16, 70, 140, .14); }
.card__num { font: 700 11px/1 var(--font-en); letter-spacing: .2em; color: var(--blue); }
.card__icon {
  width: 44px; height: 44px;
  margin: 18px 0 18px;
  display: grid; place-items: center;
  border-radius: 12px;
  background: #eaf4ff;
  border: 1px solid #cfe3fa;
}
.card__icon svg { width: 22px; height: 22px; }
.card h3 { font-size: 19px; font-weight: 700; color: #0a2c5c; }
.card h4 { font-size: 15px; font-weight: 700; color: #0a2c5c; }
.card p { margin-top: 12px; font-size: 14px; line-height: 1.9; color: var(--muted); }
.card ul { margin-top: 14px; display: grid; gap: 9px; }
.card li { position: relative; padding-left: 18px; font-size: 13.5px; line-height: 1.75; color: var(--muted); }
.card li::before { content: ""; position: absolute; left: 0; top: 10px; width: 6px; height: 6px; border: 1px solid var(--blue); transform: rotate(45deg); }
.card__foot { margin-top: 20px; display: flex; gap: 8px; flex-wrap: wrap; }

.band .card { background: #fff; border-color: #d3e5f8; box-shadow: 0 10px 28px rgba(16, 70, 140, .07); }
.band .card::after { border-color: rgba(18, 104, 232, .34); }
.band .card:hover { box-shadow: 0 22px 46px rgba(16, 70, 140, .15); border-color: #8fc0f5; }
.band .card__num { color: var(--blue); }
.band .card__icon { background: #eaf4ff; border-color: #cfe3fa; }
.band .card h3, .band .card h4 { color: #0a2c5c; }
.band .card p, .band .card li { color: var(--muted-2); }
.band .card li::before { border-color: var(--blue); }
.band .card--accent { background: linear-gradient(140deg, #e6f2ff 0%, #e6faff 52%, #fff2e4 100%); border-color: #a9d3f7; }
.band .tag--amber { background: #fff2e4; border-color: #ffd7b3; color: #b45309; }
.band .tag--gold { background: #fff6e0; border-color: #f0dca8; color: #8f6108; }

/* feature / bento */
.card--wide { grid-column: span 2; }
.card--accent {
  background: linear-gradient(140deg, #e6f2ff 0%, #e6faff 52%, #fff2e4 100%);
  border-color: #a9d3f7;
}
.card--quote { padding: 40px; }
.card--quote blockquote { font-size: 24px; font-weight: 700; line-height: 1.6; letter-spacing: .02em; color: #0a2c5c; }
.card--quote p { margin-top: 16px; }

/* ---------- numbered goal rows ---------- */
.goal-row {
  display: grid;
  grid-template-columns: 92px 1fr;
  gap: 28px;
  padding: 30px 0;
  border-top: 1px solid var(--line);
  align-items: start;
}
.goal-row:last-child { border-bottom: 1px solid var(--line); }
.goal-row__no { font: 800 42px/1 var(--font-en); color: rgba(18, 104, 232, .24); letter-spacing: -.04em; }
.goal-row h3 { font-size: 20px; font-weight: 700; color: #0a2c5c; }
.goal-row p { margin-top: 10px; color: var(--muted); font-size: 14px; line-height: 1.95; max-width: 860px; }

/* ---------- loop model ---------- */
.loop { display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; }
.loop__item {
  position: relative;
  padding: 26px 22px;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: #fff;
  box-shadow: 0 8px 24px rgba(16, 70, 140, .05);
  text-align: center;
}
.loop__item:not(:last-child)::after {
  content: "→";
  position: absolute;
  right: -13px; top: 50%;
  transform: translateY(-50%);
  color: var(--blue);
  font-size: 16px;
  z-index: 2;
}
.loop__item b { display: block; font-size: 21px; letter-spacing: .06em; color: #0a2c5c; }
.loop__item span { display: block; margin-top: 8px; font-size: 12.5px; color: var(--muted); }

/* ---------- timeline (compact, home) ---------- */
.timeline-mini { position: relative; display: grid; grid-template-columns: repeat(5, 1fr); gap: 12px; }
.timeline-mini::before {
  content: "";
  position: absolute;
  left: 6%; right: 6%; top: 37px; height: 2px;
  border-radius: 2px;
  background: linear-gradient(90deg, var(--blue), var(--cyan-live) 55%, #cfe3fa);
}
.tl-mini { position: relative; padding-right: 10px; }
.tl-mini__dot { position: relative; z-index: 2; width: 13px; height: 13px; border-radius: 50%; background: #fff; border: 2px solid var(--blue); box-shadow: 0 0 0 5px rgba(18, 104, 232, .10); margin: 31px 0 26px; }
.tl-mini:nth-child(n+3) .tl-mini__dot { border-color: var(--line-strong); }
.tl-mini__date { font: 700 12px/1.4 var(--font-en); letter-spacing: .08em; color: var(--blue); }
.tl-mini:nth-child(n+3) .tl-mini__date { color: var(--muted); }
.tl-mini h4 { margin-top: 8px; font-size: 16px; font-weight: 700; color: #0a2c5c; }
.tl-mini p { margin-top: 6px; font-size: 12.5px; color: var(--muted); line-height: 1.7; }

/* ---------- timeline (vertical, schedule) ---------- */
.timeline { position: relative; padding-left: 46px; }
.timeline::before { content: ""; position: absolute; left: 13px; top: 12px; bottom: 12px; width: 2px; border-radius: 2px; background: linear-gradient(180deg, var(--blue), var(--cyan-live) 60%, #dce8f6); }
.tl-block { position: relative; padding-bottom: 26px; }
.tl-block__dot {
  position: absolute; left: -40px; top: 26px;
  width: 15px; height: 15px; border-radius: 50%;
  background: #fff; border: 2px solid var(--blue);
  box-shadow: 0 0 0 6px rgba(18, 104, 232, .12);
  z-index: 2;
}
.tl-block__no { position: absolute; left: -46px; top: 50px; font: 700 9px var(--font-en); letter-spacing: .1em; color: var(--muted); }
.tl-card {
  display: grid;
  grid-template-columns: 230px 1fr;
  gap: 30px;
  padding: 30px 32px;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: #fff;
  box-shadow: 0 10px 30px rgba(16, 70, 140, .055);
  transition: border-color .3s, transform .3s var(--ease), box-shadow .3s;
}
.tl-card:hover { border-color: #8fc0f5; transform: translateX(5px); box-shadow: 0 20px 44px rgba(16, 70, 140, .12); }
.tl-card__date { font: 800 22px/1.3 var(--font-en); letter-spacing: -.02em; color: var(--blue); }
.tl-card__date small { display: block; margin-top: 8px; font: 600 11px/1.4 var(--font-en); letter-spacing: .12em; color: var(--muted); }
.tl-card__body h3 { font-size: 21px; font-weight: 700; color: #0a2c5c; }
.tl-card__body p { margin-top: 10px; font-size: 14px; line-height: 1.9; color: var(--muted); }
.tl-card__tags { margin-top: 16px; display: flex; flex-wrap: wrap; gap: 8px; }

/* ---------- table / score ---------- */
.score-wrap { border: 1px solid var(--line); border-radius: var(--radius); overflow: hidden; background: #fff; box-shadow: 0 12px 34px rgba(16, 70, 140, .06); }
.score-table { width: 100%; border-collapse: collapse; }
.score-table th {
  text-align: left;
  padding: 18px 24px;
  font: 700 11px/1.4 var(--font-en);
  letter-spacing: .16em;
  text-transform: uppercase;
  color: var(--muted);
  background: #f1f8ff;
  border-bottom: 1px solid var(--line);
}
.score-table td { padding: 20px 24px; border-bottom: 1px solid var(--line); font-size: 14px; vertical-align: middle; }
.score-table tr:last-child td { border-bottom: none; }
.score-table tbody tr { transition: background .25s; }
.score-table tbody tr:hover { background: #f5faff; }
.score-table td:first-child { font-weight: 700; color: #0a2c5c; }
.score-table td:nth-child(2) { color: var(--muted); line-height: 1.8; }
.score-table .weight { display: flex; align-items: center; gap: 14px; min-width: 170px; }
.score-table .weight b { font: 800 20px/1 var(--font-en); color: var(--blue); min-width: 52px; }
.weight__bar { flex: 1; height: 6px; border-radius: 99px; background: #e3eefb; overflow: hidden; }
.weight__bar i { display: block; height: 100%; border-radius: 99px; background: linear-gradient(90deg, var(--blue), var(--cyan-live)); }
.score-total { display: flex; justify-content: space-between; align-items: center; padding: 20px 24px; background: #eaf4ff; border-top: 1px solid #cfe3fa; font-size: 14px; color: #254a72; }
.score-total b { font: 800 24px var(--font-en); color: var(--blue); }

/* ---------- list panels ---------- */
.panel {
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: #fff;
  box-shadow: 0 10px 28px rgba(16, 70, 140, .05);
  padding: 30px 32px;
}
.panel + .panel { margin-top: 16px; }
.panel h3 { font-size: 19px; font-weight: 700; color: #0a2c5c; }
.panel__meta { margin-top: 6px; font: 600 11px var(--font-en); letter-spacing: .16em; color: var(--blue); }
.panel p { margin-top: 14px; font-size: 14px; line-height: 1.95; color: var(--muted); }
.kv-list { display: grid; gap: 0; margin-top: 18px; }
.kv { display: grid; grid-template-columns: 130px 1fr; gap: 20px; padding: 14px 0; border-top: 1px dashed var(--line); font-size: 14px; }
.kv dt { color: var(--muted); }
.kv dd { margin: 0; color: #254a72; }
.band .kv dd { color: #0a2c5c; }
.band .panel { background: #fff; border-color: #d3e5f8; }
.band .panel p { color: var(--muted-2); }
.band .panel__meta { color: var(--blue-deep); }
.band .kv dt { color: #6b83a3; }

/* ---------- org cards ---------- */
.org-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; }
.org-card {
  padding: 28px 24px;
  border-radius: var(--radius);
  border: 1px solid #d3e5f8;
  background: #fff;
  box-shadow: 0 10px 28px rgba(16, 70, 140, .06);
  transition: transform .35s var(--ease), box-shadow .35s;
}
.org-card:hover { transform: translateY(-5px); box-shadow: 0 20px 42px rgba(16, 70, 140, .14); }
.org-card__role { font: 700 11px var(--font-en); letter-spacing: .16em; color: var(--blue); }
.org-card h3 { margin-top: 14px; font-size: 18px; color: #0a2c5c; }
.org-card p { margin-top: 10px; font-size: 13.5px; line-height: 1.9; color: var(--muted-2); }

/* ---------- 治理结构（组委会 → 办公室 → 五个专项工作组） ---------- */
.gov {
  margin-top: 4px;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: #fff;
  box-shadow: 0 12px 30px rgba(16, 70, 140, .06);
  overflow: hidden;
}
.gov-row { display: grid; grid-template-columns: 116px minmax(0, 1fr); align-items: center; gap: 20px; padding: 18px 26px; }
.gov-row + .gov-row { border-top: 1px dashed var(--line); }
.gov-row:first-child { background: linear-gradient(90deg, #f2f8ff 0%, #fff 64%); }
.gov-layer {
  justify-self: start;
  display: inline-flex; align-items: center;
  padding: 6px 12px; border-radius: 999px;
  font-size: 11.5px; font-weight: 700; letter-spacing: .06em;
  color: var(--blue-deep); background: #eaf4ff; border: 1px solid #cfe3fa;
  white-space: nowrap;
}
.gov-node { display: flex; align-items: baseline; flex-wrap: wrap; gap: 4px 14px; }
.gov-node b { font-size: 17px; color: #0a2c5c; letter-spacing: .01em; }
.gov-node span { font-size: 13px; color: var(--muted-2); }
.gov-groups { display: flex; flex-wrap: wrap; gap: 8px; }
.gov-groups span {
  padding: 7px 13px; border-radius: 999px;
  font-size: 12.5px; color: #1657a8;
  background: #f4faff; border: 1px solid #d3e5f8;
  transition: border-color .25s, background .25s, color .25s;
}
.gov-groups span:hover { border-color: var(--blue); background: #fff; color: var(--blue-deep); }
.gov-cards { margin-top: 26px; align-items: stretch; }
.gov-cards .card { display: flex; flex-direction: column; }
.gov-cards .card h3 { margin-top: 8px; }
/* 两卡统一「导语 + 键值行」节奏：行距与字号收紧，键值贴卡片底部，左右高矮一致、底部不留空 */
.gov-cards .card { padding-bottom: 20px; }
.gov-cards .card p { line-height: 1.82; }
.gov-cards .kv-list { margin-top: auto; padding-top: 14px; }
.gov-cards .kv {
  grid-template-columns: 88px minmax(0, 1fr);
  gap: 18px; padding: 8px 0;
  font-size: 13.5px; line-height: 1.55;
  align-items: baseline;
}
.gov-cards .kv dt { font-size: 13px; letter-spacing: .02em; color: var(--muted-2); }
.gov-cards .kv dd { color: #1d4373; }
.gov-cards .kv:last-child { padding-bottom: 0; }

/* 职责要点：把原长段落拆成可扫读的条目，替代原「组长/副组长/成员」名单 */
.duty-list { margin-top: 16px; display: grid; gap: 9px; }
.duty-list li { position: relative; padding-left: 16px; font-size: 13px; line-height: 1.85; color: #4a6a8d; }
.duty-list li::before {
  content: ""; position: absolute; left: 2px; top: .78em;
  width: 5px; height: 5px; border-radius: 50%; background: var(--blue); opacity: .5;
}
.band .duty-list li { color: #3f5877; }
.card--wide .duty-list { grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 30px; }

.link-inline { color: var(--blue-deep); border-bottom: 1px solid rgba(11, 79, 191, .32); }
.link-inline:hover { border-bottom-color: var(--blue-deep); }
#groups { scroll-margin-top: 96px; }

/* ---------- awards ---------- */
.award-podium { display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; align-items: end; }
.award-card {
  position: relative;
  padding: 34px 28px 30px;
  border-radius: var(--radius);
  border: 1px solid var(--line);
  background: #fff;
  box-shadow: 0 12px 32px rgba(16, 70, 140, .06);
  text-align: center;
  overflow: hidden;
}
.award-card::before { content: ""; position: absolute; inset: 0 0 auto; height: 4px; background: linear-gradient(90deg, transparent, #e9b64b, transparent); }
.award-card--first {
  padding-top: 44px; padding-bottom: 40px;
  border-color: #e8c37a;
  background: linear-gradient(165deg, #fff7e3 0%, #fffdf8 55%, #ffffff 100%);
  box-shadow: 0 22px 48px rgba(178, 128, 32, .17);
}
.award-card--first::before { background: linear-gradient(90deg, #e9c77b, #d99b2b, #e9c77b); height: 5px; }
.award-card__icon { width: 54px; height: 54px; margin: 0 auto 18px; display: grid; place-items: center; border-radius: 50%; border: 1px solid #ecd39a; background: #fff5df; }
.award-card__icon svg { width: 26px; height: 26px; }
.award-card h3 { font-size: 20px; color: var(--gold); }
.award-card__num { margin-top: 10px; font: 800 46px/1 var(--font-en); letter-spacing: -.03em; color: #0a2c5c; }
.award-card__num small { font-size: 15px; font-weight: 600; color: var(--muted); margin-left: 6px; }
.award-card p { margin-top: 14px; font-size: 13.5px; color: var(--muted); line-height: 1.8; }

/* ---------- news list ---------- */
.news-list { display: grid; gap: 12px; }
.news-item {
  display: grid;
  grid-template-columns: 120px 1fr auto;
  gap: 24px;
  align-items: center;
  padding: 22px 26px;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: #fff;
  box-shadow: 0 8px 24px rgba(16, 70, 140, .045);
  transition: border-color .3s, background .3s, transform .3s var(--ease);
}
.news-item:hover { border-color: #8fc0f5; background: #f4faff; transform: translateX(4px); }
.news-item__date { font: 700 13px/1.5 var(--font-en); letter-spacing: .06em; color: var(--blue); }
.news-item h4 { font-size: 16px; font-weight: 600; color: #0a2c5c; }
.news-item p { margin-top: 6px; font-size: 13px; color: var(--muted); line-height: 1.7; }

/* ---------- service / portal entries ---------- */
.service-grid { display: grid; grid-template-columns: repeat(5, 1fr); gap: 14px; }
.service {
  position: relative;
  padding: 26px 20px;
  border: 1px dashed #b9d3ef;
  border-radius: 14px;
  background: #fafdff;
  transition: border-color .3s, background .3s, box-shadow .3s;
}
.service:hover { border-color: var(--blue); background: #eef7ff; box-shadow: 0 14px 30px rgba(16, 70, 140, .09); }
.service__no { font: 700 10px var(--font-en); letter-spacing: .18em; color: var(--muted); }
.service h4 { margin-top: 14px; font-size: 15px; font-weight: 700; color: #0a2c5c; }
.service p { margin-top: 8px; font-size: 12px; color: var(--muted); line-height: 1.7; }
.service__state { margin-top: 16px; display: inline-flex; padding: 4px 10px; border-radius: 99px; font-size: 11px; color: #b45309; border: 1px solid #ffd7b3; background: #fff3e6; }

/* ---------- callout（亮蓝赛事号召区） ---------- */
.callout {
  --cyan: #ffe6a8;
  position: relative;
  padding: 44px 46px;
  border-radius: 22px;
  border: 1px solid rgba(255, 255, 255, .4);
  background: linear-gradient(115deg, #1268e8 0%, #0e86d8 52%, #0aa7c4 100%);
  color: #fff;
  box-shadow: 0 28px 62px rgba(16, 90, 180, .22);
  overflow: hidden;
}
.callout::after {
  content: "";
  position: absolute; right: -60px; bottom: -90px;
  width: 260px; height: 260px;
  border: 1px solid rgba(255, 255, 255, .24);
  border-radius: 50%;
  box-shadow: 0 0 0 40px rgba(255, 255, 255, .05), 0 0 0 80px rgba(255, 255, 255, .035);
}
.callout h2 { font-size: clamp(26px, 3vw, 38px); font-weight: 800; letter-spacing: -.02em; color: #fff; }
.callout h2 em { font-style: normal; color: var(--cyan); }
.callout p { margin-top: 14px; max-width: 620px; color: rgba(255, 255, 255, .9); line-height: 1.9; }
.callout__actions { margin-top: 28px; display: flex; gap: 12px; flex-wrap: wrap; position: relative; z-index: 1; }
.callout .btn--primary { background: linear-gradient(115deg, #ffb066, #f97316); color: #3a1a00; box-shadow: 0 12px 30px rgba(0, 0, 0, .14); }
.callout .btn--ghost { color: #fff; border-color: rgba(255, 255, 255, .6); background: rgba(255, 255, 255, .12); }
.callout .btn--ghost:hover { background: rgba(255, 255, 255, .24); border-color: #fff; box-shadow: none; }
.callout .tag { background: rgba(255, 255, 255, .16); border-color: rgba(255, 255, 255, .4); color: #fff; }
.callout .eyebrow { background: rgba(255, 255, 255, .16); border-color: rgba(255, 255, 255, .4); color: #fff; }
.callout .eyebrow i { background: #ffe6a8; box-shadow: 0 0 0 4px rgba(255, 230, 168, .2); }

.note-bar {
  display: flex; align-items: flex-start; gap: 12px;
  padding: 16px 20px;
  border-left: 3px solid var(--amber);
  background: #fff5e9;
  border-radius: 0 10px 10px 0;
  font-size: 13px; line-height: 1.8; color: #6b4a25;
}
.note-bar b { color: #a34d0a; }

/* ---------- footer（亮深蓝收束，不再是近黑） ---------- */
.site-footer {
  --cyan: #7ef0fa;
  background: linear-gradient(158deg, #0e4a92 0%, #0a2c5c 72%);
  border-top: 1px solid rgba(255, 255, 255, .12);
  color: #e8f2ff;
  padding: 66px 0 26px;
}
.site-footer .brand__txt b { color: #fff; }
.site-footer .brand__txt small { color: #a9c6e6; }
.site-footer .brand__mark rect,
.site-footer .brand__mark path { stroke: #7ef0fa; }
.site-footer .brand__mark circle { fill: #ffb066; }
/* 导航/组织机构两列按内容自适应（auto），品牌与赛事服务分剩余宽度，避免长单位名被压折行 */
.footer-grid { display: grid; grid-template-columns: 1.45fr auto auto 1.15fr; gap: 38px; align-items: start; }
.footer-brand p { margin-top: 18px; font-size: 13px; line-height: 1.9; color: #a9c6e6; max-width: 300px; }
.footer-col h4 { font-size: 14px; font-weight: 700; margin-bottom: 18px; color: #fff; }
.footer-col a, .footer-col li, .footer-col p { display: block; font-size: 13px; line-height: 2.1; color: #a9c6e6; }
.footer-col a:hover { color: var(--cyan); }

/* 页脚二维码：深色底上必须给足白色静区（quiet zone），否则手机端扫不出来 */
.footer-brand .footer-qr { display: flex; align-items: center; gap: 13px; margin-top: 18px; }
.footer-qr__card {
  display: block; padding: 6px; border-radius: 10px;
  background: #fff; line-height: 0;
  box-shadow: 0 4px 14px rgba(0, 0, 0, .22);
  transition: transform .2s var(--ease), box-shadow .2s var(--ease);
}
.footer-qr__card:hover { transform: translateY(-2px); box-shadow: 0 8px 20px rgba(0, 0, 0, .3); }
.footer-qr__card img { width: 92px; height: 92px; display: block; border-radius: 4px; }
.footer-qr__cap { font-size: 11.5px; line-height: 1.75; color: #a9c6e6; }
.footer-qr__cap b { display: block; font-weight: 600; color: #e8f2ff; letter-spacing: .02em; }

/* 赛事导航：10 个入口竖排会把页脚撑得过高，改为两列 5 行，按原顺序先竖向后换列；
   列宽按文字实际宽度收（max-content），两列紧贴，不再被均分撑开 */
.footer-nav__links {
  display: grid;
  grid-template-columns: repeat(2, max-content);
  grid-template-rows: repeat(5, auto);
  grid-auto-flow: column;
  column-gap: 22px;
}
.footer-nav__links a { white-space: nowrap; }

/* 组织机构：类别（主办/承办/协办/技术支撑）只出现一次并带冒号，单位之间用顿号相连；
   四行按「类别 | 单位」两列网格排布，换行后单位统一悬挂对齐，单位名称整体不拆开 */
.footer-org {
  padding-right: 4px; max-width: 380px;
  display: grid; grid-template-columns: max-content minmax(0, 1fr);
  align-content: start; row-gap: 6px;
}
.footer-org h4 { grid-column: 1 / -1; }
/* p 退化为分组容器，让类别与单位组各自成为网格项 */
.footer-org p { display: contents; }
.footer-org__k {
  grid-column: 1; font-size: 12.5px; line-height: 1.85;
  color: #d8e8fa; font-weight: 600; white-space: nowrap;
}
.footer-org__v {
  grid-column: 2; min-width: 0;
  font-size: 12.5px; line-height: 1.85; color: #a9c6e6;
}
.footer-org__u { display: inline-block; white-space: nowrap; }
.footer-org__u:not(:last-child)::after { content: '、'; }
.footer-col h4 a { font-size: 14px; font-weight: 700; color: #fff; display: inline-block; }
.footer-col h4 a:hover { color: var(--cyan); }
.footer-bottom {
  max-width: var(--maxw); margin: 52px auto 0; padding: 22px 28px 0;
  border-top: 1px solid rgba(255, 255, 255, .14);
  display: flex; justify-content: space-between; align-items: center; gap: 28px; flex-wrap: wrap;
  font-size: 12px; color: #8fb0d6;
}
.footer-bottom__meta { flex: 1 1 480px; display: flex; flex-direction: column; gap: 9px; }
/* 兜底条款：在版权行下方另起一行、弱化处理，不与版权行争视觉权重 */
.footer-legal {
  font-size: 11.5px; line-height: 1.75; color: #7a9bc2;
  text-wrap: pretty;
}

/* ---------- reveal ---------- */
.reveal { opacity: 0; transform: translateY(22px); transition: opacity .7s var(--ease), transform .7s var(--ease); }
.reveal.is-in { opacity: 1; transform: none; }
.reveal[data-delay="1"] { transition-delay: .08s; }
.reveal[data-delay="2"] { transition-delay: .16s; }
.reveal[data-delay="3"] { transition-delay: .24s; }
.reveal[data-delay="4"] { transition-delay: .32s; }

/* ---------- 图标取色与浅色区块适配 ---------- */
.card__icon { color: var(--blue); }
.band .card__icon { color: var(--blue-deep); }
.award-card__icon { color: var(--gold); }
.note-bar > span { color: #c25a0d; flex-shrink: 0; }
.wrap.section { padding: 100px 28px; }
.wrap.section--tight { padding: 72px 28px; }
.band .note-bar { background: #eaf4ff; border-left-color: var(--blue); color: #3f5877; }
.band .note-bar b { color: #0b4fbf; }
.band .note-bar > span { color: var(--blue-deep); }
.band .loop__item { border-color: #d3e5f8; background: #fff; }
.band .loop__item b { color: #0a2c5c; }
.band .loop__item span { color: var(--muted-2); }
.band .loop__item:not(:last-child)::after { color: var(--blue); }
.band .news-item { background: #fff; border-color: #d3e5f8; }
.band .news-item:hover { background: #f4faff; border-color: #8fc0f5; }
.band .news-item h4 { color: #0a2c5c; }
.band .news-item p { color: var(--muted-2); }
.band .news-item__date { color: var(--blue); }
.band .service { border-color: #b9d3ef; background: rgba(255, 255, 255, .72); }
.band .service:hover { border-color: var(--blue); background: #fff; }
.band .service h4 { color: #0a2c5c; }
.band .service p { color: var(--muted-2); }
.band .service__no { color: #6b83a3; }

/* ---------- responsive ---------- */
@media (max-width: 1080px) {
  .main-nav a { padding: 8px 9px; font-size: 12.5px; }
  .header-inner { gap: 16px; }
  .g4, .org-grid, .service-grid { grid-template-columns: repeat(2, 1fr); }
  .g5 { grid-template-columns: repeat(3, 1fr); }
  .footer-grid { grid-template-columns: repeat(2, 1fr); gap: 34px; }
}
@media (max-width: 900px) {
  .hero { grid-template-columns: 1fr; padding-top: 56px; }
  .hero__art { min-height: 380px; max-width: 560px; margin: 0 auto; width: 100%; }
  .annot-panel { transform: none; }
  .nav-toggle { display: flex; }
  .main-nav {
    position: absolute; top: 76px; left: 0; right: 0;
    display: none; flex-direction: column; align-items: stretch;
    gap: 2px; padding: 14px 20px 22px;
    background: #fff;
    border-bottom: 1px solid var(--line);
    box-shadow: 0 24px 40px rgba(16, 70, 140, .14);
  }
  .main-nav.is-open { display: flex; }
  .main-nav a { padding: 12px 14px; font-size: 14px; }
  .main-nav a.is-active::after { display: none; }
  .header-cta { display: none; }
  .g3, .loop, .award-podium, .timeline-mini { grid-template-columns: repeat(2, 1fr); }
  .g5 { grid-template-columns: repeat(2, 1fr); }
  /* 治理结构：窄屏时层级标签独占一行，节点与分组竖排 */
  .gov-row { grid-template-columns: 1fr; gap: 10px; padding: 16px 20px; }
  .timeline-mini::before { display: none; }
  .sec-head { flex-direction: column; align-items: flex-start; gap: 20px; }
  .stats-strip__inner { grid-template-columns: repeat(2, 1fr); }
  .tl-card { grid-template-columns: 1fr; gap: 14px; }
  .section { padding: 72px 0; }
  .card--wide { grid-column: span 1; }
  .card--wide .duty-list { grid-template-columns: 1fr; column-gap: 0; }
  .wrap.section { padding: 72px 28px; }
  .wrap.section--tight { padding: 56px 28px; }
}
@media (max-width: 620px) {
  .kv-hero__bar-in { padding: 13px 0 15px; }
  .kv-hero__meta { font-size: 12px; gap: 8px; }
  .kv-hero__actions { width: 100%; }
  .kv-hero__actions .btn { flex: 1 1 0; justify-content: center; padding: 12px 10px; font-size: 13px; }
  .wrap, .header-inner, .hero, .stats-strip { padding-left: 20px; padding-right: 20px; }
  .g2, .g3, .g4, .g5, .org-grid, .service-grid, .award-podium, .loop, .timeline-mini, .footer-grid { grid-template-columns: 1fr; }
  .hero h1 { font-size: 42px; }
  .hero__slogan { font-size: 16px; letter-spacing: .1em; }
  .section { padding: 58px 0; }
  .callout { padding: 32px 26px; }
  .panel { padding: 24px 20px; }
  .goal-row { grid-template-columns: 1fr; gap: 8px; }
  .goal-row__no { font-size: 30px; }
  .kv { grid-template-columns: 1fr; gap: 4px; }
  /* 组委会/办公室两卡：窄屏仍保持「标签—内容」同排，只把标签列收窄，避免内容被挤成两三行 */
  .gov-cards .kv { grid-template-columns: 72px minmax(0, 1fr); gap: 12px; font-size: 13px; }
  .gov-cards .kv dt { font-size: 12.5px; }
  .news-item { grid-template-columns: 1fr; gap: 8px; }
  .score-table th, .score-table td { padding: 14px 12px; font-size: 12.5px; }
  .score-table .weight { min-width: 110px; gap: 8px; }
  .score-table .weight__bar { display: none; }
  .loop__item:not(:last-child)::after { content: "↓"; right: 50%; top: auto; bottom: -18px; transform: translateX(50%); }
  .timeline { padding-left: 34px; }
  .tl-block__dot { left: -34px; }
  .annot-float--a, .annot-float--b { display: none; }
  .wrap.section { padding: 58px 20px; }
  .wrap.section--tight { padding: 44px 20px; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: .001ms !important; transition-duration: .001ms !important; }
  .reveal { opacity: 1; transform: none; }
}

/* ==========================================================================
   团队报名 / 用户中心 · 业务页面组件（明亮赛场配色延续）
   ========================================================================== */
[hidden] { display: none !important; }

/* ---------- header 用户中心入口 ---------- */
.header-user {
  display: inline-flex; align-items: center; gap: 7px;
  padding: 8px 13px; border: 1px solid var(--line); border-radius: 999px;
  background: #f4f9ff; color: var(--blue-deep);
  font-size: 12.5px; font-weight: 700; white-space: nowrap; flex-shrink: 0;
  transition: background .25s, border-color .25s;
}
.header-user svg { width: 15px; height: 15px; }
.header-user:hover { background: #e6f2ff; border-color: #8fc0f5; }
.header-user.is-active { background: #e6f2ff; border-color: #8fc0f5; }

/* ---------- 首页：可用业务入口 ---------- */
.service--live { display: block; border-style: solid; border-color: #a9d3f7; background: linear-gradient(150deg, #fff, #eaf6ff); }
.service--live:hover { border-color: var(--blue); background: #fff; box-shadow: 0 16px 34px rgba(16,70,140,.11); transform: translateY(-4px); }
.service__state--live { color: #fff; border-color: transparent; background: linear-gradient(115deg, var(--blue), #089fc0); }
.portal-links { display: flex; gap: 12px; flex-wrap: wrap; margin-top: 26px; }

/* ---------- 报名页：两栏布局与侧栏 ---------- */
.signup-layout { display: grid; grid-template-columns: 290px 1fr; gap: 26px; align-items: start; margin-top: 30px; }
.signup-aside { position: sticky; top: 100px; display: grid; gap: 16px; }
.aside-card { background: #fff; border: 1px solid var(--line); border-radius: 16px; padding: 24px 22px; box-shadow: 0 10px 28px rgba(16,70,140,.05); }
.aside-card__title { display: flex; justify-content: space-between; align-items: center; font-size: 14px; font-weight: 700; color: #0a2c5c; padding-bottom: 14px; margin-bottom: 14px; border-bottom: 1px solid var(--line); }
.aside-card__title span { font: 600 10px var(--font-en); letter-spacing: .14em; color: var(--muted); }
.step-list { display: grid; gap: 2px; }
.step-list a { display: flex; align-items: center; gap: 12px; padding: 9px 10px; border-radius: 9px; font-size: 13px; color: #48627f; transition: background .25s, color .25s; }
.step-list a:hover { background: #eef7ff; color: var(--blue-deep); }
.step-list b { width: 26px; height: 26px; border-radius: 7px; display: grid; place-items: center; flex-shrink: 0; background: #eaf4ff; color: var(--blue); font: 700 11px var(--font-en); }
.aside-card .kv-list { margin-top: 0; }
.aside-card .kv { grid-template-columns: 76px 1fr; gap: 12px; padding: 10px 0; font-size: 12.5px; }
.aside-card .kv dd { color: #254a72; line-height: 1.7; }
.aside-card--warm { background: linear-gradient(150deg, #fff6e9, #fffdf7); border-color: #f3ddba; }
.aside-card__big { font: 800 28px var(--font-en); color: #b45309; letter-spacing: -.02em; }
.aside-card--warm p { margin-top: 8px; font-size: 12.5px; color: #7a5a34; line-height: 1.8; }
.aside-card__link { display: inline-block; margin-top: 14px; font-size: 12.5px; font-weight: 700; color: var(--blue-deep); }

/* ---------- 表单步骤卡 ---------- */
.signup-main { min-width: 0; }
.form-step { background: #fff; border: 1px solid var(--line); border-radius: 18px; padding: 30px 32px; box-shadow: 0 12px 34px rgba(16,70,140,.05); margin-bottom: 18px; scroll-margin-top: 100px; }
.form-step__head { display: flex; gap: 16px; align-items: flex-start; padding-bottom: 22px; margin-bottom: 24px; border-bottom: 1px solid var(--line); }
.form-step__no { width: 42px; height: 42px; border-radius: 12px; display: grid; place-items: center; flex-shrink: 0; background: linear-gradient(135deg, var(--blue), #089fc0); color: #fff; font: 800 15px var(--font-en); }
.form-step__head h2 { font-size: 21px; font-weight: 800; color: #0a2c5c; }
.form-step__head p { margin-top: 6px; font-size: 13px; color: var(--muted); line-height: 1.8; }
.form-step__foot { margin-top: 18px; }
.form-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 18px 20px; }
.field { min-width: 0; }
.field label { display: block; font-size: 13px; font-weight: 700; color: #254a72; margin-bottom: 8px; }
.field label i { margin-left: 2px; color: #e14b2a; font-style: normal; }
.form-control { width: 100%; padding: 11px 14px; border: 1px solid #cfdff2; border-radius: 10px; background: #fbfdff; color: var(--text); font: 14px var(--font-cn); outline: none; transition: border-color .25s, box-shadow .25s, background .25s; }
.form-control::placeholder { color: #9aafc7; }
.form-control:focus { border-color: var(--blue); background: #fff; box-shadow: 0 0 0 3px rgba(18,104,232,.12); }
textarea.form-control { resize: vertical; min-height: 84px; line-height: 1.7; }
.field__hint { margin-top: 6px; font-size: 11.5px; color: #7b93ad; }
.field__err { display: none; margin-top: 6px; font-size: 11.5px; color: #c23f1a; font-weight: 600; }
.field.is-invalid .form-control { border-color: #e6704a; background: #fff7f4; }
.field.is-invalid .field__err { display: block; }

.task-pack { margin-top: 22px; padding: 18px 20px; border-radius: 12px; background: linear-gradient(120deg, #eef7ff, #e8fbff); border: 1px dashed #a9d3f7; }
.task-pack__title { font-size: 13px; font-weight: 700; color: #0b4fbf; }
.task-pack__items { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px; }
.task-pack__items span { padding: 6px 11px; border-radius: 7px; background: #fff; border: 1px solid #cfe3fa; font-size: 12px; color: #254a72; }
.task-pack p { margin-top: 12px; font-size: 11.5px; color: #6b83a3; }

/* ---------- 队员动态列表 ---------- */
.member-bar { display: flex; justify-content: space-between; align-items: center; gap: 16px; flex-wrap: wrap; margin-bottom: 16px; padding: 14px 18px; border-radius: 12px; background: #f2f9ff; border: 1px solid #d3e5f8; }
.member-bar__lead { display: flex; align-items: center; gap: 10px; font-size: 13px; }
.member-bar__lead b { color: #0a2c5c; }
.member-bar__count { font-size: 12.5px; color: var(--muted); }
.member-bar__count b { color: var(--blue); font: 800 18px var(--font-en); }
.member-row { border: 1px solid var(--line); border-radius: 14px; padding: 20px 22px 22px; margin-bottom: 14px; background: #fbfdff; }
.member-row__head { display: flex; align-items: center; gap: 12px; margin-bottom: 16px; }
.member-row__idx { font: 700 12px var(--font-en); letter-spacing: .1em; color: var(--blue); }
.member-row__del { margin-left: auto; border: 0; background: transparent; color: #b45309; font-size: 12px; font-weight: 600; padding: 4px 8px; border-radius: 6px; }
.member-row__del:hover { background: #fff2e4; }
.form-grid--member { grid-template-columns: repeat(2, 1fr); gap: 14px 18px; }
.btn-add { width: 100%; padding: 14px; border: 1px dashed #9dc4ef; border-radius: 12px; background: #f4faff; color: var(--blue-deep); font-size: 13px; font-weight: 700; transition: background .25s, border-color .25s; }
.btn-add:hover { background: #e6f2ff; border-color: var(--blue); }
.btn-add:disabled { opacity: .55; cursor: not-allowed; }

/* ---------- 附件上传 ---------- */
.upload-list { display: grid; gap: 12px; }
.upload-slot { display: grid; grid-template-columns: 34px 1fr auto; gap: 16px; align-items: center; padding: 18px 20px; border: 1px dashed #b9d3ef; border-radius: 13px; background: #fafdff; }
.upload-slot.is-filled { border-style: solid; border-color: #a9d3f7; background: #f4faff; }
.upload-slot.is-invalid { border-color: #e6704a; background: #fff7f4; }
.upload-slot__no { width: 30px; height: 30px; border-radius: 8px; display: grid; place-items: center; background: #eaf4ff; color: var(--blue-deep); font: 700 12px var(--font-en); }
.upload-slot__body { min-width: 0; }
.upload-slot__body h4 { font-size: 14px; font-weight: 700; color: #0a2c5c; }
.upload-slot__body h4 i { color: #e14b2a; font-style: normal; }
.upload-slot__body p { margin-top: 4px; font-size: 12px; color: var(--muted); line-height: 1.7; }
.upload-slot__act { display: flex; flex-direction: column; align-items: flex-end; gap: 6px; }
.upload-slot__btn { cursor: pointer; }
.upload-slot__hint { font-size: 10.5px; color: #8ba2bd; white-space: nowrap; }
.upload-slot__files { margin-top: 10px; display: grid; gap: 6px; }
.upload-slot__err { display: none; margin-top: 6px; font-size: 11.5px; color: #c23f1a; }
.upload-slot.is-invalid .upload-slot__err { display: block; }
.upload-file { display: flex; align-items: center; gap: 10px; padding: 8px 12px; border-radius: 8px; background: #fff; border: 1px solid #d3e5f8; font-size: 12px; color: #254a72; }
.upload-file b { font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.upload-file span { color: var(--muted); font-size: 11px; flex-shrink: 0; }
.upload-file button { margin-left: auto; border: 0; background: transparent; color: #c23f1a; font-size: 11px; font-weight: 600; flex-shrink: 0; }

/* ---------- 确认与提交结果 ---------- */
.check-list { display: grid; gap: 10px; }
.check-row { display: flex; gap: 12px; align-items: flex-start; padding: 14px 16px; border: 1px solid var(--line); border-radius: 11px; background: #fbfdff; cursor: pointer; font-size: 13px; line-height: 1.8; color: #48627f; }
.check-row:hover { border-color: #a9d3f7; }
.check-row input { position: absolute; opacity: 0; width: 0; height: 0; }
.check-row > span { position: relative; width: 18px; height: 18px; border: 1.5px solid #b9d3ef; border-radius: 5px; flex-shrink: 0; margin-top: 2px; background: #fff; }
.check-row input:checked + span { background: var(--blue); border-color: var(--blue); }
.check-row input:checked + span::after { content: ""; position: absolute; left: 5px; top: 1px; width: 5px; height: 9px; border: solid #fff; border-width: 0 2px 2px 0; transform: rotate(42deg); }
.check-row.is-invalid { border-color: #e6704a; background: #fff7f4; }
.form-actions { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; margin-top: 26px; padding-top: 24px; border-top: 1px solid var(--line); }
.form-actions__hint { font-size: 11.5px; color: #8ba2bd; }
.form-success { background: #fff; border: 1px solid #a9d3f7; border-radius: 20px; padding: 44px 40px; text-align: center; box-shadow: 0 22px 52px rgba(16,70,140,.1); }
.form-success__icon { width: 66px; height: 66px; margin: 0 auto 20px; border-radius: 50%; display: grid; place-items: center; background: linear-gradient(135deg, #e6f8ff, #d9f2e8); color: #0b8f6a; }
.form-success__icon svg { width: 32px; height: 32px; }
.form-success .sec-kicker { justify-content: center; }
.form-success h2 { margin: 14px 0; font-size: 28px; font-weight: 800; color: #0a2c5c; }
.form-success p { max-width: 560px; margin: 0 auto; color: var(--muted); line-height: 1.9; font-size: 14px; }
.form-success p b { color: var(--blue); }
.form-success__meta { display: flex; flex-wrap: wrap; justify-content: center; gap: 10px; margin: 22px 0 26px; }
.form-success__meta span { padding: 7px 14px; border-radius: 8px; background: #f2f9ff; border: 1px solid #d3e5f8; font-size: 12.5px; color: #254a72; }
.form-success .callout__actions { justify-content: center; position: relative; }

/* ---------- 用户中心：身份条 / 登录 ---------- */
.user-bar { display: flex; align-items: center; gap: 18px; flex-wrap: wrap; padding: 20px 24px; border-radius: 16px; background: linear-gradient(115deg, #eaf4ff, #f6fbff 60%, #e9fbff); border: 1px solid #cfe3fa; margin-top: 24px; }
.avatar { width: 42px; height: 42px; border-radius: 12px; display: grid; place-items: center; flex-shrink: 0; background: linear-gradient(135deg, var(--blue), #089fc0); color: #fff; font-size: 16px; font-weight: 800; }
.avatar--lg { width: 56px; height: 56px; border-radius: 16px; font-size: 22px; }
.avatar--cyan { background: linear-gradient(135deg, #0aa7c4, #38c6d8); }
.avatar--orange { background: linear-gradient(135deg, #f08a2c, #ffb066); }
.avatar--violet { background: linear-gradient(135deg, #7c6ae0, #a99bff); }
.user-bar__id { flex: 1; min-width: 180px; }
.user-bar__name { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.user-bar__name b { font-size: 20px; color: #0a2c5c; }
.user-bar__sub { margin-top: 5px; font-size: 12.5px; color: var(--muted); }
.status-pill { display: inline-flex; align-items: center; padding: 4px 11px; border-radius: 99px; font-size: 11.5px; font-weight: 700; white-space: nowrap; }
.status-pill--ok { color: #0b7a58; background: #e3f7ee; border: 1px solid #b8e8d4; }
.status-pill--wait { color: #b45309; background: #fff2e4; border: 1px solid #ffd7b3; }
.status-pill--blue { color: #0b4fbf; background: #eaf4ff; border: 1px solid #cfe3fa; }
.user-bar__act { display: flex; gap: 8px; flex-wrap: wrap; }
.login-panel { margin-top: 16px; padding: 26px 28px; border-radius: 16px; background: #fff; border: 1px solid #cfe3fa; box-shadow: 0 14px 34px rgba(16,70,140,.08); }
.login-panel__head h3 { font-size: 18px; color: #0a2c5c; }
.login-panel__head p { margin-top: 6px; font-size: 12.5px; color: var(--muted); }
.login-panel__form { display: flex; align-items: flex-end; gap: 12px; flex-wrap: wrap; margin-top: 20px; }
.login-panel__form .field { flex: 1; min-width: 180px; margin: 0; }
.login-panel__msg { margin-top: 12px; min-height: 18px; font-size: 12.5px; color: #c23f1a; }
.profile-empty { margin-top: 22px; padding: 52px 30px; text-align: center; background: #fff; border: 1px solid var(--line); border-radius: 18px; }
.profile-empty__icon { width: 64px; height: 64px; margin: 0 auto 18px; border-radius: 50%; display: grid; place-items: center; background: #eaf4ff; color: var(--blue); }
.profile-empty__icon svg { width: 30px; height: 30px; }
.profile-empty h3 { font-size: 21px; color: #0a2c5c; }
.profile-empty p { max-width: 520px; margin: 12px auto 0; color: var(--muted); font-size: 13.5px; line-height: 1.9; }
.profile-empty .callout__actions { justify-content: center; margin-top: 22px; position: relative; }

/* ---------- 用户中心：档案布局 ---------- */
.profile-layout { display: grid; grid-template-columns: 220px 1fr; gap: 22px; align-items: start; margin-top: 22px; }
.profile-nav { position: sticky; top: 100px; background: #fff; border: 1px solid var(--line); border-radius: 16px; padding: 20px 16px; box-shadow: 0 10px 28px rgba(16,70,140,.05); }
.profile-nav__title { padding: 0 10px 12px; font-size: 12px; font-weight: 700; letter-spacing: .1em; color: var(--muted); }
.profile-nav > a { display: block; padding: 10px 12px; border-radius: 9px; font-size: 13.5px; color: #48627f; transition: background .25s, color .25s; }
.profile-nav > a:hover { background: #f2f9ff; color: var(--blue-deep); }
.profile-nav > a.is-active { background: #eaf4ff; color: var(--blue-deep); font-weight: 700; }
.profile-nav__foot { display: grid; gap: 8px; margin-top: 18px; padding-top: 16px; border-top: 1px solid var(--line); }
.profile-nav__foot .btn { width: 100%; }
.profile-main { min-width: 0; display: grid; gap: 18px; }
.profile-panel { background: #fff; border: 1px solid var(--line); border-radius: 16px; padding: 26px 28px; box-shadow: 0 10px 28px rgba(16,70,140,.05); scroll-margin-top: 100px; }
.profile-panel__head { display: flex; justify-content: space-between; align-items: flex-start; gap: 16px; flex-wrap: wrap; margin-bottom: 20px; }
.profile-panel__head .sec-kicker { margin-bottom: 8px; }
.profile-panel__head h2 { font-size: 20px; font-weight: 800; color: #0a2c5c; }
.profile-panel__foot { margin-top: 16px; font-size: 11.5px; color: #8ba2bd; }
.info-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 1px; overflow: hidden; background: var(--line); border: 1px solid var(--line); border-radius: 12px; }
.info-item { background: #fff; padding: 14px 18px; }
.info-item span { display: block; font-size: 11.5px; color: var(--muted); }
.info-item b { display: block; margin-top: 4px; font-size: 14px; font-weight: 700; color: #254a72; word-break: break-all; }
.team-banner { display: flex; align-items: center; gap: 18px; flex-wrap: wrap; padding: 20px 22px; border-radius: 14px; background: linear-gradient(115deg, #eaf4ff, #e9fbff 60%, #fff5e8); border: 1px solid #cfe3fa; margin-bottom: 18px; }
.team-banner__mark { width: 48px; height: 48px; border-radius: 13px; display: grid; place-items: center; flex-shrink: 0; background: linear-gradient(135deg, var(--blue), #089fc0); color: #fff; }
.team-banner__mark svg { width: 24px; height: 24px; }
.team-banner__label { font-size: 11.5px; color: var(--muted); }
.team-banner h3 { font-size: 21px; font-weight: 800; color: #0a2c5c; }
.team-banner p { margin-top: 5px; font-size: 12.5px; color: #48627f; }
.team-banner__code { margin-left: auto; text-align: right; }
.team-banner__code span { display: block; font-size: 11px; color: var(--muted); }
.team-banner__code b { font: 700 14px var(--font-en); letter-spacing: .06em; color: var(--blue-deep); }
.profile-panel .kv-list { margin-top: 0; }
.profile-panel .kv { grid-template-columns: 120px 1fr; padding: 11px 0; font-size: 13.5px; }
/* 参赛团队资料：8 项双列排布，避免单列把整屏撑高。仅作用于该面板，其它 .kv-list 保持原样 */
.kv-list--team { grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 32px; row-gap: 0; align-items: start; }
.kv-list--team .kv { min-width: 0; margin: 0; grid-template-columns: 92px minmax(0, 1fr); gap: 12px; padding: 10px 0; font-size: 13px; }
.kv-list--team .kv dt { white-space: nowrap; }
.kv-list--team .kv dd { min-width: 0; line-height: 1.65; overflow-wrap: anywhere; }
#p-team .profile-panel__head { margin-bottom: 16px; }
#p-team .team-banner { padding: 16px 20px; margin-bottom: 14px; }
.member-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 14px; }
.member-card { padding: 20px; border: 1px solid var(--line); border-radius: 13px; background: #fbfdff; transition: border-color .3s, box-shadow .3s; }
.member-card:hover { border-color: #a9d3f7; box-shadow: 0 14px 30px rgba(16,70,140,.09); }
.member-card__top { display: flex; align-items: center; gap: 12px; }
.member-card__top div b { display: block; font-size: 15px; color: #0a2c5c; }
.member-card__top .tag { margin-top: 5px; }
.member-card__job { margin-top: 14px; font-size: 12.5px; font-weight: 600; color: var(--blue-deep); }
.member-card p { margin-top: 8px; font-size: 12.5px; color: var(--muted); line-height: 1.8; }
.skill-tags { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 14px; }
.skill-tags span { padding: 4px 9px; border-radius: 6px; background: #eaf4ff; border: 1px solid #d3e5f8; font-size: 11px; color: #254a72; }
.file-list { display: grid; gap: 10px; }
.file-row { display: flex; align-items: center; gap: 14px; padding: 14px 16px; border: 1px solid var(--line); border-radius: 11px; background: #fbfdff; }
.file-row__ico { width: 40px; height: 40px; border-radius: 9px; display: grid; place-items: center; flex-shrink: 0; background: #fff2e4; color: #b45309; font: 700 11px var(--font-en); }
.file-row__body { flex: 1; min-width: 0; }
.file-row__body b { display: block; font-size: 13.5px; color: #254a72; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.file-row__body span { display: block; margin-top: 3px; font-size: 11.5px; color: var(--muted); }
.progress-track { display: grid; grid-template-columns: repeat(5, 1fr); gap: 10px; }
.progress-step { position: relative; padding: 16px 12px; border-radius: 11px; border: 1px solid var(--line); background: #fbfdff; text-align: center; }
.progress-step b { display: block; font: 800 15px var(--font-en); color: #8ba2bd; }
.progress-step span { display: block; margin-top: 8px; font-size: 12.5px; font-weight: 700; color: #48627f; }
.progress-step small { display: block; margin-top: 5px; font-size: 10.5px; color: var(--muted); line-height: 1.5; }
.progress-step.is-current { border-color: #a9d3f7; background: linear-gradient(150deg, #eaf4ff, #e9fbff); }
.progress-step.is-current b { color: var(--blue); }
.progress-step.is-current span { color: var(--blue-deep); }

/* ---------- 业务页响应式 ---------- */
@media (max-width: 1080px) {
  .header-user span { display: none; }
  .header-user { padding: 9px; }
  .header-user svg { width: 18px; height: 18px; }
  .signup-layout { grid-template-columns: 240px 1fr; }
  .profile-layout { grid-template-columns: 180px 1fr; }
}
@media (max-width: 900px) {
  .signup-layout { grid-template-columns: 1fr; }
  .signup-aside { position: static; grid-template-columns: repeat(2, 1fr); }
  .signup-aside .aside-card--warm { grid-column: span 2; }
  .profile-layout { grid-template-columns: 1fr; }
  .profile-nav { position: static; display: flex; flex-wrap: wrap; gap: 6px; align-items: center; }
  .profile-nav__title { width: 100%; padding: 0; }
  .profile-nav__foot { width: 100%; grid-template-columns: repeat(2, 1fr); margin-top: 8px; }
}
@media (max-width: 620px) {
  .form-step, .profile-panel, .login-panel { padding: 22px 18px; }
  .form-grid, .form-grid--member, .info-grid, .member-grid { grid-template-columns: 1fr; }
  /* 窄屏回到单列，避免半宽里标签与值挤在一起 */
  #teamKv { grid-template-columns: 1fr; column-gap: 0; }
  .kv-list--team .kv { padding: 9px 0; }
  .upload-slot { grid-template-columns: 28px 1fr; }
  .upload-slot__act { grid-column: span 2; align-items: flex-start; }
  .signup-aside { grid-template-columns: 1fr; }
  .signup-aside .aside-card--warm { grid-column: span 1; }
  .progress-track { grid-template-columns: 1fr; }
  .team-banner__code { margin-left: 0; text-align: left; }
  .user-bar__act { width: 100%; }
  .login-panel__form .field { min-width: 100%; }
  .profile-nav__foot { grid-template-columns: 1fr; }
}

/* ==========================================================================
   团队账号 / 成员管理 / 邀请报名 / 理论考核
   ========================================================================== */
[hidden] { display: none !important; }
.avatar img { width: 100%; height: 100%; object-fit: cover; border-radius: inherit; }
.avatar--lg img { border-radius: 16px; }

/* ---------- 两寸照片上传 ---------- */
.field--photo { min-width: 0; }
.photo-field { display: flex; align-items: center; gap: 16px; padding: 14px 16px; border: 1px dashed #b9d3ef; border-radius: 12px; background: #fafdff; }
.photo-preview { width: 75px; height: 105px; flex-shrink: 0; border-radius: 8px; overflow: hidden; display: grid; place-items: center; background: linear-gradient(150deg, #eaf4ff, #e9fbff); border: 1px solid #cfe3fa; color: #7b93ad; font-size: 11.5px; text-align: center; line-height: 1.5; }
.photo-preview img { width: 100%; height: 100%; object-fit: cover; }
.photo-field__act { display: grid; gap: 8px; justify-items: start; }
.photo-pick { cursor: pointer; }
.photo-field.is-invalid { border-color: #e6704a; background: #fff7f4; }

/* ---------- 团队编号规则卡 ---------- */
.code-rule { display: flex; align-items: center; gap: 7px; flex-wrap: wrap; padding: 14px; border-radius: 10px; background: linear-gradient(115deg, #eaf4ff, #e9fbff); border: 1px solid #cfe3fa; margin-bottom: 14px; }
.code-rule b { padding: 5px 8px; border-radius: 6px; background: #fff; border: 1px solid #cfe3fa; font: 800 12px var(--font-en); letter-spacing: .05em; color: var(--blue-deep); }
.code-rule span { color: #7b93ad; font-size: 12px; }

/* ---------- 用户中心：照片 / 内嵌表单 ---------- */
.profile-photo { display: flex; align-items: center; gap: 14px; margin-bottom: 18px; }
.profile-photo img { width: 78px; height: 110px; object-fit: cover; border-radius: 8px; border: 1px solid var(--line); box-shadow: 0 6px 16px rgba(16,70,140,.10); }
.profile-photo__empty { width: 78px; height: 110px; border-radius: 8px; display: grid; place-items: center; background: #f2f9ff; border: 1px dashed #b9d3ef; color: #8ba2bd; font-size: 11.5px; text-align: center; line-height: 1.6; }
.profile-photo span { font-size: 12px; color: var(--muted); }
/* 管理员编辑入口：默认只显示按钮，点击后才展开对应表单 */
.panel-actions { display: flex; justify-content: flex-end; align-items: center; flex-wrap: wrap; gap: 10px; margin-top: 18px; }
.inline-form { margin-top: 22px; padding: 20px 22px; border: 1px dashed #a9d3f7; border-radius: 13px; background: linear-gradient(150deg, #f6fbff, #fff); }
.inline-form__head { display: flex; justify-content: space-between; align-items: baseline; gap: 10px; flex-wrap: wrap; margin-bottom: 18px; }
.inline-form__head b { font-size: 14px; color: #0a2c5c; }
.inline-form__head span { font-size: 11.5px; color: var(--muted); }
.inline-form .form-grid { gap: 14px 18px; }
.inline-form__actions { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; margin-top: 4px; }
.inline-form__msg { font-size: 12px; color: #0b7a58; font-weight: 600; }
.inline-form .upload-slot { grid-template-columns: 34px 1fr auto; }

.member-card { display: flex; gap: 14px; align-items: flex-start; flex-wrap: wrap; }
.member-card__body { flex: 1; min-width: 170px; }
.member-card__name { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.member-card__name b { font-size: 15px; color: #0a2c5c; }
.member-card__act { width: 100%; display: flex; justify-content: flex-end; gap: 8px; padding-top: 12px; margin-top: 2px; border-top: 1px solid var(--line); }
.mini-btn { padding: 5px 12px; border-radius: 7px; border: 1px solid #cfe3fa; background: #f2f9ff; color: var(--blue-deep); font-size: 11.5px; font-weight: 700; }
.mini-btn:hover { background: #e6f2ff; border-color: #a9d3f7; }
.mini-btn--danger { color: #b45309; border-color: #f3ddba; background: #fff7ec; }
.mini-btn--danger:hover { background: #ffeed9; }

.cred-box { margin-top: 18px; padding: 18px 20px; border-radius: 12px; background: linear-gradient(120deg, #fff6e9, #fffdf7); border: 1px solid #f3ddba; }
.cred-box__title { font-size: 13.5px; font-weight: 800; color: #b45309; margin-bottom: 10px; }
.cred-box__row { display: flex; gap: 16px; padding: 5px 0; font-size: 13px; }
.cred-box__row span { width: 80px; flex-shrink: 0; color: #7a5a34; }
.cred-box__row b { color: #0a2c5c; font: 700 13px var(--font-en); }
.cred-box__foot { margin-top: 10px; font-size: 11.5px; color: #7a5a34; line-height: 1.7; }

/* ---------- 邀请链接 ---------- */
.panel-lead { font-size: 13px; line-height: 1.9; color: var(--muted); margin-bottom: 18px; }
.panel-lead b { color: var(--blue-deep); }
.invite-box { padding: 20px 22px; border-radius: 13px; background: linear-gradient(120deg, #eef7ff, #e9fbff); border: 1px solid #cfe3fa; }
.invite-box > label { display: block; font-size: 12px; font-weight: 700; color: #254a72; margin-bottom: 10px; }
.invite-box__row { display: flex; gap: 10px; flex-wrap: wrap; }
.invite-box__row .form-control { flex: 1; min-width: 240px; background: #fff; font: 12.5px var(--font-en); color: #254a72; }
.invite-box__msg { min-height: 18px; margin-top: 10px; font-size: 12px; color: #0b7a58; font-weight: 600; }
/* 满员等需要管理员处置的提示：换成告警色，避免和「已载入」这类成功提示同色看不出问题 */
.invite-box__msg.is-warn { color: #b45309; }
.invite-box__msg a { color: #b45309; text-decoration: underline; font-weight: 700; }
/* 名额已满：按钮保持可点（点了给原因），只改配色提示不可继续 */
.btn.is-blocked { background: linear-gradient(135deg, #f6b352, #e08a1e); box-shadow: 0 6px 16px rgba(224, 138, 30, .22); }
.invite-box__foot { margin-top: 10px; font-size: 11.5px; color: #7b93ad; line-height: 1.7; }
.invite-bind { display: flex; align-items: center; gap: 18px; flex-wrap: wrap; margin-top: 24px; padding: 20px 24px; border-radius: 16px; background: linear-gradient(115deg, #eaf4ff, #f6fbff 60%, #e9fbff); border: 1px solid #cfe3fa; }
.invite-bind__ico { width: 50px; height: 50px; border-radius: 14px; display: grid; place-items: center; flex-shrink: 0; background: linear-gradient(135deg, var(--blue), #089fc0); color: #fff; }
.invite-bind__ico svg { width: 25px; height: 25px; }
.invite-bind > div:nth-child(2) { flex: 1; min-width: 200px; }
.invite-bind__label { font-size: 11.5px; color: var(--muted); }
.invite-bind h3 { margin-top: 4px; font-size: 20px; color: #0a2c5c; }
.invite-bind p { margin-top: 5px; font-size: 12.5px; color: #48627f; }
.invite-bind p b { color: var(--blue-deep); font-family: var(--font-en); }
.invite-invalid { margin-top: 26px; padding: 32px; border-radius: 16px; background: #fff; border: 1px solid var(--line); text-align: center; }
.invite-invalid h3 { font-size: 20px; color: #0a2c5c; }
.invite-invalid p { margin: 10px 0 18px; font-size: 13px; color: var(--muted); }
.join-form .form-step { margin-bottom: 0; }

/* ---------- 用户中心：考核入口 ---------- */
.exam-entry { display: flex; align-items: center; gap: 20px; flex-wrap: wrap; padding: 18px 20px; border-radius: 12px; background: linear-gradient(115deg, #eaf4ff, #f6fbff); border: 1px solid #cfe3fa; }
.exam-entry > div:first-child { flex: 1; min-width: 220px; }
.exam-entry b { font-size: 14px; color: #0a2c5c; }
.exam-entry p { margin-top: 6px; font-size: 12.5px; color: #48627f; line-height: 1.8; }
.exam-entry p b { color: var(--blue-deep); }
.exam-entry__score { text-align: center; min-width: 90px; }
.exam-entry__score b { display: block; font: 800 28px var(--font-en); color: var(--blue); }
.exam-entry__score small { display: block; margin-top: 4px; font-size: 11px; color: var(--muted); }

/* ---------- 理论考试：说明 / 闸门 ---------- */
.exam-gate, .exam-intro, .exam-result { background: #fff; border: 1px solid var(--line); border-radius: 18px; padding: 32px 34px; box-shadow: 0 12px 34px rgba(16,70,140,.05); margin-top: 26px; }
.exam-gate { text-align: center; }
.exam-gate h3 { font-size: 22px; color: #0a2c5c; }
.exam-gate p { margin: 10px 0 22px; font-size: 13.5px; color: var(--muted); }
.exam-gate .callout__actions { justify-content: center; position: relative; }
.exam-intro__head, .exam-paper__head { display: flex; justify-content: space-between; align-items: flex-start; gap: 16px; flex-wrap: wrap; }
.exam-intro__head h2, .exam-paper__head h2 { font-size: 22px; font-weight: 800; color: #0a2c5c; }
.exam-rules { display: grid; grid-template-columns: repeat(5, 1fr); gap: 12px; margin: 24px 0; }
.exam-rules > div { padding: 16px 8px; border-radius: 12px; background: linear-gradient(150deg, #eaf4ff, #f6fbff); border: 1px solid #d3e5f8; text-align: center; }
.exam-rules b { display: block; font: 800 23px var(--font-en); color: var(--blue-deep); }
.exam-rules span { display: block; margin-top: 6px; font-size: 11.5px; color: var(--muted); }
.exam-intro .kv-list { margin-top: 0; }
.exam-intro .kv { grid-template-columns: 120px 1fr; padding: 10px 0; font-size: 13px; }
.exam-intro__foot { display: flex; justify-content: space-between; align-items: center; gap: 16px; flex-wrap: wrap; margin-top: 22px; padding-top: 20px; border-top: 1px solid var(--line); font-size: 12.5px; color: var(--muted); }

/* ---------- 理论考试：答题区 ---------- */
.exam-shell { display: grid; grid-template-columns: 1fr 240px; gap: 22px; align-items: start; margin-top: 26px; }
.exam-paper { min-width: 0; }
.exam-paper__head { background: #fff; border: 1px solid var(--line); border-radius: 16px 16px 0 0; padding: 22px 26px; }
.q-card { background: #fff; border: 1px solid var(--line); border-top: 0; padding: 24px 26px; scroll-margin-top: 100px; }
.q-card:last-of-type { border-radius: 0 0 16px 16px; }
.q-card__head { display: flex; align-items: center; gap: 10px; }
.q-card__no { font: 800 13px var(--font-en); letter-spacing: .08em; color: var(--blue); }
.q-type { padding: 4px 10px; border-radius: 99px; font-size: 11px; font-weight: 700; color: #0b4fbf; background: #eaf4ff; border: 1px solid #cfe3fa; }
.q-type--multi { color: #b45309; background: #fff2e4; border-color: #ffd7b3; }
.q-title { margin: 12px 0 16px; font-size: 15.5px; font-weight: 700; line-height: 1.7; color: #0a2c5c; }
.q-options { display: grid; gap: 9px; }
.q-opt { display: flex; align-items: flex-start; gap: 12px; padding: 12px 14px; border: 1px solid var(--line); border-radius: 10px; background: #fbfdff; cursor: pointer; font-size: 13.5px; color: #254a72; transition: border-color .2s, background .2s; }
.q-opt:hover { border-color: #a9d3f7; background: #f4faff; }
.q-opt input { position: absolute; opacity: 0; width: 0; height: 0; }
.q-opt__key { width: 26px; height: 26px; border-radius: 7px; display: grid; place-items: center; flex-shrink: 0; background: #eaf4ff; color: var(--blue-deep); font: 700 12px var(--font-en); }
.q-opt__txt { padding-top: 3px; line-height: 1.6; }
.q-opt input:checked ~ .q-opt__key { background: var(--blue); color: #fff; }
.q-opt:has(input:checked) { border-color: #8fc0f5; background: #eef7ff; }
.exam-paper__foot { padding: 20px 26px; text-align: right; }
.exam-side { position: sticky; top: 100px; display: grid; gap: 14px; }
.exam-side__card { padding: 20px; border-radius: 14px; background: #fff; border: 1px solid var(--line); box-shadow: 0 10px 28px rgba(16,70,140,.05); }
.exam-side__label { font-size: 11.5px; font-weight: 700; letter-spacing: .08em; color: var(--muted); }
.exam-timer { margin-top: 6px; font: 800 34px var(--font-en); letter-spacing: .02em; color: var(--blue-deep); }
.exam-timer.is-urgent { color: #c23f1a; }
.exam-progress { display: flex; align-items: baseline; gap: 6px; margin-top: 8px; }
.exam-progress b { font: 800 24px var(--font-en); color: var(--blue); }
.exam-progress span { font-size: 12px; color: var(--muted); }
.exam-bar { height: 6px; border-radius: 99px; overflow: hidden; background: #e6f2ff; margin-top: 10px; }
.exam-bar i { display: block; width: 0; height: 100%; background: linear-gradient(90deg, var(--blue), #089fc0); transition: width .3s; }
.exam-nav { display: grid; grid-template-columns: repeat(5, 1fr); gap: 6px; margin-top: 12px; }
.exam-nav__item { aspect-ratio: 1; border-radius: 7px; border: 1px solid #cfe3fa; background: #f6fbff; color: #48627f; font: 700 12px var(--font-en); }
.exam-nav__item:hover { border-color: var(--blue); }
.exam-nav__item.is-done { color: #fff; background: var(--blue); border-color: var(--blue); }
.exam-side__tip { margin-top: 10px; font-size: 11px; color: #8ba2bd; line-height: 1.6; }
.exam-side__card--warm { background: linear-gradient(150deg, #fff6e9, #fffdf7); border-color: #f3ddba; }
.exam-side__card--warm p { margin-top: 10px; font-size: 12px; color: #7a5a34; line-height: 1.8; }

/* ---------- 理论考试：成绩与解析 ---------- */
.exam-result__top { display: flex; align-items: center; gap: 26px; flex-wrap: wrap; margin-bottom: 24px; }
.score-ring { width: 132px; height: 132px; flex-shrink: 0; border-radius: 50%; display: flex; flex-direction: column; align-items: center; justify-content: center; border: 8px solid #eaf4ff; background: #fff; }
.score-ring b { font: 800 40px var(--font-en); line-height: 1; color: var(--blue-deep); }
.score-ring span { margin-top: 6px; font-size: 11.5px; color: var(--muted); }
.score-ring.is-pass { border-color: #b8e8d4; }
.score-ring.is-pass b { color: #0b7a58; }
.score-ring.is-fail { border-color: #ffd7b3; }
.score-ring.is-fail b { color: #b45309; }
.exam-result h2 { margin-top: 10px; font-size: 26px; font-weight: 800; color: #0a2c5c; }
.exam-result__top p { margin-top: 8px; font-size: 13.5px; color: var(--muted); line-height: 1.8; }
.exam-result__meta { display: flex; gap: 10px; flex-wrap: wrap; margin-top: 16px; }
.exam-result__meta span { padding: 6px 12px; border-radius: 8px; background: #f2f9ff; border: 1px solid #d3e5f8; font-size: 12px; color: #254a72; }
.review-head { display: flex; justify-content: space-between; align-items: center; margin: 34px 0 16px; padding-top: 24px; border-top: 1px solid var(--line); }
.review-head h3 { font-size: 18px; color: #0a2c5c; }
.review-head span { font-size: 12px; color: var(--muted); }
.review-card { padding: 20px 22px; border: 1px solid var(--line); border-radius: 13px; background: #fbfdff; margin-bottom: 12px; }
.review-card__head { display: flex; align-items: center; gap: 10px; }
.review-card__head > b { font: 800 13px var(--font-en); color: var(--blue); }
.review-card__score { margin-left: auto; font-size: 12px; font-weight: 700; color: #0b7a58; }
.review-card__score.is-zero { color: #b45309; }
.review-card h4 { margin-top: 12px; font-size: 14px; font-weight: 700; color: #0a2c5c; line-height: 1.7; }
.review-opts { display: grid; gap: 8px; margin-top: 14px; }
.review-opt { display: flex; align-items: center; gap: 10px; padding: 10px 12px; border: 1px solid var(--line); border-radius: 9px; background: #fff; font-size: 12.5px; color: #48627f; }
.review-opt b { width: 22px; height: 22px; border-radius: 6px; display: grid; place-items: center; flex-shrink: 0; background: #eaf4ff; color: var(--blue-deep); font: 700 11px var(--font-en); }
.review-opt i { margin-left: auto; font-style: normal; font-size: 11px; font-weight: 700; color: #0b7a58; }
.review-opt em { font-style: normal; font-size: 11px; font-weight: 700; color: var(--blue-deep); }
.review-opt.is-correct { border-color: #b8e8d4; background: #f2fbf7; }
.review-opt.is-wrong { border-color: #ffc9b3; background: #fff5f0; }
.review-card__ex { margin-top: 14px; padding: 12px 14px; border-radius: 9px; background: #eef7ff; font-size: 12.5px; color: #254a72; line-height: 1.8; }
.review-card__ex b { color: var(--blue-deep); }

/* ---------- 新页面响应式 ---------- */
@media (max-width: 1080px) {
  .exam-shell { grid-template-columns: 1fr 210px; }
  .exam-rules { grid-template-columns: repeat(3, 1fr); }
}
@media (max-width: 900px) {
  .exam-shell { grid-template-columns: 1fr; }
  .exam-side { position: static; grid-template-columns: repeat(2, 1fr); }
  .exam-side__card:last-child { grid-column: span 2; }
  .invite-bind .status-pill { margin-left: 0; }
}
@media (max-width: 620px) {
  .exam-rules { grid-template-columns: repeat(2, 1fr); }
  .exam-gate, .exam-intro, .exam-result { padding: 22px 18px; }
  .exam-side { grid-template-columns: 1fr; }
  .exam-side__card:last-child { grid-column: span 1; }
  .q-card, .exam-paper__head { padding: 20px 16px; }
  .photo-field { flex-direction: column; align-items: flex-start; }
  .invite-box__row .form-control { min-width: 100%; }
  .inline-form { padding: 18px 14px; }
  .member-card { gap: 10px; }
  .exam-intro .kv, .profile-panel .kv, .aside-card .kv { grid-template-columns: 96px 1fr; }
}

/* ---------- 赛事动态：后台已发布公告 ---------- */
.news-group-head { display: flex; align-items: baseline; gap: 14px; flex-wrap: wrap; padding: 6px 2px 2px; margin-top: 6px; font: 800 13px/1.5 var(--font-en); letter-spacing: .08em; color: var(--blue-deep); }
.news-group-head span { font: 500 12px/1.6 var(--font-cn); letter-spacing: 0; color: var(--muted); }
.news-group-head--sub { margin-top: 18px; padding-top: 16px; border-top: 1px dashed #cfe0f3; }
.news-item--live { border-color: #b9d9fb; background: linear-gradient(100deg, #fff, #f6fbff); box-shadow: 0 10px 26px rgba(18, 104, 232, .09); }
.news-item--live:hover { border-color: var(--blue); background: #f4faff; }
.news-pin { display: inline-block; margin-right: 8px; padding: 2px 8px; border-radius: 6px; background: #fff2e4; color: #b45309; font-size: 11px; font-weight: 700; vertical-align: 2px; }
.news-item__tools { display: flex; align-items: center; gap: 14px; margin-top: 10px; flex-wrap: wrap; }
.news-cat { font-size: 11.5px; color: var(--blue-deep); background: #e9f3ff; border: 1px solid #cfe3fb; border-radius: 6px; padding: 2px 8px; }
.news-more { border: 0; background: transparent; padding: 0; font: 600 12px var(--font-cn); color: var(--blue); cursor: pointer; }
.news-more:hover { text-decoration: underline; }
.news-detail { grid-column: 1 / -1; border: 1px solid #cfe3fb; border-left: 3px solid var(--blue); border-radius: 12px; background: #f8fcff; padding: 18px 22px; }
.news-detail__head { display: flex; flex-wrap: wrap; gap: 8px 18px; font-size: 11.5px; color: var(--muted); padding-bottom: 12px; border-bottom: 1px dashed #d8e8fa; }
.news-detail__body { padding-top: 12px; font-size: 13px; line-height: 1.9; color: #33547a; }
.news-detail__body p { margin: 0 0 8px; }
.news-detail__foot { margin-top: 10px; font-size: 11.5px; color: #8ba5c2; }
.news-detail__err { margin: 0 0 14px; padding: 10px 14px; border-radius: 10px; font-size: 12.5px;
  color: #a3212b; background: #fdf1f2; border: 1px solid #f3d2d5; }
@media (max-width: 620px) {
  .news-group-head { flex-direction: column; gap: 4px; }
  .news-detail { padding: 14px 16px; }
}

/* ---------- 赛事动态：富文本图文 / 附件下载 ---------- */
.news-item__main { display: flow-root; }
.news-thumb { float: right; width: 104px; height: 72px; margin: 0 0 8px 16px; border: 1px solid #cfe3fb; border-radius: 9px; overflow: hidden; background: #eef6ff; }
.news-thumb img { display: block; width: 100%; height: 100%; object-fit: cover; }
.news-cat--media { background: #fff5e9; border-color: #f6d7ae; color: #a3560b; }

.news-body { font-size: 13.5px; line-height: 1.95; color: #2d4d73; overflow-wrap: anywhere; }
.news-body p, .news-body div { margin: 0 0 10px; }
.news-body h2 { font-size: 18px; font-weight: 800; color: #0a2c5c; margin: 18px 0 10px; line-height: 1.5; }
.news-body h3 { font-size: 15.5px; font-weight: 700; color: #0e4a92; margin: 15px 0 8px; }
.news-body h4 { font-size: 14px; font-weight: 700; color: #0e4a92; margin: 12px 0 8px; }
.news-body ul, .news-body ol { margin: 8px 0 12px; padding-left: 22px; }
.news-body li { margin: 3px 0; }
.news-body blockquote { margin: 12px 0; padding: 8px 14px; background: #eef6ff; border-left: 3px solid var(--blue); border-radius: 0 8px 8px 0; color: #3f5877; }
.news-body hr { border: 0; border-top: 1px dashed #c9dff7; margin: 16px 0; }
.news-body strong, .news-body b { color: #0a2c5c; }
.news-body a:not(.file-link) { color: var(--blue); text-decoration: underline; }
.news-body figure { margin: 14px 0; text-align: center; }
.news-body figure img, .news-body p > img { display: block; max-width: 100%; height: auto; margin: 0 auto; border-radius: 10px; border: 1px solid #d8e8fa; box-shadow: 0 8px 22px rgba(16, 70, 140, .1); cursor: zoom-in; }
.news-body figcaption { margin-top: 7px; font-size: 11.5px; color: #8ba5c2; }
.news-body table { border-collapse: collapse; width: 100%; margin: 12px 0; }
.news-body th, .news-body td { border: 1px solid #cfe3fb; padding: 7px 10px; text-align: left; }
.news-body th { background: #eaf4ff; color: #0a2c5c; }

.file-link { display: inline-flex; align-items: center; gap: 7px; padding: 3px 9px; border-radius: 7px; background: #eaf4ff; border: 1px solid #cfe3fb; color: var(--blue-deep); text-decoration: none; font-weight: 600; }
.file-link:hover { background: #dcecff; text-decoration: none; }
.file-link.is-loading { opacity: .7; }
.file-link.is-missing { background: #fdf0ec; border-color: #f3c8b7; color: #b1451f; }
.file-link b { font-size: 11px; background: var(--blue); color: #fff; border-radius: 4px; padding: 1px 5px; font-weight: 700; }

.news-detail__files { margin-top: 14px; padding-top: 12px; border-top: 1px dashed #d8e8fa; display: grid; gap: 8px; }
.news-detail__files-head { font-size: 12px; font-weight: 700; color: var(--blue-deep); }
.news-file { padding: 9px 12px; font-size: 12.5px; }
.news-file__name { flex: 1 1 auto; font-weight: 600; color: #24466f; overflow-wrap: anywhere; }
.news-file__size { color: var(--muted); font-size: 11.5px; }
.news-file__dl { color: var(--blue); font-size: 11.5px; white-space: nowrap; }
.news-detail__none { font-size: 12px; color: var(--muted); }

.ysb-lightbox { position: fixed; inset: 0; z-index: 200; background: rgba(6, 26, 54, .82); display: grid; place-items: center; padding: 30px; cursor: zoom-out; }
.ysb-lightbox__inner { position: relative; max-width: min(1100px, 94vw); max-height: 90vh; }
.ysb-lightbox__inner img { display: block; max-width: 100%; max-height: 86vh; border-radius: 10px; box-shadow: 0 24px 70px rgba(0, 0, 0, .4); }
.ysb-lightbox__x { position: absolute; top: -14px; right: -14px; width: 32px; height: 32px; border: 0; border-radius: 50%; background: #fff; color: #0a2c5c; font-size: 20px; line-height: 1; cursor: pointer; }
@media (max-width: 620px) {
  .news-thumb { width: 78px; height: 56px; margin-left: 10px; }
  .news-detail__body { font-size: 13px; }
  .news-body figure img, .news-body p > img { border-radius: 8px; }
}

/* ==========================================================================
   v2 紧凑版式调优（2026-11-12）
   目标：压缩板块上下留白与标题到内容的距离，收紧卡片内文字节奏，
        让整页信息密度更集中；不改变配色、字号层级与栅格结构。
   这一层是集中覆盖层，放在所有响应式规则之后，便于整段回退或继续微调。
   ========================================================================== */

/* 1) 板块垂直节奏：100 → 68，相邻板块间的空白由 200px 降到 136px */
.section { padding: 68px 0; }
.section--tight { padding: 52px 0; }
.wrap.section { padding: 68px 28px; }
.wrap.section--tight { padding: 52px 28px; }
.stats-strip { margin-top: 18px; }
.page-hero { padding: 64px 0 54px; }
.kv-hero__bar-in { padding: 12px 28px 14px; }

/* 2) 标题区：标题到内容 48 → 32，眉标 / 描述 / 行距同步收 */
.sec-head { margin-bottom: 32px; gap: 28px; }
.sec-kicker { margin-bottom: 12px; }
.sec-head h2 { font-size: clamp(28px, 3.1vw, 40px); line-height: 1.18; }
.sec-head p { margin-top: 10px; font-size: 14.5px; line-height: 1.7; }
.page-hero__index { margin-bottom: 14px; }
.page-hero h1 { font-size: clamp(34px, 4.4vw, 54px); }
.page-hero__lead { margin-top: 14px; line-height: 1.75; }

/* 3) 卡片内节奏 */
.grid { gap: 16px; }
.card { padding: 24px; }
.card__icon { width: 40px; height: 40px; margin: 12px 0 14px; }
.card__icon svg { width: 20px; height: 20px; }
.card h3 { font-size: 18px; }
.card p { margin-top: 9px; line-height: 1.72; }
.card ul { margin-top: 10px; gap: 7px; }
.card li { line-height: 1.65; }
.card li::before { top: 9px; }
.card__foot { margin-top: 14px; }
.card--quote { padding: 30px; }

/* 4) 数据条 / 时间线 / 新闻 / 服务入口 */
.stat { padding: 20px 22px 18px; }
.stat__num { font-size: 29px; }
.stat__label { margin-top: 6px; }
.timeline-mini { gap: 10px; }
.timeline-mini::before { top: 29px; }
.tl-mini__dot { margin: 22px 0 18px; }
.news-list { gap: 10px; }
.news-item { gap: 18px; padding: 16px 22px; }
.service { padding: 20px 18px; }

/* 5) 页脚收束：导航改双列后再略收上下留白，避免整块过高 */
.site-footer { padding: 40px 0 20px; }
.footer-grid { gap: 34px; }
.footer-brand p { margin-top: 14px; line-height: 1.8; }
.footer-col h4 { margin-bottom: 14px; }
.footer-col a, .footer-col li, .footer-col p { line-height: 1.9; }
/* 组织机构四行分组：组间由网格 row-gap 控制，标题下留白单独收一点 */
.site-footer .footer-org h4 { margin-bottom: 4px; }
.site-footer .footer-org__k, .site-footer .footer-org__v { line-height: 1.85; }
.footer-bottom { margin-top: 28px; padding-top: 18px; }

/* 6) 入场动效幅度跟着收 */
.reveal { transform: translateY(16px); }

/* 7) 小屏按同一比例继续收，避免移动端反而更松 */
@media (max-width: 900px) {
  .section { padding: 52px 0; }
  .wrap.section { padding: 52px 28px; }
  .wrap.section--tight { padding: 40px 28px; }
  .sec-head { gap: 16px; }
}
@media (max-width: 620px) {
  .section { padding: 44px 0; }
  .section--tight { padding: 38px 0; }
  .wrap.section { padding: 44px 20px; }
  .wrap.section--tight { padding: 34px 20px; }
  .card { padding: 20px; }
  .kv-hero__bar-in { padding: 11px 20px 13px; }
  .footer-nav__links { column-gap: 12px; }
  /* 单列布局下页脚宽度已足够，组织机构占满整列，避免右侧留白 */
  .footer-org { max-width: none; }
  /* 兜底条款在窄屏逐行更紧凑，避免吃掉过多首屏高度 */
  .footer-legal { font-size: 11px; line-height: 1.8; padding-top: 8px; }
  /* 窄屏二维码略收一点，避免品牌块过高 */
  .footer-brand .footer-qr { margin-top: 14px; gap: 12px; }
  .footer-qr__card img { width: 86px; height: 86px; }
}
/* 极窄屏（<360px）：容器已放不下最长单位名，此时才允许单位内部换行，避免横向溢出 */
@media (max-width: 360px) {
  .footer-org__u { display: inline; white-space: normal; }
}

/* ==========================================================================
   密码框「眼睛」可见性切换（assets/js/pwd-eye.js）
   ========================================================================== */
.pwd-eye-capable { padding-right: 42px !important; }
.pwd-eye {
  position: absolute;
  right: 5px;
  top: 0;
  z-index: 2;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 30px;
  height: 30px;
  margin: 0;
  padding: 0;
  border: 0;
  border-radius: 8px;
  background: transparent;
  color: #8ea8c4;
  line-height: 1;
  cursor: pointer;
  transform: translateY(-50%);
  transition: color .18s ease, background-color .18s ease;
}
.pwd-eye:hover { color: var(--blue); background: rgba(18, 104, 232, .09); }
.pwd-eye:active { background: rgba(18, 104, 232, .16); }
.pwd-eye:focus-visible { outline: 2px solid var(--blue); outline-offset: 1px; }
.pwd-eye svg { width: 18px; height: 18px; display: block; pointer-events: none; }
.pwd-eye .pwd-eye__off { display: none; }
.pwd-eye.is-on { color: var(--blue); }
.pwd-eye.is-on .pwd-eye__open { display: none; }
.pwd-eye.is-on .pwd-eye__off { display: block; }

/* ---------- 组织机构卡片：单位名称清单 ---------- */
.org-card__units { margin-top: 14px; padding-top: 13px; border-top: 1px dashed #dbe9f8; display: grid; gap: 7px; }
.org-card__units li { position: relative; padding-left: 13px; font-size: 12.5px; line-height: 1.7; color: #24466f; }
.org-card__units li::before { content: ''; position: absolute; left: 0; top: 8px; width: 5px; height: 5px; border-radius: 50%; background: var(--blue); opacity: .5; }

/* ---------- 判断题：正确 / 错误 双选 ---------- */
.q-type--judge { color: #0f7b5f; background: #e9f8f2; border-color: #bfe9da; }
.q-options--judge { grid-template-columns: 1fr 1fr; }
.q-opt--judge { justify-content: center; align-items: center; padding: 16px 12px; }
.q-opt--judge .q-opt__txt { padding-top: 0; font-weight: 700; }
.q-opt--judge:has(input:checked) { border-color: #4fb99b; background: #eafaf4; }
@media (max-width: 560px) { .q-options--judge { grid-template-columns: 1fr; } }

/* ---------- 考试页确认框：离开 / 交卷 / 倒计时提醒 ---------- */
.exam-dialog-mask { position: fixed; inset: 0; z-index: 9999; display: grid; place-items: center;
  padding: 20px; background: rgba(9, 26, 48, .55); animation: examMaskIn .16s ease-out; }
.exam-dialog { width: min(440px, 100%); background: #fff; border-radius: 18px; padding: 26px 26px 22px;
  box-shadow: 0 24px 60px rgba(6, 28, 56, .28); text-align: center; animation: examDlgIn .2s ease-out; }
.exam-dialog__ico { width: 46px; height: 46px; margin: 0 auto 12px; border-radius: 50%; display: grid;
  place-items: center; font: 700 22px/1 var(--font-en); color: #fff; background: var(--blue); }
.exam-dialog.is-warn .exam-dialog__ico { background: linear-gradient(135deg, #f6b352, #e08a1e); }
.exam-dialog.is-ok .exam-dialog__ico { background: linear-gradient(135deg, #2fb27a, #0b7a58); }
.exam-dialog__title { font-size: 17px; line-height: 1.4; color: #12263f; margin: 0 0 8px; }
.exam-dialog__body { font-size: 13px; line-height: 1.78; color: #52667f; text-align: left; }
.exam-dialog__body b { color: #0b3a66; }
.exam-dialog__btns { display: flex; gap: 10px; justify-content: center; flex-wrap: wrap; margin-top: 20px; }
.exam-dialog__btn { min-width: 120px; }
.exam-dialog__btn--danger { background: linear-gradient(135deg, #e8552f, #c9351a); color: #fff; border: 0; }
.exam-dialog__btn--danger:hover { background: linear-gradient(135deg, #ef6a45, #d43f22); }
@keyframes examMaskIn { from { opacity: 0; } to { opacity: 1; } }
@keyframes examDlgIn { from { opacity: 0; transform: translateY(10px) scale(.97); } to { opacity: 1; transform: none; } }
@media (max-width: 480px) { .exam-dialog { padding: 22px 18px 18px; } .exam-dialog__btn { min-width: 0; flex: 1; } }

/* ---------- 三真三实（首页 + 概况页） ---------- */
.truth { display: grid; grid-template-columns: minmax(0, 1fr) 84px minmax(0, 1fr); align-items: stretch; }
.truth__col {
  position: relative; padding: 6px 28px 16px; overflow: hidden;
  background: #fff; border: 1px solid var(--line); border-radius: 20px;
  box-shadow: 0 12px 32px rgba(16, 70, 140, .06);
}
.truth__col::before {
  content: ""; position: absolute; left: 0; right: 0; top: 0; height: 4px;
  background: linear-gradient(90deg, var(--blue), var(--cyan-live));
}
.truth__col--solid::before { background: linear-gradient(90deg, #8f6108, #f3c273); }

.truth__head { padding: 26px 0 20px; border-bottom: 1px solid var(--line); }
.truth__badge {
  display: inline-block; padding: 7px 15px; border-radius: 999px; color: #fff;
  font: 800 12.5px/1 var(--font-cn); letter-spacing: .18em; text-indent: .18em;
  background: linear-gradient(120deg, var(--blue-deep), var(--cyan));
}
.truth__col--solid .truth__badge { background: linear-gradient(120deg, #8f6108, var(--amber)); }
.truth__head h3 { margin: 16px 0 0; font-size: 20px; font-weight: 800; color: #0a2c5c; letter-spacing: -.01em; }
.truth__head p { margin: 9px 0 0; font-size: 13px; line-height: 1.8; color: var(--muted); }

.truth__list { margin: 0; padding: 0; list-style: none; }
.truth__item {
  display: grid; grid-template-columns: 34px minmax(0, 1fr); gap: 15px;
  padding: 18px 0; border-top: 1px dashed #d3e4f6;
}
.truth__item:first-child { border-top: 0; padding-top: 20px; }
.truth__no {
  width: 32px; height: 32px; margin-top: 1px; display: grid; place-items: center;
  border: 1px solid #cfe3fa; border-radius: 9px; background: #eff7ff; color: var(--blue-deep);
  font: 800 12px/1 var(--font-en); letter-spacing: .04em;
}
.truth__col--solid .truth__no { border-color: #f2ddb4; background: #fff8ea; color: #8f6108; }
.truth__item h4 {
  margin: 0; display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap;
  font-size: 15.5px; font-weight: 700; color: #12396a;
}
.truth__item h4 i {
  font: 700 9.5px/1 var(--font-en); font-style: normal; letter-spacing: .17em; color: #93a9c4;
}
.truth__item p { margin: 7px 0 0; font-size: 13px; line-height: 1.85; color: var(--muted-2); text-wrap: pretty; }

/* 中间「以真促实」连接柱：竖线分为圆点上下两段，避免从文字背后穿过 */
.truth__link { position: relative; display: grid; place-items: center; align-content: center; gap: 12px; }
.truth__link::before, .truth__link::after {
  content: ""; position: absolute; left: 50%; width: 1px; transform: translateX(-50%);
  background: #c3d8ef;
}
.truth__link::before { top: 26px; height: calc(50% - 70px); }
.truth__link::after { top: calc(50% + 48px); bottom: 26px; }
.truth__dot {
  position: relative; width: 40px; height: 40px; border-radius: 50%; display: grid; place-items: center;
  background: #fff; border: 1px solid #c3d8ef; color: var(--blue); box-shadow: 0 8px 20px rgba(16, 70, 140, .12);
}
.truth__dot svg { width: 17px; height: 17px; }
.truth__link em {
  font: 700 10px/1 var(--font-cn); font-style: normal; letter-spacing: .2em; text-indent: .2em; color: #7b93b0;
}

/* 概况页详细版 */
#truth { scroll-margin-top: 96px; }
.truth-detail { display: grid; gap: 34px; }
.truth-detail__group + .truth-detail__group { border-top: 1px dashed #cbdff3; padding-top: 30px; }
.truth-detail__label { display: flex; align-items: center; gap: 16px; flex-wrap: wrap; margin-bottom: 4px; }
.truth-detail__label h3 { font-size: 21px; font-weight: 800; color: #0a2c5c; letter-spacing: -.01em; }
.truth-detail__group--solid .truth__badge { background: linear-gradient(120deg, #8f6108, var(--amber)); }
.truth-detail__rows .goal-row:last-child { border-bottom: 0; }
.truth-detail__rows .goal-row p { text-wrap: pretty; }
.truth-detail__rows .goal-row__no { color: rgba(18, 104, 232, .26); }
.truth-detail__group--solid .goal-row__no { color: rgba(169, 116, 26, .32); }
.truth-detail__rows .goal-row h3 i {
  font: 700 10px/1 var(--font-en); font-style: normal; letter-spacing: .17em; color: #93a9c4; margin-left: 10px;
}

@media (max-width: 1080px) {
  .truth { grid-template-columns: minmax(0, 1fr) 62px minmax(0, 1fr); }
  .truth__col { padding: 6px 22px 14px; }
  .truth__head h3 { font-size: 18px; }
  .truth__item { grid-template-columns: 30px minmax(0, 1fr); gap: 13px; }
  .truth__no { width: 28px; height: 28px; border-radius: 8px; font-size: 11px; }
  .truth__item h4 { font-size: 14.5px; }
  .truth__item h4 i { display: none; }
  .truth__link em { display: none; }
}
@media (max-width: 900px) {
  .truth { grid-template-columns: 1fr; }
  .truth__link { padding: 16px 0; }
  .truth__link::before { display: none; }
  .truth__dot svg { transform: rotate(90deg); }
  .truth__item h4 i { display: inline; }
  .truth-detail__label h3 { font-size: 19px; }
}
@media (max-width: 620px) {
  .truth__col { padding: 6px 18px 12px; border-radius: 16px; }
  .truth__head { padding: 22px 0 16px; }
  .truth__head h3 { font-size: 17px; }
  .truth__item h4 i { display: none; }
}
