/* ============================================================
   landing.css —— 公开页面共用样式：落地页四页（首页 / 功能 / 数据安全 / 常见问题）、
   登录页（login.html）、隐私 / 条款 / 联系我们三页。
   颜色、字体、按钮形状与 app 一致（UI_SPEC Part F、Part 0）；公开页是阅读型页面，
   正文按阅读密度取 16px，手机（≤ 699px）各档再放大一级。全站最小 12px。
   字体走自托管 css/fonts.css；首图为静态截图 <img>（CSP frame-ancestors 'none' 禁 iframe 真 app）。
   ============================================================ */

:root {
  /* 颜色：与 css/style.css 的 app token 同值 */
  --bg: #FFFFFF;
  --tint: #F3F4F6;          /* = --bg-warm */
  --card: #FFFFFF;
  --card-2: #F7F8FA;
  --line: #E5E7EB;          /* = --border-1 */
  --line-strong: #D1D5DB;   /* = --border-2 */
  --ink: #111827;           /* = --text-1 */
  --ink-2: #4B5563;         /* = --text-2 */
  --ink-3: #6B7280;         /* = --text-3（小字也须够深，不用 #9CA3AF） */
  --ink-mute: #9CA3AF;      /* = --text-mute，仅用于分隔点等非文字 */
  --accent: #2B57D4;
  --accent-deep: #1E41A8;
  --accent-soft: #E9EDF8;   /* = --accent-lt */
  --accent-soft-line: #DCE3F4;
  --fill-2: rgba(118, 118, 128, 0.12);       /* 次按钮 / 分段轨道底（同 app） */
  --fill-2-hover: rgba(118, 118, 128, 0.2);
  --ok: #3C8B5A;
  --ok-bg: #EAF5EE;
  --danger: #D44156;
  --danger-bg: #FAEAEA;
  --warn-deep: #8A4715;
  --warn-bg: #FEF6E4;
  /* 市场编码色（品牌标志） */
  --m-us: #2B57D4;
  --m-cn: #D9483B;
  --m-hk: #149A80;
  --m-of: #8A93A5;
  --m-cr: #E78A3B;
  /* 产品截图外壳 */
  --app-bg: #F3F4F6;
  --app-card: #FFFFFF;
  --app-line: #E5E7EB;
  --app-tint: #F5F6F7;

  /* 圆角：卡片 16（同 app 卡片），大面板 24，表单字段与小框 8；可点控件为胶囊 */
  --r: 16px;
  --r-sm: 8px;
  --r-lg: 24px;

  --shadow: 0 1px 2px rgba(12, 20, 34, .05), 0 12px 30px -20px rgba(12, 20, 34, .20);
  --shadow-window: 0 1px 3px rgba(12, 20, 34, .06), 0 24px 56px -30px rgba(12, 20, 34, .30);
  --shadow-card: 0 1px 2px rgba(12, 20, 34, .05);

  /* 字体：与 app 同一套（正文 Inter + 思源黑体，数字 IBM Plex Mono） */
  --font-body: "Inter", "Noto Sans SC", "PingFang SC", "Helvetica Neue", -apple-system, system-ui, sans-serif;
  --font-num: "IBM Plex Mono", "SF Mono", ui-monospace, monospace;
  --sans: var(--font-body);

  /* 字号阶梯（电脑 / iPad）。手机在文件末尾整体上调一级。 */
  --fs-meta: 13px;     /* 脚注、标签、徽标 */
  --fs-small: 14px;    /* 卡片正文、链接、导航 */
  --fs-body: 16px;     /* 页面正文 */
  --fs-lead: 17px;     /* 首屏 / 页头导语 */
  --fs-h4: 16px;       /* 卡片标题 */
  --fs-h3: 20px;       /* 面板标题 */
  --fs-h2: 32px;       /* 区块标题 */
  --fs-h1: 44px;       /* 页面主标题 */

  /* 控件高度（Part F.3）：电脑 36，触控 44；首屏大按钮 48 */
  --ctl-h: 36px;
  --ctl-h-lg: 48px;

  --gutter: 32px;
}

* { margin: 0; padding: 0; box-sizing: border-box; }
html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; }
body { background: var(--bg); color: var(--ink); font-family: var(--font-body); font-size: var(--fs-body); line-height: 1.7; text-wrap: pretty; }
a { color: inherit; }
h1, h2, h3, h4, h5 { text-wrap: balance; }
.container { max-width: 1280px; margin: 0 auto; padding: 0 var(--gutter); }
.num { font-family: var(--font-num); font-variant-numeric: tabular-nums; letter-spacing: -.01em; }
.nowrap { white-space: nowrap; }

