/**
 * 5.1 节庆暖色统一主题（唯一主源）
 * 应用：dy.html / dypay/index.html / dypay/pay_wait.html（含 #viewCompleteFlow）
 * 设计语言：米白奶油底 + 红色价格 + 金色 pill 主按钮 + 红边浅卡
 */

:root {
  /* —— 色板 —— */
  --fest-bg-1: #fff8ec;
  --fest-bg-2: #fff1de;
  --fest-bg-3: #fde6c8;
  --fest-cream: #fffaf0;
  --fest-cream-warm: #fff5e1;
  --fest-card: #ffffff;

  --fest-red: #c41e3a;
  --fest-red-deep: #8b1024;
  --fest-red-soft: #ffe0e6;
  --fest-red-pay-1: #ff5252;
  --fest-red-pay-2: #c41e3a;

  --fest-gold-1: #ffe082;
  --fest-gold-2: #ffc107;
  --fest-gold-3: #ff9800;
  --fest-gold-line: #f4d8a3;
  --fest-gold-deep: #8a5a00;

  --fest-ink: #2a1810;
  --fest-ink-soft: #5c4033;
  --fest-muted: #8a6d5d;
  --fest-line: #f1e3c4;

  /* —— 形状 / 阴影 —— */
  --fest-radius-card: 18px;
  --fest-radius-card-sm: 14px;
  --fest-radius-pill: 999px;
  --fest-shadow-card: 0 12px 32px rgba(140, 60, 30, 0.10);
  --fest-shadow-card-strong: 0 16px 40px rgba(140, 60, 30, 0.16);
  --fest-shadow-gold: 0 12px 28px rgba(255, 152, 0, 0.32), inset 0 1px 0 rgba(255, 255, 255, 0.7);
  --fest-shadow-red: 0 12px 26px rgba(196, 30, 58, 0.30), inset 0 1px 0 rgba(255, 255, 255, 0.18);
}

/* ========== 页面外壳：暖底 ========== */
body.fest-page {
  margin: 0;
  background:
    radial-gradient(ellipse 90% 55% at 50% -10%, rgba(255, 215, 130, 0.5), transparent 55%),
    radial-gradient(ellipse 60% 40% at 95% 18%, rgba(255, 134, 90, 0.18), transparent 45%),
    linear-gradient(180deg, var(--fest-bg-1) 0%, var(--fest-bg-2) 50%, var(--fest-bg-3) 100%) !important;
  background-attachment: fixed !important;
  color: var(--fest-ink) !important;
  font-family: -apple-system, BlinkMacSystemFont, "PingFang SC", "Microsoft YaHei", Roboto, "Segoe UI", sans-serif;
  min-height: 100vh;
}

body.fest-page a { color: var(--fest-red); }

/* ========== 节庆 ribbon 横幅（hero） ========== */
.fest-hero {
  position: relative;
  overflow: hidden;
  margin: 0 0 18px;
  padding: 22px 18px 24px;
  border-radius: 22px;
  background:
    radial-gradient(ellipse 95% 80% at 50% -30%, rgba(255, 224, 130, 0.55), transparent 55%),
    linear-gradient(160deg, #6c0f1c 0%, #a31527 35%, #d4243a 60%, #7c0e1c 100%);
  border: 2px solid rgba(255, 213, 79, 0.55);
  box-shadow:
    0 22px 44px rgba(108, 15, 28, 0.32),
    inset 0 1px 0 rgba(255, 255, 255, 0.18),
    inset 0 -3px 0 rgba(0, 0, 0, 0.18);
}

.fest-hero::before,
.fest-hero::after {
  content: "";
  position: absolute;
  width: 180px;
  height: 180px;
  border-radius: 50%;
  pointer-events: none;
  filter: blur(40px);
}
.fest-hero::before {
  top: -60px;
  left: -40px;
  background: rgba(255, 224, 130, 0.30);
}
.fest-hero::after {
  bottom: -80px;
  right: -50px;
  background: rgba(255, 82, 82, 0.28);
}

.fest-hero__inner {
  position: relative;
  z-index: 1;
  text-align: center;
}

.fest-hero__ribbon {
  display: inline-block;
  margin: 0 0 10px;
  padding: 6px 16px;
  border-radius: var(--fest-radius-pill);
  font-size: 11px;
  font-weight: 900;
  letter-spacing: 0.22em;
  color: #4a1208;
  background: linear-gradient(180deg, #fff9e6 0%, #ffe082 45%, #ffb300 100%);
  box-shadow: 0 4px 14px rgba(0, 0, 0, 0.22), inset 0 2px 0 rgba(255, 255, 255, 0.6);
  border: 1px solid rgba(255, 193, 7, 0.7);
}

.fest-hero__title {
  margin: 6px 0 8px;
  font-size: clamp(22px, 6vw, 30px);
  font-weight: 900;
  letter-spacing: 0.06em;
  color: #fffdf5;
  text-shadow: 0 4px 18px rgba(0, 0, 0, 0.4), 0 0 22px rgba(255, 224, 130, 0.4);
}

.fest-hero__lead {
  margin: 8px 0 4px;
  font-size: 14px;
  font-weight: 800;
  color: #ffe082;
  letter-spacing: 0.08em;
}

.fest-hero__sub {
  margin: 4px 0 0;
  font-size: 12px;
  line-height: 1.7;
  color: rgba(255, 248, 220, 0.9);
}

.fest-hero--compact {
  padding: 16px 16px 18px;
  margin-bottom: 14px;
}
.fest-hero--compact .fest-hero__title {
  margin: 8px 0 0;
  font-size: clamp(17px, 4.4vw, 20px);
  letter-spacing: 0.04em;
}

/* ========== 通用卡片 ========== */
.fest-card,
body.fest-page .panel,
body.fest-page .card {
  background: var(--fest-card) !important;
  border: 1px solid var(--fest-line) !important;
  border-radius: var(--fest-radius-card) !important;
  box-shadow: var(--fest-shadow-card) !important;
  color: var(--fest-ink) !important;
}

.fest-card--accent {
  border: 2px solid var(--fest-gold-line) !important;
  box-shadow: var(--fest-shadow-card-strong) !important;
}

/* ========== 主/次/幽灵按钮 ========== */
.fest-btn-gold,
body.fest-page .btn,
body.fest-page button.btn,
body.fest-page .btn.btn-sub,
body.fest-page .btn.btn-main {
  border-radius: var(--fest-radius-pill) !important;
  background: linear-gradient(180deg, var(--fest-gold-1) 0%, var(--fest-gold-2) 50%, var(--fest-gold-3) 100%) !important;
  color: #5c1f08 !important;
  font-weight: 900 !important;
  border: 1px solid rgba(255, 152, 0, 0.55) !important;
  box-shadow: var(--fest-shadow-gold) !important;
  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.45);
  cursor: pointer;
  transition: filter .18s ease, transform .12s ease;
}
body.fest-page .btn:hover:not(:disabled),
.fest-btn-gold:hover:not(:disabled) {
  filter: brightness(1.04);
}
body.fest-page .btn:active:not(:disabled),
.fest-btn-gold:active:not(:disabled) {
  transform: translateY(1px);
}
body.fest-page .btn:disabled,
body.fest-page .btn.is-loading,
.fest-btn-gold:disabled {
  background: linear-gradient(180deg, #f5e6c8 0%, #ead7b1 100%) !important;
  color: #b8a888 !important;
  border-color: #e2d3b3 !important;
  box-shadow: none !important;
  text-shadow: none !important;
  cursor: not-allowed !important;
  filter: grayscale(.25);
}

.fest-btn-red,
body.fest-page .btn-primary,
body.fest-page .btn-danger {
  border-radius: var(--fest-radius-pill) !important;
  background: linear-gradient(180deg, var(--fest-red-pay-1) 0%, var(--fest-red-pay-2) 100%) !important;
  color: #fff !important;
  border: none !important;
  box-shadow: var(--fest-shadow-red) !important;
  font-weight: 900 !important;
  cursor: pointer;
}

.fest-btn-ghost,
body.fest-page .btn-default {
  border-radius: var(--fest-radius-pill) !important;
  background: #fffdf6 !important;
  color: var(--fest-red-deep) !important;
  border: 1.5px solid var(--fest-gold-line) !important;
  font-weight: 800 !important;
  box-shadow: 0 6px 14px rgba(140, 60, 30, 0.06) !important;
  cursor: pointer;
}

/* 注意条按钮 */
body.fest-page .notice-link {
  border-radius: var(--fest-radius-pill) !important;
  border-color: var(--fest-gold-line) !important;
  background: #fffdf6 !important;
  color: var(--fest-red-deep) !important;
  font-weight: 800 !important;
}
body.fest-page .notice-link.primary {
  background: linear-gradient(180deg, var(--fest-red-pay-1) 0%, var(--fest-red-pay-2) 100%) !important;
  color: #fff !important;
  border: none !important;
  box-shadow: var(--fest-shadow-red) !important;
}

/* ========== 编号徽标（红圆白字） ========== */
.fest-step-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  border-radius: 50%;
  background: linear-gradient(180deg, var(--fest-red-pay-1), var(--fest-red-pay-2));
  color: #fff;
  font-weight: 900;
  font-size: 14px;
  box-shadow: 0 4px 10px rgba(196, 30, 58, 0.32);
}

/* ========== 套餐档位卡：白底 + 大红价 + 右上金 pill ========== */
body.fest-page .grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 12px;
  margin-top: 12px;
}
/* v51-14：套餐页（dypay/index.html）移动端恢复两列展示（一排 2 个） */
@media (max-width: 479px) {
  body.fest-page.labour-day .grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 340px) {
  body.fest-page.labour-day .grid { grid-template-columns: 1fr; }
}
/* v51-19：移动端套餐页字体/角标适配，避免遮挡 */
@media (max-width: 479px) {
  body.fest-page.labour-day .tier {
    padding: 14px 12px 12px !important;
  }
  body.fest-page.labour-day .tier .price {
    font-size: clamp(18px, 5.2vw, 24px) !important;
    line-height: 1.15 !important;
  }
  body.fest-page.labour-day .tier-badge {
    top: 10px;
    right: 10px;
    min-width: 46px;
    height: 22px;
    padding: 0 10px;
    font-size: 11px;
    letter-spacing: 0.02em;
  }
  body.fest-page.labour-day .tier-gift {
    margin-top: 8px !important;
    padding: 5px 10px !important;
    font-size: 11px !important;
  }
}

