/* ============================================================
   映丞周易平台 · 站点样式（site.css）
   ------------------------------------------------------------
   依赖：brand-tokens.css（先加载，提供变量与组件基元）
   原则：
   ① 不写死色值/字号，一律引用令牌；
   ② 全自适应优先用 grid auto-fit / clamp() 解决，
      只在「布局形态需要切换」处写媒体查询；
   ③ 跨浏览器：flex/grid 均为广泛支持特性；
      iOS 100vh 问题用 dvh + vh 双写；安全区用 env()。
   ============================================================ */

/* ---------- 基础重置 ---------- */
*, *::before, *::after { box-sizing: border-box; }
/* hidden 属性兜底：显式 display 不得压过 hidden（2026-10-24 登录页实测踩坑） */
[hidden] { display: none !important; }
html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; }
body {
  margin: 0;
  font: 400 var(--fs-15)/1.7 var(--font-sans);
  color: var(--ink);
  background: var(--paper);
  -webkit-font-smoothing: antialiased;
}
img, svg { display: block; max-width: 100%; }
a { color: inherit; text-decoration: none; }
h1, h2, h3, h4 { margin: 0; font-weight: 700; line-height: 1.3; }
p { margin: 0; }
ul, ol { margin: 0; padding: 0; list-style: none; }
button { font: inherit; }

/* 布局容器：随视口收放，宽屏不无限拉伸 */
.wrap { width: 100%; max-width: 1200px; margin: 0 auto; padding: 0 clamp(16px, 4vw, 32px); }

/* ---------- 组件基元扩展（在 brand-tokens 的基础上补修饰符）---------- */
a.yc-btn { display: inline-flex; align-items: center; justify-content: center; }
.yc-btn { transition: background .15s, color .15s, border-color .15s; white-space: nowrap; }
.yc-btn.lg { padding: 13px 28px; font-size: var(--fs-16); border-radius: var(--r-md); }
/* 深底上的按钮：宣纸底 + 靛青字 */
.yc-btn.paper { color: var(--brand-indigo); background: var(--paper); border-color: var(--paper); }
.yc-btn.paper:hover { background: #fff; border-color: #fff; }
.yc-btn[disabled] { opacity: .5; cursor: not-allowed; }

/* ---------- 顶栏 ---------- */
.topbar {
  position: sticky; top: 0; z-index: 50;
  background: var(--brand-indigo); color: var(--paper);
  box-shadow: 0 1px 0 rgba(255, 255, 255, .08);
}
.tb-inner { display: flex; align-items: center; gap: var(--sp-5); height: 64px; }
.brand { flex: 0 0 auto; display: block; }
.brand img { width: 168px; height: auto; }
.tb-nav { display: flex; gap: var(--sp-5); margin-left: var(--sp-4); font-size: var(--fs-14); }
.tb-nav a { color: rgba(247, 244, 238, .82); padding: 6px 2px; border-bottom: 2px solid transparent; }
.tb-nav a:hover { color: var(--paper); border-bottom-color: var(--brand-bronze); }
.tb-act { display: flex; gap: var(--sp-2); margin-left: auto; }
/* 登录态导航（会话感知）：未登录=登录+进入工作台；已登录=昵称+进入工作台+退出 */
.tb-act [data-session-nav] { display: inline-flex; gap: var(--sp-2); align-items: center; }
.tb-user { font-size: var(--fs-13); color: rgba(247, 244, 238, .85); white-space: nowrap; }
/* 深底上的 ghost 按钮要反色 */
.topbar .yc-btn.ghost { color: rgba(247, 244, 238, .9); border-color: rgba(247, 244, 238, .45); }
.topbar .yc-btn.ghost:hover { background: rgba(247, 244, 238, .12); }

/* 汉堡（仅窄屏显示）*/
.tb-burger {
  display: none; margin-left: auto; width: 40px; height: 40px;
  background: transparent; border: 0; cursor: pointer; padding: 9px;
}
.tb-burger span { display: block; height: 2px; background: var(--paper); border-radius: 2px; transition: transform .2s, opacity .2s; }
.tb-burger span + span { margin-top: 5px; }
.tb-burger.is-open span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.tb-burger.is-open span:nth-child(2) { opacity: 0; }
.tb-burger.is-open span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }
.tb-drop { background: var(--brand-indigo-deep); padding: var(--sp-2) 0 var(--sp-3); }
.tb-drop a { display: block; color: rgba(247, 244, 238, .9); padding: 11px clamp(16px, 4vw, 32px); font-size: var(--fs-15); }
.tb-drop a:active { background: rgba(255, 255, 255, .08); }