/* ---- 顶栏 ---- */
.nav { position: sticky; top: 0; z-index: 50; background: color-mix(in srgb, var(--bg) 88%, transparent); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); border-bottom: 1px solid var(--line); }
.nav-inner { display: flex; align-items: center; gap: 32px; height: 64px; }
.brand { display: flex; align-items: center; gap: 10px; text-decoration: none; font-weight: 700; }
.brand-mark { display: inline-flex; }
.brand-name { font-size: 17px; letter-spacing: -.01em; white-space: nowrap; }
.nav-links { display: flex; gap: 24px; margin-left: 8px; }
.nav-links a { font-size: 15px; font-weight: 500; color: var(--ink-2); text-decoration: none; white-space: nowrap; }
.nav-links a:hover, .nav-links a.on { color: var(--ink); }
.nav-cta { margin-left: auto; display: flex; gap: 8px; }
/* 桌面用横排 .nav-links；窄屏改用独立的原生 <details class="nav-menu"> 菜单。
   两套 DOM 互不干扰——避免把链接塞进 <details> 后被 UA 的 ::details-content（关闭时 content-visibility:hidden）吞掉。 */
.nav-menu { display: none; }
summary.nav-toggle { list-style: none; cursor: pointer; }
summary.nav-toggle::-webkit-details-marker { display: none; }

/* ---- 按钮（Part F.4 / F.5）：胶囊；主按钮强调色实色，次按钮浅灰填充无描边 ---- */
.btn { display: inline-flex; align-items: center; justify-content: center; gap: 8px; min-height: var(--ctl-h); padding: 0 18px; font-family: var(--sans); font-size: var(--fs-small); font-weight: 600; line-height: 1.2; white-space: nowrap; text-decoration: none; border: none; cursor: pointer; border-radius: 999px; transition: background .15s; }
.btn-primary { background: var(--accent); color: #fff; }
.btn-primary:hover { background: var(--accent-deep); }
.btn-ghost { background: var(--fill-2); color: var(--ink); }
.btn-ghost:hover { background: var(--fill-2-hover); }
.btn-sm { min-height: var(--ctl-h); padding: 0 16px; font-size: var(--fs-small); }
.btn-lg { min-height: var(--ctl-h-lg); padding: 0 26px; font-size: var(--fs-body); }
.text-link { font-size: var(--fs-small); font-weight: 600; color: var(--accent); text-decoration: none; }
.text-link:hover { color: var(--accent-deep); }
.btn:focus-visible, .text-link:focus-visible, .nav a:focus-visible, summary.nav-toggle:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }

/* ---- 首屏 ---- */
.hero { padding-block: 72px 88px; }
.hero-split { display: grid; grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.1fr); gap: 56px; align-items: center; }
h1 { font-size: var(--fs-h1); line-height: 1.25; font-weight: 700; letter-spacing: -.02em; }
h1 .hl { color: var(--accent); display: block; }
.hero-sub { font-size: var(--fs-lead); color: var(--ink-2); margin: 20px 0 28px; max-width: 480px; }
.hero-actions { display: flex; flex-wrap: wrap; gap: 12px; align-items: center; }
.hero-note { margin-top: 20px; font-size: var(--fs-small); color: var(--ink-3); max-width: 480px; }
.hero-note .text-link { white-space: nowrap; }

/* 首图：产品截图放进浏览器窗口外壳。截图为当前界面 + 示例数据，手机换用手机宽度截的图。 */
.win { border-radius: var(--r); overflow: hidden; box-shadow: var(--shadow-window); border: 1px solid var(--app-line); background: var(--app-bg); }
.win-bar { display: flex; align-items: center; gap: 7px; padding: 10px 14px; background: var(--app-card); border-bottom: 1px solid var(--app-line); }
.win-bar .d { width: 10px; height: 10px; border-radius: 50%; background: var(--line-strong); }
.win-bar .url { margin-left: 10px; font-size: 12px; color: var(--ink-3); font-family: var(--font-num); background: var(--app-tint); border-radius: 999px; padding: 2px 12px; }
.win-shot { position: relative; overflow: hidden; background: var(--app-bg); }
.win-shot img { display: block; width: 100%; height: auto; }
.win-caption { margin-top: 12px; font-size: var(--fs-meta); color: var(--ink-3); text-align: center; }

/* ---- 区块 ---- */
.section { padding-block: 88px; }
.section.tint { background: var(--tint); }
.section-head { max-width: 680px; margin-bottom: 40px; }
.section-head.center { margin-left: auto; margin-right: auto; text-align: center; }
.kicker { font-size: var(--fs-meta); font-weight: 700; letter-spacing: .08em; color: var(--accent); display: block; margin-bottom: 12px; }
h2 { font-size: var(--fs-h2); line-height: 1.3; font-weight: 700; letter-spacing: -.015em; }
.section-sub { font-size: var(--fs-body); color: var(--ink-2); margin-top: 12px; }

