/* Finance CTO Assistant — v4
   主题：签字蓝。财务负责人用蓝墨水签字确认数字。纸面：白纸、账页细线、扭索纹（钞票与支票上的安全纹样），都只到「看得出、不抢戏」的程度。
   Paper #FFFFFF / Haze #EEF1F7 / Ink #111522 / Slate #5B6274 / Signature #2341D3 / Midnight #0F1B4D / Wash #AEB8E8 */

:root {
  --paper: #ffffff;
  --haze: #eef1f7;
  --tint: #f7f8fc;
  --ink: #111522;
  --ink-2: #2b3040;
  --slate: #5b6274;
  --mute: #6b7284;
  --sig: #2341d3;
  --sig-deep: #1a33b0;
  --night: #0f1b4d;
  --wash: #aeb8e8;
  --glow: #8fa2ff;
  --rule: #e2e6ef;
  --bar: #d3d9e8;

  --serif: "Newsreader", "Noto Serif SC", "Songti SC", "STSong", Georgia, serif;
  --num: "Newsreader", "Noto Serif SC", "Songti SC", Georgia, serif;
  --sans: "Hanken Grotesk", "Noto Sans SC", "PingFang SC", "Microsoft YaHei", system-ui, sans-serif;

  --wrap: 1240px;
  --pad: clamp(20px, 5vw, 64px);
  --sec: clamp(104px, 15vh, 184px);
  --ease: cubic-bezier(.2, .7, .1, 1);
  --band: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='240' height='22'%3E%3Cpath d='M0,11.0 L3,13.8 L6,16.2 L9,17.9 L12,18.8 L15,18.8 L18,18.0 L21,16.5 L24,14.6 L27,12.7 L30,11.0 L33,9.7 L36,8.8 L39,8.5 L42,8.6 L45,8.9 L48,9.4 L51,9.9 L54,10.4 L57,10.7 L60,11.0 L63,11.3 L66,11.6 L69,12.1 L72,12.6 L75,13.1 L78,13.4 L81,13.5 L84,13.2 L87,12.3 L90,11.0 L93,9.3 L96,7.4 L99,5.5 L102,4.0 L105,3.2 L108,3.2 L111,4.1 L114,5.8 L117,8.2 L120,11.0 L123,13.8 L126,16.2 L129,17.9 L132,18.8 L135,18.8 L138,18.0 L141,16.5 L144,14.6 L147,12.7 L150,11.0 L153,9.7 L156,8.8 L159,8.5 L162,8.6 L165,8.9 L168,9.4 L171,9.9 L174,10.4 L177,10.7 L180,11.0 L183,11.3 L186,11.6 L189,12.1 L192,12.6 L195,13.1 L198,13.4 L201,13.5 L204,13.2 L207,12.3 L210,11.0 L213,9.3 L216,7.4 L219,5.5 L222,4.0 L225,3.2 L228,3.2 L231,4.1 L234,5.8 L237,8.2 L240,11.0 M0,18.0 L3,19.4 L6,19.8 L9,19.3 L12,17.9 L15,15.9 L18,13.6 L21,11.3 L24,9.4 L27,7.9 L30,7.1 L33,7.0 L36,7.3 L39,8.0 L42,8.9 L45,9.7 L48,10.4 L51,10.9 L54,11.3 L57,11.5 L60,11.7 L63,11.9 L66,12.1 L69,12.3 L72,12.4 L75,12.3 L78,11.9 L81,11.1 L84,10.0 L87,8.6 L90,7.1 L93,5.8 L96,4.8 L99,4.5 L102,4.9 L105,6.1 L108,8.1 L111,10.6 L114,13.3 L117,15.9 L120,18.0 L123,19.4 L126,19.8 L129,19.3 L132,17.9 L135,15.9 L138,13.6 L141,11.3 L144,9.4 L147,7.9 L150,7.1 L153,7.0 L156,7.3 L159,8.0 L162,8.9 L165,9.7 L168,10.4 L171,10.9 L174,11.3 L177,11.5 L180,11.7 L183,11.9 L186,12.1 L189,12.3 L192,12.4 L195,12.3 L198,11.9 L201,11.1 L204,10.0 L207,8.6 L210,7.1 L213,5.8 L216,4.8 L219,4.5 L222,4.9 L225,6.1 L228,8.1 L231,10.6 L234,13.3 L237,15.9 L240,18.0 M0,19.8 L3,18.7 L6,16.8 L9,14.4 L12,11.7 L15,9.3 L18,7.2 L21,5.9 L24,5.3 L27,5.4 L30,6.2 L33,7.3 L36,8.6 L39,9.8 L42,10.8 L45,11.5 L48,11.9 L51,12.0 L54,12.0 L57,11.9 L60,11.9 L63,11.8 L66,11.7 L69,11.5 L72,11.2 L75,10.5 L78,9.7 L81,8.7 L84,7.6 L87,6.7 L90,6.2 L93,6.2 L96,6.9 L99,8.3 L102,10.3 L105,12.7 L108,15.2 L111,17.4 L114,19.1 L117,19.9 L120,19.8 L123,18.7 L126,16.8 L129,14.4 L132,11.7 L135,9.3 L138,7.2 L141,5.9 L144,5.3 L147,5.4 L150,6.2 L153,7.3 L156,8.6 L159,9.8 L162,10.8 L165,11.5 L168,11.9 L171,12.0 L174,12.0 L177,11.9 L180,11.9 L183,11.8 L186,11.7 L189,11.5 L192,11.2 L195,10.5 L198,9.7 L201,8.7 L204,7.6 L207,6.7 L210,6.2 L213,6.2 L216,6.9 L219,8.3 L222,10.3 L225,12.7 L228,15.2 L231,17.4 L234,19.1 L237,19.9 L240,19.8 M0,14.9 L3,12.2 L6,9.4 L9,6.9 L12,5.1 L15,4.0 L18,3.7 L21,4.3 L24,5.5 L27,7.1 L30,8.9 L33,10.4 L36,11.7 L39,12.5 L42,12.9 L45,12.9 L48,12.7 L51,12.3 L54,12.0 L57,11.7 L60,11.4 L63,11.1 L66,10.8 L69,10.4 L72,9.8 L75,9.1 L78,8.5 L81,7.9 L84,7.7 L87,8.0 L90,8.9 L93,10.3 L96,12.1 L99,14.2 L102,16.3 L105,18.0 L108,19.2 L111,19.4 L114,18.8 L117,17.2 L120,14.9 L123,12.2 L126,9.4 L129,6.9 L132,5.1 L135,4.0 L138,3.7 L141,4.3 L144,5.5 L147,7.1 L150,8.9 L153,10.4 L156,11.7 L159,12.5 L162,12.9 L165,12.9 L168,12.7 L171,12.3 L174,12.0 L177,11.7 L180,11.4 L183,11.1 L186,10.8 L189,10.4 L192,9.8 L195,9.1 L198,8.5 L201,7.9 L204,7.7 L207,8.0 L210,8.9 L213,10.3 L216,12.1 L219,14.2 L222,16.3 L225,18.0 L228,19.2 L231,19.4 L234,18.8 L237,17.2 L240,14.9 M0,7.1 L3,4.8 L6,3.2 L9,2.6 L12,2.8 L15,4.0 L18,5.7 L21,7.8 L24,9.9 L27,11.7 L30,13.1 L33,14.0 L36,14.3 L39,14.1 L42,13.5 L45,12.9 L48,12.2 L51,11.6 L54,11.2 L57,10.9 L60,10.6 L63,10.3 L66,10.0 L69,9.7 L72,9.3 L75,9.1 L78,9.1 L81,9.5 L84,10.3 L87,11.6 L90,13.1 L93,14.9 L96,16.5 L99,17.7 L102,18.3 L105,18.0 L108,16.9 L111,15.1 L114,12.6 L117,9.8 L120,7.1 L123,4.8 L126,3.2 L129,2.6 L132,2.8 L135,4.0 L138,5.7 L141,7.8 L144,9.9 L147,11.7 L150,13.1 L153,14.0 L156,14.3 L159,14.1 L162,13.5 L165,12.9 L168,12.2 L171,11.6 L174,11.2 L177,10.9 L180,10.6 L183,10.3 L186,10.0 L189,9.7 L192,9.3 L195,9.1 L198,9.1 L201,9.5 L204,10.3 L207,11.6 L210,13.1 L213,14.9 L216,16.5 L219,17.7 L222,18.3 L225,18.0 L228,16.9 L231,15.1 L234,12.6 L237,9.8 L240,7.1 M0,2.2 L3,2.1 L6,2.9 L9,4.6 L12,6.8 L15,9.3 L18,11.7 L21,13.7 L24,15.1 L27,15.8 L30,15.8 L33,15.3 L36,14.4 L39,13.3 L42,12.3 L45,11.5 L48,10.8 L51,10.5 L54,10.3 L57,10.2 L60,10.1 L63,10.1 L66,10.0 L69,10.0 L72,10.1 L75,10.5 L78,11.2 L81,12.2 L84,13.4 L87,14.7 L90,15.8 L93,16.6 L96,16.7 L99,16.1 L102,14.8 L105,12.7 L108,10.3 L111,7.6 L114,5.2 L117,3.3 L120,2.2 L123,2.1 L126,2.9 L129,4.6 L132,6.8 L135,9.3 L138,11.7 L141,13.7 L144,15.1 L147,15.8 L150,15.8 L153,15.3 L156,14.4 L159,13.3 L162,12.3 L165,11.5 L168,10.8 L171,10.5 L174,10.3 L177,10.2 L180,10.1 L183,10.1 L186,10.0 L189,10.0 L192,10.1 L195,10.5 L198,11.2 L201,12.2 L204,13.4 L207,14.7 L210,15.8 L213,16.6 L216,16.7 L219,16.1 L222,14.8 L225,12.7 L228,10.3 L231,7.6 L234,5.2 L237,3.3 L240,2.2 M0,4.0 L3,6.1 L6,8.7 L9,11.4 L12,13.9 L15,15.9 L18,17.1 L21,17.5 L24,17.2 L27,16.2 L30,14.9 L33,13.4 L36,12.0 L39,10.9 L42,10.1 L45,9.7 L48,9.6 L51,9.7 L54,9.9 L57,10.1 L60,10.3 L63,10.5 L66,10.7 L69,11.1 L72,11.6 L75,12.3 L78,13.1 L81,14.0 L84,14.7 L87,15.0 L90,14.9 L93,14.1 L96,12.6 L99,10.7 L102,8.4 L105,6.1 L108,4.1 L111,2.7 L114,2.2 L117,2.6 L120,4.0 L123,6.1 L126,8.7 L129,11.4 L132,13.9 L135,15.9 L138,17.1 L141,17.5 L144,17.2 L147,16.2 L150,14.9 L153,13.4 L156,12.0 L159,10.9 L162,10.1 L165,9.7 L168,9.6 L171,9.7 L174,9.9 L177,10.1 L180,10.3 L183,10.5 L186,10.7 L189,11.1 L192,11.6 L195,12.3 L198,13.1 L201,14.0 L204,14.7 L207,15.0 L210,14.9 L213,14.1 L216,12.6 L219,10.7 L222,8.4 L225,6.1 L228,4.1 L231,2.7 L234,2.2 L237,2.6 L240,4.0' fill='none' stroke='%232341d3' stroke-opacity='.38' stroke-width='.6'/%3E%3C/svg%3E");
  --grain: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .07 0 0 0 0 .09 0 0 0 0 .22 0 0 0 1 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}
