/* ============================================
   TEXT EDITOR — Compact overlay
   ============================================ */

.text-editor {
  margin-top: 10px;
  padding: 8px 10px;
  border-radius: 12px;
  background: rgba(255,255,255,0.025);
  border: 1px solid rgba(255,255,255,0.04);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
}

.text-editor-input {
  width: 100%;
  padding: 8px 10px;
  border-radius: 8px;
  background: rgba(255,255,255,0.04);
  border: 1px solid rgba(255,255,255,0.05);
  color: #fff;
  font-size: 0.8rem;
  margin-bottom: 6px;
}

.text-editor-input::placeholder { color: rgba(255,255,255,0.18); }
.text-editor-input:focus {
  border-color: rgba(255,255,255,0.12);
  background: rgba(255,255,255,0.06);
}

.editor-strip {
  display: flex; align-items: center; gap: 4px;
  margin-bottom: 6px;
}

.editor-pill {
  padding: 4px 8px;
  border-radius: 6px;
  font-size: 0.62rem;
  font-weight: 500;
  color: rgba(255,255,255,0.4);
  background: rgba(255,255,255,0.03);
  border: 1px solid rgba(255,255,255,0.03);
  cursor: pointer;
  transition: background-color 0.2s, border-color 0.2s, color 0.2s, transform 0.2s, box-shadow 0.2s, opacity 0.2s;
  white-space: nowrap;
  line-height: 1;
}

.editor-pill.active {
  color: #fff;
  background: rgba(255,255,255,0.1);
  border-color: rgba(255,255,255,0.12);
}

.editor-pill:active { transform: scale(0.95); }

.editor-color-dot {
  display: inline-block; width: 12px; height: 12px;
  border-radius: 50%; margin-right: 2px;
  vertical-align: middle; border: 1px solid rgba(255,255,255,0.2);
}

.editor-apply {
  width: 100%;
  padding: 8px;
  border-radius: 8px;
  background: rgba(255,255,255,0.07);
  border: 1px solid rgba(255,255,255,0.06);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  color: #fff;
  font-size: 0.78rem;
  font-weight: 600;
  text-align: center;
  cursor: pointer;
  transition: background-color 0.2s, border-color 0.2s, color 0.2s, transform 0.2s, box-shadow 0.2s, opacity 0.2s;
}

.editor-apply:active {
  background: rgba(255,255,255,0.13);
  transform: scale(0.97);
}

.btn-icon-inline {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 14px;
  height: 14px;
  margin-right: 4px;
  vertical-align: -2px;
}
.btn-icon-inline .brand-svg-icon,
.editor-apply .brand-svg-icon {
  display: block;
  width: 14px;
  height: 14px;
  color: currentColor;
}

.result-canvas-wrap {
  position: relative;
  width: 80%;
  margin: 0 auto;
  border-radius: var(--radius-lg);
  overflow: hidden;
}

.result-canvas-wrap img,
.result-canvas-wrap canvas {
  width: 100%;
  display: block;
}

.aiplay-watermark {
  position: absolute;
  right: 10px;
  bottom: 10px;
  z-index: 3;
  color: rgba(255, 255, 255, 0.92);
  font-size: 0.66rem;
  font-weight: 800;
  letter-spacing: 0.04em;
  line-height: 1;
  pointer-events: none;
  user-select: none;
  /* 白字黑描边 */
  text-shadow:
    -1px -1px 0 #000, 1px -1px 0 #000,
    -1px 1px 0 #000, 1px 1px 0 #000,
    0 0 4px rgba(0,0,0,0.55);
}

.result-diag-watermark {
  position: absolute;
  inset: 0;
  z-index: 4;
  display: flex;
  align-items: center;
  justify-content: center;
  pointer-events: none;
  user-select: none;
  overflow: hidden;
  background:
    repeating-linear-gradient(
      -38deg,
      transparent 0,
      transparent 78px,
      rgba(255,255,255,0.34) 78px,
      rgba(255,255,255,0.34) 168px
    );
}
.result-diag-watermark::after {
  content: 'AIPlay.ink';
  position: absolute;
  color: rgba(255,255,255,0.5);
  font-size: clamp(1.1rem, 6vw, 2.6rem);
  font-weight: 900;
  letter-spacing: 0.06em;
  white-space: nowrap;
  transform: rotate(-38deg);
  text-shadow: -1px -1px 0 #000, 1px -1px 0 #000, -1px 1px 0 #000, 1px 1px 0 #000;
}

.canvas-hint {
  text-align: center;
  font-size: 0.6rem;
  color: rgba(255,255,255,0.15);
  margin-top: 4px;
}

/* ============================================
   TESTS PAGE — AI + Quiz
   ============================================ */

.test-page { padding: 0; }

/* ── 电脑端：测试板块突破 #app 480px 限制，全宽展示 ── */
@media (min-width: 769px) {
  #app:has(.test-page) {
    max-width: none;
  }

  .test-page {
    max-width: 1200px;
    margin: 0 auto;
    padding: 0 24px;
  }
}

/* ── 测试版块 Hero 头部：渐变光晕 + 图标 + 标题 + 副标题 ── */
.test-hero {
  position: relative;
  text-align: center;
  padding: 26px 14px 22px;
  overflow: hidden;
  border-radius: 0 0 26px 26px;
}
.test-hero-glow {
  position: absolute; top: -80px; left: 50%; transform: translateX(-50%);
  width: 360px; height: 360px; pointer-events: none; z-index: 0;
  background: radial-gradient(circle, rgba(140,108,255,0.30) 0%, rgba(255,107,157,0.16) 45%, transparent 72%);
  filter: blur(8px);
}
.test-hero-inner { position: relative; z-index: 1; }
.test-hero-icon {
  width: 68px; height: 68px; margin: 0 auto 12px; border-radius: 22px;
  display: flex; align-items: center; justify-content: center; font-size: 2rem;
  background: linear-gradient(145deg, rgba(140,108,255,0.20), rgba(255,107,157,0.20));
  border: 1px solid rgba(255,255,255,0.13);
  box-shadow: 0 10px 30px rgba(140,108,255,0.25), inset 0 1px 0 rgba(255,255,255,0.14);
  animation: bpFloat 3.2s ease-in-out infinite;
}
.test-hero-title {
  font-size: 1.5rem; font-weight: 900; letter-spacing: 0.01em; margin: 0;
  background: linear-gradient(120deg, #fff 15%, #b9a6ff 55%, #ff9ec4 95%);
  -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent;
}
.test-hero-sub {
  font-size: 0.84rem; color: rgba(255,255,255,0.55); margin: 8px auto 0;
  line-height: 1.7; max-width: 320px;
}

/* Test cards - vertical list */
/* ── 三列卡片网格（宽屏四列）── */
.test-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 10px;
  padding: 0 14px 28px;
}
@media (min-width: 640px) {
  .test-grid { grid-template-columns: repeat(4, 1fr); }
}

/* ── 电脑端优化：更大容器 + 更多列 + 更宽卡片 ── */
@media (min-width: 769px) {
  .test-page {
    max-width: 1200px;
    margin: 0 auto;
    padding: 0 24px;
  }

  .test-hero {
    padding: 40px 32px 36px;
    border-radius: 0 0 32px 32px;
  }

  .test-hero-glow {
    width: 600px;
    height: 600px;
  }

  .test-hero-title {
    font-size: 2rem;
  }

  .test-hero-sub {
    font-size: 1rem;
    max-width: 480px;
  }

  .test-grid {
    grid-template-columns: repeat(5, 1fr);
    gap: 16px;
    padding: 0 24px 48px;
  }

  body:not(.cms-mode) .test-card {
    border-radius: 20px;
    transition: transform 0.28s cubic-bezier(0.22,1,0.36,1), border-color 0.28s, box-shadow 0.28s, background 0.28s;
  }

  body:not(.cms-mode) .test-card:hover {
    transform: translateY(-4px);
    box-shadow: 0 16px 40px rgba(0,0,0,0.4);
  }

  .test-card-body {
    padding: 12px 14px 6px;
  }

  .test-card-name {
    font-size: 0.92rem;
    line-height: 1.4;
  }

  .test-card-desc {
    font-size: 0.72rem;
    margin-top: 4px;
  }

  .test-card-uses {
    font-size: 0.68rem;
    margin-top: 6px;
  }

  .test-card-cover {
    border-radius: 20px 20px 0 0;
  }

  .test-card-cover-icon {
    width: 32px;
    height: 32px;
    font-size: 1rem;
    left: 12px;
    bottom: 8px;
  }

  .test-card-cover .test-card-tag {
    padding: 3px 10px;
    font-size: 0.6rem;
  }
}

/* 超大屏幕（1440px以上） */
@media (min-width: 1440px) {
  .test-page {
    max-width: 1400px;
  }

  .test-grid {
    grid-template-columns: repeat(6, 1fr);
    gap: 20px;
    padding: 0 32px 60px;
  }

  .test-hero-title {
    font-size: 2.2rem;
  }

  .test-hero-sub {
    font-size: 1.1rem;
  }
}

/* ── 电脑端：结果页布局优化 ── */
@media (min-width: 769px) {
  /* 结果页内容居中，最大宽度 800px */
  .quiz-page {
    max-width: 800px;
    margin: 0 auto;
    padding: 0 32px;
  }

  /* MBTI/身高结果页 Hero 区域优化 */
  .mbti-result {
    min-height: auto;
  }

  .mbti-hero {
    height: 400px;
    border-radius: 0 0 32px 32px;
    background-size: cover;
    background-position: center center;
  }

  .mbti-hero-content {
    padding: 28px 36px 36px;
  }

  .mbti-hero-name {
    font-size: 3rem;
  }

  .mbti-hero-sub {
    font-size: 1rem;
  }

  .mbti-type-badge {
    font-size: 0.88rem;
    padding: 6px 18px;
  }

  /* 面板样式优化 */
  .beauty-panel {
    padding: 20px 24px;
    border-radius: 20px;
  }

  .beauty-panel-title {
    font-size: 1.1rem;
    margin-bottom: 16px;
  }

  /* 维度条优化 */
  .beauty-dim {
    margin-bottom: 14px;
  }

  .beauty-dim-bar {
    height: 10px;
    border-radius: 5px;
  }

  /* 操作按钮优化 */
  .beauty-actions {
    gap: 12px;
  }

  .beauty-btn {
    padding: 14px 28px;
    font-size: 0.95rem;
    border-radius: 14px;
  }

  /* 卡片轮播优化 */
  .beauty-cards-carousel {
    margin: 0 -8px;
  }

  /* 身高预测结果页特殊优化 */
  .hp-num {
    font-size: 5rem;
  }

  .hp-range {
    height: 12px;
    border-radius: 6px;
  }

  .hp-range-scale span {
    font-size: 0.85rem;
  }

  /* 免责声明优化 */
  .quiz-page > div > div > div:last-child {
    font-size: 0.78rem;
    padding: 4px 12px;
  }
}

/* 超大屏幕（1440px以上）结果页优化 */
@media (min-width: 1440px) {
  .quiz-page {
    max-width: 900px;
  }

  .mbti-hero {
    height: 450px;
  }

  .mbti-hero-name {
    font-size: 3.5rem;
  }

  .hp-num {
    font-size: 6rem;
  }
}

/* 测试卡片（深色玻璃风）：body:not(.cms-mode) 前缀与 brand-v1 同权重，且本文件后加载，确保不被 brand-v1 的浅色卡片规则覆盖 */
body:not(.cms-mode) .test-card {
  position: relative;
  border-radius: 18px;
  padding: 0;
  background: rgba(255,255,255,0.035);
  border: 1px solid rgba(255,255,255,0.07);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  cursor: pointer;
  overflow: hidden;
  transition: transform 0.22s cubic-bezier(0.22,1,0.36,1), border-color 0.22s, box-shadow 0.22s, background 0.22s;
  display: flex;
  flex-direction: column;
  gap: 0;
  animation: testCardIn 0.5s cubic-bezier(0.22,1,0.36,1) both;
}
@keyframes testCardIn {
  from { opacity: 0; transform: translateY(14px); }
  to { opacity: 1; transform: translateY(0); }
}
/* 分类主题色：AI 蓝紫 / Quiz 粉橙 */
.test-card-ai::before {
  content: ''; position: absolute; inset: 0; z-index: 0; pointer-events: none;
  background:
    radial-gradient(120% 70% at 50% -20%, rgba(160,107,255,0.16), transparent 62%),
    radial-gradient(120% 60% at 50% 120%, rgba(77,216,255,0.1), transparent 60%);
}
.test-card-quiz::before {
  content: ''; position: absolute; inset: 0; z-index: 0; pointer-events: none;
  background:
    radial-gradient(120% 70% at 50% -20%, rgba(255,107,157,0.14), transparent 62%),
    radial-gradient(120% 60% at 50% 120%, rgba(255,209,102,0.08), transparent 60%);
}
/* 悬浮辉光 */
.test-card-glow {
  position: absolute; top: -40px; right: -40px; width: 110px; height: 110px;
  border-radius: 50%; pointer-events: none; opacity: 0;
  background: radial-gradient(circle, rgba(255,255,255,0.14), transparent 70%);
  transition: opacity 0.25s;
  z-index: 0;
}
.test-card:hover {
  border-color: rgba(255,255,255,0.2);
  box-shadow: 0 12px 34px rgba(0,0,0,0.35);
  transform: translateY(-2px);
}
.test-card:hover .test-card-glow { opacity: 1; }
.test-card:active { transform: scale(0.97); }

/* 卡片内容全部在辉光之上 */
.test-card-body, .test-card-right { position: relative; z-index: 1; }

