/* ==========================================================================
   人卫医考教学中心 · 门户网站样式
   设计语言：医疗蓝 + 青绿点缀，通透留白，浅色主题
   ========================================================================== */

/* ---------- 设计令牌 ---------- */
:root {
  --brand: #0e5fd8;
  --brand-dark: #0a3d91;
  --brand-deep: #072a66;
  --brand-light: #e8f0fe;
  --brand-soft: #f2f7ff;
  --teal: #0ea5a5;
  --green: #12b886;
  --orange: #ff7a3d;
  --purple: #7c5cfc;
  --red: #e5484d;

  --ink: #0b1526;
  --ink-2: #1e293b;
  --muted: #64748b;
  --muted-2: #94a3b8;
  --line: #e3e9f2;
  --line-2: #eef2f8;
  --bg: #f6f8fc;
  --white: #ffffff;

  --shadow-xs: 0 1px 2px rgba(15, 23, 42, 0.05);
  --shadow-sm: 0 1px 3px rgba(15, 23, 42, 0.06), 0 1px 2px rgba(15, 23, 42, 0.04);
  --shadow: 0 6px 20px rgba(15, 23, 42, 0.08);
  --shadow-lg: 0 20px 52px rgba(11, 21, 38, 0.14);

  --radius-sm: 8px;
  --radius: 14px;
  --radius-lg: 20px;
  --radius-xl: 28px;

  --container: 1200px;
  --header-h: 72px;
}

/* ---------- 基础 ---------- */
*,
*::before,
*::after {
  box-sizing: border-box;
}

html {
  -webkit-text-size-adjust: 100%;
  scroll-behavior: smooth;
}

body {
  margin: 0;
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB",
    "Microsoft YaHei", "Helvetica Neue", Arial, sans-serif;
  font-size: 15px;
  line-height: 1.7;
  color: var(--ink-2);
  background: var(--white);
  -webkit-font-smoothing: antialiased;
}

h1,
h2,
h3,
h4,
h5 {
  margin: 0;
  color: var(--ink);
  font-weight: 700;
  line-height: 1.35;
  letter-spacing: -0.01em;
}

p {
  margin: 0;
}

a {
  color: inherit;
  text-decoration: none;
}

img {
  max-width: 100%;
  display: block;
}

button,
input,
select,
textarea {
  font: inherit;
  color: inherit;
}

ul {
  margin: 0;
  padding: 0;
  list-style: none;
}

::selection {
  background: var(--brand);
  color: #fff;
}

/* 滚动条 */
::-webkit-scrollbar {
  width: 10px;
  height: 10px;
}
::-webkit-scrollbar-thumb {
  background: #cbd5e1;
  border-radius: 8px;
  border: 2px solid transparent;
  background-clip: content-box;
}
::-webkit-scrollbar-thumb:hover {
  background: #94a3b8;
  background-clip: content-box;
}

/* ---------- 布局工具 ---------- */

/* 图标兜底：未显式指定尺寸的 svg 默认约 1em，防止容器遗漏约束导致图标巨大 */
.ic { width: 1.1em; height: 1.1em; flex: none; vertical-align: -0.18em; }
img { max-width: 100%; height: auto; }
.container {
  width: 100%;
  max-width: var(--container);
  margin: 0 auto;
  padding: 0 24px;
}

.section {
  padding: 84px 0;
}
.section--tight {
  padding: 60px 0;
}
.section--bg {
  background: var(--bg);
}
.section--soft {
  background: linear-gradient(180deg, #f7faff 0%, #ffffff 100%);
}

.center {
  text-align: center;
}

.section-head {
  max-width: 720px;
  margin: 0 auto 46px;
  text-align: center;
}
.section-head.left {
  margin-left: 0;
  text-align: left;
}

.eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  height: 26px;
  padding: 0 12px;
  margin-bottom: 14px;
  font-size: 12.5px;
  font-weight: 600;
  letter-spacing: 0.06em;
  color: var(--brand);
  background: var(--brand-light);
  border-radius: 999px;
}

.section-title {
  font-size: 34px;
  line-height: 1.28;
}
.section-title em {
  font-style: normal;
  color: var(--brand);
}

.section-desc {
  margin-top: 14px;
  font-size: 15.5px;
  color: var(--muted);
  line-height: 1.85;
}

/* ---------- 按钮 ---------- */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  height: 46px;
  padding: 0 24px;
  border: 1px solid transparent;
  border-radius: 999px;
  font-size: 15px;
  font-weight: 600;
  cursor: pointer;
  transition: transform 0.18s ease, box-shadow 0.18s ease, background 0.18s ease, color 0.18s ease,
    border-color 0.18s ease;
  white-space: nowrap;
  background: none;
}
.btn:active {
  transform: translateY(1px);
}
.btn svg {
  width: 18px;
  height: 18px;
  flex: none;
}