html[lang="zh-CN"] { --serif: "Noto Serif SC", "Songti SC", "STSong", "Newsreader", serif; text-spacing-trim: trim-start; }

*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; scroll-padding-top: 72px; }
body {
  margin: 0; background: var(--paper); color: var(--ink);
  font-family: var(--sans); font-size: 17px; line-height: 1.65;
  -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; overflow-x: hidden;
  font-feature-settings: "kern"; font-variant-numeric: lining-nums;
}
html[lang="zh-CN"] body { letter-spacing: .02em; line-height: 1.78; }
img, svg, canvas { display: block; max-width: 100%; }
a { color: inherit; }
button { font: inherit; color: inherit; letter-spacing: inherit; }
h1, h2, h3, .plan .fit, .vows li { text-wrap: balance; }
p, li, dd { text-wrap: pretty; }
html[lang="zh-CN"] :is(h1, h2, h3, h4, .vows li, .plan .fit) { text-wrap: wrap; word-break: keep-all; overflow-wrap: anywhere; }
html[lang="zh-CN"] :is(.lede, .sub, .flow-note, .close > .wrap > p) { text-wrap: balance; }

.nw { white-space: nowrap; }
:focus-visible { outline: 2px solid var(--sig); outline-offset: 3px; border-radius: 4px; }
.on-sig :focus-visible { outline-color: #fff; }
.on-sig .report :focus-visible { outline-color: var(--sig); }
.skip { position: absolute; left: -9999px; top: 8px; }
.skip:focus { left: 12px; z-index: 99; background: var(--ink); color: #fff; padding: 10px 14px; border-radius: 6px; }
.wrap { position: relative; max-width: var(--wrap); margin: 0 auto; padding: 0 var(--pad); }

/* headings: one scale for every section */
h2 {
  font-family: var(--serif); font-weight: 400; margin: 0;
  font-size: clamp(34px, 4.4vw, 62px); line-height: 1.08; letter-spacing: -.02em;
}
html[lang="zh-CN"] h2 { font-weight: 500; letter-spacing: .03em; line-height: 1.3; font-size: clamp(30px, 3.6vw, 50px); }
.sub { margin: 22px 0 0; max-width: 34em; color: var(--slate); font-size: 18px; }
html[lang="zh-CN"] .sub { font-size: 17px; }

/* ---------- nav ---------- */
.nav { position: sticky; top: 0; z-index: 20; background: var(--paper); transition: box-shadow .3s; }
.nav.scrolled { box-shadow: 0 1px 0 var(--rule); }
.nav .wrap { display: flex; align-items: center; justify-content: space-between; gap: 16px; height: 72px; }
.mark { flex: none; display: inline-flex; align-items: center; min-height: 44px; text-decoration: none; font-family: "Newsreader", Georgia, serif; font-size: 23px; font-weight: 500; letter-spacing: -.01em; }
.mark i { font-style: normal; color: var(--sig); }
.nav ul { display: flex; align-items: center; gap: 32px; list-style: none; margin: 0; padding: 0; font-size: 15px; }
.nav ul a:not(.btn) { display: inline-flex; align-items: center; min-height: 44px; text-decoration: none; color: var(--slate); transition: color .2s; }
.nav ul a:not(.btn):hover { color: var(--ink); }
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  min-height: 48px; padding: 0 22px; border-radius: 6px; border: 1px solid var(--ink);
  background: var(--ink); color: #fff; text-decoration: none; font-weight: 500; font-size: 16px; white-space: nowrap;
  cursor: pointer; transition: background .2s, border-color .2s;
}
.btn:hover { background: var(--sig); border-color: var(--sig); }
.btn.sm { min-height: 40px; padding: 0 16px; font-size: 15px; }
.btn .m { display: none; }
.link {
  display: inline-flex; align-items: center; min-height: 44px; color: var(--ink); font-weight: 500;
  text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 6px; transition: color .2s;
}
.link:hover { color: var(--sig); }
@media (max-width: 860px) { .nav .hide-m { display: none; } .nav ul { gap: 16px; } .btn.sm { padding: 0 14px; font-size: 14px; } }
@media (max-width: 420px) { .nav ul { gap: 12px; } .btn .d { display: none; } .btn .m { display: inline; } }

/* ---------- hero: ruled ledger paper, a faint guilloché seal ---------- */
.hero { position: relative; padding: clamp(64px, 11vh, 128px) 0 0; isolation: isolate; }
.hero-bg { position: absolute; inset: 0 0 auto; height: min(760px, 92vh); z-index: -1; overflow: hidden; pointer-events: none; }
.rosette { position: absolute; top: -170px; right: -300px; width: 920px; aspect-ratio: 1; opacity: 0; transition: opacity 2.4s var(--ease); }
.rosette.on { opacity: 1; animation: spin 420s linear infinite; }
@keyframes spin { to { transform: rotate(1turn); } }
@media (max-width: 1100px) { .rosette { right: -420px; } }
@media (max-width: 860px) { .rosette { width: 560px; right: -330px; top: -160px; } .rosette.on { opacity: .6; } }

.hero h1 {
  font-family: var(--serif); font-weight: 400; margin: 0;
  font-size: clamp(50px, 7.4vw, 108px); line-height: 1.02; letter-spacing: -.028em;
}
html[lang="zh-CN"] .hero h1 { font-weight: 500; letter-spacing: .03em; line-height: 1.18; font-size: clamp(42px, 6.6vw, 98px); }
.hero .lede { max-width: 32em; margin: 30px 0 36px; font-size: clamp(18px, 1.45vw, 20px); line-height: 1.6; color: var(--slate); }
html[lang="zh-CN"] .hero .lede { max-width: 30em; line-height: 1.85; font-size: clamp(17px, 1.35vw, 19px); }
.hero .acts { display: flex; flex-wrap: wrap; align-items: center; gap: 12px 28px; }

/* ---------- stage: the product, on a haze desk ---------- */
.stage { position: relative; margin-top: clamp(64px, 10vh, 112px); padding-bottom: clamp(72px, 10vh, 120px); isolation: isolate; }
.stage::before { content: ""; position: absolute; inset: 180px 0 0; z-index: -1; background: linear-gradient(to bottom, var(--haze), #e9edf6); }
.stage::after { content: ""; position: absolute; inset: 180px 0 0; z-index: -1; background-image: var(--grain); opacity: .07; mix-blend-mode: multiply; }
.stage .note { margin: 22px 0 0; font-size: 13px; color: var(--slate); }

.app {
  position: relative; background: #fff; border-radius: 8px; overflow: hidden;
  box-shadow: 0 0 0 1px rgba(17, 21, 34, .09), 0 18px 40px -32px rgba(15, 27, 77, .35);
}
.app-bar { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 4px 24px; min-height: 52px; padding: 10px 24px; border-bottom: 1px solid var(--rule); font-size: 13.5px; color: var(--slate); }
.app-bar p { margin: 0; }
.crumb span:first-child { color: var(--ink); font-weight: 500; }
.crumb .sep { margin: 0 10px; color: #c3c8d4; }
.asof { display: inline-flex; align-items: center; gap: 8px; }
.live { position: relative; width: 6px; height: 6px; border-radius: 50%; background: var(--sig); }
.live::after { content: ""; position: absolute; inset: -4px; border-radius: 50%; box-shadow: 0 0 0 1px var(--sig); opacity: 0; animation: ping 2.6s var(--ease) infinite; }
@keyframes ping { 0% { transform: scale(.4); opacity: .7; } 70%, 100% { transform: scale(1.4); opacity: 0; } }

.app-body { display: grid; grid-template-columns: 276px minmax(0, 1fr); }
.app-side { padding: 22px 12px; background: var(--tint); box-shadow: inset -1px 0 0 var(--rule); }
.side-h { margin: 0 12px 10px; font-size: 12.5px; color: var(--mute); }
.atabs { display: flex; flex-direction: column; gap: 2px; }
.atab {
  display: block; width: 100%; min-height: 44px; padding: 12px 14px; text-align: left; cursor: pointer;
  background: none; border: 0; border-radius: 7px; color: var(--ink-2); transition: background .2s, box-shadow .2s;
}
.atab small { display: none; }
.atab span { display: block; font-size: 14.5px; line-height: 1.5; }
.atab:hover { background: rgba(17, 21, 34, .035); }
.atab[aria-selected="true"] { background: #fff; box-shadow: 0 0 0 1px var(--rule), 0 1px 3px rgba(15, 27, 77, .06); color: var(--ink); }
.atab[aria-selected="true"] small { color: var(--sig); }

.app-main { display: grid; min-width: 0; padding: 28px clamp(22px, 3.4vw, 48px) 36px; }
.apanel { grid-area: 1 / 1; min-width: 0; display: flex; flex-direction: column; }
.apanel > .dev { flex: 1; display: flex; flex-direction: column; }
.apanel .basis { margin-top: auto; padding-top: 20px; }
.apanel[hidden] { display: block; visibility: hidden; }

.qbar { display: flex; align-items: center; gap: 2px; min-height: 50px; padding: 0 8px 0 18px; border-radius: 9px; background: #fff; box-shadow: 0 0 0 1px var(--rule), 0 1px 2px rgba(15, 27, 77, .04); font-size: 16px; color: var(--ink); }
.qt { min-width: 0; }
.caret { flex: none; width: 1.5px; height: 1.15em; margin-left: 1px; background: var(--sig); animation: blink 1s steps(1) infinite; }
.settled .caret { visibility: hidden; }
@keyframes blink { 50% { opacity: 0; } }
.ret { flex: none; display: grid; place-items: center; width: 34px; height: 34px; margin-left: auto; border-radius: 7px; background: var(--haze); transition: background .3s; }
.ret svg { width: 15px; height: 15px; fill: none; stroke: var(--slate); stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round; transition: stroke .3s; }
.settled .ret { background: var(--sig); }
.settled .ret svg { stroke: #fff; }

/* the answer develops in layers */
.dev > * { opacity: 0; transform: translateY(8px); filter: blur(5px); transition: opacity .7s var(--ease), transform .7s var(--ease), filter .7s var(--ease); }
.dev.clear > * { opacity: 1; transform: none; filter: none; }
.dev.clear > :nth-child(2) { transition-delay: .06s; } .dev.clear > :nth-child(3) { transition-delay: .2s; }
.dev.clear > :nth-child(4) { transition-delay: .34s; } .dev.clear > :nth-child(5) { transition-delay: .48s; }
.no-js .dev > * { opacity: 1; transform: none; filter: none; }

.meta { display: flex; align-items: center; gap: 10px; margin: 26px 0 0; font-size: 13px; color: var(--mute); }
.meta .ok { flex: none; width: 14px; height: 14px; border-radius: 50%; background: rgba(35, 65, 211, .1); position: relative; }
.meta .ok::after { content: ""; position: absolute; left: 4.5px; top: 3px; width: 3.5px; height: 6px; border: solid var(--sig); border-width: 0 1.5px 1.5px 0; transform: rotate(45deg); }
.a { margin: 12px 0 0; max-width: 30em; font-family: var(--serif); font-weight: 400; font-size: clamp(22px, 2.1vw, 30px); line-height: 1.32; letter-spacing: -.012em; color: var(--ink); }
html[lang="zh-CN"] .a { max-width: 31em; font-weight: 500; font-size: clamp(19px, 1.7vw, 24px); line-height: 1.72; letter-spacing: .03em; }
@media (min-width: 761px) { html[lang="zh-CN"] .a { word-break: keep-all; overflow-wrap: anywhere; } }
.key { white-space: nowrap; color: var(--sig); background: linear-gradient(var(--sig), var(--sig)) 0 100% / 0 1.5px no-repeat; padding-bottom: 1px; transition: background-size .9s .55s var(--ease); }
.clear .key { background-size: 100% 1.5px; }

.figs { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 24px; margin: 28px 0 0; padding: 22px 0 0; list-style: none; box-shadow: inset 0 1px 0 var(--rule); }
.figs li { min-width: 0; }
.figs b { display: block; font-family: var(--num); font-weight: 400; font-size: clamp(28px, 2.6vw, 38px); line-height: 1.05; letter-spacing: -.02em; font-variant-numeric: lining-nums tabular-nums; white-space: nowrap; }
.figs b small { font-size: .56em; margin-left: .08em; letter-spacing: 0; }
.figs b small.w { margin-left: .22em; }
.figs b small.cur { margin: 0 .04em 0 0; font-size: .62em; vertical-align: .22em; }
.figs li > span { display: block; margin-top: 8px; font-size: 13.5px; line-height: 1.5; color: var(--slate); }

.layers { display: grid; grid-template-columns: minmax(0, 1fr); gap: 12px; margin-top: 28px; }
.layers > section { min-width: 0; padding: 20px 22px 22px; border-radius: 9px; box-shadow: inset 0 0 0 1px var(--rule); }
.layers h4 { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px; margin: 0; font-size: 12.5px; font-weight: 600; letter-spacing: .04em; color: var(--slate); }
html[lang="zh-CN"] .layers h4 { letter-spacing: .08em; }
.tag { padding: 2px 9px; border-radius: 99px; background: rgba(35, 65, 211, .08); color: var(--sig); font-size: 11.5px; font-weight: 500; letter-spacing: .02em; }
.brk-t { margin: 0 0 20px; font-size: 15px; font-weight: 600; color: var(--ink); }
.brk th:not(.r) { text-align: left; }
.next { display: grid; grid-template-columns: 200px minmax(0, 1fr); gap: 8px 24px; align-items: baseline; background: var(--tint); }
.next h4 { flex-direction: column; align-items: flex-start; }
@media (max-width: 760px) { .next { grid-template-columns: 1fr; } .next h4 { flex-direction: row; } }
.next p { margin: 0; max-width: 46em; font-size: 15.5px; line-height: 1.68; color: var(--ink-2); }
html[lang="zh-CN"] .next p { line-height: 1.85; }
.basis { margin: 20px 0 0; font-size: 13px; line-height: 1.6; color: var(--slate); max-width: 62em; }
.basis em { font-style: normal; color: var(--ink); }

/* charts: plain HTML so the text stays readable at every size */
.bars, .water { position: relative; }
.bars ol, .water ol { display: flex; align-items: flex-end; height: 164px; margin: 0; padding: 0; list-style: none; position: relative; }
.bars li, .water li { position: relative; flex: 1 1 0; min-width: 0; height: 100%; }
.bars li i, .water li i { position: absolute; display: block; background: var(--bar); transform: scaleY(0); transform-origin: bottom; transition: transform .8s var(--ease); transition-delay: calc(.55s + var(--i) * 45ms); }
.clear :is(.bars, .water) li i { transform: scaleY(1); }
.bars li i { left: 14%; right: 14%; bottom: 0; height: var(--h); border-radius: 2px 2px 0 0; }
.bars li.hl i { background: var(--sig); }
.bars li.low i { background: #a8b5ec; }
.bars li em, .water li em { position: absolute; left: 50%; transform: translateX(-50%); font-style: normal; font-size: 12px; font-weight: 600; color: var(--ink); white-space: nowrap; font-variant-numeric: tabular-nums; opacity: 0; transition: opacity .4s calc(1.1s + var(--i) * 45ms); }
.clear :is(.bars, .water) li em { opacity: 1; }
.bars li em { bottom: calc(var(--h) + 4px); padding: 0 3px; background: #fff; border-radius: 2px; z-index: 1; }
.bars li.hl em { color: var(--sig); }
.bars li span, .water li span { position: absolute; top: 100%; left: 0; right: 0; margin-top: 8px; text-align: center; font-size: 11.5px; line-height: 1.25; color: var(--mute); font-variant-numeric: tabular-nums; }
.bars { padding-bottom: 26px; }
.floor { position: absolute; left: 0; right: 0; bottom: calc(26px + (100% - 26px) * var(--f)); height: 0; border-top: 1px dashed #7d869c; }
.lgd { position: absolute; right: 0; top: -2px; z-index: 1; display: flex; align-items: center; gap: 8px; margin: 0; font-size: 11.5px; color: var(--slate); }
.lgd i { width: 18px; border-top: 1px dashed #7d869c; }
.water { padding-bottom: 0; }
.water ol { margin-bottom: 40px; }
.water li i { left: 16%; right: 16%; bottom: var(--b); height: var(--h); }
.water li.d i { background: var(--sig); transform-origin: top; }
.water li.t i { background: #c3cbe2; }
.water li em { bottom: calc(var(--b) + var(--h) + 5px); }
.water li.d em { color: var(--sig); }
.water .axis { margin: 0; text-align: right; font-size: 11px; color: var(--mute); }

.tw { overflow-x: auto; }
.brk table { width: 100%; border-collapse: collapse; font-size: 14.5px; font-variant-numeric: tabular-nums; }
.brk th { text-align: left; font-weight: 500; color: var(--slate); font-size: 12.5px; padding: 0 12px 10px 0; white-space: nowrap; }
.brk td { padding: 10px 12px 10px 0; box-shadow: inset 0 1px 0 var(--rule); white-space: nowrap; }
.brk .r { text-align: right; padding-right: 0; padding-left: 12px; }
.brk .hl { color: var(--sig); font-weight: 600; }
.brk tfoot td { font-weight: 600; box-shadow: inset 0 1px 0 var(--ink); }

@media (max-width: 1120px) { .app-body { grid-template-columns: 236px minmax(0, 1fr); } }
@media (max-width: 860px) {
  .stage::before, .stage::after { inset: 120px 0 0; }
  .app-body { grid-template-columns: minmax(0, 1fr); }
  .app-side { padding: 12px; box-shadow: inset 0 -1px 0 var(--rule); }
  .side-h { display: none; }
  .atabs { flex-direction: row; gap: 6px; overflow-x: auto; scrollbar-width: none; margin: 0 -12px; padding: 1px 12px; scroll-padding: 0 12px; }
  .atabs::-webkit-scrollbar { display: none; }
  .atab { flex: 0 0 auto; width: auto; max-width: 236px; padding: 10px 14px; }
  .atab span { display: none; }
  .atab small { display: block; font-size: 14px; line-height: 1.5; color: var(--ink-2); }
  .atab[aria-selected="true"] small { color: var(--sig); }
}
@media (max-width: 560px) {
  .app-bar { padding: 10px 16px; font-size: 12.5px; }
  .app-main { padding: 18px 16px 24px; }
  .qbar { font-size: 15px; padding-left: 14px; min-height: 48px; }
  .figs { grid-template-columns: 1fr; gap: 0; padding-top: 4px; }
  .figs li { display: flex; align-items: baseline; gap: 14px; padding: 12px 0; }
  .figs li + li { box-shadow: inset 0 1px 0 var(--rule); }
  .figs b { flex: none; min-width: 4.2em; font-size: 26px; }
  .figs li > span { margin: 0; font-size: 13.5px; }
  .layers > section { padding: 16px; }
  .brk table { font-size: 13.5px; }
  .brk .s { display: none; }
  .brk td, .brk th { padding-right: 8px; } .brk .r { padding-left: 8px; }
  .bars li em { font-size: 11px; }
  .water li span { font-size: 10.5px; }
}

/* ---------- flow: ledger to answer (abstract stages only) ---------- */
.flow { padding: var(--sec) 0; }
.flow-track { position: relative; height: 14px; margin: clamp(56px, 8vh, 88px) 0 0; container-type: inline-size; }
.flow-track .rail { position: absolute; left: 6px; right: calc(20% - 6px); top: 6px; height: 2px; background: var(--rule); }
.flow-track .pkt { position: absolute; left: 0; top: 3px; width: 8px; height: 8px; border-radius: 50%; background: var(--sig); opacity: 0; }
.flow.run .pkt { animation: travel 6s linear infinite; }
.flow.run .pkt.p2 { animation-delay: 2s; } .flow.run .pkt.p3 { animation-delay: 4s; }
@keyframes travel {
  0% { transform: translateX(2px); opacity: 0; } 4% { opacity: 1; }
  92% { opacity: 1; } 100% { transform: translateX(calc(80cqw - 6px)); opacity: 0; }
}
.flow-steps { list-style: none; margin: -14px 0 0; padding: 0; display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 0 clamp(16px, 2.4vw, 36px); }
.flow-steps li { position: relative; }
.flow-steps .node { display: block; width: 14px; height: 14px; border-radius: 50%; background: var(--paper); box-shadow: inset 0 0 0 2px var(--ink); }
.flow-steps li:last-child .node { background: var(--sig); box-shadow: none; }
.flow.run .flow-steps li:not(:last-child) .node { animation: lit 6s linear infinite; animation-delay: calc(var(--i) * 1.38s); }
@keyframes lit { 0%, 12%, 100% { background: var(--paper); } 2%, 7% { background: var(--sig); } }
.flow-steps h3 { margin: 28px 0 0; font-family: var(--serif); font-weight: 400; font-size: clamp(24px, 2.2vw, 32px); line-height: 1.15; letter-spacing: -.01em; }
html[lang="zh-CN"] .flow-steps h3 { font-weight: 500; letter-spacing: .06em; }
.flow-steps p { margin: 12px 0 0; font-size: 15.5px; color: var(--ink-2); line-height: 1.65; }
html[lang="zh-CN"] .flow-steps p { line-height: 1.85; }
.flow-steps li:nth-child(4) h3 { color: var(--sig); }
.flow-note { margin: clamp(48px, 7vh, 72px) 0 0; max-width: 46em; font-size: 15px; color: var(--slate); }
@media (max-width: 900px) {
  .flow-track { display: none; }
  .flow-steps { margin-top: 48px; grid-template-columns: 1fr; gap: 32px; padding-left: 36px; }
  .flow-steps li .node { position: absolute; left: -36px; top: 8px; }
  .flow-steps li:not(:last-child)::after { content: ""; position: absolute; left: -30px; top: 30px; bottom: -26px; width: 2px; background: var(--rule); }
  .flow-steps h3 { margin-top: 0; }
}

/* ---------- brief: the one dark band, a printed report on the desk ---------- */
.brief { position: relative; overflow: hidden; isolation: isolate; background: var(--night); color: #fff; padding: var(--sec) 0; }
.brief::after { content: ""; position: absolute; inset: 0; z-index: -1; background-image: var(--grain); opacity: .09; mix-blend-mode: screen; }
.waves { position: absolute; left: 0; top: 0; width: 100%; height: 560px; z-index: -1; pointer-events: none; opacity: 0; transition: opacity 2s var(--ease); }
.waves.on { opacity: 1; }
.brief .sub { color: var(--wash); }
.brief h2 { max-width: 15em; }

.report { position: relative; margin-top: clamp(56px, 8vh, 88px); padding: clamp(24px, 4vw, 56px); background: #fff; color: var(--ink); border-radius: 8px; box-shadow: 0 0 0 1px rgba(255, 255, 255, .12), 0 30px 60px -40px rgba(0, 0, 0, .55); }
.report::before { content: ""; position: absolute; left: 0; right: 0; top: 0; height: 22px; background: var(--band) repeat-x 0 0 / 240px 22px; border-radius: 8px 8px 0 0; opacity: .9; }
.rp-top { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 16px 32px; padding-bottom: 24px; box-shadow: inset 0 -1px 0 var(--ink); }
.rp-k { margin: 0; font-size: 13px; font-weight: 600; color: var(--sig); letter-spacing: .04em; }
html[lang="zh-CN"] .rp-k { letter-spacing: .12em; }
.rp-top h3 { margin: 6px 0 0; font-family: var(--serif); font-weight: 400; font-size: clamp(30px, 3vw, 42px); line-height: 1.1; letter-spacing: -.015em; }
html[lang="zh-CN"] .rp-top h3 { font-weight: 500; letter-spacing: .04em; }
.rp-meta { margin: 0; text-align: right; font-size: 13.5px; line-height: 1.65; color: var(--slate); }

.kpis { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); margin: 0; padding: 0; list-style: none; box-shadow: inset 0 -1px 0 var(--rule); }
.kpis li { min-width: 0; padding: 26px 24px 22px; }
.kpis li:first-child { padding-left: 0; }
.kpis li:last-child { padding-right: 0; }
.kpis li + li { box-shadow: inset 1px 0 0 var(--rule); }
.kpis .lab { display: block; font-size: 13px; color: var(--slate); }
.kpis b { display: block; margin-top: 8px; font-family: var(--num); font-weight: 400; font-size: clamp(28px, 2.6vw, 38px); line-height: 1.05; letter-spacing: -.02em; font-variant-numeric: lining-nums tabular-nums; white-space: nowrap; }
.kpis b small { font-size: .5em; margin-left: .1em; letter-spacing: 0; color: var(--ink-2); }
.kpis b small.cur { margin: 0 .06em 0 0; vertical-align: .3em; }
.kpis .chg { display: block; margin-top: 8px; font-size: 13px; color: var(--ink-2); font-variant-numeric: tabular-nums; }
.spark { width: 100%; height: 30px; margin-top: 14px; overflow: visible; }
.spark polyline { fill: none; stroke: var(--sig); stroke-width: 1.5; stroke-linejoin: round; stroke-linecap: round; stroke-dasharray: 400; stroke-dashoffset: 400; transition: stroke-dashoffset 1.6s .5s var(--ease); }
.report.in .spark polyline { stroke-dashoffset: 0; }

.rp-body { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: clamp(32px, 4vw, 64px); padding-top: 32px; }
.rp-chart { margin: 0; min-width: 0; }
.rp-chart figcaption { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 6px 20px; font-size: 14px; font-weight: 500; }
.lg { display: inline-flex; align-items: center; gap: 6px; font-size: 12.5px; font-weight: 400; color: var(--slate); }
.lg i { display: inline-block; }
.lg-b { width: 9px; height: 9px; background: var(--bar); border-radius: 1px; }
.lg-l { width: 14px; height: 2px; background: var(--sig); margin-left: 12px; }
.mbars { position: relative; margin-top: 22px; padding-bottom: 42px; }
.mbars ol { display: flex; align-items: flex-end; height: 210px; margin: 0; padding: 0; list-style: none; }
.mbars li { position: relative; flex: 1 1 0; height: 100%; }
.mbars li i { position: absolute; left: 18%; right: 18%; bottom: 0; height: var(--h); background: var(--bar); border-radius: 2px 2px 0 0; transform: scaleY(0); transform-origin: bottom; transition: transform .9s var(--ease); transition-delay: calc(.3s + var(--i) * 50ms); }
.report.in .mbars li i { transform: scaleY(1); }
.mbars li.hl i { background: #93a2dc; }
.mbars li span { position: absolute; top: 100%; left: 0; right: 0; margin-top: 8px; text-align: center; font-size: 11.5px; color: var(--mute); font-variant-numeric: tabular-nums; }
.mbars li .yr { position: absolute; top: 100%; left: 0; margin-top: 26px; padding-left: 18%; font-style: normal; font-size: 11px; color: var(--mute); white-space: nowrap; }
.gm { position: absolute; left: 0; right: 0; top: 0; width: 100%; height: 210px; overflow: visible; }
.gm polyline { fill: none; stroke: var(--sig); stroke-width: 2; stroke-linejoin: round; stroke-linecap: round; stroke-dasharray: 600; stroke-dashoffset: 600; transition: stroke-dashoffset 1.8s 1s var(--ease); }
.report.in .gm polyline { stroke-dashoffset: 0; }
.gm-end { position: absolute; right: 0; padding: 0 3px; background: #fff; border-radius: 2px; top: calc(210px * var(--y)); transform: translate(10%, -150%); font-size: 12px; font-weight: 600; color: var(--sig); font-variant-numeric: tabular-nums; opacity: 0; transition: opacity .5s 2.4s; }
.report.in .gm-end { opacity: 1; }

.rp-notes { min-width: 0; }
.rp-notes h4 { margin: 0; font-size: 12.5px; font-weight: 600; letter-spacing: .04em; color: var(--slate); }
html[lang="zh-CN"] .rp-notes h4 { letter-spacing: .1em; }
.rp-notes h4 + * { margin-top: 10px; }
.rp-notes * + h4 { margin-top: 30px; }
.rp-notes ol, .rp-notes ul { list-style: none; margin-bottom: 0; padding: 0; counter-reset: n; }
.rp-notes li { position: relative; padding: 13px 0 13px 30px; font-size: 15px; line-height: 1.62; color: var(--ink-2); box-shadow: inset 0 1px 0 var(--rule); }
html[lang="zh-CN"] .rp-notes li { line-height: 1.8; }
.rp-notes ol li::before { counter-increment: n; content: counter(n); position: absolute; left: 0; top: 12px; font-family: var(--num); font-size: 17px; color: var(--sig); }
.dec li::before { content: ""; position: absolute; left: 1px; top: calc(13px + .45em); width: 13px; height: 13px; border-radius: 3px; box-shadow: inset 0 0 0 1.5px #9aa3b8; }
.rp-foot { margin-top: 32px; padding-top: 16px; box-shadow: inset 0 1px 0 var(--rule); font-size: 12.5px; color: var(--slate); }

@media (max-width: 1060px) { .rp-body { grid-template-columns: 1fr; } }
@media (max-width: 860px) {
  .kpis { grid-template-columns: 1fr 1fr; }
  .kpis li { padding: 22px 16px 20px; }
  .kpis li:nth-child(odd) { padding-left: 0; box-shadow: none; }
  .kpis li:nth-child(even) { padding-right: 0; }
  .kpis li:nth-child(n+3) { box-shadow: inset 0 1px 0 var(--rule); }
  .kpis li:nth-child(4) { box-shadow: inset 1px 0 0 var(--rule), inset 0 1px 0 var(--rule); }
  .rp-meta { text-align: left; }
}
@media (max-width: 560px) { .mbars ol, .gm { height: 168px; } .gm-end { top: calc(168px * var(--y)); } .kpis b { font-size: 26px; } }

/* ---------- guard ---------- */
.guard { padding: var(--sec) 0; }
.guard-grid { display: grid; grid-template-columns: 5fr 7fr; gap: clamp(32px, 6vw, 96px); align-items: start; }
.guard h2 { position: sticky; top: 120px; }
.vows { list-style: none; margin: 0; padding: 0; display: grid; gap: clamp(28px, 3vw, 44px); }
.vows li { font-family: var(--serif); font-weight: 400; font-size: clamp(22px, 2.3vw, 31px); line-height: 1.38; letter-spacing: -.01em; }
.vows li span { color: var(--slate); }
html[lang="zh-CN"] .vows li { font-weight: 500; letter-spacing: .03em; line-height: 1.66; font-size: clamp(20px, 2vw, 27px); }
.guard .erp { margin: 56px 0 0; padding-top: 28px; box-shadow: inset 0 1px 0 var(--rule); color: var(--slate); font-size: 15px; max-width: 40em; }
@media (max-width: 900px) { .guard-grid { grid-template-columns: 1fr; } .guard h2 { position: static; } }

/* ---------- plans ---------- */
.plans { position: relative; isolation: isolate; background: var(--haze); padding: var(--sec) 0; }
.plans::after { content: ""; position: absolute; inset: 0; z-index: -1; background-image: var(--grain); opacity: .07; mix-blend-mode: multiply; }
.plans .sub { max-width: 36em; }
.plan-row { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); margin-top: clamp(56px, 8vh, 88px); background: var(--paper); border-radius: 8px; overflow: hidden; box-shadow: 0 0 0 1px rgba(17, 21, 34, .08); }
.plan { padding: 36px 32px 30px; display: flex; flex-direction: column; min-width: 0; }
.plan + .plan { box-shadow: inset 1px 0 0 var(--rule); }
.plan.pick { box-shadow: inset 0 3px 0 var(--sig), inset 1px 0 0 var(--rule); }
.plan h3 { margin: 0; font-size: 15px; font-weight: 600; letter-spacing: .02em; }
.price { margin: 18px 0 0; display: flex; align-items: baseline; gap: 10px; }
.price b { font-family: var(--num); font-weight: 400; font-size: clamp(50px, 4.6vw, 66px); line-height: 1; letter-spacing: -.03em; font-variant-numeric: lining-nums tabular-nums; }
.price b small { font-size: .42em; vertical-align: .95em; margin-right: .06em; letter-spacing: 0; }
.price span { color: var(--slate); font-size: 14px; white-space: nowrap; }
.plan .fit { margin: 18px 0 0; font-size: 15.5px; min-height: 1.6em; color: var(--ink); }
.plan ul { list-style: none; margin: 20px 0 28px; padding: 18px 0 0; color: var(--ink-2); font-size: 15px; line-height: 1.5; box-shadow: inset 0 1px 0 var(--rule); }
.plan li + li { margin-top: 10px; }
.plan .btn, .plan .link { margin-top: auto; align-self: flex-start; }
.plan.pick .btn { background: var(--sig); border-color: var(--sig); }
.plan.pick .btn:hover { background: var(--sig-deep); border-color: var(--sig-deep); }
.plan .gift { margin: 14px 0 0; font-size: 12px; line-height: 1.5; color: #9aa0ae; }
.plans .fine { margin: 28px 0 0; font-size: 14px; color: var(--slate); }
@media (max-width: 1060px) {
  .plan-row { grid-template-columns: 1fr 1fr; }
  .plan:nth-child(odd) { box-shadow: none; } .plan:nth-child(even) { box-shadow: inset 1px 0 0 var(--rule); }
  .plan:nth-child(n+3) { box-shadow: inset 0 1px 0 var(--rule); } .plan:nth-child(4) { box-shadow: inset 1px 0 0 var(--rule), inset 0 1px 0 var(--rule); }
  .plan.pick { box-shadow: inset 0 3px 0 var(--sig); }
}
@media (max-width: 600px) {
  .plan-row { grid-template-columns: 1fr; }
  .plan + .plan, .plan:nth-child(4) { box-shadow: inset 0 1px 0 var(--rule); }
  .plan.pick { box-shadow: inset 0 3px 0 var(--sig); }
  .plan .fit { min-height: 0; }
}

/* ---------- close ---------- */
.close { position: relative; isolation: isolate; overflow: hidden; padding: var(--sec) 0 clamp(96px, 14vh, 160px); }
.close h2 { font-size: clamp(40px, 5.6vw, 84px); max-width: 12em; }
html[lang="zh-CN"] .close h2 { font-size: clamp(32px, 4.6vw, 68px); }
.close > .wrap > p { margin: 28px 0 0; color: var(--slate); max-width: 32em; font-size: 18px; }
html[lang="zh-CN"] .close > .wrap > p { font-size: 17px; }
.tbd { color: var(--mute); }

/* ---------- request form ---------- */
.ask { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 28px 40px; margin: 64px 0 0; max-width: 880px; }
.fld { display: block; min-width: 0; }
.fld > span { display: block; font-size: 14px; color: var(--slate); }
.fld input, .fld select, .fld textarea {
  display: block; width: 100%; margin-top: 6px; padding: 10px 0; min-height: 44px;
  font: inherit; font-size: 18px; color: var(--ink); background: transparent;
  border: 0; border-radius: 0; box-shadow: inset 0 -1px 0 #c5cad6; transition: box-shadow .2s;
  -webkit-appearance: none; appearance: none;
}
.fld select { background-image: linear-gradient(45deg, transparent 50%, var(--slate) 50%), linear-gradient(-45deg, transparent 50%, var(--slate) 50%); background-position: right 6px center, right 0 center; background-size: 6px 6px; background-repeat: no-repeat; padding-right: 24px; }
.fld textarea { resize: vertical; line-height: 1.5; }
.fld input:focus, .fld select:focus, .fld textarea:focus { outline: none; box-shadow: inset 0 -2px 0 var(--sig); }
.fld ::placeholder { color: #a3a9b7; }
.fld-message { grid-column: 1 / -1; }
.ask .bad { box-shadow: inset 0 -2px 0 #b3261e; }
.hp { position: absolute; left: -9999px; width: 1px; height: 1px; }
.ask-foot { grid-column: 1 / -1; display: flex; flex-wrap: wrap; align-items: center; gap: 12px 24px; margin-top: 8px; }
.ask-note { margin: 0; font-size: 14px; color: var(--slate); }
.ask-status { grid-column: 1 / -1; margin: 0; min-height: 1.6em; font-size: 16px; }
.ask-status.ok { color: var(--sig); } .ask-status.err { color: #b3261e; }
.ask button[disabled] { opacity: .6; cursor: progress; }
@media (max-width: 640px) { .ask { grid-template-columns: 1fr; gap: 24px; } }

/* ---------- footer ---------- */
.foot { padding: 0 0 48px; font-size: 14px; color: var(--slate); }
.foot .wrap { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px 32px; padding-top: 28px; }
.foot .wrap::before { content: ""; position: absolute; top: 0; left: var(--pad); right: var(--pad); height: 1px; background: var(--rule); }
.foot nav { display: flex; flex-wrap: wrap; gap: 0 24px; }
.foot a { display: inline-flex; align-items: center; min-height: 44px; text-decoration: none; }
.foot a:hover { color: var(--ink); }

/* ---------- policy pages ---------- */
.doc { padding: clamp(64px, 10vh, 120px) 0 clamp(80px, 12vh, 140px); }
.doc .wrap { max-width: 820px; }
.doc h1 { font-family: var(--serif); font-weight: 400; font-size: clamp(40px, 5.6vw, 72px); line-height: 1.08; letter-spacing: -.02em; margin: 0; }
html[lang="zh-CN"] .doc h1 { font-weight: 500; letter-spacing: .03em; }
.doc .meta { margin: 20px 0 64px; color: var(--slate); font-size: 15px; display: block; }
.doc h2 { font-family: var(--serif); font-weight: 500; font-size: 24px; line-height: 1.3; margin: 56px 0 12px; letter-spacing: -.005em; }
html[lang="zh-CN"] .doc h2 { font-size: 22px; letter-spacing: .03em; }
.doc p { color: var(--ink-2); font-size: 17px; }
html[lang="zh-CN"] .doc p { line-height: 1.9; }

/* ---------- reveal ---------- */
.rv { opacity: 0; transform: translateY(24px); transition: opacity 1s var(--ease), transform 1s var(--ease); }
.rv.in { opacity: 1; transform: none; }
.rv.d1 { transition-delay: .08s; } .rv.d2 { transition-delay: .16s; }
.no-js .rv { opacity: 1; transform: none; }

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation: none !important; transition: none !important; }
  .rv { opacity: 1; transform: none; }
  .dev > * { opacity: 1; transform: none; filter: none; }
  :is(.bars, .water, .mbars) li i { transform: none; }
  :is(.bars, .water) li em, .gm-end { opacity: 1; }
  .spark polyline, .gm polyline { stroke-dashoffset: 0; }
  .key { background-size: 100% 1.5px; }
  .caret, .flow .pkt { display: none; }
  .rosette, .waves { opacity: 1; }
}

/* v4 typography pass */
html[lang="zh-CN"] :is(.brk table, .kpis .chg, .bars em, .water em, .figs li > span, .meta, .basis, .mbars span) { letter-spacing: 0; }
html[lang="zh-CN"] :is(.rp-notes li, .next p) { text-wrap: balance; }
