同じマークアップで、ライトもダークも。
モードで切り替わるのはトークンの値です。クラス名は変わりません。仕切りをドラッグして、使われる値を確認してください。
npm create @master/css@2.0.0 デザインシステム
テーマ、トークン、広色域の色、レイアウト、モーションをクラスで記述できます。生成される CSS の対応関係も明確です。
テーマトークンを定義モードで切り替わるのはトークンの値です。クラス名は変わりません。仕切りをドラッグして、使われる値を確認してください。
色、余白、角丸、文字組みを @theme に一度定義すれば、ユーティリティ、コンポーネント、モードが共通の値を参照します。
@theme { --font-family-sans: "Inter"; --spacing-md: 1rem; /* p-md */ --spacing-lg: 1.5rem; /* p-lg */ --radius-xl: 0.75rem; /* r-xl */ /* bg-surface-base */ --color-surface-base: light-dark( var(--color-zinc-0), var(--color-zinc-95) );}グリッドのスパン、レスポンシブレイアウト、アニメーション、ビュートランジションを、対象のマークアップのすぐそばに記述できます。
写真をクリックすると、トランジションを確認できます。
ユーティリティはコンポーネントより後のレイヤーにあるため、マークアップのクラスが !important なしで優先されます。
深い色から sRGB を超える鮮やかなアクセントまで、一貫した段階で選べる P3 パレット。
エディター
言語サービスがマニフェストに基づいてクラスを補完し、ホバーで生成 CSS を表示し、コード内に色のスウォッチを示します。
矢印キーでファイル内を移動できます。
レンダリング
標準は静的 CSS の配信です。HTML に事前レンダリングすることも、ブラウザーで生成することもできます。クラスはそのままです。
レンダリングモードを比較Scan complete class names in your source.Write the matching rules to app.css.Load the stylesheet before the page is painted.Reuse the rule already shipped in app.css.
Read the classes in the server-rendered HTML.Embed the first-load CSS in the page.Paint with the CSS that came with the HTML.Start the deferred engine for an uncovered class.
Read the page’s classes in the browser.Start the runtime and create a stylesheet.Generate and apply the rules in the browser.Insert the new rule into the browser stylesheet.
CSS サイズ
各ページが読み込む CSS を、非圧縮と Brotli 圧縮で比較します。Master CSS が追加するのは、そのページで使うユーティリティだけです。残りは各サイト固有のスタイルです。
ベンチマークの詳細を見るドキュメントページごとの CSS · 2026-11-04
リント
エディターの ESLint、スクリプトの CLI、エージェントの MCP サーバーが、同じルールと修正方法でクラスを検証します。
すべてのリントルールを見る<button class="inline-flex (color:12px)"> Save changes</button>@master/css/no-invalid-classes 1:28
$ npx @master/css-cli lint --format stylish1:28error@master/css/no-invalid-classes
→ mastercss_lint_content button.html"ruleId": "no-invalid-classes","severity": "error","loc": { "start": { "line": 1, "column": 28 } }
AI エージェント
MCP サーバーがコーディングエージェントにマニフェストとリントルールを提供します。エージェントは自分の編集を検証し、修正を差分として提示できます。
MCP サーバーを設定mastercss_manifest_query 12 個のトークン{ "kind": "token", "namespace": "spacing" } spacing-4xs … spacing-5xlplan-card.html+3 −3mastercss_inspect_class matched{ "className": "bg-surface-raised" } background-color: var(--color-surface-raised)mastercss_lint_project 4 件の問題{ "patterns": ["plan-card.html"] } 警告 4 件、うち 4 件を修正可能mastercss_preview_fixes 1 file changed{ "patterns": ["plan-card.html"] } confirmToken "Vq3zK8…Ug6J"mastercss_apply_preview 適用済み{ "confirmToken": "Vq3zK8…Ug6J" } ハッシュを確認してファイルを書き込みましたmastercss_lint_project 問題なし{ "patterns": ["plan-card.html"] } 0 件の問題mastercss_lint_project問題なし
plan-card.htmlsha256 4e0a1aab…c9c0ワークフロー
ひとつのプロジェクトマニフェストが、各連携、モノレポ内のアプリ、ルートの CSS を制御します。変更の影響範囲はスナップショットの比較で確認できます。
フレームワーク別の導入方法フレームワーク連携も CLI も同じプロジェクトマニフェストを読み込むため、ビルドとエディターの判断が一致します。
各ファイルは最も近いプロジェクトに従うため、同じクラスでもアプリごとに異なる値へ解決できます。
index.cssルートのスタイルシートは、グローバルルールを複製せずに共通のトークン、ミックスイン、カスタムメディアを使えます。
.hero { display: grid; gap: var(--spacing-5xl); @media (--md) { grid-auto-flow: column; }}.plan { padding: var(--spacing-lg); @apply --raised; @media (--md) { padding: var(--spacing-5xl); }}.post { max-width: 42rem; padding: var(--spacing-lg); @media (--md) { @apply --raised; }}トークンを変更してスナップショットを比較すると、影響するクラス、ファイル、出力がわかります。
npm create @master/css@2.0.0