/* ---- 首页：能做什么 ---- */
.infra-band { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 16px; }
.infra-card { background: var(--card-2); border: 1px solid var(--line); border-radius: var(--r); padding: 24px; }
.infra-ico { width: 40px; height: 40px; border-radius: 12px; background: var(--accent-soft); color: var(--accent); display: flex; align-items: center; justify-content: center; margin-bottom: 16px; }
.infra-ico svg { width: 20px; height: 20px; }
.infra-card h3 { font-size: var(--fs-h4); font-weight: 700; line-height: 1.4; }
.infra-card p { font-size: var(--fs-small); line-height: 1.7; color: var(--ink-2); margin-top: 6px; }
.home-more { display: inline-block; margin-top: 24px; }

/* ---- 首页：数据安全简介 ---- */
.sec-teaser { background: var(--card-2); border: 1px solid var(--line); border-radius: var(--r-lg); padding: 40px; display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 32px; align-items: center; }
.sec-teaser h2 { font-size: 26px; }
.sec-teaser .facts { display: flex; flex-direction: column; gap: 8px; margin-top: 16px; }
.sec-teaser .facts span { display: inline-flex; align-items: flex-start; gap: 10px; font-size: var(--fs-body); color: var(--ink-2); }
.sec-teaser .facts svg { width: 18px; height: 18px; color: var(--accent); flex-shrink: 0; margin-top: .35em; }

/* ---- 首页：适合谁用 ---- */
.fit-block h2 { font-size: var(--fs-h2); }
.fit-list { list-style: none; margin-top: 24px; display: flex; flex-direction: column; gap: 12px; max-width: 640px; }
.fit-list li { position: relative; padding-left: 22px; font-size: var(--fs-body); line-height: 1.7; color: var(--ink); }
.fit-list li::before { content: ""; position: absolute; left: 2px; top: .72em; width: 7px; height: 7px; border-radius: 50%; background: var(--accent); }
.fit-note { font-size: var(--fs-small); line-height: 1.8; color: var(--ink-3); margin-top: 24px; max-width: 640px; }

