diff --git a/docs/FRONTEND_REBUILD_STATUS.md b/docs/FRONTEND_REBUILD_STATUS.md
index a2be2da6..9a82956f 100644
--- a/docs/FRONTEND_REBUILD_STATUS.md
+++ b/docs/FRONTEND_REBUILD_STATUS.md
@@ -5,6 +5,17 @@ Baseline: main `71ede3053b1d71f4c6e4f7053b355ebe301c1a1b`, checked on
the first recovery/connection fixes; #286 contributes scoped journey fixes.
Passing those slices does not establish complete product or platform acceptance.
+## Neutral glass follow-up — 2026-10-10
+
+PR #294 merged into main `4a5c8909`. The next user-directed visual pass removes
+the separate V2 purple accent and decorative yellow/orange/blue/green palettes.
+Shared neutral material tokens supply white filled primary controls, dark button
+text and high-opacity light/dark/glass surfaces. Semantic errors, code diffs and
+terminal ANSI content retain their meaning. The [palette inventory](branding/neutral-glass-palette.md)
+records before/after counts, accessibility checks and original browser evidence.
+This visual pass leaves the remaining environment, extension and native journey
+roadmap below in place.
+
## Product guidance revision — 2026-10-10
The user's latest direction treats language and information architecture as part
diff --git a/docs/PROJECT_MEMORY.md b/docs/PROJECT_MEMORY.md
index d2909ef9..72c37034 100644
--- a/docs/PROJECT_MEMORY.md
+++ b/docs/PROJECT_MEMORY.md
@@ -1,5 +1,12 @@
# Prayu Project Memory
+> 2026-10-10 neutral glass follow-up: after #294 merged, the user requested removal
+> of purple, yellow/orange and other independent decorative palettes. Shared
+> light/dark/glass tokens now use neutral high-opacity surfaces, white filled
+> primary controls and dark foregrounds. V2 and legacy components share these
+> roles; danger, code diffs and terminal ANSI output retain their content meaning.
+> See [palette inventory and conventions](branding/neutral-glass-palette.md).
+
> 2026-10-10 product guidance revision: the frontend rebuild includes user-facing
> language and information hierarchy. The connection hub groups task preparation,
> tools/collaboration and runtime settings; MCP/Plugin/LSP show actual setup stages.
diff --git a/docs/branding/neutral-glass-palette.md b/docs/branding/neutral-glass-palette.md
new file mode 100644
index 00000000..27d5ed36
--- /dev/null
+++ b/docs/branding/neutral-glass-palette.md
@@ -0,0 +1,59 @@
+# 中性玻璃材质与颜色收敛
+
+2026-10-10,按用户对紫色、黄橙色和白色填充的反馈更新。基线为合并
+前端重建后的 main `4a5c8909895ce4a1b0b6620f479f9abeb406402e`;它与
+`75aceac721c8dfb6911a4540427da7684a02c961` 的文件树相同。
+
+## 来源与盘点口径
+
+截图中的紫色来自 `web/src/v2/styles.css` 的 `--v2-accent: #6b55ed`。
+这个独立常量绕过了共享主题,83 条 CSS 声明在 17 个文件中引用该 token。
+供应商图标槽、审批与恢复卡片、开关、背景和头像还定义了各自的彩色渐变。
+
+盘点覆盖 `web/src` 中全部 24 个 CSS 文件,以及 TS/TSX 中的颜色常量。
+CSS 使用 PostCSS 解析声明,记录 hex、rgb、hsl、white、black 的出现次数、
+原始写法和规范化 RGBA。包含回退值与历史定义;这些数量表示维护复杂度。
+原始品牌图片、用户内容、第三方编辑器和终端输出使用各自的内容语义。
+
+| 项目 | 清理前 | 清理后 |
+| --- | ---: | ---: |
+| CSS 颜色字面量出现次数 | 787 | 136 |
+| CSS 颜色不同写法 | 521 | 93 |
+| CSS 规范化 RGBA 值 | 518 | 93 |
+| V2 CSS 颜色出现次数 | 295 | 39 |
+| V2 CSS 颜色不同写法 | 165 | 28 |
+| 颜色字面量回退次数 | 96 | 0 |
+| 闲置供应商 accent 元数据 | 11 | 0 |
+
+清理前,V2 的紫色组为 8 次定义/回退、6 个色值;黄橙棕组为 28 次、24 个
+色值,覆盖提示、头像和玻璃缩略图。两组现在均已移除。V2 剩余字面量为
+中性阴影与高光。全局彩色 CSS 收敛到 4 个危险/代码差异色值、8 次主题定义。
+
+## 材质约定
+
+- 强调操作使用不透明白色填充 `--prayu-primary-bg`,深色文字
+ `--prayu-primary-fg`,配合边缘高光、轻阴影和明确边框。hover 使用
+ `--prayu-primary-hover`。主按钮、图标槽和选中控件一起核对前景与背景。
+- light 使用白/浅灰面板;dark 与 glass 使用中性深灰面板。面板填充不透明度
+ 为 88–98%,玻璃强调填充为 86–98%。浅色主按钮在三种主题中保持白底深字。
+- 玻璃感来自层次、模糊、细边与反光。移除紫、黄、橙、蓝绿装饰渐变及背景
+ 饱和度放大;V2 的强调色和焦点色直接引用共享主题。
+- 普通提示、等待、就绪和连接状态使用中性材质,通过文本、图标和状态标记
+ 传达含义。实际错误与破坏性操作使用共享 danger;代码增删保留 diff 色。
+- 终端采用固定中性深色画布、灰白文字和光标,保留六种 ANSI 内容色。
+- `prefers-reduced-transparency` 回退到实色并关闭模糊;高对比模式使用明确
+ 边框;forced colors 跟随系统 Canvas、Button 和 Highlight 颜色。
+
+新增组件复用这些语义 token。组件 CSS 使用 `var()` 关联用途,具体颜色值
+集中在共享主题。字体、布局、权限、任务状态和用户输出格式沿用原有行为。
+
+## 验证与证据
+
+- 静态检查:颜色变量均有来源,PostCSS/Vite CSS 编译通过。主按钮文字对比
+ 17.224:1,hover 15.114:1;按主题背景范围估算的最低辅助文字对比 5.420:1。
+- 前端现有测试:186 文件、1,834 项通过;TypeScript 与生产构建通过。
+- 真实 Go API 和隔离数据库提供生产静态资源;浏览器核对三种主题、390px
+ 与 1280px 布局、键盘焦点、降低透明度和系统高对比表现。
+- 本地原始截图、逐声明统计、SHA-256 和浏览器计算样式保存在忽略目录
+ `build/frontend-rebuild/color-audit/` 与 `build/frontend-rebuild/neutral-*`。
+ 浏览器检查覆盖本次材质变更;原生 Windows Acrylic 与壁纸合成仍需实机观察。
diff --git a/web/index.html b/web/index.html
index dc6f1e77..1e1b3ca9 100644
--- a/web/index.html
+++ b/web/index.html
@@ -5,7 +5,7 @@
-
+
Universal Code
diff --git a/web/src/components/github-review-write-form.css b/web/src/components/github-review-write-form.css
index 2d355eef..94e8a607 100644
--- a/web/src/components/github-review-write-form.css
+++ b/web/src/components/github-review-write-form.css
@@ -1,6 +1,6 @@
.github-review-thread {
padding: 10px 0;
- border-top: 1px solid var(--border);
+ border-top: 1px solid var(--prayu-border);
overflow-wrap: anywhere;
}
diff --git a/web/src/components/inspector-workspace-navigation.css b/web/src/components/inspector-workspace-navigation.css
index a3df0871..3cf45c6e 100644
--- a/web/src/components/inspector-workspace-navigation.css
+++ b/web/src/components/inspector-workspace-navigation.css
@@ -2,20 +2,20 @@
.inspector-workspace-common { display: flex; flex-wrap: wrap; gap: 5px; min-width: 0; }
.workspace-tabs.inspector-workspace-navigation button { min-height: 34px; padding: 5px 10px; }
.workspace-tabs.inspector-workspace-navigation .inspector-workspace-expand { margin-left: auto; font-weight: 400; }
-.inspector-workspace-groups { display: grid; flex-basis: 100%; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px; max-height: min(42vh, 380px); overflow: auto; padding: 12px 0; border-top: 1px solid var(--border, #ddd); }
+.inspector-workspace-groups { display: grid; flex-basis: 100%; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px; max-height: min(42vh, 380px); overflow: auto; padding: 12px 0; border-top: 1px solid var(--prayu-border); }
.inspector-workspace-groups[hidden] { display: none; }
.inspector-workspace-groups > div { display: flex; flex-direction: column; align-items: stretch; gap: 3px; min-width: 0; }
-.inspector-workspace-groups > div > span { font-size: 12px; color: var(--muted, #70747b); padding: 4px 8px; }
+.inspector-workspace-groups > div > span { font-size: 12px; color: var(--prayu-muted); padding: 4px 8px; }
.workspace-tabs .inspector-workspace-groups button { text-align: left; white-space: normal; justify-content: start; }
-.inspector-workspace-input { border-top: 1px solid var(--border, #ddd); padding: 12px 18px; flex-shrink: 0; }
+.inspector-workspace-input { border-top: 1px solid var(--prayu-border); padding: 12px 18px; flex-shrink: 0; }
.inspector-workspace-input > summary, .inspector-workspace-section > summary { cursor: pointer; font-size: 14px; line-height: 1.6; padding: 5px 0; }
-.inspector-workspace-input > p, .inspector-repository-heading > p { font-size: 13px; line-height: 1.65; color: var(--muted, #70747b); }
+.inspector-workspace-input > p, .inspector-repository-heading > p { font-size: 13px; line-height: 1.65; color: var(--prayu-muted); }
.workspace-view > .inspector-workspace-input > .session-composer { padding-inline: 0; border: 0; margin: 12px 0 0; }
.inspector-session-run-state { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; padding: 8px 18px; font-size: 13px; }
.inspector-repository-heading h2 { font-size: 17px; font-weight: 600; margin: 0; }
-.inspector-workspace-section { border-top: 1px solid var(--border, #ddd); padding-top: 8px; min-width: 0; }
+.inspector-workspace-section { border-top: 1px solid var(--prayu-border); padding-top: 8px; min-width: 0; }
.inspector-workspace-section[open] > summary { margin-bottom: 12px; }
-.inspector-workspace-input > summary:focus-visible, .inspector-workspace-section > summary:focus-visible { outline: 2px solid var(--prayu-focus, #4b8ef7); outline-offset: 3px; }
+.inspector-workspace-input > summary:focus-visible, .inspector-workspace-section > summary:focus-visible { outline: 2px solid var(--prayu-focus); outline-offset: 3px; }
@media (max-width: 700px) {
.inspector-workspace-groups { grid-template-columns: minmax(0, 1fr); gap: 12px; }
.workspace-tabs.inspector-workspace-navigation .inspector-workspace-expand { margin-left: 0; }
diff --git a/web/src/components/user-terminal-panel.tsx b/web/src/components/user-terminal-panel.tsx
index d45a4dcf..a4ac67ad 100644
--- a/web/src/components/user-terminal-panel.tsx
+++ b/web/src/components/user-terminal-panel.tsx
@@ -69,20 +69,21 @@ export function UserTerminalPanel({ runID, sessionID, onSession }: {
fontSize: 13,
lineHeight: 1.18,
scrollback: 5000,
+ // Keep the terminal canvas neutral; ANSI colors preserve command-output meaning.
theme: {
- background: "#171512",
- foreground: "#f2e4cc",
- cursor: "#f58231",
- cursorAccent: "#171512",
- selectionBackground: "#a94b2473",
- black: "#171512",
+ background: "#181818",
+ foreground: "#ededed",
+ cursor: "#ededed",
+ cursorAccent: "#181818",
+ selectionBackground: "#ffffff38",
+ black: "#181818",
red: "#ef6b5d",
green: "#8fbf71",
yellow: "#e2b45f",
blue: "#78a9d4",
magenta: "#c792b6",
cyan: "#74b6b0",
- white: "#f2e4cc",
+ white: "#ededed",
},
});
const fit = new FitAddon();
diff --git a/web/src/styles.css b/web/src/styles.css
index fc71e3f7..9ec474d2 100644
--- a/web/src/styles.css
+++ b/web/src/styles.css
@@ -35,20 +35,21 @@
--prayu-font-mono: "JetBrains Mono Variable", "JetBrains Mono", "HarmonyOS Sans SC",
"Cascadia Code", Consolas, monospace;
font-family: var(--prayu-font-ui);
- color: #17202a;
+ color: var(--prayu-text);
background: transparent;
font-synthesis: none;
text-rendering: optimizeLegibility;
- --border: #d8dee5;
- --border-strong: #bdc7d2;
- --muted: #657383;
- --surface: #ffffff;
- --surface-subtle: #f7f9fa;
- --ink: #17202a;
- --accent: #087f73;
- --accent-soft: #e5f4f1;
- --danger: #b42318;
- --warning: #a15c00;
+ --border: var(--prayu-border);
+ --border-strong: var(--prayu-border-strong);
+ --muted: var(--prayu-muted);
+ --surface: var(--prayu-panel);
+ --surface-subtle: var(--prayu-control);
+ --surface-raised: var(--prayu-panel-strong);
+ --ink: var(--prayu-text);
+ --accent: var(--prayu-accent);
+ --accent-soft: color-mix(in srgb, var(--prayu-accent) 14%, transparent);
+ --danger: var(--prayu-danger);
+ --warning: var(--prayu-warning);
}
.embedded-analyzer-panel .panel-heading-row {
@@ -134,23 +135,23 @@ html, body, #root { min-width: 320px; min-height: 100%; margin: 0; }
button, input, select { font: inherit; letter-spacing: 0; }
textarea { font: inherit; letter-spacing: 0; }
button { color: inherit; }
-button:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible, summary:focus-visible { outline: 2px solid #168f82; outline-offset: 2px; }
+button:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible, summary:focus-visible { outline: 2px solid var(--prayu-focus); outline-offset: 2px; }
code, pre { font-family: var(--prayu-font-mono); }
-.app-shell { height: 100dvh; min-height: 320px; overflow: hidden; background: #eef1f4; }
+.app-shell { height: 100dvh; min-height: 320px; overflow: hidden; background: var(--prayu-control); }
.topbar { height: 58px; display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 0 18px; border-bottom: 1px solid var(--border); background: var(--surface); }
.brand-lockup { display: flex; align-items: center; gap: 12px; }
.brand-lockup > span:last-child { display: grid; gap: 2px; }
.brand-lockup strong { font-size: 15px; line-height: 1.2; }
.brand-lockup small { color: var(--muted); font-size: 12px; }
-.brand-mark { width: 38px; height: 38px; display: grid; place-items: center; color: #ffffff; background: #152b34; border-radius: 6px; }
+.brand-mark { width: 38px; height: 38px; display: grid; place-items: center; color: var(--prayu-primary-fg); background: var(--prayu-primary-bg); border-radius: 6px; }
.brand-lockup.compact .brand-mark { width: 34px; height: 34px; }
.topbar-actions { display: flex; align-items: center; gap: 8px; }
.health-indicator { display: inline-flex; align-items: center; gap: 7px; color: var(--muted); font-size: 12px; white-space: nowrap; }
-.health-indicator i { width: 7px; height: 7px; border-radius: 50%; background: #1d9a6c; }
+.health-indicator i { width: 7px; height: 7px; border-radius: 50%; background: var(--prayu-success); }
.health-indicator.offline i { background: var(--danger); }
.icon-button { width: 34px; height: 34px; display: grid; place-items: center; padding: 0; border: 1px solid var(--border); border-radius: 5px; background: var(--surface); cursor: pointer; }
-.icon-button:hover:not(:disabled) { background: #eef5f4; border-color: #9abdb8; }
+.icon-button:hover:not(:disabled) { background: var(--prayu-control-hover); border-color: var(--prayu-border-strong); }
.icon-button:disabled { opacity: .55; cursor: default; }
.shell-body { height: calc(100dvh - 58px); min-height: 0; display: grid; grid-template-columns: 300px minmax(0, 1fr); }
.resource-tabs { height: 48px; display: grid; grid-template-columns: 1fr 1fr; padding: 7px; border-bottom: 1px solid var(--border); }
@@ -158,9 +159,9 @@ code, pre { font-family: var(--prayu-font-mono); }
.resource-tabs button.active { color: var(--ink); background: var(--surface); box-shadow: 0 0 0 1px var(--border); }
.sidebar-tools { display: grid; grid-template-columns: minmax(0, 1fr) 34px; gap: 7px; padding: 10px 10px 7px; }
.search-field { height: 34px; min-width: 0; display: flex; align-items: center; gap: 7px; padding: 0 9px; border: 1px solid var(--border); border-radius: 5px; background: var(--surface); color: var(--muted); }
-.search-field:focus-within { border-color: #168f82; box-shadow: 0 0 0 1px #168f82; }
+.search-field:focus-within { border-color: var(--prayu-focus); box-shadow: 0 0 0 1px var(--prayu-focus); }
.search-field input { width: 100%; min-width: 0; border: 0; outline: 0; background: transparent; color: var(--ink); }
-.status-filter { height: 32px; margin: 0 10px 8px; padding: 0 8px; border: 1px solid var(--border); border-radius: 5px; background: var(--surface); color: #465563; font-size: 12px; }
+.status-filter { height: 32px; margin: 0 10px 8px; padding: 0 8px; border: 1px solid var(--border); border-radius: 5px; background: var(--surface); color: var(--prayu-text); font-size: 12px; }
.resource-list { min-height: 0; overflow: auto; padding: 0 7px 12px; }
.resource-row-top { min-width: 0; display: flex; align-items: center; justify-content: space-between; gap: 7px; }
@@ -172,7 +173,7 @@ code, pre { font-family: var(--prayu-font-mono); }
.workspace-kicker { color: var(--muted); font-family: var(--prayu-font-mono); font-size: 11px; text-transform: uppercase; }
.header-meta { display: flex; flex-wrap: wrap; align-items: center; gap: 9px; color: var(--muted); font-size: 12px; }
.stream-indicator { display: inline-flex; align-items: center; gap: 7px; padding-top: 4px; color: var(--muted); font-size: 12px; white-space: nowrap; }
-.stream-live { color: #147d58; }
+.stream-live { color: var(--prayu-success); }
.stream-reconnecting { color: var(--warning); }
.workspace-tabs { min-height: 43px; display: flex; align-items: stretch; gap: 2px; padding: 0 24px; overflow-x: auto; border-bottom: 1px solid var(--border); background: var(--surface-subtle); }
.workspace-tabs button { flex: 0 0 auto; min-width: 74px; display: flex; align-items: center; justify-content: center; gap: 6px; padding: 0 12px; border: 0; border-bottom: 2px solid transparent; background: transparent; color: var(--muted); cursor: pointer; white-space: nowrap; }
@@ -194,15 +195,15 @@ code, pre { font-family: var(--prayu-font-mono); }
.key-value dd { margin: 0; overflow-wrap: anywhere; font-size: 13px; }
.section-heading { display: flex; align-items: center; justify-content: space-between; gap: 14px; }
.section-heading > span { color: var(--muted); font-size: 12px; }
-.budget-track { width: 100%; height: 7px; display: block; margin-top: 16px; overflow: hidden; border: 0; border-radius: 3px; background: #e6ebef; appearance: none; }
-.budget-track::-webkit-progress-bar { background: #e6ebef; }
+.budget-track { width: 100%; height: 7px; display: block; margin-top: 16px; overflow: hidden; border: 0; border-radius: 3px; background: var(--prayu-control); appearance: none; }
+.budget-track::-webkit-progress-bar { background: var(--prayu-control); }
.budget-track::-webkit-progress-value { background: var(--accent); }
.budget-track::-moz-progress-bar { background: var(--accent); }
.plan-state-line { display: flex; flex-wrap: wrap; gap: 8px 18px; margin-top: 13px; color: var(--muted); font-size: 11px; }
.plan-direction-list { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; margin-top: 14px; }
.plan-direction { min-width: 0; border: 1px solid var(--border); border-radius: 6px; background: var(--surface); }
.plan-direction:only-child { grid-column: 1 / -1; }
-.plan-direction.selected { border-color: #7db7ae; box-shadow: inset 3px 0 0 var(--accent); }
+.plan-direction.selected { border-color: var(--prayu-border); box-shadow: inset 3px 0 0 var(--accent); }
.plan-direction summary { min-height: 94px; display: grid; grid-template-columns: 24px minmax(0, 1fr) auto; align-items: start; gap: 9px; padding: 12px; cursor: pointer; list-style: none; }
.plan-direction summary::-webkit-details-marker { display: none; }
.plan-direction summary > span:nth-child(2) { min-width: 0; display: grid; gap: 5px; }
@@ -243,33 +244,34 @@ code, pre { font-family: var(--prayu-font-mono); }
.run-execution-control label { color: var(--muted); font-size: 11px; }
.run-execution-control input { width: 58px; height: 34px; padding: 0 7px; border: 1px solid var(--border-strong); border-radius: 5px; background: var(--surface); color: var(--ink); }
.run-execution-control .batch-review-input { min-width: 180px; flex: 1 1 240px; }
-.command-button { min-height: 34px; display: inline-flex; align-items: center; justify-content: center; gap: 7px; padding: 6px 11px; border: 1px solid #70808b; border-radius: 5px; background: var(--surface); color: var(--ink); cursor: pointer; }
-.command-button:hover:not(:disabled) { border-color: #168f82; background: var(--accent-soft); color: #08665e; }
+.command-button { min-height: 34px; display: inline-flex; align-items: center; justify-content: center; gap: 7px; padding: 6px 11px; border: 1px solid var(--prayu-border); border-radius: 5px; background: var(--surface); color: var(--ink); cursor: pointer; }
+.command-button:hover:not(:disabled) { border-color: var(--prayu-border-strong); background: var(--accent-soft); color: var(--prayu-text); }
.command-button:disabled { border-color: var(--border); background: var(--surface-subtle); color: var(--muted); cursor: default; }
-.command-button.danger { border-color: #a65a5a; color: #8c2f2f; }
-.command-button.danger:hover:not(:disabled) { border-color: #8c2f2f; background: #fff1f1; color: #7b2525; }
+.command-button.danger, .prayu-shell .command-button.danger { border-color: color-mix(in srgb, var(--prayu-danger) 48%, var(--prayu-border)); color: var(--prayu-danger); }
+.command-button.danger:hover:not(:disabled), .prayu-shell .command-button.danger:hover:not(:disabled) { border-color: color-mix(in srgb, var(--prayu-danger) 48%, var(--prayu-border)); background: var(--prayu-danger-soft); color: var(--prayu-danger); }
.run-control-result { min-height: 30px; display: flex; flex-wrap: wrap; align-items: center; gap: 8px 14px; color: var(--muted); font-size: 11px; }
.run-cancel-hint { margin: 0; color: var(--muted); font-size: 11px; }
.run-cancel-reason { flex: 1 1 160px; min-width: 120px; height: 34px; padding: 0 9px; border: 1px solid var(--border-strong); border-radius: 5px; background: var(--surface); color: var(--ink); }
.execution-profile-segments { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); overflow: hidden; border: 1px solid var(--border-strong); border-radius: 6px; }
.execution-profile-segments button { min-width: 0; min-height: 58px; display: flex; align-items: center; justify-content: center; gap: 9px; padding: 9px 12px; border: 0; border-right: 1px solid var(--border); background: var(--surface); cursor: pointer; }
.execution-profile-segments button:last-child { border-right: 0; }
-.execution-profile-segments button:hover:not(:disabled) { background: #eef5f4; }
-.execution-profile-segments button.selected { background: var(--accent-soft); color: #08665e; box-shadow: inset 0 -3px 0 var(--accent); }
-.execution-profile-segments button:disabled:not(.selected) { color: #8b96a1; cursor: default; }
+.execution-profile-segments button:hover:not(:disabled) { background: var(--prayu-control-hover); }
+.execution-profile-segments button.selected { background: var(--prayu-primary-bg); color: var(--prayu-primary-fg); box-shadow: inset 0 -3px 0 var(--prayu-primary-fg); }
+.execution-profile-segments button:disabled:not(.selected) { color: var(--prayu-muted); cursor: default; }
.execution-profile-segments button > span { min-width: 0; display: grid; gap: 3px; text-align: left; }
.execution-profile-segments strong, .execution-profile-segments small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.execution-profile-segments strong { font-size: 12px; }
.execution-profile-segments small { color: var(--muted); font-size: 10px; }
+.execution-profile-segments button.selected small { color: color-mix(in srgb, var(--prayu-primary-fg) 70%, var(--prayu-primary-bg)); }
.execution-profile-boundary { display: flex; flex-wrap: wrap; gap: 7px 16px; color: var(--muted); font-size: 11px; }
.execution-profile-section .inline-warning { margin: 0; }
.execution-permission-segments { grid-template-columns: repeat(4, minmax(0, 1fr)); }
-.execution-permission-segments button.danger:not(.selected) { color: #8a4524; }
-.execution-permission-segments button.danger:hover:not(:disabled) { background: #fff0e7; }
+.execution-permission-segments button.danger:not(.selected) { color: var(--prayu-danger); }
+.execution-permission-segments button.danger:hover:not(:disabled) { background: var(--prayu-danger-soft); }
.execution-permission-segments button.danger.selected {
- background: #fff0e7;
- color: #9b3f18;
- box-shadow: inset 0 -3px 0 #d85f27;
+ background: var(--prayu-primary-bg);
+ color: var(--prayu-primary-fg);
+ box-shadow: inset 0 -3px 0 var(--prayu-danger);
}
.permission-confirmation {
display: grid;
@@ -277,50 +279,50 @@ code, pre { font-family: var(--prayu-font-mono); }
align-items: center;
gap: 10px;
padding: 10px 12px;
- border: 1px solid #d98558;
+ border: 1px solid var(--prayu-border);
border-radius: 6px;
- background: #fff7f0;
- color: #753516;
+ background: var(--prayu-control);
+ color: var(--prayu-text);
}
.permission-confirmation > span { min-width: 0; display: grid; gap: 2px; }
-.permission-confirmation small { color: #87583f; line-height: 1.35; }
+.permission-confirmation small { color: var(--prayu-muted); line-height: 1.35; }
.danger-button {
min-height: 32px;
display: inline-flex;
align-items: center;
gap: 6px;
- border: 1px solid #ad421d;
+ border: 1px solid var(--prayu-danger-fill);
border-radius: 5px;
padding: 0 11px;
- background: #b94922;
- color: white;
+ background: var(--prayu-danger-fill);
+ color: var(--prayu-on-danger);
cursor: pointer;
}
.danger-button:disabled { cursor: default; opacity: .6; }
-.status-badge { max-width: 150px; display: inline-flex; align-items: center; padding: 2px 6px; overflow: hidden; border: 1px solid #cdd5dc; border-radius: 4px; background: #f4f6f7; color: #52606c; font-size: 10px; line-height: 1.3; text-overflow: ellipsis; text-transform: uppercase; white-space: nowrap; }
-.status-running, .status-active, .status-completed, .status-live, .status-passed { border-color: #9ccdbb; background: #e9f7f1; color: #146c4e; }
-.status-failed, .status-cancelled, .status-denied { border-color: #e3b1ac; background: #fff0ee; color: var(--danger); }
-.status-critical, .status-high, .status-rejected, .status-aborted { border-color: #e3b1ac; background: #fff0ee; color: var(--danger); }
-.status-medium, .status-partial, .status-stale, .status-not-run, .status-blocked { border-color: #e4c68e; background: #fff7e5; color: #855000; }
-.status-approved, .status-applied, .status-instructed, .status-succeeded, .status-fixed, .status-validated, .status-accepted { border-color: #9ccdbb; background: #e9f7f1; color: #146c4e; }
-.status-waiting-approval, .status-paused, .status-pending, .status-reconnecting { border-color: #e4c68e; background: #fff7e5; color: #855000; }
-.status-compacted { border-color: #b7c7de; background: #eff4fb; color: #365d86; }
+.status-badge { max-width: 150px; display: inline-flex; align-items: center; padding: 2px 6px; overflow: hidden; border: 1px solid var(--prayu-border); border-radius: 4px; background: var(--prayu-control); color: var(--prayu-text); font-size: 10px; line-height: 1.3; text-overflow: ellipsis; text-transform: uppercase; white-space: nowrap; }
+.status-running, .status-active, .status-completed, .status-live, .status-passed { border-color: var(--prayu-border); background: var(--prayu-control); color: var(--prayu-success); }
+.status-failed, .status-cancelled, .status-denied { border-color: color-mix(in srgb, var(--prayu-danger) 48%, var(--prayu-border)); background: var(--prayu-danger-soft); color: var(--danger); }
+.status-critical, .status-high, .status-rejected, .status-aborted { border-color: color-mix(in srgb, var(--prayu-danger) 48%, var(--prayu-border)); background: var(--prayu-danger-soft); color: var(--danger); }
+.status-medium, .status-partial, .status-stale, .status-not-run, .status-blocked { border-color: var(--prayu-border); background: var(--prayu-control); color: var(--prayu-warning); }
+.status-approved, .status-applied, .status-instructed, .status-succeeded, .status-fixed, .status-validated, .status-accepted { border-color: var(--prayu-border); background: var(--prayu-control); color: var(--prayu-success); }
+.status-waiting-approval, .status-paused, .status-pending, .status-reconnecting { border-color: var(--prayu-border); background: var(--prayu-control); color: var(--prayu-warning); }
+.status-compacted { border-color: var(--prayu-border); background: var(--prayu-control); color: var(--prayu-text); }
.state-message, .empty-state, .workspace-empty { display: flex; align-items: center; justify-content: center; gap: 8px; color: var(--muted); font-size: 13px; }
.state-message, .empty-state { min-height: 110px; }
.state-error, .connection-error { color: var(--danger); }
.workspace-empty { min-height: calc(100dvh - 58px); flex-direction: column; }
.workspace-empty h1 { margin: 0; font-size: 17px; }
-.inline-warning { margin-bottom: 12px; padding: 9px 11px; border-left: 3px solid #d4932c; background: #fff8e9; color: #714800; font-size: 12px; overflow-wrap: anywhere; }
-.operation-receipt { display: flex; align-items: flex-start; gap: 8px; margin: 10px 0; padding: 9px 10px; border-left: 3px solid #23815f; background: #eef8f4; color: #164f3c; font-size: 11px; }
+.inline-warning { margin-bottom: 12px; padding: 9px 11px; border-left: 3px solid var(--prayu-border); background: var(--prayu-control); color: var(--prayu-warning); font-size: 12px; overflow-wrap: anywhere; }
+.operation-receipt { display: flex; align-items: flex-start; gap: 8px; margin: 10px 0; padding: 9px 10px; border-left: 3px solid var(--prayu-border); background: var(--prayu-control); color: var(--prayu-success); font-size: 11px; }
.operation-receipt svg { flex: 0 0 auto; margin-top: 1px; }
.operation-receipt div { display: grid; min-width: 0; gap: 2px; }
.operation-receipt strong { font-size: 12px; text-transform: capitalize; }
-.operation-receipt span, .operation-receipt small { overflow-wrap: anywhere; color: #46645a; }
-.operation-receipt.receipt-warning { border-left-color: #c28224; background: #fff8e9; color: #714800; }
-.operation-receipt.receipt-warning span, .operation-receipt.receipt-warning small { color: #714800; }
+.operation-receipt span, .operation-receipt small { overflow-wrap: anywhere; color: var(--prayu-success); }
+.operation-receipt.receipt-warning { border-left-color: var(--prayu-border); background: var(--prayu-control); color: var(--prayu-warning); }
+.operation-receipt.receipt-warning span, .operation-receipt.receipt-warning small { color: var(--prayu-warning); }
.load-more { min-height: 34px; display: flex; align-items: center; justify-content: center; gap: 6px; margin: 14px auto 0; padding: 6px 13px; border: 1px solid var(--border); border-radius: 5px; background: var(--surface); cursor: pointer; }
-.load-more:hover:not(:disabled) { border-color: #9abdb8; background: #eef5f4; }
+.load-more:hover:not(:disabled) { border-color: var(--prayu-border-strong); background: var(--prayu-control-hover); }
.event-list { border-top: 1px solid var(--border); }
.event-row { border-bottom: 1px solid var(--border); }
@@ -328,7 +330,7 @@ code, pre { font-family: var(--prayu-font-mono); }
.event-row summary::marker { color: var(--muted); }
.event-row summary > span, .event-row time { min-width: 0; overflow: hidden; color: var(--muted); text-overflow: ellipsis; white-space: nowrap; }
.event-sequence { font-family: var(--prayu-font-mono); }
-.event-row pre, .tool-call pre { max-height: 320px; margin: 0 0 12px; padding: 12px; overflow: auto; border: 1px solid #e0e5e9; border-radius: 4px; background: #f6f8f9; font-size: 11px; line-height: 1.5; white-space: pre-wrap; overflow-wrap: anywhere; }
+.event-row pre, .tool-call pre { max-height: 320px; margin: 0 0 12px; padding: 12px; overflow: auto; border: 1px solid var(--prayu-border); border-radius: 4px; background: var(--prayu-surface-solid); font-size: 11px; line-height: 1.5; white-space: pre-wrap; overflow-wrap: anywhere; }
.table-scroll { width: 100%; overflow-x: auto; }
table { width: 100%; border-collapse: collapse; font-size: 12px; }
th { padding: 9px 10px; border-bottom: 1px solid var(--border-strong); color: var(--muted); text-align: left; font-size: 10px; text-transform: uppercase; white-space: nowrap; }
@@ -343,7 +345,7 @@ td code { font-size: 11px; }
.note-item header > div { display: grid; gap: 4px; }
.note-item header span, .note-item footer, .tool-round > header span, .tool-round > header time { color: var(--muted); font-size: 11px; }
.note-item p { max-height: 240px; margin: 13px 0; overflow: auto; font-size: 13px; line-height: 1.55; white-space: pre-wrap; overflow-wrap: anywhere; }
-.note-item footer { padding-top: 10px; border-top: 1px solid #e6eaed; }
+.note-item footer { padding-top: 10px; border-top: 1px solid var(--prayu-border); }
.note-item footer > div { display: flex; align-items: center; gap: 10px; }
.row-detail-toggle { padding: 3px 10px; border: 1px solid var(--border-strong); border-radius: 5px; background: var(--surface); color: var(--muted); font-size: 11px; cursor: pointer; white-space: nowrap; }
.row-detail-toggle:hover { color: var(--ink); border-color: var(--accent); }
@@ -363,7 +365,7 @@ td code { font-size: 11px; }
.agent-node { padding: 14px 15px; }
.agent-node header { display: grid; grid-template-columns: 120px minmax(0, 1fr) auto; align-items: center; gap: 12px; }
.agent-node header strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
-.agent-depth-1 { margin-left: 34px; border-left: 3px solid #85b9b1; }
+.agent-depth-1 { margin-left: 34px; border-left: 3px solid var(--prayu-border); }
.node-role, .projection-kicker { display: inline-flex; align-items: center; gap: 6px; color: var(--muted); font-family: var(--prayu-font-mono); font-size: 10px; text-transform: uppercase; }
.projection-header { display: flex; align-items: flex-start; justify-content: space-between; gap: 18px; padding: 14px 15px; border-bottom: 1px solid var(--border); }
.projection-header > div:first-child { min-width: 0; display: grid; gap: 5px; }
@@ -374,7 +376,7 @@ td code { font-size: 11px; }
.projection-metrics dt { margin-bottom: 4px; color: var(--muted); font-size: 9px; text-transform: uppercase; }
.projection-metrics dd { margin: 0; overflow-wrap: anywhere; font-size: 11px; }
.tag-line { display: flex; flex-wrap: wrap; gap: 5px; padding: 0 15px 13px; }
-.tag-line code { padding: 2px 5px; border: 1px solid #dce3e7; border-radius: 3px; background: #f5f7f8; color: #44535f; font-size: 10px; }
+.tag-line code { padding: 2px 5px; border: 1px solid var(--prayu-border); border-radius: 3px; background: var(--prayu-surface-solid); color: var(--prayu-text); font-size: 10px; }
.external-skill-summary { margin-top: 14px; }
.external-skill-summary > div { min-width: 0; }
.external-skill-summary dt { margin-bottom: 4px; color: var(--muted); font-size: 9px; text-transform: uppercase; }
@@ -388,7 +390,7 @@ td code { font-size: 11px; }
.completion-summary { display: flex; align-items: flex-start; gap: 9px; padding: 11px 15px; border-top: 1px solid var(--border); background: var(--surface-subtle); font-size: 12px; line-height: 1.5; }
.agent-cancel-control { margin-top: 12px; padding-top: 12px; border-top: 1px solid var(--border); display: flex; flex-wrap: wrap; align-items: center; gap: 10px; }
.assignment-list { border-bottom: 1px solid var(--border); }
-.assignment-list section { padding: 12px 15px; border-bottom: 1px solid #e7ebee; }
+.assignment-list section { padding: 12px 15px; border-bottom: 1px solid var(--prayu-border); }
.assignment-list section:last-child { border-bottom: 0; }
.assignment-list header { display: flex; align-items: center; gap: 9px; }
.assignment-list header > span:first-child { color: var(--muted); font-family: var(--prayu-font-mono); font-size: 10px; }
@@ -400,7 +402,7 @@ td code { font-size: 11px; }
.finding-layout { min-height: 360px; display: grid; grid-template-columns: 250px minmax(0, 1fr); border-top: 1px solid var(--border); border-bottom: 1px solid var(--border); }
.report-picker { min-width: 0; padding: 8px; border-right: 1px solid var(--border); background: var(--surface-subtle); }
.report-picker > button { width: 100%; display: grid; gap: 5px; padding: 10px; border: 1px solid transparent; border-bottom-color: var(--border); border-radius: 4px; background: transparent; text-align: left; cursor: pointer; }
-.report-picker > button:hover, .report-picker > button.selected { border-color: #99c8c1; background: var(--accent-soft); }
+.report-picker > button:hover, .report-picker > button.selected { border-color: var(--prayu-border-strong); background: var(--accent-soft); }
.report-picker > button span { display: flex; align-items: center; gap: 6px; color: var(--muted); font-size: 10px; }
.report-picker > button strong { overflow: hidden; font-size: 12px; text-overflow: ellipsis; white-space: nowrap; }
.report-picker > button small { color: var(--muted); font-size: 10px; }
@@ -409,20 +411,21 @@ td code { font-size: 11px; }
.session-summary { padding: 0 28px 20px; border-bottom: 1px solid var(--border); }
.session-composer { margin: 18px 28px 0; border: 1px solid var(--border-strong); border-radius: 6px; background: var(--surface); }
.session-composer textarea { width: 100%; min-height: 76px; display: block; padding: 11px 12px; resize: vertical; border: 0; border-radius: 6px 6px 0 0; background: transparent; color: var(--ink); line-height: 1.5; }
-.session-composer textarea:focus-visible { outline: 2px solid #168f82; outline-offset: -2px; }
+.session-composer textarea:focus-visible { outline: 2px solid var(--prayu-focus); outline-offset: -2px; }
.session-composer textarea:disabled { background: var(--surface-subtle); color: var(--muted); resize: none; }
.session-composer-state { min-width: 0; display: flex; align-items: center; gap: 7px; overflow: hidden; color: var(--muted); font-size: 11px; }
.session-composer-state > span:last-child { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
-.session-composer-state .connection-error { margin: 0; color: #9b2c2c; }
+.session-composer-state .connection-error { margin: 0; color: var(--prayu-danger); }
.session-steering-queue { margin: 8px 28px 0; display: flex; align-items: center; gap: 8px; min-height: 38px; padding: 5px 6px 5px 10px; border: 1px solid var(--border); border-radius: 6px; background: var(--surface-subtle); overflow-x: auto; }
.session-steering-heading { display: flex; align-items: center; gap: 7px; flex: 0 0 auto; color: var(--muted); font-size: 11px; }
.session-steering-heading strong { color: var(--ink); }
.session-steering-item { display: flex; align-items: center; gap: 7px; flex: 0 0 auto; padding-left: 8px; border-left: 1px solid var(--border); font-size: 11px; }
.icon-button.compact { width: 28px; height: 28px; }
.byte-count { color: var(--muted); font-size: 10px; white-space: nowrap; }
-.byte-count.invalid { color: #9b2c2c; }
-.session-send-button { width: 34px; height: 34px; display: grid; place-items: center; padding: 0; border: 1px solid #087f73; border-radius: 5px; background: #087f73; color: #ffffff; cursor: pointer; }
-.session-send-button:disabled { border-color: var(--border-strong); background: #e6ebed; color: #84919a; cursor: default; }
+.byte-count.invalid { color: var(--prayu-danger); }
+.session-send-button { width: 34px; height: 34px; display: grid; place-items: center; padding: 0; border: 1px solid var(--prayu-primary-border); border-radius: 5px; background: var(--prayu-primary-bg); color: var(--prayu-primary-fg); cursor: pointer; }
+.session-send-button:hover:not(:disabled) { background: var(--prayu-primary-hover); }
+.session-send-button:disabled { border-color: var(--border-strong); background: var(--prayu-control); color: var(--prayu-muted); cursor: default; }
.session-content { padding-top: 20px; }
.message-list { margin-top: 14px; border-top: 1px solid var(--border); }
.message-row { padding: 14px 4px; border-bottom: 1px solid var(--border); }
@@ -431,37 +434,38 @@ td code { font-size: 11px; }
.message-row header time { margin-left: auto; }
.message-row p { margin: 10px 0 0; overflow-wrap: anywhere; font-size: 13px; line-height: 1.55; white-space: pre-wrap; }
.message-row .safe-markdown { margin-top: 10px; font-size: 13px; line-height: 1.55; }
-.role-assistant { border-left: 3px solid #7fb8ae; padding-left: 12px; }
-.role-user { border-left: 3px solid #8ea7c4; padding-left: 12px; }
+.role-assistant { border-left: 3px solid var(--prayu-border); padding-left: 12px; }
+.role-user { border-left: 3px solid var(--prayu-border); padding-left: 12px; }
-.connection-page { min-height: 100dvh; display: grid; place-items: center; padding: 24px; background: #edf1f3; }
-.connection-panel { width: min(440px, 100%); padding: 28px; border: 1px solid var(--border-strong); border-radius: 7px; background: var(--surface); box-shadow: 0 14px 36px rgb(23 32 42 / 8%); }
+.connection-page { min-height: 100dvh; display: grid; place-items: center; padding: 24px; background: var(--prayu-control); }
+.connection-panel { width: min(440px, 100%); padding: 28px; border: 1px solid var(--border-strong); border-radius: 7px; background: var(--surface); box-shadow: 0 14px 36px rgb(0 0 0 / 8%); }
.connection-heading { margin: 42px 0 23px; }
.connection-heading h1 { margin: 0 0 6px; font-size: 22px; }
.connection-heading p { margin: 0; color: var(--muted); font-size: 12px; }
.connection-token-help { color: var(--muted); font-size: 12px; line-height: 1.6; margin: 7px 0 16px; }
-.field-label { display: block; margin-bottom: 7px; color: #455463; font-size: 12px; font-weight: 600; }
+.field-label { display: block; margin-bottom: 7px; color: var(--prayu-text); font-size: 12px; font-weight: 600; }
.token-row { display: grid; grid-template-columns: minmax(0, 1fr) 42px; gap: 8px; }
.token-row input { min-width: 0; height: 42px; padding: 0 11px; border: 1px solid var(--border-strong); border-radius: 5px; }
-.token-row button { width: 42px; height: 42px; display: grid; place-items: center; padding: 0; border: 0; border-radius: 5px; background: #087f73; color: white; cursor: pointer; }
+.token-row button { width: 42px; height: 42px; display: grid; place-items: center; padding: 0; border: 0; border-radius: 5px; background: var(--prayu-primary-bg); color: var(--prayu-primary-fg); cursor: pointer; }
+.token-row button:hover:not(:disabled) { background: var(--prayu-primary-hover); }
.token-row button:disabled { opacity: .5; cursor: default; }
.optional-token-label { margin-top: 16px; }
.optional-token-label span { color: var(--muted); font-weight: 400; }
.control-token-input { width: 100%; min-width: 0; height: 42px; padding: 0 11px; border: 1px solid var(--border-strong); border-radius: 5px; }
.connection-error { margin-top: 11px; font-size: 12px; overflow-wrap: anywhere; }
-.desktop-connecting { min-height: 34px; display: flex; align-items: center; gap: 8px; margin: -10px 0 17px; padding: 8px 10px; border-left: 3px solid var(--accent); background: var(--accent-soft); color: #08665e; font-size: 12px; }
-.desktop-dialog-backdrop { position: fixed; inset: 0; z-index: 20; display: grid; place-items: center; padding: 24px; background: rgb(17 27 34 / 48%); }
-.desktop-dialog { width: min(680px, 100%); max-height: min(760px, calc(100dvh - 48px)); display: flex; flex-direction: column; overflow: hidden; border: 1px solid var(--border-strong); border-radius: 7px; background: var(--surface); box-shadow: 0 20px 54px rgb(10 18 24 / 24%); }
+.desktop-connecting { min-height: 34px; display: flex; align-items: center; gap: 8px; margin: -10px 0 17px; padding: 8px 10px; border-left: 3px solid var(--accent); background: var(--accent-soft); color: var(--prayu-text); font-size: 12px; }
+.desktop-dialog-backdrop { position: fixed; inset: 0; z-index: 20; display: grid; place-items: center; padding: 24px; background: rgb(0 0 0 / 48%); }
+.desktop-dialog { width: min(680px, 100%); max-height: min(760px, calc(100dvh - 48px)); display: flex; flex-direction: column; overflow: hidden; border: 1px solid var(--border-strong); border-radius: 7px; background: var(--surface); box-shadow: 0 20px 54px rgb(0 0 0 / 24%); }
.desktop-dialog > header { min-height: 64px; display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 12px 16px; border-bottom: 1px solid var(--border); }
.desktop-dialog > header > div { min-width: 0; display: flex; align-items: center; gap: 10px; }
.desktop-dialog > header > div > div { min-width: 0; display: grid; gap: 3px; }
.desktop-dialog h2 { margin: 0; font-size: 15px; }
.desktop-dialog header small { color: var(--muted); font-size: 11px; }
-.dialog-icon { width: 34px; height: 34px; display: grid; place-items: center; border: 1px solid #a9c8c3; border-radius: 5px; background: var(--accent-soft); color: #08665e; }
+.dialog-icon { width: 34px; height: 34px; display: grid; place-items: center; border: 1px solid var(--prayu-border); border-radius: 5px; background: var(--accent-soft); color: var(--prayu-text); }
.desktop-dialog-body { min-height: 280px; overflow: auto; padding: 18px; }
.desktop-package-empty { min-height: 244px; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 18px; color: var(--muted); }
.desktop-select-command { min-height: 34px; display: inline-flex; align-items: center; justify-content: center; gap: 7px; padding: 6px 11px; border: 1px solid var(--border-strong); border-radius: 5px; background: var(--surface); cursor: pointer; }
-.desktop-select-command:hover:not(:disabled) { border-color: #82b3ac; background: #eef5f4; }
+.desktop-select-command:hover:not(:disabled) { border-color: var(--prayu-border-strong); background: var(--prayu-control-hover); }
.desktop-select-command:disabled { opacity: .55; cursor: default; }
.desktop-package-preview { display: grid; gap: 18px; }
.desktop-package-heading { min-width: 0; display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; }
@@ -478,21 +482,21 @@ td code { font-size: 11px; }
.desktop-package-list { display: grid; gap: 8px; }
.desktop-package-list > span { color: var(--muted); font-size: 10px; text-transform: uppercase; }
.desktop-package-list > div { display: flex; flex-wrap: wrap; gap: 6px; }
-.desktop-package-list code { padding: 3px 6px; border: 1px solid #d6dfe3; border-radius: 3px; background: #f5f7f8; color: #40505d; font-size: 10px; overflow-wrap: anywhere; }
+.desktop-package-list code { padding: 3px 6px; border: 1px solid var(--prayu-border); border-radius: 3px; background: var(--prayu-surface-solid); color: var(--prayu-text); font-size: 10px; overflow-wrap: anywhere; }
.desktop-package-list small { color: var(--muted); }
.desktop-package-digests { display: flex; flex-wrap: wrap; gap: 10px 22px; padding-top: 14px; border-top: 1px solid var(--border); color: var(--muted); font-size: 10px; }
-.desktop-package-digests code { color: #3f4e5a; }
+.desktop-package-digests code { color: var(--prayu-text); }
.desktop-install-controls { display: grid; grid-template-columns: auto minmax(0, 1fr); align-items: center; gap: 14px; margin-top: 18px; padding-top: 16px; border-top: 1px solid var(--border); }
.segmented-control { display: inline-grid; grid-template-columns: repeat(2, minmax(64px, 1fr)); overflow: hidden; border: 1px solid var(--border-strong); border-radius: 5px; }
.segmented-control button { min-height: 32px; padding: 5px 10px; border: 0; border-right: 1px solid var(--border-strong); background: var(--surface); color: var(--muted); font: inherit; cursor: pointer; }
.segmented-control button:last-child { border-right: 0; }
-.segmented-control button[aria-pressed="true"] { background: #e8f2ee; color: #125f45; font-weight: 600; }
+.segmented-control button[aria-pressed="true"] { background: var(--prayu-control); color: var(--prayu-text); font-weight: 600; }
.desktop-install-confirmation { min-width: 0; display: flex; align-items: center; gap: 8px; color: var(--muted); font-size: 11px; }
-.desktop-install-confirmation input { width: 15px; height: 15px; flex: 0 0 auto; accent-color: #167052; }
-.desktop-install-success { display: flex; align-items: center; gap: 8px; margin-top: 18px; padding: 10px 12px; border: 1px solid #abd6c6; border-radius: 5px; background: #eef8f4; color: #125f45; font-size: 11px; }
+.desktop-install-confirmation input { width: 15px; height: 15px; flex: 0 0 auto; accent-color: var(--prayu-accent); }
+.desktop-install-success { display: flex; align-items: center; gap: 8px; margin-top: 18px; padding: 10px 12px; border: 1px solid var(--prayu-border); border-radius: 5px; background: var(--prayu-control); color: var(--prayu-success); font-size: 11px; }
.desktop-dialog-actions { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 8px; }
.desktop-dialog > footer { min-height: 58px; display: flex; align-items: center; justify-content: space-between; gap: 14px; padding: 11px 16px; border-top: 1px solid var(--border); background: var(--surface-subtle); }
-.desktop-dialog > footer > span { display: inline-flex; align-items: center; gap: 7px; color: #146c4e; font-size: 11px; }
+.desktop-dialog > footer > span { display: inline-flex; align-items: center; gap: 7px; color: var(--prayu-text); font-size: 11px; }
.model-availability-dialog { width: min(820px, 100%); }
.model-availability-body { display: grid; gap: 22px; }
.model-availability-section { min-width: 0; }
@@ -506,7 +510,7 @@ td code { font-size: 11px; }
.provider-credential-row { min-height: 52px; display: grid; grid-template-columns: minmax(110px, .7fr) auto minmax(180px, 1.4fr) 34px 34px; align-items: center; gap: 10px; padding: 8px 3px; border-bottom: 1px solid var(--border); }
.provider-credential-row > div { display: grid; gap: 2px; }
.provider-credential-row small { color: var(--muted); overflow-wrap: anywhere; }
-.provider-credential-row input { min-width: 0; height: 32px; border: 1px solid var(--border-strong); border-radius: 5px; padding: 5px 8px; background: #fff; color: var(--text); font: inherit; }
+.provider-credential-row input { min-width: 0; height: 32px; border: 1px solid var(--border-strong); border-radius: 5px; padding: 5px 8px; background: var(--prayu-control); color: var(--text); font: inherit; }
.model-route-row { min-height: 44px; display: grid; grid-template-columns: minmax(90px, .6fr) minmax(180px, 1.4fr) auto 34px; align-items: center; gap: 12px; padding: 7px 3px; border-bottom: 1px solid var(--border); font-size: 11px; }
.model-route-row span { min-width: 0; overflow-wrap: anywhere; color: var(--muted); }
.model-route-row select { min-width: 0; height: 32px; padding: 0 7px; border: 1px solid var(--border-strong); border-radius: 4px; background: var(--surface); color: var(--ink); font-size: 11px; }
@@ -517,8 +521,8 @@ td code { font-size: 11px; }
.file-edit-panel h2 { margin: 0; font-size: 14px; }
.file-edit-panel > header > span { display: flex; align-items: center; gap: 7px; color: var(--muted); font-size: 11px; }
.file-edit-panel > header > span b { font-weight: 600; }
-.diff-additions { color: #16834f; }
-.diff-deletions { color: #c24040; }
+.diff-additions { color: var(--prayu-diff-add); }
+.diff-deletions { color: var(--prayu-diff-delete); }
.file-change-set-summary { min-height: 38px; display: flex; flex-wrap: wrap; align-items: center; gap: 9px 18px; border-bottom: 1px solid var(--border); color: var(--muted); font-size: 10px; }
.file-change-set-summary > span { display: inline-flex; gap: 5px; }
.file-change-set-summary strong { color: var(--ink); }
@@ -549,10 +553,10 @@ td code { font-size: 11px; }
.unified-diff-line > span, .unified-diff-line > code { min-height: 20px; padding: 1px 7px; white-space: pre; }
.unified-diff-number { border-right: 1px solid color-mix(in srgb, var(--border) 70%, transparent); color: var(--muted); text-align: right; user-select: none; }
.unified-diff-marker { color: var(--muted); text-align: center; user-select: none; }
-.unified-diff-line.is-add { background: color-mix(in srgb, #48b477 15%, var(--surface)); }
-.unified-diff-line.is-delete { background: color-mix(in srgb, #e16060 14%, var(--surface)); }
-.unified-diff-line.is-add .unified-diff-marker { color: #16834f; }
-.unified-diff-line.is-delete .unified-diff-marker { color: #c24040; }
+.unified-diff-line.is-add { background: var(--prayu-diff-add-soft); }
+.unified-diff-line.is-delete { background: var(--prayu-diff-delete-soft); }
+.unified-diff-line.is-add .unified-diff-marker { color: var(--prayu-diff-add); }
+.unified-diff-line.is-delete .unified-diff-marker { color: var(--prayu-diff-delete); }
.unified-diff-line.is-hunk { background: color-mix(in srgb, var(--accent) 9%, var(--surface)); color: var(--muted); }
.unified-diff-line.is-hunk > code, .unified-diff-line.is-meta > code { grid-column: 2 / -1; }
.unified-diff-line.is-hunk > span:not(.unified-diff-marker), .unified-diff-line.is-meta > span { display: none; }
@@ -651,7 +655,7 @@ td code { font-size: 11px; }
.repository-commit-comparison-actions { display: inline-flex; align-items: center; justify-content: flex-end; gap: 4px; }
.repository-preview-placeholder { width: 32px; height: 32px; }
.repository-comparison-preview-workspace { min-width: 0; border-top: 1px solid var(--border); }
-.repository-comparison-preview-workspace:focus-visible { outline: 2px solid #168f82; outline-offset: 2px; }
+.repository-comparison-preview-workspace:focus-visible { outline: 2px solid var(--prayu-focus); outline-offset: 2px; }
.repository-comparison-preview-workspace > header { min-height: 40px; display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.repository-comparison-preview-workspace > header > span { min-width: 0; display: flex; align-items: center; gap: 7px; }
.repository-comparison-preview-workspace > header code { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
@@ -685,7 +689,7 @@ td code { font-size: 11px; }
.repository-diff-list > article > header { min-height: 42px; display: grid; grid-template-columns: minmax(180px, 1fr) auto auto auto; align-items: center; gap: 10px; font-size: 10px; }
.repository-diff-list > article > header code { min-width: 0; overflow: hidden; font-size: 11px; text-overflow: ellipsis; white-space: nowrap; }
.repository-diff-list > article > header > span:not(.status-badge) { color: var(--muted); }
-.repository-diff-list pre { max-height: 460px; margin: 0 0 12px; padding: 12px; overflow: auto; border: 1px solid var(--border); border-radius: 5px; background: #f6f8f9; color: #26343d; font-size: 11px; line-height: 1.5; white-space: pre; }
+.repository-diff-list pre { max-height: 460px; margin: 0 0 12px; padding: 12px; overflow: auto; border: 1px solid var(--border); border-radius: 5px; background: var(--prayu-surface-solid); color: var(--prayu-text); font-size: 11px; line-height: 1.5; white-space: pre; }
.repository-diff-omitted { padding: 10px 2px 12px; color: var(--muted); font-size: 11px; }
.verification-plan-form { display: grid; gap: 10px; padding: 12px 0; border-bottom: 1px solid var(--border); }
.verification-plan-form > label, .verification-plan-items label { min-width: 0; display: grid; gap: 5px; color: var(--muted); font-size: 10px; }
@@ -701,7 +705,7 @@ td code { font-size: 11px; }
.verification-plan-list > article > header { display: grid; grid-template-columns: minmax(0, 1fr) auto 150px; align-items: center; gap: 9px; }
.verification-plan-list > article > header strong { overflow: hidden; font-size: 12px; text-overflow: ellipsis; white-space: nowrap; }
.verification-plan-list time { color: var(--muted); font-size: 10px; text-align: right; }
-.verification-plan-list p { margin: 8px 0; color: #3c484f; font-size: 11px; line-height: 1.45; }
+.verification-plan-list p { margin: 8px 0; color: var(--prayu-text); font-size: 11px; line-height: 1.45; }
.verification-plan-list ol { display: grid; gap: 6px; margin: 0; padding-left: 24px; }
.verification-plan-list li { padding-left: 3px; font-size: 11px; }
.verification-plan-list li strong, .verification-plan-list li span { display: block; overflow-wrap: anywhere; }
@@ -722,8 +726,8 @@ td code { font-size: 11px; }
.verification-snapshot-receipts time { color: var(--muted); }
.verification-snapshot-review-actions { display: flex; align-items: center; justify-content: flex-end; gap: 5px; }
.verification-snapshot-review-actions .compact-command { min-height: 26px; padding: 0 7px; font-size: 9px; }
-.verification-receipt-focus { min-height: 38px; display: flex; flex-wrap: wrap; align-items: center; gap: 7px; padding: 7px 9px; border-left: 3px solid var(--accent); background: var(--accent-soft); color: #08665e; font-size: 11px; }
-.verification-receipt-focus.unavailable { border-left-color: var(--warning); background: #fff8e9; color: #714800; }
+.verification-receipt-focus { min-height: 38px; display: flex; flex-wrap: wrap; align-items: center; gap: 7px; padding: 7px 9px; border-left: 3px solid var(--accent); background: var(--accent-soft); color: var(--prayu-text); font-size: 11px; }
+.verification-receipt-focus.unavailable { border-left-color: var(--warning); background: var(--prayu-control); color: var(--prayu-warning); }
.verification-coverage-detail > ul { display: grid; gap: 4px; margin: 0; padding: 0; list-style: none; }
.verification-coverage-detail > ul > li { min-width: 0; display: grid; grid-template-columns: auto minmax(100px, 1fr) 112px 138px; align-items: center; gap: 7px; padding: 5px 0; border-top: 1px solid var(--border); }
.verification-coverage-detail > ul > li code { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
@@ -741,7 +745,7 @@ td code { font-size: 11px; }
.verification-list article > header { display: grid; grid-template-columns: auto minmax(0, 1fr) 150px; align-items: center; gap: 10px; }
.verification-list strong { overflow: hidden; font-size: 12px; text-overflow: ellipsis; white-space: nowrap; }
.verification-list time { color: var(--muted); font-size: 10px; text-align: right; }
-.verification-list p { margin: 8px 0 0; color: #3c484f; font-size: 11px; line-height: 1.5; white-space: pre-wrap; overflow-wrap: anywhere; }
+.verification-list p { margin: 8px 0 0; color: var(--prayu-text); font-size: 11px; line-height: 1.5; white-space: pre-wrap; overflow-wrap: anywhere; }
.verification-association-controls { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 8px; margin-top: 9px; }
.verification-association-controls select { width: 100%; min-width: 0; height: 32px; padding: 0 8px; border: 1px solid var(--border-strong); border-radius: 5px; background: var(--surface); color: var(--ink); font-size: 10px; }
.verification-association-state { display: flex; align-items: center; gap: 7px; margin-top: 9px; color: var(--muted); font-size: 10px; }
@@ -778,7 +782,7 @@ td code { font-size: 11px; }
.delivery-truth-summary > div { min-width: 0; flex: 1; }
.delivery-truth-summary strong { font-size: 13px; }
.delivery-truth-summary p { margin: 5px 0 0; color: var(--muted); font-size: 10px; line-height: 1.5; }
-.delivery-truth-passed { border-left-color: var(--prayu-success, #168f82); background: color-mix(in srgb, var(--prayu-success, #168f82) 7%, var(--surface)); }
+.delivery-truth-passed { border-left-color: var(--prayu-success, var(--prayu-border)); background: var(--prayu-control); }
.delivery-truth-identities { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); border-bottom: 1px solid var(--border); }
.delivery-truth-identities > div { min-width: 0; display: grid; gap: 4px; padding: 10px; border-right: 1px solid var(--border); border-top: 1px solid var(--border); }
.delivery-truth-identities span { color: var(--muted); font-size: 9px; text-transform: uppercase; }
@@ -840,8 +844,8 @@ td code { font-size: 11px; }
.explorer-search input { min-width: 0; height: 32px; padding: 0; border: 0; background: transparent; color: var(--ink); font-size: 12px; }
.explorer-search input:focus-visible { outline: 0; }
.explorer-provenance { display: flex; align-items: center; gap: 10px; min-height: 34px; padding: 7px 2px; color: var(--muted); font-size: 10px; }
-.explorer-provenance code { margin-left: auto; color: #4d5960; }
-.explorer-attachment-status { min-height: 34px; display: flex; align-items: center; gap: 8px; padding: 7px 2px; border-bottom: 1px solid var(--border); color: #146c4e; font-size: 11px; }
+.explorer-provenance code { margin-left: auto; color: var(--prayu-muted); }
+.explorer-attachment-status { min-height: 34px; display: flex; align-items: center; gap: 8px; padding: 7px 2px; border-bottom: 1px solid var(--border); color: var(--prayu-success); font-size: 11px; }
.explorer-search-results { border-bottom: 1px solid var(--border); }
.explorer-search-results > header { min-height: 38px; display: flex; align-items: center; gap: 8px; }
.explorer-search-results > header strong { font-size: 12px; }
@@ -851,36 +855,36 @@ td code { font-size: 11px; }
.search-result-open > span { min-width: 0; display: grid; gap: 3px; }
.search-result-open strong, .search-result-open code { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.search-result-open small { color: var(--muted); font-size: 10px; }
-.search-result-open code { color: #4d5960; font-size: 10px; }
+.search-result-open code { color: var(--prayu-text); font-size: 10px; }
.explorer-list { display: grid; border-top: 1px solid var(--border); }
.explorer-list button { width: 100%; min-height: 38px; display: grid; grid-template-columns: 20px minmax(0, 1fr) max-content; align-items: center; gap: 8px; padding: 7px 10px; border: 0; border-bottom: 1px solid var(--border); background: transparent; color: var(--text); text-align: left; }
-.explorer-list button:not(:disabled):hover { background: #f3f7f8; }
-.explorer-list button:disabled { cursor: not-allowed; color: #8b9499; }
+.explorer-list button:not(:disabled):hover { background: var(--prayu-control-hover); }
+.explorer-list button:disabled { cursor: not-allowed; color: var(--prayu-muted); }
.explorer-list button span { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.explorer-list button small { color: var(--muted); font-size: 10px; }
.explorer-file > div:not(.explorer-file-lines) { min-height: 34px; display: flex; justify-content: flex-end; align-items: center; gap: 12px; color: var(--muted); font-size: 10px; }
-.explorer-file pre { max-height: calc(100vh - 280px); min-height: 280px; margin: 0; padding: 14px; overflow: auto; border: 1px solid var(--border); border-radius: 5px; background: #f6f8f9; color: #26343d; font-size: 11px; line-height: 1.55; white-space: pre; }
-.explorer-file-lines { display: block; max-height: calc(100vh - 280px); min-height: 280px; margin: 0; padding: 10px 0; overflow: auto; border: 1px solid var(--border); border-radius: 5px; background: #f6f8f9; color: #26343d; font-size: 11px; line-height: 1.55; font-family: var(--prayu-font-mono, monospace); }
+.explorer-file pre { max-height: calc(100vh - 280px); min-height: 280px; margin: 0; padding: 14px; overflow: auto; border: 1px solid var(--border); border-radius: 5px; background: var(--prayu-surface-solid); color: var(--prayu-text); font-size: 11px; line-height: 1.55; white-space: pre; }
+.explorer-file-lines { display: block; max-height: calc(100vh - 280px); min-height: 280px; margin: 0; padding: 10px 0; overflow: auto; border: 1px solid var(--border); border-radius: 5px; background: var(--prayu-surface-solid); color: var(--prayu-text); font-size: 11px; line-height: 1.55; font-family: var(--prayu-font-mono, monospace); }
.explorer-file-line { display: flex; padding: 0 8px; }
-.explorer-file-line.is-highlighted { background: color-mix(in srgb, var(--accent, #1a73e8) 18%, transparent); font-weight: 600; }
+.explorer-file-line.is-highlighted { background: var(--prayu-control); font-weight: 600; }
.explorer-line-number { min-width: 44px; user-select: none; color: var(--muted); text-align: right; padding-right: 14px; flex-shrink: 0; }
.explorer-line-content { white-space: pre; flex: 1 1 auto; }
-.explorer-line-warning { padding: 8px 12px; background: color-mix(in srgb, #ef6b5d 15%, transparent); color: #c53929; border: 1px solid color-mix(in srgb, #ef6b5d 30%, transparent); border-radius: 6px; font-size: 12px; margin-bottom: 8px; }
-.explorer-line-notice { padding: 8px 12px; background: color-mix(in srgb, #1a73e8 12%, transparent); color: #1a73e8; border: 1px solid color-mix(in srgb, #1a73e8 25%, transparent); border-radius: 6px; font-size: 12px; margin-bottom: 8px; }
+.explorer-line-warning { padding: 8px 12px; background: var(--prayu-control); color: var(--prayu-warning); border: 1px solid color-mix(in srgb, var(--prayu-border) 30%, transparent); border-radius: 6px; font-size: 12px; margin-bottom: 8px; }
+.explorer-line-notice { padding: 8px 12px; background: var(--prayu-control); color: var(--prayu-text); border: 1px solid color-mix(in srgb, var(--prayu-border) 25%, transparent); border-radius: 6px; font-size: 12px; margin-bottom: 8px; }
.explorer-error-hint { color: var(--muted); font-size: 13px; margin: 6px 0 12px; }
-.v2-terminal-error-notice { padding: 8px 12px; background: color-mix(in srgb, #ef6b5d 15%, transparent); color: #c53929; border: 1px solid color-mix(in srgb, #ef6b5d 30%, transparent); border-radius: 6px; font-size: 12px; margin: 8px 16px; }
+.v2-terminal-error-notice { padding: 8px 12px; background: var(--prayu-danger-soft); color: var(--prayu-danger); border: 1px solid color-mix(in srgb, var(--prayu-danger) 48%, var(--prayu-border)); border-radius: 6px; font-size: 12px; margin: 8px 16px; }
.file-proposal-editor { display: grid; grid-template-rows: auto minmax(360px, calc(100vh - 360px)) auto; min-width: 0; margin-top: 12px; border: 1px solid var(--border-strong); border-radius: 6px; overflow: hidden; background: var(--surface); }
-.file-proposal-editor > header, .file-proposal-editor > footer { min-height: 44px; display: flex; align-items: center; gap: 12px; padding: 7px 10px; background: #f6f8f9; }
+.file-proposal-editor > header, .file-proposal-editor > footer { min-height: 44px; display: flex; align-items: center; gap: 12px; padding: 7px 10px; background: var(--prayu-control); }
.file-proposal-editor > header { border-bottom: 1px solid var(--border); }
.file-proposal-editor > footer { justify-content: flex-end; border-top: 1px solid var(--border); color: var(--muted); font-size: 10px; }
.file-proposal-editor > header > div:first-child { min-width: 0; display: flex; align-items: center; gap: 8px; margin-right: auto; }
.file-proposal-editor > header strong { overflow-wrap: anywhere; font-size: 12px; }
.file-proposal-editor .segmented-control button { display: inline-flex; align-items: center; justify-content: center; gap: 5px; }
-.monaco-proposal-surface { min-width: 0; min-height: 360px; background: #fff; }
+.monaco-proposal-surface { min-width: 0; min-height: 360px; background: var(--prayu-surface-solid); }
.monaco-local-state { align-items: center; display: flex; height: 100%; justify-content: center; }
-.proposal-created-status { display: inline-flex; align-items: center; gap: 5px; color: #125f45; font-weight: 600; }
+.proposal-created-status { display: inline-flex; align-items: center; gap: 5px; color: var(--prayu-success); font-weight: 600; }
.file-proposal-recovery { margin: 12px 0 0; }
-.stale-proposal-status { display: inline-flex; align-items: center; gap: 5px; margin-right: auto; color: #8a3b12; font-weight: 600; }
+.stale-proposal-status { display: inline-flex; align-items: center; gap: 5px; margin-right: auto; color: var(--prayu-warning); font-weight: 600; }
.receipt-history { min-width: 0; }
.receipt-history > header { min-height: 44px; display: flex; align-items: center; justify-content: space-between; gap: 12px; border-bottom: 1px solid var(--border); }
.receipt-history > header > div { display: flex; align-items: center; gap: 8px; }
@@ -895,14 +899,14 @@ td code { font-size: 11px; }
.operator-list-header h2 { margin: 0; font-size: 14px; }
.operator-action-list, .evidence-inventory-list { display: grid; }
.operator-action-list > button { width: 100%; min-height: 58px; display: grid; grid-template-columns: 22px minmax(180px, 1fr) max-content 150px; align-items: center; gap: 10px; padding: 8px 2px; border: 0; border-bottom: 1px solid var(--border); background: transparent; color: var(--ink); text-align: left; cursor: pointer; }
-.operator-action-list > button:hover, .operator-action-list > button:focus-visible { background: #f2f7f6; }
+.operator-action-list > button:hover, .operator-action-list > button:focus-visible { background: var(--prayu-control-hover); }
.operator-action-list > button > span, .evidence-inventory-list > div > span { min-width: 0; display: grid; gap: 3px; }
.operator-action-list strong, .evidence-inventory-list strong { overflow: hidden; font-size: 12px; text-overflow: ellipsis; white-space: nowrap; }
.operator-action-list code, .evidence-inventory-list code { overflow: hidden; color: var(--muted); font-size: 10px; text-overflow: ellipsis; white-space: nowrap; }
.operator-action-list time, .evidence-inventory-list time { color: var(--muted); font-size: 10px; text-align: right; }
.evidence-inventory-list > div { min-height: 58px; display: grid; grid-template-columns: 22px minmax(180px, 1fr) 150px 34px; align-items: center; gap: 10px; padding: 8px 2px; border-bottom: 1px solid var(--border); }
.ui-evidence-panel { min-width: 0; }
-.ui-evidence-boundary { display: flex; align-items: flex-start; gap: 9px; margin: 12px 0; padding: 11px 12px; border: 1px solid #d4932c; border-radius: 5px; background: #fff8e9; color: #714800; font-size: 11px; line-height: 1.45; }
+.ui-evidence-boundary { display: flex; align-items: flex-start; gap: 9px; margin: 12px 0; padding: 11px 12px; border: 1px solid var(--prayu-border); border-radius: 5px; background: var(--prayu-control); color: var(--prayu-warning); font-size: 11px; line-height: 1.45; }
.ui-evidence-boundary > span { display: grid; gap: 2px; }
.ui-evidence-layout { display: grid; grid-template-columns: minmax(210px, .32fr) minmax(0, 1fr); min-height: 360px; border: 1px solid var(--border); border-radius: 6px; overflow: hidden; }
.ui-evidence-attempts { max-height: 620px; overflow: auto; border-right: 1px solid var(--border); background: var(--surface-subtle); }
@@ -922,7 +926,7 @@ td code { font-size: 11px; }
.ui-evidence-diagnostics { display: flex; flex-wrap: wrap; gap: 6px; margin: 10px 0; }
.ui-evidence-diagnostics span { padding: 4px 6px; border: 1px solid var(--border); border-radius: 4px; color: var(--muted); font-size: 9px; }
.ui-evidence-diagnostics strong { color: var(--ink); }
-.ui-evidence-failure { display: grid; gap: 3px; margin-top: 10px; padding: 9px 10px; border-left: 3px solid var(--danger); background: #fff0ee; color: var(--danger); font-size: 11px; }
+.ui-evidence-failure { display: grid; gap: 3px; margin-top: 10px; padding: 9px 10px; border-left: 3px solid var(--danger); background: var(--prayu-danger-soft); color: var(--danger); font-size: 11px; }
.ui-evidence-detail details { margin-top: 10px; }
.ui-evidence-detail details summary { color: var(--muted); cursor: pointer; font-size: 11px; }
.ui-evidence-detail pre { max-height: 280px; margin: 7px 0 0; padding: 9px; overflow: auto; border: 1px solid var(--border); background: var(--surface-subtle); font: 9px/1.5 var(--prayu-font-mono); }
@@ -943,13 +947,13 @@ td code { font-size: 11px; }
.ui-evidence-attempts { max-height: 220px; border-right: 0; border-bottom: 1px solid var(--border); }
.ui-evidence-facts { grid-template-columns: 1fr; }
}
-.command-palette-backdrop { position: fixed; inset: 0; z-index: 40; display: grid; place-items: start center; padding: min(14vh, 110px) 18px 18px; background: rgb(17 27 34 / 42%); }
-.command-palette { width: min(620px, 100%); max-height: min(560px, calc(100dvh - 140px)); display: flex; flex-direction: column; overflow: hidden; border: 1px solid var(--border-strong); border-radius: 7px; background: var(--surface); box-shadow: 0 20px 54px rgb(10 18 24 / 24%); }
+.command-palette-backdrop { position: fixed; inset: 0; z-index: 40; display: grid; place-items: start center; padding: min(14vh, 110px) 18px 18px; background: rgb(0 0 0 / 42%); }
+.command-palette { width: min(620px, 100%); max-height: min(560px, calc(100dvh - 140px)); display: flex; flex-direction: column; overflow: hidden; border: 1px solid var(--border-strong); border-radius: 7px; background: var(--surface); box-shadow: 0 20px 54px rgb(0 0 0 / 24%); }
.command-palette > header { min-height: 52px; display: grid; grid-template-columns: 22px minmax(0, 1fr) 34px; align-items: center; gap: 8px; padding: 8px 10px 8px 14px; border-bottom: 1px solid var(--border); }
.command-palette input { width: 100%; min-width: 0; height: 36px; border: 0; outline: 0; background: transparent; color: var(--ink); font-size: 14px; }
.command-palette-results { min-height: 60px; overflow: auto; padding: 6px; }
.command-palette-results > button { width: 100%; min-height: 42px; display: grid; grid-template-columns: minmax(0, 1fr) max-content; align-items: center; gap: 14px; padding: 7px 10px; border: 0; border-radius: 4px; background: transparent; color: var(--ink); text-align: left; cursor: pointer; }
-.command-palette-results > button.selected { background: var(--accent-soft); color: #08665e; }
+.command-palette-results > button.selected { background: var(--accent-soft); color: var(--prayu-text); }
.command-palette-results > button small { color: var(--muted); font-size: 10px; }
.command-palette-empty { padding: 20px 10px; color: var(--muted); text-align: center; }
.run-wake-section .run-control-row { margin-top: 12px; }
@@ -969,10 +973,10 @@ td code { font-size: 11px; }
.command-proposal-purpose { margin: 10px 0 0; color: var(--text); font-size: 12px; line-height: 1.5; }
.command-proposal-path { display: block; width: fit-content; max-width: 100%; margin-top: 8px;
overflow: hidden; color: var(--muted); font-size: 10px; text-overflow: ellipsis; }
-.command-proposal-evidence { margin-top: 12px; border: 1px solid #d4932c;
- background: #fff8e9; }
+.command-proposal-evidence { margin-top: 12px; border: 1px solid var(--prayu-border);
+ background: var(--prayu-control); }
.command-proposal-evidence > strong { display: flex; align-items: center; gap: 7px; padding: 9px 10px;
- border-bottom: 1px solid #d4932c; color: #714800; font-size: 11px; }
+ border-bottom: 1px solid var(--prayu-border); color: var(--prayu-warning); font-size: 11px; }
.command-proposal-evidence pre { max-height: 240px; margin: 0; padding: 10px; overflow: auto;
color: var(--ink); font: 10px/1.55 var(--prayu-font-mono);
white-space: pre-wrap; word-break: break-word; }
@@ -1000,7 +1004,7 @@ td code { font-size: 11px; }
.saved-host-output-evidence > summary { cursor: pointer; padding: 6px 0; }
.saved-host-output-evidence p, .saved-host-output-evidence code { overflow-wrap: anywhere; }
.host-command-risk { display: flex; align-items: center; gap: 8px; margin-top: 10px; padding: 10px 12px;
- border: 1px solid #b83b35; border-radius: 5px; background: #fff0ef; color: #8d211c; font-size: 11px; }
+ border: 1px solid color-mix(in srgb, var(--prayu-danger) 48%, var(--prayu-border)); border-radius: 5px; background: var(--prayu-danger-soft); color: var(--prayu-danger); font-size: 11px; }
.host-command-envelope { display: grid; grid-template-columns: 138px minmax(0, 1fr); gap: 7px 12px;
margin: 12px 0 0; padding: 12px; border: 1px solid var(--border); background: var(--surface-muted); }
.host-command-envelope dt { color: var(--muted); font-size: 10px; }
@@ -1011,12 +1015,12 @@ td code { font-size: 11px; }
.host-command-env-key { margin: 0 6px 4px 0; padding: 1px 4px; border: 1px solid var(--border); }
.host-command-verification { display: flex; align-items: flex-start; gap: 8px; margin-top: 12px;
color: var(--text); font-size: 11px; line-height: 1.45; }
-.host-command-verification input { width: 15px; height: 15px; margin: 0; accent-color: #087f73; }
+.host-command-verification input { width: 15px; height: 15px; margin: 0; accent-color: var(--prayu-accent); }
.approval-actions { display: flex; align-items: center; justify-content: flex-end; gap: 8px; margin-top: 10px; }
.approval-actions input { width: min(300px, 100%); min-width: 120px; height: 34px; padding: 0 9px; border: 1px solid var(--border-strong); border-radius: 5px; }
.workspace-import-control { min-height: 74px; display: flex; align-items: center; gap: 12px; padding: 13px 15px; border: 1px solid var(--border-strong); border-radius: 6px; background: var(--surface); color: var(--ink); cursor: pointer; text-align: left; }
-.workspace-import-control:hover:not(:disabled) { border-color: #168f82; background: #f3f8f7; }
-.workspace-import-control.selected { border-color: #168f82; background: var(--accent-soft); }
+.workspace-import-control:hover:not(:disabled) { border-color: var(--prayu-border-strong); background: var(--prayu-control-hover); }
+.workspace-import-control.selected { border-color: var(--prayu-border); background: var(--accent-soft); }
.workspace-import-control > span { min-width: 0; display: grid; gap: 4px; }
.workspace-import-control strong { overflow: hidden; font-size: 13px; text-overflow: ellipsis; white-space: nowrap; }
.workspace-import-control small { color: var(--muted); font-size: 11px; font-weight: 400; }
@@ -1073,7 +1077,7 @@ td code { font-size: 11px; }
.context-branch-goal { width: 100%; margin: 8px 0 12px; }
.continuity-tree { display: grid; gap: 6px; }
.continuity-tree > article { position: relative; min-width: 0; display: grid; grid-template-columns: 16px 18px minmax(0, 1fr) auto; align-items: start; gap: 8px; margin-left: calc(var(--context-depth) * 22px); padding: 9px 10px; border: 1px solid var(--border); border-radius: 5px; background: var(--surface); }
-.continuity-line { align-self: stretch; border-left: 2px solid #c9b6a2; }
+.continuity-line { align-self: stretch; border-left: 2px solid var(--prayu-border); }
.continuity-tree > article > svg { margin-top: 2px; color: var(--muted); }
.continuity-tree > article > div:nth-of-type(1) { min-width: 0; }
.continuity-tree article header { display: flex; flex-wrap: wrap; align-items: center; gap: 7px; }
@@ -1087,8 +1091,8 @@ td code { font-size: 11px; }
.context-branch-compare dl { display: grid; grid-template-columns: 120px minmax(0, 1fr); gap: 5px 10px; margin: 10px 0 0; font-size: 10px; }
.context-branch-compare dt { color: var(--muted); }
.context-branch-compare dd { margin: 0; overflow-wrap: anywhere; }
-.context-branch-compare dd.changed { color: #8a5011; }
-.context-branch-compare dd.same { color: #146c4e; }
+.context-branch-compare dd.changed { color: var(--prayu-warning); }
+.context-branch-compare dd.same { color: var(--prayu-success); }
.spin { animation: spin .8s linear infinite; }
@keyframes spin { to { transform: rotate(360deg); } }
@@ -1248,20 +1252,20 @@ td code { font-size: 11px; }
body { background: transparent; }
.prayu-shell {
- --accent: #df6b22;
- --accent-soft: rgb(222 105 32 / 16%);
- --border: rgb(71 54 36 / 20%);
- --border-strong: rgb(66 48 31 / 31%);
- --ink: #211c17;
- --muted: #776b5f;
- --surface: rgb(255 249 238 / 84%);
- --surface-subtle: rgb(240 230 213 / 62%);
+ --accent: var(--prayu-accent);
+ --accent-soft: color-mix(in srgb, var(--prayu-accent) 14%, transparent);
+ --border: var(--prayu-border);
+ --border-strong: var(--prayu-border-strong);
+ --ink: var(--prayu-text);
+ --muted: var(--prayu-muted);
+ --surface: var(--prayu-panel);
+ --surface-subtle: var(--prayu-control);
position: relative;
background: transparent;
}
.prayu-shell.settings-mode {
- color: #f3ddc1;
+ color: var(--prayu-text);
background: transparent;
}
@@ -1270,9 +1274,9 @@ body { background: transparent; }
z-index: 8;
height: 44px;
padding: 0 14px;
- border-color: rgb(240 213 177 / 14%);
- color: #f2dcc0;
- background: rgb(18 17 15 / 88%);
+ border-color: var(--prayu-border);
+ color: var(--prayu-text);
+ background: var(--prayu-titlebar);
backdrop-filter: blur(12px);
--wails-draggable: drag;
}
@@ -1304,7 +1308,7 @@ body { background: transparent; }
.titlebar-menu button {
border: 0;
background: transparent;
- color: #e9d5ba;
+ color: var(--prayu-text);
cursor: pointer;
}
@@ -1325,22 +1329,22 @@ body { background: transparent; }
}
.titlebar-icon:hover:not(:disabled),
-.titlebar-menu button:hover:not(:disabled) { background: rgb(240 218 190 / 10%); }
+.titlebar-menu button:hover:not(:disabled) { background: var(--prayu-control-hover); }
.titlebar-icon:disabled,
-.titlebar-menu button:disabled { color: rgb(233 213 186 / 34%); cursor: default; }
+.titlebar-menu button:disabled { color: var(--prayu-muted); cursor: default; }
.prayu-titlebar .topbar-actions { gap: 5px; }
-.prayu-titlebar .health-indicator { color: #c8b69f; }
+.prayu-titlebar .health-indicator { color: var(--prayu-muted); }
.prayu-titlebar .icon-button {
width: 30px;
height: 30px;
border-color: transparent;
- color: #ead7be;
+ color: var(--prayu-text);
background: transparent;
}
.prayu-titlebar .icon-button:hover:not(:disabled) {
- border-color: rgb(240 218 190 / 12%);
- background: rgb(240 218 190 / 9%);
+ border-color: var(--prayu-border-strong);
+ background: var(--prayu-titlebar);
}
.prayu-shell .shell-body {
@@ -1359,11 +1363,11 @@ body { background: transparent; }
padding: 7px 10px;
border: 1px solid transparent;
border-radius: 5px;
- color: #f0ddc4;
+ color: var(--prayu-text);
background: transparent;
cursor: pointer;
}
-.sidebar-create:hover { border-color: rgb(230 112 38 / 34%); background: rgb(230 112 38 / 10%); }
+.sidebar-create:hover { border-color: var(--prayu-border-strong); background: var(--prayu-control-hover); }
.prayu-shell .resource-tabs {
height: 43px;
@@ -1374,7 +1378,7 @@ body { background: transparent; }
.prayu-shell .resource-tabs button {
position: relative;
overflow: hidden;
- color: #bcae9d;
+ color: var(--prayu-text);
isolation: isolate;
}
.prayu-shell .sidebar-tools {
@@ -1382,25 +1386,25 @@ body { background: transparent; }
padding: 7px 10px 6px;
}
.prayu-shell .search-field {
- border-color: rgb(235 211 183 / 17%);
- color: #ad9e8e;
- background: rgb(28 26 23 / 66%);
+ border-color: var(--prayu-border);
+ color: var(--prayu-text);
+ background: var(--prayu-control);
}
-.prayu-shell .search-field input { color: #ead8bf; }
-.prayu-shell .search-field input::placeholder { color: #958778; }
-.prayu-shell .search-field:focus-within { border-color: #d96b25; box-shadow: 0 0 0 1px #d96b25; }
+.prayu-shell .search-field input { color: var(--prayu-text); }
+.prayu-shell .search-field input::placeholder { color: var(--prayu-muted); }
+.prayu-shell .search-field:focus-within { border-color: var(--prayu-focus); box-shadow: 0 0 0 1px var(--prayu-focus); }
.prayu-shell .sidebar-tools .icon-button {
width: 32px;
height: 32px;
- border-color: rgb(235 211 183 / 16%);
- color: #d9c5aa;
- background: rgb(28 26 23 / 58%);
+ border-color: var(--prayu-border);
+ color: var(--prayu-text);
+ background: var(--prayu-control);
}
.prayu-shell .status-filter {
margin-bottom: 4px;
- border-color: rgb(235 211 183 / 16%);
- color: #d9c5aa;
- background: rgb(28 26 23 / 72%);
+ border-color: var(--prayu-border);
+ color: var(--prayu-text);
+ background: var(--prayu-control);
}
.resource-list-heading {
@@ -1408,7 +1412,7 @@ body { background: transparent; }
align-items: center;
justify-content: space-between;
padding: 9px 15px 5px;
- color: #8f8274;
+ color: var(--prayu-muted);
font-size: 10px;
text-transform: uppercase;
}
@@ -1417,70 +1421,70 @@ body { background: transparent; }
.prayu-shell .main-workspace {
margin-top: 5px;
- border: 1px solid rgb(105 78 49 / 20%);
+ border: 1px solid var(--prayu-border);
border-right: 0;
border-bottom: 0;
border-radius: 14px 0 0 0;
color: var(--ink);
- background: rgb(250 242 227 / 90%);
+ background: var(--prayu-panel);
box-shadow: 0 18px 54px rgb(0 0 0 / 21%);
backdrop-filter: blur(7px);
}
-.prayu-shell .workspace-header { border-color: var(--border); background: rgb(251 244 231 / 36%); }
-.prayu-shell .workspace-tabs { border-color: var(--border); background: rgb(237 226 207 / 48%); }
+.prayu-shell .workspace-header { border-color: var(--border); background: var(--prayu-control); }
+.prayu-shell .workspace-tabs { border-color: var(--border); background: var(--prayu-control); }
.prayu-shell .workspace-tabs {
scrollbar-width: none;
}
.prayu-shell .workspace-tabs::-webkit-scrollbar { display: none; }
-.prayu-shell .workspace-tabs button.active { border-bottom-color: #db6a23; color: #33261c; }
-.prayu-shell .workspace-tabs button.active svg { color: #d55f19; }
+.prayu-shell .workspace-tabs button.active { border-bottom-color: var(--prayu-border); color: var(--prayu-text); }
+.prayu-shell .workspace-tabs button.active svg { color: var(--prayu-text); }
.prayu-shell .workspace-content { width: 100%; margin: 0 auto; }
.prayu-shell .icon-button,
.prayu-shell .command-button,
.prayu-shell .compact-command,
-.prayu-shell .load-more { border-color: var(--border-strong); background: rgb(255 249 238 / 64%); }
+.prayu-shell .load-more { border-color: var(--border-strong); background: var(--prayu-control); }
.prayu-shell .command-button:hover:not(:disabled),
.prayu-shell .compact-command:hover:not(:disabled),
.prayu-shell .load-more:hover:not(:disabled),
.prayu-shell .icon-button:hover:not(:disabled) {
- border-color: rgb(216 99 25 / 50%);
- color: #a94712;
- background: rgb(232 111 35 / 12%);
+ border-color: var(--prayu-border-strong);
+ color: var(--prayu-muted);
+ background: var(--prayu-control-hover);
}
.prayu-shell .session-send-button {
- border-color: #d7661d;
- background: #d7661d;
+ border-color: var(--prayu-primary-border);
+ background: var(--prayu-primary-bg);
}
-.prayu-shell .budget-track::-webkit-progress-value { background: #d7661d; }
-.prayu-shell .budget-track::-moz-progress-bar { background: #d7661d; }
+.prayu-shell .budget-track::-webkit-progress-value { background: var(--prayu-control); }
+.prayu-shell .budget-track::-moz-progress-bar { background: var(--prayu-control); }
.settings-action {
min-height: 33px;
display: inline-flex;
align-items: center;
gap: 7px;
padding: 5px 9px;
- border: 1px solid rgb(239 211 177 / 18%);
+ border: 1px solid var(--prayu-border);
border-radius: 5px;
- color: #ead5ba;
- background: rgb(23 21 18 / 50%);
+ color: var(--prayu-text);
+ background: var(--prayu-control);
cursor: pointer;
}
-.settings-action:hover { border-color: rgb(228 111 36 / 48%); color: #ff8a39; }
+.settings-action:hover { border-color: var(--prayu-border-strong); color: var(--prayu-text); }
.about-mark {
display: grid;
place-items: center;
- border: 1px solid #f08a42;
+ border: 1px solid var(--prayu-border);
border-radius: 50%;
- color: #ffe2bf;
- background: rgb(220 96 24 / 36%);
+ color: var(--prayu-text);
+ background: var(--prayu-control);
font: italic 700 32px Georgia, serif;
- box-shadow: 0 0 0 5px rgb(13 12 11 / 52%);
+ box-shadow: 0 0 0 5px rgb(0 0 0 / 52%);
}
.settings-page-section { width: min(760px, 100%); margin: 22px auto 0; }
.settings-page-section > h1 { margin: 0 0 24px; font-size: 24px; }
.settings-row-list,
-.shortcut-list { margin: 0; border-top: 1px solid rgb(237 213 184 / 16%); }
+.shortcut-list { margin: 0; border-top: 1px solid var(--prayu-border); }
.settings-row-list > div,
.shortcut-list > div {
min-height: 58px;
@@ -1488,39 +1492,39 @@ body { background: transparent; }
align-items: center;
justify-content: space-between;
gap: 18px;
- border-bottom: 1px solid rgb(237 213 184 / 14%);
+ border-bottom: 1px solid var(--prayu-border);
}
.settings-row-list dt,
-.shortcut-list dt { color: #c6b39c; font-size: 12px; }
+.shortcut-list dt { color: var(--prayu-muted); font-size: 12px; }
.settings-row-list dd,
.shortcut-list dd { display: flex; align-items: center; gap: 5px; margin: 0; font-size: 12px; }
-.prayu-segmented { display: grid; grid-template-columns: 1fr 1fr; overflow: hidden; border: 1px solid rgb(237 213 184 / 22%); border-radius: 5px; }
-.prayu-segmented button { min-height: 32px; padding: 5px 12px; border: 0; border-right: 1px solid rgb(237 213 184 / 18%); color: #baa68f; background: rgb(20 18 16 / 55%); cursor: pointer; }
+.prayu-segmented { display: grid; grid-template-columns: 1fr 1fr; overflow: hidden; border: 1px solid var(--prayu-border); border-radius: 5px; }
+.prayu-segmented button { min-height: 32px; padding: 5px 12px; border: 0; border-right: 1px solid var(--prayu-border); color: var(--prayu-text); background: var(--prayu-control); cursor: pointer; }
.prayu-segmented button:last-child { border-right: 0; }
-.prayu-segmented button[aria-pressed="true"] { color: #ffe0bd; background: rgb(222 102 30 / 30%); box-shadow: inset 0 -2px 0 #ee792c; }
-.appearance-preview { min-height: 92px; display: grid; grid-template-columns: 58px minmax(0, 1fr) 20px; align-items: center; gap: 14px; margin-top: 24px; padding: 14px; border: 1px solid rgb(229 112 37 / 38%); border-radius: 7px; background: rgb(22 19 16 / 60%); }
+.prayu-segmented button[aria-pressed="true"] { color: var(--prayu-text); background: var(--prayu-control); box-shadow: 0 5px 16px var(--prayu-primary-shadow), inset 0 1px 0 var(--prayu-glass-highlight); }
+.appearance-preview { min-height: 92px; display: grid; grid-template-columns: 58px minmax(0, 1fr) 20px; align-items: center; gap: 14px; margin-top: 24px; padding: 14px; border: 1px solid var(--prayu-border); border-radius: 7px; background: var(--prayu-control); }
.appearance-preview > span { width: 58px; height: 58px; border-radius: 5px; background: transparent; }
.appearance-preview > div { min-width: 0; display: grid; gap: 5px; }
-.appearance-preview small { color: #9f8e7b; }
-.appearance-preview > svg { color: #ef762a; }
-.shortcut-list kbd { min-width: 26px; padding: 3px 6px; border: 1px solid rgb(237 213 184 / 23%); border-bottom-width: 2px; border-radius: 4px; color: #e5cfb4; background: rgb(20 18 16 / 64%); text-align: center; }
+.appearance-preview small { color: var(--prayu-muted); }
+.appearance-preview > svg { color: var(--prayu-text); }
+.shortcut-list kbd { min-width: 26px; padding: 3px 6px; border: 1px solid var(--prayu-border); border-bottom-width: 2px; border-radius: 4px; color: var(--prayu-muted); background: var(--prayu-control); text-align: center; }
.about-prayu { display: grid; justify-items: center; text-align: center; }
.about-mark { width: 78px; height: 78px; }
.about-prayu > h1 { margin: 14px 0 4px; }
-.about-prayu > p { margin: 0 0 26px; color: #a9957f; }
+.about-prayu > p { margin: 0 0 26px; color: var(--prayu-text); }
.about-prayu .settings-row-list { width: 100%; text-align: left; }
.connection-page {
background: transparent;
}
.connection-panel {
- border-color: rgb(110 78 48 / 24%);
- background: rgb(249 241 225 / 90%);
+ border-color: var(--prayu-border);
+ background: var(--prayu-panel-strong);
box-shadow: 0 22px 70px rgb(0 0 0 / 28%);
backdrop-filter: blur(8px);
}
.connection-heading { margin-top: 26px; }
-.connection-panel .token-row button { background: #d7661d; }
+.connection-panel .token-row button { background: var(--prayu-primary-bg); border: 1px solid var(--prayu-primary-border); box-shadow: 0 7px 20px var(--prayu-primary-shadow), inset 0 1px 0 var(--prayu-glass-highlight); }
[data-prayu-density="compact"] .workspace-header { min-height: 94px; padding-top: 15px; padding-bottom: 13px; }
[data-prayu-density="compact"] .workspace-content { padding-top: 15px; padding-bottom: 24px; }
@@ -1547,8 +1551,8 @@ body { background: transparent; }
.prayu-shell.workspace-mode .prayu-titlebar {
height: 46px;
padding: 0 17px;
- border-bottom-color: rgb(239 216 188 / 11%);
- background: rgb(10 10 9 / 72%);
+ border-bottom-color: var(--prayu-border);
+ background: var(--prayu-titlebar);
backdrop-filter: none;
--wails-draggable: drag;
}
@@ -1569,13 +1573,13 @@ body { background: transparent; }
place-items: center;
padding: 0;
border: 0;
- color: #d7c5ad;
+ color: var(--prayu-text);
background: transparent;
cursor: pointer;
}
-.desktop-window-controls button:hover { background: rgb(239 216 188 / 10%); }
-.desktop-window-controls .desktop-window-close:hover { color: white; background: #c42b1c; }
+.desktop-window-controls button:hover { background: var(--prayu-control-hover); }
+.desktop-window-controls .desktop-window-close:hover { color: var(--prayu-on-danger); background: var(--prayu-danger-fill); }
.prayu-shell.workspace-mode .shell-body {
height: calc(100dvh - 46px);
@@ -1605,16 +1609,12 @@ body { background: transparent; }
flex-direction: column;
margin: 3px 0 0;
overflow: hidden;
- border: 1px solid rgb(100 75 48 / 18%);
+ border: 1px solid var(--prayu-border);
border-right: 0;
border-bottom: 0;
border-radius: 16px 0 0 0;
color: var(--ink);
- background: radial-gradient(circle at 85% 91%,
- rgb(250 243 230 / 44%) 0,
- rgb(250 243 230 / 70%) 14%,
- rgb(250 243 230 / 87%) 37%,
- rgb(250 243 230 / 87%) 100%);
+ background: var(--prayu-panel);
box-shadow: 0 16px 48px rgb(0 0 0 / 17%);
backdrop-filter: none;
}
@@ -1626,8 +1626,8 @@ body { background: transparent; }
justify-content: space-between;
gap: 14px;
padding: 7px 15px 7px 20px;
- border-bottom: 1px solid rgb(86 62 39 / 15%);
- background: rgb(255 250 240 / 37%);
+ border-bottom: 1px solid var(--prayu-border);
+ background: var(--prayu-control);
}
.workspace-panel-location {
@@ -1636,7 +1636,7 @@ body { background: transparent; }
align-items: center;
gap: 9px;
}
-.workspace-panel-location > svg { flex: 0 0 auto; color: #67584a; }
+.workspace-panel-location > svg { flex: 0 0 auto; color: var(--prayu-text); }
.workspace-panel-location strong {
min-width: 0;
overflow: hidden;
@@ -1655,15 +1655,15 @@ body { background: transparent; }
padding: 0;
border: 0;
border-radius: 5px;
- color: #67584a;
+ color: var(--prayu-text);
background: transparent;
cursor: pointer;
}
-.workspace-panel-icon:hover:not(:disabled) { color: #a94712; background: rgb(217 107 37 / 10%); }
+.workspace-panel-icon:hover:not(:disabled) { color: var(--prayu-muted); background: var(--prayu-control-hover); }
.workspace-panel-icon.active {
- color: #923c0e;
- background: rgb(100 73 48 / 11%);
- box-shadow: inset 0 0 0 1px rgb(113 79 49 / 9%);
+ color: var(--prayu-text);
+ background: var(--prayu-control);
+ box-shadow: inset 0 0 0 1px rgb(0 0 0 / 9%);
}
.workspace-panel-icon:disabled { opacity: .45; cursor: default; }
@@ -1683,15 +1683,15 @@ body { background: transparent; }
align-items: center;
gap: 3px;
padding: 0 7px;
- border: 1px solid rgb(91 67 44 / 15%);
+ border: 1px solid var(--prayu-border);
border-radius: 7px;
- color: #67584a;
- background: rgb(255 252 246 / 44%);
+ color: var(--prayu-text);
+ background: var(--prayu-control);
cursor: pointer;
}
.workspace-open-button:hover:not(:disabled) {
- color: #a94712;
- background: rgb(255 252 246 / 76%);
+ color: var(--prayu-muted);
+ background: var(--prayu-control-hover);
}
.workspace-open-button:disabled { opacity: .42; cursor: default; }
.workspace-open-menu,
@@ -1706,11 +1706,11 @@ body { background: transparent; }
display: grid;
gap: 2px;
padding: 6px;
- border: 1px solid rgb(88 67 48 / 18%);
+ border: 1px solid var(--prayu-border);
border-radius: 8px;
- color: #342c25;
- background: rgb(255 253 249 / 98%);
- box-shadow: 0 15px 38px rgb(44 31 20 / 17%);
+ color: var(--prayu-text);
+ background: var(--prayu-panel-strong);
+ box-shadow: 0 15px 38px rgb(0 0 0 / 17%);
}
.workspace-open-menu > button,
.workbench-sidecar-menu > button {
@@ -1729,16 +1729,16 @@ body { background: transparent; }
cursor: pointer;
}
.workspace-open-menu > button:hover,
-.workbench-sidecar-menu > button:hover { background: rgb(75 59 45 / 7%); }
+.workbench-sidecar-menu > button:hover { background: var(--prayu-panel-strong); }
.workspace-open-menu > span {
min-height: 32px;
display: flex;
align-items: center;
padding: 5px 8px;
- color: #7e7166;
+ color: var(--prayu-text);
font-size: 10px;
}
-.workspace-open-message { color: #9c4217 !important; }
+.workspace-open-message { color: var(--prayu-muted) !important; }
.workspace-open-live {
position: fixed;
width: 1px;
@@ -1798,28 +1798,28 @@ body { background: transparent; }
.workbench-bottom-panel {
min-width: 0;
min-height: 0;
- color: #3b332c;
- background: rgb(255 252 246 / 92%);
+ color: var(--prayu-text);
+ background: var(--prayu-panel-strong);
}
.workbench-summary {
overflow: auto;
- border-left: 1px solid rgb(83 63 45 / 14%);
+ border-left: 1px solid var(--prayu-border);
}
.workbench-summary > header,
.workbench-summary > section {
padding: 13px 15px;
- border-bottom: 1px solid rgb(83 63 45 / 12%);
+ border-bottom: 1px solid var(--prayu-border);
}
.workbench-summary > header {
min-height: 46px;
display: flex;
align-items: center;
- color: #817468;
+ color: var(--prayu-text);
font-size: 11px;
}
.workbench-summary h2 {
margin: 0 0 10px;
- color: #766a5f;
+ color: var(--prayu-text);
font-size: 11px;
font-weight: 500;
}
@@ -1836,12 +1836,12 @@ body { background: transparent; }
justify-content: space-between;
gap: 10px;
}
-.workbench-summary dt { color: #8c8075; font-size: 10px; }
+.workbench-summary dt { color: var(--prayu-muted); font-size: 10px; }
.workbench-summary dd {
min-width: 0;
margin: 0;
overflow: hidden;
- color: #4a4037;
+ color: var(--prayu-text);
font-size: 10px;
text-align: right;
text-overflow: ellipsis;
@@ -1865,7 +1865,7 @@ body { background: transparent; }
display: flex;
align-items: flex-start;
gap: 8px;
- color: #81756a;
+ color: var(--prayu-text);
font-size: 10px;
line-height: 1.45;
}
@@ -1875,7 +1875,7 @@ body { background: transparent; }
flex: 0 0 auto;
display: flex;
flex-direction: column;
- border-top: 1px solid rgb(83 63 45 / 16%);
+ border-top: 1px solid var(--prayu-border);
}
.workbench-bottom-panel > header,
.workbench-sidecar-tabs {
@@ -1885,7 +1885,7 @@ body { background: transparent; }
justify-content: space-between;
gap: 6px;
padding: 5px 9px;
- border-bottom: 1px solid rgb(83 63 45 / 11%);
+ border-bottom: 1px solid var(--prayu-border);
}
.workbench-bottom-panel > header > button:first-child,
.workbench-sidecar-tab {
@@ -1897,11 +1897,11 @@ body { background: transparent; }
padding: 0 8px;
border: 0;
border-radius: 6px;
- color: #4e443b;
+ color: var(--prayu-text);
background: transparent;
font-size: 11px;
}
-.workbench-bottom-panel > header > button:first-child.active { background: rgb(72 56 42 / 7%); }
+.workbench-bottom-panel > header > button:first-child.active { background: var(--prayu-control); }
.workbench-terminal-empty,
.workbench-tool-empty {
min-height: 0;
@@ -1912,11 +1912,11 @@ body { background: transparent; }
justify-content: center;
gap: 7px;
padding: 20px;
- color: #81756a;
+ color: var(--prayu-muted);
text-align: center;
}
.workbench-terminal-empty strong,
-.workbench-tool-empty strong { color: #4f463d; font-size: 12px; }
+.workbench-tool-empty strong { color: var(--prayu-muted); font-size: 12px; }
.workbench-terminal-empty span,
.workbench-tool-empty span { font-size: 10px; }
.user-terminal-panel {
@@ -1925,7 +1925,7 @@ body { background: transparent; }
display: grid;
grid-template-rows: 30px minmax(0, 1fr);
overflow: hidden;
- background: #171512;
+ background: var(--prayu-terminal-bg);
}
.user-terminal-controls {
min-width: 0;
@@ -1933,9 +1933,10 @@ body { background: transparent; }
align-items: center;
gap: 8px;
padding: 3px 9px;
- border-bottom: 1px solid rgb(242 228 204 / 9%);
- color: #c8bba8;
- background: #1e1b17;
+ border-bottom: 1px solid var(--prayu-border);
+ color: var(--prayu-terminal-muted);
+ background: var(--prayu-terminal-control);
+ border-color: var(--prayu-terminal-border);
}
.user-terminal-controls button {
height: 24px;
@@ -1943,29 +1944,30 @@ body { background: transparent; }
align-items: center;
gap: 5px;
padding: 0 7px;
- border: 1px solid rgb(242 228 204 / 13%);
+ border: 1px solid var(--prayu-terminal-border);
border-radius: 5px;
- color: #f2e4cc;
- background: #29241e;
+ color: var(--prayu-terminal-text);
+ background: var(--prayu-terminal-control);
font-size: 10px;
+ border-color: var(--prayu-terminal-border);
}
.user-terminal-controls button:hover:not(:disabled) {
- border-color: rgb(245 130 49 / 55%);
- background: #34291f;
+ border-color: var(--prayu-terminal-text);
+ background: var(--prayu-terminal-control-hover);
}
.user-terminal-controls button:disabled { opacity: .45; }
.user-terminal-state {
flex: 0 0 auto;
- color: #948779;
+ color: var(--prayu-terminal-muted);
font-size: 9px;
text-transform: uppercase;
}
-.user-terminal-state.running { color: #8fbf71; }
-.user-terminal-state.failed { color: #ef6b5d; }
+.user-terminal-state.running { color: var(--prayu-terminal-text); }
+.user-terminal-state.failed { color: var(--prayu-danger-on-dark); }
.user-terminal-message {
min-width: 0;
overflow: hidden;
- color: #ef9b6b;
+ color: var(--prayu-danger-on-dark);
font-size: 9px;
text-overflow: ellipsis;
white-space: nowrap;
@@ -1975,6 +1977,7 @@ body { background: transparent; }
min-height: 0;
padding: 6px 8px;
overflow: hidden;
+ background: var(--prayu-terminal-bg);
}
.user-terminal-host .xterm { height: 100%; }
.user-terminal-host .xterm-viewport { scrollbar-width: thin; }
@@ -1983,7 +1986,7 @@ body { background: transparent; }
display: flex;
flex-direction: column;
overflow: hidden;
- border-left: 1px solid rgb(83 63 45 / 16%);
+ border-left: 1px solid var(--prayu-border);
}
.workbench-sidecar-tabs { justify-content: flex-start; }
.workbench-sidecar-tab { flex: 1; }
@@ -1995,7 +1998,7 @@ body { background: transparent; }
}
.workbench-sidecar-menu { top: calc(100% + 5px); right: -34px; min-width: 220px; }
.workbench-sidecar-menu kbd {
- color: #91867c;
+ color: var(--prayu-muted);
font: 500 9px/1.3 var(--prayu-font-mono);
}
.workbench-sidecar-body {
@@ -2017,7 +2020,7 @@ body { background: transparent; }
grid-template-columns: minmax(0, 1fr) auto;
gap: 5px 8px;
padding: 9px;
- border-bottom: 1px solid rgb(83 63 45 / 10%);
+ border-bottom: 1px solid var(--prayu-border);
}
.workbench-side-task-list article > div {
min-width: 0;
@@ -2032,7 +2035,7 @@ body { background: transparent; }
white-space: nowrap;
}
.workbench-side-task-list strong { font-size: 11px; }
-.workbench-side-task-list small { grid-column: 1 / -1; color: #8b7f74; font-size: 9px; }
+.workbench-side-task-list small { grid-column: 1 / -1; color: var(--prayu-muted); font-size: 9px; }
.agent-composer-controls {
min-height: 42px;
@@ -2062,8 +2065,8 @@ body { background: transparent; }
border-radius: 50%;
cursor: pointer;
}
-.composer-icon-button { color: #5e554d; background: rgb(54 46 39 / 5%); }
-.composer-icon-button:hover { background: rgb(54 46 39 / 10%); }
+.composer-icon-button { color: var(--prayu-text); background: var(--prayu-control); }
+.composer-icon-button:hover { background: var(--prayu-control-hover); }
.composer-mode-chip {
height: 28px;
@@ -2071,10 +2074,10 @@ body { background: transparent; }
align-items: center;
gap: 5px;
padding: 0 8px;
- border: 1px solid rgb(211 95 25 / 24%);
+ border: 1px solid var(--prayu-border);
border-radius: 7px;
- color: #a84916;
- background: rgb(222 105 34 / 8%);
+ color: var(--prayu-text);
+ background: var(--prayu-control);
font-size: 10px;
white-space: nowrap;
}
@@ -2089,17 +2092,17 @@ body { background: transparent; }
max-height: min(430px, 65dvh);
overflow: auto;
padding: 7px;
- border: 1px solid rgb(94 72 52 / 20%);
+ border: 1px solid var(--prayu-border);
border-radius: 10px;
- color: #302923;
- background: rgb(255 252 246 / 97%);
- box-shadow: 0 18px 48px rgb(42 30 20 / 18%);
+ color: var(--prayu-text);
+ background: var(--prayu-panel-strong);
+ box-shadow: 0 18px 48px rgb(0 0 0 / 18%);
}
.composer-add-popover { right: auto; left: 0; width: min(340px, calc(100vw - 36px)); }
.composer-popover-heading {
display: block;
padding: 5px 9px 4px;
- color: #8a7c6f;
+ color: var(--prayu-muted);
font-size: 10px;
}
.composer-popover > button {
@@ -2117,16 +2120,16 @@ body { background: transparent; }
text-align: left;
cursor: pointer;
}
-.composer-popover > button:hover:not(:disabled) { background: rgb(60 47 36 / 6%); }
-.composer-popover > button:disabled { color: #a69d94; cursor: default; }
+.composer-popover > button:hover:not(:disabled) { background: var(--prayu-panel-strong); }
+.composer-popover > button:disabled { color: var(--prayu-muted); cursor: default; }
.composer-popover > button > span { min-width: 0; display: grid; gap: 2px; }
.composer-popover > button strong,
.composer-popover > button small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.composer-popover > button strong { font-size: 12px; font-weight: 500; }
-.composer-popover > button small { color: #93877d; font-size: 10px; }
+.composer-popover > button small { color: var(--prayu-muted); font-size: 10px; }
.composer-popover-note,
-.composer-popover-error { display: block; padding: 6px 9px; color: #897c70; font-size: 10px; }
-.composer-popover-error { color: #a13f2f; }
+.composer-popover-error { display: block; padding: 6px 9px; color: var(--prayu-danger); font-size: 10px; }
+.composer-popover-error { color: var(--prayu-danger); }
.composer-model-button,
.composer-reasoning-button {
@@ -2138,12 +2141,12 @@ body { background: transparent; }
padding: 0 8px;
border: 0;
border-radius: 8px;
- color: #4d443c;
+ color: var(--prayu-text);
background: transparent;
cursor: pointer;
}
.composer-model-button:hover:not(:disabled),
-.composer-reasoning-button:hover { background: rgb(54 46 39 / 6%); }
+.composer-reasoning-button:hover { background: var(--prayu-control-hover); }
.composer-model-button:disabled { opacity: .55; cursor: default; }
.composer-model-button span,
.composer-reasoning-button span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 11px; }
@@ -2164,8 +2167,8 @@ body { background: transparent; }
width: 17px;
height: 17px;
border-radius: 50%;
- background: conic-gradient(#6b8391 var(--context-percent), rgb(84 76 68 / 15%) 0);
- box-shadow: inset 0 0 0 4px rgb(255 250 240 / 92%);
+ background: conic-gradient(var(--prayu-accent) var(--context-percent), color-mix(in srgb, var(--prayu-text) 14%, transparent) 0);
+ box-shadow: inset 0 0 0 4px var(--prayu-surface-solid);
}
.context-meter-popover {
position: absolute;
@@ -2177,16 +2180,16 @@ body { background: transparent; }
display: none;
gap: 4px;
padding: 9px 11px;
- border: 1px solid rgb(94 72 52 / 18%);
+ border: 1px solid var(--prayu-border);
border-radius: 8px;
- color: #443a31;
- background: rgb(255 252 246 / 98%);
- box-shadow: 0 14px 34px rgb(42 30 20 / 16%);
+ color: var(--prayu-text);
+ background: var(--prayu-panel-strong);
+ box-shadow: 0 14px 34px rgb(0 0 0 / 16%);
}
.context-meter:hover .context-meter-popover,
.context-meter:focus .context-meter-popover { display: grid; }
.context-meter-popover strong { font-size: 11px; font-weight: 500; }
-.context-meter-popover span { color: #817469; font-size: 10px; }
+.context-meter-popover span { color: var(--prayu-text); font-size: 10px; }
.prayu-shell .session-composer {
position: sticky;
@@ -2195,10 +2198,10 @@ body { background: transparent; }
width: min(860px, calc(100% - 64px));
margin: 18px auto 12px;
overflow: visible;
- border: 1px solid rgb(92 68 44 / 28%);
+ border: 1px solid var(--prayu-border);
border-radius: 13px;
- background: rgb(255 250 240 / 92%);
- box-shadow: 0 12px 32px rgb(66 46 28 / 12%);
+ background: var(--prayu-control);
+ box-shadow: 0 12px 32px rgb(0 0 0 / 12%);
}
.prayu-shell .session-composer textarea {
min-height: 64px;
@@ -2215,17 +2218,17 @@ body { background: transparent; }
}
.prayu-shell .session-composer .agent-composer-controls { padding: 2px 7px 7px; }
.session-composer-state { min-width: 0; }
-.session-composer-state .byte-count { color: #8c8074; font-size: 9px; }
+.session-composer-state .byte-count { color: var(--prayu-muted); font-size: 9px; }
.public-model-stream {
width: min(860px, calc(100% - 64px));
margin: 18px auto 0;
padding: 12px 14px;
- border: 1px solid rgb(92 68 44 / 20%);
+ border: 1px solid var(--prayu-border);
border-radius: 8px;
- color: #40372f;
- background: rgb(255 250 240 / 78%);
- box-shadow: 0 8px 24px rgb(66 46 28 / 8%);
+ color: var(--prayu-text);
+ background: var(--prayu-control);
+ box-shadow: 0 8px 24px rgb(0 0 0 / 8%);
}
.public-model-stream header,
.public-model-stream header > div,
@@ -2233,14 +2236,14 @@ body { background: transparent; }
.public-model-stream header { justify-content: space-between; }
.public-model-stream header strong { font-size: 12px; font-weight: 600; }
.public-model-stream header span,
-.public-model-stream footer { color: #817469; font-size: 10px; }
+.public-model-stream footer { color: var(--prayu-text); font-size: 10px; }
.public-model-stream-dot {
width: 7px;
height: 7px;
flex: 0 0 7px;
border-radius: 50%;
- background: #168f82;
- box-shadow: 0 0 0 3px rgb(22 143 130 / 12%);
+ background: var(--prayu-control);
+ box-shadow: 0 0 0 3px rgb(0 0 0 / 12%);
}
.public-model-tool-list {
display: grid;
@@ -2253,9 +2256,9 @@ body { background: transparent; }
justify-content: space-between;
gap: 12px;
padding: 7px 9px;
- border: 1px solid rgb(22 143 130 / 18%);
+ border: 1px solid var(--prayu-border);
border-radius: 7px;
- background: rgb(22 143 130 / 6%);
+ background: var(--prayu-control);
}
.public-model-tool-item strong {
min-width: 0;
@@ -2264,7 +2267,7 @@ body { background: transparent; }
text-overflow: ellipsis;
white-space: nowrap;
}
-.public-model-tool-item span { color: #817469; font-size: 10px; text-align: right; }
+.public-model-tool-item span { color: var(--prayu-text); font-size: 10px; text-align: right; }
.public-model-stream p {
min-height: 21px;
margin: 10px 0 8px;
@@ -2274,7 +2277,7 @@ body { background: transparent; }
white-space: pre-wrap;
}
.public-model-stream footer { flex-wrap: wrap; justify-content: space-between; }
-.public-model-stream .connection-error { color: #9b2c2c; }
+.public-model-stream .connection-error { color: var(--prayu-danger); }
.workspace-attachment-dialog {
width: min(980px, calc(100vw - 48px));
@@ -2289,9 +2292,9 @@ body { background: transparent; }
display: flex;
align-items: center;
gap: 10px;
- border-bottom: 1px solid rgb(86 62 39 / 15%);
+ border-bottom: 1px solid var(--prayu-border);
}
-.utility-workspace > header svg { color: #d56620; }
+.utility-workspace > header svg { color: var(--prayu-text); }
.utility-workspace h1 { margin: 0; font-size: 18px; }
.utility-empty-state {
min-height: 340px;
@@ -2300,7 +2303,7 @@ body { background: transparent; }
align-items: center;
justify-content: center;
gap: 11px;
- color: #7c7064;
+ color: var(--prayu-muted);
}
.utility-empty-state strong { font-size: 13px; }
@@ -2376,7 +2379,7 @@ body { background: transparent; }
align-items: center;
justify-content: space-between;
padding: 15px 30px;
- border-bottom: 1px solid rgb(86 62 39 / 15%);
+ border-bottom: 1px solid var(--prayu-border);
}
.model-control-workspace > header > div { display: flex; align-items: center; gap: 11px; }
.model-control-workspace > header h2 { margin: 0; font-size: 18px; }
@@ -2387,8 +2390,8 @@ body { background: transparent; }
display: grid;
place-items: center;
border-radius: 7px;
- color: #c95210;
- background: rgb(223 107 34 / 12%);
+ color: var(--prayu-text);
+ background: var(--prayu-control);
}
.model-control-workspace .model-availability-body {
padding: 24px 30px 42px;
@@ -2398,7 +2401,7 @@ body { background: transparent; }
}
.model-control-workspace .model-availability-section + .model-availability-section {
padding-top: 23px;
- border-top: 1px solid rgb(86 62 39 / 13%);
+ border-top: 1px solid var(--prayu-border);
}
@media (max-width: 1000px) {
@@ -2433,7 +2436,7 @@ body { background: transparent; }
.workspace-panel-toolbar { padding-left: 13px; }
.workspace-panel-location strong { max-width: 36vw; }
.workbench-dock-layout.with-sidecar { grid-template-columns: minmax(0, 1fr); }
- .workbench-sidecar { border-left: 1px solid rgb(83 63 45 / 16%); }
+ .workbench-sidecar { border-left: 1px solid var(--prayu-border); }
.workbench-center-row.with-summary {
grid-template-columns: minmax(0, 1fr) minmax(196px, 218px);
}
@@ -2456,84 +2459,188 @@ body { background: transparent; }
.model-control-workspace .model-availability-body { padding-right: 16px; padding-left: 16px; }
}
-/* Native Acrylic glass system */
+/* Neutral Acrylic material system. White emphasis stays opaque in every theme;
+ danger and source diff colors are the only chromatic semantic tokens. */
:root,
[data-prayu-theme="dark"] {
- --prayu-window: rgb(8 9 11 / 48%);
- --prayu-titlebar: rgb(13 14 17 / 54%);
- --prayu-sidebar: rgb(12 13 16 / 48%);
- --prayu-panel: rgb(16 17 21 / 64%);
- --prayu-panel-strong: rgb(20 21 25 / 76%);
- --prayu-control: rgb(255 255 255 / 7%);
- --prayu-control-hover: rgb(255 255 255 / 13%);
- --prayu-selected: #ffffff;
- --prayu-selected-ink: #16171a;
- --prayu-text: #f5f5f6;
- --prayu-muted: #a8abb1;
- --prayu-border: rgb(255 255 255 / 13%);
- --prayu-border-strong: rgb(255 255 255 / 22%);
+ --prayu-window: rgb(16 16 16 / 90%);
+ --prayu-titlebar: rgb(20 20 20 / 94%);
+ --prayu-sidebar: rgb(20 20 20 / 92%);
+ --prayu-panel: rgb(24 24 24 / 92%);
+ --prayu-panel-strong: rgb(27 27 27 / 98%);
+ --prayu-control: rgb(44 44 44 / 94%);
+ --prayu-control-hover: rgb(54 54 54 / 98%);
+ --prayu-primary-bg: #ffffff;
+ --prayu-primary-fg: #1b1b1b;
+ --prayu-primary-hover: #f0f0f0;
+ --prayu-primary-border: rgb(0 0 0 / 22%);
+ --prayu-primary-shadow: rgb(0 0 0 / 20%);
+ --prayu-selected: var(--prayu-primary-bg);
+ --prayu-selected-ink: var(--prayu-primary-fg);
+ --prayu-surface-solid: #1b1b1b;
+ --prayu-text: #f5f5f5;
+ --prayu-muted: #b5b5b5;
+ --prayu-border: rgb(255 255 255 / 16%);
+ --prayu-border-strong: rgb(255 255 255 / 28%);
--prayu-shadow: rgb(0 0 0 / 32%);
- --prayu-focus: #7dc7ff;
- --prayu-accent: #58b7ff;
- --prayu-danger: #ff7c72;
- --prayu-success: #58c98b;
- --prayu-warning: #f2bf67;
- --prayu-glass-fill: rgb(24 27 33 / 52%);
- --prayu-glass-fill-strong: rgb(27 30 36 / 72%);
+ --prayu-focus: #eeeeee;
+ --prayu-accent: #eeeeee;
+ --prayu-danger: #ff9189;
+ --prayu-danger-fill: #b42318;
+ --prayu-on-danger: #ffffff;
+ --prayu-danger-on-dark: #ff9189;
+ --prayu-danger-soft: color-mix(in srgb, var(--prayu-danger) 10%, var(--prayu-surface-solid));
+ --prayu-success: var(--prayu-text);
+ --prayu-warning: var(--prayu-text);
+ --prayu-diff-add: #9cd4ae;
+ --prayu-diff-delete: var(--prayu-danger);
+ --prayu-diff-add-soft: color-mix(in srgb, var(--prayu-diff-add) 12%, var(--prayu-surface-solid));
+ --prayu-diff-delete-soft: color-mix(in srgb, var(--prayu-diff-delete) 10%, var(--prayu-surface-solid));
+ --prayu-glass-fill: rgb(28 28 28 / 92%);
+ --prayu-glass-fill-strong: rgb(30 30 30 / 98%);
--prayu-glass-highlight: rgb(255 255 255 / 24%);
--prayu-glass-shadow: rgb(0 0 0 / 34%);
+ --prayu-terminal-bg: #181818;
+ --prayu-terminal-control: #222222;
+ --prayu-terminal-control-hover: #303030;
+ --prayu-terminal-text: #ededed;
+ --prayu-terminal-muted: #b5b5b5;
+ --prayu-terminal-border: rgb(255 255 255 / 16%);
}
[data-prayu-theme="light"] {
- --prayu-window: rgb(245 247 250 / 48%);
- --prayu-titlebar: rgb(255 255 255 / 58%);
- --prayu-sidebar: rgb(248 249 252 / 52%);
- --prayu-panel: rgb(255 255 255 / 68%);
- --prayu-panel-strong: rgb(255 255 255 / 82%);
- --prayu-control: rgb(255 255 255 / 42%);
- --prayu-control-hover: rgb(255 255 255 / 70%);
- --prayu-selected: #ffffff;
- --prayu-selected-ink: #17181b;
- --prayu-text: #202124;
- --prayu-muted: #62666d;
- --prayu-border: rgb(23 28 36 / 12%);
- --prayu-border-strong: rgb(23 28 36 / 20%);
- --prayu-shadow: rgb(25 31 39 / 18%);
- --prayu-focus: #0b73ce;
- --prayu-accent: #0877d1;
+ --prayu-window: rgb(243 243 243 / 92%);
+ --prayu-titlebar: rgb(255 255 255 / 98%);
+ --prayu-sidebar: rgb(249 249 249 / 94%);
+ --prayu-panel: rgb(255 255 255 / 94%);
+ --prayu-panel-strong: rgb(255 255 255 / 98%);
+ --prayu-control: rgb(255 255 255 / 94%);
+ --prayu-control-hover: rgb(243 243 243 / 98%);
+ --prayu-selected: var(--prayu-primary-bg);
+ --prayu-selected-ink: var(--prayu-primary-fg);
+ --prayu-surface-solid: #ffffff;
+ --prayu-text: #202020;
+ --prayu-muted: #616161;
+ --prayu-border: rgb(0 0 0 / 14%);
+ --prayu-border-strong: rgb(0 0 0 / 24%);
+ --prayu-shadow: rgb(0 0 0 / 18%);
+ --prayu-focus: #303030;
+ --prayu-accent: #303030;
--prayu-danger: #b42318;
- --prayu-success: #18794e;
- --prayu-warning: #875b08;
- --prayu-glass-fill: rgb(255 255 255 / 52%);
- --prayu-glass-fill-strong: rgb(255 255 255 / 74%);
+ --prayu-success: var(--prayu-text);
+ --prayu-warning: var(--prayu-text);
+ --prayu-diff-add: #18673c;
+ --prayu-glass-fill: rgb(255 255 255 / 94%);
+ --prayu-glass-fill-strong: rgb(255 255 255 / 98%);
--prayu-glass-highlight: rgb(255 255 255 / 92%);
- --prayu-glass-shadow: rgb(33 42 54 / 18%);
+ --prayu-glass-shadow: rgb(0 0 0 / 18%);
+ --prayu-danger-soft: color-mix(in srgb, var(--prayu-danger) 10%, var(--prayu-surface-solid));
+ --prayu-diff-delete: var(--prayu-danger);
+ --prayu-diff-add-soft: color-mix(in srgb, var(--prayu-diff-add) 12%, var(--prayu-surface-solid));
+ --prayu-diff-delete-soft: color-mix(in srgb, var(--prayu-diff-delete) 10%, var(--prayu-surface-solid));
}
[data-prayu-theme="glass"] {
- --prayu-window: rgb(8 12 18 / 14%);
- --prayu-titlebar: rgb(20 25 33 / 24%);
- --prayu-sidebar: rgb(18 24 32 / 22%);
- --prayu-panel: rgb(18 24 32 / 30%);
- --prayu-panel-strong: rgb(18 24 32 / 42%);
- --prayu-control: rgb(255 255 255 / 10%);
- --prayu-control-hover: rgb(255 255 255 / 18%);
- --prayu-selected: #ffffff;
- --prayu-selected-ink: #111317;
- --prayu-text: #f8f9fb;
- --prayu-muted: #c4c8d0;
- --prayu-border: rgb(255 255 255 / 17%);
+ --prayu-window: rgb(18 18 18 / 72%);
+ --prayu-titlebar: rgb(20 20 20 / 88%);
+ --prayu-sidebar: rgb(18 18 18 / 86%);
+ --prayu-panel: rgb(22 22 22 / 88%);
+ --prayu-panel-strong: rgb(26 26 26 / 96%);
+ --prayu-control: rgb(34 34 34 / 94%);
+ --prayu-control-hover: rgb(48 48 48 / 98%);
+ --prayu-selected: var(--prayu-primary-bg);
+ --prayu-selected-ink: var(--prayu-primary-fg);
+ --prayu-surface-solid: #1b1b1b;
+ --prayu-text: #f8f8f8;
+ --prayu-muted: #c3c3c3;
+ --prayu-border: rgb(255 255 255 / 20%);
--prayu-border-strong: rgb(255 255 255 / 30%);
--prayu-shadow: rgb(0 0 0 / 28%);
- --prayu-focus: #8fd3ff;
- --prayu-accent: #72c5ff;
- --prayu-danger: #ff8a80;
- --prayu-success: #68d49a;
- --prayu-warning: #ffd17a;
- --prayu-glass-fill: rgb(20 27 36 / 24%);
- --prayu-glass-fill-strong: rgb(20 27 36 / 44%);
+ --prayu-focus: #f4f4f4;
+ --prayu-accent: #f4f4f4;
+ --prayu-danger: #ff9189;
+ --prayu-success: var(--prayu-text);
+ --prayu-warning: var(--prayu-text);
+ --prayu-diff-add: #9cd4ae;
+ --prayu-glass-fill: rgb(26 26 26 / 86%);
+ --prayu-glass-fill-strong: rgb(30 30 30 / 96%);
--prayu-glass-highlight: rgb(255 255 255 / 30%);
--prayu-glass-shadow: rgb(0 0 0 / 30%);
+ --prayu-danger-soft: color-mix(in srgb, var(--prayu-danger) 10%, var(--prayu-surface-solid));
+ --prayu-diff-delete: var(--prayu-danger);
+ --prayu-diff-add-soft: color-mix(in srgb, var(--prayu-diff-add) 12%, var(--prayu-surface-solid));
+ --prayu-diff-delete-soft: color-mix(in srgb, var(--prayu-diff-delete) 10%, var(--prayu-surface-solid));
+}
+
+@media (prefers-reduced-transparency: reduce), (prefers-contrast: more) {
+ :root,
+ [data-prayu-theme] {
+ --prayu-window: var(--prayu-surface-solid);
+ --prayu-titlebar: var(--prayu-surface-solid);
+ --prayu-sidebar: var(--prayu-surface-solid);
+ --prayu-panel: var(--prayu-surface-solid);
+ --prayu-panel-strong: var(--prayu-surface-solid);
+ --prayu-glass-fill: var(--prayu-surface-solid);
+ --prayu-glass-fill-strong: var(--prayu-surface-solid);
+ }
+}
+
+@media (prefers-contrast: more) {
+ :root,
+ [data-prayu-theme] {
+ --prayu-border: var(--prayu-text);
+ --prayu-border-strong: var(--prayu-text);
+ --prayu-primary-border: var(--prayu-primary-fg);
+ }
+}
+
+@media (forced-colors: active) {
+ :root,
+ [data-prayu-theme] {
+ --prayu-window: Canvas;
+ --prayu-titlebar: Canvas;
+ --prayu-sidebar: Canvas;
+ --prayu-panel: Canvas;
+ --prayu-panel-strong: Canvas;
+ --prayu-control: Canvas;
+ --prayu-control-hover: Canvas;
+ --prayu-surface-solid: Canvas;
+ --prayu-text: CanvasText;
+ --prayu-muted: GrayText;
+ --prayu-border: CanvasText;
+ --prayu-border-strong: CanvasText;
+ --prayu-focus: Highlight;
+ --prayu-accent: CanvasText;
+ --prayu-primary-bg: ButtonFace;
+ --prayu-primary-fg: ButtonText;
+ --prayu-primary-hover: ButtonFace;
+ --prayu-primary-border: ButtonText;
+ --prayu-primary-shadow: transparent;
+ --prayu-selected: Highlight;
+ --prayu-selected-ink: HighlightText;
+ --prayu-danger: CanvasText;
+ --prayu-danger-fill: ButtonText;
+ --prayu-on-danger: ButtonFace;
+ --prayu-danger-on-dark: CanvasText;
+ --prayu-danger-soft: Canvas;
+ --prayu-success: CanvasText;
+ --prayu-warning: CanvasText;
+ --prayu-diff-add: CanvasText;
+ --prayu-diff-delete: CanvasText;
+ --prayu-diff-add-soft: Canvas;
+ --prayu-diff-delete-soft: Canvas;
+ --prayu-glass-fill: Canvas;
+ --prayu-glass-fill-strong: Canvas;
+ --prayu-glass-highlight: transparent;
+ --prayu-shadow: transparent;
+ --prayu-glass-shadow: transparent;
+ --prayu-terminal-bg: Canvas;
+ --prayu-terminal-control: Canvas;
+ --prayu-terminal-control-hover: Canvas;
+ --prayu-terminal-text: CanvasText;
+ --prayu-terminal-muted: GrayText;
+ --prayu-terminal-border: CanvasText;
+ }
}
html,
@@ -2548,7 +2655,7 @@ body,
.prayu-shell {
--accent: var(--prayu-accent);
- --accent-soft: color-mix(in srgb, var(--prayu-accent) 16%, transparent);
+ --accent-soft: color-mix(in srgb, var(--prayu-accent) 14%, transparent);
--border: var(--prayu-border);
--border-strong: var(--prayu-border-strong);
--ink: var(--prayu-text);
@@ -2572,7 +2679,7 @@ summary:focus-visible {
border-bottom: 1px solid var(--prayu-border);
color: var(--prayu-text);
background: var(--prayu-titlebar);
- backdrop-filter: blur(28px) saturate(160%);
+ backdrop-filter: blur(28px);
}
.titlebar-icon,
@@ -2594,7 +2701,7 @@ summary:focus-visible {
[data-prayu-theme="glass"] .prayu-shell .main-workspace,
[data-prayu-theme="glass"] .prayu-shell .main-workspace.prayu-conversation-panel {
- backdrop-filter: blur(46px) saturate(185%);
+ backdrop-filter: blur(46px);
}
.prayu-shell .main-workspace,
@@ -2603,7 +2710,7 @@ summary:focus-visible {
color: var(--prayu-text);
background: var(--prayu-panel);
box-shadow: 0 18px 54px var(--prayu-shadow);
- backdrop-filter: blur(34px) saturate(150%);
+ backdrop-filter: blur(34px);
}
.prayu-shell .main-workspace,
@@ -2617,7 +2724,7 @@ summary:focus-visible {
border-color: var(--prayu-border);
color: var(--prayu-text);
background: var(--prayu-control);
- backdrop-filter: blur(24px) saturate(145%);
+ backdrop-filter: blur(24px);
}
.workspace-panel-location > svg,
@@ -2653,12 +2760,11 @@ summary:focus-visible {
}
.prayu-shell .resource-tabs button.active {
- border-color: rgb(255 255 255 / 55%);
+ border-color: var(--prayu-primary-border);
color: var(--prayu-selected-ink);
background: var(--prayu-selected);
box-shadow:
- 0 6px 20px rgb(0 0 0 / 16%),
- inset 0 1px 0 rgb(255 255 255 / 72%);
+ 0 6px 18px var(--prayu-primary-shadow), inset 0 1px 0 var(--prayu-glass-highlight);
}
.prayu-shell .resource-tabs button.active svg {
@@ -2676,7 +2782,7 @@ summary:focus-visible {
border-color: var(--prayu-border);
color: var(--prayu-text);
background: var(--prayu-control);
- backdrop-filter: blur(18px) saturate(145%);
+ backdrop-filter: blur(18px);
}
.prayu-shell .search-field input {
@@ -2837,7 +2943,7 @@ summary:focus-visible {
color: var(--prayu-text);
background: var(--prayu-control);
box-shadow: 0 12px 36px var(--prayu-shadow);
- backdrop-filter: blur(28px) saturate(150%);
+ backdrop-filter: blur(28px);
}
.settings-row-list,
@@ -2881,8 +2987,7 @@ summary:focus-visible {
color: var(--prayu-selected-ink);
background: var(--prayu-selected);
box-shadow:
- 0 5px 16px rgb(0 0 0 / 16%),
- inset 0 1px 0 rgb(255 255 255 / 82%);
+ 0 5px 16px var(--prayu-primary-shadow), inset 0 1px 0 var(--prayu-glass-highlight);
}
.shortcut-list kbd {
@@ -2898,7 +3003,7 @@ summary:focus-visible {
border-radius: 8px;
background: var(--prayu-control);
box-shadow: 0 12px 34px var(--prayu-shadow);
- backdrop-filter: blur(24px) saturate(150%);
+ backdrop-filter: blur(24px);
}
.permission-control-card .section-heading {
@@ -2954,10 +3059,10 @@ summary:focus-visible {
}
.permission-option-grid > button[aria-pressed="true"] {
- border-color: rgb(255 255 255 / 58%);
+ border-color: var(--prayu-primary-border);
color: var(--prayu-selected-ink);
background: var(--prayu-selected);
- box-shadow: 0 6px 18px rgb(0 0 0 / 15%);
+ box-shadow: 0 6px 18px var(--prayu-primary-shadow), inset 0 1px 0 var(--prayu-glass-highlight);
}
.permission-option-grid > button.danger:not([aria-pressed="true"]) > svg:first-child {
@@ -2990,7 +3095,7 @@ summary:focus-visible {
overflow-wrap: anywhere;
}
.permission-option-grid > button[aria-pressed="true"] small {
- color: rgb(22 23 26 / 64%);
+ color: color-mix(in srgb, var(--prayu-selected-ink) 70%, var(--prayu-selected));
}
.permission-facts {
@@ -3097,7 +3202,7 @@ summary:focus-visible {
color: var(--prayu-muted);
background: var(--prayu-control);
font-size: 10px;
- backdrop-filter: blur(18px) saturate(145%);
+ backdrop-filter: blur(18px);
}
.run-activity-safety svg { color: var(--prayu-accent); }
@@ -3142,7 +3247,7 @@ summary:focus-visible {
color: var(--prayu-muted);
background: color-mix(in srgb, var(--prayu-control) 88%, transparent);
box-shadow: 0 5px 15px var(--prayu-shadow);
- backdrop-filter: blur(18px) saturate(145%);
+ backdrop-filter: blur(18px);
}
.run-activity-item.source-model .run-activity-marker {
@@ -3304,7 +3409,7 @@ summary:focus-visible {
.safe-markdown table { width: 100%; margin: .75em 0; border-collapse: collapse; }
.safe-markdown th,
.safe-markdown td { padding: 6px 8px; border: 1px solid var(--prayu-border, var(--border)); text-align: left; }
-.safe-markdown a { color: var(--prayu-accent, #087f73); text-decoration: underline; text-underline-offset: 2px; }
+.safe-markdown a { color: var(--prayu-accent); text-decoration: underline; text-underline-offset: 2px; }
.safe-markdown-inert-link { text-decoration: underline dotted; text-underline-offset: 2px; }
.run-activity-body small {
@@ -3477,8 +3582,8 @@ summary:focus-visible {
box-shadow:
0 14px 38px var(--prayu-glass-shadow),
inset 0 1px 0 var(--prayu-glass-highlight);
- -webkit-backdrop-filter: blur(24px) saturate(160%);
- backdrop-filter: blur(24px) saturate(160%);
+ -webkit-backdrop-filter: blur(24px);
+ backdrop-filter: blur(24px);
}
.extension-card {
@@ -3533,8 +3638,8 @@ summary:focus-visible {
.extension-state.state-quarantined,
.extension-state.state-revoked {
- border-color: color-mix(in srgb, #e24d55 52%, transparent);
- color: #e24d55;
+ border-color: color-mix(in srgb, var(--prayu-danger) 48%, var(--prayu-border));
+ color: var(--prayu-danger);
}
.extension-facts {
@@ -3609,10 +3714,10 @@ summary:focus-visible {
margin-top: 12px;
}
-.settings-action.danger:not(:disabled) { color: #e24d55; }
+.settings-action.danger:not(:disabled) { color: var(--prayu-danger); }
.settings-action.danger:hover:not(:disabled) {
- border-color: color-mix(in srgb, #e24d55 52%, transparent);
- background: color-mix(in srgb, #e24d55 9%, var(--prayu-control));
+ border-color: color-mix(in srgb, var(--prayu-danger) 48%, var(--prayu-border));
+ background: var(--prayu-danger-soft);
}
.extension-empty {
@@ -3655,14 +3760,15 @@ summary:focus-visible {
0 18px 46px var(--prayu-glass-shadow),
inset 0 1px 0 var(--prayu-glass-highlight),
inset 0 -1px 0 color-mix(in srgb, var(--prayu-text) 8%, transparent);
- -webkit-backdrop-filter: blur(28px) saturate(175%) contrast(104%);
- backdrop-filter: blur(28px) saturate(175%) contrast(104%);
+ -webkit-backdrop-filter: blur(28px);
+ backdrop-filter: blur(28px);
}
/* Keep the transcript Composer sticky; only non-Composer glass surfaces establish
a relative positioning context. Sticky positioning already anchors its pseudo-element. */
.prayu-shell .public-model-stream {
position: relative;
+ background: var(--prayu-glass-fill);
}
.prayu-shell .session-composer {
@@ -3748,8 +3854,8 @@ summary:focus-visible {
box-shadow:
0 20px 52px var(--prayu-glass-shadow),
inset 0 1px 0 var(--prayu-glass-highlight);
- -webkit-backdrop-filter: blur(34px) saturate(180%);
- backdrop-filter: blur(34px) saturate(180%);
+ -webkit-backdrop-filter: blur(34px);
+ backdrop-filter: blur(34px);
}
.prayu-shell .composer-popover-heading,
@@ -3780,7 +3886,7 @@ summary:focus-visible {
.prayu-shell .public-model-stream {
border-radius: 14px;
- background: color-mix(in srgb, var(--prayu-glass-fill) 82%, transparent);
+ background: var(--prayu-glass-fill);
}
.prayu-shell .public-model-stream,
@@ -4009,8 +4115,8 @@ summary:focus-visible {
white-space: nowrap;
}
.thread-transcript-source.source-model { color: var(--prayu-accent, var(--accent)); }
-.thread-transcript-stage.stage-blocked { color: var(--prayu-danger, #a33); }
-.thread-transcript-stage.stage-result { color: var(--prayu-success, #18734c); }
+.thread-transcript-stage.stage-blocked { color: var(--prayu-warning); }
+.thread-transcript-stage.stage-result { color: var(--prayu-success); }
.thread-transcript-live { color: var(--prayu-accent, var(--accent)); }
.thread-transcript-live > span {
width: 5px;
@@ -4176,8 +4282,8 @@ summary:focus-visible {
border-left: 1px solid var(--prayu-border-strong);
background: var(--prayu-glass-fill-strong);
box-shadow: -18px 0 48px var(--prayu-glass-shadow);
- -webkit-backdrop-filter: blur(30px) saturate(170%);
- backdrop-filter: blur(30px) saturate(170%);
+ -webkit-backdrop-filter: blur(30px);
+ backdrop-filter: blur(30px);
}
}
@@ -4215,6 +4321,7 @@ summary:focus-visible {
--surface: var(--prayu-panel);
--surface-subtle: var(--prayu-control);
--surface-muted: var(--prayu-control);
+ --surface-raised: var(--prayu-panel-strong);
--ink: var(--prayu-text);
--text: var(--prayu-text);
--text-secondary: var(--prayu-muted);
@@ -4254,9 +4361,9 @@ samp {
.desktop-dialog-backdrop,
.command-palette-backdrop {
color: var(--prayu-text);
- background: rgb(3 7 13 / 58%);
- -webkit-backdrop-filter: blur(16px) saturate(135%);
- backdrop-filter: blur(16px) saturate(135%);
+ background: rgb(0 0 0 / 58%);
+ -webkit-backdrop-filter: blur(16px);
+ backdrop-filter: blur(16px);
animation: prayu-backdrop-arrive 160ms ease-out both;
}
@@ -4271,8 +4378,8 @@ samp {
0 28px 88px rgb(0 0 0 / 42%),
inset 0 1px 0 var(--prayu-glass-highlight),
inset 0 -1px 0 color-mix(in srgb, var(--prayu-text) 8%, transparent);
- -webkit-backdrop-filter: blur(42px) saturate(185%) contrast(104%);
- backdrop-filter: blur(42px) saturate(185%) contrast(104%);
+ -webkit-backdrop-filter: blur(42px);
+ backdrop-filter: blur(42px);
animation: prayu-glass-materialize 210ms cubic-bezier(.2, .82, .2, 1) both;
}
@@ -4322,8 +4429,8 @@ samp {
padding: 12px 18px;
border-color: var(--prayu-border);
background: color-mix(in srgb, var(--prayu-control) 82%, transparent);
- -webkit-backdrop-filter: blur(24px) saturate(150%);
- backdrop-filter: blur(24px) saturate(150%);
+ -webkit-backdrop-filter: blur(24px);
+ backdrop-filter: blur(24px);
}
.desktop-dialog-body {
@@ -4384,12 +4491,12 @@ samp {
.desktop-dialog option {
color: var(--prayu-text);
- background: color-mix(in srgb, var(--prayu-panel-strong) 96%, #111820);
+ background: var(--prayu-surface-solid);
}
[data-prayu-theme="light"] .desktop-dialog option {
color: var(--prayu-text);
- background: #f7f9fc;
+ background: var(--prayu-surface-solid);
}
.desktop-dialog input[type="checkbox"],
@@ -4492,9 +4599,9 @@ samp {
.workbench-bottom-panel {
border-color: var(--prayu-border);
color: var(--prayu-text);
- background: color-mix(in srgb, var(--prayu-panel-strong) 86%, transparent);
- -webkit-backdrop-filter: blur(28px) saturate(155%);
- backdrop-filter: blur(28px) saturate(155%);
+ background: var(--prayu-panel-strong);
+ -webkit-backdrop-filter: blur(28px);
+ backdrop-filter: blur(28px);
}
.workbench-summary > header,
@@ -4540,42 +4647,43 @@ samp {
}
.user-terminal-panel {
- background: #080b10;
+ background: var(--prayu-terminal-bg);
}
.user-terminal-controls {
- border-color: rgb(255 255 255 / 10%);
- color: #b9c1cc;
- background: #0e131a;
+ border-color: var(--prayu-terminal-border);
+ color: var(--prayu-terminal-muted);
+ background: var(--prayu-terminal-control);
}
.user-terminal-controls button {
- border-color: rgb(255 255 255 / 14%);
- color: #edf2f7;
- background: #151c25;
+ border-color: var(--prayu-terminal-border);
+ color: var(--prayu-terminal-text);
+ background: var(--prayu-terminal-control);
+ border: 1px solid var(--prayu-terminal-border);
}
.user-terminal-controls button:hover:not(:disabled) {
- border-color: color-mix(in srgb, var(--prayu-accent) 58%, transparent);
- background: #1c2733;
+ border-color: var(--prayu-terminal-text);
+ background: var(--prayu-terminal-control-hover);
}
.user-terminal-controls button.agent-input-active {
- border-color: color-mix(in srgb, var(--prayu-success) 55%, transparent);
- color: var(--prayu-success);
+ border-color: var(--prayu-terminal-text);
+ color: var(--prayu-terminal-text);
}
.user-terminal-state {
- color: #9aa6b4;
+ color: var(--prayu-terminal-muted);
}
.user-terminal-state.running {
- color: var(--prayu-success);
+ color: var(--prayu-terminal-text);
}
.user-terminal-state.failed,
.user-terminal-message {
- color: var(--prayu-danger);
+ color: var(--prayu-danger-on-dark);
}
.context-meter > i {
@@ -4594,7 +4702,7 @@ samp {
.desktop-dialog :is(.desktop-package-list code, .desktop-package-heading > code) {
border-color: var(--prayu-border);
color: var(--prayu-text);
- background: var(--prayu-control);
+ background: var(--prayu-surface-solid);
}
.prayu-shell :is(.tag-line code, .host-command-env-key),
@@ -4735,7 +4843,8 @@ samp {
border-radius: 12px;
color: var(--prayu-selected-ink);
background: var(--prayu-selected);
- box-shadow: 0 7px 20px var(--prayu-shadow), inset 0 1px 0 rgb(255 255 255 / 84%);
+ box-shadow: 0 7px 20px var(--prayu-primary-shadow), inset 0 1px 0 var(--prayu-glass-highlight);
+ border: 1px solid var(--prayu-primary-border);
}
@keyframes prayu-backdrop-arrive {
@@ -4772,7 +4881,7 @@ samp {
@media (prefers-reduced-transparency: reduce) {
.desktop-dialog-backdrop,
.command-palette-backdrop {
- background: rgb(5 8 13 / 82%);
+ background: rgb(0 0 0 / 82%);
-webkit-backdrop-filter: none;
backdrop-filter: none;
}
@@ -4806,7 +4915,7 @@ samp {
.workbench-bottom-panel {
border-color: CanvasText;
color: CanvasText;
- background: Canvas;
+ background: var(--prayu-panel-strong);
box-shadow: none;
-webkit-backdrop-filter: none;
backdrop-filter: none;
diff --git a/web/src/v2/README.md b/web/src/v2/README.md
index 80fb53b6..dd87e812 100644
--- a/web/src/v2/README.md
+++ b/web/src/v2/README.md
@@ -37,9 +37,9 @@
- 字体:**全部英文(UI 与代码)使用 JetBrains Mono Variable**;中文使用内置 HarmonyOS Sans SC(四字重 400/500/600/700)。字体栈 `"JetBrains Mono Variable", "JetBrains Mono", "HarmonyOS Sans SC", "Microsoft YaHei UI", sans-serif`。四个 TTF 均从华为官方归档逐字节复制,不做转码或子集化;归档、文件哈希、许可文本与产品内使用声明必须一起提交。
- 内容最大宽度 48rem;toolbar padding 16px;Composer overhang 24px;消息间隔 16px,组内 4px。
- 圆角基值 2/4/6/8/10/12/16/20/24px;支持时采用 `superellipse(1.5)`。
-- 模糊层级 4/8/12/16/24/40/64px。项目材质继续使用 titlebar 28px、sidebar/panel 34px、glass 46px 的高斯模糊与 145–185% saturation。
+- 模糊层级 4/8/12/16/24/40/64px。项目材质继续使用 titlebar 28px、sidebar/panel 34px、glass 46px 的高斯模糊;2026-10-10 用户要求收敛为中性白色填充,背景使用原始饱和度。
- prominent elevation:0.5px hairline、`0 3px 7.5px #0000000a`、`0 0 20px #0000000d`;Composer 另叠加项目液态玻璃的高光和柔和阴影。
-- light 主表面 `#FFFFFF`,主文字 `#1B1C1F`,边框 `#EDEDED`;选中侧栏约 `#DDEBEC`;发送按钮 `#1B1C1F`。
+- light 主表面使用白色与浅灰,dark/glass 使用中性深灰。主按钮使用不透明白底与深色文字,选中状态、焦点、普通提示复用共享中性色。颜色盘点与最新材质规则见 [中性玻璃规范](../../../docs/branding/neutral-glass-palette.md)。
- 原生 Windows 层保留 Wails 透明窗体/Acrylic;React 层使用半透明 surface、Gaussian blur、hairline、双层阴影。两层材质缺一不可。
## 架构判断(GPT Pro 意见的实施版)
@@ -157,7 +157,7 @@ Inspector(旧 Run/Session/Event 页面,用户主动进入)
## 自定义模型供应商与 Harness
-- 模型页使用两列小卡片,第一张固定为齿轮图标的“自定义配置”,其余卡片可见内容严格只有供应商名称与预设模型名;卡片左侧使用白色单色品牌图标和轻量玻璃材质。窄窗改为单列,并覆盖 reduced motion、reduced transparency、high contrast 与 Windows forced colors。
+- 模型页使用两列小卡片,第一张固定为齿轮图标的“自定义配置”,其余卡片可见内容严格只有供应商名称与预设模型名;卡片左侧使用白色填充图标槽与深色单色品牌图形。窄窗改为单列,并覆盖 reduced motion、reduced transparency、high contrast 与 Windows forced colors。
- 预设依次提供 Claude、OpenAI、DeepSeek、Gemini、Grok、MiniMax、MiMo、Kimi、Kimi for Coding、OpenCode Go 和 GitHub Copilot。API 预设只提供可编辑的官方端点、协议、模型和搜索策略初值,不是锁死模板;进入编辑器后用户仍可修改模型列表、请求地址与高级 JSON。
- Kimi 开放平台与 Kimi for Coding 必须使用独立卡片、供应商 ID、域名、Key 和配额,不能互换。OpenCode Go 明确标为订阅网关,不冒充模型厂商。GitHub Copilot 是 GitHub/Copilot 账号与订阅席位连接器,不得把 PAT、Base URL 或普通 API Key 表单伪装成 Copilot 推理接口;在 SDK 登录链完成前应如实显示“尚未接通”。
- 模型模块中的“自定义配置”允许用户持久新增供应商;“集成”下不再保留重复的“智能伙伴”分类。供应商定义和 API 凭证必须分离:名称、协议、端点、模型映射和能力策略写入 SQLite;API Key 只进入操作系统凭证管理器,任何 GET、事件、日志或导出均不得回传明文。
diff --git a/web/src/v2/components/agent-browser.css b/web/src/v2/components/agent-browser.css
index da2628f2..b37ae878 100644
--- a/web/src/v2/components/agent-browser.css
+++ b/web/src/v2/components/agent-browser.css
@@ -11,7 +11,7 @@
.v2-agent-browser-page strong, .v2-agent-browser-page a { min-width:0; overflow-wrap:anywhere; }
.v2-agent-browser-page a { display:block; max-width:100%; color:var(--v2-accent); text-decoration:underline; text-underline-offset:3px; }
.v2-agent-browser-page a svg { display:inline; margin-left:5px; vertical-align:middle; }
-.v2-agent-browser img { display:block; width:100%; height:auto; max-height:320px; object-fit:contain; border:1px solid var(--v2-border); border-radius:8px; background:#111; }
+.v2-agent-browser img { display:block; width:100%; height:auto; max-height:320px; object-fit:contain; border:1px solid var(--v2-border); border-radius:8px; background:var(--prayu-surface-solid); }
.v2-agent-browser details { min-width:0; }
.v2-agent-browser summary { cursor:pointer; color:var(--v2-muted); }
.v2-agent-browser details p { margin-top:7px; }
diff --git a/web/src/v2/components/application-preview.css b/web/src/v2/components/application-preview.css
index 3e61ab7a..aa162fd7 100644
--- a/web/src/v2/components/application-preview.css
+++ b/web/src/v2/components/application-preview.css
@@ -1,38 +1,38 @@
-.v2-preview-overlay { position:fixed; inset:0; z-index:900; background:#0005; display:flex; justify-content:flex-end; }
-.v2-app-preview { box-sizing:border-box; width:min(920px, 94vw); height:100dvh; padding:20px; overflow:auto; background:#141519; color:var(--v2-ink); box-shadow:-4px 0 30px #0002; font-size:14px; }
-[data-prayu-theme="light"] .v2-app-preview { background:#fff; }
+.v2-preview-overlay { position:fixed; inset:0; z-index:900; background:color-mix(in srgb, var(--prayu-primary-fg) 34%, transparent); display:flex; justify-content:flex-end; }
+.v2-app-preview { box-sizing:border-box; width:min(920px, 94vw); height:100dvh; padding:20px; overflow:auto; background:var(--prayu-surface-solid); color:var(--v2-ink); box-shadow:-4px 0 30px var(--prayu-glass-shadow); font-size:14px; }
.v2-app-preview > header { position:sticky; top:0; z-index:2; display:flex; justify-content:space-between; align-items:center; gap:20px; margin-bottom:18px; padding:8px 0; background:inherit; }
.v2-app-preview h2 { font-size:19px; margin:0; }
.v2-app-preview h3 { font-size:16px; margin:0 0 12px; }
-.v2-preview-services { padding-bottom:20px; margin-bottom:20px; border-bottom:1px solid var(--v2-border, #d7dbe0); }
-.v2-preview-identity { line-height:1.7; overflow-wrap:anywhere; color:var(--v2-muted, #666c73); }
+.v2-preview-services { padding-bottom:20px; margin-bottom:20px; border-bottom:1px solid var(--v2-border); }
+.v2-preview-identity { line-height:1.7; overflow-wrap:anywhere; color:var(--v2-muted); }
.v2-preview-identity > summary { cursor:pointer; }
.v2-app-preview summary:focus-visible { outline:2px solid var(--v2-accent); outline-offset:3px; }
.v2-preview-service-list { list-style:none; margin:12px 0; padding:0; display:grid; gap:8px; }
.v2-preview-service-list button { width:100%; align-items:flex-start; flex-direction:column; text-align:left; overflow-wrap:anywhere; }
-.v2-preview-service-list button[aria-pressed="true"], .v2-preview-candidates button[aria-pressed="true"] { border-color:var(--v2-accent, #78a8f8); background:var(--v2-accent-soft, #78a8f815); }
-.v2-preview-service-detail { margin-top:12px; padding:14px; border:1px solid var(--v2-border, #d7dbe0); border-radius:8px; }
+.v2-preview-service-list button[aria-pressed="true"], .v2-preview-candidates button[aria-pressed="true"] { border-color:var(--v2-accent); background:color-mix(in srgb, var(--v2-accent) 10%, var(--v2-control)); }
+.v2-preview-service-detail { margin-top:12px; padding:14px; border:1px solid var(--v2-border); border-radius:8px; }
.v2-preview-output { margin-top:12px; }
.v2-preview-output summary { cursor:pointer; }
.v2-preview-output pre { white-space:pre-wrap; overflow-wrap:anywhere; max-height:320px; overflow:auto; line-height:1.6; font-family:var(--prayu-font-mono, monospace); }
-.v2-preview-output pre strong { color:var(--v2-muted, #666c73); }
+.v2-preview-output pre strong { color:var(--v2-muted); }
.v2-preview-candidates { display:flex; flex-wrap:wrap; gap:8px; margin:12px 0; }
.v2-preview-candidates > p { width:100%; margin:0; line-height:1.6; }
.v2-preview-candidates code { overflow-wrap:anywhere; }
-.v2-app-preview button { display:inline-flex; align-items:center; justify-content:center; gap:6px; padding:8px 12px; border:1px solid var(--v2-border, #d7dbe0); border-radius:8px; background:var(--prayu-panel-strong, #fff); color:inherit; font:inherit; cursor:pointer; }
+.v2-app-preview button { display:inline-flex; align-items:center; justify-content:center; gap:6px; padding:8px 12px; border:1px solid var(--v2-border); border-radius:8px; background:var(--prayu-panel-strong); color:inherit; font:inherit; cursor:pointer; }
.v2-app-preview button:disabled { opacity:.5; cursor:default; }
+.v2-app-preview button:hover:not(:disabled) { background:var(--v2-control-hover); color:var(--v2-ink); }
.v2-preview-address { display:flex; align-items:flex-end; gap:10px; flex-wrap:wrap; }
.v2-preview-address label { display:flex; gap:6px; flex-direction:column; font-size:13px; }
.v2-preview-address label:first-child { flex:1; min-width:220px; }
-.v2-app-preview input, .v2-app-preview select { box-sizing:border-box; min-height:36px; padding:7px 9px; border:1px solid var(--v2-border, #d7dbe0); border-radius:8px; background:var(--prayu-panel-strong, #fff); color:inherit; font:inherit; min-width:0; }
-.v2-preview-help { display:flex; gap:10px; flex-wrap:wrap; align-items:center; line-height:1.6; color:var(--v2-muted, #666c73); }
+.v2-app-preview input, .v2-app-preview select { box-sizing:border-box; min-height:36px; padding:7px 9px; border:1px solid var(--v2-border); border-radius:8px; background:var(--prayu-panel-strong); color:inherit; font:inherit; min-width:0; }
+.v2-preview-help { display:flex; gap:10px; flex-wrap:wrap; align-items:center; line-height:1.6; color:var(--v2-muted); }
.v2-preview-status { display:flex; gap:12px; flex-wrap:wrap; align-items:center; padding:12px 0; overflow-wrap:anywhere; }
.v2-preview-page > p { display:flex; align-items:center; justify-content:space-between; gap:12px; }
-.v2-preview-page small { color:var(--v2-muted, #666c73); }
-.v2-preview-capture { width:100%; height:auto; border:1px solid var(--v2-border, #d7dbe0); border-radius:8px; background:#fff; }
-.v2-preview-page details { margin-top:14px; padding:12px; border:1px solid var(--v2-border, #d7dbe0); border-radius:8px; }
+.v2-preview-page small { color:var(--v2-muted); }
+.v2-preview-capture { width:100%; height:auto; border:1px solid var(--v2-border); border-radius:8px; background:var(--prayu-primary-bg); }
+.v2-preview-page details { margin-top:14px; padding:12px; border:1px solid var(--v2-border); border-radius:8px; }
.v2-preview-page pre { white-space:pre-wrap; overflow-wrap:anywhere; font:inherit; line-height:1.6; }
-.v2-preview-element { display:flex; gap:10px; align-items:center; padding:8px 0; border-bottom:1px solid var(--v2-border, #d7dbe0); }
+.v2-preview-element { display:flex; gap:10px; align-items:center; padding:8px 0; border-bottom:1px solid var(--v2-border); }
.v2-preview-element > span { flex:1; min-width:70px; overflow-wrap:anywhere; }
.v2-preview-element input { width:45%; }
@media (max-width:600px) { .v2-app-preview { width:100vw; padding:14px; } .v2-preview-element { flex-wrap:wrap; } }
diff --git a/web/src/v2/components/file-input.css b/web/src/v2/components/file-input.css
index 316d5c0d..43720f53 100644
--- a/web/src/v2/components/file-input.css
+++ b/web/src/v2/components/file-input.css
@@ -1,5 +1,5 @@
.v2-file-attachments { display: flex; flex-wrap: wrap; gap: 8px; padding: 12px 16px 0; min-width: 0; }
-.v2-file-attachment { box-sizing: border-box; display: flex; align-items: center; gap: 8px; padding: 10px 12px; max-width: 100%; min-width: 0; width: 350px; border: 1px solid var(--v2-border, #d8dce2); border-radius: 12px; background: var(--v2-control); color: inherit; }
+.v2-file-attachment { box-sizing: border-box; display: flex; align-items: center; gap: 8px; padding: 10px 12px; max-width: 100%; min-width: 0; width: 350px; border: 1px solid var(--v2-border); border-radius: 12px; background: var(--v2-control); color: inherit; }
.v2-file-attachment > svg { flex: 0 0 auto; opacity: .7; }
.v2-file-attachment-info { flex: 1; min-width: 0; display: grid; gap: 3px; }
.v2-file-attachment-info strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 13px; font-weight: 600; }
@@ -10,6 +10,6 @@
.v2-attachment-pending { padding: 8px 12px; font-size: 13px; }
.v2-attachment-pending > div { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin: 4px 0; }
.v2-attachment-pending span { min-width: 0; overflow-wrap: anywhere; }
-.v2-attachment-pending button { color: inherit; background: transparent; border: 1px solid var(--v2-border, #d8dce2); border-radius: 8px; padding: 4px 8px; cursor: pointer; font: inherit; }
+.v2-attachment-pending button { color: inherit; background: transparent; border: 1px solid var(--v2-border); border-radius: 8px; padding: 4px 8px; cursor: pointer; font: inherit; }
.v2-attachment-pending button:disabled { cursor: default; opacity: .5; }
@media (max-width: 520px) { .v2-file-attachments { padding: 10px 10px 0; } .v2-file-attachment { width: 100%; } }
diff --git a/web/src/v2/components/image-input.css b/web/src/v2/components/image-input.css
index c7840785..d43932db 100644
--- a/web/src/v2/components/image-input.css
+++ b/web/src/v2/components/image-input.css
@@ -1,31 +1,31 @@
.v2-image-list { display:flex; flex-wrap:wrap; align-items:flex-start; gap:12px; padding:10px 0; min-width:0; }
.v2-image-item { position:relative; flex:0 0 112px; width:112px; min-width:0; font-size:12px; }
-.v2-image-thumb { display:grid; place-items:center; box-sizing:border-box; width:112px; height:112px; aspect-ratio:1; padding:0; border:1px solid var(--v2-border, #d6d9dd); border-radius:10px; background:var(--prayu-panel-strong, #fff); overflow:hidden; cursor:zoom-in; color:inherit; }
+.v2-image-thumb { display:grid; place-items:center; box-sizing:border-box; width:112px; height:112px; aspect-ratio:1; padding:0; border:1px solid var(--v2-border); border-radius:10px; background:var(--prayu-panel-strong); overflow:hidden; cursor:zoom-in; color:inherit; }
.v2-image-thumb img { display:block; width:100%; height:100%; object-fit:cover; }
.v2-image-thumb:disabled { cursor:default; }
.v2-image-caption { display:block; margin-top:5px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; line-height:1.5; }
-.v2-image-remove { position:absolute; right:-5px; top:-5px; display:grid; place-items:center; width:24px; height:24px; border:1px solid #c4c8ce; border-radius:50%; background:var(--prayu-panel-strong, #fff); color:inherit; }
+.v2-image-remove { position:absolute; right:-5px; top:-5px; display:grid; place-items:center; width:24px; height:24px; border:1px solid var(--v2-border-strong); border-radius:50%; background:var(--prayu-surface-solid); color:inherit; }
.v2-image-remove:disabled { opacity:.45; }
.v2-image-retry { font-size:12px; background:transparent; color:inherit; border:0; text-decoration:underline; }
-.v2-image-overlay { position:fixed; inset:0; z-index:2000; display:grid; place-items:center; padding:24px; background:#000b; }
-.v2-image-dialog { display:grid; grid-template-rows:auto minmax(0, 1fr) auto; width:min(1440px, 100%); height:min(960px, calc(100dvh - 48px)); min-width:0; border:1px solid var(--v2-border, #d6d9dd); border-radius:12px; background:var(--prayu-panel-strong, #fff); background:rgb(from var(--prayu-panel-strong) r g b / 1); overflow:hidden; color:var(--v2-ink); box-shadow:0 20px 80px #0005; }
-.v2-image-viewer-header { display:flex; gap:10px; align-items:center; padding:12px 16px; border-bottom:1px solid var(--v2-border, #d6d9dd); }
+.v2-image-overlay { position:fixed; inset:0; z-index:2000; display:grid; place-items:center; padding:24px; background:color-mix(in srgb, var(--prayu-primary-fg) 74%, transparent); }
+.v2-image-dialog { display:grid; grid-template-rows:auto minmax(0, 1fr) auto; width:min(1440px, 100%); height:min(960px, calc(100dvh - 48px)); min-width:0; border:1px solid var(--v2-border); border-radius:12px; background:var(--prayu-surface-solid); overflow:hidden; color:var(--v2-ink); box-shadow:0 20px 80px var(--prayu-glass-shadow); }
+.v2-image-viewer-header { display:flex; gap:10px; align-items:center; padding:12px 16px; border-bottom:1px solid var(--v2-border); }
.v2-image-viewer-header > div { flex:1; min-width:0; }
.v2-image-viewer-header strong { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:14px; font-weight:600; }
-.v2-image-viewer-header small { display:block; margin-top:3px; font-size:12px; color:var(--v2-muted, #686e75); }
+.v2-image-viewer-header small { display:block; margin-top:3px; font-size:12px; color:var(--v2-muted); }
.v2-image-viewer-header button, .v2-image-viewer-header a, .v2-image-viewer-toolbar button { display:inline-flex; flex-shrink:0; align-items:center; justify-content:center; gap:6px; min-width:36px; min-height:36px; padding:6px 8px; border:1px solid transparent; border-radius:7px; background:transparent; color:inherit; text-decoration:none; cursor:pointer; font:inherit; }
-.v2-image-viewer-header button:hover, .v2-image-viewer-header a:hover, .v2-image-viewer-toolbar button:hover { background:var(--prayu-panel-soft, #8882); }
-.v2-image-viewer-stage { min-width:0; min-height:0; overflow:auto; background:#7771; }
+.v2-image-viewer-header button:hover, .v2-image-viewer-header a:hover, .v2-image-viewer-toolbar button:hover { background:var(--prayu-control-hover); }
+.v2-image-viewer-stage { min-width:0; min-height:0; overflow:auto; background:var(--v2-control); }
.v2-image-viewer-canvas { display:grid; place-items:center; box-sizing:border-box; min-width:100%; min-height:100%; width:max-content; height:max-content; padding:24px; }
.v2-image-viewer-canvas img { display:block; max-width:none; max-height:none; object-fit:contain; user-select:none; }
-.v2-image-viewer-toolbar { display:flex; flex-wrap:wrap; align-items:center; justify-content:center; gap:6px; padding:8px 12px; border-top:1px solid var(--v2-border, #d6d9dd); font-size:13px; }
+.v2-image-viewer-toolbar { display:flex; flex-wrap:wrap; align-items:center; justify-content:center; gap:6px; padding:8px 12px; border-top:1px solid var(--v2-border); font-size:13px; }
.v2-image-viewer-toolbar output { min-width:52px; text-align:center; font-variant-numeric:tabular-nums; }
-.v2-image-viewer-toolbar > span { width:1px; height:20px; margin:0 4px; background:var(--v2-border, #d6d9dd); }
-.v2-image-viewer-toolbar button[aria-pressed="true"] { border-color:var(--v2-border, #d6d9dd); background:var(--prayu-panel-soft, #8882); }
+.v2-image-viewer-toolbar > span { width:1px; height:20px; margin:0 4px; background:var(--v2-border); }
+.v2-image-viewer-toolbar button[aria-pressed="true"] { border-color:var(--v2-border); background:var(--prayu-control-hover); }
.v2-image-viewer-toolbar button:disabled { opacity:.4; cursor:default; }
.v2-image-viewer-header button:disabled { opacity:.4; cursor:wait; }
.v2-image-viewer-notice { flex-basis:100%; margin:3px 0; text-align:center; font-size:12px; line-height:1.5; overflow-wrap:anywhere; }
-.v2-image-dialog :focus-visible, .v2-image-thumb:focus-visible, .v2-image-remove:focus-visible { outline:2px solid var(--v2-accent, #376ac8); outline-offset:2px; }
+.v2-image-dialog :focus-visible, .v2-image-thumb:focus-visible, .v2-image-remove:focus-visible { outline:2px solid var(--v2-accent); outline-offset:2px; }
.v2-composer-surface > .v2-image-list { padding:12px 18px 0; }
@media (max-width:600px) {
.v2-image-overlay { padding:8px; }
diff --git a/web/src/v2/components/inspector.css b/web/src/v2/components/inspector.css
index 23ba4d59..7a6787e4 100644
--- a/web/src/v2/components/inspector.css
+++ b/web/src/v2/components/inspector.css
@@ -30,7 +30,7 @@
.v2-inspector-row-preview { color: var(--v2-muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; }
.v2-inspector-row-meta { display: flex; flex-wrap: wrap; gap: 4px 12px; color: var(--v2-muted); font-size: 12px; }
.v2-inspector-detail { flex: 0 0 44%; min-width: 0; border-left: 1px solid var(--v2-border); background: var(--v2-main-surface); overflow-y: auto; overscroll-behavior: contain; }
-.v2-inspector-detail > header { position: sticky; top: 0; display: flex; align-items: center; justify-content: space-between; padding: 10px 14px; border-bottom: 1px solid var(--v2-border); background: var(--prayu-panel-strong, #fff); z-index: 1; }
+.v2-inspector-detail > header { position: sticky; top: 0; display: flex; align-items: center; justify-content: space-between; padding: 10px 14px; border-bottom: 1px solid var(--v2-border); background: var(--prayu-surface-solid); z-index: 1; }
.v2-inspector-detail-content { padding: 14px; overflow-wrap: anywhere; }
.v2-inspector-detail-content h3 { font-size: 14px; margin: 0 0 8px; }
.v2-inspector-record-text { white-space: pre-wrap; overflow-wrap: anywhere; font: inherit; line-height: 1.65; }
@@ -53,7 +53,7 @@
[data-prayu-density="compact"] .v2-inspector-content .thread-transcript-virtual-row { padding-block: 1px; }
[data-prayu-density="compact"] .v2-record-list > li > button { padding-block: 8px; }
@media (max-width: 900px) {
- .v2-inspector-detail { position: absolute; inset: 0; border-left: 0; background: var(--prayu-panel-strong, #fff); z-index: 2; }
+ .v2-inspector-detail { position: absolute; inset: 0; border-left: 0; background: var(--prayu-surface-solid); z-index: 2; }
.v2-inspector-content.has-selection .v2-inspector-records { visibility: hidden; }
}
@media (max-width: 520px) {
diff --git a/web/src/v2/components/model-provider-presets.tsx b/web/src/v2/components/model-provider-presets.tsx
index e41e3de4..c47f87c2 100644
--- a/web/src/v2/components/model-provider-presets.tsx
+++ b/web/src/v2/components/model-provider-presets.tsx
@@ -45,7 +45,6 @@ export const v2ModelProviderPresets: readonly V2ConfiguredModelProviderPreset[]
providerName: "Claude",
modelName: "claude-sonnet-5",
icon: icons.anthropic,
- accent: "#806d61",
kind: "api_key",
draft: {
id: "official-anthropic",
@@ -66,7 +65,6 @@ export const v2ModelProviderPresets: readonly V2ConfiguredModelProviderPreset[]
providerName: "OpenAI",
modelName: "gpt-6.1-sol",
icon: icons.openai,
- accent: "#536f6b",
kind: "api_key",
draft: {
id: "official-openai",
@@ -87,7 +85,6 @@ export const v2ModelProviderPresets: readonly V2ConfiguredModelProviderPreset[]
providerName: "DeepSeek",
modelName: "deepseek-v4-flash",
icon: icons.deepseek,
- accent: "#4d6eaf",
kind: "api_key",
draft: {
id: "official-deepseek",
@@ -108,7 +105,6 @@ export const v2ModelProviderPresets: readonly V2ConfiguredModelProviderPreset[]
providerName: "Gemini",
modelName: "gemini-3.7-flash",
icon: icons.gemini,
- accent: "#536ea5",
kind: "api_key",
draft: {
id: "official-google-gemini",
@@ -129,7 +125,6 @@ export const v2ModelProviderPresets: readonly V2ConfiguredModelProviderPreset[]
providerName: "Grok",
modelName: "grok-4.6",
icon: ,
- accent: "#4e555d",
kind: "api_key",
draft: {
id: "official-xai",
@@ -150,7 +145,6 @@ export const v2ModelProviderPresets: readonly V2ConfiguredModelProviderPreset[]
providerName: "MiniMax",
modelName: "MiniMax-M3",
icon: icons.minimax,
- accent: "#755f9b",
kind: "api_key",
draft: {
id: "official-minimax",
@@ -171,7 +165,6 @@ export const v2ModelProviderPresets: readonly V2ConfiguredModelProviderPreset[]
providerName: "MiMo",
modelName: "mimo-v2.5-pro",
icon: icons.xiaomi,
- accent: "#b7683d",
kind: "api_key",
draft: {
id: "official-mimo",
@@ -192,7 +185,6 @@ export const v2ModelProviderPresets: readonly V2ConfiguredModelProviderPreset[]
providerName: "Kimi",
modelName: "kimi-k3",
icon: icons.kimi,
- accent: "#536882",
kind: "api_key",
draft: {
id: "official-kimi",
@@ -213,7 +205,6 @@ export const v2ModelProviderPresets: readonly V2ConfiguredModelProviderPreset[]
providerName: "Kimi for Coding",
modelName: "kimi-for-coding",
icon: icons.kimi,
- accent: "#6c5d8f",
kind: "api_key",
draft: {
id: "official-kimi-coding",
@@ -234,7 +225,6 @@ export const v2ModelProviderPresets: readonly V2ConfiguredModelProviderPreset[]
providerName: "OpenCode Go",
modelName: "gpt-5.6-luna",
icon: icons.opencode,
- accent: "#57646b",
kind: "api_key",
draft: {
id: "opencode-go",
@@ -255,7 +245,6 @@ export const v2ModelProviderPresets: readonly V2ConfiguredModelProviderPreset[]
providerName: "GitHub Copilot",
modelName: "账户接入",
icon: icons.copilot,
- accent: "#4d5868",
kind: "account",
setup: { kind: "account", connected: false, accountName: "GitHub 账户" },
},
diff --git a/web/src/v2/components/model-settings.test.tsx b/web/src/v2/components/model-settings.test.tsx
index 26d2b3e1..966e69d3 100644
--- a/web/src/v2/components/model-settings.test.tsx
+++ b/web/src/v2/components/model-settings.test.tsx
@@ -18,7 +18,6 @@ const presets: V2ModelProviderPreset[] = [
providerName: "OpenAI",
modelName: "GPT-5",
icon: ,
- accent: "#506b77",
},
{
id: "anthropic",
@@ -97,8 +96,7 @@ describe("V2 model settings", () => {
const openAIButton = screen.getByRole("button", { name: /OpenAI,GPT-5/u });
const icon = within(openAIButton).getByTestId("openai-mark");
expect(icon.closest(".v2-model-card-icon")).toHaveAttribute("aria-hidden", "true");
- expect(modelStyles).toContain("backdrop-filter: blur(18px) saturate(145%)");
- expect(modelStyles).toContain("color: #fff");
+ expect(modelStyles).toContain("backdrop-filter: blur(18px)");
expect(modelStyles).toContain("prefers-reduced-transparency: reduce");
expect(modelStyles).toContain("background: var(--v2-control)");
});
diff --git a/web/src/v2/components/model-settings.tsx b/web/src/v2/components/model-settings.tsx
index 2737660a..6160201c 100644
--- a/web/src/v2/components/model-settings.tsx
+++ b/web/src/v2/components/model-settings.tsx
@@ -15,8 +15,6 @@ export type V2ModelProviderPreset = {
setup?:
| { kind: "api_key"; configured: boolean }
| { kind: "account"; connected: boolean; accountName?: string };
- /** Static palette hint. CSP-safe product CSS maps the preset ID to the actual icon-well tint. */
- accent?: string;
};
export type V2ModelSettingsProps = {
diff --git a/web/src/v2/components/queued-messages.css b/web/src/v2/components/queued-messages.css
index 95506afc..79741e87 100644
--- a/web/src/v2/components/queued-messages.css
+++ b/web/src/v2/components/queued-messages.css
@@ -5,10 +5,10 @@
width: 100%;
max-width: var(--v2-composer-width, 738px);
min-width: 0;
- border: 1px solid color-mix(in srgb, var(--v2-border-strong) 66%, rgb(255 255 255 / 38%));
+ border: 1px solid var(--v2-border-strong);
border-radius: 22px;
- backdrop-filter: blur(32px) saturate(170%);
- background: color-mix(in srgb, var(--v2-floating-surface) 92%, transparent);
+ backdrop-filter: blur(32px) saturate(100%);
+ background: var(--prayu-glass-fill-strong);
color: var(--v2-ink);
font-size: 13px;
line-height: 1.5;
@@ -50,8 +50,8 @@
.v2-queue-thumbnail .v2-image-caption { display: none; }
.v2-queue-thumbnail .v2-image-retry { position: absolute; inset: 0; font-size: 0; padding: 0; background: var(--v2-control); }
.v2-queue-thumbnail .v2-image-retry::after { content: "↻"; font-size: 16px; }
-.v2-queue-details-overlay { position: fixed; inset: 0; z-index: 1200; display: grid; place-items: center; padding: 24px; background: rgb(18 23 30 / 42%); }
-.v2-queue-details-dialog { box-sizing: border-box; display: flex; flex-direction: column; width: min(720px, 100%); max-height: min(720px, calc(100dvh - 48px)); min-width: 0; border: 1px solid var(--v2-border-strong); border-radius: 20px; background: var(--prayu-panel-strong, #fff); background: rgb(from var(--prayu-panel-strong, #fff) r g b / 1); color: var(--v2-ink); box-shadow: 0 20px 70px #0004; font: 13px/1.6 var(--prayu-font-ui, system-ui); overflow: hidden; }
+.v2-queue-details-overlay { position: fixed; inset: 0; z-index: 1200; display: grid; place-items: center; padding: 24px; background: color-mix(in srgb, var(--prayu-primary-fg) 42%, transparent); }
+.v2-queue-details-dialog { box-sizing: border-box; display: flex; flex-direction: column; width: min(720px, 100%); max-height: min(720px, calc(100dvh - 48px)); min-width: 0; border: 1px solid var(--v2-border-strong); border-radius: 20px; background: var(--prayu-surface-solid); color: var(--v2-ink); box-shadow: 0 20px 70px var(--prayu-glass-shadow); font: 13px/1.6 var(--prayu-font-ui, system-ui); overflow: hidden; }
.v2-queue-details-dialog > header { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 14px 18px; border-bottom: 1px solid var(--v2-border); flex-shrink: 0; }
.v2-queue-details-dialog h2 { margin: 0; font-size: 14px; font-weight: 600; }
.v2-queue-details-dialog header small { color: var(--v2-muted); font-size: 11px; }
@@ -66,7 +66,7 @@
.v2-promoted-message-history > summary:hover { background: var(--v2-control-hover); }
.v2-promoted-message-history > summary:focus-visible { outline: 2px solid var(--v2-accent); outline-offset: 2px; }
.v2-promoted-message-content { margin-top: 6px; padding: 8px 11px; border: 1px solid var(--v2-border); border-radius: 12px; color: var(--v2-ink); background: var(--v2-control); font-size: 13px; line-height: 1.5; white-space: pre-wrap; overflow-wrap: anywhere; }
-.v2-queue-menu { position: fixed; z-index: 100; width: 196px; max-width: calc(100vw - 16px); max-height: calc(100dvh - 16px); overflow-y: auto; overscroll-behavior: contain; padding: 6px; border: 1px solid var(--v2-border-strong); border-radius: 13px; background: var(--prayu-panel-strong, #fff); background: rgb(from var(--prayu-panel-strong, #fff) r g b / 1); color: var(--v2-ink); font: 13px/1.5 var(--prayu-font-ui, system-ui); box-shadow: 0 8px 28px #0002; }
+.v2-queue-menu { position: fixed; z-index: 100; width: 196px; max-width: calc(100vw - 16px); max-height: calc(100dvh - 16px); overflow-y: auto; overscroll-behavior: contain; padding: 6px; border: 1px solid var(--v2-border-strong); border-radius: 13px; background: var(--prayu-surface-solid); color: var(--v2-ink); font: 13px/1.5 var(--prayu-font-ui, system-ui); box-shadow: 0 8px 28px var(--prayu-glass-shadow); }
.v2-queue-menu button { display: flex; align-items: center; gap: 9px; width: 100%; min-height: 34px; padding: 6px 9px; text-align: left; }
.v2-queue-menu svg { flex-shrink: 0; }
.v2-queue-editor, .v2-queued-message-pending { margin-top: 6px; padding: 10px 6px 6px; border-top: 1px solid var(--v2-border); overflow-wrap: anywhere; }
@@ -83,7 +83,7 @@
.v2-queue-details-dialog > header, .v2-queue-details-body { padding-inline: 12px; }
}
@media (prefers-reduced-transparency: reduce) {
- .v2-queued-messages { backdrop-filter: none; background: var(--prayu-panel-strong, #fff); }
+ .v2-queued-messages { backdrop-filter: none; background: var(--prayu-surface-solid); }
}
@media (forced-colors: active) {
.v2-queued-messages, .v2-queue-details-dialog { background: Canvas; border-color: CanvasText; color: CanvasText; }
diff --git a/web/src/v2/components/settings.css b/web/src/v2/components/settings.css
index 3501e328..a85f7747 100644
--- a/web/src/v2/components/settings.css
+++ b/web/src/v2/components/settings.css
@@ -13,10 +13,10 @@
.v2-execution-help p { color: var(--prayu-muted); line-height: 1.6; margin: 10px 0 0; }
.v2-execution-settings .permission-option-grid > button > span { min-width: 0; overflow-wrap: anywhere; }
.v2-settings-card {
- background: color-mix(in srgb, var(--v2-floating-surface) 74%, transparent);
+ background: var(--prayu-glass-fill-strong);
border: 1px solid var(--v2-border);
border-radius: 16px;
- box-shadow: inset 0 1px 0 rgb(255 255 255 / 35%);
+ box-shadow: inset 0 1px 0 var(--prayu-glass-highlight);
overflow: hidden;
}
.v2-setting-row {
@@ -42,6 +42,7 @@
background: color-mix(in srgb, var(--v2-control) 78%, transparent);
border: 1px solid color-mix(in srgb, var(--v2-border) 62%, transparent);
border-radius: 10px;
+ color: var(--v2-ink);
display: inline-flex;
gap: 6px;
height: 28px;
@@ -52,12 +53,13 @@
.v2-setting-value button:hover,
.v2-setting-value .v2-setting-link:hover,
.v2-settings-placeholder button:hover,
-.v2-archive-list button:hover { background: var(--v2-control-hover); }
-.v2-switch { background: #5b9df5; border-radius: 999px; display: inline-flex; height: 20px; padding: 2px; width: 32px; }
-.v2-switch i { background: #fff; border-radius: 50%; box-shadow: 0 1px 3px rgb(0 0 0 / 18%); height: 16px; margin-left: auto; width: 16px; }
-.v2-setting-value .v2-switch { background: #5b9df5; height: 20px; padding: 2px; width: 32px; }
+.v2-archive-list button:hover { background: var(--v2-control-hover); color: var(--v2-ink); }
+.v2-switch { background: var(--prayu-primary-bg); border-radius: 999px; display: inline-flex; height: 20px; padding: 2px; width: 32px; }
+.v2-switch i { background: var(--prayu-primary-fg); border-radius: 50%; box-shadow: 0 1px 3px var(--prayu-primary-shadow); height: 16px; margin-left: auto; width: 16px; }
+.v2-setting-value .v2-switch { background: var(--prayu-primary-bg); height: 20px; padding: 2px; width: 32px; }
.v2-switch-button { border: 0; cursor: pointer; flex: 0 0 auto; }
-.v2-switch-button.is-muted { background: #9ec3fb; }
+.v2-setting-value .v2-switch-button.is-muted { background: var(--v2-control-hover); box-shadow: inset 0 0 0 1px var(--v2-border-strong); }
+.v2-switch-button.is-muted i { background: var(--v2-muted); margin-left: 0; }
.v2-provider-heading,
.v2-provider-editor-heading {
@@ -81,6 +83,7 @@
background: color-mix(in srgb, var(--v2-control) 82%, transparent);
border: 1px solid color-mix(in srgb, var(--v2-border) 74%, transparent);
border-radius: 10px;
+ color: var(--v2-ink);
display: inline-flex;
flex: 0 0 auto;
gap: 7px;
@@ -89,15 +92,15 @@
padding: 0 12px;
}
.v2-provider-heading > button.primary,
-.v2-provider-actions button.primary { background: #1c1d20; border-color: transparent; color: #fff; }
+.v2-provider-actions button.primary { background: var(--prayu-primary-bg); border-color: var(--prayu-primary-border); color: var(--prayu-primary-fg); box-shadow: 0 2px 8px var(--prayu-primary-shadow); }
.v2-provider-heading > button:hover:not(:disabled),
.v2-provider-editor-heading > button:hover:not(:disabled),
.v2-provider-empty button:hover:not(:disabled),
.v2-provider-fields header > button:hover:not(:disabled),
.v2-provider-credential-row > button:hover:not(:disabled),
-.v2-provider-actions button:hover:not(:disabled) { background: var(--v2-control-hover); }
+.v2-provider-actions button:hover:not(:disabled) { background: var(--v2-control-hover); color: var(--v2-ink); }
.v2-provider-heading > button.primary:hover:not(:disabled),
-.v2-provider-actions button.primary:hover:not(:disabled) { background: #303238; }
+.v2-provider-actions button.primary:hover:not(:disabled) { background: var(--prayu-primary-hover); color: var(--prayu-primary-fg); }
.v2-provider-editor-heading > button { height: 34px; padding: 0; width: 34px; }
.v2-provider-editor-heading { justify-content: flex-start; }
.v2-provider-editor-heading > div { min-width: 0; }
@@ -105,10 +108,10 @@
.v2-provider-editor-heading button:active:not(:disabled),
.v2-provider-actions button:active:not(:disabled) { transform: scale(.97); transition: transform 90ms ease-out; }
.v2-provider-list {
- background: color-mix(in srgb, var(--v2-floating-surface) 74%, transparent);
+ background: var(--prayu-glass-fill-strong);
border: 1px solid var(--v2-border);
border-radius: 16px;
- box-shadow: inset 0 1px 0 rgb(255 255 255 / 35%);
+ box-shadow: inset 0 1px 0 var(--prayu-glass-highlight);
display: grid;
overflow: hidden;
}
@@ -135,7 +138,7 @@
.v2-provider-tags i,
.v2-provider-status { background: var(--v2-control); border: 1px solid color-mix(in srgb, var(--v2-border) 70%, transparent); border-radius: 999px; color: var(--v2-muted); font-size: 11px; font-style: normal; padding: 4px 8px; white-space: nowrap; }
.v2-provider-tags i.is-ready,
-.v2-provider-status.is-ready { background: color-mix(in srgb, #34a853 10%, var(--v2-control)); color: color-mix(in srgb, #187a37 86%, var(--v2-ink)); }
+.v2-provider-status.is-ready { background: var(--v2-control); color: var(--prayu-success); }
.v2-provider-empty { align-items: center; color: var(--v2-muted); display: flex; flex-direction: column; gap: 9px; min-height: 190px; justify-content: center; padding: 30px; text-align: center; }
.v2-provider-empty strong { color: var(--v2-ink); }
.v2-provider-empty p { line-height: 1.5; margin: 0; max-width: 480px; }
@@ -190,7 +193,7 @@
.v2-provider-grid select:focus,
.v2-provider-grid textarea:focus,
.v2-provider-credential-row input:focus,
-.v2-provider-json textarea:focus { background: var(--v2-floating-surface); border-color: color-mix(in srgb, var(--v2-blue) 58%, var(--v2-border)); box-shadow: 0 0 0 3px color-mix(in srgb, var(--v2-blue) 13%, transparent); }
+.v2-provider-json textarea:focus { background: var(--v2-floating-surface); border-color: color-mix(in srgb, var(--v2-accent) 58%, var(--v2-border)); box-shadow: 0 0 0 3px color-mix(in srgb, var(--v2-accent) 13%, transparent); }
.v2-provider-grid input:disabled,
.v2-provider-grid select:disabled,
.v2-provider-credential-row input:disabled { cursor: default; opacity: .56; }
@@ -198,12 +201,12 @@
.v2-provider-enabled { align-items: center; cursor: pointer; display: inline-flex; flex: 0 0 auto; gap: 7px; }
.v2-provider-enabled > input { height: 1px; opacity: 0; position: absolute; width: 1px; }
.v2-provider-enabled > span { background: color-mix(in srgb, var(--v2-muted) 38%, transparent); border-radius: 999px; display: flex; height: 22px; padding: 2px; width: 36px; }
-.v2-provider-enabled > span i { background: #fff; border-radius: 50%; box-shadow: 0 1px 3px rgb(0 0 0 / 18%); height: 18px; transition: transform 150ms ease-out; width: 18px; }
-.v2-provider-enabled > input:checked + span { background: var(--v2-blue); }
-.v2-provider-enabled > input:checked + span i { transform: translateX(14px); }
-.v2-provider-enabled > input:focus-visible + span { outline: 2px solid var(--prayu-focus, #4b8ef7); outline-offset: 2px; }
+.v2-provider-enabled > span i { background: var(--prayu-primary-bg); border-radius: 50%; box-shadow: 0 1px 3px var(--prayu-primary-shadow); height: 18px; transition: transform 150ms ease-out; width: 18px; }
+.v2-provider-enabled > input:checked + span { background: var(--prayu-primary-bg); box-shadow: inset 0 0 0 1px var(--prayu-primary-border); }
+.v2-provider-enabled > input:checked + span i { background: var(--prayu-primary-fg); transform: translateX(14px); }
+.v2-provider-enabled > input:focus-visible + span { outline: 2px solid var(--prayu-focus); outline-offset: 2px; }
.v2-provider-check { align-items: flex-start; cursor: pointer; display: flex !important; flex-direction: row; gap: 10px !important; }
-.v2-provider-check input { accent-color: var(--v2-blue); flex: 0 0 auto; height: 17px !important; margin-top: 1px; width: 17px !important; }
+.v2-provider-check input { accent-color: var(--v2-accent); flex: 0 0 auto; height: 17px !important; margin-top: 1px; width: 17px !important; }
.v2-provider-check span { display: grid; gap: 3px; }
.v2-provider-check small { color: var(--v2-muted); font-weight: 400; line-height: 1.45; }
.v2-provider-sync { margin: 4px 16px 12px; }
@@ -221,12 +224,12 @@
margin: 0;
padding: 14px 16px 16px;
}
-.v2-provider-harness-progress svg { color: var(--v2-blue); flex: 0 0 auto; }
+.v2-provider-harness-progress svg { color: var(--v2-accent); flex: 0 0 auto; }
.v2-provider-harness-result {
background: color-mix(in srgb, var(--v2-control) 72%, transparent);
border: 1px solid color-mix(in srgb, var(--v2-border) 82%, transparent);
border-radius: 12px;
- box-shadow: inset 0 1px 0 rgb(255 255 255 / 26%);
+ box-shadow: inset 0 1px 0 var(--prayu-glass-highlight);
margin: 14px 16px;
overflow: hidden;
}
@@ -246,8 +249,8 @@
padding: 3px 8px;
}
.v2-provider-harness-result > div > span.is-ready {
- background: color-mix(in srgb, #34a853 11%, var(--v2-control));
- color: color-mix(in srgb, #187a37 86%, var(--v2-ink));
+ background: var(--v2-control);
+ color: var(--prayu-success);
}
.v2-provider-harness-result > div > span.is-error {
background: color-mix(in srgb, var(--v2-danger) 10%, var(--v2-control));
@@ -274,11 +277,11 @@
.v2-provider-json textarea { font: 12px/1.55 var(--prayu-font-mono); min-height: 230px; padding: 12px; resize: vertical; tab-size: 2; }
.v2-provider-notice,
.v2-provider-error { align-items: center; border-radius: 10px; display: flex; gap: 8px; line-height: 1.45; margin: 0; padding: 10px 12px; }
-.v2-provider-notice { background: color-mix(in srgb, #34a853 8%, var(--v2-control)); color: color-mix(in srgb, #187a37 86%, var(--v2-ink)); margin-bottom: 15px; }
+.v2-provider-notice { background: var(--v2-control); color: var(--prayu-success); margin-bottom: 15px; }
.v2-provider-error { background: color-mix(in srgb, var(--v2-danger) 7%, var(--v2-control)); }
.v2-provider-actions {
align-items: center;
- background: color-mix(in srgb, var(--v2-main-surface) 92%, transparent);
+ background: var(--prayu-glass-fill-strong);
backdrop-filter: blur(8px);
-webkit-backdrop-filter: blur(8px);
border-top: 1px solid var(--v2-border);
@@ -292,6 +295,7 @@
}
.v2-provider-actions > span { flex: 1 1 auto; }
.v2-provider-actions button.danger-quiet { color: var(--v2-danger); }
+.v2-provider-actions button.danger-quiet:hover:not(:disabled) { color: var(--v2-danger); }
.v2-provider-actions button:disabled,
.v2-provider-heading button:disabled { cursor: default; opacity: .52; }
@@ -308,13 +312,13 @@
.v2-theme-options > button { background: transparent; border: 1px solid transparent; border-radius: 12px; display: grid; gap: 8px; padding: 8px; text-align: left; }
.v2-theme-options > button:hover { background: var(--v2-control); }
.v2-theme-options > button[aria-pressed="true"] { background: color-mix(in srgb, var(--v2-accent) 8%, var(--v2-control)); border-color: color-mix(in srgb, var(--v2-accent) 35%, var(--v2-border)); }
-.v2-theme-preview { border: 1px solid rgb(80 85 92 / 22%); border-radius: 8px; display: grid; grid-template-columns: 32% 1fr; height: 72px; overflow: hidden; width: 100%; }
-.v2-theme-preview i:first-child { background: #e8f4f5; }
-.v2-theme-preview i:last-child { background: #fff; }
-.v2-theme-preview.theme-dark i:first-child { background: #181b20; }
-.v2-theme-preview.theme-dark i:last-child { background: #24272d; }
-.v2-theme-preview.theme-glass { background: linear-gradient(130deg, #77cde1, #e8b4d6 48%, #e8d59d); padding: 7px; }
-.v2-theme-preview.theme-glass i { backdrop-filter: blur(8px); background: rgb(255 255 255 / 35%); }
+.v2-theme-preview { border: 1px solid var(--v2-border-strong); border-radius: 8px; display: grid; grid-template-columns: 32% 1fr; height: 72px; overflow: hidden; width: 100%; }
+.v2-theme-preview i:first-child { background: color-mix(in srgb, var(--prayu-primary-fg) 7%, var(--prayu-primary-bg)); }
+.v2-theme-preview i:last-child { background: var(--prayu-primary-bg); }
+.v2-theme-preview.theme-dark i:first-child { background: var(--prayu-primary-fg); }
+.v2-theme-preview.theme-dark i:last-child { background: color-mix(in srgb, var(--prayu-primary-fg) 94%, var(--prayu-primary-bg)); }
+.v2-theme-preview.theme-glass { background: linear-gradient(130deg, color-mix(in srgb, var(--prayu-primary-fg) 12%, var(--prayu-primary-bg)), var(--prayu-primary-bg) 48%, color-mix(in srgb, var(--prayu-primary-fg) 7%, var(--prayu-primary-bg))); padding: 7px; }
+.v2-theme-preview.theme-glass i { backdrop-filter: blur(8px); background: color-mix(in srgb, var(--prayu-primary-bg) 96%, transparent); }
.v2-appearance-card > p { border-top: 1px solid var(--v2-border); color: var(--v2-muted); margin: 0; padding: 13px 15px; }
.v2-settings-placeholder { align-items: center; display: flex; flex-direction: column; padding: 42px 24px; text-align: center; }
@@ -323,7 +327,7 @@
.v2-archive-search { align-items: center; background: var(--v2-control); border: 1px solid var(--v2-border); border-radius: 11px; color: var(--v2-muted); display: flex; gap: 8px; height: 36px; margin-bottom: 17px; padding: 0 11px; }
.v2-archive-search:focus-within { background: var(--v2-floating-surface); border-color: var(--v2-border-strong); }
.v2-archive-search input { background: transparent; border: 0; outline: 0; width: 100%; }
-.v2-archive-list { background: color-mix(in srgb, var(--v2-floating-surface) 74%, transparent); border: 1px solid var(--v2-border); border-radius: 14px; overflow: hidden; }
+.v2-archive-list { background: var(--prayu-glass-fill-strong); border: 1px solid var(--v2-border); border-radius: 14px; overflow: hidden; }
.v2-archive-list article { align-items: center; display: flex; gap: 7px; min-height: 63px; padding: 9px 12px 9px 15px; position: relative; }
.v2-archive-list article + article::before { background: var(--v2-border); content: ""; height: 1px; left: 15px; position: absolute; right: 15px; top: 0; }
.v2-archive-list article > div { display: grid; flex: 1; gap: 3px; min-width: 0; }
@@ -370,7 +374,7 @@
@media (prefers-reduced-transparency: reduce) {
.v2-provider-list,
-.v2-provider-fields { backdrop-filter: none; background: var(--prayu-panel-strong, #fff); }
+.v2-provider-fields { backdrop-filter: none; background: var(--prayu-panel-strong); }
.v2-provider-harness-result { background: var(--v2-control); }
}
@@ -426,15 +430,14 @@
}
.v2-model-catalog > li { min-width: 0; }
.v2-model-card {
- --v2-model-accent: #7087a7;
-webkit-appearance: none;
align-items: stretch;
appearance: none;
- background: color-mix(in srgb, var(--v2-floating-surface) 72%, transparent);
+ background: var(--prayu-glass-fill-strong);
background-clip: padding-box;
border: 1px solid color-mix(in srgb, var(--v2-border) 82%, transparent);
border-radius: 16px;
- box-shadow: inset 0 1px 0 rgb(255 255 255 / 34%), 0 8px 24px rgb(15 23 42 / 5%);
+ box-shadow: inset 0 1px 0 var(--prayu-glass-highlight), 0 8px 24px color-mix(in srgb, var(--prayu-glass-shadow) 35%, transparent);
color: var(--v2-ink);
display: grid;
grid-template-columns: 72px minmax(0, 1fr);
@@ -446,51 +449,36 @@
box-shadow 140ms ease-out, transform 100ms ease-out;
width: 100%;
}
-.v2-model-card.is-custom { --v2-model-accent: #66788f; }
-.v2-model-card[data-model-provider-id="official-anthropic"] { --v2-model-accent: #806d61; }
-.v2-model-card[data-model-provider-id="official-openai"] { --v2-model-accent: #536f6b; }
-.v2-model-card[data-model-provider-id="official-deepseek"] { --v2-model-accent: #4d6eaf; }
-.v2-model-card[data-model-provider-id="official-google-gemini"] { --v2-model-accent: #536ea5; }
-.v2-model-card[data-model-provider-id="official-xai"] { --v2-model-accent: #4e555d; }
-.v2-model-card[data-model-provider-id="official-minimax"] { --v2-model-accent: #755f9b; }
-.v2-model-card[data-model-provider-id="official-mimo"] { --v2-model-accent: #b7683d; }
-.v2-model-card[data-model-provider-id="official-kimi"] { --v2-model-accent: #536882; }
-.v2-model-card[data-model-provider-id="official-kimi-coding"] { --v2-model-accent: #6c5d8f; }
-.v2-model-card[data-model-provider-id="opencode-go"] { --v2-model-accent: #57646b; }
-.v2-model-card[data-model-provider-id="github-copilot"] { --v2-model-accent: #4d5868; }
.v2-model-card:hover {
- background: color-mix(in srgb, var(--v2-control-hover) 58%, var(--v2-floating-surface));
- border-color: color-mix(in srgb, var(--v2-blue) 22%, var(--v2-border));
- box-shadow: inset 0 1px 0 rgb(255 255 255 / 42%), 0 10px 28px rgb(15 23 42 / 8%);
+ background: var(--v2-floating-surface);
+ border-color: var(--v2-border-strong);
+ box-shadow: inset 0 1px 0 var(--prayu-glass-highlight), 0 10px 28px color-mix(in srgb, var(--prayu-glass-shadow) 45%, transparent);
}
.v2-model-card:active { transform: scale(.985); }
.v2-model-card:focus-visible {
- outline: 2px solid var(--prayu-focus, #4b8ef7);
+ outline: 2px solid var(--prayu-focus);
outline-offset: 3px;
}
.v2-model-card-icon {
align-items: center;
- backdrop-filter: blur(18px) saturate(145%);
- background: linear-gradient(145deg,
- color-mix(in srgb, var(--v2-model-accent) 72%, rgb(255 255 255 / 34%)),
- color-mix(in srgb, var(--v2-model-accent) 44%, rgb(23 30 43 / 34%)));
- border-right: 1px solid rgb(255 255 255 / 20%);
+ backdrop-filter: blur(18px);
+ background: var(--prayu-primary-bg);
+ border-right: 1px solid var(--prayu-primary-border);
border-radius: 15px 0 0 15px;
- box-shadow: inset 0 1px 0 rgb(255 255 255 / 48%), inset -1px 0 0 rgb(255 255 255 / 10%);
- color: #fff;
+ box-shadow: inset 0 1px 0 var(--prayu-glass-highlight);
+ color: var(--prayu-primary-fg);
display: flex;
justify-content: center;
min-width: 0;
overflow: hidden;
}
.v2-model-card-icon svg {
- color: #fff;
- filter: drop-shadow(0 1px 2px rgb(0 0 0 / 18%));
+ color: currentColor;
height: 25px;
width: 25px;
}
.v2-model-card-icon img {
- filter: brightness(0) invert(1) drop-shadow(0 1px 2px rgb(0 0 0 / 18%));
+ filter: brightness(0);
height: 26px;
object-fit: contain;
width: 26px;
@@ -532,7 +520,7 @@
.v2-model-custom-back:hover { background: var(--v2-control-hover); }
.v2-model-custom-back:active { transform: scale(.97); }
.v2-model-custom-back:focus-visible {
- outline: 2px solid var(--prayu-focus, #4b8ef7);
+ outline: 2px solid var(--prayu-focus);
outline-offset: 2px;
}
@@ -560,7 +548,7 @@
background: var(--v2-floating-surface);
border-color: var(--v2-border);
}
- .v2-model-card-icon { background: var(--v2-model-accent); }
+ .v2-model-card-icon { background: var(--prayu-primary-bg); }
.v2-model-custom-back {
background: var(--v2-control);
border-color: var(--v2-border);
@@ -577,15 +565,15 @@
.v2-model-card:hover,
.v2-model-custom-back:hover {
background: var(--v2-control-hover);
- border-color: var(--v2-blue);
+ border-color: var(--v2-accent);
box-shadow: none;
}
.v2-model-card-icon {
backdrop-filter: none;
- background: var(--v2-ink);
+ background: var(--prayu-primary-bg);
border-right-color: currentColor;
box-shadow: none;
- color: var(--v2-floating-surface);
+ color: var(--prayu-primary-fg);
}
.v2-model-card-icon svg {
color: currentColor;
@@ -639,7 +627,8 @@
.v2-connection-task > div { min-width: 0; }
.v2-connection-task strong { font-size: 16px; overflow-wrap: anywhere; }
.v2-connection-task p { color: var(--v2-muted); font-size: 13px; line-height: 1.6; margin: 6px 0 0; }
-.v2-connection-task > button { align-items: center; background: var(--v2-accent); border: 1px solid transparent; border-radius: 8px; color: #fff; cursor: pointer; display: inline-flex; flex-shrink: 0; gap: 10px; min-height: 36px; padding: 8px 13px; }
+.v2-connection-task > button { align-items: center; background: var(--prayu-primary-bg); border: 1px solid var(--prayu-primary-border); border-radius: 8px; box-shadow: 0 2px 8px var(--prayu-primary-shadow); color: var(--prayu-primary-fg); cursor: pointer; display: inline-flex; flex-shrink: 0; gap: 10px; min-height: 36px; padding: 8px 13px; }
+.v2-connection-task > button:hover:not(:disabled) { background: var(--prayu-primary-hover); color: var(--prayu-primary-fg); }
.v2-connection-task > button:focus-visible { outline: 2px solid var(--v2-accent); outline-offset: 3px; }
.v2-connection-navigation { display: grid; gap: 10px; }
.v2-connection-navigation > section { border-bottom: 1px solid var(--v2-border); display: grid; grid-template-columns: 140px minmax(0, 1fr); padding: 10px 0 20px; }
diff --git a/web/src/v2/components/task-configuration.css b/web/src/v2/components/task-configuration.css
index 31a2ae88..026ef1c4 100644
--- a/web/src/v2/components/task-configuration.css
+++ b/web/src/v2/components/task-configuration.css
@@ -2,18 +2,18 @@
.v2-task-configuration header { display:flex; align-items:center; justify-content:space-between; gap:16px; }
.v2-task-configuration h2 { margin:0; font-size:18px; }
.v2-task-configuration h3 { margin:20px 0 8px; font-size:15px; }
-.v2-task-budget-fields { border:1px solid var(--v2-border, #d7dbe0); border-radius:10px; padding:12px; display:grid; grid-template-columns:repeat(auto-fit, minmax(180px, 1fr)); gap:12px; }
+.v2-task-budget-fields { border:1px solid var(--v2-border); border-radius:10px; padding:12px; display:grid; grid-template-columns:repeat(auto-fit, minmax(180px, 1fr)); gap:12px; }
.v2-task-budget-fields label { display:flex; flex-direction:column; gap:4px; }
-.v2-task-configuration input, .v2-task-configuration button { box-sizing:border-box; font:inherit; color:inherit; border:1px solid var(--v2-border, #d7dbe0); border-radius:7px; background:var(--prayu-panel-strong); padding:7px 10px; min-width:0; }
+.v2-task-configuration input, .v2-task-configuration button { box-sizing:border-box; font:inherit; color:inherit; border:1px solid var(--v2-border); border-radius:7px; background:var(--prayu-panel-strong); padding:7px 10px; min-width:0; }
.v2-task-configuration button { cursor:pointer; }
.v2-task-configuration button:disabled { opacity:.5; cursor:default; }
-.v2-task-configuration input:focus-visible, .v2-task-configuration button:focus-visible, .v2-task-configuration summary:focus-visible { outline:2px solid var(--v2-accent, #6b91df); outline-offset:3px; }
+.v2-task-configuration input:focus-visible, .v2-task-configuration button:focus-visible, .v2-task-configuration summary:focus-visible { outline:2px solid var(--v2-accent); outline-offset:3px; }
.v2-task-configuration-help, .v2-task-configuration small { color:var(--v2-muted); font-size:12px; }
.v2-task-configuration dl { margin:8px 0; }
-.v2-task-configuration dl > div { display:grid; grid-template-columns:minmax(140px, 1fr) minmax(100px, 2fr); gap:12px; padding:6px 0; border-bottom:1px solid var(--v2-border, #d7dbe0); }
+.v2-task-configuration dl > div { display:grid; grid-template-columns:minmax(140px, 1fr) minmax(100px, 2fr); gap:12px; padding:6px 0; border-bottom:1px solid var(--v2-border); }
.v2-task-configuration dt { color:var(--v2-muted); }
.v2-task-configuration dd { margin:0; }
.v2-task-configuration small { display:block; }
-.v2-task-configuration [role="alert"] { padding:12px; border:1px solid var(--v2-border, #d7dbe0); border-radius:8px; }
+.v2-task-configuration [role="alert"] { padding:12px; border:1px solid var(--v2-border); border-radius:8px; }
.v2-task-configuration summary { cursor:pointer; }
.v2-task-configuration code { font-size:11px; }
diff --git a/web/src/v2/components/task-delivery.css b/web/src/v2/components/task-delivery.css
index 9169dafe..7b554e0d 100644
--- a/web/src/v2/components/task-delivery.css
+++ b/web/src/v2/components/task-delivery.css
@@ -14,8 +14,9 @@
.v2-task-delivery button:hover:enabled { background: var(--v2-control-hover); }
.v2-task-delivery button:active:enabled { background: color-mix(in srgb, var(--v2-accent) 10%, var(--v2-control-hover)); }
.v2-task-delivery strong, .v2-task-delivery h2, .v2-task-delivery h3 { font-weight: 600; }
-.v2-task-delivery .v2-delivery-primary { background: var(--v2-accent); border-color: var(--v2-accent); color: #fff; }
-.v2-task-delivery .v2-delivery-primary:hover:enabled { background: color-mix(in srgb, var(--v2-accent) 85%, #000); }
+.v2-task-delivery .v2-delivery-primary { background: var(--prayu-primary-bg); border-color: var(--prayu-primary-border); color: var(--prayu-primary-fg); box-shadow: 0 2px 8px var(--prayu-primary-shadow); }
+.v2-task-delivery .v2-delivery-primary:hover:enabled,
+.v2-task-delivery .v2-delivery-primary:active:enabled { background: var(--prayu-primary-hover); color: var(--prayu-primary-fg); }
.v2-task-delivery .v2-delivery-muted { color: var(--v2-muted); font-size: 13px; }
.v2-delivery-heading, .v2-delivery-change > header, .v2-delivery-checks article > div, .v2-delivery-actions { display: flex; align-items: center; flex-wrap: wrap; gap: 10px; }
.v2-delivery-heading { justify-content: space-between; }
@@ -28,8 +29,8 @@
.v2-delivery-checks { display: grid; gap: 10px; }
.v2-delivery-checks article { display: grid; gap: 8px; }
.v2-delivery-freshness { border-radius: 5px; padding: 1px 6px; background: var(--v2-control-hover); }
-.v2-delivery-freshness.current { color: var(--prayu-success, #31845b); }
-.v2-delivery-freshness.stale { color: var(--prayu-warning, #a15c00); }
+.v2-delivery-freshness.current { color: var(--prayu-success); }
+.v2-delivery-freshness.stale { color: var(--prayu-warning); }
.v2-delivery-change strong { overflow-wrap: anywhere; }
.v2-delivery-change > details { margin-top: 10px; }
.v2-task-delivery summary { cursor: pointer; }
@@ -39,8 +40,8 @@
.v2-delivery-diff-lines { overflow-x: auto; }
.v2-diff-line { display: flex; align-items: stretch; min-width: max-content; font: 13px/1.65 var(--font-mono, monospace); }
.v2-diff-line code { white-space: pre; padding-right: 12px; }
-.v2-diff-line.add { background: color-mix(in srgb, #348353 12%, transparent); }
-.v2-diff-line.remove { background: color-mix(in srgb, #bb4242 12%, transparent); }
+.v2-diff-line.add { background: color-mix(in srgb, var(--prayu-diff-add) 12%, transparent); }
+.v2-diff-line.remove { background: color-mix(in srgb, var(--prayu-diff-delete) 12%, transparent); }
.v2-task-delivery .v2-diff-line-ref { display: inline-grid; grid-template-columns: 36px 36px; flex-shrink: 0; border: 0; border-right: 1px solid var(--v2-border); border-radius: 0; background: transparent; padding: 0 4px; margin-right: 8px; min-height: 24px; font: inherit; color: var(--v2-muted); text-align: right; }
.v2-task-delivery label { display: grid; gap: 6px; }
.v2-task-delivery input, .v2-task-delivery select, .v2-task-delivery textarea { width: 100%; min-width: 0; padding: 8px 10px; font: inherit; }
diff --git a/web/src/v2/components/task-review.css b/web/src/v2/components/task-review.css
index 5e492dcb..ece8da99 100644
--- a/web/src/v2/components/task-review.css
+++ b/web/src/v2/components/task-review.css
@@ -1,5 +1,5 @@
-.v2-review-drawer.v2-inspector-drawer { width: min(1080px, 100vw); color: var(--v2-ink); background: var(--prayu-panel-strong, #fff); min-height: 0; box-sizing: border-box; }
+.v2-review-drawer.v2-inspector-drawer { width: min(1080px, 100vw); color: var(--v2-ink); background: var(--prayu-surface-solid); min-height: 0; box-sizing: border-box; }
.v2-review-drawer > header { min-height: 68px; flex-shrink: 0; }
.v2-review-drawer > header .v2-review-title { display: grid; gap: 3px; }
.v2-review-title > strong { font-size: 16px; font-weight: 600; }
diff --git a/web/src/v2/components/thread-context.css b/web/src/v2/components/thread-context.css
index f5d98f0a..55376285 100644
--- a/web/src/v2/components/thread-context.css
+++ b/web/src/v2/components/thread-context.css
@@ -1,14 +1,15 @@
-.v2-context-overlay { position:fixed; inset:0; z-index:950; display:flex; justify-content:flex-end; background:#0005; }
-.v2-thread-context { box-sizing:border-box; width:min(760px, 94vw); height:100dvh; padding:20px 24px 36px; overflow:auto; background:rgb(from var(--prayu-panel-strong) r g b / 1); color:var(--v2-ink); box-shadow:-4px 0 30px #0002; font-size:14px; line-height:1.65; overflow-wrap:anywhere; }
+.v2-context-overlay { position:fixed; inset:0; z-index:950; display:flex; justify-content:flex-end; background:color-mix(in srgb, var(--prayu-primary-fg) 34%, transparent); }
+.v2-thread-context { box-sizing:border-box; width:min(760px, 94vw); height:100dvh; padding:20px 24px 36px; overflow:auto; background:var(--prayu-surface-solid); color:var(--v2-ink); box-shadow:-4px 0 30px var(--prayu-glass-shadow); font-size:14px; line-height:1.65; overflow-wrap:anywhere; }
.v2-thread-context > header { position:sticky; top:-20px; z-index:1; display:flex; align-items:center; justify-content:space-between; gap:16px; padding:12px 0; background:inherit; }
.v2-thread-context h2 { margin:0; font-size:19px; font-weight:600; }
.v2-thread-context h3 { margin:0 0 10px; font-size:16px; font-weight:600; }
.v2-thread-context h4 { margin:0 0 8px; font-size:14px; font-weight:600; }
.v2-thread-context strong { font-weight:600; }
-.v2-thread-context > section { padding:20px 0; border-top:1px solid var(--v2-border, #d7dbe0); }
-.v2-thread-context button { display:inline-flex; align-items:center; justify-content:center; gap:6px; padding:7px 11px; border:1px solid var(--v2-border, #d7dbe0); border-radius:8px; color:inherit; background:var(--prayu-panel-strong, #141519); font:inherit; cursor:pointer; }
+.v2-thread-context > section { padding:20px 0; border-top:1px solid var(--v2-border); }
+.v2-thread-context button { display:inline-flex; align-items:center; justify-content:center; gap:6px; padding:7px 11px; border:1px solid var(--v2-border); border-radius:8px; color:inherit; background:var(--prayu-panel-strong); font:inherit; cursor:pointer; }
.v2-thread-context button:disabled { opacity:.5; cursor:default; }
-.v2-thread-context button:focus-visible, .v2-thread-context summary:focus-visible, .v2-thread-context textarea:focus-visible { outline:2px solid var(--v2-accent, #6b91df); outline-offset:3px; }
+.v2-thread-context button:hover:not(:disabled) { background:var(--v2-control-hover); color:var(--v2-ink); }
+.v2-thread-context button:focus-visible, .v2-thread-context summary:focus-visible, .v2-thread-context textarea:focus-visible { outline:2px solid var(--v2-accent); outline-offset:3px; }
.v2-context-help { color:var(--v2-muted); font-size:13px; }
.v2-context-workflows { display:flex; flex-wrap:wrap; gap:8px; margin:8px 0 12px; }
.v2-context-toolbar { display:flex; align-items:center; justify-content:space-between; gap:12px; margin:14px 0; }
@@ -20,17 +21,17 @@
.v2-thread-context dt { color:var(--v2-muted); }
.v2-thread-context dd { margin:0; white-space:pre-wrap; }
.v2-context-sources { padding:0; margin:12px 0; list-style:none; }
-.v2-context-sources > li { padding:10px 0; border-bottom:1px solid var(--v2-border, #d7dbe0); }
+.v2-context-sources > li { padding:10px 0; border-bottom:1px solid var(--v2-border); }
.v2-context-sources > li > strong, .v2-context-sources > li > span { display:block; }
.v2-context-sources > li > span { color:var(--v2-muted); font-size:13px; }
.v2-context-summary-text pre, .v2-context-summary-text > p, .v2-context-generated-text { white-space:pre-wrap; font:inherit; margin:10px 0; }
-.v2-context-summary-text { border-left:2px solid var(--v2-border, #d7dbe0); padding-left:14px; }
-.v2-context-notice, .v2-thread-context [role="alert"] { padding:10px 12px; border:1px solid var(--v2-border, #d7dbe0); border-radius:8px; }
+.v2-context-summary-text { border-left:2px solid var(--v2-border); padding-left:14px; }
+.v2-context-notice, .v2-thread-context [role="alert"] { padding:10px 12px; border:1px solid var(--v2-border); border-radius:8px; }
.v2-context-inherited { margin-top:20px; }
.v2-context-diagnostics-list { padding-left:22px; margin:12px 0; }
-.v2-context-diagnostics-list > li { padding:10px 0; border-bottom:1px solid var(--v2-border, #d7dbe0); }
+.v2-context-diagnostics-list > li { padding:10px 0; border-bottom:1px solid var(--v2-border); }
.v2-context-diagnostics-list time { display:block; color:var(--v2-muted); font-size:12px; }
.v2-context-diagnostics-list p, .v2-context-notice p { margin:8px 0 0; }
.v2-context-correction label { display:block; margin-bottom:7px; }
-.v2-context-correction textarea { box-sizing:border-box; width:100%; resize:vertical; min-height:110px; padding:10px 12px; border:1px solid var(--v2-border, #d7dbe0); border-radius:8px; background:var(--prayu-panel-strong, #141519); color:inherit; font:inherit; }
+.v2-context-correction textarea { box-sizing:border-box; width:100%; resize:vertical; min-height:110px; padding:10px 12px; border:1px solid var(--v2-border); border-radius:8px; background:var(--prayu-panel-strong); color:inherit; font:inherit; }
@media (max-width:600px) { .v2-thread-context { width:100vw; padding:14px 16px 28px; } .v2-thread-context > header { top:-14px; } .v2-thread-context dl { grid-template-columns:1fr; gap:2px; } .v2-thread-context dd { margin-bottom:8px; } }
diff --git a/web/src/v2/components/thread-plan.css b/web/src/v2/components/thread-plan.css
index 2e115612..f12653ad 100644
--- a/web/src/v2/components/thread-plan.css
+++ b/web/src/v2/components/thread-plan.css
@@ -15,23 +15,24 @@
}
.v2-phase-picker > svg { flex-shrink: 0; }
.v2-composer-footer .v2-phase-toggle { min-height:34px; font-size:13px; font-weight:500; }
-.v2-phase-picker[aria-pressed="true"] { color:var(--v2-accent, #7566dd); background:color-mix(in srgb, var(--v2-accent, #7566dd) 12%, transparent); }
-.v2-phase-picker:focus-visible { outline: 2px solid var(--v2-accent, #7566dd); outline-offset: 2px; }
+.v2-phase-picker[aria-pressed="true"] { color:var(--v2-accent); background:color-mix(in srgb, var(--v2-accent) 12%, transparent); }
+.v2-phase-picker:focus-visible { outline: 2px solid var(--v2-accent); outline-offset: 2px; }
.v2-phase-picker:disabled { opacity: .55; cursor: default; }
.v2-plan-trigger { display:inline-flex; align-items:center; gap:5px; padding:4px 6px; border:0; border-radius:6px; background:transparent; color:var(--v2-ink); font:inherit; font-size:13px; cursor:pointer; }
.v2-plan-trigger.has-attention { text-decoration:underline; text-underline-offset:3px; }
-.v2-plan-overlay { position:fixed; inset:0; z-index:950; display:flex; align-items:center; justify-content:center; padding:20px; background:#0005; }
-.v2-thread-plan { box-sizing:border-box; width:min(720px, 100%); max-height:90dvh; overflow:auto; padding:20px 24px; border:1px solid var(--v2-border); border-radius:16px; background:rgb(from var(--prayu-panel-strong) r g b / 1); color:var(--v2-ink); font-size:14px; line-height:1.65; overflow-wrap:anywhere; box-shadow:0 12px 48px #0003; }
+.v2-plan-overlay { position:fixed; inset:0; z-index:950; display:flex; align-items:center; justify-content:center; padding:20px; background:color-mix(in srgb, var(--prayu-primary-fg) 34%, transparent); }
+.v2-thread-plan { box-sizing:border-box; width:min(720px, 100%); max-height:90dvh; overflow:auto; padding:20px 24px; border:1px solid var(--v2-border); border-radius:16px; background:var(--prayu-surface-solid); color:var(--v2-ink); font-size:14px; line-height:1.65; overflow-wrap:anywhere; box-shadow:0 12px 48px var(--prayu-glass-shadow); }
.v2-thread-plan > header { display:flex; align-items:center; justify-content:space-between; gap:12px; }
.v2-thread-plan h2 { margin:0; font-size:19px; font-weight:600; }
.v2-thread-plan p { margin:10px 0; }
.v2-plan-help { color:var(--v2-muted); }
.v2-thread-plan button { display:inline-flex; align-items:center; justify-content:center; gap:6px; padding:7px 11px; border:1px solid var(--v2-border); border-radius:8px; background:var(--prayu-panel-strong); color:inherit; font:inherit; cursor:pointer; }
.v2-thread-plan button:disabled { opacity:.5; cursor:default; }
-.v2-thread-plan button:focus-visible, .v2-thread-plan summary:focus-visible, .v2-plan-trigger:focus-visible { outline:2px solid var(--v2-accent, #6b91df); outline-offset:3px; }
+.v2-thread-plan button:hover:not(:disabled) { background:var(--v2-control-hover); color:var(--v2-ink); }
+.v2-thread-plan button:focus-visible, .v2-thread-plan summary:focus-visible, .v2-plan-trigger:focus-visible { outline:2px solid var(--v2-accent); outline-offset:3px; }
.v2-plan-directions > section { border:1px solid var(--v2-border); border-radius:10px; padding:14px 16px; margin:14px 0; }
.v2-plan-choice { display:flex; gap:9px; align-items:baseline; }
-.v2-plan-choice input { accent-color:var(--v2-accent, #6b91df); }
+.v2-plan-choice input { accent-color:var(--v2-accent); }
.v2-thread-plan strong { font-weight:600; }
.v2-thread-plan summary { cursor:pointer; width:fit-content; }
.v2-thread-plan li { margin:6px 0; }
diff --git a/web/src/v2/styles.css b/web/src/v2/styles.css
index a09deb04..14a0751d 100644
--- a/web/src/v2/styles.css
+++ b/web/src/v2/styles.css
@@ -5,18 +5,18 @@
--v2-content-width: 768px;
--v2-composer-width: 738px;
--v2-row-height: 34px;
- --v2-ink: var(--prayu-text, #24262a);
- --v2-muted: var(--prayu-muted, #70747b);
- --v2-border: var(--prayu-border, rgb(24 30 38 / 11%));
- --v2-border-strong: var(--prayu-border-strong, rgb(24 30 38 / 18%));
- --v2-accent: #6b55ed;
- --v2-blue: #4d9aff;
- --v2-danger: var(--prayu-danger, #b42318);
- --v2-main-surface: var(--prayu-panel, rgb(255 255 255 / 76%));
- --v2-sidebar-surface: color-mix(in srgb, var(--prayu-sidebar, rgb(237 248 249 / 72%)) 82%, #dff3f4 18%);
- --v2-floating-surface: color-mix(in srgb, var(--prayu-panel-strong, rgb(255 255 255 / 84%)) 88%, transparent);
- --v2-control: var(--prayu-control, rgb(255 255 255 / 42%));
- --v2-control-hover: var(--prayu-control-hover, rgb(255 255 255 / 70%));
+ --v2-mono: var(--prayu-font-mono);
+ --v2-ink: var(--prayu-text);
+ --v2-muted: var(--prayu-muted);
+ --v2-border: var(--prayu-border);
+ --v2-border-strong: var(--prayu-border-strong);
+ --v2-accent: var(--prayu-accent);
+ --v2-danger: var(--prayu-danger);
+ --v2-main-surface: var(--prayu-panel);
+ --v2-sidebar-surface: var(--prayu-sidebar);
+ --v2-floating-surface: var(--prayu-panel-strong);
+ --v2-control: var(--prayu-control);
+ --v2-control-hover: var(--prayu-control-hover);
}
.v2-approval-facts { margin: 12px 0; display: grid; gap: 8px; font-size: 12px; }
@@ -36,7 +36,7 @@
.v2-file-references button { border: 0; background: transparent; flex-shrink: 0; padding: 3px; }
.v2-file-picker.v2-inspector-drawer { width: min(760px, 100vw); overflow: auto; }
.v2-file-picker > .workspace-explorer { padding: 0 18px 18px; }
-.v2-file-picker > header { flex-shrink: 0; position: sticky; top: 0; z-index: 2; background: var(--prayu-panel-strong, #fff); }
+.v2-file-picker > header { flex-shrink: 0; position: sticky; top: 0; z-index: 2; background: var(--prayu-panel-strong); }
.v2-file-picker p { font-size: 13px; line-height: 1.6; margin: 0; }
.v2-header-actions > .v2-review-trigger { width: auto; padding-inline: 8px; gap: 5px; font-size: 12px; }
@media (max-width: 760px) {
@@ -46,8 +46,8 @@
.v2-drawer-backdrop {
align-items: stretch;
- backdrop-filter: blur(12px) saturate(120%);
- background: rgb(23 27 34 / 28%);
+ backdrop-filter: blur(12px) saturate(100%);
+ background: rgb(28 28 28 / 28%);
display: flex;
inset: 0;
justify-content: flex-end;
@@ -57,10 +57,10 @@
.v2-file-drawer,
.v2-terminal-drawer {
- backdrop-filter: blur(42px) saturate(180%);
+ backdrop-filter: blur(42px) saturate(100%);
background: var(--v2-floating-surface);
border-left: 1px solid var(--v2-border-strong);
- box-shadow: -18px 0 54px rgb(15 20 28 / 16%);
+ box-shadow: -18px 0 54px rgb(21 21 21 / 16%);
display: flex;
flex-direction: column;
height: 100%;
@@ -223,7 +223,7 @@
}
.v2-markdown-code-block {
- background: rgb(20 23 28 / 92%);
+ background: var(--prayu-surface-solid);
border: 1px solid color-mix(in srgb, var(--v2-border) 60%, transparent);
border-radius: 8px;
margin: 8px 0;
@@ -232,15 +232,15 @@
.v2-markdown-code-header {
align-items: center;
- background: rgb(27 31 38 / 90%);
- border-bottom: 1px solid rgb(255 255 255 / 8%);
+ background: var(--v2-control);
+ border-bottom: 1px solid var(--v2-border);
display: flex;
justify-content: space-between;
padding: 4px 10px;
}
.v2-markdown-code-lang {
- color: #9aa1aa;
+ color: var(--v2-muted);
font-family: var(--prayu-font-mono);
font-size: 11px;
}
@@ -250,7 +250,7 @@
background: transparent;
border: 0;
border-radius: 6px;
- color: #c2ccda;
+ color: var(--v2-ink);
cursor: pointer;
display: inline-flex;
font-size: 11px;
@@ -261,14 +261,14 @@
.v2-copy-code-button:hover,
.v2-copy-code-button:focus-visible {
- background: rgb(255 255 255 / 12%);
- color: #ffffff;
+ background: var(--v2-control-hover);
+ color: var(--v2-ink);
}
.v2-markdown-code-block pre {
background: transparent;
border: 0;
- color: #eef0f2;
+ color: var(--v2-ink);
font-family: var(--prayu-font-mono);
font-size: 12px;
line-height: 1.5;
@@ -354,10 +354,7 @@
min-height: 320px;
overflow: hidden;
position: relative;
- background:
- radial-gradient(circle at 26% -10%, rgb(211 247 250 / 42%), transparent 42%),
- radial-gradient(circle at 78% -18%, rgb(251 244 211 / 25%), transparent 40%),
- var(--prayu-window, rgb(244 248 250 / 48%));
+ background: var(--prayu-window);
}
.v2-shell button,
@@ -374,19 +371,20 @@
.v2-shell button:focus-visible,
.v2-shell summary:focus-visible {
- outline: 2px solid var(--prayu-focus, #4b8ef7);
+ outline: 2px solid var(--prayu-focus);
outline-offset: 2px;
}
.v2-shell input:focus-visible,
.v2-shell select:focus-visible,
.v2-shell textarea:focus-visible {
- outline: none;
+ outline: 2px solid var(--prayu-focus);
+ outline-offset: 2px;
}
.v2-titlebar {
align-items: stretch;
- backdrop-filter: blur(28px) saturate(160%);
- background: color-mix(in srgb, var(--prayu-titlebar, rgb(255 255 255 / 60%)) 88%, transparent);
+ backdrop-filter: blur(28px) saturate(100%);
+ background: var(--prayu-titlebar);
border-bottom: 1px solid color-mix(in srgb, var(--v2-border) 58%, transparent);
display: flex;
grid-row: 1;
@@ -432,7 +430,7 @@
.v2-titlebar-drag-region { flex: 1 1 auto; min-width: 30px; }
.v2-window-controls button { width: 46px; }
.v2-window-controls button:hover { background: rgb(0 0 0 / 7%); }
-.v2-window-controls button.close:hover { background: #c42b1c; color: #fff; }
+.v2-window-controls button.close:hover { background: var(--prayu-danger-fill); color: var(--prayu-on-danger); }
.v2-shell-body {
display: grid;
@@ -444,7 +442,7 @@
.v2-shell.no-sidebar .v2-shell-body { grid-template-columns: minmax(0, 1fr); }
.v2-sidebar {
- backdrop-filter: blur(34px) saturate(155%);
+ backdrop-filter: blur(34px) saturate(100%);
background: var(--v2-sidebar-surface);
display: flex;
flex-direction: column;
@@ -456,9 +454,7 @@
}
.v2-sidebar::before {
- background:
- radial-gradient(circle at 4% 7%, rgb(255 255 255 / 48%), transparent 31%),
- linear-gradient(125deg, rgb(113 221 239 / 7%), transparent 42%, rgb(255 232 174 / 7%));
+ background: linear-gradient(120deg, var(--prayu-glass-highlight), transparent 42%);
content: "";
inset: 0;
pointer-events: none;
@@ -539,7 +535,7 @@
min-height: 0;
overflow: auto;
padding: 8px 7px 18px;
- scrollbar-color: rgb(70 78 88 / 17%) transparent;
+ scrollbar-color: rgb(79 79 79 / 17%) transparent;
scrollbar-width: thin;
}
.v2-thread-group + .v2-thread-group { margin-top: 14px; }
@@ -554,7 +550,7 @@
}
.v2-thread-group > header span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.v2-thread-row-shell { border-radius: 10px; min-width: 0; position: relative; }
-.v2-thread-row-shell.is-selected { background: color-mix(in srgb, var(--v2-control-hover) 84%, rgb(126 160 167 / 13%)); }
+.v2-thread-row-shell.is-selected { background: var(--v2-control-hover); }
.v2-thread-row-shell:hover:not(.is-selected) { background: color-mix(in srgb, var(--v2-control-hover) 70%, transparent); }
.v2-thread-row {
align-items: center;
@@ -572,7 +568,7 @@
.v2-thread-state { display: inline-flex; align-items: center; gap: 4px; flex-shrink: 0; color: var(--v2-muted); font-size: 10px; white-space: nowrap; }
.v2-thread-state i { background: currentColor; border-radius: 50%; height: 6px; width: 6px; }
.v2-thread-state.state-running { color: var(--v2-accent); }
-.v2-thread-state.state-stopping, .v2-thread-state.state-waiting_approval { color: #af671c; }
+.v2-thread-state.state-stopping, .v2-thread-state.state-waiting_approval { color: var(--prayu-warning); }
.v2-thread-state.state-stop_failed, .v2-thread-state.state-failed { color: var(--v2-danger); }
.v2-thread-state-description { position: absolute; height: 1px; width: 1px; padding: 0; margin: -1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0; }
.v2-thread-more {
@@ -594,11 +590,11 @@
.v2-thread-more:focus-visible { opacity: 1; }
.v2-thread-more:hover { background: var(--v2-control-hover); }
.v2-thread-menu {
- backdrop-filter: blur(30px) saturate(175%);
+ backdrop-filter: blur(30px) saturate(100%);
background: var(--v2-floating-surface);
border: 1px solid var(--v2-border);
border-radius: 11px;
- box-shadow: 0 12px 32px rgb(27 34 43 / 18%), inset 0 1px 0 rgb(255 255 255 / 42%);
+ box-shadow: 0 12px 32px rgb(35 35 35 / 18%), inset 0 1px 0 rgb(255 255 255 / 42%);
min-width: 145px;
padding: 5px;
position: absolute;
@@ -630,9 +626,9 @@
.v2-sidebar-footer .v2-profile { height: 40px; }
.v2-profile > span {
align-items: center;
- background: linear-gradient(145deg, #f1cb98, #9e7458);
+ background: var(--prayu-primary-bg);
border-radius: 50%;
- color: #fff;
+ color: var(--prayu-primary-fg);
display: flex;
font-size: 10px;
height: 24px;
@@ -640,14 +636,14 @@
width: 24px;
}
.v2-profile strong { flex: 1; font-weight: 500; }
-.v2-profile i { background: #35a36d; border: 2px solid color-mix(in srgb, var(--v2-sidebar-surface) 86%, transparent); border-radius: 50%; height: 8px; width: 8px; }
+.v2-profile i { background: var(--prayu-success); border: 2px solid color-mix(in srgb, var(--v2-sidebar-surface) 86%, transparent); border-radius: 50%; height: 8px; width: 8px; }
.v2-product-surface {
- backdrop-filter: blur(34px) saturate(150%);
+ backdrop-filter: blur(34px) saturate(100%);
background: var(--v2-main-surface);
border-left: 1px solid color-mix(in srgb, var(--v2-border) 58%, transparent);
border-radius: 12px 0 0 0;
- box-shadow: -10px 18px 54px rgb(25 31 39 / 7%);
+ box-shadow: -10px 18px 54px rgb(32 32 32 / 7%);
min-height: 0;
min-width: 0;
overflow: hidden;
@@ -698,12 +694,12 @@
.v2-conversation-header strong,
.v2-new-conversation > header strong { font-size: 14px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.v2-working-state { align-items: center; color: var(--v2-muted); display: inline-flex; flex-shrink: 0; font-size: 12px; gap: 6px; margin-left: 4px; white-space: nowrap; }
-.v2-working-state i { animation: v2-pulse 1.5s ease-in-out infinite; background: var(--v2-blue); border-radius: 50%; height: 6px; width: 6px; }
+.v2-working-state i { animation: v2-pulse 1.5s ease-in-out infinite; background: var(--v2-accent); border-radius: 50%; height: 6px; width: 6px; }
.v2-recovery-state {
- background: color-mix(in srgb, #e58b3a 13%, transparent);
- border: 1px solid color-mix(in srgb, #e58b3a 27%, transparent);
+ background: var(--v2-control);
+ border: 1px solid var(--v2-border-strong);
border-radius: 999px;
- color: color-mix(in srgb, #b75f18 82%, var(--v2-ink));
+ color: var(--v2-ink);
font-size: 11px;
font-weight: 600;
flex-shrink: 0;
@@ -726,14 +722,14 @@
.v2-header-actions > button:hover { background: var(--v2-control-hover); }
.v2-thread-menu { right: 0; top: 35px; }
-.v2-conversation-scroll { min-height: 0; overflow: auto; overflow-anchor: none; overscroll-behavior: contain; scrollbar-color: rgb(70 78 88 / 18%) transparent; scrollbar-width: thin; }
+.v2-conversation-scroll { min-height: 0; overflow: auto; overflow-anchor: none; overscroll-behavior: contain; scrollbar-color: rgb(79 79 79 / 18%) transparent; scrollbar-width: thin; }
.v2-conversation-content { margin: 0 auto; max-width: var(--v2-content-width); padding: 28px 0 38px; width: calc(100% - 40px); }
.v2-narrative { display: grid; grid-template-columns: minmax(0, 1fr); gap: 16px; list-style: none; margin: 0; padding: 0; }
.v2-narrative > li { min-width: 0; }
.v2-user-turn { display: flex; justify-content: flex-end; }
.v2-message-status { color: var(--v2-muted); display: block; font-size: 11px; margin-top: 6px; }
.v2-user-turn > div {
- background: color-mix(in srgb, var(--v2-control-hover) 75%, rgb(228 231 235 / 34%));
+ background: var(--v2-control-hover);
border: 1px solid color-mix(in srgb, var(--v2-border) 55%, transparent);
border-radius: 19px;
font-size: 14px;
@@ -749,9 +745,9 @@
.v2-assistant-turn > :last-child { margin-bottom: 0; }
.v2-assistant-turn p { margin: 0 0 13px; }
.v2-assistant-turn pre {
- background: rgb(20 23 28 / 88%);
+ background: var(--prayu-surface-solid);
border-radius: 10px;
- color: #f4f5f6;
+ color: var(--v2-ink);
font-size: 13px;
overflow: auto;
padding: 13px;
@@ -803,7 +799,7 @@
grid-column: 2;
grid-row: 1;
}
-.v2-activity-item.is-failed em { color: #b45f18; }
+.v2-activity-item.is-failed em { color: var(--v2-danger); }
.v2-activity-item.has-detail > details > summary {
align-items: center;
border-radius: 8px;
@@ -842,7 +838,7 @@
margin: 2px 0;
min-height: 28px;
}
-.v2-activity-detail-state.is-error { color: #9a5716; justify-content: space-between; }
+.v2-activity-detail-state.is-error { color: var(--v2-danger); justify-content: space-between; }
.v2-activity-detail-state button {
background: var(--v2-control);
border: 1px solid var(--v2-border);
@@ -870,16 +866,16 @@
white-space: pre-wrap;
}
.v2-command-detail > header > span {
- background: color-mix(in srgb, #34a56f 12%, transparent);
+ background: var(--v2-control);
border-radius: 999px;
- color: #267a54;
+ color: var(--prayu-success);
flex: 0 0 auto;
font-size: 10px;
padding: 2px 7px;
}
.v2-command-detail > header > span.is-failed {
- background: color-mix(in srgb, #e28a31 13%, transparent);
- color: #9a5716;
+ background: var(--v2-control);
+ color: var(--v2-danger);
}
.v2-tool-facts > header > strong { color: var(--v2-ink); font-size: 12px; }
.v2-command-detail dl {
@@ -895,9 +891,9 @@
.v2-command-detail section { display: grid; gap: 4px; min-width: 0; }
.v2-command-detail section > strong { color: var(--v2-muted); font-size: 10px; font-weight: 600; }
.v2-command-detail pre {
- background: rgb(20 23 28 / 91%);
+ background: var(--prayu-surface-solid);
border-radius: 8px;
- color: #f4f5f6;
+ color: var(--v2-ink);
font-family: var(--prayu-font-mono);
font-size: 11px;
line-height: 1.5;
@@ -938,9 +934,9 @@
.v2-command-artifact-content { display: grid; gap: 6px; min-width: 0; }
.v2-command-artifact-content > small { color: var(--v2-muted); font-size: 10px; }
.v2-command-artifact-content pre {
- background: rgb(20 23 28 / 91%);
+ background: var(--prayu-surface-solid);
border-radius: 8px;
- color: #f4f5f6;
+ color: var(--v2-ink);
font-family: var(--prayu-font-mono);
font-size: 11px;
line-height: 1.5;
@@ -969,10 +965,10 @@
.v2-file-edit-diff-content { display: grid; gap: 6px; min-width: 0; }
.v2-file-edit-diff-content > small { color: var(--v2-muted); font-size: 10px; }
.v2-unified-diff {
- background: rgb(20 23 28 / 91%);
+ background: var(--prayu-surface-solid);
border: 1px solid color-mix(in srgb, var(--v2-border) 60%, transparent);
border-radius: 8px;
- color: #eef0f2;
+ color: var(--v2-ink);
font-family: var(--prayu-font-mono);
font-size: 11px;
line-height: 1.55;
@@ -988,17 +984,17 @@
.v2-unified-diff-line > span,
.v2-unified-diff-line > code { min-height: 20px; padding: 1px 6px; white-space: pre; }
.v2-unified-diff-number {
- border-right: 1px solid rgb(255 255 255 / 10%);
- color: #9aa1aa;
+ border-right: 1px solid var(--v2-border);
+ color: var(--v2-muted);
text-align: right;
user-select: none;
}
-.v2-unified-diff-marker { color: #9aa1aa; text-align: center; user-select: none; }
-.v2-unified-diff-line.is-add { background: rgb(46 143 91 / 24%); }
-.v2-unified-diff-line.is-delete { background: rgb(184 62 62 / 23%); }
-.v2-unified-diff-line.is-add .v2-unified-diff-marker { color: #73d7a1; }
-.v2-unified-diff-line.is-delete .v2-unified-diff-marker { color: #f18c8c; }
-.v2-unified-diff-line.is-hunk { background: rgb(90 131 191 / 22%); color: #c2ccda; }
+.v2-unified-diff-marker { color: var(--v2-muted); text-align: center; user-select: none; }
+.v2-unified-diff-line.is-add { background: color-mix(in srgb, var(--prayu-diff-add) 12%, var(--prayu-surface-solid)); }
+.v2-unified-diff-line.is-delete { background: color-mix(in srgb, var(--prayu-diff-delete) 12%, var(--prayu-surface-solid)); }
+.v2-unified-diff-line.is-add .v2-unified-diff-marker { color: var(--prayu-diff-add); }
+.v2-unified-diff-line.is-delete .v2-unified-diff-marker { color: var(--prayu-diff-delete); }
+.v2-unified-diff-line.is-hunk { background: var(--v2-control); color: var(--v2-ink); }
.v2-unified-diff-line.is-hunk > code,
.v2-unified-diff-line.is-meta > code { grid-column: 2 / -1; }
.v2-unified-diff-line.is-hunk > span:not(.v2-unified-diff-marker),
@@ -1010,7 +1006,7 @@
}
.v2-notice { border-left: 2px solid var(--v2-border-strong); color: var(--v2-muted); padding: 5px 10px; }
.v2-notice.tone-warning { border-color: var(--prayu-warning); color: var(--prayu-warning); }
-.v2-notice.tone-success { border-color: #34a56f; color: #267a54; }
+.v2-notice.tone-success { border-color: var(--prayu-success); color: var(--prayu-success); }
.v2-transcript-loading,
.v2-transcript-empty { align-items: center; color: var(--v2-muted); display: flex; gap: 9px; justify-content: center; min-height: 120px; }
.v2-transcript-empty > span { align-items: center; background: var(--v2-control); border-radius: 50%; display: flex; height: 34px; justify-content: center; width: 34px; }
@@ -1028,11 +1024,11 @@
}
.v2-run-recovery {
align-items: center;
- backdrop-filter: blur(30px) saturate(165%);
- background: color-mix(in srgb, var(--v2-floating-surface) 91%, rgb(232 139 58 / 9%));
- border: 1px solid color-mix(in srgb, #df8433 29%, var(--v2-border));
+ backdrop-filter: blur(30px) saturate(100%);
+ background: var(--v2-floating-surface);
+ border: 1px solid var(--v2-border-strong);
border-radius: 17px;
- box-shadow: 0 9px 26px rgb(27 34 43 / 8%), inset 0 1px 0 rgb(255 255 255 / 58%);
+ box-shadow: 0 9px 26px rgb(35 35 35 / 8%), inset 0 1px 0 rgb(255 255 255 / 58%);
display: grid;
gap: 11px;
grid-template-columns: auto minmax(0, 1fr);
@@ -1042,9 +1038,9 @@
}
.v2-run-recovery-icon {
align-items: center;
- background: color-mix(in srgb, #e58b3a 15%, transparent);
+ background: var(--v2-control);
border-radius: 10px;
- color: #bd681f;
+ color: var(--v2-ink);
display: flex;
height: 34px;
justify-content: center;
@@ -1054,25 +1050,25 @@
.v2-run-recovery strong { font-size: 13px; }
.v2-run-recovery p { color: var(--v2-ink); font-size: 12px; line-height: 1.45; margin: 0; }
.v2-run-recovery small { color: var(--v2-muted); font-size: 11px; line-height: 1.4; }
-.v2-run-recovery .v2-run-recovery-waiting { color: #a56325; }
+.v2-run-recovery .v2-run-recovery-waiting { color: var(--prayu-warning); }
.v2-composer { container: composer / inline-size; margin: 0 auto; max-width: var(--v2-composer-width); position: relative; }
.v2-composer-surface {
- backdrop-filter: blur(32px) saturate(170%);
- background: color-mix(in srgb, var(--v2-floating-surface) 92%, transparent);
+ backdrop-filter: blur(32px) saturate(100%);
+ background: var(--v2-floating-surface);
border: 1px solid color-mix(in srgb, var(--v2-border-strong) 66%, rgb(255 255 255 / 38%));
border-radius: 22px;
box-shadow:
- 0 9px 26px rgb(27 34 43 / 10%),
- 0 1px 4px rgb(27 34 43 / 8%),
+ 0 9px 26px rgb(35 35 35 / 10%),
+ 0 1px 4px rgb(35 35 35 / 8%),
inset 0 1px 0 rgb(255 255 255 / 66%),
- inset 0 -1px 0 rgb(29 38 48 / 4%);
+ inset 0 -1px 0 rgb(38 38 38 / 4%);
min-height: 99px;
overflow: visible;
position: relative;
}
.v2-composer-surface:focus-within { border-color: var(--v2-border-strong); }
.v2-composer-surface::after {
- background: linear-gradient(120deg, rgb(255 255 255 / 18%), transparent 31%, transparent 67%, rgb(129 208 235 / 8%));
+ background: linear-gradient(120deg, var(--prayu-glass-highlight), transparent 40%, transparent 70%, var(--prayu-glass-highlight));
border-radius: inherit;
content: "";
inset: 0;
@@ -1151,18 +1147,20 @@
.v2-composer-icon { border-radius: 50%; height: 34px; padding: 0; width: 34px; }
.v2-composer-icon:disabled { color: var(--v2-muted); opacity: .72; }
.v2-shell .v2-send-button {
- background: var(--v2-send-background, #1b1c1f);
+ background: var(--prayu-primary-bg);
+ border: 1px solid var(--prayu-primary-border);
border-radius: 50%;
- color: var(--v2-send-foreground, #fff);
+ box-shadow: 0 2px 8px var(--prayu-primary-shadow), inset 0 1px 0 var(--prayu-glass-highlight);
+ color: var(--prayu-primary-fg);
height: 34px;
padding: 0;
transition: opacity 120ms ease, transform 90ms ease;
width: 34px;
flex-shrink: 0;
}
-.v2-send-button:hover:not(:disabled) { background: var(--v2-send-hover, #050506); }
+.v2-send-button:hover:not(:disabled) { background: var(--prayu-primary-hover); }
.v2-send-button:active:not(:disabled) { transform: scale(.92); }
-.v2-send-button:disabled { background: rgb(91 95 101 / 18%); color: var(--v2-muted); }
+.v2-send-button:disabled { background: rgb(96 96 96 / 18%); color: var(--v2-muted); }
.v2-composer-chip,
.v2-workspace-picker select {
background: transparent;
@@ -1184,12 +1182,12 @@
.v2-permission-control { position: relative; }
.v2-permission-popover {
- backdrop-filter: blur(38px) saturate(185%);
+ backdrop-filter: blur(38px) saturate(100%);
background: rgb(from var(--prayu-panel-strong) r g b / 1);
border: 1px solid var(--v2-border);
border-radius: 15px;
bottom: 35px;
- box-shadow: 0 18px 44px rgb(27 34 43 / 20%), inset 0 1px 0 rgb(255 255 255 / 55%);
+ box-shadow: 0 18px 44px rgb(35 35 35 / 20%), inset 0 1px 0 rgb(255 255 255 / 55%);
left: -35px;
padding: 7px;
position: absolute;
@@ -1232,12 +1230,12 @@
.v2-permission-network .v2-network-prefill { margin-left: 0; }
.v2-network-scope-control { position: relative; }
.v2-network-popover {
- backdrop-filter: blur(38px) saturate(185%);
+ backdrop-filter: blur(38px) saturate(100%);
background: rgb(from var(--prayu-panel-strong) r g b / 1);
border: 1px solid var(--v2-border);
border-radius: 15px;
bottom: 35px;
- box-shadow: 0 18px 44px rgb(27 34 43 / 20%), inset 0 1px 0 rgb(255 255 255 / 55%);
+ box-shadow: 0 18px 44px rgb(35 35 35 / 20%), inset 0 1px 0 rgb(255 255 255 / 55%);
display: grid;
gap: 9px;
left: -35px;
@@ -1276,20 +1274,20 @@
min-height: 31px;
padding: 0 9px;
}
-.v2-network-popover > footer button.primary { background: #1c1d20; border-color: #1c1d20; color: #fff; }
+.v2-network-popover > footer button.primary { background: var(--prayu-primary-bg); border-color: var(--prayu-primary-border); color: var(--prayu-primary-fg); box-shadow: 0 2px 8px var(--prayu-primary-shadow), inset 0 1px 0 var(--prayu-glass-highlight); }
.v2-network-popover > footer button:disabled { opacity: .45; }
.v2-approval-stack { display: grid; gap: 10px; margin-top: 22px; }
.v2-approval-card {
- backdrop-filter: blur(28px) saturate(160%);
- background: color-mix(in srgb, var(--v2-floating-surface) 89%, rgb(255 238 206 / 11%));
- border: 1px solid color-mix(in srgb, #e7973e 32%, var(--v2-border));
+ backdrop-filter: blur(28px) saturate(100%);
+ background: var(--v2-floating-surface);
+ border: 1px solid var(--v2-border-strong);
border-radius: 15px;
- box-shadow: 0 9px 24px rgb(48 39 24 / 7%);
+ box-shadow: 0 9px 24px rgb(37 37 37 / 7%);
padding: 14px;
}
.v2-approval-card header { align-items: center; display: flex; gap: 10px; }
-.v2-approval-card header > span { align-items: center; background: rgb(232 147 57 / 14%); border-radius: 9px; color: #b8691f; display: flex; height: 31px; justify-content: center; width: 31px; }
+.v2-approval-card header > span { align-items: center; background: var(--v2-control); border-radius: 9px; color: var(--v2-ink); display: flex; height: 31px; justify-content: center; width: 31px; }
.v2-approval-card header > div { display: grid; gap: 2px; }
.v2-approval-card header small,
.v2-approval-card p { color: var(--v2-muted); }
@@ -1309,14 +1307,17 @@
.v2-approval-card footer button.secondary,
.v2-dialog footer button { background: var(--v2-control); }
.v2-approval-card footer button.primary,
-.v2-dialog footer button.primary { background: #1c1d20; color: #fff; }
+.v2-dialog footer button.primary { background: var(--prayu-primary-bg); border-color: var(--prayu-primary-border); color: var(--prayu-primary-fg); box-shadow: 0 2px 8px var(--prayu-primary-shadow), inset 0 1px 0 var(--prayu-glass-highlight); }
+.v2-network-popover > footer button.primary:hover:not(:disabled),
+.v2-approval-card footer button.primary:hover:not(:disabled),
+.v2-dialog footer button.primary:hover:not(:disabled) { background: var(--prayu-primary-hover); }
.v2-new-conversation-body { align-items: center; display: flex; justify-content: center; min-height: 0; }
.v2-new-copy { margin-top: 30px; max-width: 490px; text-align: center; }
.v2-new-copy h1 { font-size: 24px; font-weight: 600; letter-spacing: -.01em; margin: 18px 0 8px; }
.v2-new-copy p { color: var(--v2-muted); line-height: 1.6; margin: 0; }
-.v2-orb { display: inline-grid; filter: drop-shadow(0 9px 18px rgb(75 106 172 / 17%)); height: 48px; place-items: center; position: relative; width: 48px; }
-.v2-orb i { background: radial-gradient(circle at 28% 27%, #fff 0 8%, #8fd9ef 26%, #8268ee 65%, #5640a8 100%); border-radius: 47% 53% 48% 52%; inset: 2px; opacity: .85; position: absolute; transform: rotate(18deg); }
+.v2-orb { display: inline-grid; filter: drop-shadow(0 9px 18px var(--prayu-shadow)); height: 48px; place-items: center; position: relative; width: 48px; }
+.v2-orb i { background: radial-gradient(circle at 28% 27%, var(--prayu-primary-bg) 0 20%, var(--prayu-primary-hover) 55%, var(--prayu-muted) 100%); border: 1px solid var(--prayu-glass-highlight); border-radius: 47% 53% 48% 52%; inset: 2px; position: absolute; transform: rotate(18deg); }
.v2-orb i:last-child { filter: blur(9px); inset: 7px; opacity: .45; transform: rotate(-28deg); }
.v2-settings-sidebar { overflow: hidden; }
@@ -1329,7 +1330,7 @@
.v2-settings-nav button,
.v2-settings-archive button { height: 31px; }
.v2-settings-nav button.is-active,
-.v2-settings-archive button.is-active { background: color-mix(in srgb, var(--v2-control-hover) 76%, rgb(117 156 165 / 14%)); }
+.v2-settings-archive button.is-active { background: var(--v2-control-hover); }
.v2-settings-archive { border-top: 1px solid color-mix(in srgb, var(--v2-border) 55%, transparent); padding: 8px; }
.v2-settings-archive > span { display: block; }
.v2-permission-downgrade {
@@ -1391,7 +1392,7 @@
width: 40px;
}
.v2-cdp-switch i {
- background: #fff;
+ background: var(--prayu-surface-solid);
border-radius: 50%;
box-shadow: 0 1px 4px rgb(0 0 0 / 24%);
display: block;
@@ -1400,11 +1401,11 @@
transition: transform 160ms cubic-bezier(.2, .8, .2, 1);
width: 18px;
}
-.v2-cdp-switch[aria-checked="true"] { background: #5b9df5; }
+.v2-cdp-switch[aria-checked="true"] { background: var(--v2-accent); }
.v2-cdp-switch[aria-checked="true"] i { transform: translateX(16px); }
.v2-cdp-switch:disabled { cursor: default; opacity: .44; }
.v2-cdp-switch:focus-visible,
-.v2-permission-downgrade:focus-visible { outline: 2px solid var(--prayu-focus, #4b8ef7); outline-offset: 2px; }
+.v2-permission-downgrade:focus-visible { outline: 2px solid var(--prayu-focus); outline-offset: 2px; }
.v2-full-cdp-session {
background: color-mix(in srgb, var(--v2-control) 74%, transparent);
border: 1px solid var(--v2-border);
@@ -1439,7 +1440,7 @@
.v2-full-cdp-launch select { box-sizing: border-box; padding: 0 9px; width: 100%; }
.v2-full-cdp-live { display: grid; gap: 5px; }
.v2-full-cdp-live > span { align-items: center; display: flex; gap: 6px; }
-.v2-full-cdp-live > span i { background: #46b977; border-radius: 50%; box-shadow: 0 0 0 3px color-mix(in srgb, #46b977 18%, transparent); height: 7px; width: 7px; }
+.v2-full-cdp-live > span i { background: var(--prayu-success); border-radius: 50%; box-shadow: 0 0 0 3px color-mix(in srgb, var(--prayu-success) 18%, transparent); height: 7px; width: 7px; }
.v2-full-cdp-live code { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.v2-full-cdp-live small,
.v2-full-cdp-receipt { color: var(--v2-muted); font-size: 11px !important; }
@@ -1451,12 +1452,12 @@
}
.v2-run-network-control { position: relative; }
.v2-run-network-popover {
- backdrop-filter: blur(38px) saturate(185%);
+ backdrop-filter: blur(38px) saturate(100%);
background: var(--v2-floating-surface);
border: 1px solid var(--v2-border);
border-radius: 15px;
bottom: 35px;
- box-shadow: 0 18px 44px rgb(27 34 43 / 20%), inset 0 1px 0 rgb(255 255 255 / 55%);
+ box-shadow: 0 18px 44px rgb(35 35 35 / 20%), inset 0 1px 0 rgb(255 255 255 / 55%);
left: -96px;
position: absolute;
width: min(440px, calc(100vw - 28px));
@@ -1470,9 +1471,9 @@
}
.v2-run-network-authority > header > span:first-child {
align-items: center;
- background: color-mix(in srgb, #46a76f 10%, var(--v2-control));
+ background: var(--v2-control);
border-radius: 10px;
- color: #348c5b;
+ color: var(--prayu-success);
display: flex;
height: 34px;
justify-content: center;
@@ -1504,14 +1505,14 @@
.v2-search-readiness em { color: var(--v2-muted); font-size: 10.5px; font-style: normal; line-height: 1.4; }
.v2-search-readiness em { border-top: 1px solid var(--v2-border); padding-top: 5px; }
.v2-search-readiness.state-ready {
- background: color-mix(in srgb, #46a76f 9%, var(--v2-control));
- border-color: color-mix(in srgb, #46a76f 28%, var(--v2-border));
+ background: var(--v2-control);
+ border-color: var(--v2-border-strong);
}
.v2-search-readiness.state-provider_unqualified,
.v2-search-readiness.state-missing_allowlist,
.v2-search-readiness.state-network_disabled {
- background: color-mix(in srgb, #d99a45 8%, var(--v2-control));
- border-color: color-mix(in srgb, #d99a45 25%, var(--v2-border));
+ background: var(--v2-control);
+ border-color: var(--v2-border-strong);
}
.v2-network-prefill {
align-items: center;
@@ -1642,7 +1643,7 @@
}
.v2-runtime-actions button:hover:not(:disabled) { background: color-mix(in srgb, var(--v2-danger) 13%, var(--v2-floating-surface)); }
.v2-runtime-actions button:disabled { background: var(--v2-control); border-color: transparent; color: var(--v2-muted); cursor: default; }
-.v2-runtime-actions button:focus-visible { outline: 2px solid var(--prayu-focus, #4b8ef7); outline-offset: 2px; }
+.v2-runtime-actions button:focus-visible { outline: 2px solid var(--prayu-focus); outline-offset: 2px; }
.v2-runtime-boundary {
background: color-mix(in srgb, var(--v2-control) 70%, transparent);
border-radius: 10px;
@@ -1656,8 +1657,8 @@
.v2-overlay,
.v2-inspector-backdrop {
align-items: center;
- backdrop-filter: blur(12px) saturate(120%);
- background: rgb(23 27 34 / 20%);
+ backdrop-filter: blur(12px) saturate(100%);
+ background: rgb(28 28 28 / 20%);
display: flex;
inset: 0;
justify-content: center;
@@ -1665,11 +1666,11 @@
z-index: 500;
}
.v2-dialog {
- backdrop-filter: blur(42px) saturate(190%);
+ backdrop-filter: blur(42px) saturate(100%);
background: var(--v2-floating-surface);
border: 1px solid var(--v2-border-strong);
border-radius: 16px;
- box-shadow: 0 24px 70px rgb(12 17 24 / 28%), inset 0 1px 0 rgb(255 255 255 / 55%);
+ box-shadow: 0 24px 70px rgb(18 18 18 / 28%), inset 0 1px 0 rgb(255 255 255 / 55%);
max-width: calc(100% - 32px);
padding: 0;
width: 420px;
@@ -1681,21 +1682,21 @@
.v2-dialog > header > button { background: transparent; border: 0; border-radius: 8px; height: 30px; padding: 0; }
.v2-dialog > p { color: var(--v2-muted); line-height: 1.55; margin: 0; padding: 19px 18px; }
.v2-dialog footer { align-items: center; border-top: 1px solid var(--v2-border); display: flex; gap: 8px; justify-content: flex-end; padding: 11px 13px; }
-.v2-dialog footer button.danger { background: var(--v2-danger); border-color: transparent; color: #fff; }
+.v2-dialog footer button.danger { background: var(--prayu-danger-fill); border-color: transparent; color: var(--prayu-on-danger); }
.v2-high-risk-overlay {
animation: v2-high-risk-scrim-in 180ms ease-out both;
- backdrop-filter: blur(16px) saturate(125%);
- background: rgb(18 23 30 / 27%);
+ backdrop-filter: blur(16px) saturate(100%);
+ background: rgb(24 24 24 / 27%);
padding: 16px;
}
.v2-high-risk-dialog {
animation: v2-high-risk-materialize 210ms cubic-bezier(.2, .8, .2, 1) both;
- backdrop-filter: blur(48px) saturate(190%);
- background: color-mix(in srgb, var(--v2-floating-surface) 94%, transparent);
+ backdrop-filter: blur(48px) saturate(100%);
+ background: var(--v2-floating-surface);
border: 1px solid var(--v2-border-strong);
border-radius: 24px;
- box-shadow: 0 28px 82px rgb(8 14 22 / 30%), inset 0 1px 0 rgb(255 255 255 / 58%);
+ box-shadow: 0 28px 82px rgb(15 15 15 / 30%), inset 0 1px 0 rgb(255 255 255 / 58%);
color: var(--v2-ink);
font-family: var(--prayu-font-ui), system-ui, sans-serif;
max-height: calc(100dvh - 32px);
@@ -1769,7 +1770,7 @@
.v2-high-risk-warning details { color: var(--v2-muted); font-size: 12px; }
.v2-high-risk-warning details p { font-size: 12px; margin-top: 7px; }
.v2-high-risk-warning summary {
- color: color-mix(in srgb, var(--v2-danger) 76%, #b54a84);
+ color: var(--v2-danger);
cursor: pointer;
display: inline-block;
font-weight: 600;
@@ -1815,7 +1816,7 @@
.v2-high-risk-actions button.danger {
background: color-mix(in srgb, var(--v2-danger) 9%, var(--v2-floating-surface));
border-color: transparent;
- color: color-mix(in srgb, var(--v2-danger) 88%, #d34267);
+ color: var(--v2-danger);
}
.v2-high-risk-actions button.danger:hover:not(:disabled) {
background: color-mix(in srgb, var(--v2-danger) 14%, var(--v2-floating-surface));
@@ -1823,7 +1824,7 @@
.v2-high-risk-actions button:disabled { cursor: default; opacity: .56; }
.v2-high-risk-dialog button:focus-visible,
.v2-high-risk-dialog summary:focus-visible {
- outline: 2px solid var(--prayu-focus, #4b8ef7);
+ outline: 2px solid var(--prayu-focus);
outline-offset: 2px;
}
@keyframes v2-high-risk-scrim-in { from { opacity: 0; } }
@@ -1834,10 +1835,10 @@
.v2-inspector-backdrop { align-items: stretch; justify-content: flex-end; }
.v2-inspector-drawer {
- backdrop-filter: blur(42px) saturate(180%);
+ backdrop-filter: blur(42px) saturate(100%);
background: var(--v2-floating-surface);
border-left: 1px solid var(--v2-border-strong);
- box-shadow: -18px 0 54px rgb(15 20 28 / 16%);
+ box-shadow: -18px 0 54px rgb(21 21 21 / 16%);
display: flex;
flex-direction: column;
max-width: 100%;
@@ -1852,14 +1853,14 @@
.v2-inspector-facts label { color: var(--v2-muted); display: grid; font-size: 11px; gap: 5px; text-transform: uppercase; }
.v2-inspector-facts code,
.v2-inspector-facts strong { color: var(--v2-ink); font-size: 12px; overflow-wrap: anywhere; text-transform: none; }
-.v2-open-legacy { background: #1c1d20; border: 0; border-radius: 10px; color: #fff !important; height: 38px; margin: auto 16px 16px; }
+.v2-shell .v2-open-legacy { background: var(--prayu-primary-bg); border: 1px solid var(--prayu-primary-border); border-radius: 10px; color: var(--prayu-primary-fg); box-shadow: 0 2px 8px var(--prayu-primary-shadow), inset 0 1px 0 var(--prayu-glass-highlight); height: 38px; margin: auto 16px 16px; }
.v2-toast { backdrop-filter: blur(24px); background: var(--v2-floating-surface); border: 1px solid var(--v2-border); border-radius: 11px; bottom: 18px; box-shadow: 0 12px 32px rgb(0 0 0 / 16%); left: 50%; padding: 10px 14px; position: fixed; transform: translateX(-50%); z-index: 600; }
.sr-only,
.v2-shell .sr-only { clip: rect(0, 0, 0, 0); clip-path: inset(50%); height: 1px; overflow: hidden; position: absolute; white-space: nowrap; width: 1px; }
.spin { animation: v2-spin .8s linear infinite; }
@keyframes v2-spin { to { transform: rotate(360deg); } }
-@keyframes v2-pulse { 50% { box-shadow: 0 0 0 4px rgb(77 154 255 / 13%); opacity: .52; } }
+@keyframes v2-pulse { 50% { box-shadow: 0 0 0 4px color-mix(in srgb, var(--v2-accent) 13%, transparent); opacity: .52; } }
@supports (corner-shape: superellipse(1.5)) {
.v2-composer-surface,
@@ -1871,10 +1872,8 @@
.v2-approval-card { corner-shape: superellipse(1.5); }
}
-[data-prayu-theme="dark"] .v2-send-button,
-[data-prayu-theme="glass"] .v2-send-button { --v2-send-background: #f6f7f8; --v2-send-foreground: #15171a; --v2-send-hover: #fff; }
-[data-prayu-theme="glass"] .v2-sidebar,
-[data-prayu-theme="glass"] .v2-product-surface { backdrop-filter: blur(46px) saturate(185%); }
+:where([data-prayu-theme="glass"]) .v2-sidebar,
+:where([data-prayu-theme="glass"]) .v2-product-surface { backdrop-filter: blur(46px) saturate(100%); }
.v2-sidebar-backdrop { display: none; }
.v2-workspace-start { margin-left: auto; position: relative; }
@@ -1892,7 +1891,7 @@
.v2-titlebar { z-index: 130; }
.v2-sidebar-backdrop { display: block; position: absolute; inset: var(--v2-titlebar-height) 0 0; background: #0004; border: 0; z-index: 110; }
.v2-shell-body { grid-template-columns: minmax(0, 1fr); }
- .v2-sidebar { box-shadow: 14px 0 40px rgb(15 22 30 / 20%); inset: var(--v2-titlebar-height) auto 0 0; position: absolute; width: min(var(--v2-sidebar-width), calc(100vw - 48px)); z-index: 120; }
+ .v2-sidebar { box-shadow: 14px 0 40px rgb(22 22 22 / 20%); inset: var(--v2-titlebar-height) auto 0 0; position: absolute; width: min(var(--v2-sidebar-width), calc(100vw - 48px)); z-index: 120; }
.v2-product-surface { border: 0; border-radius: 0; }
.v2-conversation-content { width: calc(100% - 24px); }
.v2-composer-dock { padding-inline: 10px; }
@@ -1947,9 +1946,9 @@
.v2-run-network-popover,
.v2-dialog,
.v2-inspector-drawer,
-.v2-high-risk-dialog { backdrop-filter: none; background: var(--prayu-panel-strong, #fff); }
- .v2-high-risk-overlay { backdrop-filter: none; background: rgb(18 23 30 / 42%); }
- .v2-sidebar { background: color-mix(in srgb, var(--prayu-panel-strong, #fff) 92%, #dff2f4); }
+.v2-high-risk-dialog { backdrop-filter: none; background: var(--prayu-surface-solid); }
+ .v2-high-risk-overlay { backdrop-filter: none; background: rgb(24 24 24 / 42%); }
+ .v2-sidebar { background: var(--prayu-surface-solid); }
}
@media (prefers-contrast: more) {
@@ -1999,9 +1998,9 @@
}
.v2-model-route-trigger > svg, .v2-model-route-trigger > em { flex-shrink: 0; }
.v2-model-route-trigger > em {
- background: color-mix(in srgb, var(--v2-blue) 13%, transparent);
+ background: color-mix(in srgb, var(--v2-accent) 13%, transparent);
border-radius: 999px;
- color: var(--v2-blue);
+ color: var(--v2-accent);
font-size: 9px;
font-style: normal;
font-weight: 650;
@@ -2011,13 +2010,13 @@
}
.v2-model-route-popover {
animation: v2-model-route-materialize 140ms cubic-bezier(.2, .8, .2, 1);
- backdrop-filter: blur(38px) saturate(185%);
+ backdrop-filter: blur(38px) saturate(100%);
/* Nested backdrop roots cannot reliably blur the transcript below the composer. */
background: rgb(from var(--prayu-panel-strong) r g b / 1);
border: 1px solid color-mix(in srgb, var(--v2-border) 88%, rgb(255 255 255 / 42%));
border-radius: 15px;
bottom: 36px;
- box-shadow: 0 18px 44px rgb(27 34 43 / 20%), inset 0 1px 0 rgb(255 255 255 / 55%);
+ box-shadow: 0 18px 44px rgb(35 35 35 / 20%), inset 0 1px 0 rgb(255 255 255 / 55%);
overflow: hidden;
position: absolute;
right: 0;
@@ -2149,7 +2148,7 @@
}
.v2-model-route-scroll section > button:hover:not(:disabled) { background: var(--v2-control-hover); }
.v2-model-route-scroll section > button[aria-checked="true"] {
- background: color-mix(in srgb, var(--v2-blue) 9%, transparent);
+ background: color-mix(in srgb, var(--v2-accent) 9%, transparent);
}
.v2-model-route-scroll section > button:disabled { opacity: .5; }
.v2-model-route-scroll section > button > span { display: grid; gap: 1px; min-width: 0; }
@@ -2216,8 +2215,8 @@
}
}
-/* Model catalog styles live in the external production stylesheet so the strict
- style-src 'self' CSP remains intact. Static provider IDs select fixed brand tints. */
+/* Model catalog styles use the same material tokens in the external stylesheet,
+ preserving the style-src 'self' CSP. */
.model-optional-prices summary:focus-visible { outline: 2px solid currentColor; outline-offset: 3px; }
.model-optional-prices > p { color: var(--v2-muted); line-height: 1.5; }
.model-optional-prices { border-top: 1px solid var(--v2-border); margin-top: 20px; padding-top: 14px; }