/* v51-19：顶部账号卡（紧凑版）防重叠：把“账号已识别”从绝对定位改为流布局 */
@media (max-width: 479px) {
  body.fest-page.labour-day .dy-profile-card--compact {
    padding-top: 10px;
  }
  body.fest-page.labour-day .dy-profile-card--compact .dy-profile-card__verified {
    position: static !important;
    display: inline-flex;
    margin: 0 0 8px;
  }
  body.fest-page.labour-day .dy-profile-card--compact .dy-profile-card__row {
    align-items: center;
  }
  body.fest-page.labour-day .dy-profile-card--compact .dy-profile-card__row .dy-profile-card__switch {
    margin-left: auto;
  }
}
@media (min-width: 480px) {
  body.fest-page .grid { grid-template-columns: 1fr 1fr; }
}

body.fest-page .tier {
  position: relative;
  display: block;
  text-align: left;
  padding: 18px 16px 16px !important;
  border-radius: var(--fest-radius-card) !important;
  background: linear-gradient(180deg, #ffffff 0%, #fffaf0 100%) !important;
  border: 1.5px solid var(--fest-gold-line) !important;
  box-shadow: 0 8px 24px rgba(140, 60, 30, 0.08) !important;
  cursor: pointer;
  transition: border-color .18s ease, box-shadow .18s ease, transform .12s ease;
  overflow: hidden;
}
body.fest-page .tier::before { display: none !important; }
body.fest-page .tier:hover {
  border-color: var(--fest-gold-2) !important;
  box-shadow: 0 14px 30px rgba(140, 60, 30, 0.12), 0 0 0 2px rgba(255, 193, 7, 0.18) !important;
}
body.fest-page .tier.active {
  border-color: var(--fest-red) !important;
  background: linear-gradient(180deg, #fff 0%, #fff5f5 100%) !important;
  box-shadow: 0 16px 36px rgba(196, 30, 58, 0.18), 0 0 0 3px rgba(196, 30, 58, 0.10) !important;
  transform: translateY(-1px);
}
body.fest-page .tier .price {
  margin: 0 !important;
  font-size: clamp(24px, 6.4vw, 30px) !important;
  font-weight: 900 !important;
  color: var(--fest-red) !important;
  letter-spacing: -0.02em !important;
  line-height: 1.2;
}
body.fest-page .tier-gift {
  display: inline-block !important;
  margin-top: 10px !important;
  padding: 6px 12px !important;
  border-radius: var(--fest-radius-pill) !important;
  font-size: 12px !important;
  font-weight: 900 !important;
  color: var(--fest-red-deep) !important;
  background: var(--fest-red-soft) !important;
  border: 1px solid rgba(196, 30, 58, 0.18) !important;
}
body.fest-page .tier .muted {
  margin-top: 10px !important;
  font-size: 12px !important;
  color: var(--fest-muted) !important;
}
body.fest-page .tier .muted b {
  color: var(--fest-red-deep) !important;
}

/* 角标统一改为「金 pill 充值」视觉 */
body.fest-page .tier-badge {
  position: absolute;
  top: 14px;
  right: 12px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 56px;
  height: 26px;
  padding: 0 12px;
  border-radius: var(--fest-radius-pill);
  font-size: 12px;
  font-weight: 900;
  color: #5c1f08 !important;
  background: linear-gradient(180deg, var(--fest-gold-1), var(--fest-gold-2) 55%, var(--fest-gold-3)) !important;
  box-shadow: 0 6px 14px rgba(255, 152, 0, 0.28), inset 0 1px 0 rgba(255, 255, 255, 0.5);
  border: 1px solid rgba(255, 152, 0, 0.5);
  letter-spacing: 0.04em;
  white-space: nowrap;
}

/* 支付方式行 */
body.fest-page .pay {
  background: linear-gradient(180deg, #fffdf6 0%, #ffffff 100%) !important;
  border: 1.5px solid var(--fest-gold-line) !important;
  border-radius: var(--fest-radius-card) !important;
}
body.fest-page .pay .method {
  border-radius: var(--fest-radius-pill) !important;
  background: #fff !important;
  border: 1.5px solid var(--fest-line) !important;
  color: var(--fest-ink-soft) !important;
}
body.fest-page .pay .method.active {
  background: linear-gradient(180deg, #fff5f5 0%, #fff 100%) !important;
  border-color: var(--fest-red) !important;
  color: var(--fest-red-deep) !important;
  box-shadow: 0 8px 18px rgba(196, 30, 58, 0.14), 0 0 0 2px rgba(196, 30, 58, 0.10) !important;
}
body.fest-page .pay .method.active::after {
  background: var(--fest-red-soft) !important;
  color: var(--fest-red-deep) !important;
}

/* 输入框 */
body.fest-page .input-wrap,
body.fest-page .input-group input {
  border-radius: 14px !important;
  background: #fff !important;
  border: 1.5px solid var(--fest-line) !important;
}
body.fest-page .input-wrap:focus-within {
  border-color: var(--fest-red) !important;
  box-shadow: 0 0 0 3px rgba(196, 30, 58, 0.12) !important;
}

/* 通知/小提示 */
body.fest-page .notice-bar {
  border: 1.5px solid var(--fest-gold-line) !important;
  background: linear-gradient(135deg, #fffbeb 0%, #fffdf6 50%, #fff7ed 100%) !important;
  box-shadow: 0 8px 22px rgba(255, 152, 0, 0.10) !important;
  border-radius: var(--fest-radius-card) !important;
}
body.fest-page .notice-kicker {
  background: linear-gradient(135deg, var(--fest-red-soft), #ffe7d2) !important;
  color: var(--fest-red-deep) !important;
}
body.fest-page .notice-text { color: var(--fest-ink-soft) !important; }

/* 前置教育块 */
.official-pre-edu {
  border-radius: var(--fest-radius-card) !important;
  background: linear-gradient(135deg, #fff7e0 0%, #fffaf0 100%) !important;
  border: 2px solid rgba(255, 193, 7, 0.45) !important;
  box-shadow: 0 8px 22px rgba(255, 152, 0, 0.12) !important;
  padding: 16px 16px !important;
  margin-bottom: 14px !important;
}
.official-pre-edu__title {
  margin: 0 0 10px;
  font-size: 15px;
  font-weight: 900;
  color: var(--fest-red-deep);
}
.official-pre-edu__text {
  margin: 0;
  font-size: 13px;
  line-height: 1.85;
  color: var(--fest-ink-soft);
}

/* ========== 落地页：覆盖原深色卡 ========== */
body.fest-page.official-landing {
  padding-top: 0 !important;
}
body.fest-page.official-landing .hero-glow,
body.fest-page.official-landing body::before,
body.fest-page.official-landing body::after { display: none !important; }
body.fest-page.official-landing .official-site-header { display: none !important; }

body.fest-page.official-landing .card,
body.fest-page.official-landing .card.web {
  background: var(--fest-card) !important;
  border: 1.5px solid var(--fest-gold-line) !important;
  border-radius: var(--fest-radius-card) !important;
  box-shadow: var(--fest-shadow-card) !important;
  color: var(--fest-ink) !important;
}
body.fest-page.official-landing .card h3,
body.fest-page.official-landing .card .mini,
body.fest-page.official-landing .ld-main-title,
body.fest-page.official-landing .section-head h2,
body.fest-page.official-landing .faq strong,
body.fest-page.official-landing .chooser h3 {
  color: var(--fest-ink) !important;
  background: none !important;
  -webkit-text-fill-color: unset !important;
  filter: none !important;
}
body.fest-page.official-landing .card-desc,
body.fest-page.official-landing .section-sub,
body.fest-page.official-landing .faq span,
body.fest-page.official-landing .choose-item span,
body.fest-page.official-landing .hint,
body.fest-page.official-landing .bottom-note {
  color: var(--fest-ink-soft) !important;
}
body.fest-page.official-landing .quick-tip {
  background: var(--fest-cream-warm) !important;
  border: 1px solid var(--fest-gold-line) !important;
  color: var(--fest-red-deep) !important;
  border-radius: var(--fest-radius-pill);
}
body.fest-page.official-landing .top-point {
  background: var(--fest-card) !important;
  border: 1px solid var(--fest-gold-line) !important;
  border-radius: var(--fest-radius-card-sm) !important;
  color: var(--fest-ink) !important;
}
body.fest-page.official-landing .top-point b { color: var(--fest-red-deep) !important; }
body.fest-page.official-landing .top-point span { color: var(--fest-muted) !important; }
body.fest-page.official-landing .feature {
  background: #fffdf6 !important;
  border: 1px solid var(--fest-gold-line) !important;
  color: var(--fest-ink) !important;
}
body.fest-page.official-landing .corner {
  background: linear-gradient(135deg, var(--fest-gold-1), var(--fest-gold-2)) !important;
  color: #5c1f08 !important;
  border: none !important;
  border-radius: var(--fest-radius-pill);
}
body.fest-page.official-landing .web .corner {
  background: linear-gradient(135deg, var(--fest-red-pay-1), var(--fest-red-pay-2)) !important;
  color: #fff !important;
}
body.fest-page.official-landing .section-head .eyebrow {
  background: #fffdf6 !important;
  border: 1px solid var(--fest-gold-line) !important;
  color: var(--fest-red-deep) !important;
  border-radius: var(--fest-radius-pill) !important;
  box-shadow: 0 6px 14px rgba(255, 152, 0, 0.10) !important;
}
body.fest-page.official-landing .help-link {
  background: var(--fest-cream-warm) !important;
  border: 1px solid var(--fest-gold-line) !important;
  color: var(--fest-red-deep) !important;
  border-radius: var(--fest-radius-card-sm);
}
body.fest-page.official-landing .status-text { color: var(--fest-muted) !important; }
body.fest-page.official-landing .status-text.error-text { color: var(--fest-red) !important; }
body.fest-page.official-landing .input-group input {
  background: #fff !important;
  border: 1.5px solid var(--fest-line) !important;
  color: var(--fest-ink) !important;
  border-radius: 14px !important;
}
body.fest-page.official-landing .input-group input::placeholder { color: var(--fest-muted) !important; }
body.fest-page.official-landing .choose-item .num {
  background: linear-gradient(180deg, var(--fest-red-pay-1), var(--fest-red-pay-2)) !important;
  color: #fff !important;
}
body.fest-page.official-landing .faq-item {
  border-bottom: 1px dashed var(--fest-line) !important;
}
body.fest-page.official-landing .modal-card {
  background: var(--fest-card) !important;
  border: 1px solid var(--fest-gold-line) !important;
  color: var(--fest-ink) !important;
}
body.fest-page.official-landing .modal-head h4 { color: var(--fest-ink) !important; }
body.fest-page.official-landing .modal-body p { color: var(--fest-ink-soft) !important; }
body.fest-page.official-landing .modal-close {
  background: var(--fest-cream-warm) !important;
  border: 1px solid var(--fest-gold-line) !important;
  color: var(--fest-red-deep) !important;
}
body.fest-page.official-landing .guide-tip {
  background: #fffaf0 !important;
  border: 1px solid var(--fest-gold-line) !important;
  color: var(--fest-ink-soft) !important;
}

/* 特权弹窗（认证凭证）— 暖色化 */
.privilege-modal.official-modal-root {
  display: none !important;
  align-items: center;
  justify-content: center;
  padding: 20px 16px;
  background: rgba(60, 20, 10, 0.55) !important;
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  opacity: 0;
  transition: opacity .25s ease;
}
.privilege-modal.official-modal-root.show { display: flex !important; opacity: 1; }
.official-cert-modal-wrap {
  width: 100%;
  max-width: 420px;
  transform: translateY(12px);
  opacity: 0;
  transition: transform .3s cubic-bezier(.22,1,.36,1), opacity .25s ease;
}
.privilege-modal.official-modal-root.show .official-cert-modal-wrap {
  transform: translateY(0);
  opacity: 1;
}
.official-cert-modal {
  background: var(--fest-card) !important;
  border: 1.5px solid var(--fest-gold-line) !important;
  border-radius: var(--fest-radius-card) !important;
  padding: 26px 22px 22px !important;
  box-shadow: 0 24px 56px rgba(60, 20, 10, 0.32) !important;
}
.official-cert-modal__brand {
  display: flex; align-items: center; justify-content: center;
  gap: 10px; margin-bottom: 16px; padding-bottom: 14px;
  border-bottom: 1px dashed var(--fest-line);
}
.official-cert-modal__shield {
  width: 44px; height: 44px;
  display: flex; align-items: center; justify-content: center;
  border-radius: 12px;
  background: linear-gradient(180deg, #fff9e6 0%, #ffe8c4 100%);
  border: 1px solid rgba(255, 152, 0, 0.35);
  color: var(--fest-red);
}
.official-cert-modal__badge-text {
  font-size: 11px; font-weight: 900; letter-spacing: 0.22em;
  color: var(--fest-red-deep);
}
.official-cert-modal__title {
  margin: 0 0 12px; font-size: 17px; font-weight: 900;
  color: var(--fest-ink);
}
.official-cert-modal__body {
  margin: 0; font-size: 14px; line-height: 1.85;
  color: var(--fest-ink-soft);
}
.official-cert-modal__actions {
  display: flex; gap: 12px; margin-top: 22px; flex-wrap: wrap;
}
.official-btn { flex: 1; min-width: 120px; height: 46px; }
.official-btn--primary {
  border-radius: var(--fest-radius-pill) !important;
  background: linear-gradient(180deg, var(--fest-red-pay-1), var(--fest-red-pay-2)) !important;
  color: #fff !important; border: none !important;
  font-weight: 900 !important;
  box-shadow: var(--fest-shadow-red) !important;
}
.official-btn--ghost {
  border-radius: var(--fest-radius-pill) !important;
  background: #fffdf6 !important;
  border: 1.5px solid var(--fest-gold-line) !important;
  color: var(--fest-red-deep) !important;
  font-weight: 800 !important;
}

/* ========== pay_wait：浅卡 + 红描边 ========== */
body.fest-page.labour-pay-wait {
  background:
    radial-gradient(ellipse 90% 50% at 50% -10%, rgba(255, 215, 130, 0.45), transparent 55%),
    linear-gradient(180deg, var(--fest-bg-1) 0%, var(--fest-bg-2) 50%, var(--fest-bg-3) 100%) !important;
  background-attachment: fixed !important;
}

/* 状态卡：米白底 + 深红描边 + 顶部红色装饰条 */
body.fest-page.labour-pay-wait .card,
body.fest-page.labour-pay-wait #viewCompleteFlow .card {
  position: relative;
  background: var(--fest-card) !important;
  border: 1.5px solid var(--fest-gold-line) !important;
  border-radius: var(--fest-radius-card) !important;
  box-shadow: var(--fest-shadow-card-strong) !important;
  color: var(--fest-ink) !important;
  overflow: hidden;
}

/* v51-17：压缩等待页卡片顶部留白（目标≈20px） */
body.fest-page.labour-pay-wait .card {
  padding: 5px 18px 20px !important;
}
body.fest-page.labour-pay-wait #viewCompleteFlow .card {
  padding: 22px 18px 20px !important;
}
body.fest-page.labour-pay-wait .card::before {
  content: "";
  position: absolute; left: 0; right: 0; top: 0;
  height: 6px;
  background: linear-gradient(90deg, var(--fest-red-pay-1) 0%, var(--fest-red) 50%, var(--fest-red-deep) 100%);
}
body.fest-page.labour-pay-wait .card > * { position: relative; z-index: 1; }

body.fest-page.labour-pay-wait .title {
  color: var(--fest-ink) !important;
}
body.fest-page.labour-pay-wait .desc {
  color: var(--fest-ink-soft) !important;
}

body.fest-page.labour-pay-wait .status-icon {
  background: linear-gradient(145deg, var(--fest-red-pay-1), var(--fest-red-pay-2)) !important;
  box-shadow: 0 12px 28px rgba(196, 30, 58, 0.30) !important;
  color: #fff !important;
}
body.fest-page.labour-pay-wait #viewCompleteFlow .status-icon {
  background: linear-gradient(145deg, var(--fest-gold-1), var(--fest-gold-2) 55%, var(--fest-gold-3)) !important;
  color: #5c1f08 !important;
  box-shadow: 0 12px 28px rgba(255, 152, 0, 0.30) !important;
}

body.fest-page.labour-pay-wait .order-box {
  background: var(--fest-cream) !important;
  border: 1px solid var(--fest-gold-line) !important;
  border-radius: var(--fest-radius-card-sm) !important;
}
body.fest-page.labour-pay-wait .order-row .label { color: var(--fest-muted) !important; }
body.fest-page.labour-pay-wait .order-row .value { color: var(--fest-ink) !important; }
body.fest-page.labour-pay-wait .badge-wait {
  background: var(--fest-cream-warm) !important;
  color: var(--fest-red-deep) !important;
  border: 1px solid rgba(255, 152, 0, 0.35) !important;
}
body.fest-page.labour-pay-wait .badge-paid {
  background: #e6f7ec !important;
  color: #1f7a3e !important;
  border: 1px solid #b8e3c4 !important;
}

body.fest-page.labour-pay-wait .footer-note {
  color: var(--fest-muted) !important;
}
body.fest-page.labour-pay-wait .footer-note a { color: var(--fest-red) !important; }

/* 等待页按钮：默认只给 fest-btn-gold（避免压住支付宝/微信品牌按钮） */
body.fest-page.labour-pay-wait .btn.fest-btn-gold,
body.fest-page.labour-pay-wait .btn-primary.fest-btn-gold {
  border-radius: var(--fest-radius-pill) !important;
  background: linear-gradient(180deg, var(--fest-gold-1) 0%, var(--fest-gold-2) 50%, var(--fest-gold-3) 100%) !important;
  color: #5c1f08 !important;
  border: 1px solid rgba(255, 152, 0, 0.55) !important;
  box-shadow: var(--fest-shadow-gold) !important;
  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.45) !important;
  font-weight: 900 !important;
}
body.fest-page.labour-pay-wait .btn-default {
  border-radius: var(--fest-radius-pill) !important;
  background: #fffdf6 !important;
  color: var(--fest-red-deep) !important;
  border: 1.5px solid var(--fest-gold-line) !important;
  font-weight: 800 !important;
  box-shadow: none !important;
  text-shadow: none !important;
}

/* Stepper：浅底 + 红进度 */
.official-stepper {
  background: var(--fest-cream) !important;
  border: 1.5px solid var(--fest-gold-line) !important;
  border-radius: var(--fest-radius-card-sm) !important;
  box-shadow: 0 6px 16px rgba(140, 60, 30, 0.06) !important;
}
.official-stepper__rail {
  background: rgba(196, 30, 58, 0.10) !important;
}
.official-stepper__progress {
  background: linear-gradient(90deg, var(--fest-red-pay-1) 0%, var(--fest-red) 100%) !important;
  box-shadow: 0 0 8px rgba(196, 30, 58, 0.28);
}
.official-stepper__label { color: var(--fest-muted) !important; }
.official-stepper__step { color: var(--fest-ink) !important; }
.official-stepper__step strong { color: var(--fest-red) !important; }

.official-split-alert {
  background: var(--fest-red-soft) !important;
  border: 1px solid rgba(196, 30, 58, 0.30) !important;
  color: var(--fest-red-deep) !important;
  border-radius: var(--fest-radius-card-sm) !important;
  text-align: center;
}

/* 提示列表 */
body.fest-page.labour-pay-wait .tip-list {
  background: linear-gradient(135deg, #fff7e0 0%, #fffaf0 100%) !important;
  border: 1.5px solid rgba(255, 152, 0, 0.32) !important;
  border-radius: var(--fest-radius-card-sm) !important;
}
body.fest-page.labour-pay-wait .tip-title { color: var(--fest-red-deep) !important; }
body.fest-page.labour-pay-wait .tip-detail-list,
body.fest-page.labour-pay-wait .tip-list ul { color: var(--fest-ink-soft) !important; }
body.fest-page.labour-pay-wait .tip-detail-list strong { color: var(--fest-red) !important; }

/* 分笔支付按钮 */
body.fest-page.labour-pay-wait .split-method {
  border-radius: var(--fest-radius-pill) !important;
  background: #fff !important;
  border: 1.5px solid var(--fest-line) !important;
  color: var(--fest-ink-soft) !important;
}
body.fest-page.labour-pay-wait .split-method.active {
  border-color: var(--fest-red) !important;
  background: var(--fest-red-soft) !important;
  color: var(--fest-red-deep) !important;
}

/* 倒计时 */
body.fest-page.labour-pay-wait .countdown-box {
  background: var(--fest-red-soft) !important;
  border: 1px solid rgba(196, 30, 58, 0.28) !important;
}
body.fest-page.labour-pay-wait .countdown-label { color: var(--fest-red-deep) !important; }
body.fest-page.labour-pay-wait .countdown-time { color: var(--fest-red) !important; }

/* 微信二维码区 */
body.fest-page.labour-pay-wait .wechat-qr-wrap {
  background: var(--fest-cream) !important;
  border: 1.5px solid var(--fest-gold-line) !important;
}

/* 198 双倍横幅 */
body.fest-page.labour-pay-wait #banner198 {
  background: linear-gradient(135deg, #fff7e0, #fff2cc) !important;
  border: 1.5px solid rgba(255, 193, 7, 0.5) !important;
}
body.fest-page.labour-pay-wait .banner198-title { color: var(--fest-red-deep) !important; }
body.fest-page.labour-pay-wait .banner198-desc { color: var(--fest-red) !important; }
body.fest-page.labour-pay-wait .refund-link { color: var(--fest-red) !important; }

/* 冻结弹层 */
body.fest-page.labour-pay-wait #payFreezePopup .freeze-dialog {
  background: var(--fest-card) !important;
  border: 1.5px solid var(--fest-gold-line) !important;
  color: var(--fest-ink) !important;
  border-radius: var(--fest-radius-card) !important;
}
body.fest-page.labour-pay-wait #payFreezePopup .freeze-title,
body.fest-page.labour-pay-wait #payFreezePopup .freeze-desc {
  color: var(--fest-ink) !important;
}
body.fest-page.labour-pay-wait #payFreezePopup .freeze-btn {
  border-radius: var(--fest-radius-pill) !important;
  background: linear-gradient(180deg, var(--fest-red-pay-1), var(--fest-red-pay-2)) !important;
  border: none !important;
  box-shadow: var(--fest-shadow-red) !important;
}

/* 提交遮罩 */
body.fest-page #submitOverlay .submit-modal {
  background: var(--fest-card) !important;
  border: 1.5px solid var(--fest-gold-line) !important;
  border-radius: var(--fest-radius-card) !important;
}
body.fest-page #submitOverlay .submit-spinner {
  border-color: rgba(196, 30, 58, 0.18) !important;
  border-top-color: var(--fest-red) !important;
}
body.fest-page #submitOverlay .submit-title { color: var(--fest-ink) !important; }
body.fest-page #submitOverlay .submit-desc { color: var(--fest-ink-soft) !important; }

