/* @ui-arch design tokens - light theme defaults + dark theme overrides 分组:颜色 / 混色浓度 / 圆角 / 间距 / 字号 / 字距 / 字重与行高 / 边框 / 阴影 / 动效 / 焦点环 / 控件高度 / 层级 约定:皮肤包(packages/skin/ui/ui.css)只能消费 var(--ua-*),禁止硬编码颜色、阴影、时长、字号; 本文件是令牌唯一来源,ua tokens / llms-full.txt / MCP get_tokens 全部从这里派生。 */ :root { /* ---- 颜色:语义色,暗色主题逐个覆盖 ---- */ --ua-color-bg: #ffffff; /* 页面底色:弹层、卡片之外的最底层 */ --ua-color-surface: #f6f7f9; /* 表面色:卡片 / 表头 / 次级容器 */ --ua-color-surface-2: color-mix(in srgb, var(--ua-color-text) 4%, var(--ua-color-bg)); /* 表面二阶:悬停底、次级容器 */ --ua-color-surface-3: color-mix(in srgb, var(--ua-color-text) 8%, var(--ua-color-bg)); /* 表面三阶:按下底、最深容器 */ --ua-color-surface-inset: color-mix(in srgb, var(--ua-color-text) 5%, var(--ua-color-bg)); /* 凹陷区:输入框 / 代码块底 */ --ua-color-text: #1c1e21; /* 主文本色:正文与标题共用 */ --ua-color-text-muted: #6b7280; /* 辅助文本色:说明、占位、次要信息 */ --ua-color-text-secondary: #4b5158; /* 次级文本色:介于主文本与辅助文本之间 */ --ua-color-text-faint: #9aa0a8; /* 三级文本色:禁用、极弱说明 */ --ua-color-overlay: rgba(0, 0, 0, 0.45); /* 遮罩:抽屉 / 弹窗 / 命令面板等半透明底 */ --ua-color-overlay-strong: rgba(0, 0, 0, 0.6); /* 强遮罩:大图预览等需要更强聚焦的浮层 */ --ua-color-border: rgba(0, 0, 0, 0.15); /* 基础边框色:输入框 / 卡片 / 分割线 */ --ua-color-scrollbar: rgba(0, 0, 0, 0.22); /* 滚动条拇指色:比边框重一档,白底上看得清又不抢内容 */ --ua-color-scrollbar-hover: rgba(0, 0, 0, 0.38); /* 滚动条拇指悬停色:加深表示可拖拽 */ --ua-color-highlight: rgba(255, 255, 255, 0.5); /* 内高光白:主按钮等实色控件顶缘的 1px 高光(暗色必须降档,否则刺眼) */ --ua-color-accent: #185fa5; /* 强调色:主操作、选中态、焦点环底色 */ --ua-color-accent-contrast: #ffffff; /* 强调色上的文字色:保证主按钮对比度 */ --ua-color-accent-soft: color-mix(in srgb, var(--ua-color-accent) 72%, var(--ua-color-bg)); /* 柔和强调色:细线 / 指示条 / 内嵌焦点环用,纯 accent 做 2px 实线会发刺 */ --ua-color-tint-accent: color-mix(in srgb, var(--ua-color-accent) var(--ua-alpha-soft), transparent); /* 语义淡底标准档:选中底、激活项底 */ --ua-color-tint-accent-weak: color-mix(in srgb, var(--ua-color-accent) 5%, transparent); /* 语义淡底弱档:悬停底、极弱强调底 */ --ua-color-danger: #a32d2d; /* 危险色:错误、删除、校验失败 */ --ua-color-success: #0f6e56; /* 成功色:完成、通过、正向结果 */ --ua-color-warning: #9a6b1f; /* 警告色:提醒、需注意但不阻断 */ /* ---- 混色浓度:color-mix 里「混入多少」的档位,百分比亮暗通用(近档已就近收敛:12→10、16/20/24→18、40→45、65/80→70) ---- */ --ua-alpha-soft: 10%; /* 淡底档:选中底、激活项底、语义色淡底 */ --ua-alpha-tint: 18%; /* 弱强调档:hover 淡底、警示淡底、白色细纹 */ --ua-alpha-line: 30%; /* 描边调和档:边框色里混入文本色加深 */ --ua-alpha-mid: 45%; /* 中浓档:半透虚线边、淡化滚动条底 */ --ua-alpha-strong: 55%; /* 强调档:语义色图标底、强调描边 */ --ua-alpha-heavy: 70%; /* 重档:渐变端点、近实色的弱化描边 */ /* ---- 圆角:三档,控件用小、卡片用中、弹层用大 ---- */ --ua-radius-sm: 4px; /* 小圆角:按钮 / 输入框 / 标签等控件 */ --ua-radius-md: 8px; /* 中圆角:卡片 / 面板 / 分组容器 */ --ua-radius-lg: 12px; /* 大圆角:弹窗 / 抽屉等浮层外壳 */ --ua-radius-md-inset: calc(var(--ua-radius-md) - 1px); /* 内衬圆角:贴边的内层块(输入附加块等)与外层弧线对齐,减去 1px 边框 */ /* ---- 间距:4px 基准四档 + 表格单元格复合值 ---- */ --ua-space-1: 4px; /* 间距 1 档:图标与文字之间、紧邻元素 */ --ua-space-2: 8px; /* 间距 2 档:控件内边距、同组元素间隔 */ --ua-space-3: 12px; /* 间距 3 档:表单行内边距、卡片内边距 */ --ua-space-4: 16px; --ua-space-05: 2px; /* 半步:微型内距(紧凑徽标内衬、选中点偏移) */ --ua-space-15: 6px; /* 一档半:紧凑控件内距(小按钮 / 标签) */ --ua-space-25: 10px; /* 二档半:标准控件内距(介于 8 与 12 之间的既有主流值) */ --ua-space-35: 14px; /* 三档半:宽松行内距(列表行 / 菜单行) */ /* 间距 4 档:区块内边距、卡片间距 */ --ua-space-table-cell: var(--ua-space-2) var(--ua-space-3); /* 表格单元格内边距:上下 2 档 / 左右 3 档 */ --ua-space-6: 24px; /* 六档:空状态整行留白等大面积竖直呼吸(比 4 档再松一档,不进半步梯子) */ --ua-space-indent: 22px; /* 层级缩进:树 / 时间线每级缩进量与图标列宽度对齐,不参与常规内距梯子 */ /* ---- 字号:五档主轴 + 三档展示字号 + 两档相对缩放(10/11px 统一归入 xs,避免单独成档) ---- */ --ua-font-size-xs: 11px; /* 最小字号:角标 / 辅助说明 / 密排表格 */ --ua-font-size-sm: 12px; /* 小字号:次级文本、表头、提示 */ --ua-font-size-md: 13px; /* 正文字号:控件文本与默认正文 */ --ua-font-size-lg: 14px; /* 大字号:强调正文、卡片标题 */ --ua-font-size-xl: 16px; /* 次标题字号:分组标题、弹窗标题 */ --ua-font-size-2xl: 18px; /* 标题字号:页面区块标题 */ --ua-font-size-3xl: 22px; /* 图标字号:评分星、开关内嵌图标等由字符撑起的图形 */ --ua-font-size-4xl: 26px; /* 指标字号:统计卡片的主数值 */ --ua-font-size-5xl: 34px; /* 插画字号:空状态、结果页的大号字符图标 */ --ua-font-size-scale-md: 0.92em; /* 相对缩放档(相对父级):代码片段等需跟上下文缩放的文本 */ --ua-font-size-scale-sm: 0.85em; /* 相对缩放小档:行内小图标随文字一起缩,不建绝对像素 */ /* ---- 字距:两档,宽档给表头 / 分组小标题做节奏,紧档给大标题收边 ---- */ --ua-tracking-wide: 0.04em; /* 宽档:表头、分组标题、大写小标题(小字号需要字距才不糊成一团) */ --ua-tracking-tight: -0.01em; /* 紧档:大标题反向收边,字号越大越需要收紧才不散 */ /* ---- 字重与行高:标题 / 正文 / 辅助三档 ---- */ --ua-weight-normal: 400; /* 正文档:正文与表单值 */ --ua-weight-medium: 500; /* 辅助强调档:控件文本、表头、次要标题 */ --ua-weight-semibold: 600; /* 标题档:区块标题、关键数值 */ --ua-weight-bold: 700; /* 特重档:统计大数字等少数强调位 */ --ua-leading-none: 1; /* 单行档:图标 / 数字 / 按钮文字的垂直居中 */ --ua-leading-tight: 1.35; /* 紧凑档:标题、单行控件 */ --ua-leading-normal: 1.55; /* 正文档:多行正文、说明文字 */ /* ---- 边框:细分(比基础边框更淡,用于分割线,避免 1px 线过重) ---- */ --ua-border-subtle: color-mix(in srgb, var(--ua-color-border) 60%, transparent); /* 细分边框色(专用于分割线):表格行线 / 卡片页脚 / 弹窗抽屉页头页脚 / 列表项 / 选项卡底边 / 折叠面板与步骤条连接线 / 分隔线组件 */ /* ---- 阴影:四档 elevation,柔和优先(扩散大、透明度低) ---- */ --ua-shadow-1: 0 1px 2px rgba(0, 0, 0, 0.06); /* 1 档:贴地投影,用于卡片 / 输入组 / 轻浮起 */ --ua-shadow-2: 0 4px 12px rgba(0, 0, 0, 0.1); /* 2 档:下拉菜单 / 选择面板 / 气泡提示 */ --ua-shadow-3: 0 10px 28px rgba(0, 0, 0, 0.12); /* 3 档:浮层 / 悬浮面板 / 拖拽中的卡片 */ --ua-shadow-4: 0 18px 44px rgba(0, 0, 0, 0.14); /* 4 档:模态弹窗 / 抽屉 / 通知中心等最高层 */ --ua-shadow-accent: 0 3px 10px color-mix(in srgb, var(--ua-color-accent) 25%, transparent); /* 主题色投影:主按钮 / 强调控件悬停浮起 */ --ua-shadow-accent-strong: 0 8px 20px color-mix(in srgb, var(--ua-color-accent) 35%, transparent); /* 主题色强投影:返回顶部等悬浮强调件 */ --ua-shadow-highlight: inset 0 1px 0 var(--ua-color-highlight); /* 内高光型:实色控件顶缘 1px 高光(1px 是细线语义,不进 elevation 四档) */ --ua-shadow-hairline: inset 0 -1px 0 var(--ua-border-subtle); /* 描边型:粘性表头 / 吸底条底部的 1px 细线(用阴影画线,不占布局高度) */ --ua-shadow-inset-border: inset 0 0 0 1px var(--ua-color-border); /* 描边型:日历「今天」等只需要一圈细内框、不想改盒模型的场景 */ --ua-shadow-inset-accent: inset 0 0 0 1px var(--ua-color-accent); /* 描边型:强调色内框,标记「今天」这类弱选中态 */ --ua-shadow-gap: 0 0 0 2px var(--ua-color-bg); /* 断口型:用底色描一圈把相邻元素分开(头像组叠层、角标与按钮边缘) */ /* ---- 动效:四档交互时长 + 四档循环时长 + 两条主缓动曲线 ---- */ --ua-duration-fast: 0.15s; /* 快:hover / 聚焦 / 颜色与边框变化(既有样式的主流时长) */ --ua-duration-base: 0.2s; /* 中:展开收起 / 位移 / 透明度过渡 */ --ua-duration-slow: 0.25s; /* 慢:浮层出入场 / 较大面积变化 */ --ua-duration-slower: 0.35s; /* 更慢:进度条宽度推进 / 描边长度等大跨度形变(比浮层出场再长一档) */ --ua-duration-loop-fast: 0.6s; /* 循环快档:条纹滚动等细微循环 */ --ua-duration-loop-mid: 0.8s; /* 循环中档:加载转圈 / 开关内转圈(0.7 与 0.8 收敛到此档) */ --ua-duration-loop-slow: 1.2s; /* 循环慢档:骨架扫光 / 不确定进度条(1.4 收敛到此档) */ --ua-duration-loop-long: 1.6s; /* 循环长档:时间线呼吸等低频脉冲,别再用在加载态上 */ --ua-duration-step: 0.02s; /* 微步档:交错入场的单项间隔(20ms),只供 calc(n * var(--ua-duration-step)) 派生,不直接当过渡时长 */ --ua-ease: cubic-bezier(0.2, 0.8, 0.2, 1); /* 标准缓动:先快后缓,控件交互默认用这条 */ --ua-ease-out: cubic-bezier(0.16, 1, 0.3, 1); /* 出场缓动:元素进入视口 / 弹层出现时使用 */ --ua-ease-spring: cubic-bezier(0.34, 1.3, 0.5, 1); /* 回弹缓动:弹窗本体、悬浮按钮这类需要一点过冲的入场 */ --ua-translate-1: 1px; /* 位移 1 档:hover 微上浮(行内小件) */ --ua-translate-2: 2px; /* 位移 2 档:hover 上浮标准档(按钮 / 卡片 / 悬浮件) */ --ua-translate-3: 3px; /* 位移 3 档:贴边入场偏移(tooltip 箭头侧滑等几何配对位移) */ --ua-translate-4: 4px; /* 位移 4 档:小型弹层入场(下拉菜单 / 气泡滑入) */ --ua-translate-6: 6px; /* 位移 6 档:入场位移中档(alert / 通知条滑入) */ --ua-translate-8: 8px; /* 位移 8 档:浮动件入场(悬浮按钮弹出 / 大弹层滑入;既有 10px 收敛到此档) */ --ua-translate-12: 12px; /* 位移 12 档:长距离滑入(toast 侧边进出场 / 开关行程) */ /* ---- 焦点环:统一外环与内嵌两种形态,全部由强调色派生 ---- */ --ua-focus-ring: 0 0 0 3px color-mix(in srgb, var(--ua-color-accent) 22%, transparent); /* 外焦点环:输入框 / 按钮 / 可聚焦控件 */ --ua-focus-ring-inset: inset 0 0 0 2px color-mix(in srgb, var(--ua-color-accent) 40%, transparent); /* 内嵌焦点环:内部已裁切或需要贴合边框的控件 */ --ua-focus-ring-warning: 0 0 0 3px color-mix(in srgb, var(--ua-color-warning) 25%, transparent); /* 语义警告焦点环:评分等以警告色为主色的控件 */ --ua-focus-ring-danger: 0 0 0 3px color-mix(in srgb, var(--ua-color-danger) 18%, transparent); /* 错误强调环:校验失败时叠在被标红控件外侧,比 danger 描边更外扩一圈 */ --ua-focus-ring-pulse: 0 0 0 5px color-mix(in srgb, var(--ua-color-accent) 4%, transparent); /* 呼吸光晕档:与焦点环交替出现做脉冲动画(时间线条目) */ --ua-focus-ring-selected: 0 0 0 1.5px var(--ua-color-accent-soft); /* 选中环(非焦点):细一档 + 柔和色,2px 实色在色板/网格里像加粗边框 */ --ua-focus-outline: 2px solid var(--ua-color-accent); /* 外焦点描边(outline 路线):键盘可见性标准档 */ --ua-focus-outline-inset: 1.5px solid var(--ua-color-accent-soft); /* 内嵌焦点描边:密集列表细一档 + 柔和色,2px 实线像粗边框 */ --ua-focus-outline-soft: 2px solid color-mix(in srgb, var(--ua-color-accent) var(--ua-alpha-mid), transparent); /* 柔和外描边:大面积控件用淡化主题色 */ /* ---- 控件高度:三档,略放大以提升可点面积 ---- */ --ua-control-h-sm: 28px; /* 小控件高度:紧凑工具栏、标签内嵌按钮 */ --ua-control-h-md: 34px; /* 中控件高度:输入框 / 下拉 / 按钮的默认档 */ --ua-control-h-lg: 40px; /* 大控件高度:主按钮、搜索框、移动端触控目标 */ /* ---- 层级:五档,数值留出间隙便于中间插入 ---- */ --ua-z-dropdown: 100; /* 下拉层:菜单 / 选择面板 / 气泡 */ --ua-z-sticky: 200; /* 粘性层:表头、吸顶工具栏 */ --ua-z-overlay: 300; /* 遮罩层:模态背后的半透明遮罩 */ --ua-z-modal: 400; /* 模态层:弹窗 / 抽屉本体 */ --ua-z-toast: 500; /* 通知层:全局消息提示,永远最高 */ } [data-theme='dark'] { --ua-color-bg: #101216; /* 暗色页面底色 */ --ua-color-surface: #1a1c22; /* 暗色表面色 */ --ua-color-surface-2: color-mix(in srgb, var(--ua-color-text) 5%, var(--ua-color-bg)); /* 暗色表面二阶:悬停底、次级容器 */ --ua-color-surface-3: color-mix(in srgb, var(--ua-color-text) 10%, var(--ua-color-bg)); /* 暗色表面三阶:按下底、最深容器 */ --ua-color-surface-inset: color-mix(in srgb, var(--ua-color-text) 6%, var(--ua-color-bg)); /* 暗色凹陷区:输入框 / 代码块底 */ --ua-color-text: #e7e9ec; /* 暗色主文本色 */ --ua-color-text-muted: #888780; /* 暗色辅助文本色 */ --ua-color-text-secondary: #b4bac2; /* 暗色次级文本色 */ --ua-color-text-faint: #62676f; /* 暗色三级文本色:禁用、极弱说明 */ --ua-color-overlay: rgba(0, 0, 0, 0.6); /* 暗色遮罩:暗底上需加深才可分辨 */ --ua-color-overlay-strong: rgba(0, 0, 0, 0.7); /* 暗色强遮罩 */ --ua-color-border: rgba(255, 255, 255, 0.15); /* 暗色基础边框色:改用白色低透明度,避免黑边在暗底上消失 */ --ua-color-scrollbar: rgba(255, 255, 255, 0.24); /* 暗色滚动条拇指:暗底上黑拇指完全看不见,改白色低透明度 */ --ua-color-scrollbar-hover: rgba(255, 255, 255, 0.42); /* 暗色滚动条拇指悬停:亮度再升一档表示可拖拽 */ --ua-color-highlight: rgba(255, 255, 255, 0.08); /* 暗色内高光:暗底上白高光刺眼,降到 8% 只留一道细光 */ --ua-color-accent: #378add; /* 暗色强调色:提亮以保证暗底可读 */ --ua-color-accent-contrast: #042c53; /* 暗色强调色上的文字色:深色反白,维持对比 */ --ua-color-accent-soft: color-mix(in srgb, var(--ua-color-accent) 82%, var(--ua-color-bg)); /* 暗色柔和强调色:与亮色同结构,混入暗底即自然降饱和 */ --ua-color-tint-accent: color-mix(in srgb, var(--ua-color-accent) 14%, transparent); /* 暗色淡底标准档:暗底上淡底不可见,透明度升一档 */ --ua-color-tint-accent-weak: color-mix(in srgb, var(--ua-color-accent) 8%, transparent); /* 暗色淡底弱档:透明度升一档 */ --ua-color-danger: #d96a6a; /* 暗色危险色 */ --ua-color-success: #4fc39e; /* 暗色成功色 */ --ua-color-warning: #d9a94f; /* 暗色警告色 */ /* 暗色下投影需要更高黑度才看得见:亮色那套在暗底上几乎不可见 */ --ua-shadow-1: 0 1px 2px rgba(0, 0, 0, 0.3); /* 暗色 1 档:贴地投影 */ --ua-shadow-2: 0 4px 12px rgba(0, 0, 0, 0.4); /* 暗色 2 档:下拉 / 气泡 */ --ua-shadow-3: 0 10px 28px rgba(0, 0, 0, 0.45); /* 暗色 3 档:浮层 / 悬浮面板 */ --ua-shadow-4: 0 18px 44px rgba(0, 0, 0, 0.5); /* 暗色 4 档:模态 / 抽屉 / 通知 */ --ua-shadow-accent: 0 3px 10px color-mix(in srgb, var(--ua-color-accent) 30%, transparent); /* 暗色主题色投影:透明度略升补可见性 */ --ua-shadow-accent-strong: 0 8px 20px color-mix(in srgb, var(--ua-color-accent) 40%, transparent); /* 暗色主题色强投影 */ --ua-shadow-highlight: inset 0 1px 0 var(--ua-color-highlight); /* 暗色内高光:值不变、靠 --ua-color-highlight 降到 8%,暗底上仍是一道细光 */ --ua-shadow-hairline: inset 0 -1px 0 var(--ua-border-subtle); /* 暗色描边细线:随 border-subtle 翻转 */ --ua-shadow-inset-border: inset 0 0 0 1px var(--ua-color-border); /* 暗色内框 */ --ua-shadow-inset-accent: inset 0 0 0 1px var(--ua-color-accent); /* 暗色强调内框 */ --ua-shadow-gap: 0 0 0 2px var(--ua-color-bg); /* 暗色断口:底色翻转后仍断开 */ --ua-focus-ring: 0 0 0 3px color-mix(in srgb, var(--ua-color-accent) 34%, transparent); /* 暗色焦点环:透明度略升补对比 */ --ua-focus-ring-inset: inset 0 0 0 2px color-mix(in srgb, var(--ua-color-accent) 52%, transparent); /* 暗色内嵌焦点环 */ --ua-focus-ring-warning: 0 0 0 3px color-mix(in srgb, var(--ua-color-warning) 34%, transparent); /* 暗色警告焦点环 */ --ua-focus-ring-danger: 0 0 0 3px color-mix(in srgb, var(--ua-color-danger) 30%, transparent); /* 暗色错误强调环 */ --ua-focus-ring-pulse: 0 0 0 5px color-mix(in srgb, var(--ua-color-accent) 8%, transparent); /* 暗色呼吸光晕:暗底上低透明度看不见,加倍 */ --ua-focus-ring-selected: 0 0 0 1.5px var(--ua-color-accent-soft); /* 暗色选中环:随 accent 翻转并与亮色同口径 */ --ua-focus-outline: 2px solid var(--ua-color-accent); /* 暗色外焦点描边:随 accent 翻转,与亮色同口径 */ --ua-focus-outline-inset: 1.5px solid var(--ua-color-accent-soft); /* 暗色内嵌焦点描边:accent-soft 随底色重混 */ --ua-focus-outline-soft: 2px solid color-mix(in srgb, var(--ua-color-accent) var(--ua-alpha-mid), transparent); /* 暗色柔和外描边:浓度档与亮色一致 */ }