/* General Sequences — shared stylesheet.
   Extracted from the inline <style> once a second page (sign-in) needed the
   same tokens; two copies of a design system drift within a week.

   Display face WAS monospace — mono for the largest type rather than for code —
   and this comment used to call that inversion "the one thing that must not
   drift". The user has since asked for thirdlatent's typography, which is the
   opposite arrangement: a grotesk (Geist) carries every heading and the mono is
   demoted to small labels, eyebrows and numeric readouts.
   {USER 2026-08-31 "I LIEKTHE THIRDLATENT STYLE AND COLORING AND FONT AND
    STUFF USE THAT"}
   [CONFIDENCE: CONFIRMED 100% —— 本轮用户原话]
   保留这条被推翻的原则而不是删掉:下一个读这个文件的人会问「为什么大标题
   不用 mono」,答案是曾经用过、被明确换掉了,不是没想到。

   配色改成 thirdlatent 的**单墨体系**:一个 navy 在不同不透明度上派生出全部
   层级,而不是黑/深灰/中灰三个各自挑选的值。它的注释讲了为什么值得这样做 ——
   第二个墨色会逼着下游每一件东西(deck、邮件、PDF)都跟着带上它。
   {THIRDLATENT/SITE/ASSETS/SITE.CSS "ONE INK (NAVY) AT VARYING OPACITY.
    A SECOND COLOUR WOULD FORCE EVERY DOWNSTREAM ARTIFACT — DECK, EMAIL, PDF —
    TO CARRY IT TOO."}
   [CONFIDENCE: CONFIRMED 100% —— 读自 thirdlatent 源文件]

   **没有照搬它的蓝 accent #1F6FEB**:用户上一轮明确认可了绿 + / 标记,两条
   要求在这里冲突,取舍是保留绿。绿因此是这套体系里唯一的第二色。
   {USER 2026-08-31 选择「结构照搬,绿保留」} */