/* ---------- Hero ---------- */
/* 100vh 在 iOS Safari 会被地址栏吃掉，dvh 优先、vh 兜底 */
.hero {
  background:
    radial-gradient(1200px 420px at 50% -10%, #fff 0%, rgba(255, 255, 255, 0) 70%),
    var(--paper);
  padding: clamp(48px, 9vw, 104px) 0 clamp(40px, 7vw, 80px);
  text-align: center;
}
.hero-eyebrow {
  font: 600 var(--fs-13)/1 var(--font-num); letter-spacing: .18em;
  color: var(--brand-bronze); text-transform: uppercase; margin-bottom: var(--sp-4);
}
.hero-title {
  font-family: var(--font-brand);
  font-size: clamp(30px, 6.2vw, 56px);
  color: var(--brand-indigo); letter-spacing: .03em; line-height: 1.22;
}
.hero-title .dot { color: var(--brand-cinnabar); margin: 0 .35em; }
.hero-sub {
  max-width: 640px; margin: var(--sp-4) auto 0;
  font-size: clamp(var(--fs-15), 2.2vw, var(--fs-18)); color: var(--ink-2); line-height: 1.8;
}
.hero-cta { display: flex; flex-wrap: wrap; gap: var(--sp-3); justify-content: center; margin-top: var(--sp-6); }
.hero-note {
  max-width: 620px; margin: var(--sp-5) auto 0;
  font-size: var(--fs-12); color: var(--ink-3); line-height: 1.7;
}

/* ---------- 通用区块 ---------- */
.sec { padding: clamp(48px, 8vw, 88px) 0; }
.sec-alt { background: var(--surface-2); border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.sec-title {
  font-family: var(--font-serif); font-size: clamp(22px, 3.4vw, 32px);
  color: var(--brand-indigo); text-align: center;
}
.sec-sub { text-align: center; color: var(--ink-3); margin-top: var(--sp-2); font-size: var(--fs-14); }

/* 三栏卡：auto-fit 自适应，窄屏自动堆叠 */
.grid-3 {
  display: grid; gap: var(--sp-4);
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 288px), 1fr));
  margin-top: var(--sp-6);
}
.yc-card { position: relative; display: flex; flex-direction: column; }
.yc-card h3 { font-family: var(--font-serif); font-size: var(--fs-18); color: var(--brand-indigo); margin-top: var(--sp-3); }
.yc-card p { margin-top: var(--sp-2); color: var(--ink-2); font-size: var(--fs-14); line-height: 1.8; }
.card-tag { align-self: flex-start; }
.tag-free  { font: 600 var(--fs-12)/1 var(--font-sans); color: var(--brand-indigo);  background: var(--brand-indigo-soft);  padding: 5px 10px; border-radius: var(--r-full); }
.tag-paid  { font: 600 var(--fs-12)/1 var(--font-sans); color: var(--brand-cinnabar); background: var(--brand-cinnabar-soft); padding: 5px 10px; border-radius: var(--r-full); }
.tag-learn { font: 600 var(--fs-12)/1 var(--font-sans); color: var(--brand-bronze);   background: var(--brand-bronze-soft);   padding: 5px 10px; border-radius: var(--r-full); }

/* ---------- 流程四步 ---------- */
.steps {
  display: grid; gap: var(--sp-4); margin-top: var(--sp-6);
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 240px), 1fr));
  counter-reset: step;
}
.steps li { position: relative; padding: var(--sp-5); background: var(--surface); border: 1px solid var(--line); border-radius: var(--r-lg); }
.st-num {
  width: 32px; height: 32px; border-radius: var(--r-full);
  background: var(--brand-indigo); color: #fff;
  display: flex; align-items: center; justify-content: center;
  font: 700 var(--fs-15)/1 var(--font-num); margin-bottom: var(--sp-3);
}
.steps h3 { font-family: var(--font-serif); font-size: var(--fs-16); color: var(--ink); }
.steps p { margin-top: var(--sp-2); font-size: var(--fs-13); color: var(--ink-2); line-height: 1.75; }

