{
  "systems": [
    {
      "id": "gitsource",
      "title": "GitSource Design System",
      "subtitle": "Product UI language — dark-first, glass, single brand accent",
      "mode": "class",
      "modes": [
        {
          "id": "light",
          "label": "Light",
          "selector": ":root"
        },
        {
          "id": "dark",
          "label": "Dark",
          "selector": ".dark"
        }
      ],
      "sources": [
        "frontend/tailwind.config.js",
        "frontend/src/style.css",
        "frontend/src/stores/theme.js",
        "frontend/index.html"
      ],
      "groups": [
        {
          "id": "brand",
          "title": "Brand",
          "blurb": "全站唯一常驻彩色。浅色模式用 500 作主色，深色模式提亮为 #3b7af8。按钮、链接、焦点环、激活态均引用此族。",
          "tokens": [
            {
              "name": "brand-50",
              "var": "--color-brand-50",
              "type": "color",
              "value": "#e8eefc",
              "source": "frontend/tailwind.config.js:10",
              "note": "品牌浅底：ghost 按钮 hover、标签药丸底"
            },
            {
              "name": "brand-100",
              "var": "--color-brand-100",
              "type": "color",
              "value": "#d5e1fb",
              "source": "frontend/tailwind.config.js:11"
            },
            {
              "name": "brand-500",
              "var": "--color-brand-500",
              "type": "color",
              "value": "#1456F0",
              "dark": "#3b7af8",
              "source": "frontend/tailwind.config.js:12 / src/style.css:27,52",
              "note": "主色；深色模式提亮"
            },
            {
              "name": "brand-600",
              "var": "--color-brand-600",
              "type": "color",
              "value": "#3B7AF8",
              "source": "frontend/tailwind.config.js:13",
              "note": "主按钮 hover 态"
            },
            {
              "name": "brand-700",
              "var": "--color-brand-700",
              "type": "color",
              "value": "#0f46c9",
              "source": "frontend/tailwind.config.js:14"
            }
          ]
        },
        {
          "id": "ink",
          "title": "Ink",
          "blurb": "文字中性色。产品里存在两套并行取值：Tailwind ink 族用于工具类，CSS --color-ink 族用于 Markdown 渲染。二者主色不同（#111111 vs #1d1d1f），见 Conflicts。",
          "tokens": [
            {
              "name": "ink",
              "var": "--color-ink",
              "type": "color",
              "value": "#1d1d1f",
              "dark": "#f5f5f7",
              "source": "frontend/src/style.css:21,48"
            },
            {
              "name": "ink-secondary",
              "var": "--color-ink-secondary",
              "type": "color",
              "value": "#6e6e73",
              "dark": "#98989d",
              "source": "frontend/src/style.css:22,49"
            },
            {
              "name": "ink-muted",
              "var": "--color-ink-muted",
              "type": "color",
              "value": "#aeaeb2",
              "dark": "#6e6e73",
              "source": "frontend/src/style.css:23,50"
            },
            {
              "name": "ink-micro",
              "var": "--color-ink-micro",
              "type": "color",
              "value": "#6e6e73",
              "dark": "#8a8a90",
              "source": "frontend/src/style.css:24-26,51",
              "note": "11-12px 微型排版专用，约 5:1，替代达不到 4.5:1 的 muted"
            },
            {
              "name": "ink-tailwind",
              "var": "--tw-ink",
              "type": "color",
              "value": "#111111",
              "source": "frontend/tailwind.config.js:17",
              "note": "工具类 text-ink 实际取值"
            },
            {
              "name": "ink-tailwind-secondary",
              "var": "--tw-ink-secondary",
              "type": "color",
              "value": "#6e7380",
              "source": "frontend/tailwind.config.js:18"
            },
            {
              "name": "ink-tailwind-muted",
              "var": "--tw-ink-muted",
              "type": "color",
              "value": "#9ca0ab",
              "source": "frontend/tailwind.config.js:19"
            },
            {
              "name": "night-ink",
              "var": "--color-night-ink",
              "type": "color",
              "value": "#e6edf3",
              "source": "frontend/tailwind.config.js:30",
              "note": "深色模式主文字（第三套取值）"
            },
            {
              "name": "night-secondary",
              "var": "--color-night-secondary",
              "type": "color",
              "value": "#9aa4b2",
              "source": "frontend/tailwind.config.js:31"
            },
            {
              "name": "night-muted",
              "var": "--color-night-muted",
              "type": "color",
              "value": "#6e7681",
              "source": "frontend/tailwind.config.js:32"
            }
          ]
        },
        {
          "id": "surface",
          "title": "Surface",
          "blurb": "页面底色与抬升面。深色模式由 .app-glow 叠加「自上而下变亮 + 底部蓝色径向光晕」两层渐变，不是纯色。",
          "tokens": [
            {
              "name": "bg-primary",
              "var": "--bg-primary",
              "type": "color",
              "value": "#f5f5f7",
              "dark": "#04070e",
              "source": "frontend/src/style.css:37,62",
              "note": "body 背景"
            },
            {
              "name": "bg-secondary",
              "var": "--bg-secondary",
              "type": "color",
              "value": "#e8e8ed",
              "dark": "#0a1220",
              "source": "frontend/src/style.css:38,63"
            },
            {
              "name": "card-bg",
              "var": "--card-bg",
              "type": "color",
              "value": "rgba(0, 0, 0, 0.03)",
              "dark": "rgba(255, 255, 255, 0.05)",
              "source": "frontend/src/style.css:43,68"
            },
            {
              "name": "night-base",
              "var": "--color-night",
              "type": "color",
              "value": "#060a14",
              "source": "frontend/tailwind.config.js:27",
              "note": "night.DEFAULT，与 body 的 #04070e 不一致，见 Conflicts"
            },
            {
              "name": "night-raised",
              "var": "--color-night-raised",
              "type": "color",
              "value": "#0d1424",
              "source": "frontend/tailwind.config.js:28",
              "note": "深色卡片实体面，style.css:211 硬编码同值"
            },
            {
              "name": "night-hover",
              "var": "--color-night-hover",
              "type": "color",
              "value": "#16203a",
              "source": "frontend/tailwind.config.js:29"
            },
            {
              "name": "glow-gradient",
              "var": "--glow-gradient",
              "type": "gradient",
              "value": "radial-gradient(120% 60% at 50% 115%, rgba(20,86,240,0.10), transparent 65%), linear-gradient(180deg, #04070e 0%, #060b16 45%, #0a1426 100%)",
              "source": "frontend/src/style.css:111-115",
              "note": "仅深色模式，.app-glow"
            }
          ]
        },
        {
          "id": "border",
          "title": "Border & Line",
          "blurb": "描边极轻，主要靠阴影与玻璃材质分层。深色模式统一用白色低透明度。",
          "tokens": [
            {
              "name": "line",
              "var": "--border-color",
              "type": "color",
              "value": "rgba(0, 0, 0, 0.1)",
              "dark": "rgba(255, 255, 255, 0.12)",
              "source": "frontend/src/style.css:42,67"
            },
            {
              "name": "line-tailwind",
              "var": "--tw-line",
              "type": "color",
              "value": "#f0f1f4",
              "source": "frontend/tailwind.config.js:22"
            },
            {
              "name": "line-hover",
              "var": "--tw-line-hover",
              "type": "color",
              "value": "#cdd0d9",
              "source": "frontend/tailwind.config.js:23"
            },
            {
              "name": "night-line",
              "var": "--color-night-line",
              "type": "color",
              "value": "rgba(240, 246, 252, 0.1)",
              "source": "frontend/tailwind.config.js:33"
            },
            {
              "name": "night-line-hover",
              "var": "--color-night-line-hover",
              "type": "color",
              "value": "rgba(240, 246, 252, 0.25)",
              "source": "frontend/tailwind.config.js:34"
            }
          ]
        },
        {
          "id": "font",
          "title": "Typography — families",
          "blurb": "等宽族一律不含 CJK 字形，中文必须由栈尾中文字体接管，否则 11px 小字会在 Android/Linux 上退化成位图或豆腐块。",
          "tokens": [
            {
              "name": "font-sans",
              "var": "--font-sans",
              "type": "fontFamily",
              "value": "MiSans, \"PingFang SC\", \"Microsoft YaHei\", \"Noto Sans SC\", system-ui, sans-serif",
              "source": "frontend/src/style.css:17"
            },
            {
              "name": "font-mono",
              "var": "--font-mono",
              "type": "fontFamily",
              "value": "\"JetBrains Mono\", SFMono-Regular, Consolas, \"Liberation Mono\", Menlo, \"DejaVu Sans Mono\", monospace, MiSans, \"PingFang SC\", \"Microsoft YaHei\", \"Noto Sans SC\", \"Noto Sans CJK SC\", \"Source Han Sans SC\", \"WenQuanYi Micro Hei\", sans-serif",
              "source": "frontend/src/style.css:18"
            },
            {
              "name": "font-weight-body",
              "var": "--font-weight-body",
              "type": "fontWeight",
              "value": "500",
              "source": "frontend/src/style.css:90",
              "note": "全局默认字重 500，不是 400「正则」"
            },
            {
              "name": "line-height-body",
              "var": "--line-height-body",
              "type": "lineHeight",
              "value": "1.6",
              "source": "frontend/src/style.css:89"
            },
            {
              "name": "text-size-adjust",
              "var": "--text-size-adjust",
              "type": "number",
              "value": "100%",
              "source": "frontend/src/style.css:83-84",
              "note": "关闭移动端字体膨胀，防小字位图化"
            }
          ]
        },
        {
          "id": "scale",
          "title": "Typography — scale",
          "blurb": "只收录源码中真实出现的字号。11-12px 是微型排版区（标签/刻度/计数），必须配 --color-ink-micro。",
          "tokens": [
            {
              "name": "text-2xs",
              "var": "--text-2xs",
              "type": "fontSize",
              "value": "10px",
              "source": "frontend/src/style.css:436",
              "note": "beta 徽章"
            },
            {
              "name": "text-xs",
              "var": "--text-xs",
              "type": "fontSize",
              "value": "12px",
              "source": "frontend/src/style.css:352,355,420,433"
            },
            {
              "name": "text-sm",
              "var": "--text-sm",
              "type": "fontSize",
              "value": "14px",
              "source": "frontend/src/style.css:225,229,403"
            },
            {
              "name": "text-lg",
              "var": "--text-lg",
              "type": "fontSize",
              "value": "18px",
              "source": "frontend/src/style.css:464"
            }
          ]
        },
        {
          "id": "radius",
          "title": "Radius",
          "blurb": "卡片固定 16px；按钮、徽章、头像一律全圆角胶囊。没有中间档位，这是刻意的二值化。",
          "tokens": [
            {
              "name": "radius-card",
              "var": "--radius-card",
              "type": "dimension",
              "value": "16px",
              "source": "frontend/tailwind.config.js:44"
            },
            {
              "name": "radius-pill",
              "var": "--radius-pill",
              "type": "dimension",
              "value": "9999px",
              "source": "frontend/tailwind.config.js:225,229 rounded-full",
              "note": "按钮/徽章/头像"
            },
            {
              "name": "radius-field",
              "var": "--radius-field",
              "type": "dimension",
              "value": "8px",
              "source": "frontend/src/style.css:403 rounded-lg"
            }
          ]
        },
        {
          "id": "shadow",
          "title": "Elevation",
          "blurb": "阴影极淡，几乎只用于「浮起」语义。品牌色的 lift 阴影只给可交互卡片。",
          "tokens": [
            {
              "name": "shadow-soft",
              "var": "--shadow-soft",
              "type": "shadow",
              "value": "0 2px 20px rgba(0, 0, 0, 0.03)",
              "source": "frontend/tailwind.config.js:47"
            },
            {
              "name": "shadow-lift",
              "var": "--shadow-lift",
              "type": "shadow",
              "value": "0 8px 30px rgba(20, 86, 240, 0.08)",
              "source": "frontend/tailwind.config.js:48"
            },
            {
              "name": "shadow-page",
              "var": "--shadow",
              "type": "shadow",
              "value": "0 20px 60px rgba(0, 0, 0, 0.08)",
              "dark": "0 20px 60px rgba(0, 0, 0, 0.6)",
              "source": "frontend/src/style.css:44,69"
            }
          ]
        },
        {
          "id": "glass",
          "title": "Glass",
          "blurb": "毛玻璃是全站核心材质。浅色为半透明白 + backdrop-blur；深色为半透明深蓝，并在窄屏 header 提升到 0.97 不透明度。",
          "tokens": [
            {
              "name": "glass-bg",
              "var": "--glass-bg",
              "type": "color",
              "value": "rgba(255, 255, 255, 0.72)",
              "dark": "rgba(11, 18, 32, 0.72)",
              "source": "frontend/src/style.css:159,173"
            },
            {
              "name": "glass-blur",
              "var": "--glass-blur",
              "type": "dimension",
              "value": "12px",
              "source": "frontend/src/style.css:160-161"
            },
            {
              "name": "glass-strong-bg",
              "var": "--glass-strong-bg",
              "type": "color",
              "value": "rgba(255, 255, 255, 0.86)",
              "dark": "rgba(8, 13, 24, 0.86)",
              "source": "frontend/src/style.css:166,177"
            },
            {
              "name": "glass-strong-blur",
              "var": "--glass-strong-blur",
              "type": "dimension",
              "value": "20px",
              "source": "frontend/src/style.css:167-168"
            },
            {
              "name": "glass-border",
              "var": "--glass-border",
              "type": "color",
              "value": "rgba(240, 241, 244, 0.9)",
              "dark": "rgba(255, 255, 255, 0.12)",
              "source": "frontend/src/style.css:162,174"
            }
          ]
        },
        {
          "id": "motion",
          "title": "Motion",
          "blurb": "标志性交互是「手电筒光斑」：鼠标位置写入 --spot-x/--spot-y，两层径向渐变，亮起 0.2s、熄灭 0.5s，形成真实光源响应节奏。",
          "tokens": [
            {
              "name": "spot-light",
              "var": "--spot-color",
              "type": "color",
              "value": "rgba(20, 86, 240, 0.10)",
              "dark": "rgba(59, 122, 248, 0.16)",
              "source": "frontend/src/style.css:292,336"
            },
            {
              "name": "spot-core",
              "var": "--spot-core",
              "type": "color",
              "value": "rgba(255, 255, 255, 0.08)",
              "source": "frontend/src/style.css:287"
            },
            {
              "name": "spot-in",
              "var": "--spot-in",
              "type": "duration",
              "value": "0.2s",
              "source": "frontend/src/style.css:327"
            },
            {
              "name": "spot-out",
              "var": "--spot-out",
              "type": "duration",
              "value": "0.5s",
              "source": "frontend/src/style.css:332"
            },
            {
              "name": "theme-transition",
              "var": "--theme-transition",
              "type": "duration",
              "value": "0.3s",
              "source": "frontend/src/style.css:91,163"
            },
            {
              "name": "ease-theme",
              "var": "--ease-theme",
              "type": "easing",
              "value": "ease",
              "source": "frontend/src/style.css:91"
            },
            {
              "name": "ease-pop",
              "var": "--ease-pop",
              "type": "easing",
              "value": "cubic-bezier(0.34, 1.56, 0.64, 1)",
              "source": "frontend/src/style.css:375",
              "note": "加星弹跳，带过冲"
            },
            {
              "name": "star-pop",
              "var": "--star-pop",
              "type": "duration",
              "value": "0.45s",
              "source": "frontend/src/style.css:375"
            }
          ]
        },
        {
          "id": "layout",
          "title": "Layout",
          "blurb": "页面容器 1600px 上限，左右呼吸 16/24px；滚动条槽位常驻，避免路由切换时居中内容横移。",
          "tokens": [
            {
              "name": "container-max",
              "var": "--container-max",
              "type": "dimension",
              "value": "1600px",
              "source": "frontend/src/style.css:154"
            },
            {
              "name": "container-pad",
              "var": "--container-pad",
              "type": "dimension",
              "value": "16px / 24px (sm)",
              "source": "frontend/src/style.css:154"
            },
            {
              "name": "header-height",
              "var": "--header-height",
              "type": "dimension",
              "value": "3.5rem",
              "source": "frontend/src/style.css:126"
            },
            {
              "name": "auth-max-width",
              "var": "--auth-max-width",
              "type": "dimension",
              "value": "24rem",
              "source": "frontend/src/style.css:142"
            }
          ]
        }
      ],
      "conflicts": [
        {
          "title": "主文字色三套并存",
          "detail": "#111111（tailwind.config.js:17 text-ink）、#1d1d1f（src/style.css:21 --color-ink）、#e6edf3（tailwind.config.js:30 night.ink）。前两者在浅色模式下同时生效，取决于用工具类还是手写 CSS。"
        },
        {
          "title": "页面底色两套",
          "detail": "body 实际背景 #f5f5f7（src/style.css:88），深色 #04070e（src/style.css:94）；而 tailwind night.DEFAULT 是 #060a14（tailwind.config.js:27），二者未对齐。"
        },
        {
          "title": "brand-500 在深色模式被改写为 brand-600 的值",
          "detail": "浅色 brand-500 = #1456F0（tailwind.config.js:12），深色 --color-brand-500 = #3b7af8（src/style.css:52），与浅色 brand-600（hover 色）同值，语义重叠。"
        },
        {
          "title": "次级文字灰度不一致",
          "detail": "#6e7380（tailwind.config.js:18）与 #6e6e73（src/style.css:22）肉眼接近但不同源。"
        }
      ]
    },
    {
      "id": "rivulet-editorial",
      "title": "Rivulet Editorial",
      "subtitle": "Brand site language — paper, ink, hairline rules, oversized numerals",
      "mode": "scope",
      "modes": [
        {
          "id": "light",
          "label": "Paper",
          "selector": ".rv"
        }
      ],
      "sources": [
        "css/style.css",
        "css/rivulet-fieldnotes.css",
        "css/rivulet-news.css",
        "css/footer.css",
        "css/pages.css",
        "index.html",
        "nav.html"
      ],
      "groups": [
        {
          "id": "paper",
          "title": "Paper",
          "blurb": "整套语言建立在米色纸张上，不是纯白。深一档的 paper-deep 用于分区与 hover。",
          "tokens": [
            {
              "name": "paper",
              "var": "--rv-paper",
              "type": "color",
              "value": "#f2f0e8",
              "source": "css/rivulet-fieldnotes.css:17 / css/rivulet-news.css:8"
            },
            {
              "name": "paper-deep",
              "var": "--rv-paper-deep",
              "type": "color",
              "value": "#e9e5d8",
              "source": "css/rivulet-fieldnotes.css:18"
            },
            {
              "name": "page-white",
              "var": "--rv-page-white",
              "type": "color",
              "value": "#ffffff",
              "source": "css/style.css:36",
              "note": "旧版页面底色（非编辑语言），仅 Hero 与 pages.css 使用"
            }
          ]
        },
        {
          "id": "ink",
          "title": "Ink",
          "blurb": "墨色几乎纯黑 #0b0b0b。层次靠透明度而不是灰阶，所有次级文字都是同一个黑加不同 alpha。",
          "tokens": [
            {
              "name": "ink",
              "var": "--rv-ink",
              "type": "color",
              "value": "#0b0b0b",
              "source": "css/rivulet-fieldnotes.css:19"
            },
            {
              "name": "fg",
              "var": "--rv-fg",
              "type": "color",
              "value": "#0b0b0b",
              "source": "css/rivulet-fieldnotes.css:20"
            },
            {
              "name": "muted",
              "var": "--rv-muted",
              "type": "color",
              "value": "rgba(11, 11, 11, 0.62)",
              "source": "css/rivulet-fieldnotes.css:22",
              "note": "news 作用域取 0.64，见 Conflicts"
            },
            {
              "name": "faint",
              "var": "--rv-faint",
              "type": "color",
              "value": "rgba(11, 11, 11, 0.38)",
              "source": "css/rivulet-fieldnotes.css:23",
              "note": "news 作用域取 0.42，见 Conflicts"
            },
            {
              "name": "line",
              "var": "--rv-line",
              "type": "color",
              "value": "rgba(11, 11, 11, 0.17)",
              "source": "css/rivulet-fieldnotes.css:24"
            },
            {
              "name": "line-strong",
              "var": "--rv-line-strong",
              "type": "color",
              "value": "rgba(11, 11, 11, 0.72)",
              "source": "css/rivulet-fieldnotes.css:25",
              "note": "不是常规分割线，是「1px 黑实线」版面骨架"
            }
          ]
        },
        {
          "id": "accent",
          "title": "Accent",
          "blurb": "品牌蓝只做点缀：编号、eyebrow、选中态、图注。大面积仍是纸与墨。",
          "tokens": [
            {
              "name": "blue",
              "var": "--rv-blue",
              "type": "color",
              "value": "#1456f0",
              "source": "css/rivulet-fieldnotes.css:15 / css/style.css:16"
            },
            {
              "name": "blue-soft",
              "var": "--rv-blue-soft",
              "type": "color",
              "value": "#8cb0ff",
              "source": "css/rivulet-fieldnotes.css:16"
            },
            {
              "name": "navy",
              "var": "--rv-navy",
              "type": "color",
              "value": "#081a3c",
              "source": "css/rivulet-news.css:13",
              "note": "news 专用深底，用于反白区块"
            },
            {
              "name": "blue-hover",
              "var": "--rv-blue-hover",
              "type": "color",
              "value": "#3B7AF8",
              "source": "css/style.css:17"
            }
          ]
        },
        {
          "id": "font",
          "title": "Typography — families",
          "blurb": "三角色分工是这个语言的核心：无衬线做骨架，衬线只做斜体点缀，等宽只做全大写小标签。三者不可互换。",
          "tokens": [
            {
              "name": "font-sans",
              "var": "--rv-sans",
              "type": "fontFamily",
              "value": "'Google Sans Flex', 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif",
              "source": "css/rivulet-fieldnotes.css:27"
            },
            {
              "name": "font-serif",
              "var": "--rv-serif",
              "type": "fontFamily",
              "value": "'Songti SC', 'STSong', 'Noto Serif CJK SC', 'Source Han Serif SC', 'SimSun', serif",
              "source": "css/rivulet-fieldnotes.css:28",
              "note": "中文衬线，只在 em 斜体点缀里出现"
            },
            {
              "name": "font-mono",
              "var": "--rv-mono",
              "type": "fontFamily",
              "value": "'SFMono-Regular', 'Cascadia Mono', 'Roboto Mono', Consolas, 'Liberation Mono', monospace",
              "source": "css/rivulet-fieldnotes.css:29"
            },
            {
              "name": "font-body-legacy",
              "var": "--rv-font-legacy",
              "type": "fontFamily",
              "value": "'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif",
              "source": "css/style.css:35",
              "note": "旧页面体系，仍被 index.html 的 hero 内联样式复用"
            }
          ]
        },
        {
          "id": "scale",
          "title": "Typography — scale",
          "blurb": "字号跨度极大：正文 16px，巨型编号可到 19rem。负字距随字号增大而加深（-0.078em → -0.11em），保证大字号不散。行高反向压缩到 0.66-0.84。",
          "tokens": [
            {
              "name": "display-fig",
              "var": "--rv-display-fig",
              "type": "fontSize",
              "value": "clamp(8rem, 16.5vw, 19rem)",
              "source": "css/rivulet-fieldnotes.css:106",
              "note": "masthead 章节编号"
            },
            {
              "name": "display-fig-lh",
              "var": "--rv-display-fig-lh",
              "type": "lineHeight",
              "value": "0.66",
              "source": "css/rivulet-fieldnotes.css:108"
            },
            {
              "name": "display-fig-ls",
              "var": "--rv-display-fig-ls",
              "type": "letterSpacing",
              "value": "-0.11em",
              "source": "css/rivulet-fieldnotes.css:109"
            },
            {
              "name": "h2",
              "var": "--rv-h2",
              "type": "fontSize",
              "value": "clamp(3.4rem, 7.7vw, 8.8rem)",
              "source": "css/rivulet-fieldnotes.css:269"
            },
            {
              "name": "h2-lh",
              "var": "--rv-h2-lh",
              "type": "lineHeight",
              "value": "0.84",
              "source": "css/rivulet-fieldnotes.css:271"
            },
            {
              "name": "h2-ls",
              "var": "--rv-h2-ls",
              "type": "letterSpacing",
              "value": "-0.078em",
              "source": "css/rivulet-fieldnotes.css:272"
            },
            {
              "name": "h2-weight",
              "var": "--rv-h2-weight",
              "type": "fontWeight",
              "value": "600",
              "source": "css/rivulet-fieldnotes.css:270"
            },
            {
              "name": "h3",
              "var": "--rv-h3",
              "type": "fontSize",
              "value": "clamp(2.2rem, 4.3vw, 4.4rem)",
              "source": "css/rivulet-nav.css:46-49",
              "note": "分组标题"
            },
            {
              "name": "micro",
              "var": "--rv-micro",
              "type": "fontSize",
              "value": "12px",
              "source": "css/rivulet-fieldnotes.css:83,136,248",
              "note": "所有 mono 标签统一 12px"
            },
            {
              "name": "micro-ls",
              "var": "--rv-micro-ls",
              "type": "letterSpacing",
              "value": "0.16em",
              "source": "css/rivulet-fieldnotes.css:86",
              "note": "eyebrow 用 0.18em，编号用 0.1em"
            },
            {
              "name": "body-lh",
              "var": "--rv-body-lh",
              "type": "lineHeight",
              "value": "1.6",
              "source": "css/style.css:38"
            }
          ]
        },
        {
          "id": "layout",
          "title": "Layout",
          "blurb": "左右留白不是固定 px，而是随视口流体缩放的 pad。masthead 用三栏比例 1.05 : 3.1 : 1.85，把巨型编号、宣言、目录压在同一行基线。",
          "tokens": [
            {
              "name": "pad",
              "var": "--rv-pad",
              "type": "dimension",
              "value": "clamp(20px, 4.4vw, 76px)",
              "source": "css/rivulet-fieldnotes.css:26"
            },
            {
              "name": "mast-grid",
              "var": "--rv-mast-grid",
              "type": "gridTemplate",
              "value": "1.05fr 3.1fr 1.85fr",
              "source": "css/rivulet-fieldnotes.css:96"
            },
            {
              "name": "mast-gap",
              "var": "--rv-mast-gap",
              "type": "dimension",
              "value": "clamp(28px, 4vw, 72px)",
              "source": "css/rivulet-fieldnotes.css:98"
            },
            {
              "name": "mast-pad-y",
              "var": "--rv-mast-pad-y",
              "type": "dimension",
              "value": "clamp(42px, 7vw, 94px) / clamp(34px, 5vw, 68px)",
              "source": "css/rivulet-fieldnotes.css:99"
            },
            {
              "name": "roster-grid",
              "var": "--rv-roster-grid",
              "type": "gridTemplate",
              "value": "78px 88px minmax(0, 1fr) 210px 34px",
              "source": "css/rivulet-fieldnotes.css:340",
              "note": "编号 / 头像 / 姓名 / 角色 / 箭头"
            },
            {
              "name": "roster-row-min",
              "var": "--rv-roster-row-min",
              "type": "dimension",
              "value": "clamp(98px, 9.6vw, 142px)",
              "source": "css/rivulet-fieldnotes.css:343"
            },
            {
              "name": "container",
              "var": "--rv-container",
              "type": "dimension",
              "value": "1200px",
              "source": "css/style.css:54",
              "note": "仅旧页面体系"
            }
          ]
        },
        {
          "id": "radius",
          "title": "Radius",
          "blurb": "编辑版式本身是零圆角（直角、细线、方框），16px / 50px 只属于旧页面与按钮体系。这是两代语言的接缝。",
          "tokens": [
            {
              "name": "radius-editorial",
              "var": "--rv-radius-editorial",
              "type": "dimension",
              "value": "0",
              "source": "css/rivulet-fieldnotes.css:337-360",
              "note": "编辑区块默认直角，未声明任何圆角"
            },
            {
              "name": "radius-card",
              "var": "--rv-radius-card",
              "type": "dimension",
              "value": "16px",
              "source": "css/style.css:24"
            },
            {
              "name": "radius-pill",
              "var": "--rv-radius-pill",
              "type": "dimension",
              "value": "50px",
              "source": "css/style.css:25"
            }
          ]
        },
        {
          "id": "motion",
          "title": "Motion",
          "blurb": "两条缓动并存：ease-smooth 用于入场位移（快出慢停），ease-ui 用于状态过渡（对称）。页面切换有 0.8s 的主时序。",
          "tokens": [
            {
              "name": "ease-smooth",
              "var": "--rv-ease",
              "type": "easing",
              "value": "cubic-bezier(0.22, 1, 0.36, 1)",
              "source": "css/rivulet-fieldnotes.css:19 / css/style.css:23"
            },
            {
              "name": "ease-ui",
              "var": "--rv-ease-ui",
              "type": "easing",
              "value": "cubic-bezier(0.42, 0, 0.58, 1)",
              "source": "css/style.css:11"
            },
            {
              "name": "ease-ani",
              "var": "--rv-ease-ani",
              "type": "easing",
              "value": "cubic-bezier(0.1, 0.1, 0.2, 1)",
              "source": "css/style.css:14"
            },
            {
              "name": "transition-speed",
              "var": "--rv-transition",
              "type": "duration",
              "value": "0.8s",
              "source": "css/style.css:12"
            },
            {
              "name": "content-fade",
              "var": "--rv-fade",
              "type": "duration",
              "value": "0.45s",
              "source": "css/style.css:13"
            },
            {
              "name": "reveal-delay",
              "var": "--rv-reveal-delay",
              "type": "duration",
              "value": "0.08s 步进（由 --i 驱动）",
              "source": "css/rivulet-news.css:135 / index.html:2053-2077"
            }
          ]
        }
      ],
      "conflicts": [
        {
          "title": "rlx 与 nx 是同一套令牌的两份拷贝",
          "detail": "css/rivulet-fieldnotes.css:14-38 定义 --rlx-*，css/rivulet-news.css:7-25 定义 --nx-*，值几乎一致但 muted/faint 透明度不同（0.62/0.38 vs 0.64/0.42），版式实现也各写一遍（rlx-mast vs nx-mast）。本库统一为 --rv-*，并保留两套别名。"
        },
        {
          "title": "旧 pages.css 体系未完全退场",
          "detail": "css/rivulet-news.css:4 注释声明「Loaded after pages.css so it can replace the older card/pill system」，但 .chip/.eyebrow/.article-* 仍在 nav.html、news.html 中被使用，两套类名共存。"
        },
        {
          "title": "两代页面底色不同",
          "detail": "旧 body 为 #ffffff（css/style.css:36），编辑区 .rlx 为 #f2f0e8（css/rivulet-fieldnotes.css:17）。首页在两者之间硬切，靠 hero 全屏白过渡。"
        },
        {
          "title": "字体栈第三套遗留",
          "detail": "css/style.css:35 的 Inter 栈与编辑语言的 Google Sans Flex 栈（css/rivulet-fieldnotes.css:27）并存，hero 内联样式仍用前者（index.html:70）。"
        }
      ]
    }
  ]
}