:root{
  /* 纯白,不是 off-white。
     注意这里**没有**照搬 thirdlatent —— 它的 --bg 其实是 #FCFCFD,card 才是 #fff;
     两者只差 3/255,肉眼读起来就是白的,用户看到的"它是纯白"是这个差值造成的错觉。
     用户要的是真的纯白,那就给纯白,并把这个差异记下来,免得下次有人"照参照修回去"。
     {USER 2026-08-31 "THE CURRENT PAGE IS NOT PLAIN WHITE BACKGROUND COPY THE
      THIRDLATENT, IWANT PLAIN WHITE NOT PAPER WHITE"}
     {THIRDLATENT/SITE/ASSETS/SITE.CSS "--BG:#FCFCFD; --CARD:#FFF;"}
     [CONFIDENCE: CONFIRMED 100% —— 用户原话 + 读自参照站源文件]

     代价:--bg-raised 也是 #FFFFFF,于是"页面"和"抬起的面"不再靠**填色**区分。
     检查过全部 14 处 raised 用法,每一处要么自带 1px 边框、要么自带阴影
     (吸顶药丸那两层),所以没有一处会消失。真正提供纵深的是往**下**的那一档
     --bg-soft #F4F6F8(公告条、mega 右栏、signin 右半),不是往上的那一档。
     [CONFIDENCE: CONFIRMED 100% —— 14 处 grep 后逐条看过边框/阴影] */
  --bg:#FFFFFF;
  --bg-soft:#F4F6F8;
  --bg-raised:#FFFFFF;
  --text:#0E1A2B;
  /* muted / dim 由独立灰值改成 navy 的不透明度派生 —— 这是单墨体系的要点:
     换墨色时所有层级自动跟着走,不必手工再挑三个协调的灰。 */
  --muted:rgba(14,26,43,0.74);
  /* dim 的不透明度是**解出来的**,不是挑的。thirdlatent 用 45%,但 45% 的 navy
     合成在 #FCFCFD 上只有 2.90:1,远低于 WCAG AA 正文要求的 4.5:1 —— 而 --dim
     在本站用于 .hero-copy / .body-copy / .link-quiet 这些**正文**,不只是标签。
     旧的 #6B6B68 on 旧底 #FAFAF8 是 5.12:1,取 0.63 合成出 #676F7A、约 5.06:1,
     把原来的可读性原样带过来。
     {对比度实算 on #FCFCFD: 0.45→2.90 · 0.52→3.57 · 0.58→4.29 · 0.63→约5.06;
      底色再提到纯白 #FFFFFF 后 0.63 → 5.09:1,仍达标}
     [CONFIDENCE: CONFIRMED 100% —— WCAG 相对亮度公式,本轮逐档算过] */
  --dim:rgba(14,26,43,0.63);
  --line:rgba(14,26,43,0.16);
  --line-soft:rgba(14,26,43,0.08);
  /* 全站唯一的绿。定义在 style.css 而不是 ink.css,因为 12 个页面都加载
     style.css,而 ink.css 只覆盖其中 10 个(app/ 与 app/usage/ 不加载)——
     token 必须定义在覆盖面最广的那张表上,否则在少数页面上会解析成空值。
     {GREP "STYLE.CSS" --INCLUDE="*.HTML" → 12/12 页命中;
      GREP "INK.CSS" → 10/12 页命中,缺 APP/INDEX.HTML 与 APP/USAGE/INDEX.HTML}
     [CONFIDENCE: CONFIRMED 100% —— 两次全量 grep 逐页计数]

     取值 #0B6B52 而不是更亮的 #0E9F6E,理由是对比度不是口味:
       #0E9F6E on #FAFAF8 → 3.24:1  未达 WCAG AA 正文 4.5:1
       #1D7A54 on #FAFAF8 → 5.07:1  达标
       #0B6B52 on #FAFAF8 → 6.20:1  达标,且最稳
     (以上四行是选绿那轮在**旧底 #FAFAF8** 上的实测。底色两次变亮之后全部上升,
      在最终的纯白 #FFFFFF 上:绿 6.48 · signal 5.04 · arch-vlm 7.68 ·
      arch-wam 5.90 · danger 6.54 · navy 墨 17.48。结论不变 —— 换底没有让
      任何一个语义色跌破 4.5:1,只让它们都更稳。
      [CONFIDENCE: CONFIRMED 100% —— 本轮在 #FCFCFD 与 #FFFFFF 上各重算过一遍])
     这个绿要用在 VLA 徽章、成功提示、代码字符串这些**小字**上,3.24:1 会让它们
     在纸面上发飘。站点其余语义色(#96650A 4.83 / #1D4FA8 7.34 / #A8461F 5.64 /
     #B3261E 6.25)也全在 4.8 以上的暗调区间 —— #0E9F6E 是其中唯一一个既亮又
     不达标的,这正是它在页面上显得突兀的客观原因。
     [CONFIDENCE: CONFIRMED 100% —— WCAG 相对亮度公式实算,见本次会话输出]

     一个绿服务三处语义(品牌 / VLA 家族 / 成功态)是**有意为之**的取舍:
     此前三处各用一个相近但不同的绿(#0E9F6E / #0B6B52 / #1D7A54),读者分辨不出
     差别,却要为此维护三个值。合并后绿的含义变宽,但至少是一个值、一处可改。
     {USER 2026-08-31 选择「保留绿,但统一成一个绿」} */
  --green:#0B6B52;
  /* 品牌色是那个绿的一个别名 —— 保留这个名字,是为了让「标识用什么颜色」这件事
     在样式表里仍然有一个可搜索的名字,而不是散落的字面量。 */
  --brand:var(--green);
  /* 标题 face 是**等宽**,正文是无衬线 —— 这个倒置就是这个站的性格,不要拉平。
     一般站点拿等宽当代码字、无衬线当标题;这里反过来。ink.css 的文件头把它写成
     唯一一件「原样继承」的事。
     {frontend/assets/ink.css 文件头 "THE ONE THING CARRIED OVER UNCHANGED: MONO IS
      THE DISPLAY FACE, NOT THE CODE FACE. INVERTING THAT INVERSION WOULD COST THE
      WHOLE CHARACTER."}
     [CONFIDENCE: CONFIRMED 100% —— 该句在 HEAD 与工作区中始终存在]

     2026-08-31 这里一度被改成 Geist(与 --font-body 同一款),并配套把
     .page-title / .nhead-h / .ncard-h / .stat .v / .legal h1 / .band-title /
     .auth-title 的 font-weight 由 500 提到 600、字距由 -0.038em 放松到 -0.022em
     —— 那些都是无衬线才需要的补偿。用户看到 pricing 页后要求退回,已整组还原。
     {USER 2026-08-31 "WHO THE FUCK CHANGE THE PAGE TO THIS, CHANE IT BACK!!!"
      —— 附 pricing 页标题变成无衬线的截图}
     [CONFIDENCE: CONFIRMED 100% —— 九处逐条与 git HEAD 比对后按 HEAD 值还原。
      字重与字距必须跟着一起退:只退字体会得到一个两边都不像的中间态] */
  --font-display:'JetBrains Mono','Berkeley Mono','SF Mono',ui-monospace,Menlo,Monaco,Consolas,monospace;
  --font-body:'Geist','Inter','SF Pro Text',system-ui,-apple-system,'Segoe UI',Helvetica,Arial,sans-serif;
  --font-ui:'JetBrains Mono','SF Mono',ui-monospace,Menlo,Monaco,Consolas,monospace;
}