/* ---------- 师傅卡 ---------- */
.master {
  display: grid; gap: clamp(var(--sp-4), 5vw, var(--sp-6));
  grid-template-columns: auto 1fr; align-items: center;
  background: var(--surface); border: 1px solid var(--line);
  border-radius: var(--r-lg); box-shadow: var(--shadow-2);
  padding: clamp(var(--sp-5), 5vw, 40px);
}
.master-av {
  width: clamp(84px, 16vw, 128px); aspect-ratio: 1; border-radius: var(--r-full);
  background: linear-gradient(160deg, var(--brand-indigo) 0%, var(--brand-indigo-deep) 100%);
  color: var(--paper); font-family: var(--font-brand); font-size: clamp(32px, 6vw, 48px);
  display: flex; align-items: center; justify-content: center;
}
.master-eyebrow { font: 600 var(--fs-13)/1 var(--font-sans); letter-spacing: .14em; color: var(--brand-bronze); }
.master-body h2 { font-family: var(--font-serif); font-size: clamp(20px, 3vw, 28px); color: var(--brand-indigo); margin-top: var(--sp-2); }
.master-meta { color: var(--ink-3); font-size: var(--fs-13); margin-top: var(--sp-2); }
.master-desc { color: var(--ink-2); font-size: var(--fs-14); line-height: 1.85; margin: var(--sp-3) 0 var(--sp-5); max-width: 60ch; }

/* ---------- 底部 CTA ---------- */
.cta-band { background: var(--brand-indigo); color: var(--paper); padding: clamp(40px, 7vw, 72px) 0; }
.cta-inner { text-align: center; }
.cta-inner h2 { font-family: var(--font-brand); font-size: clamp(22px, 4vw, 34px); line-height: 1.4; }

/* ---------- 页脚 ---------- */
.footer { background: var(--brand-indigo-deep); color: rgba(247, 244, 238, .8); padding-top: clamp(36px, 6vw, 60px); }
.ft-inner {
  display: grid; gap: clamp(var(--sp-5), 6vw, 56px);
  grid-template-columns: minmax(200px, 1fr) 2fr;
  padding-bottom: var(--sp-6);
}
.ft-logo { width: 200px; height: auto; }
.ft-slogan { margin-top: var(--sp-3); font-family: var(--font-brand); font-size: var(--fs-15); color: var(--paper); }
.ft-cols { display: grid; gap: var(--sp-5); grid-template-columns: repeat(auto-fit, minmax(min(100%, 130px), 1fr)); }
.ft-col h4 { font-size: var(--fs-13); color: var(--paper); letter-spacing: .08em; margin-bottom: var(--sp-3); }
.ft-col a { display: block; font-size: var(--fs-13); padding: 5px 0; color: rgba(247, 244, 238, .72); }
.ft-col a:hover { color: var(--paper); }
.ft-txt { font-size: var(--fs-13); padding: 5px 0; color: rgba(247, 244, 238, .72); }
.ft-bar { border-top: 1px solid rgba(247, 244, 238, .14); padding: var(--sp-4) 0; }
.ft-bar-inner { display: flex; flex-wrap: wrap; gap: var(--sp-2) var(--sp-5); align-items: baseline; }
.ft-icp { font-size: var(--fs-12); color: rgba(247, 244, 238, .66); }
.ft-icp a { border-bottom: 1px solid rgba(247, 244, 238, .3); }
.ft-dis { font-size: var(--fs-12); color: rgba(247, 244, 238, .5); flex: 1 1 320px; line-height: 1.7; }

/* ---------- 响应式：布局形态切换 ---------- */
/* 平板及以下：顶栏收起导航、出汉堡 */
@media (max-width: 860px) {
  .tb-nav, .tb-act { display: none; }
  .tb-burger { display: block; }
  .master { grid-template-columns: 1fr; justify-items: center; text-align: center; }
  .master-desc { margin-left: auto; margin-right: auto; }
}
/* 手机：页脚单列、Hero 按钮撑满 */
@media (max-width: 560px) {
  .ft-inner { grid-template-columns: 1fr; }
  .hero-cta { flex-direction: column; align-items: stretch; }
  .hero-cta .yc-btn { width: 100%; }
  .brand img { width: 140px; }
}

/* ---------- iOS 安全区（刘海屏/底部横条）---------- */
@supports (padding: env(safe-area-inset-bottom)) {
  .topbar { padding-left: env(safe-area-inset-left); padding-right: env(safe-area-inset-right); }
  .footer { padding-bottom: env(safe-area-inset-bottom); }
}

