/*
 * site-base.css —— 站外静态页(features / showcase)共用的基础样式 (2026-09-03)
 *
 * 为什么抽出来: features 三份手写 HTML 与 showcase 构建脚本各自内联了一套底色/顶栏/按钮/chip,
 * 两边各改各的就慢慢长歪了(蓝紫渐变底 vs 纯黑底、琥珀 vs 金色、1200 vs 1440 宽)。
 * 这里只放「全站同形制」的五样东西: token · 顶栏 · 按钮 · chip/eyebrow/小标 · 页脚。
 * 页面各自的版式(hero / 管线网格 / 定价卡 / 墙)仍留在各页 <style> 里。
 *
 * 使用: features 三份 HTML 与 scripts/build-showcase.mjs 的 HEAD 各 <link rel="stylesheet" href="/site-base.css">。
 * ⚠️ 新增/删除 public/ 下文件会动 PW-0 的文件数, 改完记得 npm run snapshot:global-build。
 */

:root {
  --bg: #050505;  /* 与落地页 / 应用同号 (2026-09-16 Kenn: 对外站以落地页为准; 此前静态页是 #0a0a0a) */
  --card: #141416;
  --line: rgba(255, 255, 255, .08);
  --tx: #e7e7ea;
  --mut: #8b8b93;
  --gold: #E6C785;
  /* 正文字体 = 应用 index.html 的 Tailwind font-sans 同一条栈 (2026-09-16 Kenn「静态页以落地页为准」;
     此前静态页正文走 Google Fonts 的 Inter, 从落地页切过来字形会变; 顶栏 / 页脚早就是系统字) */
  --sans: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, 'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';
}

html { background: var(--bg); }
body {
  margin: 0;
  background: var(--bg);
  color: var(--tx);
  font-family: var(--sans);
  -webkit-font-smoothing: antialiased;
}
a { color: inherit; text-decoration: none; }

/* 英文排版 (2026-09-16, 换回系统字后扫的): 标题按行长均衡断行, 段落避免末行只剩一个词。
   浏览器不支持就忽略, 不影响布局; 中文段落不受影响 (没有词间空格可调)。 */
h1, h2, h3, h4 { text-wrap: balance; }
p, li { text-wrap: pretty; }
/* 宽屏在语义处断句 (一句一行), 窄屏收起来让它自然折行 —— 硬 <br> 在手机上会把半截短语单独挤成一行 */
.brk { display: none; }
@media (min-width: 768px) { .brk { display: block; } }
img, video { display: block; max-width: 100%; }