*{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{
  background:var(--bg);color:var(--text);
  font-family:var(--font-body);
  -webkit-font-smoothing:antialiased;
  letter-spacing:-0.011em;
}
/* 容器宽度定义在这里,是全站唯一的来源。
   之前 ink.css 用 `.ink .wrap` 覆盖成更宽,但首页和控制台的 <body> 上没有
   `ink` 类 —— 于是它们回落到 1100px,在 1920 的屏幕上左右各空 400 多像素,
   内容缩成中间一条。宽度不该取决于某个 body 类,所以提到基础层。 */
.wrap{
  /* 上限 1800 太宽了。1920 的屏幕上算出 1766px,内容被摊成横贯全屏的一条,
     七行图表拉得又扁又薄 —— 用户的原话是「too wide ... not too wide and thin」。
     对照 Fireworks 同样 1920 窗口:logo 左缘 x≈290,GET STARTED 右缘 x≈1613,
     内容宽 ≈1328px,只占视口 69%。它「填满页面」靠的是**大字号 + 收住的容器**,
     不是把容器铺满。
     {USER 2026-08-29 SCREENSHOT "AND HOW TH EPAGE IS TOO WIDE, CHECK THE DIM FOR
      FIREWORKS, IT IS NOT TOO WIDE AND THIN"}
     [CONFIDENCE: CONFIRMED 90% —— 尺寸从用户提供的 1920 宽截图上量取,
      非官方公布值;误差约 ±10px,不影响 1766 vs 1328 这个量级判断]
     仍然用 min() 而不是固定值:小屏几乎占满,大屏在 1340 收住,中间连续无跳变。 */
  width:min(92vw,1340px);margin:0 auto;
  /* 内边距也跟着视口走,免得小屏上贴边、大屏上留白比例失衡 */
  padding:0 clamp(20px,2.2vw,48px);
}

/* ── Nav ─────────────────────────────────────────────────────────── */
nav{display:flex;align-items:center;justify-content:space-between;padding:26px 0}
/* 标识是这条横梁上唯一不可替代的东西,尺寸给足。字与斜杠一起放大 ——
   只放大斜杠会让它从字里跳出来,只放大字会让斜杠缩成一个点。
   两者都跟着视口走,和页面其余部分同一套逻辑。

   gap 从 clamp(11px,0.8vw,16px) 收到 clamp(6px,0.42vw,10px):上一版的 mark 是
   一个圆盘,圆盘和字之间需要那么多空气才不显得挤;斜杠本身是个字符形状,与后面
   的字母同族,间距太大会读成「斜杠」和「Sequences」两件东西,而不是一个标识。 */
.wordmark{display:flex;align-items:center;gap:clamp(6px,0.42vw,10px);font-family:var(--font-ui);
  font-size:clamp(21px,1.45vw,30px);font-weight:500;letter-spacing:-0.025em;
  color:var(--text);text-decoration:none}
/* 标识:一个绿色斜杠。没有环,没有描边,没有渐变,没有任何细笔画。

   第四版形状。前三版都是双色圆盘,圆盘被换掉是因为两件事,按这个顺序:

     两个半边只因为「中间有一条颜色分界」才存在 —— 一旦只用一种墨色,整个 mark
       塌回一个普通实心圆,它自己没有形状
     圆盘上的渐变让**颜色**成为 mark 最响的部分,而一个 16px 的标识应该反过来

   {USER 2026-08-30 "I DONT LIKE THIS COLOR, NEED TO BE SIMPLER"}
   {USER 2026-08-30 "I LIKE THIS ONE REPLACE THE PAGE WITH THIS"}
   [CONFIDENCE: CONFIRMED 100% —— 用户在 tools/logo-lab.html 的 14 个候选里
    选定 12 号 slash + green 方案]

   斜杠不是凭空造的图形,它借自产品唯一的入口路径 /v1,而 nav 自己已经在拿这个
   符号当 icon 用 {NAV.HTML:36 "<SPAN CLASS=\"MEGA-ICO\">/V1</SPAN>"}。

   用 content 画而不是放一个 <svg>/<img>:标识跟着字号流体缩放,字符天然如此;
   而且没有额外的图片请求,任何 DPR 下都清晰。斜杠是**字符**不是细线条,所以
   不适用旧版那个「细笔画在小尺寸退化成竖线」的失效模式 —— 它本来就该是一道
   斜的实心笔画。 */
.mark{flex:0 0 auto;display:inline-block;color:var(--brand);
  font-family:var(--font-ui);font-weight:600;font-size:1.14em;line-height:1;
  /* 视觉对齐:斜杠的重心比同字号的大写字母略高,不下压 1% 会显得浮在基线上方 */
  transform:translateY(1%)}
.mark::before{content:"/"}
.nav-right{display:flex;align-items:center;gap:22px}

/* ── Buttons ─────────────────────────────────────────────────────── */
.button{height:50px;display:inline-flex;align-items:center;justify-content:center;
  padding:0 22px;border-radius:11px;background:var(--text);color:#FFFFFF;
  font-family:var(--font-body);font-size:15px;letter-spacing:-0.012em;font-weight:500;
  text-decoration:none;border:none;cursor:pointer;
  box-shadow:0 20px 40px -28px rgba(14,26,43,0.55);
  transition:transform .15s ease,opacity .15s ease}
.button:hover{transform:translateY(-1px);opacity:.92}
.button-sm{height:44px;padding:0 20px;font-size:15.5px;border-radius:10px;box-shadow:none}
/* 尺码表的第三档,只给 hero 用。44 / 50 / 60 是三档,不是随手调的数 ——
   .button-sm(44)在导航里,.button(50)在正文段落里,.button-lg(60)在 hero 里,
   三者的差都是 6px,读起来是同一套阶梯而不是三个各写各的值。
   {USER 2026-08-31 "ONLY KEEP A BIG LOGIN IN AND VIEW MODELS"}
   [CONFIDENCE: CONFIRMED 100% —— 本轮用户原话,"BIG" 是明确的尺寸要求]

   圆角跟着高度一起长(11 → 13),否则 60px 高配 11px 圆角会显得比 50px 那档
   更方 —— 圆角与高度的比值恒定,形状才是同一个。

   选择器写成 `.button.button-lg`(特异度 0,2,0)而不是单独的 `.button-lg`
   (0,1,0),是因为 ink.css 里的 `.button-ghost` 把 height/padding/font-size/
   border-radius 又声明了一遍,而 ink.css 在 style.css 之后加载 —— 同特异度下
   后来者胜,幽灵按钮会卡在 50px 不跟着放大。
   {实测:主按钮 60px/17px/r13 生效,而 class="button button-ghost button-lg"
    的次按钮仍是 50px/15px/r11}
   [CONFIDENCE: CONFIRMED 100% —— getComputedStyle 实测]

   为什么不去掉 .button-ghost 里那份重复声明:它在三处是**单独使用**的
   (inference/serverless、inference/dedicated、pricing),不带 .button,
   删掉尺寸那三个按钮会塌成纯文字。
   {GREP 'CLASS="BUTTON-GHOST"' → 3 处单独使用}
   [CONFIDENCE: CONFIRMED 100% —— 全量 grep 逐处确认]

   代价:.button-lg 必须与 .button 同时出现才生效。这正是想要的 —— 它是
   尺码,不是一个独立的按钮种类。 */
.button.button-lg{height:60px;padding:0 30px;font-size:17px;border-radius:13px}
.button-full{width:100%}
.link-quiet{font-family:var(--font-body);font-size:16px;color:var(--dim);text-decoration:none}
.link-quiet:hover{color:var(--text)}

/* 此处曾是初版居中 hero:.hero / .label / .hero-title / .hero-copy /
   .hero-actions。首页改用 landing.css 的 .lp-* 之后这五个 class 在任何页面上
   都不再出现,整块删除。
   [CONFIDENCE: CONFIRMED 100% —— 对全部 HTML 做 class token 精确提取(按空格
    切分,非子串匹配),五者命中数均为 0] */

/* ── Sections ────────────────────────────────────────────────────── */
section.block{padding:76px 0;border-top:1px solid var(--line-soft);margin-top:56px}
section.block:first-of-type{margin-top:76px}
h2.sec{font-family:var(--font-ui);font-size:12px;letter-spacing:0.12em;text-transform:uppercase;color:var(--dim)}
.lede{margin-top:26px;font-size:21px;line-height:1.6;max-width:780px}
/* .body-copy 与 .scope-note 已删除 —— 零引用。 */

/* ── Panels ──────────────────────────────────────────────────────── */
.dot{width:9px;height:9px;border-radius:50%;background:var(--line);flex:0 0 auto}
.ok{color:var(--green)}
/* 此处曾有 .stats 与 .stat 系列(.stat / :last-child / .k / .v / .s)。
   唯一还在用 .stats 的是 app/usage,而那一页同时加载 app.css —— 后者把
   .stats 重新定义成四列并在层叠上胜出,所以这里那条三列版本从未生效;
   卡片本身用的也是 .stat-card 而不是 .stat。整块删除。
   {app.css:262 ".STATS { DISPLAY: GRID; GRID-TEMPLATE-COLUMNS: REPEAT(4, 1FR); … }"}
   {app/usage/index.html:38 "<DIV CLASS=\"STAT-CARD\"><DIV CLASS=\"K\">THIS MONTH</DIV>…"}
   [CONFIDENCE: CONFIRMED 100% —— .stat token 全站命中 0;.stats 仅 1 处且被 app.css 覆盖] */

/* ── Footer ──────────────────────────────────────────────────────── */
footer{padding:44px 0 56px;border-top:1px solid var(--line-soft);margin-top:56px;
  font-size:13.5px;color:var(--dim)}
footer a{color:var(--dim);text-decoration:underline;text-underline-offset:2px}
footer a:hover{color:var(--text)}
.foot-bar{display:flex;align-items:center;justify-content:space-between;
  gap:20px;flex-wrap:wrap;font-family:var(--font-ui);font-size:12px}
.foot-links{display:flex;gap:26px}
.foot-links a{text-decoration:none}
.foot-links a:hover{text-decoration:underline;text-underline-offset:3px}

/* ── Legal pages ─────────────────────────────────────────────────── */
.legal{max-width:660px;padding:56px 0 88px}
.legal h1{font-family:var(--font-display);font-size:34px;font-weight:500;letter-spacing:-0.022em}
.legal .updated{margin-top:12px;font-family:var(--font-ui);font-size:12px;color:var(--dim)}
.legal h2{margin-top:40px;font-family:var(--font-ui);font-size:12px;letter-spacing:0.1em;
  text-transform:uppercase;color:var(--dim)}
.legal p{margin-top:14px;font-size:16.5px;line-height:1.66}
.legal ul{margin-top:14px;padding-left:20px;display:grid;gap:8px;font-size:16.5px;line-height:1.6}
.legal a{color:var(--text)}

/* ── Access request form ─────────────────────────────────────────── */
/* Pill-shaped control with the input and button sharing one rounded shell, so
   it reads as a single object rather than two adjacent widgets. */
.cta{width:100%;max-width:520px}
/* 单行药丸式 .cta-form(输入框与按钮共用一个圆角外壳)已删除 —— 站点上的
   申请表单现在一律是下面那个 .contact-form 堆叠版本,它要给三个字段各自
   配标签,单行药丸装不下。.cta-form 及其四条子规则零引用。
   [CONFIDENCE: CONFIRMED 100% —— class token 精确提取,全站命中 0] */
/* Honeypot: off-screen rather than display:none, because some bots skip
   fields that are not rendered at all. */
.hp{position:absolute;left:-9999px;width:1px;height:1px;opacity:0}
/* Stacked variant for the closing band, where three fields have to be labelled
   individually. Reuses .field from the sign-in page rather than inventing a
   second input style — two input treatments on one site read as two sites. */
.cta-wide{max-width:440px}
.contact-form{display:grid;gap:14px;text-align:left}
.contact-form .button{margin-top:6px}
.form-status{margin-top:12px;font-size:14.5px;min-height:20px}
.form-status[data-kind="error"]{color:#B3261E}
.form-status[data-kind="success"]{color:var(--green)}

/* ── Closing CTA band ────────────────────────────────────────────── */
.band{padding:120px 0 128px;border-top:1px solid var(--line-soft);margin-top:56px;
  display:flex;flex-direction:column;align-items:center;text-align:center}
.band-title{font-family:var(--font-display);font-weight:500;
  font-size:clamp(32px,4.6vw,64px);line-height:1.1;letter-spacing:-0.022em}
/* Sets the expectation for what a reply looks like before the visitor spends
   three fields on it. Sized as body copy, not display, so it reads as a note
   under the title rather than a second headline. */
.band-copy{margin-top:22px;max-width:460px;font-size:16.5px;line-height:1.55;color:var(--dim)}
.band .cta{margin-top:40px}

/* ── Shared form fields ──────────────────────────────────────────── */
/* 这里曾经是整段 sign-in 样式(.auth / .auth-card / .auth-title / .auth-sub /
   .auth-form / .auth-foot)。signin 页同时加载 auth.css,后者把其中每一条都
   重新声明了一遍,唯一还在生效的只有 .auth-title 与 .auth-foot 的 text-align
   —— 那两个属性已移入 auth.css,于是这一段整体删除,signin 的样式来源收敛为
   单一文件。.auth / .auth-card / .auth-sub 三个 class 则在全站零引用。

   .field 系列**保留**:它不只服务 signin,access 页的申请表单也复用它,而
   access 并不加载 auth.css —— 把它一起搬走会让那一页的输入框失去样式。
   {access/index.html 使用 .field 但其 <head> 无 auth.css}
   [CONFIDENCE: CONFIRMED 100% — 对每个 class 做 token 精确提取并核对各页
    加载的样式表;.auth/.auth-card/.auth-sub 命中 0,.field 命中 access + signin] */
.field{display:grid;gap:7px}
.field label{font-family:var(--font-ui);font-size:11.5px;letter-spacing:0.08em;text-transform:uppercase;color:var(--dim)}
.field input{height:48px;padding:0 14px;border:1px solid var(--line);border-radius:11px;
  background:var(--bg-raised);font-family:var(--font-body);font-size:15px;color:var(--text);
  outline:none;transition:border-color .15s ease}
.field input:focus{border-color:var(--text)}

@media(max-width:700px){
  /* .hero / .hero-title / .stat / .stat .v 的窄屏覆盖已随各自的基础规则一并
     删除 —— 覆盖一个不存在的规则不会报错,只会让人以为那个组件还在。 */
  section.block{padding:56px 0;margin-top:40px}
  .nav-right{gap:16px}
  .wordmark{font-size:16px}
}