/* 正文区 */
.test-card-body {
  position: relative; z-index: 1;
  padding: 8px 9px 3px;
  /* 深色玻璃底：与封面图统一深色调，避免白卡黑字 */
  background: rgba(10, 10, 25, 0.55);
}
/* 名称 / 描述 / 用量：一律白字系（覆盖浅色主题的深色文字继承） */
.test-card-name {
  font-size: 0.82rem;
  font-weight: 700;
  color: #fff;
  line-height: 1.3;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.test-card-desc {
  font-size: 0.62rem;
  font-weight: 400;
  color: rgba(255, 255, 255, 0.55);
  line-height: 1.4;
  margin-top: 2px;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.test-card-uses {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  margin-top: 4px;
  font-size: 0.6rem;
  font-weight: 600;
  color: rgba(255, 255, 255, 0.42);
}
/* 用量图标：SVG 描边图标替代 emoji，与整体线条风格统一 */
.test-card-uses-ico {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 13px;
  height: 13px;
  opacity: 0.85;
}
.test-card-uses-ico svg {
  display: block;
  width: 100%;
  height: 100%;
  color: currentColor;
}

/* ── 封面图模式（3:4 竖图）── */
.test-card-cover {
  position: relative;
  width: 100%;
  aspect-ratio: 3/4;
  overflow: hidden;
  border-radius: 18px 18px 0 0;
  background: rgba(255,255,255,0.04);
}
.test-card-cover-img {
  position: absolute; inset: 0;
  width: 100%; height: 100%;
  object-fit: cover;
  object-position: center center;
  transition: transform 0.5s cubic-bezier(0.22,1,0.36,1);
}
.test-card:hover .test-card-cover-img { transform: scale(1.06); }
.test-card-cover-shade {
  position: absolute; inset: 0;
  background: linear-gradient(to top,
    rgba(10,10,25,0.92) 0%,
    rgba(10,10,25,0.55) 38%,
    rgba(10,10,25,0.18) 62%,
    rgba(10,10,25,0.05) 100%);
  z-index: 1;
}
.test-card-cover-icon {
  position: absolute; left: 8px; bottom: 6px; z-index: 2;
  width: 26px; height: 26px;
  display: flex; align-items: center; justify-content: center;
  font-size: 0.85rem;
  border-radius: 8px;
  background: rgba(10,10,25,0.45);
  border: 1px solid rgba(255,255,255,0.16);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  box-shadow: 0 2px 10px rgba(0,0,0,0.35);
}
.test-card-cover .test-card-tag {
  position: absolute; top: 8px; right: 8px; z-index: 2;
  padding: 2px 7px;
  font-size: 0.5rem; font-weight: 800; letter-spacing: 0.05em;
  background: rgba(10,10,25,0.5);
  border: 1px solid rgba(255,255,255,0.18);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
}

.tag-ai { background: var(--accent-soft); color: var(--accent); }
.tag-quiz { background: rgba(0,217,255,0.1); color: rgba(0,217,255,0.8); }
.tag-hot { background: rgba(255,45,120,0.1); color: rgba(255,45,120,0.8); }

/* Quiz flow — v2：专属配色 + 选项卡片 + 交互反馈 */
.quiz-page { --qc1: #a06bff; --qc2: #ff6b9d; }
.quiz-page[data-quiz="mbti"]        { --qc1: #8b7bff; --qc2: #6c4df0; }
.quiz-page[data-quiz="personality"] { --qc1: #2fd4a2; --qc2: #0e8f74; }
.quiz-page[data-quiz="bmi"]         { --qc1: #8fd14f; --qc2: #3f9e3f; }
.quiz-page[data-quiz="love"]        { --qc1: #ff5f9e; --qc2: #e62e7a; }
.quiz-page[data-quiz="career"]      { --qc1: #45a3f5; --qc2: #1e5fc4; }
.quiz-page[data-quiz="color"]       { --qc1: #ffb020; --qc2: #f57c00; }

/* ═══ 测试介绍页 ═══ */
.quiz-intro-page {
  --qc1: #a06bff; --qc2: #ff6b9d;
  padding-inline: 16px;
  padding-bottom: 84px; /* 给 fixed CTA 留出空间 */
}
.quiz-intro-page[data-quiz="mbti"]        { --qc1: #8b7bff; --qc2: #6c4df0; }
.quiz-intro-page[data-quiz="personality"] { --qc1: #2fd4a2; --qc2: #0e8f74; }
.quiz-intro-page[data-quiz="bmi"]         { --qc1: #8fd14f; --qc2: #3f9e3f; }
.quiz-intro-page[data-quiz="love"]        { --qc1: #ff5f9e; --qc2: #e62e7a; }
.quiz-intro-page[data-quiz="career"]      { --qc1: #45a3f5; --qc2: #1e5fc4; }
.quiz-intro-page[data-quiz="color"]       { --qc1: #ffb020; --qc2: #f57c00; }
.quiz-intro-page[data-quiz="loyalty"]     { --qc1: #ff4d6d; --qc2: #c9184a; }
.quiz-intro-page[data-quiz="beauty"]      { --qc1: #ff6b9d; --qc2: #a06bff; }
.quiz-intro-page[data-quiz="hairstyle"]   { --qc1: #ff8a80; --qc2: #ff5e78; } /* 玫瑰金：与豆包图标组同色系 */
.quiz-intro-page[data-quiz="faceshape"]   { --qc1: #4dd0e1; --qc2: #0288d1; } /* 青蓝：与豆包图标组同色系 */
.quiz-intro-page[data-quiz="palm"]        { --qc1: #ffc26f; --qc2: #d97706; } /* 金琥珀：与豆包图标组同色系 */
.quiz-intro-page[data-quiz="lookalike"]   { --qc1: #ffd166; --qc2: #b8860b; } /* 画廊金 */
.quiz-intro-page[data-quiz="anxiety"]     { --qc1: #7e96ff; --qc2: #4b56c8; } /* 蓝紫：与焦虑自测配图同色系 */
/* 固定 CTA 移出 .quiz-intro-page 后需自行携带主题色变量（否则按钮渐变失效变透明） */
.quiz-intro-cta-wrap { --qc1: #a06bff; --qc2: #ff6b9d; }
.quiz-intro-cta-wrap[data-quiz="mbti"]        { --qc1: #8b7bff; --qc2: #6c4df0; }
.quiz-intro-cta-wrap[data-quiz="personality"] { --qc1: #2fd4a2; --qc2: #0e8f74; }
.quiz-intro-cta-wrap[data-quiz="bmi"]         { --qc1: #8fd14f; --qc2: #3f9e3f; }
.quiz-intro-cta-wrap[data-quiz="love"]        { --qc1: #ff5f9e; --qc2: #e62e7a; }
.quiz-intro-cta-wrap[data-quiz="career"]      { --qc1: #45a3f5; --qc2: #1e5fc4; }
.quiz-intro-cta-wrap[data-quiz="color"]       { --qc1: #ffb020; --qc2: #f57c00; }
.quiz-intro-cta-wrap[data-quiz="loyalty"]     { --qc1: #ff4d6d; --qc2: #c9184a; }
.quiz-intro-cta-wrap[data-quiz="beauty"]      { --qc1: #ff6b9d; --qc2: #a06bff; }
.quiz-intro-cta-wrap[data-quiz="hairstyle"]   { --qc1: #ff8a80; --qc2: #ff5e78; } /* 玫瑰金 */
.quiz-intro-cta-wrap[data-quiz="faceshape"]   { --qc1: #4dd0e1; --qc2: #0288d1; } /* 青蓝 */
.quiz-intro-cta-wrap[data-quiz="palm"]        { --qc1: #ffc26f; --qc2: #d97706; } /* 金琥珀 */
.quiz-intro-cta-wrap[data-quiz="lookalike"]   { --qc1: #ffd166; --qc2: #b8860b; } /* 画廊金 */
.quiz-intro-cta-wrap[data-quiz="anxiety"]     { --qc1: #7e96ff; --qc2: #4b56c8; } /* 蓝紫 */
.quiz-intro-hero {
  position: relative; text-align: center;
  padding: 16px 16px 10px; overflow: hidden;
  border-radius: 0 0 26px 26px;
}
/* 有封面图时：背景图 + 深色渐变遮罩 + 文字提亮
   手机端固定 4:3 比例（介绍页横幅图按 1024x768 生成）
   桌面宽屏用固定高度，避免 4:3 随宽度无限放大占满首屏 */
.quiz-intro-hero.has-cover {
  background-size: cover; background-position: center;
  display: flex; flex-direction: column; justify-content: flex-end;
  padding: 16px;
  border-radius: 0 0 26px 26px;
  min-height: 0;
}
@media (max-width: 768px) {
  .quiz-intro-hero.has-cover {
    aspect-ratio: 4 / 3;
    width: 100%;
  }
}
@media (min-width: 769px) {
  .quiz-intro-hero.has-cover {
    height: 320px;
  }
}
.quiz-intro-cover-shade {
  position: absolute; inset: 0; z-index: 0;
  background: linear-gradient(180deg, rgba(10,10,20,0.25) 0%, rgba(10,10,20,0.55) 55%, rgba(10,10,20,0.92) 100%);
  pointer-events: none;
}
.quiz-intro-hero.has-cover .quiz-intro-title,
.quiz-intro-hero.has-cover .quiz-intro-desc { position: relative; z-index: 1; text-shadow: 0 2px 12px rgba(0,0,0,0.55); }
.quiz-intro-hero.has-cover .quiz-intro-desc { color: rgba(255,255,255,0.82); }
.quiz-intro-glow {
  position: absolute; top: -80px; left: 50%; transform: translateX(-50%);
  width: 300px; height: 300px; border-radius: 50%;
  background: radial-gradient(circle, color-mix(in srgb, var(--qc1) 28%, transparent), transparent 70%);
  filter: blur(30px); pointer-events: none;
}
.quiz-intro-icon {
  position: relative;
  width: 64px; height: 64px; margin: 0 auto 12px;
  display: flex; align-items: center; justify-content: center;
  font-size: 1.9rem; border-radius: 20px;
  background: linear-gradient(145deg, color-mix(in srgb, var(--qc1) 22%, transparent), color-mix(in srgb, var(--qc2) 18%, transparent));
  border: 1px solid color-mix(in srgb, var(--qc1) 35%, transparent);
  box-shadow: 0 8px 30px color-mix(in srgb, var(--qc1) 25%, transparent);
  animation: bpFloat 3.2s ease-in-out infinite;
}
.quiz-intro-title {
  position: relative;
  font-size: 1.45rem; font-weight: 900; letter-spacing: 0.01em;
  background: linear-gradient(120deg, #fff 15%, var(--qc1) 55%, var(--qc2) 95%);
  -webkit-background-clip: text; background-clip: text;
  -webkit-text-fill-color: transparent;
}
.quiz-intro-desc {
  position: relative;
  font-size: 0.86rem; color: rgba(255,255,255,0.55);
  margin: 10px auto 0; line-height: 1.7; max-width: 320px;
}
.quiz-intro-meta {
  display: flex; gap: 10px; justify-content: center;
  margin: 22px 0 14px;
}
.quiz-intro-meta-item {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 7px 14px; border-radius: 999px;
  font-size: 0.78rem; font-weight: 700; color: rgba(255,255,255,0.75);
  background: rgba(255,255,255,0.05);
  border: 1px solid rgba(255,255,255,0.09);
}
.quiz-intro-meta-ico { font-size: 0.9rem; }
.quiz-intro-tip {
  text-align: center; font-size: 0.75rem;
  color: rgba(255,255,255,0.4); margin-bottom: 26px;
}
/* 开始测试按钮：固定在屏幕底部（bottom-nav 上方），始终可见 */
.quiz-intro-cta-wrap {
  position: fixed;
  left: 50%;
  transform: translateX(-50%);
  bottom: calc(var(--nav-height, 60px) + env(safe-area-inset-bottom, 0px) + 10px);
  width: 100%;
  max-width: var(--max-width, 640px);
  padding: 0 16px;
  z-index: 55;
  pointer-events: none;
}
.quiz-intro-cta-wrap .quiz-intro-start { pointer-events: auto; }
.quiz-intro-start {
  display: block; width: 100%; max-width: 320px; margin: 0 auto;
  padding: 15px 0; border: none; border-radius: 16px;
  font-size: 1rem; font-weight: 800; color: #fff; cursor: pointer;
  background: linear-gradient(135deg, var(--qc1), var(--qc2));
  box-shadow: 0 10px 30px color-mix(in srgb, var(--qc1) 40%, transparent);
  transition: transform 0.18s ease, box-shadow 0.18s ease;
}
.quiz-intro-start:hover { transform: translateY(-1px); box-shadow: 0 14px 36px color-mix(in srgb, var(--qc1) 50%, transparent); }
.quiz-intro-start:active { transform: scale(0.97); }

/* ═══ 介绍页增强：亮点卡片 + 玩法步骤 ═══ */
.quiz-intro-features {
  display: flex; flex-direction: column; gap: 8px;
  margin: 10px 0 12px;
}
.quiz-intro-feature {
  display: flex; align-items: flex-start; gap: 10px;
  padding: 10px 12px; border-radius: 14px;
  background: rgba(255,255,255,0.045);
  border: 1px solid rgba(255,255,255,0.08);
}
.quiz-intro-feature-ico {
  flex-shrink: 0; width: 38px; height: 38px;
  display: flex; align-items: center; justify-content: center;
  font-size: 1.2rem; border-radius: 12px;
  background: linear-gradient(145deg, color-mix(in srgb, var(--qc1) 22%, transparent), color-mix(in srgb, var(--qc2) 16%, transparent));
  border: 1px solid color-mix(in srgb, var(--qc1) 30%, transparent);
}
/* 豆包专属图标：占满容器、圆角同容器、无背景边框（图片自带徽章设计） */
.quiz-intro-feature-ico-img {
  background: transparent;
  border: none;
  padding: 0;
  overflow: hidden;
  box-shadow: 0 4px 14px color-mix(in srgb, var(--qc1) 35%, transparent);
}
.quiz-intro-feature-ico-img img {
  width: 100%; height: 100%; object-fit: cover; border-radius: 12px;
  display: block;
}
/* 图片正常时隐藏回退 emoji（仅 onerror 时才显示） */
.quiz-intro-feature-ico-img { font-size: 0; }
.quiz-intro-feature-ico-img.ico-fallback { font-size: 1.2rem; }
/* 图片加载失败：隐藏 img 显示回退 emoji */
.quiz-intro-feature-ico.ico-fallback {
  background: linear-gradient(145deg, color-mix(in srgb, var(--qc1) 22%, transparent), color-mix(in srgb, var(--qc2) 16%, transparent));
  border: 1px solid color-mix(in srgb, var(--qc1) 30%, transparent);
}
.quiz-intro-feature-body { min-width: 0; }
.quiz-intro-feature-title {
  font-size: 0.9rem; font-weight: 800; color: rgba(255,255,255,0.92);
}
.quiz-intro-feature-desc {
  font-size: 0.78rem; color: rgba(255,255,255,0.5);
  line-height: 1.55; margin-top: 2px;
}
.quiz-intro-steps {
  margin-bottom: 12px;
  padding: 12px 14px 6px;
  border-radius: 14px;
  background: rgba(255,255,255,0.03);
  border: 1px dashed rgba(255,255,255,0.10);
}
.quiz-intro-steps-title {
  font-size: 0.82rem; font-weight: 800; color: rgba(255,255,255,0.6);
  margin-bottom: 10px; letter-spacing: 0.04em;
}
.quiz-intro-step {
  display: flex; align-items: center; gap: 10px;
  padding: 6px 0;
}
.quiz-intro-step-num {
  flex-shrink: 0; width: 22px; height: 22px;
  display: flex; align-items: center; justify-content: center;
  font-size: 0.72rem; font-weight: 800; color: #fff;
  border-radius: 50%;
  background: linear-gradient(135deg, var(--qc1), var(--qc2));
}
.quiz-intro-step-body { min-width: 0; }
.quiz-intro-step-title { font-size: 0.85rem; font-weight: 700; color: rgba(255,255,255,0.88); }
.quiz-intro-step-desc { font-size: 0.74rem; color: rgba(255,255,255,0.45); margin-top: 1px; }

.quiz-step { padding: 40px 20px; text-align: center; }

/* 题目头部：题号徽章 + 百分比 + 渐变进度条 */
.quiz-head { margin-bottom: 26px; }
.quiz-head-info {
  display: flex; align-items: center; justify-content: space-between;
  margin-bottom: 10px;
}
.quiz-step-badge {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 4px 12px; border-radius: 999px;
  font-size: 0.72rem; font-weight: 800; letter-spacing: 0.04em;
  color: var(--qc1);
  background: rgba(255,255,255,0.045);
  border: 1px solid rgba(255,255,255,0.09);
}
.quiz-step-badge i {
  width: 6px; height: 6px; border-radius: 50%;
  background: var(--qc1); box-shadow: 0 0 8px var(--qc1);
}
.quiz-pct { font-size: 0.72rem; font-weight: 700; color: rgba(255,255,255,0.45); }

.quiz-progress {
  width: 100%; height: 5px;
  background: rgba(255,255,255,0.07);
  border-radius: 99px;
  overflow: hidden;
}
.quiz-progress-bar {
  height: 100%; border-radius: 99px;
  background: linear-gradient(90deg, var(--qc1), var(--qc2));
  box-shadow: 0 0 10px var(--qc1);
  transition: width 0.45s cubic-bezier(0.22,1,0.36,1);
}

.quiz-question {
  font-size: 1.18rem; font-weight: 800;
  margin-bottom: 22px;
  line-height: 1.45;
  color: #fff;
}

/* 选项卡片：A/B/C/D 徽章 + 选中发光 + 勾选动画 */
.quiz-opts { display: flex; flex-direction: column; gap: 10px; margin-bottom: 16px; }
.quiz-option {
  position: relative;
  display: flex; align-items: center; gap: 12px;
  width: 100%; padding: 15px 14px;
  border-radius: 14px;
  background: rgba(255,255,255,0.045);
  border: 1px solid rgba(255,255,255,0.08);
  color: rgba(255,255,255,0.85);
  font-size: 0.9rem;
  text-align: left;
  cursor: pointer;
  overflow: hidden;
  transition: transform 0.28s cubic-bezier(0.34,1.3,0.5,1), background-color 0.25s, border-color 0.25s, color 0.25s, box-shadow 0.25s, opacity 0.3s;
}
.quiz-option:active { transform: scale(0.97); }
.quiz-opt-key {
  flex: 0 0 30px; height: 30px; border-radius: 9px;
  display: flex; align-items: center; justify-content: center;
  font-size: 0.78rem; font-weight: 800;
  background: rgba(255,255,255,0.07); color: rgba(255,255,255,0.55);
  border: 1px solid rgba(255,255,255,0.1);
  transition: background 0.25s, color 0.25s, border-color 0.25s, transform 0.3s cubic-bezier(0.34,1.56,0.64,1);
}
.quiz-opt-text { flex: 1; line-height: 1.45; }
.quiz-opt-check {
  flex: 0 0 22px; height: 22px; border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  font-size: 0.72rem; color: #fff;
  background: linear-gradient(135deg, var(--qc1), var(--qc2));
  opacity: 0; transform: scale(0.3);
  transition: opacity 0.22s, transform 0.38s cubic-bezier(0.34,1.56,0.64,1);
}
/* 选中态：弹性放大 + 光晕描边 */
.quiz-option.selected {
  background: rgba(255,255,255,0.07);
  border-color: var(--qc1);
  box-shadow: 0 0 22px var(--qc1), 0 0 4px var(--qc1) inset;
  transform: scale(1.02);
}
.quiz-option.selected .quiz-opt-key {
  background: linear-gradient(135deg, var(--qc1), var(--qc2));
  color: #fff; border-color: transparent;
  transform: scale(1.12) rotate(-4deg);
}
.quiz-option.selected .quiz-opt-check { opacity: 1; transform: scale(1); }
/* 未选项：平滑淡出并微缩，避免生硬 */
.quiz-option.dim { opacity: 0.4; transform: scale(0.97); }

/* 题目切换动效：淡入 + 上移 */
.quiz-step { animation: quizQIn 0.32s cubic-bezier(0.22,1,0.36,1); }
@keyframes quizQIn {
  from { opacity: 0; transform: translateY(14px); }
  to { opacity: 1; transform: translateY(0); }
}
/* 自动前进时的"已锁定"提示 */
.quiz-lock-hint {
  margin-top: 14px; padding: 10px 14px; border-radius: 12px;
  background: rgba(255,255,255,0.03); border: 1px solid rgba(255,255,255,0.06);
  color: rgba(255,255,255,0.5); font-size: 0.78rem; text-align: center;
  animation: quizQIn 0.3s ease;
}

/* 答题导航按钮：上一步 + 下一步 并排 */
.quiz-nav {
  display: flex; gap: 10px; margin-top: 16px;
}
.quiz-next-btn {
  flex: 1.5; padding: 14px 12px;
  border-radius: 14px;
  border: none;
  background: linear-gradient(135deg, var(--qc1), var(--qc2));
  color: #fff;
  font-size: 0.92rem; font-weight: 800; letter-spacing: 0.02em;
  cursor: pointer;
  box-shadow: 0 6px 20px var(--qc1);
  transition: transform 0.18s, box-shadow 0.2s, opacity 0.2s;
}
.quiz-next-btn:active { transform: scale(0.97); }
.quiz-next-btn[disabled] { opacity: 0.4; box-shadow: none; cursor: default; }
.quiz-prev-btn {
  flex: 1; padding: 14px 10px;
  border-radius: 14px;
  background: rgba(255,255,255,0.05);
  border: 1px solid rgba(255,255,255,0.14);
  color: rgba(255,255,255,0.75);
  font-size: 0.84rem; font-weight: 700;
  cursor: pointer;
  transition: background 0.2s, transform 0.18s, opacity 0.2s;
}
.quiz-prev-btn:active { transform: scale(0.97); background: rgba(255,255,255,0.1); }
.quiz-prev-btn[disabled] { opacity: 0.3; cursor: default; }

/* ── 测试卡片点击反馈：按压 + 波纹 + 图标跳动 ── */
.test-card { -webkit-tap-highlight-color: transparent; touch-action: manipulation; }
.test-card.tc-press { transform: scale(0.96); }
.tc-ripple {
  position: absolute; border-radius: 50%; pointer-events: none;
  background: radial-gradient(circle, rgba(255,255,255,0.35), transparent 65%);
  transform: translate(-50%,-50%) scale(0);
  animation: tcRipple 0.5s ease-out forwards;
  z-index: 3;
}
@keyframes tcRipple { to { transform: translate(-50%,-50%) scale(3); opacity: 0; } }
.test-card.tc-tap .test-card-cover-icon { animation: tcIcon 0.45s cubic-bezier(0.34,1.56,0.64,1); }
@keyframes tcIcon {
  0% { transform: scale(1); }
  40% { transform: scale(1.28) rotate(-8deg); }
  100% { transform: scale(1); }
}
.test-card.tc-tap .test-card-name::after {
  content: '···'; display: inline-block; margin-left: 4px;
  color: rgba(255,255,255,0.55);
  animation: tcDots 1s steps(4,end) infinite;
  overflow: hidden; width: 0; vertical-align: bottom;
}
@keyframes tcDots { to { width: 1.2em; } }

/* ============================================
   iOS 闹钟式日期滚轮（trending 左侧）
   ============================================ */
.date-wheel { cursor: grab; touch-action: pan-y; -webkit-overflow-scrolling: touch; }
.date-wheel.dragging { cursor: grabbing; user-select: none; -webkit-user-select: none; }
/* 滚轮选项即时响应，不做滞后过渡 */
.date-wheel .date-item { transition: none; }
.date-wheel .date-label { font-size: 0.8rem; }
/* 中部高亮选中框（iOS 闹钟滚轮同款） */
.date-wheel-frame {
  position: absolute;
  top: 50%; left: 50%;
  transform: translate(-50%, -50%);
  width: 100%;
  height: 66px;
  pointer-events: none;
  z-index: 3;
  border-radius: 16px;
  border-top: 1.5px solid rgba(255, 255, 255, 0.26);
  border-bottom: 1.5px solid rgba(255, 255, 255, 0.26);
  background: linear-gradient(180deg, rgba(255,255,255,0.03) 0%, rgba(255,255,255,0.10) 45%, rgba(255,255,255,0.10) 55%, rgba(255,255,255,0.03) 100%);
}
/* 上下区域虚化渐变遮罩 */
.date-wheel-mask {
  position: absolute;
  inset: 0;
  pointer-events: none;
  z-index: 2;
  background: linear-gradient(180deg, #0a0a0a 0%, rgba(10,10,10,0) 24%, rgba(10,10,10,0) 76%, #0a0a0a 100%);
}

/* ============================================
   首页：顶部(标题/地区)与底部导航固定，中部模版独立滚动
   ============================================ */
.home-container {
  display: flex;
  flex-direction: column;
  height: calc(100vh - var(--header-height) - var(--nav-height) - env(safe-area-inset-bottom, 0px));
  overflow: hidden;
}
.home-hero { flex-shrink: 0; }
.region-selector { flex-shrink: 0; }
.home-split {
  flex: 1;
  min-height: 0;
  display: flex;
  overflow: hidden; /* 左侧滚轮与右侧卡片各自独立滚动 */
}
.timeline-node { cursor: pointer; }

/* 每日模版预览浮层 */
.daily-preview-overlay {
  position: fixed; inset: 0; z-index: 900;
  background: rgba(0,0,0,0.85);
  backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px);
  display: flex; align-items: center; justify-content: center;
  animation: wpFadeIn 0.2s ease;
}
.daily-preview-card {
  width: 78%; max-width: 320px; aspect-ratio: 3 / 4;
  border-radius: 22px;
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  box-shadow: 0 24px 70px rgba(0,0,0,0.55);
  animation: wpPop 0.25s cubic-bezier(.22,.61,.36,1);
}
.daily-preview-close {
  position: absolute; top: calc(18px + env(safe-area-inset-top, 0px)); right: 18px;
  width: 34px; height: 34px; border-radius: 50%;
  background: rgba(255,255,255,0.12); border: 1px solid rgba(255,255,255,0.2);
  color: #fff; font-size: 0.95rem;
  display: flex; align-items: center; justify-content: center;
}

/* 8 天模版行需要撑起中部滚动：取消 cards-area 裁剪 */
.home-split .cards-area { overflow-y: auto; overflow-x: hidden; }

/* 首页左侧：iOS 闹钟式日期滚轮 */
.day-wheel {
  width: 46px; flex-shrink: 0; position: relative;
  overflow-y: auto; scrollbar-width: none;
  -webkit-overflow-scrolling: touch;
  scroll-snap-type: y mandatory;
  cursor: grab;
  touch-action: pan-y;
}
.day-wheel.dragging { cursor: grabbing; user-select: none; -webkit-user-select: none; }
.day-wheel::-webkit-scrollbar { display: none; }
.day-wheel-items {
  padding: 260px 0;
  display: flex; flex-direction: column; align-items: center; gap: 12px;
}
.day-item {
  scroll-snap-align: center;
  display: flex; flex-direction: column; align-items: center; gap: 5px;
  cursor: pointer; transition: none;
}
.day-item-label {
  font-size: 0.6rem; font-weight: 700; color: var(--text-secondary);
  text-align: center; line-height: 1.1;
}
.day-item.active .day-item-label { color: #fff; }
.day-item-dot { width: 6px; height: 6px; border-radius: 50%; background: var(--text-muted); }
.day-item-dot.active { background: var(--accent); box-shadow: 0 0 10px var(--accent); }
.day-wheel-frame {
  position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%);
  width: 92%; height: 54px; pointer-events: none; z-index: 3;
  border-radius: 999px; /* 圆润胶囊高亮 */
  border: 1.5px solid rgba(255,255,255,0.28);
  background: linear-gradient(180deg, rgba(255,255,255,0.04) 0%, rgba(255,255,255,0.12) 45%, rgba(255,255,255,0.12) 55%, rgba(255,255,255,0.04) 100%);
  box-shadow: 0 2px 14px rgba(0,0,0,0.25);
}
.day-wheel-mask {
  position: absolute; inset: 0; pointer-events: none; z-index: 2;
  background: linear-gradient(180deg, #0a0a0a 0%, rgba(10,10,10,0) 24%, rgba(10,10,10,0) 76%, #0a0a0a 100%);
}
.cards-area {
  flex: 1; min-width: 0;
  overflow-y: auto; overflow-x: hidden;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: none;
}
.cards-area::-webkit-scrollbar { display: none; }
.cards-row.active-day .cards-row-label { color: var(--accent); }
.cards-row.active-day { opacity: 1; }


/* 首页每日卡片：窄一点，默认 3 张完整可见 */
.home-split .cards-row-scroll .glass-card { width: 104px; }

/* ═══════════════════════════════════════════
   AI 颜值评分（beauty）— 精致版
   ═══════════════════════════════════════════ */
.beauty-page {
  --bp-accent: #ff6b9d;
  --bp-accent2: #a06bff;
  --bp-gold: #ffd166;
  --bp-cyan: #4dd8ff;
  --bp-card: rgba(255,255,255,0.045);
  --bp-border: rgba(255,255,255,0.09);
  --bp-dim: rgba(255,255,255,0.5);
  padding: 0 16px 28px;
}

/* ── Hero 头部 ── */
.beauty-hero {
  position: relative; text-align: center; padding: 30px 8px 26px;
  overflow: hidden; border-radius: 0 0 26px 26px;
}
.beauty-hero-glow {
  position: absolute; top: -70px; left: 50%; transform: translateX(-50%);
  width: 320px; height: 320px; pointer-events: none;
  background: radial-gradient(circle, rgba(255,107,157,0.32) 0%, rgba(160,107,255,0.16) 42%, transparent 70%);
  filter: blur(6px); z-index: 0;
}
.beauty-hero-inner { position: relative; z-index: 1; }
.beauty-hero-icon {
  width: 74px; height: 74px; margin: 0 auto 14px; border-radius: 24px;
  display: flex; align-items: center; justify-content: center; font-size: 2.2rem;
  background: linear-gradient(145deg, rgba(255,107,157,0.22), rgba(160,107,255,0.22));
  border: 1px solid rgba(255,255,255,0.14);
  box-shadow: 0 10px 34px rgba(255,107,157,0.28), inset 0 1px 0 rgba(255,255,255,0.15);
  animation: bpFloat 3.2s ease-in-out infinite;
}
@keyframes bpFloat {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-6px); }
}
.beauty-hero-title {
  font-size: 1.45rem; font-weight: 900; letter-spacing: 0.02em;
  background: linear-gradient(120deg, #fff 20%, var(--bp-accent) 55%, var(--bp-accent2) 90%);
  -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent;
}
.beauty-hero-sub { font-size: 0.82rem; color: var(--bp-dim); margin-top: 8px; line-height: 1.7; max-width: 300px; margin-left: auto; margin-right: auto; }

/* ── 上传卡片 ── */
.beauty-upload-card {
  position: relative; border-radius: 22px; overflow: hidden;
  background: var(--bp-card); border: 1px solid var(--bp-border);
  backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px);
  padding: 30px 22px; text-align: center; cursor: pointer;
  transition: transform 0.25s, border-color 0.25s, background 0.25s, box-shadow 0.25s;
}
.beauty-upload-card:hover { border-color: rgba(255,255,255,0.2); }
.beauty-upload-card:active { transform: scale(0.985); }
.beauty-upload-card.dragover {
  border-color: var(--bp-accent); background: rgba(255,107,157,0.08);
  box-shadow: 0 0 0 3px rgba(255,107,157,0.22), 0 14px 40px rgba(255,107,157,0.2);
}
.beauty-upload-ring {
  width: 86px; height: 86px; margin: 0 auto 16px; border-radius: 50%;
  display: flex; align-items: center; justify-content: center; font-size: 2rem;
  background: linear-gradient(145deg, rgba(255,107,157,0.16), rgba(160,107,255,0.16));
  border: 1.5px dashed rgba(255,255,255,0.28);
  position: relative;
}
.beauty-upload-ring::after {
  content: ''; position: absolute; inset: -7px; border-radius: 50%;
  border: 1px dashed rgba(255,255,255,0.12);
  animation: bpRingSpin 14s linear infinite;
}
@keyframes bpRingSpin { to { transform: rotate(360deg); } }
.beauty-upload-title { font-size: 1.02rem; font-weight: 800; }
.beauty-upload-hint { font-size: 0.78rem; color: var(--bp-dim); margin-top: 6px; line-height: 1.6; }
.beauty-upload-chips { display: flex; gap: 8px; justify-content: center; margin-top: 18px; }
.beauty-upload-chip {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 8px 16px; border-radius: 999px; font-size: 0.8rem; font-weight: 600;
  background: rgba(255,255,255,0.07); border: 1px solid rgba(255,255,255,0.1);
  color: #fff;
}
.beauty-upload-chip .emoji-icon {
  width: 1.3em !important; height: 1.3em !important;
  font-size: 1.2rem; line-height: 1;
  display: inline-flex; align-items: center; justify-content: center;
}
.beauty-upload-chip .emoji-icon svg { width: 100%; height: 100%; }
.beauty-upload-privacy { font-size: 0.7rem; color: rgba(255,255,255,0.32); margin-top: 16px; }

/* 已选照片预览 */
.beauty-preview-card {
  position: relative; border-radius: 22px; overflow: hidden;
  border: 1px solid var(--bp-border); margin-bottom: 16px;
  box-shadow: 0 14px 40px rgba(0,0,0,0.45);
  background: #0c0f14;
  /* 图片完整显示：容器固定宽高，img 用 contain 适配，绝不裁切/变形 */
  width: 100%; height: min(52vh, 440px);
  display: flex; align-items: center; justify-content: center;
}
.beauty-preview-card img {
  position: absolute; inset: 0; margin: auto;
  width: 100%; height: 100%;
  object-fit: contain; display: block;
}
.beauty-preview-overlay {
  position: absolute; inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,0.18) 0%, transparent 30%, transparent 62%, rgba(0,0,0,0.55) 100%);
  display: flex; flex-direction: column; justify-content: flex-end; padding: 14px;
}
.beauty-preview-change {
  align-self: center; padding: 8px 18px; border-radius: 999px; font-size: 0.78rem; font-weight: 700;
  background: rgba(0,0,0,0.5); border: 1px solid rgba(255,255,255,0.22); color: #fff; cursor: pointer;
  backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px);
  transition: background 0.2s;
}
.beauty-preview-change:active { background: rgba(0,0,0,0.7); }
.beauty-analyze-btn {
  width: 100%; padding: 15px; border-radius: 18px; border: none; cursor: pointer;
  font-size: 0.98rem; font-weight: 800; color: #fff; letter-spacing: 0.03em;
  background: linear-gradient(120deg, var(--bp-accent), var(--bp-accent2));
  box-shadow: 0 10px 30px rgba(255,107,157,0.35);
  transition: transform 0.2s, box-shadow 0.2s, opacity 0.2s;
}
.beauty-analyze-btn:active { transform: scale(0.98); }
.beauty-analyze-btn:disabled { opacity: 0.55; }

/* ── 分析中 ── */
.beauty-loading {
  padding: 46px 20px 60px; text-align: center; position: relative;
}
.beauty-loading-orb {
  position: relative; width: 120px; height: 120px; margin: 0 auto 26px;
  display: flex; align-items: center; justify-content: center; font-size: 2.6rem;
}
.beauty-loading-orb::before {
  content: ''; position: absolute; inset: 0; border-radius: 50%;
  background: radial-gradient(circle, rgba(255,107,157,0.35) 0%, rgba(160,107,255,0.18) 50%, transparent 72%);
  animation: bpBreath 2.2s ease-in-out infinite;
}
.beauty-loading-orb::after {
  content: ''; position: absolute; inset: -16px; border-radius: 50%;
  border: 1px solid rgba(255,255,255,0.08);
  animation: bpRingSpin 6s linear infinite;
}
@keyframes bpBreath {
  0%, 100% { transform: scale(1); opacity: 0.9; }
  50% { transform: scale(1.28); opacity: 0.55; }
}
.beauty-loading-scan {
  position: relative; width: 200px; height: 4px; margin: 0 auto 22px; border-radius: 2px;
  background: rgba(255,255,255,0.1); overflow: hidden;
}
.beauty-loading-scan::before {
  content: ''; position: absolute; top: 0; left: -40%; width: 40%; height: 100%;
  background: linear-gradient(90deg, transparent, var(--bp-accent), var(--bp-accent2), transparent);
  animation: bpScan 1.8s ease-in-out infinite;
}
@keyframes bpScan { to { left: 100%; } }
.beauty-loading-title { font-size: 1.05rem; font-weight: 800; }
/* ─── 人脸扫描动画（loading 页） ─── */
.beauty-scan-stage {
  position: relative; width: 230px; height: 300px; margin: 0 auto 26px;
  border-radius: 18px; overflow: visible;
}
.beauty-scan-photo {
  position: absolute; inset: 0; border-radius: 18px; overflow: hidden;
  background: #0c0f14;
  box-shadow: 0 0 0 1px rgba(255,255,255,0.06), 0 20px 60px rgba(0,0,0,0.6);
}
.beauty-scan-img {
  position: absolute; inset: 0; width: 100%; height: 100%;
  object-fit: cover; filter: brightness(0.8) saturate(1.05) contrast(1.02);
  animation: bpScanBreath 5.6s ease-in-out infinite;
}
@keyframes bpScanBreath {
  0%, 100% { transform: scale(1.01); }
  50% { transform: scale(1.05); }
}
/* 扫描框：四角 + 整体光晕 */
.beauty-scan-frame {
  position: absolute; left: 50%; top: 50%;
  width: 60%; height: 66%; transform: translate(-50%, -50%);
  border-radius: 14px;
  box-shadow: 0 0 0 1.5px rgba(255,107,157,0.4), 0 0 30px rgba(255,107,157,0.18);
  animation: bpFramePulse 3.2s ease-in-out infinite;
}
@keyframes bpFramePulse {
  0%, 100% { box-shadow: 0 0 0 1.5px rgba(255,107,157,0.4), 0 0 30px rgba(255,107,157,0.18); }
  50% { box-shadow: 0 0 0 2px rgba(255,107,157,0.75), 0 0 52px rgba(255,107,157,0.38); }
}
.beauty-scan-corner {
  position: absolute; width: 24px; height: 24px; border: 3px solid var(--bp-accent);
  filter: drop-shadow(0 0 8px rgba(255,107,157,0.9));
  z-index: 3;
}
.beauty-scan-corner.tl { left: 13px; top: 13px; border-right: none; border-bottom: none; border-top-left-radius: 9px; }
.beauty-scan-corner.tr { right: 13px; top: 13px; border-left: none; border-bottom: none; border-top-right-radius: 9px; }
.beauty-scan-corner.bl { left: 13px; bottom: 13px; border-right: none; border-top: none; border-bottom-left-radius: 9px; }
.beauty-scan-corner.br { right: 13px; bottom: 13px; border-left: none; border-top: none; border-bottom-right-radius: 9px; }
/* 移动扫描光带（柔和渐变 + 光晕拖尾） */
.beauty-scan-line {
  position: absolute; left: 6%; right: 6%; top: 10%;
  height: 34px; z-index: 2; pointer-events: none;
  background: linear-gradient(180deg, transparent, rgba(77,216,255,0.22) 30%, rgba(77,216,255,0.55) 50%, rgba(77,216,255,0.22) 70%, transparent);
  border-top: 1.5px solid rgba(160,255,255,0.9);
  border-bottom: 1px solid rgba(77,216,255,0.5);
  box-shadow: 0 0 24px 4px rgba(77,216,255,0.35), 0 0 60px 16px rgba(77,216,255,0.15);
  animation: bpScanLine 5.6s cubic-bezier(0.4, 0.05, 0.6, 0.95) infinite;
}
@keyframes bpScanLine {
  0% { top: 6%; opacity: 0; }
  6% { opacity: 1; }
  42% { top: 88%; opacity: 1; }
  50% { top: 88%; opacity: 0.5; }
  56% { top: 6%; opacity: 0.9; }
  94% { top: 6%; opacity: 0.6; }
  100% { top: 6%; opacity: 0; }
}
/* 光带尾迹（扫描线扫过的残影） */
.beauty-scan-glow {
  position: absolute; left: 6%; right: 6%; top: 10%;
  height: 34px; z-index: 1; pointer-events: none;
  background: linear-gradient(180deg, transparent, rgba(77,216,255,0.12) 60%, transparent);
  animation: bpScanGlow 5.6s cubic-bezier(0.4, 0.05, 0.6, 0.95) infinite;
}
@keyframes bpScanGlow {
  0% { top: 6%; opacity: 0; }
  10% { opacity: 0.5; }
  46% { top: 88%; opacity: 0.3; }
  60% { top: 6%; opacity: 0.2; }
  100% { top: 6%; opacity: 0; }
}
/* 识别网格（扫过区域由青转粉，模拟已识别） */
.beauty-scan-grid {
  position: absolute; inset: 0; z-index: 1; pointer-events: none;
  background-image:
    linear-gradient(rgba(77,216,255,0.08) 1px, transparent 1px),
    linear-gradient(90deg, rgba(77,216,255,0.08) 1px, transparent 1px);
  background-size: 20px 20px;
  animation: bpGridFade 5.6s ease-in-out infinite;
}
@keyframes bpGridFade { 0%, 100% { opacity: 0.35; } 50% { opacity: 0.85; } }
/* 特征点粒子（AI 识别的面部关键点） */
.beauty-scan-particles { position: absolute; inset: 0; z-index: 2; pointer-events: none; }
.beauty-scan-particles i {
  position: absolute; left: var(--px); top: var(--py);
  width: 5px; height: 5px; border-radius: 50%;
  background: rgba(77,216,255,0.9);
  box-shadow: 0 0 8px 2px rgba(77,216,255,0.7);
  animation: bpParticle 4.8s ease-in-out var(--pd) infinite;
}
@keyframes bpParticle {
  0%, 100% { transform: scale(0.6); opacity: 0.2; }
  20% { transform: scale(1.2); opacity: 1; }
  60% { transform: scale(0.8); opacity: 0.7; }
}
/* 人脸特征点：扫描到后逐个点亮 */
.beauty-scan-face {
  position: absolute; left: 50%; top: 50%;
  width: 46%; height: 50%; transform: translate(-50%, -50%); z-index: 2;
}
.beauty-scan-face .bf-eye {
  position: absolute; top: 24%; width: 15%; height: 24%;
  border: 2px solid rgba(255,255,255,0.6); border-radius: 50%;
  opacity: 0;
  box-shadow: 0 0 10px rgba(77,216,255,0.4) inset, 0 0 12px rgba(77,216,255,0.25);
  animation: bpFeatureIn 0.9s ease-out forwards, bpEyeBlink 5s ease-in-out 3.2s infinite;
}
.beauty-scan-face .bf-eye-l { left: 13%; animation-delay: 1.8s, 4.4s; }
.beauty-scan-face .bf-eye-r { right: 13%; animation-delay: 2.4s, 5s; }
@keyframes bpFeatureIn {
  0% { opacity: 0; transform: scale(0.4); }
  60% { opacity: 1; transform: scale(1.15); }
  100% { opacity: 1; transform: scale(1); }
}
@keyframes bpEyeBlink {
  0%, 46%, 52%, 100% { transform: scaleY(1); }
  48%, 50% { transform: scaleY(0.12); }
}
.beauty-scan-face .bf-nose {
  position: absolute; top: 46%; left: 50%; transform: translateX(-50%);
  width: 8%; height: 26%;
  border-left: 2px solid rgba(255,255,255,0.45); border-right: 2px solid rgba(255,255,255,0.45);
  border-radius: 50%;
  opacity: 0; animation: bpFeatureIn 0.9s ease-out 3.2s forwards;
}
.beauty-scan-face .bf-mouth {
  position: absolute; bottom: 7%; left: 50%; transform: translateX(-50%);
  width: 36%; height: 9%;
  border-bottom: 2.5px solid rgba(255,255,255,0.55);
  border-radius: 0 0 50% 50%;
  opacity: 0; animation: bpFeatureIn 0.9s ease-out 3.8s forwards;
}
/* 扫描状态文字（动态轮换） */
.beauty-scan-status {
  position: absolute; left: 0; right: 0; bottom: -30px;
  text-align: center; font-size: 0.72rem; letter-spacing: 1px;
  color: rgba(77,216,255,0.9); text-shadow: 0 0 10px rgba(77,216,255,0.5);
  animation: bpStatusBlink 2.2s ease-in-out infinite;
}
@keyframes bpStatusBlink { 0%, 100% { opacity: 0.6; } 50% { opacity: 1; } }
/* 分析进度条 */
.beauty-scan-progress {
  position: absolute; left: 8px; right: 8px; bottom: -44px;
  height: 3px; border-radius: 2px; background: rgba(255,255,255,0.08);
  overflow: hidden;
}
.beauty-scan-progress-bar {
  height: 100%; width: 0%; border-radius: 2px;
  background: linear-gradient(90deg, var(--bp-accent), var(--bp-accent2), #4dd8ff);
  background-size: 200% 100%;
  animation: bpProgress 6s ease-in-out forwards, bpProgressHue 2.6s linear infinite;
}
@keyframes bpProgress { 0% { width: 0%; } 100% { width: 100%; } }
@keyframes bpProgressHue { 0% { background-position: 0% 0; } 100% { background-position: 200% 0; } }
.beauty-loading-steps { margin-top: 26px; display: flex; flex-direction: column; gap: 10px; align-items: center; }
.beauty-loading-step {
  display: inline-flex; align-items: center; gap: 8px;
  font-size: 0.8rem; color: var(--bp-dim); opacity: 0.45;
  transition: opacity 0.4s;
}
.beauty-loading-step.on { opacity: 1; color: rgba(255,255,255,0.85); }
.beauty-loading-step .bp-dot { width: 6px; height: 6px; border-radius: 50%; background: var(--bp-accent); }

/* ── 结果页 ── */
.beauty-result-head { text-align: center; padding: 24px 8px 20px; position: relative; }
.beauty-photo-row {
  display: flex; justify-content: center; gap: 12px; margin-bottom: 18px; align-items: flex-end;
}
.beauty-photo-thumb {
  width: 54px; height: 54px; border-radius: 16px; object-fit: cover;
  border: 1.5px solid rgba(255,255,255,0.18); box-shadow: 0 6px 18px rgba(0,0,0,0.4);
  transform: rotate(-4deg);
}
.beauty-photo-thumb.main {
  width: 76px; height: 76px; border-radius: 20px; transform: rotate(0);
  border-color: var(--bp-accent);
}
.beauty-score-ring {
  position: relative; width: 168px; height: 168px; margin: 0 auto 14px;
}
.beauty-score-ring svg { display: block; }
.beauty-score-num {
  position: absolute; inset: 0; display: flex; flex-direction: column;
  align-items: center; justify-content: center;
}
.beauty-score-num b { font-size: 2.9rem; font-weight: 900; line-height: 1; }
.beauty-score-num span { font-size: 0.72rem; color: var(--bp-dim); margin-top: 4px; letter-spacing: 0.14em; }
.beauty-tier-badge {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 6px 18px; border-radius: 999px; font-size: 0.84rem; font-weight: 800;
  letter-spacing: 0.12em; margin-bottom: 12px;
  background: rgba(255,255,255,0.06); border: 1px solid currentColor;
  box-shadow: 0 6px 20px rgba(0,0,0,0.3);
}
.beauty-tier-badge::before { content: '✦'; font-size: 0.9em; }
.beauty-desc { font-size: 0.88rem; line-height: 1.75; max-width: 330px; margin: 0 auto; padding: 0 6px; }

/* 雷达图 + 维度卡 */
.beauty-panel {
  background: var(--bp-card); border: 1px solid var(--bp-border);
  border-radius: 22px; padding: 18px; margin-bottom: 14px;
  backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px);
}
.beauty-panel-title {
  font-size: 0.78rem; font-weight: 700; color: rgba(255,255,255,0.45);
  letter-spacing: 0.1em; text-transform: uppercase; margin-bottom: 14px;
}
.beauty-radar-wrap { position: relative; }
.beauty-radar-wrap svg { display: block; width: 100%; max-width: 300px; margin: 0 auto; }

.beauty-dim { margin-bottom: 13px; }
.beauty-dim:last-child { margin-bottom: 2px; }
.beauty-dim-head {
  display: flex; justify-content: space-between; align-items: baseline;
  font-size: 0.8rem; margin-bottom: 6px;
}
.beauty-dim-label { color: rgba(255,255,255,0.72); font-weight: 600; }
.beauty-dim-val { font-weight: 800; font-size: 0.85rem; }
.beauty-dim-bar {
  height: 7px; border-radius: 4px; background: rgba(255,255,255,0.08);
  overflow: hidden; position: relative;
}
.beauty-dim-bar i {
  display: block; height: 100%; border-radius: 4px;
  background: linear-gradient(90deg, var(--bp-accent), var(--bp-accent2));
  position: relative; overflow: hidden;
  transition: width 1.4s cubic-bezier(0.22, 1, 0.36, 1);
}
.beauty-dim-bar i::after {
  content: ''; position: absolute; top: 0; left: -30%; width: 30%; height: 100%;
  background: linear-gradient(90deg, transparent, rgba(255,255,255,0.55), transparent);
  animation: bpShine 3.2s ease-in-out infinite;
}
@keyframes bpShine { to { left: 110%; } }

.beauty-advice {
  display: flex; gap: 10px; padding: 14px 16px; border-radius: 16px;
  background: rgba(255,209,102,0.07); border: 1px solid rgba(255,209,102,0.22);
  font-size: 0.82rem; line-height: 1.65; color: rgba(255,255,255,0.82);
}
.beauty-advice .bp-ico { font-size: 1.05rem; flex-shrink: 0; }

/* 操作按钮 */
.beauty-actions { display: flex; gap: 10px; margin-top: 18px; }
.beauty-btn {
  flex: 1; padding: 13px 8px; border-radius: 16px; border: 1px solid var(--bp-border);
  background: rgba(255,255,255,0.05); color: #fff; font-size: 0.85rem; font-weight: 700;
  cursor: pointer; transition: transform 0.18s, background 0.2s;
  display: inline-flex; align-items: center; justify-content: center; gap: 6px;
}
.beauty-btn:active { transform: scale(0.96); }
.beauty-btn-primary {
  background: linear-gradient(120deg, var(--bp-accent), var(--bp-accent2));
  border: none; box-shadow: 0 8px 24px rgba(255,107,157,0.32);
}
.beauty-btn-ghost { background: rgba(255,255,255,0.03); }

.beauty-recs-title {
  font-size: 0.8rem; font-weight: 700; color: rgba(255,255,255,0.45);
  letter-spacing: 0.08em; margin: 4px 0 12px;
}

/* ═══════════════════════════════════════════
   结果页「试试其他测试」推荐区 — 首页同款封面卡横向轮播
   卡片结构与列表页 .test-card 一致（3:4 封面图 + 名称 + 描述 + 标签/用量），
   复用列表页 .test-card-cover/.test-card-body 等样式，图片直接使用首页封面 assets/tests/*.jpg，
   保证结果页与列表页视觉完全统一。
   ═══════════════════════════════════════════ */
.rec-section {
  margin-top: 26px;
  border-top: 1px solid rgba(255,255,255,0.05);
  padding: 18px 0 30px;
}
.rec-title {
  font-size: 0.8rem; font-weight: 700; color: rgba(255,255,255,0.45);
  letter-spacing: 0.08em; margin: 4px 0 12px;
}
/* 横向自动滚动容器：全宽出血 + 隐藏滚动条（无缝跑马灯） */
.rec-scroll {
  overflow: hidden;
  margin: 0 -16px;
  padding: 2px 16px 10px;
  -webkit-overflow-scrolling: touch;
}
/* 无缝滚动轨道：双份卡片，匀速 translateX 0→-50% 循环 */
.rec-track {
  display: flex;
  gap: 10px;
  width: max-content;
  will-change: transform;
  animation: recMarquee 30s linear infinite;
}
.rec-track.rec-marquee-paused { animation-play-state: paused; }
@keyframes recMarquee {
  from { transform: translateX(0); }
  to   { transform: translateX(-50%); }
}

/* 推荐卡：复用列表页 test-card 结构（封面卡），仅覆盖宽度为固定竖版 */
body:not(.cms-mode) .rec-card {
  flex: 0 0 142px;
  display: flex;
  flex-direction: column;
  gap: 0;
  padding: 0;
  border-radius: 18px;
  background: rgba(255,255,255,0.035);
  border: 1px solid rgba(255,255,255,0.07);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  cursor: pointer;
  overflow: hidden;
  transition: transform 0.22s cubic-bezier(0.22,1,0.36,1), border-color 0.22s, box-shadow 0.22s, background 0.22s;
  animation: testCardIn 0.5s cubic-bezier(0.22,1,0.36,1) both;
}
body:not(.cms-mode) .rec-card:hover {
  transform: translateY(-2px);
  border-color: rgba(255,255,255,0.2);
  box-shadow: 0 12px 34px rgba(0,0,0,0.35);
}
body:not(.cms-mode) .rec-card:active { transform: scale(0.97); }
/* 主题渐变光晕：与列表页一致 */
body:not(.cms-mode) .rec-card-ai::before {
  content: ''; position: absolute; inset: 0; z-index: 0; pointer-events: none;
  background:
    radial-gradient(120% 70% at 50% -20%, rgba(160,107,255,0.16), transparent 62%),
    radial-gradient(120% 60% at 50% 120%, rgba(77,216,255,0.1), transparent 60%);
}
body:not(.cms-mode) .rec-card-quiz::before {
  content: ''; position: absolute; inset: 0; z-index: 0; pointer-events: none;
  background:
    radial-gradient(120% 70% at 50% -20%, rgba(255,107,157,0.14), transparent 62%),
    radial-gradient(120% 60% at 50% 120%, rgba(255,209,102,0.08), transparent 60%);
}

/* 封面图：3:4（与列表页一致） */
body:not(.cms-mode) .rec-card-cover {
  aspect-ratio: 3 / 4;
  border-radius: 18px 18px 0 0;
  flex-shrink: 0;
}
body:not(.cms-mode) .rec-card-cover .test-card-cover-img { transition: transform 0.5s cubic-bezier(0.22,1,0.36,1); }
body:not(.cms-mode) .rec-card:hover .test-card-cover-img { transform: scale(1.06); }
/* 信息区：深色玻璃底 + 白字（与列表页一致） */
body:not(.cms-mode) .rec-card-body {
  position: relative; z-index: 1;
  padding: 8px 9px 9px;
  background: rgba(10, 10, 25, 0.55);
  flex: 1;
  display: flex;
  flex-direction: column;
}
body:not(.cms-mode) .rec-card-name {
  font-size: 0.8rem; font-weight: 700; color: #fff;
  line-height: 1.3;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
body:not(.cms-mode) .rec-card-desc {
  font-size: 0.62rem; font-weight: 400; color: rgba(255,255,255,0.55);
  line-height: 1.4; margin-top: 2px;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical;
  overflow: hidden;
}
body:not(.cms-mode) .rec-card-body .test-card-uses {
  margin-top: auto;
  padding-top: 3px;
}

/* 入场动画 */
body:not(.cms-mode) .rec-card:nth-child(1) { animation-delay: 0.02s; }
body:not(.cms-mode) .rec-card:nth-child(2) { animation-delay: 0.06s; }
body:not(.cms-mode) .rec-card:nth-child(3) { animation-delay: 0.1s; }
body:not(.cms-mode) .rec-card:nth-child(4) { animation-delay: 0.14s; }
body:not(.cms-mode) .rec-card:nth-child(5) { animation-delay: 0.18s; }
body:not(.cms-mode) .rec-card:nth-child(6) { animation-delay: 0.22s; }

/* 入场动画 */
.beauty-anim-in { animation: bpIn 0.7s cubic-bezier(0.22, 1, 0.36, 1) both; }
@keyframes bpIn {
  from { opacity: 0; transform: translateY(16px); }
  to { opacity: 1; transform: translateY(0); }
}

/* ═══════════════════════════════════════════
   AI 颜值评分 — 支付页（递进式漏斗）
   ═══════════════════════════════════════════ */
@keyframes bpPulse {
  0%, 100% { transform: scale(1); opacity: 1; }
  50% { transform: scale(1.15); opacity: 0.8; }
}

/* 锁定结果预览（模糊雷达 + 分数） */
.beauty-pay-preview {
  position: relative; max-width: 300px; margin: 18px auto 6px;
  border-radius: 24px; padding: 26px 20px 30px; text-align: center;
  background: linear-gradient(160deg, rgba(255,107,157,0.14), rgba(160,107,255,0.1));
  border: 1px solid rgba(255,255,255,0.12);
  overflow: hidden;
}
.beauty-pay-preview::before {
  content: ''; position: absolute; top: -40px; left: 50%; transform: translateX(-50%);
  width: 200px; height: 200px; border-radius: 50%; pointer-events: none;
  background: radial-gradient(circle, rgba(255,107,157,0.28), transparent 70%);
}
.beauty-pay-score b {
  font-size: 3rem; font-weight: 900; line-height: 1;
  background: linear-gradient(120deg, #fff, #ffd166);
  -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent;
}
.beauty-pay-score span { font-size: 0.8rem; color: rgba(255,255,255,0.5); margin-left: 3px; }
.beauty-pay-tier {
  display: inline-block; margin: 8px 0 12px; padding: 3px 12px; border-radius: 999px;
  border: 1px solid currentColor; font-size: 0.78rem; font-weight: 800; letter-spacing: 0.1em;
  background: rgba(0,0,0,0.25);
}
.beauty-pay-radar {
  position: relative; width: 130px; height: 130px; margin: 0 auto;
  filter: blur(2.5px) brightness(0.7);
}
.beauty-pay-radar i {
  position: absolute; width: 6px; height: 6px; border-radius: 50%;
  background: rgba(255,255,255,0.6); transform: translate(-50%, -50%);
}
.beauty-pay-radar svg { width: 100%; height: 100%; }
.beauty-pay-mask {
  position: absolute; inset: 0; display: flex; flex-direction: column;
  align-items: center; justify-content: center; gap: 8px;
  background: rgba(8,8,16,0.42);
}
.beauty-pay-mask span { font-size: 2rem; filter: drop-shadow(0 3px 10px rgba(0,0,0,0.6)); }
.beauty-pay-mask em {
  font-style: normal; font-size: 0.78rem; font-weight: 700; color: rgba(255,255,255,0.9);
  background: rgba(0,0,0,0.4); padding: 4px 14px; border-radius: 999px;
  border: 1px solid rgba(255,255,255,0.18);
}

/* 三阶段方案 */
.beauty-pay-plans { margin-top: 18px; }
.beauty-pay-plan {
  position: relative; width: 100%; display: flex; align-items: center; gap: 13px;
  padding: 15px 16px; border-radius: 18px; cursor: pointer; text-align: left;
  border: 1px solid var(--bp-border); background: rgba(255,255,255,0.04);
  color: #fff; transition: transform 0.2s, border-color 0.2s, box-shadow 0.2s;
}
.beauty-pay-plan:active { transform: scale(0.98); }
.beauty-pay-plan:hover { border-color: rgba(255,107,157,0.55); }
.beauty-pay-ico {
  width: 42px; height: 42px; border-radius: 13px; flex-shrink: 0;
  display: flex; align-items: center; justify-content: center; font-size: 1.25rem;
  background: rgba(255,107,157,0.14); border: 1px solid rgba(255,107,157,0.3);
}
.beauty-pay-plan-name { font-size: 0.95rem; font-weight: 700; flex: 1; }
.beauty-pay-plan-price { font-size: 1.2rem; font-weight: 800; color: #fff; }
.beauty-pay-plan-tip {
  position: absolute; left: 70px; bottom: 5px;
  font-size: 0.66rem; color: rgba(255,255,255,0.4); font-weight: 400;
}
.beauty-pay-plan-hot {
  border-color: rgba(255,107,157,0.6);
  background: linear-gradient(150deg, rgba(255,107,157,0.18), rgba(160,107,255,0.14));
  box-shadow: 0 8px 30px rgba(255,107,157,0.18);
}
.beauty-pay-plan-ad { border-style: dashed; }
.beauty-pay-plan-ad .beauty-pay-ico { background: rgba(255,200,60,0.12); border-color: rgba(255,200,60,0.32); }
.beauty-pay-best {
  position: absolute; top: -10px; right: 14px; padding: 3px 10px; border-radius: 10px;
  background: linear-gradient(120deg, #ff6b9d, #a06bff); color: #fff;
  font-size: 0.6rem; font-weight: 800; letter-spacing: 0.5px;
}
.beauty-pay-free { color: #ffd166; }
.beauty-pay-decline {
  display: block; margin: 16px auto 0; background: none; border: none; cursor: pointer;
  color: rgba(255,255,255,0.45); font-size: 0.8rem; font-weight: 500;
  text-decoration: underline; text-underline-offset: 3px;
  transition: color 0.2s;
}
.beauty-pay-decline:active { color: var(--bp-accent); }
.beauty-pay-skip {
  display: block; margin: 14px auto 0; background: none; border: none; cursor: pointer;
  color: rgba(255,255,255,0.32); font-size: 0.76rem; font-weight: 500;
  text-decoration: underline; text-underline-offset: 3px;
}

/* ═══════════════════════════════════════════
   AI 颜值评分 — AI 分析报告（打字机窗口）
   ═══════════════════════════════════════════ */
.beauty-report-panel {
  background: linear-gradient(160deg, rgba(160,107,255,0.1), rgba(255,107,157,0.06) 60%, rgba(255,255,255,0.03));
  border-color: rgba(160,107,255,0.22);
  position: relative;
}
.beauty-report-panel::before {
  content: ''; position: absolute; top: 0; left: 0; right: 0; height: 1px;
  background: linear-gradient(90deg, transparent, rgba(160,107,255,0.5), transparent);
}
.beauty-report-head {
  display: flex; align-items: center; gap: 12px; margin-bottom: 14px;
  padding-bottom: 12px; border-bottom: 1px solid rgba(255,255,255,0.06);
}
.beauty-report-avatar {
  width: 40px; height: 40px; border-radius: 13px; flex-shrink: 0;
  display: flex; align-items: center; justify-content: center; font-size: 1.3rem;
  background: linear-gradient(145deg, rgba(255,107,157,0.25), rgba(160,107,255,0.25));
  border: 1px solid rgba(255,255,255,0.16);
  box-shadow: 0 4px 16px rgba(160,107,255,0.25);
}
.beauty-report-name { font-size: 0.88rem; font-weight: 800; color: #fff; }
.beauty-report-status {
  display: flex; align-items: center; gap: 6px;
  font-size: 0.7rem; color: rgba(255,255,255,0.45); margin-top: 2px;
}
.bp-status-dot {
  width: 7px; height: 7px; border-radius: 50%;
  background: #4dd8ff; box-shadow: 0 0 8px #4dd8ff;
  animation: bpBlink 1.6s ease-in-out infinite;
}
@keyframes bpBlink { 0%, 100% { opacity: 1; } 50% { opacity: 0.35; } }
.beauty-report-badge {
  margin-left: auto; padding: 3px 10px; border-radius: 8px;
  background: linear-gradient(120deg, rgba(255,107,157,0.25), rgba(160,107,255,0.25));
  border: 1px solid rgba(255,107,157,0.4);
  color: #ffc9dd; font-size: 0.62rem; font-weight: 800; letter-spacing: 0.08em;
}
.beauty-report-body {
  font-size: 0.85rem; line-height: 1.85; color: rgba(255,255,255,0.85);
  min-height: 96px;
}
.bp-report-line { margin-bottom: 9px; transition: opacity 0.4s; }
.bp-report-line:last-child { margin-bottom: 0; }
.bp-report-line::after {
  content: '▍'; color: var(--bp-accent); margin-left: 2px;
  animation: bpCursor 0.9s steps(2) infinite;
}
.beauty-report-body.bp-report-done .bp-report-line::after { content: ''; }
@keyframes bpCursor { 0% { opacity: 1; } 50% { opacity: 0; } 100% { opacity: 1; } }

/* ═══════════════════════════════════════════
   测试板块 — 中英文切换胶囊
   ═══════════════════════════════════════════ */
.bp-lang-toggle {
  display: inline-flex; align-items: center; gap: 2px;
  padding: 3px; border-radius: 999px;
  background: rgba(255,255,255,0.06);
  border: 1px solid rgba(255,255,255,0.1);
  flex-shrink: 0;
}
.bp-lang-opt {
  padding: 4px 12px; border-radius: 999px; cursor: pointer;
  font-size: 0.74rem; font-weight: 700; color: rgba(255,255,255,0.5);
  transition: background 0.2s, color 0.2s;
  user-select: none; -webkit-user-select: none;
}
.bp-lang-opt:active { transform: scale(0.95); }
.bp-lang-opt.active {
  background: linear-gradient(120deg, var(--bp-accent, #ff6b9d), var(--bp-accent2, #a06bff));
  color: #fff; box-shadow: 0 2px 10px rgba(255,107,157,0.3);
}
.bp-lang-sep { width: 1px; height: 14px; background: rgba(255,255,255,0.15); }

/* 紧凑版（用于 back-header） */
.bp-lang-toggle-compact .bp-lang-opt { padding: 3px 9px; font-size: 0.68rem; }
.bp-lang-toggle-compact { padding: 2px; }

/* ═══════════════════════════════════════════
   颜值卡片（beauty cards）— 6 种样式 · 3:4 竖版
   ═══════════════════════════════════════════ */
.beauty-cards-carousel {
  position: relative; overflow-x: auto; scroll-snap-type: x mandatory;
  scrollbar-width: none; -ms-overflow-style: none;
  margin: 0 -18px; padding: 4px 18px 10px;
}
.beauty-cards-carousel::-webkit-scrollbar { display: none; }
.beauty-cards-track {
  display: flex; gap: 12px;
}
/* 仅一张精品卡时：居中并放大，突出主卡 */
.beauty-cards-track:has(> .bp-card:only-child) {
  justify-content: center;
}
.beauty-cards-track:has(> .bp-card:only-child) .bp-card {
  width: 252px;
}
.beauty-cards-track .bp-card {
  flex: 0 0 auto; width: 200px; aspect-ratio: 3/4;
  scroll-snap-align: center;
  border-radius: 22px; overflow: hidden;
  position: relative; isolation: isolate;
  box-shadow: 0 14px 40px rgba(0,0,0,0.32);
  transition: transform 0.22s cubic-bezier(0.22,1,0.36,1), box-shadow 0.22s;
}
.beauty-cards-track .bp-card:hover { transform: translateY(-3px); box-shadow: 0 14px 40px rgba(255,107,157,0.2); }
.beauty-cards-track .bp-card:active { transform: scale(0.97); }
.bp-card-photo {
  position: absolute; inset: 0; z-index: -2;
}
.bp-card-photo img { width: 100%; height: 100%; object-fit: cover; }
.bp-photo-fallback {
  display: flex; align-items: center; justify-content: center;
  background: linear-gradient(160deg, #2a2a3e, #1a1a2e);
  color: rgba(255,255,255,0.5); font-size: 0.78rem; letter-spacing: 1px;
}
.bp-card-overlay {
  position: absolute; inset: 0; z-index: -1;
  background: linear-gradient(180deg, rgba(8,8,16,0.05) 0%, rgba(8,8,16,0.16) 36%, rgba(8,8,16,0.6) 70%, rgba(8,8,16,0.94) 100%);
}
.bp-card-content {
  position: absolute; left: 0; right: 0; bottom: 0; z-index: 1;
  padding: 16px 15px 18px; color: #fff;
}
.bp-card-score { display: flex; align-items: baseline; gap: 5px; }
.bp-card-score b {
  font-size: 2.2rem; font-weight: 900; line-height: 1;
  background: linear-gradient(120deg, #fff, #ffe3a3);
  -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent;
}
.bp-card-score span { font-size: 0.72rem; color: rgba(255,255,255,0.6); }
.bp-card-tier {
  font-size: 0.72rem; font-weight: 800; letter-spacing: 0.08em;
  margin: 3px 0 7px; text-shadow: 0 1px 6px rgba(0,0,0,0.5);
}
.bp-card-dims {
  display: flex; flex-wrap: wrap; gap: 4px; margin-bottom: 8px;
}
.bp-card-dims i {
  font-style: normal; font-size: 0.62rem; padding: 3px 8px;
  border-radius: 999px; background: rgba(255,255,255,0.12);
  border: 1px solid rgba(255,255,255,0.18);
  backdrop-filter: blur(4px); color: rgba(255,255,255,0.92);
}
.bp-card-tagline {
  font-size: 0.74rem; line-height: 1.5; color: rgba(255,255,255,0.82);
  margin-bottom: 9px; text-shadow: 0 1px 4px rgba(0,0,0,0.5);
}
.bp-card-brand {
  font-size: 0.58rem; letter-spacing: 0.16em; color: rgba(255,255,255,0.5);
  border-top: 1px solid rgba(255,255,255,0.12); padding-top: 8px;
  text-transform: uppercase;
}
.bp-card-top {
  position: absolute; left: 0; right: 0; top: 0; z-index: 2;
  display: flex; justify-content: space-between; align-items: center;
  padding: 12px 12px;
  pointer-events: none;
}
.bp-card-serno {
  font-size: 0.55rem; font-weight: 800; letter-spacing: 0.22em;
  color: rgba(255,255,255,0.85);
  background: rgba(0,0,0,0.28); backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px);
  padding: 3px 7px; border-radius: 999px;
  border: 1px solid rgba(255,255,255,0.16);
}
.bp-card-series {
  font-size: 0.52rem; font-weight: 700; letter-spacing: 0.14em;
  color: rgba(255,255,255,0.9); text-transform: uppercase;
  background: rgba(0,0,0,0.28); backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px);
  padding: 3px 8px; border-radius: 999px;
  border: 1px solid rgba(255,255,255,0.16);
  max-width: 56%; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
/* 白底主题的顶部标签反色 */
.bp-card.theme-minimal .bp-card-serno,
.bp-card.theme-minimal .bp-card-series,
.bp-card.theme-magazine .bp-card-serno,
.bp-card.theme-magazine .bp-card-series {
  color: rgba(20,20,20,0.85);
  background: rgba(255,255,255,0.72); border-color: rgba(0,0,0,0.08);
  backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px);
}
.beauty-cards-dots {
  display: flex; justify-content: center; gap: 5px; margin-top: 10px;
}
.bp-card-dot {
  width: 5px; height: 5px; border-radius: 50%;
  background: rgba(255,255,255,0.22); transition: all 0.25s;
}
.bp-card-dot.active { background: var(--bp-accent, #ff6b9d); transform: scale(1.45); }

/* ── 6 种主题（高级感升级版）── */

/* 1. Neon 霓虹灯牌：深黑底 + 粉紫灯管发光 + 扫描微光 */
.bp-card.theme-neon {
  border: 1.5px solid rgba(255,107,157,0.7);
  box-shadow: 0 0 26px rgba(255,107,157,0.3), 0 0 60px rgba(160,107,255,0.12), 0 10px 34px rgba(0,0,0,0.5);
}
.bp-card.theme-neon::before {
  content: ''; position: absolute; inset: 0; z-index: 0; pointer-events: none;
  background:
    radial-gradient(120% 60% at 50% -10%, rgba(255,107,157,0.22), transparent 60%),
    radial-gradient(120% 60% at 50% 110%, rgba(160,107,255,0.18), transparent 60%);
}
.bp-card.theme-neon .bp-card-photo { filter: saturate(1.35) contrast(1.1) brightness(0.9); }
.bp-card.theme-neon .bp-card-overlay {
  background: linear-gradient(180deg, rgba(18,8,31,0.05) 0%, rgba(18,8,31,0.45) 45%, #12081f 96%);
}
.bp-card.theme-neon .bp-card-content::before {
  content: ''; position: absolute; left: 12px; right: 12px; top: -10px;
  height: 2px; border-radius: 2px;
  background: linear-gradient(90deg, #ff6b9d, #a06bff, #4dd8ff);
  box-shadow: 0 0 12px rgba(255,107,157,0.9), 0 0 26px rgba(160,107,255,0.5);
  animation: bpNeonHue 3.5s linear infinite;
}
@keyframes bpNeonHue {
  0%, 100% { filter: hue-rotate(0deg); opacity: 1; }
  50% { filter: hue-rotate(30deg); opacity: 0.85; }
}
.bp-card.theme-neon .bp-card-score b {
  background: linear-gradient(120deg, #ff9ec4, #c9a6ff);
  -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent;
  filter: drop-shadow(0 0 10px rgba(255,107,157,0.55));
}
.bp-card.theme-neon .bp-card-tier {
  display: inline-block; padding: 2px 8px; border-radius: 999px;
  background: rgba(255,107,157,0.16); border: 1px solid rgba(255,107,157,0.5);
  text-shadow: 0 0 8px rgba(255,107,157,0.8);
}
.bp-card.theme-neon .bp-card-dims i {
  background: rgba(77,216,255,0.1); border-color: rgba(77,216,255,0.35); color: #bdf3ff;
}

/* 2. Minimal 极简高定：米白底 + 细线框 + 衬线数字 + 单行小标 */
.bp-card.theme-minimal {
  background: #fafaf7;
  box-shadow: 0 14px 36px rgba(0,0,0,0.2);
}
.bp-card.theme-minimal::after {
  content: ''; position: absolute; inset: 0; z-index: 0; pointer-events: none;
  border-radius: 18px; border: 1px solid rgba(0,0,0,0.05);
}
.bp-card.theme-minimal .bp-card-photo {
  filter: grayscale(0.2) contrast(1.03);
  mask-image: linear-gradient(180deg, #000 0%, #000 62%, transparent 100%);
  -webkit-mask-image: linear-gradient(180deg, #000 0%, #000 62%, transparent 100%);
}
.bp-card.theme-minimal .bp-card-overlay { background: linear-gradient(180deg, rgba(255,255,255,0) 40%, rgba(250,250,247,0.96) 100%); }
.bp-card.theme-minimal .bp-card-content { color: #1a1a1a; }
.bp-card.theme-minimal .bp-card-score b {
  background: linear-gradient(120deg, #1a1a1a, #4a4a4a);
  -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent;
  font-family: 'Georgia', 'Times New Roman', serif; font-weight: 400; font-size: 2.6rem;
  letter-spacing: 0.01em;
}
.bp-card.theme-minimal .bp-card-score span { color: #999; font-size: 0.62rem; letter-spacing: 0.12em; text-transform: uppercase; }
.bp-card.theme-minimal .bp-card-tier {
  color: #8a6534 !important; font-weight: 500; letter-spacing: 0.22em;
  text-transform: uppercase; font-size: 0.6rem;
}
.bp-card.theme-minimal .bp-card-dims i {
  background: transparent; border: none; color: #8a8a86; padding: 1px 3px;
  font-size: 0.56rem; letter-spacing: 0.04em;
}
.bp-card.theme-minimal .bp-card-dims i::after { content: ' ·'; color: #ccc; }
.bp-card.theme-minimal .bp-card-dims i:last-child::after { content: ''; }
.bp-card.theme-minimal .bp-card-tagline {
  color: #666; font-size: 0.68rem; font-style: italic; font-family: 'Georgia', serif;
}
.bp-card.theme-minimal .bp-card-brand {
  color: #aaa; font-size: 0.52rem; letter-spacing: 0.3em; border-top-color: #e8e8e4;
  font-weight: 500;
}

/* 3. Vintage 复古金章：羊皮纸 + 双线描边 + 徽章印章 */
.bp-card.theme-vintage {
  border: 3px double #b08d57;
  border-radius: 10px;
  box-shadow: 0 14px 34px rgba(90,70,35,0.35);
}
.bp-card.theme-vintage::before {
  content: ''; position: absolute; inset: 0; z-index: 0; pointer-events: none;
  background:
    radial-gradient(circle at 50% 22%, transparent 58%, rgba(176,141,87,0.5) 60%, transparent 63%),
    radial-gradient(circle at 50% 22%, transparent 62%, rgba(176,141,87,0.35) 64%, transparent 68%);
}
.bp-card.theme-vintage .bp-card-photo { filter: sepia(0.45) contrast(0.97) brightness(0.95); }
.bp-card.theme-vintage .bp-card-overlay {
  background: linear-gradient(180deg, rgba(245,239,224,0) 35%, rgba(245,239,224,0.95) 100%);
}
.bp-card.theme-vintage .bp-card-content { color: #4a3a20; }
.bp-card.theme-vintage .bp-card-score b {
  background: linear-gradient(120deg, #8b6914, #c9a227);
  -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent;
  font-family: 'Georgia', serif; font-weight: 400;
}
.bp-card.theme-vintage .bp-card-score span { color: #8a7048; letter-spacing: 0.1em; }
.bp-card.theme-vintage .bp-card-tier {
  display: inline-block; padding: 2px 10px; border-radius: 999px;
  background: #b08d57; color: #faf5e8 !important;
  font-size: 0.6rem; letter-spacing: 0.14em; text-transform: uppercase;
  box-shadow: 0 2px 6px rgba(90,70,35,0.3);
}
.bp-card.theme-vintage .bp-card-dims i {
  background: rgba(176,141,87,0.12); border: 1px solid rgba(176,141,87,0.35); color: #6b5230;
}
.bp-card.theme-vintage .bp-card-tagline { color: #5a4a30; font-family: 'Georgia', serif; font-style: italic; }
.bp-card.theme-vintage .bp-card-brand { color: #8a7048; border-top-color: rgba(176,141,87,0.4); letter-spacing: 0.18em; }

/* 4. Cosmic 星轨：深空紫 + 星尘 + 星环光晕 */
.bp-card.theme-cosmic {
  border: 1.5px solid rgba(130,130,220,0.55);
  box-shadow: 0 0 30px rgba(130,130,220,0.25), 0 0 70px rgba(90,90,180,0.12), 0 10px 34px rgba(0,0,0,0.5);
}
.bp-card.theme-cosmic::before {
  content: ''; position: absolute; inset: 0; z-index: 0; pointer-events: none;
  background:
    radial-gradient(60% 40% at 50% 105%, rgba(160,120,255,0.25), transparent 70%);
}
.bp-card.theme-cosmic .bp-card-photo { filter: brightness(0.85) saturate(1.15) contrast(1.05); }
.bp-card.theme-cosmic .bp-card-overlay {
  background:
    radial-gradient(1px 1px at 20% 30%, rgba(255,255,255,0.9), transparent),
    radial-gradient(1px 1px at 70% 20%, rgba(255,255,255,0.8), transparent),
    radial-gradient(1.5px 1.5px at 45% 55%, rgba(255,255,255,0.7), transparent),
    radial-gradient(1px 1px at 85% 65%, rgba(255,255,255,0.8), transparent),
    radial-gradient(1px 1px at 30% 80%, rgba(255,255,255,0.6), transparent),
    radial-gradient(1.2px 1.2px at 60% 40%, rgba(180,160,255,0.9), transparent),
    radial-gradient(1px 1px at 12% 72%, rgba(255,255,255,0.7), transparent),
    linear-gradient(180deg, rgba(10,10,46,0.1) 0%, rgba(10,10,46,0.6) 55%, #0a0a2e 96%);
}
.bp-card.theme-cosmic .bp-card-score b {
  background: linear-gradient(120deg, #e0d8ff, #a89bf0);
  -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent;
  filter: drop-shadow(0 0 12px rgba(160,120,255,0.5));
}
.bp-card.theme-cosmic .bp-card-tier {
  display: inline-block; padding: 2px 9px; border-radius: 999px;
  background: rgba(130,130,220,0.2); border: 1px solid rgba(160,140,255,0.55);
  color: #e6e0ff !important; text-shadow: 0 0 10px rgba(160,120,255,0.7);
}
.bp-card.theme-cosmic .bp-card-dims i {
  background: rgba(130,130,220,0.18); border-color: rgba(130,130,220,0.45); color: #ddd8ff;
}
.bp-card.theme-cosmic .bp-card-tagline { color: #c8c2f5; }
.bp-card.theme-cosmic .bp-card-brand { color: #8b82c4; border-top-color: rgba(130,130,220,0.3); }

/* 5. Magazine 高定封面：纯白 + 大刊头 + 品红标题 + 色条 */
.bp-card.theme-magazine {
  background: #ffffff;
  border-radius: 8px;
  border: 1px solid #e5e5e5;
  box-shadow: 0 14px 36px rgba(0,0,0,0.18);
}
.bp-card.theme-magazine::after {
  content: ''; position: absolute; left: 0; right: 0; top: 0; height: 3px; z-index: 2;
  background: linear-gradient(90deg, #ff2d78, #a02dff);
}
.bp-card.theme-magazine .bp-card-photo { filter: grayscale(0.15) contrast(1.05) brightness(0.98); }
.bp-card.theme-magazine .bp-card-overlay {
  background: linear-gradient(180deg, rgba(255,255,255,0) 52%, rgba(255,255,255,0.97) 100%);
}
.bp-card.theme-magazine .bp-card-content { color: #111; }
.bp-card.theme-magazine .bp-card-content::before {
  content: 'BEAUTY · VOL.01'; position: absolute; top: -52px; left: 0;
  font-size: 0.56rem; font-weight: 900; letter-spacing: 0.34em;
  color: #111; opacity: 0.85;
}
.bp-card.theme-magazine .bp-card-score b {
  background: linear-gradient(120deg, #ff2d78, #a02dff);
  -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent;
  font-family: 'Georgia', serif; font-size: 2.7rem; font-weight: 700;
  letter-spacing: -0.02em;
}
.bp-card.theme-magazine .bp-card-score span { color: #666; font-weight: 700; letter-spacing: 0.1em; }
.bp-card.theme-magazine .bp-card-tier {
  color: #ff2d78 !important; font-size: 0.62rem; letter-spacing: 0.18em;
  text-transform: uppercase; font-weight: 900;
}
.bp-card.theme-magazine .bp-card-dims i {
  background: #fff; border: 1px solid #ff2d78; color: #ff2d78; font-weight: 700;
}
.bp-card.theme-magazine .bp-card-tagline { color: #444; font-style: italic; font-family: 'Georgia', serif; }
.bp-card.theme-magazine .bp-card-brand { color: #999; border-top-color: #eee; letter-spacing: 0.22em; }

/* 6. Gradient 流光渐层：深底 + 彩光晕 + 玻璃拟态 chips */
.bp-card.theme-gradient {
  border-radius: 22px;
  box-shadow: 0 0 40px rgba(160,107,255,0.25), 0 14px 40px rgba(0,0,0,0.45);
}
.bp-card.theme-gradient .bp-card-photo { filter: saturate(1.25) hue-rotate(-8deg) brightness(0.9); }
.bp-card.theme-gradient .bp-card-overlay {
  background: linear-gradient(180deg,
    rgba(255,107,157,0.3) 0%, rgba(160,107,255,0.35) 40%,
    rgba(77,216,255,0.4) 68%, rgba(26,16,48,0.93) 100%);
  mix-blend-mode: multiply;
}
.bp-card.theme-gradient .bp-card-content::before {
  content: ''; position: absolute; inset: -2px; border-radius: 22px; z-index: -1;
  background: linear-gradient(135deg, #ff6b9d, #a06bff, #4dd8ff, #ffd166);
  background-size: 300% 300%;
  opacity: 0.75; filter: blur(2px);
  animation: bpGradFlow 5s ease-in-out infinite;
}
@keyframes bpGradFlow {
  0%, 100% { background-position: 0% 50%; }
  50% { background-position: 100% 50%; }
}
.bp-card.theme-gradient .bp-card-score b {
  background: linear-gradient(120deg, #fff, #ffd166);
  -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent;
  filter: drop-shadow(0 0 14px rgba(255,209,102,0.4));
}
.bp-card.theme-gradient .bp-card-tier {
  display: inline-block; padding: 2px 9px; border-radius: 999px;
  background: rgba(255,255,255,0.18); border: 1px solid rgba(255,255,255,0.45);
  backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px);
}
.bp-card.theme-gradient .bp-card-dims i {
  background: rgba(255,255,255,0.2); border-color: rgba(255,255,255,0.5); color: #fff;
  backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px);
}
/* 大图 overlay 里卡片铺满 */
#beauty-card-overlay .bp-card,
#pm-card-overlay .bp-card,
#quiz-card-overlay .bp-card {
  width: min(88vw, 360px); aspect-ratio: 3/4;
  border-radius: 26px; box-shadow: 0 24px 70px rgba(0,0,0,0.6);
  position: relative;       /* 锚点：让 .bp-card-photo/.bp-card-overlay 正确锚定到此卡内 */
  overflow: hidden;          /* 防止 absolute 子元素溢出铺满 viewport */
  flex-shrink: 0;            /* 横向滚动不被压缩 */
  isolation: isolate;        /* 关键：负 z-index 的照片/遮罩锚定在卡内层叠上下文（否则白底主题盖住照片） */
  transition: transform 0.3s cubic-bezier(0.22,1,0.36,1);
}
#beauty-card-overlay .bp-card:hover,
#pm-card-overlay .bp-card:hover,
#quiz-card-overlay .bp-card:hover { transform: scale(1.015); }
#beauty-card-overlay .bp-card .bp-card-content,
#pm-card-overlay .bp-card .bp-card-content,
#quiz-card-overlay .bp-card .bp-card-content { padding: 22px 24px 26px; }
#beauty-card-overlay .bp-card-score b,
#pm-card-overlay .bp-card-score b,
#quiz-card-overlay .bp-card-score b { font-size: 3.4rem; }
#beauty-card-overlay .bp-card-tier,
#pm-card-overlay .bp-card-tier,
#quiz-card-overlay .bp-card-tier { font-size: 0.86rem; padding: 4px 12px; }
#beauty-card-overlay .bp-card-dims,
#pm-card-overlay .bp-card-dims,
#quiz-card-overlay .bp-card-dims { gap: 6px; }
#beauty-card-overlay .bp-card-dims i,
#pm-card-overlay .bp-card-dims i,
#quiz-card-overlay .bp-card-dims i { font-size: 0.68rem; padding: 4px 10px; }
#beauty-card-overlay .bp-card-tagline,
#pm-card-overlay .bp-card-tagline,
#quiz-card-overlay .bp-card-tagline { font-size: 0.9rem; line-height: 1.5; margin-bottom: 12px; }
#beauty-card-overlay .bp-card-brand,
#pm-card-overlay .bp-card-brand,
#quiz-card-overlay .bp-card-brand { font-size: 0.7rem; padding-top: 9px; }
.bp-ov-bar {
  position: fixed; bottom: 18px; left: 50%; transform: translateX(-50%);
  z-index: 100010;
  display: flex; align-items: center; gap: 14px;
  padding: 8px 12px;
  border-radius: 999px;
  background: rgba(20, 20, 34, 0.72);
  border: 1px solid rgba(255, 255, 255, 0.14);
  backdrop-filter: blur(16px) saturate(1.4); -webkit-backdrop-filter: blur(16px) saturate(1.4);
  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.45);
  max-width: calc(100vw - 32px);
}
.bp-ov-bar .bp-ov-btn {
  white-space: nowrap; flex: 0 0 auto;
}
.bp-ov-bar .bp-ov-dots {
  display: flex; align-items: center; gap: 7px;
  padding: 0 2px;
}
.bp-ov-bar .bp-ov-dots span {
  width: 6px; height: 6px; border-radius: 50%;
  background: rgba(255, 255, 255, 0.3);
  transition: all 0.3s;
}
.bp-ov-btn {
  padding: 10px 22px; border-radius: 999px; border: none;
  background: linear-gradient(135deg, rgba(255,107,157,0.85), rgba(160,107,255,0.85));
  color: #fff; font-size: 0.8rem; font-weight: 700;
  cursor: pointer;
  transition: transform 0.2s, filter 0.2s;
}
.bp-ov-btn:hover { filter: brightness(1.15); }
.bp-ov-btn:active { transform: scale(0.94); }

/* ═══ MBTI 专属结果页 ═══ */
.mbti-result { min-height: 100vh; color: #fff; }
.mbti-hero {
  position: relative; height: 340px;
  aspect-ratio: 4/3;
  background: linear-gradient(160deg, #1a1633 0%, #2d1b4e 40%, #0a0a12 100%);
  background-size: cover; background-position: center;
  display: flex; align-items: flex-end;
  overflow: hidden;
}
/* 16 型头图：竖版角色插画在横向条幅里上移取景，保证人物头部与光环完整 */
[data-quiz="mbti"] .mbti-hero { background-position: center 30%; }
.mbti-hero-mask {
  position: absolute; inset: 0;
  background: linear-gradient(180deg, rgba(10,10,18,0.28) 0%, rgba(10,10,18,0.62) 52%, rgba(8,8,16,0.94) 82%, #0a0a12 100%);
}
.mbti-hero-content {
  position: relative; z-index: 2;
  padding: 20px 22px 26px; width: 100%;
}
.mbti-type-badge {
  display: inline-flex; align-items: center;
  padding: 5px 14px; border-radius: 999px;
  background: linear-gradient(135deg, rgba(139,123,255,0.9), rgba(108,77,240,0.9));
  color: #fff; font-size: 0.78rem; font-weight: 800; letter-spacing: 2px;
  box-shadow: 0 4px 18px rgba(139,123,255,0.45);
  margin-bottom: 10px;
}
.mbti-hero-name {
  font-size: 2.4rem; font-weight: 900; line-height: 1.1;
  color: #fff;
  text-shadow: 0 1px 3px rgba(0,0,0,0.85), 0 2px 24px rgba(0,0,0,0.7);
}
.mbti-hero-sub {
  margin-top: 6px; font-size: 0.88rem;
  color: rgba(255,255,255,0.9);
  text-shadow: 0 1px 3px rgba(0,0,0,0.85), 0 1px 10px rgba(0,0,0,0.6);
}
.mbti-body { padding: 0 16px 10px; }
.mbti-body .beauty-panel { margin-top: 14px; }
.mbti-desc {
  font-size: 0.92rem; line-height: 1.75;
  color: rgba(255,255,255,0.78);
}
.mbti-tags { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 14px; }
.mbti-tags span {
  padding: 5px 13px; border-radius: 999px;
  font-size: 0.74rem; font-weight: 600;
  background: rgba(139,123,255,0.14);
  border: 1px solid rgba(139,123,255,0.35);
  color: #c4baff;
}
.mbti-careers { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-top: 6px; }
.mbti-career {
  display: flex; align-items: center; gap: 9px;
  padding: 11px 13px; border-radius: 12px;
  background: rgba(255,255,255,0.045);
  border: 1px solid rgba(255,255,255,0.07);
  font-size: 0.83rem; color: rgba(255,255,255,0.82);
}
.mbti-career span {
  flex: 0 0 22px; height: 22px; border-radius: 7px;
  display: flex; align-items: center; justify-content: center;
  font-size: 0.7rem; font-weight: 800;
  background: linear-gradient(135deg, var(--qc1, #8b7bff), var(--qc2, #6c4df0));
  color: #fff;
}
.mbti-dim { margin-top: 14px; }
.mbti-dim-head {
  display: flex; align-items: center; justify-content: space-between;
  margin-bottom: 7px;
}
.mbti-dim-side {
  font-size: 0.8rem; font-weight: 700;
  color: rgba(255,255,255,0.38);
  transition: color 0.3s;
}
.mbti-dim-side.on { color: #c4baff; }
.mbti-dim-vals { display: flex; align-items: baseline; gap: 6px; }
.mbti-dim-vals b { font-size: 0.95rem; color: #fff; }
.mbti-dim-vals em {
  font-style: normal; font-size: 0.66rem;
  color: rgba(255,255,255,0.35);
}
.mbti-dim-bar {
  position: relative; height: 8px; border-radius: 99px;
  background: rgba(255,255,255,0.08);
}
.mbti-dim-bar i {
  position: absolute; top: 50%; transform: translate(-50%, -50%);
  width: 14px; height: 14px; border-radius: 50%;
  background: linear-gradient(135deg, #8b7bff, #6c4df0);
  border: 3px solid #0a0a12;
  box-shadow: 0 0 12px rgba(139,123,255,0.8);
}

/* ═══ 九型人格专属结果页：能量分布条 ═══ */
.pg-dist { margin-top: 12px; }
.pg-dist-head {
  display: flex; align-items: center; justify-content: space-between;
  margin-bottom: 6px;
}
.pg-dist-name { font-size: 0.8rem; font-weight: 700; color: rgba(255,255,255,0.6); }
.pg-dist-top .pg-dist-name { color: #ff9ec5; }
.pg-dist-val { font-size: 0.78rem; font-weight: 800; color: rgba(255,255,255,0.5); }
.pg-dist-top .pg-dist-val { color: #ff6b9d; }
.pg-dist-bar {
  position: relative; height: 8px; border-radius: 99px;
  background: rgba(255,255,255,0.08);
  overflow: hidden;
}
.pg-dist-bar i {
  display: block; height: 100%; border-radius: 99px;
  width: 0%;
  background: linear-gradient(90deg, rgba(255,255,255,0.14), rgba(255,255,255,0.24));
  transition: width 0.6s cubic-bezier(0.22, 1, 0.36, 1);
}
.pg-dist-top .pg-dist-bar i {
  background: linear-gradient(90deg, #ff6b9d, #a06bff);
  box-shadow: 0 0 12px rgba(255,107,157,0.55);
}

/* ═══ BMI 输入题：滑杆 + 大数字 ═══ */
.bmi-input-box {
  margin-top: 26px; padding: 30px 22px 26px;
  border-radius: 20px; text-align: center;
  background: linear-gradient(160deg, rgba(255,184,107,0.12), rgba(255,107,157,0.10));
  border: 1px solid rgba(255,184,107,0.22);
  position: relative; overflow: hidden;
}
.bmi-input-box::before {
  content: ''; position: absolute; inset: 0;
  background: radial-gradient(circle at 50% 0%, rgba(255,184,107,0.16), transparent 60%);
  pointer-events: none;
}
.bmi-input-ico { font-size: 2.6rem; margin-bottom: 8px; filter: drop-shadow(0 4px 12px rgba(255,184,107,0.4)); }
.bmi-input-value {
  display: flex; align-items: baseline; justify-content: center; gap: 8px;
  margin-bottom: 6px;
}
.bmi-input-value b {
  font-size: 3.4rem; font-weight: 900; line-height: 1;
  background: linear-gradient(120deg, #ffd166, #ff8fb3);
  -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent;
}
.bmi-input-value span { font-size: 1.1rem; font-weight: 700; color: rgba(255,255,255,0.7); }
.bmi-input-sub { font-size: 0.82rem; color: rgba(255,255,255,0.45); margin-bottom: 22px; }
.bmi-input-slider { position: relative; padding: 6px 0; }
.bmi-range {
  position: relative; z-index: 2; width: 100%; height: 28px;
  -webkit-appearance: none; appearance: none; background: transparent; outline: none; cursor: pointer;
}
.bmi-range::-webkit-slider-thumb {
  -webkit-appearance: none; appearance: none;
  width: 26px; height: 26px; border-radius: 50%;
  background: linear-gradient(135deg, #ffd166, #ff8fb3);
  border: 3px solid #1a1428;
  box-shadow: 0 0 0 4px rgba(255,184,107,0.25), 0 0 16px rgba(255,143,179,0.6);
  margin-top: 0;
}
.bmi-range::-moz-range-thumb {
  width: 26px; height: 26px; border-radius: 50%;
  background: linear-gradient(135deg, #ffd166, #ff8fb3);
  border: 3px solid #1a1428;
  box-shadow: 0 0 0 4px rgba(255,184,107,0.25), 0 0 16px rgba(255,143,179,0.6);
}
.bmi-range-track {
  position: absolute; top: 50%; left: 0; right: 0; transform: translateY(-50%);
  height: 8px; border-radius: 99px; background: rgba(255,255,255,0.10);
  overflow: hidden; pointer-events: none;
}
.bmi-range-fill {
  display: block; height: 100%; border-radius: 99px;
  background: linear-gradient(90deg, #ffd166, #ff8fb3);
  box-shadow: 0 0 10px rgba(255,184,107,0.5);
  transition: width 0.12s linear;
}
.bmi-input-scale {
  display: flex; justify-content: space-between; margin-top: 6px;
  font-size: 0.72rem; color: rgba(255,255,255,0.4);
}
.bmi-weight-key {
  margin-top: 16px; padding: 9px 20px; border-radius: 999px;
  background: rgba(255,255,255,0.08); border: 1px solid rgba(255,255,255,0.16);
  color: rgba(255,255,255,0.8); font-size: 0.8rem; font-weight: 700;
  transition: all 0.25s;
}
.bmi-weight-key:active { transform: scale(0.95); background: rgba(255,255,255,0.14); }

/* ═══ 职业倾向专属结果页 ═══ */
/* 头图：六型各一张原创静物底图（器物 / 场景，无真人无标志），压低文字区保证可读 */
.career-hero { height: 330px; background-position: center; }
[data-quiz="career"] .career-hero-mask {
  background: linear-gradient(180deg, rgba(4,10,18,0.10) 0%, rgba(4,10,18,0.24) 34%, rgba(4,10,18,0.72) 66%, rgba(3,8,15,0.94) 88%, #03080f 100%);
}
.career-hero-label {
  font-size: 0.66rem; font-weight: 800; letter-spacing: 0.22em;
  color: rgba(255,255,255,0.62); margin-bottom: 8px;
  text-shadow: 0 1px 6px rgba(0,0,0,0.8);
}
/* 兴趣代码：跟结果卡同一个主视觉，头图上一眼看懂是哪三型 */
.career-hero-code {
  font-size: 3.4rem; font-weight: 900; line-height: 1; color: #fff;
  letter-spacing: 0.08em;
  text-shadow: 0 2px 6px rgba(0,0,0,0.9), 0 4px 30px rgba(0,0,0,0.8);
}
.career-hero-cat {
  display: inline-flex; align-items: center; margin-top: 12px;
  padding: 6px 15px; border-radius: 999px;
  font-size: 0.9rem; font-weight: 900; letter-spacing: 0.02em; color: #fff;
  background: var(--zs, rgba(255,255,255,0.16));
  border: 1px solid var(--zc, rgba(255,255,255,0.3));
  box-shadow: 0 4px 20px var(--zg, rgba(0,0,0,0.4));
  backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px);
}
[data-quiz="career"] .mbti-hero-sub { color: rgba(255,255,255,0.82); letter-spacing: 0.02em; margin-top: 10px; }

/* 职业倾向结果卡：卡面是 canvas 合成的整图（兴趣代码 + 六型雷达 + 得分），保存/分享与屏幕一致 */
.bp-card.card-career.bp-v0 {
  border: 1.5px solid var(--zb, rgba(79,172,254,0.55));
  box-shadow: 0 0 24px var(--zg, rgba(79,172,254,0.22)), 0 10px 34px rgba(0,0,0,0.5);
  background: linear-gradient(160deg, #0b2136, #050f1a);
}
.bp-card .career-card-img {
  position: absolute; inset: 0; display: block;
  width: 100%; height: 100%; object-fit: cover;
}

/* ═══ BMI 专属结果页 ═══ */
.bmi-hero { height: 330px; }
[data-quiz="bmi"] .bmi-hero-mask {
  background: linear-gradient(180deg, rgba(6,14,16,0.10) 0%, rgba(6,14,16,0.22) 38%, rgba(6,14,16,0.72) 68%, rgba(6,12,14,0.94) 88%, #060c0e 100%);
}
.bmi-hero-label {
  font-size: 0.66rem; font-weight: 800; letter-spacing: 0.22em;
  color: rgba(255,255,255,0.62); margin-bottom: 8px;
  text-shadow: 0 1px 6px rgba(0,0,0,0.8);
}
.bmi-hero-main { display: flex; align-items: center; gap: 12px; }
.bmi-hero-num {
  font-size: 3.3rem; font-weight: 900; line-height: 1; color: #fff;
  letter-spacing: -0.02em;
  font-variant-numeric: tabular-nums;
  text-shadow: 0 2px 6px rgba(0,0,0,0.9), 0 4px 30px rgba(0,0,0,0.8);
}
.bmi-hero-cat {
  display: inline-flex; align-items: center;
  padding: 6px 15px; border-radius: 999px;
  font-size: 0.92rem; font-weight: 900; letter-spacing: 0.02em;
  color: #fff;
  background: var(--zs, rgba(255,255,255,0.16));
  border: 1px solid var(--zc, rgba(255,255,255,0.3));
  box-shadow: 0 4px 20px var(--zg, rgba(0,0,0,0.4));
  backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px);
}
[data-quiz="bmi"] .mbti-hero-sub { color: rgba(255,255,255,0.82); letter-spacing: 0.02em; }

.bmi-score-row { display: flex; align-items: center; gap: 16px; margin-top: 4px; }
.bmi-score-big { flex: 0 0 auto; display: flex; align-items: baseline; gap: 4px; }
.bmi-score-big b {
  font-size: 3rem; font-weight: 900;
  background: linear-gradient(120deg, var(--zi, #ffd166), var(--zc, #ff8fb3));
  -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent;
}
.bmi-score-big span { font-size: 0.85rem; color: rgba(255,255,255,0.5); }
.bmi-score-desc { flex: 1; font-size: 0.85rem; line-height: 1.65; color: rgba(255,255,255,0.72); }

/* 健康区间标尺（四段独立上色，只高亮用户所在档；刻度数字/分区名按 12–40 线性映射定位） */
.bmi-ruler { margin-top: 20px; padding: 0 4px; }
.bmi-ruler-track {
  position: relative; height: 12px; border-radius: 99px;
  background: rgba(255,255,255,0.09);
  overflow: hidden;
}
.bmi-rz { position: absolute; top: 0; bottom: 0; opacity: 0.32; transition: opacity 0.3s; }
.bmi-rz.on { opacity: 1; }
.bmi-ruler-marker {
  position: absolute; top: 50%; transform: translate(-50%, -50%);
  width: 18px; height: 18px; border-radius: 50%;
  background: #fff; border: 4px solid var(--zc, #fff);
  box-shadow: 0 0 0 4px var(--zs, rgba(255,255,255,0.2)), 0 0 16px var(--zg, rgba(255,255,255,0.5));
  z-index: 2;
}
.bmi-ruler-labels { position: relative; height: 15px; margin-top: 9px; }
.bmi-ruler-labels span {
  position: absolute; transform: translateX(-50%);
  font-size: 0.7rem; font-weight: 700; color: rgba(255,255,255,0.5);
  font-variant-numeric: tabular-nums;
}
.bmi-ruler-cats { position: relative; height: 14px; margin-top: 5px; }
.bmi-ruler-cats span {
  position: absolute; transform: translateX(-50%); white-space: nowrap;
  font-size: 0.66rem; color: rgba(255,255,255,0.34);
}
.bmi-ruler-cats span.on { color: var(--zi, #fff); font-weight: 800; }

/* BMI 5 维条 */
.bmi-dim { margin-top: 14px; }
.bmi-dim-head {
  display: flex; align-items: center; justify-content: space-between;
  margin-bottom: 7px;
}
.bmi-dim-label { font-size: 0.8rem; font-weight: 700; color: rgba(255,255,255,0.6); }
.bmi-dim-val { font-size: 0.85rem; font-weight: 800; color: var(--zi, #ffd166); }
.bmi-dim-bar {
  position: relative; height: 8px; border-radius: 99px;
  background: rgba(255,255,255,0.08); overflow: hidden;
}
.bmi-dim-bar i {
  display: block; height: 100%; border-radius: 99px; width: 0%;
  background: linear-gradient(90deg, var(--zc, #ffd166), var(--zi, #ff8fb3));
  box-shadow: 0 0 8px var(--zg, rgba(255,184,107,0.4));
  transition: width 0.6s cubic-bezier(0.22, 1, 0.36, 1);
}

/* BMI 建议卡 */
.bmi-advice {
  display: flex; gap: 12px; align-items: flex-start;
  padding: 13px 14px; margin-top: 10px;
  border-radius: 14px;
  background: rgba(255,255,255,0.045);
  border: 1px solid rgba(255,255,255,0.07);
}
.bmi-advice-ico {
  flex: 0 0 40px; height: 40px; border-radius: 12px;
  display: flex; align-items: center; justify-content: center;
  font-size: 1.3rem;
  background: var(--zs, rgba(255,255,255,0.08));
  border: 1px solid rgba(255,255,255,0.06);
}
.bmi-advice-body { flex: 1; min-width: 0; }
.bmi-advice-title { font-size: 0.88rem; font-weight: 800; color: rgba(255,255,255,0.9); }
.bmi-advice-text { font-size: 0.78rem; line-height: 1.6; color: rgba(255,255,255,0.58); margin-top: 3px; }

/* ═══════════════════════════════════════════════════════════
   测试专属卡片（v2 卡片系统）— 每个测试一套专属视觉语言
   6 种版式：v0主题封面 / v1数据透视 / v2极简宣言 / v3专属花纹 / v4杂志排版 / v5渐变光晕
   ═══════════════════════════════════════════════════════════ */

/* ── 基础版式共用 ── */
.bp-card .bp-v0-deco {
  position: absolute; top: 26%; right: -18px; z-index: 0;
  font-size: 5.2rem; opacity: 0.16; transform: rotate(-14deg);
  pointer-events: none;
}
.bp-card .bp-v0-type {
  font-size: 1.15rem; font-weight: 900; letter-spacing: 0.02em;
  line-height: 1.3; margin-bottom: 3px;
  text-shadow: 0 2px 10px rgba(0,0,0,0.55);
}
.bp-card .bp-v0-sub {
  font-size: 0.66rem; color: rgba(255,255,255,0.62); letter-spacing: 0.05em;
  margin-bottom: 8px;
}
.bp-card.bp-v0 .bp-card-content { padding-bottom: 14px; }
.bp-card.bp-v0 .bp-card-score { margin-top: 2px; }

.bp-card .bp-overlay-dense { background: linear-gradient(180deg, rgba(8,8,16,0.25) 0%, rgba(8,8,16,0.72) 45%, rgba(8,8,16,0.96) 100%); }
.bp-card .bp-overlay-soft { background: linear-gradient(180deg, rgba(8,8,16,0.05) 0%, rgba(8,8,16,0.45) 60%, rgba(8,8,16,0.93) 100%); }
.bp-card .bp-overlay-white { background: linear-gradient(180deg, rgba(255,255,255,0) 45%, rgba(250,250,247,0.97) 100%); }

.bp-card .bp-v1-score-wrap { display: flex; align-items: baseline; gap: 7px; }
.bp-card .bp-v1-score-label {
  font-size: 0.62rem; letter-spacing: 0.2em; color: rgba(255,255,255,0.55);
  text-transform: uppercase;
}
.bp-card .bp-v1-name { font-size: 1.05rem; font-weight: 900; margin: 2px 0 8px; }
.bp-card .bp-dims-dense { gap: 3px; }
.bp-card .bp-dims-dense i { font-size: 0.54rem; padding: 1px 5px; }

.bp-card .bp-v2-quote {
  font-size: 0.86rem; font-weight: 800; line-height: 1.4;
  color: #fff; margin-bottom: 4px;
  font-style: italic; text-shadow: 0 1px 6px rgba(0,0,0,0.5);
}
.bp-card .bp-v2-type { font-size: 1.3rem; font-weight: 900; letter-spacing: 0.01em; margin: 1px 0 2px; }
.bp-card .bp-v2-tag {
  display: inline-block; font-size: 0.6rem; font-weight: 700; letter-spacing: 0.2em;
  color: rgba(255,255,255,0.8); text-transform: uppercase;
  border: 1px solid rgba(255,255,255,0.3); border-radius: 999px; padding: 2px 9px;
  margin-bottom: 8px; background: rgba(0,0,0,0.25);
}

.bp-card .bp-v3-pattern {
  position: absolute; inset: 0; z-index: 0; pointer-events: none;
  opacity: 0.14; background-image: radial-gradient(circle at 1px 1px, #fff 1px, transparent 0);
  background-size: 14px 14px;
}
.bp-card .bp-v3-type { font-size: 1.12rem; font-weight: 900; margin-bottom: 7px; }

.bp-card .bp-v4-photo {
  filter: grayscale(0.15) contrast(1.05) brightness(1.02);
  mask-image: linear-gradient(180deg, #000 0%, #000 58%, transparent 100%);
  -webkit-mask-image: linear-gradient(180deg, #000 0%, #000 58%, transparent 100%);
}
.bp-card .bp-v4-masthead {
  font-size: 0.54rem; font-weight: 900; letter-spacing: 0.3em;
  color: #111; opacity: 0.8; margin-bottom: 5px;
}
.bp-card.bp-v4 .bp-card-content { color: #111; }
.bp-card.bp-v4 .bp-card-score b {
  font-family: 'Georgia', serif; font-weight: 700; letter-spacing: -0.02em;
}
.bp-card.bp-v4 .bp-card-tier { font-size: 0.62rem; letter-spacing: 0.14em; text-transform: uppercase; font-weight: 900; }
.bp-card.bp-v4 .bp-card-tagline { color: #444; font-style: italic; font-family: 'Georgia', serif; }
.bp-card.bp-v4 .bp-card-brand { color: #999; border-top-color: #eee; letter-spacing: 0.2em; }
.bp-card.bp-v4 .bp-card-dims i { background: #fff; border: 1px solid #ddd; color: #555; }
.bp-card.bp-v4 .bp-card-serno, .bp-card.bp-v4 .bp-card-series {
  color: rgba(20,20,20,0.8); background: rgba(255,255,255,0.75); border-color: rgba(0,0,0,0.08);
}

.bp-card .bp-v5-type { font-size: 1.18rem; font-weight: 900; margin: 3px 0 8px; text-shadow: 0 2px 8px rgba(0,0,0,0.4); }

/* 顶部标签适配 v4 白底 */
.bp-card.bp-v4 .bp-card-top { color: #111; }

/* ── 各测试专属配色 ── */

/* 💘 恋爱 — 玫红情书 */
.card-love.bp-v0 { border: 1.5px solid rgba(255,107,157,0.55); box-shadow: 0 0 24px rgba(255,107,157,0.22), 0 10px 34px rgba(0,0,0,0.5); }
.card-love .bp-v0-deco { color: #ff6b9d; }
.card-love.bp-v1 .bp-card-score b { background: linear-gradient(120deg, #ff9ec4, #ffd166); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; }
.card-love.bp-v2 .bp-v2-type { color: #ffb3cf; }
.card-love.bp-v3 .bp-v3-pattern { background-image: radial-gradient(circle at 1px 1px, #ff6b9d 1px, transparent 0); }
.card-love.bp-v5 { box-shadow: 0 0 34px rgba(255,107,157,0.35), 0 14px 40px rgba(0,0,0,0.45); }
.card-love .bp-card-tier { text-shadow: 0 1px 6px rgba(0,0,0,0.5); }

/* 💼 职业 — 电光蓝罗盘 */
.card-career.bp-v0 { border: 1.5px solid rgba(79,172,254,0.55); box-shadow: 0 0 24px rgba(79,172,254,0.22), 0 10px 34px rgba(0,0,0,0.5); }
.card-career .bp-v0-deco { color: #4facfe; }
.card-career.bp-v1 .bp-card-score b { background: linear-gradient(120deg, #9fd6ff, #00f2fe); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; }
.card-career.bp-v2 .bp-v2-type { color: #a8d9ff; }
.card-career.bp-v3 .bp-v3-pattern { background-image: radial-gradient(circle at 1px 1px, #4facfe 1px, transparent 0); }
.card-career.bp-v5 { box-shadow: 0 0 34px rgba(79,172,254,0.35), 0 14px 40px rgba(0,0,0,0.45); }

/* 🌈 色彩 — 彩虹泼彩 */
.card-color.bp-v0 { border: 1.5px solid rgba(255,209,102,0.55); box-shadow: 0 0 24px rgba(255,209,102,0.22), 0 10px 34px rgba(0,0,0,0.5); }
.card-color .bp-v0-deco { color: #ffd166; }
.card-color.bp-v1 .bp-card-score b { background: linear-gradient(120deg, #ffd166, #ff6b9d); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; }
.card-color.bp-v2 .bp-v2-type { background: linear-gradient(90deg, #ffd166, #ff6b9d, #6bd8ff); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; }
.card-color.bp-v3 .bp-v3-pattern { background-image: radial-gradient(circle at 1px 1px, #ffd166 1px, transparent 0); }
.card-color.bp-v5 { box-shadow: 0 0 34px rgba(255,209,102,0.3), 0 14px 40px rgba(0,0,0,0.45); }

/* 🧠 MBTI — 星云紫 */
.card-mbti.bp-v0 { border: 1.5px solid rgba(160,107,255,0.55); box-shadow: 0 0 24px rgba(160,107,255,0.22), 0 10px 34px rgba(0,0,0,0.5); }
.card-mbti .bp-v0-deco { color: #a06bff; }
.card-mbti.bp-v1 .bp-card-score b { background: linear-gradient(120deg, #d4baff, #4dd8ff); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; }
.card-mbti.bp-v2 .bp-v2-type { color: #c9adff; }
.card-mbti.bp-v3 .bp-v3-pattern { background-image: radial-gradient(circle at 1px 1px, #a06bff 1px, transparent 0); }
.card-mbti.bp-v5 { box-shadow: 0 0 34px rgba(160,107,255,0.35), 0 14px 40px rgba(0,0,0,0.45); }

/* 🎭 九型 — 琥珀金九芒星 */
.card-personality.bp-v0 { border: 1.5px solid rgba(255,179,71,0.55); box-shadow: 0 0 24px rgba(255,179,71,0.22), 0 10px 34px rgba(0,0,0,0.5); }
.card-personality .bp-v0-deco { color: #ffb347; }
.card-personality.bp-v1 .bp-card-score b { background: linear-gradient(120deg, #ffd98a, #ff6b3d); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; }
.card-personality.bp-v2 .bp-v2-type { color: #ffcf85; }
.card-personality.bp-v3 .bp-v3-pattern {
  background-image:
    radial-gradient(circle at 1px 1px, #ffb347 1px, transparent 0),
    radial-gradient(circle at 50% 50%, transparent 38%, #ffb347 40%, transparent 44%);
  background-size: 14px 14px, 100% 100%;
}
.card-personality.bp-v5 { box-shadow: 0 0 34px rgba(255,179,71,0.35), 0 14px 40px rgba(0,0,0,0.45); }

/* ⚖️ BMI — 青绿刻度 */
.card-bmi.bp-v0 { border: 1.5px solid rgba(45,212,191,0.55); box-shadow: 0 0 24px rgba(45,212,191,0.22), 0 10px 34px rgba(0,0,0,0.5); }
/* BMI 结果卡：卡面是 canvas 合成的整图（数值 + 区间定位），保证保存/分享与屏幕一致 */
.bp-card.card-bmi.bp-v0 {
  background: linear-gradient(160deg, #0d3b36, #06201e);
}
.bp-card .bmi-card-img {
  position: absolute; inset: 0; display: block;
  width: 100%; height: 100%; object-fit: cover;
}
.card-bmi .bp-v0-deco { color: #2dd4bf; }
.card-bmi.bp-v1 .bp-card-score b { background: linear-gradient(120deg, #8ef0df, #6ee7b7); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; }
.card-bmi.bp-v2 .bp-v2-type { color: #8ee9d8; }
.card-bmi.bp-v3 .bp-v3-pattern {
  background-image:
    linear-gradient(90deg, transparent 49%, rgba(45,212,191,0.5) 50%, transparent 51%),
    linear-gradient(90deg, transparent 24%, rgba(45,212,191,0.3) 25%, transparent 26%),
    linear-gradient(90deg, transparent 74%, rgba(45,212,191,0.3) 75%, transparent 76%);
  background-size: 100% 100%, 100% 100%, 100% 100%;
}
.card-bmi.bp-v5 { box-shadow: 0 0 34px rgba(45,212,191,0.3), 0 14px 40px rgba(0,0,0,0.45); }

/* ✨ 颜值 — 金色聚光 */
.card-beauty.bp-v0 { border: 1.5px solid rgba(255,209,102,0.55); box-shadow: 0 0 24px rgba(255,209,102,0.22), 0 10px 34px rgba(0,0,0,0.5); }
.card-beauty .bp-v0-deco { color: #ffd166; }
.card-beauty.bp-v1 .bp-card-score b { background: linear-gradient(120deg, #ffe9a8, #ff8fb3); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; }
.card-beauty.bp-v2 .bp-v2-type { color: #ffd98a; }
.card-beauty.bp-v3 .bp-v3-pattern {
  background-image:
    radial-gradient(circle at 1px 1px, #ffd166 1px, transparent 0),
    linear-gradient(90deg, transparent 49%, rgba(255,209,102,0.4) 50%, transparent 51%);
  background-size: 12px 12px, 100% 100%;
}
.card-beauty.bp-v5 { box-shadow: 0 0 34px rgba(255,209,102,0.3), 0 14px 40px rgba(0,0,0,0.45); }

/* ═══════════════════════════════════════════
   16 型字母徽章（原创 SVG，卡片元素）
   ═══════════════════════════════════════════ */
.bp-mbti-figure {
  position: absolute; z-index: 1; pointer-events: none;
  filter: drop-shadow(0 3px 10px rgba(0,0,0,0.45));
  animation: mbtiFloat 3.4s ease-in-out infinite;
}
.bp-mbti-figure svg { display: block; }
@keyframes mbtiFloat {
  0%, 100% { margin-top: 0; }
  50% { margin-top: -4px; }
}
/* 中央徽章（v0/v1/v3/v5 用）：卡片上 15% 起，避免压到下方内容区 */
.bp-mbti-center {
  left: 50%; top: 15%;
  transform: translateX(-50%);
  width: 68px; height: 68px;
}
.bp-mbti-center svg { width: 68px; height: 68px; }
/* 上方小徽章（v2 极简宣言用） */
.bp-mbti-small {
  left: 50%; top: 12%;
  transform: translateX(-50%);
  width: 48px; height: 48px;
  opacity: 0.92;
}
.bp-mbti-small svg { width: 48px; height: 48px; }
/* 白底杂志版（v4 反色小人） */
.bp-mbti-dark {
  left: 50%; top: 18%;
  transform: translateX(-50%);
  width: 58px; height: 58px;
}
.bp-mbti-dark svg { width: 58px; height: 58px; }
/* 右上角徽章（v1 数据透视 / v5 渐变光晕用，避免遮挡中央大数字） */
.bp-mbti-corner {
  right: 12px; top: 44px;
  width: 52px; height: 52px;
}
.bp-mbti-corner svg { width: 52px; height: 52px; }
/* 大图查看时徽章同步放大（浮动动画偏移在 transform 上会冲突，停用） */
#quiz-card-overlay .bp-mbti-figure { animation: none; }
#quiz-card-overlay .bp-mbti-center { top: 18%; width: 92px; height: 92px; }
#quiz-card-overlay .bp-mbti-center svg { width: 92px; height: 92px; }
#quiz-card-overlay .bp-mbti-small { width: 62px; height: 62px; }
#quiz-card-overlay .bp-mbti-small svg { width: 62px; height: 62px; }
#quiz-card-overlay .bp-mbti-dark { top: 20%; width: 76px; height: 76px; }
#quiz-card-overlay .bp-mbti-dark svg { width: 76px; height: 76px; }
#quiz-card-overlay .bp-mbti-corner { width: 66px; height: 66px; }
#quiz-card-overlay .bp-mbti-corner svg { width: 66px; height: 66px; }

/* ═══════════════════════════════════════════
   呼吸 AI 球（通用等待组件 · 液态充能版）
   配色由 --orb-c1/--orb-c2/--orb-glow 驱动
   专属特效：orb-fx-heart / orb-fx-compass / orb-fx-color / orb-fx-star / orb-fx-nine / orb-fx-scale / orb-fx-glow
   ═══════════════════════════════════════════ */
.orb-stage {
  position: relative;
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: 22px; padding: 34px 16px 40px;
}
.orb-stage .orb-hint {
  font-size: 0.82rem; font-weight: 700; letter-spacing: 0.04em;
  color: rgba(255,255,255,0.9);
  text-align: center;
}
.orb-stage .orb-hint-sub {
  font-size: 0.66rem; color: rgba(255,255,255,0.42); margin-top: 6px; text-align: center;
}
/* 融合容器：环包球 + 球心百分比 */
.orb-fusion { position: relative; width: 176px; height: 176px; }
.orb-fusion .orb {
  position: absolute; left: 50%; top: 50%;
  transform: translate(-50%, -50%);
  width: 75%; height: 75%; border-radius: 50%;
}
.orb-fusion svg.orb-ring {
  position: absolute; inset: 0; width: 100%; height: 100%;
  transform: rotate(-90deg); z-index: 2;
}
.orb-fusion .orb-pct {
  position: absolute; inset: 0; display: flex; flex-direction: column;
  align-items: center; justify-content: center; z-index: 5; pointer-events: none;
}
.orb-pct b {
  font-size: 1.72rem; font-weight: 800; letter-spacing: -0.02em;
  font-variant-numeric: tabular-nums; color: #fff;
  text-shadow: 0 1px 10px rgba(0,0,0,0.55), 0 0 26px var(--orb-glow, rgba(255,255,255,0.35));
}
.orb-pct span {
  font-size: 0.56rem; letter-spacing: 0.22em; color: rgba(255,255,255,0.72);
  margin-top: 2px; text-shadow: 0 1px 6px rgba(0,0,0,0.6); text-transform: uppercase;
}
.orb-ring-track { stroke: rgba(255,255,255,0.08); }
.orb-ring-fill {
  stroke-linecap: round; transition: stroke-dashoffset 0.16s linear;
  filter: drop-shadow(0 0 7px var(--orb-glow, #ff6b9d));
}
/* 环上巡航光点 */
.orb-dot {
  position: absolute; left: 50%; top: 50%; width: 9px; height: 9px; border-radius: 50%;
  background: radial-gradient(circle, #fff 0%, var(--orb-glow, #ff6b9d) 60%, transparent 75%);
  box-shadow: 0 0 10px 2px var(--orb-glow, #ff6b9d), 0 0 26px 6px var(--orb-glow, #ff6b9d);
  transform: rotate(-90deg) translateX(88px); z-index: 6; pointer-events: none;
}
/* 球体：玻璃 + 液态 */
.orb-glass {
  border: 1px solid rgba(150,225,255,0.4);
  background:
    radial-gradient(circle at 32% 26%, rgba(255,255,255,0.9) 0%, rgba(214,246,255,0.45) 12%, transparent 40%),
    radial-gradient(circle at 50% 62%, rgba(60,180,255,0.18) 0%, rgba(8,30,70,0.6) 100%);
  box-shadow:
    inset 0 -12px 28px rgba(3,20,50,0.65),
    inset 0 8px 18px rgba(255,255,255,0.22),
    inset 0 0 0 2px rgba(160,225,255,0.08),
    0 0 44px var(--orb-glow, rgba(77,216,255,0.4)),
    0 0 100px var(--orb-glow2, rgba(110,130,255,0.2));
  overflow: hidden;
  animation: orbBreath 3.4s cubic-bezier(0.45, 0, 0.25, 1) infinite;
}
.orb-glass::after { /* 玻璃折射边缘 */
  content: ''; position: absolute; inset: 0; border-radius: 50%; z-index: 6;
  background: radial-gradient(circle at 50% 50%, transparent 60%, rgba(140,220,255,0.14) 80%, rgba(8,26,64,0.4) 100%);
  pointer-events: none;
}
.orb-liquid {
  position: absolute; left: 0; right: 0; bottom: 0; height: 0%;
  overflow: hidden; z-index: 1;
  background: linear-gradient(180deg, var(--orb-c1, rgba(40,150,230,0.92)) 0%, var(--orb-c2, rgba(14,56,140,0.96)) 100%);
  transition: height 0.45s cubic-bezier(0.35, 0.1, 0.25, 1);
}
.orb-wave {
  position: absolute; left: 50%; top: -24px; width: 110px; height: 84px;
  transform: translateX(-50%) rotate(0deg);
  border-radius: 50%; will-change: transform;
}
.orb-wave-front {
  background: linear-gradient(180deg, var(--orb-wave1, #8af0ff) 0%, var(--orb-wave2, #2a9bef) 40%, var(--orb-c2, #1c66c8) 80%, var(--orb-c2, #12409a) 100%);
  filter: drop-shadow(0 0 7px var(--orb-glow, rgba(140,240,255,0.55)));
  animation: orbWaveSpin 7s linear infinite; z-index: 3;
}
.orb-wave-back {
  background: linear-gradient(180deg, var(--orb-waveb1, #4db9f4) 0%, var(--orb-c2, #2273cf) 55%, var(--orb-c2, #123e8f) 100%);
  animation: orbWaveSpin 11s linear infinite reverse; z-index: 2;
}
/* 漩涡光层 */
.orb-swirl {
  position: absolute; left: 50%; top: 50%; width: 96%; height: 96%;
  transform: translate(-50%, -50%); border-radius: 50%; z-index: 4;
  background:
    conic-gradient(from 0deg, transparent 0deg, var(--orb-glow, rgba(150,235,255,0.3)) 55deg, transparent 120deg,
      var(--orb-glow2, rgba(150,235,255,0.16)) 190deg, transparent 260deg, var(--orb-glow, rgba(150,235,255,0.24)) 325deg, transparent 360deg);
  -webkit-mask: radial-gradient(circle, transparent 26%, #000 44%, transparent 74%);
  mask: radial-gradient(circle, transparent 26%, #000 44%, transparent 74%);
  animation: orbSwirlSpin 5s linear infinite; pointer-events: none;
}
/* 能量核心 */
.orb-core {
  position: absolute; left: 50%; top: 50%; width: 46%; height: 46%;
  transform: translate(-50%, -50%) scale(0.85); border-radius: 50%; z-index: 5;
  background: radial-gradient(circle, #eafcff 0%, var(--orb-glow, #7fe4ff) 30%, rgba(60,170,255,0.55) 55%, transparent 72%);
  filter: blur(1px); opacity: 0.25;
  transition: opacity 0.4s ease, transform 0.4s ease;
  pointer-events: none;
}
/* 气泡（默认白色系，可用 --orb-bubble 调色） */
.orb-bubble {
  position: absolute; bottom: -8px; border-radius: 50%; z-index: 4;
  background: radial-gradient(circle at 32% 30%, rgba(255,255,255,0.95), rgba(190,240,255,0.55) 45%, rgba(140,220,255,0.18) 72%, transparent 80%);
  box-shadow: 0 0 6px var(--orb-glow, rgba(160,235,255,0.5));
  animation: orbBubbleRise var(--spd, 2.8s) linear infinite;
  opacity: 0; pointer-events: none;
}
.orb-bubble::after {
  content: ''; position: absolute; left: 26%; top: 18%; width: 30%; height: 30%; border-radius: 50%;
  background: rgba(255,255,255,0.9); filter: blur(0.6px);
}
/* 光晕 */
.orb-halo {
  position: absolute; inset: -22px; border-radius: 50%; z-index: -1;
  background: radial-gradient(circle, var(--orb-glow, rgba(77,216,255,0.22)) 0%, var(--orb-glow2, rgba(120,140,255,0.1)) 42%, transparent 68%);
  animation: orbHaloPulse 3.4s ease-in-out infinite; filter: blur(3px);
}
/* 漂浮星尘 */
.orb-dust { position: absolute; inset: -30px; pointer-events: none; }
.orb-dust i {
  position: absolute; border-radius: 50%; background: rgba(255,255,255,0.6);
  animation: orbDustFloat var(--dur, 4s) ease-in-out infinite; opacity: 0;
}

/* ───── 专属特效：爱心（love）───── */
.orb-fx-heart .fx-heart {
  position: absolute; bottom: -6px; font-size: 12px; z-index: 4;
  animation: orbHeartRise var(--spd, 3.2s) ease-in infinite;
  opacity: 0; pointer-events: none;
}
@keyframes orbHeartRise {
  0% { transform: translateY(0) translateX(0) rotate(0deg) scale(0.6); opacity: 0; }
  12% { opacity: var(--op, 0.85); }
  80% { opacity: var(--op, 0.85); }
  100% { transform: translateY(-120px) translateX(var(--dx, 8px)) rotate(var(--rot, 24deg)) scale(1.1); opacity: 0; }
}
/* ───── 专属特效：指南针（career）───── */
.orb-fx-compass .fx-compass {
  position: absolute; left: 50%; top: 50%; width: 100%; height: 100%;
  transform: translate(-50%, -50%); z-index: 3; pointer-events: none;
  animation: orbSpin 12s linear infinite;
}
.orb-fx-compass .fx-compass::before,
.orb-fx-compass .fx-compass::after {
  content: ''; position: absolute; left: 50%; top: 50%;
  background: linear-gradient(180deg, rgba(0,242,254,0.0), rgba(0,242,254,0.7) 50%, rgba(0,242,254,0.0));
  filter: blur(1px);
}
.orb-fx-compass .fx-compass::before { width: 1.5px; height: 200%; transform: translate(-50%, -50%); }
.orb-fx-compass .fx-compass::after { width: 200%; height: 1.5px; transform: translate(-50%, -50%); }
/* ───── 专属特效：三原色光斑（color）───── */
.orb-fx-color .fx-color {
  position: absolute; left: 50%; top: 50%; z-index: 3; pointer-events: none;
  animation: orbSpin 9s linear infinite;
}
.orb-fx-color .fx-color i {
  position: absolute; left: 50%; top: 50%; width: 16px; height: 16px; border-radius: 50%;
  transform: translate(-50%, -50%);
}
.orb-fx-color .fx-color i:nth-child(1) { background: #ff6b6b; box-shadow: 0 0 12px #ff6b6b; transform: translate(-50%, -50%) rotate(0deg) translateX(76px); }
.orb-fx-color .fx-color i:nth-child(2) { background: #ffd166; box-shadow: 0 0 12px #ffd166; transform: translate(-50%, -50%) rotate(120deg) translateX(76px); }
.orb-fx-color .fx-color i:nth-child(3) { background: #4dd8ff; box-shadow: 0 0 12px #4dd8ff; transform: translate(-50%, -50%) rotate(240deg) translateX(76px); }
/* ───── 专属特效：星轨（mbti）───── */
.orb-fx-star .fx-star {
  position: absolute; left: 50%; top: 50%; z-index: 3; pointer-events: none;
  animation: orbSpin 8s linear infinite;
}
.orb-fx-star .fx-star i {
  position: absolute; left: 50%; top: 50%; width: 5px; height: 5px; border-radius: 50%;
  background: #fff; box-shadow: 0 0 10px #c9a7ff;
  transform: translate(-50%, -50%) rotate(0deg) translateX(74px);
}
.orb-fx-star .fx-star i:nth-child(2) { transform: translate(-50%, -50%) rotate(72deg) translateX(74px); }
.orb-fx-star .fx-star i:nth-child(3) { transform: translate(-50%, -50%) rotate(144deg) translateX(74px); }
.orb-fx-star .fx-star i:nth-child(4) { transform: translate(-50%, -50%) rotate(216deg) translateX(74px); }
.orb-fx-star .fx-star i:nth-child(5) { transform: translate(-50%, -50%) rotate(288deg) translateX(74px); }
.orb-fx-star .fx-star i::after {
  content: '✦'; position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%);
  font-size: 12px; color: #c9a7ff; opacity: 0.7;
}
/* ───── 专属特效：九芒星（personality）───── */
.orb-fx-nine .fx-nine {
  position: absolute; left: 50%; top: 50%; width: 96%; height: 96%;
  transform: translate(-50%, -50%); z-index: 3; pointer-events: none;
  animation: orbSpin 14s linear infinite reverse;
  background: repeating-conic-gradient(from 0deg, rgba(255,179,71,0) 0deg 34deg, rgba(255,179,71,0.5) 40deg 42deg, rgba(255,179,71,0) 48deg 40deg);
  -webkit-mask: radial-gradient(circle, transparent 30%, #000 62%, transparent 82%);
  mask: radial-gradient(circle, transparent 30%, #000 62%, transparent 82%);
}
/* ───── 专属特效：刻度（bmi）───── */
.orb-fx-scale .fx-scale {
  position: absolute; left: 50%; top: 50%; width: 92%; height: 92%;
  transform: translate(-50%, -50%); z-index: 3; pointer-events: none;
}
.orb-fx-scale .fx-scale i {
  position: absolute; left: 50%; top: 50%; width: 2px; height: 10px;
  background: linear-gradient(180deg, rgba(110,231,183,0.9), rgba(110,231,183,0));
  transform-origin: 50% -66px;
  opacity: 0;
  animation: orbTick 2.6s ease-in-out infinite;
}
.orb-fx-scale .fx-scale i:nth-child(1) { transform: rotate(0deg) translateY(-66px); }
.orb-fx-scale .fx-scale i:nth-child(2) { transform: rotate(45deg) translateY(-66px); animation-delay: 0.3s; }
.orb-fx-scale .fx-scale i:nth-child(3) { transform: rotate(90deg) translateY(-66px); animation-delay: 0.6s; }
.orb-fx-scale .fx-scale i:nth-child(4) { transform: rotate(135deg) translateY(-66px); animation-delay: 0.9s; }
.orb-fx-scale .fx-scale i:nth-child(5) { transform: rotate(180deg) translateY(-66px); animation-delay: 1.2s; }
.orb-fx-scale .fx-scale i:nth-child(6) { transform: rotate(225deg) translateY(-66px); animation-delay: 1.5s; }
.orb-fx-scale .fx-scale i:nth-child(7) { transform: rotate(270deg) translateY(-66px); animation-delay: 1.8s; }
.orb-fx-scale .fx-scale i:nth-child(8) { transform: rotate(315deg) translateY(-66px); animation-delay: 2.1s; }
@keyframes orbTick { 0%, 100% { opacity: 0; } 30% { opacity: 0.9; } 60% { opacity: 0.3; } }
/* ───── 专属特效：金色聚光（beauty）───── */
.orb-fx-glow .fx-glow {
  position: absolute; left: 50%; top: 50%; width: 130%; height: 130%;
  transform: translate(-50%, -50%); z-index: 2; pointer-events: none;
  background: conic-gradient(from 0deg, transparent 0deg, rgba(255,209,102,0.25) 30deg, transparent 80deg,
    rgba(255,209,102,0.18) 140deg, transparent 200deg, rgba(255,209,102,0.22) 280deg, transparent 340deg);
  -webkit-mask: radial-gradient(circle, transparent 46%, #000 52%, transparent 68%);
  mask: radial-gradient(circle, transparent 46%, #000 52%, transparent 68%);
  animation: orbSpin 6s linear infinite;
}

@keyframes orbBreath { 0%, 100% { transform: translate(-50%, -50%) scale(1); } 50% { transform: translate(-50%, -50%) scale(1.05); } }
@keyframes orbHaloPulse { 0%, 100% { opacity: 0.5; transform: scale(0.96); } 50% { opacity: 1; transform: scale(1.07); } }
@keyframes orbWaveSpin { to { transform: translateX(-50%) rotate(360deg); } }
@keyframes orbSwirlSpin { to { transform: translate(-50%, -50%) rotate(360deg); } }
@keyframes orbSpin { to { transform: translate(-50%, -50%) rotate(360deg); } }
@keyframes orbBubbleRise {
  0% { transform: translateY(0) translateX(0) scale(0.4); opacity: 0; }
  12% { opacity: var(--op, 0.75); }
  80% { opacity: var(--op, 0.75); }
  100% { transform: translateY(-118px) translateX(var(--dx, 6px)) scale(1.05); opacity: 0; }
}
@keyframes orbDustFloat {
  0% { transform: translateY(16px) scale(0.7); opacity: 0; }
  25% { opacity: var(--op, 0.7); }
  70% { opacity: var(--op, 0.7); }
  100% { transform: translateY(-18px) scale(1); opacity: 0; }
}

/* 呼吸球容器（beauty 分析页有照片时 / 结果页画像生成） */
.beauty-loading-orb-wrap {
  display: flex; justify-content: center; align-items: center;
  margin-top: 8px; padding-bottom: 8px;
}
.beauty-loading-orb-wrap .orb-stage {
  padding: 18px 16px 22px;
}
.beauty-portrait-loading {
  display: flex; justify-content: center; align-items: center;
  margin: 10px auto 4px;
}
.beauty-portrait-loading .orb-stage {
  padding: 14px 16px 16px;
  gap: 12px;
}
.beauty-portrait-loading .orb-fusion { width: 150px; height: 150px; }
.beauty-portrait-loading .orb-hint { font-size: 0.74rem; }

/* ───── 专属特效：命运星光（soulmate 灵魂伴侣）───── */
.orb-fx-soul .fx-soul {
  position: absolute; left: 50%; top: 50%; z-index: 3; pointer-events: none;
  animation: orbSpin 7s linear infinite;
}
.orb-fx-soul .fx-soul i {
  position: absolute; left: 50%; top: 50%; width: 4px; height: 4px; border-radius: 50%;
  background: #ffe9b0; box-shadow: 0 0 8px #d4af6e;
  transform: translate(-50%, -50%) rotate(0deg) translateX(72px);
  animation: orbSparkle 2.2s ease-in-out infinite;
}
.orb-fx-soul .fx-soul i:nth-child(2) { transform: translate(-50%, -50%) rotate(45deg) translateX(72px); animation-delay: 0.28s; }
.orb-fx-soul .fx-soul i:nth-child(3) { transform: translate(-50%, -50%) rotate(90deg) translateX(72px); animation-delay: 0.56s; }
.orb-fx-soul .fx-soul i:nth-child(4) { transform: translate(-50%, -50%) rotate(135deg) translateX(72px); animation-delay: 0.84s; }
.orb-fx-soul .fx-soul i:nth-child(5) { transform: translate(-50%, -50%) rotate(180deg) translateX(72px); animation-delay: 1.12s; }
.orb-fx-soul .fx-soul i:nth-child(6) { transform: translate(-50%, -50%) rotate(225deg) translateX(72px); animation-delay: 1.4s; }
.orb-fx-soul .fx-soul i:nth-child(7) { transform: translate(-50%, -50%) rotate(270deg) translateX(72px); animation-delay: 1.68s; }
.orb-fx-soul .fx-soul i:nth-child(8) { transform: translate(-50%, -50%) rotate(315deg) translateX(72px); animation-delay: 1.96s; }
@keyframes orbSparkle { 0%, 100% { opacity: 0.2; transform: translate(-50%, -50%) rotate(0deg) translateX(72px) scale(0.7); } 50% { opacity: 1; transform: translate(-50%, -50%) rotate(0deg) translateX(72px) scale(1.25); } }
/* ───── 专属特效：发型剪影（hairstyle 发型试戴）───── */
.orb-fx-hair .fx-hair {
  position: absolute; bottom: -6px; font-size: 12px; z-index: 4;
  animation: orbHeartRise var(--spd, 3s) ease-in infinite;
  opacity: 0; pointer-events: none;
}
/* ───── 专属特效：命运水晶球（facefortune 面相画像）───── */
.orb-fx-fortune .fx-fortune {
  position: absolute; left: 50%; top: 50%; width: 88%; height: 88%;
  transform: translate(-50%, -50%); z-index: 3; pointer-events: none;
  border-radius: 50%;
  background: repeating-conic-gradient(from 0deg, rgba(255,179,71,0) 0deg 18deg, rgba(255,179,71,0.4) 20deg 22deg, rgba(255,179,71,0) 24deg 36deg);
  -webkit-mask: radial-gradient(circle, transparent 38%, #000 60%, transparent 78%);
  mask: radial-gradient(circle, transparent 38%, #000 60%, transparent 78%);
  animation: orbSpin 16s linear infinite reverse;
}
.orb-fx-fortune .fx-fortune span {
  position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%);
  font-size: 30px; opacity: 0.55; filter: drop-shadow(0 0 10px rgba(255,179,71,0.7));
  animation: orbHaloPulse 2.8s ease-in-out infinite;
}

/* ============================================
   3D 流体卡片环形旋转组件（fp3d）
   ============================================ */

.fp3d-wrap {
  position: relative;
  padding: 20px 0 0;
  margin-bottom: 8px;
  overflow-x: clip;
  overflow-y: visible;
}

.fp3d-hint {
  text-align: center;
  font-size: 0.62rem;
  color: rgba(255,255,255,0.32);
  letter-spacing: 0.12em;
  margin: 2px 0 4px;
  user-select: none;
}

.fp3d-stage {
  position: relative;
  width: 100%;
  height: 248px;
  perspective: 1200px;
  perspective-origin: 50% 46%;
  /* 触摸策略：垂直手势交浏览器滚动（pan-y），水平手势由 JS 方向锁接管（touchmove preventDefault）。
     JS 在方向锁判定为 'h' 后 preventDefault 水平滚动意图，避免浏览器手势识别抢走 pointercancel */
  touch-action: pan-y;
  cursor: grab;
  user-select: none;
  -webkit-user-select: none;
}
.fp3d-stage:active { cursor: grabbing; }

.fp3d-ambient {
  position: absolute; inset: 0;
  pointer-events: none;
  overflow: hidden;
  z-index: 0;
}
.fp3d-blob {
  position: absolute;
  border-radius: 50%;
  filter: blur(46px);
  opacity: 0.5;
  will-change: transform;
}
.fp3d-blob-a { width: 220px; height: 220px; left: 8%; top: 6%; background: radial-gradient(circle, rgba(99,102,241,0.42), transparent 70%); animation: fp3dDrift 16s ease-in-out infinite alternate; }
.fp3d-blob-b { width: 200px; height: 200px; right: 6%; top: 12%; background: radial-gradient(circle, rgba(236,72,153,0.34), transparent 70%); animation: fp3dDrift 20s ease-in-out infinite alternate-reverse; }
.fp3d-blob-c { width: 180px; height: 180px; left: 42%; bottom: -20px; background: radial-gradient(circle, rgba(34,211,238,0.30), transparent 70%); animation: fp3dDrift 24s ease-in-out infinite alternate; }
@keyframes fp3dDrift {
  from { transform: translate(0,0) scale(1); }
  to { transform: translate(28px,-16px) scale(1.12); }
}

.fp3d-carousel {
  position: absolute;
  left: 50%; top: 50%;
  width: 0; height: 0;
  transform-style: preserve-3d;
  z-index: 1;
}

.fp3d-card {
  position: absolute;
  left: 50%; top: 50%;
  width: 158px; height: 216px;
  transform-style: preserve-3d;
  cursor: pointer;
  /* 外层圆角: 手机端内层圆角被 3D 合成层裁掉时, 外层兜底保证圆角 */
  border-radius: 16px;
  overflow: hidden;
  transition: filter 0.3s, box-shadow 0.3s;
  -webkit-tap-highlight-color: transparent;
}
.fp3d-card.fp3d-back { pointer-events: none; }

.fp3d-card-inner {
  position: absolute; inset: 0;
  border-radius: 16px;
  overflow: hidden;
  background: rgba(255,255,255,0.045);
  border: 1px solid rgba(255,255,255,0.10);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  box-shadow: 0 8px 30px rgba(0,0,0,0.4), inset 0 1px 0 rgba(255,255,255,0.08);
  display: flex;
  flex-direction: column;
  transform: translateZ(0);
}
/* AI 蓝紫 / Quiz 粉橙 主题 */
.fp3d-card-ai .fp3d-card-inner {
  background: linear-gradient(160deg, rgba(99,102,241,0.16), rgba(10,10,26,0.55) 55%, rgba(34,211,238,0.10));
}
.fp3d-card-quiz .fp3d-card-inner {
  background: linear-gradient(160deg, rgba(236,72,153,0.14), rgba(10,10,26,0.55) 55%, rgba(251,146,60,0.10));
}

/* 流体效果：流动光斑 */
.fp3d-card-flow {
  position: absolute; inset: 0;
  pointer-events: none;
  overflow: hidden;
  border-radius: 16px;
  opacity: 0.85;
}
.fp3d-flow-dot {
  position: absolute;
  border-radius: 50%;
  filter: blur(14px);
  mix-blend-mode: screen;
  will-change: transform;
}
.fp3d-flow-dot.f1 { width: 70px; height: 70px; left: -14px; top: -10px; background: radial-gradient(circle, rgba(129,140,248,0.55), transparent 70%); animation: fp3dFlow1 7s ease-in-out infinite; }
.fp3d-flow-dot.f2 { width: 56px; height: 56px; right: -8px; top: 30%; background: radial-gradient(circle, rgba(232,121,249,0.5), transparent 70%); animation: fp3dFlow2 9s ease-in-out infinite; }
.fp3d-flow-dot.f3 { width: 62px; height: 62px; left: 22%; bottom: -16px; background: radial-gradient(circle, rgba(56,189,248,0.5), transparent 70%); animation: fp3dFlow3 11s ease-in-out infinite; }
@keyframes fp3dFlow1 {
  0%, 100% { transform: translate(0,0) scale(1); }
  50% { transform: translate(18px, 12px) scale(1.25); }
}
@keyframes fp3dFlow2 {
  0%, 100% { transform: translate(0,0) scale(1); }
  50% { transform: translate(-14px, 16px) scale(1.2); }
}
@keyframes fp3dFlow3 {
  0%, 100% { transform: translate(0,0) scale(1); }
  50% { transform: translate(12px, -14px) scale(1.3); }
}

.fp3d-card-cover {
  position: relative;
  /* 接近图片 3:4 比例, 图片完整显示不裁剪 (cover 撑满) */
  flex: 1;
  min-height: 0;
  overflow: hidden;
}
.fp3d-card-img {
  position: absolute; inset: 0;
  width: 100%; height: 100%;
  object-fit: cover;
  /* 图片 3:4 与 cover 比例已匹配: 不再放大(避免四边溢出裁剪), 主体微下移完整露出 */
  object-position: 50% 38%;
  transform: scale(1.0);
  transition: transform 0.5s cubic-bezier(0.22,1,0.36,1);
}
.fp3d-card:hover .fp3d-card-img,
.fp3d-card.fp3d-hover .fp3d-card-img,
.fp3d-card.fp3d-active .fp3d-card-img { transform: scale(1.06); }
.fp3d-card-shade {
  position: absolute; inset: 0;
  background: linear-gradient(180deg, rgba(10,10,26,0.05) 30%, rgba(10,10,26,0.72) 82%);
}
.fp3d-card-icon {
  position: absolute;
  left: 50%; top: 46%;
  transform: translate(-50%, -50%);
  font-size: 30px;
  filter: drop-shadow(0 3px 10px rgba(0,0,0,0.6));
  transition: transform 0.35s cubic-bezier(0.22,1,0.36,1);
}
.fp3d-card:hover .fp3d-card-icon,
.fp3d-card.fp3d-hover .fp3d-card-icon { transform: translate(-50%, -50%) scale(1.2); }
.fp3d-card-hot {
  position: absolute;
  top: 8px; right: 8px;
  background: linear-gradient(135deg, #ff5f6d, #ffc371);
  color: #fff;
  font-size: 0.52rem;
  font-weight: 800;
  letter-spacing: 0.08em;
  padding: 3px 7px;
  border-radius: 20px;
  box-shadow: 0 3px 10px rgba(255,95,109,0.4);
  z-index: 2;
}
.fp3d-card-body {
  position: relative;
  /* 紧凑: 只留名字一行, 封面图占更大空间 → 照片显示更全 */
  padding: 5px 10px 6px;
  z-index: 2;
}
.fp3d-card-name {
  font-size: 0.78rem;
  font-weight: 700;
  color: #fff;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  letter-spacing: 0.02em;
}
/* uses 移到封面底部覆盖层: 不再占卡片垂直空间 */
.fp3d-card-uses-overlay {
  position: absolute;
  left: 10px; right: 10px;
  bottom: 6px;
  font-size: 0.55rem;
  color: rgba(255,255,255,0.72);
  letter-spacing: 0.03em;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  z-index: 2;
  text-shadow: 0 1px 6px rgba(0,0,0,0.8);
}

/* 悬停/聚焦高亮 */
.fp3d-card.fp3d-hover .fp3d-card-inner,
.fp3d-card.fp3d-active .fp3d-card-inner {
  border-color: rgba(255,255,255,0.35);
  box-shadow: 0 0 0 1px rgba(129,140,248,0.35), 0 16px 50px rgba(99,102,241,0.35), inset 0 1px 0 rgba(255,255,255,0.15);
}
.fp3d-card.fp3d-hover .fp3d-card-name,
.fp3d-card.fp3d-active .fp3d-card-name { color: #c7d2fe; }

/* 舞台辉光 */
.fp3d-stage-glow {
  position: absolute;
  left: 50%; top: 50%;
  width: 300px; height: 300px;
  transform: translate(-50%, -50%);
  border-radius: 50%;
  background: radial-gradient(circle, rgba(99,102,241,0.12), transparent 65%);
  pointer-events: none;
  z-index: 0;
}

/* ── 详情面板 ── */
.fp3d-detail {
  position: relative;
  margin: 4px 16px 14px;
  border-radius: 18px;
  background: linear-gradient(150deg, rgba(20,20,45,0.85), rgba(10,10,26,0.9));
  border: 1px solid rgba(255,255,255,0.10);
  backdrop-filter: blur(18px);
  -webkit-backdrop-filter: blur(18px);
  box-shadow: 0 18px 50px rgba(0,0,0,0.45);
  padding: 16px 16px 14px;
  display: flex;
  gap: 14px;
  align-items: flex-start;
  opacity: 0;
  transform: translateY(14px) scale(0.98);
  transition: opacity 0.3s cubic-bezier(0.22,1,0.36,1), transform 0.3s cubic-bezier(0.22,1,0.36,1);
  z-index: 3;
  overflow: hidden;
}
/* 关键修复：hidden 属性被 display:flex 覆盖，导致详情面板始终占位撑高 wrap，
   卡片视觉上偏上。恢复 hidden 语义（点击直达后详情面板已不弹出） */
.fp3d-detail[hidden] { display: none; }
.fp3d-detail.fp3d-detail-open {
  opacity: 1;
  transform: translateY(0) scale(1);
}
.fp3d-detail-close {
  position: absolute;
  top: 10px; right: 10px;
  width: 26px; height: 26px;
  border-radius: 50%;
  border: 1px solid rgba(255,255,255,0.15);
  background: rgba(255,255,255,0.06);
  color: rgba(255,255,255,0.7);
  font-size: 0.7rem;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: background 0.2s, transform 0.2s;
}
.fp3d-detail-close:hover { background: rgba(255,255,255,0.14); transform: rotate(90deg); }
.fp3d-detail-icon {
  flex: none;
  width: 52px; height: 52px;
  border-radius: 14px;
  background: linear-gradient(150deg, rgba(99,102,241,0.3), rgba(236,72,153,0.22));
  border: 1px solid rgba(255,255,255,0.14);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 26px;
  box-shadow: 0 6px 20px rgba(99,102,241,0.25);
}
.fp3d-detail-info { flex: 1; min-width: 0; }
.fp3d-detail-name {
  font-size: 1.02rem;
  font-weight: 800;
  color: #fff;
  letter-spacing: 0.02em;
  padding-right: 26px;
}
.fp3d-detail-desc {
  font-size: 0.72rem;
  color: rgba(255,255,255,0.6);
  line-height: 1.55;
  margin-top: 5px;
}
.fp3d-detail-meta {
  font-size: 0.6rem;
  color: rgba(255,255,255,0.4);
  margin-top: 7px;
  letter-spacing: 0.04em;
}
.fp3d-detail-start {
  margin-top: 12px;
  width: 100%;
  padding: 10px 0;
  border: none;
  border-radius: 12px;
  background: linear-gradient(135deg, #6366f1, #8b5cf6);
  color: #fff;
  font-size: 0.82rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  cursor: pointer;
  box-shadow: 0 8px 24px rgba(99,102,241,0.35);
  transition: transform 0.2s, box-shadow 0.2s, filter 0.2s;
}
.fp3d-detail-start:hover {
  transform: translateY(-1px);
  box-shadow: 0 12px 30px rgba(99,102,241,0.45);
  filter: brightness(1.1);
}
.fp3d-detail-start:active { transform: translateY(0) scale(0.98); }

/* 响应式 */
@media (max-width: 480px) {
  .fp3d-stage { height: 252px; }
  .fp3d-card { width: 126px; height: 176px; }
  .fp3d-card-name { font-size: 0.7rem; }
  .fp3d-card-icon { font-size: 26px; }
  .fp3d-detail { margin: 4px 12px 12px; padding: 14px 12px 12px; }
}
@media (min-width: 900px) {
  .fp3d-stage { height: 270px; }
  .fp3d-card { width: 172px; height: 234px; }
}

/* 降低动画偏好：关闭流体光斑与自动旋转 */
@media (prefers-reduced-motion: reduce) {
  .fp3d-blob, .fp3d-flow-dot { animation: none; }
  .fp3d-stage { perspective: 1100px; }
}

/* ═══════════════ fp3d 视觉升级 v2 ═══════════════
   星空粒子 / 传送门光环 / 玻璃反射 / 全息描边 / 舞台辉光 / 详情徽章 */

/* ── 星空粒子层 ── */
.fp3d-stars {
  position: absolute; inset: 0;
  pointer-events: none;
  overflow: hidden;
  z-index: 0;
}
.fp3d-stars i {
  position: absolute;
  left: 0; top: 0;
  width: 3px; height: 3px;
  border-radius: 50%;
  background: #fff;
  opacity: 0;
  box-shadow: 0 0 6px rgba(255,255,255,0.9);
  animation: fp3dStarTwinkle var(--fp3d-star-dur, 4s) ease-in-out infinite;
  animation-delay: var(--fp3d-star-delay, 0s);
}
@keyframes fp3dStarTwinkle {
  0%, 100% { opacity: 0; transform: scale(0.4); }
  50% { opacity: var(--fp3d-star-op, 0.9); transform: scale(1); }
}

/* ── 传送门地面光环（透视椭圆 + 旋转）── */
.fp3d-portal {
  position: absolute;
  left: 50%; top: 50%;
  width: 620px; height: 620px;
  transform: translate(-50%, -50%);
  pointer-events: none;
  z-index: 0;
  perspective: 700px;
}
.fp3d-portal-ring {
  position: absolute;
  left: 50%; top: 50%;
  border-radius: 50%;
  border-style: solid;
  border-width: 1px;
  transform: translate(-50%, -50%) rotateX(76deg);
  transform-style: preserve-3d;
  animation: fp3dPortalSpin var(--fp3d-portal-dur, 18s) linear infinite;
}
.fp3d-portal-ring.p1 {
  width: 420px; height: 420px;
  border-color: rgba(99,102,241,0.35);
  border-top-color: rgba(129,140,248,0.9);
  border-bottom-color: rgba(56,189,248,0.7);
  box-shadow: 0 0 40px rgba(99,102,241,0.25), inset 0 0 40px rgba(99,102,241,0.12);
  animation-duration: 16s;
}
.fp3d-portal-ring.p2 {
  width: 520px; height: 520px;
  border-color: rgba(236,72,153,0.18);
  border-top-color: rgba(232,121,249,0.75);
  border-bottom-color: rgba(251,146,60,0.55);
  box-shadow: 0 0 60px rgba(236,72,153,0.15);
  animation-duration: 24s;
  animation-direction: reverse;
}
.fp3d-portal-ring.p3 {
  width: 640px; height: 640px;
  border-color: rgba(34,211,238,0.12);
  border-top-color: rgba(34,211,238,0.6);
  border-bottom-color: rgba(99,102,241,0.5);
  box-shadow: 0 0 80px rgba(34,211,238,0.12);
  animation-duration: 32s;
}
@keyframes fp3dPortalSpin {
  from { transform: translate(-50%, -50%) rotateX(76deg) rotate(0deg); }
  to { transform: translate(-50%, -50%) rotateX(76deg) rotate(360deg); }
}
/* 传送门中央光晕 */
.fp3d-portal::after {
  content: '';
  position: absolute;
  left: 50%; top: 50%;
  width: 300px; height: 300px;
  transform: translate(-50%, -50%);
  border-radius: 50%;
  background: radial-gradient(circle, rgba(99,102,241,0.14), rgba(236,72,153,0.06) 45%, transparent 70%);
  filter: blur(6px);
}

/* ── 玻璃反射高光（斜向扫光 + 静态高光条）── */
.fp3d-card-glare {
  position: absolute; inset: 0;
  pointer-events: none;
  border-radius: 16px;
  background: linear-gradient(115deg,
    rgba(255,255,255,0) 20%,
    rgba(255,255,255,0.10) 38%,
    rgba(255,255,255,0.22) 50%,
    rgba(255,255,255,0.06) 62%,
    rgba(255,255,255,0) 80%);
  opacity: 0;
  mix-blend-mode: screen;
  transition: opacity 0.45s cubic-bezier(0.22,1,0.36,1);
  z-index: 3;
}
.fp3d-card:hover .fp3d-card-glare,
.fp3d-card.fp3d-hover .fp3d-card-glare,
.fp3d-card.fp3d-active .fp3d-card-glare { opacity: 1; }

/* ── 全息渐变描边（conic-gradient 旋转）── */
.fp3d-card-border {
  position: absolute; inset: 0;
  pointer-events: none;
  border-radius: 16px;
  padding: 1.2px;
  background: conic-gradient(from var(--fp3d-border-rot, 0deg),
    rgba(129,140,248,0.9),
    rgba(232,121,249,0.9),
    rgba(56,189,248,0.9),
    rgba(52,211,153,0.85),
    rgba(129,140,248,0.9));
  -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
  -webkit-mask-composite: xor;
  mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
  mask-composite: exclude;
  opacity: 0;
  transition: opacity 0.45s cubic-bezier(0.22,1,0.36,1);
  z-index: 4;
  animation: fp3dBorderSpin 5s linear infinite;
}
.fp3d-card:hover .fp3d-card-border,
.fp3d-card.fp3d-hover .fp3d-card-border,
.fp3d-card.fp3d-active .fp3d-card-border { opacity: 1; }
@property --fp3d-border-rot {
  syntax: '<angle>';
  initial-value: 0deg;
  inherits: false;
}
@keyframes fp3dBorderSpin {
  from { --fp3d-border-rot: 0deg; }
  to { --fp3d-border-rot: 360deg; }
}

/* ── 第 4 个流光点（底部紫光）── */
.fp3d-flow-dot.f4 {
  width: 78px; height: 78px;
  left: 50%; top: 46%;
  transform: translate(-50%, -50%);
  background: radial-gradient(circle, rgba(167,139,250,0.5), transparent 70%);
  animation: fp3dFlow4 8s ease-in-out infinite;
  z-index: 1;
}
@keyframes fp3dFlow4 {
  0%, 100% { transform: translate(-50%, -50%) scale(1); }
  50% { transform: translate(-50%, -58%) scale(1.35); }
}

/* ── 正面卡片辉光呼吸（聚焦时能量脉冲）── */
.fp3d-card.fp3d-hover .fp3d-card-inner::after,
.fp3d-card.fp3d-active .fp3d-card-inner::after {
  content: '';
  position: absolute; inset: 0;
  border-radius: 16px;
  background: radial-gradient(circle at 50% 40%, rgba(139,92,246,0.22), transparent 68%);
  pointer-events: none;
  z-index: 2;
  animation: fp3dEnergyPulse 2.6s ease-in-out infinite;
}
@keyframes fp3dEnergyPulse {
  0%, 100% { opacity: 0.55; }
  50% { opacity: 1; }
}

/* ── 舞台辉光（跟随鼠标，JS 设置 left/top 百分比）── */
.fp3d-stage-glow {
  position: absolute;
  width: 340px; height: 340px;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(99,102,241,0.16), rgba(236,72,153,0.07) 45%, transparent 70%);
  filter: blur(20px);
  pointer-events: none;
  z-index: 0;
  transform: translate(-50%, -50%);
  transition: left 0.5s cubic-bezier(0.22,1,0.36,1), top 0.5s cubic-bezier(0.22,1,0.36,1);
  will-change: left, top;
}

/* ── 详情面板分类徽章 ── */
.fp3d-detail-badge {
  display: inline-block;
  font-size: 0.56rem;
  font-weight: 700;
  letter-spacing: 0.1em;
  padding: 3px 9px;
  border-radius: 20px;
  margin-top: 8px;
  border: 1px solid transparent;
}
.fp3d-detail-badge-ai {
  color: #a5b4fc;
  background: rgba(99,102,241,0.16);
  border-color: rgba(99,102,241,0.4);
  box-shadow: 0 0 14px rgba(99,102,241,0.2);
}
.fp3d-detail-badge-quiz {
  color: #f9a8d4;
  background: rgba(236,72,153,0.14);
  border-color: rgba(236,72,153,0.38);
  box-shadow: 0 0 14px rgba(236,72,153,0.18);
}

/* ── 卡片悬停提升 ── */
.fp3d-card.fp3d-hover .fp3d-card-inner,
.fp3d-card.fp3d-active .fp3d-card-inner {
  border-color: rgba(255,255,255,0.4);
  box-shadow: 0 0 0 1px rgba(129,140,248,0.45), 0 18px 60px rgba(99,102,241,0.4), 0 0 40px rgba(139,92,246,0.25), inset 0 1px 0 rgba(255,255,255,0.2);
}
.fp3d-card.fp3d-hover .fp3d-card-name,
.fp3d-card.fp3d-active .fp3d-card-name {
  color: #e0e7ff;
  text-shadow: 0 0 16px rgba(129,140,248,0.8);
}

/* 响应式：小屏收窄传送门 */
@media (max-width: 480px) {
  .fp3d-portal { width: 420px; height: 420px; }
  .fp3d-portal-ring.p1 { width: 300px; height: 300px; }
  .fp3d-portal-ring.p2 { width: 380px; height: 380px; }
  .fp3d-portal-ring.p3 { width: 460px; height: 460px; }
  .fp3d-stage-glow { width: 260px; height: 260px; }
}

/* 降低动画偏好：关闭星空/传送门/描边动画 */
@media (prefers-reduced-motion: reduce) {
  .fp3d-stars i, .fp3d-portal-ring, .fp3d-card-border,
  .fp3d-card.fp3d-hover .fp3d-card-inner::after,
  .fp3d-card.fp3d-active .fp3d-card-inner::after { animation: none; }
}

/* ── 工具入口页亮点 chips（发型/手相/脸型通用）── */
.tool-entry-features {
  display: flex; justify-content: center; flex-wrap: wrap; gap: 8px;
  margin: 14px auto 18px; max-width: 320px;
}
.tool-entry-feature {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 6px 12px; border-radius: 999px;
  font-size: 0.76rem; font-weight: 600; color: rgba(255,255,255,0.72);
  background: rgba(255,255,255,0.06);
  border: 1px solid rgba(255,255,255,0.10);
  backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px);
}
.tool-entry-feature b { font-size: 0.9rem; line-height: 1; }

/* soulmate 金色主题适配 */
.sm-features .tool-entry-feature {
  background: rgba(212,175,110,0.10);
  border-color: rgba(212,175,110,0.28);
  color: rgba(255,240,210,0.85);
}
.sm-features { margin-top: 10px; }

/* ── 工具页悬浮返回按钮（发型/脸型/手相等独立全屏工具）── */
.tool-back {
  position: fixed;
  top: 14px; left: 18px;
  z-index: 80;
  width: 38px; height: 38px;
  border-radius: 50%;
  border: 1px solid rgba(255,255,255,0.14);
  background: rgba(15,15,28,0.8);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  color: #fff;
  font-size: 1.3rem;
  line-height: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  box-shadow: 0 4px 18px rgba(0,0,0,0.35);
  transition: transform 0.2s, background 0.2s, opacity 0.2s;
  -webkit-tap-highlight-color: transparent;
}
.tool-back:hover { background: rgba(30,30,52,0.9); transform: scale(1.06); }
.tool-back:active { transform: scale(0.94); }
/* 有语言切换时按钮保持可见；入口屏 z-index 高于内部返回 */
.hs-app .tool-back, .ff-app .tool-back, .pm-app .tool-back { opacity: 0.92; }

/* ═══ 工具介绍页（发型/脸型/手相）复用 quiz-intro 结构 ═══
   .hs-app/.ff-app/.pm-app * { margin:0;padding:0 } 会压掉 quiz-intro 的间距，
   用高特异性选择器恢复布局
   注意：入口介绍页与其他流程屏一样默认 display:none（整屏切换），
   仅 .active 时显示 —— 不能无条件 display:block，否则点开始后
   介绍页仍留在上方，视觉上变成「就地展开」而非整屏跳转 */
.hs-app .hs-screen.quiz-intro-entry,
.ff-app .ff-screen.quiz-intro-entry,
.pm-app .pm-screen.quiz-intro-entry {
  display: none;
  min-height: 0;
  padding: 0;
}
.hs-app .hs-screen.quiz-intro-entry.active,
.ff-app .ff-screen.quiz-intro-entry.active,
.pm-app .pm-screen.quiz-intro-entry.active {
  display: block;
}
.hs-app .hs-screen.quiz-intro-entry .quiz-intro-page,
.ff-app .ff-screen.quiz-intro-entry .quiz-intro-page,
.pm-app .pm-screen.quiz-intro-entry .quiz-intro-page {
  margin: 0; padding: 0;
  width: 100%; text-align: left;
}
.hs-app .hs-screen.quiz-intro-entry .quiz-intro-hero,
.ff-app .ff-screen.quiz-intro-entry .quiz-intro-hero,
.pm-app .pm-screen.quiz-intro-entry .quiz-intro-hero {
  margin: 0;
}
.hs-app .hs-screen.quiz-intro-entry .quiz-intro-features,
.ff-app .ff-screen.quiz-intro-entry .quiz-intro-features,
.pm-app .pm-screen.quiz-intro-entry .quiz-intro-features {
  margin: 10px 0 12px;
}
.hs-app .hs-screen.quiz-intro-entry .quiz-intro-meta,
.ff-app .ff-screen.quiz-intro-entry .quiz-intro-meta,
.pm-app .pm-screen.quiz-intro-entry .quiz-intro-meta {
  margin: 22px 0 14px;
}
.hs-app .hs-screen.quiz-intro-entry .quiz-intro-tip,
.ff-app .ff-screen.quiz-intro-entry .quiz-intro-tip,
.pm-app .pm-screen.quiz-intro-entry .quiz-intro-tip {
  margin: 0 0 26px;
}

/* ═══════════════ fp3d 触屏性能降级 ═══════════════
   手机上 3D 轮播卡顿根因（按 GPU 负担排序）：
   1. backdrop-filter: blur(14px) × 11 卡（3D 上下文内背景采样最吃 GPU）
   2. conic-gradient 全息描边 + mask-composite + @property 旋转 × 11
   3. 每卡 4 个 blur 流光点 × 11（44 个持续动画）
   4. 3 个传送门光环 preserve-3d 旋转 + blur 中央光晕
   5. 26 颗星星闪烁 + 3 个 blur 光斑漂移 + 舞台辉光 blur
   触屏设备（hover:none）降级：关重型模糊/描边动画，保留 3D 旋转骨架 */
@media (hover: none), (pointer: coarse) {
  /* 卡片玻璃模糊 → 半透明纯色（最关键的优化） */
  .fp3d-card-inner {
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
    background: rgba(18, 18, 36, 0.88);
  }
  .fp3d-card-ai .fp3d-card-inner {
    background: linear-gradient(160deg, rgba(99,102,241,0.20), rgba(14,14,30,0.92) 55%, rgba(34,211,238,0.10));
  }
  .fp3d-card-quiz .fp3d-card-inner {
    background: linear-gradient(160deg, rgba(236,72,153,0.18), rgba(14,14,30,0.92) 55%, rgba(251,146,60,0.10));
  }
  /* 全息描边：停旋转动画 + 降透明度（保留细边） */
  .fp3d-card-border {
    animation: none;
    opacity: 0;
  }
  /* 流光点：只保留正面卡中央一个静态光晕，其余关闭 */
  .fp3d-flow-dot { animation: none; opacity: 0; }
  .fp3d-flow-dot.f4 {
    opacity: 0.5;
    filter: none;
  }
  /* 传送门光环：降透明度 + 停旋转 */
  .fp3d-portal-ring { animation: none; }
  .fp3d-portal-ring.p1 { border-color: rgba(99,102,241,0.22); box-shadow: none; }
  .fp3d-portal-ring.p2 { border-color: rgba(236,72,153,0.12); box-shadow: none; }
  .fp3d-portal-ring.p3 { border-color: rgba(34,211,238,0.08); box-shadow: none; }
  .fp3d-portal::after { filter: none; opacity: 0.5; }
  /* 舞台辉光：固定居中不跟随（无鼠标） */
  .fp3d-stage-glow {
    filter: none;
    opacity: 0.5;
    transition: none;
  }
  /* 环境光斑：关闭漂移动画 */
  .fp3d-blob { animation: none; }
  /* 星空粒子：数量已由 JS 减到 10，动画保留（轻量） */
  /* 卡片悬停辉光呼吸（触屏无 hover） */
  .fp3d-card.fp3d-hover .fp3d-card-inner::after,
  .fp3d-card.fp3d-active .fp3d-card-inner::after { animation: none; opacity: 0.6; }
  /* 图片缩放 hover 效果关闭 */
  .fp3d-card:hover .fp3d-card-img,
  .fp3d-card.fp3d-hover .fp3d-card-img { transform: scale(1.0); }
  /* 触屏上卡片整体提升 transform 性能：强制合成层 */
  .fp3d-card { will-change: transform, opacity; }
  /* 拖拽时禁止文本/图片选中 */
  .fp3d-stage { -webkit-user-select: none; user-select: none; -webkit-touch-callout: none; }
  /* 手机端透视中心下移：卡片视觉居中（原 46% 偏上导致卡片显高、看着靠上被裁） */
  .fp3d-stage { perspective-origin: 50% 54%; }
}

/* ═══ 忠诚度测试专属 ═══ */
.mbti-hero-traits { display:flex; flex-wrap:wrap; gap:6px; margin-top:12px; justify-content:center; }
.mbti-trait-chip { font-size:0.72rem; padding:4px 10px; border-radius:99px; border:1px solid; background:rgba(0,0,0,0.25); backdrop-filter:blur(4px); }
.loyalty-tip { animation: loyaltyTipIn 0.6s ease both; }
@keyframes loyaltyTipIn { from { opacity:0; transform:translateY(8px); } to { opacity:1; transform:translateY(0); } }
[data-quiz="loyalty"] .mbti-hero-name { background:linear-gradient(120deg,#fff,#ff8fb3); -webkit-background-clip:text; background-clip:text; -webkit-text-fill-color:transparent; }


/* ═══════════════════════════════════════════════════════
   结果卡片（品牌风重设计 v3，2026-08-22）
   每型统一品牌框架：
   顶部系列徽章 → 类型码 → 中文名 → 四维字母高亮（原创字母徽章）
   ═══════════════════════════════════════════════════════ */

/* 深色 16p 卡基础（v0/v1/v2/v3/v5 通用） */
.bp-card.theme-16p {
  background:
    radial-gradient(130% 95% at 88% -12%, var(--pc2), transparent 55%),
    radial-gradient(120% 100% at 8% 115%, var(--pc1), transparent 62%),
    linear-gradient(168deg, #181522 0%, #0f0d17 62%, #0a0910 100%);
  border-radius: 18px;
  box-shadow: 0 12px 34px rgba(0,0,0,0.5), 0 0 26px rgba(0,0,0,0.25);
}
/* 顶部专属色条 */
.bp-card.theme-16p::before {
  content: ''; position: absolute; left: 0; right: 0; top: 0; height: 4px; z-index: 4;
  border-radius: 18px 18px 0 0;
  background: linear-gradient(90deg, var(--pc1), var(--pc2));
}
.bp-card.theme-16p .bp-card-photo { opacity: 0.9; }
.bp-card.theme-16p .bp-card-overlay {
  background: linear-gradient(180deg, rgba(10,8,18,0.1) 0%, rgba(10,8,18,0.55) 55%, rgba(10,8,18,0.94) 100%);
}

/* 类型码：超大白字 */
.bp-16p-type {
  font-size: 1.7rem; font-weight: 900; letter-spacing: 0.22em; line-height: 1.05;
  color: #fff;
  text-shadow: 0 2px 22px rgba(0,0,0,0.6);
}
/* 中文名 */
.bp-16p-title {
  margin-top: 4px;
  font-size: 0.72rem; font-weight: 600; letter-spacing: 0.12em;
  color: rgba(255,255,255,0.78);
}
/* 四维字母：主导高亮（16p 标志性） */
.bp-ltrs {
  display: flex; justify-content: center; gap: 12px;
  margin-top: 12px;
}
.bp-ltr { display: flex; gap: 2px; }
.bp-ltr i {
  font-style: normal; font-size: 0.66rem; font-weight: 800;
  letter-spacing: 0.02em; color: rgba(255,255,255,0.32);
}
.bp-ltr i.on {
  color: #fff;
  text-shadow: 0 0 12px var(--pc2), 0 0 24px rgba(255,255,255,0.25);
}
/* 分数 */
.bp-16p-score {
  margin-top: 12px;
  display: flex; align-items: baseline; justify-content: center; gap: 4px;
  font-family: 'Georgia', serif;
  font-size: 1.9rem; font-weight: 700; line-height: 1;
  color: #fff;
  text-shadow: 0 2px 18px rgba(0,0,0,0.4);
}
.bp-16p-score span { font-size: 0.6rem; color: rgba(255,255,255,0.5); font-weight: 600; }

/* 内容区对齐 */
.bp-card.bp-v0 .bp-cv0,
.bp-card.bp-v1 .bp-cv1,
.bp-card.bp-v2 .bp-cv2,
.bp-card.bp-v3 .bp-cv3,
.bp-card.bp-v5 .bp-cv5 {
  display: flex; flex-direction: column; align-items: center; text-align: center;
}
.bp-card.bp-v0 .bp-cv0 { padding: 0 12px 24px; }
.bp-card.bp-v1 .bp-cv1 { padding: 0 14px 22px; }
.bp-card.bp-v2 .bp-cv2 { padding: 0 16px 26px; }
.bp-card.bp-v3 .bp-cv3 { padding: 0 12px 22px; }
.bp-card.bp-v5 .bp-cv5 { padding: 0 12px 24px; }

/* 小人：内容上方统一 */
.bp-card.theme-16p .bp-mbti-figure { margin-bottom: 8px; }

/* v1 专属色光晕 */
.bp-16p-glow {
  position: absolute; left: 50%; top: 36%; z-index: 0; pointer-events: none;
  width: 150px; height: 150px;
  transform: translate(-50%, -50%);
  border-radius: 50%;
  background: radial-gradient(circle, var(--pc2), transparent 62%);
  opacity: 0.28; filter: blur(10px);
}

/* v2 宣言卡：深色底 + 专属色引号 */
.bp-card.bp-v2.theme-16p .bp-v2-mark {
  font-family: 'Georgia', serif;
  font-size: 3rem; line-height: 0.7; height: 0.85em;
  color: var(--pc2);
  text-shadow: 0 0 20px var(--pc1);
}
.bp-card.bp-v2.theme-16p .bp-v2-quote {
  margin-top: 8px;
  font-family: 'Georgia', 'Noto Serif SC', serif;
  font-size: 0.94rem; font-weight: 600; font-style: italic; line-height: 1.5;
  color: rgba(255,255,255,0.92);
  text-shadow: 0 1px 8px rgba(0,0,0,0.5);
}

/* v3 星轨：专属色轨道 */
.bp-card.bp-v3.theme-16p .bp-v3-orbit {
  border-color: rgba(255,255,255,0.28);
  box-shadow: 0 0 18px var(--pc1), inset 0 0 18px var(--pc1);
}
.bp-card.bp-v3.theme-16p .bp-v3-orbit i { background: var(--pc2); box-shadow: 0 0 12px var(--pc2); }

/* v4 白底卡（16p 浅色版） */
.bp-card.theme-16p-light {
  background: #ffffff;
  border-radius: 18px;
  box-shadow: 0 16px 40px rgba(0,0,0,0.2);
}
.bp-card.theme-16p-light::before {
  content: ''; position: absolute; left: 0; right: 0; top: 0; height: 4px; z-index: 4;
  border-radius: 18px 18px 0 0;
  background: linear-gradient(90deg, var(--pc1), var(--pc2));
}
.bp-card.theme-16p-light .bp-v4-masthead {
  position: absolute; left: 0; right: 0; top: 12px; z-index: 3;
  padding: 0 16px;
  font-size: 0.5rem; font-weight: 900; letter-spacing: 0.3em;
  color: var(--pc1); text-transform: uppercase;
}
.bp-card.theme-16p-light .bp-cv4 {
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  text-align: center; padding: 0 14px 24px;
}
.bp-card.theme-16p-light .bp-16p-type { color: #111; text-shadow: none; font-size: 2rem; }
.bp-card.theme-16p-light .bp-16p-title { color: #666; }
.bp-card.theme-16p-light .bp-ltr i { color: #d0d0d0; }
.bp-card.theme-16p-light .bp-ltr i.on { color: var(--pc1); text-shadow: none; }
.bp-card.theme-16p-light .bp-16p-score { color: #111; }
.bp-card.theme-16p-light .bp-16p-score span { color: #999; }

/* v5 能量：专属色渐变 */
.bp-card.bp-v5.theme-16p {
  background: linear-gradient(160deg, var(--pc1) 0%, var(--pc2) 100%);
}
.bp-card.bp-v5.theme-16p::before { background: rgba(255,255,255,0.35); }
.bp-card.bp-v5.theme-16p .bp-card-overlay {
  background: linear-gradient(180deg, rgba(255,255,255,0.04) 0%, rgba(0,0,0,0.32) 100%);
}
.bp-card.bp-v5.theme-16p .bp-v5-glow {
  background: radial-gradient(circle, rgba(255,255,255,0.45), transparent 62%);
}

/* ═══ 16p 卡片精修 v3.1（2026-08-22 晚）：排版 / 布局 / 质感 ═══ */

/* 卡片质感：细腻描边 + 柔和投影 + 顶部色条发光 */
.bp-card.theme-16p,
.bp-card.theme-16p-light {
  border: 1px solid rgba(255,255,255,0.09);
  box-shadow: 0 18px 44px rgba(0,0,0,0.55), inset 0 0 0 1px rgba(255,255,255,0.03);
}
.bp-card.theme-16p::before,
.bp-card.theme-16p-light::before {
  box-shadow: 0 2px 14px var(--pc1);
}
/* 深色卡：微光纹理 */
.bp-card.theme-16p::after {
  content: ''; position: absolute; inset: 0; z-index: 0; pointer-events: none;
  border-radius: inherit;
  background:
    radial-gradient(140% 70% at 50% 0%, rgba(255,255,255,0.06), transparent 55%),
    repeating-linear-gradient(115deg, rgba(255,255,255,0.015) 0 1px, transparent 1px 4px);
}
/* 类型码：更大气 */
.bp-16p-type {
  font-size: 1.85rem; letter-spacing: 0.14em; font-weight: 900;
}
/* 中文名：小字加字距 */
.bp-16p-title { letter-spacing: 0.18em; font-size: 0.7rem; opacity: 0.9; }
/* 四维字母：主导高亮 + 下划线 */
.bp-ltrs { gap: 14px; margin-top: 14px; }
.bp-ltr { gap: 3px; }
.bp-ltr i { font-size: 0.7rem; font-weight: 900; color: rgba(255,255,255,0.3); position: relative; }
.bp-ltr i.on {
  color: #fff;
  text-shadow: 0 0 10px var(--pc2), 0 0 22px var(--pc2);
}
.bp-ltr i.on::after {
  content: ''; position: absolute; left: 0; right: 0; bottom: -4px; height: 2px;
  border-radius: 2px; background: var(--pc2); box-shadow: 0 0 8px var(--pc2);
}
/* 分数：SCORE 标签 + 渐变 */
.bp-16p-score { margin-top: 16px; position: relative; font-size: 2.1rem; }
.bp-16p-score::before {
  content: 'SCORE'; position: absolute; top: -15px; left: 50%; transform: translateX(-50%);
  font-size: 0.42rem; font-weight: 800; letter-spacing: 0.3em; color: rgba(255,255,255,0.4);
  white-space: nowrap;
}
.bp-16p-score {
  background: linear-gradient(120deg, #fff, #ffd166);
  -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent;
}
.bp-16p-score span { -webkit-text-fill-color: rgba(255,255,255,0.5); }
/* 白卡分数 */
.bp-card.theme-16p-light .bp-16p-score {
  background: linear-gradient(120deg, #111, #555);
  -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent;
}
.bp-card.theme-16p-light .bp-16p-score::before { color: rgba(0,0,0,0.35); }
.bp-card.theme-16p-light .bp-16p-score span { -webkit-text-fill-color: rgba(0,0,0,0.4); }
/* 底部品牌水印（完成感） */
.bp-card.theme-16p .bp-card-content::after,
.bp-card.theme-16p-light .bp-card-content::after {
  content: 'AIPLAY LAB';
  position: absolute; left: 0; right: 0; bottom: 8px;
  font-size: 0.4rem; font-weight: 800; letter-spacing: 0.34em;
  color: rgba(255,255,255,0.28); text-transform: uppercase;
  text-align: center;
}
.bp-card.theme-16p-light .bp-card-content::after { color: rgba(0,0,0,0.25); }
/* 小人统一 76px + 底座投影 */
.bp-card.theme-16p .bp-mbti-center { top: 15%; width: 76px; height: 76px; }
.bp-card.theme-16p .bp-mbti-center svg { width: 76px; height: 76px; }
.bp-card.theme-16p .bp-mbti-figure {
  filter: drop-shadow(0 6px 16px rgba(0,0,0,0.45));
}
/* v0 内容底部对齐 */
.bp-card.bp-v0 .bp-cv0 { padding: 0 12px 26px; }
/* v1 光晕调优 */
.bp-16p-glow { opacity: 0.35; }
/* v4 刊头微调 */
.bp-card.theme-16p-light .bp-v4-masthead { top: 14px; }

/* ═══ 16p 卡片 v3.2：去掉中央小人符号，内容垂直居中 ═══ */
.bp-card.theme-16p .bp-card-content,
.bp-card.theme-16p-light .bp-card-content {
  top: 0; bottom: 0;
  display: flex; flex-direction: column; align-items: center; justify-content: center;
}
.bp-card.bp-v0 .bp-cv0 { padding: 10px 12px 22px; }
.bp-card.bp-v1 .bp-cv1 { padding: 10px 14px 22px; }
.bp-card.bp-v2 .bp-cv2 { padding: 10px 16px 22px; }
.bp-card.bp-v3 .bp-cv3 { padding: 10px 12px 22px; }
.bp-card.bp-v5 .bp-cv5 { padding: 10px 12px 22px; }
/* 16p 卡不再显示小人 */
.bp-card.theme-16p .bp-mbti-figure,
.bp-card.theme-16p-light .bp-mbti-figure { display: none !important; }
/* v0 封面：背景整体加深，保证中央类型码清晰 */
.bp-card.bp-v0.theme-16p .bp-card-overlay {
  background: linear-gradient(180deg, rgba(10,8,18,0.38) 0%, rgba(10,8,18,0.5) 45%, rgba(10,8,18,0.9) 100%);
}
/* v3 轨道位置微调（中央偏上，衬托类型码） */
.bp-card.bp-v3.theme-16p .bp-v3-orbit { top: 30%; }

/* ═══ 精品单卡 v4（2026-08-25）：每个类型 1 张展示卡 ═══ */
/* 结果页容器：单卡居中，去掉横滑与 dots */
.beauty-cards-carousel {
  overflow: visible; scroll-snap-type: none;
  margin: 0; padding: 0;
}
.beauty-cards-track { justify-content: center; gap: 0; }
.beauty-cards-track .bp-card { flex: 0 0 auto; }
.beauty-cards-dots { display: none; }

/* 精品卡本体 */
.bp-card.bp-premium {
  width: min(80vw, 330px);
  aspect-ratio: 3 / 4;
  border-radius: 24px;
  border: 1px solid rgba(255,255,255,0.1);
  box-shadow: 0 24px 60px rgba(0,0,0,0.6), 0 0 0 1px rgba(255,255,255,0.04) inset;
  transition: transform 0.3s cubic-bezier(0.22,1,0.36,1);
}
.bp-card.bp-premium:hover { transform: translateY(-4px) scale(1.01); }
.bp-card.bp-premium .bp-card-top { justify-content: center; }
.bp-card.bp-premium .bp-card-overlay {
  background: linear-gradient(180deg, rgba(10,8,18,0.4) 0%, rgba(10,8,18,0.42) 40%, rgba(10,8,18,0.88) 100%);
}
/* 专属色光晕（类型码后方） */
.bp-premium-glow {
  position: absolute; left: 50%; top: 40%; z-index: 0; pointer-events: none;
  width: 250px; height: 250px;
  transform: translate(-50%, -50%);
  border-radius: 50%;
  background: radial-gradient(circle, var(--pc1), transparent 65%);
  opacity: 0.32; filter: blur(22px);
}
/* 微纹理 */
.bp-premium-lines {
  position: absolute; inset: 0; z-index: 0; pointer-events: none;
  background: repeating-linear-gradient(115deg, rgba(255,255,255,0.018) 0 1px, transparent 1px 5px);
}
/* 内容区：垂直居中 */
.bp-premium-content {
  top: 0; bottom: 0;
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  padding: 16px 20px 22px;
}
/* 类型码：超大 + 专属色辉光 */
.bp-premium-type {
  font-size: 2.7rem; font-weight: 900; letter-spacing: 0.16em; line-height: 1;
  color: #fff;
  text-shadow: 0 0 30px var(--pc1), 0 0 70px var(--pc2), 0 2px 26px rgba(0,0,0,0.7);
}
/* 类型名 + 英文名 */
.bp-premium-title {
  margin-top: 12px;
  display: flex; align-items: baseline; gap: 9px;
  font-size: 1rem; font-weight: 800; letter-spacing: 0.1em;
  color: #fff;
  text-shadow: 0 1px 10px rgba(0,0,0,0.5);
}
.bp-premium-title em {
  font-style: normal; font-size: 0.66rem; font-weight: 600; letter-spacing: 0.18em;
  color: rgba(255,255,255,0.6);
}
/* 四维字母 */
.bp-premium-content .bp-ltrs { margin-top: 18px; gap: 16px; }
.bp-premium-content .bp-ltr i { font-size: 0.78rem; }
/* 特质标签 */
.bp-premium-traits {
  display: flex; flex-wrap: wrap; justify-content: center; gap: 7px;
  margin-top: 18px;
}
.bp-premium-traits span {
  font-size: 0.68rem; font-weight: 700; letter-spacing: 0.05em;
  padding: 5px 12px; border-radius: 999px;
  background: rgba(255,255,255,0.1);
  border: 1px solid rgba(255,255,255,0.24);
  color: rgba(255,255,255,0.94);
  backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px);
}
/* 底部：分数 + 品牌 */
.bp-premium-foot {
  margin-top: 22px;
  display: flex; align-items: center; justify-content: center; gap: 16px;
  width: 100%;
}
.bp-premium-score {
  font-family: 'Georgia', 'Times New Roman', serif;
  font-size: 2.1rem; font-weight: 700; line-height: 1;
  background: linear-gradient(120deg, #fff, #ffd166);
  -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent;
  filter: drop-shadow(0 2px 12px rgba(255,209,102,0.35));
}
.bp-premium-score i {
  font-style: normal; font-size: 0.7rem; font-weight: 600;
  -webkit-text-fill-color: rgba(255,255,255,0.5);
  margin-left: 2px;
}
.bp-premium-brand {
  font-size: 0.46rem; font-weight: 800; letter-spacing: 0.3em;
  color: rgba(255,255,255,0.42); text-transform: uppercase;
  padding-left: 16px;
  border-left: 1px solid rgba(255,255,255,0.16);
}
/* 隐藏 16p 卡的水印（精品卡已有品牌） */
.bp-premium-content::after { display: none; }
/* 非 mbti（九型/BMI 等）维度条在精品卡里的对齐 */
.bp-premium-content .bp-v1-bars { width: 100%; margin-top: 16px; }
.bp-premium-content .bp-card-dims { justify-content: center; margin-top: 14px; }
/* 大图查看 overlay 尺寸 */
#quiz-card-overlay .bp-premium { width: min(84vw, 380px); }

/* ═══ 塔罗牌融合 v4.1（2026-08-25）：AI 卡图 + 金色塔罗边框 ═══ */
.bp-card.bp-premium.theme-16p {
  border: 2.5px solid rgba(212,175,55,0.92);
  outline: 1px solid rgba(212,175,55,0.4);
  outline-offset: 4px;
  box-shadow:
    0 0 0 4px rgba(10,8,18,0.9),
    0 0 0 5px rgba(212,175,55,0.45),
    0 26px 60px rgba(0,0,0,0.7),
    0 0 46px rgba(212,175,55,0.14);
  border-radius: 18px;
}
/* 内框金线（信息区） */
.bp-card.bp-premium .bp-premium-content {
  top: 9px; bottom: 9px; left: 9px; right: 9px;
  border: 1px solid rgba(212,175,55,0.4);
  border-radius: 11px;
  padding: 14px 14px 18px;
  background: rgba(8,6,14,0.18);
  backdrop-filter: blur(2px);
}
/* 系列徽章：金色 */
.bp-card.bp-premium .bp-card-series {
  background: rgba(212,175,55,0.16);
  border: 1px solid rgba(212,175,55,0.55);
  color: #f0d98c;
}
/* 类型码：金色渐变辉光 */
.bp-card.bp-premium .bp-premium-type {
  background: linear-gradient(180deg, #fff6cf 0%, #e8c96a 45%, #b58a2a 100%);
  -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent;
  text-shadow: none;
  filter: drop-shadow(0 2px 12px rgba(212,175,55,0.55)) drop-shadow(0 0 30px var(--pc1));
}
/* 四维字母：主导金色 */
.bp-card.bp-premium .bp-ltr i.on {
  color: #ffdf94;
  text-shadow: 0 0 12px rgba(212,175,55,0.85), 0 0 24px rgba(212,175,55,0.4);
}
.bp-card.bp-premium .bp-ltr i.on::after {
  background: #d4af37;
  box-shadow: 0 0 10px #d4af37;
}
/* 特质标签：金色描边 */
.bp-card.bp-premium .bp-premium-traits span {
  background: rgba(212,175,55,0.12);
  border: 1px solid rgba(212,175,55,0.45);
  color: #f4e3ab;
}
/* 品牌金色 */
.bp-card.bp-premium .bp-premium-brand {
  color: rgba(212,175,55,0.6);
  border-left-color: rgba(212,175,55,0.3);
}
/* 分数 */
.bp-card.bp-premium .bp-premium-score {
  background: linear-gradient(120deg, #fff6cf, #e8c96a);
  -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent;
  filter: drop-shadow(0 2px 10px rgba(212,175,55,0.45));
}

/* ═══ 演示模式 Demo Mode（2026-09-02 · 仅测试板块）═══ */
#demo-mode-fab {
  position: fixed; right: 14px; bottom: 92px; z-index: 100020;
  display: flex; align-items: center; gap: 6px;
  padding: 9px 15px; border: none; border-radius: 999px;
  background: rgba(16, 16, 24, 0.8); color: #fff;
  font-size: 0.78rem; font-weight: 800; letter-spacing: 0.03em;
  cursor: pointer; user-select: none; -webkit-user-select: none;
  backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px);
  border: 1px solid rgba(255, 255, 255, 0.2);
  box-shadow: 0 6px 22px rgba(0, 0, 0, 0.45);
  transition: background 0.25s, box-shadow 0.25s, transform 0.15s;
  -webkit-tap-highlight-color: transparent;
}
#demo-mode-fab:active { transform: scale(0.94); }
#demo-mode-fab .dm-ico {
  display: inline-flex; align-items: center; justify-content: center;
  width: 17px; height: 17px; border-radius: 50%;
  background: rgba(255, 255, 255, 0.16); font-size: 0.52rem;
}
#demo-mode-fab.on {
  background: linear-gradient(135deg, #ffd166, #ff8fb3);
  border-color: #ffe9b0; color: #241a00;
  box-shadow: 0 0 24px rgba(255, 209, 102, 0.6), 0 6px 22px rgba(0, 0, 0, 0.4);
}
#demo-mode-fab.on .dm-ico { background: rgba(36, 26, 0, 0.18); }

/* 点击光圈 */
.dm-ripple {
  position: fixed; z-index: 100015; width: 46px; height: 46px;
  margin: -23px 0 0 -23px; border-radius: 50%;
  border: 3px solid #ffd166;
  box-shadow: 0 0 22px rgba(255, 209, 102, 0.85), inset 0 0 12px rgba(255, 209, 102, 0.45);
  pointer-events: none;
  animation: dmRipple 0.85s cubic-bezier(0.22, 1, 0.36, 1) forwards;
}
@keyframes dmRipple {
  from { transform: scale(0.35); opacity: 1; }
  to { transform: scale(2.5); opacity: 0; }
}
.dm-dot {
  position: fixed; z-index: 100016; width: 11px; height: 11px;
  margin: -5.5px 0 0 -5.5px; border-radius: 50%;
  background: #ffd166;
  box-shadow: 0 0 16px #ffd166, 0 0 34px rgba(255, 209, 102, 0.6);
  pointer-events: none;
  animation: dmDot 0.55s ease forwards;
}
@keyframes dmDot {
  0% { transform: scale(1); opacity: 1; }
  60% { transform: scale(1.7); opacity: 0.95; }
  100% { transform: scale(0.3); opacity: 0; }
}
/* 触摸跟手点 */
.dm-touch {
  position: fixed; z-index: 100015; width: 36px; height: 36px;
  margin: -18px 0 0 -18px; border-radius: 50%;
  border: 2px solid #ffd166;
  background: rgba(255, 209, 102, 0.2);
  box-shadow: 0 0 18px rgba(255, 209, 102, 0.55);
  pointer-events: none;
  transition: left 0.06s linear, top 0.06s linear;
}
/* 滚动方向提示 */
.dm-scroll {
  position: fixed; left: 50%; bottom: 130px; z-index: 100015;
  transform: translateX(-50%);
  font-size: 1.6rem; line-height: 1;
  color: #ffd166;
  text-shadow: 0 0 16px rgba(255, 209, 102, 0.85), 0 0 34px rgba(255, 209, 102, 0.4);
  pointer-events: none;
  animation: dmScrollFade 0.8s ease forwards;
}
@keyframes dmScrollFade {
  from { opacity: 1; transform: translate(-50%, 0); }
  to { opacity: 0; transform: translate(-50%, -16px); }
}
/* 演示模式下：键盘/元素聚焦金色描边（可访问性 + 录制聚焦提示） */
body.demo-mode :focus {
  outline: 2px solid #ffd166 !important;
  outline-offset: 2px;
}

/* ═══ 身高潜力预测 height（2026-09-03）═══ */
.hp-num {
  display: flex; align-items: baseline; justify-content: center; gap: 4px;
  margin-top: 8px;
  font-family: 'Plus Jakarta Sans', 'Noto Sans SC', sans-serif;
  font-size: 4.2rem; font-weight: 900; line-height: 1; letter-spacing: -0.01em;
  background: linear-gradient(180deg, #ffffff 10%, #ffe9b0 70%, #f5c34d 100%);
  -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent;
  filter: drop-shadow(0 4px 18px rgba(255, 209, 102, 0.4));
}
.hp-num em { font-style: normal; font-size: 1.15rem; font-weight: 800; -webkit-text-fill-color: rgba(255,255,255,0.72); }
.hp-range { position: relative; height: 10px; border-radius: 99px; margin: 16px 0 4px; background: rgba(255,255,255,0.08); }
.hp-range .hp-fill { position: absolute; top: 0; bottom: 0; left: 0; border-radius: 99px; background: linear-gradient(90deg, #14b8a6, #f59e0b); opacity: 0.85; box-shadow: 0 0 10px rgba(20,184,166,0.4); }
.hp-range .hp-mid { position: absolute; top: -4px; width: 3px; height: 18px; border-radius: 2px; background: #ffe9b0; box-shadow: 0 0 9px rgba(255,233,176,0.95); }
.hp-range-scale { display: flex; justify-content: space-between; font-size: 0.62rem; color: rgba(255,255,255,0.5); padding: 0 2px; }

/* 身高预测 · 结果页补充（重建 v20260903v4） */
.hp-sub { margin-top: 6px; font-size: 0.8rem; color: rgba(255,255,255,0.62); letter-spacing: 0.06em; }
.hp-range-scale { align-items: center; }
.hp-range-scale .hp-tag { font-size: 0.6rem; color: rgba(255,209,102,0.85); letter-spacing: 0.1em; white-space: nowrap; }
.hp-range-lg { height: 14px; margin: 10px 0 8px; }
.hp-range-lg .hp-mid { top: -5px; height: 24px; }
.hp-desc { font-size: 0.95rem; line-height: 1.75; color: rgba(255,255,255,0.85); }
.hp-meta { margin-top: 8px; font-size: 0.78rem; color: rgba(255,255,255,0.5); }
.hp-chips { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px; }
.hp-chip { display: inline-flex; align-items: center; gap: 4px; padding: 5px 12px; border-radius: 99px; font-size: 0.78rem; background: rgba(255,255,255,0.07); border: 1px solid rgba(255,255,255,0.1); color: rgba(255,255,255,0.85); }
.hp-chip i { font-style: normal; }
.hp-chip .hp-chip-warn { color: #ffd166; }
.hp-note { margin-top: 10px; font-size: 0.72rem; line-height: 1.6; color: rgba(255,255,255,0.45); }
.hp-disclaimer { margin: 2px 16px 6px; padding: 10px 12px; border-radius: 12px; font-size: 0.7rem; line-height: 1.7; color: rgba(255,255,255,0.45); background: rgba(255,255,255,0.04); border: 1px dashed rgba(255,255,255,0.1); }
@media (min-width: 769px) {
  .hp-desc { font-size: 1.02rem; }
  .hp-chip { font-size: 0.85rem; }
}

/* 测试结果页娱乐免责行（版权/合规：与机构无关联声明） */
.quiz-ent-note { width: 100%; max-width: 380px; margin: 14px auto 4px; padding: 8px 12px; text-align: center; font-size: 0.68rem; line-height: 1.6; color: rgba(255,255,255,0.4); border: 1px dashed rgba(255,255,255,0.12); border-radius: 10px; background: rgba(255,255,255,0.03); }
@media (min-width: 769px) { .quiz-ent-note { max-width: 460px; font-size: 0.72rem; } }


/* ═══════════════════════════════════════════════════════════
   名人撞脸（lookalike · ll-app）
   主题：古典画廊 —— 深墨底 + 鎏金（#ffd166 / #e0a94a）
   合规：历史名人库（逝世 100 年以上）+ 本项目原创绘制肖像
   ═══════════════════════════════════════════════════════════ */
.ll-app {
  --ll-bg: #0a0912;
  --ll-card: #14121f;
  --ll-gold: #ffd166;
  --ll-gold2: #e0a94a;
  --ll-text: #f6f2ea;
  --ll-dim: #a49c8c;
  --ll-border: rgba(255, 209, 102, 0.22);
  font-family: 'Plus Jakarta Sans', 'Noto Sans SC', -apple-system, sans-serif;
  background: var(--ll-bg);
  color: var(--ll-text);
  min-height: 100vh;
  overflow-x: hidden;
}
/* ⚠️ 这里不要再用 `.ll-app *` 全局清零 margin/padding：
   全站在 core.css 已做过 `* { margin:0; padding:0; box-sizing:border-box }`，
   lookalike 自有组件（.ll-*）本来就没有多余间距；
   但本页复用的公共组件——quiz-intro-*（介绍页）、test-card / rec-*（推荐区）、
   bp-card（分享卡）、beauty-pay-*（解锁支付）——各自带完整内边距，
   被全局清零会出现：卡片贴屏幕边、文字贴边框、"怎么玩"标题压线、按钮塌成细条。 */

.ll-screen { display: none; min-height: 0; padding: 0; }
.ll-screen.active { display: block; }

/* 介绍页（复用 quiz-intro 结构）：在公共样式基础上做画廊风的留白加强
   —— 通栏 hero + 正文左右 18px 内边距 + 更松的纵向节奏 */
.ll-app .ll-screen.quiz-intro-entry { display: none; min-height: 0; padding: 0; }
.ll-app .ll-screen.quiz-intro-entry.active { display: block; }
/* 页面：hero 保持通栏，正文左右留 18px，底部给固定 CTA 留白 */
.ll-app .ll-screen.quiz-intro-entry .quiz-intro-page { margin: 0; padding-bottom: 132px; width: 100%; text-align: left; }
.ll-app .ll-screen.quiz-intro-entry .quiz-intro-hero { margin: 0; padding: 20px 22px 18px; }
.ll-app .ll-screen.quiz-intro-entry .quiz-intro-desc { margin: 10px 0 0; }
.ll-app .ll-screen.quiz-intro-entry .quiz-intro-meta { margin: 18px 18px 2px; gap: 10px; }
.ll-app .ll-screen.quiz-intro-entry .quiz-intro-meta-item { padding: 8px 14px; gap: 6px; }
.ll-app .ll-screen.quiz-intro-entry .quiz-intro-meta-ico { font-size: 0.9rem; }
.ll-app .ll-screen.quiz-intro-entry .quiz-intro-scroll { padding: 0 18px; }
.ll-app .ll-screen.quiz-intro-entry .quiz-intro-features { gap: 10px; margin: 16px 0 14px; }
.ll-app .ll-screen.quiz-intro-entry .quiz-intro-feature { gap: 12px; padding: 13px 14px; border-radius: 16px; }
.ll-app .ll-screen.quiz-intro-entry .quiz-intro-feature-ico { width: 40px; height: 40px; font-size: 1.15rem; border-radius: 12px; }
.ll-app .ll-screen.quiz-intro-entry .quiz-intro-feature-title { font-size: 0.92rem; line-height: 1.35; }
.ll-app .ll-screen.quiz-intro-entry .quiz-intro-feature-desc { margin-top: 3px; line-height: 1.6; }
/* 玩法步骤：由虚线框改为与画廊主题一致的细金边卡片，标题不再压线 */
.ll-app .ll-screen.quiz-intro-entry .quiz-intro-steps {
  margin: 0 0 4px; padding: 14px 16px 10px; border-radius: 16px;
  border-style: solid; border-color: rgba(255, 209, 102, 0.14);
  background: rgba(255, 209, 102, 0.045);
}
.ll-app .ll-screen.quiz-intro-entry .quiz-intro-steps-title { margin-bottom: 10px; }
.ll-app .ll-screen.quiz-intro-entry .quiz-intro-step { padding: 7px 0; }
.ll-app .ll-screen.quiz-intro-entry .quiz-intro-step-num { width: 24px; height: 24px; font-size: 0.74rem; }
.ll-app .ll-screen.quiz-intro-entry .quiz-intro-step-title { line-height: 1.4; }
.ll-app .ll-screen.quiz-intro-entry .quiz-intro-step-desc { margin-top: 2px; line-height: 1.55; }
.ll-app .ll-screen.quiz-intro-entry .quiz-intro-tip { margin: 0; padding: 2px 22px 0; line-height: 1.7; }
/* 底部固定 CTA 同样被 reset 清零：还原左右内边距与居中（否则细杠且不居中） */
.ll-app .quiz-intro-cta-wrap { padding: 0 18px; }
.ll-app .quiz-intro-cta-wrap .quiz-intro-start { margin: 0 auto; padding: 15px 0; max-width: 340px; border-radius: 16px; }
/* 按钮下方渐隐遮罩：滚动时内容淡出，避免卡片被按钮压住显得杂乱 */
.ll-app .quiz-intro-cta-wrap::before {
  content: ''; position: absolute; left: 0; right: 0; top: -46px; bottom: -16px;
  background: linear-gradient(180deg, rgba(10, 9, 18, 0) 0%, rgba(10, 9, 18, 0.82) 52%, rgba(10, 9, 18, 0.94) 100%);
  pointer-events: none; z-index: -1;
}

/* 通用容器 */
.ll-pad { width: 100%; max-width: 420px; margin: 0 auto; padding: 18px 18px 108px; display: flex; flex-direction: column; gap: 14px; }
.ll-h2 { font-size: 1.16rem; font-weight: 800; letter-spacing: 0.4px; line-height: 1.4; }
.ll-sub { font-size: 0.82rem; color: var(--ll-dim); line-height: 1.65; }
.ll-text { font-size: 0.88rem; line-height: 1.8; color: rgba(246, 242, 234, 0.86); }
.ll-note { font-size: 0.68rem; line-height: 1.65; color: rgba(164, 156, 140, 0.78); text-align: center; }

/* 上传 */
.ll-drop {
  width: 100%; aspect-ratio: 4 / 5; border-radius: 20px; cursor: pointer;
  border: 2px dashed var(--ll-border); background: rgba(255, 209, 102, 0.03);
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 8px;
  color: var(--ll-text); font-family: inherit; transition: border-color 0.2s, background 0.2s, transform 0.2s;
  -webkit-tap-highlight-color: transparent;
}
.ll-drop:hover { border-color: var(--ll-gold); background: rgba(255, 209, 102, 0.07); }
.ll-drop:active { transform: scale(0.99); }
.ll-drop-ico { font-size: 42px; }
.ll-drop-title { font-size: 0.95rem; font-weight: 700; }
.ll-drop-hint { font-size: 0.7rem; color: var(--ll-dim); padding: 0 20px; text-align: center; line-height: 1.6; }
.ll-preview { position: relative; width: 100%; border-radius: 20px; overflow: hidden; border: 1px solid var(--ll-border); box-shadow: 0 10px 34px rgba(0, 0, 0, 0.5); }
.ll-preview img { display: block; width: 100%; }
.ll-chip {
  position: absolute; left: 50%; bottom: 12px; transform: translateX(-50%);
  padding: 7px 16px; border-radius: 99px; border: 1px solid rgba(255, 255, 255, 0.22);
  background: rgba(0, 0, 0, 0.62); -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px);
  color: #fff; font-size: 0.72rem; font-family: inherit; cursor: pointer; white-space: nowrap;
}

/* 按钮 */
.ll-btn {
  width: 100%; padding: 15px; border: none; border-radius: 15px; cursor: pointer;
  font-family: inherit; font-size: 0.92rem; font-weight: 800; letter-spacing: 0.6px; color: #1a1206;
  background: linear-gradient(120deg, var(--ll-gold), var(--ll-gold2));
  box-shadow: 0 6px 26px rgba(255, 209, 102, 0.24);
  transition: transform 0.2s, box-shadow 0.2s, opacity 0.2s;
  -webkit-tap-highlight-color: transparent;
}
.ll-btn:hover:not(:disabled) { transform: translateY(-2px); box-shadow: 0 9px 30px rgba(255, 209, 102, 0.34); }
.ll-btn:disabled { opacity: 0.42; cursor: not-allowed; box-shadow: none; }
.ll-btn-ghost { background: transparent; border: 1px solid var(--ll-border); color: var(--ll-dim); box-shadow: none; }
.ll-btn-ghost:hover { color: var(--ll-gold); border-color: var(--ll-gold); box-shadow: none; transform: none; }
.ll-btn-sm { font-size: 0.84rem; padding: 13px; }
.ll-btn-row { display: flex; gap: 10px; width: 100%; align-items: stretch; }
.ll-btn-row .ll-btn { flex: 1 1 0; min-width: 0; white-space: nowrap; padding-inline: 8px; }

/* 处理中 */
.ll-proc { align-items: center; text-align: center; min-height: 62vh; justify-content: center; }
.ll-spin {
  width: 54px; height: 54px; border-radius: 50%;
  border: 3px solid rgba(255, 209, 102, 0.18); border-top-color: var(--ll-gold);
  animation: llSpin 0.9s linear infinite;
}
@keyframes llSpin { to { transform: rotate(360deg); } }
.ll-bar { width: 100%; max-width: 280px; height: 6px; border-radius: 99px; background: rgba(255, 255, 255, 0.08); overflow: hidden; }
.ll-bar > i { display: block; height: 100%; border-radius: 99px; background: linear-gradient(90deg, var(--ll-gold2), var(--ll-gold)); transition: width 0.45s ease; }

/* 结果：主视觉 */
.ll-hero {
  position: relative; width: 100%; aspect-ratio: 3 / 4; border-radius: 20px; overflow: hidden;
  background-size: cover; background-position: center 20%;
  border: 1px solid rgba(255, 209, 102, 0.28); box-shadow: 0 14px 44px rgba(0, 0, 0, 0.55);
}
.ll-hero-shade { position: absolute; inset: 0; background: linear-gradient(to top, rgba(10, 9, 18, 0.96) 4%, rgba(10, 9, 18, 0.55) 34%, rgba(10, 9, 18, 0) 62%); }
.ll-hero-body { position: absolute; left: 0; right: 0; bottom: 0; padding: 20px; display: flex; flex-direction: column; gap: 6px; }
.ll-badge {
  align-self: flex-start; padding: 5px 12px; border-radius: 99px; font-size: 0.66rem; letter-spacing: 1.2px;
  background: rgba(255, 209, 102, 0.14); border: 1px solid rgba(255, 209, 102, 0.34); color: var(--ll-gold);
}
.ll-hero-name { font-size: 1.9rem; font-weight: 800; line-height: 1.15; letter-spacing: 0.5px; text-shadow: 0 2px 18px rgba(0, 0, 0, 0.75); }
.ll-hero-civ {
  align-self: flex-start; display: inline-flex; align-items: center; margin-bottom: 2px;
  padding: 4px 11px; border-radius: 99px; font-size: 0.68rem; letter-spacing: 0.5px;
  color: #fff6e2; background: rgba(10, 9, 18, 0.55);
  border: 1px solid rgba(255, 209, 102, 0.42);
  text-shadow: 0 1px 8px rgba(0, 0, 0, 0.8);
}
.ll-hero-era { font-size: 0.76rem; color: rgba(246, 242, 234, 0.88); letter-spacing: 0.4px; text-shadow: 0 1px 10px rgba(0, 0, 0, 0.8); }
.ll-hero-score { display: flex; align-items: baseline; gap: 8px; margin-top: 4px; }
.ll-hero-score b { font-size: 2.1rem; font-weight: 900; line-height: 1; color: var(--ll-gold); letter-spacing: -0.5px; }
.ll-hero-score span { font-size: 0.72rem; color: rgba(246, 242, 234, 0.62); letter-spacing: 1.4px; }

/* 结果：信息卡 */
.ll-card { width: 100%; padding: 16px 18px; border-radius: 16px; border: 1px solid var(--ll-border); background: var(--ll-card); display: flex; flex-direction: column; gap: 10px; }
.ll-card-title { font-size: 0.68rem; font-weight: 700; letter-spacing: 2px; color: var(--ll-gold); text-transform: uppercase; }
.ll-card-card { align-items: center; }

/* 维度条 */
.ll-dims { display: flex; flex-direction: column; gap: 9px; }
.ll-dim-row { display: grid; grid-template-columns: 62px 1fr 30px; align-items: center; gap: 8px; font-size: 0.74rem; color: var(--ll-dim); }
.ll-dim-bar { height: 5px; border-radius: 99px; background: rgba(255, 255, 255, 0.08); overflow: hidden; }
.ll-dim-bar > i { display: block; height: 100%; border-radius: 99px; background: linear-gradient(90deg, rgba(255, 209, 102, 0.5), var(--ll-gold)); }
.ll-dim-row em { font-style: normal; font-size: 0.72rem; font-weight: 700; color: var(--ll-gold); text-align: right; }

/* 排名列表 */
.ll-ranks { display: flex; flex-direction: column; gap: 12px; }
.ll-rank-item { display: flex; align-items: center; gap: 11px; }
.ll-rank-thumb { width: 46px; height: 46px; border-radius: 12px; object-fit: cover; object-position: center 20%; border: 1px solid rgba(255, 209, 102, 0.28); flex: 0 0 auto; }
.ll-rank-body { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 4px; }
.ll-rank-top { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; }
.ll-rank-top b { font-size: 0.86rem; font-weight: 700; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ll-rank-top span { font-size: 0.78rem; font-weight: 800; color: var(--ll-gold); flex: 0 0 auto; }
.ll-rank-era { font-size: 0.68rem; color: var(--ll-dim); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ll-rank-bar { height: 4px; border-radius: 99px; background: rgba(255, 255, 255, 0.08); overflow: hidden; }
.ll-rank-bar > i { display: block; height: 100%; border-radius: 99px; background: linear-gradient(90deg, rgba(255, 209, 102, 0.42), var(--ll-gold)); }

/* 分享卡（复用 .bp-card 结构；.bp-card 依赖外层给宽高比与裁剪，不裁剪会出现空卡） */
.ll-share-card {
  position: relative; isolation: isolate;
  width: 252px !important; max-width: 100%;
  aspect-ratio: 3 / 4;
  margin: 4px auto 6px;
  border-radius: 22px; overflow: hidden;
  box-shadow: 0 14px 40px rgba(0, 0, 0, 0.42);
}
.ll-share-card .bp-card-score b {
  background: linear-gradient(120deg, #fff, var(--ll-gold));
  -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent;
}

/* ═══ 结果解锁（支付漏斗）——复用测试板块 .beauty-pay-* 结构，仅做鎏金主题适配 ═══ */
.ll-pay { min-height: 100vh; }
.ll-pay-preview {
  position: relative; width: 100%; aspect-ratio: 4 / 3; border-radius: 20px; overflow: hidden;
  border: 1px solid var(--ll-border); background: #0f0d18;
}
.ll-pay-portrait {
  position: absolute; inset: -6%;
  background-size: cover; background-position: center 16%;
  filter: blur(16px) brightness(0.7); transform: scale(1.06);
}
.ll-pay-mask {
  position: absolute; inset: 0; display: flex; flex-direction: column;
  align-items: center; justify-content: center; gap: 10px;
  background: linear-gradient(180deg, rgba(10, 9, 18, 0.34), rgba(10, 9, 18, 0.74));
}
.ll-pay-mask span { font-size: 2rem; filter: drop-shadow(0 3px 10px rgba(0, 0, 0, 0.6)); }
.ll-pay-mask em {
  font-style: normal; font-size: 0.76rem; font-weight: 700; color: var(--ll-text);
  padding: 5px 14px; border-radius: 999px;
  background: rgba(0, 0, 0, 0.45); border: 1px solid rgba(255, 209, 102, 0.28);
}
.ll-pay-teaser { text-align: center; }
.ll-pay-name { font-size: 1.5rem; font-weight: 800; letter-spacing: 0.6px; filter: blur(9px); user-select: none; }
.ll-pay-score { margin-top: 4px; font-size: 2.1rem; font-weight: 900; color: var(--ll-gold); filter: blur(10px); user-select: none; }
.ll-pay-score span { font-size: 0.8rem; font-weight: 700; }
.ll-pay-list { list-style: none; display: flex; flex-direction: column; gap: 7px; }
.ll-pay-list li { position: relative; padding-left: 18px; font-size: 0.84rem; line-height: 1.6; color: rgba(246, 242, 234, 0.86); }
.ll-pay-list li::before { content: '✓'; position: absolute; left: 0; color: var(--ll-gold); font-weight: 800; }
/* 鎏金主题：把 .beauty-pay-* 的粉紫换成画廊金（结构/间距仍沿用公共样式） */
.ll-app .beauty-pay-plan-hot {
  border-color: rgba(255, 209, 102, 0.55);
  background: linear-gradient(150deg, rgba(255, 209, 102, 0.16), rgba(184, 134, 11, 0.12));
  box-shadow: 0 8px 30px rgba(255, 209, 102, 0.16);
}
.ll-app .beauty-pay-plan:hover { border-color: rgba(255, 209, 102, 0.5); }
.ll-app .beauty-pay-ico { background: rgba(255, 209, 102, 0.12); border-color: rgba(255, 209, 102, 0.28); }
.ll-app .beauty-pay-best { background: linear-gradient(120deg, var(--ll-gold), var(--ll-gold2)); color: #1a1206; }
.ll-app .beauty-pay-plan-price { color: var(--ll-text); }

/* ═══ 结果页推荐区（试试其他测试）：复用公共 .rec-* 跑马灯，仅补桌面宽度 ═══ */
.ll-app .rec-section { margin-top: 22px; }
.ll-app .rec-scroll { margin: 0 -18px; padding: 2px 18px 10px; }

@media (min-width: 769px) {
  .ll-pad { max-width: 460px; padding: 24px 20px 120px; }
  .ll-hero-name { font-size: 2.1rem; }
  .ll-text { font-size: 0.94rem; }
}

/* ═══════════════════════════════════════════════════════════
   焦虑程度自测（anxiety）— 免费简易版报告 + $9.9 深度详细版
   ═══════════════════════════════════════════════════════════ */
.anx-result { padding-bottom: 8px; }
.anx-hero {
  position: relative;
  height: 268px;
  background-size: cover; background-position: center 30%;
  border-radius: 0 0 20px 20px;
  overflow: hidden;
}
.anx-hero-mask {
  position: absolute; inset: 0;
  background: linear-gradient(180deg, rgba(8,8,18,0.18) 0%, rgba(8,8,18,0.5) 52%, rgba(8,8,18,0.97) 100%);
}
.anx-hero-body {
  position: relative; z-index: 1;
  height: 100%; box-sizing: border-box;
  padding: 20px 20px 24px;
  display: flex; flex-direction: column; align-items: center; justify-content: flex-end;
  text-align: center;
}
.anx-hero-badge {
  font-size: 0.7rem; letter-spacing: 0.04em;
  padding: 4px 12px; border-radius: 999px;
  border: 1px solid rgba(255,255,255,0.3);
  background: rgba(10,10,22,0.42);
  -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px);
}
.anx-hero-score { margin-top: 10px; display: flex; align-items: baseline; gap: 6px; color: #fff; font-weight: 800; }
.anx-hero-score b { font-size: 3.4rem; line-height: 1; letter-spacing: -1.5px; }
.anx-hero-score span { font-size: 0.95rem; color: rgba(255,255,255,0.55); }
.anx-hero-level { margin-top: 6px; font-size: 1.05rem; font-weight: 700; }
.anx-hero-sub { margin-top: 3px; font-size: 0.78rem; color: rgba(255,255,255,0.5); }
.anx-desc { font-size: 0.92rem; line-height: 1.9; color: rgba(255,255,255,0.8); }
.anx-dims-title { margin: 16px 0 10px; font-size: 0.8rem; letter-spacing: 0.05em; color: rgba(255,255,255,0.5); }
.anx-tips { margin: 0; padding: 0; list-style: none; display: flex; flex-direction: column; gap: 10px; }
.anx-tips li { position: relative; padding-left: 24px; font-size: 0.88rem; line-height: 1.8; color: rgba(255,255,255,0.78); }
.anx-tips li::before { content: '▸'; position: absolute; left: 4px; top: 0; color: #8fa8ff; }
.anx-deep-panel { border: 1px solid rgba(143,168,255,0.22); background: linear-gradient(160deg, rgba(126,150,255,0.10), rgba(20,20,34,0.62)); }
.anx-deep-lock-h { font-size: 1rem; font-weight: 800; color: #fff; }
.anx-deep-lock-sub { margin-top: 6px; font-size: 0.82rem; line-height: 1.7; color: rgba(255,255,255,0.55); }
.anx-deep-list { margin: 14px 0 0; padding: 0; list-style: none; display: flex; flex-direction: column; gap: 9px; }
.anx-deep-list li { display: flex; gap: 9px; font-size: 0.85rem; line-height: 1.7; color: rgba(255,255,255,0.8); }
.anx-deep-list li span { flex: 0 0 auto; color: #8fa8ff; }
.anx-deep-btn {
  margin-top: 16px; width: 100%;
  padding: 15px 16px; border: none; border-radius: 14px; cursor: pointer;
  font-size: 1rem; font-weight: 800; color: #fff;
  background: linear-gradient(135deg, #7e96ff, #a97dff);
  box-shadow: 0 10px 24px rgba(126,150,255,0.32);
  transition: transform 0.15s ease;
}
.anx-deep-btn:active { transform: scale(0.985); }
.anx-deep-note { margin-top: 9px; text-align: center; font-size: 0.72rem; color: rgba(255,255,255,0.45); }
.anx-deep-head { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.anx-deep-tag { font-size: 0.7rem; padding: 3px 10px; border-radius: 999px; background: rgba(125,211,168,0.16); border: 1px solid rgba(125,211,168,0.4); color: #7dd3a8; }
.anx-deep-name { font-size: 1rem; font-weight: 800; color: #fff; }
.anx-deep-sec { margin-top: 18px; padding-top: 16px; border-top: 1px solid rgba(255,255,255,0.08); }
.anx-deep-h { margin-bottom: 10px; font-size: 0.86rem; font-weight: 700; color: #a9bcff; }
.anx-read { margin-bottom: 12px; }
.anx-read-h { display: flex; align-items: center; justify-content: space-between; font-size: 0.86rem; font-weight: 700; color: #fff; }
.anx-read-h span { font-weight: 600; color: rgba(255,255,255,0.45); }
.anx-read-b { margin-top: 5px; font-size: 0.85rem; line-height: 1.85; color: rgba(255,255,255,0.76); }
.anx-pat-name { margin-bottom: 5px; font-size: 0.95rem; font-weight: 800; color: #fff; }
.anx-week { margin-bottom: 12px; padding: 12px 14px; border-radius: 12px; background: rgba(126,150,255,0.07); border: 1px solid rgba(126,150,255,0.16); }
.anx-week-h { font-size: 0.86rem; font-weight: 700; color: #c3d0ff; }
.anx-week-list { margin: 8px 0 0; padding-left: 18px; }
.anx-week-list li { margin-bottom: 4px; font-size: 0.84rem; line-height: 1.8; color: rgba(255,255,255,0.76); }
/* 介绍页娱乐声明（焦虑程度自测：答题前先亮明用途与边界） */
.quiz-intro-ent-note {
  margin-top: 16px; padding: 12px 14px; border-radius: 14px;
  font-size: 0.76rem; line-height: 1.8;
  color: rgba(255,255,255,0.62);
  background: rgba(126,150,255,0.08);
  border: 1px solid rgba(126,150,255,0.22);
}
.anx-result .rec-section { margin-left: 16px; margin-right: 16px; }
.anx-helper { margin: 0 16px 18px; padding: 14px 16px; border-radius: 14px; background: rgba(126,150,255,0.09); border: 1px solid rgba(126,150,255,0.22); }
.anx-helper-h { font-size: 0.9rem; font-weight: 700; color: #c3d0ff; }
.anx-helper-b { margin-top: 7px; font-size: 0.82rem; line-height: 1.85; color: rgba(255,255,255,0.75); }
.quiz-ent-note-health { margin-top: 6px; border-color: rgba(126,150,255,0.28); }
@media (min-width: 769px) {
  .anx-hero { height: 300px; }
  .anx-result .beauty-panel, .anx-helper { max-width: 460px; margin-left: auto; margin-right: auto; }
  .anx-result .rec-section { max-width: 492px; margin-left: auto; margin-right: auto; }
}