.btn--primary {
  background: linear-gradient(135deg, #1a6ee6 0%, #0a3d91 100%);
  color: #fff;
  box-shadow: 0 8px 20px rgba(14, 95, 216, 0.28);
}
.btn--primary:hover {
  box-shadow: 0 12px 28px rgba(14, 95, 216, 0.36);
  transform: translateY(-1px);
}

.btn--orange {
  background: linear-gradient(135deg, #ff9153 0%, #f2632a 100%);
  color: #fff;
  box-shadow: 0 8px 20px rgba(255, 122, 61, 0.32);
}
.btn--orange:hover {
  transform: translateY(-1px);
  box-shadow: 0 12px 28px rgba(255, 122, 61, 0.42);
}

.btn--ghost {
  background: #fff;
  color: var(--ink);
  border-color: var(--line);
}
.btn--ghost:hover {
  border-color: var(--brand);
  color: var(--brand);
  background: var(--brand-soft);
}

.btn--light {
  background: rgba(255, 255, 255, 0.14);
  color: #fff;
  border-color: rgba(255, 255, 255, 0.32);
  backdrop-filter: blur(6px);
}
.btn--light:hover {
  background: rgba(255, 255, 255, 0.24);
}

.btn--link {
  height: auto;
  padding: 0;
  color: var(--brand);
  font-weight: 600;
}
.btn--link:hover {
  gap: 12px;
}

.btn--sm {
  height: 36px;
  padding: 0 16px;
  font-size: 13.5px;
}
.btn--lg {
  height: 54px;
  padding: 0 34px;
  font-size: 16.5px;
}
.btn--block {
  width: 100%;
}

/* ---------- 顶部公告条 ---------- */
.topbar {
  background: linear-gradient(90deg, #0a3d91 0%, #0e5fd8 52%, #0ea5a5 100%);
  color: rgba(255, 255, 255, 0.94);
  font-size: 13px;
}
.topbar .container {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  height: 38px;
}
.topbar__left {
  display: flex;
  align-items: center;
  gap: 8px;
  min-width: 0;
}
.topbar__left svg {
  width: 15px;
  height: 15px;
  flex: none;
  opacity: 0.9;
}
.topbar__left span {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.topbar__right {
  display: flex;
  align-items: center;
  gap: 14px;
  flex: none;
}
.topbar__right a {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  opacity: 0.94;
  font-size: 12px;
  white-space: nowrap;
  line-height: 1;
}
.topbar__right a svg {
  width: 13px;
  height: 13px;
  flex: none;
}
.topbar__right a:hover {
  opacity: 1;
  text-decoration: underline;
}
.topbar strong {
  font-weight: 700;
  letter-spacing: 0.02em;
}

/* ---------- 头部导航 ---------- */
.header {
  position: sticky;
  top: 0;
  z-index: 80;
  background: rgba(255, 255, 255, 0.9);
  backdrop-filter: saturate(180%) blur(14px);
  border-bottom: 1px solid var(--line-2);
  transition: box-shadow 0.2s ease;
}
.header.is-stuck {
  box-shadow: 0 6px 24px rgba(15, 23, 42, 0.07);
}
.header .container {
  display: flex;
  align-items: center;
  gap: 28px;
  height: var(--header-h);
}

.logo {
  display: flex;
  align-items: center;
  gap: 11px;
  flex: none;
}
.logo__mark {
  width: 42px;
  height: 42px;
  border-radius: 12px;
  background: linear-gradient(135deg, #1a6ee6, #0a3d91);
  color: #fff;
  display: grid;
  place-items: center;
  box-shadow: 0 6px 16px rgba(14, 95, 216, 0.3);
  position: relative;
  overflow: hidden;
}
.logo__mark svg {
  width: 24px;
  height: 24px;
}
.logo__text {
  display: flex;
  flex-direction: column;
  line-height: 1.15;
}
.logo__name {
  font-size: 19px;
  font-weight: 800;
  color: var(--ink);
  letter-spacing: 0.01em;
}
.logo__sub {
  font-size: 10px;
  font-weight: 600;
  letter-spacing: 0.16em;
  color: var(--muted-2);
  text-transform: uppercase;
}

.nav {
  display: flex;
  align-items: center;
  gap: 4px;
  margin-left: auto;
}
.nav a {
  position: relative;
  padding: 9px 15px;
  font-size: 15px;
  font-weight: 500;
  color: var(--ink-2);
  border-radius: 10px;
  transition: color 0.16s ease, background 0.16s ease;
}
.nav a:hover {
  color: var(--brand);
  background: var(--brand-soft);
}
.nav a.is-active {
  color: var(--brand);
  font-weight: 700;
}
.nav a.is-active::after {
  content: "";
  position: absolute;
  left: 15px;
  right: 15px;
  bottom: 2px;
  height: 2.5px;
  border-radius: 2px;
  background: var(--brand);
}

/* 主导航下拉（备考服务等分组入口，避免一级菜单过多错行） */
.nav__dropwrap {
  position: relative;
  display: flex;
}
.nav__dropwrap > a {
  display: inline-flex;
  align-items: center;
  gap: 3px;
}
.nav__dropwrap .nav__caret {
  width: 13px;
  height: 13px;
  transition: transform 0.18s ease;
}
.nav__dropwrap:hover .nav__caret,
.nav__dropwrap.is-open .nav__caret {
  transform: rotate(180deg);
}
.nav__drop {
  position: absolute;
  top: calc(100% + 6px);
  left: 50%;
  transform: translateX(-50%) translateY(6px);
  min-width: 148px;
  background: #fff;
  border: 1px solid var(--line);
  border-radius: 14px;
  box-shadow: 0 14px 34px rgba(15, 23, 42, 0.13);
  padding: 8px;
  display: none;
  flex-direction: column;
  gap: 2px;
  z-index: 60;
}
/* 隐形热区桥：消除触发链接与下拉面板之间的 6px 死角，鼠标移动不断开 */
.nav__drop::before {
  content: "";
  position: absolute;
  top: -8px;
  left: 0;
  right: 0;
  height: 8px;
}
/* JS 悬停延迟控制（mouseenter 即开 / mouseleave 延迟关闭），focus-within 保留键盘可达 */
.nav__dropwrap.is-open .nav__drop,
.nav__dropwrap:focus-within .nav__drop {
  display: flex;
  animation: navDrop 0.16s ease forwards;
}
@keyframes navDrop {
  to {
    transform: translateX(-50%) translateY(0);
  }
}
.nav__drop a {
  padding: 9px 12px;
  border-radius: 9px;
  font-size: 14px;
  white-space: nowrap;
}
.nav__drop a::after {
  display: none !important;
}
.nav__drop a.is-active {
  background: var(--brand-soft);
}

.header__actions {
  display: flex;
  align-items: center;
  gap: 12px;
  flex: none;
}

.nav-toggle {
  display: none;
  width: 42px;
  height: 42px;
  border: 1px solid var(--line);
  border-radius: 11px;
  background: #fff;
  cursor: pointer;
  place-items: center;
}
.nav-toggle svg {
  width: 20px;
  height: 20px;
}

/* ---------- Hero ---------- */
.hero {
  position: relative;
  overflow: hidden;
  background: linear-gradient(160deg, #f2f7ff 0%, #ffffff 46%, #f7fdfd 100%);
  border-bottom: 1px solid var(--line-2);
}
.hero::before {
  content: "";
  position: absolute;
  top: -180px;
  right: -120px;
  width: 620px;
  height: 620px;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(14, 95, 216, 0.13), transparent 66%);
}
.hero::after {
  content: "";
  position: absolute;
  bottom: -220px;
  left: -140px;
  width: 520px;
  height: 520px;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(14, 165, 165, 0.12), transparent 68%);
}
.hero__grid {
  position: relative;
  z-index: 1;
  display: grid;
  grid-template-columns: minmax(0, 1.1fr) minmax(0, 0.9fr);
  gap: 56px;
  align-items: center;
  padding: 72px 0 76px;
}
.hero__badge {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 7px 15px 7px 9px;
  background: #fff;
  border: 1px solid var(--line);
  border-radius: 999px;
  box-shadow: var(--shadow-sm);
  font-size: 13px;
  font-weight: 600;
  color: var(--muted);
}
.hero__badge b {
  display: inline-flex;
  align-items: center;
  height: 22px;
  padding: 0 9px;
  border-radius: 999px;
  background: linear-gradient(135deg, #12b886, #0ea5a5);
  color: #fff;
  font-size: 11.5px;
  letter-spacing: 0.04em;
}
.hero h1 {
  margin: 20px 0 0;
  font-size: 50px;
  line-height: 1.18;
  letter-spacing: -0.02em;
}
.hero h1 .hl {
  position: relative;
  color: var(--brand);
  white-space: nowrap;
}
.hero h1 .hl::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: 4px;
  height: 12px;
  background: linear-gradient(90deg, rgba(14, 95, 216, 0.16), rgba(14, 165, 165, 0.16));
  border-radius: 3px;
  z-index: -1;
}
.hero__lead {
  margin-top: 20px;
  font-size: 16.5px;
  color: var(--muted);
  line-height: 1.9;
  max-width: 560px;
}
.hero__tags {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-top: 26px;
}
.hero__tags span {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  height: 34px;
  padding: 0 14px;
  background: #fff;
  border: 1px solid var(--line);
  border-radius: 999px;
  font-size: 13.5px;
  color: var(--ink-2);
  box-shadow: var(--shadow-xs);
}
.hero__tags svg {
  width: 15px;
  height: 15px;
  color: var(--green);
}
.hero__cta {
  display: flex;
  flex-wrap: wrap;
  gap: 14px;
  margin-top: 32px;
}

.hero__stats {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 1px;
  margin-top: 44px;
  background: var(--line);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  overflow: hidden;
  max-width: 620px;
}
.hero__stat {
  background: #fff;
  padding: 16px 18px;
}
.hero__stat strong {
  display: block;
  font-size: 25px;
  font-weight: 800;
  color: var(--ink);
  font-variant-numeric: tabular-nums;
  letter-spacing: -0.02em;
}
.hero__stat strong i {
  font-style: normal;
  font-size: 14px;
  color: var(--brand);
  margin-left: 1px;
}
.hero__stat span {
  display: block;
  margin-top: 2px;
  font-size: 12.5px;
  color: var(--muted);
}

/* ---------- 报名卡片 ---------- */
.enroll-card {
  background: #fff;
  border: 1px solid var(--line);
  border-radius: var(--radius-xl);
  box-shadow: var(--shadow-lg);
  overflow: hidden;
}
.enroll-card__head {
  padding: 24px 28px 20px;
  background: linear-gradient(135deg, #0e5fd8 0%, #0a3d91 100%);
  color: #fff;
  position: relative;
  overflow: hidden;
}
.enroll-card__head::after {
  content: "";
  position: absolute;
  right: -40px;
  top: -50px;
  width: 160px;
  height: 160px;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.09);
}
.enroll-card__head h3 {
  color: #fff;
  font-size: 21px;
}
.enroll-card__head p {
  margin-top: 7px;
  font-size: 13.5px;
  color: rgba(255, 255, 255, 0.82);
  position: relative;
  z-index: 1;
}
.enroll-card__body {
  padding: 24px 28px 28px;
}

/* ---------- 表单 ---------- */
.field {
  margin-bottom: 15px;
}
.field > label {
  display: block;
  margin-bottom: 7px;
  font-size: 13.5px;
  font-weight: 600;
  color: var(--ink-2);
}
.field > label .req {
  color: var(--red);
  margin-left: 2px;
}
.input,
.select,
.textarea {
  width: 100%;
  height: 46px;
  padding: 0 14px;
  background: #fff;
  border: 1px solid var(--line);
  border-radius: 11px;
  font-size: 14.5px;
  color: var(--ink);
  transition: border-color 0.16s ease, box-shadow 0.16s ease, background 0.16s ease;
  outline: none;
}
.textarea {
  height: auto;
  min-height: 92px;
  padding: 12px 14px;
  resize: vertical;
  line-height: 1.7;
}
.input::placeholder,
.textarea::placeholder {
  color: var(--muted-2);
}
.input:focus,
.select:focus,
.textarea:focus {
  border-color: var(--brand);
  box-shadow: 0 0 0 3.5px rgba(14, 95, 216, 0.13);
}
.select {
  appearance: none;
  background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%2364748b' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 13px center;
  padding-right: 38px;
  cursor: pointer;
}
.input.is-error,
.select.is-error,
.textarea.is-error {
  border-color: var(--red);
  background: #fff7f7;
}
.field__error {
  margin-top: 5px;
  font-size: 12.5px;
  color: var(--red);
  display: none;
}
.field.is-invalid .field__error {
  display: block;
}

.field-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 14px;
}

.form-note {
  margin-top: 12px;
  font-size: 12.5px;
  color: var(--muted-2);
  line-height: 1.7;
  text-align: center;
}
.form-note a {
  color: var(--brand);
}

.form-success {
  display: none;
  padding: 30px 20px;
  text-align: center;
}
.form-success.is-visible {
  display: block;
  animation: pop 0.35s ease both;
}
.form-success__icon {
  width: 62px;
  height: 62px;
  margin: 0 auto 16px;
  border-radius: 50%;
  background: linear-gradient(135deg, #12b886, #0ea5a5);
  color: #fff;
  display: grid;
  place-items: center;
  box-shadow: 0 10px 24px rgba(18, 184, 134, 0.32);
}
.form-success__icon svg {
  width: 30px;
  height: 30px;
}
.form-success h4 {
  font-size: 19px;
}
.form-success p {
  margin-top: 8px;
  color: var(--muted);
  font-size: 14px;
  line-height: 1.8;
}
.form-success b {
  color: var(--brand);
}

@keyframes pop {
  from {
    opacity: 0;
    transform: scale(0.94);
  }
  to {
    opacity: 1;
    transform: scale(1);
  }
}

/* ---------- 考试项目 ---------- */
.exam-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 20px;
}
.exam-card {
  position: relative;
  display: block;
  padding: 26px 24px 24px;
  background: #fff;
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  transition: transform 0.22s ease, box-shadow 0.22s ease, border-color 0.22s ease;
  overflow: hidden;
}
.exam-card::before {
  content: "";
  position: absolute;
  inset: 0 0 auto 0;
  height: 3px;
  background: linear-gradient(90deg, var(--brand), var(--teal));
  opacity: 0;
  transition: opacity 0.22s ease;
}
.exam-card:hover {
  transform: translateY(-4px);
  box-shadow: var(--shadow);
  border-color: #cfe0f8;
}
.exam-card:hover::before {
  opacity: 1;
}
.exam-card__icon {
  width: 52px;
  height: 52px;
  border-radius: 15px;
  display: grid;
  place-items: center;
  background: var(--brand-light);
  color: var(--brand);
  margin-bottom: 17px;
}
.exam-card__icon svg {
  width: 26px;
  height: 26px;
}
.exam-card:nth-child(2n) .exam-card__icon {
  background: #e6f9f6;
  color: var(--teal);
}
.exam-card:nth-child(3n) .exam-card__icon {
  background: #fff1e9;
  color: var(--orange);
}
.exam-card:nth-child(5n) .exam-card__icon {
  background: #f0ecff;
  color: var(--purple);
}
.exam-card__title {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 18px;
  font-weight: 700;
  color: var(--ink);
}
.exam-card__hot {
  display: inline-flex;
  align-items: center;
  height: 19px;
  padding: 0 7px;
  border-radius: 5px;
  background: linear-gradient(135deg, #ff9153, #f2632a);
  color: #fff;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.04em;
}
.exam-card__desc {
  margin-top: 9px;
  font-size: 13.5px;
  color: var(--muted);
  line-height: 1.75;
  min-height: 46px;
}
.exam-card__more {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  margin-top: 16px;
  font-size: 13.5px;
  font-weight: 600;
  color: var(--brand);
}
.exam-card__more svg {
  width: 15px;
  height: 15px;
  transition: transform 0.2s ease;
}
.exam-card:hover .exam-card__more svg {
  transform: translateX(3px);
}

/* ---------- 课程卡片 ---------- */
.course-tabs {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 9px;
  margin-bottom: 34px;
}
.course-tabs button {
  height: 38px;
  padding: 0 18px;
  border: 1px solid var(--line);
  border-radius: 999px;
  background: #fff;
  font-size: 14px;
  font-weight: 500;
  color: var(--ink-2);
  cursor: pointer;
  transition: all 0.16s ease;
}
.course-tabs button:hover {
  border-color: var(--brand);
  color: var(--brand);
}
.course-tabs button.is-active {
  background: var(--brand);
  border-color: var(--brand);
  color: #fff;
  font-weight: 600;
  box-shadow: 0 6px 16px rgba(14, 95, 216, 0.26);
}

.course-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 22px;
}
.course-card {
  display: flex;
  flex-direction: column;
  background: #fff;
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  overflow: hidden;
  transition: transform 0.22s ease, box-shadow 0.22s ease, border-color 0.22s ease;
}
.course-card:hover {
  transform: translateY(-4px);
  box-shadow: var(--shadow);
  border-color: #cfe0f8;
}
.course-card__cover {
  height: 118px;
  padding: 18px 20px;
  background: linear-gradient(135deg, #1a6ee6 0%, #0a3d91 100%);
  color: #fff;
  position: relative;
  overflow: hidden;
}
.course-card:nth-child(3n + 2) .course-card__cover {
  background: linear-gradient(135deg, #0ea5a5 0%, #0a7f7f 100%);
}
.course-card:nth-child(3n + 3) .course-card__cover {
  background: linear-gradient(135deg, #7c5cfc 0%, #5b39d9 100%);
}
.course-card__cover::after {
  content: "";
  position: absolute;
  right: -30px;
  bottom: -46px;
  width: 130px;
  height: 130px;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.1);
}
.course-card__cover::before {
  content: "";
  position: absolute;
  right: 34px;
  top: -30px;
  width: 74px;
  height: 74px;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.07);
}
.course-card__badge {
  display: inline-flex;
  align-items: center;
  height: 23px;
  padding: 0 10px;
  border-radius: 6px;
  background: rgba(255, 255, 255, 0.2);
  border: 1px solid rgba(255, 255, 255, 0.28);
  font-size: 11.5px;
  font-weight: 600;
  letter-spacing: 0.03em;
  position: relative;
  z-index: 1;
}
.course-card__cover h3 {
  margin-top: 12px;
  color: #fff;
  font-size: 17px;
  line-height: 1.4;
  position: relative;
  z-index: 1;
}
.course-card__body {
  flex: 1;
  padding: 18px 20px 20px;
  display: flex;
  flex-direction: column;
}
.course-card__meta {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 16px;
  font-size: 13px;
  color: var(--muted);
  padding-bottom: 14px;
  border-bottom: 1px dashed var(--line);
}
.course-card__meta span {
  display: inline-flex;
  align-items: center;
  gap: 5px;
}
.course-card__meta svg {
  width: 14px;
  height: 14px;
  color: var(--muted-2);
}
.course-card__feats {
  display: flex;
  flex-wrap: wrap;
  gap: 7px;
  margin: 14px 0 16px;
}
.course-card__feats span {
  padding: 3px 9px;
  background: var(--brand-soft);
  color: var(--brand);
  border-radius: 6px;
  font-size: 12px;
}
.course-card__foot {
  margin-top: auto;
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 12px;
}
.price {
  display: flex;
  align-items: baseline;
  gap: 2px;
  color: var(--orange);
  font-weight: 800;
  font-variant-numeric: tabular-nums;
}
.price i {
  font-style: normal;
  font-size: 14px;
  font-weight: 700;
}
.price strong {
  font-size: 26px;
  line-height: 1;
  letter-spacing: -0.02em;
}
.price s {
  margin-left: 6px;
  font-size: 12.5px;
  font-weight: 400;
  color: var(--muted-2);
  text-decoration: line-through;
}
.course-card__seats {
  font-size: 12.5px;
  color: var(--muted);
  text-align: right;
  line-height: 1.5;
}
.course-card__seats b {
  color: var(--orange);
  font-weight: 700;
}

/* ---------- 数据带 ---------- */
.band {
  position: relative;
  overflow: hidden;
  background: linear-gradient(120deg, #0a3d91 0%, #0e5fd8 48%, #0d7fb8 100%);
  color: #fff;
  padding: 58px 0;
}
.band::before {
  content: "";
  position: absolute;
  inset: 0;
  background-image: linear-gradient(rgba(255, 255, 255, 0.045) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255, 255, 255, 0.045) 1px, transparent 1px);
  background-size: 46px 46px;
}
.band .container {
  position: relative;
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 28px;
}
.band__item {
  text-align: center;
}
.band__item strong {
  display: block;
  font-size: 42px;
  font-weight: 800;
  letter-spacing: -0.03em;
  font-variant-numeric: tabular-nums;
  line-height: 1.1;
}
.band__item strong i {
  font-style: normal;
  font-size: 19px;
  opacity: 0.85;
  margin-left: 2px;
}
.band__item span {
  display: block;
  margin-top: 9px;
  font-size: 14px;
  color: rgba(255, 255, 255, 0.78);
}

/* ---------- 优势 ---------- */
.adv-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 20px;
}
.adv-card {
  padding: 28px 26px;
  background: #fff;
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  transition: box-shadow 0.22s ease, transform 0.22s ease;
}
.adv-card:hover {
  transform: translateY(-3px);
  box-shadow: var(--shadow);
}
.adv-card__icon {
  width: 48px;
  height: 48px;
  border-radius: 14px;
  display: grid;
  place-items: center;
  background: var(--brand-light);
  color: var(--brand);
  margin-bottom: 18px;
}
.adv-card__icon svg {
  width: 24px;
  height: 24px;
}
.adv-card h3 {
  font-size: 17px;
}
.adv-card p {
  margin-top: 9px;
  font-size: 14px;
  color: var(--muted);
  line-height: 1.82;
}

/* ---------- 师资 ---------- */
.teacher-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 20px;
}
.teacher-card {
  padding: 26px 22px;
  background: #fff;
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  text-align: center;
  transition: transform 0.22s ease, box-shadow 0.22s ease;
}
.teacher-card:hover {
  transform: translateY(-4px);
  box-shadow: var(--shadow);
}
.teacher-card__avatar {
  width: 74px;
  height: 74px;
  margin: 0 auto 15px;
  border-radius: 50%;
  display: grid;
  place-items: center;
  font-size: 28px;
  font-weight: 700;
  color: #fff;
  background: linear-gradient(135deg, #1a6ee6, #0a3d91);
  box-shadow: 0 8px 20px rgba(14, 95, 216, 0.26);
}
.teacher-card:nth-child(4n + 2) .teacher-card__avatar {
  background: linear-gradient(135deg, #0ea5a5, #0a7f7f);
  box-shadow: 0 8px 20px rgba(14, 165, 165, 0.26);
}
.teacher-card:nth-child(4n + 3) .teacher-card__avatar {
  background: linear-gradient(135deg, #7c5cfc, #5b39d9);
  box-shadow: 0 8px 20px rgba(124, 92, 252, 0.26);
}
.teacher-card:nth-child(4n + 4) .teacher-card__avatar {
  background: linear-gradient(135deg, #ff9153, #f2632a);
  box-shadow: 0 8px 20px rgba(255, 122, 61, 0.26);
}
.teacher-card h3 {
  font-size: 17px;
}
.teacher-card__title {
  margin-top: 4px;
  font-size: 12.5px;
  color: var(--brand);
  font-weight: 600;
}
.teacher-card__subject {
  display: inline-block;
  margin-top: 10px;
  padding: 3px 10px;
  background: var(--brand-soft);
  color: var(--brand);
  border-radius: 999px;
  font-size: 12px;
}
.teacher-card p {
  margin-top: 13px;
  font-size: 13px;
  color: var(--muted);
  line-height: 1.78;
  text-align: left;
}

/* ---------- 学员评价 ---------- */
.quote-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 20px;
}
.quote-card {
  display: flex;
  flex-direction: column;
  padding: 28px 26px;
  background: #fff;
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  position: relative;
}
.quote-card__mark {
  font-size: 46px;
  line-height: 0.8;
  color: var(--brand-light);
  font-weight: 800;
  font-family: Georgia, serif;
}
.quote-card p {
  margin-top: 6px;
  font-size: 14.5px;
  line-height: 1.9;
  color: var(--ink-2);
  flex: 1;
}
.quote-card__foot {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-top: 20px;
  padding-top: 18px;
  border-top: 1px dashed var(--line);
}
.quote-card__avatar {
  width: 42px;
  height: 42px;
  flex: none;
  border-radius: 50%;
  display: grid;
  place-items: center;
  background: linear-gradient(135deg, #1a6ee6, #0a3d91);
  color: #fff;
  font-weight: 700;
  font-size: 16px;
}
.quote-card__info strong {
  display: block;
  font-size: 14.5px;
  color: var(--ink);
}
.quote-card__info span {
  display: block;
  font-size: 12.5px;
  color: var(--muted);
  margin-top: 1px;
}
.quote-card__score {
  margin-left: auto;
  padding: 4px 10px;
  border-radius: 8px;
  background: #e9f9f3;
  color: #0a8f6a;
  font-size: 12px;
  font-weight: 600;
  white-space: nowrap;
}

/* ---------- 资讯 ---------- */
.news-layout {
  display: grid;
  grid-template-columns: 1.15fr 1fr;
  gap: 26px;
}
.news-feature {
  display: block;
  padding: 34px 32px;
  border-radius: var(--radius-lg);
  background: linear-gradient(140deg, #0a3d91, #0e5fd8 60%, #0d7fb8);
  color: #fff;
  position: relative;
  overflow: hidden;
}
.news-feature::after {
  content: "";
  position: absolute;
  right: -60px;
  bottom: -70px;
  width: 220px;
  height: 220px;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.08);
}
.news-feature__cat {
  display: inline-block;
  padding: 4px 11px;
  border-radius: 6px;
  background: rgba(255, 255, 255, 0.18);
  font-size: 12px;
  font-weight: 600;
  position: relative;
  z-index: 1;
}
.news-feature h3 {
  margin-top: 16px;
  color: #fff;
  font-size: 24px;
  line-height: 1.45;
  position: relative;
  z-index: 1;
}
.news-feature p {
  margin-top: 14px;
  font-size: 14.5px;
  color: rgba(255, 255, 255, 0.8);
  line-height: 1.85;
  position: relative;
  z-index: 1;
}
.news-feature__meta {
  display: flex;
  gap: 18px;
  margin-top: 22px;
  font-size: 13px;
  color: rgba(255, 255, 255, 0.72);
  position: relative;
  z-index: 1;
}
.news-list {
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.news-item {
  display: flex;
  gap: 16px;
  align-items: flex-start;
  padding: 17px 20px;
  background: #fff;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  transition: border-color 0.18s ease, box-shadow 0.18s ease, transform 0.18s ease;
}
.news-item:hover {
  border-color: #cfe0f8;
  box-shadow: var(--shadow-sm);
  transform: translateX(3px);
}
.news-item__date {
  flex: none;
  width: 56px;
  text-align: center;
  padding: 6px 0;
  border-radius: 10px;
  background: var(--brand-soft);
}
.news-item__date strong {
  display: block;
  font-size: 19px;
  font-weight: 800;
  color: var(--brand);
  line-height: 1.15;
  font-variant-numeric: tabular-nums;
}
.news-item__date span {
  display: block;
  font-size: 11px;
  color: var(--muted-2);
}
.news-item h4 {
  font-size: 15.5px;
  font-weight: 600;
  line-height: 1.55;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.news-item p {
  margin-top: 6px;
  font-size: 13px;
  color: var(--muted);
  display: -webkit-box;
  -webkit-line-clamp: 1;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

/* ---------- 校区 ---------- */
.campus-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 20px;
}
.campus-card {
  padding: 24px;
  background: #fff;
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  transition: box-shadow 0.2s ease, transform 0.2s ease;
}
.campus-card:hover {
  box-shadow: var(--shadow);
  transform: translateY(-3px);
}
.campus-card__city {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 3px 10px;
  border-radius: 6px;
  background: var(--brand-light);
  color: var(--brand);
  font-size: 12.5px;
  font-weight: 600;
}
.campus-card h3 {
  margin-top: 13px;
  font-size: 17px;
}
.campus-card p {
  margin-top: 9px;
  font-size: 13.5px;
  color: var(--muted);
  line-height: 1.8;
  display: flex;
  gap: 8px;
}
.campus-card p svg {
  width: 15px;
  height: 15px;
  flex: none;
  margin-top: 4px;
  color: var(--muted-2);
}

/* ---------- CTA ---------- */
.cta {
  position: relative;
  overflow: hidden;
  border-radius: var(--radius-xl);
  padding: 52px 56px;
  background: linear-gradient(120deg, #0a3d91 0%, #0e5fd8 55%, #0ea5a5 100%);
  color: #fff;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 40px;
  flex-wrap: wrap;
}
.cta::after {
  content: "";
  position: absolute;
  right: -80px;
  top: -90px;
  width: 300px;
  height: 300px;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.07);
}
.cta__text {
  position: relative;
  z-index: 1;
  max-width: 640px;
}
.cta h2 {
  color: #fff;
  font-size: 30px;
  line-height: 1.4;
}
.cta p {
  margin-top: 12px;
  font-size: 15px;
  color: rgba(255, 255, 255, 0.82);
}
.cta__actions {
  display: flex;
  gap: 14px;
  flex-wrap: wrap;
  position: relative;
  z-index: 1;
}

/* ---------- 页脚 ---------- */
.footer {
  background: #0a1628;
  color: rgba(255, 255, 255, 0.62);
  padding: 62px 0 0;
  font-size: 13.5px;
}
.footer__grid {
  display: grid;
  grid-template-columns: 1.5fr 1fr 1fr 1.2fr;
  gap: 44px;
  padding-bottom: 44px;
}
.footer .logo__name {
  color: #fff;
}
.footer .logo__sub {
  color: rgba(255, 255, 255, 0.42);
}
.footer__intro {
  margin-top: 18px;
  line-height: 1.9;
  color: rgba(255, 255, 255, 0.55);
}
.footer h4 {
  color: #fff;
  font-size: 15px;
  margin-bottom: 18px;
}
.footer__links {
  display: flex;
  flex-direction: column;
  gap: 11px;
}
.footer__links a {
  color: rgba(255, 255, 255, 0.6);
  transition: color 0.16s ease, transform 0.16s ease;
  display: inline-block;
}
.footer__links a:hover {
  color: #fff;
  transform: translateX(3px);
}
.footer__contact {
  display: flex;
  flex-direction: column;
  gap: 14px;
}
.footer__contact li {
  display: flex;
  gap: 10px;
  align-items: flex-start;
  line-height: 1.75;
}
.footer__contact svg {
  width: 16px;
  height: 16px;
  flex: none;
  margin-top: 4px;
  color: #4d8bea;
}
.footer__hot {
  font-size: 26px;
  font-weight: 800;
  color: #fff;
  letter-spacing: -0.01em;
  font-variant-numeric: tabular-nums;
}
.footer__bottom {
  border-top: 1px solid rgba(255, 255, 255, 0.09);
  padding: 22px 0;
  display: flex;
  justify-content: space-between;
  gap: 18px;
  flex-wrap: wrap;
  font-size: 12.5px;
  color: rgba(255, 255, 255, 0.42);
}
.footer__bottom a:hover {
  color: rgba(255, 255, 255, 0.8);
}

/* ---------- 浮动咨询 ---------- */
.float-bar {
  position: fixed;
  right: 18px;
  bottom: 84px;
  z-index: 70;
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.float-bar__item {
  width: 54px;
  height: 54px;
  border-radius: 15px;
  border: 1px solid var(--line);
  background: #fff;
  color: var(--ink-2);
  display: grid;
  place-items: center;
  cursor: pointer;
  box-shadow: var(--shadow);
  position: relative;
  transition: all 0.2s ease;
}
.float-bar__item svg {
  width: 22px;
  height: 22px;
}
.float-bar__item:hover {
  color: var(--brand);
  border-color: #cfe0f8;
  transform: translateY(-2px);
}
.float-bar__item--primary {
  background: linear-gradient(135deg, #1a6ee6, #0a3d91);
  border-color: transparent;
  color: #fff;
  box-shadow: 0 10px 24px rgba(14, 95, 216, 0.34);
}
.float-bar__item--primary:hover {
  color: #fff;
}
.float-bar__item::after {
  content: attr(data-label);
  position: absolute;
  right: 64px;
  top: 50%;
  transform: translateY(-50%) translateX(6px);
  white-space: nowrap;
  padding: 6px 12px;
  border-radius: 8px;
  background: var(--ink);
  color: #fff;
  font-size: 12.5px;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.18s ease, transform 0.18s ease;
}
.float-bar__item:hover::after {
  opacity: 1;
  transform: translateY(-50%) translateX(0);
}

/* ---------- 弹窗 ---------- */
.modal {
  position: fixed;
  inset: 0;
  z-index: 200;
  display: none;
  align-items: center;
  justify-content: center;
  padding: 24px;
  background: rgba(9, 17, 32, 0.52);
  backdrop-filter: blur(3px);
}
.modal.is-open {
  display: flex;
  animation: fadeIn 0.2s ease both;
}
@keyframes fadeIn {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}
.modal__panel {
  width: 100%;
  max-width: 468px;
  max-height: 92vh;
  overflow-y: auto;
  background: #fff;
  border-radius: var(--radius-xl);
  box-shadow: var(--shadow-lg);
  animation: modalIn 0.26s cubic-bezier(0.22, 1, 0.36, 1) both;
}
@keyframes modalIn {
  from {
    opacity: 0;
    transform: translateY(18px) scale(0.97);
  }
  to {
    opacity: 1;
    transform: none;
  }
}
.modal__close {
  position: absolute;
  top: 16px;
  right: 16px;
  width: 34px;
  height: 34px;
  border-radius: 10px;
  border: none;
  background: rgba(255, 255, 255, 0.18);
  color: #fff;
  cursor: pointer;
  display: grid;
  place-items: center;
}
.modal__close svg {
  width: 18px;
  height: 18px;
}
.modal__head {
  position: relative;
  padding: 26px 28px 22px;
  background: linear-gradient(135deg, #0e5fd8, #0a3d91);
  color: #fff;
  border-radius: var(--radius-xl) var(--radius-xl) 0 0;
}
.modal__head h3 {
  color: #fff;
  font-size: 21px;
}
.modal__head p {
  margin-top: 7px;
  font-size: 13.5px;
  color: rgba(255, 255, 255, 0.82);
}
.modal__body {
  padding: 24px 28px 28px;
}

/* ---------- Toast ---------- */
.toast-host {
  position: fixed;
  top: 22px;
  left: 50%;
  transform: translateX(-50%);
  z-index: 300;
  display: flex;
  flex-direction: column;
  gap: 10px;
  pointer-events: none;
}
.toast {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 12px 20px;
  border-radius: 12px;
  background: #fff;
  border: 1px solid var(--line);
  box-shadow: var(--shadow-lg);
  font-size: 14px;
  font-weight: 500;
  color: var(--ink);
  animation: toastIn 0.28s cubic-bezier(0.22, 1, 0.36, 1) both;
}
.toast svg {
  width: 18px;
  height: 18px;
  flex: none;
}
.toast--success svg {
  color: var(--green);
}
.toast--error svg {
  color: var(--red);
}
.toast--info svg {
  color: var(--brand);
}
@keyframes toastIn {
  from {
    opacity: 0;
    transform: translateY(-14px);
  }
  to {
    opacity: 1;
    transform: none;
  }
}

/* ---------- 滚动入场动画 ---------- */
.reveal {
  opacity: 0;
  transform: translateY(22px);
  transition: opacity 0.6s cubic-bezier(0.22, 1, 0.36, 1), transform 0.6s cubic-bezier(0.22, 1, 0.36, 1);
}
.reveal.is-in {
  opacity: 1;
  transform: none;
}

/* ---------- 内页通用 ---------- */
.page-hero {
  position: relative;
  padding: 56px 0 52px;
  background: linear-gradient(150deg, #0a3d91 0%, #0e5fd8 58%, #0d7fb8 100%);
  color: #fff;
  overflow: hidden;
}
.page-hero::after {
  content: "";
  position: absolute;
  right: -70px;
  bottom: -120px;
  width: 330px;
  height: 330px;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.075);
}
.page-hero::before {
  content: "";
  position: absolute;
  left: -60px;
  top: -90px;
  width: 240px;
  height: 240px;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.05);
}
.page-hero .container {
  position: relative;
  z-index: 1;
}
.page-hero h1 {
  color: #fff;
  font-size: 38px;
  letter-spacing: -0.02em;
}
.page-hero p {
  margin-top: 13px;
  font-size: 15.5px;
  color: rgba(255, 255, 255, 0.8);
  max-width: 620px;
  line-height: 1.85;
}
.crumb {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 13px;
  color: rgba(255, 255, 255, 0.68);
  margin-bottom: 16px;
}
.crumb a:hover {
  color: #fff;
}
.crumb svg {
  width: 14px;
  height: 14px;
}

.filter-bar {
  display: flex;
  flex-wrap: wrap;
  gap: 22px;
  align-items: center;
  padding: 20px 24px;
  background: #fff;
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  margin-bottom: 30px;
  box-shadow: var(--shadow-xs);
}
.filter-bar__group {
  display: flex;
  align-items: center;
  gap: 9px;
  flex-wrap: wrap;
}
.filter-bar__label {
  font-size: 13.5px;
  font-weight: 600;
  color: var(--muted);
  flex: none;
}
.chip {
  height: 34px;
  padding: 0 15px;
  border: 1px solid var(--line);
  border-radius: 999px;
  background: #fff;
  font-size: 13.5px;
  color: var(--ink-2);
  cursor: pointer;
  transition: all 0.16s ease;
}
.chip:hover {
  border-color: var(--brand);
  color: var(--brand);
}
.chip.is-active {
  background: var(--brand);
  border-color: var(--brand);
  color: #fff;
  font-weight: 600;
}

.pager {
  display: flex;
  justify-content: center;
  gap: 8px;
  margin-top: 38px;
}
.pager button {
  min-width: 38px;
  height: 38px;
  padding: 0 12px;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: #fff;
  font-size: 14px;
  color: var(--ink-2);
  cursor: pointer;
  transition: all 0.16s ease;
}
.pager button:hover:not(:disabled) {
  border-color: var(--brand);
  color: var(--brand);
}
.pager button.is-active {
  background: var(--brand);
  border-color: var(--brand);
  color: #fff;
  font-weight: 600;
}
.pager button:disabled {
  opacity: 0.45;
  cursor: not-allowed;
}

.empty {
  padding: 70px 20px;
  text-align: center;
  color: var(--muted);
}
.empty svg {
  width: 46px;
  height: 46px;
  color: #cbd5e1;
  margin-bottom: 14px;
}
.empty p {
  font-size: 14.5px;
}

.skeleton {
  background: linear-gradient(90deg, #eef2f8 25%, #f7fafd 37%, #eef2f8 63%);
  background-size: 400% 100%;
  animation: shimmer 1.3s ease infinite;
  border-radius: var(--radius);
}
@keyframes shimmer {
  0% {
    background-position: 100% 50%;
  }
  100% {
    background-position: 0 50%;
  }
}

/* 文章详情 */
.article-body {
  font-size: 15.5px;
  line-height: 2;
  color: var(--ink-2);
}
.article-body p {
  margin-bottom: 18px;
}
.article-body h3 {
  margin: 30px 0 14px;
  font-size: 19px;
}
.article-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 20px;
  padding-bottom: 22px;
  margin-bottom: 30px;
  border-bottom: 1px solid var(--line);
  font-size: 13.5px;
  color: var(--muted);
}
.article-meta span {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
.article-meta svg {
  width: 15px;
  height: 15px;
}

/* ---------- 响应式 ---------- */
@media (max-width: 1080px) {
  .hero__grid {
    grid-template-columns: 1fr;
    gap: 40px;
    padding: 52px 0 58px;
  }
  .hero h1 {
    font-size: 40px;
  }
  .exam-grid,
  .course-grid,
  .adv-grid,
  .quote-grid,
  .campus-grid {
    grid-template-columns: repeat(2, 1fr);
  }
  .teacher-grid {
    grid-template-columns: repeat(3, 1fr);
  }
  .news-layout,
  .footer__grid {
    grid-template-columns: 1fr;
  }
  .footer__grid {
    gap: 34px;
  }
  .nav {
    display: none;
  }
  .nav-toggle {
    display: grid;
    margin-left: auto;
  }
  .nav.is-open {
    display: flex;
    position: absolute;
    top: var(--header-h);
    left: 0;
    right: 0;
    flex-direction: column;
    align-items: stretch;
    gap: 2px;
    padding: 12px 20px 18px;
    background: #fff;
    border-bottom: 1px solid var(--line);
    box-shadow: var(--shadow);
  }
  .nav.is-open a {
    padding: 12px 14px;
    font-size: 15.5px;
  }
  .nav.is-open a.is-active::after {
    display: none;
  }
  .nav.is-open a.is-active {
    background: var(--brand-soft);
  }
}

@media (max-width: 720px) {
  .section {
    padding: 56px 0;
  }
  .container {
    padding: 0 18px;
  }
  .hero h1 {
    font-size: 31px;
  }
  .hero__lead {
    font-size: 15.5px;
  }
  .hero__stats {
    grid-template-columns: repeat(2, 1fr);
  }
  .section-title {
    font-size: 25px;
  }
  .exam-grid,
  .course-grid,
  .adv-grid,
  .quote-grid,
  .campus-grid,
  .teacher-grid {
    grid-template-columns: 1fr;
  }
  .band .container {
    grid-template-columns: repeat(2, 1fr);
    gap: 26px;
  }
  .band__item strong {
    font-size: 32px;
  }
  .cta {
    padding: 34px 26px;
  }
  .cta h2 {
    font-size: 23px;
  }
  .page-hero h1 {
    font-size: 27px;
  }
  .header__actions .btn--ghost {
    display: none;
  }
  .topbar__right {
    display: none;
  }
  .field-row {
    grid-template-columns: 1fr;
    gap: 0;
  }
  .float-bar {
    right: 12px;
    bottom: 72px;
  }
  .float-bar__item {
    width: 48px;
    height: 48px;
    border-radius: 13px;
  }
  .footer__hot {
    font-size: 22px;
  }
}

/* ==========================================================================
   门户扩展组件
   ① 分段控件  ② 企业微信在线咨询  ③ 考试项目多级导航  ④ 考试日历
   ⑤ 资料下载  ⑥ 在线题库  ⑦ 智能答疑  ⑧ 首页工具区
   ========================================================================== */

/* ------------------------------------------------------ ① 分段控件 .seg */
.seg {
  display: inline-flex;
  gap: 4px;
  padding: 5px;
  background: #fff;
  border: 1px solid var(--line);
  border-radius: 999px;
  box-shadow: var(--shadow-xs);
}
.seg__btn {
  border: 0;
  background: transparent;
  color: var(--muted);
  font-size: 14.5px;
  font-weight: 600;
  padding: 9px 24px;
  border-radius: 999px;
  cursor: pointer;
  transition: all 0.18s ease;
  white-space: nowrap;
}
.seg__btn:hover {
  color: var(--brand);
  background: var(--brand-soft);
}
.seg__btn.is-active {
  background: var(--brand);
  color: #fff;
  box-shadow: 0 4px 12px rgba(14, 95, 216, 0.26);
}
.seg__btn.is-active:hover {
  color: #fff;
  background: var(--brand);
}

/* -------------------------------------------- ② 企业微信在线咨询 .consult */
.consult {
  position: fixed;
  right: 84px;
  bottom: 84px;
  z-index: 1200;
}
/* 气泡按钮 */
.consult__bubble {
  position: relative;
  width: 54px;
  height: 54px;
  border-radius: 15px;
  border: 1px solid var(--line);
  background: #fff;
  color: var(--ink-2);
  display: grid;
  place-items: center;
  cursor: pointer;
  box-shadow: var(--shadow);
  transition: all 0.2s ease;
}
.consult__bubble:hover {
  color: var(--brand);
  border-color: var(--brand);
  transform: translateY(-2px);
  box-shadow: var(--shadow-lg);
}
.consult__bubble svg {
  width: 22px;
  height: 22px;
}
.consult__bubble-text {
  position: absolute;
  right: calc(100% + 10px);
  top: 50%;
  transform: translateY(-50%);
  white-space: nowrap;
  padding: 7px 12px;
  font-size: 13px;
  font-weight: 600;
  color: #fff;
  background: var(--ink);
  border-radius: 8px;
  opacity: 0;
  pointer-events: none;
  transition: all 0.18s ease;
}
.consult__bubble:hover .consult__bubble-text {
  opacity: 1;
  right: calc(100% + 14px);
}
.consult__bubble-dot {
  position: absolute;
  top: 9px;
  right: 9px;
  width: 9px;
  height: 9px;
  border-radius: 50%;
  background: var(--red);
  box-shadow: 0 0 0 0 rgba(229, 72, 77, 0.5);
  animation: consultPulse 2s infinite;
}
@keyframes consultPulse {
  0% {
    box-shadow: 0 0 0 0 rgba(229, 72, 77, 0.5);
  }
  70% {
    box-shadow: 0 0 0 9px rgba(229, 72, 77, 0);
  }
  100% {
    box-shadow: 0 0 0 0 rgba(229, 72, 77, 0);
  }
}
.consult__bubble.is-hidden {
  opacity: 0;
  pointer-events: none;
  transform: scale(0.86);
}
/* 面板 */
.consult__panel {
  position: absolute;
  right: 0;
  bottom: calc(100% + 14px);
  width: 356px;
  max-height: calc(100vh - 150px);
  background: #fff;
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-lg);
  overflow: hidden;
  display: flex;
  flex-direction: column;
  opacity: 0;
  visibility: hidden;
  transform: translateY(12px) scale(0.97);
  transform-origin: right bottom;
  transition: all 0.22s cubic-bezier(0.22, 1, 0.36, 1);
}
.consult__panel.is-open {
  opacity: 1;
  visibility: visible;
  transform: none;
}
.consult__head {
  display: flex;
  align-items: center;
  gap: 11px;
  padding: 15px 17px;
  background: linear-gradient(135deg, var(--brand) 0%, var(--brand-dark) 100%);
  color: #fff;
  flex-shrink: 0;
}
.consult__head-icon {
  width: 38px;
  height: 38px;
  border-radius: 11px;
  background: rgba(255, 255, 255, 0.18);
  display: grid;
  place-items: center;
  flex-shrink: 0;
}
.consult__head-icon svg {
  width: 20px;
  height: 20px;
}
.consult__head strong {
  display: block;
  font-size: 15px;
  line-height: 1.35;
}
.consult__head span {
  display: block;
  font-size: 12px;
  opacity: 0.82;
  line-height: 1.4;
}
.consult__close {
  margin-left: auto;
  width: 28px;
  height: 28px;
  border: 0;
  border-radius: 8px;
  background: rgba(255, 255, 255, 0.14);
  color: #fff;
  display: grid;
  place-items: center;
  cursor: pointer;
  transition: background 0.16s ease;
}
.consult__close:hover {
  background: rgba(255, 255, 255, 0.3);
}
.consult__close svg {
  width: 15px;
  height: 15px;
}
.consult__body {
  padding: 16px;
  overflow-y: auto;
  flex: 1;
}
.consult__welcome {
  font-size: 13.5px;
  line-height: 1.75;
  color: var(--ink-2);
  background: var(--brand-soft);
  border-left: 3px solid var(--brand);
  border-radius: 0 var(--radius-sm) var(--radius-sm) 0;
  padding: 11px 13px;
  margin-bottom: 14px;
}
/* 二维码 */
.consult__qr {
  display: flex;
  align-items: center;
  gap: 13px;
  padding: 13px;
  border: 1px dashed var(--line);
  border-radius: var(--radius);
  background: #fbfcfe;
  margin-bottom: 13px;
}
.consult__qr-img {
  width: 92px;
  height: 92px;
  flex-shrink: 0;
  border-radius: var(--radius-sm);
  background: #fff;
  border: 1px solid var(--line);
  overflow: hidden;
  display: grid;
  place-items: center;
}
.consult__qr-img img {
  width: 100%;
  height: 100%;
  object-fit: contain;
}
.consult__qr-ph {
  display: grid;
  place-items: center;
  gap: 5px;
  color: var(--muted-2);
  text-align: center;
}
.consult__qr-ph svg {
  width: 26px;
  height: 26px;
}
.consult__qr-ph em {
  font-size: 11px;
  font-style: normal;
  line-height: 1.4;
}
.consult__qr-tip strong {
  display: block;
  font-size: 14px;
  color: var(--ink);
  margin-bottom: 3px;
}
.consult__qr-tip > span {
  display: block;
  font-size: 12px;
  color: var(--muted);
  line-height: 1.55;
  margin-bottom: 9px;
}
/* 快捷动作 */
.consult__actions {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 9px;
  margin-bottom: 13px;
}
.consult__act {
  display: flex;
  flex-direction: column;
  gap: 2px;
  padding: 11px 12px;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: #fff;
  text-align: left;
  cursor: pointer;
  transition: all 0.16s ease;
  color: var(--ink-2);
}
.consult__act:hover {
  border-color: var(--brand);
  background: var(--brand-soft);
  transform: translateY(-1px);
}
.consult__act svg {
  width: 17px;
  height: 17px;
  color: var(--brand);
  margin-bottom: 2px;
}
.consult__act span {
  font-size: 13px;
  font-weight: 600;
  line-height: 1.4;
}
.consult__act em {
  font-size: 11.5px;
  font-style: normal;
  color: var(--muted);
  line-height: 1.4;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
/* 顾问列表 */
.consult__advisors {
  display: flex;
  flex-direction: column;
  gap: 8px;
  padding-top: 13px;
  border-top: 1px dashed var(--line);
  margin-bottom: 13px;
}
.consult__advisor {
  display: flex;
  align-items: center;
  gap: 10px;
}
.consult__advisor-avatar {
  width: 36px;
  height: 36px;
  flex-shrink: 0;
  border-radius: 50%;
  background: linear-gradient(135deg, var(--brand) 0%, var(--teal) 100%);
  color: #fff;
  font-size: 14px;
  font-weight: 700;
  display: grid;
  place-items: center;
}
.consult__advisor > div {
  flex: 1;
  min-width: 0;
}
.consult__advisor strong {
  display: block;
  font-size: 13.5px;
  color: var(--ink);
  line-height: 1.4;
}
.consult__advisor span {
  display: block;
  font-size: 11.5px;
  color: var(--muted);
  line-height: 1.4;
}
.btn--xs {
  height: 28px;
  padding: 0 11px;
  font-size: 12.5px;
  border-radius: 8px;
}
.btn--xs svg {
  width: 13px;
  height: 13px;
}
/* FAQ 折叠 */
.consult__faq {
  padding-top: 13px;
  border-top: 1px dashed var(--line);
}
.consult__faq h4 {
  font-size: 13px;
  color: var(--muted);
  margin-bottom: 8px;
  font-weight: 600;
}
.consult__faq-item {
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
  overflow: hidden;
  margin-bottom: 7px;
}
.consult__faq-item.is-open {
  border-color: var(--brand);
  background: var(--brand-soft);
}
.consult__faq-q {
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  padding: 10px 12px;
  border: 0;
  background: transparent;
  font-size: 13px;
  font-weight: 600;
  color: var(--ink-2);
  text-align: left;
  cursor: pointer;
}
.consult__faq-q svg {
  width: 15px;
  height: 15px;
  flex-shrink: 0;
  color: var(--muted);
  transition: transform 0.2s ease;
}
.consult__faq-item.is-open .consult__faq-q svg {
  transform: rotate(180deg);
  color: var(--brand);
}
.consult__faq-a {
  padding: 0 12px 11px;
  font-size: 12.5px;
  line-height: 1.75;
  color: var(--muted);
}

/* ------------------------------------------- ③ 考试项目多级导航 .exam-nav */
.chips {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
.exam-nav-card {
  padding: 26px 28px;
  background: #fff;
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-sm);
}
.exam-nav-card__head h3 {
  font-size: 19px;
  margin-bottom: 5px;
}
.exam-nav-card__head p {
  font-size: 13.5px;
  color: var(--muted);
  margin-bottom: 18px;
}
.exam-nav-card__act {
  margin-top: 16px;
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
}
.exam-nav {
  display: flex;
  flex-direction: column;
  gap: 11px;
}
.exam-nav__row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
}
.exam-nav__row--sub {
  padding-left: 4px;
  border-left: 2px solid var(--line-2);
  margin-left: 2px;
  padding-top: 10px;
  border-top: 1px dashed var(--line-2);
}
.exam-nav__label {
  display: inline-flex;
  align-items: center;
  flex-shrink: 0;
  min-width: 58px;
  font-size: 12.5px;
  font-weight: 600;
  color: var(--muted);
  letter-spacing: 0.02em;
}
.exam-nav .chip {
  display: inline-flex;
  align-items: center;
  gap: 2px;
}
.exam-nav .chip b {
  display: inline-block;
  margin-left: 4px;
  padding: 0 6px;
  font-size: 11px;
  font-weight: 700;
  line-height: 17px;
  color: var(--brand);
  background: var(--brand-light);
  border-radius: 999px;
}
.exam-nav .chip.is-active b {
  color: #fff;
  background: rgba(255, 255, 255, 0.26);
}
.exam-nav__picked {
  margin-top: 4px;
}
.exam-nav__hint {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  font-size: 13px;
  color: var(--muted);
  background: var(--bg);
  border: 1px dashed var(--line);
  border-radius: 999px;
  padding: 8px 15px;
}
.exam-nav__hint svg {
  width: 15px;
  height: 15px;
  color: var(--brand);
}
.exam-nav__crumb {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 7px;
  padding: 11px 15px;
  background: var(--brand-soft);
  border: 1px solid #d5e4fb;
  border-radius: var(--radius);
  font-size: 13.5px;
  font-weight: 600;
  color: var(--brand-dark);
}
.exam-nav__crumb > svg {
  width: 16px;
  height: 16px;
  flex-shrink: 0;
  color: var(--brand);
}
.exam-nav__crumb i {
  font-style: normal;
  color: var(--muted-2);
  font-weight: 400;
}
.exam-nav__crumb-act {
  margin-top: 9px;
}
.scope-tag {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 4px 11px;
  font-size: 12.5px;
  font-weight: 600;
  color: var(--brand);
  background: var(--brand-light);
  border-radius: 999px;
  vertical-align: middle;
}
.scope-tag svg {
  width: 13px;
  height: 13px;
}
.exam-nav-card .exam-nav__picked,
.mat-nav .exam-nav__picked,
.bank-setup__row .exam-nav__picked {
  flex-basis: 100%;
}

/* ------------------------------------------------- ④ 考试日历 .cal-* */
.cal-tabs {
  display: flex;
  flex-wrap: wrap;
  gap: 9px;
  margin-bottom: 26px;
}
.cal-filter {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px;
  padding: 13px 16px;
  background: #fff;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  box-shadow: var(--shadow-xs);
  margin-bottom: 20px;
}
.cal-filter__label {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  flex-shrink: 0;
  font-size: 13px;
  font-weight: 600;
  color: var(--muted);
  padding-right: 12px;
  margin-right: 2px;
  border-right: 1px solid var(--line);
}
.cal-filter__label svg {
  width: 15px;
  height: 15px;
  color: var(--brand);
}
.cal-filter__chips {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  flex: 1;
  min-width: 0;
}
.chip--toggle {
  flex-shrink: 0;
  margin-left: auto;
  border-style: dashed;
}
.chip--toggle.is-active {
  background: var(--teal);
  border-color: var(--teal);
  border-style: solid;
  color: #fff;
}
.chip--toggle.is-active:hover {
  color: #fff;
  border-color: var(--teal);
}
/* 倒计时卡片 */
.cal-countdown {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 16px;
  margin-bottom: 30px;
}
.cd-card {
  position: relative;
  padding: 20px 20px 18px;
  background: linear-gradient(160deg, #fff 0%, #f7faff 100%);
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-sm);
  overflow: hidden;
  transition: all 0.22s ease;
}
.cd-card::after {
  content: '';
  position: absolute;
  right: -34px;
  bottom: -34px;
  width: 108px;
  height: 108px;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(14, 95, 216, 0.09) 0%, rgba(14, 95, 216, 0) 70%);
}
.cd-card:hover {
  transform: translateY(-3px);
  box-shadow: var(--shadow);
  border-color: #cfe0f8;
}
.cd-card__type {
  display: inline-flex;
  align-items: center;
  padding: 3px 11px;
  font-size: 12px;
  font-weight: 600;
  color: var(--c, var(--brand));
  background: #eef4fe;
  background: color-mix(in srgb, var(--c, #0e5fd8) 11%, #fff);
  border-radius: 999px;
  margin-bottom: 11px;
}
.cd-card__title {
  font-size: 15.5px;
  font-weight: 700;
  color: var(--ink);
  line-height: 1.5;
  min-height: 46px;
  margin-bottom: 12px;
  position: relative;
  z-index: 1;
}
.cd-card__days {
  display: flex;
  align-items: baseline;
  gap: 5px;
  position: relative;
  z-index: 1;
}
.cd-card__days strong {
  font-size: 34px;
  font-weight: 800;
  letter-spacing: -0.02em;
  color: var(--brand);
  line-height: 1;
}
.cd-card__days span {
  font-size: 13px;
  color: var(--muted);
}
.cd-card__date {
  margin-top: 9px;
  font-size: 12.5px;
  color: var(--muted-2);
  position: relative;
  z-index: 1;
}
.cd-empty {
  grid-column: 1 / -1;
  padding: 44px 20px;
  text-align: center;
  color: var(--muted);
  background: #fff;
  border: 1px dashed var(--line);
  border-radius: var(--radius-lg);
}
.cd-empty svg {
  width: 38px;
  height: 38px;
  color: #cbd5e1;
  margin-bottom: 10px;
}
.cd-empty p {
  font-size: 14px;
}
/* 时间节点列表 */
.cal-list {
  display: flex;
  flex-direction: column;
  gap: 14px;
}
.cal-item {
  display: flex;
  gap: 20px;
  padding: 20px 22px;
  background: #fff;
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-xs);
  transition: all 0.2s ease;
}
.cal-item:hover {
  border-color: #cfe0f8;
  box-shadow: var(--shadow);
  transform: translateX(3px);
}
.cal-item__date {
  flex-shrink: 0;
  width: 76px;
  text-align: center;
  padding-right: 20px;
  border-right: 1px dashed var(--line);
  display: flex;
  flex-direction: column;
  justify-content: center;
}
.cal-item__date strong {
  font-size: 25px;
  font-weight: 800;
  color: var(--brand);
  line-height: 1.1;
  letter-spacing: -0.02em;
}
.cal-item__date span {
  font-size: 12.5px;
  color: var(--muted-2);
}
.cal-item__main {
  flex: 1;
  min-width: 0;
}
.cal-item__head {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  margin-bottom: 8px;
}
.cal-item__type {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 3px 10px;
  font-size: 12px;
  font-weight: 600;
  color: var(--c, var(--brand));
  background: #eef4fe;
  background: color-mix(in srgb, var(--c, #0e5fd8) 11%, #fff);
  border-radius: 999px;
}
.cal-item__type svg {
  width: 13px;
  height: 13px;
}
.cal-item__imp {
  padding: 2px 9px;
  font-size: 11.5px;
  font-weight: 600;
  color: var(--red);
  background: #fdecec;
  border-radius: 999px;
}
.cal-item__region {
  padding: 2px 9px;
  font-size: 11.5px;
  color: var(--muted);
  background: var(--bg);
  border-radius: 999px;
}
.cal-item__main h3 {
  font-size: 17px;
  margin-bottom: 9px;
  line-height: 1.5;
}
.cal-item__meta {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 18px;
  font-size: 13px;
  color: var(--muted);
}
.cal-item__meta span {
  display: inline-flex;
  align-items: center;
  gap: 5px;
}
.cal-item__meta svg {
  width: 14px;
  height: 14px;
  color: var(--muted-2);
}
.cal-item__meta .cal-item__path,
.cal-item__meta span.cal-item__path {
  color: var(--brand);
  background: var(--brand-soft);
  padding: 1px 9px;
  border-radius: 999px;
  font-size: 12px;
}
.cal-item__remark {
  margin-top: 10px;
  padding: 9px 12px;
  font-size: 13px;
  line-height: 1.7;
  color: var(--muted);
  background: var(--bg);
  border-radius: var(--radius-sm);
}
.cal-item__side {
  flex-shrink: 0;
  width: 104px;
  display: flex;
  flex-direction: column;
  align-items: stretch;
  justify-content: center;
  gap: 8px;
}
.cal-item__cd {
  text-align: center;
  padding: 9px 4px;
  background: var(--brand-soft);
  border-radius: var(--radius-sm);
}
.cal-item__cd strong {
  display: block;
  font-size: 22px;
  font-weight: 800;
  color: var(--brand);
  line-height: 1.15;
  letter-spacing: -0.02em;
}
.cal-item__cd span {
  font-size: 11.5px;
  color: var(--muted);
}
.cal-item__cd.is-today {
  background: #fff4ec;
}
.cal-item__cd.is-today strong {
  font-size: 17px;
  color: var(--orange);
}
.cal-item__cd.is-today span {
  color: var(--orange);
}
.cal-item__cd.is-past {
  background: var(--bg);
}
.cal-item__cd.is-past strong {
  font-size: 14px;
  color: var(--muted-2);
}
.btn--soft {
  background: var(--brand-soft);
  border-color: #d5e4fb;
  color: var(--brand);
}
.btn--soft:hover {
  background: var(--brand-light);
  border-color: var(--brand);
}

/* ------------------------------------------------- ⑤ 资料下载 .mat-* */
.mat-toolbar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 12px;
  margin-bottom: 16px;
}
.mat-cats {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  flex: 1;
  min-width: 0;
}
.mat-search {
  flex-shrink: 0;
  width: 280px;
}
.mat-search .input {
  width: 100%;
}
.mat-nav {
  padding: 16px 18px;
  background: var(--bg);
  border: 1px solid var(--line-2);
  border-radius: var(--radius);
  margin-bottom: 24px;
}
.mat-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 18px;
}
.mat-card {
  display: flex;
  gap: 15px;
  padding: 19px;
  background: #fff;
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-xs);
  transition: all 0.22s ease;
}
.mat-card:hover {
  transform: translateY(-3px);
  box-shadow: var(--shadow);
  border-color: #cfe0f8;
}
.mat-card__icon {
  flex-shrink: 0;
  width: 52px;
  height: 62px;
  border-radius: var(--radius-sm);
  background: linear-gradient(150deg, var(--brand) 0%, var(--brand-dark) 100%);
  color: #fff;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 3px;
}
.mat-card__icon svg {
  width: 21px;
  height: 21px;
}
.mat-card__icon em {
  font-size: 9.5px;
  font-style: normal;
  font-weight: 700;
  letter-spacing: 0.06em;
  opacity: 0.86;
}
.mat-card__body {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
}
.mat-card__meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 7px;
  font-size: 12px;
  color: var(--muted);
  margin-bottom: 7px;
}
.mat-card__cat {
  padding: 2px 9px;
  font-weight: 600;
  color: var(--teal);
  background: #e6f7f7;
  border-radius: 999px;
}
.mat-card__path {
  color: var(--brand);
  background: var(--brand-soft);
  padding: 2px 9px;
  border-radius: 999px;
  max-width: 100%;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.mat-card__body h3 {
  font-size: 15.5px;
  line-height: 1.5;
  margin-bottom: 7px;
}
.mat-card__body p {
  flex: 1;
  font-size: 13px;
  line-height: 1.7;
  color: var(--muted);
  margin-bottom: 13px;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.mat-card__foot {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px;
  padding-top: 12px;
  border-top: 1px dashed var(--line);
  font-size: 12.5px;
  color: var(--muted);
}
.mat-card__foot > span {
  display: inline-flex;
  align-items: center;
  gap: 4px;
}
.mat-card__foot svg {
  width: 13px;
  height: 13px;
  color: var(--muted-2);
}
.mat-card__foot .btn {
  margin-left: auto;
}

/* ----------------------------------------------- ⑧ 首页工具区 .tool-* */
.tool-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 18px;
}
.tool-card {
  display: flex;
  flex-direction: column;
  gap: 11px;
  padding: 24px 22px;
  background: #fff;
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-xs);
  transition: all 0.24s ease;
  position: relative;
  overflow: hidden;
}
.tool-card::before {
  content: '';
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
  height: 3px;
  background: linear-gradient(90deg, var(--brand), var(--teal));
  transform: scaleX(0);
  transform-origin: left;
  transition: transform 0.28s ease;
}
.tool-card:hover {
  transform: translateY(-4px);
  box-shadow: var(--shadow-lg);
  border-color: #cfe0f8;
}
.tool-card:hover::before {
  transform: scaleX(1);
}
.tool-card__icon {
  width: 48px;
  height: 48px;
  border-radius: var(--radius);
  background: var(--brand-soft);
  color: var(--brand);
  display: grid;
  place-items: center;
}
.tool-card__icon svg {
  width: 23px;
  height: 23px;
}
.tool-card__title {
  font-size: 16.5px;
  font-weight: 700;
  color: var(--ink);
}
.tool-card__desc {
  font-size: 13px;
  line-height: 1.7;
  color: var(--muted);
  flex: 1;
}
.tool-card__cta {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  font-size: 13.5px;
  font-weight: 600;
  color: var(--brand);
}
.tool-card__cta svg {
  width: 15px;
  height: 15px;
  transition: transform 0.2s ease;
}
.tool-card:hover .tool-card__cta svg {
  transform: translateX(4px);
}
.tool-card h3 {
  font-size: 16.5px;
  line-height: 1.4;
}
.tool-card > p {
  flex: 1;
  font-size: 13px;
  line-height: 1.75;
  color: var(--muted);
}

/* --------------------------------------------------- ⑥ 在线题库 .bank-* */
.bank-setup {
  padding: 20px 22px;
  background: #fff;
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-sm);
  margin-bottom: 24px;
  display: flex;
  flex-direction: column;
  gap: 16px;
}
.bank-setup__row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 12px 18px;
}
.bank-setup__group {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 9px;
  min-width: 0;
}
.bank-setup__label {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  flex-shrink: 0;
  font-size: 13px;
  font-weight: 600;
  color: var(--muted);
}
.bank-setup__label svg {
  width: 15px;
  height: 15px;
  color: var(--brand);
}
.bank-setup__row > [data-start] {
  margin-left: auto;
}
/* 答题状态栏 */
.bank-bar {
  position: sticky;
  top: calc(var(--header-h) + 8px);
  z-index: 30;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 12px;
  padding: 13px 18px;
  margin-bottom: 20px;
  background: rgba(255, 255, 255, 0.94);
  backdrop-filter: blur(8px);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  box-shadow: var(--shadow-sm);
}
.bank-bar__left {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 16px;
}
.bank-bar__right {
  display: flex;
  align-items: center;
  gap: 9px;
  margin-left: auto;
}
.bank-bar__stat {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 13.5px;
  color: var(--muted);
}
.bank-bar__stat svg {
  width: 15px;
  height: 15px;
  color: var(--brand);
}
.bank-bar__stat b {
  color: var(--ink);
  font-size: 15px;
  font-weight: 700;
}
/* 主体：题目 + 侧栏答题卡 */
.bank-body {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 226px;
  gap: 22px;
  align-items: start;
}
.bank-questions,
.bank-answers {
  display: flex;
  flex-direction: column;
  gap: 16px;
}
.bank-side {
  position: sticky;
  top: calc(var(--header-h) + 96px);
  padding: 18px;
  background: #fff;
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-xs);
}
.bank-side__title {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 14px;
  font-weight: 700;
  color: var(--ink);
  margin-bottom: 13px;
}
.bank-side__title svg {
  width: 16px;
  height: 16px;
  color: var(--brand);
}
.bank-sheet {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: 8px;
  margin-bottom: 15px;
}
.bank-sheet__no {
  aspect-ratio: 1;
  border: 1px solid var(--line);
  border-radius: 9px;
  background: #fff;
  font-size: 13px;
  font-weight: 600;
  color: var(--ink-2);
  cursor: pointer;
  display: grid;
  place-items: center;
  transition: all 0.16s ease;
}
.bank-sheet__no:hover {
  border-color: var(--brand);
  color: var(--brand);
}
.bank-sheet__no.is-done {
  background: var(--brand);
  border-color: var(--brand);
  color: #fff;
}
.bank-side__legend {
  display: flex;
  flex-wrap: wrap;
  gap: 10px 14px;
  font-size: 12px;
  color: var(--muted);
  padding-bottom: 14px;
  margin-bottom: 14px;
  border-bottom: 1px dashed var(--line);
}
.bank-side__legend span {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
.bank-side__legend i {
  width: 13px;
  height: 13px;
  border-radius: 4px;
  border: 1px solid var(--line);
  background: #fff;
  display: inline-block;
}
.bank-side__legend i.is-done {
  background: var(--brand);
  border-color: var(--brand);
}
/* 题目卡片 */
.q-card {
  padding: 20px 22px;
  background: #fff;
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-xs);
  transition: border-color 0.2s ease, box-shadow 0.2s ease;
  scroll-margin-top: calc(var(--header-h) + 90px);
}
.q-card.is-right {
  border-left: 3px solid var(--green);
}
.q-card.is-wrong {
  border-left: 3px solid var(--red);
}
.q-card.is-skip {
  border-left: 3px solid var(--muted-2);
}
.q-card__head {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 9px;
  margin-bottom: 13px;
}
.q-card__no {
  width: 27px;
  height: 27px;
  flex-shrink: 0;
  border-radius: 8px;
  background: var(--bg);
  border: 1px solid var(--line);
  color: var(--muted);
  font-size: 13px;
  font-weight: 700;
  display: grid;
  place-items: center;
  transition: all 0.16s ease;
}
.q-card__no.is-done {
  background: var(--brand);
  border-color: var(--brand);
  color: #fff;
}
.q-card__type {
  padding: 3px 10px;
  font-size: 12px;
  font-weight: 600;
  color: var(--brand);
  background: var(--brand-soft);
  border-radius: 999px;
}
.q-card__diff {
  font-size: 12.5px;
  color: var(--orange);
  letter-spacing: 0.04em;
}
.q-card__sub {
  font-size: 12.5px;
  color: var(--muted);
}
.q-card__verdict {
  padding: 3px 11px;
  font-size: 12px;
  font-weight: 700;
  border-radius: 999px;
}
.q-card__verdict.is-right {
  color: var(--green);
  background: #e8f8f1;
}
.q-card__verdict.is-wrong {
  color: var(--red);
  background: #fdecec;
}
.q-card__stem {
  font-size: 15.5px;
  line-height: 1.8;
  color: var(--ink);
  margin-bottom: 15px;
}
/* 选项（可点击） */
.q-opts {
  display: flex;
  flex-direction: column;
  gap: 9px;
}
.q-opt {
  display: flex;
  align-items: flex-start;
  gap: 11px;
  width: 100%;
  padding: 12px 15px;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: #fff;
  text-align: left;
  font-size: 14.5px;
  line-height: 1.7;
  color: var(--ink-2);
  cursor: pointer;
  transition: all 0.16s ease;
}
.q-opt:hover {
  border-color: var(--brand);
  background: var(--brand-soft);
}
.q-opt > b {
  flex-shrink: 0;
  width: 25px;
  height: 25px;
  border-radius: 7px;
  background: var(--bg);
  border: 1px solid var(--line);
  font-size: 12.5px;
  font-weight: 700;
  color: var(--muted);
  display: grid;
  place-items: center;
  transition: all 0.16s ease;
}
.q-opt.is-checked {
  border-color: var(--brand);
  background: var(--brand-light);
  color: var(--brand-dark);
  font-weight: 600;
}
.q-opt.is-checked > b {
  background: var(--brand);
  border-color: var(--brand);
  color: #fff;
}
.q-opt.is-multi > b {
  border-radius: 5px;
}
.q-feedback:empty {
  display: none;
}
/* 结果页选项（静态） */
.q-opts--static {
  list-style: none;
  margin: 0;
  padding: 0;
}
.q-opts--static li {
  display: flex;
  align-items: flex-start;
  gap: 11px;
  padding: 11px 15px;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: #fff;
  font-size: 14.5px;
  line-height: 1.7;
  color: var(--ink-2);
}
.q-opts--static li > b {
  flex-shrink: 0;
  width: 25px;
  height: 25px;
  border-radius: 7px;
  background: var(--bg);
  border: 1px solid var(--line);
  font-size: 12.5px;
  font-weight: 700;
  color: var(--muted);
  display: grid;
  place-items: center;
}
.q-opts--static li > span {
  flex: 1;
  min-width: 0;
}
.q-opts--static li > em {
  flex-shrink: 0;
  align-self: center;
  font-style: normal;
  font-size: 11.5px;
  font-weight: 700;
  padding: 2px 9px;
  border-radius: 999px;
}
.q-opts--static li.is-right {
  border-color: #b7e8d3;
  background: #f2fcf7;
}
.q-opts--static li.is-right > b {
  background: var(--green);
  border-color: var(--green);
  color: #fff;
}
.q-opts--static li.is-right > em {
  color: var(--green);
  background: #ddf5e9;
}
.q-opts--static li.is-wrong {
  border-color: #f7c7c8;
  background: #fef6f6;
}
.q-opts--static li.is-wrong > b {
  background: var(--red);
  border-color: var(--red);
  color: #fff;
}
.q-opts--static li.is-wrong > em {
  color: var(--red);
  background: #fbe0e1;
}
/* 解析 */
.q-analysis {
  display: flex;
  gap: 10px;
  margin-top: 15px;
  padding: 14px 16px;
  background: var(--brand-soft);
  border-radius: var(--radius);
  font-size: 13.5px;
  line-height: 1.8;
  color: var(--ink-2);
}
.q-analysis > svg {
  width: 16px;
  height: 16px;
  flex-shrink: 0;
  margin-top: 4px;
  color: var(--brand);
}
.q-analysis b {
  color: var(--brand-dark);
}
/* 交卷结果 */
.bank-result {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 30px;
  padding: 28px 30px;
  background: linear-gradient(140deg, #fff 0%, var(--brand-soft) 100%);
  border: 1px solid #d5e4fb;
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-sm);
  margin-bottom: 20px;
}
.bank-result__score {
  display: flex;
  align-items: center;
  gap: 28px;
}
.bank-result__ring {
  position: relative;
  width: 136px;
  height: 136px;
  flex-shrink: 0;
  border-radius: 50%;
  background: conic-gradient(var(--brand) calc(var(--p, 0) * 1%), #dfe8f5 0);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
}
.bank-result__ring::before {
  content: '';
  position: absolute;
  inset: 13px;
  border-radius: 50%;
  background: #fff;
}
.bank-result__ring strong {
  position: relative;
  font-size: 28px;
  font-weight: 800;
  color: var(--brand);
  line-height: 1.1;
  letter-spacing: -0.02em;
}
.bank-result__ring span {
  position: relative;
  font-size: 12px;
  color: var(--muted);
}
.bank-result__nums {
  display: grid;
  grid-template-columns: repeat(5, auto);
  gap: 12px 24px;
}
.bank-result__nums > div {
  text-align: center;
}
.bank-result__nums b {
  display: block;
  font-size: 23px;
  font-weight: 800;
  color: var(--ink);
  line-height: 1.25;
  letter-spacing: -0.02em;
}
.bank-result__nums span {
  display: block;
  font-size: 12.5px;
  color: var(--muted);
}
.bank-result__act {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-left: auto;
}

/* ------------------------------------------------- ⑦ 智能答疑 .qa-* */
.qa {
  display: grid;
  grid-template-columns: 268px minmax(0, 1fr);
  gap: 22px;
  align-items: start;
}
.qa__side {
  padding: 20px;
  background: #fff;
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-xs);
  position: sticky;
  top: calc(var(--header-h) + 20px);
}
.qa__side-head {
  display: flex;
  align-items: center;
  gap: 7px;
  font-size: 14.5px;
  font-weight: 700;
  color: var(--ink);
  padding-bottom: 13px;
  margin-bottom: 13px;
  border-bottom: 1px dashed var(--line);
}
.qa__side-head svg {
  width: 17px;
  height: 17px;
  color: var(--brand);
}
.qa__faq {
  display: flex;
  flex-direction: column;
  gap: 7px;
  margin-bottom: 16px;
}
.qa__faq-item {
  display: flex;
  align-items: flex-start;
  gap: 7px;
  width: 100%;
  padding: 10px 12px;
  border: 1px solid var(--line-2);
  border-radius: var(--radius-sm);
  background: #fbfcfe;
  font-size: 13px;
  line-height: 1.65;
  color: var(--ink-2);
  text-align: left;
  cursor: pointer;
  transition: all 0.16s ease;
}
.qa__faq-item:hover {
  border-color: var(--brand);
  background: var(--brand-soft);
  color: var(--brand-dark);
}
.qa__faq-item svg {
  width: 14px;
  height: 14px;
  flex-shrink: 0;
  margin-top: 3px;
  color: var(--brand);
}
.qa__faq-empty {
  font-size: 13px;
  color: var(--muted);
  padding: 10px 0;
}
.qa__side-tip {
  display: flex;
  gap: 9px;
  padding: 12px 13px;
  background: #fff8ef;
  border: 1px solid #ffe2c4;
  border-radius: var(--radius-sm);
  font-size: 12.5px;
  line-height: 1.75;
  color: #8a5b25;
}
.qa__side-tip svg {
  width: 15px;
  height: 15px;
  flex-shrink: 0;
  margin-top: 3px;
  color: var(--orange);
}
.qa__side-tip b {
  color: #a85f00;
}
.qa__main {
  padding: 22px;
  background: #fff;
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-xs);
}
.qa__thread {
  display: flex;
  flex-direction: column;
  gap: 18px;
  max-height: 620px;
  overflow-y: auto;
  padding-right: 6px;
  margin-bottom: 18px;
}
.qa__welcome {
  text-align: center;
  padding: 34px 20px;
  background: linear-gradient(160deg, var(--brand-soft) 0%, #fff 100%);
  border: 1px dashed #cfe0f8;
  border-radius: var(--radius-lg);
}
.qa__welcome-icon {
  width: 54px;
  height: 54px;
  margin: 0 auto 14px;
  border-radius: var(--radius);
  background: var(--brand);
  color: #fff;
  display: grid;
  place-items: center;
  box-shadow: 0 8px 22px rgba(14, 95, 216, 0.28);
}
.qa__welcome-icon svg {
  width: 26px;
  height: 26px;
}
.qa__welcome h3 {
  font-size: 19px;
  margin-bottom: 9px;
}
.qa__welcome p {
  font-size: 13.5px;
  line-height: 1.8;
  color: var(--muted);
  max-width: 520px;
  margin: 0 auto 18px;
}
.qa__quick {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 8px;
}
.qa__msg {
  display: flex;
  gap: 11px;
  align-items: flex-start;
}
.qa__msg--user {
  flex-direction: row-reverse;
}
.qa__avatar {
  flex-shrink: 0;
  width: 36px;
  height: 36px;
  border-radius: 11px;
  background: var(--bg);
  border: 1px solid var(--line);
  color: var(--muted);
  font-size: 13px;
  font-weight: 700;
  display: grid;
  place-items: center;
}
.qa__avatar svg {
  width: 18px;
  height: 18px;
}
.qa__msg--ai .qa__avatar {
  background: var(--brand);
  border-color: var(--brand);
  color: #fff;
}
.qa__msg--user .qa__avatar {
  background: var(--teal);
  border-color: var(--teal);
  color: #fff;
}
.qa__bubble {
  max-width: 78%;
  padding: 13px 16px;
  background: var(--bg);
  border-radius: 4px var(--radius) var(--radius) var(--radius);
  font-size: 14.5px;
  line-height: 1.85;
  color: var(--ink-2);
  word-break: break-word;
}
.qa__msg--user .qa__bubble {
  background: var(--brand);
  color: #fff;
  border-radius: var(--radius) 4px var(--radius) var(--radius);
}
.qa__refs {
  margin-top: 12px;
  padding-top: 11px;
  border-top: 1px dashed rgba(100, 116, 139, 0.3);
}
.qa__refs > span {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  font-size: 12px;
  font-weight: 600;
  color: var(--muted);
  margin-bottom: 8px;
}
.qa__refs > span svg {
  width: 13px;
  height: 13px;
  color: var(--brand);
}
.qa__ref {
  padding: 9px 11px;
  background: #fff;
  border: 1px solid var(--line);
  border-left: 3px solid var(--brand);
  border-radius: 0 var(--radius-sm) var(--radius-sm) 0;
  margin-bottom: 7px;
}
.qa__ref b {
  display: block;
  font-size: 13px;
  font-weight: 600;
  color: var(--ink);
  line-height: 1.6;
  margin-bottom: 3px;
}
.qa__ref span {
  font-size: 12.5px;
  color: var(--muted);
  line-height: 1.6;
}
.qa__engine {
  display: flex;
  align-items: flex-start;
  gap: 6px;
  margin-top: 11px;
  padding: 8px 11px;
  background: #fff8ef;
  border-radius: var(--radius-sm);
  font-size: 12px;
  line-height: 1.65;
  color: #8a5b25;
}
.qa__engine svg {
  width: 13px;
  height: 13px;
  flex-shrink: 0;
  margin-top: 3px;
  color: var(--orange);
}
.qa__typing {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 4px 0;
}
.qa__typing i {
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: var(--muted-2);
  animation: qaTyping 1.2s infinite ease-in-out;
}
.qa__typing i:nth-child(2) {
  animation-delay: 0.18s;
}
.qa__typing i:nth-child(3) {
  animation-delay: 0.36s;
}
@keyframes qaTyping {
  0%,
  60%,
  100% {
    transform: translateY(0);
    opacity: 0.45;
  }
  30% {
    transform: translateY(-5px);
    opacity: 1;
  }
}
.qa__input {
  display: flex;
  align-items: flex-end;
  gap: 11px;
}
.qa__input .textarea {
  flex: 1;
  min-height: 62px;
  resize: vertical;
}
.qa__input .btn {
  flex-shrink: 0;
  height: 44px;
}
.qa__note {
  margin-top: 11px;
  font-size: 12.5px;
  color: var(--muted-2);
  text-align: center;
}

/* -------------------------------------------------------- 响应式适配 */
@media (max-width: 1080px) {
  .mat-grid {
    grid-template-columns: repeat(2, 1fr);
  }
  .tool-grid {
    grid-template-columns: repeat(2, 1fr);
  }
  .cal-countdown {
    grid-template-columns: repeat(2, 1fr);
  }
  .qa {
    grid-template-columns: 1fr;
  }
  .qa__side {
    position: static;
  }
  .bank-body {
    grid-template-columns: minmax(0, 1fr);
  }
  .bank-side {
    position: static;
  }
  .bank-sheet {
    grid-template-columns: repeat(10, 1fr);
  }
}

@media (max-width: 760px) {
  .consult {
    right: 70px;
    bottom: 72px;
  }
  .consult__panel {
    width: calc(100vw - 40px);
    max-width: 356px;
  }
  .consult__actions {
    grid-template-columns: 1fr;
  }
  .exam-nav-card {
    padding: 20px 18px;
  }
  .exam-nav__label {
    min-width: 100%;
    margin-bottom: 2px;
  }
  .exam-nav__row--sub {
    padding-left: 10px;
  }
  .mat-grid,
  .tool-grid,
  .cal-countdown {
    grid-template-columns: 1fr;
  }
  .mat-search {
    width: 100%;
  }
  .cd-card__title {
    min-height: auto;
  }
  .cal-item {
    flex-direction: column;
    gap: 14px;
    padding: 17px 18px;
  }
  .cal-item__date {
    width: auto;
    flex-direction: row;
    align-items: baseline;
    gap: 7px;
    text-align: left;
    padding-right: 0;
    padding-bottom: 11px;
    border-right: 0;
    border-bottom: 1px dashed var(--line);
  }
  .cal-item__side {
    width: 100%;
    flex-direction: row;
    align-items: center;
    flex-wrap: wrap;
  }
  .cal-item__cd {
    min-width: 84px;
  }
  .chip--toggle {
    margin-left: 0;
  }
  .bank-sheet {
    grid-template-columns: repeat(6, 1fr);
  }
  .bank-result {
    flex-direction: column;
    align-items: stretch;
    gap: 20px;
    padding: 22px 18px;
  }
  .bank-result__score {
    flex-direction: column;
    gap: 18px;
    align-items: center;
  }
  .bank-result__nums {
    grid-template-columns: repeat(2, 1fr);
    gap: 14px 30px;
  }
  .bank-result__act {
    margin-left: 0;
  }
  .bank-result__act .btn {
    flex: 1;
    justify-content: center;
  }
  .qa__main {
    padding: 16px;
  }
  .qa__bubble {
    max-width: 86%;
  }
  .qa__input {
    flex-direction: column;
    align-items: stretch;
  }
  .qa__input .btn {
    width: 100%;
    justify-content: center;
  }
  .bank-bar {
    position: static;
  }
  .bank-bar__right {
    margin-left: 0;
    width: 100%;
  }
  .bank-bar__right .btn {
    flex: 1;
    justify-content: center;
  }
  .bank-setup {
    padding: 16px;
  }
  .bank-setup__row > [data-start] {
    margin-left: 0;
    width: 100%;
    justify-content: center;
  }
  .q-card {
    padding: 16px;
  }
}

/* ------------------------------------------------ 补充：通用工具类与遗漏项 */
.muted {
  color: var(--muted);
}
.small {
  font-size: 13px;
  line-height: 1.7;
}
.hover-lift {
  transition: box-shadow 0.22s ease, transform 0.22s ease, border-color 0.22s ease;
}
.hover-lift:hover {
  transform: translateY(-3px);
  box-shadow: var(--shadow-lg);
  border-color: #cfe0f8;
}
.news-card {
  height: 100%;
}
.news-card h3 {
  line-height: 1.55;
  transition: color 0.18s ease;
}
.news-card:hover h3 {
  color: var(--brand);
}
.bank-stage {
  display: block;
  min-height: 80px;
}
.consult__bubble-icon {
  display: grid;
  place-items: center;
}
.consult__bubble-icon svg {
  width: 22px;
  height: 22px;
}

@media (max-width: 760px) {
  .hover-lift:hover {
    transform: none;
  }
}

/* ==========================================================================
   V3 扩展样式：一级导航防错行 / mega 菜单 / 用户入口 / 登录弹窗 / 水印防泄
   用户中心 / 人机对话模考 / 报考条件查询 / 照片处理 / 分销分享
   ========================================================================== */

/* ---------- 通用色值工具 ---------- */
.ok { color: var(--green) !important; }
.err { color: var(--red) !important; }
.warn { color: var(--orange) !important; }
code { background: var(--brand-soft); color: var(--brand); padding: 1px 7px; border-radius: 6px; font-size: 12.5px; }

/* ---------- 需求16：一级菜单一行显示不错行 ---------- */
/* .header 已在上方声明为 sticky；保持定位上下文给 .mega，禁止覆盖成 relative */
.header { position: sticky; }
.nav { flex-wrap: nowrap; gap: 0; }
.nav a {
  white-space: nowrap;
  padding: 9px 8px;
  font-size: 13.6px;
  display: inline-flex;
  align-items: center;
  gap: 3px;
}
.nav a.is-active::after { left: 8px; right: 8px; }
.nav .nav__caret { width: 13px; height: 13px; transition: transform 0.2s ease; }
.nav a.is-open .nav__caret { transform: rotate(180deg); }
.user-chip-slot { display: inline-flex; flex: none; }
.header__actions { gap: 8px; }
.header__actions .btn { white-space: nowrap; }

/* 8 个一级菜单（其余收入「备考服务」下拉）+ 用户入口：1200px 以下切换汉堡菜单 */
@media (max-width: 1200px) {
  .nav { display: none; }
  .nav-toggle { display: grid; margin-left: auto; }
  .nav.is-open {
    display: flex;
    position: absolute;
    top: var(--header-h);
    left: 0;
    right: 0;
    flex-direction: column;
    align-items: stretch;
    gap: 2px;
    padding: 12px 20px 18px;
    background: #fff;
    border-bottom: 1px solid var(--line);
    box-shadow: var(--shadow);
    z-index: 90;
  }
  .nav.is-open a { padding: 12px 14px; font-size: 15px; }
  .nav.is-open a.is-active::after { display: none; }
  .nav.is-open a.is-active { background: var(--brand-soft); }
  /* 移动端抽屉内下拉分组静态展开 */
  .nav.is-open .nav__dropwrap { flex-direction: column; }
  .nav.is-open .nav__drop {
    position: static;
    transform: none;
    display: flex;
    box-shadow: none;
    border: none;
    background: transparent;
    padding: 0 0 6px 16px;
    animation: none;
  }
  .nav.is-open .nav__drop a { font-size: 14px; color: var(--muted); padding: 8px 12px; }
  .nav.is-open .nav__caret { display: none; }
}

/* 1201-1380px 紧凑模式：避免一级菜单与右侧入口按钮重叠，同时收紧 mega 菜单 */
@media (min-width: 1201px) and (max-width: 1380px) {
  .header .container {
    gap: 12px;
    padding: 0 16px;
  }
  .nav a {
    padding: 7px 6px;
    font-size: 13px;
  }
  .nav .nav__caret { width: 12px; height: 12px; }
  .logo__name { font-size: 17px; }
  .logo__sub { font-size: 9px; }
  .header__actions { gap: 6px; }
  .header__actions .btn { padding: 0 11px; font-size: 12px; }
  .mega__body {
    grid-template-columns: 160px minmax(0, 1fr);
    max-height: min(500px, calc(100vh - var(--header-h) - 20px));
  }
  .mega__panel { padding: 16px 18px; }
  .mega__sections { gap: 14px 20px; }
  .mega__sec { padding: 12px 14px; }
  .mega__sec-title { font-size: 13px; }
  .mega__chip { font-size: 12px; padding: 4px 8px; }
}

/* ---------- 考试项目 mega 菜单（左侧分类 Tab + 右侧内容面板） ---------- */
.mega {
  position: absolute;
  top: 100%;
  left: 0;
  right: 0;
  background: #fff;
  border-bottom: 1px solid var(--line);
  box-shadow: 0 24px 48px rgba(15, 45, 90, 0.12);
  z-index: 80;
}
/* 覆盖 .header .container 的 flex/固定高度规则（mega 位于 header 内部） */
.header .container.mega__inner {
  display: block;
  height: auto;
  align-items: initial;
  gap: 0;
  padding: 0;
}
.mega__loading { padding: 40px 0; text-align: center; color: var(--muted); font-size: 14px; }
.mega__body {
  display: grid;
  grid-template-columns: 190px minmax(0, 1fr);
  min-height: 0;
  max-height: min(540px, calc(100vh - var(--header-h) - 24px));
  overflow: hidden;
}
.mega__side {
  background: #f6f8fc;
  border-right: 1px solid var(--line-2);
  padding: 10px 0;
  overflow-y: auto;
}
.mega__tab {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  width: 100%;
  border: none;
  background: transparent;
  padding: 12px 16px;
  font-size: 13.5px;
  font-weight: 600;
  color: var(--ink-2);
  cursor: pointer;
  text-align: left;
  white-space: nowrap;
  transition: background 0.15s ease, color 0.15s ease;
}
.mega__tab-caret { width: 13px; height: 13px; flex: none; opacity: 0.45; }
.mega__tab:hover { color: var(--brand); background: rgba(14, 95, 216, 0.06); }
.mega__tab.is-active {
  background: #fff;
  color: var(--brand);
  font-weight: 700;
  box-shadow: inset 3px 0 0 var(--brand);
}
.mega__tab.is-active .mega__tab-caret { opacity: 1; }
.mega__panel { padding: 18px 24px 20px; overflow-y: auto; display: flex; flex-direction: column; }
.mega__panel-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding-bottom: 12px;
  margin-bottom: 14px;
  border-bottom: 1px solid var(--line-2);
}
.mega__panel-name { font-size: 16px; font-weight: 800; color: var(--ink); }
.mega__panel-head a {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: 12.5px;
  color: var(--brand);
  white-space: nowrap;
}
.mega__panel-head a svg { width: 13px; height: 13px; }
.mega__sections {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
  gap: 18px 28px;
  align-content: start;
}
.mega__sec {
  min-width: 0;
  background: #fafbfc;
  border: 1px solid var(--line-2);
  border-radius: 12px;
  padding: 14px 16px 12px;
  transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
.mega__sec:hover { border-color: #cfe0f8; box-shadow: 0 6px 18px rgba(14, 95, 216, 0.06); }
.mega__sec-title {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 6px;
  font-size: 14px;
  font-weight: 700;
  color: var(--ink);
  margin-bottom: 10px;
  padding-bottom: 8px;
  border-bottom: 1px dashed var(--line-2);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.mega__sec-title::after {
  content: "";
  flex: none;
  width: 16px;
  height: 16px;
  background: var(--brand);
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m9 18 6-6-6-6'/%3E%3C/svg%3E") center/contain no-repeat;
  opacity: 0.55;
  transition: opacity 0.15s ease, transform 0.15s ease;
}
.mega__sec:hover .mega__sec-title::after { opacity: 1; transform: translateX(2px); }
.mega__sec-title:hover { color: var(--brand); }
.mega__sec-items {
  display: flex;
  flex-wrap: wrap;
  gap: 7px;
}
.mega__chip {
  display: inline-flex;
  align-items: center;
  padding: 5px 10px;
  border-radius: 999px;
  background: #fff;
  border: 1px solid var(--line-2);
  font-size: 12.5px;
  color: var(--ink-2);
  white-space: nowrap;
  max-width: 100%;
  overflow: hidden;
  text-overflow: ellipsis;
  transition: color 0.15s ease, border-color 0.15s ease, background 0.15s ease, transform 0.15s ease;
}
.mega__chip:hover {
  color: var(--brand);
  border-color: var(--brand);
  background: #f2f7ff;
  transform: translateY(-1px);
}
.mega__panel-foot {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  margin-top: auto;
  padding-top: 14px;
  border-top: 1px solid var(--line-2);
}
.mega__panel-foot a {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  font-size: 13px;
  font-weight: 600;
  color: var(--brand);
}
.mega__panel-foot a svg { width: 14px; height: 14px; }
.mega__promo {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  gap: 8px;
  min-height: 120px;
  padding: 18px;
  border-radius: 12px;
  background: linear-gradient(135deg, #f2f7ff, #e6f4ff);
  border: 1px dashed var(--brand);
  color: var(--brand);
  text-align: center;
}
.mega__promo svg { width: 34px; height: 34px; opacity: 0.9; }
.mega__promo span { font-size: 13px; font-weight: 600; line-height: 1.5; }
.mega__promo small { font-size: 12px; color: var(--muted); }
@media (max-width: 1200px) {
  .mega { display: none; }
}

/* ---------- 头部用户入口 uchip ---------- */
.uchip { position: relative; }
.uchip__btn {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  border: 1px solid var(--line);
  background: #fff;
  border-radius: 999px;
  padding: 4px 11px 4px 4px;
  cursor: pointer;
  transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
.uchip__btn:hover { border-color: var(--brand); box-shadow: var(--shadow-xs); }
.uchip__avatar {
  width: 30px;
  height: 30px;
  border-radius: 50%;
  display: grid;
  place-items: center;
  background: linear-gradient(135deg, var(--brand), var(--brand-dark));
  color: #fff;
  font-size: 14px;
  font-weight: 700;
}
.uchip__name { font-size: 13.5px; font-weight: 600; color: var(--ink); max-width: 74px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.uchip__btn svg { width: 14px; height: 14px; color: var(--muted); }
.uchip__menu {
  position: absolute;
  top: calc(100% + 8px);
  right: 0;
  width: 216px;
  background: #fff;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  box-shadow: var(--shadow-lg);
  padding: 8px;
  z-index: 95;
}
.uchip__head { padding: 10px 12px 12px; border-bottom: 1px solid var(--line-2); margin-bottom: 6px; }
.uchip__head b { display: block; font-size: 14.5px; }
.uchip__head small { color: var(--muted); font-size: 12px; }
.uchip__menu a, .uchip__menu button {
  display: flex;
  align-items: center;
  gap: 9px;
  width: 100%;
  padding: 9px 12px;
  border: none;
  background: none;
  font-size: 13.5px;
  color: var(--ink-2);
  border-radius: 9px;
  cursor: pointer;
  text-align: left;
}
.uchip__menu a:hover, .uchip__menu button:hover { background: var(--brand-soft); color: var(--brand); }
.uchip__menu svg { width: 16px; height: 16px; flex: none; }
.uchip__menu em { margin-left: auto; font-style: normal; color: var(--orange); font-weight: 700; font-size: 12.5px; }

/* ---------- 快捷登录弹窗 lmodal ---------- */
.lmodal { position: fixed; inset: 0; z-index: 200; display: grid; place-items: center; padding: 18px; }
.lmodal__mask { position: absolute; inset: 0; background: rgba(12, 26, 46, 0.5); backdrop-filter: blur(3px); }
.lmodal__card {
  position: relative;
  width: 100%;
  max-width: 392px;
  background: #fff;
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-lg);
  padding: 30px 28px 24px;
}
.lmodal__card h3 { display: flex; align-items: center; gap: 9px; font-size: 18px; }
.lmodal__card h3 svg { width: 20px; height: 20px; color: var(--brand); }
.lmodal__sub { color: var(--muted); font-size: 13px; margin: 7px 0 18px; }
.lmodal__close {
  position: absolute;
  top: 14px;
  right: 14px;
  width: 32px;
  height: 32px;
  border: none;
  background: var(--brand-soft);
  border-radius: 9px;
  display: grid;
  place-items: center;
  cursor: pointer;
  color: var(--muted);
}
.lmodal__close svg { width: 15px; height: 15px; }
.lmodal__tip { margin-top: 12px; text-align: center; color: var(--muted-2); font-size: 12px; }

/* ---------- 表单控件 lfield / linput ---------- */
.lfield { margin-bottom: 14px; }
.lfield label { display: block; font-size: 13px; font-weight: 600; color: var(--ink-2); margin-bottom: 6px; }
.linput {
  width: 100%;
  border: 1px solid var(--line);
  border-radius: 11px;
  padding: 11px 13px;
  font-size: 14.5px;
  color: var(--ink);
  background: #fff;
  transition: border-color 0.15s ease, box-shadow 0.15s ease;
  font-family: inherit;
}
.linput:focus { outline: none; border-color: var(--brand); box-shadow: 0 0 0 3px var(--brand-light); }
.lfield__code { display: flex; gap: 9px; }
.lfield__code .linput { flex: 1; }
.lcode-btn {
  flex: none;
  border: 1px solid var(--brand);
  color: var(--brand);
  background: #fff;
  border-radius: 11px;
  padding: 0 14px;
  font-size: 13px;
  font-weight: 600;
  cursor: pointer;
  white-space: nowrap;
}
.lcode-btn:disabled { opacity: 0.5; cursor: not-allowed; }

/* ---------- 题库水印与防泄 ---------- */
.wm-host { position: relative; }
.wm-layer {
  position: absolute;
  inset: 0;
  pointer-events: none;
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 30px 10px;
  align-content: space-around;
  overflow: hidden;
  z-index: 5;
}
.wm-layer span {
  text-align: center;
  font-size: 12px;
  color: rgba(20, 60, 120, 0.07);
  transform: rotate(-22deg);
  white-space: nowrap;
  user-select: none;
}

/* ---------- 分享浮标 ---------- */
.share-fab {
  position: fixed;
  right: 22px;
  bottom: 132px;
  z-index: 60;
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.share-fab button {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 2px;
  width: 56px;
  height: 56px;
  border: none;
  border-radius: 50%;
  background: linear-gradient(135deg, var(--orange), #e0731d);
  color: #fff;
  cursor: pointer;
  box-shadow: 0 8px 20px rgba(242, 153, 74, 0.45);
  transition: transform 0.2s ease;
}
.share-fab button[data-poster] { background: linear-gradient(135deg, #6c5ce7, #5545d1); box-shadow: 0 8px 20px rgba(108, 92, 231, 0.42); }
.share-fab button:hover { transform: translateY(-3px); }
.share-fab svg { width: 19px; height: 19px; }
.share-fab small { font-size: 10.5px; }

/* ---------- 登录 / 注册页 auth ---------- */
.auth-page { padding: 44px 0 64px; }
.auth-page__grid {
  display: grid;
  grid-template-columns: 1fr 460px;
  gap: 40px;
  align-items: start;
}
.auth-side h2 { font-size: 30px; line-height: 1.25; margin-bottom: 12px; }
.auth-side > p { color: var(--muted); font-size: 15px; line-height: 1.85; margin-bottom: 22px; }
.auth-side__feats { display: grid; gap: 12px; }
.auth-side__feats li {
  display: flex;
  align-items: center;
  gap: 10px;
  list-style: none;
  font-size: 14px;
  color: var(--ink-2);
}
.auth-side__feats svg { width: 18px; height: 18px; color: var(--brand); flex: none; }
.auth-card {
  background: #fff;
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-lg);
  padding: 26px 28px 24px;
}
.auth-tabs { display: flex; gap: 4px; background: var(--brand-soft); border-radius: 12px; padding: 4px; margin-bottom: 18px; }
.auth-tabs button {
  flex: 1;
  border: none;
  background: none;
  padding: 9px 6px;
  font-size: 14px;
  font-weight: 600;
  color: var(--muted);
  border-radius: 9px;
  cursor: pointer;
  white-space: nowrap;
}
.auth-tabs button.is-active { background: #fff; color: var(--brand); box-shadow: var(--shadow-xs); }
.auth-subtabs {
  display: flex;
  gap: 6px;
  margin-bottom: 16px;
  border-bottom: 1px solid var(--line-2);
  padding-bottom: 10px;
}
.auth-subtabs button {
  border: none;
  background: transparent;
  font-size: 13px;
  font-weight: 600;
  color: var(--muted);
  padding: 5px 10px;
  border-radius: 7px;
  cursor: pointer;
}
.auth-subtabs button.is-active { color: var(--brand); background: var(--brand-soft); }
.auth-form__tip { margin-top: 14px; text-align: center; font-size: 13px; color: var(--muted); }
.auth-form__tip a { color: var(--brand); }
.lfield__captcha { display: flex; gap: 10px; align-items: center; }
.lfield__captcha .captcha-box { flex: none; width: 110px; height: 40px; border-radius: 8px; overflow: hidden; border: 1px solid var(--line); cursor: pointer; background: #f6f8fc; }
.lfield__captcha .captcha-box svg, .lfield__captcha .captcha-box img { width: 100%; height: 100%; display: block; }
.lfield__captcha input { flex: 1; }

/* ---------- 用户中心 uc ---------- */
.uc-body { background: var(--bg); }
.uc-wrap {
  display: grid;
  grid-template-columns: 250px minmax(0, 1fr);
  gap: 22px;
  padding-top: 30px;
  padding-bottom: 60px;
  align-items: start;
}
.uc-side { position: sticky; top: calc(var(--header-h) + 16px); display: grid; gap: 14px; }
.uc-profile {
  display: flex;
  align-items: center;
  gap: 13px;
  background: linear-gradient(135deg, var(--brand), var(--brand-dark));
  border-radius: var(--radius-lg);
  padding: 20px 18px;
  color: #fff;
}
.uc-profile__avatar {
  width: 52px;
  height: 52px;
  flex: none;
  border-radius: 50%;
  display: grid;
  place-items: center;
  background: rgba(255, 255, 255, 0.2);
  border: 2px solid rgba(255, 255, 255, 0.5);
  font-size: 21px;
  font-weight: 800;
}
.uc-profile__info b { display: block; font-size: 16px; }
.uc-profile__info small { opacity: 0.85; font-size: 12px; }
.uc-profile__points {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  margin-top: 5px;
  font-size: 12.5px;
  background: rgba(255, 255, 255, 0.16);
  padding: 3px 10px;
  border-radius: 999px;
}
.uc-profile__points svg { width: 13px; height: 13px; }
.uc-nav {
  background: #fff;
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  padding: 8px;
  display: grid;
  gap: 2px;
}
.uc-nav a {
  position: relative;
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 13px;
  font-size: 14px;
  color: var(--ink-2);
  border-radius: 10px;
  white-space: nowrap;
}
.uc-nav a:hover { background: var(--brand-soft); color: var(--brand); }
.uc-nav a.is-active { background: var(--brand-soft); color: var(--brand); font-weight: 700; }
.uc-nav svg { width: 16.5px; height: 16.5px; flex: none; }
.uc-nav__badge {
  margin-left: auto;
  background: var(--red);
  color: #fff;
  font-size: 11px;
  font-style: normal;
  min-width: 18px;
  height: 18px;
  border-radius: 9px;
  display: grid;
  place-items: center;
  padding: 0 5px;
}
.uc-main { display: grid; gap: 16px; min-width: 0; }

.uc-stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); gap: 14px; }
.uc-stat {
  background: #fff;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  padding: 18px 16px 14px;
  text-align: center;
}
.uc-stat b { display: block; font-size: 26px; font-weight: 800; color: var(--brand); }
.uc-stat span { font-size: 12.5px; color: var(--muted); }
.uc-stats--light .uc-stat { background: rgba(255, 255, 255, 0.14); border-color: rgba(255, 255, 255, 0.25); }
.uc-stats--light .uc-stat b { color: #fff; }
.uc-stats--light .uc-stat span { color: rgba(255, 255, 255, 0.85); }

.uc-alert {
  display: flex;
  align-items: center;
  gap: 12px;
  background: #fff8e6;
  border: 1px solid #f5dfa8;
  border-radius: var(--radius);
  padding: 13px 16px;
  font-size: 13.5px;
  color: #7a5200;
}
.uc-alert svg { width: 18px; height: 18px; flex: none; color: var(--orange); }
.uc-alert .btn { margin-left: auto; flex: none; }

.uc-card { background: #fff; border: 1px solid var(--line); border-radius: var(--radius-lg); padding: 20px 22px; }
.uc-card__head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 14px;
  padding-bottom: 12px;
  border-bottom: 1px solid var(--line-2);
}
.uc-card__head h3 { font-size: 16px; }
.uc-card__head a { font-size: 13px; color: var(--brand); }

.uc-quick { display: grid; grid-template-columns: repeat(auto-fill, minmax(120px, 1fr)); gap: 10px; }
.uc-quick a {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  padding: 16px 8px;
  border: 1px solid var(--line-2);
  border-radius: var(--radius);
  font-size: 13px;
  color: var(--ink-2);
  transition: all 0.18s ease;
}
.uc-quick a:hover { border-color: var(--brand); color: var(--brand); transform: translateY(-2px); box-shadow: var(--shadow-sm); }
.uc-quick svg { width: 21px; height: 21px; color: var(--brand); }

.uc-list { list-style: none; display: grid; }
.uc-list li {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 11px 2px;
  border-bottom: 1px solid var(--line-2);
  font-size: 13.5px;
  min-width: 0;
}
.uc-list li:last-child { border-bottom: none; }
.uc-list__title { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--ink); }
.uc-list__title small { display: block; color: var(--muted); font-size: 12px; margin-top: 2px; }
.uc-list__extra { color: var(--muted); font-size: 12.5px; flex: none; }
.uc-list time { color: var(--muted-2); font-size: 12px; flex: none; }
.uc-list__tag {
  flex: none;
  background: var(--brand-soft);
  color: var(--brand);
  font-size: 11.5px;
  font-weight: 600;
  padding: 2.5px 9px;
  border-radius: 999px;
}
.uc-list__tag--ai { background: #f3efff; color: var(--purple); }

.uc-badge {
  flex: none;
  font-size: 11.5px;
  font-weight: 700;
  padding: 2.5px 10px;
  border-radius: 999px;
}
.uc-badge--ok { background: #e8f8ef; color: var(--green); }
.uc-badge--err { background: #fdecec; color: var(--red); }
.uc-badge--warn { background: #fff4e3; color: var(--orange); }
.uc-badge--mute { background: #f1f3f5; color: var(--muted); }
.uc-badge--brand { background: var(--brand-soft); color: var(--brand); }

.uc-empty { text-align: center; padding: 34px 16px; color: var(--muted); }
.uc-empty svg { width: 30px; height: 30px; opacity: 0.45; margin-bottom: 8px; }
.uc-empty p { font-size: 13.5px; line-height: 1.8; }

/* 订单 */
.uc-orders { display: grid; gap: 14px; }
.uc-order { background: #fff; border: 1px solid var(--line); border-radius: var(--radius-lg); padding: 18px 20px; }
.uc-order__head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 8px; }
.uc-order__no { font-size: 12.5px; color: var(--muted); }
.uc-order__name { font-size: 15.5px; font-weight: 700; }
.uc-order__path { font-size: 12.5px; color: var(--muted); margin: 3px 0 10px; }
.uc-order__nums { display: flex; flex-wrap: wrap; gap: 18px; font-size: 13px; color: var(--muted); }
.uc-order__nums b { color: var(--ink); font-size: 14.5px; }
.uc-order__foot { display: flex; align-items: center; justify-content: space-between; margin-top: 12px; padding-top: 12px; border-top: 1px dashed var(--line-2); }
.uc-order__foot time { color: var(--muted-2); font-size: 12px; }
.uc-order__qr { margin-top: 12px; }
.uc-payqr { border: 1px solid var(--line); border-radius: var(--radius); overflow: hidden; }
.uc-payqr__frame { width: 100%; height: 560px; border: none; display: block; }

/* 科目掌握度 */
.uc-subjects { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 14px 22px; }
.uc-subject__head { display: flex; justify-content: space-between; font-size: 13px; margin-bottom: 6px; }
.uc-subject__head b { color: var(--brand); }
.uc-subject small { color: var(--muted-2); font-size: 11.5px; }
.uc-bar { height: 7px; background: var(--brand-soft); border-radius: 4px; overflow: hidden; margin-bottom: 5px; }
.uc-bar i { display: block; height: 100%; background: linear-gradient(90deg, var(--brand), var(--teal)); border-radius: 4px; }

/* 教务通知 */
.uc-notices { display: grid; gap: 12px; }
.uc-notice { background: #fff; border: 1px solid var(--line); border-radius: var(--radius); padding: 15px 18px; cursor: pointer; }
.uc-notice.is-unread { border-left: 3px solid var(--brand); background: var(--brand-soft); }
.uc-notice__head { display: flex; align-items: center; gap: 9px; font-size: 14.5px; }
.uc-notice__meta { color: var(--muted-2); font-size: 12px; margin: 6px 0; }
.uc-notice__body { font-size: 13.5px; color: var(--ink-2); line-height: 1.8; }
.uc-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--red); margin-left: auto; flex: none; }

/* 考试日历日期块 */
.uc-cal-date {
  flex: none;
  width: 46px;
  text-align: center;
  background: var(--brand-soft);
  border-radius: 10px;
  padding: 5px 0;
}
.uc-cal-date b { display: block; font-size: 17px; color: var(--brand); }
.uc-cal-date small { font-size: 10.5px; color: var(--muted); }

/* 积分 hero / 分销 hero */
.uc-points-hero, .uc-share-hero {
  background: linear-gradient(135deg, var(--brand), var(--brand-dark));
  border-radius: var(--radius-lg);
  color: #fff;
  padding: 24px 26px;
}
.uc-points-hero { display: flex; align-items: center; justify-content: space-between; gap: 16px; flex-wrap: wrap; }
.uc-points-hero small { opacity: 0.85; font-size: 12.5px; }
.uc-points-hero b { display: block; font-size: 38px; font-weight: 800; line-height: 1.15; }
.uc-points-hero__acts { display: flex; gap: 10px; }
.uc-share-hero h3 { font-size: 18px; margin-bottom: 6px; }
.uc-share-hero > p { opacity: 0.88; font-size: 13px; margin-bottom: 14px; }
.uc-share-hero__link { display: flex; gap: 9px; margin-bottom: 16px; }
.uc-share-hero__link .linput { background: rgba(255, 255, 255, 0.95); border: none; }
.uc-share-hero__link .btn { flex: none; }

/* 快递 */
.uc-express { border: 1px solid var(--line-2); border-radius: var(--radius); padding: 13px 16px; margin-bottom: 10px; }
.uc-express:last-child { margin-bottom: 0; }
.uc-express__head { display: flex; align-items: center; justify-content: space-between; font-size: 14px; }
.uc-express__meta { color: var(--muted); font-size: 12.5px; margin: 6px 0 3px; }
.uc-express__addr { color: var(--ink-2); font-size: 12.5px; }

/* 我的老师 */
.uc-teachers { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 16px; }
.uc-teacher { background: #fff; border: 1px solid var(--line); border-radius: var(--radius-lg); padding: 18px 20px; }
.uc-teacher h4 { font-size: 13px; color: var(--muted); font-weight: 600; margin-bottom: 13px; }
.uc-teacher__card { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.uc-teacher__avatar {
  width: 46px;
  height: 46px;
  flex: none;
  border-radius: 50%;
  display: grid;
  place-items: center;
  background: var(--brand-soft);
  color: var(--brand);
  font-size: 17px;
  font-weight: 800;
}
.uc-teacher__card > div { flex: 1; min-width: 90px; }
.uc-teacher__card b { display: block; font-size: 15px; }
.uc-teacher__card small { color: var(--muted); font-size: 12px; }

/* 表单 / 地址 */
.uc-form__grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(230px, 1fr)); gap: 0 18px; }
.uc-addrs { display: grid; gap: 12px; }
.uc-addr { border: 1px solid var(--line-2); border-radius: var(--radius); padding: 13px 16px; }
.uc-addr__head { display: flex; align-items: center; gap: 10px; font-size: 14px; }
.uc-addr__body { color: var(--muted); font-size: 13px; margin-top: 5px; }

/* ---------- 人机对话模考 exam / cbt ---------- */
.exam-picker { display: grid; gap: 18px; }
.exam-picker__filter { background: #fff; border: 1px solid var(--line); border-radius: var(--radius-lg); padding: 18px 20px; }
.exam-picker__filter .btn { margin-top: 12px; }
.exam-paper-list { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 16px; }
.exam-paper-card { background: #fff; border: 1px solid var(--line); border-radius: var(--radius-lg); padding: 18px 20px; transition: all 0.18s ease; }
.exam-paper-card:hover { box-shadow: var(--shadow); transform: translateY(-2px); }
.exam-paper-card__head { display: flex; gap: 7px; margin-bottom: 9px; }
.exam-paper-card h3 { font-size: 15.5px; line-height: 1.5; margin-bottom: 6px; }
.exam-paper-card__meta { font-size: 12px; color: var(--muted); margin-bottom: 12px; }
.exam-paper-card__nums { display: flex; gap: 14px; font-size: 12.5px; color: var(--ink-2); margin-bottom: 14px; }
.exam-paper-card__nums span { display: inline-flex; align-items: center; gap: 5px; }
.exam-paper-card__nums svg { width: 14px; height: 14px; color: var(--brand); }

.cbt { position: fixed; inset: 0; z-index: 150; background: var(--bg); display: flex; flex-direction: column; }
.cbt__top {
  flex: none;
  display: flex;
  align-items: center;
  gap: 16px;
  background: #12294d;
  color: #fff;
  padding: 0 20px;
  height: 54px;
}
.cbt__title { flex: 1; min-width: 0; font-size: 14.5px; font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cbt__timer {
  font-size: 20px;
  font-weight: 800;
  font-variant-numeric: tabular-nums;
  background: rgba(255, 255, 255, 0.12);
  padding: 4px 16px;
  border-radius: 9px;
}
.cbt__timer.is-urgent { background: var(--red); animation: cbt-blink 1s infinite; }
@keyframes cbt-blink { 50% { opacity: 0.65; } }
.cbt__quit {
  border: 1px solid rgba(255, 255, 255, 0.4);
  background: none;
  color: #fff;
  border-radius: 9px;
  padding: 7px 15px;
  font-size: 13px;
  cursor: pointer;
}
.cbt__body { flex: 1; display: grid; grid-template-columns: minmax(0, 1fr) 292px; min-height: 0; }
.cbt__main { overflow-y: auto; padding: 26px clamp(18px, 5vw, 70px); }
.cbt__side {
  background: #fff;
  border-left: 1px solid var(--line);
  padding: 18px 16px;
  overflow-y: auto;
  display: flex;
  flex-direction: column;
}
.cbt__side-head { font-size: 14px; font-weight: 700; margin-bottom: 12px; }
.cbt__sheet { display: grid; grid-template-columns: repeat(6, 1fr); gap: 7px; }
.cbt-no {
  aspect-ratio: 1;
  border: 1px solid var(--line);
  background: #fff;
  border-radius: 8px;
  font-size: 12.5px;
  cursor: pointer;
  color: var(--ink-2);
}
.cbt-no.is-done { background: var(--brand); border-color: var(--brand); color: #fff; }
.cbt-no.is-mark { border-color: var(--orange); box-shadow: inset 0 0 0 1px var(--orange); }
.cbt-no.is-cur { outline: 2px solid var(--brand-dark); }
.cbt__legend { display: flex; gap: 14px; margin: 14px 0; font-size: 12px; color: var(--muted); }
.cbt__legend span { display: inline-flex; align-items: center; gap: 5px; }
.dot { width: 10px; height: 10px; border-radius: 3px; border: 1px solid var(--line); display: inline-block; }
.dot--done { background: var(--brand); border-color: var(--brand); }
.dot--mark { background: #fff; border-color: var(--orange); box-shadow: inset 0 0 0 1px var(--orange); }
.cbt__side .btn { margin-top: auto; }

.cbt-q { max-width: 860px; margin: 0 auto; }
.cbt-q__head { display: flex; align-items: center; gap: 14px; margin-bottom: 18px; }
.cbt-q__no { font-size: 15px; font-weight: 800; }
.cbt-q__type { font-size: 12.5px; color: var(--muted); }
.cbt-q__mark {
  margin-left: auto;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  border: 1px solid var(--line);
  background: #fff;
  border-radius: 999px;
  padding: 6px 14px;
  font-size: 12.5px;
  color: var(--muted);
  cursor: pointer;
}
.cbt-q__mark svg { width: 14px; height: 14px; }
.cbt-q__mark.is-on { color: var(--orange); border-color: var(--orange); background: #fff7ed; }
.cbt-q__stem { font-size: 16px; line-height: 1.9; margin-bottom: 20px; }
.cbt-q__opts { display: grid; gap: 11px; }
.cbt-opt {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  text-align: left;
  background: #fff;
  border: 1.5px solid var(--line);
  border-radius: var(--radius);
  padding: 13px 16px;
  font-size: 14.5px;
  cursor: pointer;
  transition: all 0.15s ease;
}
.cbt-opt b {
  flex: none;
  width: 26px;
  height: 26px;
  border: 1.5px solid var(--line);
  border-radius: 50%;
  display: grid;
  place-items: center;
  font-size: 13px;
  color: var(--ink-2);
}
.cbt-opt span { line-height: 1.7; }
.cbt-opt:hover { border-color: var(--brand); }
.cbt-opt.is-on { border-color: var(--brand); background: var(--brand-soft); }
.cbt-opt.is-on b { background: var(--brand); border-color: var(--brand); color: #fff; }
.cbt-q__fill { max-width: 420px; }
.cbt-q__foot { display: flex; justify-content: space-between; margin-top: 26px; }

.exam-result {
  display: grid;
  grid-template-columns: 210px minmax(0, 1fr);
  gap: 30px;
  align-items: center;
  background: #fff;
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  padding: 30px;
  margin-bottom: 24px;
}
.exam-result__ring {
  width: 180px;
  height: 180px;
  border-radius: 50%;
  margin: 0 auto;
  display: grid;
  place-items: center;
  grid-template-rows: 1fr auto;
  background:
    radial-gradient(closest-side, #fff 79%, transparent 80% 100%),
    conic-gradient(var(--brand) calc(var(--p) * 1%), var(--brand-soft) 0);
}
.exam-result__ring b { font-size: 34px; color: var(--brand); align-self: end; }
.exam-result__ring span { display: block; text-align: center; font-size: 12.5px; color: var(--muted); align-self: start; }
.exam-result__body h2 { font-size: 22px; margin-bottom: 14px; }
.exam-result__nums { display: flex; flex-wrap: wrap; gap: 20px; font-size: 14px; color: var(--muted); margin-bottom: 20px; }
.exam-result__nums b { color: var(--ink); font-size: 17px; }
.exam-result__acts { display: flex; flex-wrap: wrap; gap: 10px; }
.exam-review { display: grid; gap: 14px; }
.exam-review > h3 { font-size: 18px; }

/* ---------- 报考条件查询 elig ---------- */
.elig { display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr); gap: 22px; align-items: start; }
.elig__form { background: #fff; border: 1px solid var(--line); border-radius: var(--radius-lg); padding: 24px 26px; }
.elig__title { font-size: 15.5px; margin-bottom: 14px; }
.elig__grid { display: grid; grid-template-columns: 1fr 1fr; gap: 0 16px; }
.elig__tip { margin-top: 12px; font-size: 12px; color: var(--muted-2); line-height: 1.7; }
.elig__result { position: sticky; top: calc(var(--header-h) + 16px); }
.elig__placeholder {
  background: #fff;
  border: 1.5px dashed var(--line);
  border-radius: var(--radius-lg);
  padding: 56px 26px;
  text-align: center;
  color: var(--muted);
}
.elig__placeholder-icon { display: block; color: var(--brand); opacity: 0.4; margin-bottom: 12px; }
.elig__placeholder-icon svg { width: 40px; height: 40px; }
.elig__placeholder h3 { font-size: 16px; color: var(--ink-2); margin-bottom: 6px; }
.elig__placeholder p { font-size: 13px; }
.elig-card { background: #fff; border: 1px solid var(--line); border-radius: var(--radius-lg); padding: 24px 26px; }
.elig-card--ok { border-top: 4px solid var(--green); }
.elig-card--warn { border-top: 4px solid var(--orange); }
.elig-card--none { border-top: 4px solid var(--muted-2); text-align: center; }
.elig-card--none h3 { display: flex; align-items: center; justify-content: center; gap: 8px; font-size: 16px; margin-bottom: 8px; }
.elig-card--none svg { width: 19px; height: 19px; color: var(--muted); }
.elig-card--none p { color: var(--muted); font-size: 13.5px; margin-bottom: 18px; }
.elig-card__badge {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 13px;
  font-weight: 700;
  padding: 5px 14px;
  border-radius: 999px;
  margin-bottom: 14px;
}
.elig-card--ok .elig-card__badge { background: #e8f8ef; color: var(--green); }
.elig-card--warn .elig-card__badge { background: #fff4e3; color: var(--orange); }
.elig-card__badge svg { width: 15px; height: 15px; }
.elig-card h3 { font-size: 16.5px; margin-bottom: 14px; }
.elig-kv { display: flex; gap: 14px; padding: 9px 0; border-bottom: 1px solid var(--line-2); font-size: 13.5px; }
.elig-kv span { flex: none; width: 64px; color: var(--muted); }
.elig-kv b { font-weight: 600; line-height: 1.7; }
.elig-card__concl { background: var(--brand-soft); border-radius: var(--radius); padding: 12px 15px; font-size: 13px; line-height: 1.8; color: var(--ink-2); margin-top: 14px; }
.elig-card__precheck { display: flex; align-items: flex-start; gap: 8px; font-size: 13px; line-height: 1.7; margin-top: 12px; }
.elig-card__precheck svg { width: 16px; height: 16px; flex: none; margin-top: 2px; }
.elig-card__precheck.is-ok { color: var(--green); }
.elig-card__precheck.is-warn { color: var(--orange); }
.elig-card__acts { display: grid; gap: 10px; margin-top: 18px; }

/* ---------- 照片处理 photo ---------- */
.photo { display: grid; grid-template-columns: 330px minmax(0, 1fr); gap: 22px; align-items: start; }
.photo__specs { background: #fff; border: 1px solid var(--line); border-radius: var(--radius-lg); padding: 18px; position: sticky; top: calc(var(--header-h) + 16px); }
.photo__scenes { display: flex; flex-wrap: wrap; gap: 7px; margin-bottom: 14px; }
.photo__spec-list { display: grid; gap: 9px; max-height: 480px; overflow-y: auto; }
.photo-spec {
  text-align: left;
  border: 1.5px solid var(--line);
  background: #fff;
  border-radius: var(--radius);
  padding: 11px 14px;
  cursor: pointer;
  transition: all 0.15s ease;
}
.photo-spec b { display: flex; align-items: center; gap: 7px; font-size: 13.5px; }
.photo-spec b em { font-style: normal; font-size: 10.5px; background: #fff4e3; color: var(--orange); padding: 1px 7px; border-radius: 999px; }
.photo-spec span { display: block; color: var(--muted); font-size: 12px; margin-top: 3px; }
.photo-spec small { display: block; color: var(--muted-2); font-size: 11px; margin-top: 2px; }
.photo-spec.is-active { border-color: var(--brand); background: var(--brand-soft); }
.photo__studio { display: grid; gap: 16px; }
.photo__upload {
  border: 2px dashed var(--line);
  border-radius: var(--radius-lg);
  background: #fff;
  padding: 58px 24px;
  text-align: center;
  cursor: pointer;
  transition: all 0.18s ease;
}
.photo__upload:hover, .photo__upload.is-over { border-color: var(--brand); background: var(--brand-soft); }
.photo__upload-inner span { display: block; color: var(--brand); opacity: 0.5; margin-bottom: 12px; }
.photo__upload-inner svg { width: 44px; height: 44px; }
.photo__upload-inner h3 { font-size: 17px; margin-bottom: 8px; }
.photo__upload-inner p { color: var(--muted); font-size: 13px; line-height: 1.8; }
.photo__work { display: grid; grid-template-columns: minmax(0, 1fr) 250px; gap: 18px; }
.photo__canvas-wrap {
  position: relative;
  background: repeating-conic-gradient(#f1f3f7 0% 25%, #fff 0% 50%) 0 0 / 22px 22px;
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  display: grid;
  place-items: center;
  padding: 18px;
  cursor: grab;
  overflow: hidden;
  user-select: none;
}
.photo__canvas-wrap:active { cursor: grabbing; }
.photo__canvas-wrap canvas { max-width: 100%; max-height: 62vh; width: auto; height: auto; box-shadow: var(--shadow); touch-action: none; }
.photo__drag-tip {
  position: absolute;
  bottom: 10px;
  left: 50%;
  transform: translateX(-50%);
  background: rgba(18, 41, 77, 0.75);
  color: #fff;
  font-size: 11px;
  padding: 3px 12px;
  border-radius: 999px;
  pointer-events: none;
}
.photo__controls { background: #fff; border: 1px solid var(--line); border-radius: var(--radius-lg); padding: 18px; display: grid; gap: 16px; align-content: start; }
.photo-ctrl label { display: block; font-size: 12.5px; font-weight: 600; color: var(--ink-2); margin-bottom: 7px; }
.photo-ctrl input[type="range"] { width: 100%; accent-color: var(--brand); }
.photo-check { display: flex !important; align-items: center; gap: 7px; font-weight: 500 !important; }
.photo-bgs { display: flex; gap: 9px; }
.photo-bg {
  width: 34px;
  height: 34px;
  border-radius: 9px;
  border: 2px solid var(--line);
  background: var(--c);
  cursor: pointer;
}
.photo-bg.is-active { border-color: var(--brand); box-shadow: 0 0 0 3px var(--brand-light); }
.photo-ctrl--row { display: grid; gap: 10px; }
.photo-size { font-size: 12.5px; color: var(--muted); line-height: 1.7; }
.photo-size b { font-size: 14px; }
.photo-size small { display: block; color: var(--muted-2); font-size: 11px; }
.photo-acts { display: grid; gap: 8px; }
.photo__guide { background: #fff; border: 1px solid var(--line); border-radius: var(--radius-lg); padding: 18px 22px; }
.photo__guide h4 { font-size: 14px; margin-bottom: 9px; }
.photo__guide ul { padding-left: 18px; color: var(--muted); font-size: 12.5px; line-height: 2; }

/* ---------- 门户模板与图标风格（管理员可选） ---------- */
body[data-icon-style="filled"] .exam-card__icon svg,
body[data-icon-style="filled"] .uc-quick svg { fill: currentColor; stroke-width: 1.2; }
body[data-icon-style="badge"] .exam-card__icon {
  border-radius: 50%;
}
body[data-template="exam"] .page-hero { background: linear-gradient(150deg, var(--brand-soft) 0%, #fff 55%, var(--brand-light) 100%); }
body[data-template="course"] .course-card { border-top: 3px solid var(--brand); }

/* ---------- V3 响应式 ---------- */
@media (max-width: 1080px) {
  .auth-page__grid { grid-template-columns: 1fr; gap: 34px; }
  .uc-wrap { grid-template-columns: 1fr; }
  .uc-side { position: static; }
  .uc-nav { display: flex; overflow-x: auto; padding: 8px; }
  .uc-nav a { flex: none; }
  .uc-nav__badge { margin-left: 4px; }
  .elig { grid-template-columns: 1fr; }
  .elig__result { position: static; }
  .photo { grid-template-columns: 1fr; }
  .photo__specs { position: static; }
  .photo__work { grid-template-columns: 1fr; }
  .cbt__body { grid-template-columns: minmax(0, 1fr) 220px; }
  .exam-result { grid-template-columns: 1fr; text-align: center; }
  .exam-result__acts { justify-content: center; }
  .exam-result__nums { justify-content: center; }
  .share-fab { right: 14px; bottom: 118px; }
}

@media (max-width: 720px) {
  .mega__cols { grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); }
  .cbt__body { grid-template-columns: 1fr; grid-template-rows: minmax(0, 1fr) auto; }
  .cbt__side { border-left: none; border-top: 1px solid var(--line); max-height: 210px; }
  .cbt__sheet { grid-template-columns: repeat(10, 1fr); }
  .cbt__title { font-size: 12.5px; }
  .cbt__timer { font-size: 16px; padding: 3px 10px; }
  .elig__grid { grid-template-columns: 1fr; }
  .exam-paper-list { grid-template-columns: 1fr; }
  .uc-payqr__frame { height: 480px; }
  .uc-profile { padding: 16px; }
  .header__actions .btn[data-action="open-enroll"] { display: none; }
}

/* ---------- 补齐：状态类与保护类样式 ---------- */
.auth-form { display: grid; gap: 2px; }
.auth-form[hidden] { display: none; }
body.cbt-mode { overflow: hidden; }
.mega__col { min-width: 0; }
.protect-zone { -webkit-user-select: none; user-select: none; }
.isMine { font-weight: 700; color: var(--brand); }
.settled { color: var(--green); font-weight: 700; }
.uc-form { display: grid; gap: 4px; }

/* ---------- 资料下载模式角标 ---------- */
.mat-card__cat--points { background: #fff4e3; color: var(--orange); }
.mat-card__cat--purchase { background: #fdecec; color: var(--red); }
.mat-card__cat--class { background: #f3efff; color: var(--purple); }

/* ==================================================================
   第四轮：分享面板 / AI 解答 / 题库中心 / 扫码登录 / 内嵌模式
   ================================================================== */

/* ---------- 分享面板 ---------- */
.share-card { max-width: 480px; }
.share-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(120px, 1fr)); gap: 10px; margin: 16px 0 6px; }
.share-item {
  display: flex; flex-direction: column; align-items: center; gap: 4px;
  border: 1px solid var(--line); border-radius: 14px; background: #fff;
  padding: 14px 8px; cursor: pointer; transition: border-color 0.15s ease, box-shadow 0.15s ease, transform 0.15s ease;
}
.share-item:hover { border-color: var(--brand); box-shadow: 0 8px 20px rgba(14, 95, 216, 0.1); transform: translateY(-2px); }
.share-item__ic {
  width: 42px; height: 42px; border-radius: 50%;
  display: grid; place-items: center;
  background: color-mix(in srgb, var(--c, #0e5fd8) 12%, #fff);
  color: var(--c, #0e5fd8);
}
.share-item__ic svg { width: 21px; height: 21px; }
.share-item b { font-size: 13.5px; color: var(--ink); }
.share-item small { font-size: 11px; color: var(--muted); }
.share-qr { margin-top: 14px; text-align: center; border-top: 1px dashed var(--line); padding-top: 14px; }
.share-qr__img svg { width: 160px; height: 160px; border: 1px solid var(--line); border-radius: 10px; padding: 8px; }
.share-qr p { margin: 8px 0 0; font-size: 12.5px; color: var(--muted); }

/* ---------- 分销海报 ---------- */
.poster-card { max-width: 420px; }
.poster-stage { display: grid; place-items: center; margin: 14px 0 4px; min-height: 300px; }
.poster-canvas { max-width: 100%; height: auto; border-radius: 14px; box-shadow: 0 12px 30px rgba(14, 95, 216, 0.18); }
.poster-skeleton { width: 260px; height: 390px; border-radius: 14px; }
.poster-acts { display: flex; gap: 10px; justify-content: center; margin-top: 14px; }
.poster-acts .btn { min-width: 130px; justify-content: center; }

/* ---------- 题目工具行 + AI 解答 ---------- */
.q-card__acts { display: flex; gap: 8px; margin-top: 10px; flex-wrap: wrap; }
.btn--soft.is-faved { color: var(--orange); border-color: var(--orange); }
.ai-explain {
  margin-top: 10px; border: 1px solid color-mix(in srgb, var(--brand) 25%, #fff);
  background: linear-gradient(180deg, color-mix(in srgb, var(--brand) 5%, #fff), #fff);
  border-radius: 12px; padding: 12px 14px;
}
.ai-explain__head { display: flex; align-items: center; gap: 6px; font-weight: 700; font-size: 13.5px; color: var(--brand); }
.ai-explain__head svg { width: 16px; height: 16px; }
.ai-explain__head em {
  font-style: normal; font-size: 11px; font-weight: 600; padding: 1px 8px; border-radius: 999px;
  background: var(--brand); color: #fff; margin-left: 4px;
}
.ai-explain__body { margin-top: 8px; font-size: 13.5px; line-height: 1.8; color: var(--ink-2); }

/* ---------- 题库中心 ---------- */
.bankc-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(215px, 1fr)); gap: 14px; }
.bankc-card {
  display: flex; align-items: center; gap: 12px; text-align: left;
  border: 1px solid var(--line); border-radius: 16px; background: #fff; padding: 16px 14px;
  cursor: pointer; transition: border-color 0.15s ease, box-shadow 0.15s ease, transform 0.15s ease;
}
.bankc-card:hover { border-color: var(--brand); box-shadow: 0 12px 28px rgba(14, 95, 216, 0.12); transform: translateY(-3px); }
.bankc-card__ic {
  flex: none; width: 44px; height: 44px; border-radius: 13px;
  display: grid; place-items: center;
  background: var(--brand-soft); color: var(--brand);
}
.bankc-card__ic svg { width: 22px; height: 22px; }
.bankc-card__body { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.bankc-card__body b { font-size: 14.5px; color: var(--ink); }
.bankc-card__body small { font-size: 11.5px; color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.bankc-card__count { margin-left: auto; flex: none; font-size: 11.5px; font-weight: 700; color: var(--brand); background: var(--brand-soft); padding: 2px 8px; border-radius: 999px; }
.bankc-viewhead { display: flex; align-items: center; justify-content: space-between; margin-bottom: 16px; }
.bankc-viewhead h2 { font-size: 20px; font-weight: 800; color: var(--ink); margin: 0; }
.bankc-daily { display: grid; grid-template-columns: 1fr 320px; gap: 18px; align-items: start; }
.bankc-daily__info { background: #fff; border: 1px solid var(--line); border-radius: 16px; padding: 24px; }
.bankc-daily__info h3 { margin: 0 0 8px; font-size: 19px; }
.bankc-daily__info p { color: var(--muted); margin: 0 0 16px; }
.bankc-daily__acts { display: flex; gap: 10px; flex-wrap: wrap; }
.bankc-daily__tip { display: flex; gap: 10px; background: var(--brand-soft); border-radius: 14px; padding: 14px 16px; font-size: 13px; color: var(--ink-2); }
.bankc-daily__tip svg { width: 17px; height: 17px; flex: none; color: var(--brand); margin-top: 2px; }
.bankc-smart { background: #fff; border: 1px solid var(--line); border-radius: 16px; padding: 22px; }
.bankc-smart__grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 14px; margin-bottom: 18px; }
.bankc-smart__grid label { display: flex; flex-direction: column; gap: 6px; font-size: 13px; font-weight: 600; color: var(--ink-2); }
.bankc-pick { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 12px; }
.bankc-pick__item {
  display: flex; flex-direction: column; gap: 4px; border: 1px solid var(--line); border-radius: 14px;
  background: #fff; padding: 18px; cursor: pointer; text-align: left; transition: border-color 0.15s ease;
}
.bankc-pick__item:hover { border-color: var(--brand); }
.bankc-pick__item b { font-size: 15px; color: var(--ink); }
.bankc-pick__item small { font-size: 12px; color: var(--muted); }
.bankc-list { display: grid; gap: 10px; }
.bankc-row {
  display: flex; align-items: center; gap: 12px;
  background: #fff; border: 1px solid var(--line); border-radius: 13px; padding: 12px 16px;
}
.bankc-row__no {
  flex: none; width: 26px; height: 26px; border-radius: 8px; display: grid; place-items: center;
  background: var(--line-2); color: var(--muted); font-size: 12.5px; font-weight: 800;
}
.bankc-row__no.is-hot { background: #fdecec; color: var(--red); }
.bankc-row__body { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.bankc-row__body b { font-size: 13.5px; color: var(--ink); font-weight: 600; }
.bankc-row__body small { font-size: 12px; color: var(--muted); }
.bankc-row__rate { flex: none; font-size: 12px; font-weight: 700; color: var(--red); }
.bankc-know { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 10px; }
.bankc-know__item {
  display: flex; flex-direction: column; gap: 3px; text-align: left;
  border: 1px solid var(--line); border-radius: 12px; background: #fff; padding: 12px 14px; cursor: pointer;
}
.bankc-know__item:hover { border-color: var(--brand); }
.bankc-know__item b { font-size: 13.5px; color: var(--ink); font-weight: 600; }
.bankc-know__item small { font-size: 11.5px; color: var(--muted); }
.bankc-skill { margin-bottom: 22px; }
.bankc-skill h3 { display: flex; align-items: center; gap: 8px; font-size: 16px; margin: 0 0 12px; color: var(--ink); }
.bankc-skill h3 svg { width: 19px; height: 19px; color: var(--brand); }
.bankc-skill h3 small { font-size: 12px; color: var(--muted); font-weight: 500; }
.bankc-media { width: 100%; max-width: 520px; border-radius: 12px; background: #000; margin: 10px 0 6px; }
.bankc-media--audio { max-width: 420px; }

/* ---------- 内嵌模式（小程序 webview / APP 内嵌，?embed=1） ---------- */
body.is-embed .topbar,
body.is-embed .float-bar,
body.is-embed .share-fab,
body.is-embed .consult { display: none !important; }

@media (max-width: 720px) {
  .bankc-daily { grid-template-columns: 1fr; }
  .bankc-card__count { display: none; }
}

/* ---------- 扫码登录面板 ---------- */
.qr-pane { text-align: center; padding: 8px 0 4px; }
.qr-pane__img svg { width: 180px; height: 180px; border: 1px solid var(--line); border-radius: 12px; padding: 10px; }
.qr-pane__tip { margin: 10px 0; font-size: 13px; color: var(--muted); }

/* ---------- 扫码确认页（模拟扫码端） ---------- */
.qrc-page { min-height: 100vh; display: grid; place-items: center; background: linear-gradient(160deg, #f0f6ff, #f7fbfa); padding: 20px; }
.qrc-card { width: 100%; max-width: 420px; background: #fff; border: 1px solid var(--line); border-radius: 20px; padding: 28px 24px; box-shadow: 0 24px 60px rgba(15, 45, 90, 0.1); }
.qrc-card h1 { font-size: 19px; margin: 0 0 4px; display: flex; align-items: center; gap: 8px; }
.qrc-card h1 svg { width: 22px; height: 22px; color: #07c160; }
.qrc-card__sub { color: var(--muted); font-size: 13px; margin: 0 0 18px; }
.qrc-staff { display: grid; gap: 8px; max-height: 320px; overflow-y: auto; }
.qrc-staff__item {
  display: flex; align-items: center; gap: 10px; border: 1px solid var(--line); border-radius: 12px;
  padding: 10px 12px; cursor: pointer; background: #fff; text-align: left;
}
.qrc-staff__item:hover { border-color: var(--brand); }
.qrc-staff__avatar { width: 34px; height: 34px; border-radius: 50%; background: var(--brand-soft); color: var(--brand); display: grid; place-items: center; font-weight: 700; }
.qrc-done { text-align: center; padding: 20px 0; }
.qrc-done svg { width: 52px; height: 52px; color: var(--green); }

/* ---------- 门户版面：视频区块与页脚自定义 ---------- */
.video-block {
  border-radius: 18px; overflow: hidden; border: 1px solid var(--line);
  box-shadow: 0 18px 44px rgba(15, 45, 90, 0.1); background: #000;
}
.video-block video,
.video-block iframe { display: block; width: 100%; aspect-ratio: 16 / 9; }
.footer__icp { text-align: center; padding: 14px 0 4px; font-size: 12px; color: rgba(255, 255, 255, 0.5); }
.footer__links-custom { display: flex; gap: 16px; justify-content: center; flex-wrap: wrap; padding-top: 10px; }
.footer__links-custom a { font-size: 12.5px; color: rgba(255, 255, 255, 0.72); }
.footer__links-custom a:hover { color: #fff; }

/* ---------- 提示条（会员登录引导等） ---------- */
.hint {
  display: flex;
  gap: 10px;
  align-items: flex-start;
  padding: 12px 14px;
  border: 1px solid var(--line, #e4eaf3);
  border-left: 3px solid var(--brand, #0e5fd8);
  border-radius: 10px;
  background: var(--brand-soft, #f2f7ff);
  font-size: 13.5px;
  color: var(--ink-2, #23344d);
  line-height: 1.7;
}
.hint svg { width: 17px; height: 17px; flex: none; margin-top: 2px; color: var(--brand, #0e5fd8); }

/* ==========================================================================
   V7 题库中心升级：专业选择条 / 我的数据 / 刷题排行榜
   ========================================================================== */
.bankc-exambar {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  padding: 12px 16px;
  margin-bottom: 18px;
  background: #fff;
  border: 1px solid var(--line);
  border-radius: 14px;
}
.bankc-exambar__label {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  font-size: 13.5px;
  font-weight: 600;
  color: var(--ink-2);
  margin-right: 4px;
}
.bankc-exambar__label svg { width: 15px; height: 15px; color: var(--brand); }

.bankc-mine {
  display: flex;
  align-items: center;
  gap: 22px;
  flex-wrap: wrap;
  padding: 14px 20px;
  margin-bottom: 16px;
  background: linear-gradient(135deg, #f2f7ff, #eef4ff);
  border: 1px solid #d8e6fb;
  border-radius: 14px;
}
.bankc-mine__item small { display: block; font-size: 12px; color: var(--muted); }
.bankc-mine__item b { font-size: 20px; color: var(--ink); }
.bankc-mine__item b.ok { color: var(--green); }
.bankc-mine__subj { display: flex; gap: 12px; flex-wrap: wrap; margin-left: auto; font-size: 13px; color: var(--muted); }
.bankc-mine__subj b { color: var(--brand); }

.bankc-rank {
  background: #fff;
  border: 1px solid var(--line);
  border-radius: 16px;
  padding: 18px 22px;
}
.bankc-rank__head { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; margin-bottom: 14px; }
.bankc-rank__head h2 { font-size: 18px; margin: 0; }
.bankc-rank__mine {
  padding: 10px 14px;
  margin-bottom: 12px;
  background: var(--brand-soft);
  border: 1px solid #d8e6fb;
  border-radius: 10px;
  font-size: 13.5px;
  color: var(--ink-2);
}
.bankc-rank__mine b { color: var(--brand); }
.bankc-rank__body { min-height: 60px; }
.chip-row { display: inline-flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.bankc-rank__list { margin: 0; padding: 0; list-style: none; display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 8px; }
.bankc-rank__row {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 9px 12px;
  border: 1px solid var(--line-2);
  border-radius: 10px;
  font-size: 13.5px;
}
.bankc-rank__row.is-me { border-color: var(--brand); background: var(--brand-soft); }
.bankc-rank__no {
  width: 24px; height: 24px; flex: none;
  display: grid; place-items: center;
  border-radius: 7px;
  background: var(--bg);
  color: var(--muted);
  font-size: 12px; font-weight: 700;
}
.bankc-rank__no.is-top { background: linear-gradient(135deg, #ffb547, #ff7a3d); color: #fff; }
.bankc-rank__name { flex: 1; font-weight: 600; color: var(--ink-2); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.bankc-rank__name b { color: var(--brand); }
.bankc-rank__stat { color: var(--muted); white-space: nowrap; }
.bankc-rank__rate { font-weight: 600; color: var(--ink-2); white-space: nowrap; }
.bankc-rank__rate.ok { color: var(--green); }

/* ===================== 第八轮 · 门户视频课 ===================== */
.video-tabs { display: flex; gap: 10px; flex-wrap: wrap; justify-content: center; margin: 26px 0 30px; }
.pvideo-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 18px; }
.pvideo-card { background: #fff; border: 1px solid var(--line); border-radius: 14px; overflow: hidden; cursor: pointer; transition: .18s; }
.pvideo-card:hover { transform: translateY(-3px); box-shadow: 0 10px 28px rgba(23, 62, 143, .12); border-color: #cfdcf5; }
.pvideo-card__cover { position: relative; aspect-ratio: 16/9; background: linear-gradient(135deg, #16264d, #1e56c8); overflow: hidden; }
.pvideo-card__cover img { width: 100%; height: 100%; object-fit: cover; display: block; }
.pvideo-card__play { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; color: rgba(255, 255, 255, .92); }
.pvideo-card__play svg { width: 46px; height: 46px; filter: drop-shadow(0 2px 8px rgba(0, 0, 0, .45)); }
.pvideo-card__dur { position: absolute; right: 8px; bottom: 8px; background: rgba(0, 0, 0, .65); color: #fff; font-size: 12px; padding: 1px 8px; border-radius: 6px; }
.pvideo-card__kind { position: absolute; left: 8px; top: 8px; background: rgba(255, 255, 255, .92); color: var(--brand); font-size: 12px; font-weight: 600; padding: 2px 10px; border-radius: 999px; }
.pvideo-card__body { padding: 14px 16px; }
.pvideo-card__body h3 { font-size: 15.5px; color: var(--ink); margin: 0 0 6px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pvideo-card__body p { font-size: 13px; color: var(--muted); margin: 0 0 8px; overflow: hidden; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; }
.pvideo-card__meta { font-size: 12.5px; color: var(--muted); }
/* 轻量视频播放弹层 */
.vplayer { position: fixed; inset: 0; z-index: 2000; display: flex; align-items: center; justify-content: center; padding: 20px; }
.vplayer__mask { position: absolute; inset: 0; background: rgba(10, 18, 38, .72); backdrop-filter: blur(3px); }
.vplayer__box { position: relative; width: min(860px, 96vw); background: #fff; border-radius: 14px; padding: 14px; box-shadow: 0 24px 60px rgba(0, 0, 0, .35); }
.vplayer__box video { width: 100%; border-radius: 10px; background: #000; max-height: 64vh; display: block; }
.vplayer__head { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 10px; }
.vplayer__head strong { font-size: 15.5px; color: var(--ink); }
.vplayer__close { border: none; background: var(--line); color: var(--ink-2); width: 30px; height: 30px; border-radius: 8px; font-size: 18px; cursor: pointer; line-height: 1; }
.vplayer__close:hover { background: #dfe6f4; }
.vplayer__intro { margin: 10px 2px 2px; font-size: 13px; color: var(--muted); }
@media (max-width: 720px) { .pvideo-grid { grid-template-columns: 1fr; } }

/* ---------- 题库中心：两级专业选择面板 + 主栏/侧栏布局（参考医学教育网） ---------- */
.bankc-picker {
  background: #fff;
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-xs);
  margin-bottom: 24px;
  overflow: hidden;
}
.bankc-picker__head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  flex-wrap: wrap;
  padding: 16px 20px;
  border-bottom: 1px solid var(--line-2);
  background: linear-gradient(90deg, #f4f8ff, #fff);
}
.bankc-picker__title { display: grid; gap: 3px; }
.bankc-picker__title b { font-size: 16px; color: var(--ink); }
.bankc-picker__title small { font-size: 12.5px; color: var(--muted); }
.bankc-picker__cur { display: inline-flex; align-items: center; gap: 10px; }
.bankc-picker__curlab {
  font-size: 12px;
  color: var(--brand);
  background: var(--brand-soft);
  border-radius: 999px;
  padding: 3px 10px;
  white-space: nowrap;
}
.bankc-picker__cur b { font-size: 14.5px; color: var(--ink); }
.bankc-picker__body {
  display: grid;
  grid-template-columns: 220px minmax(0, 1fr);
  min-height: 0;
}
.bankc-picker__side {
  background: #f6f8fc;
  border-right: 1px solid var(--line-2);
  padding: 8px 0;
  max-height: 320px;
  overflow-y: auto;
}
.bankc-picker__cat {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  width: 100%;
  border: none;
  background: transparent;
  padding: 11px 16px;
  font-size: 13.5px;
  font-weight: 600;
  color: var(--ink-2);
  cursor: pointer;
  text-align: left;
  white-space: nowrap;
  transition: background 0.15s ease, color 0.15s ease;
}
.bankc-picker__cat svg { width: 13px; height: 13px; flex: none; opacity: 0.45; }
.bankc-picker__cat:hover { color: var(--brand); background: rgba(14, 95, 216, 0.06); }
.bankc-picker__cat.is-active { background: #fff; color: var(--brand); font-weight: 700; box-shadow: inset 3px 0 0 var(--brand); }
.bankc-picker__cat.is-active svg { opacity: 1; }
.bankc-picker__main { padding: 16px 20px 18px; }
.bankc-picker__tip { padding: 40px 0; text-align: center; color: var(--muted); font-size: 13.5px; }
.bankc-picker__majhead {
  display: flex;
  align-items: baseline;
  gap: 10px;
  font-size: 15px;
  font-weight: 800;
  color: var(--ink);
  margin-bottom: 12px;
}
.bankc-picker__majhead small { font-size: 12.5px; font-weight: 400; color: var(--muted); }
.bankc-picker__chips { display: flex; flex-wrap: wrap; gap: 9px; }
.chip--lg { padding: 8px 16px; font-size: 13.5px; }
.bankc-needsel p { line-height: 1.9; }
.bankc-needsel .btn { margin-top: 12px; }

.bankc-layout {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 330px;
  gap: 24px;
  align-items: start;
}
.bankc-main { min-width: 0; display: grid; gap: 24px; }
.bankc-aside { min-width: 0; position: sticky; top: calc(var(--header-h) + 16px); }
.bankc-viewcard {
  background: var(--bg-soft, #f7f9fd);
  border-radius: var(--radius-lg);
  padding: 22px 24px 26px;
}
@media (max-width: 1024px) {
  .bankc-layout { grid-template-columns: 1fr; }
  .bankc-aside { position: static; }
  .bankc-picker__body { grid-template-columns: 1fr; }
  .bankc-picker__side {
    border-right: none;
    border-bottom: 1px solid var(--line-2);
    display: flex;
    overflow-x: auto;
    max-height: none;
    padding: 8px 10px;
    gap: 4px;
  }
  .bankc-picker__cat { width: auto; flex: none; }
  .bankc-picker__cat.is-active { box-shadow: inset 0 -3px 0 var(--brand); }
}

/* ---------- B1 共用备选答案题（医师资格考试题型） ---------- */
.q-card--b1 .q-card__stem {
  font-weight: 600;
  color: var(--brand-dark);
}
.q-b1__shared {
  border: 1px solid var(--brand-soft, #dbeafe);
  background: linear-gradient(135deg, #f4f8ff, #eef4ff);
  border-radius: var(--radius);
  padding: 13px 16px;
  margin-bottom: 16px;
}
.q-b1__shared-title {
  font-size: 12.5px;
  font-weight: 700;
  color: var(--brand);
  letter-spacing: 0.03em;
  margin-bottom: 9px;
}
.q-opts--inline {
  flex-direction: row;
  flex-wrap: wrap;
  gap: 8px 14px;
}
.q-b1__opt {
  display: inline-flex;
  align-items: flex-start;
  gap: 7px;
  font-size: 14px;
  line-height: 1.6;
  color: var(--ink-2);
  max-width: 100%;
}
.q-b1__opt > b {
  flex-shrink: 0;
  width: 22px;
  height: 22px;
  border-radius: 6px;
  background: #fff;
  border: 1px solid var(--brand);
  color: var(--brand);
  font-size: 12px;
  font-weight: 700;
  display: grid;
  place-items: center;
}
.q-b1__items {
  display: flex;
  flex-direction: column;
  gap: 14px;
}
.q-b1__item {
  padding: 13px 15px;
  border: 1px dashed var(--line);
  border-radius: var(--radius);
  background: var(--bg-soft, #fafbfe);
}
.q-b1__item.is-right { border-color: var(--green); background: #f2fbf7; }
.q-b1__item.is-wrong { border-color: var(--red); background: #fef6f6; }
.q-b1__stem {
  font-size: 14.5px;
  line-height: 1.75;
  color: var(--ink);
  margin-bottom: 10px;
}
.q-b1__item .q-opts {
  flex-direction: row;
  flex-wrap: wrap;
  gap: 8px;
}
.q-opt--sm {
  width: 40px;
  padding: 7px 0;
  justify-content: center;
  align-items: center;
}
.q-opt--sm > b { width: 22px; height: 22px; border-radius: 6px; }
.q-b1__verdict {
  font-size: 13.5px;
  color: var(--ink-2);
}
.q-b1__verdict b { color: var(--brand-dark); }

/* ---------- 实践技能题（分站得分点） ---------- */
.q-card--skill .q-card__stem {
  padding: 13px 16px;
  background: var(--bg-soft, #fafbfe);
  border-left: 3px solid var(--brand);
  border-radius: 8px;
  font-size: 14.5px;
  margin-bottom: 16px;
}
.q-skill__stations {
  display: flex;
  flex-direction: column;
  gap: 16px;
}
.q-skill__station {
  border: 1px solid var(--line);
  border-radius: var(--radius);
  overflow: hidden;
}
.q-skill__title {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 12px;
  padding: 11px 15px;
  background: var(--bg-soft, #f4f8ff);
  font-size: 14px;
  font-weight: 700;
  color: var(--ink);
}
.q-skill__title small {
  font-size: 12.5px;
  font-weight: 600;
  color: var(--brand);
}
.q-skill__items {
  display: flex;
  flex-direction: column;
}
.q-skill__item {
  display: flex;
  align-items: flex-start;
  gap: 11px;
  padding: 11px 15px;
  border-top: 1px solid var(--line-2, #eef1f6);
  cursor: pointer;
  transition: background 0.15s ease;
  font-size: 14px;
  line-height: 1.65;
  color: var(--ink-2);
}
.q-skill__item:hover { background: var(--brand-soft); }
.q-skill__item.is-checked { background: var(--brand-light, #e8f1ff); color: var(--brand-dark); font-weight: 600; }
.q-skill__item input {
  margin-top: 3px;
  width: 16px;
  height: 16px;
  accent-color: var(--brand);
  flex: none;
}
.q-skill__item small { color: var(--green); font-weight: 700; white-space: nowrap; }
.q-skill__rlist { list-style: none; margin: 0; padding: 0; }
.q-skill__rlist li {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 12px;
  padding: 10px 15px;
  border-top: 1px solid var(--line-2, #eef1f6);
  font-size: 14px;
  color: var(--ink-2);
}
.q-skill__rlist li.is-done { color: var(--green); font-weight: 600; }
.q-skill__rlist li em { font-style: normal; color: var(--muted); font-size: 12.5px; white-space: nowrap; }
.q-skill__rlist li.is-done em { color: var(--green); }

/* 结果页小调整 */
.q-b1__items--result,
.q-skill__stations--result { margin-top: 14px; }

/* ===================== 第十轮 · 优惠券（我的优惠券 / 领券中心 / 报名选券） ===================== */
.uc-tabs { display: flex; gap: 6px; }
.uc-tabs button { border: 1px solid var(--line); background: #fff; color: var(--muted); border-radius: 999px; padding: 4px 14px; font-size: 13px; cursor: pointer; }
.uc-tabs button.is-active { border-color: var(--brand); background: var(--brand-soft); color: var(--brand); font-weight: 600; }

.uc-coupon { display: flex; gap: 16px; align-items: center; border: 1px solid var(--line); border-radius: 12px; padding: 14px 16px; margin-bottom: 12px; background: #fff; position: relative; overflow: hidden; }
.uc-coupon::before { content: ''; position: absolute; left: 0; top: 0; bottom: 0; width: 4px; background: var(--brand); }
.uc-coupon.is-used { opacity: .62; }
.uc-coupon.is-used::before { background: var(--muted); }
.uc-coupon.is-expired { opacity: .5; }
.uc-coupon.is-expired::before { background: #c9ced6; }
.uc-coupon__amt { flex: 0 0 108px; text-align: center; color: var(--brand); border-right: 1px dashed var(--line); }
.uc-coupon__amt b { font-size: 30px; font-weight: 800; letter-spacing: -.5px; }
.uc-coupon__amt i { font-style: normal; font-size: 14px; font-weight: 700; }
.uc-coupon__amt small { display: block; font-size: 11.5px; color: var(--muted); margin-top: 2px; }
.uc-coupon.is-used .uc-coupon__amt, .uc-coupon.is-expired .uc-coupon__amt { color: var(--muted); }
.uc-coupon__info { flex: 1; display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.uc-coupon__info b { font-size: 15px; }
.uc-coupon__info small { font-size: 12.5px; color: var(--muted); }
.uc-coupon__code { font-family: ui-monospace, Menlo, Consolas, monospace; }
.uc-coupon__act { flex: 0 0 auto; }

.buy-sum { display: flex; justify-content: space-between; align-items: baseline; padding: 8px 0; border-bottom: 1px dashed var(--line); font-size: 14px; }
.buy-sum b { font-size: 16px; }
.buy-sum--total { border-bottom: none; margin-top: 4px; }
.buy-sum--total b { font-size: 24px; color: var(--brand); font-weight: 800; }
.buy-note { display: flex; gap: 8px; align-items: flex-start; background: var(--bg-soft, #f6f8fb); border-radius: 8px; padding: 10px 12px; font-size: 13px; color: var(--muted); }
.buy-note svg { width: 16px; height: 16px; flex: 0 0 16px; }
@media (max-width: 640px) {
  .uc-coupon { flex-wrap: wrap; gap: 10px; }
  .uc-coupon__amt { flex: 0 0 84px; border-right: none; }
  .uc-coupon__act { flex: 1 1 100%; }
}

/* ===================== 第十轮 · 用户中心 7 项增强（需求 8） ===================== */

/* 7) 每日一语 */
.uc-quote-card { position: relative; border-radius: var(--radius); padding: 20px 22px; margin-bottom: 16px; overflow: hidden;
  background: linear-gradient(120deg, #0e5fd8 0%, #2f7be8 46%, #0ea5a5 100%); color: #fff; box-shadow: var(--shadow); }
.uc-quote-card::after { content: ''; position: absolute; right: -46px; top: -56px; width: 190px; height: 190px; border-radius: 50%;
  background: rgba(255, 255, 255, 0.13); }
.uc-quote-card::before { content: ''; position: absolute; right: 36px; bottom: -74px; width: 140px; height: 140px; border-radius: 50%;
  background: rgba(255, 255, 255, 0.08); }
.uc-quote-card__badge { display: inline-flex; align-items: center; gap: 5px; font-size: 12px; font-weight: 600;
  background: rgba(255, 255, 255, 0.2); border: 1px solid rgba(255, 255, 255, 0.3); border-radius: 999px; padding: 3px 11px; }
.uc-quote-card__badge svg { width: 14px; height: 14px; }
.uc-quote-card__text { position: relative; margin: 12px 0 10px; font-size: 19px; line-height: 1.65; font-weight: 600; letter-spacing: .3px; }
.uc-quote-card__foot { position: relative; display: flex; justify-content: space-between; align-items: center; gap: 10px; font-size: 13px; opacity: .92; }
.uc-quote-card__foot em { font-style: normal; opacity: .9; }

/* 卡片内小节标题 */
.uc-sec-title { display: flex; align-items: center; gap: 6px; font-size: 13.5px; font-weight: 700; color: var(--ink-2);
  margin: 16px 0 10px; padding-left: 9px; border-left: 3px solid var(--brand); }
.uc-sec-title svg { width: 16px; height: 16px; color: var(--brand); }

/* 3) 做题排名 */
.uc-rank-hero { display: flex; align-items: center; gap: 16px; border: 1px solid var(--line); border-radius: 12px;
  padding: 16px 18px; background: linear-gradient(120deg, var(--brand-soft), #fff); }
.uc-rank-hero__main { flex: 1; min-width: 0; }
.uc-rank-hero__main small { display: block; font-size: 12.5px; color: var(--muted); }
.uc-rank-hero__main b { display: block; font-size: 28px; font-weight: 800; color: var(--brand); letter-spacing: -.5px; line-height: 1.35; }
.uc-rank-hero__main span { font-size: 12.5px; color: var(--muted); }
.uc-rank-hero__sub { flex: 0 0 auto; text-align: center; padding-left: 16px; border-left: 1px dashed var(--line); }
.uc-rank-hero__sub small { display: block; font-size: 12px; color: var(--muted); }
.uc-rank-hero__sub b { font-size: 22px; font-weight: 800; color: var(--ink); }

.uc-rank-table { display: flex; flex-direction: column; gap: 8px; }
.uc-rank-row { display: flex; align-items: center; gap: 12px; padding: 10px 13px; border: 1px solid var(--line-2);
  border-radius: 10px; background: #fff; font-size: 13.5px; }
.uc-rank-row__name { flex: 1; min-width: 0; font-weight: 600; color: var(--ink-2); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.uc-rank-row__rate { flex: 0 0 auto; font-weight: 700; color: var(--brand); }
.uc-rank-row__rate small { font-weight: 400; color: var(--muted-2); font-size: 11.5px; }
.uc-rank-row__rank { flex: 0 0 132px; text-align: right; color: var(--muted); font-size: 12.5px; }

/* 3) 历史成绩柱状图 */
.uc-bars { display: flex; align-items: flex-end; gap: 6px; height: 150px; padding: 10px 4px 0; overflow-x: auto; }
.uc-bars__col { flex: 1 0 22px; min-width: 22px; height: 100%; display: flex; flex-direction: column; justify-content: flex-end; align-items: center; gap: 6px; }
.uc-bars__col i { display: block; width: 100%; max-width: 26px; border-radius: 5px 5px 2px 2px;
  background: linear-gradient(180deg, var(--teal), var(--brand)); transition: height .35s ease; }
.uc-bars__col span { font-size: 10.5px; color: var(--muted-2); white-space: nowrap; }
.uc-bars__col:hover i { filter: brightness(1.08); }

/* 5) 可能认识的人 */
.uc-people-hint { display: flex; align-items: center; gap: 8px; font-size: 13px; color: var(--muted);
  background: var(--bg); border: 1px dashed var(--line); border-radius: 10px; padding: 9px 13px; margin-bottom: 14px; }
.uc-people-hint svg { width: 16px; height: 16px; flex: none; color: var(--brand); }
.uc-people { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 12px; }
.uc-person { display: flex; align-items: center; gap: 12px; border: 1px solid var(--line); border-radius: 12px;
  padding: 13px 15px; background: #fff; transition: border-color .18s, box-shadow .18s, transform .18s; }
.uc-person:hover { border-color: var(--brand); box-shadow: var(--shadow-sm); transform: translateY(-2px); }
.uc-person__avatar { flex: 0 0 46px; width: 46px; height: 46px; border-radius: 50%; overflow: hidden;
  display: flex; align-items: center; justify-content: center; font-weight: 700; font-size: 17px; color: #fff;
  background: linear-gradient(135deg, var(--brand), var(--teal)); }
.uc-person__avatar img { width: 100%; height: 100%; object-fit: cover; display: block; }
.uc-person__info { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 3px; }
.uc-person__info b { font-size: 14.5px; color: var(--ink); }
.uc-person__info > span { font-size: 12.5px; color: var(--muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.uc-person__reasons { display: flex; flex-wrap: wrap; gap: 5px; margin-top: 2px; }
.uc-person__reasons em { font-style: normal; font-size: 11.5px; color: var(--brand); background: var(--brand-soft);
  border-radius: 999px; padding: 1px 8px; }
.uc-person__score { flex: 0 0 auto; text-align: center; padding-left: 12px; border-left: 1px dashed var(--line); }
.uc-person__score b { display: block; font-size: 20px; font-weight: 800; color: var(--orange); line-height: 1.3; }
.uc-person__score small { font-size: 11px; color: var(--muted); }

/* 6) 缘分匹配 */
.uc-dating-hero { display: flex; align-items: center; justify-content: space-between; gap: 16px; flex-wrap: wrap;
  border-radius: var(--radius); padding: 18px 20px; margin-bottom: 16px; color: #fff;
  background: linear-gradient(120deg, #7c5cfc 0%, #b25cf0 52%, #ff7a9c 100%); box-shadow: var(--shadow); }
.uc-dating-hero__me { display: flex; align-items: center; gap: 12px; }
.uc-dating-hero__me b { display: block; font-size: 16px; }
.uc-dating-hero__me small { font-size: 12.5px; opacity: .9; }
.uc-dating-hero__tags { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; }
.uc-dating-hero__tags em { font-style: normal; font-size: 12px; background: rgba(255, 255, 255, 0.22);
  border: 1px solid rgba(255, 255, 255, 0.32); border-radius: 999px; padding: 2px 10px; }
.uc-dating-hero__tags span { font-size: 12.5px; opacity: .88; }

/* 兴趣 / 求偶标签 chips */
.uc-chips { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 4px; }
.uc-chip { border: 1px solid var(--line); background: #fff; color: var(--muted); border-radius: 999px;
  padding: 5px 13px; font-size: 13px; cursor: pointer; transition: all .16s; font-family: inherit; }
.uc-chip:hover { border-color: var(--brand); color: var(--brand); }
.uc-chip.is-on { border-color: var(--brand); background: var(--brand-soft); color: var(--brand); font-weight: 600; }

/* 2) 简历 · 头像 */
.uc-avatar-row { display: flex; align-items: center; gap: 16px; padding: 4px 0 16px; border-bottom: 1px dashed var(--line); margin-bottom: 16px; }
.uc-avatar-row > div:nth-child(2) { display: flex; flex-direction: column; gap: 3px; }
.uc-avatar-row b { font-size: 14px; }
.uc-avatar-row small { font-size: 12.5px; color: var(--muted); }
.uc-avatar { flex: 0 0 76px; width: 76px; height: 76px; border-radius: 50%; overflow: hidden; cursor: pointer;
  display: flex; align-items: center; justify-content: center; background: var(--brand-soft); color: var(--brand);
  border: 2px solid var(--line); }
.uc-avatar img { width: 100%; height: 100%; object-fit: cover; display: block; }
.uc-avatar svg { width: 32px; height: 32px; }

/* 2) 简历附件 */
.uc-attaches { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 10px; }
.uc-attach { display: flex; align-items: center; gap: 10px; border: 1px solid var(--line); border-radius: 10px; padding: 10px 12px; background: #fff; }
.uc-attach__icon { flex: 0 0 34px; width: 34px; height: 34px; border-radius: 8px; background: var(--brand-soft); color: var(--brand);
  display: flex; align-items: center; justify-content: center; }
.uc-attach__icon svg { width: 17px; height: 17px; }
.uc-attach__info { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.uc-attach__info a { font-size: 13.5px; font-weight: 600; color: var(--ink-2); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.uc-attach__info a:hover { color: var(--brand); }
.uc-attach__info small { font-size: 11.5px; color: var(--muted-2); }

/* 2) 面试通知 */
.uc-interview { border: 1px solid var(--line); border-left: 3px solid var(--brand); border-radius: 10px; padding: 12px 14px; margin-bottom: 10px; background: #fff; }
.uc-interview__head { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.uc-interview__head b { font-size: 14.5px; color: var(--ink); }
.uc-interview__meta { display: flex; align-items: center; gap: 4px; flex-wrap: wrap; font-size: 12.5px; color: var(--muted); margin-top: 6px; }
.uc-interview__meta svg { width: 14px; height: 14px; }
.uc-interview__body { margin-top: 8px; font-size: 13px; color: var(--ink-2); background: var(--bg); border-radius: 8px; padding: 8px 11px; }

/* 1) 考试项目级联 */
.uc-cascade { display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 8px; }
.uc-cascade select { flex: 1 1 190px; }

@media (max-width: 640px) {
  .uc-quote-card__text { font-size: 16.5px; }
  .uc-rank-hero { flex-wrap: wrap; }
  .uc-rank-hero__sub { padding-left: 0; border-left: none; }
  .uc-rank-row__rank { flex-basis: 96px; }
  .uc-people { grid-template-columns: 1fr; }
  .uc-avatar-row { flex-wrap: wrap; }
  .uc-attaches { grid-template-columns: 1fr; }
  .uc-cascade select { flex-basis: 100%; }
}

/* 用户中心 · 列表行内图标按钮（删除附件 / 删除应聘记录） */
.icon-btn { display: inline-flex; align-items: center; justify-content: center; width: 30px; height: 30px;
  flex: none; padding: 0; border: 1px solid var(--line); background: #fff; border-radius: 8px;
  color: var(--muted); cursor: pointer; transition: color .16s, border-color .16s, background .16s; }
.icon-btn:hover { color: var(--red); border-color: var(--red); background: #fdf0f0; }
.icon-btn svg { width: 15px; height: 15px; }