/* 客服悬浮 */
body.fest-page #floatSideBar .btn-kf {
  background: linear-gradient(180deg, var(--fest-red-pay-1), var(--fest-red-pay-2)) !important;
  color: #fff !important;
  border-radius: 8px 0 0 8px !important;
}

/* 隐藏旧的官方红通栏（被 fest-hero 取代） */
body.fest-page .official-page-header,
body.fest-page .ld-campaign-bar { display: none !important; }

/* ============================================================
   v51-5 — 新组件 / 动效
   ============================================================ */

/* —— dylogo 节庆主视觉 —— */
.fest-hero-img {
  display: block;
  margin: 0 auto 18px;
  padding: 0;
  border-radius: 22px;
  overflow: hidden;
  background: transparent;
  box-shadow:
    0 18px 44px rgba(140, 40, 40, 0.18),
    inset 0 0 0 2px rgba(255, 213, 79, 0.45);
  position: relative;
  isolation: isolate;
}
.fest-hero-img__pic {
  display: block;
  width: 100%;
  height: auto;
  object-fit: cover;
  transform: translateZ(0);
}
.fest-hero-img--compact {
  margin: 0 auto 14px;
  border-radius: 18px;
  max-height: 260px;
}
.fest-hero-img--compact .fest-hero-img__pic {
  max-height: 260px;
  object-position: center 38%;
}
.fest-hero-img--strip {
  margin: 0 auto 12px;
  border-radius: 16px;
  max-height: 130px;
}
.fest-hero-img--strip .fest-hero-img__pic {
  max-height: 130px;
  object-fit: cover;
  object-position: center 30%;
}
.fest-hero-img::after {
  content: "";
  position: absolute; inset: 0;
  pointer-events: none;
  background: linear-gradient(180deg, transparent 0%, transparent 70%, rgba(0,0,0,0.08) 100%);
  z-index: 1;
}