/* ---------- 深色模式预留（后续接入，先留骨架不改视觉）---------- */
@media (prefers-color-scheme: dark) {
  /* 待 P02 工作台完成后统一接入；当前落地页保持宣纸底（品牌规范：对外页不做深色） */
}

/* ---------- 无障碍：尊重「减少动效」---------- */
@media (prefers-reduced-motion: reduce) {
  * { transition: none !important; animation: none !important; }
}

/* ---------- 打印：对外页保留页脚备案与免责 ---------- */
@media print {
  .topbar, .tb-drop, .cta-band, .hero-cta { display: none !important; }
  body { background: #fff; }
}

/* ============================================================
   环境横幅（js/core.js envBanner 自动插入）
   ------------------------------------------------------------
   用途：把「当前是演示态 / 非 HTTPS / 本地文件打开」摆在最显眼处。
   上线后 demo=false 且部署在 https 域名下，横幅自然不出现。
   ============================================================ */
.env-banner {
  position: relative; z-index: 60;
  padding: 8px var(--sp-4, 16px);
  font-size: var(--fs-12, 12px); line-height: 1.6;
  text-align: center;
}
.env-banner-item { display: block; }
.env-banner-item.is-warn {
  background: var(--warn-soft, #FDF6E9);
  color: var(--warn, #B26A00);
  border-bottom: 1px solid rgba(178, 106, 0, .18);
}
.env-banner-item.is-err {
  background: #FDECEC; color: var(--brand-cinnabar, #A8321E);
  border-bottom: 1px solid rgba(168, 50, 30, .2);
}

/* ============================================================
   协议公告条（js/legal.js renderNotice 自动插入）
   ------------------------------------------------------------
   用途：协议版本更新后，站内各页面顶部显眼提示，
        关闭只隐藏本次 —— 未确认新版本前每次进入都会再提示。
   ============================================================ */
.legal-notice {
  position: relative; z-index: 60;
  display: flex; align-items: flex-start; gap: var(--sp-3);
  padding: var(--sp-3) clamp(16px, 4vw, 32px);
  background: var(--warn-soft, #FDF6E9);
  border-bottom: 1px solid rgba(178, 106, 0, .2);
}
.legal-notice-body {
  flex: 1; min-width: 0;
  /* 标题与正文在左、按钮在右 —— 原本按钮另起一行，横幅要占三行、挤压每页首屏 */
  display: grid; grid-template-columns: minmax(0, 1fr) auto;
  grid-template-areas: "title acts" "body acts";
  column-gap: var(--sp-5); align-items: start;
}
.legal-notice-body b { grid-area: title; display: block; font-size: var(--fs-14); color: var(--warn, #B26A00); }
.legal-notice-body p { grid-area: body; font-size: var(--fs-13); color: var(--ink-2); line-height: 1.7; margin-top: 3px; }
.legal-notice-acts { grid-area: acts; display: flex; flex-direction: column; gap: var(--sp-2); margin-top: 0; align-self: center; }
@media (max-width: 700px) {
  .legal-notice-body { grid-template-columns: minmax(0, 1fr); grid-template-areas: "title" "body" "acts"; }
  .legal-notice-acts { flex-direction: row; flex-wrap: wrap; margin-top: var(--sp-2); }
}
.legal-notice-x {
  flex: 0 0 auto; width: 26px; height: 26px; border-radius: 50%;
  border: 1px solid var(--line-strong); background: var(--surface);
  color: var(--ink-3); font-size: 16px; line-height: 1; cursor: pointer;
}
.legal-notice-x:hover { color: var(--ink); border-color: var(--ink-3); }

/* 登录页协议版本后缀 */
.agree-ver { color: var(--ink-3); }

/* 页脚版权声明（批次⑧） */
.ft-copy { font-size: var(--fs-12); color: rgba(247, 244, 238, .55); margin-top: 6px; line-height: 1.7; }

/* ============================================================
   太极八卦图 + 八卦方位表（首页与易学文化页共用）
   ============================================================ */
.tb-cols { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.05fr); gap: var(--sp-6); align-items: start; }
.tb-figure { background: var(--surface-2); border: 1px solid var(--line); border-radius: var(--r-lg); padding: var(--sp-4); text-align: center; }
.tb-figure img { width: 100%; max-width: 460px; height: auto; display: block; margin: 0 auto; }
.tb-figure figcaption { margin-top: var(--sp-3); font-size: var(--fs-13); color: var(--ink-3); line-height: 1.8; }
.tb-table { width: 100%; border-collapse: collapse; font-size: var(--fs-14); }
.tb-table th, .tb-table td { border: 1px solid var(--line); padding: 8px 10px; text-align: left; }
.tb-table thead th { background: var(--surface-2); color: var(--ink); font-weight: 500; }
.tb-table tbody tr:nth-child(even) td { background: #fbfcfe; }
.tb-table td.n { text-align: center; font-size: var(--fs-16); }
.tb-yao { display: inline-block; width: 46px; vertical-align: middle; }
.tb-yao i { display: block; height: 4px; background: var(--brand-bronze); border-radius: 2px; margin: 3px 0; }
/* 阴爻：整行一个 i，用伪元素画左右两段（总宽与阳爻一致，居中留缝） */
.tb-yao i.spl { background: none; position: relative; }
.tb-yao i.spl::before, .tb-yao i.spl::after { content: ''; position: absolute; top: 0; width: 18px; height: 4px; background: var(--brand-bronze); border-radius: 2px; }
.tb-yao i.spl::before { left: 0; }
.tb-yao i.spl::after { right: 0; }
.tb-two { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: var(--sp-4); }
.tb-def { background: var(--surface-2); border-left: 3px solid var(--brand-bronze); border-radius: 0 var(--r-md) var(--r-md) 0; padding: var(--sp-4); }
.tb-def h3 { font-size: var(--fs-18); margin-bottom: var(--sp-2); }
.tb-def p { color: var(--ink-2); line-height: 1.9; }
.tb-tag { display: inline-block; font-size: var(--fs-12); color: var(--brand-indigo); background: var(--brand-indigo-soft); border-radius: 20px; padding: 2px 10px; margin-bottom: var(--sp-2); }
.tb-note { font-size: var(--fs-13); color: var(--ink-3); line-height: 1.9; }
@media (max-width: 860px) { .tb-cols { grid-template-columns: 1fr; } }

/* 页脚版本显示（版本号由构建注入，构建产物见 assets/version.js） */
.ft-ver { font-size: var(--fs-12); color: rgba(247, 244, 238, .42); margin-top: 4px; letter-spacing: .02em; }

/* ============================================================
   文化随笔（essay.html / essay-0N.html）
   ============================================================ */
.essay-main { padding: var(--sp-7) 0 var(--sp-8); }
.essay-crumb { font-size: var(--fs-13); color: var(--ink-3); margin-bottom: var(--sp-5); }
.essay-crumb a { color: var(--ink-3); }
.essay-crumb a:hover { color: var(--brand-indigo); }
.essay-crumb span { margin: 0 6px; opacity: .5; }

.essay-head { max-width: 760px; margin-bottom: var(--sp-6); }
.essay-list-title { font-family: var(--font-serif); font-size: var(--fs-28); color: var(--brand-indigo); margin-bottom: var(--sp-3); }
.essay-title { font-family: var(--font-serif); font-size: var(--fs-28); color: var(--brand-indigo); line-height: 1.35; margin-bottom: var(--sp-2); }
.essay-sub { font-size: var(--fs-16); color: var(--ink-2); margin-bottom: var(--sp-3); }
.essay-lead { font-size: var(--fs-15); color: var(--ink-2); line-height: 1.9; margin-bottom: var(--sp-5); }
.essay-kicker { font: 600 var(--fs-12)/1 var(--font-num); letter-spacing: .1em; color: var(--brand-bronze); margin-bottom: var(--sp-3); }

/* 正文排版 */
.essay-body { max-width: 760px; }
.essay-content { font-size: var(--fs-15); line-height: 2.05; color: var(--ink-2); }
.essay-content h2 { font-family: var(--font-serif); font-size: var(--fs-22); color: var(--ink); margin: var(--sp-7) 0 var(--sp-3); padding-left: 12px; border-left: 3px solid var(--brand-bronze); }
.essay-content h3 { font-size: var(--fs-16); color: var(--brand-indigo); margin: var(--sp-5) 0 var(--sp-2); }
.essay-content p { margin: 0 0 var(--sp-4); }
.essay-content strong { color: var(--ink); font-weight: 600; }
.essay-content ul, .essay-content ol { margin: 0 0 var(--sp-4); padding-left: 1.4em; }
.essay-content li { margin-bottom: var(--sp-2); }
.essay-content blockquote {
  margin: var(--sp-4) 0; padding: var(--sp-3) var(--sp-4);
  background: var(--surface-2); border-left: 3px solid var(--brand-indigo);
  border-radius: 0 var(--r-md) var(--r-md) 0;
  color: var(--ink); font-size: var(--fs-15); line-height: 1.95;
}
.essay-content code { font-family: var(--font-num); font-size: .92em; background: var(--surface-2); padding: 1px 5px; border-radius: 4px; }
.essay-content hr { border: 0; border-top: 1px solid var(--line); margin: var(--sp-6) 0; }

/* 列表页卡片 */
.essay-grid { display: grid; gap: var(--sp-4); grid-template-columns: repeat(auto-fit, minmax(min(100%, 420px), 1fr)); }
.essay-card {
  background: var(--surface); border: 1px solid var(--line); border-radius: var(--r-lg);
  padding: var(--sp-5); transition: border-color .15s, transform .15s, box-shadow .15s;
}
.essay-card:hover { border-color: var(--brand-bronze); transform: translateY(-2px); box-shadow: 0 6px 20px rgba(27, 59, 111, .08); }
.essay-card a { display: block; color: inherit; }
.essay-card-kicker { font: 600 var(--fs-12)/1 var(--font-num); letter-spacing: .08em; color: var(--brand-bronze); margin-bottom: var(--sp-3); }
.essay-card h3 { font-family: var(--font-serif); font-size: var(--fs-18); color: var(--brand-indigo); margin-bottom: var(--sp-2); }
.essay-card-sub { font-size: var(--fs-13); color: var(--ink-3); margin-bottom: var(--sp-3); }
.essay-card-sum { font-size: var(--fs-14); color: var(--ink-2); line-height: 1.85; margin-bottom: var(--sp-3); }
.essay-card-more { font-size: var(--fs-13); color: var(--brand-indigo); font-weight: 600; }
.essay-note { margin-top: var(--sp-6); font-size: var(--fs-13); color: var(--ink-3); line-height: 1.85; }

/* 上下篇 */
.essay-nav { display: grid; grid-template-columns: 1fr 1fr; gap: var(--sp-4); margin: var(--sp-7) 0 var(--sp-4); padding-top: var(--sp-5); border-top: 1px solid var(--line); }
.essay-nav-item { display: block; padding: var(--sp-3) var(--sp-4); border: 1px solid var(--line); border-radius: var(--r-md); text-decoration: none; }
.essay-nav-item:hover { border-color: var(--brand-bronze); background: var(--surface-2); }
.essay-nav-item span { display: block; font-size: var(--fs-12); color: var(--ink-3); margin-bottom: 4px; }
.essay-nav-item b { font-size: var(--fs-14); color: var(--brand-indigo); font-weight: 600; }
.essay-nav-item.next { text-align: right; }
.essay-back { font-size: var(--fs-13); }
.essay-back a { color: var(--brand-indigo); }

@media (max-width: 700px) {
  .essay-nav { grid-template-columns: 1fr; }
  .essay-nav-item.next { text-align: left; }
  .essay-content { font-size: var(--fs-14); line-height: 1.95; }
  .essay-content h2 { font-size: var(--fs-18); }
}

/* 视觉隐藏但对读屏与搜索引擎可见（无障碍 + SEO 用） */
.sr-only {
  position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}

/* FAQ（常见问题）—— 问答结构，利于搜索引擎与 AI 直接引用 */
.faq-list { display: grid; gap: var(--sp-3); max-width: 860px; }
.faq-item { background: var(--surface); border: 1px solid var(--line); border-radius: var(--r-md); padding: var(--sp-4) var(--sp-5); }
.faq-item[open] { border-color: var(--brand-bronze); }
.faq-item summary {
  cursor: pointer; font-size: var(--fs-15); font-weight: 600; color: var(--brand-indigo);
  list-style: none; display: flex; align-items: flex-start; gap: 10px; line-height: 1.6;
}
.faq-item summary::-webkit-details-marker { display: none; }
.faq-item summary::before { content: '＋'; color: var(--brand-bronze); font-weight: 700; flex: 0 0 auto; }
.faq-item[open] summary::before { content: '－'; }
.faq-item p { margin-top: var(--sp-3); font-size: var(--fs-14); color: var(--ink-2); line-height: 1.95; }

/* 每日一言（独立成块，置于今日卡之前） */
.cal-quote-sec { margin-bottom: var(--sp-5); }
.cal-quote-sec .cal-quote { margin: 0; }
