/* ═══════════════════════════════════════════════════════════════
   财小云官网 Website Design V2.1 — 共享组件与验收护栏
   只放跨页面契约：导航、FAQ、触控区、克制动效、移动端通用行为。
   页面独有版式仍归 home.css / aitax.css / wuyou.css。
   ═══════════════════════════════════════════════════════════════ */

/* ── 44px 触控底线 ── */
.theme-toggle,
.mobile-menu-toggle,
.btn,
.btn-sm,
.step-scan,
.follow-item,
.price-toggle-btn,
.quiz-opt span,
.creed-band,
.faq-q,
.wy-plan-switch button,
.cap-toggle,
.price-detail-toggle {
  min-height: 44px;
}
.theme-toggle,
.mobile-menu-toggle,
.follow-item { min-width: 44px; width: 44px; height: 44px; }
.footer-bottom-links a,
.more-link,
.acard-read,
.acard-body h3 a,
.dcard .go {
  display: inline-flex;
  align-items: center;
  min-height: 44px;
}
/* footer 列链接与联系方式不做 44px 触控高（文字密度优先，Haning 确认行距收紧） */
.nav-logo,
.nav-links a,
.footer-bottom-links a { min-width: 44px; }
.nav-logo,
.nav-links a,
.footer-bottom-links a { justify-content: center; }
.nav-logo { display: inline-flex; align-items: center; min-height: 44px; }

/* ── 导航：桌面保持原结构，移动端提供完整产品闭环 ── */
.nav { border-bottom-color: var(--cxy-border); }
.nav-in { position: relative; }
.nav-links a[aria-current="page"] { color: var(--cxy-action); font-weight: var(--cxy-weight-semibold); }
.nav-links a { display: inline-flex; align-items: center; min-height: 44px; }

/* ── 导航链接视觉升级（V2.2）：产品线色点 + 极光下划线指示器 ── */
.nav-links a { position: relative; }
/* 极光下划线：中心向两端展开；当前页常显 */
.nav-links a::after {
  content: ""; position: absolute; left: 50%; right: 50%; bottom: 6px;
  height: 2px; border-radius: 1px; background: var(--cxy-gradient-aurora);
  transition: left var(--cxy-duration-base) var(--cxy-ease-out),
              right var(--cxy-duration-base) var(--cxy-ease-out);
}
.nav-links a:hover::after, .nav-links a[aria-current="page"]::after { left: 0; right: 0; }
/* 产品线色点：与全站 tag 色彩语言一致（AI 蓝 / 税无忧绿）
   选择器用 [data-nav]（V17 方案 A），避开 pretty URL `/ai-tax/` 与静态 `ai-tax.html` 的差异 */
.nav-links a[data-nav="ai-tax"]::before, .nav-links a[data-nav="wuyou"]::before {
  content: ""; flex: none; width: 6px; height: 6px; border-radius: 50%;
  margin-right: 7px;
}
.nav-links a[data-nav="ai-tax"]::before { background: var(--cxy-blue); }
.nav-links a[data-nav="wuyou"]::before { background: var(--cxy-green); }
.mobile-menu-toggle {
  display: none;
  align-items: center;
  justify-content: center;
  flex: none;
  border: var(--cxy-border-hairline) solid var(--cxy-border);
  border-radius: var(--cxy-radius-pill);
  background: var(--cxy-surface-card);
  color: var(--cxy-ink-2);
}
.mobile-menu-toggle svg { width: 20px; height: 20px; }
.mobile-menu-toggle .menu-close { display: none; }
.mobile-menu-toggle[aria-expanded="true"] .menu-open { display: none; }
.mobile-menu-toggle[aria-expanded="true"] .menu-close { display: block; }
.mobile-nav {
  position: absolute;
  top: calc(100% + var(--cxy-space-3));
  left: 0;
  right: 0;
  z-index: var(--cxy-z-dropdown);
  padding: var(--cxy-space-3);
  border: var(--cxy-border-hairline) solid var(--cxy-border);
  border-radius: var(--cxy-radius-xl);
  background: var(--cxy-surface-card);
  box-shadow: var(--cxy-elevation-2);
}
.mobile-nav[hidden] { display: none; }
.mobile-nav a {
  display: flex;
  align-items: center;
  justify-content: space-between;
  min-height: 48px;
  padding: 0 var(--cxy-space-4);
  border-radius: var(--cxy-radius-md);
  color: var(--cxy-ink-2);
  font-size: var(--cxy-size-body);
  font-weight: var(--cxy-weight-medium);
}
.mobile-nav a::after { content: "→"; color: var(--cxy-muted); }
.mobile-nav a:hover,
.mobile-nav a[aria-current="page"] { background: var(--cxy-tint-blue-bg); color: var(--cxy-action); }

@media (max-width: 768px) {
  .nav-in { gap: var(--cxy-space-2); }
  .nav-logo { margin-right: auto; }
  .mobile-menu-toggle { display: inline-flex; }
  .nav-cta { gap: var(--cxy-space-2); }
}
@media (max-width: 480px) {
  .nav-in { height: 72px; }
  .nav-logo img { height: 34px; }
}