/* —— 抖音号 + 头像红渐变卡（dy.html 大版） —— */
.dy-profile-card {
  position: relative;
  border-radius: 20px;
  overflow: hidden;
  padding: 18px 16px 16px;
  background:
    radial-gradient(ellipse 90% 60% at 100% 0%, rgba(255, 224, 130, 0.22), transparent 55%),
    linear-gradient(135deg, #c41e3a 0%, #8b1024 100%);
  border: 1.5px solid rgba(255, 215, 95, 0.55);
  box-shadow:
    0 18px 38px rgba(140, 16, 36, 0.32),
    inset 0 1px 0 rgba(255, 255, 255, 0.12);
  color: #fff8f0;
}
.dy-profile-card::before {
  content: "";
  position: absolute; left: 0; right: 0; top: 0;
  height: 4px;
  background: linear-gradient(90deg, #ffd75f 0%, #ffae3a 50%, #ffd75f 100%);
  pointer-events: none;
}
.dy-profile-card__verified {
  position: absolute; top: 12px; right: 12px;
  font-size: 11px; font-weight: 900;
  color: #5c1f08;
  padding: 5px 10px;
  border-radius: 999px;
  background: linear-gradient(180deg, #fff9e0, #ffd75f);
  border: 1px solid rgba(255, 152, 0, 0.55);
  box-shadow: 0 4px 10px rgba(0,0,0,0.18);
  letter-spacing: 0.06em;
}
.dy-profile-card__row {
  display: flex; align-items: center; gap: 14px;
}
.dy-profile-card__avatar-wrap {
  position: relative;
  flex: 0 0 auto;
}
.dy-profile-card__avatar {
  width: 64px; height: 64px;
  border-radius: 50%;
  object-fit: cover;
  display: block;
  border: 2px solid #ffd75f;
  background: #2a0a10;
  box-shadow: 0 0 0 3px rgba(255, 215, 95, 0.18), 0 8px 22px rgba(0,0,0,0.28);
}
.dy-profile-card__online {
  position: absolute;
  right: 2px; bottom: 2px;
  width: 12px; height: 12px;
  border-radius: 50%;
  background: #34d399;
  box-shadow: 0 0 0 2.5px #c41e3a;
}
.dy-profile-card__info {
  min-width: 0; flex: 1;
}
.dy-profile-card__name-row {
  display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-bottom: 4px;
}
.dy-profile-card__name {
  font-weight: 900; font-size: 17px;
  color: #fff;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  max-width: 170px; display: inline-block;
  text-shadow: 0 1px 2px rgba(0,0,0,0.25);
}
.dy-profile-card__tag {
  font-size: 11px; font-weight: 900;
  color: #c41e3a;
  background: #fff;
  border: 1px solid rgba(255,255,255,0.5);
  padding: 3px 8px; border-radius: 999px;
  box-shadow: 0 2px 6px rgba(0,0,0,0.18);
}
.dy-profile-card__sid {
  font-size: 13px;
  color: rgba(255, 248, 220, 0.9);
  line-height: 1.7;
  margin-bottom: 8px;
}
.dy-profile-card__sid b {
  color: #ffd75f;
  font-weight: 800;
}
.dy-profile-card__foot {
  display: flex; align-items: center; justify-content: space-between;
  gap: 10px; flex-wrap: wrap;
}
.dy-profile-card__hint {
  font-size: 12px; color: rgba(255, 248, 220, 0.78); font-weight: 700;
}
.dy-profile-card__switch {
  flex: 0 0 auto;
  height: 30px; padding: 0 12px;
  border-radius: 999px;
  border: 1px solid rgba(255, 215, 95, 0.55);
  background: rgba(255, 255, 255, 0.10);
  color: #fff8f0;
  font-size: 12px; font-weight: 800;
  cursor: pointer;
  transition: background .15s ease;
}
.dy-profile-card__switch:hover { background: rgba(255, 255, 255, 0.18); }

/* 套餐页紧凑版（卡内只展示头像 + 昵称 + 切换） */
.dy-profile-card--compact {
  padding: 12px 14px;
  border-radius: 16px;
}
.dy-profile-card--compact::before { height: 3px; }
.dy-profile-card--compact .dy-profile-card__verified {
  top: 10px; right: 10px; font-size: 10px; padding: 4px 8px;
}
.dy-profile-card--compact .dy-profile-card__avatar {
  width: 48px; height: 48px;
}
.dy-profile-card--compact .dy-profile-card__name { font-size: 15px; max-width: 140px; }
.dy-profile-card--compact .dy-profile-card__sid { margin-bottom: 0; font-size: 12px; }
.dy-profile-card--compact .dy-profile-card__foot { display: none; }
.dy-profile-card--compact .dy-profile-card__row .dy-profile-card__switch {
  position: relative;
  margin-left: auto;
}

/* —— 双倍福利优惠券卡 —— */
.coupon-gift-card {
  position: relative;
  margin: 14px 0 0;
  padding: 16px 16px 14px;
  border-radius: 18px;
  background: linear-gradient(135deg, #fffbe8 0%, #fff5d2 100%);
  border: 2px dashed rgba(255, 152, 0, 0.55);
  box-shadow:
    0 14px 30px rgba(255, 152, 0, 0.18),
    inset 0 0 0 1px rgba(255, 215, 95, 0.4);
  overflow: hidden;
  animation: couponPop .55s cubic-bezier(.22,1,.36,1) both;
}
.coupon-gift-card::before,
.coupon-gift-card::after {
  content: "";
  position: absolute;
  width: 22px; height: 22px;
  border-radius: 50%;
  background: var(--fest-bg-1, #fff8ec);
  top: 50%; transform: translateY(-50%);
  box-shadow: 0 0 0 2px rgba(255, 152, 0, 0.4);
}
.coupon-gift-card::before { left: -11px; }
.coupon-gift-card::after { right: -11px; }
.coupon-gift-card__corner {
  position: absolute;
  top: 50%;
  right: 12px;
  transform: translateY(-50%);
  font-size: 10px; font-weight: 900;
  letter-spacing: 0.16em;
  color: #fff;
  background: linear-gradient(180deg, #ff5252, #c41e3a);
  padding: 4px 10px;
  border-radius: 999px;
  box-shadow: 0 4px 10px rgba(196, 30, 58, 0.32);
}
.coupon-gift-card__row {
  display: flex; align-items: center; gap: 14px;
}
.coupon-gift-card__amt {
  flex: 0 0 auto;
  display: flex; align-items: baseline; gap: 0;
  color: var(--fest-red, #c41e3a);
  font-weight: 900;
  text-shadow: 0 2px 4px rgba(196, 30, 58, 0.18);
}
.coupon-gift-card__x {
  font-size: 22px; line-height: 1;
}
.coupon-gift-card__num {
  font-size: 56px; line-height: 1;
  letter-spacing: -0.04em;
  background: linear-gradient(180deg, #ff5252 0%, #c41e3a 100%);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
  filter: drop-shadow(0 4px 10px rgba(196, 30, 58, 0.20));
}
.coupon-gift-card__divider {
  flex: 0 0 1px;
  align-self: stretch;
  border-left: 2px dashed rgba(196, 30, 58, 0.32);
  margin: 4px 0;
}
.coupon-gift-card__txt {
  flex: 1 1 auto; min-width: 0;
  padding-right: 58px;
}
.coupon-gift-card__title {
  margin: 0 0 4px;
  font-size: 15px; font-weight: 900;
  color: #5c1f08;
  letter-spacing: 0.02em;
}
.coupon-gift-card__desc {
  margin: 0;
  font-size: 12px; line-height: 1.65;
  color: #8a5a00;
}

@keyframes couponPop {
  0%   { opacity: 0; transform: translateY(8px) scale(.96); }
  60%  { opacity: 1; transform: translateY(0) scale(1.02); }
  100% { opacity: 1; transform: translateY(0) scale(1); }
}

/* —— pay_wait：状态卡呼吸光环 —— */
body.fest-page.labour-pay-wait .card .status-icon {
  position: relative;
}
.status-halo {
  position: absolute;
  left: 50%; top: 6px;
  transform: translateX(-50%);
  width: 96px; height: 96px;
  border-radius: 50%;
  pointer-events: none;
  background:
    radial-gradient(circle, rgba(255, 215, 95, 0.32) 0%, transparent 65%);
  filter: blur(2px);
  z-index: 0;
  animation: haloFloat 3.6s ease-in-out infinite;
}
.status-halo__pulse {
  position: absolute;
  left: 50%; top: 50%;
  width: 100%; height: 100%;
  border-radius: 50%;
  border: 2px solid rgba(196, 30, 58, 0.45);
  transform: translate(-50%, -50%) scale(1);
  pointer-events: none;
  animation: pulseRing 2.4s ease-out infinite;
  z-index: 0;
}
body.fest-page.labour-pay-wait .card .status-icon i,
body.fest-page.labour-pay-wait .card .status-icon .status-burst { position: relative; z-index: 1; }

@keyframes pulseRing {
  0%   { transform: translate(-50%, -50%) scale(0.85); opacity: 0.85; }
  60%  { transform: translate(-50%, -50%) scale(1.6); opacity: 0; }
  100% { transform: translate(-50%, -50%) scale(1.6); opacity: 0; }
}
@keyframes haloFloat {
  0%, 100% { transform: translateX(-50%) scale(1);   opacity: .9; }
  50%      { transform: translateX(-50%) scale(1.08); opacity: 1; }
}

/* —— 环形倒计时 —— */
.countdown-ring {
  --ring-deg: 360deg;
  width: 96px; height: 96px;
  margin: 6px auto 0;
  border-radius: 50%;
  background:
    conic-gradient(
      from -90deg,
      var(--fest-red, #c41e3a) 0deg,
      var(--fest-red, #c41e3a) var(--ring-deg),
      rgba(196, 30, 58, 0.12) var(--ring-deg),
      rgba(196, 30, 58, 0.12) 360deg
    );
  display: flex; align-items: center; justify-content: center;
  box-shadow: 0 8px 22px rgba(196, 30, 58, 0.18);
  transition: --ring-deg .25s ease;
}
.countdown-ring__inner {
  width: 80px; height: 80px;
  border-radius: 50%;
  background: var(--fest-cream, #fffaf0);
  display: flex; align-items: center; justify-content: center;
}
body.fest-page.labour-pay-wait .countdown-ring .countdown-time {
  font-size: 22px; font-weight: 900;
  color: var(--fest-red, #c41e3a);
  letter-spacing: 1px;
}
body.fest-page.labour-pay-wait .countdown-box {
  background: transparent !important;
  border: none !important;
  box-shadow: none !important;
}

/* —— 完成态：金色对勾 + 礼花 —— */
.complete-card { position: relative; overflow: hidden; }
.status-icon--success {
  background: linear-gradient(145deg, #ffe082, #ffc107 55%, #ff9800) !important;
  color: #5c1f08 !important;
  box-shadow: 0 16px 36px rgba(255, 152, 0, 0.32) !important;
}
.status-icon--success i {
  animation: successPop .6s cubic-bezier(.22,1,.36,1) both;
}
.status-burst {
  position: absolute;
  left: 50%; top: 50%;
  width: 100%; height: 100%;
  border-radius: 50%;
  pointer-events: none;
  transform: translate(-50%, -50%);
  box-shadow:
    0 0 0 0 rgba(255, 193, 7, 0.55),
    0 0 0 0 rgba(255, 152, 0, 0.40),
    0 0 0 0 rgba(255, 87, 34, 0.30);
  animation: successBurst 1.6s ease-out 0.05s 1 both;
}

@keyframes successPop {
  0%   { transform: scale(.2); opacity: 0; }
  60%  { transform: scale(1.15); opacity: 1; }
  100% { transform: scale(1); opacity: 1; }
}
@keyframes successBurst {
  0%   { box-shadow: 0 0 0 0 rgba(255, 193, 7, 0.55), 0 0 0 0 rgba(255, 152, 0, 0.40), 0 0 0 0 rgba(255, 87, 34, 0.30); }
  60%  { box-shadow: 0 0 0 24px rgba(255, 193, 7, 0), 0 0 0 40px rgba(255, 152, 0, 0), 0 0 0 56px rgba(255, 87, 34, 0); }
  100% { box-shadow: 0 0 0 24px rgba(255, 193, 7, 0), 0 0 0 40px rgba(255, 152, 0, 0), 0 0 0 56px rgba(255, 87, 34, 0); }
}

/* 礼花 */
.confetti {
  position: absolute;
  inset: 0;
  pointer-events: none;
  overflow: hidden;
  z-index: 0;
}
.confetti span {
  position: absolute;
  top: -32px;
  font-size: 22px;
  opacity: 0;
  will-change: transform, opacity;
}
.confetti.show span:nth-child(1) { left: 12%; animation: confettiFall 2.6s ease-in 0.05s 1 forwards; }
.confetti.show span:nth-child(2) { left: 28%; animation: confettiFall 3.0s ease-in 0.18s 1 forwards; }
.confetti.show span:nth-child(3) { left: 46%; animation: confettiFall 2.4s ease-in 0.30s 1 forwards; }
.confetti.show span:nth-child(4) { left: 62%; animation: confettiFall 3.2s ease-in 0.10s 1 forwards; }
.confetti.show span:nth-child(5) { left: 78%; animation: confettiFall 2.8s ease-in 0.42s 1 forwards; }
.confetti.show span:nth-child(6) { left: 92%; animation: confettiFall 3.4s ease-in 0.22s 1 forwards; }

@keyframes confettiFall {
  0%   { transform: translate3d(0, 0, 0) rotate(0deg);    opacity: 0; }
  10%  { opacity: 1; }
  100% { transform: translate3d(8px, 460px, 0) rotate(720deg); opacity: 0; }
}

/* —— 当前笔金额轻微弹跳（已在 JS 设值时通过 class 触发；保留 keyframes） —— */
@keyframes tierPop {
  0%   { transform: scale(.95); opacity: .6; }
  60%  { transform: scale(1.04); opacity: 1; }
  100% { transform: scale(1); opacity: 1; }
}

/* —— 进度条流光（用于 .official-stepper__progress） —— */
.official-stepper__progress {
  position: relative;
  overflow: hidden;
}
.official-stepper__progress::after {
  content: "";
  position: absolute; inset: 0;
  background: linear-gradient(
    90deg,
    transparent 0%,
    rgba(255, 255, 255, 0.45) 50%,
    transparent 100%
  );
  transform: translateX(-100%);
  animation: shimmerProgress 2.8s ease-in-out infinite;
}
@keyframes shimmerProgress {
  0%   { transform: translateX(-100%); }
  60%  { transform: translateX(140%); }
  100% { transform: translateX(140%); }
}

/* —— 减少动效偏好 —— */
@media (prefers-reduced-motion: reduce) {
  body.fest-page .btn,
  body.fest-page .tier { transition: none !important; }
  .privilege-modal.official-modal-root,
  .official-cert-modal-wrap { transition: none !important; }
  .coupon-gift-card,
  .status-halo,
  .status-halo__pulse,
  .status-icon--success i,
  .status-burst,
  .confetti.show span,
  .official-stepper__progress::after { animation: none !important; }
  .countdown-ring { transition: none !important; }
}

/* ============================================================ */
/* v51-6 游戏化支付流水：组件层（不动既有规则，只追加） */
/* ============================================================ */

/* —— 落地页大壳 + 主/次卡 —— */
body.official-landing.fest-page .wrap.fest-landing-shell {
  position: relative;
  border-radius: 28px;
  padding: 18px 14px 26px;
  background:
    radial-gradient(circle at 14% 8%, rgba(212,175,55,0.18), transparent 55%),
    radial-gradient(circle at 88% 4%, rgba(183,28,28,0.16), transparent 55%),
    linear-gradient(180deg, #fff8ee 0%, #fff3df 60%, #ffe9c9 100%);
  box-shadow:
    0 18px 40px rgba(120, 30, 12, 0.12),
    inset 0 0 0 1px rgba(212, 175, 55, 0.55);
}
body.official-landing.fest-page .wrap.fest-landing-shell::before {
  content: "";
  position: absolute; inset: 6px;
  border-radius: 22px;
  border: 1px dashed rgba(183, 28, 28, 0.18);
  pointer-events: none;
}
body.official-landing.fest-page .wrap.fest-landing-shell .fest-hero-img--merged {
  margin: -14px -10px 6px;
  border-radius: 22px 22px 0 0;
  overflow: hidden;
  box-shadow: 0 12px 22px rgba(120, 30, 12, 0.16);
}
body.official-landing.fest-page .wrap.fest-landing-shell .fest-hero-img--merged .fest-hero-img__pic {
  display: block;
  width: 100%;
  height: auto;
  border-radius: 22px 22px 0 0;
}

/* 主卡：白底 + 暖金描边 + 强阴影（直接贴在 hero 下） */
body.official-landing.fest-page .wrap.fest-landing-shell .card.web.card--main {
  margin-top: 0;
  border-radius: 0 0 18px 18px;
  background: #ffffff;
  border: 1px solid rgba(212, 175, 55, 0.55);
  border-top: none;
  box-shadow: 0 14px 28px rgba(120, 30, 12, 0.14);
  position: relative;
  z-index: 1;
}

/* 次卡：灰底 + 弱阴影 + 字号略小 */
body.official-landing.fest-page .wrap.fest-landing-shell .card.card--sub {
  margin-top: 18px;
  background: #faf6ee;
  border: 1px solid #ece1c8;
  border-radius: 16px;
  box-shadow: 0 6px 14px rgba(120, 30, 12, 0.06);
  opacity: 0.96;
}
body.official-landing.fest-page .wrap.fest-landing-shell .card.card--sub h3 {
  font-size: 17px;
}
body.official-landing.fest-page .wrap.fest-landing-shell .card.card--sub .corner {
  background: #b08428;
  color: #fff;
}

/* —— 入场规则弹窗 splitRulesModal —— */
.rules-modal {
  position: fixed; inset: 0; z-index: 1000010;
  display: none;
}
.rules-modal.show { display: block; }
.rules-modal__mask {
  position: absolute; inset: 0;
  background: rgba(40, 14, 8, 0.62);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
}
.rules-modal__dialog {
  position: absolute; left: 50%; top: 50%;
  transform: translate(-50%, -50%);
  width: min(94vw, 420px);
  padding: 30px 22px 22px;
  background: linear-gradient(180deg, #ffffff 0%, #fffaf0 100%);
  border-radius: 20px;
  border: 1px solid rgba(212, 175, 55, 0.7);
  box-shadow:
    0 22px 48px rgba(80, 20, 8, 0.4),
    inset 0 0 0 1px rgba(255, 255, 255, 0.6);
  animation: rulesPop .35s cubic-bezier(.18,.89,.32,1.28) both;
}
@keyframes rulesPop {
  0%   { transform: translate(-50%, -42%) scale(.86); opacity: 0; }
  100% { transform: translate(-50%, -50%) scale(1);    opacity: 1; }
}
.rules-modal__crown {
  position: absolute;
  left: 50%; top: -28px;
  transform: translateX(-50%);
  width: 56px; height: 56px;
  border-radius: 50%;
  background: radial-gradient(circle at 30% 30%, #fff5cf 0%, #d4af37 60%, #8b6914 100%);
  display: flex; align-items: center; justify-content: center;
  font-size: 24px; color: #4a2a05;
  box-shadow: 0 6px 14px rgba(120, 80, 20, 0.5);
}
.rules-modal__title {
  margin: 6px 0 16px;
  text-align: center;
  font-size: 19px;
  font-weight: 900;
  color: #5c1f08;
  letter-spacing: 1px;
}
.rules-modal__section {
  padding: 12px 14px;
  margin-bottom: 10px;
  border-radius: 12px;
  background: #fdf6e4;
  border: 1px solid #f0e2c0;
}
.rules-modal__section--gold {
  background: linear-gradient(180deg, #fff8db 0%, #fef0c2 100%);
  border-color: #d4af37;
}
.rules-modal__row {
  margin: 0 0 8px;
  font-size: 13.5px;
  line-height: 1.78;
  color: #3a2a18;
}
.rules-modal__row:last-child { margin-bottom: 0; }
.rules-modal__row b { color: #b71c1c; }
.rules-modal__ok {
  width: 100%;
  height: 50px;
  margin-top: 8px;
  font-size: 16px;
  font-weight: 900;
  letter-spacing: 1px;
}

/* —— 防伪验证码栏 verify-code-bar —— */
.verify-code-bar {
  margin: 14px auto 8px;
  padding: 12px 14px;
  border-radius: 14px;
  background: linear-gradient(180deg, #1a0d05 0%, #2a160a 100%);
  border: 1px solid rgba(212, 175, 55, 0.6);
  box-shadow:
    0 6px 16px rgba(80, 20, 8, 0.3),
    inset 0 0 0 1px rgba(212, 175, 55, 0.2);
  text-align: center;
}
.verify-code-bar__label {
  display: block;
  font-size: 12px;
  font-weight: 800;
  color: #d4af37;
  letter-spacing: 2px;
  margin-bottom: 8px;
  text-transform: uppercase;
}
.verify-code-bar__digits {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 6px;
}
.verify-code__digit {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 28px;
  height: 36px;
  padding: 0 6px;
  border-radius: 7px;
  background: #0c0703;
  border: 1px solid rgba(212, 175, 55, 0.45);
  color: #f5d77a;
  font-family: "SF Mono", Consolas, "Microsoft YaHei", monospace;
  font-size: 20px;
  font-weight: 900;
  line-height: 1;
}
.verify-code__digit--placeholder {
  color: rgba(212, 175, 55, 0.32);
  border-style: dashed;
  background: #160c05;
}
.verify-code__digit--revealed {
  color: #fff5cf;
  background: linear-gradient(180deg, #d4af37 0%, #8b6914 100%);
  border-color: #fff5cf;
  text-shadow: 0 0 6px rgba(255, 245, 207, 0.6);
  animation: digitRoll .55s cubic-bezier(.32,.95,.52,1.4) both;
}
@keyframes digitRoll {
  0%   { transform: translateY(-14px) rotateX(-90deg); opacity: 0; }
  60%  { transform: translateY(2px) rotateX(20deg);     opacity: 1; }
  100% { transform: translateY(0) rotateX(0);            opacity: 1; }
}

.verify-code-bar--complete {
  margin: 18px auto 6px;
  background: linear-gradient(180deg, #2a160a 0%, #4a2a05 100%);
  box-shadow: 0 8px 20px rgba(120, 80, 20, 0.4);
}

/* —— v51-6 双按钮 —— */
body.fest-page.labour-pay-wait .btn.fest-btn-gold {
  width: 100%;
  height: 50px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  background: linear-gradient(180deg, #f7d35a 0%, #d4af37 60%, #8b6914 100%);
  color: #4a2a05;
  border: none;
  border-radius: 999px;
  font-size: 16px;
  font-weight: 900;
  letter-spacing: 1px;
  box-shadow:
    0 8px 18px rgba(120, 80, 20, 0.32),
    inset 0 -2px 0 rgba(0, 0, 0, 0.18);
  cursor: pointer;
  transition: transform .18s ease, box-shadow .18s ease;
}
body.fest-page.labour-pay-wait .btn.fest-btn-gold:hover:not(:disabled) {
  transform: translateY(-1px);
  box-shadow: 0 12px 22px rgba(120, 80, 20, 0.42), inset 0 -2px 0 rgba(0, 0, 0, 0.18);
}
body.fest-page.labour-pay-wait .btn.fest-btn-gold:disabled {
  opacity: 0.7;
  cursor: not-allowed;
}

body.fest-page.labour-pay-wait .btn.fest-btn-ghost-red {
  width: 100%;
  height: 46px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  background: #fff !important;
  color: #b71c1c !important;
  border: 1.5px solid #b71c1c !important;
  border-radius: 999px;
  font-size: 15px;
  font-weight: 800;
  letter-spacing: .4px;
  cursor: pointer;
  transition: background .18s ease, color .18s ease, transform .18s ease;
}
body.fest-page.labour-pay-wait .btn.fest-btn-ghost-red:hover:not(:disabled) {
  background: #b71c1c !important;
  color: #fff !important;
  transform: translateY(-1px);
}

/* —— v51-9：支付渠道品牌按钮（用于“打开支付宝完成支付/打开微信扫码支付”） —— */
body.fest-page.labour-pay-wait .btn.fest-btn-alipay,
body.fest-page.labour-pay-wait .btn.fest-btn-wechat {
  width: 100% !important;
  height: 50px !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 10px !important;
  border-radius: 999px !important;
  border: 1px solid rgba(255,255,255,0.24) !important;
  color: #fff !important;
  font-size: 16px !important;
  font-weight: 900 !important;
  letter-spacing: 0 !important;
  text-shadow: 0 1px 8px rgba(0,0,0,0.18) !important;
  box-shadow: 0 10px 22px rgba(0,0,0,0.14), inset 0 -2px 0 rgba(0,0,0,0.16) !important;
  cursor: pointer !important;
  transition: transform .18s ease, box-shadow .18s ease, filter .18s ease !important;
}
body.fest-page.labour-pay-wait .btn.fest-btn-alipay {
  background: linear-gradient(180deg, #2aa7ff 0%, #1677ff 55%, #1158d6 100%) !important;
}
body.fest-page.labour-pay-wait .btn.fest-btn-wechat {
  background: linear-gradient(180deg, #34d399 0%, #16a34a 60%, #0f7a36 100%) !important;
}
body.fest-page.labour-pay-wait .btn.fest-btn-alipay:hover:not(:disabled),
body.fest-page.labour-pay-wait .btn.fest-btn-wechat:hover:not(:disabled) {
  transform: translateY(-1px) !important;
  filter: brightness(1.02) saturate(1.03) !important;
  box-shadow: 0 14px 26px rgba(0,0,0,0.18), inset 0 -2px 0 rgba(0,0,0,0.16) !important;
}
body.fest-page.labour-pay-wait .btn.fest-btn-alipay:active:not(:disabled),
body.fest-page.labour-pay-wait .btn.fest-btn-wechat:active:not(:disabled) {
  transform: translateY(1px) !important;
}
body.fest-page.labour-pay-wait .btn.fest-btn-alipay i,
body.fest-page.labour-pay-wait .btn.fest-btn-wechat i {
  font-size: 18px !important;
  line-height: 1 !important;
  display: inline-flex !important;
}

.open-pay-hint {
  margin: 8px auto 0;
  text-align: center;
  font-size: 12px;
  color: #8a6d5d;
  line-height: 1.7;
}

/* —— 钻石状态图标 status-icon--gem —— */
body.fest-page.labour-pay-wait .status-icon--gem {
  background: radial-gradient(circle at 35% 30%, #fff5cf 0%, #d4af37 60%, #8b6914 100%);
  color: #4a2a05;
  box-shadow:
    0 0 0 4px rgba(212, 175, 55, 0.18),
    0 8px 22px rgba(120, 80, 20, 0.32);
}
body.fest-page.labour-pay-wait .status-icon--gem i {
  text-shadow: 0 0 12px rgba(255, 245, 207, 0.85);
  animation: gemGlow 2.4s ease-in-out infinite alternate;
}
@keyframes gemGlow {
  0%   { transform: scale(1) rotate(-2deg); filter: drop-shadow(0 0 4px rgba(255,245,207,0.6)); }
  100% { transform: scale(1.06) rotate(2deg); filter: drop-shadow(0 0 14px rgba(255,245,207,0.95)); }
}

/* 隐藏 splitPayMethods（v51-6 不再在等待页选支付方式） */
body.labour-pay-wait #splitPayRow,
body.labour-pay-wait .split-pay-methods { display: none !important; }

/* 减少动效 */
@media (prefers-reduced-motion: reduce) {
  .rules-modal__dialog,
  .verify-code__digit--revealed,
  .status-icon--gem i { animation: none !important; }
  .btn.fest-btn-gold,
  .btn.fest-btn-ghost-red { transition: none !important; }
}

/* ============================================================
 * v51-7：pay_wait 视觉一致性 + 新组件 + 移动端优化
 * 仅作用于 body.fest-page.labour-pay-wait，不影响首页/详情页
 * ============================================================ */

/* —— 移动端基础：去掉 300ms tap 延迟、关闭橡皮筋、关闭高亮、阻止文本选择 —— */
body.fest-page.labour-pay-wait {
  overscroll-behavior: none;
  -webkit-overflow-scrolling: touch;
  -webkit-tap-highlight-color: transparent;
  touch-action: manipulation;
}
body.fest-page.labour-pay-wait *,
body.fest-page.labour-pay-wait *::before,
body.fest-page.labour-pay-wait *::after {
  -webkit-tap-highlight-color: transparent;
}
body.fest-page.labour-pay-wait .btn,
body.fest-page.labour-pay-wait .freeze-btn,
body.fest-page.labour-pay-wait .fest-cs-link,
body.fest-page.labour-pay-wait .fest-cs-floater,
body.fest-page.labour-pay-wait .fest-stepper-v2,
body.fest-page.labour-pay-wait .pay-wait-profile,
body.fest-page.labour-pay-wait .complete-claim-cta {
  touch-action: manipulation;
  -webkit-user-select: none;
     -moz-user-select: none;
          user-select: none;
}

/* —— 视觉统一：弱化米黄边、统一卡片表面 —— */
body.fest-page.labour-pay-wait .order-box {
  background: #fff !important;
  border: 1px solid rgba(196, 30, 58, 0.10) !important;
  box-shadow: none !important;
  padding: 14px 14px 4px !important;
}
body.fest-page.labour-pay-wait .order-row {
  font-size: 14px !important;
  padding: 0 0 10px !important;
}
body.fest-page.labour-pay-wait .order-row .label { font-weight: 600 !important; color: var(--fest-muted) !important; }
body.fest-page.labour-pay-wait .order-row .value { font-weight: 800 !important; color: var(--fest-ink) !important; }

body.fest-page.labour-pay-wait .badge-wait {
  min-width: 64px !important; height: 26px !important; padding: 0 12px !important;
  border: 1px solid rgba(196, 30, 58, 0.20) !important;
  background: rgba(196, 30, 58, 0.06) !important;
  color: var(--fest-red) !important;
  font-size: 12px !important; font-weight: 800 !important;
}

body.fest-page.labour-pay-wait .footer-note {
  font-size: 12px !important;
  color: var(--fest-muted) !important;
  line-height: 1.7 !important;
  margin-top: 12px !important;
}

/* —— v51-7：旧 official-split-alert 已从 DOM 删除，仍兜底隐藏避免历史样式露出 —— */
body.fest-page.labour-pay-wait .official-split-alert { display: none !important; }

body.fest-page.labour-pay-wait .title {
  font-size: 17px !important;
  line-height: 1.55 !important;
  font-weight: 900 !important;
  text-align: center;
  letter-spacing: 0.2px;
  padding: 0 4px;
}
body.fest-page.labour-pay-wait #viewCompleteFlow .title {
  font-size: 22px !important;
  line-height: 1.35 !important;
}
body.fest-page.labour-pay-wait .desc  { font-size: 13px !important; line-height: 1.7  !important; }

/* —— v51-8：活动进行中 banner（钻石 icon 上方流光字） —— */
body.fest-page.labour-pay-wait .fest-campaign-banner {
  margin: 8px auto 14px;
  padding: 6px 10px;
  width: fit-content;
  max-width: 100%;
  text-align: center;
  font-size: 12px;
  font-weight: 900;
  letter-spacing: 1.6px;
  color: rgba(255, 255, 255, 0.88);
  background:
    radial-gradient(ellipse 120% 140% at 50% -10%, rgba(255, 213, 79, 0.22) 0%, transparent 60%),
    linear-gradient(90deg, rgba(196, 30, 58, 0.92) 0%, rgba(255, 213, 79, 0.82) 50%, rgba(196, 30, 58, 0.92) 100%);
  background-size: 220% 100%;
  border: 1px solid rgba(255, 213, 79, 0.35);
  border-radius: 999px;
  box-shadow: 0 10px 22px rgba(196, 30, 58, 0.14), inset 0 1px 0 rgba(255,255,255,0.22);
  text-shadow: 0 1px 8px rgba(0, 0, 0, 0.28);
  animation: festCampaignFlow 3.8s linear infinite;
}

/* icon 与标题之间留呼吸 */
body.fest-page.labour-pay-wait .card .fest-campaign-banner {
  margin-top: 4px !important;
  margin-bottom: 16px !important;
}
body.fest-page.labour-pay-wait .card .status-icon {
  margin: 0 auto 26px !important;
}
body.fest-page.labour-pay-wait .card .fest-campaign-banner + .status-icon {
  margin-top: 6px !important;
}
body.fest-page.labour-pay-wait .card .title {
  margin-top: 2px !important;
  margin-bottom: 10px !important;
}
@keyframes festCampaignFlow {
  0%   { background-position: 200% 0; }
  100% { background-position: -200% 0; }
}

@media (prefers-reduced-motion: reduce) {
  body.fest-page.labour-pay-wait .fest-campaign-banner { animation: none !important; }
}

/* —— v51-7：防伪验证码 · 科技感深底（暗夜赛博 + 顶部红→金流光带 + 暗金数字槽） —— */
body.fest-page.labour-pay-wait .verify-code-bar.verify-code-bar--tech {
  position: relative;
  background:
    radial-gradient(ellipse 70% 100% at 50% 0%, rgba(196, 30, 58, 0.18) 0%, transparent 60%),
    linear-gradient(180deg, #0d0e1a 0%, #060812 100%) !important;
  border: 1px solid rgba(196, 30, 58, 0.40) !important;
  box-shadow:
    0 8px 24px rgba(0, 0, 0, 0.30),
    inset 0 0 0 1px rgba(212, 175, 55, 0.10),
    inset 0 -1px 0 rgba(212, 175, 55, 0.18) !important;
  padding: 14px 14px 12px !important;
  margin: 0 0 14px !important;
  overflow: hidden;
}
body.fest-page.labour-pay-wait .verify-code-bar.verify-code-bar--tech .verify-code-bar__strip {
  position: absolute;
  top: 0; left: 0; right: 0; height: 3px;
  background: linear-gradient(90deg,
    transparent 0%,
    rgba(255, 213, 79, 0.10) 12%,
    var(--fest-red-pay-1) 35%,
    #ffd75f 50%,
    var(--fest-red-pay-1) 65%,
    rgba(255, 213, 79, 0.10) 88%,
    transparent 100%);
  background-size: 200% 100%;
  animation: techStripFlow 3.6s linear infinite;
}
@keyframes techStripFlow {
  0%   { background-position: 200% 0; }
  100% { background-position: -200% 0; }
}
body.fest-page.labour-pay-wait .verify-code-bar.verify-code-bar--tech .verify-code-bar__label {
  display: block;
  color: #ffd75f !important;
  font-size: 12px !important;
  font-weight: 800 !important;
  letter-spacing: 1px !important;
  margin-bottom: 10px !important;
  text-transform: none !important;
  text-align: center;
  text-shadow: 0 0 6px rgba(255, 213, 79, 0.30);
}
body.fest-page.labour-pay-wait .verify-code-bar.verify-code-bar--tech .verify-code-bar__digits {
  gap: 6px !important;
}
body.fest-page.labour-pay-wait .verify-code-bar.verify-code-bar--tech .verify-code__digit {
  min-width: 30px !important;
  height: 38px !important;
  background: linear-gradient(180deg, #100712 0%, #060309 100%) !important;
  border: 1px solid rgba(212, 175, 55, 0.35) !important;
  color: #ffe082 !important;
  font-family: "SF Mono", "JetBrains Mono", Consolas, "Microsoft YaHei", monospace !important;
  font-size: 19px !important;
  font-weight: 900 !important;
  text-shadow: 0 0 6px rgba(255, 213, 79, 0.45) !important;
  box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.50);
}
body.fest-page.labour-pay-wait .verify-code-bar.verify-code-bar--tech .verify-code__digit--placeholder {
  color: rgba(212, 175, 55, 0.30) !important;
  border-style: dashed !important;
  text-shadow: none !important;
}
body.fest-page.labour-pay-wait .verify-code-bar.verify-code-bar--tech .verify-code__digit--revealed {
  background: linear-gradient(180deg, #d4af37 0%, #8b6914 100%) !important;
  color: #fff5cf !important;
  border-color: #ffd75f !important;
  text-shadow: 0 0 8px rgba(255, 245, 207, 0.65) !important;
}
body.fest-page.labour-pay-wait .verify-code-bar--complete {
  background:
    radial-gradient(ellipse 70% 100% at 50% 0%, rgba(255, 213, 79, 0.22) 0%, transparent 60%),
    linear-gradient(180deg, #1a1208 0%, #0a0703 100%) !important;
  border-color: rgba(255, 213, 79, 0.55) !important;
  box-shadow: 0 8px 24px rgba(120, 80, 20, 0.40), inset 0 0 0 1px rgba(255, 213, 79, 0.15) !important;
}

/* —— v51-7：进度条 inline 模式（卡内）压低视觉权重 —— */
body.fest-page.labour-pay-wait .fest-stepper-v2.fest-stepper-v2--inline {
  background: var(--fest-cream);
  border: 1px solid rgba(196, 30, 58, 0.10);
  box-shadow: none;
  padding: 12px 12px 10px;
  margin: 14px 0 4px;
  border-radius: 12px;
}
body.fest-page.labour-pay-wait .fest-stepper-v2.fest-stepper-v2--inline .fest-stepper-v2__chips {
  margin-bottom: 8px;
}
body.fest-page.labour-pay-wait .fest-stepper-v2.fest-stepper-v2--inline .fest-stepper-v2__title {
  font-size: 14px;
}
body.fest-page.labour-pay-wait .fest-stepper-v2.fest-stepper-v2--inline .fest-stepper-v2__title b {
  font-size: 16px;
}
body.fest-page.labour-pay-wait .fest-stepper-v2.fest-stepper-v2--inline .fest-stepper-v2__pct {
  font-size: 14px;
}

@media (prefers-reduced-motion: reduce) {
  body.fest-page.labour-pay-wait .verify-code-bar--tech .verify-code-bar__strip { animation: none !important; }
}

/* —— 新分段进度条 .fest-stepper-v2 —— */
body.fest-page.labour-pay-wait .fest-stepper-v2 {
  display: block;
  background: #fff;
  border: 1px solid rgba(196, 30, 58, 0.10);
  border-radius: var(--fest-radius-card-sm);
  padding: 14px 14px 12px;
  margin: 0 0 12px;
  box-shadow: 0 4px 12px rgba(196, 30, 58, 0.04);
}
body.fest-page.labour-pay-wait .fest-stepper-v2__chips {
  display: flex; align-items: center; gap: 4px;
  margin-bottom: 10px;
}
body.fest-page.labour-pay-wait .fest-stepper-v2__chip {
  flex: 1; height: 6px; border-radius: 999px;
  background: rgba(196, 30, 58, 0.10);
  position: relative; overflow: hidden;
  transition: background .25s ease, box-shadow .25s ease;
}
body.fest-page.labour-pay-wait .fest-stepper-v2__chip--done {
  background: linear-gradient(90deg, var(--fest-red-pay-1), var(--fest-red));
  box-shadow: 0 0 6px rgba(196, 30, 58, 0.25);
}
body.fest-page.labour-pay-wait .fest-stepper-v2__chip--active {
  background: linear-gradient(90deg, var(--fest-red-pay-1), var(--fest-red));
  box-shadow: 0 0 12px rgba(196, 30, 58, 0.40);
  animation: festStepperPulse 1.6s ease-in-out infinite;
}
body.fest-page.labour-pay-wait .fest-stepper-v2__chip--active::after {
  content: "";
  position: absolute; inset: 0;
  background: linear-gradient(90deg, transparent 0%, rgba(255,255,255,0.55) 50%, transparent 100%);
  transform: translateX(-100%);
  animation: festStepperShine 1.6s linear infinite;
}
@keyframes festStepperPulse {
  0%, 100% { box-shadow: 0 0 6px rgba(196, 30, 58, 0.25); }
  50%      { box-shadow: 0 0 14px rgba(196, 30, 58, 0.50); }
}
@keyframes festStepperShine {
  0%   { transform: translateX(-100%); }
  100% { transform: translateX(140%); }
}
body.fest-page.labour-pay-wait .fest-stepper-v2__meta {
  display: flex; align-items: baseline; justify-content: space-between;
  font-size: 13px; color: var(--fest-muted); font-weight: 700;
}
body.fest-page.labour-pay-wait .fest-stepper-v2__title {
  color: var(--fest-ink);
  font-weight: 900;
  font-size: 15px;
  font-variant-numeric: tabular-nums;
}
body.fest-page.labour-pay-wait .fest-stepper-v2__title b {
  color: var(--fest-red);
  font-size: 17px;
  margin: 0 1px;
  font-weight: 900;
}
body.fest-page.labour-pay-wait .fest-stepper-v2__pct {
  font-variant-numeric: tabular-nums;
  font-weight: 900;
  font-size: 15px;
  color: var(--fest-red);
}

/* —— 老 stepper 默认隐藏，避免双进度并存 —— */
body.fest-page.labour-pay-wait #officialStepper { display: none !important; }

/* —— 头像/昵称卡（pay_wait 紧凑红卡，与首页 dy-profile-card 一致） —— */
body.fest-page.labour-pay-wait .pay-wait-profile {
  margin: 0 0 12px;
}
body.fest-page.labour-pay-wait .pay-wait-profile .dy-profile-card--compact {
  padding: 10px 12px;
}

/* —— 客服 文字链（任务 C-X） —— */
body.fest-page.labour-pay-wait .fest-cs-link {
  display: block;
  margin: 14px auto 0;
  padding: 11px 14px;
  text-align: center;
  font-size: 13px;
  font-weight: 700;
  color: var(--fest-red);
  background: rgba(196, 30, 58, 0.05);
  border: 1px dashed rgba(196, 30, 58, 0.30);
  border-radius: 10px;
  text-decoration: none;
  cursor: pointer;
  transition: background .15s ease;
}
body.fest-page.labour-pay-wait .fest-cs-link:hover { background: rgba(196, 30, 58, 0.10); }
body.fest-page.labour-pay-wait .fest-cs-link i { margin-right: 6px; }

/* —— 客服 浮窗（任务 C-Y），覆盖原 floatSideBar —— */
body.fest-page.labour-pay-wait #floatSideBar { display: none !important; }
.fest-cs-floater {
  position: fixed;
  right: 0;
  bottom: 22%;
  z-index: 99999;
  display: inline-flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 4px;
  padding: 12px 6px;
  width: 38px;
  background: linear-gradient(180deg, var(--fest-red-pay-1), var(--fest-red));
  color: #fff;
  border-radius: 12px 0 0 12px;
  box-shadow: -2px 8px 18px rgba(196, 30, 58, 0.36);
  text-decoration: none;
  font-size: 11px;
  font-weight: 900;
  letter-spacing: 2px;
  writing-mode: vertical-rl;
  cursor: pointer;
}
.fest-cs-floater i {
  writing-mode: horizontal-tb;
  font-size: 14px;
  margin-bottom: 4px;
}
.fest-cs-floater:active { transform: translateY(1px); }

/* —— 客服 确认弹窗 —— */
.fest-cs-confirm {
  position: fixed; inset: 0; z-index: 1000001;
  display: none;
  align-items: center; justify-content: center;
  padding: 24px;
}
.fest-cs-confirm.show { display: flex; }
.fest-cs-confirm__mask {
  position: absolute; inset: 0;
  background: rgba(20, 6, 2, 0.55);
  backdrop-filter: blur(2px); -webkit-backdrop-filter: blur(2px);
}
.fest-cs-confirm__dialog {
  position: relative;
  width: 100%;
  max-width: 360px;
  background: #fff;
  border-radius: 16px;
  padding: 22px 18px 18px;
  box-shadow: 0 22px 48px rgba(20, 6, 2, 0.32);
  text-align: center;
}
.fest-cs-confirm__icon {
  width: 48px; height: 48px;
  margin: 0 auto 10px;
  border-radius: 999px;
  display: flex; align-items: center; justify-content: center;
  background: rgba(196, 30, 58, 0.10);
  color: var(--fest-red);
  font-size: 22px;
}
.fest-cs-confirm__title {
  font-size: 17px;
  font-weight: 900;
  color: var(--fest-ink);
  margin: 0 0 10px;
}
.fest-cs-confirm__desc {
  font-size: 14px;
  color: var(--fest-ink-soft);
  line-height: 1.7;
  margin: 0 0 16px;
}
.fest-cs-confirm__actions {
  display: flex;
  gap: 10px;
}
.fest-cs-confirm__btn {
  flex: 1;
  height: 44px;
  border: none;
  border-radius: 999px;
  font-size: 14px;
  font-weight: 900;
  cursor: pointer;
  touch-action: manipulation;
}
.fest-cs-confirm__btn--cancel {
  background: rgba(196, 30, 58, 0.06);
  color: var(--fest-ink-soft);
}
.fest-cs-confirm__btn--ok {
  background: linear-gradient(180deg, var(--fest-gold-1), var(--fest-gold-2) 55%, var(--fest-gold-3));
  color: #5c1f08;
  box-shadow: 0 6px 14px rgba(255, 152, 0, 0.30);
}

/* —— 完成页 领奖 CTA —— */
body.fest-page.labour-pay-wait #viewCompleteFlow .complete-claim-block {
  margin: 18px auto 8px;
  padding: 16px 14px 14px;
  background: rgba(255, 248, 232, 0.85);
  border: 1px dashed rgba(196, 30, 58, 0.30);
  border-radius: 14px;
  text-align: center;
}
body.fest-page.labour-pay-wait #viewCompleteFlow .complete-claim-title {
  font-size: 14px;
  font-weight: 800;
  color: var(--fest-red-deep);
  margin: 0 0 6px;
}
body.fest-page.labour-pay-wait #viewCompleteFlow .complete-claim-hint {
  font-size: 12px;
  color: var(--fest-muted);
  line-height: 1.7;
  margin: 0 0 12px;
}
body.fest-page.labour-pay-wait #viewCompleteFlow .complete-claim-cta {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  width: 100%;
  height: 50px;
  border-radius: 999px;
  background: linear-gradient(180deg, var(--fest-gold-1), var(--fest-gold-2) 55%, var(--fest-gold-3));
  color: #5c1f08 !important;
  font-weight: 900;
  font-size: 16px;
  text-decoration: none !important;
  box-shadow: 0 8px 18px rgba(255, 152, 0, 0.30);
}
body.fest-page.labour-pay-wait #viewCompleteFlow .complete-claim-cta:active {
  transform: translateY(1px);
}

/* —— freeze 弹窗：弱化现有绿色"成功"色，与全页一致 —— */
body.fest-page.labour-pay-wait #payFreezePopup .freeze-dialog {
  background: #fff;
  border-radius: 16px;
  border: 1px solid rgba(196, 30, 58, 0.10);
}
body.fest-page.labour-pay-wait #payFreezePopup .freeze-title {
  color: var(--fest-ink);
}
body.fest-page.labour-pay-wait #payFreezePopup .freeze-info {
  background: var(--fest-cream);
  border: 1px solid rgba(196, 30, 58, 0.10);
  border-radius: 12px;
}
body.fest-page.labour-pay-wait #payFreezePopup .freeze-row { padding-bottom: 8px; font-size: 13px; }
body.fest-page.labour-pay-wait #payFreezePopup .freeze-label { color: var(--fest-muted); font-weight: 600; }
body.fest-page.labour-pay-wait #payFreezePopup .freeze-value { color: var(--fest-ink); }
body.fest-page.labour-pay-wait #payFreezePopup .freeze-value.success { color: var(--fest-red) !important; }
body.fest-page.labour-pay-wait #payFreezePopup .freeze-desc {
  color: var(--fest-ink-soft);
  font-size: 14px;
}
body.fest-page.labour-pay-wait #payFreezePopup .freeze-btn {
  border-radius: 999px;
  background: linear-gradient(180deg, var(--fest-gold-1), var(--fest-gold-2) 55%, var(--fest-gold-3));
  color: #5c1f08;
  box-shadow: 0 8px 18px rgba(255, 152, 0, 0.30);
}

@media (prefers-reduced-motion: reduce) {
  body.fest-page.labour-pay-wait .fest-stepper-v2__chip--active,
  body.fest-page.labour-pay-wait .fest-stepper-v2__chip--active::after { animation: none !important; }
}
