doc_id: frontend-css-governance.zh-CN title: “Frontend CSS governance” language: zh-CN source_language: en implementation_status: current document_status: current translation_status: synced last_verified: 2026-09-04 owners:
本仓库的前端样式体系由 Astryx、@maka/ui 产品组合样式和 renderer surface CSS 组成。级联顺序必须被明确约束,不能随意改动。
apps/desktop/src/renderer/styles.css 只能作为样式入口文件使用。@import 和顶层入口编排语句。apps/desktop/src/renderer/styles/**/*.css。maka-tokens.css 尾部的历史 recipe 和 reference-shell.css 是待收敛的 transitional exceptions;不要继续向这两个例外增加 surface 规则。@maka/ui 的共享 selector 使用 kebab-case .maka-* 方言。styles/settings/** surface 使用 camelCase .settings* selector;settings 内的新 selector 应延续该方言,避免同一 surface 混用两套命名。@layer base@layer components@import "./file.css" layer(components)。@layer { @import ... } 这种写法。Astryx reset 和组件层在前,Maka base token 与产品 components 在后。应在最近的现有职责缝隙解决覆盖,不再增加更高优先级的兼容层。
!important 使用规则!important:.maka-visually-hidden!important 都必须同时满足:Justified: 注释!important。apps/desktop/src/renderer/maka-tokens.css/* local: ... */这些规则靠评审保证。静态正确性交给 Biome、Knip 和 typecheck;accessibility 保留聚焦的检查。CSS 使用关系和 Story 文案不再由全仓 regex baseline 决定。
调整 renderer CSS 时,建议按下面顺序推进:
styles.css 中的真实规则块迁到子文件。@maka/ui 或对应 renderer surface。!important。Button / Textarea / EmptyState 这类 primitive 的覆盖,优先从组件接口层解决,不要长期依赖 renderer CSS 强压。