/* ── FAQ：三页共用，禁止再放入单页 CSS ── */
.wrap-narrow { max-width: 760px; }
.faq { list-style: none; margin-top: var(--cxy-space-7); }
.faq-item { border-top: var(--cxy-border-hairline) solid var(--cxy-border); }
.faq-item:last-child { border-bottom: var(--cxy-border-hairline) solid var(--cxy-border); }
.faq-q {
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--cxy-space-5);
  padding: var(--cxy-space-5) 0;
  text-align: left;
  font-size: var(--cxy-size-title);
  font-weight: var(--cxy-weight-semibold);
  color: var(--cxy-ink);
  transition: color var(--cxy-duration-fast) var(--cxy-ease-standard);
}
.faq-q:hover { color: var(--cxy-action); }
.faq-ic { position: relative; flex: none; width: 16px; height: 16px; }
.faq-ic::before,
.faq-ic::after {
  content: "";
  position: absolute;
  inset: 0;
  margin: auto;
  width: 14px;
  height: 2px;
  border-radius: 1px;
  background: var(--cxy-muted);
  transition: transform var(--cxy-duration-base) var(--cxy-ease-standard);
}
.faq-ic::after { transform: rotate(90deg); }
.faq-q[aria-expanded="true"] .faq-ic::after { transform: rotate(0); }
.faq-a {
  display: grid;
  grid-template-rows: 0fr;
  transition: grid-template-rows var(--cxy-duration-base) var(--cxy-ease-out);
}
.faq-a > p {
  overflow: hidden;
  margin: 0;
  padding: 0;
  font-size: var(--cxy-size-body);
  color: var(--cxy-text);
}
.faq-q[aria-expanded="true"] + .faq-a { grid-template-rows: 1fr; }
.faq-q[aria-expanded="true"] + .faq-a > p { padding-bottom: var(--cxy-space-5); }

/* ── 动效纪律：一次进入、最终静止；仅 transform + opacity ── */
.hero::before,
.hero::after,
.wy-hero::before,
.wy-hero::after,
.grad,
.phone,
.dot-live,
.ec-status i { animation: none !important; }
@keyframes v21-hero-in {
  from { opacity: 0; transform: translateY(16px); }
  to { opacity: 1; transform: none; }
}
.hero [data-hero] {
  animation: v21-hero-in var(--cxy-duration-slow) var(--cxy-ease-out) both;
  animation-delay: var(--hd, 0ms);
}

@media (prefers-reduced-motion: reduce) {
  .hero [data-hero] { animation: none !important; }
  .faq-a { transition: none; }
}

/* ── QR Modal（V16 回迁：移动端点按 [data-cta] 弹双码；桌面 hover 走 .nav-qr 浮层）── */
.qr-modal-scrim {
  position: fixed; inset: 0; z-index: var(--cxy-z-modal);
  background: var(--cxy-scrim); display: flex; align-items: center; justify-content: center;
  opacity: 0; visibility: hidden;
  transition: opacity var(--cxy-duration-slow) var(--cxy-ease-out),
              visibility var(--cxy-duration-slow) var(--cxy-ease-out);
  padding: var(--cxy-space-4);
}
.qr-modal-scrim.is-open { opacity: 1; visibility: visible; }
.qr-modal {
  width: min(460px, 100%); background: var(--cxy-surface-card);
  border-radius: var(--cxy-radius-2xl); box-shadow: var(--cxy-elevation-3);
  padding: var(--cxy-space-7) var(--cxy-space-7) var(--cxy-space-8);
  transform: translateY(12px) scale(.98);
  transition: transform var(--cxy-duration-slow) var(--cxy-ease-spring);
}
.qr-modal-scrim.is-open .qr-modal { transform: translateY(0) scale(1); }
.qr-modal-head { display: flex; align-items: flex-start; justify-content: space-between; gap: var(--cxy-space-3); margin-bottom: var(--cxy-space-6); }
.qr-modal-head h3 { font-family: var(--cxy-font-cn); font-weight: var(--cxy-weight-heavy); font-size: 24px; color: var(--cxy-ink); margin: 0 0 var(--cxy-space-2); line-height: 1.2; }
.qr-modal-head p { margin: 0; font-size: var(--cxy-size-sm); color: var(--cxy-muted); }
.qr-modal-close {
  width: 40px; height: 40px; flex: none; border: 0; background: transparent;
  color: var(--cxy-muted); font-size: 26px; line-height: 1;
  border-radius: var(--cxy-radius-sm);
}
.qr-modal-close:hover { background: var(--cxy-subtle); color: var(--cxy-ink-2); }
.qr-modal-close:focus-visible { box-shadow: var(--cxy-ring); }
.qr-modal-pair { display: grid; grid-template-columns: 1fr 1fr; gap: var(--cxy-space-5); }
.qr-modal-card {
  text-align: center;
  background: var(--cxy-subtle);
  border: 1px solid var(--cxy-border);
  border-radius: var(--cxy-radius-lg);
  padding: var(--cxy-space-6) var(--cxy-space-4);
  transition: border-color var(--cxy-duration-base) var(--cxy-ease-standard),
              box-shadow var(--cxy-duration-base) var(--cxy-ease-standard),
              background var(--cxy-duration-base) var(--cxy-ease-standard);
}
.qr-modal-card[aria-current="true"] {
  background: var(--cxy-surface-card);
  border-color: var(--cxy-blue);
  box-shadow: var(--cxy-elevation-1);
}
.qr-modal-card img { width: 140px; height: 140px; object-fit: contain; border-radius: var(--cxy-radius-md); margin: 0 auto; }
.qr-modal-card b { display: block; margin-top: var(--cxy-space-4); font-size: var(--cxy-size-base); color: var(--cxy-ink); font-weight: var(--cxy-weight-bold); }
.qr-modal-card span { display: block; margin-top: var(--cxy-space-1); font-size: var(--cxy-size-caption); color: var(--cxy-muted); }