/* 滚动条与应用内 styles/globals.css 逐条一致 —— 全站同宽, 否则页面间跳转横向抖 */
::-webkit-scrollbar { width: 6px; height: 6px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb { background: rgba(128, 128, 128, .2); border-radius: 999px; }
::-webkit-scrollbar-thumb:hover { background: rgba(128, 128, 128, .4); }
* { scrollbar-width: thin; scrollbar-color: rgba(128, 128, 128, .2) transparent; }

/* 内容宽度: 全站 1440 */
.wrap { max-width: 1440px; margin: 0 auto; padding: 0 32px; }

/* ── 顶栏 (2026-09-14 与落地页同形制): 56px = 内容 55 + 1px 分隔线 · 左 = 字标 (logo + Framebreaker / STUDIO) · 中 = 导航居中 · 右 = 地球钮 + 登录 ──
 * 09-16 起正文也走同一条系统字栈 (:root --sans, 与落地页逐字同一条), 顶栏 / 页脚不再单独声明字体。
 * 字标 (2026-09-15) = components/common/BrandLockup.tsx 的纯 CSS 复刻, 字 14 与落地页顶栏同号; 数字全从组件推出来, 改组件要同改这里:
 *   全按 em (font-size 14px): 画布 2.9em · 盒子裁到图形边缘 (512 画布里图形只占 x 136~376 · y 77~410, u(n) = n/512 × 2.9em)
 *   · 图形右缘到字 1.1em · 文字块中线 = 图形中线。垂直用 flex baseline 钉: .brand-mark 壳底 = Framebreaker 基线位置 (画布 y 237.8),
 *   壳没有基线 ⇒ 按壳底合成; 文字块 margin-top -1em 让壳决定顶边。不按字体度量算 (各平台系统字体不同, 会差 1~2px)。
 *   图形左缘即盒子左缘, 贴 .nav 的 padding 线 = 登录钮右缘到屏边。 */
.nav {
  position: fixed; top: 0; left: 0; right: 0; z-index: 100;
  /* 56 含 1px 边线 ⇒ 内容 55。落地页 React 版原来是「内容 56 + 其下边线」共 57, 两边差 1px, 切页时字标跳半像素 (Kenn 09-16 看出来);
     09-16 二改: Kenn 定按这边的位置 (字标略高) 对齐 ⇒ 改的是落地页 (顶栏内 h-[55px]), 这里维持 56, 别再动成 57。 */
  box-sizing: border-box; height: 56px; padding: 0 24px;
  background: rgba(5, 5, 5, .8);
  backdrop-filter: blur(24px); -webkit-backdrop-filter: blur(24px);
  border-bottom: 1px solid rgba(255, 255, 255, .06);
  display: flex; align-items: center;
}
.nav a { text-decoration: none; }
.nav-brand { display: flex; align-items: baseline; flex: none; font-size: 14px; height: 1.88613em; }
.brand-mark { display: block; flex: none; width: 2.9em; height: 1.34700em; margin: -0.43613em 0.32969em 0 -0.77031em; }
.brand-mark img { display: block; width: 2.9em; height: 2.9em; max-width: none; transition: transform .2s; }
.nav-brand:hover .brand-mark img { transform: scale(1.05); }
.brand-text { display: flex; flex-direction: column; align-items: flex-end; }
.brand-text b { font-size: 14px; font-weight: 700; line-height: 1; letter-spacing: -.025em; color: rgba(255, 255, 255, .9); }
.nav-brand .brand-text { margin-top: -1em; }
.nav-brand .brand-text b { font-size: 1em; }
.nav-brand .brand-text small { margin: .22222em -.2em 0 0; font-size: .5em; font-weight: 700; line-height: 1.5; letter-spacing: .2em; text-transform: uppercase; color: #737373; }
.nav-links { position: absolute; left: 50%; transform: translateX(-50%); display: flex; align-items: center; gap: 28px; }
.nav-links a { font-size: 13px; color: #a3a3a3; transition: color .2s; }
.nav-links a:hover { color: #fff; }
.nav-actions { margin-left: auto; display: flex; align-items: center; gap: 8px; }
a.nav-lang, summary.nav-lang {
  position: relative; display: inline-flex; align-items: center; justify-content: center;
  width: 40px; height: 40px; border-radius: 100px;
  border: 1px solid rgba(255, 255, 255, .1); background: rgba(0, 0, 0, .4); color: rgba(255, 255, 255, .8);
  transition: color .2s, border-color .2s, background-color .2s;
}
a.nav-lang:hover, details[open] > summary.nav-lang, summary.nav-lang:hover { color: #fff; border-color: rgba(255, 255, 255, .3); background: rgba(0, 0, 0, .6); }
a.nav-lang svg, summary.nav-lang svg { width: 18px; height: 18px; }
/* 多语言阶段 5: 语言菜单 (无脚本 <details>; 选项 = config/languagePaths.json 全部语种, 各用本语言自称) */
details.nav-lang-menu { position: relative; }
details.nav-lang-menu > summary { list-style: none; cursor: pointer; }
details.nav-lang-menu > summary::-webkit-details-marker { display: none; }
.nav-lang-list {
  position: absolute; right: 0; top: calc(100% + 8px); z-index: 60; min-width: 168px; max-height: 70vh; overflow: auto;
  display: flex; flex-direction: column; padding: 6px; border-radius: 12px;
  border: 1px solid rgba(255, 255, 255, .1); background: #111111; box-shadow: 0 16px 40px rgba(0, 0, 0, .6);
}
.nav-lang-list a { padding: 8px 12px; border-radius: 8px; font-size: 13px; color: #a3a3a3; white-space: nowrap; }
.nav-lang-list a:hover { color: #fff; background: rgba(255, 255, 255, .06); }
.nav-lang-list a[aria-current="true"] { color: #E6C785; }
a.nav-cta {
  display: inline-flex; align-items: center; padding: 6px 16px; border-radius: 100px;
  border: 1px solid rgba(255, 255, 255, .1); background: rgba(255, 255, 255, .04);
  font-size: 13px; color: #d4d4d4; transition: color .2s, background-color .2s;
}
a.nav-cta:hover { color: #fff; background: rgba(255, 255, 255, .08); }
/* 顶栏是 fixed, 非全屏 hero 的页面用它让出高度 */
.navpad { height: 56px; }
@media (max-width: 767px) {
  .nav { padding: 0 16px; }
  .nav-links { display: none; }
}

/* ── 按钮: 主 = 白色药丸(与顶栏登录钮同源), 次 = 描边药丸 ── */
.btn {
  display: inline-block;
  background: #fff; color: #000;
  font-weight: 700; font-size: 15px;
  padding: 14px 36px; border-radius: 100px;
  box-shadow: 0 4px 20px rgba(255, 255, 255, .15);
  transition: transform .2s, box-shadow .2s, background-color .2s, color .2s;
}
.btn:hover { transform: scale(1.03); background-color: #f5f5f5; box-shadow: 0 0 20px rgba(255, 255, 255, .3); }
.btn:active { transform: scale(.98); }
.btn-ghost { background: transparent; color: #ddd; font-weight: 600; border: 1px solid rgba(255, 255, 255, .2); box-shadow: none; }
.btn-ghost:hover { background: rgba(255, 255, 255, .06); color: #fff; box-shadow: none; }

/* ── 小件: 章节 eyebrow / chip / NEW 小标 ── */
.eyebrow { font-size: 13px; letter-spacing: .18em; text-transform: uppercase; color: var(--mut); font-weight: 600; margin: 0 0 8px; }
.eyebrow b { color: var(--gold); font-weight: 600; }
.chip {
  font-size: 11px; letter-spacing: .1em; text-transform: uppercase;
  border: 1px solid var(--line); background: rgba(0, 0, 0, .35);
  padding: 5px 11px; border-radius: 99px; color: #cfcfd6; display: inline-block;
}
.chip.gold { color: var(--gold); border-color: rgba(230, 199, 133, .35); }
.tag-new {
  display: inline-block; margin-left: 6px; padding: 1px 6px;
  border-radius: 100px; font-size: 9px; font-weight: 700; letter-spacing: .08em; line-height: 1.5;
  vertical-align: middle; position: relative; top: -1px;
  color: var(--gold); background: rgba(230, 199, 133, .12); border: 1px solid rgba(230, 199, 133, .35);
}

/* ── 页脚 (2026-09-14 与落地页同形制): 一条带, 不分上下两区 · 左 = 字标 (口号代替 STUDIO) · 右 = 导航 | 法务一行 + 版权 ── */
/* 09-15 Kenn: 页脚整体加高 50%, 上下留白 40 → 60 (落地页 React 版同步 py-[60px]) */
.site-footer { padding: 60px 0; border-top: 1px solid rgba(255, 255, 255, .06); }
.site-footer-inner { display: flex; flex-direction: column; gap: 24px; }
/* 页脚字标 = 顶栏同一套几何 (BrandLockup 的 tagline 变体), 只有副行不同: 11/14 em 常规 · 行高 1 · 上间距 4px · 左对齐。
   壳高 = Framebreaker 基线位置 (画布 y 210.7, 两行基线距比 STUDIO 版大 ⇒ 壳更矮) */
.foot-brand { display: flex; align-items: baseline; flex: none; font-size: 14px; height: 1.88613em; }
.foot-brand .brand-mark { height: 1.19324em; }
.foot-brand .brand-text { align-items: flex-start; margin-top: -1em; }
.foot-brand .brand-text b { font-size: 1em; }
.foot-brand .brand-text small { margin-top: .36364em; font-size: .78571em; font-weight: 400; line-height: 1; letter-spacing: 0; text-transform: none; color: #737373; }
.foot-right { display: flex; flex-direction: column; gap: 12px; }
.foot-links { display: flex; flex-wrap: wrap; align-items: center; column-gap: 20px; row-gap: 8px; font-size: 13px; }
.foot-links a { color: #a3a3a3; transition: color .2s; }
.foot-links a:hover { color: #fff; }
.foot-links a.legal { color: #737373; }
.foot-links a.legal:hover { color: #d4d4d4; }
.foot-sep { width: 1px; height: 12px; background: rgba(255, 255, 255, .1); }
.foot-rights { font-size: 12px; color: #525252; }
@media (max-width: 639px) { .foot-sep { display: none; } }
@media (min-width: 1024px) {
  .site-footer-inner { flex-direction: row; align-items: center; justify-content: space-between; }
  .foot-right { align-items: flex-end; }
}

/* ── FAQ (features 页; 落地页的 React 版同一形制) ── */
.faq { max-width: 820px; margin: 0 auto; border-top: 1px solid var(--line); text-align: left; }
.faq details { border-bottom: 1px solid var(--line); padding: 18px 0; }
.faq summary { cursor: pointer; list-style: none; display: flex; justify-content: space-between; align-items: center; gap: 16px; font-size: 16px; font-weight: 600; color: #f0f0f2; }
.faq summary::-webkit-details-marker { display: none; }
.faq summary::after { content: '+'; color: var(--mut); font-weight: 400; font-size: 18px; flex: none; }
.faq details[open] summary::after { content: '–'; }
.faq p { margin: 12px 32px 0 0; color: var(--mut); font-size: 14px; line-height: 1.75; }