/* ---- 行动区 ---- */
.cta-card { background: var(--accent-soft); border-radius: var(--r-lg); text-align: center; padding: 64px 40px; }
.cta-card h2 { color: var(--accent-deep); }
.cta-card p { font-size: var(--fs-lead); color: var(--ink-2); margin: 12px auto 28px; max-width: 560px; }
.cta-card .hero-actions { justify-content: center; }
.cta-card .btn-ghost { background: var(--card); }
.cta-card .btn-ghost:hover { background: #fff; color: var(--accent-deep); }
.cta-note { font-size: var(--fs-meta); color: var(--ink-3); margin-top: 20px; }

/* ---- 页脚 ---- */
.footer { border-top: 1px solid var(--line); padding: 48px 0 32px; }
.footer-top { display: flex; justify-content: space-between; gap: 40px; flex-wrap: wrap; }
.footer-tag { font-size: var(--fs-small); color: var(--ink-2); margin-top: 12px; max-width: 320px; }
.footer-cols { display: flex; gap: 64px; flex-wrap: wrap; }
.footer-col h5 { font-size: var(--fs-meta); font-weight: 600; color: var(--ink-3); margin-bottom: 12px; }
.footer-col a { display: block; font-size: var(--fs-small); color: var(--ink-2); text-decoration: none; margin-bottom: 8px; }
.footer-col a:hover { color: var(--ink); }
.footer-bottom { display: flex; justify-content: space-between; gap: 8px 16px; flex-wrap: wrap; font-size: var(--fs-meta); color: var(--ink-3); border-top: 1px solid var(--line); margin-top: 32px; padding-top: 20px; }
.footer-bottom a { color: var(--ink-2); text-decoration: none; }
.footer-bottom a:hover { color: var(--ink); }

/* ---- 功能页 ---- */
.page-head { padding-block: 72px 8px; }
.page-head h1 { font-size: 40px; }
.page-head .lede { font-size: var(--fs-lead); color: var(--ink-2); margin-top: 16px; max-width: 600px; }
.feat-group { padding-block: 56px; }
.feat-group + .feat-group { border-top: 1px solid var(--line); }
.feat-group.container { display: grid; grid-template-columns: 264px minmax(0, 1fr); column-gap: 56px; align-items: start; }
.feat-side { position: static; }
.feat-main { min-width: 0; }
.feat-group-head { display: flex; flex-direction: column; gap: 8px; margin-bottom: 8px; }
.feat-group-head .kicker { margin-bottom: 0; }
.feat-group-head h2 { font-size: 26px; }
.feat-group-sub { font-size: var(--fs-small); color: var(--ink-2); margin-bottom: 0; max-width: 240px; }
.feat-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
.feat-card { background: var(--card); border: 1px solid var(--line); border-radius: var(--r); padding: 24px; box-shadow: 0 1px 2px rgba(12, 20, 34, .04), 0 8px 20px -16px rgba(12, 20, 34, .14); }
.feat-card.soon { background: var(--card); border-style: dashed; border-color: var(--line-strong); box-shadow: none; }
.feat-ico { width: 40px; height: 40px; border-radius: 12px; background: var(--accent-soft); color: var(--accent); display: flex; align-items: center; justify-content: center; margin-bottom: 16px; }
.feat-ico svg { width: 20px; height: 20px; }
.feat-card h3 { font-size: var(--fs-h4); font-weight: 700; line-height: 1.4; display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.feat-card p { font-size: var(--fs-small); line-height: 1.7; color: var(--ink-2); margin-top: 6px; }
.badge { font-size: 12px; font-weight: 600; line-height: 1.6; border-radius: 999px; padding: 1px 10px; white-space: nowrap; }
.badge-soon { background: var(--fill-2); color: var(--ink-2); }
.b-pills { display: flex; gap: 6px; flex-wrap: wrap; margin-top: 16px; }
.b-pills span { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; font-weight: 600; color: var(--ink-2); background: var(--card); border: 1px solid var(--line); border-radius: 999px; padding: 2px 10px; }
.b-pills i { width: 7px; height: 7px; border-radius: 50%; }

/* 功能页：列表 / 卡片双视图。分段切换外观同 app（灰轨道 + 白滑块，Part F.4） */
.view-toggle { display: inline-flex; background: var(--fill-2); border-radius: 999px; padding: 4px; gap: 2px; margin-top: 24px; }
.vt-btn { font-family: var(--sans); font-size: var(--fs-small); font-weight: 600; color: var(--ink-2); border: none; background: transparent; min-height: 28px; padding: 0 18px; border-radius: 999px; cursor: pointer; transition: color .15s; }
body.view-list .vt-btn[data-view="list"], body.view-cards .vt-btn[data-view="cards"] { background: var(--card); color: var(--ink); box-shadow: 0 1px 3px rgba(12, 20, 34, .14); }
.flist { display: none; border-top: 1px solid var(--line); }
.frow { display: grid; grid-template-columns: 220px minmax(0, 1fr); gap: 20px; align-items: baseline; padding: 16px 4px; border-bottom: 1px solid var(--line); }
.frow h4 .badge { margin-left: 8px; vertical-align: middle; }
.frow h4 { font-size: var(--fs-h4); font-weight: 700; }
.frow p { font-size: var(--fs-small); color: var(--ink-2); line-height: 1.7; }
body.view-list .feat-grid { display: none; }
body.view-list .flist { display: block; }

/* ---- 数据安全页 ---- */
.security-flow-section { padding-top: 48px; }
.security-flow-panel { background: var(--card-2); border: 1px solid var(--line); border-radius: var(--r-lg); padding: 40px; }
.security-flow-head { max-width: 640px; margin-bottom: 24px; }
.security-flow-head .kicker { margin-bottom: 8px; }
.security-flow-head h2 { font-size: 26px; }
.security-flow-head p { font-size: var(--fs-body); line-height: 1.75; color: var(--ink-2); margin-top: 8px; }
.flow { display: grid; grid-template-columns: 1fr auto 1fr auto 1fr; gap: 16px; align-items: stretch; margin: 0; }
.flow-node { background: var(--card); border: 1px solid var(--line); border-radius: var(--r); padding: 24px; text-align: center; box-shadow: var(--shadow-card); }
.flow-ico { width: 44px; height: 44px; border-radius: 50%; background: var(--accent-soft); color: var(--accent); display: inline-flex; align-items: center; justify-content: center; margin-bottom: 12px; }
.flow-ico svg { width: 22px; height: 22px; }
.flow-node h3 { font-size: var(--fs-h4); font-weight: 700; }
.flow-node p { font-size: var(--fs-small); line-height: 1.7; color: var(--ink-2); margin-top: 6px; }
.flow-node .code, .claim-card .code { display: inline-block; font-size: 12px; color: var(--ink-3); background: var(--tint); border-radius: 999px; padding: 2px 10px; margin-top: 12px; letter-spacing: .02em; }
.flow-arrow { display: flex; align-items: center; color: var(--accent); opacity: .55; }
.flow-arrow svg { width: 26px; height: 26px; }
.security-visibility { padding-bottom: 72px; }
.visibility-board { display: grid; grid-template-columns: minmax(0, 1fr) 72px minmax(0, 1fr); align-items: stretch; gap: 0; background: var(--card); border: 1px solid var(--line); border-radius: var(--r-lg); overflow: hidden; }
.visibility-column { padding: 32px; }
.visibility-title span { display: block; font-size: var(--fs-meta); font-weight: 700; letter-spacing: .04em; color: var(--accent); margin-bottom: 8px; }
.visibility-title strong { display: block; font-size: var(--fs-h3); letter-spacing: -.01em; color: var(--ink); }
.visibility-tags { list-style: none; display: flex; flex-wrap: wrap; gap: 8px; margin-top: 20px; }
.visibility-tags li { font-size: var(--fs-meta); color: var(--ink-2); background: var(--tint); border-radius: 999px; padding: 4px 12px; }
.visibility-column p { font-size: var(--fs-small); line-height: 1.75; color: var(--ink-2); margin-top: 20px; max-width: 520px; }
.visibility-board.is-triple { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.visibility-board.is-triple .visibility-column + .visibility-column { border-left: 1px solid var(--line); }
/* 三步流程（首页「怎么导入」与数据安全页共用） */
.control-timeline { list-style: none; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0; counter-reset: control; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.control-timeline li { position: relative; padding: 32px 32px 32px 0; }
.control-timeline li + li { padding-left: 32px; border-left: 1px solid var(--line); }
.control-timeline .step-no { display: inline-flex; align-items: center; justify-content: center; width: 40px; height: 40px; border-radius: 50%; background: var(--accent-soft); color: var(--accent); font-size: var(--fs-meta); font-weight: 700; letter-spacing: .02em; margin-bottom: 16px; }
.control-timeline h3 { font-size: 18px; font-weight: 700; }
.control-timeline p { font-size: var(--fs-small); line-height: 1.75; color: var(--ink-2); margin-top: 8px; }
.pledge-line { display: grid; grid-template-columns: 44px minmax(0, 1fr) auto; gap: 20px; align-items: center; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); padding: 24px 0; }
.pledge-ico { width: 44px; height: 44px; border-radius: 50%; background: var(--accent-soft); color: var(--accent); display: flex; align-items: center; justify-content: center; flex-shrink: 0; }
.pledge-ico svg { width: 22px; height: 22px; }
.pledge-line h4 { font-size: 18px; font-weight: 700; }
.pledge-line p { font-size: var(--fs-small); line-height: 1.7; color: var(--ink-2); margin-top: 6px; }
.pledge-meta { display: flex; gap: 8px; flex-wrap: wrap; justify-content: flex-end; max-width: 260px; }
.pledge-meta span { font-size: var(--fs-meta); font-weight: 600; color: var(--accent-deep); background: var(--accent-soft); border-radius: 999px; padding: 4px 12px; white-space: nowrap; }
/* 机制卡 / 边界卡 */
.claim-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
.claim-grid.cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.flow + .claim-grid { margin-top: 24px; padding-top: 24px; border-top: 1px solid var(--line); }
.claim-card { background: var(--card); border: 1px solid var(--line); border-radius: var(--r); padding: 24px; box-shadow: var(--shadow-card); }
.claim-card h3 { font-size: var(--fs-h4); font-weight: 700; color: var(--ink); }
.claim-card p { font-size: var(--fs-small); line-height: 1.7; color: var(--ink-2); margin-top: 8px; }

/* ---- 常见问题 ---- */
.faq { max-width: 720px; }
.faq-page { padding-top: 40px; }
.faq-wide { max-width: 860px; }
.faq-item { background: var(--card-2); border: 1px solid var(--line); border-radius: var(--r); margin-bottom: 12px; overflow: hidden; }
.faq-q { width: 100%; min-height: 56px; display: flex; align-items: center; justify-content: space-between; gap: 16px; background: none; border: none; font-family: var(--sans); font-size: var(--fs-body); font-weight: 600; line-height: 1.5; color: var(--ink); text-align: left; padding: 16px 24px; cursor: pointer; }
.faq-q .ic { font-size: 20px; color: var(--ink-3); transition: transform .2s; flex-shrink: 0; }
.faq-item.open .faq-q .ic { transform: rotate(45deg); }
.faq-a { max-height: 0; overflow: hidden; transition: max-height .3s ease; }
.faq-a-inner { font-size: var(--fs-small); line-height: 1.8; color: var(--ink-2); padding: 0 24px 20px; max-width: 660px; }

/* ---- 文档页：隐私政策 / 服务条款 / 联系我们 ---- */
.doc { max-width: 760px; margin: 0 auto; padding: 56px var(--gutter) 72px; }
.doc h1 { font-size: 36px; line-height: 1.3; }
.doc .muted { color: var(--ink-3); font-size: var(--fs-small); margin-top: 8px; }
.doc h2 { font-size: var(--fs-h3); line-height: 1.4; margin: 40px 0 12px; letter-spacing: -.01em; }
.doc h1 + .muted + p, .doc h1 + p { margin-top: 24px; }
.doc p, .doc li { font-size: var(--fs-body); line-height: 1.8; color: var(--ink-2); }
.doc p + p { margin-top: 12px; }
.doc ul, .doc ol { padding-left: 22px; margin: 12px 0; display: flex; flex-direction: column; gap: 8px; }
.doc strong { color: var(--ink); font-weight: 600; }
.doc a { color: var(--accent); text-decoration: none; }
.doc a:hover { text-decoration: underline; }
.doc .support-mail { display: inline-flex; align-items: center; min-height: var(--ctl-h-lg); padding: 0 24px; border-radius: 999px; background: var(--accent); color: #fff; font-weight: 600; margin: 8px 0; text-decoration: none; }
.doc .support-mail:hover { background: var(--accent-deep); text-decoration: none; }
.doc-nav { margin-top: 48px; padding-top: 20px; border-top: 1px solid var(--line); display: flex; gap: 8px 20px; flex-wrap: wrap; font-size: var(--fs-small); }

/* ---- 账号页（login.html）：登录、注册、验证邮件、恢复码、用恢复码重置密码 ---- */
body.auth-page { background: var(--tint); min-height: 100vh; min-height: 100dvh; display: flex; flex-direction: column; }
.auth-top { display: flex; align-items: center; justify-content: space-between; gap: 16px; height: 64px; padding: 0 var(--gutter); }
.auth-top .text-link { white-space: nowrap; }
.auth-main { flex: 1; display: flex; align-items: flex-start; justify-content: center; padding: 48px 16px 64px; }
#auth-root { width: 100%; max-width: 420px; }
.auth-card { background: var(--card); border-radius: var(--r-lg); box-shadow: 0 1px 2px rgba(12, 20, 34, .04), 0 16px 40px -28px rgba(12, 20, 34, .25); padding: 32px; }
.auth-title { font-size: 26px; line-height: 1.3; font-weight: 700; margin: 0 0 20px; letter-spacing: -.01em; }
.auth-hint { font-size: var(--fs-small); color: var(--ink-2); margin: 0 0 16px; line-height: 1.7; }
.auth-hint strong { color: var(--ink); font-weight: 600; }

/* 进度条 */
.auth-progress { display: flex; align-items: center; gap: 8px; margin: 4px 0 24px; }
.auth-step { display: flex; align-items: center; gap: 8px; flex-direction: column; flex: 1; min-width: 0; }
.auth-step__dot { width: 28px; height: 28px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; font-size: var(--fs-meta); font-weight: 600; background: var(--fill-2); color: var(--ink-3); transition: background .15s ease, color .15s ease; }
.auth-step__label { font-size: var(--fs-meta); color: var(--ink-3); line-height: 1.3; text-align: center; white-space: nowrap; }
.auth-step.is-current .auth-step__dot, .auth-step.is-done .auth-step__dot { background: var(--accent); color: #fff; }
.auth-step.is-current .auth-step__label { color: var(--ink); font-weight: 600; }
.auth-step.is-done .auth-step__label { color: var(--ink-2); }
.auth-step-sep { flex: 0 0 24px; height: 1px; background: var(--line-strong); margin-bottom: 22px; }

/* 表单（Part F.4：表单字段为圆角矩形，电脑 36、触控 44；输入文字 16px 防 iOS 聚焦放大） */
.auth-form { display: flex; flex-direction: column; gap: 16px; }
.auth-field { display: flex; flex-direction: column; gap: 6px; }
.auth-field__label { font-size: var(--fs-small); color: var(--ink-2); font-weight: 500; }
.auth-field input { appearance: none; -webkit-appearance: none; width: 100%; min-height: 44px; font-family: inherit; font-size: 16px; color: var(--ink); padding: 0 12px; border: 1px solid var(--line-strong); border-radius: var(--r-sm); background: var(--card); outline: none; transition: border-color .15s ease, box-shadow .15s ease; line-height: 1.4; }
.auth-field input:focus { border-color: var(--accent); box-shadow: 0 0 0 3px rgba(43, 87, 212, .15); }
.auth-field__note { margin: 0; font-size: var(--fs-meta); line-height: 1.6; color: var(--ink-3); }
/* 密码框 + 显示 / 隐藏：框内右侧文字按钮，悬停出胶囊底（同 app 文字按钮） */
.auth-pw { position: relative; display: flex; }
.auth-pw input { flex: 1; min-width: 0; padding-right: 72px; }
.auth-pw__toggle { position: absolute; right: 6px; top: 50%; transform: translateY(-50%); appearance: none; border: 0; background: transparent; cursor: pointer; font-family: inherit; font-size: var(--fs-small); font-weight: 600; color: var(--accent); min-height: 32px; padding: 0 12px; border-radius: 999px; }
.auth-pw__toggle:hover { background: var(--fill-2); }
.auth-pw__toggle:focus-visible { outline: 2px solid var(--accent); outline-offset: 0; }
.auth-consent { margin: 0; font-size: var(--fs-meta); line-height: 1.6; color: var(--ink-3); text-align: center; }
.auth-consent a { color: var(--ink-2); }
.auth-resend-status:empty { display: none; }
.auth-field--readonly .auth-field__readonly { min-height: 44px; display: flex; align-items: center; padding: 0 12px; border-radius: var(--r-sm); background: var(--tint); font-size: 16px; color: var(--ink); overflow-wrap: anywhere; }

/* 按钮：主操作占满卡片宽度（表单唯一主操作），胶囊，高 44 */
.auth-btn { appearance: none; -webkit-appearance: none; min-height: 44px; font-family: inherit; font-size: var(--fs-body); font-weight: 600; padding: 0 20px; border-radius: 999px; border: 0; cursor: pointer; transition: background .15s ease, opacity .15s ease; }
.auth-btn--primary { background: var(--accent); color: #fff; }
.auth-btn--primary:hover:not(:disabled) { background: var(--accent-deep); }
.auth-btn--primary:disabled { background: var(--ink-mute); cursor: not-allowed; }
.auth-btn--ghost { background: var(--fill-2); color: var(--ink); }
.auth-btn--ghost:hover { background: var(--fill-2-hover); }
.auth-btn:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }

/* 提示条：无描边浅色底（同 app 的提示框） */
.auth-error, .auth-warn, .auth-notice { padding: 12px 14px; border-radius: var(--r-sm); font-size: var(--fs-small); line-height: 1.6; margin-bottom: 16px; }
.auth-error { background: var(--danger-bg); color: #8F1F33; }
.auth-warn { background: var(--warn-bg); color: var(--warn-deep); }
.auth-notice { background: var(--accent-soft); color: var(--accent-deep); }

/* 恢复码 */
.auth-recovery { display: flex; align-items: center; gap: 8px; background: var(--tint); border-radius: var(--r-sm); padding: 12px 14px; margin: 12px 0; }
.auth-recovery__code { flex: 1; font-family: var(--font-num); font-size: 16px; letter-spacing: .04em; color: var(--ink); word-break: break-all; }
.auth-check { display: flex; align-items: flex-start; gap: 10px; font-size: var(--fs-small); line-height: 1.6; color: var(--ink); margin: 16px 0 20px; }
.auth-check input[type="checkbox"] { width: 18px; height: 18px; margin-top: .2em; accent-color: var(--accent); flex-shrink: 0; }

/* 卡片底部的切换链接：每个一行、居中，不靠「·」分隔挤在一行里折行 */
.auth-links { margin-top: 20px; display: flex; flex-direction: column; align-items: center; gap: 4px; font-size: var(--fs-small); color: var(--ink-2); text-align: center; }
.auth-links a { color: var(--accent); text-decoration: none; display: inline-flex; align-items: center; min-height: 32px; padding: 0 8px; border-radius: 999px; }
.auth-links a:hover { background: var(--fill-2); }
.auth-links__sep { display: none; }
.auth-legal-links { margin-top: 20px; padding-top: 16px; border-top: 1px solid var(--line); display: flex; justify-content: center; flex-wrap: wrap; gap: 4px 8px; font-size: var(--fs-meta); color: var(--ink-mute); }
.auth-legal-links a { display: inline-flex; align-items: center; min-height: 24px; color: var(--ink-3); text-decoration: none; }
.auth-legal-links a:hover { color: var(--accent); text-decoration: underline; }

/* 成功页 */
.auth-success { text-align: center; padding: 20px 0; }
.auth-success__icon { width: 56px; height: 56px; border-radius: 50%; background: var(--ok-bg); color: var(--ok); display: inline-flex; align-items: center; justify-content: center; font-size: 28px; font-weight: 600; margin-bottom: 12px; }
.auth-success__text { margin: 0; font-size: var(--fs-body); color: var(--ink); }

/* 首屏加载 */
.auth-loading { text-align: center; padding: 40px 0; font-size: var(--fs-small); color: var(--ink-3); }

/* ============================================================
   响应式。档位同 app（Part F.1）：手机 ≤ 699，平板与窄窗 700–1023，宽屏 ≥ 1024。
   ============================================================ */

@media (max-width: 1023px) {
  .feat-group.container { grid-template-columns: 1fr; row-gap: 24px; }
  .feat-group-sub { max-width: 620px; }
  .hero { padding-block: 56px 72px; }
  .hero-split { grid-template-columns: 1fr; gap: 40px; }
  .hero-sub, .hero-note { max-width: 600px; }
  .infra-band { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .feat-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .sec-teaser { grid-template-columns: 1fr; justify-items: start; }
  .flow { grid-template-columns: 1fr; align-items: center; }
  .flow-node { width: 100%; }
  .flow-arrow { width: 26px; height: 26px; justify-self: center; justify-content: center; transform: rotate(90deg); }
  .visibility-board, .visibility-board.is-triple { grid-template-columns: 1fr; }
  .visibility-board.is-triple .visibility-column + .visibility-column { border-left: 0; border-top: 1px solid var(--line); }
  .claim-grid, .claim-grid.cols-3 { grid-template-columns: 1fr; }
  .visibility-column { padding: 24px; }
  .control-timeline { grid-template-columns: 1fr; }
  .control-timeline li { padding: 24px 0; }
  .control-timeline li + li { padding-left: 0; border-left: 0; border-top: 1px solid var(--line); }
  .pledge-line { grid-template-columns: 44px minmax(0, 1fr); }
  .pledge-meta { grid-column: 1 / -1; justify-content: flex-start; max-width: none; padding-left: 64px; }
  :root { --fs-h1: 38px; }
  /* 顶栏：横排链接收进右侧菜单 */
  .nav-inner { gap: 12px; }
  .nav-links { display: none; }
  .nav-menu { display: block; position: relative; order: 3; }
  .nav-cta { order: 2; }
  summary.nav-toggle { display: inline-flex; align-items: center; justify-content: center; width: 44px; height: 44px; border-radius: 50%; color: var(--ink); }
  summary.nav-toggle:hover, .nav-menu[open] summary.nav-toggle { background: var(--fill-2); }
  .nav-menu[open] .nav-menu-links {
    display: flex; flex-direction: column; gap: 2px;
    position: absolute; top: calc(100% + 10px); right: 0; min-width: 200px;
    background: var(--card); border: 1px solid var(--line); border-radius: 12px;
    padding: 8px; box-shadow: var(--shadow); z-index: 60;
  }
  .nav-menu-links a { display: flex; align-items: center; min-height: 44px; padding: 0 14px; border-radius: 8px; font-size: var(--fs-body); color: var(--ink-2); text-decoration: none; white-space: nowrap; }
  .nav-menu-links a:hover, .nav-menu-links a.on { background: var(--tint); color: var(--ink); }
  /* 顶栏只留「开始使用」主按钮，「登录」收进菜单 */
  .nav-cta .btn-ghost { display: none; }
  .nav-menu-links .nav-login-m { margin-top: 4px; border-top: 1px solid var(--line); border-radius: 0 0 8px 8px; }
}

/* 手指操作：可点控件至少 44 高（Part F.3） */
@media (pointer: coarse) {
  :root { --ctl-h: 44px; }
  .vt-btn { min-height: 32px; }
  /* 不足 44 的链接与小按钮：透明伪元素向四周补足点击区，不改变可见尺寸 */
  :is(.brand, .text-link, .nav-links a, .doc-nav a, .footer-bottom a, .auth-links a, .auth-legal-links a, .vt-btn) { position: relative; }
  :is(.brand, .text-link, .nav-links a, .doc-nav a, .footer-bottom a, .auth-links a, .auth-legal-links a, .vt-btn)::after,
  .auth-pw__toggle::before {
    content: ""; position: absolute;
    top: min(0px, calc(50% - 22px)); bottom: min(0px, calc(50% - 22px));
    left: min(0px, calc(50% - 22px)); right: min(0px, calc(50% - 22px));
  }
  .footer-col a { display: flex; align-items: center; min-height: 44px; margin-bottom: 0; }
  .auth-links { gap: 0; }
  .auth-links a { min-height: 44px; }
}

/* 手机：阅读密度，字号整体上调一级；左右边距 16 */
@media (max-width: 699px) {
  :root {
    --fs-meta: 13px;
    --fs-small: 15px;
    --fs-body: 16px;
    --fs-lead: 17px;
    --fs-h4: 17px;
    --fs-h3: 20px;
    --fs-h2: 26px;
    --fs-h1: 32px;
    --gutter: 16px;
  }
  .hero { padding-block: 32px 56px; }
  .hero-actions .btn-lg { flex: 1 1 0; min-width: 0; padding: 0 16px; }
  .section { padding-block: 56px; }
  .section-head { margin-bottom: 28px; }
  .infra-band { grid-template-columns: 1fr; gap: 12px; }
  .infra-card { padding: 20px; display: grid; grid-template-columns: 40px minmax(0, 1fr); column-gap: 16px; }
  .infra-card .infra-ico { margin-bottom: 0; grid-row: span 2; }
  .infra-card p { margin-top: 4px; }
  .feat-grid { grid-template-columns: 1fr; gap: 12px; }
  .feat-card { padding: 20px; }
  .frow { grid-template-columns: 1fr; gap: 4px; }
  .page-head { padding-block: 40px 8px; }
  .page-head h1 { font-size: 30px; }
  .feat-group { padding-block: 40px; }
  .feat-group-head h2, .security-flow-head h2, .sec-teaser h2 { font-size: 22px; }
  .sec-teaser { padding: 24px 20px; gap: 20px; }
  .security-flow-panel { padding: 24px 16px; border-radius: var(--r); }
  .visibility-board { border-radius: var(--r); }
  .visibility-column { padding: 20px; }
  .cta-card { padding: 40px 20px; border-radius: var(--r); }
  .footer-cols { gap: 40px; }
  .doc { padding: 32px var(--gutter) 56px; }
  .doc h1 { font-size: 28px; }
  .doc h2 { margin-top: 32px; }
  .auth-top { height: 56px; }
  .auth-main { padding: 16px 16px 40px; }
  .auth-card { padding: 24px 20px; border-radius: var(--r); }
  .auth-title { font-size: 24px; }
  .faq-q { padding: 14px 18px; }
  .faq-a-inner { padding: 0 18px 18px; }
}
