From b4447b44e9111debf384e3e0b6b9a9ece8f9f589 Mon Sep 17 00:00:00 2001 From: Agent-Evo RSI Date: Tue, 29 Sep 2026 01:06:05 +0800 Subject: [PATCH 1/3] =?UTF-8?q?feat(settings):=20=E8=AE=BE=E7=BD=AE?= =?UTF-8?q?=E6=A8=A1=E6=80=81=E6=A1=86=E5=85=A8=E9=A1=B5=20Codex=20?= =?UTF-8?q?=E5=8C=96=E7=A7=BB=E6=A4=8D=E8=BF=9B=E6=96=B0=E7=BB=93=E6=9E=84?= =?UTF-8?q?=EF=BC=88=E5=8E=9F=20PR=20#1=EF=BC=8C0.7.0=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 结构层 src/client/settings-modal.js + 视觉层 skins/codex-ink/settings-modal.css 原样搬入, 装配方式改为模块化打包器的一条 import(PR #1 的 __CODEX_UI_MODAL__ 占位符在打包器下不再需要)。 - scripts/build.mjs:SKIN_PARTS 增加 settings-modal.css(第九份样式)。 - scripts/check.mjs:新增 6 条设置模态框契约(源文件存在 / 装配到 apply / 视觉层作用域化 / 自有锚点 [data-cx-sm-panel] / PANEL_SELECTOR 宿主优先 / 无残留占位符),60 → 67 条。 - scripts/specs/composer.mjs:徽标配色与圆角改读令牌计算值(不硬编码 rgb / 6px)。 - scripts/live/settings-modal.mjs、scripts/live/settings-sweep.mjs:PR #1 的两个真 GUI 验收搬进新结构。 - 视觉层三处 html[data-windows-titlebar][data-codex-ui] 改成 data-codex-ui 在前的等价写法, 以进「全部作用域化」体检(同一复合选择器、同特异性)。 - README / CHANGELOG 双语更新到 0.7.0。 验证:npm run check 67/67;node scripts/verify.mjs 208/208。 --- CHANGELOG.md | 51 + CHANGELOG.zh-CN.md | 47 + README.md | 17 +- README.zh-CN.md | 11 +- assets/screenshots/settings-page-accent.png | Bin 119996 -> 173405 bytes assets/screenshots/settings-page-dark.png | Bin 115445 -> 163532 bytes assets/screenshots/settings-page-default.png | Bin 0 -> 168954 bytes .../screenshots/settings-page-translucent.png | Bin 0 -> 169876 bytes client.js | 697 ++++++++++- docs/dom-recon-settings-layout.md | 624 ++++++++++ .../ui-ux-pro-max-quick-reference.md | 42 + scripts/build.mjs | 1 + scripts/check.mjs | 123 ++ scripts/live/settings-modal.mjs | 1092 +++++++++++++++++ scripts/live/settings-sweep.mjs | 346 ++++++ scripts/specs/composer.mjs | 25 +- skins/codex-ink/settings-modal.css | 718 +++++++++++ src/client/index.js | 9 +- src/client/settings-modal.js | 680 ++++++++++ theme.css | 468 +++++++ 20 files changed, 4935 insertions(+), 16 deletions(-) create mode 100644 assets/screenshots/settings-page-default.png create mode 100644 assets/screenshots/settings-page-translucent.png create mode 100644 docs/dom-recon-settings-layout.md create mode 100644 docs/references/ui-ux-pro-max-quick-reference.md create mode 100644 scripts/live/settings-modal.mjs create mode 100644 scripts/live/settings-sweep.mjs create mode 100644 skins/codex-ink/settings-modal.css create mode 100644 src/client/settings-modal.js diff --git a/CHANGELOG.md b/CHANGELOG.md index f4b2e1f..f44cce6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,57 @@ [简体中文](CHANGELOG.zh-CN.md) +## 0.7.0 - 2026-09-28 + +The architecture cleanup (originally PR #3) and the full-page settings work (originally PR #1) land together on top of +0.6.4. Nothing from 0.6.2–0.6.4 is dropped: the structure is the new one, and every assertion that used to live in the +old flat scripts was re-expressed in the new ones. + +### Structure (the PR #3 refactor) + +- **Client side is modular**: `src/client.template.js` is gone. `src/client/index.js` is the entry and pulls in + `settings.js`, `settings-card.js`, `override.js`, `stylesheet.js`, `theme-preview.js`, `host.js`, + `constants.js` and `model-picker/`. The bundler in `scripts/build.mjs` is zero-dependency and produces the same + classic `window.__ModuleLoader__.load(...)` script. A new feature is one module plus one line in the entry. +- **Tooling collapsed into three entries**: `npm run check` (host-free), `npm run verify` (fixtures), + `scripts/live/*` (real GUI). Shared code lives in `scripts/lib/`; fixtures are `scripts/specs/*.mjs`. + The old `check-repo.mjs` / `*-verify.mjs` / `live-gui-probe.mjs` / `theme-flash-probe.mjs` are gone; their + assertions were moved, not deleted. +- **No `:has()` in ancestor positions** and a narrower MutationObserver: style recalc while a reply streams in went + 4264 → 267 ms (web) and 9518 → 442 ms (desktop shell). +- **The dark `html` background never applied**: the scoper turned `:root:has(body[data-ds-dark-theme])` into a + descendant selector that could not match. Compound selectors starting with `:root` now map to the root itself. + +### Settings modal (the PR #1 work) + +- **㉑ The settings dialog gets a full Codex pass**: a grouped sidebar with a "← Back to app" row and a search box that + filters host items, group headers, a page header in the content area, white cards with hairlines on every sub-page and + sticky save bars. Structure lives in `src/client/settings-modal.js`, looks in `skins/codex-ink/settings-modal.css`. +- **Host anchors first**: the panel is found by `[data-shortcut-modal="settings"]` (the host's own attribute) and only + falls back to the third-party skin-center adapter's `[data-dsh-surface="settings"]`. The visual layer hangs off the + plugin's own `[data-cx-sm-panel]` only, so a host rename moves one constant, not a stylesheet. When the settings + dialog is open but no anchor matches, the layer **warns** instead of failing silently. +- **Hiding is attribute-first**: the host rewrites a nav item's whole `className` when the selection moves away, so the + durable marker is `data-cx-sm-hidden`; the class is only for humans. The list observer runs with `subtree` — without + it the class rewrite produces zero mutation records (measured 0 vs 5). +- **Never takes over host nodes**: unknown items are only grouped visually, host nodes are never moved, cloned or + deleted. Reordering uses `style.order`; the known cost is that Tab order stays DOM order. + +### Ported into the new structure + +- The 0.6.2–0.6.4 model-picker work (seat-local `pending`, top-rung violet dot matrix, the 16×30 knob and the + Faster/Smarter row) lives in `src/client/model-picker/{component,view}.js`; the fixture's fake directory no longer + pretends the snapshot has a `pending` field, which is what the installed host actually looks like. +- The 0.6.3 measured-pixel values (sidebar `#f6f6f6`, centre-column ambient shadow 13px @7%, two-layer composer + shadow) are in, and the dark centre-column rule is kept separate: the light fit does not hold for dark, so a single + token cannot express both. +- `scripts/live/settings-modal.mjs` and `scripts/live/settings-sweep.mjs` are the live-GUI checks for the modal. The + sweep treats "found zero settings pages" as a hard failure — it used to report PASS while scanning nothing. + +### Verification + +`npm run check` 67/67 · `node scripts/verify.mjs` 208/208 (8 specs). + ## 0.6.4 - 2026-09-28 Both sidebars were rebased. Codex has **no sidebar color token**; the left panel is painted with a translucent diff --git a/CHANGELOG.zh-CN.md b/CHANGELOG.zh-CN.md index 8002fbd..e4aeb0c 100644 --- a/CHANGELOG.zh-CN.md +++ b/CHANGELOG.zh-CN.md @@ -2,6 +2,53 @@ [English](CHANGELOG.md) +## 0.7.0 - 2026-09-28 + +架构整理(原 PR #3)与设置界面全页化(原 PR #1)一起落在 0.6.4 之上。0.6.2–0.6.4 的东西一样没丢: +结构用新的那一套,原来散在扁平脚本里的判据逐条搬进新脚本,不是删掉。 + +### 结构(原 PR #3 的重构) + +- **客户端模块化**:`src/client.template.js` 删除。入口是 `src/client/index.js`,下面挂 `settings.js`、 + `settings-card.js`、`override.js`、`stylesheet.js`、`theme-preview.js`、`host.js`、`constants.js` + 与 `model-picker/`。`scripts/build.mjs` 里的打包器零依赖,产出的仍是宿主要求的经典脚本 + `window.__ModuleLoader__.load(...)`。加一个功能 = 加一个模块 + 入口一行。 +- **工具链收拢成三个入口**:`npm run check`(不依赖宿主)、`npm run verify`(夹具)、`scripts/live/*`(真 GUI)。 + 公共部分在 `scripts/lib/`,夹具在 `scripts/specs/*.mjs`。旧的 `check-repo.mjs` / `*-verify.mjs` / + `live-gui-probe.mjs` / `theme-flash-probe.mjs` 删除;它们的判据是**搬家**,不是删除。 +- **祖先位置的 `:has()` 清零**,MutationObserver 收窄:流式输出时的样式重算 4264 → 267 ms(web)、 + 9518 → 442 ms(桌面壳)。 +- **暗色 `html` 底色从未生效**:作用域化把 `:root:has(body[data-ds-dark-theme])` 变成了永远不匹配的后代选择器。 + 现在以 `:root` 开头的复合选择器映射到根自身。 + +### 设置模态框(原 PR #1 的工作) + +- **㉑ 设置对话框全页 Codex 化**:分组侧栏(「← 返回应用」一行、按文字过滤宿主条目的搜索框)、分组标题、 + 内容区页头、每个子页面的白卡细边与贴底保存栏。结构在 `src/client/settings-modal.js`,外观在 + `skins/codex-ink/settings-modal.css`。 +- **宿主锚点优先**:面板先认宿主自己的 `[data-shortcut-modal="settings"]`,只有找不到才退到第三方 + skin-center 适配器补打的 `[data-dsh-surface="settings"]`。视觉层只挂插件自有的 `[data-cx-sm-panel]` —— + 宿主改锚点只动一个常量,不动样式表。设置界面确实开着却一个锚点都没匹配到时,这一层**发警告**,不静默失效。 +- **隐藏态以属性为准**:宿主在选中态搬走时会把导航项的 `className` 整条重写,所以耐久标记是 + `data-cx-sm-hidden`,类名只是给人看的。列表观察器必须开 `subtree` —— 不开时那次 class 重写一条 mutation + 记录都不产生(实测 0 条 vs 5 条)。 +- **绝不接管宿主节点**:未知项只做视觉分组,宿主节点不移动、不克隆、不删除。排序走 `style.order`; + 已知代价是键盘 Tab 顺序仍是 DOM 顺序。 + +### 搬进新结构的部分 + +- 0.6.2–0.6.4 的模型选择器改动(席位级 `pending`、顶档紫色点阵、16×30 旋钮与「更快/更强」一行)落在 + `src/client/model-picker/{component,view}.js`;夹具的假目录不再假装快照里有 `pending` 字段 —— + 安装中的宿主本来就没有。 +- 0.6.3 的实测像素值(侧栏 `#f6f6f6`、中列环境影 13px @7%、输入卡阴影两层)都在,且暗色中列规则**单独保留**: + 亮色那支拟合对暗色不成立,一个令牌表达不了两档。 +- `scripts/live/settings-modal.mjs` 与 `scripts/live/settings-sweep.mjs` 是模态框的真 GUI 验收。 + 扫掠脚本把「一个设置页都没扫到」当硬故障 —— 旧版在这种情况下报 PASS。 + +### 验收 + +`npm run check` 67/67 · `node scripts/verify.mjs` 208/208(8 个 spec)。 + ## 0.6.4 - 2026-09-28 亮暗两套侧栏都换了基准。Codex **没有「侧栏色」令牌**;那一面是半透明遮罩,渲染出来的颜色取决于窗口背后是什么。 diff --git a/README.md b/README.md index f7b8f01..2123a4c 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,7 @@ images are in the sections below and in `assets/reference/`. ## Host compatibility Developed against DSH `0.1.7-rc.1` (npm global install) and `0.1.7-rc.2` (Windows desktop shell `app.asar`); -the full 0.6.1 verification ran on the npm release `@deepseek-ai/dsh@0.1.7-rc.2` (fixtures against both its +the full 0.7.0 verification ran on the npm release `@deepseek-ai/dsh@0.1.7-rc.2` (fixtures against both its `node_modules` and an `app.asar` packed from it, the live checks on a `dsh web` booted from it; see "Host and browser"). Fixtures read the shipped host CSS and render code directly, so a structural host change fails their assertions. @@ -47,6 +47,7 @@ Fixtures read the shipped host CSS and render code directly, so a structural hos | ②d | Right panel: hairline only on its left edge, shadow bleeds upward only; the dockkit 1px border is removed | | ②e | Right divider handle: center-darkest gradient on hover | | ⑱ | Settings card on the plugin manager's codex-ui bundle page: theme / accent / background / foreground / UI font / code font / translucent sidebar / Codex model picker / contrast | +| ㉑ | **Settings modal, full-page Codex pass**: the settings dialog gets a grouped sidebar (a "← Back to app" row, a search box that filters host items, group headers), a page header in the content area, white cards with hairlines on every sub-page and sticky save bars. Structure comes from `src/client/settings-modal.js` (host anchors only, host nodes never moved or cloned, hiding driven by a durable `data-*` attribute), looks from `skins/codex-ink/settings-modal.css`. Any step that does not match the host layout warns and skips — the layer degrades, it never throws | ## Screenshots @@ -133,7 +134,7 @@ ones go through a `ctx.inject([...], cb)` child scope, as the model picker does. | `src/client/override.js` | Override-layer pure functions (no DOM; unit-tested by `check.mjs`) | | `src/client/model-picker/` | Model picker face B: `index.js` waits for the `modelDirectories` service, `component.js` is the seat takeover, popover and power rail, `view.js` holds the pure functions (unit-tested by `check.mjs`) | | `src/client/constants.js` `host.js` | Shared names and small helpers for reading host services | -| `skins/codex-ink/` | Stylesheet sources (skin.css / patches.css / model-picker.css / sidebar-align.css / sidebar-surface.css / window-shadow.css / composer.css / settings.css) and the Skin v2 manifest | +| `skins/codex-ink/` | Stylesheet sources (skin.css / patches.css / model-picker.css / sidebar-align.css / sidebar-surface.css / window-shadow.css / composer.css / settings.css / settings-modal.css) and the Skin v2 manifest | | `theme.css` `client.js` | Generated by `scripts/build.mjs` and committed (DSH loads `client.js`) | | `scripts/build.mjs` | Scoping and bundling | | `scripts/check.mjs` | Host-free repository checks; the CI entry point | @@ -150,19 +151,21 @@ ones go through a `ctx.inject([...], cb)` child scope, as the model picker does. | Command | Coverage | Requirement | |---|---|---| -| `npm run check` | Syntax, JSON, manifest and `peerDependencies`, artifacts in sync with sources, the DSH client plugin contract of `client.js` (executed once in isolation), scoping, override-layer and power-rail pure functions, 36 WCAG pairs, color whitelist, encoding, docs pairing, machine-specific paths — 60 checks | none | -| `npm run verify` | All fixtures, 195 assertions (table below) | host packages + Chromium | +| `npm run check` | Syntax, JSON, manifest and `peerDependencies`, artifacts in sync with sources, the DSH client plugin contract of `client.js` (executed once in isolation), scoping, override-layer and power-rail pure functions, 36 WCAG pairs, color whitelist, encoding, docs pairing, machine-specific paths, the settings-modal contract (sources / scoping / host-first anchor / assembly) — 67 checks | none | +| `npm run verify` | All fixtures, 208 assertions (table below) | host packages + Chromium | | `node scripts/live/gui.mjs --url ` | Real GUI: shadows and both dividers, plus the model seat — 14 assertions with face B on (takeover, geometry, a keyboard change written into the host store and reverted), 10 with it off (the face A pending window; `--latency` adds 800ms to that round trip by default, since locally it takes <60ms and cannot be sampled) | a running `dsh web` | | `node scripts/live/settings.mjs --url <…>` | Real GUI: the card on the bundle page, its 9 rows, no override at defaults, switch and accent writes, the host seat coming back when the model picker is off, survival across a reload, no intermediate frame while switching theme; resets everything at the end — 30 assertions | same, with the plugin manager enabled | +| `node scripts/live/settings-modal.mjs --url <…>` | Real GUI: the ㉑ structure layer and its visual layer together — the grouped sidebar, the "← Back to app" row, the search filter, group headers, host node identity (nothing moved or cloned), and the attribute-first hiding that survives the host rewriting `className`. Needs a live `dsh web` with the plugin manager enabled; `--explore` dumps the structure without asserting | same | +| `node scripts/live/settings-sweep.mjs --url <…> --out --prefix c1` | Opens every settings page in light and dark, screenshots each and measures layout health. **Zero pages found is a hard failure** (non-zero exit): a sweep that scans nothing must never report PASS | same | | `node scripts/live/parity.mjs snap --url <…> --out `
`node scripts/live/parity.mjs diff ` | Stores every element's computed style across 14 UI states and compares them; exits 0 on zero differences. This is how a refactor proves the look did not change. `--ignore` skips given properties or newly added `--variables` | same | Fixtures: `node scripts/verify.mjs [spec…]`; without a spec, all of them run. | Spec | Sections | Coverage | Assertions | |---|---|---|---| -| `composer` | composer-shadow · hero | ⑱ composer shadow aligned to Codex's `--elevation-composer` (per-layer geometry and alpha, dark inset, narrow-viewport 80→40px, rendered pixels); ⑬ ⑭ ⑰, the focus ring and the released header slots | 23 + 25 | +| `composer` | composer-shadow · hero | ⑱ composer shadow **fitted to measured pixels** (two layers — ring + near field; per-layer geometry and alpha, dark inset, narrow and wide viewports agreeing, rendered pixels); ⑬ ⑭ ⑰, the focus ring, the released header slots and the badge colour / radius read from the tokens themselves | 21 + 25 | | `elevation` | elevation | ⑲ `--dsw-elevation-*` against Codex's source, plus a rendered menu panel | 19 | -| `model-picker` | host-menu · power-rail | ⑫ face A (the host menu) and the pending indicator; ⑳ face B: seat takeover and hand-back, geometry, no commit while dragging / one snapped commit on release, no snap-back and a spinner during a slow round trip, the four keys, focus ring, Escape, model change carrying its default effort, failure notice, reduced motion, dark, the switch | 20 + 47 | +| `model-picker` | host-menu · power-rail | ⑫ face A (the host menu) and the pending indicator; ⑳ face B: seat takeover and hand-back, geometry, no commit while dragging / one snapped commit on release, no snap-back and a spinner during a slow round trip, **the top-rung violet dot matrix** (5 rows, 8 tone buckets, hash-scattered phases, feathering, both reduced-motion switches), the four keys, focus ring, Escape, model change carrying its default effort, failure notice, reduced motion, dark, the switch. The fake directory is shaped like the **installed** host (no `pending` in the snapshot) | 20 + 62 | | `rightbar` | rightbar | Shadow layer, right panel, both dividers | 42 | | `sidebar` | align · surface | Sidebar column alignment; the sidebar scroll fade (Codex mask ramp), mechanism plus per-pixel alpha | 6 + 13 | @@ -348,7 +351,7 @@ thing from the sidebar. The composer card over it measures 35, matching Codex. - The session row text column is 40px, 2px shorter than the workspace, new session and plugin rows, because the shipped `Rows.module.css` gives `.sessionRow .title` its own margin. Left as is. - `composer.css`, `patches.css`, `sidebar-align.css` and `sidebar-surface.css` use hash-class suffix anchors (`[class$=…]`, - `[class*=…]`) where the host exposes no `data-*` (0.6.1: composer 10 · patches 10 · sidebar-align 9 · sidebar-surface 2). + `[class*=…]`) where the host exposes no `data-*` (0.7.0 raw occurrences: composer 9 · patches 9 · sidebar-align 9 · sidebar-surface 2 · settings-modal 3). The 9 in sidebar-align are one anchor, `_collapsed` (the collapsed sidebar), replacing an ancestor-position `:has()`. `model-picker.css` has none. - Selectors keep `:has()` out of ancestor positions: while the conversation streams nodes in, Chromium re-matches the diff --git a/README.zh-CN.md b/README.zh-CN.md index 25512ca..812c32e 100644 --- a/README.zh-CN.md +++ b/README.zh-CN.md @@ -24,7 +24,7 @@ DSH Web 的界面元素按 Codex 复刻:窗口边缘的阴影与发丝线、 ## 宿主兼容性 本工作区对照 DSH `0.1.7-rc.1`(npm 全局安装)与 `0.1.7-rc.2`(Windows 桌面壳的 `app.asar`)开发; -0.6.1 的全套验收在 npm 发布的 `@deepseek-ai/dsh@0.1.7-rc.2` 上跑(夹具读它的 `node_modules` 与由它打包的 `app.asar` 各一遍, +0.7.0 的全套验收在 npm 发布的 `@deepseek-ai/dsh@0.1.7-rc.2` 上跑(夹具读它的 `node_modules` 与由它打包的 `app.asar` 各一遍, 真 GUI 用它起的 `dsh web`,见「宿主与浏览器」)。夹具直接读宿主 shipped 的 CSS 与渲染代码,宿主升级后若结构变化,夹具断言会失败。 ## 功能 @@ -43,6 +43,7 @@ DSH Web 的界面元素按 Codex 复刻:窗口边缘的阴影与发丝线、 | ②d | 右栏面板:左沿只留发丝线、影只往上泄;压掉 dockkit 的 1px 深边框 | | ②e | 右分界线拖拽柄:悬停时中段最深、两端淡出的渐变 | | ⑱ | 插件管理 → codex-ui 组合包页的设置卡:主题 / 强调色 / 背景 / 前景 / UI 字体 / 代码字体 / 半透明侧边栏 / Codex 模型选择器 / 对比度 | +| ㉑ | **设置模态框全页 Codex 化**:设置对话框换成分组侧栏(「← 返回应用」一行、按文字过滤宿主条目的搜索框、分组标题)、内容区页头、每个子页面的白卡细边与贴底保存栏。结构在 `src/client/settings-modal.js`(只用宿主锚点,宿主节点绝不移动或克隆;隐藏态靠耐久的 `data-*` 属性),外观在 `skins/codex-ink/settings-modal.css`。任何一步与宿主结构不符都只 warn 并跳过 —— 这一层会降级,绝不抛 | ## 界面 @@ -104,7 +105,7 @@ npm run build # 由 skins/codex-ink 与 src/client 重新生 node scripts/build.mjs --check # 只比对产物是否过期,不落盘 ``` -构建零依赖,只有 `scripts/build.mjs` 一份实现:八份样式去注释、作用域化到 `html[data-codex-ui]`,写出 `theme.css`; +构建零依赖,只有 `scripts/build.mjs` 一份实现:九份样式去注释、作用域化到 `html[data-codex-ui]`,写出 `theme.css`; `src/client/` 的 ES 模块按依赖顺序打成一个经典脚本 `client.js`(DSH 的 `__ModuleLoader__.load` 形态,样式内联在里面, `react` 等宿主包走 loader 给的 `require`)。只认两种 import(`import { a, b as c } from '…'`、`import * as ns from '…'`) 和三种 export(`export const | function | class`),其余写法构建直接报错,不会悄悄打错。 @@ -151,9 +152,9 @@ node scripts/build.mjs --check # 只比对产物是否过期,不落盘 | spec | 小节 | 覆盖 | 项数 | |---|---|---|---| -| `composer` | composer-shadow · hero | ⑱ 输入卡阴影对齐 Codex `--elevation-composer`(逐层几何与 alpha、暗色 inset、窄屏 80→40px、渲染像素);⑬⑭⑰ 与焦点环、顶栏两格放开 | 23 + 25 | +| `composer` | composer-shadow · hero | ⑱ 输入卡阴影**按实测像素拟合**(两层:环 + 近场;逐层几何与 alpha、暗色 inset、宽窄屏一致、渲染像素);⑬⑭⑰ 与焦点环、顶栏两格放开、徽标配色与圆角改读令牌计算值 | 21 + 25 | | `elevation` | elevation | ⑲ `--dsw-elevation-*` 与 Codex 源码对账,外加渲染出的菜单面板 | 19 | -| `model-picker` | host-menu · power-rail | ⑫ A 面宿主菜单与 pending 指示器;⑳ B 面:席位顶替与复原、几何、拖动中不提交 / 松手对齐提交一次、慢往返不回弹且转圈、键盘四键、焦点环、Escape、换模型带默认档、失败提示、reduced-motion、深色、开关 | 20 + 47 | +| `model-picker` | host-menu · power-rail | ⑫ A 面宿主菜单与 pending 指示器;⑳ B 面:席位顶替与复原、几何、拖动中不提交 / 松手对齐提交一次、慢往返不回弹且转圈、键盘四键、焦点环、Escape、换模型带默认档、失败提示、**顶档紫色点阵**(5 行、8 档色调桶、相位 hash 散开、羽化、两条关动效口子)、reduced-motion、深色、开关。假目录按**安装中的**宿主形状写(快照里没有 `pending`) | 20 + 62 | | `rightbar` | rightbar | 阴影层、右栏三件套、两条分界线 | 42 | | `sidebar` | align · surface | 侧栏列对齐;侧栏滚动渐隐(Codex mask 斜坡)的机制与逐像素 alpha | 6 + 13 | @@ -317,7 +318,7 @@ npm run verify - 顶栏两格自 0.3.0 起放开(⑬·3c),因此**会话顶栏会比参考图多出条目**:只有当会话真有子代理 / 后台 job / 预设 / 工作目录时才出现,此时它同时是"子代理在跑"的唯一可见面。取舍写在 CHANGELOG。 - `composer.css`、`patches.css`、`sidebar-align.css` 与 `sidebar-surface.css` 使用哈希类名后缀锚点(`[class$=…]`、`[class*=…]`), - 宿主没有对应 `data-*` 的位置只能如此(0.6.1:composer 10 · patches 10 · sidebar-align 9 · sidebar-surface 2)。sidebar-align 的 9 处 + 宿主没有对应 `data-*` 的位置只能如此(0.7.0 原始出现次数:composer 9 · patches 9 · sidebar-align 9 · sidebar-surface 2 · settings-modal 3)。sidebar-align 的 9 处 是同一个锚点 `_collapsed`(侧栏折叠态),替掉原先落在祖先位置的 `:has()`。`model-picker.css` 为 0。 - 选择器不把 `:has()` 放在祖先位置:会话区流式插入节点时,Chromium 要为每个受影响的祖先重配整片子树, 实测样式重算从 ~0.3s 涨到 4s 以上。剩下的 `:has()` 都在主语位置或只看直接子代;`model-picker.css` 由 `check.mjs` 强制为 0。 diff --git a/assets/screenshots/settings-page-accent.png b/assets/screenshots/settings-page-accent.png index b8b34af657808525c2a7fd1581659f814ce9fe22..6631047fe13699fe12e78dd0ec593993ee76ac01 100644 GIT binary patch literal 173405 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%0A<6$%g<5jvrZa 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 XEsMjeqEsO9=UV_#S&>R1egFRtzH)NR literal 119996 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 Db|H$+4oq%n|ZkS#U&)izZt3OJ`#T9 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

l8P<*-`G_X4*)va=wcE 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�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 F{SR2`gL41? diff --git a/assets/screenshots/settings-page-default.png b/assets/screenshots/settings-page-default.png new file mode 100644 index 0000000000000000000000000000000000000000..df764880a14cd417d026f5d708b95a436ecce779 GIT binary patch literal 168954 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 aBm{z5^~m0F!MlflkrI~|D}VRV|NjFB>V!%F literal 0 HcmV?d00001 diff --git a/assets/screenshots/settings-page-translucent.png b/assets/screenshots/settings-page-translucent.png new file mode 100644 index 0000000000000000000000000000000000000000..92da72cdb6959533bedf8a677d8a822b06ab4483 GIT binary patch literal 169876 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�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 IQC;8v4_|!uHUIzs literal 0 HcmV?d00001 diff --git a/client.js b/client.js index 1e10096..9d9aaec 100644 --- a/client.js +++ b/client.js @@ -1902,9 +1902,694 @@ function installOverride(ctx, form) { return { installSettings }; })(); +/* src/client/settings-modal.js */ +const __src_client_settings_modal = (() => { +/** + * settings-modal.js — 设置模态框的 Codex 化「结构层」(纯 DOM 操作、幂等、可降级)。 + * + * 补上宿主没有的四件东西:侧栏顶部的「← 返回应用」、搜索框、按组插入的分组标题、 + * 以及内容区顶部的页头大标题;并保证关闭重开后完整重放。 + * **视觉一律不在这里做**:新样式挂在 html[data-codex-ui] 下, + * 由 skins/codex-ink/settings-modal.css 提供,本文件只负责结构与行为。 + * + * 三条纪律(都是实测踩出来的,别改回去): + * 1. **只加不接管**。宿主导航是数据驱动的:往 DOM 里塞一个新按钮**不会**让它成为设置页 + * (侦察 §i 实测:克隆项存活、点击不崩、但既不切换选中态也不渲染内容)。 + * 所以对未知项一律只做视觉分组,绝不代它处理点击;宿主节点只打属性,不移动、不克隆、不删。 + * 2. **选择器不碰哈希类名**。宿主类名是 CSS-Modules 哈希(VOzbGW_* / oY77xG_* …,每个设置页 + * 还各有一套前缀),只用宿主自带属性(data-shortcut-modal / data-slot)/ tag / 位置索引这些稳定锚点。 + * 3. **任何一步结构不符预期就跳过并 warn,绝不抛**。宿主改版只会让这一层失效, + * 不会拖垮插件其余功能(皮肤、覆盖层、组合包页配置卡)。 + * + * 幂等性来自两处(侦察 §i 实测:**切设置项不重建 DOM,关闭再打开整棵 navList 重建**): + * · 每个注入节点都带 data-codex-ui-injected="settings-modal",创建前先查标记; + * · 观察 document.body 的 childList,overlay 被卸载/重建一次就重放一次。 + * + * ⚠ 取舍一:**顺序调整走 CSS flex order,不移动宿主节点**(任务书二选一里的前者)。 + * 侦察 §j 实测:宿主按 order 排序后渲染,重排 DOM 顺序会与 React 的 key 协调冲突、重渲染时被还原。 + * 本次探针复核:13 个 navCell 的 inline style 全为空、computed order 全为 0 —— order 是一个 + * **没有人用过**的布局槽位,所以给宿主 cell 写 style.order 是安全的(React 不认它、也不会覆盖它)。 + * 收益:宿主节点零移动,点击 / 渲染 / 第三方项进出全部原样;代价:键盘 Tab 顺序仍是 DOM 顺序, + * 视觉顺序 ≠ 焦点顺序,属已知可及性瑕疵(分组本身不改变焦点可达性,只是顺序不同)。 + * + * ⚠ 取舍二:**隐藏项用「属性 + 类名」双写**。 + * 本次探针实测(关键,比侦察报告的措辞更具体):宿主在**选中态从某一项搬走时**会把那一项的 + * className **整条重写**(oldValue "VOzbGW_navCell VOzbGW_active" → "VOzbGW_navCell"), + * 而 data-* 属性原样保留。所以: + * · 耐久标记是**属性** data-cx-sm-hidden —— CSS 必须以它为准([data-cx-sm-hidden]); + * · 类名 cx-sm-hidden 只是方便人读的冗余,**不可依赖**。 + * 补回逻辑由下面的列表观察器负责,**它必须开 subtree**(见 observeList 的注释: + * 不开 subtree 时观察器只上报被观察节点自身的属性变化,子节点的 class 改写一条都收不到, + * 实测 0 条 vs 5 条)。 + * + * ⚠ 结论(C1 与 B2 交叉验证后的定论):宿主重写 class **确实会产生 mutation 记录**, + * 只是**必须开 subtree 才收得到**。C1 早先「那次重写不产生任何 mutation 记录」的观测, + * 是 attributes 观察漏了 subtree 造成的假象,已由 probe4 双向对照证伪(同一时刻: + * 不开 subtree → 0 条;开 subtree → 5 条,含 class oldValue + * "VOzbGW_navCell VOzbGW_active cx-sm-hidden" → "VOzbGW_navCell")。 + * 因此两道保险同时成立、互为兜底: + * · CSS 以**属性** [data-cx-sm-hidden] 为准(耐久,类名被抹也不影响隐藏); + * · JS 在下一帧把类名补回(subtree 观察器驱动),供只认 .cx-sm-hidden 的样式使用。 + */ + +/* ── 稳定锚点 ─────────────────────────────────────────────────────── */ + +/** + * 设置模态框面板锚点(两条都查,前者优先): + * 1. [data-shortcut-modal="settings"] —— **宿主自己**盖在面板上的属性 + * (dsh-client-ui-primitives 的 Dialog 原语统一行为,跨包约定); + * 2. [data-dsh-surface="settings"] —— 第三方 skin-center 兼容适配器补盖的语义属性, + * 其契约文档自声明「非永久公共契约」,且**没装适配器的环境里它根本不存在** + * (整层静默失效曾在这条上翻车:PR #1 一审 C 项)。 + * 找到面板后统一补盖 PANEL_ATTR,CSS 只挂这个自有锚点 —— 以后锚点再变只动本文件。 + */ +const PANEL_SELECTOR = '[data-shortcut-modal="settings"], [data-dsh-surface="settings"]'; +/** 找到面板后补盖的自有锚点:settings-modal.css 里所有面板规则的唯一挂载点。 */ +const PANEL_ATTR = 'data-cx-sm-panel'; +/** 注入节点统一标记属性;卸载时按它一次性清干净。 */ +const ATTR = 'data-codex-ui-injected'; +/** 注入节点统一标记值。 */ +const MARK = 'settings-modal'; +/** 注入节点自报「我是哪一件」——重放时用它找回自己的节点,不靠类名。 */ +const PART_ATTR = 'data-cx-sm-part'; +/** 被搜索过滤掉的宿主项:属性是耐久标记(React 会重写 className,属性不会)。 */ +const HIDDEN_ATTR = 'data-cx-sm-hidden'; +/** 同一个隐藏态的类名,给 CSS 的现成钩子;被宿主抹掉后会被补回。 */ +const HIDDEN_CLASS = 'cx-sm-hidden'; +/** 宿主项上按组打的属性,CSS 与重放共用。 */ +const GROUP_ATTR = 'data-cx-sm-group'; +/** 兜底组 / 空结果提示的排序位:必须比任何组都大,否则 flex 默认 order:0 会把它顶到最前。 */ +const TAIL_ORDER = 999999; +/** 每个分组占据的 order 槽位数。 */ +const ORDER_STEP = 1000; + +/* ── 分组映射(两个子代理共用的唯一权威) ─────────────────────────────── */ + +const GROUPS = [ + { id: 'personal', label: '个人', items: ['账号与余额', '通用设置', '皮肤', '宠物', '使用统计'] }, + { id: 'integrations', label: '集成', items: ['内置插件', 'Web 插件', '订阅服务', '记忆系统', '创意工坊'] }, + { id: 'coding', label: '编码', items: ['模型', 'Agent 预设', 'LLM Verifier'] }, + { id: 'archive', label: '已归档', items: ['已归档会话'] }, +]; +/** + * 兜底组:映射里没有的项(第三方插件新注册的设置页、宿主将来新增的页)动态归入, + * 排在所有已知组之后;该组为空则不渲染。**绝不做硬编码白名单**——这正是用户那条硬约束。 + */ +const OTHER_GROUP = { id: 'other', label: '其他' }; +/** 标签(小写、去空白)→ 组 id。 */ +const GROUP_OF_LABEL = new Map(); +/** + * 组 id → { 标签 → 组内名次 }。 + * **组内顺序以映射表的 items 数组为准,不沿用宿主的注册顺序** —— 映射表是唯一权威。 + * 实测差异就在「集成」组:宿主按 order 渲染出来是 + * 内置插件 / 记忆系统 / 订阅服务 / Web 插件 / 创意工坊,映射表要的是 + * 内置插件 / Web 插件 / 订阅服务 / 记忆系统 / 创意工坊。 + * 兜底组没有名次表,保持宿主原序(未知项只做视觉归拢,不替它决定位置)。 + */ +const GROUP_RANK = new Map(); +for (const group of GROUPS) { + const rank = new Map(); + group.items.forEach((item, index) => rank.set(item.trim().toLowerCase(), index)); + GROUP_RANK.set(group.id, rank); + for (const item of group.items) GROUP_OF_LABEL.set(item.trim().toLowerCase(), group.id); +} +/** 渲染顺序:已知组按 GROUPS 顺序,兜底组永远最后。 */ +const GROUP_SEQUENCE = [...GROUPS, OTHER_GROUP]; + +/* ── 小工具 ───────────────────────────────────────────────────────── */ + +/** 归一化标签:去掉首尾空白并压掉内部连续空白后小写。 */ +const normalizeLabel = (text) => String(text).replace(/\s+/g, ' ').trim().toLowerCase(); + +/** 只警告一次,避免宿主改版时把控制台刷满。 */ +const warnOnce = (() => { + const seen = new Set(); + return (key, ...rest) => { + if (seen.has(key)) return; + seen.add(key); + console.warn('[codex-ui] 设置模态框:' + key, ...rest); + }; +})(); + +/** 写属性,值没变就不写(避免自己把自己的观察器喂成死循环)。 */ +function setAttr(el, name, value) { + if (el.getAttribute(name) !== value) el.setAttribute(name, value); +} + +/** 摘属性,本来就没有就不写。 */ +function dropAttr(el, name) { + if (el.hasAttribute(name)) el.removeAttribute(name); +} + +/** 设置 inline order,值没变就不写。 */ +function setOrder(el, value) { + const next = String(value); + if (el.style.order !== next) el.style.order = next; +} + +/** 按 PART_ATTR 在直接子节点里找回自己注入的那一件。 */ +const findPart = (parent, part) => + Array.prototype.find.call(parent.children, (el) => el !== null && el.getAttribute(PART_ATTR) === part) ?? null; + +/** 造一个带标记的注入节点。 */ +function makeNode(tag, className, part, text) { + const el = document.createElement(tag); + el.className = className; + el.setAttribute(ATTR, MARK); + if (part !== null && part !== undefined) el.setAttribute(PART_ATTR, part); + if (text !== undefined && text !== null) el.textContent = text; + return el; +} + +/** navList 里哪些是宿主项:没带我们标记的直接子节点。 */ +const hostChildren = (list) => Array.prototype.filter.call(list.children, (el) => el.getAttribute(ATTR) !== MARK); + +/** + * 取宿主项的可见文本。 + * 固定结构是 (侦察 §b 实测 13 项无例外); + * 但**不把它当硬契约**:拿不到就退到最后一个 span,再不行退到 textContent。 + */ +function cellLabel(cell) { + const kids = cell.children; + if (kids.length === 2 && kids[0].tagName === 'SVG' && kids[1].tagName === 'SPAN') return kids[1].textContent.trim(); + const last = kids.length > 0 ? kids[kids.length - 1] : null; + if (last !== null && last.tagName === 'SPAN') return last.textContent.trim(); + return cell.textContent.trim(); +} + +/** 标签 → 组 id;匹配不上就是兜底组。 */ +const groupOfLabel = (label) => GROUP_OF_LABEL.get(normalizeLabel(label)) ?? OTHER_GROUP.id; + +/* ── 面板定位(全部走稳定锚点,找不到就返回 null) ────────────────────── */ + +/** 找设置面板并补盖自有锚点(幂等);不在 DOM 里返回 null。 */ +function findPanel() { + const panel = document.querySelector(PANEL_SELECTOR); + if (panel !== null && panel !== undefined) { + setAttr(panel, PANEL_ATTR, ''); + return panel; + } + /* 设置界面确实开着(设置分区槽已在 DOM 里)却一个锚点都匹配不到 —— 这是整层静默失效的 + 唯一路径(宿主改版 / 锚点改名),必须显式警告。设置关着时锚点不在是正常的,不警告。 */ + if (document.querySelector('[data-slot="settings.section"]') !== null) { + warnOnce('设置界面开着,但两个面板锚点(data-shortcut-modal / data-dsh-surface)都没匹配到 —— 结构层本次失效,宿主可能改版了'); + } + return null; +} + +/** 面板的直接子节点里的侧栏 nav。 */ +function findNav(panel) { + return Array.prototype.find.call(panel.children, (el) => el.tagName === 'NAV') ?? null; +} + +/** + * 侧栏里的设置项列表容器。 + * 侦察 §a 实测 nav.children = [navTitle, navList],且 navList 恒为最后一个子节点; + * 我们往 nav 里插的都是**前置**节点,所以「最后一个元素子节点」这条判据在我们注入后依然成立。 + */ +function findList(nav) { + const kids = Array.prototype.filter.call(nav.children, (el) => el.getAttribute(ATTR) !== MARK); + const last = kids.length > 0 ? kids[kids.length - 1] : null; + if (last === null || last.tagName !== 'DIV') { + warnOnce('找不到侧栏列表容器(nav 的最后一个子节点不是 div),本次跳过注入', nav); + return null; + } + return last; +} + +/* ── 主流程 ───────────────────────────────────────────────────────── */ + +/** 当前那一次安装的会话;热重载重复安装时先撤旧的。 */ +let active = null; + +/** + * 装上设置模态框的结构层。 + * @param ctx - 客户端上下文(只用它的 effect 做卸载回收,没有也能跑,只是不回收)。 + * @returns {() => void} 卸载函数(幂等;重复调用无副作用)。 + */ +function installSettingsModal(ctx) { + if (typeof document === 'undefined' || document === null) return () => {}; + if (active !== null) { + try { active.dispose(); } catch { /* 撤不干净也不能阻断新的一次安装 */ } + active = null; + } + + const rootNode = document.body !== null && document.body !== undefined ? document.body : document.documentElement; + /** 当前挂着的 navList;换了一棵就重新挂列表观察器。 */ + let observedList = null; + /** 当前 navList 上的轻量观察器(只跟直接子节点,不深扫)。 */ + let listObserver = null; + /** 一个待执行的 rAF 句柄。 */ + let pending = null; + let disposed = false; + + /** 下一帧跑一次;已经有了就不重复排。 */ + const schedule = (fn) => { + if (pending !== null || disposed) return; + pending = requestAnimationFrame(() => { + pending = null; + if (disposed) return; + try { fn(); } catch (error) { warnOnce('重放时出错(已吞掉,不影响宿主)', error); } + }); + }; + + /* ── 侧栏顶部:「← 返回应用」+ 搜索框 ─────────────────────────────── */ + + /** 派发一次 Escape,走宿主自己的关闭路径。 */ + function pressEscape() { + const target = document.activeElement !== null && document.activeElement !== document.body + ? document.activeElement + : document.body; + const init = { key: 'Escape', code: 'Escape', keyCode: 27, which: 27, bubbles: true, cancelable: true }; + let event; + try { + event = new KeyboardEvent('keydown', init); + } catch (error) { + /* 老宿主没有 KeyboardEvent 构造器:造一个普通的、把 key 挂上去。 */ + event = new Event('keydown', { bubbles: true, cancelable: true }); + event.key = 'Escape'; + } + target.dispatchEvent(event); + } + + /** 结构上的关闭按钮:侦察 §d 实测 [data-slot="settings.close"] 嵌在按钮内部的 span 里。 */ + function closeButton(panel) { + const seat = panel.querySelector('[data-slot="settings.close"]'); + const button = seat === null || seat === undefined ? null : seat.closest('button'); + return button; + } + + /** + * 关闭设置:优先派发 Escape(侦察实测可用),没关掉再兜底点宿主的关闭按钮。 + * 绝不自己 display:none 藏模态 —— 那会让宿主的状态与界面脱节。 + */ + function requestClose(panel) { + pressEscape(); + requestAnimationFrame(() => requestAnimationFrame(() => { + if (disposed) return; + if (findPanel() !== null) return; /* Escape 生效了 */ + const button = closeButton(panel); + if (button === null) { + warnOnce('Escape 没关掉设置,也找不到结构上的关闭按钮,放弃关闭', panel); + return; + } + button.click(); + })); + } + + /** 建「← 返回应用」。 */ + function makeBack(panel) { + const back = makeNode('div', 'cx-sm-back', 'back'); + back.setAttribute('role', 'button'); + back.setAttribute('tabindex', '0'); + back.setAttribute('aria-label', '返回应用'); + const arrow = makeNode('span', 'cx-sm-back-icon', null, '\u2190'); + arrow.setAttribute('aria-hidden', 'true'); + const text = makeNode('span', 'cx-sm-back-text', null, '返回应用'); + back.appendChild(arrow); + back.appendChild(text); + back.addEventListener('click', () => requestClose(panel)); + back.addEventListener('keydown', (event) => { + if (event.key !== 'Enter' && event.key !== ' ' && event.key !== 'Spacebar') return; + event.preventDefault(); + requestClose(panel); + }); + return back; + } + + /** 建搜索框。只过滤,不拦事件:input 上的监听器只服务它自己。 */ + function makeSearch(makeFilter) { + const box = makeNode('div', 'cx-sm-search', 'search'); + const input = makeNode('input', 'cx-sm-search-input', 'search-input'); + input.setAttribute('type', 'search'); + input.setAttribute('placeholder', '搜索设置...'); + input.setAttribute('aria-label', '搜索设置'); + input.setAttribute('autocomplete', 'off'); + input.setAttribute('spellcheck', 'false'); + const run = () => makeFilter(input.value); + input.addEventListener('input', run); + input.addEventListener('search', run); /* type=search 的原生清除按钮走这条 */ + input.addEventListener('change', run); + box.appendChild(input); + return box; + } + + /** 重新取一次宿主项(列表变了之后 cells 会过期)。 */ + const cellsFrom = (list) => Array.prototype.filter.call( + list.children, + (el) => el.getAttribute(ATTR) !== MARK && el.tagName === 'BUTTON', + ); + + /* ── 分组:按组插标题 + 用 flex order 排顺序 ──────────────────────── */ + + /** + * 同步分组标题与顺序。**只写属性与 inline order,不移动任何宿主节点。** + * @param list - navList。 + * @param cells - 宿主项(保持 DOM 顺序)。 + */ + function syncGroups(list, cells) { + if (cells.length === 0) return; + const buckets = new Map([[OTHER_GROUP.id, []]]); + for (const group of GROUPS) buckets.set(group.id, []); + cells.forEach((cell, domIndex) => { + const label = cellLabel(cell); + const id = groupOfLabel(label); + setAttr(cell, GROUP_ATTR, id); + buckets.get(id).push({ cell, domIndex, label }); + }); + /* 已知组按映射表名次排;表里没写到的(不该有,防御性)排在该组末尾,再按宿主原序。 */ + for (const group of GROUPS) { + const rank = GROUP_RANK.get(group.id); + const members = buckets.get(group.id); + members.sort((a, b) => { + const ra = rank.get(normalizeLabel(a.label)) ?? Number.MAX_SAFE_INTEGER; + const rb = rank.get(normalizeLabel(b.label)) ?? Number.MAX_SAFE_INTEGER; + return ra - rb || a.domIndex - b.domIndex; + }); + } + /* 空组不渲染 —— 「账号与余额」未登录时缺位,组里其余项照常。 */ + const rendered = GROUP_SEQUENCE.filter((group) => buckets.get(group.id).length > 0); + + let slot = ORDER_STEP; + const liveHeaders = new Set(); + for (const group of rendered) { + const members = buckets.get(group.id); + const first = members[0].cell; + let header = findPart(list, 'group:' + group.id); + if (header === null) { + header = makeNode('div', 'cx-sm-group', 'group:' + group.id, group.label); + header.setAttribute(GROUP_ATTR, group.id); + header.setAttribute('aria-hidden', 'true'); + list.insertBefore(header, first); + } else { + /* 标题是自己的节点,可以自由移动:只在位置不对时才动。 + 宿主项一个都不动 —— 组内顺序全靠下面的 flex order 实现。 */ + if (header.nextElementSibling !== first) list.insertBefore(header, first); + if (header.textContent !== header.getAttribute('data-cx-sm-label')) header.textContent = group.label; + } + setAttr(header, 'data-cx-sm-label', group.label); + liveHeaders.add(header); + setAttr(header, GROUP_ATTR, group.id); + setOrder(header, slot); + slot += 1; + for (const member of members) setOrder(member.cell, slot++); + slot = Math.ceil(slot / ORDER_STEP) * ORDER_STEP; + } + /* 已经不该渲染的组标题(组内项被插件摘走了)撤掉。 */ + for (const el of Array.prototype.slice.call(list.children)) { + if (el.getAttribute(ATTR) !== MARK) continue; + if (!String(el.getAttribute(PART_ATTR)).startsWith('group:')) continue; + if (!liveHeaders.has(el)) el.remove(); + } + } + + /* ── 页头大标题:Codex 的「大标题 + 页级操作」───────────────────── */ + + /** + * 内容列:面板里除侧栏之外的最后一个直接子节点。 + * 侦察 §a 实测面板 children = [nav, content],content 恒为最后一个。 + */ + function findContent(panel) { + const kids = Array.prototype.filter.call( + panel.children, + (el) => el.tagName !== 'NAV' && el.getAttribute(ATTR) !== MARK, + ); + const last = kids.length > 0 ? kids[kids.length - 1] : null; + if (last === null || last.tagName !== 'DIV') { + warnOnce('找不到内容列(面板最后一个子节点不是 div),本次跳过页头', panel); + return null; + } + return last; + } + + /** + * 内容列顶部的 header 行。 + * 判据用**语义座位**而不是位置:里面装着 [data-slot="settings.action"](宿主唯一稳定的动作座位,侦察 §d)。 + * 判据不成立就返回 null,调用方降级到「插在 options 之前」。 + */ + function findHeader(content) { + return Array.prototype.find.call( + content.children, + (el) => el.getAttribute(ATTR) !== MARK && el.querySelector('[data-slot="settings.action"]') !== null, + ) ?? null; + } + + /** 设置页正文容器(滚动区):装着设置页座位 [data-slot="settings.section"] 的那个子节点。 */ + function findOptions(content, header) { + const rest = Array.prototype.filter.call( + content.children, + (el) => el !== header && el.getAttribute(ATTR) !== MARK, + ); + return rest.find((el) => el.querySelector('[data-slot="settings.section"]') !== null) ?? rest[0] ?? null; + } + + /** + * 当前激活项的标签。 + * 选中态 = aria-current="true":宿主自己的语义属性(侦察 §b 实测),比哈希类名稳。 + * 兜底顺序:aria-current → data-modal-autofocus → 第一项。 + */ + function activeLabel(cells) { + const pick = (pred) => { + for (const cell of cells) if (pred(cell)) return cellLabel(cell); + return null; + }; + return pick((cell) => cell.getAttribute('aria-current') === 'true') + ?? pick((cell) => cell.hasAttribute('data-modal-autofocus')) + ?? (cells.length > 0 ? cellLabel(cells[0]) : null); + } + + /** 建页头:div.cx-sm-pagehead > div.cx-sm-title(形态对齐 settings-modal.css §3.2)。 */ + function makePagehead() { + const head = makeNode('div', 'cx-sm-pagehead', 'pagehead'); + head.appendChild(makeNode('div', 'cx-sm-title', 'pagehead-title')); + return head; + } + + /** + * 同步页头:位置 + 标题文本。 + * 首选挂在 header 行的**最左侧**(与右上角「打开配置文件 ×」同一行,正对 Codex 的 + * 「大标题 + 页级操作」);header 判据不成立时降级为插在 options 之前;两者都不成立就 warn 跳过。 + */ + function syncPagehead(panel, content, cells) { + const header = findHeader(content); + let target = null; + let before = null; + if (header !== null) { + target = header; + before = header.firstChild; + } else { + const options = findOptions(content, null); + if (options !== null) { + warnOnce('设置面板的 header 行判据不成立,页头降级插在 options 之前', content); + target = content; + before = options; + } + } + if (target === null) { + warnOnce('找不到能挂页头的位置,本次跳过(只是没有大标题,其余注入照常)', content); + return; + } + let head = panel.querySelector('[' + PART_ATTR + '="pagehead"]'); + if (head === null) { + head = makePagehead(); + target.insertBefore(head, before); + } else if (head.parentNode !== target) { + /* 只搬自己的节点,宿主节点一个不动。 */ + target.insertBefore(head, before); + } + const title = findPart(head, 'pagehead-title'); + const label = activeLabel(cells); + if (title !== null && label !== null && title.textContent !== label) title.textContent = label; + } + + /* ── 搜索过滤:只加显隐,不移除/替换宿主节点 ──────────────────────── */ + + /** 写隐藏态;值没变就不写(否则会把自己的观察器喂成死循环)。 */ + function setHidden(el, hidden) { + if (hidden) { + setAttr(el, HIDDEN_ATTR, ''); + if (!el.classList.contains(HIDDEN_CLASS)) el.classList.add(HIDDEN_CLASS); + } else { + dropAttr(el, HIDDEN_ATTR); + if (el.classList.contains(HIDDEN_CLASS)) el.classList.remove(HIDDEN_CLASS); + } + } + + /** + * 按 query 过滤侧栏项。空查询 = 全部恢复。 + * @param list - navList。 + * @param query - 搜索框当前值。 + */ + function applyFilter(list, query) { + const cells = cellsFrom(list); + const needle = normalizeLabel(query); + const visible = new Map(); + for (const cell of cells) { + const hit = needle === '' || cellLabel(cell).toLowerCase().includes(needle); + setHidden(cell, !hit); + if (hit) { + const id = cell.getAttribute(GROUP_ATTR) ?? OTHER_GROUP.id; + visible.set(id, (visible.get(id) ?? 0) + 1); + } + } + /* 空分组标题也隐藏:标题的可见性只跟「这一组还有没有命中项」有关。 */ + for (const el of Array.prototype.slice.call(list.children)) { + if (el.getAttribute(ATTR) !== MARK) continue; + if (!String(el.getAttribute(PART_ATTR)).startsWith('group:')) continue; + setHidden(el, (visible.get(el.getAttribute(GROUP_ATTR)) ?? 0) === 0); + } + /* 无结果提示:.cx-sm-empty 只在「有查询且一项都没命中」时露出来; + 顺序上也必须钉在最后——flex 默认 order:0,不写这一条它会被排到分组前面去。 */ + let total = 0; + for (const count of visible.values()) total += count; + const needed = needle !== '' && total === 0; + let empty = findPart(list, 'empty'); + if (needed && empty === null) { + empty = makeNode('div', 'cx-sm-empty', 'empty', '没有匹配的设置项'); + empty.setAttribute('role', 'status'); + list.appendChild(empty); + } + if (empty !== null) { + setOrder(empty, TAIL_ORDER); + setHidden(empty, !needed); + } + } + + /* ── 注入 / 重放 ─────────────────────────────────────────────────── */ + + /** + * 把当前 navList 挂上观察器。它一处扛三件事: + * ① 列表增删 —— 插件热插拔设置项时重跑分组与「其他」兜底组; + * ② 补回被宿主抹掉的 cx-sm-hidden 类名(耐久标记仍是属性,类名只是给 CSS 的便利钩子); + * ③ **切项时刷新页头标题** —— 宿主把选中态从一项搬到另一项时写的就是 class + aria-current。 + * + * ⚠ **subtree 是必需项,不是优化**(probe4 双向对照实测): + * MutationObserver 不开 subtree 时,只上报被观察节点自己的属性变化; + * navCell 是 navList 的子节点,它们的 class / aria-current 改写一条都收不到 —— + * 同一时刻不开 subtree 收 0 条、开 subtree 收 5 条。 + * 漏掉它的表现是静默失效:aria-current 变了、页头标题纹丝不动,其余功能全部正常。 + * + * 不会自激:本文件写自己的属性一律「值没变就不写」(setAttr / setOrder / setHidden), + * 且 attributeFilter 只认 class 与 aria-current —— 我们自己从不写 aria-current, + * 也只在隐藏态真的翻转时才动 class,第一轮之后没有新 mutation 可喂给自己(实测收敛)。 + */ + function observeList(list) { + if (observedList === list && listObserver !== null) return; + if (listObserver !== null) listObserver.disconnect(); + observedList = list; + listObserver = new MutationObserver(() => schedule(inject)); + listObserver.observe(list, { + childList: true, + subtree: true, + attributes: true, + attributeFilter: ['class', 'aria-current'], + }); + } + + /** + * 重放:找面板 → 补侧栏顶部两件 → 同步分组 → 重挂过滤。 + * 每一步都自带「已经在了就跳过」,所以重复跑不会叠加节点。 + */ + function inject() { + const panel = findPanel(); + if (panel === null) { + /* 面板没了:列表观察器跟着失效,断开等下一次重放。 */ + if (listObserver !== null) { listObserver.disconnect(); listObserver = null; observedList = null; } + return; + } + const nav = findNav(panel); + if (nav === null) { + warnOnce('设置面板里没有侧栏 nav,本次跳过注入', panel); + return; + } + const list = findList(nav); + if (list === null) return; + const cells = cellsFrom(list); + if (cells.length === 0) { + warnOnce('侧栏列表里一个设置项都没有,本次跳过分组', list); + return; + } + /* 结构自检:宿主项本该都是 button。出现别的就跳过它,只 warn 不抛。 */ + for (const el of hostChildren(list)) { + if (el.tagName !== 'BUTTON') warnOnce('侧栏列表里出现了非 button 的子节点,已跳过它(宿主可能改版了)', el); + } + + /* 返回按钮与搜索框:都放在 nav 的最前面(返回在最上,搜索在它下面)。 + 它们排在宿主的「设置」标题之前 —— 只加不挪,宿主原有节点一个不动。 */ + let back = findPart(nav, 'back'); + if (back === null) { + back = makeBack(panel); + nav.insertBefore(back, nav.firstChild); + } + let search = findPart(nav, 'search'); + if (search === null) { + search = makeSearch((value) => { + const current = findList(nav); + if (current !== null) applyFilter(current, value); + }); + nav.insertBefore(search, back.nextSibling); + } + + syncGroups(list, cells); + const content = findContent(panel); + if (content !== null) syncPagehead(panel, content, cells); + const input = findPart(search, 'search-input'); + applyFilter(list, input !== null ? input.value : ''); + observeList(list); + } + + /* ── 观察 body:面板被卸载/重建时重放 ─────────────────────────────── */ + + /* subtree 按任务书开着(防宿主将来给 overlay 套一层壳),但回调里只认 target 就是 body 的 + childList 记录 —— 宿主 overlay 是 body 的直接子节点(侦察 §a + 本次探针复核), + 所以这一条 O(1) 过滤会把页面上其它所有 mutation 全部丢掉,不做任何 DOM 查询。 */ + const bodyObserver = new MutationObserver((records) => { + for (const record of records) { + if (record.type !== 'childList') continue; + if (record.target !== rootNode) continue; + schedule(inject); + return; + } + }); + bodyObserver.observe(rootNode, { childList: true, subtree: true }); + + inject(); + + const dispose = () => { + if (disposed) return; + disposed = true; + if (pending !== null) { cancelAnimationFrame(pending); pending = null; } + if (listObserver !== null) { listObserver.disconnect(); listObserver = null; } + bodyObserver.disconnect(); + observedList = null; + /* 注入节点一律带标记,一次清干净;宿主节点只把「我们写上去的那几个属性」摘掉。 */ + for (const el of Array.prototype.slice.call(document.querySelectorAll('[' + ATTR + '="' + MARK + '"]'))) el.remove(); + for (const el of Array.prototype.slice.call(document.querySelectorAll('[' + GROUP_ATTR + ']'))) { + dropAttr(el, GROUP_ATTR); + el.style.removeProperty('order'); + } + for (const el of Array.prototype.slice.call(document.querySelectorAll('[' + HIDDEN_ATTR + ']'))) { + dropAttr(el, HIDDEN_ATTR); + el.classList.remove(HIDDEN_CLASS); + } + if (active !== null && active.dispose === dispose) active = null; + }; + + if (typeof ctx.effect === 'function') { + ctx.effect(() => dispose, 'codex-ui: settings modal'); + } else { + console.warn('[codex-ui] ctx.effect 不可用:设置模态框结构层已挂上,但不会随 fiber 卸载回收。'); + } + + active = { dispose }; + return dispose; +} +return { installSettingsModal }; +})(); + /* codex-ui:theme.css */ const __codex_ui_theme_css = (() => { -const THEME_CSS = "html[data-codex-ui],\nhtml[data-codex-ui] body {\n color-scheme: light;\n\n background-color: #ffffff;\n\n --dsw-alias-bg-base: #ffffff;\n\n --dsw-alias-bg-sidebar: #f6f6f6;\n --dsw-alias-bg-layer-1: #ffffff;\n --dsw-alias-bg-layer-2: #f1f1ef;\n --dsw-alias-bg-layer-3: #e5e5e5;\n --dsw-alias-bg-overlay: rgba(255, 255, 255, 0.88);\n --dsw-alias-bg-module-platform: #f9f9f9;\n --dsw-alias-bg-multi-select: #e5e5e5;\n --dsw-alias-bg-skeleton: rgba(13, 13, 13, 0.05);\n\n --dsw-alias-border-l1: rgba(13, 13, 13, 0.07);\n --dsw-alias-border-l2: rgba(13, 13, 13, 0.12);\n --dsw-alias-border-l3: rgba(13, 13, 13, 0.18);\n --dsw-alias-border-l4: rgba(13, 13, 13, 0.24);\n --dsw-alias-border-l2-darkmode-thin: rgba(13, 13, 13, 0.09);\n\n --dsw-alias-label-primary: #1a1c1f;\n --dsw-alias-label-primary-dimmed: #5d5d5d;\n --dsw-alias-label-primary-inverted: #ffffff;\n --dsw-alias-label-primary-foreground: #ffffff;\n --dsw-alias-label-primary-bluish: #0d0d0d;\n --dsw-alias-label-secondary: #5d5d5d;\n --dsw-alias-label-tertiary: #767676;\n --dsw-alias-label-caption: #767676;\n --dsw-alias-label-dimmed: #c9c9c9;\n\n --dsw-alias-brand-primary: #0d0d0d;\n --dsw-alias-brand-primary-invert: #ffffff;\n --dsw-alias-brand-text: #ffffff;\n --dsw-alias-brand-primary-new-colorprimary-new-color: #0d0d0d;\n --dsw-alias-link: #339cff;\n\n --dsw-alias-button-primary-fill: #0d0d0d;\n --dsw-alias-button-primary-hover: #2a2a2a;\n --dsw-alias-button-primary-dimmed: #e5e5e5;\n --dsw-alias-button-contrast-fill: #0d0d0d;\n --dsw-alias-button-elevated-fill: #ffffff;\n --dsw-alias-button-floating-fill: #ffffff;\n --dsw-alias-button-floating-hover: #f1f1ef;\n --dsw-alias-button-ghost-active-fill: #e5e5e5;\n --dsw-alias-button-ghost-active-hover: #dcdcdc;\n --dsw-alias-button-ghost-active-border: #8f8f8f;\n --dsw-alias-button-info-fill: #0d0d0d;\n --dsw-alias-button-info-hover: #2a2a2a;\n --dsw-alias-button-tool-bar-fill: rgba(13, 13, 13, 0.28);\n --dsw-alias-button-tool-bar-fill-invisible: rgba(13, 13, 13, 0.18);\n --dsw-alias-button-tool-bar-hover: rgba(13, 13, 13, 0.36);\n\n --dsw-alias-interactive-bg-hover: rgba(13, 13, 13, 0.04);\n --dsw-codex-hover-fill: #f2f2f3;\n --dsw-codex-focus: #339cff;\n\n --dsw-focus-ring-color: var(--dsw-codex-focus);\n\n --dsw-codex-border: rgba(13, 13, 13, 0.1);\n --dsw-codex-border-strong: rgba(13, 13, 13, 0.15);\n --dsw-alias-interactive-bg-active: rgba(13, 13, 13, 0.08);\n --dsw-alias-interactive-bg-hover-solid: #f1f1ef;\n --dsw-alias-interactive-bg-hover-accent: rgba(13, 13, 13, 0.06);\n --dsw-alias-interactive-bg-hover-danger: rgba(209, 36, 47, 0.08);\n\n --dsw-alias-markdown-code-block: #f1f1ef;\n --dsw-alias-markdown-code-block-banner: #e5e5e5;\n --dsw-alias-markdown-inline-code: #f1f1ef;\n --dsw-alias-markdown-code-segment-selected: #ffffff;\n --dsw-alias-markdown-code-segment-unselected: #f1f1ef;\n --dsw-alias-markdown-citation: #f1f1ef;\n --dsw-alias-markdown-placeholder: #e5e5e5;\n --dsw-alias-markdown-tag: #f1f1ef;\n\n --dsw-alias-state-success-primary: #1a7f37;\n --dsw-alias-state-success-secondary: #2e9e4c;\n --dsw-alias-state-success-tertiary: rgba(26, 127, 55, 0.08);\n --dsw-alias-state-error-primary: #d1242f;\n --dsw-alias-state-error-secondary: #e5484d;\n --dsw-alias-state-error-tertiary: rgba(209, 36, 47, 0.08);\n --dsw-alias-state-warn-primary: #8f5f00;\n --dsw-alias-state-warn-secondary: #bb8009;\n --dsw-alias-state-warn-tertiary: rgba(143, 95, 0, 0.08);\n --dsw-alias-state-warn-label: #8f5f00;\n --dsw-alias-state-business-primary: #0d0d0d;\n --dsw-alias-state-business-tertiary: rgba(13, 13, 13, 0.08);\n --dsw-alias-state-idle-primary: #767676;\n\n --dsw-alias-code-diff-added: rgba(26, 127, 55, 0.1);\n --dsw-alias-code-diff-deleted: rgba(209, 36, 47, 0.1);\n --dsw-alias-file-diff-added-bg: #e6f4e7;\n --dsw-alias-file-diff-added-gutter: #edf7ed;\n --dsw-alias-file-diff-added-marker: #1a7f37;\n --dsw-alias-file-diff-deleted-bg: #fce6e2;\n --dsw-alias-file-diff-deleted-gutter: #fdece9;\n --dsw-alias-file-diff-deleted-marker: #d1242f;\n\n --dsw-alias-bg-mask-drop: rgba(255, 255, 255, 0.7);\n --dsw-alias-toast-bg: #1e1e1e;\n --dsw-alias-tooltip-bg: #1e1e1e;\n --dsw-alias-tooltip-fg: #ffffff;\n --dsw-alias-hovercard-bg: #ffffff;\n\n --dsw-alias-scrollbar-bg-l1: rgba(118, 118, 118, 0.3);\n --dsw-alias-scrollbar-bg-l2: rgba(118, 118, 118, 0.5);\n --dsw-alias-scrollbar-hover-l1: rgba(13, 13, 13, 0.35);\n --dsw-alias-scrollbar-hover-l2: rgba(13, 13, 13, 0.5);\n\n --dsw-specific-sidebar-fill: #f6f6f6;\n --dsw-specific-sidebar-nav-item-hover: #f0f0f0;\n --dsw-specific-sidebar-nav-item-active: #e9e9e9;\n --dsw-specific-sidebar-nav-item-active-accent: rgba(13, 13, 13, 0.1);\n --dsw-specific-input-major: #ffffff;\n --dsw-composer-surface: #ffffff;\n --dsw-specific-login-input: #f9f9f9;\n --dsw-specific-menu: rgba(255, 255, 255, 0.88);\n --dsw-specific-selector: #f1f1ef;\n --dsw-specific-bubble: #f1f1ef;\n --dsw-specific-bubble-highlight: #e5e5e5;\n --dsw-specific-tip: #f1f1ef;\n\n --dsw-shadow-lv1: 0 1px 2px rgba(13, 13, 13, 0.06);\n --dsw-shadow-lv2: 0 2px 8px rgba(13, 13, 13, 0.08);\n --dsw-shadow-lv3: 0 8px 24px rgba(13, 13, 13, 0.1);\n --dsw-linear-gradient-think: linear-gradient(180deg, #ffffff 20.19%, rgba(255, 255, 255, 0) 100%);\n --dsw-linear-think-select: linear-gradient(180deg, #f1f1ef 20.19%, rgba(241, 241, 239, 0) 100%);\n\n --dsw-codex-ambient: rgba(13, 13, 13, 0.05);\n --dsw-codex-menu-shadow: 0 8px 32px rgba(13, 13, 13, 0.13), 0 0 0 1px rgba(13, 13, 13, 0.04);\n --dsw-codex-suggest-shadow: 0 8px 32px #0002, 0 0 0 1px #0000000a;\n --dsw-codex-suggest-fill: #fff;\n}\n\nhtml[data-codex-ui-switching] *,\nhtml[data-codex-ui-switching] *::before,\nhtml[data-codex-ui-switching] *::after {\n transition: none !important;\n}\n\nhtml[data-codex-ui]:has(body[data-ds-dark-theme]) {\n background-color: #111111;\n}\n\nhtml[data-codex-ui] body[data-ds-dark-theme] {\n color-scheme: dark;\n background-color: #111111;\n\n --dsw-alias-bg-base: #111111;\n --dsw-alias-bg-sidebar: #0f0f0f;\n --dsw-alias-bg-layer-1: #212121;\n --dsw-alias-bg-layer-2: #282828;\n --dsw-alias-bg-layer-3: #303030;\n --dsw-alias-bg-overlay: rgba(24, 24, 24, 0.88);\n --dsw-alias-bg-module-platform: #1f1f1f;\n --dsw-alias-bg-multi-select: #303030;\n --dsw-alias-bg-skeleton: rgba(255, 255, 255, 0.07);\n\n --dsw-alias-border-l1: rgba(255, 255, 255, 0.08);\n --dsw-alias-border-l2: rgba(255, 255, 255, 0.14);\n --dsw-alias-border-l3: rgba(255, 255, 255, 0.2);\n --dsw-alias-border-l4: rgba(255, 255, 255, 0.26);\n --dsw-alias-border-l2-darkmode-thin: rgba(255, 255, 255, 0.1);\n\n --dsw-alias-label-primary: #ffffff;\n --dsw-alias-label-primary-dimmed: #b4b4b4;\n --dsw-alias-label-primary-inverted: #0d0d0d;\n --dsw-alias-label-primary-foreground: #0d0d0d;\n --dsw-alias-label-primary-bluish: #ececec;\n --dsw-alias-label-secondary: #b4b4b4;\n --dsw-alias-label-tertiary: #949494;\n --dsw-alias-label-caption: #949494;\n --dsw-alias-label-dimmed: #4a4a4a;\n\n --dsw-alias-brand-primary: #ffffff;\n --dsw-alias-brand-primary-invert: #0d0d0d;\n --dsw-alias-brand-text: #0d0d0d;\n --dsw-alias-brand-primary-new-colorprimary-new-color: #ffffff;\n --dsw-alias-link: #0169cc;\n\n --dsw-alias-button-primary-fill: #ffffff;\n --dsw-alias-button-primary-hover: #d9d9d9;\n --dsw-alias-button-primary-dimmed: #282828;\n --dsw-alias-button-contrast-fill: #ececec;\n --dsw-alias-button-elevated-fill: #212121;\n --dsw-alias-button-floating-fill: #1f1f1f;\n --dsw-alias-button-floating-hover: #282828;\n --dsw-alias-button-ghost-active-fill: #303030;\n --dsw-alias-button-ghost-active-hover: #383838;\n --dsw-alias-button-ghost-active-border: #7e7e7e;\n --dsw-alias-button-info-fill: #ffffff;\n --dsw-alias-button-info-hover: #d9d9d9;\n --dsw-alias-button-tool-bar-fill: rgba(255, 255, 255, 0.22);\n --dsw-alias-button-tool-bar-fill-invisible: rgba(255, 255, 255, 0.16);\n --dsw-alias-button-tool-bar-hover: rgba(255, 255, 255, 0.28);\n\n --dsw-alias-interactive-bg-hover: rgba(255, 255, 255, 0.06);\n --dsw-codex-hover-fill: rgba(255, 255, 255, 0.08);\n --dsw-codex-focus: rgba(51, 156, 255, 0.7);\n --dsw-codex-border: rgba(255, 255, 255, 0.12);\n --dsw-codex-border-strong: rgba(255, 255, 255, 0.2);\n --dsw-alias-interactive-bg-active: rgba(255, 255, 255, 0.1);\n --dsw-alias-interactive-bg-hover-solid: #282828;\n --dsw-alias-interactive-bg-hover-accent: rgba(255, 255, 255, 0.08);\n --dsw-alias-interactive-bg-hover-danger: rgba(248, 81, 73, 0.12);\n\n --dsw-alias-markdown-code-block: #1f1f1f;\n --dsw-alias-markdown-code-block-banner: #141414;\n --dsw-alias-markdown-inline-code: #282828;\n --dsw-alias-markdown-code-segment-selected: #303030;\n --dsw-alias-markdown-code-segment-unselected: #1f1f1f;\n --dsw-alias-markdown-citation: #212121;\n --dsw-alias-markdown-placeholder: #282828;\n --dsw-alias-markdown-tag: #282828;\n\n --dsw-alias-state-success-primary: #3fb950;\n --dsw-alias-state-success-secondary: #56d364;\n --dsw-alias-state-success-tertiary: rgba(63, 185, 80, 0.16);\n --dsw-alias-state-error-primary: #ff7b72;\n --dsw-alias-state-error-secondary: #ff9492;\n --dsw-alias-state-error-tertiary: rgba(255, 123, 114, 0.16);\n --dsw-alias-state-warn-primary: #d29922;\n --dsw-alias-state-warn-secondary: #e3b341;\n --dsw-alias-state-warn-tertiary: rgba(210, 153, 34, 0.16);\n --dsw-alias-state-warn-label: #d29922;\n --dsw-alias-state-business-primary: #ececec;\n --dsw-alias-state-business-tertiary: rgba(255, 255, 255, 0.12);\n --dsw-alias-state-idle-primary: #7e7e7e;\n\n --dsw-alias-code-diff-added: rgba(63, 185, 80, 0.14);\n --dsw-alias-code-diff-deleted: rgba(248, 81, 73, 0.14);\n --dsw-alias-file-diff-added-bg: #1f3124;\n --dsw-alias-file-diff-added-gutter: #132016;\n --dsw-alias-file-diff-added-marker: #41c977;\n --dsw-alias-file-diff-deleted-bg: #3c1f1b;\n --dsw-alias-file-diff-deleted-gutter: #28130e;\n --dsw-alias-file-diff-deleted-marker: #fa423e;\n\n --dsw-alias-bg-mask-drop: rgba(39, 39, 48, 0.7);\n --dsw-alias-toast-bg: #282828;\n --dsw-alias-tooltip-bg: #212121;\n --dsw-alias-tooltip-fg: #ececec;\n --dsw-alias-hovercard-bg: #212121;\n\n --dsw-alias-scrollbar-bg-l1: rgba(160, 160, 160, 0.3);\n --dsw-alias-scrollbar-bg-l2: rgba(160, 160, 160, 0.5);\n --dsw-alias-scrollbar-hover-l1: rgba(255, 255, 255, 0.35);\n --dsw-alias-scrollbar-hover-l2: rgba(255, 255, 255, 0.5);\n\n --dsw-specific-sidebar-fill: #0f0f0f;\n --dsw-specific-sidebar-nav-item-hover: #171717;\n --dsw-specific-sidebar-nav-item-active: #1f1f1f;\n --dsw-specific-sidebar-nav-item-active-accent: rgba(255, 255, 255, 0.14);\n --dsw-specific-input-major: #212121;\n --dsw-composer-surface: #181818;\n --dsw-specific-login-input: #1f1f1f;\n --dsw-specific-menu: rgba(24, 24, 24, 0.88);\n --dsw-specific-selector: #282828;\n --dsw-specific-bubble: #212121;\n --dsw-specific-bubble-highlight: #282828;\n --dsw-specific-tip: #1f1f1f;\n\n --dsw-shadow-lv1: 0 1px 2px rgba(0, 0, 0, 0.4);\n --dsw-shadow-lv2: 0 2px 8px rgba(0, 0, 0, 0.5);\n --dsw-shadow-lv3: 0 8px 24px rgba(0, 0, 0, 0.6);\n --dsw-linear-gradient-think: linear-gradient(180deg, #212121 20.19%, rgba(33, 33, 33, 0) 100%);\n --dsw-linear-think-select: linear-gradient(180deg, #1f1f1f 20.19%, rgba(40, 40, 40, 0) 100%);\n\n --dsw-codex-ambient: rgba(0, 0, 0, 0.5);\n --dsw-codex-menu-shadow: 0 8px 32px rgba(0, 0, 0, 0.5), 0 0 0 1px rgba(236, 236, 236, 0.05);\n --dsw-codex-suggest-shadow: 0 8px 32px #0003, 0 0 0 1px #ffffff08;\n --dsw-codex-suggest-fill: #292929;\n}\n\nhtml[data-codex-ui],\nhtml[data-codex-ui] body {\n --dsw-space-1: 4px;\n --dsw-space-2: 8px;\n --dsw-space-3: 12px;\n --dsw-space-4: 16px;\n --dsw-space-5: 20px;\n --dsw-space-6: 24px;\n --dsw-space-8: 32px;\n\n --dsw-radius-xs: 4px;\n --dsw-radius-s: 8px;\n --dsw-radius-m: 12px;\n --dsw-radius-l: 16px;\n --dsw-radius-xl: 20px;\n --dsw-radius-2xl: 25px;\n --dsw-radius-menu: 18px;\n\n --dsw-radius-card: var(--dsw-radius-xl);\n --dsw-radius-pill: 999px;\n\n --dsw-content-max-width: 768px;\n\n --dsw-text-2xs: 11px;\n --dsw-text-xs: 12.5px;\n --dsw-text-sm: 13px;\n --dsw-text-base: 14px;\n --dsw-text-lg: 16px;\n --dsw-text-xl: 20px;\n --dsw-text-2xl: 28px;\n --dsw-leading-2xs: 1.3;\n --dsw-leading-xs: 1.4;\n --dsw-leading-base: 1.65;\n --dsw-leading-lg: 1.4;\n --dsw-leading-xl: 1.35;\n --dsw-leading-2xl: 1.25;\n\n --dsw-font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", \"PingFang SC\",\n \"Hiragino Sans GB\", \"Microsoft YaHei\", \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n --ds-font-family-code: \"SF Mono\", \"JetBrains Mono\", \"Fira Code\", Consolas,\n \"Liberation Mono\", Menlo, Courier, \"PingFang SC\", \"Microsoft YaHei\";\n\n --dsw-font-meta: var(--ds-font-family-code);\n --dsw-meta-size: 11px;\n --dsw-meta-weight: 500;\n --dsw-meta-tracking: 0.08em;\n --dsw-meta-tracking-pill: 0.04em;\n\n --dsw-motion-fast: 150ms;\n --dsw-motion-base: 200ms;\n --dsw-motion-slow: 300ms;\n --dsw-ease: cubic-bezier(0.4, 0, 0.2, 1);\n\n --dsh-composer-accessory-radius: var(--dsw-radius-l);\n --dsh-composer-accessory-bg: var(--dsw-alias-bg-layer-2);\n --dsh-composer-accessory-color: var(--dsw-alias-label-secondary);\n --dsh-composer-accessory-border: 0.5px solid var(--dsw-alias-border-l1);\n --dsh-composer-accessory-shadow: none;\n --dsh-composer-accessory-blur: 0px;\n}\n\n@supports (corner-shape: superellipse(1.5)) {\n html[data-codex-ui],\nhtml[data-codex-ui] body {\n --dsw-radius-card: var(--dsw-radius-2xl);\n }\n}\n\nhtml[data-codex-ui] body,\nhtml[data-codex-ui] body * {\n --dsw-elevation-stroke-color: rgba(13, 13, 13, 0.08);\n --dsw-elevation-stroke: 0 0 0 0.5px var(--dsw-elevation-stroke-color);\n --dsw-elevation-panel: var(--dsw-elevation-stroke);\n\n --dsw-elevation-prominent: var(--dsw-elevation-stroke), 0 3px 7.5px #0000000a, 0 0 20px #0000000d;\n}\n\nhtml[data-codex-ui] body[data-ds-dark-theme],\nhtml[data-codex-ui] body[data-ds-dark-theme] * {\n --dsw-elevation-stroke-color: rgba(255, 255, 255, 0.09);\n}\n\nhtml[data-codex-ui],\nhtml[data-codex-ui] body {\n --dsw-font-markdown-h1: 600 calc(21px + var(--dsh-content-font-delta)) / calc(30px + var(--dsh-content-font-delta)) var(--dsw-font-family);\n --dsw-font-markdown-h1-font-weight: 600;\n --dsw-font-markdown-h2: 600 calc(19px + var(--dsh-content-font-delta)) / calc(28px + var(--dsh-content-font-delta)) var(--dsw-font-family);\n --dsw-font-markdown-h2-font-weight: 600;\n --dsw-font-markdown-h3: 600 calc(18px + var(--dsh-content-font-delta)) / calc(26px + var(--dsh-content-font-delta)) var(--dsw-font-family);\n --dsw-font-markdown-h3-font-weight: 600;\n}\n\nhtml[data-codex-ui] :focus-visible {\n outline: 2px solid var(--dsw-focus-ring-color);\n outline-offset: 2px;\n}\n\nhtml[data-codex-ui] a {\n color: var(--dsw-alias-link);\n text-decoration: none;\n text-underline-offset: 2px;\n text-decoration-thickness: 1px;\n}\n\nhtml[data-codex-ui] a:hover,\nhtml[data-codex-ui] a:focus-visible {\n text-decoration: underline;\n}\n\nhtml[data-codex-ui] button,\nhtml[data-codex-ui] a,\nhtml[data-codex-ui] summary,\nhtml[data-codex-ui] [role=\"button\"],\nhtml[data-codex-ui] [role=\"tab\"],\nhtml[data-codex-ui] [role=\"menuitem\"],\nhtml[data-codex-ui] [role=\"option\"] {\n cursor: pointer;\n}\n\nhtml[data-codex-ui] button,\nhtml[data-codex-ui] a,\nhtml[data-codex-ui] summary,\nhtml[data-codex-ui] [role=\"button\"],\nhtml[data-codex-ui] [role=\"tab\"],\nhtml[data-codex-ui] [role=\"menuitem\"] {\n transition:\n background-color var(--dsw-motion-fast) var(--dsw-ease),\n border-color var(--dsw-motion-fast) var(--dsw-ease),\n color var(--dsw-motion-fast) var(--dsw-ease),\n opacity var(--dsw-motion-fast) var(--dsw-ease),\n box-shadow var(--dsw-motion-fast) var(--dsw-ease);\n}\n\nhtml[data-codex-ui] button:disabled,\nhtml[data-codex-ui] button[aria-disabled=\"true\"],\nhtml[data-codex-ui] [aria-disabled=\"true\"] {\n cursor: not-allowed;\n opacity: 0.45;\n}\n\nhtml[data-codex-ui] [data-slot=\"web-ui.plugin.item\"] > *,\nhtml[data-codex-ui] [data-dsh-part=\"card\"],\nhtml[data-codex-ui] [data-dsh-part=\"column\"],\nhtml[data-codex-ui] [data-dsh-part=\"status\"],\nhtml[data-codex-ui] [data-dsh-part=\"today-card\"],\nhtml[data-codex-ui] [data-dsh-part=\"balance-card\"],\nhtml[data-codex-ui] [data-dsh-part=\"trend-card\"],\nhtml[data-codex-ui] [data-dsh-part=\"plan-card\"],\nhtml[data-codex-ui] [data-dsh-part=\"bank-card\"] {\n background: var(--dsw-alias-bg-layer-1);\n border: 0.5px solid var(--dsw-alias-border-l1);\n border-radius: var(--dsw-radius-m);\n box-shadow: var(--dsw-elevation-panel);\n padding: var(--dsw-space-4);\n}\n\nhtml[data-codex-ui] [role=\"dialog\"],\nhtml[data-codex-ui] [data-dsh-surface=\"overlay\"] [data-dsh-part=\"panel\"] {\n border-radius: var(--dsw-radius-l);\n}\n\nhtml[data-codex-ui] [data-dsh-part=\"composer-chip\"],\nhtml[data-codex-ui] [data-dsh-part=\"chip\"],\nhtml[data-codex-ui] [data-dsh-part=\"ref\"],\nhtml[data-codex-ui] [data-dsh-part=\"tag-chip\"],\nhtml[data-codex-ui] [data-dsh-part=\"tag-badge\"] {\n font-family: var(--dsw-font-meta);\n font-size: var(--dsw-meta-size);\n font-weight: var(--dsw-meta-weight);\n letter-spacing: var(--dsw-meta-tracking-pill);\n border-radius: var(--dsw-radius-pill);\n}\n\nhtml[data-codex-ui] [data-dsh-part=\"tag-chip\"][data-tag-tone=\"0\"],\nhtml[data-codex-ui] [data-dsh-part=\"tag-badge\"][data-tag-tone=\"0\"] {\n background: var(--dsw-alias-bg-layer-2);\n color: var(--dsw-alias-label-secondary);\n}\n\nhtml[data-codex-ui] [data-dsh-part=\"tag-chip\"][data-tag-tone=\"1\"],\nhtml[data-codex-ui] [data-dsh-part=\"tag-badge\"][data-tag-tone=\"1\"] {\n background: var(--dsw-alias-state-success-tertiary);\n color: var(--dsw-alias-state-success-primary);\n}\n\nhtml[data-codex-ui] [data-dsh-part=\"tag-chip\"][data-tag-tone=\"2\"],\nhtml[data-codex-ui] [data-dsh-part=\"tag-badge\"][data-tag-tone=\"2\"] {\n background: var(--dsw-alias-state-warn-tertiary);\n color: var(--dsw-alias-state-warn-primary);\n}\n\nhtml[data-codex-ui] [data-dsh-part=\"tag-chip\"][data-tag-tone=\"3\"],\nhtml[data-codex-ui] [data-dsh-part=\"tag-badge\"][data-tag-tone=\"3\"] {\n background: var(--dsw-alias-state-error-tertiary);\n color: var(--dsw-alias-state-error-primary);\n}\n\nhtml[data-codex-ui] [data-dsh-part=\"tag-chip\"][data-tag-tone=\"4\"],\nhtml[data-codex-ui] [data-dsh-part=\"tag-badge\"][data-tag-tone=\"4\"] {\n background: var(--dsw-alias-state-business-tertiary);\n color: var(--dsw-alias-label-primary);\n}\n\nhtml[data-codex-ui] [data-dsh-part=\"tag-chip\"][data-tag-tone=\"5\"],\nhtml[data-codex-ui] [data-dsh-part=\"tag-badge\"][data-tag-tone=\"5\"] {\n background: var(--dsw-alias-bg-layer-3);\n color: var(--dsw-alias-label-tertiary);\n}\n\nhtml[data-codex-ui] [data-dsh-surface=\"sidebar\"],\nhtml[data-codex-ui] [data-slot=\"sidebar.workspaces\"] {\n background-color: var(--dsw-alias-bg-sidebar);\n}\n\nhtml[data-codex-ui] [data-dsh-part=\"sidebar-entry\"],\nhtml[data-codex-ui] [data-dsh-surface=\"sidebar\"] [role=\"button\"] {\n border-radius: var(--dsw-radius-s);\n}\n\nhtml[data-codex-ui] [data-dsh-surface=\"composer\"] [data-dsh-part=\"composer-input\"] {\n border-radius: var(--dsw-radius-l);\n}\n\nhtml[data-codex-ui] [data-dsh-part=\"composer-input\"] {\n font-family: var(--dsw-font-family);\n line-height: var(--dsw-leading-base);\n}\n\nhtml[data-codex-ui] [data-dsh-part=\"turn-tail\"],\nhtml[data-codex-ui] [data-dsh-part=\"queue-dock\"],\nhtml[data-codex-ui] [data-dsh-part=\"usage-chart\"],\nhtml[data-codex-ui] [data-dsh-part=\"voucher-preview\"] {\n font-family: var(--dsw-font-meta);\n}\n\nhtml[data-codex-ui] [data-dsh-part=\"composer-chip\"] {\n text-transform: uppercase;\n letter-spacing: var(--dsw-meta-tracking);\n}\n\nhtml[data-codex-ui] :lang(zh) [data-dsh-part=\"composer-chip\"],\nhtml[data-codex-ui] :lang(zh) [data-dsh-part=\"chip\"],\nhtml[data-codex-ui] :lang(zh) [data-dsh-part=\"ref\"],\nhtml[data-codex-ui] :lang(zh) [data-dsh-part=\"tag-chip\"],\nhtml[data-codex-ui] :lang(zh) [data-dsh-part=\"tag-badge\"] {\n letter-spacing: 0;\n text-transform: none;\n}\n\n@media (prefers-reduced-motion: reduce) {\n html[data-codex-ui] *,\nhtml[data-codex-ui] *::before,\nhtml[data-codex-ui] *::after {\n animation-duration: 0.01ms !important;\n animation-iteration-count: 1 !important;\n transition-duration: 0.01ms !important;\n scroll-behavior: auto !important;\n }\n}\n\nhtml[data-codex-ui] [data-slot=\"conversation.input.model\"] button:focus-visible {\n outline: 1px solid var(--dsw-focus-ring-color);\n outline-offset: 1px;\n box-shadow: none;\n}\n\nhtml[data-codex-ui] body > div[role=\"menu\"][aria-busy] {\n\n --dsw-menu-surface-fill: var(--dsw-alias-bg-layer-1);\n --dsw-menu-backdrop-filter: none;\n\n background: var(--dsw-alias-bg-layer-1);\n padding: 5px;\n border-radius: var(--dsw-radius-menu);\n box-shadow: var(--dsw-codex-menu-shadow);\n color: var(--dsw-alias-label-primary);\n}\n\nhtml[data-codex-ui] body > div[role=\"menu\"][aria-busy] button[role=\"menuitem\"],\nhtml[data-codex-ui] body > div[role=\"menu\"][aria-busy] button[role=\"menuitemradio\"] {\n box-sizing: border-box;\n min-height: 28px;\n padding: 4px 9px;\n gap: 8px;\n border: 0;\n border-radius: calc(var(--dsw-radius-menu) - 5px);\n background: none;\n color: inherit;\n font-size: 13px;\n line-height: 20px;\n text-align: left;\n}\n\nhtml[data-codex-ui] body > div[role=\"menu\"][aria-busy] button[role=\"menuitem\"]:hover,\nhtml[data-codex-ui] body > div[role=\"menu\"][aria-busy] button[role=\"menuitemradio\"]:hover:not(:disabled),\nhtml[data-codex-ui] body > div[role=\"menu\"][aria-busy] button[role=\"menuitemradio\"][aria-checked=\"true\"] {\n background: var(--dsw-alias-interactive-bg-active);\n}\n\nhtml[data-codex-ui] body > div[role=\"menu\"][aria-busy] button[role=\"menuitem\"]:focus-visible,\nhtml[data-codex-ui] body > div[role=\"menu\"][aria-busy] button[role=\"menuitemradio\"]:focus-visible {\n outline: 1px solid var(--dsw-focus-ring-color);\n outline-offset: -1px;\n background: var(--dsw-alias-interactive-bg-active);\n}\n\nhtml[data-codex-ui] body > div[role=\"menu\"][aria-busy] button[role=\"menuitemradio\"]:disabled {\n opacity: 1;\n}\n\nhtml[data-codex-ui] body > div[role=\"menu\"][aria-busy=\"true\"] button[role=\"menuitemradio\"][aria-checked=\"true\"] > span:last-child {\n position: relative;\n}\n\nhtml[data-codex-ui] body > div[role=\"menu\"][aria-busy=\"true\"] button[role=\"menuitemradio\"][aria-checked=\"true\"] > span:last-child > svg {\n visibility: hidden;\n}\n\nhtml[data-codex-ui] body > div[role=\"menu\"][aria-busy=\"true\"] button[role=\"menuitemradio\"][aria-checked=\"true\"] > span:last-child::after {\n content: \"\";\n position: absolute;\n inset: 0;\n box-sizing: border-box;\n width: 12px;\n height: 12px;\n margin: auto;\n border: 1.5px solid var(--dsw-alias-border-l3);\n border-top-color: var(--dsw-alias-label-primary);\n border-radius: 50%;\n animation: codex-ui-spin 1s linear infinite;\n}\n\nhtml[data-codex-ui] body > div[role=\"menu\"][aria-busy=\"true\"] button[role=\"menuitemradio\"]:disabled {\n cursor: progress;\n}\n\n@keyframes codex-ui-spin {\n to {\n transform: rotate(1turn);\n }\n}\n\nhtml[data-codex-ui] [data-slot=\"conversation.session.header\"] > [data-conversation-tabs] {\n display: none;\n}\n\nhtml[data-codex-ui] header:has([data-conversation-header-leading]):has([data-conversation-tabs]) {\n min-height: 0;\n padding-bottom: 10px;\n}\n\nhtml[data-codex-ui] [data-dsh-part=\"new-session\"] {\n border: 0;\n background: transparent;\n box-shadow: none;\n border-radius: var(--dsw-radius-s);\n justify-content: flex-start;\n color: var(--dsw-alias-label-primary);\n}\n\nhtml[data-codex-ui] [data-dsh-part=\"new-session\"]:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\nhtml[data-codex-ui] [data-slot=\"conversation.composer.dock\"] {\n display: none;\n}\n\nhtml[data-codex-ui] [data-conversation-header-corner] {\n margin-left: 0;\n margin-right: 0;\n}\n\nhtml[data-codex-ui] [data-sidebar-right-expand] svg {\n transform: scaleX(-1);\n}\n\nhtml[data-codex-ui] [data-animating] {\n transition: grid-template-columns 500ms cubic-bezier(.16, 1, .3, 1);\n}\n\nhtml[data-codex-ui] [data-animating] [data-side] {\n transition: left 500ms cubic-bezier(.16, 1, .3, 1);\n}\n\nhtml[data-codex-ui] [data-dragging],\nhtml[data-codex-ui] [data-rightbar-instant],\nhtml[data-codex-ui] [data-rightbar-fullscreen],\nhtml[data-codex-ui] [data-dragging] [data-side],\nhtml[data-codex-ui] [data-rightbar-instant] [data-side],\nhtml[data-codex-ui] [data-rightbar-fullscreen] [data-side] {\n transition: none;\n}\n\n@media (prefers-reduced-motion: reduce) {\n html[data-codex-ui] [data-animating],\nhtml[data-codex-ui] [data-animating] [data-side] {\n transition: none;\n }\n}\n\nhtml[data-codex-ui] [data-sidebar-right-guide] > span[aria-hidden=\"true\"] {\n display: none;\n}\n\nhtml[data-codex-ui] [data-sidebar-right-guide]::after {\n display: none;\n}\n\nhtml[data-codex-ui] [data-sidebar-right-guide-entry] {\n box-sizing: border-box;\n width: 380px;\n max-width: 100%;\n min-height: 52px;\n gap: 14px;\n padding: 0 20px;\n border: 0;\n border-radius: var(--dsw-radius-m);\n background: transparent;\n color: var(--dsw-alias-label-primary);\n font-size: 14px;\n}\n\nhtml[data-codex-ui] [data-sidebar-right-guide-entry]:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\nhtml[data-codex-ui] [data-sidebar-right-guide-entry] > span:first-child {\n width: 20px;\n height: 20px;\n}\n\nhtml[data-codex-ui] [data-sidebar-right-guide-entry] > span:first-child svg {\n width: 20px;\n height: 20px;\n}\n\nhtml[data-codex-ui] [data-sidebar-right-guide-entry] > span:nth-child(2) {\n gap: 0;\n}\n\nhtml[data-codex-ui] [data-sidebar-right-guide-entry] > span:nth-child(2) > span:nth-child(2) {\n display: none;\n}\n\nhtml[data-codex-ui] [data-sidebar-right-guide-entry=\"terminal\"] > span:nth-child(2) {\n width: 20px;\n height: 20px;\n}\n\nhtml[data-codex-ui] [data-sidebar-right-guide-entry=\"terminal\"] > span:nth-child(2) svg {\n width: 20px;\n height: 20px;\n}\n\nhtml[data-codex-ui] [data-sidebar-right-guide-entry=\"terminal\"] > span:nth-child(3) > span:nth-child(2) {\n display: none;\n}\n\nhtml[data-codex-ui] [data-sidebar-right-guide-entry] > span:has(kbd) {\n display: inline-flex;\n flex: none;\n align-items: center;\n gap: 3px;\n height: 24px;\n padding: 0 10px;\n border-radius: var(--dsw-radius-m);\n background: var(--dsw-alias-bg-layer-2);\n color: var(--dsw-alias-label-tertiary);\n font-size: 12px;\n line-height: 16px;\n white-space: nowrap;\n}\n\nhtml[data-codex-ui] [data-sidebar-right-guide-entry] kbd {\n display: inline;\n min-width: 0;\n padding: 0;\n border: 0;\n border-radius: 0;\n background: transparent;\n color: inherit;\n font: inherit;\n}\n\nhtml[data-codex-ui] [data-sidebar-right-toggle] {\n background: var(--dsw-alias-bg-layer-2);\n border-radius: var(--dsw-radius-m);\n}\n\nhtml[data-codex-ui] [data-composer-card] button[class$=\"_add\"],\nhtml[data-codex-ui] [data-composer-card] button[class$=\"_trigger\"] {\n transition: background-color var(--dsw-motion-fast) var(--dsw-ease);\n border-radius: var(--dsw-radius-pill);\n}\n\nhtml[data-codex-ui] [data-composer-card] button[class$=\"_add\"] {\n background: transparent;\n}\n\nhtml[data-codex-ui] [data-composer-card] button[class$=\"_add\"]:hover,\nhtml[data-codex-ui] [data-composer-card] button[class$=\"_add\"][aria-expanded=\"true\"],\nhtml[data-codex-ui] [data-composer-card] button[class$=\"_trigger\"]:hover,\nhtml[data-codex-ui] [data-composer-card] button[class$=\"_trigger\"][aria-expanded=\"true\"] {\n background: var(--dsw-codex-hover-fill);\n}\n\nhtml[data-codex-ui] [data-slot=\"conversation.input.model\"][data-codex-ui-seated] > :not(.codex-mp-trigger) {\n display: none;\n}\n\nhtml[data-codex-ui] .codex-mp-trigger {\n box-sizing: border-box;\n display: inline-flex;\n align-items: center;\n gap: 4px;\n height: 28px;\n min-width: 0;\n max-width: min(360px, 45cqw);\n padding: 0 4px 0 8px;\n border: 0;\n border-radius: var(--dsw-radius-pill);\n background: transparent;\n color: var(--dsw-alias-label-secondary);\n font-family: inherit;\n font-size: 13px;\n font-weight: 400;\n line-height: 20px;\n cursor: pointer;\n transition: background-color var(--dsw-motion-fast) var(--dsw-ease);\n}\n\nhtml[data-codex-ui] .codex-mp-trigger:hover,\nhtml[data-codex-ui] .codex-mp-trigger[aria-expanded=\"true\"] {\n background: var(--dsw-codex-hover-fill);\n}\n\nhtml[data-codex-ui] .codex-mp-trigger-model {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\nhtml[data-codex-ui] .codex-mp-effort-layers {\n display: grid;\n grid-template-columns: max-content;\n flex-shrink: 1000;\n width: max-content;\n min-width: 0;\n overflow: hidden;\n color: var(--dsw-alias-label-caption);\n}\n\nhtml[data-codex-ui] .codex-mp-effort-layers[hidden] {\n display: none;\n}\n\nhtml[data-codex-ui] .codex-mp-effort-text {\n grid-area: 1 / 1;\n justify-self: center;\n opacity: 0;\n filter: blur(4px);\n white-space: nowrap;\n will-change: opacity, filter;\n transition:\n opacity var(--dsw-motion-slow) var(--dsw-ease),\n filter var(--dsw-motion-slow) var(--dsw-ease);\n}\n\nhtml[data-codex-ui] .codex-mp-effort-text[data-active=\"true\"] {\n opacity: 1;\n filter: none;\n}\n\nhtml[data-codex-ui] .codex-mp-trigger-chevron {\n display: inline-flex;\n flex: none;\n color: var(--dsw-alias-label-caption);\n transition: transform 120ms var(--dsw-ease);\n}\n\nhtml[data-codex-ui] .codex-mp-trigger[aria-expanded=\"true\"] .codex-mp-trigger-chevron {\n transform: rotate(180deg);\n}\n\nhtml[data-codex-ui] .codex-mp-popover {\n position: fixed;\n z-index: 1100;\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n width: calc(4px * 63.5);\n max-width: calc(100vw - 24px);\n max-height: min(360px, 100vh - 96px);\n padding: 5px;\n border-radius: var(--dsw-radius-menu);\n background: var(--dsw-alias-bg-layer-1);\n color: var(--dsw-alias-label-primary);\n box-shadow: var(--dsw-codex-menu-shadow);\n font-size: 13px;\n line-height: 20px;\n transform-origin: bottom right;\n animation: codex-mp-enter 0.32s cubic-bezier(0.23, 1, 0.32, 1) 30ms both;\n}\n\nhtml[data-codex-ui] .codex-mp-popover[hidden] {\n display: none;\n}\n\nhtml[data-codex-ui] .codex-mp-popover[data-reduced-motion=\"true\"] {\n animation: none;\n}\n\n@keyframes codex-mp-enter {\n from {\n opacity: 0;\n transform: scale(0.98);\n }\n\n to {\n opacity: 1;\n transform: none;\n }\n}\n\nhtml[data-codex-ui] .codex-mp-error {\n flex: none;\n margin-bottom: 3px;\n padding: 6px 9px;\n border-radius: calc(var(--dsw-radius-menu) - 5px);\n background: var(--dsw-alias-interactive-bg-hover-danger);\n color: var(--dsw-alias-state-error-primary);\n font-size: 11px;\n line-height: 16px;\n}\n\nhtml[data-codex-ui] .codex-mp-error[hidden] {\n display: none;\n}\n\nhtml[data-codex-ui] .codex-mp-list {\n min-height: 0;\n overflow-y: auto;\n scrollbar-width: thin;\n}\n\nhtml[data-codex-ui] .codex-mp-status {\n padding: 8px 9px;\n color: var(--dsw-alias-label-tertiary);\n font-size: 12px;\n line-height: 18px;\n}\n\nhtml[data-codex-ui] .codex-mp-retry {\n padding: 0;\n border: 0;\n background: none;\n color: inherit;\n font: inherit;\n font-weight: 600;\n cursor: pointer;\n}\n\nhtml[data-codex-ui] .codex-mp-group {\n padding: 4px 9px 2px;\n color: var(--dsw-alias-label-tertiary);\n font-size: 11px;\n font-weight: 500;\n line-height: 16px;\n}\n\nhtml[data-codex-ui] .codex-mp-group:not(:first-child) {\n margin-top: 3px;\n}\n\nhtml[data-codex-ui] .codex-mp-row {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n gap: 8px;\n width: 100%;\n min-height: 28px;\n padding: 4px 9px;\n border: 0;\n border-radius: calc(var(--dsw-radius-menu) - 5px);\n background: none;\n color: inherit;\n font-family: inherit;\n font-size: 13px;\n line-height: 20px;\n text-align: left;\n cursor: pointer;\n}\n\nhtml[data-codex-ui] .codex-mp-row:hover,\nhtml[data-codex-ui] .codex-mp-row[aria-checked=\"true\"] {\n background: var(--dsw-alias-interactive-bg-active);\n}\n\nhtml[data-codex-ui] .codex-mp-row:focus-visible {\n outline: 1px solid var(--dsw-focus-ring-color);\n outline-offset: -1px;\n background: var(--dsw-alias-interactive-bg-active);\n}\n\nhtml[data-codex-ui] .codex-mp-row[aria-busy=\"true\"] {\n cursor: progress;\n}\n\nhtml[data-codex-ui] .codex-mp-row-copy {\n display: flex;\n flex: 1;\n flex-direction: column;\n min-width: 0;\n}\n\nhtml[data-codex-ui] .codex-mp-row-name {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-weight: 500;\n}\n\nhtml[data-codex-ui] .codex-mp-row-desc {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n color: var(--dsw-alias-label-tertiary);\n font-size: 12px;\n line-height: 18px;\n}\n\nhtml[data-codex-ui] .codex-mp-row-check {\n display: grid;\n flex: 0 0 14px;\n place-items: center;\n color: var(--dsw-alias-label-primary);\n}\n\nhtml[data-codex-ui] .codex-mp-spinner {\n box-sizing: border-box;\n display: inline-block;\n flex: none;\n width: 12px;\n height: 12px;\n border: 1.5px solid var(--dsw-alias-border-l3);\n border-top-color: var(--dsw-alias-label-primary);\n border-radius: 50%;\n animation: codex-ui-spin 1s linear infinite;\n}\n\nhtml[data-codex-ui] .codex-mp-effort {\n flex: none;\n margin-top: 5px;\n padding-top: 5px;\n border-top: 0.5px solid var(--dsw-alias-border-l1);\n}\n\nhtml[data-codex-ui] .codex-mp-effort[hidden] {\n display: none;\n}\n\nhtml[data-codex-ui] .codex-mp-effort {\n --codex-mp-apex: #8b7ad0;\n --codex-mp-apex-flash: #d9d2f5;\n --codex-mp-apex-ink: #5f51b5;\n}\n\nhtml[data-codex-ui] body[data-ds-dark-theme] .codex-mp-effort {\n --codex-mp-apex: #9d8ce0;\n --codex-mp-apex-flash: #e6e0fb;\n --codex-mp-apex-ink: #b9adf0;\n}\n\nhtml[data-codex-ui] .codex-mp-effort-head {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n min-height: 28px;\n padding: 4px 9px;\n color: var(--dsw-alias-label-secondary);\n}\n\nhtml[data-codex-ui] .codex-mp-effort-value {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n color: var(--dsw-alias-label-tertiary);\n}\n\nhtml[data-codex-ui] .codex-mp-container {\n position: relative;\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n justify-content: center;\n height: 32px;\n margin-inline: 2px;\n padding-block: 2px;\n padding-inline: 6px;\n}\n\nhtml[data-codex-ui] .codex-mp-root {\n --codex-mp-motion-duration: 0.18s;\n --codex-mp-motion-easing: cubic-bezier(0.22, 0.61, 0.36, 1);\n --codex-mp-tick-transform-duration: 0.12s;\n --codex-mp-thumb-motion-duration: 0s;\n position: relative;\n display: flex;\n align-items: center;\n width: 100%;\n height: 30px;\n outline: none;\n touch-action: none;\n cursor: pointer;\n}\n\nhtml[data-codex-ui] .codex-mp-root[data-armed=\"true\"] {\n --codex-mp-thumb-motion-duration: var(--codex-mp-motion-duration);\n}\n\nhtml[data-codex-ui] .codex-mp-root[data-dragging=\"true\"],\nhtml[data-codex-ui] .codex-mp-root[data-dragging=\"true\"] .codex-mp-tick {\n cursor: grabbing;\n}\n\nhtml[data-codex-ui] .codex-mp-root[data-disabled=\"true\"] {\n opacity: 0.6;\n}\n\nhtml[data-codex-ui] .codex-mp-popover[data-reduced-motion=\"true\"] .codex-mp-root {\n --codex-mp-motion-duration: 0s;\n --codex-mp-tick-transform-duration: 0s;\n --codex-mp-thumb-motion-duration: 0s;\n}\n\nhtml[data-codex-ui] .codex-mp-track {\n position: relative;\n flex-grow: 1;\n height: 30px;\n}\n\nhtml[data-codex-ui] .codex-mp-track::before {\n content: \"\";\n position: absolute;\n left: 0;\n right: 0;\n top: 50%;\n height: 26px;\n margin-top: -13px;\n border-radius: 8px;\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\nhtml[data-codex-ui] .codex-mp-range {\n position: absolute;\n left: 0;\n top: 50%;\n height: 26px;\n margin-top: -13px;\n width: calc(8px + (100% - 16px) * var(--codex-mp-pos, 0));\n border-radius: 8px 0 0 8px;\n background: color-mix(in srgb, var(--dsw-alias-label-primary) 26%, transparent);\n transition: width var(--codex-mp-thumb-motion-duration) var(--codex-mp-motion-easing);\n pointer-events: none;\n}\n\nhtml[data-codex-ui] .codex-mp-matrix {\n position: absolute;\n left: 0;\n right: 0;\n top: 50%;\n height: 26px;\n margin-top: -13px;\n border-radius: 8px;\n overflow: hidden;\n box-sizing: border-box;\n display: none;\n pointer-events: none;\n}\n\nhtml[data-codex-ui] .codex-mp-root[data-tier=\"max\"] .codex-mp-matrix {\n display: grid;\n grid-auto-flow: row;\n}\n\nhtml[data-codex-ui] .codex-mp-matrix-cell {\n animation: codex-mp-cell-in 0.15s ease both;\n}\n\n@keyframes codex-mp-cell-in {\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n}\n\nhtml[data-codex-ui] .codex-mp-matrix-sq {\n width: 100%;\n height: 100%;\n border-radius: 1px;\n background-color: var(--codex-mp-apex);\n --codex-mp-flash-light: var(--codex-mp-apex-flash);\n animation: codex-mp-flash 1.45s infinite ease-in-out;\n}\n\nhtml[data-codex-ui] .codex-mp-matrix-sq[data-tone=\"0\"] { --codex-mp-flash-light: color-mix(in srgb, var(--codex-mp-apex) 62%, var(--codex-mp-apex-flash)); }\nhtml[data-codex-ui] .codex-mp-matrix-sq[data-tone=\"1\"] { --codex-mp-flash-light: color-mix(in srgb, var(--codex-mp-apex) 54%, var(--codex-mp-apex-flash)); }\nhtml[data-codex-ui] .codex-mp-matrix-sq[data-tone=\"2\"] { --codex-mp-flash-light: color-mix(in srgb, var(--codex-mp-apex) 46%, var(--codex-mp-apex-flash)); }\nhtml[data-codex-ui] .codex-mp-matrix-sq[data-tone=\"3\"] { --codex-mp-flash-light: color-mix(in srgb, var(--codex-mp-apex) 38%, var(--codex-mp-apex-flash)); }\nhtml[data-codex-ui] .codex-mp-matrix-sq[data-tone=\"4\"] { --codex-mp-flash-light: color-mix(in srgb, var(--codex-mp-apex) 30%, var(--codex-mp-apex-flash)); }\nhtml[data-codex-ui] .codex-mp-matrix-sq[data-tone=\"5\"] { --codex-mp-flash-light: color-mix(in srgb, var(--codex-mp-apex) 22%, var(--codex-mp-apex-flash)); }\nhtml[data-codex-ui] .codex-mp-matrix-sq[data-tone=\"6\"] { --codex-mp-flash-light: color-mix(in srgb, var(--codex-mp-apex) 14%, var(--codex-mp-apex-flash)); }\nhtml[data-codex-ui] .codex-mp-matrix-sq[data-tone=\"7\"] { --codex-mp-flash-light: color-mix(in srgb, var(--codex-mp-apex) 6%, var(--codex-mp-apex-flash)); }\n\n@keyframes codex-mp-flash {\n 0%,\n 17.24% {\n background-color: var(--codex-mp-apex);\n }\n\n 17.25%,\n 50.34% {\n background-color: var(--codex-mp-flash-light);\n }\n\n 100% {\n background-color: var(--codex-mp-apex);\n }\n}\n\nhtml[data-codex-ui] .codex-mp-tick {\n position: absolute;\n top: 50%;\n width: 4px;\n height: 4px;\n margin-top: -2px;\n border-radius: 50%;\n background: color-mix(in srgb, var(--dsw-alias-label-primary) 26%, transparent);\n transform: translateX(-50%);\n pointer-events: none;\n}\n\nhtml[data-codex-ui] .codex-mp-tick::before {\n content: \"\";\n position: absolute;\n inset: -6px;\n}\n\nhtml[data-codex-ui] .codex-mp-thumb-scale {\n position: absolute;\n top: 50%;\n left: calc(8px + (100% - 16px) * var(--codex-mp-pos, 0));\n width: 16px;\n height: 30px;\n margin-top: -15px;\n border-radius: 5px;\n transform: translateX(-50%);\n pointer-events: none;\n will-change: left;\n transition: left var(--codex-mp-thumb-motion-duration) var(--codex-mp-motion-easing);\n}\n\nhtml[data-codex-ui] .codex-mp-thumb {\n position: absolute;\n inset: 0;\n box-sizing: border-box;\n display: block;\n border-radius: 5px;\n background: var(--dsw-static-neutral-bluish-00, #ffffff);\n box-shadow:\n 0 1px 3px rgb(20 20 19 / 28%),\n 0 0 0 1px rgb(20 20 19 / 6%);\n}\n\nhtml[data-codex-ui] body[data-ds-dark-theme] .codex-mp-thumb {\n box-shadow:\n 0 1px 3px rgb(0 0 0 / 55%),\n 0 0 0 1px rgb(0 0 0 / 40%);\n}\n\nhtml[data-codex-ui] .codex-mp-root[data-tier=\"max\"] .codex-mp-range,\nhtml[data-codex-ui] .codex-mp-root[data-tier=\"max\"] .codex-mp-tick {\n opacity: 0;\n}\n\nhtml[data-codex-ui] .codex-mp-root[data-tier=\"max\"] .codex-mp-thumb {\n background: color-mix(in srgb, var(--codex-mp-apex) 22%, #ffffff);\n box-shadow:\n 0 0 10px color-mix(in srgb, var(--codex-mp-apex) 80%, transparent),\n 0 0 0 1px color-mix(in srgb, var(--codex-mp-apex) 35%, transparent);\n}\n\nhtml[data-codex-ui] .codex-mp-effort[data-tier=\"max\"] .codex-mp-effort-value {\n color: var(--codex-mp-apex-ink);\n}\n\nhtml[data-codex-ui] .codex-mp-root[data-keyboard-focused=\"true\"] .codex-mp-thumb-scale {\n outline: 2px solid var(--dsw-focus-ring-color);\n outline-offset: 0;\n}\n\nhtml[data-codex-ui] .codex-mp-root[data-unset] .codex-mp-thumb-scale,\nhtml[data-codex-ui] .codex-mp-root[data-unset] .codex-mp-range {\n visibility: hidden;\n}\n\nhtml[data-codex-ui] .codex-mp-ends {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n padding: 0 9px 2px;\n font-size: 11px;\n line-height: 14px;\n color: var(--dsw-alias-label-caption);\n}\n\nhtml[data-codex-ui] .codex-mp-value-text {\n animation: codex-mp-value-in 0.28s ease;\n}\n\nhtml[data-codex-ui] .codex-mp-effort-ghost {\n position: absolute;\n left: 0;\n top: 0;\n white-space: nowrap;\n pointer-events: none;\n color: inherit;\n animation: codex-mp-value-out 0.28s ease forwards;\n}\n\n@keyframes codex-mp-value-in {\n from {\n filter: blur(4px);\n opacity: 0;\n transform: translateY(5px);\n }\n\n to {\n filter: blur(0);\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n@keyframes codex-mp-value-out {\n from {\n filter: blur(0);\n opacity: 1;\n transform: translateY(0);\n }\n\n to {\n filter: blur(4px);\n opacity: 0;\n transform: translateY(-5px);\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n html[data-codex-ui] .codex-mp-matrix-cell,\nhtml[data-codex-ui] .codex-mp-matrix-sq,\nhtml[data-codex-ui] .codex-mp-value-text,\nhtml[data-codex-ui] .codex-mp-effort-ghost {\n animation: none;\n }\n}\n\nhtml[data-codex-ui] .codex-mp-popover[data-reduced-motion=\"true\"] .codex-mp-matrix-cell,\nhtml[data-codex-ui] .codex-mp-popover[data-reduced-motion=\"true\"] .codex-mp-matrix-sq,\nhtml[data-codex-ui] .codex-mp-popover[data-reduced-motion=\"true\"] .codex-mp-value-text,\nhtml[data-codex-ui] .codex-mp-popover[data-reduced-motion=\"true\"] .codex-mp-effort-ghost {\n animation: none;\n}\n\nhtml[data-codex-ui] [data-slot=\"sidebar\"] > div:not([class*=\"_collapsed\"]) > button {\n box-sizing: border-box;\n height: auto;\n min-height: 36px;\n flex: none;\n background: 0 0;\n border: none;\n border-radius: var(--dsw-radius-s);\n justify-content: flex-start;\n align-items: center;\n gap: 6px;\n\n margin: 0 2px 4px 0;\n padding: 7px 8px;\n font: inherit;\n line-height: 22px;\n text-align: left;\n color: var(--dsw-alias-label-primary);\n cursor: pointer;\n overflow: hidden;\n}\n\nhtml[data-codex-ui] [data-slot=\"sidebar\"] > div:not([class*=\"_collapsed\"]) > button:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\nhtml[data-codex-ui] [data-slot=\"sidebar\"] > div:not([class*=\"_collapsed\"]) > button:focus-visible {\n outline: 2px solid var(--dsw-focus-ring-color);\n outline-offset: -2px;\n}\n\nhtml[data-codex-ui] [data-slot=\"sidebar\"] > div:not([class*=\"_collapsed\"]) > button > svg {\n width: 16px;\n height: 16px;\n flex: none;\n}\n\nhtml[data-codex-ui] [data-slot=\"sidebar\"] > div:not([class*=\"_collapsed\"]) > button > span {\n max-width: none;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\nhtml[data-codex-ui] [data-slot=\"sidebar\"] > div:not([class*=\"_collapsed\"]) > button > span > span:has(> svg) {\n justify-content: flex-start;\n width: auto;\n}\n\nhtml[data-codex-ui] [data-slot=\"sidebar\"] > div:not([class*=\"_collapsed\"]) > button > span > span > svg {\n width: 16px;\n height: 16px;\n flex: none;\n}\n\nhtml[data-codex-ui] [data-slot=\"sidebar\"] > div:not([class*=\"_collapsed\"]) > button > span > span > span {\n max-width: none;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\nhtml[data-codex-ui] [data-slot=\"sidebar\"] > div:not([class*=\"_collapsed\"]) > nav > button {\n gap: 6px;\n margin-left: 0;\n}\n\nhtml[data-codex-ui] div > [data-slot=\"sidebar.workspaces\"] [class$=\"_fade\"] {\n display: none;\n}\n\nhtml[data-codex-ui] div > [data-slot=\"sidebar.workspaces\"] [class$=\"_list\"] {\n -webkit-mask-image:\n linear-gradient(\n to bottom,\n #000 0,\n #000 calc(100% - 40px),\n #000000e0 calc(100% - 24px),\n #00000085 calc(100% - 12px),\n #0000002e calc(100% - 4px),\n #00000000 100%\n ),\n linear-gradient(#000, #000);\n mask-image:\n linear-gradient(\n to bottom,\n #000 0,\n #000 calc(100% - 40px),\n #000000e0 calc(100% - 24px),\n #00000085 calc(100% - 12px),\n #0000002e calc(100% - 4px),\n #00000000 100%\n ),\n linear-gradient(#000, #000);\n -webkit-mask-size: calc(100% - var(--dsh-session-list-edge-inset, 12px)) 100%, var(--dsh-session-list-edge-inset, 12px) 100%;\n mask-size: calc(100% - var(--dsh-session-list-edge-inset, 12px)) 100%, var(--dsh-session-list-edge-inset, 12px) 100%;\n -webkit-mask-position: 0 0, 100% 0;\n mask-position: 0 0, 100% 0;\n -webkit-mask-repeat: no-repeat, no-repeat;\n mask-repeat: no-repeat, no-repeat;\n}\n\nhtml[data-codex-ui][data-windows-titlebar] div:has(> [data-slot=\"main\"]),\nhtml[data-codex-ui][data-windows-titlebar] div:has(> [data-slot=\"sidebar\"]) + div,\nhtml[data-codex-ui][data-platform=\"win32\"]:not([data-windows-titlebar]) div:has(> [data-slot=\"main\"]),\nhtml[data-codex-ui][data-platform=\"win32\"]:not([data-windows-titlebar]) div:has(> [data-slot=\"sidebar\"]) + div {\n position: relative;\n box-shadow:\n 0 0 0 0.5px var(--dsw-alias-border-l2),\n 0 0 13px rgba(13, 13, 13, 0.07);\n}\n\nhtml[data-codex-ui][data-windows-titlebar] body[data-ds-dark-theme] div:has(> [data-slot=\"main\"]),\nhtml[data-codex-ui][data-windows-titlebar] body[data-ds-dark-theme] div:has(> [data-slot=\"sidebar\"]) + div,\nhtml[data-codex-ui][data-platform=\"win32\"]:not([data-windows-titlebar]) body[data-ds-dark-theme] div:has(> [data-slot=\"main\"]),\nhtml[data-codex-ui][data-platform=\"win32\"]:not([data-windows-titlebar]) body[data-ds-dark-theme] div:has(> [data-slot=\"sidebar\"]) + div {\n box-shadow:\n 0 0 0 0.5px var(--dsw-alias-border-l2),\n 0 0 24px rgba(0, 0, 0, 0.5);\n}\n\nhtml[data-codex-ui][data-windows-titlebar] [data-sidebar-right-panel=\"push\"][data-sidebar-right-open],\nhtml[data-codex-ui][data-platform=\"win32\"]:not([data-windows-titlebar]) [data-sidebar-right-panel=\"push\"][data-sidebar-right-open] {\n box-shadow:\n 0 0 0 0.5px var(--dsw-alias-border-l1),\n 0 -12px 24px -12px var(--dsw-codex-ambient);\n}\n\nhtml[data-codex-ui] [data-sidebar-right-panel=\"push\"][data-sidebar-right-open] [data-dockkit-pane][data-dockkit-column=\"0\"] {\n border-left: 0;\n}\n\nhtml[data-codex-ui] [data-side=\"rightbar\"]::before {\n content: \"\";\n position: absolute;\n top: 0;\n bottom: 0;\n left: 50%;\n width: 2px;\n translate: -50% 0;\n border-radius: 1px;\n background: linear-gradient(to bottom, rgba(13, 13, 13, 0.09), rgba(13, 13, 13, 0.27) 50%, rgba(13, 13, 13, 0.09));\n opacity: 0;\n scale: 1 0.35;\n transform-origin: center;\n transition: opacity var(--dsw-motion-base) var(--dsw-ease), scale var(--dsw-motion-slow) var(--dsw-ease);\n pointer-events: none;\n}\n\nhtml[data-codex-ui] [data-side=\"rightbar\"]:hover::before {\n opacity: 1;\n scale: 1 1;\n}\n\nhtml[data-codex-ui] body[data-ds-dark-theme] [data-side=\"rightbar\"]::before {\n background: linear-gradient(to bottom, rgba(236, 236, 236, 0.08), rgba(236, 236, 236, 0.24) 50%, rgba(236, 236, 236, 0.08));\n}\n\nhtml[data-codex-ui][data-platform=\"win32\"]:not([data-windows-titlebar]) div:has(> [data-slot=\"sidebar\"]) {\n border-right-color: var(--dsw-alias-border-l1);\n}\n\nhtml[data-codex-ui] [data-conversation-scroll] {\n --dsh-composer-card-max-width: calc(var(--dsh-chat-content-width) + 32px);\n --dsh-composer-side-clearance: 24px;\n\n --dcu-composer-bg: var(--dsw-composer-surface);\n\n --dcu-composer-shadow: 0 0 0 0.5px rgba(13, 13, 13, 0.1), 0 2px 12px 0 rgba(0, 0, 0, 0.09);\n}\n\nhtml[data-codex-ui] body[data-ds-dark-theme] [data-conversation-scroll] {\n --dcu-composer-bg: color-mix(in srgb, var(--dsw-alias-label-primary) 5%, var(--dsw-composer-surface));\n --dcu-composer-shadow: inset 0 0 1px 0 #fff3;\n}\n\nhtml[data-codex-ui] [data-conversation-scroll] [data-composer-card] {\n padding-top: 12px;\n gap: 4px;\n border: 0;\n border-radius: var(--dsw-radius-card);\n background: var(--dcu-composer-bg);\n box-shadow: var(--dcu-composer-shadow);\n}\n\n@supports (corner-shape: superellipse(1.5)) {\n html[data-codex-ui] [data-conversation-scroll] [data-composer-card] {\n corner-shape: superellipse(1.5);\n }\n}\n\n@media (forced-colors: active) {\n html[data-codex-ui] [data-conversation-scroll] [data-composer-card] {\n outline: 1px solid CanvasText;\n }\n}\n\nhtml[data-codex-ui] [data-conversation-scroll] [data-composer-card] [data-input-scroll] {\n margin-right: 0;\n}\n\nhtml[data-codex-ui] [data-conversation-scroll] [data-input-scroll] [data-lexical-editor=true] {\n min-height: 44px;\n padding: 0 12px;\n}\n\nhtml[data-codex-ui] [data-conversation-scroll] [data-composer-placeholder] {\n inset: 0 12px auto;\n}\n\nhtml[data-codex-ui] [data-conversation-scroll] [data-composer-card] > [data-input-scroll] + div {\n padding: 0 8px 8px;\n gap: 5px;\n}\n\nhtml[data-codex-ui] [data-conversation-scroll] [data-composer-card] > [data-input-scroll] + div > div {\n gap: 4px;\n}\n\nhtml[data-codex-ui] [data-conversation-scroll] [data-composer-card] > [data-input-scroll] + div > div > div {\n gap: 4px;\n}\n\nhtml[data-codex-ui] [data-conversation-scroll] [data-composer-card] > [data-input-scroll] + div button:not([role]),\nhtml[data-codex-ui] [data-conversation-scroll] [data-composer-card] > [data-input-scroll] + div select:not([role]) {\n min-height: 28px;\n height: 28px;\n}\n\nhtml[data-codex-ui] [data-conversation-scroll] [data-composer-card] > [data-input-scroll] + div button[class$=_primary] {\n width: 28px;\n transform: none;\n background: var(--dsw-alias-label-primary);\n color: var(--dsw-alias-bg-base);\n}\n\nhtml[data-codex-ui] [data-conversation-scroll] [data-composer-card] > [data-input-scroll] + div button[class$=_primary]:hover:not(:disabled) {\n background: var(--dsw-alias-label-secondary);\n}\n\nhtml[data-codex-ui] [data-conversation-scroll] [data-composer-card] > [data-input-scroll] + div button:focus-visible,\nhtml[data-codex-ui] [data-conversation-scroll] [data-composer-card] > [data-input-scroll] + div select:focus-visible {\n outline: 2px solid var(--dsw-focus-ring-color);\n outline-offset: 2px;\n}\n\nhtml[data-codex-ui] [class*=\"_heroWorkspaceRow\"] button {\n min-height: 28px;\n border-radius: var(--dsw-radius-pill);\n font-size: 13px;\n line-height: 20px;\n}\n\nhtml[data-codex-ui] [class*=\"_heroWorkspaceRow\"] button:hover,\nhtml[data-codex-ui] [class*=\"_heroWorkspaceRow\"] button[aria-expanded=true] {\n background: color-mix(in srgb, var(--dsw-alias-label-primary) 8%, transparent);\n}\n\nhtml[data-codex-ui] [data-conversation-scroll] [data-trigger-menu] {\n box-sizing: border-box;\n left: 0;\n right: 0;\n width: auto;\n min-width: 0;\n max-width: none;\n padding: 5px;\n border-radius: var(--dsw-radius-menu);\n background: var(--dsw-codex-suggest-fill);\n box-shadow: var(--dsw-codex-suggest-shadow);\n}\n\nhtml[data-codex-ui] [data-conversation-scroll] [data-trigger-menu] > [role=listbox] {\n box-sizing: border-box;\n width: 100%;\n min-width: 0;\n align-self: stretch;\n scrollbar-width: thin;\n}\n\nhtml[data-codex-ui] [data-conversation-scroll] [data-trigger-menu] [role=option] {\n box-sizing: border-box;\n width: 100%;\n min-width: 0;\n min-height: 28px;\n padding: 4px 9px;\n gap: 8px;\n border-radius: calc(var(--dsw-radius-menu) - 5px);\n font-size: 13px;\n line-height: 20px;\n}\n\nhtml[data-codex-ui] [data-conversation-scroll] [data-trigger-menu] [role=option][aria-selected=true] {\n background: color-mix(in srgb, var(--dsw-alias-label-primary) 10%, transparent);\n}\n\nhtml[data-codex-ui] [data-phase=hero] [data-conversation-scroll][class] {\n --dsh-composer-side-clearance: 16px;\n justify-content: flex-start;\n scrollbar-gutter: stable both-edges;\n}\n\nhtml[data-codex-ui] [data-phase=hero] [data-composer-seat] {\n flex: 1 0 auto;\n min-height: 100%;\n}\n\nhtml[data-codex-ui] [data-phase=hero] [data-composer-seat] > :has(> * > [class*=\"_composerHero\"]) {\n display: flex;\n flex: 1;\n flex-direction: column;\n}\n\nhtml[data-codex-ui] [data-phase=hero] [class*=\"_composerHero\"] {\n box-sizing: border-box;\n flex: 1;\n width: 100%;\n max-width: none;\n min-width: 0;\n margin-inline: auto;\n gap: 0;\n padding-bottom: 32px;\n}\n\nhtml[data-codex-ui] [data-phase=hero] [class*=\"_heroWorkspaceRow\"] {\n box-sizing: border-box;\n flex: none;\n width: min(calc(var(--dsh-composer-card-max-width) + 2 * var(--dsh-composer-side-clearance) - 56px), calc(100% - 56px));\n align-self: center;\n justify-content: flex-start;\n flex-wrap: wrap;\n gap: 8px;\n min-height: 48px;\n margin: 0 28px -10px;\n padding: 6px 12px 16px;\n border-radius: var(--dsw-radius-card) var(--dsw-radius-card) 0 0;\n background: color-mix(in srgb, var(--dsw-alias-label-primary) 4%, var(--dsw-alias-bg-base));\n}\n\nhtml[data-codex-ui] [data-phase=hero] [class*=\"_heroWorkspaceRow\"] > [class$=\"_workspace\"] {\n min-width: 0;\n max-width: 100%;\n font-weight: 400;\n}\n\nhtml[data-codex-ui] .cx-form {\n display: flex;\n flex-direction: column;\n margin: 0;\n}\n\nhtml[data-codex-ui] .cx-row {\n display: grid;\n grid-template-columns: minmax(0, 1fr) auto;\n align-items: center;\n column-gap: 16px;\n padding: 10px 0;\n border-bottom: 0.5px solid var(--dsw-alias-border-l1);\n}\n\nhtml[data-codex-ui] .cx-row:last-child {\n border-bottom: none;\n}\n\nhtml[data-codex-ui] .cx-row__text {\n min-width: 0;\n}\n\nhtml[data-codex-ui] .cx-row__label {\n display: flex;\n align-items: center;\n gap: 8px;\n color: var(--dsw-alias-label-primary);\n font-size: 13px;\n line-height: 20px;\n}\n\nhtml[data-codex-ui] .cx-row__desc {\n margin-top: 2px;\n color: var(--dsw-alias-label-tertiary);\n font-size: 11px;\n line-height: 16px;\n}\n\nhtml[data-codex-ui] .cx-row__control {\n display: flex;\n align-items: center;\n gap: 8px;\n justify-self: end;\n}\n\nhtml[data-codex-ui] .cx-swatch {\n width: 24px;\n height: 24px;\n padding: 0;\n border: 0.5px solid var(--dsw-alias-border-l2);\n border-radius: var(--dsw-radius-s);\n background: none;\n cursor: pointer;\n}\n\nhtml[data-codex-ui] .cx-swatch::-webkit-color-swatch-wrapper {\n padding: 2px;\n}\n\nhtml[data-codex-ui] .cx-swatch::-webkit-color-swatch {\n border: none;\n border-radius: calc(var(--dsw-radius-s) - 2px);\n}\n\nhtml[data-codex-ui] .cx-hex {\n width: 96px;\n height: 24px;\n padding: 0 8px;\n border: 0.5px solid var(--dsw-alias-border-l2);\n border-radius: var(--dsw-radius-s);\n background: var(--dsw-alias-bg-base);\n color: var(--dsw-alias-label-primary);\n font-family: var(--ds-font-family-code);\n font-size: 11px;\n letter-spacing: 0.04em;\n}\n\nhtml[data-codex-ui] .cx-hex:focus-visible {\n outline: 2px solid var(--dsw-focus-ring-color);\n outline-offset: 1px;\n}\n\nhtml[data-codex-ui] .cx-text {\n width: 220px;\n height: 24px;\n padding: 0 8px;\n border: 0.5px solid var(--dsw-alias-border-l2);\n border-radius: var(--dsw-radius-s);\n background: var(--dsw-alias-bg-base);\n color: var(--dsw-alias-label-primary);\n font-size: 12px;\n}\n\nhtml[data-codex-ui] .cx-text:focus-visible {\n outline: 2px solid var(--dsw-focus-ring-color);\n outline-offset: 1px;\n}\n\nhtml[data-codex-ui] .cx-range {\n width: 160px;\n accent-color: var(--dsw-alias-link);\n}\n\nhtml[data-codex-ui] .cx-range__value {\n min-width: 24px;\n color: var(--dsw-alias-label-secondary);\n font-family: var(--ds-font-family-code);\n font-size: 11px;\n text-align: right;\n}\n\nhtml[data-codex-ui] .cx-note {\n margin: 0 0 8px;\n color: var(--dsw-alias-label-tertiary);\n font-size: 11px;\n line-height: 16px;\n}\n\nhtml[data-codex-ui] .cx-error {\n margin: 8px 0 0;\n color: var(--dsw-alias-state-error-primary);\n font-size: 11px;\n line-height: 16px;\n}\n"; +const THEME_CSS = "html[data-codex-ui],\nhtml[data-codex-ui] body {\n color-scheme: light;\n\n background-color: #ffffff;\n\n --dsw-alias-bg-base: #ffffff;\n\n --dsw-alias-bg-sidebar: #f6f6f6;\n --dsw-alias-bg-layer-1: #ffffff;\n --dsw-alias-bg-layer-2: #f1f1ef;\n --dsw-alias-bg-layer-3: #e5e5e5;\n --dsw-alias-bg-overlay: rgba(255, 255, 255, 0.88);\n --dsw-alias-bg-module-platform: #f9f9f9;\n --dsw-alias-bg-multi-select: #e5e5e5;\n --dsw-alias-bg-skeleton: rgba(13, 13, 13, 0.05);\n\n --dsw-alias-border-l1: rgba(13, 13, 13, 0.07);\n --dsw-alias-border-l2: rgba(13, 13, 13, 0.12);\n --dsw-alias-border-l3: rgba(13, 13, 13, 0.18);\n --dsw-alias-border-l4: rgba(13, 13, 13, 0.24);\n --dsw-alias-border-l2-darkmode-thin: rgba(13, 13, 13, 0.09);\n\n --dsw-alias-label-primary: #1a1c1f;\n --dsw-alias-label-primary-dimmed: #5d5d5d;\n --dsw-alias-label-primary-inverted: #ffffff;\n --dsw-alias-label-primary-foreground: #ffffff;\n --dsw-alias-label-primary-bluish: #0d0d0d;\n --dsw-alias-label-secondary: #5d5d5d;\n --dsw-alias-label-tertiary: #767676;\n --dsw-alias-label-caption: #767676;\n --dsw-alias-label-dimmed: #c9c9c9;\n\n --dsw-alias-brand-primary: #0d0d0d;\n --dsw-alias-brand-primary-invert: #ffffff;\n --dsw-alias-brand-text: #ffffff;\n --dsw-alias-brand-primary-new-colorprimary-new-color: #0d0d0d;\n --dsw-alias-link: #339cff;\n\n --dsw-alias-button-primary-fill: #0d0d0d;\n --dsw-alias-button-primary-hover: #2a2a2a;\n --dsw-alias-button-primary-dimmed: #e5e5e5;\n --dsw-alias-button-contrast-fill: #0d0d0d;\n --dsw-alias-button-elevated-fill: #ffffff;\n --dsw-alias-button-floating-fill: #ffffff;\n --dsw-alias-button-floating-hover: #f1f1ef;\n --dsw-alias-button-ghost-active-fill: #e5e5e5;\n --dsw-alias-button-ghost-active-hover: #dcdcdc;\n --dsw-alias-button-ghost-active-border: #8f8f8f;\n --dsw-alias-button-info-fill: #0d0d0d;\n --dsw-alias-button-info-hover: #2a2a2a;\n --dsw-alias-button-tool-bar-fill: rgba(13, 13, 13, 0.28);\n --dsw-alias-button-tool-bar-fill-invisible: rgba(13, 13, 13, 0.18);\n --dsw-alias-button-tool-bar-hover: rgba(13, 13, 13, 0.36);\n\n --dsw-alias-interactive-bg-hover: rgba(13, 13, 13, 0.04);\n --dsw-codex-hover-fill: #f2f2f3;\n --dsw-codex-focus: #339cff;\n\n --dsw-focus-ring-color: var(--dsw-codex-focus);\n\n --dsw-codex-border: rgba(13, 13, 13, 0.1);\n --dsw-codex-border-strong: rgba(13, 13, 13, 0.15);\n --dsw-alias-interactive-bg-active: rgba(13, 13, 13, 0.08);\n --dsw-alias-interactive-bg-hover-solid: #f1f1ef;\n --dsw-alias-interactive-bg-hover-accent: rgba(13, 13, 13, 0.06);\n --dsw-alias-interactive-bg-hover-danger: rgba(209, 36, 47, 0.08);\n\n --dsw-alias-markdown-code-block: #f1f1ef;\n --dsw-alias-markdown-code-block-banner: #e5e5e5;\n --dsw-alias-markdown-inline-code: #f1f1ef;\n --dsw-alias-markdown-code-segment-selected: #ffffff;\n --dsw-alias-markdown-code-segment-unselected: #f1f1ef;\n --dsw-alias-markdown-citation: #f1f1ef;\n --dsw-alias-markdown-placeholder: #e5e5e5;\n --dsw-alias-markdown-tag: #f1f1ef;\n\n --dsw-alias-state-success-primary: #1a7f37;\n --dsw-alias-state-success-secondary: #2e9e4c;\n --dsw-alias-state-success-tertiary: rgba(26, 127, 55, 0.08);\n --dsw-alias-state-error-primary: #d1242f;\n --dsw-alias-state-error-secondary: #e5484d;\n --dsw-alias-state-error-tertiary: rgba(209, 36, 47, 0.08);\n --dsw-alias-state-warn-primary: #8f5f00;\n --dsw-alias-state-warn-secondary: #bb8009;\n --dsw-alias-state-warn-tertiary: rgba(143, 95, 0, 0.08);\n --dsw-alias-state-warn-label: #8f5f00;\n --dsw-alias-state-business-primary: #0d0d0d;\n --dsw-alias-state-business-tertiary: rgba(13, 13, 13, 0.08);\n --dsw-alias-state-idle-primary: #767676;\n\n --dsw-alias-code-diff-added: rgba(26, 127, 55, 0.1);\n --dsw-alias-code-diff-deleted: rgba(209, 36, 47, 0.1);\n --dsw-alias-file-diff-added-bg: #e6f4e7;\n --dsw-alias-file-diff-added-gutter: #edf7ed;\n --dsw-alias-file-diff-added-marker: #1a7f37;\n --dsw-alias-file-diff-deleted-bg: #fce6e2;\n --dsw-alias-file-diff-deleted-gutter: #fdece9;\n --dsw-alias-file-diff-deleted-marker: #d1242f;\n\n --dsw-alias-bg-mask-drop: rgba(255, 255, 255, 0.7);\n --dsw-alias-toast-bg: #1e1e1e;\n --dsw-alias-tooltip-bg: #1e1e1e;\n --dsw-alias-tooltip-fg: #ffffff;\n --dsw-alias-hovercard-bg: #ffffff;\n\n --dsw-alias-scrollbar-bg-l1: rgba(118, 118, 118, 0.3);\n --dsw-alias-scrollbar-bg-l2: rgba(118, 118, 118, 0.5);\n --dsw-alias-scrollbar-hover-l1: rgba(13, 13, 13, 0.35);\n --dsw-alias-scrollbar-hover-l2: rgba(13, 13, 13, 0.5);\n\n --dsw-specific-sidebar-fill: #f6f6f6;\n --dsw-specific-sidebar-nav-item-hover: #f0f0f0;\n --dsw-specific-sidebar-nav-item-active: #e9e9e9;\n --dsw-specific-sidebar-nav-item-active-accent: rgba(13, 13, 13, 0.1);\n --dsw-specific-input-major: #ffffff;\n --dsw-composer-surface: #ffffff;\n --dsw-specific-login-input: #f9f9f9;\n --dsw-specific-menu: rgba(255, 255, 255, 0.88);\n --dsw-specific-selector: #f1f1ef;\n --dsw-specific-bubble: #f1f1ef;\n --dsw-specific-bubble-highlight: #e5e5e5;\n --dsw-specific-tip: #f1f1ef;\n\n --dsw-shadow-lv1: 0 1px 2px rgba(13, 13, 13, 0.06);\n --dsw-shadow-lv2: 0 2px 8px rgba(13, 13, 13, 0.08);\n --dsw-shadow-lv3: 0 8px 24px rgba(13, 13, 13, 0.1);\n --dsw-linear-gradient-think: linear-gradient(180deg, #ffffff 20.19%, rgba(255, 255, 255, 0) 100%);\n --dsw-linear-think-select: linear-gradient(180deg, #f1f1ef 20.19%, rgba(241, 241, 239, 0) 100%);\n\n --dsw-codex-ambient: rgba(13, 13, 13, 0.05);\n --dsw-codex-menu-shadow: 0 8px 32px rgba(13, 13, 13, 0.13), 0 0 0 1px rgba(13, 13, 13, 0.04);\n --dsw-codex-suggest-shadow: 0 8px 32px #0002, 0 0 0 1px #0000000a;\n --dsw-codex-suggest-fill: #fff;\n}\n\nhtml[data-codex-ui-switching] *,\nhtml[data-codex-ui-switching] *::before,\nhtml[data-codex-ui-switching] *::after {\n transition: none !important;\n}\n\nhtml[data-codex-ui]:has(body[data-ds-dark-theme]) {\n background-color: #111111;\n}\n\nhtml[data-codex-ui] body[data-ds-dark-theme] {\n color-scheme: dark;\n background-color: #111111;\n\n --dsw-alias-bg-base: #111111;\n --dsw-alias-bg-sidebar: #0f0f0f;\n --dsw-alias-bg-layer-1: #212121;\n --dsw-alias-bg-layer-2: #282828;\n --dsw-alias-bg-layer-3: #303030;\n --dsw-alias-bg-overlay: rgba(24, 24, 24, 0.88);\n --dsw-alias-bg-module-platform: #1f1f1f;\n --dsw-alias-bg-multi-select: #303030;\n --dsw-alias-bg-skeleton: rgba(255, 255, 255, 0.07);\n\n --dsw-alias-border-l1: rgba(255, 255, 255, 0.08);\n --dsw-alias-border-l2: rgba(255, 255, 255, 0.14);\n --dsw-alias-border-l3: rgba(255, 255, 255, 0.2);\n --dsw-alias-border-l4: rgba(255, 255, 255, 0.26);\n --dsw-alias-border-l2-darkmode-thin: rgba(255, 255, 255, 0.1);\n\n --dsw-alias-label-primary: #ffffff;\n --dsw-alias-label-primary-dimmed: #b4b4b4;\n --dsw-alias-label-primary-inverted: #0d0d0d;\n --dsw-alias-label-primary-foreground: #0d0d0d;\n --dsw-alias-label-primary-bluish: #ececec;\n --dsw-alias-label-secondary: #b4b4b4;\n --dsw-alias-label-tertiary: #949494;\n --dsw-alias-label-caption: #949494;\n --dsw-alias-label-dimmed: #4a4a4a;\n\n --dsw-alias-brand-primary: #ffffff;\n --dsw-alias-brand-primary-invert: #0d0d0d;\n --dsw-alias-brand-text: #0d0d0d;\n --dsw-alias-brand-primary-new-colorprimary-new-color: #ffffff;\n --dsw-alias-link: #0169cc;\n\n --dsw-alias-button-primary-fill: #ffffff;\n --dsw-alias-button-primary-hover: #d9d9d9;\n --dsw-alias-button-primary-dimmed: #282828;\n --dsw-alias-button-contrast-fill: #ececec;\n --dsw-alias-button-elevated-fill: #212121;\n --dsw-alias-button-floating-fill: #1f1f1f;\n --dsw-alias-button-floating-hover: #282828;\n --dsw-alias-button-ghost-active-fill: #303030;\n --dsw-alias-button-ghost-active-hover: #383838;\n --dsw-alias-button-ghost-active-border: #7e7e7e;\n --dsw-alias-button-info-fill: #ffffff;\n --dsw-alias-button-info-hover: #d9d9d9;\n --dsw-alias-button-tool-bar-fill: rgba(255, 255, 255, 0.22);\n --dsw-alias-button-tool-bar-fill-invisible: rgba(255, 255, 255, 0.16);\n --dsw-alias-button-tool-bar-hover: rgba(255, 255, 255, 0.28);\n\n --dsw-alias-interactive-bg-hover: rgba(255, 255, 255, 0.06);\n --dsw-codex-hover-fill: rgba(255, 255, 255, 0.08);\n --dsw-codex-focus: rgba(51, 156, 255, 0.7);\n --dsw-codex-border: rgba(255, 255, 255, 0.12);\n --dsw-codex-border-strong: rgba(255, 255, 255, 0.2);\n --dsw-alias-interactive-bg-active: rgba(255, 255, 255, 0.1);\n --dsw-alias-interactive-bg-hover-solid: #282828;\n --dsw-alias-interactive-bg-hover-accent: rgba(255, 255, 255, 0.08);\n --dsw-alias-interactive-bg-hover-danger: rgba(248, 81, 73, 0.12);\n\n --dsw-alias-markdown-code-block: #1f1f1f;\n --dsw-alias-markdown-code-block-banner: #141414;\n --dsw-alias-markdown-inline-code: #282828;\n --dsw-alias-markdown-code-segment-selected: #303030;\n --dsw-alias-markdown-code-segment-unselected: #1f1f1f;\n --dsw-alias-markdown-citation: #212121;\n --dsw-alias-markdown-placeholder: #282828;\n --dsw-alias-markdown-tag: #282828;\n\n --dsw-alias-state-success-primary: #3fb950;\n --dsw-alias-state-success-secondary: #56d364;\n --dsw-alias-state-success-tertiary: rgba(63, 185, 80, 0.16);\n --dsw-alias-state-error-primary: #ff7b72;\n --dsw-alias-state-error-secondary: #ff9492;\n --dsw-alias-state-error-tertiary: rgba(255, 123, 114, 0.16);\n --dsw-alias-state-warn-primary: #d29922;\n --dsw-alias-state-warn-secondary: #e3b341;\n --dsw-alias-state-warn-tertiary: rgba(210, 153, 34, 0.16);\n --dsw-alias-state-warn-label: #d29922;\n --dsw-alias-state-business-primary: #ececec;\n --dsw-alias-state-business-tertiary: rgba(255, 255, 255, 0.12);\n --dsw-alias-state-idle-primary: #7e7e7e;\n\n --dsw-alias-code-diff-added: rgba(63, 185, 80, 0.14);\n --dsw-alias-code-diff-deleted: rgba(248, 81, 73, 0.14);\n --dsw-alias-file-diff-added-bg: #1f3124;\n --dsw-alias-file-diff-added-gutter: #132016;\n --dsw-alias-file-diff-added-marker: #41c977;\n --dsw-alias-file-diff-deleted-bg: #3c1f1b;\n --dsw-alias-file-diff-deleted-gutter: #28130e;\n --dsw-alias-file-diff-deleted-marker: #fa423e;\n\n --dsw-alias-bg-mask-drop: rgba(39, 39, 48, 0.7);\n --dsw-alias-toast-bg: #282828;\n --dsw-alias-tooltip-bg: #212121;\n --dsw-alias-tooltip-fg: #ececec;\n --dsw-alias-hovercard-bg: #212121;\n\n --dsw-alias-scrollbar-bg-l1: rgba(160, 160, 160, 0.3);\n --dsw-alias-scrollbar-bg-l2: rgba(160, 160, 160, 0.5);\n --dsw-alias-scrollbar-hover-l1: rgba(255, 255, 255, 0.35);\n --dsw-alias-scrollbar-hover-l2: rgba(255, 255, 255, 0.5);\n\n --dsw-specific-sidebar-fill: #0f0f0f;\n --dsw-specific-sidebar-nav-item-hover: #171717;\n --dsw-specific-sidebar-nav-item-active: #1f1f1f;\n --dsw-specific-sidebar-nav-item-active-accent: rgba(255, 255, 255, 0.14);\n --dsw-specific-input-major: #212121;\n --dsw-composer-surface: #181818;\n --dsw-specific-login-input: #1f1f1f;\n --dsw-specific-menu: rgba(24, 24, 24, 0.88);\n --dsw-specific-selector: #282828;\n --dsw-specific-bubble: #212121;\n --dsw-specific-bubble-highlight: #282828;\n --dsw-specific-tip: #1f1f1f;\n\n --dsw-shadow-lv1: 0 1px 2px rgba(0, 0, 0, 0.4);\n --dsw-shadow-lv2: 0 2px 8px rgba(0, 0, 0, 0.5);\n --dsw-shadow-lv3: 0 8px 24px rgba(0, 0, 0, 0.6);\n --dsw-linear-gradient-think: linear-gradient(180deg, #212121 20.19%, rgba(33, 33, 33, 0) 100%);\n --dsw-linear-think-select: linear-gradient(180deg, #1f1f1f 20.19%, rgba(40, 40, 40, 0) 100%);\n\n --dsw-codex-ambient: rgba(0, 0, 0, 0.5);\n --dsw-codex-menu-shadow: 0 8px 32px rgba(0, 0, 0, 0.5), 0 0 0 1px rgba(236, 236, 236, 0.05);\n --dsw-codex-suggest-shadow: 0 8px 32px #0003, 0 0 0 1px #ffffff08;\n --dsw-codex-suggest-fill: #292929;\n}\n\nhtml[data-codex-ui],\nhtml[data-codex-ui] body {\n --dsw-space-1: 4px;\n --dsw-space-2: 8px;\n --dsw-space-3: 12px;\n --dsw-space-4: 16px;\n --dsw-space-5: 20px;\n --dsw-space-6: 24px;\n --dsw-space-8: 32px;\n\n --dsw-radius-xs: 4px;\n --dsw-radius-s: 8px;\n --dsw-radius-m: 12px;\n --dsw-radius-l: 16px;\n --dsw-radius-xl: 20px;\n --dsw-radius-2xl: 25px;\n --dsw-radius-menu: 18px;\n\n --dsw-radius-card: var(--dsw-radius-xl);\n --dsw-radius-pill: 999px;\n\n --dsw-content-max-width: 768px;\n\n --dsw-text-2xs: 11px;\n --dsw-text-xs: 12.5px;\n --dsw-text-sm: 13px;\n --dsw-text-base: 14px;\n --dsw-text-lg: 16px;\n --dsw-text-xl: 20px;\n --dsw-text-2xl: 28px;\n --dsw-leading-2xs: 1.3;\n --dsw-leading-xs: 1.4;\n --dsw-leading-base: 1.65;\n --dsw-leading-lg: 1.4;\n --dsw-leading-xl: 1.35;\n --dsw-leading-2xl: 1.25;\n\n --dsw-font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", \"PingFang SC\",\n \"Hiragino Sans GB\", \"Microsoft YaHei\", \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n --ds-font-family-code: \"SF Mono\", \"JetBrains Mono\", \"Fira Code\", Consolas,\n \"Liberation Mono\", Menlo, Courier, \"PingFang SC\", \"Microsoft YaHei\";\n\n --dsw-font-meta: var(--ds-font-family-code);\n --dsw-meta-size: 11px;\n --dsw-meta-weight: 500;\n --dsw-meta-tracking: 0.08em;\n --dsw-meta-tracking-pill: 0.04em;\n\n --dsw-motion-fast: 150ms;\n --dsw-motion-base: 200ms;\n --dsw-motion-slow: 300ms;\n --dsw-ease: cubic-bezier(0.4, 0, 0.2, 1);\n\n --dsh-composer-accessory-radius: var(--dsw-radius-l);\n --dsh-composer-accessory-bg: var(--dsw-alias-bg-layer-2);\n --dsh-composer-accessory-color: var(--dsw-alias-label-secondary);\n --dsh-composer-accessory-border: 0.5px solid var(--dsw-alias-border-l1);\n --dsh-composer-accessory-shadow: none;\n --dsh-composer-accessory-blur: 0px;\n}\n\n@supports (corner-shape: superellipse(1.5)) {\n html[data-codex-ui],\nhtml[data-codex-ui] body {\n --dsw-radius-card: var(--dsw-radius-2xl);\n }\n}\n\nhtml[data-codex-ui] body,\nhtml[data-codex-ui] body * {\n --dsw-elevation-stroke-color: rgba(13, 13, 13, 0.08);\n --dsw-elevation-stroke: 0 0 0 0.5px var(--dsw-elevation-stroke-color);\n --dsw-elevation-panel: var(--dsw-elevation-stroke);\n\n --dsw-elevation-prominent: var(--dsw-elevation-stroke), 0 3px 7.5px #0000000a, 0 0 20px #0000000d;\n}\n\nhtml[data-codex-ui] body[data-ds-dark-theme],\nhtml[data-codex-ui] body[data-ds-dark-theme] * {\n --dsw-elevation-stroke-color: rgba(255, 255, 255, 0.09);\n}\n\nhtml[data-codex-ui],\nhtml[data-codex-ui] body {\n --dsw-font-markdown-h1: 600 calc(21px + var(--dsh-content-font-delta)) / calc(30px + var(--dsh-content-font-delta)) var(--dsw-font-family);\n --dsw-font-markdown-h1-font-weight: 600;\n --dsw-font-markdown-h2: 600 calc(19px + var(--dsh-content-font-delta)) / calc(28px + var(--dsh-content-font-delta)) var(--dsw-font-family);\n --dsw-font-markdown-h2-font-weight: 600;\n --dsw-font-markdown-h3: 600 calc(18px + var(--dsh-content-font-delta)) / calc(26px + var(--dsh-content-font-delta)) var(--dsw-font-family);\n --dsw-font-markdown-h3-font-weight: 600;\n}\n\nhtml[data-codex-ui] :focus-visible {\n outline: 2px solid var(--dsw-focus-ring-color);\n outline-offset: 2px;\n}\n\nhtml[data-codex-ui] a {\n color: var(--dsw-alias-link);\n text-decoration: none;\n text-underline-offset: 2px;\n text-decoration-thickness: 1px;\n}\n\nhtml[data-codex-ui] a:hover,\nhtml[data-codex-ui] a:focus-visible {\n text-decoration: underline;\n}\n\nhtml[data-codex-ui] button,\nhtml[data-codex-ui] a,\nhtml[data-codex-ui] summary,\nhtml[data-codex-ui] [role=\"button\"],\nhtml[data-codex-ui] [role=\"tab\"],\nhtml[data-codex-ui] [role=\"menuitem\"],\nhtml[data-codex-ui] [role=\"option\"] {\n cursor: pointer;\n}\n\nhtml[data-codex-ui] button,\nhtml[data-codex-ui] a,\nhtml[data-codex-ui] summary,\nhtml[data-codex-ui] [role=\"button\"],\nhtml[data-codex-ui] [role=\"tab\"],\nhtml[data-codex-ui] [role=\"menuitem\"] {\n transition:\n background-color var(--dsw-motion-fast) var(--dsw-ease),\n border-color var(--dsw-motion-fast) var(--dsw-ease),\n color var(--dsw-motion-fast) var(--dsw-ease),\n opacity var(--dsw-motion-fast) var(--dsw-ease),\n box-shadow var(--dsw-motion-fast) var(--dsw-ease);\n}\n\nhtml[data-codex-ui] button:disabled,\nhtml[data-codex-ui] button[aria-disabled=\"true\"],\nhtml[data-codex-ui] [aria-disabled=\"true\"] {\n cursor: not-allowed;\n opacity: 0.45;\n}\n\nhtml[data-codex-ui] [data-slot=\"web-ui.plugin.item\"] > *,\nhtml[data-codex-ui] [data-dsh-part=\"card\"],\nhtml[data-codex-ui] [data-dsh-part=\"column\"],\nhtml[data-codex-ui] [data-dsh-part=\"status\"],\nhtml[data-codex-ui] [data-dsh-part=\"today-card\"],\nhtml[data-codex-ui] [data-dsh-part=\"balance-card\"],\nhtml[data-codex-ui] [data-dsh-part=\"trend-card\"],\nhtml[data-codex-ui] [data-dsh-part=\"plan-card\"],\nhtml[data-codex-ui] [data-dsh-part=\"bank-card\"] {\n background: var(--dsw-alias-bg-layer-1);\n border: 0.5px solid var(--dsw-alias-border-l1);\n border-radius: var(--dsw-radius-m);\n box-shadow: var(--dsw-elevation-panel);\n padding: var(--dsw-space-4);\n}\n\nhtml[data-codex-ui] [role=\"dialog\"],\nhtml[data-codex-ui] [data-dsh-surface=\"overlay\"] [data-dsh-part=\"panel\"] {\n border-radius: var(--dsw-radius-l);\n}\n\nhtml[data-codex-ui] [data-dsh-part=\"composer-chip\"],\nhtml[data-codex-ui] [data-dsh-part=\"chip\"],\nhtml[data-codex-ui] [data-dsh-part=\"ref\"],\nhtml[data-codex-ui] [data-dsh-part=\"tag-chip\"],\nhtml[data-codex-ui] [data-dsh-part=\"tag-badge\"] {\n font-family: var(--dsw-font-meta);\n font-size: var(--dsw-meta-size);\n font-weight: var(--dsw-meta-weight);\n letter-spacing: var(--dsw-meta-tracking-pill);\n border-radius: var(--dsw-radius-pill);\n}\n\nhtml[data-codex-ui] [data-dsh-part=\"tag-chip\"][data-tag-tone=\"0\"],\nhtml[data-codex-ui] [data-dsh-part=\"tag-badge\"][data-tag-tone=\"0\"] {\n background: var(--dsw-alias-bg-layer-2);\n color: var(--dsw-alias-label-secondary);\n}\n\nhtml[data-codex-ui] [data-dsh-part=\"tag-chip\"][data-tag-tone=\"1\"],\nhtml[data-codex-ui] [data-dsh-part=\"tag-badge\"][data-tag-tone=\"1\"] {\n background: var(--dsw-alias-state-success-tertiary);\n color: var(--dsw-alias-state-success-primary);\n}\n\nhtml[data-codex-ui] [data-dsh-part=\"tag-chip\"][data-tag-tone=\"2\"],\nhtml[data-codex-ui] [data-dsh-part=\"tag-badge\"][data-tag-tone=\"2\"] {\n background: var(--dsw-alias-state-warn-tertiary);\n color: var(--dsw-alias-state-warn-primary);\n}\n\nhtml[data-codex-ui] [data-dsh-part=\"tag-chip\"][data-tag-tone=\"3\"],\nhtml[data-codex-ui] [data-dsh-part=\"tag-badge\"][data-tag-tone=\"3\"] {\n background: var(--dsw-alias-state-error-tertiary);\n color: var(--dsw-alias-state-error-primary);\n}\n\nhtml[data-codex-ui] [data-dsh-part=\"tag-chip\"][data-tag-tone=\"4\"],\nhtml[data-codex-ui] [data-dsh-part=\"tag-badge\"][data-tag-tone=\"4\"] {\n background: var(--dsw-alias-state-business-tertiary);\n color: var(--dsw-alias-label-primary);\n}\n\nhtml[data-codex-ui] [data-dsh-part=\"tag-chip\"][data-tag-tone=\"5\"],\nhtml[data-codex-ui] [data-dsh-part=\"tag-badge\"][data-tag-tone=\"5\"] {\n background: var(--dsw-alias-bg-layer-3);\n color: var(--dsw-alias-label-tertiary);\n}\n\nhtml[data-codex-ui] [data-dsh-surface=\"sidebar\"],\nhtml[data-codex-ui] [data-slot=\"sidebar.workspaces\"] {\n background-color: var(--dsw-alias-bg-sidebar);\n}\n\nhtml[data-codex-ui] [data-dsh-part=\"sidebar-entry\"],\nhtml[data-codex-ui] [data-dsh-surface=\"sidebar\"] [role=\"button\"] {\n border-radius: var(--dsw-radius-s);\n}\n\nhtml[data-codex-ui] [data-dsh-surface=\"composer\"] [data-dsh-part=\"composer-input\"] {\n border-radius: var(--dsw-radius-l);\n}\n\nhtml[data-codex-ui] [data-dsh-part=\"composer-input\"] {\n font-family: var(--dsw-font-family);\n line-height: var(--dsw-leading-base);\n}\n\nhtml[data-codex-ui] [data-dsh-part=\"turn-tail\"],\nhtml[data-codex-ui] [data-dsh-part=\"queue-dock\"],\nhtml[data-codex-ui] [data-dsh-part=\"usage-chart\"],\nhtml[data-codex-ui] [data-dsh-part=\"voucher-preview\"] {\n font-family: var(--dsw-font-meta);\n}\n\nhtml[data-codex-ui] [data-dsh-part=\"composer-chip\"] {\n text-transform: uppercase;\n letter-spacing: var(--dsw-meta-tracking);\n}\n\nhtml[data-codex-ui] :lang(zh) [data-dsh-part=\"composer-chip\"],\nhtml[data-codex-ui] :lang(zh) [data-dsh-part=\"chip\"],\nhtml[data-codex-ui] :lang(zh) [data-dsh-part=\"ref\"],\nhtml[data-codex-ui] :lang(zh) [data-dsh-part=\"tag-chip\"],\nhtml[data-codex-ui] :lang(zh) [data-dsh-part=\"tag-badge\"] {\n letter-spacing: 0;\n text-transform: none;\n}\n\n@media (prefers-reduced-motion: reduce) {\n html[data-codex-ui] *,\nhtml[data-codex-ui] *::before,\nhtml[data-codex-ui] *::after {\n animation-duration: 0.01ms !important;\n animation-iteration-count: 1 !important;\n transition-duration: 0.01ms !important;\n scroll-behavior: auto !important;\n }\n}\n\nhtml[data-codex-ui] [data-slot=\"conversation.input.model\"] button:focus-visible {\n outline: 1px solid var(--dsw-focus-ring-color);\n outline-offset: 1px;\n box-shadow: none;\n}\n\nhtml[data-codex-ui] body > div[role=\"menu\"][aria-busy] {\n\n --dsw-menu-surface-fill: var(--dsw-alias-bg-layer-1);\n --dsw-menu-backdrop-filter: none;\n\n background: var(--dsw-alias-bg-layer-1);\n padding: 5px;\n border-radius: var(--dsw-radius-menu);\n box-shadow: var(--dsw-codex-menu-shadow);\n color: var(--dsw-alias-label-primary);\n}\n\nhtml[data-codex-ui] body > div[role=\"menu\"][aria-busy] button[role=\"menuitem\"],\nhtml[data-codex-ui] body > div[role=\"menu\"][aria-busy] button[role=\"menuitemradio\"] {\n box-sizing: border-box;\n min-height: 28px;\n padding: 4px 9px;\n gap: 8px;\n border: 0;\n border-radius: calc(var(--dsw-radius-menu) - 5px);\n background: none;\n color: inherit;\n font-size: 13px;\n line-height: 20px;\n text-align: left;\n}\n\nhtml[data-codex-ui] body > div[role=\"menu\"][aria-busy] button[role=\"menuitem\"]:hover,\nhtml[data-codex-ui] body > div[role=\"menu\"][aria-busy] button[role=\"menuitemradio\"]:hover:not(:disabled),\nhtml[data-codex-ui] body > div[role=\"menu\"][aria-busy] button[role=\"menuitemradio\"][aria-checked=\"true\"] {\n background: var(--dsw-alias-interactive-bg-active);\n}\n\nhtml[data-codex-ui] body > div[role=\"menu\"][aria-busy] button[role=\"menuitem\"]:focus-visible,\nhtml[data-codex-ui] body > div[role=\"menu\"][aria-busy] button[role=\"menuitemradio\"]:focus-visible {\n outline: 1px solid var(--dsw-focus-ring-color);\n outline-offset: -1px;\n background: var(--dsw-alias-interactive-bg-active);\n}\n\nhtml[data-codex-ui] body > div[role=\"menu\"][aria-busy] button[role=\"menuitemradio\"]:disabled {\n opacity: 1;\n}\n\nhtml[data-codex-ui] body > div[role=\"menu\"][aria-busy=\"true\"] button[role=\"menuitemradio\"][aria-checked=\"true\"] > span:last-child {\n position: relative;\n}\n\nhtml[data-codex-ui] body > div[role=\"menu\"][aria-busy=\"true\"] button[role=\"menuitemradio\"][aria-checked=\"true\"] > span:last-child > svg {\n visibility: hidden;\n}\n\nhtml[data-codex-ui] body > div[role=\"menu\"][aria-busy=\"true\"] button[role=\"menuitemradio\"][aria-checked=\"true\"] > span:last-child::after {\n content: \"\";\n position: absolute;\n inset: 0;\n box-sizing: border-box;\n width: 12px;\n height: 12px;\n margin: auto;\n border: 1.5px solid var(--dsw-alias-border-l3);\n border-top-color: var(--dsw-alias-label-primary);\n border-radius: 50%;\n animation: codex-ui-spin 1s linear infinite;\n}\n\nhtml[data-codex-ui] body > div[role=\"menu\"][aria-busy=\"true\"] button[role=\"menuitemradio\"]:disabled {\n cursor: progress;\n}\n\n@keyframes codex-ui-spin {\n to {\n transform: rotate(1turn);\n }\n}\n\nhtml[data-codex-ui] [data-slot=\"conversation.session.header\"] > [data-conversation-tabs] {\n display: none;\n}\n\nhtml[data-codex-ui] header:has([data-conversation-header-leading]):has([data-conversation-tabs]) {\n min-height: 0;\n padding-bottom: 10px;\n}\n\nhtml[data-codex-ui] [data-dsh-part=\"new-session\"] {\n border: 0;\n background: transparent;\n box-shadow: none;\n border-radius: var(--dsw-radius-s);\n justify-content: flex-start;\n color: var(--dsw-alias-label-primary);\n}\n\nhtml[data-codex-ui] [data-dsh-part=\"new-session\"]:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\nhtml[data-codex-ui] [data-slot=\"conversation.composer.dock\"] {\n display: none;\n}\n\nhtml[data-codex-ui] [data-conversation-header-corner] {\n margin-left: 0;\n margin-right: 0;\n}\n\nhtml[data-codex-ui] [data-sidebar-right-expand] svg {\n transform: scaleX(-1);\n}\n\nhtml[data-codex-ui] [data-animating] {\n transition: grid-template-columns 500ms cubic-bezier(.16, 1, .3, 1);\n}\n\nhtml[data-codex-ui] [data-animating] [data-side] {\n transition: left 500ms cubic-bezier(.16, 1, .3, 1);\n}\n\nhtml[data-codex-ui] [data-dragging],\nhtml[data-codex-ui] [data-rightbar-instant],\nhtml[data-codex-ui] [data-rightbar-fullscreen],\nhtml[data-codex-ui] [data-dragging] [data-side],\nhtml[data-codex-ui] [data-rightbar-instant] [data-side],\nhtml[data-codex-ui] [data-rightbar-fullscreen] [data-side] {\n transition: none;\n}\n\n@media (prefers-reduced-motion: reduce) {\n html[data-codex-ui] [data-animating],\nhtml[data-codex-ui] [data-animating] [data-side] {\n transition: none;\n }\n}\n\nhtml[data-codex-ui] [data-sidebar-right-guide] > span[aria-hidden=\"true\"] {\n display: none;\n}\n\nhtml[data-codex-ui] [data-sidebar-right-guide]::after {\n display: none;\n}\n\nhtml[data-codex-ui] [data-sidebar-right-guide-entry] {\n box-sizing: border-box;\n width: 380px;\n max-width: 100%;\n min-height: 52px;\n gap: 14px;\n padding: 0 20px;\n border: 0;\n border-radius: var(--dsw-radius-m);\n background: transparent;\n color: var(--dsw-alias-label-primary);\n font-size: 14px;\n}\n\nhtml[data-codex-ui] [data-sidebar-right-guide-entry]:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\nhtml[data-codex-ui] [data-sidebar-right-guide-entry] > span:first-child {\n width: 20px;\n height: 20px;\n}\n\nhtml[data-codex-ui] [data-sidebar-right-guide-entry] > span:first-child svg {\n width: 20px;\n height: 20px;\n}\n\nhtml[data-codex-ui] [data-sidebar-right-guide-entry] > span:nth-child(2) {\n gap: 0;\n}\n\nhtml[data-codex-ui] [data-sidebar-right-guide-entry] > span:nth-child(2) > span:nth-child(2) {\n display: none;\n}\n\nhtml[data-codex-ui] [data-sidebar-right-guide-entry=\"terminal\"] > span:nth-child(2) {\n width: 20px;\n height: 20px;\n}\n\nhtml[data-codex-ui] [data-sidebar-right-guide-entry=\"terminal\"] > span:nth-child(2) svg {\n width: 20px;\n height: 20px;\n}\n\nhtml[data-codex-ui] [data-sidebar-right-guide-entry=\"terminal\"] > span:nth-child(3) > span:nth-child(2) {\n display: none;\n}\n\nhtml[data-codex-ui] [data-sidebar-right-guide-entry] > span:has(kbd) {\n display: inline-flex;\n flex: none;\n align-items: center;\n gap: 3px;\n height: 24px;\n padding: 0 10px;\n border-radius: var(--dsw-radius-m);\n background: var(--dsw-alias-bg-layer-2);\n color: var(--dsw-alias-label-tertiary);\n font-size: 12px;\n line-height: 16px;\n white-space: nowrap;\n}\n\nhtml[data-codex-ui] [data-sidebar-right-guide-entry] kbd {\n display: inline;\n min-width: 0;\n padding: 0;\n border: 0;\n border-radius: 0;\n background: transparent;\n color: inherit;\n font: inherit;\n}\n\nhtml[data-codex-ui] [data-sidebar-right-toggle] {\n background: var(--dsw-alias-bg-layer-2);\n border-radius: var(--dsw-radius-m);\n}\n\nhtml[data-codex-ui] [data-composer-card] button[class$=\"_add\"],\nhtml[data-codex-ui] [data-composer-card] button[class$=\"_trigger\"] {\n transition: background-color var(--dsw-motion-fast) var(--dsw-ease);\n border-radius: var(--dsw-radius-pill);\n}\n\nhtml[data-codex-ui] [data-composer-card] button[class$=\"_add\"] {\n background: transparent;\n}\n\nhtml[data-codex-ui] [data-composer-card] button[class$=\"_add\"]:hover,\nhtml[data-codex-ui] [data-composer-card] button[class$=\"_add\"][aria-expanded=\"true\"],\nhtml[data-codex-ui] [data-composer-card] button[class$=\"_trigger\"]:hover,\nhtml[data-codex-ui] [data-composer-card] button[class$=\"_trigger\"][aria-expanded=\"true\"] {\n background: var(--dsw-codex-hover-fill);\n}\n\nhtml[data-codex-ui] [data-slot=\"conversation.input.model\"][data-codex-ui-seated] > :not(.codex-mp-trigger) {\n display: none;\n}\n\nhtml[data-codex-ui] .codex-mp-trigger {\n box-sizing: border-box;\n display: inline-flex;\n align-items: center;\n gap: 4px;\n height: 28px;\n min-width: 0;\n max-width: min(360px, 45cqw);\n padding: 0 4px 0 8px;\n border: 0;\n border-radius: var(--dsw-radius-pill);\n background: transparent;\n color: var(--dsw-alias-label-secondary);\n font-family: inherit;\n font-size: 13px;\n font-weight: 400;\n line-height: 20px;\n cursor: pointer;\n transition: background-color var(--dsw-motion-fast) var(--dsw-ease);\n}\n\nhtml[data-codex-ui] .codex-mp-trigger:hover,\nhtml[data-codex-ui] .codex-mp-trigger[aria-expanded=\"true\"] {\n background: var(--dsw-codex-hover-fill);\n}\n\nhtml[data-codex-ui] .codex-mp-trigger-model {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\nhtml[data-codex-ui] .codex-mp-effort-layers {\n display: grid;\n grid-template-columns: max-content;\n flex-shrink: 1000;\n width: max-content;\n min-width: 0;\n overflow: hidden;\n color: var(--dsw-alias-label-caption);\n}\n\nhtml[data-codex-ui] .codex-mp-effort-layers[hidden] {\n display: none;\n}\n\nhtml[data-codex-ui] .codex-mp-effort-text {\n grid-area: 1 / 1;\n justify-self: center;\n opacity: 0;\n filter: blur(4px);\n white-space: nowrap;\n will-change: opacity, filter;\n transition:\n opacity var(--dsw-motion-slow) var(--dsw-ease),\n filter var(--dsw-motion-slow) var(--dsw-ease);\n}\n\nhtml[data-codex-ui] .codex-mp-effort-text[data-active=\"true\"] {\n opacity: 1;\n filter: none;\n}\n\nhtml[data-codex-ui] .codex-mp-trigger-chevron {\n display: inline-flex;\n flex: none;\n color: var(--dsw-alias-label-caption);\n transition: transform 120ms var(--dsw-ease);\n}\n\nhtml[data-codex-ui] .codex-mp-trigger[aria-expanded=\"true\"] .codex-mp-trigger-chevron {\n transform: rotate(180deg);\n}\n\nhtml[data-codex-ui] .codex-mp-popover {\n position: fixed;\n z-index: 1100;\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n width: calc(4px * 63.5);\n max-width: calc(100vw - 24px);\n max-height: min(360px, 100vh - 96px);\n padding: 5px;\n border-radius: var(--dsw-radius-menu);\n background: var(--dsw-alias-bg-layer-1);\n color: var(--dsw-alias-label-primary);\n box-shadow: var(--dsw-codex-menu-shadow);\n font-size: 13px;\n line-height: 20px;\n transform-origin: bottom right;\n animation: codex-mp-enter 0.32s cubic-bezier(0.23, 1, 0.32, 1) 30ms both;\n}\n\nhtml[data-codex-ui] .codex-mp-popover[hidden] {\n display: none;\n}\n\nhtml[data-codex-ui] .codex-mp-popover[data-reduced-motion=\"true\"] {\n animation: none;\n}\n\n@keyframes codex-mp-enter {\n from {\n opacity: 0;\n transform: scale(0.98);\n }\n\n to {\n opacity: 1;\n transform: none;\n }\n}\n\nhtml[data-codex-ui] .codex-mp-error {\n flex: none;\n margin-bottom: 3px;\n padding: 6px 9px;\n border-radius: calc(var(--dsw-radius-menu) - 5px);\n background: var(--dsw-alias-interactive-bg-hover-danger);\n color: var(--dsw-alias-state-error-primary);\n font-size: 11px;\n line-height: 16px;\n}\n\nhtml[data-codex-ui] .codex-mp-error[hidden] {\n display: none;\n}\n\nhtml[data-codex-ui] .codex-mp-list {\n min-height: 0;\n overflow-y: auto;\n scrollbar-width: thin;\n}\n\nhtml[data-codex-ui] .codex-mp-status {\n padding: 8px 9px;\n color: var(--dsw-alias-label-tertiary);\n font-size: 12px;\n line-height: 18px;\n}\n\nhtml[data-codex-ui] .codex-mp-retry {\n padding: 0;\n border: 0;\n background: none;\n color: inherit;\n font: inherit;\n font-weight: 600;\n cursor: pointer;\n}\n\nhtml[data-codex-ui] .codex-mp-group {\n padding: 4px 9px 2px;\n color: var(--dsw-alias-label-tertiary);\n font-size: 11px;\n font-weight: 500;\n line-height: 16px;\n}\n\nhtml[data-codex-ui] .codex-mp-group:not(:first-child) {\n margin-top: 3px;\n}\n\nhtml[data-codex-ui] .codex-mp-row {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n gap: 8px;\n width: 100%;\n min-height: 28px;\n padding: 4px 9px;\n border: 0;\n border-radius: calc(var(--dsw-radius-menu) - 5px);\n background: none;\n color: inherit;\n font-family: inherit;\n font-size: 13px;\n line-height: 20px;\n text-align: left;\n cursor: pointer;\n}\n\nhtml[data-codex-ui] .codex-mp-row:hover,\nhtml[data-codex-ui] .codex-mp-row[aria-checked=\"true\"] {\n background: var(--dsw-alias-interactive-bg-active);\n}\n\nhtml[data-codex-ui] .codex-mp-row:focus-visible {\n outline: 1px solid var(--dsw-focus-ring-color);\n outline-offset: -1px;\n background: var(--dsw-alias-interactive-bg-active);\n}\n\nhtml[data-codex-ui] .codex-mp-row[aria-busy=\"true\"] {\n cursor: progress;\n}\n\nhtml[data-codex-ui] .codex-mp-row-copy {\n display: flex;\n flex: 1;\n flex-direction: column;\n min-width: 0;\n}\n\nhtml[data-codex-ui] .codex-mp-row-name {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-weight: 500;\n}\n\nhtml[data-codex-ui] .codex-mp-row-desc {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n color: var(--dsw-alias-label-tertiary);\n font-size: 12px;\n line-height: 18px;\n}\n\nhtml[data-codex-ui] .codex-mp-row-check {\n display: grid;\n flex: 0 0 14px;\n place-items: center;\n color: var(--dsw-alias-label-primary);\n}\n\nhtml[data-codex-ui] .codex-mp-spinner {\n box-sizing: border-box;\n display: inline-block;\n flex: none;\n width: 12px;\n height: 12px;\n border: 1.5px solid var(--dsw-alias-border-l3);\n border-top-color: var(--dsw-alias-label-primary);\n border-radius: 50%;\n animation: codex-ui-spin 1s linear infinite;\n}\n\nhtml[data-codex-ui] .codex-mp-effort {\n flex: none;\n margin-top: 5px;\n padding-top: 5px;\n border-top: 0.5px solid var(--dsw-alias-border-l1);\n}\n\nhtml[data-codex-ui] .codex-mp-effort[hidden] {\n display: none;\n}\n\nhtml[data-codex-ui] .codex-mp-effort {\n --codex-mp-apex: #8b7ad0;\n --codex-mp-apex-flash: #d9d2f5;\n --codex-mp-apex-ink: #5f51b5;\n}\n\nhtml[data-codex-ui] body[data-ds-dark-theme] .codex-mp-effort {\n --codex-mp-apex: #9d8ce0;\n --codex-mp-apex-flash: #e6e0fb;\n --codex-mp-apex-ink: #b9adf0;\n}\n\nhtml[data-codex-ui] .codex-mp-effort-head {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n min-height: 28px;\n padding: 4px 9px;\n color: var(--dsw-alias-label-secondary);\n}\n\nhtml[data-codex-ui] .codex-mp-effort-value {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n color: var(--dsw-alias-label-tertiary);\n}\n\nhtml[data-codex-ui] .codex-mp-container {\n position: relative;\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n justify-content: center;\n height: 32px;\n margin-inline: 2px;\n padding-block: 2px;\n padding-inline: 6px;\n}\n\nhtml[data-codex-ui] .codex-mp-root {\n --codex-mp-motion-duration: 0.18s;\n --codex-mp-motion-easing: cubic-bezier(0.22, 0.61, 0.36, 1);\n --codex-mp-tick-transform-duration: 0.12s;\n --codex-mp-thumb-motion-duration: 0s;\n position: relative;\n display: flex;\n align-items: center;\n width: 100%;\n height: 30px;\n outline: none;\n touch-action: none;\n cursor: pointer;\n}\n\nhtml[data-codex-ui] .codex-mp-root[data-armed=\"true\"] {\n --codex-mp-thumb-motion-duration: var(--codex-mp-motion-duration);\n}\n\nhtml[data-codex-ui] .codex-mp-root[data-dragging=\"true\"],\nhtml[data-codex-ui] .codex-mp-root[data-dragging=\"true\"] .codex-mp-tick {\n cursor: grabbing;\n}\n\nhtml[data-codex-ui] .codex-mp-root[data-disabled=\"true\"] {\n opacity: 0.6;\n}\n\nhtml[data-codex-ui] .codex-mp-popover[data-reduced-motion=\"true\"] .codex-mp-root {\n --codex-mp-motion-duration: 0s;\n --codex-mp-tick-transform-duration: 0s;\n --codex-mp-thumb-motion-duration: 0s;\n}\n\nhtml[data-codex-ui] .codex-mp-track {\n position: relative;\n flex-grow: 1;\n height: 30px;\n}\n\nhtml[data-codex-ui] .codex-mp-track::before {\n content: \"\";\n position: absolute;\n left: 0;\n right: 0;\n top: 50%;\n height: 26px;\n margin-top: -13px;\n border-radius: 8px;\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\nhtml[data-codex-ui] .codex-mp-range {\n position: absolute;\n left: 0;\n top: 50%;\n height: 26px;\n margin-top: -13px;\n width: calc(8px + (100% - 16px) * var(--codex-mp-pos, 0));\n border-radius: 8px 0 0 8px;\n background: color-mix(in srgb, var(--dsw-alias-label-primary) 26%, transparent);\n transition: width var(--codex-mp-thumb-motion-duration) var(--codex-mp-motion-easing);\n pointer-events: none;\n}\n\nhtml[data-codex-ui] .codex-mp-matrix {\n position: absolute;\n left: 0;\n right: 0;\n top: 50%;\n height: 26px;\n margin-top: -13px;\n border-radius: 8px;\n overflow: hidden;\n box-sizing: border-box;\n display: none;\n pointer-events: none;\n}\n\nhtml[data-codex-ui] .codex-mp-root[data-tier=\"max\"] .codex-mp-matrix {\n display: grid;\n grid-auto-flow: row;\n}\n\nhtml[data-codex-ui] .codex-mp-matrix-cell {\n animation: codex-mp-cell-in 0.15s ease both;\n}\n\n@keyframes codex-mp-cell-in {\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n}\n\nhtml[data-codex-ui] .codex-mp-matrix-sq {\n width: 100%;\n height: 100%;\n border-radius: 1px;\n background-color: var(--codex-mp-apex);\n --codex-mp-flash-light: var(--codex-mp-apex-flash);\n animation: codex-mp-flash 1.45s infinite ease-in-out;\n}\n\nhtml[data-codex-ui] .codex-mp-matrix-sq[data-tone=\"0\"] { --codex-mp-flash-light: color-mix(in srgb, var(--codex-mp-apex) 62%, var(--codex-mp-apex-flash)); }\nhtml[data-codex-ui] .codex-mp-matrix-sq[data-tone=\"1\"] { --codex-mp-flash-light: color-mix(in srgb, var(--codex-mp-apex) 54%, var(--codex-mp-apex-flash)); }\nhtml[data-codex-ui] .codex-mp-matrix-sq[data-tone=\"2\"] { --codex-mp-flash-light: color-mix(in srgb, var(--codex-mp-apex) 46%, var(--codex-mp-apex-flash)); }\nhtml[data-codex-ui] .codex-mp-matrix-sq[data-tone=\"3\"] { --codex-mp-flash-light: color-mix(in srgb, var(--codex-mp-apex) 38%, var(--codex-mp-apex-flash)); }\nhtml[data-codex-ui] .codex-mp-matrix-sq[data-tone=\"4\"] { --codex-mp-flash-light: color-mix(in srgb, var(--codex-mp-apex) 30%, var(--codex-mp-apex-flash)); }\nhtml[data-codex-ui] .codex-mp-matrix-sq[data-tone=\"5\"] { --codex-mp-flash-light: color-mix(in srgb, var(--codex-mp-apex) 22%, var(--codex-mp-apex-flash)); }\nhtml[data-codex-ui] .codex-mp-matrix-sq[data-tone=\"6\"] { --codex-mp-flash-light: color-mix(in srgb, var(--codex-mp-apex) 14%, var(--codex-mp-apex-flash)); }\nhtml[data-codex-ui] .codex-mp-matrix-sq[data-tone=\"7\"] { --codex-mp-flash-light: color-mix(in srgb, var(--codex-mp-apex) 6%, var(--codex-mp-apex-flash)); }\n\n@keyframes codex-mp-flash {\n 0%,\n 17.24% {\n background-color: var(--codex-mp-apex);\n }\n\n 17.25%,\n 50.34% {\n background-color: var(--codex-mp-flash-light);\n }\n\n 100% {\n background-color: var(--codex-mp-apex);\n }\n}\n\nhtml[data-codex-ui] .codex-mp-tick {\n position: absolute;\n top: 50%;\n width: 4px;\n height: 4px;\n margin-top: -2px;\n border-radius: 50%;\n background: color-mix(in srgb, var(--dsw-alias-label-primary) 26%, transparent);\n transform: translateX(-50%);\n pointer-events: none;\n}\n\nhtml[data-codex-ui] .codex-mp-tick::before {\n content: \"\";\n position: absolute;\n inset: -6px;\n}\n\nhtml[data-codex-ui] .codex-mp-thumb-scale {\n position: absolute;\n top: 50%;\n left: calc(8px + (100% - 16px) * var(--codex-mp-pos, 0));\n width: 16px;\n height: 30px;\n margin-top: -15px;\n border-radius: 5px;\n transform: translateX(-50%);\n pointer-events: none;\n will-change: left;\n transition: left var(--codex-mp-thumb-motion-duration) var(--codex-mp-motion-easing);\n}\n\nhtml[data-codex-ui] .codex-mp-thumb {\n position: absolute;\n inset: 0;\n box-sizing: border-box;\n display: block;\n border-radius: 5px;\n background: var(--dsw-static-neutral-bluish-00, #ffffff);\n box-shadow:\n 0 1px 3px rgb(20 20 19 / 28%),\n 0 0 0 1px rgb(20 20 19 / 6%);\n}\n\nhtml[data-codex-ui] body[data-ds-dark-theme] .codex-mp-thumb {\n box-shadow:\n 0 1px 3px rgb(0 0 0 / 55%),\n 0 0 0 1px rgb(0 0 0 / 40%);\n}\n\nhtml[data-codex-ui] .codex-mp-root[data-tier=\"max\"] .codex-mp-range,\nhtml[data-codex-ui] .codex-mp-root[data-tier=\"max\"] .codex-mp-tick {\n opacity: 0;\n}\n\nhtml[data-codex-ui] .codex-mp-root[data-tier=\"max\"] .codex-mp-thumb {\n background: color-mix(in srgb, var(--codex-mp-apex) 22%, #ffffff);\n box-shadow:\n 0 0 10px color-mix(in srgb, var(--codex-mp-apex) 80%, transparent),\n 0 0 0 1px color-mix(in srgb, var(--codex-mp-apex) 35%, transparent);\n}\n\nhtml[data-codex-ui] .codex-mp-effort[data-tier=\"max\"] .codex-mp-effort-value {\n color: var(--codex-mp-apex-ink);\n}\n\nhtml[data-codex-ui] .codex-mp-root[data-keyboard-focused=\"true\"] .codex-mp-thumb-scale {\n outline: 2px solid var(--dsw-focus-ring-color);\n outline-offset: 0;\n}\n\nhtml[data-codex-ui] .codex-mp-root[data-unset] .codex-mp-thumb-scale,\nhtml[data-codex-ui] .codex-mp-root[data-unset] .codex-mp-range {\n visibility: hidden;\n}\n\nhtml[data-codex-ui] .codex-mp-ends {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n padding: 0 9px 2px;\n font-size: 11px;\n line-height: 14px;\n color: var(--dsw-alias-label-caption);\n}\n\nhtml[data-codex-ui] .codex-mp-value-text {\n animation: codex-mp-value-in 0.28s ease;\n}\n\nhtml[data-codex-ui] .codex-mp-effort-ghost {\n position: absolute;\n left: 0;\n top: 0;\n white-space: nowrap;\n pointer-events: none;\n color: inherit;\n animation: codex-mp-value-out 0.28s ease forwards;\n}\n\n@keyframes codex-mp-value-in {\n from {\n filter: blur(4px);\n opacity: 0;\n transform: translateY(5px);\n }\n\n to {\n filter: blur(0);\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n@keyframes codex-mp-value-out {\n from {\n filter: blur(0);\n opacity: 1;\n transform: translateY(0);\n }\n\n to {\n filter: blur(4px);\n opacity: 0;\n transform: translateY(-5px);\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n html[data-codex-ui] .codex-mp-matrix-cell,\nhtml[data-codex-ui] .codex-mp-matrix-sq,\nhtml[data-codex-ui] .codex-mp-value-text,\nhtml[data-codex-ui] .codex-mp-effort-ghost {\n animation: none;\n }\n}\n\nhtml[data-codex-ui] .codex-mp-popover[data-reduced-motion=\"true\"] .codex-mp-matrix-cell,\nhtml[data-codex-ui] .codex-mp-popover[data-reduced-motion=\"true\"] .codex-mp-matrix-sq,\nhtml[data-codex-ui] .codex-mp-popover[data-reduced-motion=\"true\"] .codex-mp-value-text,\nhtml[data-codex-ui] .codex-mp-popover[data-reduced-motion=\"true\"] .codex-mp-effort-ghost {\n animation: none;\n}\n\nhtml[data-codex-ui] [data-slot=\"sidebar\"] > div:not([class*=\"_collapsed\"]) > button {\n box-sizing: border-box;\n height: auto;\n min-height: 36px;\n flex: none;\n background: 0 0;\n border: none;\n border-radius: var(--dsw-radius-s);\n justify-content: flex-start;\n align-items: center;\n gap: 6px;\n\n margin: 0 2px 4px 0;\n padding: 7px 8px;\n font: inherit;\n line-height: 22px;\n text-align: left;\n color: var(--dsw-alias-label-primary);\n cursor: pointer;\n overflow: hidden;\n}\n\nhtml[data-codex-ui] [data-slot=\"sidebar\"] > div:not([class*=\"_collapsed\"]) > button:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\nhtml[data-codex-ui] [data-slot=\"sidebar\"] > div:not([class*=\"_collapsed\"]) > button:focus-visible {\n outline: 2px solid var(--dsw-focus-ring-color);\n outline-offset: -2px;\n}\n\nhtml[data-codex-ui] [data-slot=\"sidebar\"] > div:not([class*=\"_collapsed\"]) > button > svg {\n width: 16px;\n height: 16px;\n flex: none;\n}\n\nhtml[data-codex-ui] [data-slot=\"sidebar\"] > div:not([class*=\"_collapsed\"]) > button > span {\n max-width: none;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\nhtml[data-codex-ui] [data-slot=\"sidebar\"] > div:not([class*=\"_collapsed\"]) > button > span > span:has(> svg) {\n justify-content: flex-start;\n width: auto;\n}\n\nhtml[data-codex-ui] [data-slot=\"sidebar\"] > div:not([class*=\"_collapsed\"]) > button > span > span > svg {\n width: 16px;\n height: 16px;\n flex: none;\n}\n\nhtml[data-codex-ui] [data-slot=\"sidebar\"] > div:not([class*=\"_collapsed\"]) > button > span > span > span {\n max-width: none;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\nhtml[data-codex-ui] [data-slot=\"sidebar\"] > div:not([class*=\"_collapsed\"]) > nav > button {\n gap: 6px;\n margin-left: 0;\n}\n\nhtml[data-codex-ui] div > [data-slot=\"sidebar.workspaces\"] [class$=\"_fade\"] {\n display: none;\n}\n\nhtml[data-codex-ui] div > [data-slot=\"sidebar.workspaces\"] [class$=\"_list\"] {\n -webkit-mask-image:\n linear-gradient(\n to bottom,\n #000 0,\n #000 calc(100% - 40px),\n #000000e0 calc(100% - 24px),\n #00000085 calc(100% - 12px),\n #0000002e calc(100% - 4px),\n #00000000 100%\n ),\n linear-gradient(#000, #000);\n mask-image:\n linear-gradient(\n to bottom,\n #000 0,\n #000 calc(100% - 40px),\n #000000e0 calc(100% - 24px),\n #00000085 calc(100% - 12px),\n #0000002e calc(100% - 4px),\n #00000000 100%\n ),\n linear-gradient(#000, #000);\n -webkit-mask-size: calc(100% - var(--dsh-session-list-edge-inset, 12px)) 100%, var(--dsh-session-list-edge-inset, 12px) 100%;\n mask-size: calc(100% - var(--dsh-session-list-edge-inset, 12px)) 100%, var(--dsh-session-list-edge-inset, 12px) 100%;\n -webkit-mask-position: 0 0, 100% 0;\n mask-position: 0 0, 100% 0;\n -webkit-mask-repeat: no-repeat, no-repeat;\n mask-repeat: no-repeat, no-repeat;\n}\n\nhtml[data-codex-ui][data-windows-titlebar] div:has(> [data-slot=\"main\"]),\nhtml[data-codex-ui][data-windows-titlebar] div:has(> [data-slot=\"sidebar\"]) + div,\nhtml[data-codex-ui][data-platform=\"win32\"]:not([data-windows-titlebar]) div:has(> [data-slot=\"main\"]),\nhtml[data-codex-ui][data-platform=\"win32\"]:not([data-windows-titlebar]) div:has(> [data-slot=\"sidebar\"]) + div {\n position: relative;\n box-shadow:\n 0 0 0 0.5px var(--dsw-alias-border-l2),\n 0 0 13px rgba(13, 13, 13, 0.07);\n}\n\nhtml[data-codex-ui][data-windows-titlebar] body[data-ds-dark-theme] div:has(> [data-slot=\"main\"]),\nhtml[data-codex-ui][data-windows-titlebar] body[data-ds-dark-theme] div:has(> [data-slot=\"sidebar\"]) + div,\nhtml[data-codex-ui][data-platform=\"win32\"]:not([data-windows-titlebar]) body[data-ds-dark-theme] div:has(> [data-slot=\"main\"]),\nhtml[data-codex-ui][data-platform=\"win32\"]:not([data-windows-titlebar]) body[data-ds-dark-theme] div:has(> [data-slot=\"sidebar\"]) + div {\n box-shadow:\n 0 0 0 0.5px var(--dsw-alias-border-l2),\n 0 0 24px rgba(0, 0, 0, 0.5);\n}\n\nhtml[data-codex-ui][data-windows-titlebar] [data-sidebar-right-panel=\"push\"][data-sidebar-right-open],\nhtml[data-codex-ui][data-platform=\"win32\"]:not([data-windows-titlebar]) [data-sidebar-right-panel=\"push\"][data-sidebar-right-open] {\n box-shadow:\n 0 0 0 0.5px var(--dsw-alias-border-l1),\n 0 -12px 24px -12px var(--dsw-codex-ambient);\n}\n\nhtml[data-codex-ui] [data-sidebar-right-panel=\"push\"][data-sidebar-right-open] [data-dockkit-pane][data-dockkit-column=\"0\"] {\n border-left: 0;\n}\n\nhtml[data-codex-ui] [data-side=\"rightbar\"]::before {\n content: \"\";\n position: absolute;\n top: 0;\n bottom: 0;\n left: 50%;\n width: 2px;\n translate: -50% 0;\n border-radius: 1px;\n background: linear-gradient(to bottom, rgba(13, 13, 13, 0.09), rgba(13, 13, 13, 0.27) 50%, rgba(13, 13, 13, 0.09));\n opacity: 0;\n scale: 1 0.35;\n transform-origin: center;\n transition: opacity var(--dsw-motion-base) var(--dsw-ease), scale var(--dsw-motion-slow) var(--dsw-ease);\n pointer-events: none;\n}\n\nhtml[data-codex-ui] [data-side=\"rightbar\"]:hover::before {\n opacity: 1;\n scale: 1 1;\n}\n\nhtml[data-codex-ui] body[data-ds-dark-theme] [data-side=\"rightbar\"]::before {\n background: linear-gradient(to bottom, rgba(236, 236, 236, 0.08), rgba(236, 236, 236, 0.24) 50%, rgba(236, 236, 236, 0.08));\n}\n\nhtml[data-codex-ui][data-platform=\"win32\"]:not([data-windows-titlebar]) div:has(> [data-slot=\"sidebar\"]) {\n border-right-color: var(--dsw-alias-border-l1);\n}\n\nhtml[data-codex-ui] [data-conversation-scroll] {\n --dsh-composer-card-max-width: calc(var(--dsh-chat-content-width) + 32px);\n --dsh-composer-side-clearance: 24px;\n\n --dcu-composer-bg: var(--dsw-composer-surface);\n\n --dcu-composer-shadow: 0 0 0 0.5px rgba(13, 13, 13, 0.1), 0 2px 12px 0 rgba(0, 0, 0, 0.09);\n}\n\nhtml[data-codex-ui] body[data-ds-dark-theme] [data-conversation-scroll] {\n --dcu-composer-bg: color-mix(in srgb, var(--dsw-alias-label-primary) 5%, var(--dsw-composer-surface));\n --dcu-composer-shadow: inset 0 0 1px 0 #fff3;\n}\n\nhtml[data-codex-ui] [data-conversation-scroll] [data-composer-card] {\n padding-top: 12px;\n gap: 4px;\n border: 0;\n border-radius: var(--dsw-radius-card);\n background: var(--dcu-composer-bg);\n box-shadow: var(--dcu-composer-shadow);\n}\n\n@supports (corner-shape: superellipse(1.5)) {\n html[data-codex-ui] [data-conversation-scroll] [data-composer-card] {\n corner-shape: superellipse(1.5);\n }\n}\n\n@media (forced-colors: active) {\n html[data-codex-ui] [data-conversation-scroll] [data-composer-card] {\n outline: 1px solid CanvasText;\n }\n}\n\nhtml[data-codex-ui] [data-conversation-scroll] [data-composer-card] [data-input-scroll] {\n margin-right: 0;\n}\n\nhtml[data-codex-ui] [data-conversation-scroll] [data-input-scroll] [data-lexical-editor=true] {\n min-height: 44px;\n padding: 0 12px;\n}\n\nhtml[data-codex-ui] [data-conversation-scroll] [data-composer-placeholder] {\n inset: 0 12px auto;\n}\n\nhtml[data-codex-ui] [data-conversation-scroll] [data-composer-card] > [data-input-scroll] + div {\n padding: 0 8px 8px;\n gap: 5px;\n}\n\nhtml[data-codex-ui] [data-conversation-scroll] [data-composer-card] > [data-input-scroll] + div > div {\n gap: 4px;\n}\n\nhtml[data-codex-ui] [data-conversation-scroll] [data-composer-card] > [data-input-scroll] + div > div > div {\n gap: 4px;\n}\n\nhtml[data-codex-ui] [data-conversation-scroll] [data-composer-card] > [data-input-scroll] + div button:not([role]),\nhtml[data-codex-ui] [data-conversation-scroll] [data-composer-card] > [data-input-scroll] + div select:not([role]) {\n min-height: 28px;\n height: 28px;\n}\n\nhtml[data-codex-ui] [data-conversation-scroll] [data-composer-card] > [data-input-scroll] + div button[class$=_primary] {\n width: 28px;\n transform: none;\n background: var(--dsw-alias-label-primary);\n color: var(--dsw-alias-bg-base);\n}\n\nhtml[data-codex-ui] [data-conversation-scroll] [data-composer-card] > [data-input-scroll] + div button[class$=_primary]:hover:not(:disabled) {\n background: var(--dsw-alias-label-secondary);\n}\n\nhtml[data-codex-ui] [data-conversation-scroll] [data-composer-card] > [data-input-scroll] + div button:focus-visible,\nhtml[data-codex-ui] [data-conversation-scroll] [data-composer-card] > [data-input-scroll] + div select:focus-visible {\n outline: 2px solid var(--dsw-focus-ring-color);\n outline-offset: 2px;\n}\n\nhtml[data-codex-ui] [class*=\"_heroWorkspaceRow\"] button {\n min-height: 28px;\n border-radius: var(--dsw-radius-pill);\n font-size: 13px;\n line-height: 20px;\n}\n\nhtml[data-codex-ui] [class*=\"_heroWorkspaceRow\"] button:hover,\nhtml[data-codex-ui] [class*=\"_heroWorkspaceRow\"] button[aria-expanded=true] {\n background: color-mix(in srgb, var(--dsw-alias-label-primary) 8%, transparent);\n}\n\nhtml[data-codex-ui] [data-conversation-scroll] [data-trigger-menu] {\n box-sizing: border-box;\n left: 0;\n right: 0;\n width: auto;\n min-width: 0;\n max-width: none;\n padding: 5px;\n border-radius: var(--dsw-radius-menu);\n background: var(--dsw-codex-suggest-fill);\n box-shadow: var(--dsw-codex-suggest-shadow);\n}\n\nhtml[data-codex-ui] [data-conversation-scroll] [data-trigger-menu] > [role=listbox] {\n box-sizing: border-box;\n width: 100%;\n min-width: 0;\n align-self: stretch;\n scrollbar-width: thin;\n}\n\nhtml[data-codex-ui] [data-conversation-scroll] [data-trigger-menu] [role=option] {\n box-sizing: border-box;\n width: 100%;\n min-width: 0;\n min-height: 28px;\n padding: 4px 9px;\n gap: 8px;\n border-radius: calc(var(--dsw-radius-menu) - 5px);\n font-size: 13px;\n line-height: 20px;\n}\n\nhtml[data-codex-ui] [data-conversation-scroll] [data-trigger-menu] [role=option][aria-selected=true] {\n background: color-mix(in srgb, var(--dsw-alias-label-primary) 10%, transparent);\n}\n\nhtml[data-codex-ui] [data-phase=hero] [data-conversation-scroll][class] {\n --dsh-composer-side-clearance: 16px;\n justify-content: flex-start;\n scrollbar-gutter: stable both-edges;\n}\n\nhtml[data-codex-ui] [data-phase=hero] [data-composer-seat] {\n flex: 1 0 auto;\n min-height: 100%;\n}\n\nhtml[data-codex-ui] [data-phase=hero] [data-composer-seat] > :has(> * > [class*=\"_composerHero\"]) {\n display: flex;\n flex: 1;\n flex-direction: column;\n}\n\nhtml[data-codex-ui] [data-phase=hero] [class*=\"_composerHero\"] {\n box-sizing: border-box;\n flex: 1;\n width: 100%;\n max-width: none;\n min-width: 0;\n margin-inline: auto;\n gap: 0;\n padding-bottom: 32px;\n}\n\nhtml[data-codex-ui] [data-phase=hero] [class*=\"_heroWorkspaceRow\"] {\n box-sizing: border-box;\n flex: none;\n width: min(calc(var(--dsh-composer-card-max-width) + 2 * var(--dsh-composer-side-clearance) - 56px), calc(100% - 56px));\n align-self: center;\n justify-content: flex-start;\n flex-wrap: wrap;\n gap: 8px;\n min-height: 48px;\n margin: 0 28px -10px;\n padding: 6px 12px 16px;\n border-radius: var(--dsw-radius-card) var(--dsw-radius-card) 0 0;\n background: color-mix(in srgb, var(--dsw-alias-label-primary) 4%, var(--dsw-alias-bg-base));\n}\n\nhtml[data-codex-ui] [data-phase=hero] [class*=\"_heroWorkspaceRow\"] > [class$=\"_workspace\"] {\n min-width: 0;\n max-width: 100%;\n font-weight: 400;\n}\n\nhtml[data-codex-ui] .cx-form {\n display: flex;\n flex-direction: column;\n margin: 0;\n}\n\nhtml[data-codex-ui] .cx-row {\n display: grid;\n grid-template-columns: minmax(0, 1fr) auto;\n align-items: center;\n column-gap: 16px;\n padding: 10px 0;\n border-bottom: 0.5px solid var(--dsw-alias-border-l1);\n}\n\nhtml[data-codex-ui] .cx-row:last-child {\n border-bottom: none;\n}\n\nhtml[data-codex-ui] .cx-row__text {\n min-width: 0;\n}\n\nhtml[data-codex-ui] .cx-row__label {\n display: flex;\n align-items: center;\n gap: 8px;\n color: var(--dsw-alias-label-primary);\n font-size: 13px;\n line-height: 20px;\n}\n\nhtml[data-codex-ui] .cx-row__desc {\n margin-top: 2px;\n color: var(--dsw-alias-label-tertiary);\n font-size: 11px;\n line-height: 16px;\n}\n\nhtml[data-codex-ui] .cx-row__control {\n display: flex;\n align-items: center;\n gap: 8px;\n justify-self: end;\n}\n\nhtml[data-codex-ui] .cx-swatch {\n width: 24px;\n height: 24px;\n padding: 0;\n border: 0.5px solid var(--dsw-alias-border-l2);\n border-radius: var(--dsw-radius-s);\n background: none;\n cursor: pointer;\n}\n\nhtml[data-codex-ui] .cx-swatch::-webkit-color-swatch-wrapper {\n padding: 2px;\n}\n\nhtml[data-codex-ui] .cx-swatch::-webkit-color-swatch {\n border: none;\n border-radius: calc(var(--dsw-radius-s) - 2px);\n}\n\nhtml[data-codex-ui] .cx-hex {\n width: 96px;\n height: 24px;\n padding: 0 8px;\n border: 0.5px solid var(--dsw-alias-border-l2);\n border-radius: var(--dsw-radius-s);\n background: var(--dsw-alias-bg-base);\n color: var(--dsw-alias-label-primary);\n font-family: var(--ds-font-family-code);\n font-size: 11px;\n letter-spacing: 0.04em;\n}\n\nhtml[data-codex-ui] .cx-hex:focus-visible {\n outline: 2px solid var(--dsw-focus-ring-color);\n outline-offset: 1px;\n}\n\nhtml[data-codex-ui] .cx-text {\n width: 220px;\n height: 24px;\n padding: 0 8px;\n border: 0.5px solid var(--dsw-alias-border-l2);\n border-radius: var(--dsw-radius-s);\n background: var(--dsw-alias-bg-base);\n color: var(--dsw-alias-label-primary);\n font-size: 12px;\n}\n\nhtml[data-codex-ui] .cx-text:focus-visible {\n outline: 2px solid var(--dsw-focus-ring-color);\n outline-offset: 1px;\n}\n\nhtml[data-codex-ui] .cx-range {\n width: 160px;\n accent-color: var(--dsw-alias-link);\n}\n\nhtml[data-codex-ui] .cx-range__value {\n min-width: 24px;\n color: var(--dsw-alias-label-secondary);\n font-family: var(--ds-font-family-code);\n font-size: 11px;\n text-align: right;\n}\n\nhtml[data-codex-ui] .cx-note {\n margin: 0 0 8px;\n color: var(--dsw-alias-label-tertiary);\n font-size: 11px;\n line-height: 16px;\n}\n\nhtml[data-codex-ui] .cx-error {\n margin: 8px 0 0;\n color: var(--dsw-alias-state-error-primary);\n font-size: 11px;\n line-height: 16px;\n}\n\nhtml[data-codex-ui] {\r\n\r\n --cx-sm-sidebar-w: 236px;\r\n --cx-sm-row-h: 46px;\r\n --cx-sm-panel-w: 760px;\r\n --cx-sm-gutter: 24px;\r\n --cx-sm-radius-card: var(--dsw-radius-m, 12px);\r\n\r\n --cx-sm-radius-field: 10px;\r\n --cx-sm-radius-pill: 999px;\r\n\r\n}\r\n\r\n@media (max-width: 900px) {\r\n html[data-codex-ui] {\r\n --cx-sm-sidebar-w: 196px;\r\n --cx-sm-gutter: 14px;\r\n }\r\n}\r\n\r\n\r\n\r\n\r\nhtml[data-codex-ui] div[data-cx-sm-panel] {\r\n --cx-sm-surface-backdrop: var(--dsw-alias-bg-sidebar);\r\n\r\n --cx-sm-card-edge: var(--dsw-alias-bg-sidebar);\r\n\r\n --dsw-alias-bg-layer-2: var(--dsw-alias-bg-layer-1);\r\n --dsw-alias-bg-layer-3: var(--dsw-alias-bg-layer-1);\r\n}\r\n\r\n\r\nhtml[data-codex-ui] body[data-ds-dark-theme] div[data-cx-sm-panel] {\r\n --cx-sm-card-edge: var(--dsw-alias-border-l1);\r\n}\r\n\r\nhtml[data-codex-ui] div[data-cx-sm-panel] {\r\n position: fixed;\r\n inset: 0;\r\n box-sizing: border-box;\r\n width: auto;\r\n height: auto;\r\n max-width: none;\r\n max-height: none;\r\n border-radius: 0;\r\n box-shadow: none;\r\n overflow: hidden;\r\n\r\n background: var(--cx-sm-surface-backdrop);\r\n}\r\n\r\n\r\nhtml[data-codex-ui][data-windows-titlebar] div[data-cx-sm-panel] {\r\n padding-top: var(--dsh-windows-titlebar-height, 40px);\r\n}\r\n\r\n\r\nhtml[data-codex-ui][data-windows-titlebar] div[data-cx-sm-panel] button,\nhtml[data-codex-ui][data-windows-titlebar] div[data-cx-sm-panel] input,\nhtml[data-codex-ui][data-windows-titlebar] div[data-cx-sm-panel] a {\r\n -webkit-app-region: no-drag;\r\n}\r\n\r\n\r\n\r\nhtml[data-codex-ui] div[data-cx-sm-panel] > nav {\r\n position: relative;\r\n box-sizing: border-box;\r\n flex: 0 0 var(--cx-sm-sidebar-w);\r\n width: var(--cx-sm-sidebar-w);\r\n min-height: 0;\r\n padding: 12px 12px 16px;\r\n gap: 8px;\r\n background: none;\r\n overflow: hidden;\r\n}\r\n\r\n\r\nhtml[data-codex-ui] div[data-cx-sm-panel] > nav > div:not([data-codex-ui-injected]):not(:has(> button)) {\r\n position: absolute;\r\n width: 1px;\r\n height: 1px;\r\n margin: -1px;\r\n padding: 0;\r\n overflow: hidden;\r\n clip-path: inset(50%);\r\n white-space: nowrap;\r\n}\r\n\r\n\r\nhtml[data-codex-ui] div[data-cx-sm-panel] > nav > div:has(> button),\nhtml[data-codex-ui] div[data-cx-sm-panel] > nav > div:last-child {\r\n box-sizing: border-box;\r\n min-height: 0;\r\n flex: 1 1 auto;\r\n gap: 2px;\r\n}\r\n\r\n\r\nhtml[data-codex-ui] div[data-cx-sm-panel] > nav > div:has(> button) > button {\r\n box-sizing: border-box;\r\n width: 100%;\r\n min-height: 32px;\r\n padding: 6px 10px;\r\n gap: 9px;\r\n border: 0;\r\n border-radius: var(--dsw-radius-s, 8px);\r\n background: none;\r\n color: var(--dsw-alias-label-secondary);\r\n font-size: 14px;\r\n line-height: 20px;\r\n text-align: left;\r\n}\r\n\r\n\r\nhtml[data-codex-ui] div[data-cx-sm-panel] > nav > div:has(> button) > button:hover {\r\n background: var(--dsw-alias-interactive-bg-hover);\r\n color: var(--dsw-alias-label-primary);\r\n}\r\n\r\n\r\nhtml[data-codex-ui] div[data-cx-sm-panel] > nav > div:has(> button) > button[aria-current=\"true\"] {\r\n background: var(--dsw-alias-interactive-bg-active);\r\n color: var(--dsw-alias-label-primary);\r\n font-weight: 500;\r\n}\r\n\r\nhtml[data-codex-ui] div[data-cx-sm-panel] > nav > div:has(> button) > button[aria-current=\"true\"]:hover {\r\n background: var(--dsw-alias-interactive-bg-active);\r\n}\r\n\r\nhtml[data-codex-ui] div[data-cx-sm-panel] > nav > div:has(> button) > button:focus-visible {\r\n outline-offset: -2px;\r\n}\r\n\r\n\r\nhtml[data-codex-ui] div[data-cx-sm-panel] > nav > div:has(> button) > button svg {\r\n width: 16px;\r\n height: 16px;\r\n flex: 0 0 auto;\r\n stroke-width: 1.4;\r\n opacity: 0.72;\r\n}\r\n\r\nhtml[data-codex-ui] div[data-cx-sm-panel] > nav > div:has(> button) > button:hover svg,\nhtml[data-codex-ui] div[data-cx-sm-panel] > nav > div:has(> button) > button[aria-current=\"true\"] svg {\r\n opacity: 1;\r\n}\r\n\r\n\r\nhtml[data-codex-ui] .cx-sm-group {\r\n margin: 12px 0 4px;\r\n padding: 0 10px;\r\n color: var(--dsw-alias-label-caption);\r\n font-size: 12px;\r\n line-height: 18px;\r\n font-weight: 500;\r\n letter-spacing: 0.01em;\r\n user-select: none;\r\n}\r\n\r\nhtml[data-codex-ui] :lang(zh) .cx-sm-group {\r\n letter-spacing: 0;\r\n}\r\n\r\n\r\nhtml[data-codex-ui] .cx-sm-search + .cx-sm-group {\r\n margin-top: 4px;\r\n}\r\n\r\n\r\nhtml[data-codex-ui] .cx-sm-back {\r\n display: flex;\r\n align-items: center;\r\n gap: 6px;\r\n box-sizing: border-box;\r\n width: fit-content;\r\n min-height: 28px;\r\n padding: 2px 6px 2px 4px;\r\n border-radius: var(--dsw-radius-s, 8px);\r\n color: var(--dsw-alias-label-secondary);\r\n font-size: 13px;\r\n line-height: 20px;\r\n cursor: pointer;\r\n user-select: none;\r\n}\r\n\r\nhtml[data-codex-ui] .cx-sm-back:hover {\r\n background: var(--dsw-alias-interactive-bg-hover);\r\n color: var(--dsw-alias-label-primary);\r\n}\r\n\r\nhtml[data-codex-ui] .cx-sm-back svg {\r\n width: 14px;\r\n height: 14px;\r\n flex: 0 0 auto;\r\n stroke-width: 1.6;\r\n opacity: 0.8;\r\n}\r\n\r\n\r\n\r\nhtml[data-codex-ui] .cx-sm-search {\r\n display: flex;\r\n align-items: center;\r\n gap: 8px;\r\n box-sizing: border-box;\r\n width: 100%;\r\n height: 32px;\r\n\r\n padding: 0 14px;\r\n border: 0;\r\n border-radius: var(--cx-sm-radius-pill);\r\n background: var(--dsw-alias-bg-layer-1);\r\n color: var(--dsw-alias-label-tertiary);\r\n}\r\n\r\nhtml[data-codex-ui] .cx-sm-search:focus-within {\r\n box-shadow: inset 0 0 0 1px var(--dsw-alias-border-l3);\r\n}\r\n\r\nhtml[data-codex-ui] .cx-sm-search svg {\r\n width: 14px;\r\n height: 14px;\r\n flex: 0 0 auto;\r\n stroke-width: 1.6;\r\n opacity: 0.7;\r\n}\r\n\r\nhtml[data-codex-ui] .cx-sm-search input {\r\n box-sizing: border-box;\r\n flex: 1 1 auto;\r\n min-width: 0;\r\n height: 100%;\r\n padding: 0;\r\n border: 0;\r\n outline: 0;\r\n background: none;\r\n color: var(--dsw-alias-label-primary);\r\n font: inherit;\r\n font-size: 13px;\r\n line-height: 20px;\r\n}\r\n\r\nhtml[data-codex-ui] .cx-sm-search input::placeholder {\r\n color: var(--dsw-alias-label-caption);\r\n}\r\n\r\n\r\n\r\n\r\nhtml[data-codex-ui] div[data-cx-sm-panel] > div:last-child {\r\n box-sizing: border-box;\r\n flex: 1 1 auto;\r\n min-width: 0;\r\n min-height: 0;\r\n\r\n background: var(--dsw-alias-bg-base);\r\n\r\n overflow: hidden;\r\n}\r\n\r\n\r\nhtml[data-codex-ui] div[data-cx-sm-panel] > div:last-child > div:first-child {\r\n box-sizing: border-box;\r\n flex: 0 0 auto;\r\n align-items: center;\r\n min-height: 52px;\r\n padding: 12px var(--cx-sm-gutter) 8px;\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nhtml[data-codex-ui] div[data-cx-sm-panel] > div:last-child > div:last-child {\r\n box-sizing: border-box;\r\n flex: 1 1 auto;\r\n min-height: 0;\r\n padding: 2px var(--cx-sm-gutter) 0;\r\n}\r\n\r\n\r\nhtml[data-codex-ui] div[data-cx-sm-panel] > div:last-child > div:last-child [data-slot=\"settings.section\"] > * {\r\n box-sizing: border-box;\r\n width: 100%;\r\n max-width: var(--cx-sm-panel-w);\r\n margin-left: auto;\r\n margin-right: auto;\r\n\r\n padding-bottom: 40px;\r\n}\r\n\r\n\r\nhtml[data-codex-ui] div[data-cx-sm-panel] [data-slot=\"settings.action\"] button {\r\n box-sizing: border-box;\r\n height: 32px;\r\n padding: 0 12px;\r\n\r\n white-space: nowrap;\r\n border: 0.5px solid var(--dsw-alias-border-l2);\r\n border-radius: var(--dsw-radius-s, 8px);\r\n background: var(--dsw-alias-button-elevated-fill);\r\n color: var(--dsw-alias-label-primary);\r\n font-size: 13px;\r\n line-height: 1;\r\n cursor: pointer;\r\n}\r\n\r\nhtml[data-codex-ui] div[data-cx-sm-panel] [data-slot=\"settings.action\"] button:hover {\r\n background: var(--dsw-alias-interactive-bg-hover);\r\n border-color: var(--dsw-alias-border-l3);\r\n}\r\n\r\n\r\nhtml[data-codex-ui] div[data-cx-sm-panel] button:has([data-slot=\"settings.close\"]) {\r\n display: none;\r\n}\r\n\r\n\r\nhtml[data-codex-ui] .cx-sm-pagehead {\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n gap: 16px;\r\n box-sizing: border-box;\r\n width: 100%;\r\n min-height: 36px;\r\n margin: 0 0 12px;\r\n}\r\n\r\nhtml[data-codex-ui] .cx-sm-title,\nhtml[data-codex-ui] .cx-sm-pagehead > h1,\nhtml[data-codex-ui] .cx-sm-pagehead > h2 {\r\n margin: 0;\r\n padding: 0;\r\n color: var(--dsw-alias-label-primary);\r\n\r\n font-size: 20px;\r\n line-height: 26px;\r\n font-weight: 600;\r\n letter-spacing: -0.01em;\r\n}\r\n\r\nhtml[data-codex-ui] :lang(zh) .cx-sm-title,\nhtml[data-codex-ui] :lang(zh) .cx-sm-pagehead > h1,\nhtml[data-codex-ui] :lang(zh) .cx-sm-pagehead > h2 {\r\n letter-spacing: 0;\r\n}\r\n\r\n\r\n\r\n\r\n\r\nhtml[data-codex-ui] div[data-cx-sm-panel] [data-slot=\"settings.section\"] > * {\r\n box-sizing: border-box;\r\n width: 100%;\r\n gap: 0;\r\n padding-top: 2px;\r\n}\r\n\r\n\r\n\r\nhtml[data-codex-ui] div[data-cx-sm-panel] [data-slot=\"settings.general.item\"] > * {\r\n box-sizing: border-box;\r\n min-height: var(--cx-sm-row-h);\r\n padding: 8px 16px;\r\n border-style: solid;\r\n border-color: var(--cx-sm-card-edge);\r\n border-width: 0.5px 0;\r\n\r\n background: var(--dsw-alias-bg-layer-1);\r\n transition: background-color var(--dsw-motion-fast, 150ms) var(--dsw-ease, ease);\r\n}\r\n\r\n\r\nhtml[data-codex-ui] div[data-cx-sm-panel] [data-slot=\"settings.section\"] > :first-child > [data-slot=\"settings.general.item\"] > *:first-child {\r\n border-top-width: 0.5px;\r\n border-left-width: 0.5px;\r\n border-right-width: 0.5px;\r\n border-radius: var(--cx-sm-radius-card) var(--cx-sm-radius-card) 0 0;\r\n}\r\n\r\n\r\nhtml[data-codex-ui] div[data-cx-sm-panel] [data-slot=\"settings.section\"] > :first-child > [data-slot=\"settings.general.item\"] > *:last-child {\r\n border-bottom-width: 0.5px;\r\n border-left-width: 0.5px;\r\n border-right-width: 0.5px;\r\n border-radius: 0 0 var(--cx-sm-radius-card) var(--cx-sm-radius-card);\r\n}\r\n\r\n\r\n html[data-codex-ui] ._card { background: var(--dsw-alias-settings-card-fill) }\r\n html[data-codex-ui] ._cardActive { background: var(--dsw-alias-bg-module-platform) }\r\n html[data-codex-ui] —— 它们**吃令牌**,不是硬编码灰。该令牌由宿主主题包 dsh-client-ui-theme 在\r\n **body** 上声明为 var(--dsw-alias-settings-card-fill: var(--dsw-alias-bg-layer-2));\r\n 本机 app.asar 全文扫描里,该令牌的**声明**只有这一处,另 4 处都是 background 消费点。\r\n 皮肤把它同名重定义成 layer-1(skin.css:html[data-codex-ui],\nhtml[data-codex-ui] body),\r\n 特异性与顺序都压过宿主的 body 声明 —— 白卡 / 深色 #212121 因此**自动生效**。\r\n\r\n 旧注释怎么错的(一并记下,免得后人再被同一个坑骗):\r\n 旧文写「#f3f3f3 硬编码、换色试验证明不走任何令牌」。那个换色试验是在 §4.3 规则**还在**的\r\n 前提下做的 —— §4.3 以特异性 (0,3,3) 压过宿主的 (0,1,0),无论令牌被改成什么,卡都会保持\r\n §4.3 写死的 layer-1,于是「0 个元素跟随」是这条规则生效的**必然结果**,推不出「卡不读令牌」。\r\n 定案靠的是宿主源码里那两条 background 声明,不是那个试验。\r\n (二审结论见 docs/recon/second-pass-review.md 的 M1/M2。)\r\n\r\n **删除理由**(三条,任一条都够):\r\n ① 同值重复:皮肤已把该令牌定成 layer-1,§1 的 layer-2/3→layer-1 重定向同样落上去,\r\n 这条规则写的是**同一个值**,三层路径同值,将来改一处根本无法判断谁在生效;\r\n ② 覆盖面无意义:它靠特异性 (0,3,3) 压过宿主 .rowCard/.card 的 (0,1,0),\r\n 而值相同 —— 赢了也没有任何视觉差异;\r\n ③ **会漂**:[class$=\"_card\"] 匹配的是「整条 class 属性以该后缀结尾」,\r\n 覆盖面随宿主状态类的书写顺序漂移。实测 Agent 预设的选中卡是\r\n class=\"rtSEdW_card rtSEdW_cardActive\"(以 _cardActive 结尾)→ 今天**不命中**、\r\n 靠宿主自己的 .cardActive {background: var(--dsw-alias-bg-module-platform)} html[data-codex-ui] 保住选中底色,\r\n 纯属侥幸;一旦宿主把状态类挪到前面,选中卡会被压成 layer-1,**选中态视觉当场丢失,\r\n 而没有任何断言会红**。删除即消除这条会随宿主改版静默劣化的路径。\r\n\r\n 删除后的着色机制**唯一**:--dsw-alias-settings-card-fill(skin.css 定义)\r\n → 未选中卡 = layer-1(浅 #ffffff / 深 #212121)。选中卡保持宿主自己的\r\n bg-module-platform(浅 #f9f9f9)—— 与未选中卡不同色,选中态仍可区分。\r\n 这条路径由 scripts/settings-modal-verify.mjs 的两条集成断言把守\r\n (未选中卡 == var(--dsw-alias-bg-layer-1) 的计算值;选中卡背景 ≠ 未选中卡背景)。 */\r\n\r\n\r\nhtml[data-codex-ui] div[data-cx-sm-panel] [data-slot=\"settings.section\"] > :first-child > [data-slot=\"settings.general.item\"] > *:not(:first-child):not(:last-child) {\r\n border-radius: 0;\r\n}\r\n\r\n\r\nhtml[data-codex-ui] div[data-cx-sm-panel] [data-slot=\"settings.general.item\"] > *:hover {\r\n background: var(--dsw-alias-interactive-bg-hover);\r\n}\r\n\r\n\r\nhtml[data-codex-ui] div[data-cx-sm-panel] [data-slot=\"settings.general.item\"] > * > :first-child > div:not(:first-child) {\r\n color: var(--dsw-alias-label-caption);\r\n}\r\n\r\n\r\n\r\n\r\nhtml[data-codex-ui] [data-cx-sm-hidden],\nhtml[data-codex-ui] .cx-sm-hidden {\r\n display: none !important;\r\n}\r\n\r\nhtml[data-codex-ui] .cx-sm-empty {\r\n box-sizing: border-box;\r\n padding: 32px 8px;\r\n color: var(--dsw-alias-label-tertiary);\r\n font-size: 13px;\r\n line-height: 20px;\r\n text-align: center;\r\n}\r\n\r\n\r\n\r\nhtml[data-codex-ui] [data-codex-ui-injected=\"settings-modal\"],\nhtml[data-codex-ui] [data-codex-ui-injected=\"settings-modal\"] * {\r\n box-sizing: border-box;\r\n}\n"; return { THEME_CSS }; })(); @@ -1939,11 +2624,12 @@ return { installStylesheet }; const __src_client_index = (() => { const { installModelPicker } = __src_client_model_picker_index; const { installSettings } = __src_client_settings; +const { installSettingsModal } = __src_client_settings_modal; const { installStylesheet } = __src_client_stylesheet; /** * codex-ui 浏览器半入口(DSH 客户端插件:导出 inject 与 apply,由 scripts/build.mjs 打成 client.js)。 * - * 功能按顺序装配:皮肤样式 → 设置(覆盖层、主题预览、配置卡)→ 模型选择器。 + * 功能按顺序装配:皮肤样式 → 设置(覆盖层、主题预览、配置卡)→ 模型选择器 → 设置模态框结构层。 * 样式先挂且不包 try:它是插件本体;其余任何一项失败都只降级,不连累皮肤。 * 新功能 = src/client/ 下一个模块导出 install(ctx) + 这里一行。 */ @@ -1951,6 +2637,7 @@ const { installStylesheet } = __src_client_stylesheet; + /** * cordis **服务名**(不是包名):loader 逐个等它们就绪,缺一个本插件就不激活。 * 只放必需的;可有可无的服务(modelDirectories)走 ctx.inject 子作用域。 @@ -1970,6 +2657,12 @@ function apply(ctx) { } catch (error) { console.warn('[codex-ui] 模型选择器挂载失败,宿主原生菜单照常:', error); } + /* 设置模态框的结构层(返回按钮 / 搜索 / 分组):与设置表单彼此独立,谁挂不上都不连累对方。 */ + try { + installSettingsModal(ctx); + } catch (error) { + console.warn('[codex-ui] 设置模态框结构层挂载失败,其余功能照常:', error); + } } return { inject, apply }; })(); diff --git a/docs/dom-recon-settings-layout.md b/docs/dom-recon-settings-layout.md new file mode 100644 index 0000000..e44bb0f --- /dev/null +++ b/docs/dom-recon-settings-layout.md @@ -0,0 +1,624 @@ +# 设置界面 DOM 侦察报告(codex-ui 改造基线) + +> 侦察对象:`E:\codex-ui` @ `d590248699a6a2708035af639596ab33cd6caf91`,装在一个一次性验证 profile 上 +> 验证实例:`http://127.0.0.1:3199`,DSH `0.1.7-rc.2`,窗口 1440×960 @ DPR 1.5 +> 侦察方式:Python Playwright(headless Chromium)+ 直接 `Runtime.evaluate` 取证。**所有 selector 与尺寸均为实测值**,推断项单独标注。 + +--- + +## 0. 结论速览(给改造定调用) + +| 判断 | 结论 | 依据 | +|---|---|---| +| 侧栏项渲染方式 | 每项都是 ` +``` + +- 单元格计算样式:`display:flex; gap:8px; padding:9px 16px 9px 12px; border-radius:12px; font-size:14px` +- 选中态:额外加 `VOzbGW_active` 类 + `aria-current="true"` +- **每项都是 2 个直接子节点:`svg` + `span`** —— 这一点对注入很关键(见 §i) + +### ⚠️ 任务书清单与实际不符(必须记录) + +任务书给的 10 项里,**「账号与余额」在本验证实例上不存在**,另有 3 项任务书未列出(已归档会话 / 宠物 / 创意工坊 / 使用统计)。 + +- **「账号与余额」缺的原因(已定位到源码级)**:`@deepseek-ai/dsh-client-ui-settings-account` 只在**已存有 DeepSeek 凭据**时才注册这个 section: + ```js + // lib/client.js:4397-4414 + if (snapshot.view?.status === "credential-stored") ctx.slots.register({ + name: "settings.section", id: "account", order: -10, label: () => t("nav") … + ``` + 未登录时它 `unregister`,所以侧栏里根本没有这一项。**这不是环境缺陷,是设计如此。** +- 其余 3 项(记忆系统 / LLM Verifier / 订阅服务)在我把 `dsh-mnemon` / `dsh-llm-verifier` / `@eddyskywalker/dsh-chatgpt-subscription` 正规装进验证 profile 后**已全部出现**(见 §验收证据)。 +- **宠物**项来自 `dsh-web-all` 的宠物模块,是本次 A2 正规重装 `@linxin666/dsh-web-all` 之后新出现的。 + +> 结论:任务书的 10 项清单应更新为「以实际渲染为准,动态列举」。**这恰好印证了用户那条「不做硬编码白名单、未知项进兜底分组」的硬约束是对的。** + +--- + +## c) 侧栏容器与内容容器的定位方式 + +两者**都不是** `fixed`/`absolute`/`grid`,而是 `display:flex` 的直接子项: + +```css +/* 面板是横向 flex */ +.VOzbGW_panel { display:flex; flex-direction:row; width:800px; height:800px; } +/* 侧栏是纵向 flex,固定 188px */ +.VOzbGW_nav { display:flex; flex-direction:column; width:188px; padding:22px 12px 0; gap:18px; } +/* 内容列纵向 flex,吃掉剩余宽度 */ +.VOzbGW_content{ display:flex; flex-direction:column; flex:1; } +``` + +- 侧栏**没有**背景色(`transparent`),面板底色 `rgb(233,237,247)` 透上来 +- 侧栏**没有**右边框 —— 分隔完全靠空间,**这是 Codex 化改造可以发力的一点** +- `nav` 的 `gap:18px` 是 navTitle 与 navList 之间;navList 内部是 `gap:4px` + +--- + +## d) 遮罩层与关闭按钮结构 + +**遮罩**:`div.VOzbGW_mask[aria-hidden="true"]`,`position:absolute; inset:0`,`background: rgba(28,37,70,0.4)`,无 `backdrop-filter`。 + +**关闭按钮**:位于 `content > header`,**是 header 的第 2 个也是最后一个子节点**: + +```html + +``` + +> **注意**:关闭按钮上的 `data-slot` 是**嵌在 `span.VOzbGW_hiddenLabel` 内部**的,不是按钮本身的属性。写 CSS 时要用 `button:has([data-slot="settings.close"])` 或直接 `.VOzbGW_close`(后者是哈希类名,不推荐)。 + +**header 结构**: + +```html +
+
+
+
+ +
+
+
+ +
+``` + +- `VOzbGW_actions` 实测 `margin-left:458px`(即 `margin-left:auto` 的效果),把操作推到右侧 +- `[data-slot="settings.action"]` 是**唯一稳定的宿主座位锚点**,改造「右上角操作按钮」应挂它 + +--- + +## e) codex-ui 插件在设置模态上已注入的内容 + +**已注入的样式标签**(实测 `document.querySelectorAll('style[data-plugin="codex-ui"]')`): + +| `data-plugin-css` | 长度 | 作用域 | +|---|---|---| +| `codex-ui/theme.css` | 65280 B | `html[data-codex-ui]` | +| `codex-ui/settings-override.css` | 704 B | `html[data-codex-ui][data-codex-ui-theme]` | + +**html 上的属性**(实测):`data-codex-ui`, `data-codex-ui-theme`(有覆盖时), `data-dsh-backdrop-active`, `data-input-modality` + +### 哪些选择器命中了设置模态? + +theme.css 共 143 条选择器。对 9 个模态元素逐一跑 `Element.matches()` 的结果: + +| 元素 | 命中的 codex-ui 规则 | 判定 | +|---|---|---| +| `.VOzbGW_overlay` | `html[data-codex-ui] *`(通配)、`body, body *`(eleveation 令牌覆盖) | **仅继承性命中** | +| `.VOzbGW_mask` | 同上 | **仅继承性命中** | +| `.VOzbGW_panel` | **`html[data-codex-ui] [role="dialog"]`** ← 唯一一条真正的结构样式 | **实命中** | +| `nav.VOzbGW_nav` | 通配 + 令牌 | 仅继承 | +| `.VOzbGW_navList` | 通配 + 令牌 | 仅继承 | +| `button.VOzbGW_navCell` | 通配、令牌、`:focus-visible`、`button, a, summary, [role=button]…`(cursor/过渡) | 仅泛型命中 | +| `.VOzbGW_content` | 通配 + 令牌 | 仅继承 | +| `.VOzbGW_header` | 通配 + 令牌 | 仅继承 | +| `.VOzbGW_options` | 通配 + 令牌 | 仅继承 | + +**结论:codex-ui 目前对设置模态的针对性样式只有一条** —— `skins/codex-ink/patches.css` 里的: + +```css +html[data-codex-ui] [role="dialog"], +html[data-codex-ui] [data-dsh-surface="overlay"] [data-dsh-part="panel"] { + /* 大圆角 + 一点点软影 */ +} +``` + +其余全部是通过 `*` 通配继承的令牌(`--dsw-alias-*`)。**设置界面的 Codex 化基本等于从零开始**,但基础设施(作用域属性、令牌、样式注入通道)已就绪。 + +> 另注:`skins/codex-ink/settings.css` 里的 `.cx-*` 系列选择器**在设置模态上一条都不命中**——它们服务的是官方插件管理页的组合包配置卡(座位 `plugins.bundle.config`),是**另一套 UI**,不要混淆。 + +--- + +## f) 内容区代表页(通用设置)内部结构 + +``` +div.VOzbGW_options +└─ div[data-slot="settings.section"] style="display:contents" + └─ div._WvWnq_section ← 每个设置页的根容器 + ├─ div[data-slot="settings.general.item"] style="display:contents" ← 每一行的座位 + │ └─ div.oY77xG_row ← 行:权限 + │ ├─ div.oY77xG_rowText + │ │ ├─ div.oY77xG_title 「权限」 + │ │ └─ div.oY77xG_desc 「选择新会话的默认权限模式」 + │ └─ span._root_gzo7u_1 → button.oY77xG_selector ← 控件 + ├─ div.hVGvvW_row … (语言) + ├─ div._8HJdBW_group ← **分组**!外观 + │ ├─ div._8HJdBW_title 「外观」 + │ └─ div._8HJdBW_cubeRow + │ └─ button._8HJdBW_themeCube ×3 (浅色/深色/跟随系统) + ├─ div.bVCLcG_row … (字号大小,带 stepper) + ├─ div._2XZxNq_row ×2 (工作步骤展示 / 性能与用量) + ├─ div.Pt1bsG_row … (代码工作工具,带 switch) + ├─ div.nhfO0a_setting …(快捷键) + ├─ div.T1PP_q_row … (繁忙时的发送行为) + └─ div.yIbyla_row … +``` + +**关键的坏消息:行的类名是「一页一套」的 CSS-Modules 哈希前缀**—— +`oY77xG_row` / `hVGvvW_row` / `bVCLcG_row` / `_2XZxNq_row` / `Pt1bsG_row` / `nhfO0a_setting` / `T1PP_q_row` / `yIbyla_row`, +**每行前缀都不同,且是随构建变化的哈希**。绝不能拿它们写 CSS。 + +**可用作 CSS 钩子的稳定结构**: + +| 目标 | 推荐 selector | +|---|---| +| 设置页根容器 | `[data-cx-sm-panel] [data-slot="settings.section"] > *`(自有锚点;宿主锚点见 §a 的「锚点结论」) | +| 通用设置的每一行 | `[data-slot="settings.general.item"] > *` | +| 行内标题 | `[data-slot="settings.general.item"] * > div:first-child`(位置取,无类名) | +| 整页所有行 | 无统一类名 → **只能用属性选择器** `[class$="_row"]` / `[class*="_row_"]`,但这踩 CSS-Modules 哈希纪律,**不推荐** | + +> **这是本次侦察最重要的改造风险**:宿主没有为「设置行」提供语义锚点。若要 Codex 化行样式,可行路径只有两条: +> ① 用 `[data-slot="settings.general.item"]` 给通用页行做样式(覆盖有限,只管一页); +> ② 走 JS 注入层,在运行时给行打上自有的 `data-codex-ui-row` 属性(幂等重放,见 §i)。 +> **(推荐 ②)** + +### 控件类型清单(实测,通用设置页) + +| 控件 | 类名 | tag | 尺寸 | 计算样式 | +|---|---|---|---|---| +| 下拉选择 | `oY77xG_selector` 等 | `button` | 138×36 / 82×36 | `bg:rgb(233,237,247); radius:12px; fs:14px` | +| 主题方块 | `_8HJdBW_themeCube` | `button` | 183×84 | 选中 `border:1px rgb(173,178,184)`;未选 `border:1px rgba(44,58,115,.42)`;`radius:20px` | +| 开关 | `_switch_15ung_5` | `button` | 36×20 | `bg:rgb(74,95,168); radius:999px`,`aria-label="代码工作工具"` | +| 数字步进 | `bVCLcG_stepper` | `div` | 72×36 | `bg:rgb(233,237,247); radius:12px` | +| 步进箭头 | `bVCLcG_arrow` | `button` | 17×12 | `aria-label="增大字号"/"减小字号"` | +| 输入框 | `zGbnIq_input` 等 | `input` | — | 模型页:`type=password`(API 密钥)、`text`(API 地址/模型 ID) | +| 复选框 | (无类名) | `input[type=checkbox]` | — | 皮肤 / 使用统计页 | + +--- + +## g) 侧栏图标:实现方式与注入位置 + +**结论:每一项都已经自带图标,且是内联 SVG。后续「Codex 式侧栏图标」不需要从零注入,只需做样式与替换。** + +实测(以「模型」项为例): + +```json +{ "tag": "svg", "cls": "VOzbGW_navIcon", "width": "16", "height": "16", + "viewBox": "0 0 16 16", "fill": "none", "stroke-width": "1.3", "aria-hidden": "true", + "pathCount": 2, + "computed": { "width": "16px", "height": "16px", "flexShrink": "0", "color": "rgb(29,37,57)" } } +``` + +- **实现方式:内联 ``,描边图标,`stroke="currentColor"`,随文字色变色。** +- **不是** icon font,**不是** sprite/``,**不是** `background-image`。 + (探测脚本里 `iconFontUsed: true` 是误报——它扫到了页面无关样式表里含 "font-family" 的规则;`anyFontIconClass: false` 与 `useCount: 0`、`imgCount: 0` 才是实情。) +- 图标 **16×16**,`flex-shrink:0`,与 `span.VOzbGW_navLabel` 之间 `gap:8px`。 +- 每一项的 `path` 内容各不相同(通用设置=齿轮、模型=层叠、内置插件=滑块…),共 13 个不同图标。 + +**若要替换成 Codex 风格图标,注入位置(实测可行)**: + +```js +// cell = button.VOzbGW_navCell;直接子节点固定为 [svg, span] +cell.querySelector('svg.VOzbGW_navIcon') // ← 替换或改属性都直接命中 +cell.children[0] // ← 位置取,等价且不依赖类名 +cell.children[1] // ← span.VOzbGW_navLabel(文本在文本节点里) +``` + +> `span.VOzbGW_navLabel` 内部是**纯文本节点**,若要在文本前插图标,`insertBefore(node, span.firstChild)` 即可; +> 但鉴于 `svg` 已是第一个子节点,**更稳的做法是替换 `children[0]`**。 + +`span.VOzbGW_navLabel` 计算样式:`font-size:14px; line-height:22px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap` +→ 长文本会省略号截断,**注入图标时要留意 188px 的侧栏宽度余量**(实际可用内容宽 164px)。 + +--- + +## h) 含主操作 / 危险操作的设置页 + +### 危险操作:已归档会话(index 5) + +**标题区**(页面顶部): +```html +会话归档管理 +``` +**注意:这不是 `

`/`

`,是一个 ``。** Codex 风格要的「大标题」在当前 DOM 里不存在层级语义。 + +**右上角操作区**:位于 `content > header > .VOzbGW_actions`,由 `[data-slot="settings.action"]` 提供。 +但**页面级的操作(刷新)并不在 header,而在内容区顶部**:`button.yoSR5W_button`(「刷新」,53×27,`y=134`)。 + +**危险按钮**:`button.yoSR5W_dangerButton`(「批量删除」)——**宿主有专门的 danger 类名**,这是唯一一处语义化的按钮类型标记。 +配套操作按钮:`yoSR5W_button`(批量归档 / 批量取消归档 / 全选当前结果 / 清空选择 / 按当前配置预览)。 + +实测按钮计算样式(普通): + +```json +{ "cls": "yoSR5W_button", "color": "rgb(29,37,57)", "bg": "rgb(243,245,251)", + "borderColor": "rgba(44,58,115,0.22)", "borderWidth": "1px", + "radius": "8px", "fontSize": "13.3333px", "padding": "4px 12px" } +``` + +### 主操作:模型页(index 1) + +```html + + + +``` +**宿主有 `primaryButton` / `secondaryButton` / `addButton` 三种语义按钮类**(同样带哈希前缀)。 + +### 皮肤页(index 9) +`button.TJMolG_buttonPrimary`(「试穿」)为主操作。 + +### 对 Codex 风格改造的影响 + +Codex 要的是「**大标题 + 右上角操作按钮 + 卡片列表**」。实测现状: + +| Codex 结构 | 宿主现状 | 差距 | +|---|---|---| +| 大标题 | 内容区**没有独立标题元素**,页面首行文本就是普通 span | 需新建标题节点或提升样式 | +| 右上角操作按钮 | `[data-slot="settings.action"]` **存在且可用**,但当前只有全局的「打开配置文件」 | 座位可用,但页面级操作不在里面(在 options 内) | +| 卡片列表 | 行是 `[data-slot="settings.general.item"]`(仅通用页)或裸 div | **无统一卡片容器语义** | + +> **改造建议锚点**:`[data-slot="settings.action"]` 做右上角操作;内容区做标题需靠注入(因为宿主没留标题座位)。 + +--- + +## i) React 重渲染对注入节点的影响(实测,非推断) + +**方法**:给 `navList` 挂 `MutationObserver({childList,subtree,attributes})`,给第 1、5 项打 `data-recon-mark` 属性并往第 1 项 `appendChild` 一个 ``,持有全部 cell 的 DOM 引用做身份比对,然后跑三组操作。 + +### 结果 + +| 操作 | 注入属性存活 | 注入子节点存活 | DOM 节点身份 | MutationObserver 观测 | +|---|---|---|---|---| +| 注入后 | ✔ | ✔ | 同一节点 | 3 条(我们的写入) | +| 切到「内置插件」 | ✔ | ✔ | **sameNodeIdx1 = true** | +2 条,**全是 `class` 属性变化** | +| 切到「皮肤」 | ✔ | ✔ | **true** | +2 条 class | +| 切回「通用设置」 | ✔ | ✔ | **true** | +2 条 class | +| **关闭(Esc)→ 重新打开** | ✘ **全部丢失** | ✘ **全部丢失** | **sameNodeIdx0/1 = false** | — | + +**关键观测**:从注入到关闭前,共记录 9 条 mutation,`added=1`(我们自己的)、`removed=0`。 +即**切换设置项时宿主完全没有增删 DOM 节点,只改了 `class`**(选中态 `VOzbGW_active` 在两个 cell 之间来回搬)。 + +**关闭再打开时**:`document.querySelector('.VOzbGW_overlay').parentElement === document.body`, +body 层面观测到 **4 条 childList mutation** —— 整个 overlay 被卸载再重建,**navList 及其全部 navCell 都是新节点**。 + +### 结论(直接决定注入架构) + +1. **一次性注入是不够的。必须做幂等重放。** +2. **重放触发点**:观察 `document.body` 的 `childList` 即可(subtree 非必需)—— + overlay 是 body 的直接子节点,开关一次产生 2 次 childList(移除 + 添加)。 +3. **切页不需要重放**(节点不重建),所以重放逻辑要**幂等**——重复跑不能叠加节点,须先检查标记属性。 +4. **推荐观察容器:`document.body`**(而非 `.VOzbGW_navList`)—— + 因为观察 navList 本身会在它被移除后失效。观察 body 才能在重建后重新发现新的 navList。 + 若要更省,可观察 `#root`;但 body 最稳。 + +**参考实现骨架**: + +```js +const MARK = 'data-codex-ui-nav'; +function replay() { + const list = document.querySelector('[data-cx-sm-panel] nav > div:last-child'); + if (!list) return; + for (const cell of list.children) { + if (cell.hasAttribute(MARK)) continue; // 幂等:已打过就跳过 + cell.setAttribute(MARK, ''); + // …注入图标 / 分组包裹… + } +} +new MutationObserver(replay).observe(document.body, { childList: true, subtree: true }); +replay(); +``` + +### 模拟第三方侧栏项(实测) + +克隆第 6 项(「皮肤」)改文本为「第三方测试项」,`className` 重置为 `VOzbGW_navCell` 后 `appendChild` 到 navList: + +| 观测 | 结果 | +|---|---| +| 节点是否存活 | **✔ 存活**(`stillThere: true`,在 list 内) | +| 点击是否崩溃 | **✘ 未崩溃**,模态保持打开,内容区保持原样 | +| 是否切换选中态 | **✘ 否** —— `activeIdx` 仍是 0(「通用设置」) | +| 是否渲染对应内容 | **✘ 否** —— 内容区仍显示通用设置 | + +**结论**:宿主的导航是**数据驱动**的(`settings.section` 座位注册 + `id`),DOM 里塞一个新按钮**不会**让它成为一个真正的设置页。 + +> 这直接支撑了派发者那条判断:**兼容第三方插件,正确姿势是「不破坏宿主对未知项的处理」,而不是「接管未知项」。** +> 任何试图靠 DOM 克隆/patch 来「补出」第三方设置页的方案都会失败——第三方插件应当通过 +> `ctx.slots.register({ name: 'settings.section', id, order, label }, Component)` 正常注册(宿主契约见 `dsh-client-ui-settings/lib/types/client/contract/slots.d.ts`)。 + +--- + +## j) 分组映射建议的技术可行性注记 + +任务书给的分组:**个人** = 账号与余额 / 通用设置 / 皮肤;**编码** = 模型 / Agent 预设 / LLM Verifier;**集成** = 内置插件 / Web 插件 / 订阅服务 / 记忆系统。 + +### 可行性判定 + +| 维度 | 判定 | 说明 | +|---|---|---| +| 能否按文本识别 | **✔ 可以** | 13 项的 `span.VOzbGW_navLabel` 文本可读,可直接匹配 | +| 能否插入分组标题 | **✔ 可以** | navList 是普通 flex column,`insertBefore` 插标题 div 即可 | +| 能否视觉分组(间隙/线) | **✔ 可以,推荐** | 纯 CSS:给目标 cell 加 `margin-top` / `::before` 分隔线。**零 DOM 结构风险** | +| 能否重排顺序 | **✘ 不建议** | 顺序由宿主 `order` 决定,改 DOM 顺序会与 React 的 key 协调冲突,重渲染时被还原 | +| 分组是否持久 | **✘ 不持久** | 关闭重开就没了,**必须走 §i 的幂等重放** | +| 未列出的项怎么办 | **必须兜底** | 实测有 4 项(已归档会话/宠物/创意工坊/使用统计)**不在任务书任何分组里** | + +### 关键约束(用户的硬性要求:不做硬编码白名单) + +任务书的分组表**覆盖不全**:实测 13 项里有 4 项没有任何归属。 +按「未知项归入兜底分组」的要求,建议分组定义改为: + +``` +个人:账号与余额(条件出现)、通用设置、皮肤、宠物、创意工坊 +编码:模型、Agent 预设、LLM Verifier +集成:内置插件、Web 插件、订阅服务、记忆系统 +兜底:已归档会话、使用统计、以及任何未来新增的未知项 +``` + +> 但注意「宠物」和「创意工坊」归入「个人」是我的**推断**,任务书未指定——**请派发者确认**。 + +### 实施建议排序(按风险从低到高) + +1. **纯 CSS 视觉分组**(加 margin / 分隔线)——零 DOM 风险,但无法加分组标题文字。 +2. **JS 注入分组标题**(插 `div` 到 navList)+ §i 幂等重放——可加文字,中等风险。 +3. **改造宿主注册机制**——超出插件边界(`settings.section` 是宿主契约,插件只能注册自己的页)。 + +--- + +## k) 可复用的 Playwright 操作序列(供后续验证脚本) + +以下序列已在本次侦察中反复跑通(Python Playwright,headless Chromium): + +```python +from playwright.sync_api import sync_playwright +import re + +TOKEN_URL = "http://127.0.0.1:3199/?token=" +ORIGIN = "http://127.0.0.1:3199" + +def dismiss_onboarding(page): + """关掉启动引导(内测声明 / 配置 API Key)。重复点直到没有为止。""" + for _ in range(8): + done = True + for txt in ["稍后配置", "继续", "知道了", "跳过"]: + try: + loc = page.get_by_role("button", name=re.compile("^" + txt + "$")) + if loc.count() > 0 and loc.first.is_visible(): + loc.first.click(); page.wait_for_timeout(900) + done = False; break + except Exception: + pass + if done: + return + +with sync_playwright() as p: + browser = p.chromium.launch(headless=True) + ctx = browser.new_context(viewport={"width":1440,"height":960}, device_scale_factor=1.5) + page = ctx.new_page() + + # ① 先用 token URL 建会话(建立 dsh-auth cookie),再跳裸 origin + page.goto(TOKEN_URL, wait_until="domcontentloaded"); page.wait_for_timeout(3000) + page.goto(ORIGIN + "/", wait_until="domcontentloaded") + try: page.wait_for_load_state("networkidle", timeout=20000) + except Exception: pass + page.wait_for_timeout(8000) # SPA 启动需要 ~6-8s + dismiss_onboarding(page) + page.wait_for_timeout(800) + + page.screenshot(path="closed.png") # 设置关闭态 + + # ② 打开设置:用 JS click 绕过引导遮罩拦截 + page.evaluate("""() => document.querySelector("button[aria-label='设置']").click()""") + page.wait_for_timeout(3000) + page.screenshot(path="open.png") # 设置打开态 + + # ③ 切换设置项 + def click_nav(i): + page.evaluate("(i) => document.querySelectorAll('.VOzbGW_navList .VOzbGW_navCell')[i].click()", i) + page.wait_for_timeout(1600) + + click_nav(0) # 通用设置 + + # ④ 关闭:Escape 或点关闭按钮 + page.keyboard.press("Escape"); page.wait_for_timeout(1500) + + # ⑤ 内容区特写截图(按面板实际位置裁剪) + clip = page.evaluate("""() => { const d = document.querySelector('[data-cx-sm-panel]'); + const r = d.getBoundingClientRect(); + return { x: Math.round(r.x), y: Math.round(r.y), + width: Math.round(r.width), height: Math.round(r.height) }; }""") + page.screenshot(path="content.png", clip=clip) + + browser.close() +``` + +**关键坑位(都是本次踩过的)**: + +1. **必须用 `page.evaluate` 里的 JS `.click()` 打开设置**——用 Playwright 的 `.click()` 会被引导遮罩 + `div._mask_17i0t_18[aria-hidden="true"]` 拦截(`intercepts pointer events`),30s 超时。 +2. **引导弹层必须用 `get_by_role("button", name=...)` 精确匹配**,不能用 `has_text`——后者会误伤。 +3. **选择器里的引号**:`[data-slot="settings.close"]` 用单引号包会报 + `is not a valid selector`,必须写成 `[data-slot="settings.close"]`(双引号在 JSON 里转义)。 +4. **主题/暗色标记在 `body` 上**(`body[data-ds-dark-theme]`),不在 `html`。 +5. **等 8 秒**再操作——这个 SPA 冷启动比一般应用慢(实测引导弹层之后还要 ~4s 才完全就绪)。 + +--- + +## l) 风险点清单 + +| # | 风险 | 严重度 | 缓解 | +|---|---|---|---| +| 1 | **宿主大量使用 CSS-Modules 哈希类名**(`VOzbGW_*`, `oY77xG_*`, `_8HJdBW_*`…),且**每个设置页前缀都不同** | 🔴 高 | 面板锚点走 §a「锚点结论」的三层(宿主 `data-shortcut-modal` 优先 → 自有 `data-cx-sm-panel` 作 CSS 挂载点 → 第三方 `data-dsh-surface` 仅兜底);行内用 `data-slot="*"` / `role="dialog"` / 位置索引;哈希类名一律不用。codex-ui 现有 `patches.css` 已立此纪律,应继续遵守 | +| 2 | **`settings.navList` 与设置行都没有语义锚点** | 🔴 高 | 靠 JS 注入打自有属性(`data-codex-ui-nav`),并做幂等重放 | +| 3 | **关闭重开整棵 navList 重建** | 🔴 高 | §i 的幂等重放,观察 `document.body` | +| 4 | **设置项数量是动态的**(实测 13 项;账号与余额随登录态出现/消失;插件增删会改列表) | 🟠 中 | 按文本/位置动态匹配,**绝不自名单**;必须兜底分组 | +| 5 | **内容区无统一行容器语义**,改造行样式覆盖面有限 | 🟠 中 | 优先 `[data-slot="settings.general.item"]`(通用页);其余页靠 JS 打标或放弃统一 | +| 6 | **Codex 要的「大标题」在宿主 DOM 里不存在**(页面首行只是普通 `span`) | 🟠 中 | 需 JS 注入标题节点;或只用 CSS 提升首个文本节点样式(易误伤) | +| 7 | **导航是数据驱动的,DOM 克隆项不会路由** | 🟡 低(但认知上重要) | 第三方兼容只做「不破坏」,不做「接管」 | +| 8 | **本次验证实例的 pnpm store 曾损坏**(`E:\.pnpm-store\v11\files\ec`),后经用户修复 | 🟡 低 | 已验证修复:干净 profile 默认 store 安装成功(见验收证据) | +| 9 | 暗色主题下未做侦察(本次全部在亮色下) | 🟡 低 | 若改造涉及暗色,需补一轮 | +| 10 | 未在 Windows 桌面端(Electron)验证 | 🟡 低 | 桌面 profile 由 Electron 独占,本次未触及 | + +--- + +## m) 验收证据附录 + +### 基线构建(`E:\codex-ui`,git `d590248699a6a2708035af639596ab33cd6caf91`) + +``` +$ npm run build +源样式: 61456 B → theme.css 65280 B + skin.css 17781 B, patches.css 21317 B, sidebar-align.css 5918 B, + window-shadow.css 5883 B, composer.css 7629 B, settings.css 2928 B +client.js: 102393 B +OK theme.css / OK client.js +BUILD_EXIT=0 + +$ npm run check +ok Node >= 22 v24.19.0 ok 语法 23 个 JS 文件 +ok theme.css 与源样式一致 65280 B ok client.js 与源样式一致 102393 B +ok theme.css 全部作用域化 65280 B ok 覆盖层:默认值不产生任何 CSS +ok 覆盖层与皮肤对账 37 条 ok 产物里确实带上了设置页与覆盖层 +PASS:全部通过 +CHECK_EXIT=0 +``` + +### 验证实例 + +| 项 | 值 | +|---|---| +| profile 路径 | `E:\codex-ui-verify\profiles\verify`(DSH_HOME=`E:\codex-ui-verify`) | +| 端口 | **3199** | +| 启动命令 | `$env:DSH_HOME='E:\codex-ui-verify'; dsh --profile verify --port 3199 --no-open` | +| 进程 | PID **39688**,`node …/dsh/lib/bin.js --profile verify --port 3199 --no-open` | +| 当前 URL | `http://127.0.0.1:3199/?token=GOso7Xcdg2G-TvTak8FuzyKG7Cwlz-easAr9k9zMmAE` | +| 停止命令 | `Stop-Process -Id 39688 -Force` | +| 插件加载 | **0 条 degraded 警告** | + +### 已装插件(verify profile bundles) +`@deepseek-ai/dsh-base`, `@deepseek-ai/dsh-web-app`, `@linxin666/dsh-web-all`, `codex-ui`, `@eddyskywalker/dsh-chatgpt-subscription`, `dsh-llm-verifier`, `dsh-mnemon` + +### pnpm store 修复验证 +在干净的一次性 profile 上用**默认 store**(无 `--store-dir` 旁路)安装: +``` +Content-addressable store is at: E:\.pnpm-store\v11 +Done in 3.8s using pnpm v11.21.0 +CLEAN_DEFAULT_STORE_EXIT=0 +``` +→ **E 盘 store 修复确认有效。** + +### 截图(`E:\codex-ui\docs\recon\`) +| 文件 | 内容 | +|---|---| +| `01-settings-closed.png` | 设置关闭态(含侧栏与主界面) | +| `02-settings-open.png` | 设置打开态(侧栏 13 项 + 通用设置内容) | +| `03-general-content.png` | 通用设置内容区特写 | +| `04-injection-probe.png` | React 重渲染注入探针现场 | +| `05-page-4.png` / `05-page-5.png` / `05-page-6.png` | 已归档会话 / Web 插件 / 皮肤 三页 | +| `06-archived-danger.png` | 危险操作页特写 | diff --git a/docs/references/ui-ux-pro-max-quick-reference.md b/docs/references/ui-ux-pro-max-quick-reference.md new file mode 100644 index 0000000..ef90070 --- /dev/null +++ b/docs/references/ui-ux-pro-max-quick-reference.md @@ -0,0 +1,42 @@ +# UI/UX Quick Reference(验收检查清单) + +> 来源:ChenYiming-aaa/dsh-ui-ux-pro-max(references/quick-reference.md,基于 nextlevelbuilder/ui-ux-pro-max-skill)。 +> 用途:设置界面 Codex 化改造的交付前自查与验收基准。与本仓库契约(零硬编码颜色、tokens only)一致。 + +## §1 视觉质量(CRITICAL) +- 禁止 emoji 作结构图标;图标同一家族、统一描边与尺寸令牌 +- 按压态不改变布局边界、不抖动 +- 全程语义令牌,禁止逐屏硬编码 hex +- 图标与文字基线对齐;小元素对比度 ≥4.5:1,大图形 ≥3:1 + +## §2 交互(CRITICAL) +- 可点击元素 80–150ms 内有按压反馈;cursor:pointer +- 微交互 150–300ms,原生缓动;禁止 >500ms 慢动画 +- 禁用态语义清晰(disabled + 视觉弱化) +- ⚠️ 焦点顺序与视觉顺序一致 —— 与本插件 flex order 视觉重排的已知权衡冲突(见下) +- 键盘焦点可见(focus-visible) + +## §3 深色/浅色模式(HIGH) +- 浅色正文对比度 ≥4.5:1;深色正文 ≥4.5:1、次要文字 ≥3:1(独立实测,不推断) +- 发丝分隔线/边框在两种主题下都可见 +- 按压/聚焦/禁用态在深浅色下可区分度一致 + +## §4 布局与间距(HIGH) +- 4/8 间距节奏;纵向层级 16/24/32/48 +- 滚动内容不被固定栏遮挡;窄屏(<900px)不破碎 +- 长文行长 45–75 字符 + +## §5 无障碍(HIGH) +- 颜色不是唯一信息指示方式 +- 支持 reduced-motion +- 角色/状态(selected/disabled/expanded)正确 + +## 与本实现的已知张力(验收时显式处理,不静默放过) +1. **Tab 焦点顺序 ≠ 视觉顺序**:分组与排序用 flex order 实现(DOM 重排会与 React key 调和冲突)。 + 缓解:搜索过滤时隐藏项同时移出 Tab 序(display:none 天然满足);组内顺序与 DOM 一致。 + 残余风险:跨组 Tab 顺序与视觉不一致,属于已接受权衡,PR 描述中需声明。 +2. **不要用毛玻璃背板**(本条 2026-09-28 订正,原文为「毛玻璃用 backdrop-filter 近似」)。 + 本改造的设置面板是**全页铺满**的 overlay,它下面压的是主窗口内容:78% alpha + blur 会把底下的壁纸色 + 揉进设置页的灰,整页偏深偏色且**随用户壁纸变化**(真机实测,见 `skins/codex-ink/settings-modal.css` 头部 + 「取色纪律」与 §1)。铺满全窗的 overlay 从模糊里拿不到任何视觉受益,只赔确定性,所以背板取**不透明** + `--dsw-alias-bg-sidebar` 一条声明、不需要 `@supports` 兜底。毛玻璃只在「居中浮层」形态下才是合理诉求。 diff --git a/scripts/build.mjs b/scripts/build.mjs index 9ab4840..ad40ad9 100644 --- a/scripts/build.mjs +++ b/scripts/build.mjs @@ -30,6 +30,7 @@ export const SKIN_PARTS = [ 'window-shadow.css', // L3 窗口边缘 'composer.css', // L3 输入区 'settings.css', // L3 插件设置卡 + 'settings-modal.css', // L3 设置模态框 Codex 化层 ]; /** 虚拟模块:客户端代码从这里取内联样式(DSH 只下发 client.js,样式必须在 JS 里)。 */ const THEME_MODULE = 'codex-ui:theme.css'; diff --git a/scripts/check.mjs b/scripts/check.mjs index b428766..b02b992 100644 --- a/scripts/check.mjs +++ b/scripts/check.mjs @@ -316,6 +316,129 @@ attempt('模型选择器样式只画自建节点,不碰宿主菜单', () => { return selectors.length + ' 组选择器'; }); +/* ── 7b. 设置模态框契约(结构层 + 视觉层 + 装配)─────────────────────────── + 这一层由两个文件组成(结构层 + 视觉层),且靠构建期装配 —— 任一环断了,浏览器里都只表现为 + 「设置界面没变化」,很难从现象反推原因。仓库体检必须在这里就把它抓住。 + 结构层现在是一个普通 ES 模块(src/client/settings-modal.js),由 src/client/index.js 导入 —— + PR #1 原版的占位符拼装(__CODEX_UI_MODAL__)在模块化打包器下不再需要。 */ +const MODAL_FILE = join(ROOT, 'src', 'client', 'settings-modal.js'); +const MODAL_CSS = join(SKIN_DIR, 'settings-modal.css'); + +/** + * 扫一遍 CSS 的每条规则,挑出选择器里带 .cx-sm- 却没挂作用域根的。 + * 逐规则扫而不是正则捞:正则会被注释里的花括号带偏,而作用域漏挂是本层最致命的一类错 + * (漏了前缀 = 规则在宿主默认态下裸奔)。 + * @param css - 已作用域化的样式文本。 + * @returns 越界的选择器片段数组。 + */ +const unscopedCxSm = (css) => { + const bad = []; + let i = 0; + while (i < css.length) { + const open = css.indexOf('{', i); + if (open < 0) break; + const prelude = css.slice(i, open); + let depth = 1; + let j = open + 1; + while (j < css.length && depth > 0) { + if (css[j] === '{') depth += 1; + else if (css[j] === '}') depth -= 1; + j += 1; + } + const body = css.slice(open + 1, j - 1); + const close = prelude.lastIndexOf('*/'); + const selText = close >= 0 ? prelude.slice(close + 2) : prelude; + if (selText.includes('.cx-sm-') && !selText.includes(SCOPE)) bad.push(selText.trim().slice(0, 80)); + if (selText.trim().startsWith('@') && body.includes('{')) bad.push(...unscopedCxSm(body)); + i = j; + } + return bad; +}; + +attempt('设置模态框:两个源文件存在且非空', () => { + for (const [what, p] of [['结构层', MODAL_FILE], ['视觉层', MODAL_CSS]]) { + assert(fs.existsSync(p), what + ' 源文件不存在:' + rel(p)); + assert(fs.statSync(p).size > 0, what + ' 源文件是空的:' + rel(p)); + } + return rel(MODAL_FILE) + ' ' + fs.statSync(MODAL_FILE).size + ' B · ' + + rel(MODAL_CSS) + ' ' + fs.statSync(MODAL_CSS).size + ' B'; +}); +attempt('设置模态框:结构层被装配进 client.js 且已挂到 apply 上', () => { + /* 定义与调用缺一不可:模块拼进去了但没人调用,界面同样不会有任何变化。 */ + assert(built.clientJs.includes('function installSettingsModal('), + 'client.js 里没有 installSettingsModal 的定义 —— src/client/index.js 没导入它?'); + assert(/installSettingsModal\(ctx\)/.test(built.clientJs), + 'client.js 里没有 installSettingsModal(ctx) 的调用 —— 模块装配了却没挂到 apply 上,界面不会变'); + assert(/from '\.\/settings-modal\.js'/.test(read('src', 'client', 'index.js')), + 'src/client/index.js 里没有 settings-modal.js 的 import'); + return '定义 + 调用都在'; +}); +attempt('设置模态框:视觉层进了 theme.css、全部作用域化、隐藏态有属性兜底', () => { + assert(themeCss.includes('.cx-sm-'), 'theme.css 里一条 .cx-sm-* 规则都没有,视觉层等于没进去'); + const unscoped = unscopedCxSm(themeCss); + assert(unscoped.length === 0, + '有 ' + unscoped.length + ' 条 .cx-sm-* 规则没挂作用域根 ' + SCOPE + ':' + unscoped.slice(0, 2).join(' | ')); + /* 隐藏态必须以**属性选择器**为准:宿主在选中态搬家时会把那一项的 className 整条重写, + 类名会被抹掉,只有 data-* 属性留得下来。只写 .cx-sm-hidden 的话, + 筛选态下点一下别的设置项,被隐藏项就会当场复现并永久留在侧栏(集成验证批实测的回归)。 */ + assert(themeCss.includes('[data-cx-sm-hidden]'), + '隐藏态缺少属性选择器 [data-cx-sm-hidden] —— 宿主重写 className 后类名会丢,被隐藏项会当场复现'); + return '隐藏态含属性兜底'; +}); +/* 面板锚点契约:形态规则**只**认插件自有锚点 [data-cx-sm-panel], + 宿主 data-shortcut-modal / 适配器 data-dsh-surface 都只在 JS 的 PANEL_SELECTOR 里出现。 + 两层分开断言,是为了让「视觉层写回宿主/适配器锚点」与「结构层丢掉宿主锚点」这两种退化 + 各自指向明确 —— 前者是这里,后者在下面那条。 */ +attempt('设置模态框:形态规则只挂自有锚点 [data-cx-sm-panel]', () => { + assert(themeCss.includes('[data-cx-sm-panel]'), + 'theme.css 里找不到 [data-cx-sm-panel] —— 视觉层没挂到插件自有锚点上,面板一改名就整层失效'); + /* 只看本层的选择器文本(theme.css 已去注释):patches.css 对 [data-dsh-surface="sidebar"|…] + 的规则是它自己的锚点契约,与设置面板无关。 */ + const legacy = []; + let i = 0; + while (i < themeCss.length) { + const open = themeCss.indexOf('{', i); + if (open < 0) break; + const selText = themeCss.slice(i, open).trim(); + let depth = 1; + let j = open + 1; + while (j < themeCss.length && depth > 0) { + if (themeCss[j] === '{') depth += 1; + else if (themeCss[j] === '}') depth -= 1; + j += 1; + } + if (selText.includes('.cx-sm-') && /data-dsh-surface|data-shortcut-modal/.test(selText)) legacy.push(selText.slice(0, 90)); + i = j; + } + assert(legacy.length === 0, + '设置层里有 ' + legacy.length + ' 条规则还挂在宿主/适配器锚点上(应改挂 [data-cx-sm-panel]):' + legacy.slice(0, 2).join(' | ')); + const scoped = (themeCss.match(/\[data-cx-sm-panel\]/g) ?? []).length; + assert(scoped > 0, '设置层里没有一条规则挂 [data-cx-sm-panel]'); + return '自有锚点 ' + scoped + ' 处 + 0 条回退锚点规则'; +}); +attempt('设置模态框:结构层的面板选择器 = 宿主锚点优先、适配器兜底', () => { + const src = read('src', 'client', 'settings-modal.js'); + const m = /const PANEL_SELECTOR = '([^']+)'/.exec(src); + assert(m !== null, 'settings-modal.js 里找不到 PANEL_SELECTOR'); + assert(m[1] === '[data-shortcut-modal="settings"], [data-dsh-surface="settings"]', + 'PANEL_SELECTOR 变了(当前 ' + m[1] + ')—— data-shortcut-modal 是宿主自己的属性,必须排在前;' + + 'data-dsh-surface 是第三方 adapter 补打的兜底,不能升为首选'); + assert(/setAttribute\(panel, PANEL_ATTR, ''\)/.test(src) || /setAttr\(panel, PANEL_ATTR, ''\)/.test(src), + 'findPanel() 没有盖印自有锚点 PANEL_ATTR(data-cx-sm-panel)—— 视觉层的全部形态规则都挂它,盖不上就整层失效'); + assert(src.includes('const PANEL_ATTR'), '找不到 PANEL_ATTR 声明'); + /* 面板锚点失配必须**显式报警**,不能静默失效:设置界面确实开着 + (settings.section 槽在 DOM 里)却一个锚点都没匹配到时,整层注入会无声跳过。 */ + assert(src.includes('[data-slot="settings.section"]'), + 'findPanel() 里找不到「设置界面开着」的判据 —— 锚点全失配时会静默失效,不发警告'); + return m[1]; +}); +attempt('设置模态框:产物里不残留任何构建占位符', () => { + const left = ['__CODEX_UI_CSS__', '__CODEX_UI_OVERRIDE__', '__CODEX_UI_SETTINGS__', '__CODEX_UI_MODAL__'] + .filter((ph) => built.clientJs.includes(ph)); + assert(left.length === 0, 'client.js 里残留占位符 ' + left.join(' ') + '(构建没跑,或拼装漏了一环)'); + return '0 个残留占位符(模块化打包器下不再需要模板占位符)'; +}); + /* ── 8. 皮肤配色:WCAG 对比度与彩色白名单 ──────────────────────────────── */ /** 颜色解析:#rgb / #rrggbb / #rrggbbaa / rgb() / rgba()。 */ function parseColor(input) { diff --git a/scripts/live/settings-modal.mjs b/scripts/live/settings-modal.mjs new file mode 100644 index 0000000..05109e8 --- /dev/null +++ b/scripts/live/settings-modal.mjs @@ -0,0 +1,1092 @@ +#!/usr/bin/env node +/** + * settings-modal-verify.mjs — 设置模态框「结构层 + 视觉层」的真 GUI 验收。 + * + * 覆盖两件交付物的集成结果: + * · src/settings-modal.js 结构层(返回按钮 / 搜索框 / 分组标题 / 排序 / 过滤) + * · skins/codex-ink/settings-modal.css 视觉层(注入节点的样式是否真的命中) + * + * 为什么必须真 GUI:分组与过滤改的是宿主 navList 的真实子节点,而宿主的 React 重渲染行为 + * (关闭重开整棵重建、选中态搬家时整条重写 className)只有在真宿主里才成立,夹具复刻不出来。 + * 夹具能测纯函数,测不了这一层。 + * + * 用法: + * 1) DSH_HOME=<临时家> dsh --profile

--port 3199 --no-open (终端打印带 token 的 URL) + * 2) node scripts/live/settings-modal.mjs --url "http://127.0.0.1:3199/?token=..." + * + * 可选: + * --out

截图目录(默认 docs/recon) + * --cdp-port CDP 调试端口(默认 9343) + * --dpr 设备像素比(默认 1.5) + * --explore 只把现场结构打出来,不做断言 + * + * 幂等:脚本自己收尾(清搜索框、摘暗色、关模态),反复跑结果一致。 + * 退出码:非 0 = 有断言未通过。 + */ +import { spawn } from 'node:child_process'; +import http from 'node:http'; +import fs from 'node:fs'; +import { dirname, join } from 'node:path'; +import { fileURLToPath } from 'node:url'; +import { tmpdir } from 'node:os'; +import { chromePath } from '../lib/host.mjs'; +/* lib/host.mjs 不导出 tempDir:这里就地生成一个唯一临时 profile 目录。 */ +const tempDir = (name) => fs.mkdtempSync(join(tmpdir(), name + '-')); + +const HERE = dirname(fileURLToPath(import.meta.url)); +const WB = dirname(dirname(HERE)); +const arg = (name, fallback) => { + const i = process.argv.indexOf('--' + name); + return i >= 0 && process.argv[i + 1] && !process.argv[i + 1].startsWith('--') ? process.argv[i + 1] : fallback; +}; +const flag = (name) => process.argv.includes('--' + name); +const TOKEN_URL = arg('url', ''); +const OUT_DIR = arg('out', join(WB, 'docs', 'recon')); +const CHROME = arg('chrome', '') || chromePath(); +const PORT = Number(arg('cdp-port', '9343')); +const DPR = Number(arg('dpr', '1.5')); +const EXPLORE = flag('explore'); +const sleep = (ms) => new Promise((r) => setTimeout(r, ms)); +if (!TOKEN_URL) { console.error('缺少 --url "http://127.0.0.1:/?token=..."'); process.exit(2); } + +/* ── 契约快照:分组映射表 ───────────────────────────────────────────────── + 这是 src/settings-modal.js 里 GROUPS 的期望值。下面有一道「与源文件对账」的前置检查: + 源文件改了映射而这里没跟着改,脚本会**先报错**而不是拿旧快照去测新实现。 */ +const EXPECT_GROUPS = [ + { id: 'personal', label: '个人', items: ['账号与余额', '通用设置', '皮肤', '宠物', '使用统计'] }, + { id: 'integrations', label: '集成', items: ['内置插件', 'Web 插件', '订阅服务', '记忆系统', '创意工坊'] }, + { id: 'coding', label: '编码', items: ['模型', 'Agent 预设', 'LLM Verifier'] }, + { id: 'archive', label: '已归档', items: ['已归档会话'] }, +]; +/* 环境相关缺位按可选处理:「账号与余额」只在已存凭据时才注册;「皮肤」是第三方 skin-center + 的设置页,没装/禁用该适配器的环境里整个条目不存在(无适配器负向验证的实测)。 */ +const OPTIONAL_ITEMS = new Set(['账号与余额', '皮肤']); + +{ + const src = fs.readFileSync(join(WB, 'src', 'settings-modal.js'), 'utf8'); + const block = /const GROUPS = \[([\s\S]*?)\n\];/.exec(src); + if (block === null) { + console.error('前置检查失败:src/settings-modal.js 里找不到 GROUPS 字面量,契约快照无法对账'); + process.exit(2); + } + const actual = [...block[1].matchAll(/\{ id: '([a-z]+)', label: '([^']+)', items: \[([^\]]*)\] \}/g)] + .map((m) => ({ id: m[1], label: m[2], items: m[3].split(',').map((s) => s.trim().replace(/^'|'$/g, '')).filter(Boolean) })); + if (JSON.stringify(actual) !== JSON.stringify(EXPECT_GROUPS)) { + console.error('前置检查失败:脚本里的 EXPECT_GROUPS 与 src/settings-modal.js 的 GROUPS 已经不一致。'); + console.error(' 源文件:' + JSON.stringify(actual)); + console.error(' 脚本内:' + JSON.stringify(EXPECT_GROUPS)); + console.error(' 改映射是行为变更 —— 请同步更新本脚本顶部的 EXPECT_GROUPS。'); + process.exit(2); + } +} + +const origin = new URL(TOKEN_URL).origin; +const grab = (url) => new Promise((resolve, reject) => { + const u = new URL(url); + http.get({ hostname: u.hostname, port: u.port, path: u.pathname + u.search }, (res) => { + resolve((res.headers['set-cookie'] || [''])[0]); + res.resume(); + }).on('error', reject); +}); +const cookie = (await grab(TOKEN_URL)).split(';')[0]; +if (!cookie.includes('=')) { console.error('拿不到 dsh-auth cookie,token 可能已过期:' + TOKEN_URL); process.exit(2); } + +fs.mkdirSync(OUT_DIR, { recursive: true }); + +const child = spawn(CHROME, ['--headless=new', '--remote-debugging-port=' + PORT, + '--user-data-dir=' + tempDir('dsh-cdp-settings-modal'), '--no-first-run', + '--no-default-browser-check', '--disable-gpu', '--window-size=1440,960', '--hide-scrollbars', 'about:blank'], { stdio: 'ignore' }); +let info; +for (let i = 0; i < 60 && !info; i += 1) { + try { const r = await fetch('http://127.0.0.1:' + PORT + '/json/version'); if (r.ok) info = await r.json(); } catch { /* 未就绪 */ } + if (!info) await sleep(250); +} +if (!info) { console.error('Chromium 没起来:' + CHROME); process.exit(2); } +const ws = new WebSocket(info.webSocketDebuggerUrl); +await new Promise((res, rej) => { ws.onopen = res; ws.onerror = rej; }); +let seq = 0; +const waiting = new Map(); +const pageLogs = []; +ws.onmessage = (ev) => { + const m = JSON.parse(ev.data); + if (m.method === 'Runtime.consoleAPICalled' && (m.params.type === 'error' || m.params.type === 'warning')) { + pageLogs.push('console.' + m.params.type + ': ' + m.params.args.map((a) => String(a.value ?? a.description ?? '')).join(' ').slice(0, 300)); + } + if (m.method === 'Runtime.exceptionThrown') { + pageLogs.push('exception: ' + String(m.params.exceptionDetails.exception?.description ?? m.params.exceptionDetails.text).slice(0, 300)); + } + const fn = waiting.get(m.id); + if (fn) { waiting.delete(m.id); fn(m); } +}; +const send = (method, params = {}, sid) => new Promise((res, rej) => { + const id = ++seq; + waiting.set(id, (m) => (m.error ? rej(new Error(method + ': ' + JSON.stringify(m.error))) : res(m.result))); + ws.send(JSON.stringify({ id, method, params, ...(sid ? { sessionId: sid } : {}) })); +}); +const evaluate = async (expression) => { + const r = await send('Runtime.evaluate', { expression, returnByValue: true, awaitPromise: true }, sessionId); + if (r.exceptionDetails !== undefined && r.exceptionDetails !== null) { + throw new Error('页面内求值抛错:' + String(r.exceptionDetails.exception?.description ?? r.exceptionDetails.text).slice(0, 400)); + } + return r.result.value; +}; +const click = async (x, y) => { + await send('Input.dispatchMouseEvent', { type: 'mouseMoved', x, y }, sessionId); + await send('Input.dispatchMouseEvent', { type: 'mousePressed', x, y, button: 'left', clickCount: 1 }, sessionId); + await send('Input.dispatchMouseEvent', { type: 'mouseReleased', x, y, button: 'left', clickCount: 1 }, sessionId); +}; + +const { targetId } = await send('Target.createTarget', { url: 'about:blank' }); +const { sessionId } = await send('Target.attachToTarget', { targetId, flatten: true }); +await send('Page.enable', {}, sessionId); +await send('Runtime.enable', {}, sessionId); +await send('Network.enable', {}, sessionId); +await send('Emulation.setDeviceMetricsOverride', { width: 1440, height: 960, deviceScaleFactor: DPR, mobile: false }, sessionId); +const eq = cookie.indexOf('='); +await send('Network.setCookie', { name: cookie.slice(0, eq), value: cookie.slice(eq + 1), domain: new URL(origin).hostname, path: '/', httpOnly: true }, sessionId); +await send('Page.navigate', { url: origin + '/' }, sessionId); +await sleep(11000); + +/* ── 页面内的取值 API ──────────────────────────────────────────────────── + 整段作为**一个自包含闭包**注进页面,挂到 window.__cxs 上。 + 必须自包含:这些函数在浏览器里跑,引用不到本文件的任何作用域。 + selector 一律走稳定锚点 —— **宿主优先**:data-shortcut-modal="settings"(宿主自己盖在面板上的 + 属性)、data-slot / aria-current / role / tag / 位置索引;适配器的 data-dsh-surface="settings" + 只作兜底(第三方 skin-center 补打,契约自称非永久公共契约,不是唯一锚点、也不是首选)。 + 面板定位的**唯一权威来源**是 src/settings-modal.js 的 PANEL_SELECTOR,本文件不重复实现它, + 只断言它盖出来的自有锚点 [data-cx-sm-panel] 确实在。 + 不碰宿主哈希类名(CSS-Modules,每次构建都变)。 */ + + +function cxsInstall() { + /** 侧栏列表容器:nav 里最后一个「不是我们注入的」子节点。 */ + const list = () => { + const panel = document.querySelector('[data-shortcut-modal="settings"]'); + if (panel === null) return null; + const nav = Array.from(panel.children).find((el) => el.tagName === 'NAV'); + if (nav === undefined) return null; + const hit = Array.from(nav.children) + .filter((el) => el.getAttribute('data-codex-ui-injected') !== 'settings-modal').pop(); + return hit === undefined ? null : hit; + }; + /** + * 一个宿主项的「真实可见性」——读 **computed display**,不是读属性也不是读类名。 + * 只认属性的断言会漏掉「类名被宿主抹掉、属性还在但没人认」这一类故障(C1 实测踩过)。 + */ + const visible = (el) => getComputedStyle(el).display !== 'none'; + /** 视觉顺序:inline order 优先,没有就取 computed。 */ + const order = (el) => (el.style.order !== '' ? Number(el.style.order) : Number(getComputedStyle(el).order)); + const hostCells = (l) => Array.from(l.children).filter((el) => el.tagName === 'BUTTON'); + const byText = (l, text) => hostCells(l).find((el) => el.textContent.trim() === text) || null; + + const snapshot = () => { + const l = list(); + if (l === null) return null; + const nav = l.parentElement; + const items = Array.from(l.children).map((el, i) => ({ + i: i, + tag: el.tagName, + part: el.getAttribute('data-cx-sm-part'), + group: el.getAttribute('data-cx-sm-group'), + text: (el.textContent || '').trim(), + order: order(el), + injected: el.getAttribute('data-codex-ui-injected') === 'settings-modal', + hidden: !visible(el), + display: getComputedStyle(el).display, + hasHiddenAttr: el.hasAttribute('data-cx-sm-hidden'), + hasHiddenClass: el.classList.contains('cx-sm-hidden'), + })); + const flow = items.slice().sort((a, b) => a.order - b.order || a.i - b.i); + const back = nav.querySelector('[data-cx-sm-part="back"]'); + const input = nav.querySelector('[data-cx-sm-part="search-input"]'); + return { + items: items, + flow: flow, + hostItems: items.filter((r) => !r.injected && r.tag === 'BUTTON'), + headers: items.filter((r) => r.injected && String(r.part).indexOf('group:') === 0), + hasBack: back !== null, + backText: back === null ? null : back.textContent.trim(), + backAria: back === null ? null : back.getAttribute('aria-label'), + backIndex: Array.from(nav.children).findIndex((el) => el.getAttribute('data-cx-sm-part') === 'back'), + searchIndex: Array.from(nav.children).findIndex((el) => el.getAttribute('data-cx-sm-part') === 'search'), + titleIndex: Array.from(nav.children).findIndex((el) => el.tagName === 'DIV' + && el.getAttribute('data-codex-ui-injected') !== 'settings-modal' && el.querySelector('button') === null), + placeholder: input === null ? null : input.placeholder, + /* 「属性说该隐藏、但实际渲染出来了」= 隐藏态失效,单独点名。 */ + leaked: items.filter((r) => r.hasHiddenAttr && r.display !== 'none').map((r) => r.text), + /* 每个注入件在整份文档里的出现次数(重复 / 孤儿都靠它抓)。 */ + uniq: Array.from(document.querySelectorAll('[data-cx-sm-part]')).reduce((acc, el) => { + const k = el.getAttribute('data-cx-sm-part'); + acc[k] = (acc[k] || 0) + 1; + return acc; + }, {}), + injectedCount: document.querySelectorAll('[data-codex-ui-injected="settings-modal"]').length, + activeLabel: (() => { + const el = hostCells(l).find((c) => c.getAttribute('aria-current') === 'true'); + return el === undefined ? null : el.textContent.trim(); + })(), + }; + }; + + /** 注入节点的样式命中(视觉层的真凭据,不是读 CSS 源码)。 */ + const styleHits = () => { + const pick = (sel, props) => { + const el = document.querySelector(sel); + if (el === null) return { present: false }; + const cs = getComputedStyle(el); + const out = { present: true }; + for (const p of props) out[p] = cs[p]; + return out; + }; + return { + back: pick('[data-cx-sm-part="back"]', ['display', 'fontSize', 'cursor', 'color']), + group: pick('[data-cx-sm-part^="group:"]', ['display', 'fontSize', 'color']), + search: pick('[data-cx-sm-part="search"]', ['display', 'height', 'borderTopLeftRadius', 'paddingLeft']), + searchInput: pick('[data-cx-sm-part="search-input"]', ['fontSize', 'height']), + hasAttrSelector: Array.from(document.querySelectorAll('style[data-plugin="codex-ui"]')) + .map((s) => s.textContent).join('').indexOf('[data-cx-sm-hidden]') >= 0, + }; + }; + + /** + * 内容列里页头的形态。 + * 注入形态(B2 契约):header 行 > 最左侧 div.cx-sm-pagehead[data-cx-sm-part="pagehead"] + * > div.cx-sm-title[data-cx-sm-part="pagehead-title"] + * 判据同样读**计算样式**:标题必须真的比正文大,否则「注入了但没有视觉」也算不合格。 + */ + const pagehead = () => { + const panel = document.querySelector('[data-shortcut-modal="settings"]'); + if (panel === null) return null; + const content = Array.from(panel.children).filter((e) => e.tagName !== 'NAV').pop() || null; + if (content === null) return null; + const head = document.querySelector('[data-cx-sm-part="pagehead"]'); + const title = document.querySelector('[data-cx-sm-part="pagehead-title"]'); + if (head === null || title === null) return { present: false, headCount: document.querySelectorAll('[data-cx-sm-part="pagehead"]').length }; + const parent = head.parentElement; + const hs = getComputedStyle(title); + const rowCs = getComputedStyle(parent); + const firstInRow = parent.firstElementChild === head; + const rowIsHeader = parent.querySelector('[data-slot="settings.action"]') !== null; + /* 内容列里所有非注入子节点的首行文本 —— 用来证明「页头没有把宿主原有结构顶掉」。 */ + return { + present: true, + headCount: document.querySelectorAll('[data-cx-sm-part="pagehead"]').length, + titleCount: document.querySelectorAll('[data-cx-sm-part="pagehead-title"]').length, + text: title.textContent.trim(), + fontSize: hs.fontSize, + fontWeight: hs.fontWeight, + display: hs.display, + parentIsDirectChildOfContent: parent.parentElement === content, + parentHasActionSeat: rowIsHeader, + firstInRow: firstInRow, + rowIsFlex: rowCs.display === 'flex', + headClass: head.className, + titleClass: title.className, + tag: title.tagName, + }; + }; + + /** 某个宿主项的屏幕中心点(点它用真实鼠标事件,不用 el.click())。 */ + const itemBox = (text) => { + const l = list(); + if (l === null) return null; + const el = byText(l, text); + if (el === null) return null; + const r = el.getBoundingClientRect(); + return { x: Math.round(r.left + r.width / 2), y: Math.round(r.top + r.height / 2) }; + }; + + /** 设置搜索框的值,并派发真实 input 事件(等价于用户输入)。 */ + const setQuery = (value) => { + const el = document.querySelector('[data-cx-sm-part="search-input"]'); + if (el === null) return false; + const setter = Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype, 'value').set; + setter.call(el, value); + el.dispatchEvent(new Event('input', { bubbles: true })); + return true; + }; + + /** 往列表里塞一个「第三方」项(结构克隆自真实宿主项),返回是否成功。 */ + const injectUnknown = (text) => { + const l = list(); + if (l === null) return false; + const proto = hostCells(l)[0]; + if (proto === undefined) return false; + const clone = proto.cloneNode(true); + const span = clone.querySelector('span'); + if (span !== null) span.textContent = text; + clone.removeAttribute('aria-current'); + l.appendChild(clone); + return true; + }; + const removeUnknown = (text) => { + const l = list(); + if (l === null) return false; + const el = byText(l, text); + if (el === null) return false; + el.remove(); + return true; + }; + + /** + * 行内文字层级:标题必须仍是 label-primary/14px,说明才是 caption 灰。 + * + * 这个探针是为一个**真实回归**补的:早先 §4.4 写成「行内所有 div」, + * 把标题一起染成 caption 灰并压到 12px,整页标题层级塌掉,而当时的 69 项断言 + * 没有任何一条覆盖标题层级 —— 全绿也没拦住。所以这里同时取 + * 「令牌基准值」(把 var() 解析成具体色)与实际计算值对比, + * 而不是硬编码 rgb,主题切换后依然成立。 + */ + const rowType = () => { + const proxy = document.createElement('div'); + proxy.style.cssText = 'position:absolute;left:-9999px'; + document.body.appendChild(proxy); + const val = (n) => { proxy.style.color = 'rgb(1, 2, 3)'; proxy.style.color = 'var(' + n + ')'; return getComputedStyle(proxy).color; }; + const primary = val('--dsw-alias-label-primary'); + const caption = val('--dsw-alias-label-caption'); + proxy.remove(); + const rows = [...document.querySelectorAll('[data-slot="settings.general.item"] > *')]; + const titles = []; + const descs = []; + const stray = []; + for (const row of rows) { + const textEl = [...row.children].find((c) => [...c.children].some((k) => k.tagName === 'DIV')); + if (textEl === undefined) continue; + const divs = [...textEl.children].filter((k) => k.tagName === 'DIV'); + if (divs[0] !== undefined) { + const cs = getComputedStyle(divs[0]); + titles.push({ text: divs[0].textContent.trim().slice(0, 10), fs: cs.fontSize, color: cs.color }); + } + if (divs[1] !== undefined) { + const cs = getComputedStyle(divs[1]); + descs.push({ text: divs[1].textContent.trim().slice(0, 10), fs: cs.fontSize, color: cs.color }); + } + } + /* 控件区的纯数字(如字号步进的 14)不该被文字层级规则顺手染灰压小 */ + for (const el of document.querySelectorAll('[data-slot="settings.general.item"] *')) { + if (el.children.length === 0 && /^\d+$/.test((el.textContent || '').trim())) { + const cs = getComputedStyle(el); + stray.push({ text: el.textContent.trim(), fs: cs.fontSize, color: cs.color }); + } + } + return { primary, caption, titleCount: titles.length, descCount: descs.length, + titles, descs, stray }; + }; + + /** 打开设置:点宿主那个 aria-label=设置 的按钮。 */ + const openSettings = () => { + const b = document.querySelector('button[aria-label="设置"]'); + if (b === null) return false; + b.click(); + return true; + }; + /** + * 面板的**自有锚点**盖印状态(本轮锚点迁移的集成证据)。 + * data-cx-sm-panel 是 src/settings-modal.js 的 findPanel() 找到面板后盖的, + * 视觉层全部形态规则都挂在它下面 —— 它没盖上的话,整份 settings-modal.css 不命中任何元素。 + */ + const panelStamp = () => { + const panels = [...document.querySelectorAll('[data-cx-sm-panel]')]; + const host = [...document.querySelectorAll('[data-shortcut-modal="settings"], [data-dsh-surface="settings"]')]; + return { + count: panels.length, + attr: panels.length > 0 ? panels[0].getAttribute('data-cx-sm-panel') : null, + hostCount: host.length, + sameNode: panels.length > 0 && host.length > 0 && panels[0] === host[0], + shortcutModal: panels.length > 0 ? panels[0].getAttribute('data-shortcut-modal') : null, + surface: panels.length > 0 ? panels[0].getAttribute('data-dsh-surface') : null, + }; + }; + + /** + * 令牌的**计算值**(临时元素法,同 rowType 那条的老办法):挂一个探针在 body 上, + * 用 color 读 var(--token) 的解析结果 —— 不写死 rgb,换主题/换皮肤都不假失败。 + * 为什么用 color 读:自定义属性不能自引用(在探针上把 --x 设成 var(--x) 会变成无效值), + * 但把**别的**属性设成 var(--x) 是安全的,读回来的就是该令牌在当前上下文里的真实取值。 + */ + const tokenValue = (name) => { + const el = document.createElement('div'); + el.style.cssText = 'position:absolute;left:-9999px'; + document.body.appendChild(el); + const read = (n) => { + el.style.color = 'var(' + n + ')'; + const v = getComputedStyle(el).color; + el.style.removeProperty('color'); + return v; + }; + const out = { layer1: read('--dsw-alias-bg-layer-1'), layer2: read('--dsw-alias-bg-layer-2') }; + out[name] = read(name); + el.remove(); + return out; + }; + + /** + * 设置页里的行卡片(「模型」页 rowCard / 「Agent 预设」页 card)的着色状态。 + * 这两页**没有**通用语义锚点,宿主类名是哈希,所以取元素按类令牌(_rowCard / _card 后缀令牌)匹配 + * —— 注意:settings-modal.css §4.3 那条同名规则**已删除**(见该处删除记录), + * 这里的选择器只用来**读**计算样式,不用来写样式。 + * 选中判定:aria-selected / aria-checked,或 class 里带 Active / Selected / Checked + * (实测 Agent 预设页的选中卡在 class 里带一个 *_cardActive 状态类; + * 宿主哈希前缀不写进本文件 —— 它每次构建都变,写下来只会误导后人)。 + */ + const cardState = (token) => { + /* 类**令牌**匹配,不是 [class$=…] 后缀匹配:选中卡的 class 是 "_card _cardActive", + 以 _cardActive 结尾 —— 后缀匹配会把它整条漏掉(实测:4 张卡只命中 3+1 张未选中的, + selected=null 假失败)。这正是 settings-modal.css §4.3 删除记录里那条漂移陷阱, + 读样式时同样会咬人。token 传 '_rowCard' / '_card'。 */ + const re = new RegExp('(^|\\s)[\\w-]+' + token + '(?=\\s|$)'); + const cards = [...document.querySelectorAll('li')].filter((el) => typeof el.className === 'string' && re.test(el.className)); + const isSel = (el) => el.matches('[aria-selected="true"], [aria-checked="true"], [aria-current="true"]') + || /(Active|Selected|Checked)/.test(el.getAttribute('class') || ''); + const info = (el) => ({ + cls: String(el.getAttribute('class') || '').slice(0, 70), + bg: getComputedStyle(el).backgroundColor, + selected: isSel(el), + }); + const visible = cards.filter((el) => el.getBoundingClientRect().width > 0); + const pick = visible.find((el) => !isSel(el)) || null; + const selected = visible.find((el) => isSel(el)) || null; + return { total: cards.length, visible: visible.length, + pick: pick === null ? null : info(pick), + selected: selected === null ? null : info(selected), + all: visible.map(info) }; + }; + + const panelCount = () => document.querySelectorAll('[data-shortcut-modal="settings"]').length; + const orphanCount = () => document.querySelectorAll('[data-codex-ui-injected="settings-modal"]').length; + const setDark = (on) => { + if (on) document.body.setAttribute('data-ds-dark-theme', ''); + else document.body.removeAttribute('data-ds-dark-theme'); + }; + window.__cxs = { + list: list, visible: visible, snapshot: snapshot, styleHits: styleHits, itemBox: itemBox, + pagehead: pagehead, + setQuery: setQuery, injectUnknown: injectUnknown, removeUnknown: removeUnknown, + openSettings: openSettings, panelCount: panelCount, rowType: rowType, orphanCount: orphanCount, setDark: setDark, + panelStamp: panelStamp, tokenValue: tokenValue, cardState: cardState, + }; +} +await evaluate('(' + cxsInstall.toString() + ')()'); + +/** 引导弹层:内测声明 / 配置 API Key,重复点直到没有。 */ +const dismissOnboarding = async () => { + for (let round = 0; round < 8; round += 1) { + const box = await evaluate('(() => {' + + 'const re = /^(继续|稍后配置|跳过|知道了)$/;' + + 'const el = [...document.querySelectorAll("button")].find((e) =>' + + ' re.test((e.getAttribute("aria-label") || e.textContent || "").trim()) && e.offsetParent !== null);' + + 'if (!el) return null; const r = el.getBoundingClientRect();' + + 'return { x: Math.round(r.left + r.width / 2), y: Math.round(r.top + r.height / 2) }; })()'); + if (box === null) return; + await click(box.x, box.y); + await sleep(1200); + } +}; + +const openSettings = async () => { await evaluate('window.__cxs.openSettings()'); await sleep(2200); }; +const clickItem = async (label) => { + const box = await evaluate('window.__cxs.itemBox(' + JSON.stringify(label) + ')'); + if (box === null) return null; + await click(box.x, box.y); + await sleep(1500); + return box; +}; +const setQuery = async (value) => { await evaluate('window.__cxs.setQuery(' + JSON.stringify(value) + ')'); await sleep(900); }; +const screenshot = async (file) => { + const s = await send('Page.captureScreenshot', { format: 'png' }, sessionId); + fs.writeFileSync(join(OUT_DIR, file), Buffer.from(s.data, 'base64')); + return file; +}; + +/* ── 断言基建 ─────────────────────────────────────────────────────────── */ +let failed = 0; +let passed = 0; +const ok = (name, extra = '') => { passed += 1; console.log('ok ' + name + (extra ? ' ' + extra : '')); }; +const bad = (name, detail) => { failed += 1; console.error('FAIL ' + name + '\n ' + detail); }; +const check = (name, cond, detail) => (cond ? ok(name, typeof detail === 'string' ? detail : '') : bad(name, String(detail))); +/** 只报第一处差异所在的整串,免得刷屏。 */ +const checkEqual = (name, got, want) => { + const a = JSON.stringify(got); + const b = JSON.stringify(want); + check(name, a === b, a === b ? '' : 'got = ' + a + '\n want = ' + b); +}; + +await dismissOnboarding(); +await sleep(800); +await openSettings(); +await sleep(1500); + +const snap0 = await evaluate('window.__cxs.snapshot()'); +if (snap0 === null || snap0 === undefined) { + console.error('FAIL 设置面板或侧栏列表没找到:结构层可能整体没生效(看下面 console 里的 [codex-ui] warn)'); + console.log('\nPAGE LOGS:\n ' + pageLogs.slice(0, 15).join('\n ')); + ws.close(); child.kill(); + process.exit(1); +} + +/** 期望的可见视觉流:按分组映射表展开,再挖掉本环境缺位的可选项。 */ +const EXPECT_FLOW = EXPECT_GROUPS.flatMap((g) => [[g.id, g.label]].concat(g.items.map((t) => [g.id, t]))) + .filter((row) => !OPTIONAL_ITEMS.has(row[1]) || snap0.hostItems.some((r) => r.text === row[1])); + +if (EXPLORE) { + console.log('SNAPSHOT: ' + JSON.stringify(snap0, null, 1)); + console.log('STYLE HITS: ' + JSON.stringify(await evaluate('window.__cxs.styleHits()'), null, 1)); + await screenshot('c1-explore.png'); + ws.close(); child.kill(); + process.exit(0); +} + +const flowOf = (snap) => snap.flow.filter((r) => !r.hidden).map((r) => [r.group, r.text]); +const headerFlowOf = (snap) => snap.flow + .filter((r) => r.injected && String(r.part).indexOf('group:') === 0 && !r.hidden).map((r) => r.text); + +/* ── 1. 侧栏骨架 ───────────────────────────────────────────────────────── */ +console.log('\n── 1 侧栏骨架 ──'); +console.log(' 宿主项 ' + snap0.hostItems.length + ' 个,注入件 ' + snap0.injectedCount + ' 个'); +check('返回按钮存在、文案与无障碍名正确', + snap0.hasBack && snap0.backText.indexOf('返回应用') >= 0 && snap0.backAria === '返回应用', + 'text=' + snap0.backText + ' aria=' + snap0.backAria); +check('顺序:返回在最上 → 搜索框 → 宿主标题 → 列表', + snap0.backIndex === 0 && snap0.searchIndex === 1 && snap0.titleIndex === 2, + 'back=' + snap0.backIndex + ' search=' + snap0.searchIndex + ' title=' + snap0.titleIndex); +check('搜索框占位符正确', snap0.placeholder === '搜索设置...', 'placeholder=' + snap0.placeholder); +checkEqual('分组标题按 个人/集成/编码/已归档 顺序出现', headerFlowOf(snap0), ['个人', '集成', '编码', '已归档']); + +/* ── 2. 分组内项序与映射表一致 ─────────────────────────────────────────── */ +console.log('\n── 2 分组与项序 ──'); +const gotFlow = flowOf(snap0); +if (JSON.stringify(gotFlow) !== JSON.stringify(EXPECT_FLOW)) { + /* 只报第一处不一致,否则一次错位会把后面全刷成「错」。 */ + const at = gotFlow.findIndex((row, i) => JSON.stringify(row) !== JSON.stringify(EXPECT_FLOW[i])); + console.error(' 第 ' + at + ' 项起不一致:got=' + JSON.stringify(gotFlow.slice(at, at + 3)) + + ' want=' + JSON.stringify(EXPECT_FLOW.slice(at, at + 3))); +} +checkEqual('可见视觉流与分组映射表逐项一致', gotFlow, EXPECT_FLOW); + +const personalItems = gotFlow.filter((r) => r[0] === 'personal' && r[1] !== '个人').map((r) => r[1]); +const hasAccount = snap0.hostItems.some((r) => r.text === '账号与余额'); +check('「账号与余额」缺位时,个人组其余项正常、组标题仍在', + personalItems.length >= 2 && headerFlowOf(snap0)[0] === '个人', + 'hasAccount=' + hasAccount + ' 个人组=' + JSON.stringify(personalItems)); +console.log(' (本实例「账号与余额」' + (hasAccount ? '存在' : '缺位') + ';两种都算通过,验的是组内其余项不受影响)'); + +/* ── 3. 视觉层:注入节点的样式真的命中 ─────────────────────────────────── */ +console.log('\n── 3 视觉层命中 ──'); +const hits = await evaluate('window.__cxs.styleHits()'); +check('返回按钮有样式命中(flex + 13px + pointer)', + hits.back.present && hits.back.display === 'flex' && hits.back.fontSize === '13px' && hits.back.cursor === 'pointer', + JSON.stringify(hits.back)); +check('分组标题有样式命中(12px 小字)', hits.group.present && hits.group.fontSize === '12px', JSON.stringify(hits.group)); +/* 打磨轮(web 端整体密度下调一号)把搜索框从 34px 压到 32px, + 形态判据(flex + 灰填充 + 圆角)不变,只更新高度期望值。 */ +check('搜索框有样式命中(flex + 32px 高)', + hits.search.present && hits.search.display === 'flex' && hits.search.height === '32px', JSON.stringify(hits.search)); +check('搜索输入框有样式命中(13px)', hits.searchInput.present && hits.searchInput.fontSize === '13px', JSON.stringify(hits.searchInput)); +/* 搜索框 = 全圆角胶囊(用户指名)。 + 注意:getComputedStyle 返回的是**声明值的解析结果**,浏览器不会在这里把 999px + 夹到半高(夹取只发生在绘制时)—— 所以期望值就是 999px,不是 16px。 + 与「方形井」的 10px 档必须分得开,否则胶囊退化成圆角矩形也看不出来。 */ +check('搜索框是全圆角胶囊(计算半径 999px,非 10px 的方形井档)', + hits.search.borderTopLeftRadius === '999px' && hits.search.borderTopLeftRadius !== '10px', + JSON.stringify({ radius: hits.search.borderTopLeftRadius, height: hits.search.height })); +check('胶囊两侧内衬加宽(14px,图标与文字不贴弧)', + hits.search.paddingLeft === '14px', 'paddingLeft=' + hits.search.paddingLeft); + + +/* ── 3b. 页头大标题(B2 注入 · 契约:.cx-sm-pagehead > .cx-sm-title)──────── */ +console.log('\n── 3b 页头大标题 ──'); +const ph0 = await evaluate('window.__cxs.pagehead()'); +check('页头存在且唯一(未重复注入)', ph0.present && ph0.headCount === 1 && ph0.titleCount === 1, + JSON.stringify(ph0)); +check('页头挂在内容列的直接子节点(header 行)上', ph0.parentIsDirectChildOfContent === true, JSON.stringify(ph0)); +check('页头在最左、与右上角操作座位同一行(Codex 的「大标题 + 页级操作」形态)', + ph0.firstInRow === true && ph0.parentHasActionSeat === true, + 'firstInRow=' + ph0.firstInRow + ' hasActionSeat=' + ph0.parentHasActionSeat); +check('标题文本 = 当前激活项的 label', ph0.text === snap0.activeLabel, + 'title=' + JSON.stringify(ph0.text) + ' active=' + JSON.stringify(snap0.activeLabel)); +check('标题真的有视觉(字号明显大于正文 13px)', + parseFloat(ph0.fontSize) >= 20, 'fontSize=' + ph0.fontSize + ' weight=' + ph0.fontWeight); +check('页头类名与视觉层契约一致(.cx-sm-pagehead / .cx-sm-title,视觉层才有命中)', + ph0.headClass === 'cx-sm-pagehead' && ph0.titleClass === 'cx-sm-title', + ph0.headClass + ' / ' + ph0.titleClass); + +/* ── 3c. 打磨轮新增形态:桌面标题栏让位 / 内容居中 / 灰白层次与合并卡 ── */ +console.log('\n── 3c 打磨轮形态(桌面标题栏 · 居中 · 层次)──'); + +/* 桌面端(Windows 无边框)宿主会在 打 data-windows-titlebar 并内联标题栏高度。 + 这里**模拟**那个状态:面板必须整体下移 40px,否则内容与标题栏/窗口按钮重叠。 */ +const winTitlebar = await evaluate(`(() => { + const root = document.documentElement; + const had = root.hasAttribute('data-windows-titlebar'); + const prev = root.style.getPropertyValue('--dsh-windows-titlebar-height'); + root.setAttribute('data-windows-titlebar', ''); + root.style.setProperty('--dsh-windows-titlebar-height', '40px'); + const panel = document.querySelector('[data-shortcut-modal="settings"]'); + const out = { paddingTop: getComputedStyle(panel).paddingTop, height: Math.round(panel.getBoundingClientRect().height) }; + if (!had) root.removeAttribute('data-windows-titlebar'); + if (prev) root.style.setProperty('--dsh-windows-titlebar-height', prev); + else root.style.removeProperty('--dsh-windows-titlebar-height'); + return out; +})()`); +check('模拟桌面标题栏时面板 padding-top = 40px(内容整体下移,不与标题栏碰撞)', + winTitlebar.paddingTop === '40px', JSON.stringify(winTitlebar)); +check('标题栏让位只加内边距、面板仍是整屏高(不缩高、不露底)', + winTitlebar.height === 960, JSON.stringify(winTitlebar)); + +/* 内容居中:Codex 的设置正文是一根窄柱,水平居中于侧栏之外的剩余空间。 */ +const centring = await evaluate(`(() => { + const panel = document.querySelector('[data-shortcut-modal="settings"]'); + const content = [...panel.children].filter((e) => e.tagName !== 'NAV').pop(); + const root = content === null ? null : content.querySelector('[data-slot="settings.section"] > *'); + if (root === null) return { present: false }; + const r = root.getBoundingClientRect(), c = content.getBoundingClientRect(); + return { present: true, rootWidth: Math.round(r.width), contentWidth: Math.round(c.width), + left: Math.round(r.x - c.x), right: Math.round(c.right - r.right), + maxWidth: getComputedStyle(root).maxWidth }; +})()`); +check('内容容器收窄到 760px 且水平居中(左右留白大致相等)', + centring.present === true && centring.rootWidth === 760 && Math.abs(centring.left - centring.right) <= 2, + JSON.stringify(centring)); +check('内容容器的 max-width 真的生效(不是打在 display:contents 包装上)', + centring.maxWidth === '760px', JSON.stringify(centring)); + +/* 灰背板 + 白内容面板的层次骨架,以及「连续行合并成一张卡」的圆角分布。 */ +const surface = await evaluate(`(() => { + const panel = document.querySelector('[data-shortcut-modal="settings"]'); + const content = [...panel.children].filter((e) => e.tagName !== 'NAV').pop(); + const rows = [...panel.querySelectorAll('[data-slot="settings.general.item"] > *')]; + const cs = (el) => getComputedStyle(el); + const filterOf = (el) => cs(el).backdropFilter || cs(el).webkitBackdropFilter || 'none'; + return { + panelBg: cs(panel).backgroundColor, panelFilter: filterOf(panel), + contentBg: cs(content).backgroundColor, contentRadius: cs(content).borderRadius, + contentBorder: cs(content).borderTopWidth + ' ' + cs(content).borderTopStyle, + contentMargin: cs(content).margin, + rowCount: rows.length, + firstRadius: rows.length > 0 ? cs(rows[0]).borderRadius : null, + lastRadius: rows.length > 0 ? cs(rows[rows.length - 1]).borderRadius : null, + middleRadius: rows.length > 2 ? cs(rows[1]).borderRadius : null, + rowBg: rows.length > 0 ? cs(rows[0]).backgroundColor : null, + rowBorderTopColor: rows.length > 0 ? cs(rows[0]).borderTopColor : null, + rowBorderLeftWidth: rows.length > 0 ? cs(rows[0]).borderLeftWidth : null, + rowBorderTopWidth: rows.length > 0 ? cs(rows[0]).borderTopWidth : null, + midBorderLeftWidth: rows.length > 2 ? cs(rows[1]).borderLeftWidth : null, + lastBorderLeftWidth: rows.length > 0 ? cs(rows[rows.length - 1]).borderLeftWidth : null, + }; +})()`); +/* 背板必须**不透明**(用户裁决 2026-09-27,真机实测教训): + 设置页是全页铺满的 overlay,底下压着主窗口内容 —— 用户装了会画壁纸的宠物插件, + 78% alpha + blur + saturate 会把壁纸色揉进设置页的灰,整页比 #f9f9f9 更深且偏色, + 而且随用户壁纸变化。铺满全窗的 overlay 用毛玻璃没有任何视觉受益,只赔确定性。 + 用户原话「卡片内是白色,边框(页面)带有 #f9f9f9 即可」—— 页面颜色必须钉死。 + 历史:本条曾是「毛玻璃生效:背板有 backdrop-filter,且底色是半透明」, + 随本轮改为不透明一并作废(毛玻璃是更早「居中弹窗」时代的诉求,全页化后不成立)。 + 断言仍令牌相对:alpha=1 且 RGB 对账 bg-sidebar 令牌,不写死 rgb(249,249,249)。 */ +check('背板不透明:无 backdrop-filter,且底色 alpha = 1(颜色钉死,不吃环境色)', + !/blur/.test(surface.panelFilter) + && /^rgb\(/.test(String(surface.panelBg).trim()), + 'filter=' + surface.panelFilter + ' / 背板=' + surface.panelBg); +/* 内容列现在是「平铺的白」,但仍然**不是**浮起面板:有轮廓就还是「面板」, + 有 gutter 就会在四周露背板、重现那条缝。所以平铺的形态断言原样保留。 */ +check('内容列是 flush 平铺:无圆角、无描边、无 gutter', + /^0px(\s|$)/.test(String(surface.contentRadius).trim()) + && /^0px none$/.test(String(surface.contentBorder).trim()) + && /^0px( 0px){0,3}$/.test(String(surface.contentMargin).trim()), + 'radius=' + surface.contentRadius + ' / border=' + surface.contentBorder + ' / margin=' + surface.contentMargin); +check('连续行合并成一张卡:首行上圆角 + 末行下圆角 + 中间行无圆角', + surface.rowCount > 2 + && /^12px 12px/.test(surface.firstRadius) + && /12px 12px$/.test(surface.lastRadius) + && surface.middleRadius === '0px', + JSON.stringify(surface)); +/* 背板 = 主界面侧栏(两屏并排同色): + 用户实测「设置页左栏 #ededed vs 主界面侧栏 #f9f9f9,差异明显」, + 本轮把 --cx-sm-surface-backdrop 由 bg-layer-3 换成 bg-sidebar。 + 这里直接对账:设置页背板计算色 === 主界面侧栏那一面(同一令牌、同一合成)。 + 断言写成「两边相等」而不是写死 rgb(249,249,249) —— 令牌相对,换皮肤不假失败; + 同时也与 layer-3 对比,确保没有退回旧令牌。 */ +const panelBgNow = await evaluate('getComputedStyle(document.querySelector(\'[data-shortcut-modal="settings"]\')).backgroundColor'); +/** 把计算色归一成不透明的 "rgb(r, g, b)",只比颜色本身、不比写法。 + 背板已改回**不透明**(见上文「背板不透明」那条),计算值本就是 "rgb(r, g, b)"; + 这个函数保留是为了让对账不依赖写法(color(srgb …) / rgba(…) / #hex 都认), + 与用户要的证据(左栏计算色 = 侧栏令牌实测值)口径一致。 + 注意:它**只看 RGB 三通道、不看 alpha**,所以「不透明」必须由专门那条断言把守。 */ +const rgbOnly = (s) => { + const t = String(s).trim(); + const cm = /^color\(srgb\s+([\d.]+)\s+([\d.]+)\s+([\d.]+)/.exec(t); + if (cm !== null) return 'rgb(' + [cm[1], cm[2], cm[3]].map((v) => Math.round(parseFloat(v) * 255)).join(', ') + ')'; + const rg = /^rgba?\(\s*([\d.]+)[,\s]+([\d.]+)[,\s]+([\d.]+)/.exec(t); + if (rg !== null) return 'rgb(' + [rg[1], rg[2], rg[3]].map((v) => Math.round(parseFloat(v))).join(', ') + ')'; + const hx = /^#([0-9a-f]{6})$/i.exec(t); + if (hx !== null) return 'rgb(' + [0, 2, 4].map((i) => parseInt(hx[1].slice(i, i + 2), 16)).join(', ') + ')'; + return t; +}; +const bodyToken = (name) => evaluate('getComputedStyle(document.body).getPropertyValue("' + name + '").trim()'); +const sidebarTok = await bodyToken("--dsw-alias-bg-sidebar"); +const layer3Tok = await bodyToken("--dsw-alias-bg-layer-3"); +/* 形态定稿(用户 2026-09-27 确认,Codex 参考图):**侧栏灰 + 内容区白平铺 + 白卡浅细边**。 + 内容列取 bg-base 平铺(浅 #ffffff;深 #111111 —— 上游 0.5.6 起深色窗口底与表面分层, + 彼时 #181818 与侧栏同面的时代已结束),保持 flush。 + 演进:此条曾是「白内容面板 + 不同背板」(两个面)→「整页同面、内容列不吃底色」 + (整页灰,用户 2026-09-27 否决)→ 现在这条。 + 断言令牌相对 —— 对账 --dsw-alias-bg-base,不写死 rgb(255,255,255)。 + ⚠️ 位置有约束:rgbOnly / bodyToken 在本段才声明,这几条断言必须待在它们之后(否则 TDZ)。 */ +const bgBaseTok = await bodyToken("--dsw-alias-bg-base"); +check('内容列 = bg-base 平铺(浅 #ffffff / 深 #111111)', + rgbOnly(surface.contentBg) === rgbOnly(bgBaseTok), + 'contentBg=' + rgbOnly(surface.contentBg) + ' / --dsw-alias-bg-base=' + bgBaseTok); +/* 浅色下内容列与背板**分色**(白 ≠ 侧栏那一档),这正是定稿形态要的层次来源。 */ +check('浅色内容列与背板分色(内容白 ≠ 侧栏色)', + rgbOnly(surface.contentBg) !== rgbOnly(panelBgNow), + 'contentBg=' + rgbOnly(surface.contentBg) + ' / 背板=' + rgbOnly(panelBgNow)); +/* 浅色卡边 = bg-sidebar 那一档(上游 0.6.4 起浅色侧栏 #f6f6f6):白卡浮在白底上,靠这条细边划出卡的边界 + (用户原话「边框带有 #f9f9f9 即可」,Codex 参考图那一版)。 + 对账 bg-sidebar 令牌而不是写死 rgb(249,249,249);左右边也必须在(卡的侧轮廓)。 */ +const sidebarTokLight = await bodyToken("--dsw-alias-bg-sidebar"); +/* 宽度不写死 0.5px:Chromium 把边框宽度吸附到设备像素,dpr>1 时 0.5px 的计算值会读成 1px。 + 改断「左右边存在、且与上下同宽」—— 语义等价且不吃 DPR。 */ +check('浅色卡边 = bg-sidebar 细边,且左右边齐全', + surface.rowBorderTopColor !== null + && rgbOnly(surface.rowBorderTopColor) === rgbOnly(sidebarTokLight) + && surface.rowBorderLeftWidth !== '0px' + && surface.rowBorderLeftWidth === surface.rowBorderTopWidth + && surface.lastBorderLeftWidth !== '0px', + '卡边=' + rgbOnly(surface.rowBorderTopColor) + ' / --dsw-alias-bg-sidebar=' + sidebarTokLight + + ' / 首行左=' + surface.rowBorderLeftWidth + ' 上=' + surface.rowBorderTopWidth + ' / 末行左=' + surface.lastBorderLeftWidth); +/* 中间行不给左右边,行间发丝线才是一条完整直线。 */ +check('卡内中间行不画左右边(发丝线不断口)', surface.midBorderLeftWidth === '0px', + '中间行左边宽=' + surface.midBorderLeftWidth); +check('背板与主界面侧栏同色(设置页左栏 = 主界面侧栏面)', + rgbOnly(panelBgNow) === rgbOnly(sidebarTok), + '左栏计算色=' + rgbOnly(panelBgNow) + ' / --dsw-alias-bg-sidebar=' + sidebarTok); +check('背板已不是 layer-3(没有退回旧令牌)', + rgbOnly(panelBgNow) !== rgbOnly(layer3Tok), + '左栏计算色=' + rgbOnly(panelBgNow) + ' / --dsw-alias-bg-layer-3=' + layer3Tok); +/* 形态定稿下层次由「侧栏灰 vs 内容白」的分色承担(见上文那条), + 这里只确认背板与内容列确实分处两色,且背板 = bg-sidebar —— 层次没塌。 */ + +/* ── 3d. 锚点迁移集成 + 卡着色令牌路径(PR #1 二审修复)────────────────── */ +console.log('\n── 3d 自有锚点盖印 · 卡着色令牌路径 ──'); + +/* (a) 面板在插件注入后带上自有锚点 data-cx-sm-panel。 + 本轮把面板锚点从「仅适配器的 data-dsh-surface="settings"」迁到 + 「宿主 data-shortcut-modal="settings" 优先、适配器兜底」,定位到面板后由 + src/settings-modal.js 的 findPanel() 盖上自有锚点;settings-modal.css 的全部形态规则 + 都改挂它 —— 它没盖上,整份视觉层就不命中任何元素(这正是本轮迁移的风险点)。 + 一条断言同时钉三件事:盖了、盖在真正的面板节点上(与宿主锚点是同一个节点)、没盖重。 */ +const stamped = await evaluate('window.__cxs.panelStamp()'); +check('面板被盖印自有锚点 data-cx-sm-panel(锚点迁移的集成证据)', + stamped.count === 1 && stamped.attr === '' && stamped.sameNode === true, + JSON.stringify(stamped)); + +/* (b)(c) §4.3 那条 class 后缀规则**已删除**(见 skins/codex-ink/settings-modal.css 的删除记录)。 + 模型 / Agent 预设两页的卡现在唯一的着色机制是宿主令牌 --dsw-alias-settings-card-fill + (宿主主题在 body 上声明为 bg-layer-2;本皮肤在 skin.css 里显式定义成 bg-layer-1)。 + 下面两条合起来证明:令牌路径活着,且选中态没有被它抹平。 + ⚠️ 必须先走回「模型」页:前面那些断言把现场切到了别的设置页,而这两页的卡是宿主自建结构, + 通用设置页上根本没有 _rowCard / _card。 */ +await clickItem('模型'); +const tokenProbe = await evaluate('window.__cxs.tokenValue("--dsw-alias-settings-card-fill")'); +const modelCards = await evaluate('window.__cxs.cardState("_rowCard")'); +check('模型页未选中卡的背景 = var(--dsw-alias-bg-layer-1) 的计算值(令牌路径活着)', + modelCards.pick !== null && modelCards.pick.bg === tokenProbe.layer1, + '卡=' + JSON.stringify(modelCards.pick && modelCards.pick.bg) + ' / layer-1=' + tokenProbe.layer1 + + ' / 卡数 可见/总=' + modelCards.visible + '/' + modelCards.total); + +/* 选中态仍可区分:切到「Agent 预设」——实测该页 4 张卡里有 1 张带状态类 + (class = _card + 一个 *_cardActive 状态类),是全设置面板里唯一能同时量到 + 「未选中 vs 选中」的页。 + 断言要求两者都存在且不同色:宿主若改实现把选中底色画丢,这一条会红。 */ +await clickItem('Agent 预设'); +const agentCards = await evaluate('window.__cxs.cardState("_card")'); +check('Agent 预设页:选中卡背景 ≠ 未选中卡背景(选中态未被令牌路径抹平)', + agentCards.pick !== null && agentCards.selected !== null + && agentCards.pick.bg !== agentCards.selected.bg, + '未选中=' + JSON.stringify(agentCards.pick && agentCards.pick.bg) + + ' / 选中=' + JSON.stringify(agentCards.selected && agentCards.selected.bg) + + ' / 卡数 可见/总=' + agentCards.visible + '/' + agentCards.total); +/* 两页的未选中卡必须落在同一档(同走 settings-card-fill → layer-1): + §4.3 删除后,这条是「模型页与 Agent 预设页白卡一致」的唯一保证。 */ +check('模型页与 Agent 预设页的未选中卡同为 layer-1 一档(两页白卡一致)', + modelCards.pick !== null && agentCards.pick !== null && modelCards.pick.bg === agentCards.pick.bg, + '模型=' + JSON.stringify(modelCards.pick && modelCards.pick.bg) + + ' / Agent=' + JSON.stringify(agentCards.pick && agentCards.pick.bg)); +await clickItem(snap0.activeLabel); + +/* ✕ 关闭按钮已隐藏:宿主那个按钮不该再可见。 + 只认计算 display —— 宿主若只是把它缩成 0 尺寸,那是另一种失败,不该被放过。 + 兜底路径不受影响:Escape 优先,settings-modal.js 的 button.click() 对 display:none 仍生效。 */ +const closeInfo = await evaluate('(() => { const btn = document.querySelector(\'[data-shortcut-modal="settings"] button:has([data-slot="settings.close"])\'); if (btn === null) return { present: false, display: null }; const cs = getComputedStyle(btn); return { present: true, display: cs.display, rectW: btn.getBoundingClientRect().width }; })()'); +check('右上角 ✕ 关闭按钮已隐藏(Codex 无此按钮,← 返回应用承担退出)', + closeInfo.present === true && closeInfo.display === 'none', + JSON.stringify(closeInfo)); + +/* 切项跟随:换一个设置项,标题文本必须跟着变。 */ +const otherLabel = snap0.hostItems.map((r) => r.text).find((t) => t !== snap0.activeLabel); +await clickItem(otherLabel); +const ph1 = await evaluate('window.__cxs.pagehead()'); +const activeAfterSwitch = (await evaluate('window.__cxs.snapshot()')).activeLabel; +check('切项后标题跟随更新', ph1.text === activeAfterSwitch && ph1.text === otherLabel, + 'title=' + JSON.stringify(ph1.text) + ' active=' + JSON.stringify(activeAfterSwitch) + ' clicked=' + JSON.stringify(otherLabel)); +check('切项后页头仍唯一(没有叠加出第二个)', ph1.headCount === 1, 'headCount=' + ph1.headCount); +await clickItem(snap0.activeLabel); + + +/* 行内文字层级:标题 14px/label-primary,说明 12px/label-caption。 + 这条专治「文字层级规则误伤标题」——上一版就这么坏过,69 项全绿也没拦住。 */ +const typeLight = await evaluate('window.__cxs.rowType()'); +check('行标题恢复 14px 且为 label-primary(未被文字层级规则染灰压小)', + typeLight.titleCount > 0 + && typeLight.titles.every((r) => r.fs === '14px' && r.color === typeLight.primary), + JSON.stringify({ primary: typeLight.primary, titles: typeLight.titles.slice(0, 3) })); +check('行内说明为 12px 且压到 label-caption 档(与标题明显分层)', + typeLight.descCount > 0 + && typeLight.descs.every((r) => r.fs === '12px' && r.color === typeLight.caption) + && typeLight.caption !== typeLight.primary, + JSON.stringify({ caption: typeLight.caption, descs: typeLight.descs.slice(0, 3) })); +check('标题与说明确实是两个不同层级(不是同色同号)', + typeLight.titles.every((tt) => typeLight.descs.every((dd) => dd.color !== tt.color && dd.fs !== tt.fs)), + JSON.stringify({ title0: typeLight.titles[0], desc0: typeLight.descs[0] })); +check('控件区裸数字未被文字层级规则误伤(仍为 label-primary,不被压成 caption 灰)', + typeLight.stray.every((r) => r.color === typeLight.primary), + JSON.stringify(typeLight.stray)); + +/* ── 4. 搜索过滤 ───────────────────────────────────────────────────────── */ +console.log('\n── 4 搜索过滤 ──'); +await setQuery('模型'); +const f1 = await evaluate('window.__cxs.snapshot()'); +checkEqual('过滤命中精确:只剩「模型」', f1.hostItems.filter((r) => !r.hidden).map((r) => r.text), ['模型']); +checkEqual('空分组标题被隐藏,只留命中的「编码」', headerFlowOf(f1), ['编码']); +check('过滤只改显隐,宿主节点一个不少', f1.hostItems.length === snap0.hostItems.length, + f1.hostItems.length + ' vs ' + snap0.hostItems.length); +check('被隐藏项确实不可见(computed display:none)', f1.leaked.length === 0, '复现项=' + JSON.stringify(f1.leaked)); +await screenshot('c1-04-search-filter.png'); + +await setQuery('zzzz-nothing-here'); +const f2 = await evaluate('window.__cxs.snapshot()'); +check('无结果提示出现、且排在视觉流最后', + f2.flow.filter((r) => r.part === 'empty' && !r.hidden).length === 1 + && f2.flow.filter((r) => !r.hidden).slice(-1)[0].part === 'empty', + JSON.stringify(f2.flow.filter((r) => !r.hidden).map((r) => [r.part, r.text]))); +check('无结果时所有宿主项都被隐藏', f2.hostItems.every((r) => r.hidden), + JSON.stringify(f2.hostItems.filter((r) => !r.hidden).map((r) => r.text))); +await screenshot('c1-05-search-empty.png'); + +await setQuery(''); +const f3 = await evaluate('window.__cxs.snapshot()'); +check('清空后全部恢复', f3.hostItems.every((r) => !r.hidden) && f3.leaked.length === 0, + '仍隐藏=' + JSON.stringify(f3.hostItems.filter((r) => r.hidden).map((r) => r.text))); +checkEqual('清空后视觉流回到映射表序列', flowOf(f3), EXPECT_FLOW); + +/* ── 5. 隐藏态耐久性(C1 回归:类名被宿主抹掉时不能复现) ──────────────── */ +console.log('\n── 5 隐藏态耐久性(真实交互路径回归)──'); +/* + 造出故障前提:过滤到某个可见项,此时**当前选中项**处于被隐藏状态; + 然后点那个可见项 —— 宿主会把选中态搬走,并对被隐藏项整条重写 className(抹掉我们的类名)。 + 修复前:该类名是唯一的隐藏钩子,于是被隐藏项当场 display:flex 复现、此后永久可见。 + 修复后:隐藏由 [data-cx-sm-hidden] 属性兜底,类名被抹也不影响。 +*/ +const activeLabel = snap0.activeLabel; +const targetLabel = snap0.hostItems.map((r) => r.text).find((t) => t !== activeLabel && t !== '已归档会话'); +check('找到用于构造场景的可见项', targetLabel !== undefined, 'target=' + targetLabel + ' active=' + activeLabel); +if (targetLabel !== undefined) { + await setQuery(targetLabel); + const beforeClick = await evaluate('window.__cxs.snapshot()'); + const victims = beforeClick.items.filter((r) => r.hasHiddenAttr).map((r) => r.text); + check('构造出故障前提:存在被隐藏项,且当前选中项就在其中', + victims.length > 0 && victims.indexOf(activeLabel) >= 0, + '选中项=' + activeLabel + ' 被隐藏=' + JSON.stringify(victims)); + await clickItem(targetLabel); + const afterClick = await evaluate('window.__cxs.snapshot()'); + check('选中态搬家后,被隐藏项不因类名被抹掉而复现', + afterClick.leaked.length === 0, '复现项=' + JSON.stringify(afterClick.leaked)); + check('被隐藏项仍是「属性 + 计算样式」一致(display:none)', + afterClick.items.filter((r) => r.hasHiddenAttr).every((r) => r.display === 'none'), + JSON.stringify(afterClick.items.filter((r) => r.hasHiddenAttr && r.display !== 'none').map((r) => r.text))); + await screenshot('c1-06-hidden-durability.png'); + await setQuery(''); +} + +/* ── 6. 切项 / 关闭重开:注入存活且不叠加 ──────────────────────────────── */ +console.log('\n── 6 切项 / 关闭重开 ──'); +/* 基准必须在**切项前一刻**现取:搜索测试合法地多出一个 .cx-sm-empty 提示节点, + 拿「刚打开设置时」的计数当基准会把那个合法增量误判成重复注入。 */ +const preSwitch = (await evaluate('window.__cxs.snapshot()')).injectedCount; +await clickItem('皮肤'); +const s1 = await evaluate('window.__cxs.snapshot()'); +check('切设置项后返回按钮与搜索框存活', s1.hasBack && s1.searchIndex === 1, + 'back=' + s1.backIndex + ' search=' + s1.searchIndex); +check('切设置项后 4 个分组标题仍在', s1.headers.filter((r) => !r.hidden).length === 4, + s1.headers.map((r) => r.text).join('/')); +check('切设置项不产生重复注入节点', s1.injectedCount === preSwitch, s1.injectedCount + ' vs ' + preSwitch); +/* 计数相等还不够 —— 数量对但同一件注入了两遍也会相等。逐件查唯一性。 */ +check('切设置项后每个注入件仍全局唯一(无重复节点)', + Object.values(s1.uniq).every((n) => n === 1), JSON.stringify(s1.uniq)); + +await evaluate('document.body.focus()'); +await send('Input.dispatchKeyEvent', { type: 'keyDown', key: 'Escape', code: 'Escape', windowsVirtualKeyCode: 27 }, sessionId); +await send('Input.dispatchKeyEvent', { type: 'keyUp', key: 'Escape', code: 'Escape', windowsVirtualKeyCode: 27 }, sessionId); +await sleep(1800); +const closed = await evaluate('window.__cxs.panelCount()'); +check('Esc 关闭设置', closed === 0, 'panel count=' + closed); +const orphans = await evaluate('window.__cxs.orphanCount()'); +check('关闭后注入节点随面板一起消失(不留孤儿)', orphans === 0, 'orphans=' + orphans); + +await openSettings(); +await sleep(1500); +const r1 = await evaluate('window.__cxs.snapshot()'); +check('重开后完整重放(返回 + 搜索 + 4 标题)', + r1.hasBack && r1.searchIndex === 1 && r1.headers.length === 4, + 'back=' + r1.hasBack + ' search=' + r1.searchIndex + ' headers=' + r1.headers.length); +check('重放不叠加:每个注入件全局唯一', Object.values(r1.uniq).every((n) => n === 1), JSON.stringify(r1.uniq)); +check('重放后无残留空结果提示', + r1.items.filter((r) => r.part === 'empty' && !r.hidden).length === 0, + JSON.stringify(r1.items.filter((r) => r.part === 'empty').map((r) => [r.hidden, r.display]))); +checkEqual('重放后视觉流仍与映射表一致', flowOf(r1), EXPECT_FLOW); +const phReopen = await evaluate('window.__cxs.pagehead()'); +check('重开后页头完整重放且不重复(head/标题各 1 个)', + phReopen.present && phReopen.headCount === 1 && phReopen.titleCount === 1, JSON.stringify(phReopen)); +check('重开后标题回到当前激活项', phReopen.text === r1.activeLabel, + 'title=' + JSON.stringify(phReopen.text) + ' active=' + JSON.stringify(r1.activeLabel)); +await screenshot('c1-07-reopen-replay.png'); + +/* ── 7. 第三方项动态插入 → 「其他」组 ──────────────────────────────────── */ +console.log('\n── 7 未知项兜底 ──'); +const beforeUnknown = await evaluate('window.__cxs.snapshot()'); +const injected = await evaluate('window.__cxs.injectUnknown("第三方测试项")'); +check('能模拟第三方插件插入一个新设置项', injected === true, 'injected=' + injected); +await sleep(1500); +const u1 = await evaluate('window.__cxs.snapshot()'); +const unknown = u1.items.find((r) => r.text === '第三方测试项'); +check('未知项落「其他」组', unknown !== undefined && unknown.group === 'other', JSON.stringify(unknown)); +check('「其他」组标题存在', u1.headers.some((r) => r.part === 'group:other'), + u1.headers.map((r) => r.part).join('/')); +check('「其他」排在所有已知组之后(视觉流末尾)', + u1.flow.filter((r) => !r.hidden).slice(-1)[0].group === 'other', + JSON.stringify(u1.flow.filter((r) => !r.hidden).slice(-3).map((r) => [r.group, r.text]))); +check('原有宿主项一个没打乱', u1.hostItems.length === beforeUnknown.hostItems.length + 1, + u1.hostItems.length + ' vs ' + (beforeUnknown.hostItems.length + 1)); +await screenshot('c1-08-third-party.png'); + +await evaluate('window.__cxs.removeUnknown("第三方测试项")'); +await sleep(1500); +const u2 = await evaluate('window.__cxs.snapshot()'); +check('移除未知项后「其他」组标题消失(不留孤儿)', u2.headers.every((r) => r.part !== 'group:other'), + u2.headers.map((r) => r.part).join('/')); +check('移除后宿主项数回到原状', u2.hostItems.length === beforeUnknown.hostItems.length, + u2.hostItems.length + ' vs ' + beforeUnknown.hostItems.length); +check('宿主项在 DOM 里没被我们动过(仍是列表的直接子节点、仍是 button)', + u2.hostItems.every((r) => r.tag === 'BUTTON'), JSON.stringify(u2.hostItems.map((r) => r.tag))); + +/* ── 8. 暗色主题下结构断言同样成立 ─────────────────────────────────────── */ +console.log('\n── 8 暗色主题 ──'); +await evaluate('window.__cxs.setDark(true)'); +await sleep(1000); +const dark = await evaluate('window.__cxs.snapshot()'); +const darkHits = await evaluate('window.__cxs.styleHits()'); +checkEqual('暗色下 4 个分组标题仍在且顺序不变', headerFlowOf(dark), ['个人', '集成', '编码', '已归档']); +check('暗色下返回按钮与搜索框仍在', dark.hasBack && dark.searchIndex === 1, + 'back=' + dark.hasBack + ' search=' + dark.searchIndex); +checkEqual('暗色下视觉流与映射表一致', flowOf(dark), EXPECT_FLOW); +check('暗色下注入节点仍有样式命中(不是透明无字)', + darkHits.back.present && darkHits.group.present + && darkHits.back.color !== 'rgba(0, 0, 0, 0)' && darkHits.group.color !== 'rgba(0, 0, 0, 0)', + JSON.stringify({ back: darkHits.back.color, group: darkHits.group.color })); +check('暗色下被隐藏项依然不可见', dark.leaked.length === 0, JSON.stringify(dark.leaked)); +const typeDark = await evaluate('window.__cxs.rowType()'); +check('暗色下行标题仍是 label-primary/14px,说明仍是 caption/12px(不随主题塌陷)', + typeDark.titleCount > 0 && typeDark.descs.length > 0 + && typeDark.titles.every((r) => r.fs === '14px' && r.color === typeDark.primary) + && typeDark.descs.every((r) => r.fs === '12px' && r.color === typeDark.caption) + && typeDark.primary !== typeDark.caption, + JSON.stringify({ primary: typeDark.primary, caption: typeDark.caption, + title0: typeDark.titles[0], desc0: typeDark.descs[0] })); +const phDark = await evaluate('window.__cxs.pagehead()'); +check('暗色下页头仍在、文本仍跟随激活项、仍是唯一', + phDark.present && phDark.headCount === 1 && phDark.text === dark.activeLabel, + JSON.stringify(phDark)); +/* 暗色下同样要成立:背板跟主界面侧栏走,且与内容面板不同面(层次不能塌)。 */ +const panelBgDark = await evaluate('getComputedStyle(document.querySelector(\'[data-shortcut-modal="settings"]\')).backgroundColor'); +const sidebarDark = await evaluate('getComputedStyle(document.body).getPropertyValue("--dsw-alias-bg-sidebar").trim()'); +const contentBgDark = await evaluate('(() => { const p = document.querySelector(\'[data-shortcut-modal="settings"]\'); const c = [...p.children].filter((e) => e.tagName !== "NAV").pop(); return getComputedStyle(c).backgroundColor; })()'); +check('暗色下背板仍与主界面侧栏同色', + rgbOnly(panelBgDark) === rgbOnly(sidebarDark), + '左栏计算色=' + rgbOnly(panelBgDark) + ' / --dsw-alias-bg-sidebar=' + sidebarDark); +/* 暗色同样必须不透明:上面那条只比 RGB、不比 alpha,半透明也能骗过它, + 而「被壁纸染成偏色」在深色下同样是这个成因。 */ +const panelFilterDark = await evaluate('(() => { const p = document.querySelector(\'[data-shortcut-modal="settings"]\'); const cs = getComputedStyle(p); return cs.backdropFilter || cs.webkitBackdropFilter || "none"; })()'); +check('暗色下背板同样不透明:无 backdrop-filter,且底色 alpha = 1', + !/blur/.test(panelFilterDark) && /^rgb\(/.test(String(panelBgDark).trim()), + 'filter=' + panelFilterDark + ' / 背板=' + panelBgDark); +/* 深色卡边沿用 border-l1(白色 8%)—— 浅色那条侧栏色边画在深色卡上等于没有边。 + 这条同时守住「深色没有被浅色取值污染」。 */ +const rowBgDark = await evaluate('(() => { const r = document.querySelector(\'[data-shortcut-modal="settings"] [data-slot="settings.general.item"] > *\'); return r === null ? null : getComputedStyle(r).backgroundColor; })()'); +/* 暗色:内容列 = bg-base(令牌相对)。上游 0.5.6 把深色窗口底改成 #111111、表面/侧栏留 #181818 + —— 内容列(#111111)与侧栏(#181818)**分层**是上游的新现实,「深色通体一色」的设计注记 + 随之作废(皮肤跟踪令牌,不把旧的层级钉死)。这条只断内容列跟住 bg-base; + 分层事实写进证据文案,不断言 ≠(上游哪天再合并层级不该红我们)。 */ +const bgBaseDark = await evaluate('getComputedStyle(document.body).getPropertyValue("--dsw-alias-bg-base").trim()'); +check('暗色下内容列 = bg-base(令牌相对;与侧栏分层是上游 0.5.6 起的现实)', + rgbOnly(contentBgDark) === rgbOnly(bgBaseDark), + '内容列=' + rgbOnly(contentBgDark) + ' / bg-base=' + bgBaseDark + ' / 侧栏=' + rgbOnly(panelBgDark)); +check('暗色下分组卡仍是浮起的一层(卡色 ≠ 整页面色)', + rowBgDark !== null && rgbOnly(rowBgDark) !== rgbOnly(panelBgDark), + '卡=' + rgbOnly(rowBgDark) + ' / 面=' + rgbOnly(panelBgDark)); +const rowEdgeDark = await evaluate('(() => { const r = document.querySelector(\'[data-shortcut-modal="settings"] [data-slot="settings.general.item"] > *\'); return r === null ? null : getComputedStyle(r).borderTopColor; })()'); +const borderL1Dark = await evaluate('getComputedStyle(document.body).getPropertyValue("--dsw-alias-border-l1").trim()'); +check('暗色卡边仍是 border-l1 白色发丝(未被浅色侧栏色边污染)', + rowEdgeDark !== null && rgbOnly(rowEdgeDark) === rgbOnly(borderL1Dark) + && rgbOnly(rowEdgeDark) !== rgbOnly(sidebarDark), + '暗色卡边=' + rgbOnly(rowEdgeDark) + ' / border-l1=' + rgbOnly(borderL1Dark) + ' / 侧栏=' + rgbOnly(sidebarDark)); +const closeDark = await evaluate('(() => { const b = document.querySelector(\'[data-shortcut-modal="settings"] button:has([data-slot="settings.close"])\'); return b === null ? null : getComputedStyle(b).display; })()'); +check('暗色下 ✕ 仍隐藏', closeDark === 'none', 'display=' + closeDark); +await screenshot('c1-09-dark.png'); +await evaluate('window.__cxs.setDark(false)'); +await sleep(700); + +/* ── 9. 返回按钮点击关闭 ───────────────────────────────────────────────── */ +console.log('\n── 9 返回按钮行为 ──'); +const backBox = await evaluate('(() => { const el = document.querySelector("[data-cx-sm-part=\'back\']");' + + 'if (el === null) return null; const r = el.getBoundingClientRect();' + + 'return { x: Math.round(r.left + r.width / 2), y: Math.round(r.top + r.height / 2) }; })()'); +check('能找到返回按钮', backBox !== null, JSON.stringify(backBox)); +if (backBox !== null) { + await click(backBox.x, backBox.y); + await sleep(1800); + const afterBack = await evaluate('window.__cxs.panelCount()'); + check('点返回按钮 → 设置模态关闭', afterBack === 0, 'panel count=' + afterBack); + const orphansAfter = await evaluate('window.__cxs.orphanCount()'); + check('关闭后不留注入孤儿', orphansAfter === 0, 'orphans=' + orphansAfter); +} + +/* 收尾:恢复干净现场,保证脚本幂等可复跑。 */ +await openSettings(); +await sleep(1200); +await setQuery(''); +await evaluate('window.__cxs.setDark(false)'); +await sleep(400); + +/* ── 10. console 零报错 ────────────────────────────────────────────────── */ +console.log('\n── 10 console ──'); +/* 白名单:逐条写明理由的宿主/环境既有噪音,基线里同样存在。 + 不是「把 error 都放行」—— 除这些之外任何 error / exception 一律算失败。 */ +const NOISE = [ + { re: /Failed to load resource.*(404|Not Found)/i, why: '宿主静态资源 404,基线即有' }, + { re: /favicon/i, why: 'favicon 缺失,与插件无关' }, + { re: /ERR_CONNECTION_REFUSED.*(sockjs|hot-update|__vite)/i, why: 'HMR / 开发服务器残留' }, +]; +const errs = pageLogs.filter((l) => l.startsWith('error') || l.startsWith('exception')); +const unexpected = errs.filter((l) => !NOISE.some((n) => n.re.test(l))); +check('console 零报错(已剔除 ' + NOISE.length + ' 类宿主既有噪音)', unexpected.length === 0, + unexpected.slice(0, 8).join('\n ')); +if (errs.length > unexpected.length) console.log(' (已白名单 ' + (errs.length - unexpected.length) + ' 条宿主噪音)'); +const codexWarns = pageLogs.filter((l) => l.indexOf('[codex-ui]') >= 0); +check('注入层没有打出 [codex-ui] 警告(结构自检全部通过)', codexWarns.length === 0, + codexWarns.slice(0, 5).join('\n ')); + +/* ── 汇总 ─────────────────────────────────────────────────────────────── */ +console.log('\n' + (failed === 0 ? 'PASS:全部通过' : 'FAIL:' + failed + ' 项未通过') + + '(共 ' + (passed + failed) + ' 项,通过 ' + passed + ')'); +console.log('截图目录:' + OUT_DIR); +ws.close(); child.kill(); +process.exit(failed === 0 ? 0 : 1); diff --git a/scripts/live/settings-sweep.mjs b/scripts/live/settings-sweep.mjs new file mode 100644 index 0000000..cf36c5e --- /dev/null +++ b/scripts/live/settings-sweep.mjs @@ -0,0 +1,346 @@ +#!/usr/bin/env node +/** + * settings-pages-sweep.mjs — 逐个打开全部设置页,亮/暗各截一张,并做布局健康检查。 + * + * 用途:设置模态的「全页 Codex 化」改的是内容区(卡片行、页头、留白)。内容区行卡片化用了 + * 结构兜底选择器,**有可能在某些页误伤**(把分组容器 / 表单布局也卡片化,导致表单挤压、控件错位)。 + * 这个脚本就是用来逐页把这件事看清楚的:截图留证 + 自动量一批布局指标。 + * + * 用法: + * node scripts/live/settings-sweep.mjs --url "http://127.0.0.1:3199/?token=..." [--out docs/recon] [--prefix c1] [--min-pages 1] + * + * 产物:/-<序号>-<页名>-.png + 控制台一份逐页健康报告。 + * 退出码:只有「硬故障」(扫不到设置项 / 打不开页 / 页面空白 / 控件被裁剪到不可用)才非 0; + * 可疑但需要人眼判断的,只报告不失败。 + * ⚠️ **扫不到设置项本身就是硬故障**:宿主一定会注册设置项,0 项意味着侧栏没渲染出来 + * 或结构层整体失效。旧版对空列表只是「循环一轮都不跑」→ hardFail 恒为 0 → 退出码 0, + * 即「什么都没测」却报 PASS,是本脚本最容易骗过 CI 的假阳性路径(二审 M3 指出)。 + * 现在 labels.length === 0(或少于 --min-pages)直接非零退出。 + */ +import { spawn } from 'node:child_process'; +import http from 'node:http'; +import fs from 'node:fs'; +import { dirname, join } from 'node:path'; +import { fileURLToPath } from 'node:url'; +import { tmpdir } from 'node:os'; +import { chromePath } from '../lib/host.mjs'; +/* lib/host.mjs 不导出 tempDir:这里就地生成一个唯一临时 profile 目录。 */ +const tempDir = (name) => fs.mkdtempSync(join(tmpdir(), name + '-')); + +const HERE = dirname(fileURLToPath(import.meta.url)); +const WB = dirname(dirname(HERE)); +const arg = (name, fallback) => { + const i = process.argv.indexOf('--' + name); + return i >= 0 && process.argv[i + 1] && !process.argv[i + 1].startsWith('--') ? process.argv[i + 1] : fallback; +}; +const TOKEN_URL = arg('url', ''); +const OUT_DIR = arg('out', join(WB, 'docs', 'recon')); +const PREFIX = arg('prefix', 'c1'); +const CHROME = arg('chrome', '') || chromePath(); +const PORT = Number(arg('cdp-port', '9344')); +const DPR = Number(arg('dpr', '1.5')); +/* 期望扫到的设置项下限。宿主一定会注册设置项(通用设置/模型/内置插件…), + 本环境实测 13 项(见 docs/recon/c1-sweep-report.json);默认 1 已经是「有就行」的最低线, + 要钉住本环境的具体页数就显式传 --min-pages 13。 */ +const MIN_PAGES = Number(arg('min-pages', '1')); +const sleep = (ms) => new Promise((r) => setTimeout(r, ms)); +if (!TOKEN_URL) { console.error('缺少 --url "http://127.0.0.1:/?token=..."'); process.exit(2); } + +const origin = new URL(TOKEN_URL).origin; +const grab = (url) => new Promise((resolve, reject) => { + const u = new URL(url); + http.get({ hostname: u.hostname, port: u.port, path: u.pathname + u.search }, (res) => { + resolve((res.headers['set-cookie'] || [''])[0]); + res.resume(); + }).on('error', reject); +}); +const cookie = (await grab(TOKEN_URL)).split(';')[0]; +if (!cookie.includes('=')) { console.error('拿不到 dsh-auth cookie,token 可能已过期:' + TOKEN_URL); process.exit(2); } +fs.mkdirSync(OUT_DIR, { recursive: true }); + +const child = spawn(CHROME, ['--headless=new', '--remote-debugging-port=' + PORT, + '--user-data-dir=' + tempDir('dsh-cdp-sweep'), '--no-first-run', + '--no-default-browser-check', '--disable-gpu', '--window-size=1440,960', '--hide-scrollbars', 'about:blank'], { stdio: 'ignore' }); +let info; +for (let i = 0; i < 60 && !info; i += 1) { + try { const r = await fetch('http://127.0.0.1:' + PORT + '/json/version'); if (r.ok) info = await r.json(); } catch { /* 未就绪 */ } + if (!info) await sleep(250); +} +if (!info) { console.error('Chromium 没起来:' + CHROME); process.exit(2); } +const ws = new WebSocket(info.webSocketDebuggerUrl); +await new Promise((res, rej) => { ws.onopen = res; ws.onerror = rej; }); +let seq = 0; +const waiting = new Map(); +ws.onmessage = (ev) => { + const m = JSON.parse(ev.data); + const fn = waiting.get(m.id); + if (fn) { waiting.delete(m.id); fn(m); } +}; +const send = (method, params = {}, sid) => new Promise((res, rej) => { + const id = ++seq; + waiting.set(id, (m) => (m.error ? rej(new Error(method + ': ' + JSON.stringify(m.error))) : res(m.result))); + ws.send(JSON.stringify({ id, method, params, ...(sid ? { sessionId: sid } : {}) })); +}); +const evaluate = async (expression) => { + const r = await send('Runtime.evaluate', { expression, returnByValue: true, awaitPromise: true }, sessionId); + if (r.exceptionDetails !== undefined && r.exceptionDetails !== null) { + throw new Error('页面内求值抛错:' + String(r.exceptionDetails.exception?.description ?? r.exceptionDetails.text).slice(0, 300)); + } + return r.result.value; +}; +const click = async (x, y) => { + await send('Input.dispatchMouseEvent', { type: 'mouseMoved', x, y }, sessionId); + await send('Input.dispatchMouseEvent', { type: 'mousePressed', x, y, button: 'left', clickCount: 1 }, sessionId); + await send('Input.dispatchMouseEvent', { type: 'mouseReleased', x, y, button: 'left', clickCount: 1 }, sessionId); +}; + +const { targetId } = await send('Target.createTarget', { url: 'about:blank' }); +const { sessionId } = await send('Target.attachToTarget', { targetId, flatten: true }); +await send('Page.enable', {}, sessionId); +await send('Runtime.enable', {}, sessionId); +await send('Network.enable', {}, sessionId); +await send('Emulation.setDeviceMetricsOverride', { width: 1440, height: 960, deviceScaleFactor: DPR, mobile: false }, sessionId); +const eq = cookie.indexOf('='); +await send('Network.setCookie', { name: cookie.slice(0, eq), value: cookie.slice(eq + 1), domain: new URL(origin).hostname, path: '/', httpOnly: true }, sessionId); +await send('Page.navigate', { url: origin + '/' }, sessionId); +await sleep(11000); + +/** 页面内工具:把布局体检需要的一切都算好返回。自包含,只挂在 window 上。 */ +function sweepInstall() { + const panel = () => document.querySelector('[data-shortcut-modal="settings"]'); + const nav = () => { const p = panel(); return p === null ? null : Array.from(p.children).find((e) => e.tagName === 'NAV') || null; }; + const list = () => { + const n = nav(); + if (n === null) return null; + const hit = Array.from(n.children).filter((e) => e.getAttribute('data-codex-ui-injected') !== 'settings-modal').pop(); + return hit === undefined ? null : hit; + }; + const cells = () => { const l = list(); return l === null ? [] : Array.from(l.children).filter((e) => e.tagName === 'BUTTON'); }; + const content = () => { const p = panel(); return p === null ? null : Array.from(p.children).filter((e) => e.tagName !== 'NAV').pop() || null; }; + + /** 当前页名:取内容区里第一个非空文本块。 */ + const pageTitle = () => { + const c = content(); + if (c === null) return null; + const t = (c.innerText || '').split('\n').map((s) => s.trim()).find((s) => s !== ''); + return t === undefined ? null : t; + }; + const items = () => cells().map((el) => el.textContent.trim()); + + const openSettings = () => { const b = document.querySelector('button[aria-label="设置"]'); if (b === null) return false; b.click(); return true; }; + const panelCount = () => document.querySelectorAll('[data-shortcut-modal="settings"]').length; + const setDark = (on) => { if (on) document.body.setAttribute('data-ds-dark-theme', ''); else document.body.removeAttribute('data-ds-dark-theme'); }; + + const itemBox = (text) => { + const el = cells().find((c) => c.textContent.trim() === text); + if (el === undefined) return null; + const r = el.getBoundingClientRect(); + return { x: Math.round(r.left + r.width / 2), y: Math.round(r.top + r.height / 2) }; + }; + + /** + * 布局健康指标。目标是把「肉眼可疑」的页自动挑出来,而不是替代人眼看截图。 + * 关心的四类: + * contentEmpty —— 内容区几乎没文字(页没渲染出来 / 被压成 0 宽) + * textOverflow —— 有元素把文本溢出到祖先之外(挤压的典型信号) + * tinyControls —— 交互控件被压到过小(< 16px 的任一维) + * zeroWidthRows —— 页面根的子项里出现 0 宽/0 高(布局塌陷) + */ + const health = () => { + const c = content(); + if (c === null) return null; + const cr = c.getBoundingClientRect(); + const body = (c.innerText || '').trim(); + const overflowing = []; + const tiny = []; + const collapsed = []; + const benign = []; + /* 只看内容区,且只看有实际盒子的元素。 + display:contents 的包装元素(宿主的 data-slot 座位)本来就没有盒子 —— 跳过,否则每页都误报。 */ + for (const el of c.querySelectorAll('*')) { + if (getComputedStyle(el).display === 'contents') continue; + const r = el.getBoundingClientRect(); + if (r.width === 0 && r.height === 0) continue; + const tag = el.tagName; + /* 原生勾选框/单选框/滑杆本来就小,不是布局问题 —— 排除掉,否则误报会淹没真信号。 */ + const type = (el.getAttribute('type') || '').toLowerCase(); + const nativeSmall = tag === 'INPUT' && ['checkbox', 'radio', 'range', 'hidden', 'file', 'color'].includes(type); + if (!nativeSmall && (r.width < 16 || r.height < 16)) { + const interactive = tag === 'BUTTON' || tag === 'INPUT' || tag === 'SELECT' || el.getAttribute('role') === 'button'; + if (interactive) { + tiny.push({ tag: tag, cls: String(el.className).slice(0, 40), w: Math.round(r.width), h: Math.round(r.height), + text: (el.textContent || '').trim().slice(0, 20) }); + } + } + /* 溢出分两级,别混为一谈: + · escaped —— 元素盒子**越出内容区**(右边界超了 / 左边界缩了)。这是真信号: + 内容被推到可视区外,或被裁掉。 + · benign —— 元素内容比它自己的盒子宽,但盒子仍在内容区里、溢出的那点朝内侧空白摊开。 + **不影响可读性**。实测依据:皮肤页 ul.sectionList 内容需 931px、盒子 900px, + 但盒子右边界离内容区右边界还有 260px,溢出的 31px 只是画进了空白 —— 无裁剪、无滚动条。 + 只作信息记录,不计入可疑。 */ + if (r.right > cr.right + 2 || r.left < cr.left - 2) { + overflowing.push({ tag: tag, cls: String(el.className).slice(0, 40), + right: Math.round(r.right), contentRight: Math.round(cr.right), text: (el.textContent || '').trim().slice(0, 30) }); + } else if (el.scrollWidth > el.clientWidth + 8 && el.clientWidth > 0) { + const cs = getComputedStyle(el); + if (cs.overflowX === 'visible' && cs.textOverflow !== 'ellipsis' && cs.whiteSpace !== 'nowrap') { + benign.push({ tag: tag, cls: String(el.className).slice(0, 40), + scrollW: el.scrollWidth, clientW: el.clientWidth, text: (el.textContent || '').trim().slice(0, 30) }); + } + } + } + /* 页面根的直接子项有没有塌成 0 */ + const root = c.querySelector('[data-slot="settings.section"]'); + const rootKid = root === null ? null : root.firstElementChild; + if (rootKid !== null) { + for (const k of rootKid.children) { + const r = k.getBoundingClientRect(); + if (r.width === 0 || r.height === 0) collapsed.push({ tag: k.tagName, cls: String(k.className).slice(0, 40) }); + } + } + return { + title: pageTitle(), + textLen: body.length, + contentW: Math.round(cr.width), + contentH: Math.round(cr.height), + text: body.slice(0, 160).replace(/\n/g, ' | '), + overflowing: overflowing.slice(0, 6), + benignOverflow: benign.slice(0, 6), + tiny: tiny.slice(0, 6), + collapsed: collapsed.slice(0, 6), + rowCount: rootKid === null ? 0 : rootKid.children.length, + }; + }; + + window.__sweep = { + openSettings: openSettings, panelCount: panelCount, setDark: setDark, items: items, + itemBox: itemBox, health: health, pageTitle: pageTitle, list: list, + }; +} +await evaluate('(' + sweepInstall.toString() + ')()'); + +const dismissOnboarding = async () => { + for (let round = 0; round < 8; round += 1) { + const box = await evaluate('(() => {' + + 'const re = /^(继续|稍后配置|跳过|知道了)$/;' + + 'const el = [...document.querySelectorAll("button")].find((e) =>' + + ' re.test((e.getAttribute("aria-label") || e.textContent || "").trim()) && e.offsetParent !== null);' + + 'if (!el) return null; const r = el.getBoundingClientRect();' + + 'return { x: Math.round(r.left + r.width / 2), y: Math.round(r.top + r.height / 2) }; })()'); + if (box === null) return; + await click(box.x, box.y); + await sleep(1200); + } +}; +const clickItem = async (label) => { + const box = await evaluate('window.__sweep.itemBox(' + JSON.stringify(label) + ')'); + if (box === null) return false; + await click(box.x, box.y); + await sleep(1400); + return true; +}; +const screenshot = async (file) => { + const s = await send('Page.captureScreenshot', { format: 'png' }, sessionId); + fs.writeFileSync(join(OUT_DIR, file), Buffer.from(s.data, 'base64')); +}; + +/** 文件名里的页名:去掉不能做文件名的字符。 */ +const slug = (name) => name.replace(/[\\/:*?"<>|\s]+/g, '-').replace(/-+/g, '-').replace(/^-|-$/g, '').slice(0, 30); + +await dismissOnboarding(); +await sleep(800); +await evaluate('window.__sweep.openSettings()'); +await sleep(2500); + +const labels = await evaluate('window.__sweep.items()'); +console.log('侧栏共 ' + labels.length + ' 项:' + JSON.stringify(labels)); + +/* 空通过防护(先于任何截图/循环):一项都没有 = 侧栏没渲染 / 结构层失效。 + 此时下面的 for 循环一次都不进,报告为空、hardFail = 0、退出码 0 —— 假阳性。 + 少于 --min-pages 同理(页数变少意味着宿主改版或部分页面注册失败,同样不该静默放过)。 */ +if (labels.length === 0) { + console.error('FAIL 侧栏一个设置项都没扫到 —— 设置面板没渲染出来,或结构层整体失效。'); + console.error(' 这不是「没有异常」,是「什么都没测」:宿主一定会注册设置项,不会存在 0 项的合法场景。'); + console.error(' 排查:设置模态是否打开(button[aria-label="设置"])、' + + '面板锚点 [data-shortcut-modal="settings"] / [data-dsh-surface="settings"] 是否命中、' + + 'src/settings-modal.js 是否打出了 [codex-ui] 警告。'); + ws.close(); child.kill(); + process.exit(1); +} +if (labels.length < MIN_PAGES) { + console.error('FAIL 侧栏只有 ' + labels.length + ' 项,少于 --min-pages ' + MIN_PAGES + + '(宿主注册的设置项变少了,可能是改版或部分页面注册失败)'); + console.error(' 扫到的:' + JSON.stringify(labels)); + ws.close(); child.kill(); + process.exit(1); +} + +let hardFail = 0; +const report = []; +for (let i = 0; i < labels.length; i += 1) { + const label = labels[i]; + const okClick = await clickItem(label); + if (!okClick) { console.error('FAIL 点不到设置项:' + label); hardFail += 1; continue; } + await sleep(900); + const light = await evaluate('window.__sweep.health()'); + if (light === null) { console.error('FAIL 内容区没找到:' + label); hardFail += 1; continue; } + await screenshot(PREFIX + '-' + String(i).padStart(2, '0') + '-' + slug(label) + '-light.png'); + await evaluate('window.__sweep.setDark(true)'); + await sleep(800); + const dark = await evaluate('window.__sweep.health()'); + await screenshot(PREFIX + '-' + String(i).padStart(2, '0') + '-' + slug(label) + '-dark.png'); + await evaluate('window.__sweep.setDark(false)'); + await sleep(400); + + /* 硬故障判定:内容区没文字、或整页宽度塌掉。 */ + const empty = light.textLen < 12; + const narrow = light.contentW < 200; + if (empty || narrow) hardFail += 1; + const flag = empty ? ' ← 内容为空' : (narrow ? ' ← 内容区过窄' : ''); + report.push({ + i: i, label: label, light: light, dark: dark, + suspicious: light.overflowing.length > 0 || light.tiny.length > 0 || light.collapsed.length > 0, + empty: empty, narrow: narrow, + }); + console.log('[' + String(i).padStart(2, '0') + '] ' + label.padEnd(12) + + ' 内容 ' + light.contentW + '×' + light.contentH + ' / 正文 ' + light.textLen + ' 字 / 子项 ' + light.rowCount + + (light.overflowing.length > 0 ? ' / 溢出 ' + light.overflowing.length : '') + + (light.tiny.length > 0 ? ' / 小控件 ' + light.tiny.length : '') + + (light.collapsed.length > 0 ? ' / 塌陷 ' + light.collapsed.length : '') + + flag); +} + +await evaluate('window.__sweep.setDark(false)'); +await sleep(300); + +/* ── 汇总 ─────────────────────────────────────────────────────────────── */ +console.log('\n===== 逐页布局报告 ====='); +for (const r of report) { + const issues = []; + if (r.empty) issues.push('内容区没有文字(页可能没渲染)'); + if (r.narrow) issues.push('内容区宽度 < 200px(布局塌陷)'); + for (const o of r.light.overflowing) issues.push('文本溢出:<' + o.tag + ' class=' + o.cls + '> ' + o.scrollW + '>' + o.clientW + ' 「' + o.text + '」'); + for (const t of r.light.tiny) issues.push('控件过小:<' + t.tag + '> ' + t.w + '×' + t.h + ' 「' + t.text + '」'); + for (const c of r.light.collapsed) issues.push('子项塌陷:<' + c.tag + ' class=' + c.cls + '>'); + if (issues.length === 0) { console.log('[' + String(r.i).padStart(2, '0') + '] ' + r.label + ':未见异常'); continue; } + console.log('[' + String(r.i).padStart(2, '0') + '] ' + r.label + ':' + issues.length + ' 项可疑'); + for (const s of issues) console.log(' · ' + s); +} +const suspicious = report.filter((r) => r.suspicious); +const benignPages = report.filter((r) => r.light.benignOverflow.length > 0); +if (benignPages.length > 0) { + console.log('\n(以下为「盒子内溢出但未越界」,实测不影响可读性,仅记录:)'); + for (const r of benignPages) { + const b = r.light.benignOverflow[0]; + console.log(' · ' + r.label + ':<' + b.tag + ' class=' + b.cls + '> 内容 ' + b.scrollW + 'px / 盒子 ' + b.clientW + 'px'); + } +} +console.log('\n截图 ' + (report.length * 2) + ' 张 → ' + OUT_DIR); +console.log('硬故障 ' + hardFail + ' 项;需人眼复核 ' + suspicious.length + ' 页' + + (suspicious.length > 0 ? ':' + suspicious.map((r) => r.label).join('、') : '')); +fs.writeFileSync(join(OUT_DIR, PREFIX + '-sweep-report.json'), JSON.stringify(report, null, 1)); +console.log('明细 JSON:' + join(OUT_DIR, PREFIX + '-sweep-report.json')); +console.log('\n' + (hardFail === 0 ? 'PASS:全部页面打开且内容区正常' : 'FAIL:' + hardFail + ' 项硬故障')); +ws.close(); child.kill(); +process.exit(hardFail === 0 ? 0 : 1); diff --git a/scripts/specs/composer.mjs b/scripts/specs/composer.mjs index 80a7e73..8f6ab78 100644 --- a/scripts/specs/composer.mjs +++ b/scripts/specs/composer.mjs @@ -307,7 +307,30 @@ h4{margin:0 0 10px 24px;font:600 12px/18px ui-monospace,Consolas,monospace;color t.check('右侧工具条目可见(顶栏两格已放开)', hdr.header.utilityItem === true); t.check('页签仍隐去', hdr.header.tabs === false); t.check('右上角按钮仍在', hdr.header.corner === true); - t.check('徽标配色 = 本皮肤 --dsw-alias-label-tertiary', hdr.presetLabel.color === 'rgb(118, 118, 118)', hdr.presetLabel.color); + /* 期望值不硬编码 rgb:令牌在重锚后是 rgba 字面量,浏览器算出来的徽标色是它 + 在顶栏底色上的合成结果。临时元素走一遍 var() 让浏览器自己算,再与徽标比。 */ + const tertiaryExpected = await page.evaluate(() => { + const el = document.createElement('span'); + el.style.color = 'var(--dsw-alias-label-tertiary)'; + document.body.appendChild(el); + const c = getComputedStyle(el).color; + el.remove(); + return c; + }); + t.log('TERTIARY expected ' + tertiaryExpected); + /* 徽标圆角同样**不硬编码**:上游 v0.3.0 已把 .SVAs4q_label 的字面量 6px 换成 + var(--dsw-radius-xs)(宿主自己在 dsh-client-ui-theme 里声明该令牌为 4px),皮肤也定义同名令牌。 + 写死 6px 会同时冤枉宿主与皮肤 —— 改成「徽标圆角 == 该令牌在本页面的计算值」,临时元素法同配色那条。 */ + const badgeRadiusExpected = await page.evaluate(() => { + const el = document.createElement('span'); + el.style.borderRadius = 'var(--dsw-radius-xs)'; + document.body.appendChild(el); + const c = getComputedStyle(el).borderTopLeftRadius; + el.remove(); + return c; + }); + t.log('BADGE radius expected ' + badgeRadiusExpected); + t.check('徽标配色 = 本皮肤 --dsw-alias-label-tertiary', hdr.presetLabel.color === tertiaryExpected, hdr.presetLabel.color + ' vs ' + tertiaryExpected); t.check('徽标圆角保持宿主原值 ' + labelRadius + '(未被皮肤改写)', hdr.presetLabel.radius === labelRadius, hdr.presetLabel.radius); t.check('徽标高 22px(官方控件高度,未改写)', hdr.presetLabel.h === 22, hdr.presetLabel.h); t.check('徽标不填底色(令牌未定义即透明,不另配色)', hdr.presetLabel.bg === 'rgba(0, 0, 0, 0)', hdr.presetLabel.bg); diff --git a/skins/codex-ink/settings-modal.css b/skins/codex-ink/settings-modal.css new file mode 100644 index 0000000..e7b2bb6 --- /dev/null +++ b/skins/codex-ink/settings-modal.css @@ -0,0 +1,718 @@ +/* ============================================================================ + codex-ink · L3 设置界面(全页 Codex 化)视觉层 + ---------------------------------------------------------------------------- + 用途 + 把宿主「设置」模态从「居中卡片弹窗」改成 Codex 桌面端的整页设置界面: + 全页铺满 → 左侧 236px 分组侧栏(返回 / 搜索 / 分组标题 / 项目) + → 右侧内容区(大标题 + 分组大卡 + 右上角页级操作)。 + 大卡内多行、行间一条 hairline,卡外才是组间距 —— 见 §4。 + + 作用域 + 形态类规则全部挂在 html[data-codex-ui] 下的 [data-cx-sm-panel] 之下; + 该属性是**本插件自有锚点**:src/settings-modal.js 检测到设置面板 + (宿主锚点 data-shortcut-modal="settings",兼容适配器的 data-dsh-surface 兜底) + 后盖印,面板不在就不盖 —— 锚点改名只需改 JS 一个函数。 + 组件类(.cx-sm-*)只作用于 JS 注入的节点,注入节点带 + data-codex-ui-injected="settings-modal"。 + 设置模态关闭时,本文件不命中宿主任何元素 —— 默认态不受影响。 + + 与 settings.css 的区别(勿混淆) + settings.css 服务的是「官方插件管理 → 组合包配置卡」那块 UI + (座位 plugins.bundle.config,.cx-form / .cx-row / .cx-swatch…), + 与设置模态是**两套完全不同的界面**。 + 本文件服务设置模态(面板锚点见「作用域」节),前缀统一 .cx-sm-。 + + 锚点纪律 + 只用 data-cx-sm-panel(自有锚点)/ data-slot / aria-current / role / 结构位置 / tag。 + 宿主类名是 CSS-Modules 哈希(每次构建都变),一律不用 —— 与 patches.css 同规矩。 + + 取色纪律 + 颜色只走 --dsw-alias-* 令牌,暗色由令牌自身翻转(body[data-ds-dark-theme]), + 本文件不写任何暗色专用规则、不出现硬编码色值。 + ⚠️ 订正(2026-09-27 实测):此处曾写「--dsw-alias-bg-base 是全透明的,不能拿来当 + 面板底色」。**该说法与实测不符** —— 皮肤把它定义在 skin.css,亮 #ffffff / 深 #181818 + (实测页面上把 var(--dsw-alias-bg-base) 用在探针 div 上,计算值 = rgb(255,255,255))。 + 它因此是可以当底色用的,内容列正取它。旧说法作废。 + 最终形态(用户 2026-09-27 定稿,Codex 参考图): + 侧栏灰(背板 bg-sidebar:浅 #f6f6f6 / 深 #0f0f0f —— 跟随上游插件取值(0.6.4 基准),见 skin.css) + + 内容区白平铺(本列取 bg-base:浅 #ffffff / 深 #111111 —— 上游 0.5.6 起) + + 白卡浅细边(分组大卡 bg-layer-1 + 取侧栏那一档的细边,见 §4.2)。 + 背板必须**不透明**:整页 overlay 用毛玻璃会把底下的主窗口/壁纸色揉进设置页 + (真机实测,详见 §1),页面颜色要钉死。 + + 结构位置依据(实测,见 docs/dom-recon-settings-layout.md) + [data-cx-sm-panel] 面板(JS 盖印的自有锚点) + > nav 侧栏;children = [navTitle, navList] + > div:last-child 内容列;children = [header, options] + > nav > div:has(> button) navList(13 个 button.navCell) + [data-slot="settings.section"] > * 设置页根容器 + [data-slot="settings.general.item"] > * 单行(通用页;slot 是 display:contents 包装) + 选中项 = button[aria-current="true"] + ========================================================================== */ + +/* ── 0 · 局部刻度:只声明自定义属性,不产生任何渲染 ─────────────────────── */ +html[data-codex-ui] { + /* 密度:对照 Codex 截图整体下调一号(以「像同一个 app」为准,非精确取值) */ + --cx-sm-sidebar-w: 236px; + --cx-sm-row-h: 46px; + --cx-sm-panel-w: 760px; /* 内容柱宽度,水平居中于侧栏之外 */ + --cx-sm-gutter: 24px; + --cx-sm-radius-card: var(--dsw-radius-m, 12px); + /* 这里**没有**内容列的圆角刻度:内容列已经是整页的一面,不产生轮廓。 + 历史:曾有 --cx-sm-radius-panel: 16px 给「浮起面板」用,随本轮拍平一并删除。 */ + --cx-sm-radius-field: 10px; + --cx-sm-radius-pill: 999px; /* 搜索框专用:全圆角胶囊(唯一使用点,见 §2.5) */ + /* ⚠️ 凡引用 --dsw-alias-* 的颜色令牌(--cx-sm-surface-backdrop、--cx-sm-card-edge) + 都不在这里声明:皮肤把那些令牌定义在 body 上,在 html 上取不到值。 + 没有兜底值时会「invalid at computed-value time」→ 属性落回 initial, + border-color 会变成 currentColor,画出一条深色实线(实测踩到: + 本该是淡发丝线,实际是一条 rgb(29,37,57) 的硬线)。它们改到面板上声明,见 §1。 */ +} + +@media (max-width: 900px) { + html[data-codex-ui] { + --cx-sm-sidebar-w: 196px; + --cx-sm-gutter: 14px; + } +} + +/* ══════════════════════════════════════════════════════════════════════════ + 1 · 全页化:干掉居中弹窗 + ────────────────────────────────────────────────────────────────────────── + 实测面板是 800×800 居中卡片(radius 16 / 底色 bg-layer-2 / 阴影)。 + 改成固定铺满视口:inset 0 + 直角 + 无阴影。overlay 随之拉伸。 + 遮罩([aria-hidden] 兄弟)不处理 —— 面板不透明且铺满,它自然被盖住。 + ══════════════════════════════════════════════════════════════════════════ */ + +/* 形态定稿(用户 2026-09-27 确认,以 Codex 参考图为准): + **侧栏灰 + 内容区白平铺 + 白卡浅细边**。 + · 背板(= 侧栏那一列)取 bg-sidebar:浅 #f6f6f6 / 深 #0f0f0f(上游 0.6.4 基准),**不透明**; + · 内容列取 bg-base:浅 #ffffff / 深 #181818 —— 平铺、flush,无圆角无 gutter 无描边, + 是「内容区本来就是白的」,不是一块浮起面板; + · 分组大卡 bg-layer-1:浅 #ffffff / 深 #212121,浅色配一条侧栏那一档的细边(见 §4.2)。 + 深色下 bg-base = bg-sidebar = #181818,内容列与侧栏同面,正是 Codex 深色通体一色。 + + 演进史(勿退回,三条都被裁决推翻过): + ① 最早的「居中 800×800 弹窗 + 毛玻璃」——全页化后作废(见下); + ② 「灰背板 + 白内容面板」两个面:内容列铺 button-elevated-fill + 0.5px 描边 + + 16px 圆角 + 一圈 gutter。用户实测判定那个对比本身就是要消灭的东西; + ③ 「整页灰」:内容列不吃底色、直接坐在侧栏那一档背板上,整页一面灰。 + 用户 2026-09-27 **否决**了这一版 —— 否决理由见 §3(内容列改回白、卡补细边)。 + 选定的是 Codex 参考图那一版:侧栏与内容**分色**,靠卡片细边而不是整页同色表达层次。 + + ⚠️ 必须声明在**面板**上而不是 html 上:皮肤把 --dsw-alias-* 定义在 body, + 在 html 上引用它们取不到值 —— 自定义属性在「声明它的那个元素」上完成替换, + 整条 var() 会变成无效值,background 直接落成 transparent(本次实测踩到)。 + 面板在 body 之内,在这里替换拿得到值。 */ +html[data-codex-ui] div[data-cx-sm-panel] { + --cx-sm-surface-backdrop: var(--dsw-alias-bg-sidebar); + /* 分组大卡的**外轮廓**色(浅色 = 侧栏那一档的浅细边,深色在下方分主题覆盖)。 + 卡的层次由这条边表达:浅色白卡 + 白底,靠它划出卡的边界。 + 和背板令牌一样必须在这里(面板)声明 —— 在 html 上引用 body 里的 + --dsw-alias-* 会变成无效值,border-color 会退回 currentColor, + 画出一条抢眼的深色硬线;声明在面板上就能被行继承(行是面板的后代, + 实测行上读到的 border-color 正是这里的值,链路成立)。 + 浅色要「侧栏那一档灰」,深色不能用它(#181818 的边在 #212121 卡上 + 几乎不可见),深色继续走 border-l1 的白色 8%。 */ + --cx-sm-card-edge: var(--dsw-alias-bg-sidebar); + /* 子页卡片统一成白卡(用户 2026-09-27 裁决:「其他子页统一按通用设置, + 灰色太明显不好看」):宿主多数子页的卡片填充挂在 bg-layer-2 / bg-layer-3 上 + —— 实测(子页结构侦察,docs/recon/recon-subpages.mjs):宠物/创意工坊 cardOpen、 + 已归档 selectionBar/autoPanel、订阅服务 segments 轨道 = layer-2(浅 #f3f3f3); + 记忆系统 providerRow/topologyLayer、皮肤 pluginCard = layer-3(浅 #ededed)。 + 在设置面板内把这两档重定向到 layer-1:浅色 = 白卡,与通用设置的行卡一致; + 深色 layer-1 本就是 #212121 = 通用设置暗色卡色(layer-2/3 的 #282828/#303030 + 随之收拢到同一浮起层级),无需暗色专用规则。 + 作用域只到设置面板:主界面的 layer-2/3 消费方(tag-chip、侧栏收起钮、 + composer 控件,见 patches.css)都在面板之外,不受影响。 + 例外只剩一条:LLM Verifier 的 pre 走 --dsw-alias-markdown-code-block, + 是代码井不是卡,灰色保留、不在本次统一范围。 + ⚠️ 订正(2026-09-28):这里曾写「模型 / Agent 预设的卡是**硬编码**灰、 + 不吃令牌,由 §4.3 的后缀锚点收尾」——**该说法与宿主源码不符**,已作废。 + 实测那两页的卡吃的是宿主主题令牌 --dsw-alias-settings-card-fill + (宿主 dsh-client-ui-theme 在 body 上声明为 var(--dsw-alias-bg-layer-2)), + 由 skin.css 显式定义成 layer-1 覆盖;§4.3 那条后缀规则只是同值重复,已删除。 + 完整机制与删除理由见 §4.3。 */ + --dsw-alias-bg-layer-2: var(--dsw-alias-bg-layer-1); + --dsw-alias-bg-layer-3: var(--dsw-alias-bg-layer-1); +} + +/* ⚠️ 本文件唯一一处暗色专用声明(已知例外,此处写明理由)。 + --cx-sm-card-edge 的浅色取值 bg-sidebar 在深色下也是 #181818 —— 画在 #212121 的卡上 + 等于没有边。深色沿用它原来的 border-l1(白色 8%)才看得见,所以这一条必须分主题。 + 其余颜色一律由 --dsw-alias-* 自身翻转,不在此列。 */ +html[data-codex-ui] body[data-ds-dark-theme] div[data-cx-sm-panel] { + --cx-sm-card-edge: var(--dsw-alias-border-l1); +} + +html[data-codex-ui] div[data-cx-sm-panel] { + position: fixed; + inset: 0; + box-sizing: border-box; + width: auto; + height: auto; + max-width: none; + max-height: none; + border-radius: 0; + box-shadow: none; + overflow: hidden; + /* 背板 = **不透明**的 bg-sidebar。这里曾经是「不透明兜底 + 毛玻璃 @supports 覆盖」, + 毛玻璃那一段已整体删除(用户裁决 2026-09-27)。 + + 为什么删(真机实测的教训,勿退回):设置页是全页铺满的 overlay,它下面压着的是 + 主窗口内容 —— 用户装了会画壁纸的宠物插件。78% alpha + blur + saturate(1.3) 会把 + 壁纸色揉进设置页的灰,整页比背板色更深且偏色,**且随用户壁纸变化**。 + 铺满全窗的 overlay 从毛玻璃拿不到任何视觉受益(背后没有需要被虚化的浮层内容, + 只有被污染的风险),确定性却要全部赔进去。 + 用户原话:「卡片内是白色,边框(页面)带有 #f9f9f9 即可」—— 页面颜色必须钉死。 + + 历史脉络:毛玻璃是更早「居中 800×800 弹窗」时代的合理诉求(那时它是一块真正的 + 浮层,透过它能看见后面的应用);§1 全页化之后这个前提就没了,本条只是把那笔账 + 结清。所以这里不再需要任何 @supports 兜底 —— 单一不透明声明在各内核下都成立。 */ + background: var(--cx-sm-surface-backdrop); +} + +/* 桌面端(Windows 无边框)标题栏:宿主 preload 会在 打 data-windows-titlebar, + 并在 root 内联 --dsh-windows-titlebar-height(实测 40px)。 + 面板铺满视口后会把标题栏区域一起盖住,内容必须整体下移,否则「← 返回应用」 + 与顶部标签/窗口按钮重叠。做法照搬宿主自己的全屏 overlay 先例。 + 属性顺序写成 data-codex-ui 在前:仓库的「全部作用域化」体检按 html[data-codex-ui 前缀认作用域, + 两序在 CSS 里等价(同一复合选择器、同特异性),写成前缀序才进得了那条体检。 */ +html[data-codex-ui][data-windows-titlebar] div[data-cx-sm-panel] { + padding-top: var(--dsh-windows-titlebar-height, 40px); +} + +/* 标题栏区不可拖动的部分:输入与按钮,否则点不动(窗口拖动由宿主标签栏负责) */ +html[data-codex-ui][data-windows-titlebar] div[data-cx-sm-panel] button, +html[data-codex-ui][data-windows-titlebar] div[data-cx-sm-panel] input, +html[data-codex-ui][data-windows-titlebar] div[data-cx-sm-panel] a { + -webkit-app-region: no-drag; +} + +/* ══════════════════════════════════════════════════════════════════════════ + 2 · 侧栏:236px / 分组标题 / 项目 / 图标 + ══════════════════════════════════════════════════════════════════════════ */ + +html[data-codex-ui] div[data-cx-sm-panel] > nav { + position: relative; /* 给 sr-only 的宿主标题一个containing block */ + box-sizing: border-box; + flex: 0 0 var(--cx-sm-sidebar-w); + width: var(--cx-sm-sidebar-w); + min-height: 0; + padding: 12px 12px 16px; + gap: 8px; /* 返回 / 搜索 / 列表之间 */ + background: none; /* 侧栏不自带底:它直接坐在灰背板上(Codex 的层次就是这么来的) */ + overflow: hidden; +} + +/* 宿主的侧栏标题「设置」(VOzbGW_navTitle)夹在搜索框与第一个分组标题之间, + 与 Codex 侧栏的样子不符,也跟紧随其后的「个人」抢层级。 + 但它正是面板 aria-labelledby 指向的节点,删不得 —— 所以「视觉隐藏、语义保留」 + (sr-only 手法),读屏仍能念出面板名,布局上让出位置、不再占一行。 + 锚定办法:「nav 下、不含 button 的 div」在宿主里只有 navTitle 一个 + (导航列表满是 button)。再排除注入层节点 —— 注入节点一律带 + data-codex-ui-injected 属性,本文件只认这个属性、不认注入层的类名或内部结构, + 所以注入顺序怎么变都不会把它误伤成 navTitle。 + 若将来 navTitle 被移除,本规则只是不命中,不会波及别的元素。 */ +html[data-codex-ui] div[data-cx-sm-panel] > nav > div:not([data-codex-ui-injected]):not(:has(> button)) { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip-path: inset(50%); + white-space: nowrap; +} + +/* navList:宿主没给语义锚点,用「有 button 直接子节点」锁定。 + nav > div:last-child 作为兜底(结构上 navList 恒为末子节点)。 */ +html[data-codex-ui] div[data-cx-sm-panel] > nav > div:has(> button), +html[data-codex-ui] div[data-cx-sm-panel] > nav > div:last-child { + box-sizing: border-box; + min-height: 0; + flex: 1 1 auto; + gap: 2px; +} + +/* ── 2.1 项目:圆角 + Codex 式 hover/选中 ─────────────────────────────── */ +html[data-codex-ui] div[data-cx-sm-panel] > nav > div:has(> button) > button { + box-sizing: border-box; + width: 100%; + min-height: 32px; + padding: 6px 10px; + gap: 9px; + border: 0; + border-radius: var(--dsw-radius-s, 8px); + background: none; + color: var(--dsw-alias-label-secondary); + font-size: 14px; + line-height: 20px; + text-align: left; +} + +/* hover 用 hint 档(比改前更轻),选中用 active 档 —— 两者拉开一档差距, + 这样「划过」与「停留」不会看起来是同一个状态(Codex 的侧栏就是这种克制感)。 */ +html[data-codex-ui] div[data-cx-sm-panel] > nav > div:has(> button) > button:hover { + background: var(--dsw-alias-interactive-bg-hover); + color: var(--dsw-alias-label-primary); +} + +/* 选中态锚点是宿主的 aria-current(不是哈希类名) */ +html[data-codex-ui] div[data-cx-sm-panel] > nav > div:has(> button) > button[aria-current="true"] { + background: var(--dsw-alias-interactive-bg-active); + color: var(--dsw-alias-label-primary); + font-weight: 500; +} + +html[data-codex-ui] div[data-cx-sm-panel] > nav > div:has(> button) > button[aria-current="true"]:hover { + background: var(--dsw-alias-interactive-bg-active); +} + +html[data-codex-ui] div[data-cx-sm-panel] > nav > div:has(> button) > button:focus-visible { + outline-offset: -2px; +} + +/* ── 2.2 项内图标:尺寸与描边统一 ─────────────────────────────────────── */ +html[data-codex-ui] div[data-cx-sm-panel] > nav > div:has(> button) > button svg { + width: 16px; + height: 16px; + flex: 0 0 auto; + stroke-width: 1.4; + opacity: 0.72; +} + +html[data-codex-ui] div[data-cx-sm-panel] > nav > div:has(> button) > button:hover svg, +html[data-codex-ui] div[data-cx-sm-panel] > nav > div:has(> button) > button[aria-current="true"] svg { + opacity: 1; +} + +/* ── 2.3 分组标题(注入 div.cx-sm-group):浅灰小字、无图标、拉开组间距 ── */ +html[data-codex-ui] .cx-sm-group { + margin: 12px 0 4px; + padding: 0 10px; + color: var(--dsw-alias-label-caption); + font-size: 12px; + line-height: 18px; + font-weight: 500; + letter-spacing: 0.01em; + user-select: none; +} + +html[data-codex-ui] :lang(zh) .cx-sm-group { + letter-spacing: 0; +} + +/* 首个分组紧跟搜索框,别再顶一截 */ +html[data-codex-ui] .cx-sm-search + .cx-sm-group { + margin-top: 4px; +} + +/* ── 2.4 返回按钮(注入 div.cx-sm-back)────────────────────────────────── */ +html[data-codex-ui] .cx-sm-back { + display: flex; + align-items: center; + gap: 6px; + box-sizing: border-box; + width: fit-content; + min-height: 28px; + padding: 2px 6px 2px 4px; + border-radius: var(--dsw-radius-s, 8px); + color: var(--dsw-alias-label-secondary); + font-size: 13px; + line-height: 20px; + cursor: pointer; + user-select: none; +} + +html[data-codex-ui] .cx-sm-back:hover { + background: var(--dsw-alias-interactive-bg-hover); + color: var(--dsw-alias-label-primary); +} + +html[data-codex-ui] .cx-sm-back svg { + width: 14px; + height: 14px; + flex: 0 0 auto; + stroke-width: 1.6; + opacity: 0.8; +} + +/* ── 2.5 搜索框(注入 div.cx-sm-search > input)────────────────────────── + Codex 形态:**纯填充、无可见边框**。 + 填充用 bg-layer-1(亮色下比背板更白、暗色下比背板 #181818 更浅), + 两侧都能读成「一个凹进去的输入槽」,不靠描边撑轮廓。 + 焦点环也不用边框色,改成一条细内环 —— 无边框控件用 border-color 表达焦点 + 会突然长出一条描边、框体尺寸观感跳变。 + + 圆角 = **全圆角胶囊**(用户指名,2026-09-27):写成 999px 的 pill 语义, + 与 --cx-sm-radius-field(10px) 那档划清界限 —— 后者仍是输入框类控件的常规刻度, + 只有搜索框是胶囊。32px 高的盒子下,绘制时被夹到半高 16px 即真正的胶囊 + (注意:夹取只发生在绘制阶段,getComputedStyle 仍返回 999px)。 + 不写 50% 是因为那会让表现依赖容器高度,999px 的意图在任何高度下都自解释。 */ + +html[data-codex-ui] .cx-sm-search { + display: flex; + align-items: center; + gap: 8px; + box-sizing: border-box; + width: 100%; + height: 32px; + /* 胶囊两侧是圆弧,左右内衬要比方形井多给一点,图标与文字才不贴弧 */ + padding: 0 14px; + border: 0; + border-radius: var(--cx-sm-radius-pill); + background: var(--dsw-alias-bg-layer-1); + color: var(--dsw-alias-label-tertiary); +} + +html[data-codex-ui] .cx-sm-search:focus-within { + box-shadow: inset 0 0 0 1px var(--dsw-alias-border-l3); +} + +html[data-codex-ui] .cx-sm-search svg { + width: 14px; + height: 14px; + flex: 0 0 auto; + stroke-width: 1.6; + opacity: 0.7; +} + +html[data-codex-ui] .cx-sm-search input { + box-sizing: border-box; + flex: 1 1 auto; + min-width: 0; + height: 100%; + padding: 0; + border: 0; + outline: 0; + background: none; + color: var(--dsw-alias-label-primary); + font: inherit; + font-size: 13px; + line-height: 20px; +} + +html[data-codex-ui] .cx-sm-search input::placeholder { + color: var(--dsw-alias-label-caption); +} + +/* ══════════════════════════════════════════════════════════════════════════ + 3 · 内容区:底色 / 页头 / 正文留白 + ══════════════════════════════════════════════════════════════════════════ */ + +/* 内容列 = **平铺的白**(bg-base:浅 #ffffff / 深 #181818),保持 flush。 + 这是「内容区本来就是白的」,不是一块浮起面板 —— 所以无圆角、无 gutter、无描边, + 三个都不许回来(有轮廓就又变回面板;有 gutter 就会在四周露背板、重现那条缝)。 + + 用户 2026-09-27 否决了上一版「整页灰」(内容列不吃底色、直接坐在背板上): + 设置页整页同色把层次压没了,参考图要的是**侧栏灰 + 内容白**的分色。 + 深色下 bg-base = #181818 = 背板色,内容列与侧栏自然同面 —— 正好符合 Codex 深色通体一色。 + + 演进(勿退回):更早这里是 margin:8px 8px 8px 0 + 0.5px 描边 + 16px 圆角 + + button-elevated-fill 底的「浮起面板」,同被推翻。 */ +html[data-codex-ui] div[data-cx-sm-panel] > div:last-child { + box-sizing: border-box; + flex: 1 1 auto; + min-width: 0; + min-height: 0; + /* 平铺白:内容区与侧栏分色(侧栏走背板的 bg-sidebar,内容走这里的 bg-base)。 + 深色下两者同值 #181818,自动退化成通体一色,不需要暗色专用规则。 */ + background: var(--dsw-alias-bg-base); + /* border / border-radius / margin 一律不写:平铺,不是浮起面板。 */ + overflow: hidden; +} + +/* 页头(右上角页级操作 + 关闭):宿主在这里,宽度与下面的内容容器对齐, + 否则「打开配置文件 / ×」会贴到面板最右边、与正文不在一条竖线上。 */ +html[data-codex-ui] div[data-cx-sm-panel] > div:last-child > div:first-child { + box-sizing: border-box; + flex: 0 0 auto; + align-items: center; + min-height: 52px; + padding: 12px var(--cx-sm-gutter) 8px; +} + +/* 页头的宽度**不能碰**:宿主在自己的操作区上用了固定 margin-left 把按钮推到右侧 + (实测 margin-left:458px)。我们一改页头宽度,那个固定值就不再适配, + 「打开配置文件」会被挤到换行(本次实测踩到)。页头保持宿主自己的布局。 */ + +/* 页头与正文同一根居中柱对齐。 + ⚠️ 只能打在**页头自身**上:页头是 flex 行(children = 操作区 + 关闭按钮), + 若把 max-width/width:100% 加到它的子元素上,两个子元素会被当成两个等宽弹性项 + 各占一半(实测各 376px),「打开配置文件」会从右端跑到中间。 */ + + +/* 滚动正文(宿主已给 overflow-y:auto,这里只接管留白与弹性)。 + ⚠️ 底部留白必须是 0,呼吸感挪给下面的页根 padding-bottom —— + 宿主部分设置页(LLM Verifier 等)带 position:sticky; bottom:0 的悬浮保存栏, + sticky 只能贴到滚动容器 padding 的**内侧**:这里若留 40px,保存栏就悬在 + 离视口底 40px 的半空(实测 rect bottom=920/960,全页化后像漂在页面中间, + 用户 2026-09-27 判定「保存设置按理应该在最下面」)。 + padding 清零后保存栏贴住视口底边、成为真正的底栏; + 滚到页面末尾时它回到自然位置,由页根的 padding-bottom 给它同样的底部间距。 */ +html[data-codex-ui] div[data-cx-sm-panel] > div:last-child > div:last-child { + box-sizing: border-box; + flex: 1 1 auto; + min-height: 0; + padding: 2px var(--cx-sm-gutter) 0; +} + +/* 内容居中:收窄到 --cx-sm-panel-w 再水平居中。 + ⚠️ 锚点必须落到**真正生成盒子的那一层**:正文的直接子节点是 + [data-slot="settings.section"](display:contents,不产生盒子), + 页根是它的子元素。写成「正文 > *」会打在 contents 包装上 —— + max-width / margin:auto 全部无效(本次实测踩到,页根仍是满宽 1144px)。 + 窄屏放不下时 max-width 自然让位、退回全宽,不需要媒体查询。 */ +html[data-codex-ui] div[data-cx-sm-panel] > div:last-child > div:last-child [data-slot="settings.section"] > * { + box-sizing: border-box; + width: 100%; + max-width: var(--cx-sm-panel-w); + margin-left: auto; + margin-right: auto; + /* 底部呼吸感从滚动容器挪到页根(原因见上面滚动正文那条): + 无悬浮栏的页面 = 原来的 40px 页底间距;有悬浮保存栏的页面, + 滚到末尾时栏回到自然位置、这 40px 垫在它下面,不会紧贴视口底边。 */ + padding-bottom: 40px; +} + +/* ── 3.1 页级操作区(宿主座位 settings.action)与关闭按钮 ─────────────── */ +html[data-codex-ui] div[data-cx-sm-panel] [data-slot="settings.action"] button { + box-sizing: border-box; + height: 32px; + padding: 0 12px; + /* 必须 nowrap:宿主按钮默认允许换行,在收紧后的页头里「打开配置文件」会断成两行 + 并被 32px 高度裁掉(实测)。nowrap 后最小宽度回到文本宽度,反而更稳。 */ + white-space: nowrap; + border: 0.5px solid var(--dsw-alias-border-l2); + border-radius: var(--dsw-radius-s, 8px); + background: var(--dsw-alias-button-elevated-fill); + color: var(--dsw-alias-label-primary); + font-size: 13px; + line-height: 1; + cursor: pointer; +} + +html[data-codex-ui] div[data-cx-sm-panel] [data-slot="settings.action"] button:hover { + background: var(--dsw-alias-interactive-bg-hover); + border-color: var(--dsw-alias-border-l3); +} + +/* 关闭按钮:**隐藏**。Codex 的设置界面右上角没有 ✕ —— 退出由侧栏的 + 「← 返回应用」承担,多一个 ✕ 是重复出口(用户实测点名要去掉)。 + data-slot 嵌在 span 里,用 :has 取按钮本身(不碰哈希类名)。 + + 为什么 display:none 是安全的:宿主自己的 Escape 关闭路径不受影响; + src/settings-modal.js 的 requestClose() 先用 Escape,兜底才 button.click() + —— 而 display:none 的元素 .click() 仍会触发宿主的 React onClick + (display:none 只影响布局与命中测试,不阻止程序化派发)。那条兜底因此照旧可用。 */ +html[data-codex-ui] div[data-cx-sm-panel] button:has([data-slot="settings.close"]) { + display: none; +} + +/* ── 3.2 大标题(注入 .cx-sm-pagehead / .cx-sm-title)──────────────────── */ +html[data-codex-ui] .cx-sm-pagehead { + display: flex; + align-items: center; + justify-content: space-between; + gap: 16px; + box-sizing: border-box; + width: 100%; + min-height: 36px; + margin: 0 0 12px; +} + +html[data-codex-ui] .cx-sm-title, +html[data-codex-ui] .cx-sm-pagehead > h1, +html[data-codex-ui] .cx-sm-pagehead > h2 { + margin: 0; + padding: 0; + color: var(--dsw-alias-label-primary); + /* Codex 页标题:20px/600(字重不动,层级靠字重+灰度) */ + font-size: 20px; + line-height: 26px; + font-weight: 600; + letter-spacing: -0.01em; +} + +html[data-codex-ui] :lang(zh) .cx-sm-title, +html[data-codex-ui] :lang(zh) .cx-sm-pagehead > h1, +html[data-codex-ui] :lang(zh) .cx-sm-pagehead > h2 { + letter-spacing: 0; +} + +/* ══════════════════════════════════════════════════════════════════════════ + 4 · 设置页正文:分组大卡(连续行合并成一张卡) + ────────────────────────────────────────────────────────────────────────── + 形态目标(对齐 Codex 官方设置页):**一个分组一张大卡**,卡内多行、行间一条 + hairline、行与行之间没有空隙;卡外才是组间距。 + + 为什么不能靠「兄弟选择器选相邻行」: + 实测宿主把所有行装在**同一层**,且行不是页容器的直接子节点 —— 它们的父层是 + display:contents(不产生盒子),中间还隔着匿名 flex item。 + 于是不能写「行 A + 行 B」,只能从**页容器**这一层下手(见 §4.2 的四条规则)。 + + 行锚点:[data-slot="settings.general.item"] 是 display:contents 包装, + 它的直接子元素才是真正的一行。该座位**只有通用设置页有**,其余页的宿主行 + 没有语义锚点,故本节只担保通用页。 + ══════════════════════════════════════════════════════════════════════════ */ + +/* ── 4.1 页容器:行间距归零,组与组之间改由 margin 表达 ────────────────── */ +/* 宽度交给 §3 的居中容器统一控制(这里再限一次会与它打架), + 本节只管行间距归零。 */ +html[data-codex-ui] div[data-cx-sm-panel] [data-slot="settings.section"] > * { + box-sizing: border-box; + width: 100%; + gap: 0; + padding-top: 2px; +} + +/* ── 4.2 行 = 卡内的一段:卡边 + 首末行圆角 + 行间 hairline ────────────── + ① 基准:每行只画上下两条边(--cx-sm-card-edge),行间自然形成 1px 发丝线。 + ② 首行补左右 + 上圆角;末行补左右下 + 下圆角 —— 卡的侧轮廓只由首末行画, + 中间行留空,发丝线才是一条完整直线。 + ③ 中间行四角都不圆。 + 这四条用 :first-child / :last-child 表达,全部是结构语义, + 不碰宿主哈希类名;宿主若换实现,最坏是圆角/边位置不对,不会串版。 + + 「卡边 = 浅色侧栏那一档」是用户 2026-09-27 定稿的 Codex 参考形态: + 白卡浮在白底上,靠一条浅细边划出卡的边界(用户原话「边框带有 #f9f9f9 即可」; + 该色随 --dsw-alias-bg-sidebar 走,上游 0.6.4 起浅色侧栏为 #f6f6f6)。 */ +/* 基准:卡内行只画**上下**两条边 —— 下一条贴住上一条,行间自然形成 1px 发丝线; + 左右交给下面「卡首行」那条补,这样中间行的发丝线不会被左右边切断。 + 边色走 --cx-sm-card-edge(面板上声明、行继承拿到值,实测链路成立)。 */ +html[data-codex-ui] div[data-cx-sm-panel] [data-slot="settings.general.item"] > * { + box-sizing: border-box; + min-height: var(--cx-sm-row-h); + padding: 8px 16px; + border-style: solid; + border-color: var(--cx-sm-card-edge); + border-width: 0.5px 0; /* 卡内行只留上下两条边 → 中间自然形成 1px hairline */ + /* 卡面 bg-layer-1:浅 #ffffff / 深 #212121(layer-1 与 button-elevated-fill 本皮肤同值)。 + 形态定稿后内容列已是平铺白,卡的层次改由这条细边表达,不再靠卡/面明暗差。 */ + background: var(--dsw-alias-bg-layer-1); + transition: background-color var(--dsw-motion-fast, 150ms) var(--dsw-ease, ease); +} + +/* 卡首行:补上左右两条边(卡的侧轮廓)+ 上圆角。 + 左右只在首末行给:中间行不给左右,行间发丝线才是完整一条。 */ +html[data-codex-ui] div[data-cx-sm-panel] [data-slot="settings.section"] > :first-child > [data-slot="settings.general.item"] > *:first-child { + border-top-width: 0.5px; + border-left-width: 0.5px; + border-right-width: 0.5px; + border-radius: var(--cx-sm-radius-card) var(--cx-sm-radius-card) 0 0; +} + +/* 卡末行:补左右下,收下圆角。 */ +html[data-codex-ui] div[data-cx-sm-panel] [data-slot="settings.section"] > :first-child > [data-slot="settings.general.item"] > *:last-child { + border-bottom-width: 0.5px; + border-left-width: 0.5px; + border-right-width: 0.5px; + border-radius: 0 0 var(--cx-sm-radius-card) var(--cx-sm-radius-card); +} + +/* ── 4.3 class 后缀锚点规则:已删除(2026-09-28),此处留记录,勿退回 ────── + 删掉的是这两条(同一条规则的两种落点): + html[data-codex-ui] div[data-cx-sm-panel] li[class$="_rowCard"], + html[data-codex-ui] div[data-cx-sm-panel] li[class$="_card"] { background: var(--dsw-alias-bg-layer-1); } + + **正确机制**(宿主源码取证): + 宿主「模型」(settings-models)与「Agent 预设」(agent-preset)两页的卡, + 源码里写的是(类名前缀是构建哈希,此处只写稳定后缀): + ._rowCard { background: var(--dsw-alias-settings-card-fill) } /* 模型页 */ + ._card { background: var(--dsw-alias-settings-card-fill) } /* Agent 预设页 */ + ._cardActive { background: var(--dsw-alias-bg-module-platform) } /* 选中态 */ + —— 它们**吃令牌**,不是硬编码灰。该令牌由宿主主题包 dsh-client-ui-theme 在 + **body** 上声明为 var(--dsw-alias-settings-card-fill: var(--dsw-alias-bg-layer-2)); + 本机 app.asar 全文扫描里,该令牌的**声明**只有这一处,另 4 处都是 background 消费点。 + 皮肤把它同名重定义成 layer-1(skin.css:html[data-codex-ui], html[data-codex-ui] body), + 特异性与顺序都压过宿主的 body 声明 —— 白卡 / 深色 #212121 因此**自动生效**。 + + 旧注释怎么错的(一并记下,免得后人再被同一个坑骗): + 旧文写「#f3f3f3 硬编码、换色试验证明不走任何令牌」。那个换色试验是在 §4.3 规则**还在**的 + 前提下做的 —— §4.3 以特异性 (0,3,3) 压过宿主的 (0,1,0),无论令牌被改成什么,卡都会保持 + §4.3 写死的 layer-1,于是「0 个元素跟随」是这条规则生效的**必然结果**,推不出「卡不读令牌」。 + 定案靠的是宿主源码里那两条 background 声明,不是那个试验。 + (二审结论见 docs/recon/second-pass-review.md 的 M1/M2。) + + **删除理由**(三条,任一条都够): + ① 同值重复:皮肤已把该令牌定成 layer-1,§1 的 layer-2/3→layer-1 重定向同样落上去, + 这条规则写的是**同一个值**,三层路径同值,将来改一处根本无法判断谁在生效; + ② 覆盖面无意义:它靠特异性 (0,3,3) 压过宿主 .rowCard/.card 的 (0,1,0), + 而值相同 —— 赢了也没有任何视觉差异; + ③ **会漂**:[class$="_card"] 匹配的是「整条 class 属性以该后缀结尾」, + 覆盖面随宿主状态类的书写顺序漂移。实测 Agent 预设的选中卡是 + class="rtSEdW_card rtSEdW_cardActive"(以 _cardActive 结尾)→ 今天**不命中**、 + 靠宿主自己的 .cardActive{background: var(--dsw-alias-bg-module-platform)} 保住选中底色, + 纯属侥幸;一旦宿主把状态类挪到前面,选中卡会被压成 layer-1,**选中态视觉当场丢失, + 而没有任何断言会红**。删除即消除这条会随宿主改版静默劣化的路径。 + + 删除后的着色机制**唯一**:--dsw-alias-settings-card-fill(skin.css 定义) + → 未选中卡 = layer-1(浅 #ffffff / 深 #212121)。选中卡保持宿主自己的 + bg-module-platform(浅 #f9f9f9)—— 与未选中卡不同色,选中态仍可区分。 + 这条路径由 scripts/settings-modal-verify.mjs 的两条集成断言把守 + (未选中卡 == var(--dsw-alias-bg-layer-1) 的计算值;选中卡背景 ≠ 未选中卡背景)。 */ + +/* 第④条:夹在两条行之间的行,四角都不是卡角(左右边由基准那条保持为 0)。 */ +html[data-codex-ui] div[data-cx-sm-panel] [data-slot="settings.section"] > :first-child > [data-slot="settings.general.item"] > *:not(:first-child):not(:last-child) { + border-radius: 0; +} + +/* 卡内行 hover:整行淡填充(Codex 的分组卡就是这样给反馈,不再改描边) */ +html[data-codex-ui] div[data-cx-sm-panel] [data-slot="settings.general.item"] > *:hover { + background: var(--dsw-alias-interactive-bg-hover); +} + +/* ── 4.4 行内说明文字:只压灰度,且**绝不碰标题** ──────────────────────── + 上一版写成「行内所有 div」,把标题一并染成 caption 灰、还压成 12px, + 整页标题层级塌掉(实测踩到)。行内标题锚点就是 div:first-child —— + 通用选择器躲不开它。 + + 实测到的行结构(每行一致): + row(div) + ├─ rowText(div) ← 行的第一个子元素,承载文字 + │ ├─ title(div) ← rowText 的**第一个**子 div + │ └─ desc(div) ← 其后跟随的 div(可能没有) + └─ 控件(span / div,视页面而定) + + 因此只认「行的第一个子元素里、非首位的 div」= 说明文字。 + 标题(首位的那个 div)**一个字节都不碰**,完全交给宿主默认的 + 14px + label-primary。字号也不改:宿主已经给了 12px,本层再写会与它的 + 行高计算打架,这里只做灰度一档的收敛。 + ⚠️ 不要退回成「行内所有 div」:那会连控件区的数字(如字号步进的 14) + 一起染灰压小 —— 上一版就是如此。 */ +html[data-codex-ui] div[data-cx-sm-panel] [data-slot="settings.general.item"] > * > :first-child > div:not(:first-child) { + color: var(--dsw-alias-label-caption); +} + +/* ══════════════════════════════════════════════════════════════════════════ + 5 · 搜索过滤态:隐藏 / 空结果 + ══════════════════════════════════════════════════════════════════════════ */ + +/* 隐藏态以**属性选择器为准**:宿主在选中态搬走时会把那一项的 className 整条重写 + ("…navCell VOzbGW_active cx-sm-hidden" → "…navCell"),类名被抹掉,data-* 属性原样保留。 + —— 只写类名选择器的话,筛选态下点一下别的设置项,被隐藏项就会当场复现且永久留在侧栏 + (本次实测:filter="皮肤" 时点「皮肤」,把选中态从被隐藏的「通用设置」搬走 → 它 disp:flex 复活)。 + 属性是第一耐久标记,类名只是补丁,两者都列上;特异性并列,谁在都隐藏。 */ +html[data-codex-ui] [data-cx-sm-hidden], +html[data-codex-ui] .cx-sm-hidden { + display: none !important; +} + +html[data-codex-ui] .cx-sm-empty { + box-sizing: border-box; + padding: 32px 8px; + color: var(--dsw-alias-label-tertiary); + font-size: 13px; + line-height: 20px; + text-align: center; +} + +/* ══════════════════════════════════════════════════════════════════════════ + 6 · 注入节点基线:统一盒模型(注入子树整体接管,避免各处漏 box-sizing) + ══════════════════════════════════════════════════════════════════════════ */ + +html[data-codex-ui] [data-codex-ui-injected="settings-modal"], +html[data-codex-ui] [data-codex-ui-injected="settings-modal"] * { + box-sizing: border-box; +} diff --git a/src/client/index.js b/src/client/index.js index 1f45b42..6a29d3c 100644 --- a/src/client/index.js +++ b/src/client/index.js @@ -1,12 +1,13 @@ /** * codex-ui 浏览器半入口(DSH 客户端插件:导出 inject 与 apply,由 scripts/build.mjs 打成 client.js)。 * - * 功能按顺序装配:皮肤样式 → 设置(覆盖层、主题预览、配置卡)→ 模型选择器。 + * 功能按顺序装配:皮肤样式 → 设置(覆盖层、主题预览、配置卡)→ 模型选择器 → 设置模态框结构层。 * 样式先挂且不包 try:它是插件本体;其余任何一项失败都只降级,不连累皮肤。 * 新功能 = src/client/ 下一个模块导出 install(ctx) + 这里一行。 */ import { installModelPicker } from './model-picker/index.js'; import { installSettings } from './settings.js'; +import { installSettingsModal } from './settings-modal.js'; import { installStylesheet } from './stylesheet.js'; /** @@ -28,4 +29,10 @@ export function apply(ctx) { } catch (error) { console.warn('[codex-ui] 模型选择器挂载失败,宿主原生菜单照常:', error); } + /* 设置模态框的结构层(返回按钮 / 搜索 / 分组):与设置表单彼此独立,谁挂不上都不连累对方。 */ + try { + installSettingsModal(ctx); + } catch (error) { + console.warn('[codex-ui] 设置模态框结构层挂载失败,其余功能照常:', error); + } } diff --git a/src/client/settings-modal.js b/src/client/settings-modal.js new file mode 100644 index 0000000..84c2db5 --- /dev/null +++ b/src/client/settings-modal.js @@ -0,0 +1,680 @@ +/** + * settings-modal.js — 设置模态框的 Codex 化「结构层」(纯 DOM 操作、幂等、可降级)。 + * + * 补上宿主没有的四件东西:侧栏顶部的「← 返回应用」、搜索框、按组插入的分组标题、 + * 以及内容区顶部的页头大标题;并保证关闭重开后完整重放。 + * **视觉一律不在这里做**:新样式挂在 html[data-codex-ui] 下, + * 由 skins/codex-ink/settings-modal.css 提供,本文件只负责结构与行为。 + * + * 三条纪律(都是实测踩出来的,别改回去): + * 1. **只加不接管**。宿主导航是数据驱动的:往 DOM 里塞一个新按钮**不会**让它成为设置页 + * (侦察 §i 实测:克隆项存活、点击不崩、但既不切换选中态也不渲染内容)。 + * 所以对未知项一律只做视觉分组,绝不代它处理点击;宿主节点只打属性,不移动、不克隆、不删。 + * 2. **选择器不碰哈希类名**。宿主类名是 CSS-Modules 哈希(VOzbGW_* / oY77xG_* …,每个设置页 + * 还各有一套前缀),只用宿主自带属性(data-shortcut-modal / data-slot)/ tag / 位置索引这些稳定锚点。 + * 3. **任何一步结构不符预期就跳过并 warn,绝不抛**。宿主改版只会让这一层失效, + * 不会拖垮插件其余功能(皮肤、覆盖层、组合包页配置卡)。 + * + * 幂等性来自两处(侦察 §i 实测:**切设置项不重建 DOM,关闭再打开整棵 navList 重建**): + * · 每个注入节点都带 data-codex-ui-injected="settings-modal",创建前先查标记; + * · 观察 document.body 的 childList,overlay 被卸载/重建一次就重放一次。 + * + * ⚠ 取舍一:**顺序调整走 CSS flex order,不移动宿主节点**(任务书二选一里的前者)。 + * 侦察 §j 实测:宿主按 order 排序后渲染,重排 DOM 顺序会与 React 的 key 协调冲突、重渲染时被还原。 + * 本次探针复核:13 个 navCell 的 inline style 全为空、computed order 全为 0 —— order 是一个 + * **没有人用过**的布局槽位,所以给宿主 cell 写 style.order 是安全的(React 不认它、也不会覆盖它)。 + * 收益:宿主节点零移动,点击 / 渲染 / 第三方项进出全部原样;代价:键盘 Tab 顺序仍是 DOM 顺序, + * 视觉顺序 ≠ 焦点顺序,属已知可及性瑕疵(分组本身不改变焦点可达性,只是顺序不同)。 + * + * ⚠ 取舍二:**隐藏项用「属性 + 类名」双写**。 + * 本次探针实测(关键,比侦察报告的措辞更具体):宿主在**选中态从某一项搬走时**会把那一项的 + * className **整条重写**(oldValue "VOzbGW_navCell VOzbGW_active" → "VOzbGW_navCell"), + * 而 data-* 属性原样保留。所以: + * · 耐久标记是**属性** data-cx-sm-hidden —— CSS 必须以它为准([data-cx-sm-hidden]); + * · 类名 cx-sm-hidden 只是方便人读的冗余,**不可依赖**。 + * 补回逻辑由下面的列表观察器负责,**它必须开 subtree**(见 observeList 的注释: + * 不开 subtree 时观察器只上报被观察节点自身的属性变化,子节点的 class 改写一条都收不到, + * 实测 0 条 vs 5 条)。 + * + * ⚠ 结论(C1 与 B2 交叉验证后的定论):宿主重写 class **确实会产生 mutation 记录**, + * 只是**必须开 subtree 才收得到**。C1 早先「那次重写不产生任何 mutation 记录」的观测, + * 是 attributes 观察漏了 subtree 造成的假象,已由 probe4 双向对照证伪(同一时刻: + * 不开 subtree → 0 条;开 subtree → 5 条,含 class oldValue + * "VOzbGW_navCell VOzbGW_active cx-sm-hidden" → "VOzbGW_navCell")。 + * 因此两道保险同时成立、互为兜底: + * · CSS 以**属性** [data-cx-sm-hidden] 为准(耐久,类名被抹也不影响隐藏); + * · JS 在下一帧把类名补回(subtree 观察器驱动),供只认 .cx-sm-hidden 的样式使用。 + */ + +/* ── 稳定锚点 ─────────────────────────────────────────────────────── */ + +/** + * 设置模态框面板锚点(两条都查,前者优先): + * 1. [data-shortcut-modal="settings"] —— **宿主自己**盖在面板上的属性 + * (dsh-client-ui-primitives 的 Dialog 原语统一行为,跨包约定); + * 2. [data-dsh-surface="settings"] —— 第三方 skin-center 兼容适配器补盖的语义属性, + * 其契约文档自声明「非永久公共契约」,且**没装适配器的环境里它根本不存在** + * (整层静默失效曾在这条上翻车:PR #1 一审 C 项)。 + * 找到面板后统一补盖 PANEL_ATTR,CSS 只挂这个自有锚点 —— 以后锚点再变只动本文件。 + */ +const PANEL_SELECTOR = '[data-shortcut-modal="settings"], [data-dsh-surface="settings"]'; +/** 找到面板后补盖的自有锚点:settings-modal.css 里所有面板规则的唯一挂载点。 */ +const PANEL_ATTR = 'data-cx-sm-panel'; +/** 注入节点统一标记属性;卸载时按它一次性清干净。 */ +const ATTR = 'data-codex-ui-injected'; +/** 注入节点统一标记值。 */ +const MARK = 'settings-modal'; +/** 注入节点自报「我是哪一件」——重放时用它找回自己的节点,不靠类名。 */ +const PART_ATTR = 'data-cx-sm-part'; +/** 被搜索过滤掉的宿主项:属性是耐久标记(React 会重写 className,属性不会)。 */ +const HIDDEN_ATTR = 'data-cx-sm-hidden'; +/** 同一个隐藏态的类名,给 CSS 的现成钩子;被宿主抹掉后会被补回。 */ +const HIDDEN_CLASS = 'cx-sm-hidden'; +/** 宿主项上按组打的属性,CSS 与重放共用。 */ +const GROUP_ATTR = 'data-cx-sm-group'; +/** 兜底组 / 空结果提示的排序位:必须比任何组都大,否则 flex 默认 order:0 会把它顶到最前。 */ +const TAIL_ORDER = 999999; +/** 每个分组占据的 order 槽位数。 */ +const ORDER_STEP = 1000; + +/* ── 分组映射(两个子代理共用的唯一权威) ─────────────────────────────── */ + +const GROUPS = [ + { id: 'personal', label: '个人', items: ['账号与余额', '通用设置', '皮肤', '宠物', '使用统计'] }, + { id: 'integrations', label: '集成', items: ['内置插件', 'Web 插件', '订阅服务', '记忆系统', '创意工坊'] }, + { id: 'coding', label: '编码', items: ['模型', 'Agent 预设', 'LLM Verifier'] }, + { id: 'archive', label: '已归档', items: ['已归档会话'] }, +]; +/** + * 兜底组:映射里没有的项(第三方插件新注册的设置页、宿主将来新增的页)动态归入, + * 排在所有已知组之后;该组为空则不渲染。**绝不做硬编码白名单**——这正是用户那条硬约束。 + */ +const OTHER_GROUP = { id: 'other', label: '其他' }; +/** 标签(小写、去空白)→ 组 id。 */ +const GROUP_OF_LABEL = new Map(); +/** + * 组 id → { 标签 → 组内名次 }。 + * **组内顺序以映射表的 items 数组为准,不沿用宿主的注册顺序** —— 映射表是唯一权威。 + * 实测差异就在「集成」组:宿主按 order 渲染出来是 + * 内置插件 / 记忆系统 / 订阅服务 / Web 插件 / 创意工坊,映射表要的是 + * 内置插件 / Web 插件 / 订阅服务 / 记忆系统 / 创意工坊。 + * 兜底组没有名次表,保持宿主原序(未知项只做视觉归拢,不替它决定位置)。 + */ +const GROUP_RANK = new Map(); +for (const group of GROUPS) { + const rank = new Map(); + group.items.forEach((item, index) => rank.set(item.trim().toLowerCase(), index)); + GROUP_RANK.set(group.id, rank); + for (const item of group.items) GROUP_OF_LABEL.set(item.trim().toLowerCase(), group.id); +} +/** 渲染顺序:已知组按 GROUPS 顺序,兜底组永远最后。 */ +const GROUP_SEQUENCE = [...GROUPS, OTHER_GROUP]; + +/* ── 小工具 ───────────────────────────────────────────────────────── */ + +/** 归一化标签:去掉首尾空白并压掉内部连续空白后小写。 */ +const normalizeLabel = (text) => String(text).replace(/\s+/g, ' ').trim().toLowerCase(); + +/** 只警告一次,避免宿主改版时把控制台刷满。 */ +const warnOnce = (() => { + const seen = new Set(); + return (key, ...rest) => { + if (seen.has(key)) return; + seen.add(key); + console.warn('[codex-ui] 设置模态框:' + key, ...rest); + }; +})(); + +/** 写属性,值没变就不写(避免自己把自己的观察器喂成死循环)。 */ +function setAttr(el, name, value) { + if (el.getAttribute(name) !== value) el.setAttribute(name, value); +} + +/** 摘属性,本来就没有就不写。 */ +function dropAttr(el, name) { + if (el.hasAttribute(name)) el.removeAttribute(name); +} + +/** 设置 inline order,值没变就不写。 */ +function setOrder(el, value) { + const next = String(value); + if (el.style.order !== next) el.style.order = next; +} + +/** 按 PART_ATTR 在直接子节点里找回自己注入的那一件。 */ +const findPart = (parent, part) => + Array.prototype.find.call(parent.children, (el) => el !== null && el.getAttribute(PART_ATTR) === part) ?? null; + +/** 造一个带标记的注入节点。 */ +function makeNode(tag, className, part, text) { + const el = document.createElement(tag); + el.className = className; + el.setAttribute(ATTR, MARK); + if (part !== null && part !== undefined) el.setAttribute(PART_ATTR, part); + if (text !== undefined && text !== null) el.textContent = text; + return el; +} + +/** navList 里哪些是宿主项:没带我们标记的直接子节点。 */ +const hostChildren = (list) => Array.prototype.filter.call(list.children, (el) => el.getAttribute(ATTR) !== MARK); + +/** + * 取宿主项的可见文本。 + * 固定结构是 (侦察 §b 实测 13 项无例外); + * 但**不把它当硬契约**:拿不到就退到最后一个 span,再不行退到 textContent。 + */ +function cellLabel(cell) { + const kids = cell.children; + if (kids.length === 2 && kids[0].tagName === 'SVG' && kids[1].tagName === 'SPAN') return kids[1].textContent.trim(); + const last = kids.length > 0 ? kids[kids.length - 1] : null; + if (last !== null && last.tagName === 'SPAN') return last.textContent.trim(); + return cell.textContent.trim(); +} + +/** 标签 → 组 id;匹配不上就是兜底组。 */ +const groupOfLabel = (label) => GROUP_OF_LABEL.get(normalizeLabel(label)) ?? OTHER_GROUP.id; + +/* ── 面板定位(全部走稳定锚点,找不到就返回 null) ────────────────────── */ + +/** 找设置面板并补盖自有锚点(幂等);不在 DOM 里返回 null。 */ +function findPanel() { + const panel = document.querySelector(PANEL_SELECTOR); + if (panel !== null && panel !== undefined) { + setAttr(panel, PANEL_ATTR, ''); + return panel; + } + /* 设置界面确实开着(设置分区槽已在 DOM 里)却一个锚点都匹配不到 —— 这是整层静默失效的 + 唯一路径(宿主改版 / 锚点改名),必须显式警告。设置关着时锚点不在是正常的,不警告。 */ + if (document.querySelector('[data-slot="settings.section"]') !== null) { + warnOnce('设置界面开着,但两个面板锚点(data-shortcut-modal / data-dsh-surface)都没匹配到 —— 结构层本次失效,宿主可能改版了'); + } + return null; +} + +/** 面板的直接子节点里的侧栏 nav。 */ +function findNav(panel) { + return Array.prototype.find.call(panel.children, (el) => el.tagName === 'NAV') ?? null; +} + +/** + * 侧栏里的设置项列表容器。 + * 侦察 §a 实测 nav.children = [navTitle, navList],且 navList 恒为最后一个子节点; + * 我们往 nav 里插的都是**前置**节点,所以「最后一个元素子节点」这条判据在我们注入后依然成立。 + */ +function findList(nav) { + const kids = Array.prototype.filter.call(nav.children, (el) => el.getAttribute(ATTR) !== MARK); + const last = kids.length > 0 ? kids[kids.length - 1] : null; + if (last === null || last.tagName !== 'DIV') { + warnOnce('找不到侧栏列表容器(nav 的最后一个子节点不是 div),本次跳过注入', nav); + return null; + } + return last; +} + +/* ── 主流程 ───────────────────────────────────────────────────────── */ + +/** 当前那一次安装的会话;热重载重复安装时先撤旧的。 */ +let active = null; + +/** + * 装上设置模态框的结构层。 + * @param ctx - 客户端上下文(只用它的 effect 做卸载回收,没有也能跑,只是不回收)。 + * @returns {() => void} 卸载函数(幂等;重复调用无副作用)。 + */ +export function installSettingsModal(ctx) { + if (typeof document === 'undefined' || document === null) return () => {}; + if (active !== null) { + try { active.dispose(); } catch { /* 撤不干净也不能阻断新的一次安装 */ } + active = null; + } + + const rootNode = document.body !== null && document.body !== undefined ? document.body : document.documentElement; + /** 当前挂着的 navList;换了一棵就重新挂列表观察器。 */ + let observedList = null; + /** 当前 navList 上的轻量观察器(只跟直接子节点,不深扫)。 */ + let listObserver = null; + /** 一个待执行的 rAF 句柄。 */ + let pending = null; + let disposed = false; + + /** 下一帧跑一次;已经有了就不重复排。 */ + const schedule = (fn) => { + if (pending !== null || disposed) return; + pending = requestAnimationFrame(() => { + pending = null; + if (disposed) return; + try { fn(); } catch (error) { warnOnce('重放时出错(已吞掉,不影响宿主)', error); } + }); + }; + + /* ── 侧栏顶部:「← 返回应用」+ 搜索框 ─────────────────────────────── */ + + /** 派发一次 Escape,走宿主自己的关闭路径。 */ + function pressEscape() { + const target = document.activeElement !== null && document.activeElement !== document.body + ? document.activeElement + : document.body; + const init = { key: 'Escape', code: 'Escape', keyCode: 27, which: 27, bubbles: true, cancelable: true }; + let event; + try { + event = new KeyboardEvent('keydown', init); + } catch (error) { + /* 老宿主没有 KeyboardEvent 构造器:造一个普通的、把 key 挂上去。 */ + event = new Event('keydown', { bubbles: true, cancelable: true }); + event.key = 'Escape'; + } + target.dispatchEvent(event); + } + + /** 结构上的关闭按钮:侦察 §d 实测 [data-slot="settings.close"] 嵌在按钮内部的 span 里。 */ + function closeButton(panel) { + const seat = panel.querySelector('[data-slot="settings.close"]'); + const button = seat === null || seat === undefined ? null : seat.closest('button'); + return button; + } + + /** + * 关闭设置:优先派发 Escape(侦察实测可用),没关掉再兜底点宿主的关闭按钮。 + * 绝不自己 display:none 藏模态 —— 那会让宿主的状态与界面脱节。 + */ + function requestClose(panel) { + pressEscape(); + requestAnimationFrame(() => requestAnimationFrame(() => { + if (disposed) return; + if (findPanel() !== null) return; /* Escape 生效了 */ + const button = closeButton(panel); + if (button === null) { + warnOnce('Escape 没关掉设置,也找不到结构上的关闭按钮,放弃关闭', panel); + return; + } + button.click(); + })); + } + + /** 建「← 返回应用」。 */ + function makeBack(panel) { + const back = makeNode('div', 'cx-sm-back', 'back'); + back.setAttribute('role', 'button'); + back.setAttribute('tabindex', '0'); + back.setAttribute('aria-label', '返回应用'); + const arrow = makeNode('span', 'cx-sm-back-icon', null, '\u2190'); + arrow.setAttribute('aria-hidden', 'true'); + const text = makeNode('span', 'cx-sm-back-text', null, '返回应用'); + back.appendChild(arrow); + back.appendChild(text); + back.addEventListener('click', () => requestClose(panel)); + back.addEventListener('keydown', (event) => { + if (event.key !== 'Enter' && event.key !== ' ' && event.key !== 'Spacebar') return; + event.preventDefault(); + requestClose(panel); + }); + return back; + } + + /** 建搜索框。只过滤,不拦事件:input 上的监听器只服务它自己。 */ + function makeSearch(makeFilter) { + const box = makeNode('div', 'cx-sm-search', 'search'); + const input = makeNode('input', 'cx-sm-search-input', 'search-input'); + input.setAttribute('type', 'search'); + input.setAttribute('placeholder', '搜索设置...'); + input.setAttribute('aria-label', '搜索设置'); + input.setAttribute('autocomplete', 'off'); + input.setAttribute('spellcheck', 'false'); + const run = () => makeFilter(input.value); + input.addEventListener('input', run); + input.addEventListener('search', run); /* type=search 的原生清除按钮走这条 */ + input.addEventListener('change', run); + box.appendChild(input); + return box; + } + + /** 重新取一次宿主项(列表变了之后 cells 会过期)。 */ + const cellsFrom = (list) => Array.prototype.filter.call( + list.children, + (el) => el.getAttribute(ATTR) !== MARK && el.tagName === 'BUTTON', + ); + + /* ── 分组:按组插标题 + 用 flex order 排顺序 ──────────────────────── */ + + /** + * 同步分组标题与顺序。**只写属性与 inline order,不移动任何宿主节点。** + * @param list - navList。 + * @param cells - 宿主项(保持 DOM 顺序)。 + */ + function syncGroups(list, cells) { + if (cells.length === 0) return; + const buckets = new Map([[OTHER_GROUP.id, []]]); + for (const group of GROUPS) buckets.set(group.id, []); + cells.forEach((cell, domIndex) => { + const label = cellLabel(cell); + const id = groupOfLabel(label); + setAttr(cell, GROUP_ATTR, id); + buckets.get(id).push({ cell, domIndex, label }); + }); + /* 已知组按映射表名次排;表里没写到的(不该有,防御性)排在该组末尾,再按宿主原序。 */ + for (const group of GROUPS) { + const rank = GROUP_RANK.get(group.id); + const members = buckets.get(group.id); + members.sort((a, b) => { + const ra = rank.get(normalizeLabel(a.label)) ?? Number.MAX_SAFE_INTEGER; + const rb = rank.get(normalizeLabel(b.label)) ?? Number.MAX_SAFE_INTEGER; + return ra - rb || a.domIndex - b.domIndex; + }); + } + /* 空组不渲染 —— 「账号与余额」未登录时缺位,组里其余项照常。 */ + const rendered = GROUP_SEQUENCE.filter((group) => buckets.get(group.id).length > 0); + + let slot = ORDER_STEP; + const liveHeaders = new Set(); + for (const group of rendered) { + const members = buckets.get(group.id); + const first = members[0].cell; + let header = findPart(list, 'group:' + group.id); + if (header === null) { + header = makeNode('div', 'cx-sm-group', 'group:' + group.id, group.label); + header.setAttribute(GROUP_ATTR, group.id); + header.setAttribute('aria-hidden', 'true'); + list.insertBefore(header, first); + } else { + /* 标题是自己的节点,可以自由移动:只在位置不对时才动。 + 宿主项一个都不动 —— 组内顺序全靠下面的 flex order 实现。 */ + if (header.nextElementSibling !== first) list.insertBefore(header, first); + if (header.textContent !== header.getAttribute('data-cx-sm-label')) header.textContent = group.label; + } + setAttr(header, 'data-cx-sm-label', group.label); + liveHeaders.add(header); + setAttr(header, GROUP_ATTR, group.id); + setOrder(header, slot); + slot += 1; + for (const member of members) setOrder(member.cell, slot++); + slot = Math.ceil(slot / ORDER_STEP) * ORDER_STEP; + } + /* 已经不该渲染的组标题(组内项被插件摘走了)撤掉。 */ + for (const el of Array.prototype.slice.call(list.children)) { + if (el.getAttribute(ATTR) !== MARK) continue; + if (!String(el.getAttribute(PART_ATTR)).startsWith('group:')) continue; + if (!liveHeaders.has(el)) el.remove(); + } + } + + /* ── 页头大标题:Codex 的「大标题 + 页级操作」───────────────────── */ + + /** + * 内容列:面板里除侧栏之外的最后一个直接子节点。 + * 侦察 §a 实测面板 children = [nav, content],content 恒为最后一个。 + */ + function findContent(panel) { + const kids = Array.prototype.filter.call( + panel.children, + (el) => el.tagName !== 'NAV' && el.getAttribute(ATTR) !== MARK, + ); + const last = kids.length > 0 ? kids[kids.length - 1] : null; + if (last === null || last.tagName !== 'DIV') { + warnOnce('找不到内容列(面板最后一个子节点不是 div),本次跳过页头', panel); + return null; + } + return last; + } + + /** + * 内容列顶部的 header 行。 + * 判据用**语义座位**而不是位置:里面装着 [data-slot="settings.action"](宿主唯一稳定的动作座位,侦察 §d)。 + * 判据不成立就返回 null,调用方降级到「插在 options 之前」。 + */ + function findHeader(content) { + return Array.prototype.find.call( + content.children, + (el) => el.getAttribute(ATTR) !== MARK && el.querySelector('[data-slot="settings.action"]') !== null, + ) ?? null; + } + + /** 设置页正文容器(滚动区):装着设置页座位 [data-slot="settings.section"] 的那个子节点。 */ + function findOptions(content, header) { + const rest = Array.prototype.filter.call( + content.children, + (el) => el !== header && el.getAttribute(ATTR) !== MARK, + ); + return rest.find((el) => el.querySelector('[data-slot="settings.section"]') !== null) ?? rest[0] ?? null; + } + + /** + * 当前激活项的标签。 + * 选中态 = aria-current="true":宿主自己的语义属性(侦察 §b 实测),比哈希类名稳。 + * 兜底顺序:aria-current → data-modal-autofocus → 第一项。 + */ + function activeLabel(cells) { + const pick = (pred) => { + for (const cell of cells) if (pred(cell)) return cellLabel(cell); + return null; + }; + return pick((cell) => cell.getAttribute('aria-current') === 'true') + ?? pick((cell) => cell.hasAttribute('data-modal-autofocus')) + ?? (cells.length > 0 ? cellLabel(cells[0]) : null); + } + + /** 建页头:div.cx-sm-pagehead > div.cx-sm-title(形态对齐 settings-modal.css §3.2)。 */ + function makePagehead() { + const head = makeNode('div', 'cx-sm-pagehead', 'pagehead'); + head.appendChild(makeNode('div', 'cx-sm-title', 'pagehead-title')); + return head; + } + + /** + * 同步页头:位置 + 标题文本。 + * 首选挂在 header 行的**最左侧**(与右上角「打开配置文件 ×」同一行,正对 Codex 的 + * 「大标题 + 页级操作」);header 判据不成立时降级为插在 options 之前;两者都不成立就 warn 跳过。 + */ + function syncPagehead(panel, content, cells) { + const header = findHeader(content); + let target = null; + let before = null; + if (header !== null) { + target = header; + before = header.firstChild; + } else { + const options = findOptions(content, null); + if (options !== null) { + warnOnce('设置面板的 header 行判据不成立,页头降级插在 options 之前', content); + target = content; + before = options; + } + } + if (target === null) { + warnOnce('找不到能挂页头的位置,本次跳过(只是没有大标题,其余注入照常)', content); + return; + } + let head = panel.querySelector('[' + PART_ATTR + '="pagehead"]'); + if (head === null) { + head = makePagehead(); + target.insertBefore(head, before); + } else if (head.parentNode !== target) { + /* 只搬自己的节点,宿主节点一个不动。 */ + target.insertBefore(head, before); + } + const title = findPart(head, 'pagehead-title'); + const label = activeLabel(cells); + if (title !== null && label !== null && title.textContent !== label) title.textContent = label; + } + + /* ── 搜索过滤:只加显隐,不移除/替换宿主节点 ──────────────────────── */ + + /** 写隐藏态;值没变就不写(否则会把自己的观察器喂成死循环)。 */ + function setHidden(el, hidden) { + if (hidden) { + setAttr(el, HIDDEN_ATTR, ''); + if (!el.classList.contains(HIDDEN_CLASS)) el.classList.add(HIDDEN_CLASS); + } else { + dropAttr(el, HIDDEN_ATTR); + if (el.classList.contains(HIDDEN_CLASS)) el.classList.remove(HIDDEN_CLASS); + } + } + + /** + * 按 query 过滤侧栏项。空查询 = 全部恢复。 + * @param list - navList。 + * @param query - 搜索框当前值。 + */ + function applyFilter(list, query) { + const cells = cellsFrom(list); + const needle = normalizeLabel(query); + const visible = new Map(); + for (const cell of cells) { + const hit = needle === '' || cellLabel(cell).toLowerCase().includes(needle); + setHidden(cell, !hit); + if (hit) { + const id = cell.getAttribute(GROUP_ATTR) ?? OTHER_GROUP.id; + visible.set(id, (visible.get(id) ?? 0) + 1); + } + } + /* 空分组标题也隐藏:标题的可见性只跟「这一组还有没有命中项」有关。 */ + for (const el of Array.prototype.slice.call(list.children)) { + if (el.getAttribute(ATTR) !== MARK) continue; + if (!String(el.getAttribute(PART_ATTR)).startsWith('group:')) continue; + setHidden(el, (visible.get(el.getAttribute(GROUP_ATTR)) ?? 0) === 0); + } + /* 无结果提示:.cx-sm-empty 只在「有查询且一项都没命中」时露出来; + 顺序上也必须钉在最后——flex 默认 order:0,不写这一条它会被排到分组前面去。 */ + let total = 0; + for (const count of visible.values()) total += count; + const needed = needle !== '' && total === 0; + let empty = findPart(list, 'empty'); + if (needed && empty === null) { + empty = makeNode('div', 'cx-sm-empty', 'empty', '没有匹配的设置项'); + empty.setAttribute('role', 'status'); + list.appendChild(empty); + } + if (empty !== null) { + setOrder(empty, TAIL_ORDER); + setHidden(empty, !needed); + } + } + + /* ── 注入 / 重放 ─────────────────────────────────────────────────── */ + + /** + * 把当前 navList 挂上观察器。它一处扛三件事: + * ① 列表增删 —— 插件热插拔设置项时重跑分组与「其他」兜底组; + * ② 补回被宿主抹掉的 cx-sm-hidden 类名(耐久标记仍是属性,类名只是给 CSS 的便利钩子); + * ③ **切项时刷新页头标题** —— 宿主把选中态从一项搬到另一项时写的就是 class + aria-current。 + * + * ⚠ **subtree 是必需项,不是优化**(probe4 双向对照实测): + * MutationObserver 不开 subtree 时,只上报被观察节点自己的属性变化; + * navCell 是 navList 的子节点,它们的 class / aria-current 改写一条都收不到 —— + * 同一时刻不开 subtree 收 0 条、开 subtree 收 5 条。 + * 漏掉它的表现是静默失效:aria-current 变了、页头标题纹丝不动,其余功能全部正常。 + * + * 不会自激:本文件写自己的属性一律「值没变就不写」(setAttr / setOrder / setHidden), + * 且 attributeFilter 只认 class 与 aria-current —— 我们自己从不写 aria-current, + * 也只在隐藏态真的翻转时才动 class,第一轮之后没有新 mutation 可喂给自己(实测收敛)。 + */ + function observeList(list) { + if (observedList === list && listObserver !== null) return; + if (listObserver !== null) listObserver.disconnect(); + observedList = list; + listObserver = new MutationObserver(() => schedule(inject)); + listObserver.observe(list, { + childList: true, + subtree: true, + attributes: true, + attributeFilter: ['class', 'aria-current'], + }); + } + + /** + * 重放:找面板 → 补侧栏顶部两件 → 同步分组 → 重挂过滤。 + * 每一步都自带「已经在了就跳过」,所以重复跑不会叠加节点。 + */ + function inject() { + const panel = findPanel(); + if (panel === null) { + /* 面板没了:列表观察器跟着失效,断开等下一次重放。 */ + if (listObserver !== null) { listObserver.disconnect(); listObserver = null; observedList = null; } + return; + } + const nav = findNav(panel); + if (nav === null) { + warnOnce('设置面板里没有侧栏 nav,本次跳过注入', panel); + return; + } + const list = findList(nav); + if (list === null) return; + const cells = cellsFrom(list); + if (cells.length === 0) { + warnOnce('侧栏列表里一个设置项都没有,本次跳过分组', list); + return; + } + /* 结构自检:宿主项本该都是 button。出现别的就跳过它,只 warn 不抛。 */ + for (const el of hostChildren(list)) { + if (el.tagName !== 'BUTTON') warnOnce('侧栏列表里出现了非 button 的子节点,已跳过它(宿主可能改版了)', el); + } + + /* 返回按钮与搜索框:都放在 nav 的最前面(返回在最上,搜索在它下面)。 + 它们排在宿主的「设置」标题之前 —— 只加不挪,宿主原有节点一个不动。 */ + let back = findPart(nav, 'back'); + if (back === null) { + back = makeBack(panel); + nav.insertBefore(back, nav.firstChild); + } + let search = findPart(nav, 'search'); + if (search === null) { + search = makeSearch((value) => { + const current = findList(nav); + if (current !== null) applyFilter(current, value); + }); + nav.insertBefore(search, back.nextSibling); + } + + syncGroups(list, cells); + const content = findContent(panel); + if (content !== null) syncPagehead(panel, content, cells); + const input = findPart(search, 'search-input'); + applyFilter(list, input !== null ? input.value : ''); + observeList(list); + } + + /* ── 观察 body:面板被卸载/重建时重放 ─────────────────────────────── */ + + /* subtree 按任务书开着(防宿主将来给 overlay 套一层壳),但回调里只认 target 就是 body 的 + childList 记录 —— 宿主 overlay 是 body 的直接子节点(侦察 §a + 本次探针复核), + 所以这一条 O(1) 过滤会把页面上其它所有 mutation 全部丢掉,不做任何 DOM 查询。 */ + const bodyObserver = new MutationObserver((records) => { + for (const record of records) { + if (record.type !== 'childList') continue; + if (record.target !== rootNode) continue; + schedule(inject); + return; + } + }); + bodyObserver.observe(rootNode, { childList: true, subtree: true }); + + inject(); + + const dispose = () => { + if (disposed) return; + disposed = true; + if (pending !== null) { cancelAnimationFrame(pending); pending = null; } + if (listObserver !== null) { listObserver.disconnect(); listObserver = null; } + bodyObserver.disconnect(); + observedList = null; + /* 注入节点一律带标记,一次清干净;宿主节点只把「我们写上去的那几个属性」摘掉。 */ + for (const el of Array.prototype.slice.call(document.querySelectorAll('[' + ATTR + '="' + MARK + '"]'))) el.remove(); + for (const el of Array.prototype.slice.call(document.querySelectorAll('[' + GROUP_ATTR + ']'))) { + dropAttr(el, GROUP_ATTR); + el.style.removeProperty('order'); + } + for (const el of Array.prototype.slice.call(document.querySelectorAll('[' + HIDDEN_ATTR + ']'))) { + dropAttr(el, HIDDEN_ATTR); + el.classList.remove(HIDDEN_CLASS); + } + if (active !== null && active.dispose === dispose) active = null; + }; + + if (typeof ctx.effect === 'function') { + ctx.effect(() => dispose, 'codex-ui: settings modal'); + } else { + console.warn('[codex-ui] ctx.effect 不可用:设置模态框结构层已挂上,但不会随 fiber 卸载回收。'); + } + + active = { dispose }; + return dispose; +} diff --git a/theme.css b/theme.css index bb8b1aa..35582bf 100644 --- a/theme.css +++ b/theme.css @@ -1824,3 +1824,471 @@ html[data-codex-ui] .cx-error { font-size: 11px; line-height: 16px; } + +html[data-codex-ui] { + + --cx-sm-sidebar-w: 236px; + --cx-sm-row-h: 46px; + --cx-sm-panel-w: 760px; + --cx-sm-gutter: 24px; + --cx-sm-radius-card: var(--dsw-radius-m, 12px); + + --cx-sm-radius-field: 10px; + --cx-sm-radius-pill: 999px; + +} + +@media (max-width: 900px) { + html[data-codex-ui] { + --cx-sm-sidebar-w: 196px; + --cx-sm-gutter: 14px; + } +} + + + + +html[data-codex-ui] div[data-cx-sm-panel] { + --cx-sm-surface-backdrop: var(--dsw-alias-bg-sidebar); + + --cx-sm-card-edge: var(--dsw-alias-bg-sidebar); + + --dsw-alias-bg-layer-2: var(--dsw-alias-bg-layer-1); + --dsw-alias-bg-layer-3: var(--dsw-alias-bg-layer-1); +} + + +html[data-codex-ui] body[data-ds-dark-theme] div[data-cx-sm-panel] { + --cx-sm-card-edge: var(--dsw-alias-border-l1); +} + +html[data-codex-ui] div[data-cx-sm-panel] { + position: fixed; + inset: 0; + box-sizing: border-box; + width: auto; + height: auto; + max-width: none; + max-height: none; + border-radius: 0; + box-shadow: none; + overflow: hidden; + + background: var(--cx-sm-surface-backdrop); +} + + +html[data-codex-ui][data-windows-titlebar] div[data-cx-sm-panel] { + padding-top: var(--dsh-windows-titlebar-height, 40px); +} + + +html[data-codex-ui][data-windows-titlebar] div[data-cx-sm-panel] button, +html[data-codex-ui][data-windows-titlebar] div[data-cx-sm-panel] input, +html[data-codex-ui][data-windows-titlebar] div[data-cx-sm-panel] a { + -webkit-app-region: no-drag; +} + + + +html[data-codex-ui] div[data-cx-sm-panel] > nav { + position: relative; + box-sizing: border-box; + flex: 0 0 var(--cx-sm-sidebar-w); + width: var(--cx-sm-sidebar-w); + min-height: 0; + padding: 12px 12px 16px; + gap: 8px; + background: none; + overflow: hidden; +} + + +html[data-codex-ui] div[data-cx-sm-panel] > nav > div:not([data-codex-ui-injected]):not(:has(> button)) { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip-path: inset(50%); + white-space: nowrap; +} + + +html[data-codex-ui] div[data-cx-sm-panel] > nav > div:has(> button), +html[data-codex-ui] div[data-cx-sm-panel] > nav > div:last-child { + box-sizing: border-box; + min-height: 0; + flex: 1 1 auto; + gap: 2px; +} + + +html[data-codex-ui] div[data-cx-sm-panel] > nav > div:has(> button) > button { + box-sizing: border-box; + width: 100%; + min-height: 32px; + padding: 6px 10px; + gap: 9px; + border: 0; + border-radius: var(--dsw-radius-s, 8px); + background: none; + color: var(--dsw-alias-label-secondary); + font-size: 14px; + line-height: 20px; + text-align: left; +} + + +html[data-codex-ui] div[data-cx-sm-panel] > nav > div:has(> button) > button:hover { + background: var(--dsw-alias-interactive-bg-hover); + color: var(--dsw-alias-label-primary); +} + + +html[data-codex-ui] div[data-cx-sm-panel] > nav > div:has(> button) > button[aria-current="true"] { + background: var(--dsw-alias-interactive-bg-active); + color: var(--dsw-alias-label-primary); + font-weight: 500; +} + +html[data-codex-ui] div[data-cx-sm-panel] > nav > div:has(> button) > button[aria-current="true"]:hover { + background: var(--dsw-alias-interactive-bg-active); +} + +html[data-codex-ui] div[data-cx-sm-panel] > nav > div:has(> button) > button:focus-visible { + outline-offset: -2px; +} + + +html[data-codex-ui] div[data-cx-sm-panel] > nav > div:has(> button) > button svg { + width: 16px; + height: 16px; + flex: 0 0 auto; + stroke-width: 1.4; + opacity: 0.72; +} + +html[data-codex-ui] div[data-cx-sm-panel] > nav > div:has(> button) > button:hover svg, +html[data-codex-ui] div[data-cx-sm-panel] > nav > div:has(> button) > button[aria-current="true"] svg { + opacity: 1; +} + + +html[data-codex-ui] .cx-sm-group { + margin: 12px 0 4px; + padding: 0 10px; + color: var(--dsw-alias-label-caption); + font-size: 12px; + line-height: 18px; + font-weight: 500; + letter-spacing: 0.01em; + user-select: none; +} + +html[data-codex-ui] :lang(zh) .cx-sm-group { + letter-spacing: 0; +} + + +html[data-codex-ui] .cx-sm-search + .cx-sm-group { + margin-top: 4px; +} + + +html[data-codex-ui] .cx-sm-back { + display: flex; + align-items: center; + gap: 6px; + box-sizing: border-box; + width: fit-content; + min-height: 28px; + padding: 2px 6px 2px 4px; + border-radius: var(--dsw-radius-s, 8px); + color: var(--dsw-alias-label-secondary); + font-size: 13px; + line-height: 20px; + cursor: pointer; + user-select: none; +} + +html[data-codex-ui] .cx-sm-back:hover { + background: var(--dsw-alias-interactive-bg-hover); + color: var(--dsw-alias-label-primary); +} + +html[data-codex-ui] .cx-sm-back svg { + width: 14px; + height: 14px; + flex: 0 0 auto; + stroke-width: 1.6; + opacity: 0.8; +} + + + +html[data-codex-ui] .cx-sm-search { + display: flex; + align-items: center; + gap: 8px; + box-sizing: border-box; + width: 100%; + height: 32px; + + padding: 0 14px; + border: 0; + border-radius: var(--cx-sm-radius-pill); + background: var(--dsw-alias-bg-layer-1); + color: var(--dsw-alias-label-tertiary); +} + +html[data-codex-ui] .cx-sm-search:focus-within { + box-shadow: inset 0 0 0 1px var(--dsw-alias-border-l3); +} + +html[data-codex-ui] .cx-sm-search svg { + width: 14px; + height: 14px; + flex: 0 0 auto; + stroke-width: 1.6; + opacity: 0.7; +} + +html[data-codex-ui] .cx-sm-search input { + box-sizing: border-box; + flex: 1 1 auto; + min-width: 0; + height: 100%; + padding: 0; + border: 0; + outline: 0; + background: none; + color: var(--dsw-alias-label-primary); + font: inherit; + font-size: 13px; + line-height: 20px; +} + +html[data-codex-ui] .cx-sm-search input::placeholder { + color: var(--dsw-alias-label-caption); +} + + + + +html[data-codex-ui] div[data-cx-sm-panel] > div:last-child { + box-sizing: border-box; + flex: 1 1 auto; + min-width: 0; + min-height: 0; + + background: var(--dsw-alias-bg-base); + + overflow: hidden; +} + + +html[data-codex-ui] div[data-cx-sm-panel] > div:last-child > div:first-child { + box-sizing: border-box; + flex: 0 0 auto; + align-items: center; + min-height: 52px; + padding: 12px var(--cx-sm-gutter) 8px; +} + + + + + + + +html[data-codex-ui] div[data-cx-sm-panel] > div:last-child > div:last-child { + box-sizing: border-box; + flex: 1 1 auto; + min-height: 0; + padding: 2px var(--cx-sm-gutter) 0; +} + + +html[data-codex-ui] div[data-cx-sm-panel] > div:last-child > div:last-child [data-slot="settings.section"] > * { + box-sizing: border-box; + width: 100%; + max-width: var(--cx-sm-panel-w); + margin-left: auto; + margin-right: auto; + + padding-bottom: 40px; +} + + +html[data-codex-ui] div[data-cx-sm-panel] [data-slot="settings.action"] button { + box-sizing: border-box; + height: 32px; + padding: 0 12px; + + white-space: nowrap; + border: 0.5px solid var(--dsw-alias-border-l2); + border-radius: var(--dsw-radius-s, 8px); + background: var(--dsw-alias-button-elevated-fill); + color: var(--dsw-alias-label-primary); + font-size: 13px; + line-height: 1; + cursor: pointer; +} + +html[data-codex-ui] div[data-cx-sm-panel] [data-slot="settings.action"] button:hover { + background: var(--dsw-alias-interactive-bg-hover); + border-color: var(--dsw-alias-border-l3); +} + + +html[data-codex-ui] div[data-cx-sm-panel] button:has([data-slot="settings.close"]) { + display: none; +} + + +html[data-codex-ui] .cx-sm-pagehead { + display: flex; + align-items: center; + justify-content: space-between; + gap: 16px; + box-sizing: border-box; + width: 100%; + min-height: 36px; + margin: 0 0 12px; +} + +html[data-codex-ui] .cx-sm-title, +html[data-codex-ui] .cx-sm-pagehead > h1, +html[data-codex-ui] .cx-sm-pagehead > h2 { + margin: 0; + padding: 0; + color: var(--dsw-alias-label-primary); + + font-size: 20px; + line-height: 26px; + font-weight: 600; + letter-spacing: -0.01em; +} + +html[data-codex-ui] :lang(zh) .cx-sm-title, +html[data-codex-ui] :lang(zh) .cx-sm-pagehead > h1, +html[data-codex-ui] :lang(zh) .cx-sm-pagehead > h2 { + letter-spacing: 0; +} + + + + + +html[data-codex-ui] div[data-cx-sm-panel] [data-slot="settings.section"] > * { + box-sizing: border-box; + width: 100%; + gap: 0; + padding-top: 2px; +} + + + +html[data-codex-ui] div[data-cx-sm-panel] [data-slot="settings.general.item"] > * { + box-sizing: border-box; + min-height: var(--cx-sm-row-h); + padding: 8px 16px; + border-style: solid; + border-color: var(--cx-sm-card-edge); + border-width: 0.5px 0; + + background: var(--dsw-alias-bg-layer-1); + transition: background-color var(--dsw-motion-fast, 150ms) var(--dsw-ease, ease); +} + + +html[data-codex-ui] div[data-cx-sm-panel] [data-slot="settings.section"] > :first-child > [data-slot="settings.general.item"] > *:first-child { + border-top-width: 0.5px; + border-left-width: 0.5px; + border-right-width: 0.5px; + border-radius: var(--cx-sm-radius-card) var(--cx-sm-radius-card) 0 0; +} + + +html[data-codex-ui] div[data-cx-sm-panel] [data-slot="settings.section"] > :first-child > [data-slot="settings.general.item"] > *:last-child { + border-bottom-width: 0.5px; + border-left-width: 0.5px; + border-right-width: 0.5px; + border-radius: 0 0 var(--cx-sm-radius-card) var(--cx-sm-radius-card); +} + + + html[data-codex-ui] ._card { background: var(--dsw-alias-settings-card-fill) } + html[data-codex-ui] ._cardActive { background: var(--dsw-alias-bg-module-platform) } + html[data-codex-ui] —— 它们**吃令牌**,不是硬编码灰。该令牌由宿主主题包 dsh-client-ui-theme 在 + **body** 上声明为 var(--dsw-alias-settings-card-fill: var(--dsw-alias-bg-layer-2)); + 本机 app.asar 全文扫描里,该令牌的**声明**只有这一处,另 4 处都是 background 消费点。 + 皮肤把它同名重定义成 layer-1(skin.css:html[data-codex-ui], +html[data-codex-ui] body), + 特异性与顺序都压过宿主的 body 声明 —— 白卡 / 深色 #212121 因此**自动生效**。 + + 旧注释怎么错的(一并记下,免得后人再被同一个坑骗): + 旧文写「#f3f3f3 硬编码、换色试验证明不走任何令牌」。那个换色试验是在 §4.3 规则**还在**的 + 前提下做的 —— §4.3 以特异性 (0,3,3) 压过宿主的 (0,1,0),无论令牌被改成什么,卡都会保持 + §4.3 写死的 layer-1,于是「0 个元素跟随」是这条规则生效的**必然结果**,推不出「卡不读令牌」。 + 定案靠的是宿主源码里那两条 background 声明,不是那个试验。 + (二审结论见 docs/recon/second-pass-review.md 的 M1/M2。) + + **删除理由**(三条,任一条都够): + ① 同值重复:皮肤已把该令牌定成 layer-1,§1 的 layer-2/3→layer-1 重定向同样落上去, + 这条规则写的是**同一个值**,三层路径同值,将来改一处根本无法判断谁在生效; + ② 覆盖面无意义:它靠特异性 (0,3,3) 压过宿主 .rowCard/.card 的 (0,1,0), + 而值相同 —— 赢了也没有任何视觉差异; + ③ **会漂**:[class$="_card"] 匹配的是「整条 class 属性以该后缀结尾」, + 覆盖面随宿主状态类的书写顺序漂移。实测 Agent 预设的选中卡是 + class="rtSEdW_card rtSEdW_cardActive"(以 _cardActive 结尾)→ 今天**不命中**、 + 靠宿主自己的 .cardActive {background: var(--dsw-alias-bg-module-platform)} html[data-codex-ui] 保住选中底色, + 纯属侥幸;一旦宿主把状态类挪到前面,选中卡会被压成 layer-1,**选中态视觉当场丢失, + 而没有任何断言会红**。删除即消除这条会随宿主改版静默劣化的路径。 + + 删除后的着色机制**唯一**:--dsw-alias-settings-card-fill(skin.css 定义) + → 未选中卡 = layer-1(浅 #ffffff / 深 #212121)。选中卡保持宿主自己的 + bg-module-platform(浅 #f9f9f9)—— 与未选中卡不同色,选中态仍可区分。 + 这条路径由 scripts/settings-modal-verify.mjs 的两条集成断言把守 + (未选中卡 == var(--dsw-alias-bg-layer-1) 的计算值;选中卡背景 ≠ 未选中卡背景)。 */ + + +html[data-codex-ui] div[data-cx-sm-panel] [data-slot="settings.section"] > :first-child > [data-slot="settings.general.item"] > *:not(:first-child):not(:last-child) { + border-radius: 0; +} + + +html[data-codex-ui] div[data-cx-sm-panel] [data-slot="settings.general.item"] > *:hover { + background: var(--dsw-alias-interactive-bg-hover); +} + + +html[data-codex-ui] div[data-cx-sm-panel] [data-slot="settings.general.item"] > * > :first-child > div:not(:first-child) { + color: var(--dsw-alias-label-caption); +} + + + + +html[data-codex-ui] [data-cx-sm-hidden], +html[data-codex-ui] .cx-sm-hidden { + display: none !important; +} + +html[data-codex-ui] .cx-sm-empty { + box-sizing: border-box; + padding: 32px 8px; + color: var(--dsw-alias-label-tertiary); + font-size: 13px; + line-height: 20px; + text-align: center; +} + + + +html[data-codex-ui] [data-codex-ui-injected="settings-modal"], +html[data-codex-ui] [data-codex-ui-injected="settings-modal"] * { + box-sizing: border-box; +} From 5e948a1fab3ae127ffe29e7a6228610ff41b7a85 Mon Sep 17 00:00:00 2001 From: Agent-Evo RSI Date: Tue, 29 Sep 2026 01:07:34 +0800 Subject: [PATCH 2/3] =?UTF-8?q?chore:=20=E6=96=B0=E5=A2=9E=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E8=A1=8C=E5=B0=BE=E7=BB=9F=E4=B8=80=E4=B8=BA=20LF=20?= =?UTF-8?q?=E5=B9=B6=E9=87=8D=E7=94=9F=E6=88=90=E4=BA=A7=E7=89=A9=EF=BC=88?= =?UTF-8?q?.gitattributes=20=E6=98=AF=20eol=3Dlf=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PowerShell 写出的四个新文件是 CRLF,会把 CRLF 带进 theme.css / client.js —— 在 LF 检出的干净克隆上 build.mjs --check 会判「产物过期」。现统一 LF 后重跑: npm run check 67/67、node scripts/verify.mjs 208/208、build --check OK。 --- client.js | 2 +- theme.css | 50 -------------------------------------------------- 2 files changed, 1 insertion(+), 51 deletions(-) diff --git a/client.js b/client.js index 9d9aaec..ecd0cc7 100644 --- a/client.js +++ b/client.js @@ -2589,7 +2589,7 @@ return { installSettingsModal }; /* codex-ui:theme.css */ const __codex_ui_theme_css = (() => { -const THEME_CSS = "html[data-codex-ui],\nhtml[data-codex-ui] body {\n color-scheme: light;\n\n background-color: #ffffff;\n\n --dsw-alias-bg-base: #ffffff;\n\n --dsw-alias-bg-sidebar: #f6f6f6;\n --dsw-alias-bg-layer-1: #ffffff;\n --dsw-alias-bg-layer-2: #f1f1ef;\n --dsw-alias-bg-layer-3: #e5e5e5;\n --dsw-alias-bg-overlay: rgba(255, 255, 255, 0.88);\n --dsw-alias-bg-module-platform: #f9f9f9;\n --dsw-alias-bg-multi-select: #e5e5e5;\n --dsw-alias-bg-skeleton: rgba(13, 13, 13, 0.05);\n\n --dsw-alias-border-l1: rgba(13, 13, 13, 0.07);\n --dsw-alias-border-l2: rgba(13, 13, 13, 0.12);\n --dsw-alias-border-l3: rgba(13, 13, 13, 0.18);\n --dsw-alias-border-l4: rgba(13, 13, 13, 0.24);\n --dsw-alias-border-l2-darkmode-thin: rgba(13, 13, 13, 0.09);\n\n --dsw-alias-label-primary: #1a1c1f;\n --dsw-alias-label-primary-dimmed: #5d5d5d;\n --dsw-alias-label-primary-inverted: #ffffff;\n --dsw-alias-label-primary-foreground: #ffffff;\n --dsw-alias-label-primary-bluish: #0d0d0d;\n --dsw-alias-label-secondary: #5d5d5d;\n --dsw-alias-label-tertiary: #767676;\n --dsw-alias-label-caption: #767676;\n --dsw-alias-label-dimmed: #c9c9c9;\n\n --dsw-alias-brand-primary: #0d0d0d;\n --dsw-alias-brand-primary-invert: #ffffff;\n --dsw-alias-brand-text: #ffffff;\n --dsw-alias-brand-primary-new-colorprimary-new-color: #0d0d0d;\n --dsw-alias-link: #339cff;\n\n --dsw-alias-button-primary-fill: #0d0d0d;\n --dsw-alias-button-primary-hover: #2a2a2a;\n --dsw-alias-button-primary-dimmed: #e5e5e5;\n --dsw-alias-button-contrast-fill: #0d0d0d;\n --dsw-alias-button-elevated-fill: #ffffff;\n --dsw-alias-button-floating-fill: #ffffff;\n --dsw-alias-button-floating-hover: #f1f1ef;\n --dsw-alias-button-ghost-active-fill: #e5e5e5;\n --dsw-alias-button-ghost-active-hover: #dcdcdc;\n --dsw-alias-button-ghost-active-border: #8f8f8f;\n --dsw-alias-button-info-fill: #0d0d0d;\n --dsw-alias-button-info-hover: #2a2a2a;\n --dsw-alias-button-tool-bar-fill: rgba(13, 13, 13, 0.28);\n --dsw-alias-button-tool-bar-fill-invisible: rgba(13, 13, 13, 0.18);\n --dsw-alias-button-tool-bar-hover: rgba(13, 13, 13, 0.36);\n\n --dsw-alias-interactive-bg-hover: rgba(13, 13, 13, 0.04);\n --dsw-codex-hover-fill: #f2f2f3;\n --dsw-codex-focus: #339cff;\n\n --dsw-focus-ring-color: var(--dsw-codex-focus);\n\n --dsw-codex-border: rgba(13, 13, 13, 0.1);\n --dsw-codex-border-strong: rgba(13, 13, 13, 0.15);\n --dsw-alias-interactive-bg-active: rgba(13, 13, 13, 0.08);\n --dsw-alias-interactive-bg-hover-solid: #f1f1ef;\n --dsw-alias-interactive-bg-hover-accent: rgba(13, 13, 13, 0.06);\n --dsw-alias-interactive-bg-hover-danger: rgba(209, 36, 47, 0.08);\n\n --dsw-alias-markdown-code-block: #f1f1ef;\n --dsw-alias-markdown-code-block-banner: #e5e5e5;\n --dsw-alias-markdown-inline-code: #f1f1ef;\n --dsw-alias-markdown-code-segment-selected: #ffffff;\n --dsw-alias-markdown-code-segment-unselected: #f1f1ef;\n --dsw-alias-markdown-citation: #f1f1ef;\n --dsw-alias-markdown-placeholder: #e5e5e5;\n --dsw-alias-markdown-tag: #f1f1ef;\n\n --dsw-alias-state-success-primary: #1a7f37;\n --dsw-alias-state-success-secondary: #2e9e4c;\n --dsw-alias-state-success-tertiary: rgba(26, 127, 55, 0.08);\n --dsw-alias-state-error-primary: #d1242f;\n --dsw-alias-state-error-secondary: #e5484d;\n --dsw-alias-state-error-tertiary: rgba(209, 36, 47, 0.08);\n --dsw-alias-state-warn-primary: #8f5f00;\n --dsw-alias-state-warn-secondary: #bb8009;\n --dsw-alias-state-warn-tertiary: rgba(143, 95, 0, 0.08);\n --dsw-alias-state-warn-label: #8f5f00;\n --dsw-alias-state-business-primary: #0d0d0d;\n --dsw-alias-state-business-tertiary: rgba(13, 13, 13, 0.08);\n --dsw-alias-state-idle-primary: #767676;\n\n --dsw-alias-code-diff-added: rgba(26, 127, 55, 0.1);\n --dsw-alias-code-diff-deleted: rgba(209, 36, 47, 0.1);\n --dsw-alias-file-diff-added-bg: #e6f4e7;\n --dsw-alias-file-diff-added-gutter: #edf7ed;\n --dsw-alias-file-diff-added-marker: #1a7f37;\n --dsw-alias-file-diff-deleted-bg: #fce6e2;\n --dsw-alias-file-diff-deleted-gutter: #fdece9;\n --dsw-alias-file-diff-deleted-marker: #d1242f;\n\n --dsw-alias-bg-mask-drop: rgba(255, 255, 255, 0.7);\n --dsw-alias-toast-bg: #1e1e1e;\n --dsw-alias-tooltip-bg: #1e1e1e;\n --dsw-alias-tooltip-fg: #ffffff;\n --dsw-alias-hovercard-bg: #ffffff;\n\n --dsw-alias-scrollbar-bg-l1: rgba(118, 118, 118, 0.3);\n --dsw-alias-scrollbar-bg-l2: rgba(118, 118, 118, 0.5);\n --dsw-alias-scrollbar-hover-l1: rgba(13, 13, 13, 0.35);\n --dsw-alias-scrollbar-hover-l2: rgba(13, 13, 13, 0.5);\n\n --dsw-specific-sidebar-fill: #f6f6f6;\n --dsw-specific-sidebar-nav-item-hover: #f0f0f0;\n --dsw-specific-sidebar-nav-item-active: #e9e9e9;\n --dsw-specific-sidebar-nav-item-active-accent: rgba(13, 13, 13, 0.1);\n --dsw-specific-input-major: #ffffff;\n --dsw-composer-surface: #ffffff;\n --dsw-specific-login-input: #f9f9f9;\n --dsw-specific-menu: rgba(255, 255, 255, 0.88);\n --dsw-specific-selector: #f1f1ef;\n --dsw-specific-bubble: #f1f1ef;\n --dsw-specific-bubble-highlight: #e5e5e5;\n --dsw-specific-tip: #f1f1ef;\n\n --dsw-shadow-lv1: 0 1px 2px rgba(13, 13, 13, 0.06);\n --dsw-shadow-lv2: 0 2px 8px rgba(13, 13, 13, 0.08);\n --dsw-shadow-lv3: 0 8px 24px rgba(13, 13, 13, 0.1);\n --dsw-linear-gradient-think: linear-gradient(180deg, #ffffff 20.19%, rgba(255, 255, 255, 0) 100%);\n --dsw-linear-think-select: linear-gradient(180deg, #f1f1ef 20.19%, rgba(241, 241, 239, 0) 100%);\n\n --dsw-codex-ambient: rgba(13, 13, 13, 0.05);\n --dsw-codex-menu-shadow: 0 8px 32px rgba(13, 13, 13, 0.13), 0 0 0 1px rgba(13, 13, 13, 0.04);\n --dsw-codex-suggest-shadow: 0 8px 32px #0002, 0 0 0 1px #0000000a;\n --dsw-codex-suggest-fill: #fff;\n}\n\nhtml[data-codex-ui-switching] *,\nhtml[data-codex-ui-switching] *::before,\nhtml[data-codex-ui-switching] *::after {\n transition: none !important;\n}\n\nhtml[data-codex-ui]:has(body[data-ds-dark-theme]) {\n background-color: #111111;\n}\n\nhtml[data-codex-ui] body[data-ds-dark-theme] {\n color-scheme: dark;\n background-color: #111111;\n\n --dsw-alias-bg-base: #111111;\n --dsw-alias-bg-sidebar: #0f0f0f;\n --dsw-alias-bg-layer-1: #212121;\n --dsw-alias-bg-layer-2: #282828;\n --dsw-alias-bg-layer-3: #303030;\n --dsw-alias-bg-overlay: rgba(24, 24, 24, 0.88);\n --dsw-alias-bg-module-platform: #1f1f1f;\n --dsw-alias-bg-multi-select: #303030;\n --dsw-alias-bg-skeleton: rgba(255, 255, 255, 0.07);\n\n --dsw-alias-border-l1: rgba(255, 255, 255, 0.08);\n --dsw-alias-border-l2: rgba(255, 255, 255, 0.14);\n --dsw-alias-border-l3: rgba(255, 255, 255, 0.2);\n --dsw-alias-border-l4: rgba(255, 255, 255, 0.26);\n --dsw-alias-border-l2-darkmode-thin: rgba(255, 255, 255, 0.1);\n\n --dsw-alias-label-primary: #ffffff;\n --dsw-alias-label-primary-dimmed: #b4b4b4;\n --dsw-alias-label-primary-inverted: #0d0d0d;\n --dsw-alias-label-primary-foreground: #0d0d0d;\n --dsw-alias-label-primary-bluish: #ececec;\n --dsw-alias-label-secondary: #b4b4b4;\n --dsw-alias-label-tertiary: #949494;\n --dsw-alias-label-caption: #949494;\n --dsw-alias-label-dimmed: #4a4a4a;\n\n --dsw-alias-brand-primary: #ffffff;\n --dsw-alias-brand-primary-invert: #0d0d0d;\n --dsw-alias-brand-text: #0d0d0d;\n --dsw-alias-brand-primary-new-colorprimary-new-color: #ffffff;\n --dsw-alias-link: #0169cc;\n\n --dsw-alias-button-primary-fill: #ffffff;\n --dsw-alias-button-primary-hover: #d9d9d9;\n --dsw-alias-button-primary-dimmed: #282828;\n --dsw-alias-button-contrast-fill: #ececec;\n --dsw-alias-button-elevated-fill: #212121;\n --dsw-alias-button-floating-fill: #1f1f1f;\n --dsw-alias-button-floating-hover: #282828;\n --dsw-alias-button-ghost-active-fill: #303030;\n --dsw-alias-button-ghost-active-hover: #383838;\n --dsw-alias-button-ghost-active-border: #7e7e7e;\n --dsw-alias-button-info-fill: #ffffff;\n --dsw-alias-button-info-hover: #d9d9d9;\n --dsw-alias-button-tool-bar-fill: rgba(255, 255, 255, 0.22);\n --dsw-alias-button-tool-bar-fill-invisible: rgba(255, 255, 255, 0.16);\n --dsw-alias-button-tool-bar-hover: rgba(255, 255, 255, 0.28);\n\n --dsw-alias-interactive-bg-hover: rgba(255, 255, 255, 0.06);\n --dsw-codex-hover-fill: rgba(255, 255, 255, 0.08);\n --dsw-codex-focus: rgba(51, 156, 255, 0.7);\n --dsw-codex-border: rgba(255, 255, 255, 0.12);\n --dsw-codex-border-strong: rgba(255, 255, 255, 0.2);\n --dsw-alias-interactive-bg-active: rgba(255, 255, 255, 0.1);\n --dsw-alias-interactive-bg-hover-solid: #282828;\n --dsw-alias-interactive-bg-hover-accent: rgba(255, 255, 255, 0.08);\n --dsw-alias-interactive-bg-hover-danger: rgba(248, 81, 73, 0.12);\n\n --dsw-alias-markdown-code-block: #1f1f1f;\n --dsw-alias-markdown-code-block-banner: #141414;\n --dsw-alias-markdown-inline-code: #282828;\n --dsw-alias-markdown-code-segment-selected: #303030;\n --dsw-alias-markdown-code-segment-unselected: #1f1f1f;\n --dsw-alias-markdown-citation: #212121;\n --dsw-alias-markdown-placeholder: #282828;\n --dsw-alias-markdown-tag: #282828;\n\n --dsw-alias-state-success-primary: #3fb950;\n --dsw-alias-state-success-secondary: #56d364;\n --dsw-alias-state-success-tertiary: rgba(63, 185, 80, 0.16);\n --dsw-alias-state-error-primary: #ff7b72;\n --dsw-alias-state-error-secondary: #ff9492;\n --dsw-alias-state-error-tertiary: rgba(255, 123, 114, 0.16);\n --dsw-alias-state-warn-primary: #d29922;\n --dsw-alias-state-warn-secondary: #e3b341;\n --dsw-alias-state-warn-tertiary: rgba(210, 153, 34, 0.16);\n --dsw-alias-state-warn-label: #d29922;\n --dsw-alias-state-business-primary: #ececec;\n --dsw-alias-state-business-tertiary: rgba(255, 255, 255, 0.12);\n --dsw-alias-state-idle-primary: #7e7e7e;\n\n --dsw-alias-code-diff-added: rgba(63, 185, 80, 0.14);\n --dsw-alias-code-diff-deleted: rgba(248, 81, 73, 0.14);\n --dsw-alias-file-diff-added-bg: #1f3124;\n --dsw-alias-file-diff-added-gutter: #132016;\n --dsw-alias-file-diff-added-marker: #41c977;\n --dsw-alias-file-diff-deleted-bg: #3c1f1b;\n --dsw-alias-file-diff-deleted-gutter: #28130e;\n --dsw-alias-file-diff-deleted-marker: #fa423e;\n\n --dsw-alias-bg-mask-drop: rgba(39, 39, 48, 0.7);\n --dsw-alias-toast-bg: #282828;\n --dsw-alias-tooltip-bg: #212121;\n --dsw-alias-tooltip-fg: #ececec;\n --dsw-alias-hovercard-bg: #212121;\n\n --dsw-alias-scrollbar-bg-l1: rgba(160, 160, 160, 0.3);\n --dsw-alias-scrollbar-bg-l2: rgba(160, 160, 160, 0.5);\n --dsw-alias-scrollbar-hover-l1: rgba(255, 255, 255, 0.35);\n --dsw-alias-scrollbar-hover-l2: rgba(255, 255, 255, 0.5);\n\n --dsw-specific-sidebar-fill: #0f0f0f;\n --dsw-specific-sidebar-nav-item-hover: #171717;\n --dsw-specific-sidebar-nav-item-active: #1f1f1f;\n --dsw-specific-sidebar-nav-item-active-accent: rgba(255, 255, 255, 0.14);\n --dsw-specific-input-major: #212121;\n --dsw-composer-surface: #181818;\n --dsw-specific-login-input: #1f1f1f;\n --dsw-specific-menu: rgba(24, 24, 24, 0.88);\n --dsw-specific-selector: #282828;\n --dsw-specific-bubble: #212121;\n --dsw-specific-bubble-highlight: #282828;\n --dsw-specific-tip: #1f1f1f;\n\n --dsw-shadow-lv1: 0 1px 2px rgba(0, 0, 0, 0.4);\n --dsw-shadow-lv2: 0 2px 8px rgba(0, 0, 0, 0.5);\n --dsw-shadow-lv3: 0 8px 24px rgba(0, 0, 0, 0.6);\n --dsw-linear-gradient-think: linear-gradient(180deg, #212121 20.19%, rgba(33, 33, 33, 0) 100%);\n --dsw-linear-think-select: linear-gradient(180deg, #1f1f1f 20.19%, rgba(40, 40, 40, 0) 100%);\n\n --dsw-codex-ambient: rgba(0, 0, 0, 0.5);\n --dsw-codex-menu-shadow: 0 8px 32px rgba(0, 0, 0, 0.5), 0 0 0 1px rgba(236, 236, 236, 0.05);\n --dsw-codex-suggest-shadow: 0 8px 32px #0003, 0 0 0 1px #ffffff08;\n --dsw-codex-suggest-fill: #292929;\n}\n\nhtml[data-codex-ui],\nhtml[data-codex-ui] body {\n --dsw-space-1: 4px;\n --dsw-space-2: 8px;\n --dsw-space-3: 12px;\n --dsw-space-4: 16px;\n --dsw-space-5: 20px;\n --dsw-space-6: 24px;\n --dsw-space-8: 32px;\n\n --dsw-radius-xs: 4px;\n --dsw-radius-s: 8px;\n --dsw-radius-m: 12px;\n --dsw-radius-l: 16px;\n --dsw-radius-xl: 20px;\n --dsw-radius-2xl: 25px;\n --dsw-radius-menu: 18px;\n\n --dsw-radius-card: var(--dsw-radius-xl);\n --dsw-radius-pill: 999px;\n\n --dsw-content-max-width: 768px;\n\n --dsw-text-2xs: 11px;\n --dsw-text-xs: 12.5px;\n --dsw-text-sm: 13px;\n --dsw-text-base: 14px;\n --dsw-text-lg: 16px;\n --dsw-text-xl: 20px;\n --dsw-text-2xl: 28px;\n --dsw-leading-2xs: 1.3;\n --dsw-leading-xs: 1.4;\n --dsw-leading-base: 1.65;\n --dsw-leading-lg: 1.4;\n --dsw-leading-xl: 1.35;\n --dsw-leading-2xl: 1.25;\n\n --dsw-font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", \"PingFang SC\",\n \"Hiragino Sans GB\", \"Microsoft YaHei\", \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n --ds-font-family-code: \"SF Mono\", \"JetBrains Mono\", \"Fira Code\", Consolas,\n \"Liberation Mono\", Menlo, Courier, \"PingFang SC\", \"Microsoft YaHei\";\n\n --dsw-font-meta: var(--ds-font-family-code);\n --dsw-meta-size: 11px;\n --dsw-meta-weight: 500;\n --dsw-meta-tracking: 0.08em;\n --dsw-meta-tracking-pill: 0.04em;\n\n --dsw-motion-fast: 150ms;\n --dsw-motion-base: 200ms;\n --dsw-motion-slow: 300ms;\n --dsw-ease: cubic-bezier(0.4, 0, 0.2, 1);\n\n --dsh-composer-accessory-radius: var(--dsw-radius-l);\n --dsh-composer-accessory-bg: var(--dsw-alias-bg-layer-2);\n --dsh-composer-accessory-color: var(--dsw-alias-label-secondary);\n --dsh-composer-accessory-border: 0.5px solid var(--dsw-alias-border-l1);\n --dsh-composer-accessory-shadow: none;\n --dsh-composer-accessory-blur: 0px;\n}\n\n@supports (corner-shape: superellipse(1.5)) {\n html[data-codex-ui],\nhtml[data-codex-ui] body {\n --dsw-radius-card: var(--dsw-radius-2xl);\n }\n}\n\nhtml[data-codex-ui] body,\nhtml[data-codex-ui] body * {\n --dsw-elevation-stroke-color: rgba(13, 13, 13, 0.08);\n --dsw-elevation-stroke: 0 0 0 0.5px var(--dsw-elevation-stroke-color);\n --dsw-elevation-panel: var(--dsw-elevation-stroke);\n\n --dsw-elevation-prominent: var(--dsw-elevation-stroke), 0 3px 7.5px #0000000a, 0 0 20px #0000000d;\n}\n\nhtml[data-codex-ui] body[data-ds-dark-theme],\nhtml[data-codex-ui] body[data-ds-dark-theme] * {\n --dsw-elevation-stroke-color: rgba(255, 255, 255, 0.09);\n}\n\nhtml[data-codex-ui],\nhtml[data-codex-ui] body {\n --dsw-font-markdown-h1: 600 calc(21px + var(--dsh-content-font-delta)) / calc(30px + var(--dsh-content-font-delta)) var(--dsw-font-family);\n --dsw-font-markdown-h1-font-weight: 600;\n --dsw-font-markdown-h2: 600 calc(19px + var(--dsh-content-font-delta)) / calc(28px + var(--dsh-content-font-delta)) var(--dsw-font-family);\n --dsw-font-markdown-h2-font-weight: 600;\n --dsw-font-markdown-h3: 600 calc(18px + var(--dsh-content-font-delta)) / calc(26px + var(--dsh-content-font-delta)) var(--dsw-font-family);\n --dsw-font-markdown-h3-font-weight: 600;\n}\n\nhtml[data-codex-ui] :focus-visible {\n outline: 2px solid var(--dsw-focus-ring-color);\n outline-offset: 2px;\n}\n\nhtml[data-codex-ui] a {\n color: var(--dsw-alias-link);\n text-decoration: none;\n text-underline-offset: 2px;\n text-decoration-thickness: 1px;\n}\n\nhtml[data-codex-ui] a:hover,\nhtml[data-codex-ui] a:focus-visible {\n text-decoration: underline;\n}\n\nhtml[data-codex-ui] button,\nhtml[data-codex-ui] a,\nhtml[data-codex-ui] summary,\nhtml[data-codex-ui] [role=\"button\"],\nhtml[data-codex-ui] [role=\"tab\"],\nhtml[data-codex-ui] [role=\"menuitem\"],\nhtml[data-codex-ui] [role=\"option\"] {\n cursor: pointer;\n}\n\nhtml[data-codex-ui] button,\nhtml[data-codex-ui] a,\nhtml[data-codex-ui] summary,\nhtml[data-codex-ui] [role=\"button\"],\nhtml[data-codex-ui] [role=\"tab\"],\nhtml[data-codex-ui] [role=\"menuitem\"] {\n transition:\n background-color var(--dsw-motion-fast) var(--dsw-ease),\n border-color var(--dsw-motion-fast) var(--dsw-ease),\n color var(--dsw-motion-fast) var(--dsw-ease),\n opacity var(--dsw-motion-fast) var(--dsw-ease),\n box-shadow var(--dsw-motion-fast) var(--dsw-ease);\n}\n\nhtml[data-codex-ui] button:disabled,\nhtml[data-codex-ui] button[aria-disabled=\"true\"],\nhtml[data-codex-ui] [aria-disabled=\"true\"] {\n cursor: not-allowed;\n opacity: 0.45;\n}\n\nhtml[data-codex-ui] [data-slot=\"web-ui.plugin.item\"] > *,\nhtml[data-codex-ui] [data-dsh-part=\"card\"],\nhtml[data-codex-ui] [data-dsh-part=\"column\"],\nhtml[data-codex-ui] [data-dsh-part=\"status\"],\nhtml[data-codex-ui] [data-dsh-part=\"today-card\"],\nhtml[data-codex-ui] [data-dsh-part=\"balance-card\"],\nhtml[data-codex-ui] [data-dsh-part=\"trend-card\"],\nhtml[data-codex-ui] [data-dsh-part=\"plan-card\"],\nhtml[data-codex-ui] [data-dsh-part=\"bank-card\"] {\n background: var(--dsw-alias-bg-layer-1);\n border: 0.5px solid var(--dsw-alias-border-l1);\n border-radius: var(--dsw-radius-m);\n box-shadow: var(--dsw-elevation-panel);\n padding: var(--dsw-space-4);\n}\n\nhtml[data-codex-ui] [role=\"dialog\"],\nhtml[data-codex-ui] [data-dsh-surface=\"overlay\"] [data-dsh-part=\"panel\"] {\n border-radius: var(--dsw-radius-l);\n}\n\nhtml[data-codex-ui] [data-dsh-part=\"composer-chip\"],\nhtml[data-codex-ui] [data-dsh-part=\"chip\"],\nhtml[data-codex-ui] [data-dsh-part=\"ref\"],\nhtml[data-codex-ui] [data-dsh-part=\"tag-chip\"],\nhtml[data-codex-ui] [data-dsh-part=\"tag-badge\"] {\n font-family: var(--dsw-font-meta);\n font-size: var(--dsw-meta-size);\n font-weight: var(--dsw-meta-weight);\n letter-spacing: var(--dsw-meta-tracking-pill);\n border-radius: var(--dsw-radius-pill);\n}\n\nhtml[data-codex-ui] [data-dsh-part=\"tag-chip\"][data-tag-tone=\"0\"],\nhtml[data-codex-ui] [data-dsh-part=\"tag-badge\"][data-tag-tone=\"0\"] {\n background: var(--dsw-alias-bg-layer-2);\n color: var(--dsw-alias-label-secondary);\n}\n\nhtml[data-codex-ui] [data-dsh-part=\"tag-chip\"][data-tag-tone=\"1\"],\nhtml[data-codex-ui] [data-dsh-part=\"tag-badge\"][data-tag-tone=\"1\"] {\n background: var(--dsw-alias-state-success-tertiary);\n color: var(--dsw-alias-state-success-primary);\n}\n\nhtml[data-codex-ui] [data-dsh-part=\"tag-chip\"][data-tag-tone=\"2\"],\nhtml[data-codex-ui] [data-dsh-part=\"tag-badge\"][data-tag-tone=\"2\"] {\n background: var(--dsw-alias-state-warn-tertiary);\n color: var(--dsw-alias-state-warn-primary);\n}\n\nhtml[data-codex-ui] [data-dsh-part=\"tag-chip\"][data-tag-tone=\"3\"],\nhtml[data-codex-ui] [data-dsh-part=\"tag-badge\"][data-tag-tone=\"3\"] {\n background: var(--dsw-alias-state-error-tertiary);\n color: var(--dsw-alias-state-error-primary);\n}\n\nhtml[data-codex-ui] [data-dsh-part=\"tag-chip\"][data-tag-tone=\"4\"],\nhtml[data-codex-ui] [data-dsh-part=\"tag-badge\"][data-tag-tone=\"4\"] {\n background: var(--dsw-alias-state-business-tertiary);\n color: var(--dsw-alias-label-primary);\n}\n\nhtml[data-codex-ui] [data-dsh-part=\"tag-chip\"][data-tag-tone=\"5\"],\nhtml[data-codex-ui] [data-dsh-part=\"tag-badge\"][data-tag-tone=\"5\"] {\n background: var(--dsw-alias-bg-layer-3);\n color: var(--dsw-alias-label-tertiary);\n}\n\nhtml[data-codex-ui] [data-dsh-surface=\"sidebar\"],\nhtml[data-codex-ui] [data-slot=\"sidebar.workspaces\"] {\n background-color: var(--dsw-alias-bg-sidebar);\n}\n\nhtml[data-codex-ui] [data-dsh-part=\"sidebar-entry\"],\nhtml[data-codex-ui] [data-dsh-surface=\"sidebar\"] [role=\"button\"] {\n border-radius: var(--dsw-radius-s);\n}\n\nhtml[data-codex-ui] [data-dsh-surface=\"composer\"] [data-dsh-part=\"composer-input\"] {\n border-radius: var(--dsw-radius-l);\n}\n\nhtml[data-codex-ui] [data-dsh-part=\"composer-input\"] {\n font-family: var(--dsw-font-family);\n line-height: var(--dsw-leading-base);\n}\n\nhtml[data-codex-ui] [data-dsh-part=\"turn-tail\"],\nhtml[data-codex-ui] [data-dsh-part=\"queue-dock\"],\nhtml[data-codex-ui] [data-dsh-part=\"usage-chart\"],\nhtml[data-codex-ui] [data-dsh-part=\"voucher-preview\"] {\n font-family: var(--dsw-font-meta);\n}\n\nhtml[data-codex-ui] [data-dsh-part=\"composer-chip\"] {\n text-transform: uppercase;\n letter-spacing: var(--dsw-meta-tracking);\n}\n\nhtml[data-codex-ui] :lang(zh) [data-dsh-part=\"composer-chip\"],\nhtml[data-codex-ui] :lang(zh) [data-dsh-part=\"chip\"],\nhtml[data-codex-ui] :lang(zh) [data-dsh-part=\"ref\"],\nhtml[data-codex-ui] :lang(zh) [data-dsh-part=\"tag-chip\"],\nhtml[data-codex-ui] :lang(zh) [data-dsh-part=\"tag-badge\"] {\n letter-spacing: 0;\n text-transform: none;\n}\n\n@media (prefers-reduced-motion: reduce) {\n html[data-codex-ui] *,\nhtml[data-codex-ui] *::before,\nhtml[data-codex-ui] *::after {\n animation-duration: 0.01ms !important;\n animation-iteration-count: 1 !important;\n transition-duration: 0.01ms !important;\n scroll-behavior: auto !important;\n }\n}\n\nhtml[data-codex-ui] [data-slot=\"conversation.input.model\"] button:focus-visible {\n outline: 1px solid var(--dsw-focus-ring-color);\n outline-offset: 1px;\n box-shadow: none;\n}\n\nhtml[data-codex-ui] body > div[role=\"menu\"][aria-busy] {\n\n --dsw-menu-surface-fill: var(--dsw-alias-bg-layer-1);\n --dsw-menu-backdrop-filter: none;\n\n background: var(--dsw-alias-bg-layer-1);\n padding: 5px;\n border-radius: var(--dsw-radius-menu);\n box-shadow: var(--dsw-codex-menu-shadow);\n color: var(--dsw-alias-label-primary);\n}\n\nhtml[data-codex-ui] body > div[role=\"menu\"][aria-busy] button[role=\"menuitem\"],\nhtml[data-codex-ui] body > div[role=\"menu\"][aria-busy] button[role=\"menuitemradio\"] {\n box-sizing: border-box;\n min-height: 28px;\n padding: 4px 9px;\n gap: 8px;\n border: 0;\n border-radius: calc(var(--dsw-radius-menu) - 5px);\n background: none;\n color: inherit;\n font-size: 13px;\n line-height: 20px;\n text-align: left;\n}\n\nhtml[data-codex-ui] body > div[role=\"menu\"][aria-busy] button[role=\"menuitem\"]:hover,\nhtml[data-codex-ui] body > div[role=\"menu\"][aria-busy] button[role=\"menuitemradio\"]:hover:not(:disabled),\nhtml[data-codex-ui] body > div[role=\"menu\"][aria-busy] button[role=\"menuitemradio\"][aria-checked=\"true\"] {\n background: var(--dsw-alias-interactive-bg-active);\n}\n\nhtml[data-codex-ui] body > div[role=\"menu\"][aria-busy] button[role=\"menuitem\"]:focus-visible,\nhtml[data-codex-ui] body > div[role=\"menu\"][aria-busy] button[role=\"menuitemradio\"]:focus-visible {\n outline: 1px solid var(--dsw-focus-ring-color);\n outline-offset: -1px;\n background: var(--dsw-alias-interactive-bg-active);\n}\n\nhtml[data-codex-ui] body > div[role=\"menu\"][aria-busy] button[role=\"menuitemradio\"]:disabled {\n opacity: 1;\n}\n\nhtml[data-codex-ui] body > div[role=\"menu\"][aria-busy=\"true\"] button[role=\"menuitemradio\"][aria-checked=\"true\"] > span:last-child {\n position: relative;\n}\n\nhtml[data-codex-ui] body > div[role=\"menu\"][aria-busy=\"true\"] button[role=\"menuitemradio\"][aria-checked=\"true\"] > span:last-child > svg {\n visibility: hidden;\n}\n\nhtml[data-codex-ui] body > div[role=\"menu\"][aria-busy=\"true\"] button[role=\"menuitemradio\"][aria-checked=\"true\"] > span:last-child::after {\n content: \"\";\n position: absolute;\n inset: 0;\n box-sizing: border-box;\n width: 12px;\n height: 12px;\n margin: auto;\n border: 1.5px solid var(--dsw-alias-border-l3);\n border-top-color: var(--dsw-alias-label-primary);\n border-radius: 50%;\n animation: codex-ui-spin 1s linear infinite;\n}\n\nhtml[data-codex-ui] body > div[role=\"menu\"][aria-busy=\"true\"] button[role=\"menuitemradio\"]:disabled {\n cursor: progress;\n}\n\n@keyframes codex-ui-spin {\n to {\n transform: rotate(1turn);\n }\n}\n\nhtml[data-codex-ui] [data-slot=\"conversation.session.header\"] > [data-conversation-tabs] {\n display: none;\n}\n\nhtml[data-codex-ui] header:has([data-conversation-header-leading]):has([data-conversation-tabs]) {\n min-height: 0;\n padding-bottom: 10px;\n}\n\nhtml[data-codex-ui] [data-dsh-part=\"new-session\"] {\n border: 0;\n background: transparent;\n box-shadow: none;\n border-radius: var(--dsw-radius-s);\n justify-content: flex-start;\n color: var(--dsw-alias-label-primary);\n}\n\nhtml[data-codex-ui] [data-dsh-part=\"new-session\"]:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\nhtml[data-codex-ui] [data-slot=\"conversation.composer.dock\"] {\n display: none;\n}\n\nhtml[data-codex-ui] [data-conversation-header-corner] {\n margin-left: 0;\n margin-right: 0;\n}\n\nhtml[data-codex-ui] [data-sidebar-right-expand] svg {\n transform: scaleX(-1);\n}\n\nhtml[data-codex-ui] [data-animating] {\n transition: grid-template-columns 500ms cubic-bezier(.16, 1, .3, 1);\n}\n\nhtml[data-codex-ui] [data-animating] [data-side] {\n transition: left 500ms cubic-bezier(.16, 1, .3, 1);\n}\n\nhtml[data-codex-ui] [data-dragging],\nhtml[data-codex-ui] [data-rightbar-instant],\nhtml[data-codex-ui] [data-rightbar-fullscreen],\nhtml[data-codex-ui] [data-dragging] [data-side],\nhtml[data-codex-ui] [data-rightbar-instant] [data-side],\nhtml[data-codex-ui] [data-rightbar-fullscreen] [data-side] {\n transition: none;\n}\n\n@media (prefers-reduced-motion: reduce) {\n html[data-codex-ui] [data-animating],\nhtml[data-codex-ui] [data-animating] [data-side] {\n transition: none;\n }\n}\n\nhtml[data-codex-ui] [data-sidebar-right-guide] > span[aria-hidden=\"true\"] {\n display: none;\n}\n\nhtml[data-codex-ui] [data-sidebar-right-guide]::after {\n display: none;\n}\n\nhtml[data-codex-ui] [data-sidebar-right-guide-entry] {\n box-sizing: border-box;\n width: 380px;\n max-width: 100%;\n min-height: 52px;\n gap: 14px;\n padding: 0 20px;\n border: 0;\n border-radius: var(--dsw-radius-m);\n background: transparent;\n color: var(--dsw-alias-label-primary);\n font-size: 14px;\n}\n\nhtml[data-codex-ui] [data-sidebar-right-guide-entry]:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\nhtml[data-codex-ui] [data-sidebar-right-guide-entry] > span:first-child {\n width: 20px;\n height: 20px;\n}\n\nhtml[data-codex-ui] [data-sidebar-right-guide-entry] > span:first-child svg {\n width: 20px;\n height: 20px;\n}\n\nhtml[data-codex-ui] [data-sidebar-right-guide-entry] > span:nth-child(2) {\n gap: 0;\n}\n\nhtml[data-codex-ui] [data-sidebar-right-guide-entry] > span:nth-child(2) > span:nth-child(2) {\n display: none;\n}\n\nhtml[data-codex-ui] [data-sidebar-right-guide-entry=\"terminal\"] > span:nth-child(2) {\n width: 20px;\n height: 20px;\n}\n\nhtml[data-codex-ui] [data-sidebar-right-guide-entry=\"terminal\"] > span:nth-child(2) svg {\n width: 20px;\n height: 20px;\n}\n\nhtml[data-codex-ui] [data-sidebar-right-guide-entry=\"terminal\"] > span:nth-child(3) > span:nth-child(2) {\n display: none;\n}\n\nhtml[data-codex-ui] [data-sidebar-right-guide-entry] > span:has(kbd) {\n display: inline-flex;\n flex: none;\n align-items: center;\n gap: 3px;\n height: 24px;\n padding: 0 10px;\n border-radius: var(--dsw-radius-m);\n background: var(--dsw-alias-bg-layer-2);\n color: var(--dsw-alias-label-tertiary);\n font-size: 12px;\n line-height: 16px;\n white-space: nowrap;\n}\n\nhtml[data-codex-ui] [data-sidebar-right-guide-entry] kbd {\n display: inline;\n min-width: 0;\n padding: 0;\n border: 0;\n border-radius: 0;\n background: transparent;\n color: inherit;\n font: inherit;\n}\n\nhtml[data-codex-ui] [data-sidebar-right-toggle] {\n background: var(--dsw-alias-bg-layer-2);\n border-radius: var(--dsw-radius-m);\n}\n\nhtml[data-codex-ui] [data-composer-card] button[class$=\"_add\"],\nhtml[data-codex-ui] [data-composer-card] button[class$=\"_trigger\"] {\n transition: background-color var(--dsw-motion-fast) var(--dsw-ease);\n border-radius: var(--dsw-radius-pill);\n}\n\nhtml[data-codex-ui] [data-composer-card] button[class$=\"_add\"] {\n background: transparent;\n}\n\nhtml[data-codex-ui] [data-composer-card] button[class$=\"_add\"]:hover,\nhtml[data-codex-ui] [data-composer-card] button[class$=\"_add\"][aria-expanded=\"true\"],\nhtml[data-codex-ui] [data-composer-card] button[class$=\"_trigger\"]:hover,\nhtml[data-codex-ui] [data-composer-card] button[class$=\"_trigger\"][aria-expanded=\"true\"] {\n background: var(--dsw-codex-hover-fill);\n}\n\nhtml[data-codex-ui] [data-slot=\"conversation.input.model\"][data-codex-ui-seated] > :not(.codex-mp-trigger) {\n display: none;\n}\n\nhtml[data-codex-ui] .codex-mp-trigger {\n box-sizing: border-box;\n display: inline-flex;\n align-items: center;\n gap: 4px;\n height: 28px;\n min-width: 0;\n max-width: min(360px, 45cqw);\n padding: 0 4px 0 8px;\n border: 0;\n border-radius: var(--dsw-radius-pill);\n background: transparent;\n color: var(--dsw-alias-label-secondary);\n font-family: inherit;\n font-size: 13px;\n font-weight: 400;\n line-height: 20px;\n cursor: pointer;\n transition: background-color var(--dsw-motion-fast) var(--dsw-ease);\n}\n\nhtml[data-codex-ui] .codex-mp-trigger:hover,\nhtml[data-codex-ui] .codex-mp-trigger[aria-expanded=\"true\"] {\n background: var(--dsw-codex-hover-fill);\n}\n\nhtml[data-codex-ui] .codex-mp-trigger-model {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\nhtml[data-codex-ui] .codex-mp-effort-layers {\n display: grid;\n grid-template-columns: max-content;\n flex-shrink: 1000;\n width: max-content;\n min-width: 0;\n overflow: hidden;\n color: var(--dsw-alias-label-caption);\n}\n\nhtml[data-codex-ui] .codex-mp-effort-layers[hidden] {\n display: none;\n}\n\nhtml[data-codex-ui] .codex-mp-effort-text {\n grid-area: 1 / 1;\n justify-self: center;\n opacity: 0;\n filter: blur(4px);\n white-space: nowrap;\n will-change: opacity, filter;\n transition:\n opacity var(--dsw-motion-slow) var(--dsw-ease),\n filter var(--dsw-motion-slow) var(--dsw-ease);\n}\n\nhtml[data-codex-ui] .codex-mp-effort-text[data-active=\"true\"] {\n opacity: 1;\n filter: none;\n}\n\nhtml[data-codex-ui] .codex-mp-trigger-chevron {\n display: inline-flex;\n flex: none;\n color: var(--dsw-alias-label-caption);\n transition: transform 120ms var(--dsw-ease);\n}\n\nhtml[data-codex-ui] .codex-mp-trigger[aria-expanded=\"true\"] .codex-mp-trigger-chevron {\n transform: rotate(180deg);\n}\n\nhtml[data-codex-ui] .codex-mp-popover {\n position: fixed;\n z-index: 1100;\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n width: calc(4px * 63.5);\n max-width: calc(100vw - 24px);\n max-height: min(360px, 100vh - 96px);\n padding: 5px;\n border-radius: var(--dsw-radius-menu);\n background: var(--dsw-alias-bg-layer-1);\n color: var(--dsw-alias-label-primary);\n box-shadow: var(--dsw-codex-menu-shadow);\n font-size: 13px;\n line-height: 20px;\n transform-origin: bottom right;\n animation: codex-mp-enter 0.32s cubic-bezier(0.23, 1, 0.32, 1) 30ms both;\n}\n\nhtml[data-codex-ui] .codex-mp-popover[hidden] {\n display: none;\n}\n\nhtml[data-codex-ui] .codex-mp-popover[data-reduced-motion=\"true\"] {\n animation: none;\n}\n\n@keyframes codex-mp-enter {\n from {\n opacity: 0;\n transform: scale(0.98);\n }\n\n to {\n opacity: 1;\n transform: none;\n }\n}\n\nhtml[data-codex-ui] .codex-mp-error {\n flex: none;\n margin-bottom: 3px;\n padding: 6px 9px;\n border-radius: calc(var(--dsw-radius-menu) - 5px);\n background: var(--dsw-alias-interactive-bg-hover-danger);\n color: var(--dsw-alias-state-error-primary);\n font-size: 11px;\n line-height: 16px;\n}\n\nhtml[data-codex-ui] .codex-mp-error[hidden] {\n display: none;\n}\n\nhtml[data-codex-ui] .codex-mp-list {\n min-height: 0;\n overflow-y: auto;\n scrollbar-width: thin;\n}\n\nhtml[data-codex-ui] .codex-mp-status {\n padding: 8px 9px;\n color: var(--dsw-alias-label-tertiary);\n font-size: 12px;\n line-height: 18px;\n}\n\nhtml[data-codex-ui] .codex-mp-retry {\n padding: 0;\n border: 0;\n background: none;\n color: inherit;\n font: inherit;\n font-weight: 600;\n cursor: pointer;\n}\n\nhtml[data-codex-ui] .codex-mp-group {\n padding: 4px 9px 2px;\n color: var(--dsw-alias-label-tertiary);\n font-size: 11px;\n font-weight: 500;\n line-height: 16px;\n}\n\nhtml[data-codex-ui] .codex-mp-group:not(:first-child) {\n margin-top: 3px;\n}\n\nhtml[data-codex-ui] .codex-mp-row {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n gap: 8px;\n width: 100%;\n min-height: 28px;\n padding: 4px 9px;\n border: 0;\n border-radius: calc(var(--dsw-radius-menu) - 5px);\n background: none;\n color: inherit;\n font-family: inherit;\n font-size: 13px;\n line-height: 20px;\n text-align: left;\n cursor: pointer;\n}\n\nhtml[data-codex-ui] .codex-mp-row:hover,\nhtml[data-codex-ui] .codex-mp-row[aria-checked=\"true\"] {\n background: var(--dsw-alias-interactive-bg-active);\n}\n\nhtml[data-codex-ui] .codex-mp-row:focus-visible {\n outline: 1px solid var(--dsw-focus-ring-color);\n outline-offset: -1px;\n background: var(--dsw-alias-interactive-bg-active);\n}\n\nhtml[data-codex-ui] .codex-mp-row[aria-busy=\"true\"] {\n cursor: progress;\n}\n\nhtml[data-codex-ui] .codex-mp-row-copy {\n display: flex;\n flex: 1;\n flex-direction: column;\n min-width: 0;\n}\n\nhtml[data-codex-ui] .codex-mp-row-name {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-weight: 500;\n}\n\nhtml[data-codex-ui] .codex-mp-row-desc {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n color: var(--dsw-alias-label-tertiary);\n font-size: 12px;\n line-height: 18px;\n}\n\nhtml[data-codex-ui] .codex-mp-row-check {\n display: grid;\n flex: 0 0 14px;\n place-items: center;\n color: var(--dsw-alias-label-primary);\n}\n\nhtml[data-codex-ui] .codex-mp-spinner {\n box-sizing: border-box;\n display: inline-block;\n flex: none;\n width: 12px;\n height: 12px;\n border: 1.5px solid var(--dsw-alias-border-l3);\n border-top-color: var(--dsw-alias-label-primary);\n border-radius: 50%;\n animation: codex-ui-spin 1s linear infinite;\n}\n\nhtml[data-codex-ui] .codex-mp-effort {\n flex: none;\n margin-top: 5px;\n padding-top: 5px;\n border-top: 0.5px solid var(--dsw-alias-border-l1);\n}\n\nhtml[data-codex-ui] .codex-mp-effort[hidden] {\n display: none;\n}\n\nhtml[data-codex-ui] .codex-mp-effort {\n --codex-mp-apex: #8b7ad0;\n --codex-mp-apex-flash: #d9d2f5;\n --codex-mp-apex-ink: #5f51b5;\n}\n\nhtml[data-codex-ui] body[data-ds-dark-theme] .codex-mp-effort {\n --codex-mp-apex: #9d8ce0;\n --codex-mp-apex-flash: #e6e0fb;\n --codex-mp-apex-ink: #b9adf0;\n}\n\nhtml[data-codex-ui] .codex-mp-effort-head {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n min-height: 28px;\n padding: 4px 9px;\n color: var(--dsw-alias-label-secondary);\n}\n\nhtml[data-codex-ui] .codex-mp-effort-value {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n color: var(--dsw-alias-label-tertiary);\n}\n\nhtml[data-codex-ui] .codex-mp-container {\n position: relative;\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n justify-content: center;\n height: 32px;\n margin-inline: 2px;\n padding-block: 2px;\n padding-inline: 6px;\n}\n\nhtml[data-codex-ui] .codex-mp-root {\n --codex-mp-motion-duration: 0.18s;\n --codex-mp-motion-easing: cubic-bezier(0.22, 0.61, 0.36, 1);\n --codex-mp-tick-transform-duration: 0.12s;\n --codex-mp-thumb-motion-duration: 0s;\n position: relative;\n display: flex;\n align-items: center;\n width: 100%;\n height: 30px;\n outline: none;\n touch-action: none;\n cursor: pointer;\n}\n\nhtml[data-codex-ui] .codex-mp-root[data-armed=\"true\"] {\n --codex-mp-thumb-motion-duration: var(--codex-mp-motion-duration);\n}\n\nhtml[data-codex-ui] .codex-mp-root[data-dragging=\"true\"],\nhtml[data-codex-ui] .codex-mp-root[data-dragging=\"true\"] .codex-mp-tick {\n cursor: grabbing;\n}\n\nhtml[data-codex-ui] .codex-mp-root[data-disabled=\"true\"] {\n opacity: 0.6;\n}\n\nhtml[data-codex-ui] .codex-mp-popover[data-reduced-motion=\"true\"] .codex-mp-root {\n --codex-mp-motion-duration: 0s;\n --codex-mp-tick-transform-duration: 0s;\n --codex-mp-thumb-motion-duration: 0s;\n}\n\nhtml[data-codex-ui] .codex-mp-track {\n position: relative;\n flex-grow: 1;\n height: 30px;\n}\n\nhtml[data-codex-ui] .codex-mp-track::before {\n content: \"\";\n position: absolute;\n left: 0;\n right: 0;\n top: 50%;\n height: 26px;\n margin-top: -13px;\n border-radius: 8px;\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\nhtml[data-codex-ui] .codex-mp-range {\n position: absolute;\n left: 0;\n top: 50%;\n height: 26px;\n margin-top: -13px;\n width: calc(8px + (100% - 16px) * var(--codex-mp-pos, 0));\n border-radius: 8px 0 0 8px;\n background: color-mix(in srgb, var(--dsw-alias-label-primary) 26%, transparent);\n transition: width var(--codex-mp-thumb-motion-duration) var(--codex-mp-motion-easing);\n pointer-events: none;\n}\n\nhtml[data-codex-ui] .codex-mp-matrix {\n position: absolute;\n left: 0;\n right: 0;\n top: 50%;\n height: 26px;\n margin-top: -13px;\n border-radius: 8px;\n overflow: hidden;\n box-sizing: border-box;\n display: none;\n pointer-events: none;\n}\n\nhtml[data-codex-ui] .codex-mp-root[data-tier=\"max\"] .codex-mp-matrix {\n display: grid;\n grid-auto-flow: row;\n}\n\nhtml[data-codex-ui] .codex-mp-matrix-cell {\n animation: codex-mp-cell-in 0.15s ease both;\n}\n\n@keyframes codex-mp-cell-in {\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n}\n\nhtml[data-codex-ui] .codex-mp-matrix-sq {\n width: 100%;\n height: 100%;\n border-radius: 1px;\n background-color: var(--codex-mp-apex);\n --codex-mp-flash-light: var(--codex-mp-apex-flash);\n animation: codex-mp-flash 1.45s infinite ease-in-out;\n}\n\nhtml[data-codex-ui] .codex-mp-matrix-sq[data-tone=\"0\"] { --codex-mp-flash-light: color-mix(in srgb, var(--codex-mp-apex) 62%, var(--codex-mp-apex-flash)); }\nhtml[data-codex-ui] .codex-mp-matrix-sq[data-tone=\"1\"] { --codex-mp-flash-light: color-mix(in srgb, var(--codex-mp-apex) 54%, var(--codex-mp-apex-flash)); }\nhtml[data-codex-ui] .codex-mp-matrix-sq[data-tone=\"2\"] { --codex-mp-flash-light: color-mix(in srgb, var(--codex-mp-apex) 46%, var(--codex-mp-apex-flash)); }\nhtml[data-codex-ui] .codex-mp-matrix-sq[data-tone=\"3\"] { --codex-mp-flash-light: color-mix(in srgb, var(--codex-mp-apex) 38%, var(--codex-mp-apex-flash)); }\nhtml[data-codex-ui] .codex-mp-matrix-sq[data-tone=\"4\"] { --codex-mp-flash-light: color-mix(in srgb, var(--codex-mp-apex) 30%, var(--codex-mp-apex-flash)); }\nhtml[data-codex-ui] .codex-mp-matrix-sq[data-tone=\"5\"] { --codex-mp-flash-light: color-mix(in srgb, var(--codex-mp-apex) 22%, var(--codex-mp-apex-flash)); }\nhtml[data-codex-ui] .codex-mp-matrix-sq[data-tone=\"6\"] { --codex-mp-flash-light: color-mix(in srgb, var(--codex-mp-apex) 14%, var(--codex-mp-apex-flash)); }\nhtml[data-codex-ui] .codex-mp-matrix-sq[data-tone=\"7\"] { --codex-mp-flash-light: color-mix(in srgb, var(--codex-mp-apex) 6%, var(--codex-mp-apex-flash)); }\n\n@keyframes codex-mp-flash {\n 0%,\n 17.24% {\n background-color: var(--codex-mp-apex);\n }\n\n 17.25%,\n 50.34% {\n background-color: var(--codex-mp-flash-light);\n }\n\n 100% {\n background-color: var(--codex-mp-apex);\n }\n}\n\nhtml[data-codex-ui] .codex-mp-tick {\n position: absolute;\n top: 50%;\n width: 4px;\n height: 4px;\n margin-top: -2px;\n border-radius: 50%;\n background: color-mix(in srgb, var(--dsw-alias-label-primary) 26%, transparent);\n transform: translateX(-50%);\n pointer-events: none;\n}\n\nhtml[data-codex-ui] .codex-mp-tick::before {\n content: \"\";\n position: absolute;\n inset: -6px;\n}\n\nhtml[data-codex-ui] .codex-mp-thumb-scale {\n position: absolute;\n top: 50%;\n left: calc(8px + (100% - 16px) * var(--codex-mp-pos, 0));\n width: 16px;\n height: 30px;\n margin-top: -15px;\n border-radius: 5px;\n transform: translateX(-50%);\n pointer-events: none;\n will-change: left;\n transition: left var(--codex-mp-thumb-motion-duration) var(--codex-mp-motion-easing);\n}\n\nhtml[data-codex-ui] .codex-mp-thumb {\n position: absolute;\n inset: 0;\n box-sizing: border-box;\n display: block;\n border-radius: 5px;\n background: var(--dsw-static-neutral-bluish-00, #ffffff);\n box-shadow:\n 0 1px 3px rgb(20 20 19 / 28%),\n 0 0 0 1px rgb(20 20 19 / 6%);\n}\n\nhtml[data-codex-ui] body[data-ds-dark-theme] .codex-mp-thumb {\n box-shadow:\n 0 1px 3px rgb(0 0 0 / 55%),\n 0 0 0 1px rgb(0 0 0 / 40%);\n}\n\nhtml[data-codex-ui] .codex-mp-root[data-tier=\"max\"] .codex-mp-range,\nhtml[data-codex-ui] .codex-mp-root[data-tier=\"max\"] .codex-mp-tick {\n opacity: 0;\n}\n\nhtml[data-codex-ui] .codex-mp-root[data-tier=\"max\"] .codex-mp-thumb {\n background: color-mix(in srgb, var(--codex-mp-apex) 22%, #ffffff);\n box-shadow:\n 0 0 10px color-mix(in srgb, var(--codex-mp-apex) 80%, transparent),\n 0 0 0 1px color-mix(in srgb, var(--codex-mp-apex) 35%, transparent);\n}\n\nhtml[data-codex-ui] .codex-mp-effort[data-tier=\"max\"] .codex-mp-effort-value {\n color: var(--codex-mp-apex-ink);\n}\n\nhtml[data-codex-ui] .codex-mp-root[data-keyboard-focused=\"true\"] .codex-mp-thumb-scale {\n outline: 2px solid var(--dsw-focus-ring-color);\n outline-offset: 0;\n}\n\nhtml[data-codex-ui] .codex-mp-root[data-unset] .codex-mp-thumb-scale,\nhtml[data-codex-ui] .codex-mp-root[data-unset] .codex-mp-range {\n visibility: hidden;\n}\n\nhtml[data-codex-ui] .codex-mp-ends {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n padding: 0 9px 2px;\n font-size: 11px;\n line-height: 14px;\n color: var(--dsw-alias-label-caption);\n}\n\nhtml[data-codex-ui] .codex-mp-value-text {\n animation: codex-mp-value-in 0.28s ease;\n}\n\nhtml[data-codex-ui] .codex-mp-effort-ghost {\n position: absolute;\n left: 0;\n top: 0;\n white-space: nowrap;\n pointer-events: none;\n color: inherit;\n animation: codex-mp-value-out 0.28s ease forwards;\n}\n\n@keyframes codex-mp-value-in {\n from {\n filter: blur(4px);\n opacity: 0;\n transform: translateY(5px);\n }\n\n to {\n filter: blur(0);\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n@keyframes codex-mp-value-out {\n from {\n filter: blur(0);\n opacity: 1;\n transform: translateY(0);\n }\n\n to {\n filter: blur(4px);\n opacity: 0;\n transform: translateY(-5px);\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n html[data-codex-ui] .codex-mp-matrix-cell,\nhtml[data-codex-ui] .codex-mp-matrix-sq,\nhtml[data-codex-ui] .codex-mp-value-text,\nhtml[data-codex-ui] .codex-mp-effort-ghost {\n animation: none;\n }\n}\n\nhtml[data-codex-ui] .codex-mp-popover[data-reduced-motion=\"true\"] .codex-mp-matrix-cell,\nhtml[data-codex-ui] .codex-mp-popover[data-reduced-motion=\"true\"] .codex-mp-matrix-sq,\nhtml[data-codex-ui] .codex-mp-popover[data-reduced-motion=\"true\"] .codex-mp-value-text,\nhtml[data-codex-ui] .codex-mp-popover[data-reduced-motion=\"true\"] .codex-mp-effort-ghost {\n animation: none;\n}\n\nhtml[data-codex-ui] [data-slot=\"sidebar\"] > div:not([class*=\"_collapsed\"]) > button {\n box-sizing: border-box;\n height: auto;\n min-height: 36px;\n flex: none;\n background: 0 0;\n border: none;\n border-radius: var(--dsw-radius-s);\n justify-content: flex-start;\n align-items: center;\n gap: 6px;\n\n margin: 0 2px 4px 0;\n padding: 7px 8px;\n font: inherit;\n line-height: 22px;\n text-align: left;\n color: var(--dsw-alias-label-primary);\n cursor: pointer;\n overflow: hidden;\n}\n\nhtml[data-codex-ui] [data-slot=\"sidebar\"] > div:not([class*=\"_collapsed\"]) > button:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\nhtml[data-codex-ui] [data-slot=\"sidebar\"] > div:not([class*=\"_collapsed\"]) > button:focus-visible {\n outline: 2px solid var(--dsw-focus-ring-color);\n outline-offset: -2px;\n}\n\nhtml[data-codex-ui] [data-slot=\"sidebar\"] > div:not([class*=\"_collapsed\"]) > button > svg {\n width: 16px;\n height: 16px;\n flex: none;\n}\n\nhtml[data-codex-ui] [data-slot=\"sidebar\"] > div:not([class*=\"_collapsed\"]) > button > span {\n max-width: none;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\nhtml[data-codex-ui] [data-slot=\"sidebar\"] > div:not([class*=\"_collapsed\"]) > button > span > span:has(> svg) {\n justify-content: flex-start;\n width: auto;\n}\n\nhtml[data-codex-ui] [data-slot=\"sidebar\"] > div:not([class*=\"_collapsed\"]) > button > span > span > svg {\n width: 16px;\n height: 16px;\n flex: none;\n}\n\nhtml[data-codex-ui] [data-slot=\"sidebar\"] > div:not([class*=\"_collapsed\"]) > button > span > span > span {\n max-width: none;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\nhtml[data-codex-ui] [data-slot=\"sidebar\"] > div:not([class*=\"_collapsed\"]) > nav > button {\n gap: 6px;\n margin-left: 0;\n}\n\nhtml[data-codex-ui] div > [data-slot=\"sidebar.workspaces\"] [class$=\"_fade\"] {\n display: none;\n}\n\nhtml[data-codex-ui] div > [data-slot=\"sidebar.workspaces\"] [class$=\"_list\"] {\n -webkit-mask-image:\n linear-gradient(\n to bottom,\n #000 0,\n #000 calc(100% - 40px),\n #000000e0 calc(100% - 24px),\n #00000085 calc(100% - 12px),\n #0000002e calc(100% - 4px),\n #00000000 100%\n ),\n linear-gradient(#000, #000);\n mask-image:\n linear-gradient(\n to bottom,\n #000 0,\n #000 calc(100% - 40px),\n #000000e0 calc(100% - 24px),\n #00000085 calc(100% - 12px),\n #0000002e calc(100% - 4px),\n #00000000 100%\n ),\n linear-gradient(#000, #000);\n -webkit-mask-size: calc(100% - var(--dsh-session-list-edge-inset, 12px)) 100%, var(--dsh-session-list-edge-inset, 12px) 100%;\n mask-size: calc(100% - var(--dsh-session-list-edge-inset, 12px)) 100%, var(--dsh-session-list-edge-inset, 12px) 100%;\n -webkit-mask-position: 0 0, 100% 0;\n mask-position: 0 0, 100% 0;\n -webkit-mask-repeat: no-repeat, no-repeat;\n mask-repeat: no-repeat, no-repeat;\n}\n\nhtml[data-codex-ui][data-windows-titlebar] div:has(> [data-slot=\"main\"]),\nhtml[data-codex-ui][data-windows-titlebar] div:has(> [data-slot=\"sidebar\"]) + div,\nhtml[data-codex-ui][data-platform=\"win32\"]:not([data-windows-titlebar]) div:has(> [data-slot=\"main\"]),\nhtml[data-codex-ui][data-platform=\"win32\"]:not([data-windows-titlebar]) div:has(> [data-slot=\"sidebar\"]) + div {\n position: relative;\n box-shadow:\n 0 0 0 0.5px var(--dsw-alias-border-l2),\n 0 0 13px rgba(13, 13, 13, 0.07);\n}\n\nhtml[data-codex-ui][data-windows-titlebar] body[data-ds-dark-theme] div:has(> [data-slot=\"main\"]),\nhtml[data-codex-ui][data-windows-titlebar] body[data-ds-dark-theme] div:has(> [data-slot=\"sidebar\"]) + div,\nhtml[data-codex-ui][data-platform=\"win32\"]:not([data-windows-titlebar]) body[data-ds-dark-theme] div:has(> [data-slot=\"main\"]),\nhtml[data-codex-ui][data-platform=\"win32\"]:not([data-windows-titlebar]) body[data-ds-dark-theme] div:has(> [data-slot=\"sidebar\"]) + div {\n box-shadow:\n 0 0 0 0.5px var(--dsw-alias-border-l2),\n 0 0 24px rgba(0, 0, 0, 0.5);\n}\n\nhtml[data-codex-ui][data-windows-titlebar] [data-sidebar-right-panel=\"push\"][data-sidebar-right-open],\nhtml[data-codex-ui][data-platform=\"win32\"]:not([data-windows-titlebar]) [data-sidebar-right-panel=\"push\"][data-sidebar-right-open] {\n box-shadow:\n 0 0 0 0.5px var(--dsw-alias-border-l1),\n 0 -12px 24px -12px var(--dsw-codex-ambient);\n}\n\nhtml[data-codex-ui] [data-sidebar-right-panel=\"push\"][data-sidebar-right-open] [data-dockkit-pane][data-dockkit-column=\"0\"] {\n border-left: 0;\n}\n\nhtml[data-codex-ui] [data-side=\"rightbar\"]::before {\n content: \"\";\n position: absolute;\n top: 0;\n bottom: 0;\n left: 50%;\n width: 2px;\n translate: -50% 0;\n border-radius: 1px;\n background: linear-gradient(to bottom, rgba(13, 13, 13, 0.09), rgba(13, 13, 13, 0.27) 50%, rgba(13, 13, 13, 0.09));\n opacity: 0;\n scale: 1 0.35;\n transform-origin: center;\n transition: opacity var(--dsw-motion-base) var(--dsw-ease), scale var(--dsw-motion-slow) var(--dsw-ease);\n pointer-events: none;\n}\n\nhtml[data-codex-ui] [data-side=\"rightbar\"]:hover::before {\n opacity: 1;\n scale: 1 1;\n}\n\nhtml[data-codex-ui] body[data-ds-dark-theme] [data-side=\"rightbar\"]::before {\n background: linear-gradient(to bottom, rgba(236, 236, 236, 0.08), rgba(236, 236, 236, 0.24) 50%, rgba(236, 236, 236, 0.08));\n}\n\nhtml[data-codex-ui][data-platform=\"win32\"]:not([data-windows-titlebar]) div:has(> [data-slot=\"sidebar\"]) {\n border-right-color: var(--dsw-alias-border-l1);\n}\n\nhtml[data-codex-ui] [data-conversation-scroll] {\n --dsh-composer-card-max-width: calc(var(--dsh-chat-content-width) + 32px);\n --dsh-composer-side-clearance: 24px;\n\n --dcu-composer-bg: var(--dsw-composer-surface);\n\n --dcu-composer-shadow: 0 0 0 0.5px rgba(13, 13, 13, 0.1), 0 2px 12px 0 rgba(0, 0, 0, 0.09);\n}\n\nhtml[data-codex-ui] body[data-ds-dark-theme] [data-conversation-scroll] {\n --dcu-composer-bg: color-mix(in srgb, var(--dsw-alias-label-primary) 5%, var(--dsw-composer-surface));\n --dcu-composer-shadow: inset 0 0 1px 0 #fff3;\n}\n\nhtml[data-codex-ui] [data-conversation-scroll] [data-composer-card] {\n padding-top: 12px;\n gap: 4px;\n border: 0;\n border-radius: var(--dsw-radius-card);\n background: var(--dcu-composer-bg);\n box-shadow: var(--dcu-composer-shadow);\n}\n\n@supports (corner-shape: superellipse(1.5)) {\n html[data-codex-ui] [data-conversation-scroll] [data-composer-card] {\n corner-shape: superellipse(1.5);\n }\n}\n\n@media (forced-colors: active) {\n html[data-codex-ui] [data-conversation-scroll] [data-composer-card] {\n outline: 1px solid CanvasText;\n }\n}\n\nhtml[data-codex-ui] [data-conversation-scroll] [data-composer-card] [data-input-scroll] {\n margin-right: 0;\n}\n\nhtml[data-codex-ui] [data-conversation-scroll] [data-input-scroll] [data-lexical-editor=true] {\n min-height: 44px;\n padding: 0 12px;\n}\n\nhtml[data-codex-ui] [data-conversation-scroll] [data-composer-placeholder] {\n inset: 0 12px auto;\n}\n\nhtml[data-codex-ui] [data-conversation-scroll] [data-composer-card] > [data-input-scroll] + div {\n padding: 0 8px 8px;\n gap: 5px;\n}\n\nhtml[data-codex-ui] [data-conversation-scroll] [data-composer-card] > [data-input-scroll] + div > div {\n gap: 4px;\n}\n\nhtml[data-codex-ui] [data-conversation-scroll] [data-composer-card] > [data-input-scroll] + div > div > div {\n gap: 4px;\n}\n\nhtml[data-codex-ui] [data-conversation-scroll] [data-composer-card] > [data-input-scroll] + div button:not([role]),\nhtml[data-codex-ui] [data-conversation-scroll] [data-composer-card] > [data-input-scroll] + div select:not([role]) {\n min-height: 28px;\n height: 28px;\n}\n\nhtml[data-codex-ui] [data-conversation-scroll] [data-composer-card] > [data-input-scroll] + div button[class$=_primary] {\n width: 28px;\n transform: none;\n background: var(--dsw-alias-label-primary);\n color: var(--dsw-alias-bg-base);\n}\n\nhtml[data-codex-ui] [data-conversation-scroll] [data-composer-card] > [data-input-scroll] + div button[class$=_primary]:hover:not(:disabled) {\n background: var(--dsw-alias-label-secondary);\n}\n\nhtml[data-codex-ui] [data-conversation-scroll] [data-composer-card] > [data-input-scroll] + div button:focus-visible,\nhtml[data-codex-ui] [data-conversation-scroll] [data-composer-card] > [data-input-scroll] + div select:focus-visible {\n outline: 2px solid var(--dsw-focus-ring-color);\n outline-offset: 2px;\n}\n\nhtml[data-codex-ui] [class*=\"_heroWorkspaceRow\"] button {\n min-height: 28px;\n border-radius: var(--dsw-radius-pill);\n font-size: 13px;\n line-height: 20px;\n}\n\nhtml[data-codex-ui] [class*=\"_heroWorkspaceRow\"] button:hover,\nhtml[data-codex-ui] [class*=\"_heroWorkspaceRow\"] button[aria-expanded=true] {\n background: color-mix(in srgb, var(--dsw-alias-label-primary) 8%, transparent);\n}\n\nhtml[data-codex-ui] [data-conversation-scroll] [data-trigger-menu] {\n box-sizing: border-box;\n left: 0;\n right: 0;\n width: auto;\n min-width: 0;\n max-width: none;\n padding: 5px;\n border-radius: var(--dsw-radius-menu);\n background: var(--dsw-codex-suggest-fill);\n box-shadow: var(--dsw-codex-suggest-shadow);\n}\n\nhtml[data-codex-ui] [data-conversation-scroll] [data-trigger-menu] > [role=listbox] {\n box-sizing: border-box;\n width: 100%;\n min-width: 0;\n align-self: stretch;\n scrollbar-width: thin;\n}\n\nhtml[data-codex-ui] [data-conversation-scroll] [data-trigger-menu] [role=option] {\n box-sizing: border-box;\n width: 100%;\n min-width: 0;\n min-height: 28px;\n padding: 4px 9px;\n gap: 8px;\n border-radius: calc(var(--dsw-radius-menu) - 5px);\n font-size: 13px;\n line-height: 20px;\n}\n\nhtml[data-codex-ui] [data-conversation-scroll] [data-trigger-menu] [role=option][aria-selected=true] {\n background: color-mix(in srgb, var(--dsw-alias-label-primary) 10%, transparent);\n}\n\nhtml[data-codex-ui] [data-phase=hero] [data-conversation-scroll][class] {\n --dsh-composer-side-clearance: 16px;\n justify-content: flex-start;\n scrollbar-gutter: stable both-edges;\n}\n\nhtml[data-codex-ui] [data-phase=hero] [data-composer-seat] {\n flex: 1 0 auto;\n min-height: 100%;\n}\n\nhtml[data-codex-ui] [data-phase=hero] [data-composer-seat] > :has(> * > [class*=\"_composerHero\"]) {\n display: flex;\n flex: 1;\n flex-direction: column;\n}\n\nhtml[data-codex-ui] [data-phase=hero] [class*=\"_composerHero\"] {\n box-sizing: border-box;\n flex: 1;\n width: 100%;\n max-width: none;\n min-width: 0;\n margin-inline: auto;\n gap: 0;\n padding-bottom: 32px;\n}\n\nhtml[data-codex-ui] [data-phase=hero] [class*=\"_heroWorkspaceRow\"] {\n box-sizing: border-box;\n flex: none;\n width: min(calc(var(--dsh-composer-card-max-width) + 2 * var(--dsh-composer-side-clearance) - 56px), calc(100% - 56px));\n align-self: center;\n justify-content: flex-start;\n flex-wrap: wrap;\n gap: 8px;\n min-height: 48px;\n margin: 0 28px -10px;\n padding: 6px 12px 16px;\n border-radius: var(--dsw-radius-card) var(--dsw-radius-card) 0 0;\n background: color-mix(in srgb, var(--dsw-alias-label-primary) 4%, var(--dsw-alias-bg-base));\n}\n\nhtml[data-codex-ui] [data-phase=hero] [class*=\"_heroWorkspaceRow\"] > [class$=\"_workspace\"] {\n min-width: 0;\n max-width: 100%;\n font-weight: 400;\n}\n\nhtml[data-codex-ui] .cx-form {\n display: flex;\n flex-direction: column;\n margin: 0;\n}\n\nhtml[data-codex-ui] .cx-row {\n display: grid;\n grid-template-columns: minmax(0, 1fr) auto;\n align-items: center;\n column-gap: 16px;\n padding: 10px 0;\n border-bottom: 0.5px solid var(--dsw-alias-border-l1);\n}\n\nhtml[data-codex-ui] .cx-row:last-child {\n border-bottom: none;\n}\n\nhtml[data-codex-ui] .cx-row__text {\n min-width: 0;\n}\n\nhtml[data-codex-ui] .cx-row__label {\n display: flex;\n align-items: center;\n gap: 8px;\n color: var(--dsw-alias-label-primary);\n font-size: 13px;\n line-height: 20px;\n}\n\nhtml[data-codex-ui] .cx-row__desc {\n margin-top: 2px;\n color: var(--dsw-alias-label-tertiary);\n font-size: 11px;\n line-height: 16px;\n}\n\nhtml[data-codex-ui] .cx-row__control {\n display: flex;\n align-items: center;\n gap: 8px;\n justify-self: end;\n}\n\nhtml[data-codex-ui] .cx-swatch {\n width: 24px;\n height: 24px;\n padding: 0;\n border: 0.5px solid var(--dsw-alias-border-l2);\n border-radius: var(--dsw-radius-s);\n background: none;\n cursor: pointer;\n}\n\nhtml[data-codex-ui] .cx-swatch::-webkit-color-swatch-wrapper {\n padding: 2px;\n}\n\nhtml[data-codex-ui] .cx-swatch::-webkit-color-swatch {\n border: none;\n border-radius: calc(var(--dsw-radius-s) - 2px);\n}\n\nhtml[data-codex-ui] .cx-hex {\n width: 96px;\n height: 24px;\n padding: 0 8px;\n border: 0.5px solid var(--dsw-alias-border-l2);\n border-radius: var(--dsw-radius-s);\n background: var(--dsw-alias-bg-base);\n color: var(--dsw-alias-label-primary);\n font-family: var(--ds-font-family-code);\n font-size: 11px;\n letter-spacing: 0.04em;\n}\n\nhtml[data-codex-ui] .cx-hex:focus-visible {\n outline: 2px solid var(--dsw-focus-ring-color);\n outline-offset: 1px;\n}\n\nhtml[data-codex-ui] .cx-text {\n width: 220px;\n height: 24px;\n padding: 0 8px;\n border: 0.5px solid var(--dsw-alias-border-l2);\n border-radius: var(--dsw-radius-s);\n background: var(--dsw-alias-bg-base);\n color: var(--dsw-alias-label-primary);\n font-size: 12px;\n}\n\nhtml[data-codex-ui] .cx-text:focus-visible {\n outline: 2px solid var(--dsw-focus-ring-color);\n outline-offset: 1px;\n}\n\nhtml[data-codex-ui] .cx-range {\n width: 160px;\n accent-color: var(--dsw-alias-link);\n}\n\nhtml[data-codex-ui] .cx-range__value {\n min-width: 24px;\n color: var(--dsw-alias-label-secondary);\n font-family: var(--ds-font-family-code);\n font-size: 11px;\n text-align: right;\n}\n\nhtml[data-codex-ui] .cx-note {\n margin: 0 0 8px;\n color: var(--dsw-alias-label-tertiary);\n font-size: 11px;\n line-height: 16px;\n}\n\nhtml[data-codex-ui] .cx-error {\n margin: 8px 0 0;\n color: var(--dsw-alias-state-error-primary);\n font-size: 11px;\n line-height: 16px;\n}\n\nhtml[data-codex-ui] {\r\n\r\n --cx-sm-sidebar-w: 236px;\r\n --cx-sm-row-h: 46px;\r\n --cx-sm-panel-w: 760px;\r\n --cx-sm-gutter: 24px;\r\n --cx-sm-radius-card: var(--dsw-radius-m, 12px);\r\n\r\n --cx-sm-radius-field: 10px;\r\n --cx-sm-radius-pill: 999px;\r\n\r\n}\r\n\r\n@media (max-width: 900px) {\r\n html[data-codex-ui] {\r\n --cx-sm-sidebar-w: 196px;\r\n --cx-sm-gutter: 14px;\r\n }\r\n}\r\n\r\n\r\n\r\n\r\nhtml[data-codex-ui] div[data-cx-sm-panel] {\r\n --cx-sm-surface-backdrop: var(--dsw-alias-bg-sidebar);\r\n\r\n --cx-sm-card-edge: var(--dsw-alias-bg-sidebar);\r\n\r\n --dsw-alias-bg-layer-2: var(--dsw-alias-bg-layer-1);\r\n --dsw-alias-bg-layer-3: var(--dsw-alias-bg-layer-1);\r\n}\r\n\r\n\r\nhtml[data-codex-ui] body[data-ds-dark-theme] div[data-cx-sm-panel] {\r\n --cx-sm-card-edge: var(--dsw-alias-border-l1);\r\n}\r\n\r\nhtml[data-codex-ui] div[data-cx-sm-panel] {\r\n position: fixed;\r\n inset: 0;\r\n box-sizing: border-box;\r\n width: auto;\r\n height: auto;\r\n max-width: none;\r\n max-height: none;\r\n border-radius: 0;\r\n box-shadow: none;\r\n overflow: hidden;\r\n\r\n background: var(--cx-sm-surface-backdrop);\r\n}\r\n\r\n\r\nhtml[data-codex-ui][data-windows-titlebar] div[data-cx-sm-panel] {\r\n padding-top: var(--dsh-windows-titlebar-height, 40px);\r\n}\r\n\r\n\r\nhtml[data-codex-ui][data-windows-titlebar] div[data-cx-sm-panel] button,\nhtml[data-codex-ui][data-windows-titlebar] div[data-cx-sm-panel] input,\nhtml[data-codex-ui][data-windows-titlebar] div[data-cx-sm-panel] a {\r\n -webkit-app-region: no-drag;\r\n}\r\n\r\n\r\n\r\nhtml[data-codex-ui] div[data-cx-sm-panel] > nav {\r\n position: relative;\r\n box-sizing: border-box;\r\n flex: 0 0 var(--cx-sm-sidebar-w);\r\n width: var(--cx-sm-sidebar-w);\r\n min-height: 0;\r\n padding: 12px 12px 16px;\r\n gap: 8px;\r\n background: none;\r\n overflow: hidden;\r\n}\r\n\r\n\r\nhtml[data-codex-ui] div[data-cx-sm-panel] > nav > div:not([data-codex-ui-injected]):not(:has(> button)) {\r\n position: absolute;\r\n width: 1px;\r\n height: 1px;\r\n margin: -1px;\r\n padding: 0;\r\n overflow: hidden;\r\n clip-path: inset(50%);\r\n white-space: nowrap;\r\n}\r\n\r\n\r\nhtml[data-codex-ui] div[data-cx-sm-panel] > nav > div:has(> button),\nhtml[data-codex-ui] div[data-cx-sm-panel] > nav > div:last-child {\r\n box-sizing: border-box;\r\n min-height: 0;\r\n flex: 1 1 auto;\r\n gap: 2px;\r\n}\r\n\r\n\r\nhtml[data-codex-ui] div[data-cx-sm-panel] > nav > div:has(> button) > button {\r\n box-sizing: border-box;\r\n width: 100%;\r\n min-height: 32px;\r\n padding: 6px 10px;\r\n gap: 9px;\r\n border: 0;\r\n border-radius: var(--dsw-radius-s, 8px);\r\n background: none;\r\n color: var(--dsw-alias-label-secondary);\r\n font-size: 14px;\r\n line-height: 20px;\r\n text-align: left;\r\n}\r\n\r\n\r\nhtml[data-codex-ui] div[data-cx-sm-panel] > nav > div:has(> button) > button:hover {\r\n background: var(--dsw-alias-interactive-bg-hover);\r\n color: var(--dsw-alias-label-primary);\r\n}\r\n\r\n\r\nhtml[data-codex-ui] div[data-cx-sm-panel] > nav > div:has(> button) > button[aria-current=\"true\"] {\r\n background: var(--dsw-alias-interactive-bg-active);\r\n color: var(--dsw-alias-label-primary);\r\n font-weight: 500;\r\n}\r\n\r\nhtml[data-codex-ui] div[data-cx-sm-panel] > nav > div:has(> button) > button[aria-current=\"true\"]:hover {\r\n background: var(--dsw-alias-interactive-bg-active);\r\n}\r\n\r\nhtml[data-codex-ui] div[data-cx-sm-panel] > nav > div:has(> button) > button:focus-visible {\r\n outline-offset: -2px;\r\n}\r\n\r\n\r\nhtml[data-codex-ui] div[data-cx-sm-panel] > nav > div:has(> button) > button svg {\r\n width: 16px;\r\n height: 16px;\r\n flex: 0 0 auto;\r\n stroke-width: 1.4;\r\n opacity: 0.72;\r\n}\r\n\r\nhtml[data-codex-ui] div[data-cx-sm-panel] > nav > div:has(> button) > button:hover svg,\nhtml[data-codex-ui] div[data-cx-sm-panel] > nav > div:has(> button) > button[aria-current=\"true\"] svg {\r\n opacity: 1;\r\n}\r\n\r\n\r\nhtml[data-codex-ui] .cx-sm-group {\r\n margin: 12px 0 4px;\r\n padding: 0 10px;\r\n color: var(--dsw-alias-label-caption);\r\n font-size: 12px;\r\n line-height: 18px;\r\n font-weight: 500;\r\n letter-spacing: 0.01em;\r\n user-select: none;\r\n}\r\n\r\nhtml[data-codex-ui] :lang(zh) .cx-sm-group {\r\n letter-spacing: 0;\r\n}\r\n\r\n\r\nhtml[data-codex-ui] .cx-sm-search + .cx-sm-group {\r\n margin-top: 4px;\r\n}\r\n\r\n\r\nhtml[data-codex-ui] .cx-sm-back {\r\n display: flex;\r\n align-items: center;\r\n gap: 6px;\r\n box-sizing: border-box;\r\n width: fit-content;\r\n min-height: 28px;\r\n padding: 2px 6px 2px 4px;\r\n border-radius: var(--dsw-radius-s, 8px);\r\n color: var(--dsw-alias-label-secondary);\r\n font-size: 13px;\r\n line-height: 20px;\r\n cursor: pointer;\r\n user-select: none;\r\n}\r\n\r\nhtml[data-codex-ui] .cx-sm-back:hover {\r\n background: var(--dsw-alias-interactive-bg-hover);\r\n color: var(--dsw-alias-label-primary);\r\n}\r\n\r\nhtml[data-codex-ui] .cx-sm-back svg {\r\n width: 14px;\r\n height: 14px;\r\n flex: 0 0 auto;\r\n stroke-width: 1.6;\r\n opacity: 0.8;\r\n}\r\n\r\n\r\n\r\nhtml[data-codex-ui] .cx-sm-search {\r\n display: flex;\r\n align-items: center;\r\n gap: 8px;\r\n box-sizing: border-box;\r\n width: 100%;\r\n height: 32px;\r\n\r\n padding: 0 14px;\r\n border: 0;\r\n border-radius: var(--cx-sm-radius-pill);\r\n background: var(--dsw-alias-bg-layer-1);\r\n color: var(--dsw-alias-label-tertiary);\r\n}\r\n\r\nhtml[data-codex-ui] .cx-sm-search:focus-within {\r\n box-shadow: inset 0 0 0 1px var(--dsw-alias-border-l3);\r\n}\r\n\r\nhtml[data-codex-ui] .cx-sm-search svg {\r\n width: 14px;\r\n height: 14px;\r\n flex: 0 0 auto;\r\n stroke-width: 1.6;\r\n opacity: 0.7;\r\n}\r\n\r\nhtml[data-codex-ui] .cx-sm-search input {\r\n box-sizing: border-box;\r\n flex: 1 1 auto;\r\n min-width: 0;\r\n height: 100%;\r\n padding: 0;\r\n border: 0;\r\n outline: 0;\r\n background: none;\r\n color: var(--dsw-alias-label-primary);\r\n font: inherit;\r\n font-size: 13px;\r\n line-height: 20px;\r\n}\r\n\r\nhtml[data-codex-ui] .cx-sm-search input::placeholder {\r\n color: var(--dsw-alias-label-caption);\r\n}\r\n\r\n\r\n\r\n\r\nhtml[data-codex-ui] div[data-cx-sm-panel] > div:last-child {\r\n box-sizing: border-box;\r\n flex: 1 1 auto;\r\n min-width: 0;\r\n min-height: 0;\r\n\r\n background: var(--dsw-alias-bg-base);\r\n\r\n overflow: hidden;\r\n}\r\n\r\n\r\nhtml[data-codex-ui] div[data-cx-sm-panel] > div:last-child > div:first-child {\r\n box-sizing: border-box;\r\n flex: 0 0 auto;\r\n align-items: center;\r\n min-height: 52px;\r\n padding: 12px var(--cx-sm-gutter) 8px;\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nhtml[data-codex-ui] div[data-cx-sm-panel] > div:last-child > div:last-child {\r\n box-sizing: border-box;\r\n flex: 1 1 auto;\r\n min-height: 0;\r\n padding: 2px var(--cx-sm-gutter) 0;\r\n}\r\n\r\n\r\nhtml[data-codex-ui] div[data-cx-sm-panel] > div:last-child > div:last-child [data-slot=\"settings.section\"] > * {\r\n box-sizing: border-box;\r\n width: 100%;\r\n max-width: var(--cx-sm-panel-w);\r\n margin-left: auto;\r\n margin-right: auto;\r\n\r\n padding-bottom: 40px;\r\n}\r\n\r\n\r\nhtml[data-codex-ui] div[data-cx-sm-panel] [data-slot=\"settings.action\"] button {\r\n box-sizing: border-box;\r\n height: 32px;\r\n padding: 0 12px;\r\n\r\n white-space: nowrap;\r\n border: 0.5px solid var(--dsw-alias-border-l2);\r\n border-radius: var(--dsw-radius-s, 8px);\r\n background: var(--dsw-alias-button-elevated-fill);\r\n color: var(--dsw-alias-label-primary);\r\n font-size: 13px;\r\n line-height: 1;\r\n cursor: pointer;\r\n}\r\n\r\nhtml[data-codex-ui] div[data-cx-sm-panel] [data-slot=\"settings.action\"] button:hover {\r\n background: var(--dsw-alias-interactive-bg-hover);\r\n border-color: var(--dsw-alias-border-l3);\r\n}\r\n\r\n\r\nhtml[data-codex-ui] div[data-cx-sm-panel] button:has([data-slot=\"settings.close\"]) {\r\n display: none;\r\n}\r\n\r\n\r\nhtml[data-codex-ui] .cx-sm-pagehead {\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n gap: 16px;\r\n box-sizing: border-box;\r\n width: 100%;\r\n min-height: 36px;\r\n margin: 0 0 12px;\r\n}\r\n\r\nhtml[data-codex-ui] .cx-sm-title,\nhtml[data-codex-ui] .cx-sm-pagehead > h1,\nhtml[data-codex-ui] .cx-sm-pagehead > h2 {\r\n margin: 0;\r\n padding: 0;\r\n color: var(--dsw-alias-label-primary);\r\n\r\n font-size: 20px;\r\n line-height: 26px;\r\n font-weight: 600;\r\n letter-spacing: -0.01em;\r\n}\r\n\r\nhtml[data-codex-ui] :lang(zh) .cx-sm-title,\nhtml[data-codex-ui] :lang(zh) .cx-sm-pagehead > h1,\nhtml[data-codex-ui] :lang(zh) .cx-sm-pagehead > h2 {\r\n letter-spacing: 0;\r\n}\r\n\r\n\r\n\r\n\r\n\r\nhtml[data-codex-ui] div[data-cx-sm-panel] [data-slot=\"settings.section\"] > * {\r\n box-sizing: border-box;\r\n width: 100%;\r\n gap: 0;\r\n padding-top: 2px;\r\n}\r\n\r\n\r\n\r\nhtml[data-codex-ui] div[data-cx-sm-panel] [data-slot=\"settings.general.item\"] > * {\r\n box-sizing: border-box;\r\n min-height: var(--cx-sm-row-h);\r\n padding: 8px 16px;\r\n border-style: solid;\r\n border-color: var(--cx-sm-card-edge);\r\n border-width: 0.5px 0;\r\n\r\n background: var(--dsw-alias-bg-layer-1);\r\n transition: background-color var(--dsw-motion-fast, 150ms) var(--dsw-ease, ease);\r\n}\r\n\r\n\r\nhtml[data-codex-ui] div[data-cx-sm-panel] [data-slot=\"settings.section\"] > :first-child > [data-slot=\"settings.general.item\"] > *:first-child {\r\n border-top-width: 0.5px;\r\n border-left-width: 0.5px;\r\n border-right-width: 0.5px;\r\n border-radius: var(--cx-sm-radius-card) var(--cx-sm-radius-card) 0 0;\r\n}\r\n\r\n\r\nhtml[data-codex-ui] div[data-cx-sm-panel] [data-slot=\"settings.section\"] > :first-child > [data-slot=\"settings.general.item\"] > *:last-child {\r\n border-bottom-width: 0.5px;\r\n border-left-width: 0.5px;\r\n border-right-width: 0.5px;\r\n border-radius: 0 0 var(--cx-sm-radius-card) var(--cx-sm-radius-card);\r\n}\r\n\r\n\r\n html[data-codex-ui] ._card { background: var(--dsw-alias-settings-card-fill) }\r\n html[data-codex-ui] ._cardActive { background: var(--dsw-alias-bg-module-platform) }\r\n html[data-codex-ui] —— 它们**吃令牌**,不是硬编码灰。该令牌由宿主主题包 dsh-client-ui-theme 在\r\n **body** 上声明为 var(--dsw-alias-settings-card-fill: var(--dsw-alias-bg-layer-2));\r\n 本机 app.asar 全文扫描里,该令牌的**声明**只有这一处,另 4 处都是 background 消费点。\r\n 皮肤把它同名重定义成 layer-1(skin.css:html[data-codex-ui],\nhtml[data-codex-ui] body),\r\n 特异性与顺序都压过宿主的 body 声明 —— 白卡 / 深色 #212121 因此**自动生效**。\r\n\r\n 旧注释怎么错的(一并记下,免得后人再被同一个坑骗):\r\n 旧文写「#f3f3f3 硬编码、换色试验证明不走任何令牌」。那个换色试验是在 §4.3 规则**还在**的\r\n 前提下做的 —— §4.3 以特异性 (0,3,3) 压过宿主的 (0,1,0),无论令牌被改成什么,卡都会保持\r\n §4.3 写死的 layer-1,于是「0 个元素跟随」是这条规则生效的**必然结果**,推不出「卡不读令牌」。\r\n 定案靠的是宿主源码里那两条 background 声明,不是那个试验。\r\n (二审结论见 docs/recon/second-pass-review.md 的 M1/M2。)\r\n\r\n **删除理由**(三条,任一条都够):\r\n ① 同值重复:皮肤已把该令牌定成 layer-1,§1 的 layer-2/3→layer-1 重定向同样落上去,\r\n 这条规则写的是**同一个值**,三层路径同值,将来改一处根本无法判断谁在生效;\r\n ② 覆盖面无意义:它靠特异性 (0,3,3) 压过宿主 .rowCard/.card 的 (0,1,0),\r\n 而值相同 —— 赢了也没有任何视觉差异;\r\n ③ **会漂**:[class$=\"_card\"] 匹配的是「整条 class 属性以该后缀结尾」,\r\n 覆盖面随宿主状态类的书写顺序漂移。实测 Agent 预设的选中卡是\r\n class=\"rtSEdW_card rtSEdW_cardActive\"(以 _cardActive 结尾)→ 今天**不命中**、\r\n 靠宿主自己的 .cardActive {background: var(--dsw-alias-bg-module-platform)} html[data-codex-ui] 保住选中底色,\r\n 纯属侥幸;一旦宿主把状态类挪到前面,选中卡会被压成 layer-1,**选中态视觉当场丢失,\r\n 而没有任何断言会红**。删除即消除这条会随宿主改版静默劣化的路径。\r\n\r\n 删除后的着色机制**唯一**:--dsw-alias-settings-card-fill(skin.css 定义)\r\n → 未选中卡 = layer-1(浅 #ffffff / 深 #212121)。选中卡保持宿主自己的\r\n bg-module-platform(浅 #f9f9f9)—— 与未选中卡不同色,选中态仍可区分。\r\n 这条路径由 scripts/settings-modal-verify.mjs 的两条集成断言把守\r\n (未选中卡 == var(--dsw-alias-bg-layer-1) 的计算值;选中卡背景 ≠ 未选中卡背景)。 */\r\n\r\n\r\nhtml[data-codex-ui] div[data-cx-sm-panel] [data-slot=\"settings.section\"] > :first-child > [data-slot=\"settings.general.item\"] > *:not(:first-child):not(:last-child) {\r\n border-radius: 0;\r\n}\r\n\r\n\r\nhtml[data-codex-ui] div[data-cx-sm-panel] [data-slot=\"settings.general.item\"] > *:hover {\r\n background: var(--dsw-alias-interactive-bg-hover);\r\n}\r\n\r\n\r\nhtml[data-codex-ui] div[data-cx-sm-panel] [data-slot=\"settings.general.item\"] > * > :first-child > div:not(:first-child) {\r\n color: var(--dsw-alias-label-caption);\r\n}\r\n\r\n\r\n\r\n\r\nhtml[data-codex-ui] [data-cx-sm-hidden],\nhtml[data-codex-ui] .cx-sm-hidden {\r\n display: none !important;\r\n}\r\n\r\nhtml[data-codex-ui] .cx-sm-empty {\r\n box-sizing: border-box;\r\n padding: 32px 8px;\r\n color: var(--dsw-alias-label-tertiary);\r\n font-size: 13px;\r\n line-height: 20px;\r\n text-align: center;\r\n}\r\n\r\n\r\n\r\nhtml[data-codex-ui] [data-codex-ui-injected=\"settings-modal\"],\nhtml[data-codex-ui] [data-codex-ui-injected=\"settings-modal\"] * {\r\n box-sizing: border-box;\r\n}\n"; +const THEME_CSS = "html[data-codex-ui],\nhtml[data-codex-ui] body {\n color-scheme: light;\n\n background-color: #ffffff;\n\n --dsw-alias-bg-base: #ffffff;\n\n --dsw-alias-bg-sidebar: #f6f6f6;\n --dsw-alias-bg-layer-1: #ffffff;\n --dsw-alias-bg-layer-2: #f1f1ef;\n --dsw-alias-bg-layer-3: #e5e5e5;\n --dsw-alias-bg-overlay: rgba(255, 255, 255, 0.88);\n --dsw-alias-bg-module-platform: #f9f9f9;\n --dsw-alias-bg-multi-select: #e5e5e5;\n --dsw-alias-bg-skeleton: rgba(13, 13, 13, 0.05);\n\n --dsw-alias-border-l1: rgba(13, 13, 13, 0.07);\n --dsw-alias-border-l2: rgba(13, 13, 13, 0.12);\n --dsw-alias-border-l3: rgba(13, 13, 13, 0.18);\n --dsw-alias-border-l4: rgba(13, 13, 13, 0.24);\n --dsw-alias-border-l2-darkmode-thin: rgba(13, 13, 13, 0.09);\n\n --dsw-alias-label-primary: #1a1c1f;\n --dsw-alias-label-primary-dimmed: #5d5d5d;\n --dsw-alias-label-primary-inverted: #ffffff;\n --dsw-alias-label-primary-foreground: #ffffff;\n --dsw-alias-label-primary-bluish: #0d0d0d;\n --dsw-alias-label-secondary: #5d5d5d;\n --dsw-alias-label-tertiary: #767676;\n --dsw-alias-label-caption: #767676;\n --dsw-alias-label-dimmed: #c9c9c9;\n\n --dsw-alias-brand-primary: #0d0d0d;\n --dsw-alias-brand-primary-invert: #ffffff;\n --dsw-alias-brand-text: #ffffff;\n --dsw-alias-brand-primary-new-colorprimary-new-color: #0d0d0d;\n --dsw-alias-link: #339cff;\n\n --dsw-alias-button-primary-fill: #0d0d0d;\n --dsw-alias-button-primary-hover: #2a2a2a;\n --dsw-alias-button-primary-dimmed: #e5e5e5;\n --dsw-alias-button-contrast-fill: #0d0d0d;\n --dsw-alias-button-elevated-fill: #ffffff;\n --dsw-alias-button-floating-fill: #ffffff;\n --dsw-alias-button-floating-hover: #f1f1ef;\n --dsw-alias-button-ghost-active-fill: #e5e5e5;\n --dsw-alias-button-ghost-active-hover: #dcdcdc;\n --dsw-alias-button-ghost-active-border: #8f8f8f;\n --dsw-alias-button-info-fill: #0d0d0d;\n --dsw-alias-button-info-hover: #2a2a2a;\n --dsw-alias-button-tool-bar-fill: rgba(13, 13, 13, 0.28);\n --dsw-alias-button-tool-bar-fill-invisible: rgba(13, 13, 13, 0.18);\n --dsw-alias-button-tool-bar-hover: rgba(13, 13, 13, 0.36);\n\n --dsw-alias-interactive-bg-hover: rgba(13, 13, 13, 0.04);\n --dsw-codex-hover-fill: #f2f2f3;\n --dsw-codex-focus: #339cff;\n\n --dsw-focus-ring-color: var(--dsw-codex-focus);\n\n --dsw-codex-border: rgba(13, 13, 13, 0.1);\n --dsw-codex-border-strong: rgba(13, 13, 13, 0.15);\n --dsw-alias-interactive-bg-active: rgba(13, 13, 13, 0.08);\n --dsw-alias-interactive-bg-hover-solid: #f1f1ef;\n --dsw-alias-interactive-bg-hover-accent: rgba(13, 13, 13, 0.06);\n --dsw-alias-interactive-bg-hover-danger: rgba(209, 36, 47, 0.08);\n\n --dsw-alias-markdown-code-block: #f1f1ef;\n --dsw-alias-markdown-code-block-banner: #e5e5e5;\n --dsw-alias-markdown-inline-code: #f1f1ef;\n --dsw-alias-markdown-code-segment-selected: #ffffff;\n --dsw-alias-markdown-code-segment-unselected: #f1f1ef;\n --dsw-alias-markdown-citation: #f1f1ef;\n --dsw-alias-markdown-placeholder: #e5e5e5;\n --dsw-alias-markdown-tag: #f1f1ef;\n\n --dsw-alias-state-success-primary: #1a7f37;\n --dsw-alias-state-success-secondary: #2e9e4c;\n --dsw-alias-state-success-tertiary: rgba(26, 127, 55, 0.08);\n --dsw-alias-state-error-primary: #d1242f;\n --dsw-alias-state-error-secondary: #e5484d;\n --dsw-alias-state-error-tertiary: rgba(209, 36, 47, 0.08);\n --dsw-alias-state-warn-primary: #8f5f00;\n --dsw-alias-state-warn-secondary: #bb8009;\n --dsw-alias-state-warn-tertiary: rgba(143, 95, 0, 0.08);\n --dsw-alias-state-warn-label: #8f5f00;\n --dsw-alias-state-business-primary: #0d0d0d;\n --dsw-alias-state-business-tertiary: rgba(13, 13, 13, 0.08);\n --dsw-alias-state-idle-primary: #767676;\n\n --dsw-alias-code-diff-added: rgba(26, 127, 55, 0.1);\n --dsw-alias-code-diff-deleted: rgba(209, 36, 47, 0.1);\n --dsw-alias-file-diff-added-bg: #e6f4e7;\n --dsw-alias-file-diff-added-gutter: #edf7ed;\n --dsw-alias-file-diff-added-marker: #1a7f37;\n --dsw-alias-file-diff-deleted-bg: #fce6e2;\n --dsw-alias-file-diff-deleted-gutter: #fdece9;\n --dsw-alias-file-diff-deleted-marker: #d1242f;\n\n --dsw-alias-bg-mask-drop: rgba(255, 255, 255, 0.7);\n --dsw-alias-toast-bg: #1e1e1e;\n --dsw-alias-tooltip-bg: #1e1e1e;\n --dsw-alias-tooltip-fg: #ffffff;\n --dsw-alias-hovercard-bg: #ffffff;\n\n --dsw-alias-scrollbar-bg-l1: rgba(118, 118, 118, 0.3);\n --dsw-alias-scrollbar-bg-l2: rgba(118, 118, 118, 0.5);\n --dsw-alias-scrollbar-hover-l1: rgba(13, 13, 13, 0.35);\n --dsw-alias-scrollbar-hover-l2: rgba(13, 13, 13, 0.5);\n\n --dsw-specific-sidebar-fill: #f6f6f6;\n --dsw-specific-sidebar-nav-item-hover: #f0f0f0;\n --dsw-specific-sidebar-nav-item-active: #e9e9e9;\n --dsw-specific-sidebar-nav-item-active-accent: rgba(13, 13, 13, 0.1);\n --dsw-specific-input-major: #ffffff;\n --dsw-composer-surface: #ffffff;\n --dsw-specific-login-input: #f9f9f9;\n --dsw-specific-menu: rgba(255, 255, 255, 0.88);\n --dsw-specific-selector: #f1f1ef;\n --dsw-specific-bubble: #f1f1ef;\n --dsw-specific-bubble-highlight: #e5e5e5;\n --dsw-specific-tip: #f1f1ef;\n\n --dsw-shadow-lv1: 0 1px 2px rgba(13, 13, 13, 0.06);\n --dsw-shadow-lv2: 0 2px 8px rgba(13, 13, 13, 0.08);\n --dsw-shadow-lv3: 0 8px 24px rgba(13, 13, 13, 0.1);\n --dsw-linear-gradient-think: linear-gradient(180deg, #ffffff 20.19%, rgba(255, 255, 255, 0) 100%);\n --dsw-linear-think-select: linear-gradient(180deg, #f1f1ef 20.19%, rgba(241, 241, 239, 0) 100%);\n\n --dsw-codex-ambient: rgba(13, 13, 13, 0.05);\n --dsw-codex-menu-shadow: 0 8px 32px rgba(13, 13, 13, 0.13), 0 0 0 1px rgba(13, 13, 13, 0.04);\n --dsw-codex-suggest-shadow: 0 8px 32px #0002, 0 0 0 1px #0000000a;\n --dsw-codex-suggest-fill: #fff;\n}\n\nhtml[data-codex-ui-switching] *,\nhtml[data-codex-ui-switching] *::before,\nhtml[data-codex-ui-switching] *::after {\n transition: none !important;\n}\n\nhtml[data-codex-ui]:has(body[data-ds-dark-theme]) {\n background-color: #111111;\n}\n\nhtml[data-codex-ui] body[data-ds-dark-theme] {\n color-scheme: dark;\n background-color: #111111;\n\n --dsw-alias-bg-base: #111111;\n --dsw-alias-bg-sidebar: #0f0f0f;\n --dsw-alias-bg-layer-1: #212121;\n --dsw-alias-bg-layer-2: #282828;\n --dsw-alias-bg-layer-3: #303030;\n --dsw-alias-bg-overlay: rgba(24, 24, 24, 0.88);\n --dsw-alias-bg-module-platform: #1f1f1f;\n --dsw-alias-bg-multi-select: #303030;\n --dsw-alias-bg-skeleton: rgba(255, 255, 255, 0.07);\n\n --dsw-alias-border-l1: rgba(255, 255, 255, 0.08);\n --dsw-alias-border-l2: rgba(255, 255, 255, 0.14);\n --dsw-alias-border-l3: rgba(255, 255, 255, 0.2);\n --dsw-alias-border-l4: rgba(255, 255, 255, 0.26);\n --dsw-alias-border-l2-darkmode-thin: rgba(255, 255, 255, 0.1);\n\n --dsw-alias-label-primary: #ffffff;\n --dsw-alias-label-primary-dimmed: #b4b4b4;\n --dsw-alias-label-primary-inverted: #0d0d0d;\n --dsw-alias-label-primary-foreground: #0d0d0d;\n --dsw-alias-label-primary-bluish: #ececec;\n --dsw-alias-label-secondary: #b4b4b4;\n --dsw-alias-label-tertiary: #949494;\n --dsw-alias-label-caption: #949494;\n --dsw-alias-label-dimmed: #4a4a4a;\n\n --dsw-alias-brand-primary: #ffffff;\n --dsw-alias-brand-primary-invert: #0d0d0d;\n --dsw-alias-brand-text: #0d0d0d;\n --dsw-alias-brand-primary-new-colorprimary-new-color: #ffffff;\n --dsw-alias-link: #0169cc;\n\n --dsw-alias-button-primary-fill: #ffffff;\n --dsw-alias-button-primary-hover: #d9d9d9;\n --dsw-alias-button-primary-dimmed: #282828;\n --dsw-alias-button-contrast-fill: #ececec;\n --dsw-alias-button-elevated-fill: #212121;\n --dsw-alias-button-floating-fill: #1f1f1f;\n --dsw-alias-button-floating-hover: #282828;\n --dsw-alias-button-ghost-active-fill: #303030;\n --dsw-alias-button-ghost-active-hover: #383838;\n --dsw-alias-button-ghost-active-border: #7e7e7e;\n --dsw-alias-button-info-fill: #ffffff;\n --dsw-alias-button-info-hover: #d9d9d9;\n --dsw-alias-button-tool-bar-fill: rgba(255, 255, 255, 0.22);\n --dsw-alias-button-tool-bar-fill-invisible: rgba(255, 255, 255, 0.16);\n --dsw-alias-button-tool-bar-hover: rgba(255, 255, 255, 0.28);\n\n --dsw-alias-interactive-bg-hover: rgba(255, 255, 255, 0.06);\n --dsw-codex-hover-fill: rgba(255, 255, 255, 0.08);\n --dsw-codex-focus: rgba(51, 156, 255, 0.7);\n --dsw-codex-border: rgba(255, 255, 255, 0.12);\n --dsw-codex-border-strong: rgba(255, 255, 255, 0.2);\n --dsw-alias-interactive-bg-active: rgba(255, 255, 255, 0.1);\n --dsw-alias-interactive-bg-hover-solid: #282828;\n --dsw-alias-interactive-bg-hover-accent: rgba(255, 255, 255, 0.08);\n --dsw-alias-interactive-bg-hover-danger: rgba(248, 81, 73, 0.12);\n\n --dsw-alias-markdown-code-block: #1f1f1f;\n --dsw-alias-markdown-code-block-banner: #141414;\n --dsw-alias-markdown-inline-code: #282828;\n --dsw-alias-markdown-code-segment-selected: #303030;\n --dsw-alias-markdown-code-segment-unselected: #1f1f1f;\n --dsw-alias-markdown-citation: #212121;\n --dsw-alias-markdown-placeholder: #282828;\n --dsw-alias-markdown-tag: #282828;\n\n --dsw-alias-state-success-primary: #3fb950;\n --dsw-alias-state-success-secondary: #56d364;\n --dsw-alias-state-success-tertiary: rgba(63, 185, 80, 0.16);\n --dsw-alias-state-error-primary: #ff7b72;\n --dsw-alias-state-error-secondary: #ff9492;\n --dsw-alias-state-error-tertiary: rgba(255, 123, 114, 0.16);\n --dsw-alias-state-warn-primary: #d29922;\n --dsw-alias-state-warn-secondary: #e3b341;\n --dsw-alias-state-warn-tertiary: rgba(210, 153, 34, 0.16);\n --dsw-alias-state-warn-label: #d29922;\n --dsw-alias-state-business-primary: #ececec;\n --dsw-alias-state-business-tertiary: rgba(255, 255, 255, 0.12);\n --dsw-alias-state-idle-primary: #7e7e7e;\n\n --dsw-alias-code-diff-added: rgba(63, 185, 80, 0.14);\n --dsw-alias-code-diff-deleted: rgba(248, 81, 73, 0.14);\n --dsw-alias-file-diff-added-bg: #1f3124;\n --dsw-alias-file-diff-added-gutter: #132016;\n --dsw-alias-file-diff-added-marker: #41c977;\n --dsw-alias-file-diff-deleted-bg: #3c1f1b;\n --dsw-alias-file-diff-deleted-gutter: #28130e;\n --dsw-alias-file-diff-deleted-marker: #fa423e;\n\n --dsw-alias-bg-mask-drop: rgba(39, 39, 48, 0.7);\n --dsw-alias-toast-bg: #282828;\n --dsw-alias-tooltip-bg: #212121;\n --dsw-alias-tooltip-fg: #ececec;\n --dsw-alias-hovercard-bg: #212121;\n\n --dsw-alias-scrollbar-bg-l1: rgba(160, 160, 160, 0.3);\n --dsw-alias-scrollbar-bg-l2: rgba(160, 160, 160, 0.5);\n --dsw-alias-scrollbar-hover-l1: rgba(255, 255, 255, 0.35);\n --dsw-alias-scrollbar-hover-l2: rgba(255, 255, 255, 0.5);\n\n --dsw-specific-sidebar-fill: #0f0f0f;\n --dsw-specific-sidebar-nav-item-hover: #171717;\n --dsw-specific-sidebar-nav-item-active: #1f1f1f;\n --dsw-specific-sidebar-nav-item-active-accent: rgba(255, 255, 255, 0.14);\n --dsw-specific-input-major: #212121;\n --dsw-composer-surface: #181818;\n --dsw-specific-login-input: #1f1f1f;\n --dsw-specific-menu: rgba(24, 24, 24, 0.88);\n --dsw-specific-selector: #282828;\n --dsw-specific-bubble: #212121;\n --dsw-specific-bubble-highlight: #282828;\n --dsw-specific-tip: #1f1f1f;\n\n --dsw-shadow-lv1: 0 1px 2px rgba(0, 0, 0, 0.4);\n --dsw-shadow-lv2: 0 2px 8px rgba(0, 0, 0, 0.5);\n --dsw-shadow-lv3: 0 8px 24px rgba(0, 0, 0, 0.6);\n --dsw-linear-gradient-think: linear-gradient(180deg, #212121 20.19%, rgba(33, 33, 33, 0) 100%);\n --dsw-linear-think-select: linear-gradient(180deg, #1f1f1f 20.19%, rgba(40, 40, 40, 0) 100%);\n\n --dsw-codex-ambient: rgba(0, 0, 0, 0.5);\n --dsw-codex-menu-shadow: 0 8px 32px rgba(0, 0, 0, 0.5), 0 0 0 1px rgba(236, 236, 236, 0.05);\n --dsw-codex-suggest-shadow: 0 8px 32px #0003, 0 0 0 1px #ffffff08;\n --dsw-codex-suggest-fill: #292929;\n}\n\nhtml[data-codex-ui],\nhtml[data-codex-ui] body {\n --dsw-space-1: 4px;\n --dsw-space-2: 8px;\n --dsw-space-3: 12px;\n --dsw-space-4: 16px;\n --dsw-space-5: 20px;\n --dsw-space-6: 24px;\n --dsw-space-8: 32px;\n\n --dsw-radius-xs: 4px;\n --dsw-radius-s: 8px;\n --dsw-radius-m: 12px;\n --dsw-radius-l: 16px;\n --dsw-radius-xl: 20px;\n --dsw-radius-2xl: 25px;\n --dsw-radius-menu: 18px;\n\n --dsw-radius-card: var(--dsw-radius-xl);\n --dsw-radius-pill: 999px;\n\n --dsw-content-max-width: 768px;\n\n --dsw-text-2xs: 11px;\n --dsw-text-xs: 12.5px;\n --dsw-text-sm: 13px;\n --dsw-text-base: 14px;\n --dsw-text-lg: 16px;\n --dsw-text-xl: 20px;\n --dsw-text-2xl: 28px;\n --dsw-leading-2xs: 1.3;\n --dsw-leading-xs: 1.4;\n --dsw-leading-base: 1.65;\n --dsw-leading-lg: 1.4;\n --dsw-leading-xl: 1.35;\n --dsw-leading-2xl: 1.25;\n\n --dsw-font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", \"PingFang SC\",\n \"Hiragino Sans GB\", \"Microsoft YaHei\", \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n --ds-font-family-code: \"SF Mono\", \"JetBrains Mono\", \"Fira Code\", Consolas,\n \"Liberation Mono\", Menlo, Courier, \"PingFang SC\", \"Microsoft YaHei\";\n\n --dsw-font-meta: var(--ds-font-family-code);\n --dsw-meta-size: 11px;\n --dsw-meta-weight: 500;\n --dsw-meta-tracking: 0.08em;\n --dsw-meta-tracking-pill: 0.04em;\n\n --dsw-motion-fast: 150ms;\n --dsw-motion-base: 200ms;\n --dsw-motion-slow: 300ms;\n --dsw-ease: cubic-bezier(0.4, 0, 0.2, 1);\n\n --dsh-composer-accessory-radius: var(--dsw-radius-l);\n --dsh-composer-accessory-bg: var(--dsw-alias-bg-layer-2);\n --dsh-composer-accessory-color: var(--dsw-alias-label-secondary);\n --dsh-composer-accessory-border: 0.5px solid var(--dsw-alias-border-l1);\n --dsh-composer-accessory-shadow: none;\n --dsh-composer-accessory-blur: 0px;\n}\n\n@supports (corner-shape: superellipse(1.5)) {\n html[data-codex-ui],\nhtml[data-codex-ui] body {\n --dsw-radius-card: var(--dsw-radius-2xl);\n }\n}\n\nhtml[data-codex-ui] body,\nhtml[data-codex-ui] body * {\n --dsw-elevation-stroke-color: rgba(13, 13, 13, 0.08);\n --dsw-elevation-stroke: 0 0 0 0.5px var(--dsw-elevation-stroke-color);\n --dsw-elevation-panel: var(--dsw-elevation-stroke);\n\n --dsw-elevation-prominent: var(--dsw-elevation-stroke), 0 3px 7.5px #0000000a, 0 0 20px #0000000d;\n}\n\nhtml[data-codex-ui] body[data-ds-dark-theme],\nhtml[data-codex-ui] body[data-ds-dark-theme] * {\n --dsw-elevation-stroke-color: rgba(255, 255, 255, 0.09);\n}\n\nhtml[data-codex-ui],\nhtml[data-codex-ui] body {\n --dsw-font-markdown-h1: 600 calc(21px + var(--dsh-content-font-delta)) / calc(30px + var(--dsh-content-font-delta)) var(--dsw-font-family);\n --dsw-font-markdown-h1-font-weight: 600;\n --dsw-font-markdown-h2: 600 calc(19px + var(--dsh-content-font-delta)) / calc(28px + var(--dsh-content-font-delta)) var(--dsw-font-family);\n --dsw-font-markdown-h2-font-weight: 600;\n --dsw-font-markdown-h3: 600 calc(18px + var(--dsh-content-font-delta)) / calc(26px + var(--dsh-content-font-delta)) var(--dsw-font-family);\n --dsw-font-markdown-h3-font-weight: 600;\n}\n\nhtml[data-codex-ui] :focus-visible {\n outline: 2px solid var(--dsw-focus-ring-color);\n outline-offset: 2px;\n}\n\nhtml[data-codex-ui] a {\n color: var(--dsw-alias-link);\n text-decoration: none;\n text-underline-offset: 2px;\n text-decoration-thickness: 1px;\n}\n\nhtml[data-codex-ui] a:hover,\nhtml[data-codex-ui] a:focus-visible {\n text-decoration: underline;\n}\n\nhtml[data-codex-ui] button,\nhtml[data-codex-ui] a,\nhtml[data-codex-ui] summary,\nhtml[data-codex-ui] [role=\"button\"],\nhtml[data-codex-ui] [role=\"tab\"],\nhtml[data-codex-ui] [role=\"menuitem\"],\nhtml[data-codex-ui] [role=\"option\"] {\n cursor: pointer;\n}\n\nhtml[data-codex-ui] button,\nhtml[data-codex-ui] a,\nhtml[data-codex-ui] summary,\nhtml[data-codex-ui] [role=\"button\"],\nhtml[data-codex-ui] [role=\"tab\"],\nhtml[data-codex-ui] [role=\"menuitem\"] {\n transition:\n background-color var(--dsw-motion-fast) var(--dsw-ease),\n border-color var(--dsw-motion-fast) var(--dsw-ease),\n color var(--dsw-motion-fast) var(--dsw-ease),\n opacity var(--dsw-motion-fast) var(--dsw-ease),\n box-shadow var(--dsw-motion-fast) var(--dsw-ease);\n}\n\nhtml[data-codex-ui] button:disabled,\nhtml[data-codex-ui] button[aria-disabled=\"true\"],\nhtml[data-codex-ui] [aria-disabled=\"true\"] {\n cursor: not-allowed;\n opacity: 0.45;\n}\n\nhtml[data-codex-ui] [data-slot=\"web-ui.plugin.item\"] > *,\nhtml[data-codex-ui] [data-dsh-part=\"card\"],\nhtml[data-codex-ui] [data-dsh-part=\"column\"],\nhtml[data-codex-ui] [data-dsh-part=\"status\"],\nhtml[data-codex-ui] [data-dsh-part=\"today-card\"],\nhtml[data-codex-ui] [data-dsh-part=\"balance-card\"],\nhtml[data-codex-ui] [data-dsh-part=\"trend-card\"],\nhtml[data-codex-ui] [data-dsh-part=\"plan-card\"],\nhtml[data-codex-ui] [data-dsh-part=\"bank-card\"] {\n background: var(--dsw-alias-bg-layer-1);\n border: 0.5px solid var(--dsw-alias-border-l1);\n border-radius: var(--dsw-radius-m);\n box-shadow: var(--dsw-elevation-panel);\n padding: var(--dsw-space-4);\n}\n\nhtml[data-codex-ui] [role=\"dialog\"],\nhtml[data-codex-ui] [data-dsh-surface=\"overlay\"] [data-dsh-part=\"panel\"] {\n border-radius: var(--dsw-radius-l);\n}\n\nhtml[data-codex-ui] [data-dsh-part=\"composer-chip\"],\nhtml[data-codex-ui] [data-dsh-part=\"chip\"],\nhtml[data-codex-ui] [data-dsh-part=\"ref\"],\nhtml[data-codex-ui] [data-dsh-part=\"tag-chip\"],\nhtml[data-codex-ui] [data-dsh-part=\"tag-badge\"] {\n font-family: var(--dsw-font-meta);\n font-size: var(--dsw-meta-size);\n font-weight: var(--dsw-meta-weight);\n letter-spacing: var(--dsw-meta-tracking-pill);\n border-radius: var(--dsw-radius-pill);\n}\n\nhtml[data-codex-ui] [data-dsh-part=\"tag-chip\"][data-tag-tone=\"0\"],\nhtml[data-codex-ui] [data-dsh-part=\"tag-badge\"][data-tag-tone=\"0\"] {\n background: var(--dsw-alias-bg-layer-2);\n color: var(--dsw-alias-label-secondary);\n}\n\nhtml[data-codex-ui] [data-dsh-part=\"tag-chip\"][data-tag-tone=\"1\"],\nhtml[data-codex-ui] [data-dsh-part=\"tag-badge\"][data-tag-tone=\"1\"] {\n background: var(--dsw-alias-state-success-tertiary);\n color: var(--dsw-alias-state-success-primary);\n}\n\nhtml[data-codex-ui] [data-dsh-part=\"tag-chip\"][data-tag-tone=\"2\"],\nhtml[data-codex-ui] [data-dsh-part=\"tag-badge\"][data-tag-tone=\"2\"] {\n background: var(--dsw-alias-state-warn-tertiary);\n color: var(--dsw-alias-state-warn-primary);\n}\n\nhtml[data-codex-ui] [data-dsh-part=\"tag-chip\"][data-tag-tone=\"3\"],\nhtml[data-codex-ui] [data-dsh-part=\"tag-badge\"][data-tag-tone=\"3\"] {\n background: var(--dsw-alias-state-error-tertiary);\n color: var(--dsw-alias-state-error-primary);\n}\n\nhtml[data-codex-ui] [data-dsh-part=\"tag-chip\"][data-tag-tone=\"4\"],\nhtml[data-codex-ui] [data-dsh-part=\"tag-badge\"][data-tag-tone=\"4\"] {\n background: var(--dsw-alias-state-business-tertiary);\n color: var(--dsw-alias-label-primary);\n}\n\nhtml[data-codex-ui] [data-dsh-part=\"tag-chip\"][data-tag-tone=\"5\"],\nhtml[data-codex-ui] [data-dsh-part=\"tag-badge\"][data-tag-tone=\"5\"] {\n background: var(--dsw-alias-bg-layer-3);\n color: var(--dsw-alias-label-tertiary);\n}\n\nhtml[data-codex-ui] [data-dsh-surface=\"sidebar\"],\nhtml[data-codex-ui] [data-slot=\"sidebar.workspaces\"] {\n background-color: var(--dsw-alias-bg-sidebar);\n}\n\nhtml[data-codex-ui] [data-dsh-part=\"sidebar-entry\"],\nhtml[data-codex-ui] [data-dsh-surface=\"sidebar\"] [role=\"button\"] {\n border-radius: var(--dsw-radius-s);\n}\n\nhtml[data-codex-ui] [data-dsh-surface=\"composer\"] [data-dsh-part=\"composer-input\"] {\n border-radius: var(--dsw-radius-l);\n}\n\nhtml[data-codex-ui] [data-dsh-part=\"composer-input\"] {\n font-family: var(--dsw-font-family);\n line-height: var(--dsw-leading-base);\n}\n\nhtml[data-codex-ui] [data-dsh-part=\"turn-tail\"],\nhtml[data-codex-ui] [data-dsh-part=\"queue-dock\"],\nhtml[data-codex-ui] [data-dsh-part=\"usage-chart\"],\nhtml[data-codex-ui] [data-dsh-part=\"voucher-preview\"] {\n font-family: var(--dsw-font-meta);\n}\n\nhtml[data-codex-ui] [data-dsh-part=\"composer-chip\"] {\n text-transform: uppercase;\n letter-spacing: var(--dsw-meta-tracking);\n}\n\nhtml[data-codex-ui] :lang(zh) [data-dsh-part=\"composer-chip\"],\nhtml[data-codex-ui] :lang(zh) [data-dsh-part=\"chip\"],\nhtml[data-codex-ui] :lang(zh) [data-dsh-part=\"ref\"],\nhtml[data-codex-ui] :lang(zh) [data-dsh-part=\"tag-chip\"],\nhtml[data-codex-ui] :lang(zh) [data-dsh-part=\"tag-badge\"] {\n letter-spacing: 0;\n text-transform: none;\n}\n\n@media (prefers-reduced-motion: reduce) {\n html[data-codex-ui] *,\nhtml[data-codex-ui] *::before,\nhtml[data-codex-ui] *::after {\n animation-duration: 0.01ms !important;\n animation-iteration-count: 1 !important;\n transition-duration: 0.01ms !important;\n scroll-behavior: auto !important;\n }\n}\n\nhtml[data-codex-ui] [data-slot=\"conversation.input.model\"] button:focus-visible {\n outline: 1px solid var(--dsw-focus-ring-color);\n outline-offset: 1px;\n box-shadow: none;\n}\n\nhtml[data-codex-ui] body > div[role=\"menu\"][aria-busy] {\n\n --dsw-menu-surface-fill: var(--dsw-alias-bg-layer-1);\n --dsw-menu-backdrop-filter: none;\n\n background: var(--dsw-alias-bg-layer-1);\n padding: 5px;\n border-radius: var(--dsw-radius-menu);\n box-shadow: var(--dsw-codex-menu-shadow);\n color: var(--dsw-alias-label-primary);\n}\n\nhtml[data-codex-ui] body > div[role=\"menu\"][aria-busy] button[role=\"menuitem\"],\nhtml[data-codex-ui] body > div[role=\"menu\"][aria-busy] button[role=\"menuitemradio\"] {\n box-sizing: border-box;\n min-height: 28px;\n padding: 4px 9px;\n gap: 8px;\n border: 0;\n border-radius: calc(var(--dsw-radius-menu) - 5px);\n background: none;\n color: inherit;\n font-size: 13px;\n line-height: 20px;\n text-align: left;\n}\n\nhtml[data-codex-ui] body > div[role=\"menu\"][aria-busy] button[role=\"menuitem\"]:hover,\nhtml[data-codex-ui] body > div[role=\"menu\"][aria-busy] button[role=\"menuitemradio\"]:hover:not(:disabled),\nhtml[data-codex-ui] body > div[role=\"menu\"][aria-busy] button[role=\"menuitemradio\"][aria-checked=\"true\"] {\n background: var(--dsw-alias-interactive-bg-active);\n}\n\nhtml[data-codex-ui] body > div[role=\"menu\"][aria-busy] button[role=\"menuitem\"]:focus-visible,\nhtml[data-codex-ui] body > div[role=\"menu\"][aria-busy] button[role=\"menuitemradio\"]:focus-visible {\n outline: 1px solid var(--dsw-focus-ring-color);\n outline-offset: -1px;\n background: var(--dsw-alias-interactive-bg-active);\n}\n\nhtml[data-codex-ui] body > div[role=\"menu\"][aria-busy] button[role=\"menuitemradio\"]:disabled {\n opacity: 1;\n}\n\nhtml[data-codex-ui] body > div[role=\"menu\"][aria-busy=\"true\"] button[role=\"menuitemradio\"][aria-checked=\"true\"] > span:last-child {\n position: relative;\n}\n\nhtml[data-codex-ui] body > div[role=\"menu\"][aria-busy=\"true\"] button[role=\"menuitemradio\"][aria-checked=\"true\"] > span:last-child > svg {\n visibility: hidden;\n}\n\nhtml[data-codex-ui] body > div[role=\"menu\"][aria-busy=\"true\"] button[role=\"menuitemradio\"][aria-checked=\"true\"] > span:last-child::after {\n content: \"\";\n position: absolute;\n inset: 0;\n box-sizing: border-box;\n width: 12px;\n height: 12px;\n margin: auto;\n border: 1.5px solid var(--dsw-alias-border-l3);\n border-top-color: var(--dsw-alias-label-primary);\n border-radius: 50%;\n animation: codex-ui-spin 1s linear infinite;\n}\n\nhtml[data-codex-ui] body > div[role=\"menu\"][aria-busy=\"true\"] button[role=\"menuitemradio\"]:disabled {\n cursor: progress;\n}\n\n@keyframes codex-ui-spin {\n to {\n transform: rotate(1turn);\n }\n}\n\nhtml[data-codex-ui] [data-slot=\"conversation.session.header\"] > [data-conversation-tabs] {\n display: none;\n}\n\nhtml[data-codex-ui] header:has([data-conversation-header-leading]):has([data-conversation-tabs]) {\n min-height: 0;\n padding-bottom: 10px;\n}\n\nhtml[data-codex-ui] [data-dsh-part=\"new-session\"] {\n border: 0;\n background: transparent;\n box-shadow: none;\n border-radius: var(--dsw-radius-s);\n justify-content: flex-start;\n color: var(--dsw-alias-label-primary);\n}\n\nhtml[data-codex-ui] [data-dsh-part=\"new-session\"]:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\nhtml[data-codex-ui] [data-slot=\"conversation.composer.dock\"] {\n display: none;\n}\n\nhtml[data-codex-ui] [data-conversation-header-corner] {\n margin-left: 0;\n margin-right: 0;\n}\n\nhtml[data-codex-ui] [data-sidebar-right-expand] svg {\n transform: scaleX(-1);\n}\n\nhtml[data-codex-ui] [data-animating] {\n transition: grid-template-columns 500ms cubic-bezier(.16, 1, .3, 1);\n}\n\nhtml[data-codex-ui] [data-animating] [data-side] {\n transition: left 500ms cubic-bezier(.16, 1, .3, 1);\n}\n\nhtml[data-codex-ui] [data-dragging],\nhtml[data-codex-ui] [data-rightbar-instant],\nhtml[data-codex-ui] [data-rightbar-fullscreen],\nhtml[data-codex-ui] [data-dragging] [data-side],\nhtml[data-codex-ui] [data-rightbar-instant] [data-side],\nhtml[data-codex-ui] [data-rightbar-fullscreen] [data-side] {\n transition: none;\n}\n\n@media (prefers-reduced-motion: reduce) {\n html[data-codex-ui] [data-animating],\nhtml[data-codex-ui] [data-animating] [data-side] {\n transition: none;\n }\n}\n\nhtml[data-codex-ui] [data-sidebar-right-guide] > span[aria-hidden=\"true\"] {\n display: none;\n}\n\nhtml[data-codex-ui] [data-sidebar-right-guide]::after {\n display: none;\n}\n\nhtml[data-codex-ui] [data-sidebar-right-guide-entry] {\n box-sizing: border-box;\n width: 380px;\n max-width: 100%;\n min-height: 52px;\n gap: 14px;\n padding: 0 20px;\n border: 0;\n border-radius: var(--dsw-radius-m);\n background: transparent;\n color: var(--dsw-alias-label-primary);\n font-size: 14px;\n}\n\nhtml[data-codex-ui] [data-sidebar-right-guide-entry]:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\nhtml[data-codex-ui] [data-sidebar-right-guide-entry] > span:first-child {\n width: 20px;\n height: 20px;\n}\n\nhtml[data-codex-ui] [data-sidebar-right-guide-entry] > span:first-child svg {\n width: 20px;\n height: 20px;\n}\n\nhtml[data-codex-ui] [data-sidebar-right-guide-entry] > span:nth-child(2) {\n gap: 0;\n}\n\nhtml[data-codex-ui] [data-sidebar-right-guide-entry] > span:nth-child(2) > span:nth-child(2) {\n display: none;\n}\n\nhtml[data-codex-ui] [data-sidebar-right-guide-entry=\"terminal\"] > span:nth-child(2) {\n width: 20px;\n height: 20px;\n}\n\nhtml[data-codex-ui] [data-sidebar-right-guide-entry=\"terminal\"] > span:nth-child(2) svg {\n width: 20px;\n height: 20px;\n}\n\nhtml[data-codex-ui] [data-sidebar-right-guide-entry=\"terminal\"] > span:nth-child(3) > span:nth-child(2) {\n display: none;\n}\n\nhtml[data-codex-ui] [data-sidebar-right-guide-entry] > span:has(kbd) {\n display: inline-flex;\n flex: none;\n align-items: center;\n gap: 3px;\n height: 24px;\n padding: 0 10px;\n border-radius: var(--dsw-radius-m);\n background: var(--dsw-alias-bg-layer-2);\n color: var(--dsw-alias-label-tertiary);\n font-size: 12px;\n line-height: 16px;\n white-space: nowrap;\n}\n\nhtml[data-codex-ui] [data-sidebar-right-guide-entry] kbd {\n display: inline;\n min-width: 0;\n padding: 0;\n border: 0;\n border-radius: 0;\n background: transparent;\n color: inherit;\n font: inherit;\n}\n\nhtml[data-codex-ui] [data-sidebar-right-toggle] {\n background: var(--dsw-alias-bg-layer-2);\n border-radius: var(--dsw-radius-m);\n}\n\nhtml[data-codex-ui] [data-composer-card] button[class$=\"_add\"],\nhtml[data-codex-ui] [data-composer-card] button[class$=\"_trigger\"] {\n transition: background-color var(--dsw-motion-fast) var(--dsw-ease);\n border-radius: var(--dsw-radius-pill);\n}\n\nhtml[data-codex-ui] [data-composer-card] button[class$=\"_add\"] {\n background: transparent;\n}\n\nhtml[data-codex-ui] [data-composer-card] button[class$=\"_add\"]:hover,\nhtml[data-codex-ui] [data-composer-card] button[class$=\"_add\"][aria-expanded=\"true\"],\nhtml[data-codex-ui] [data-composer-card] button[class$=\"_trigger\"]:hover,\nhtml[data-codex-ui] [data-composer-card] button[class$=\"_trigger\"][aria-expanded=\"true\"] {\n background: var(--dsw-codex-hover-fill);\n}\n\nhtml[data-codex-ui] [data-slot=\"conversation.input.model\"][data-codex-ui-seated] > :not(.codex-mp-trigger) {\n display: none;\n}\n\nhtml[data-codex-ui] .codex-mp-trigger {\n box-sizing: border-box;\n display: inline-flex;\n align-items: center;\n gap: 4px;\n height: 28px;\n min-width: 0;\n max-width: min(360px, 45cqw);\n padding: 0 4px 0 8px;\n border: 0;\n border-radius: var(--dsw-radius-pill);\n background: transparent;\n color: var(--dsw-alias-label-secondary);\n font-family: inherit;\n font-size: 13px;\n font-weight: 400;\n line-height: 20px;\n cursor: pointer;\n transition: background-color var(--dsw-motion-fast) var(--dsw-ease);\n}\n\nhtml[data-codex-ui] .codex-mp-trigger:hover,\nhtml[data-codex-ui] .codex-mp-trigger[aria-expanded=\"true\"] {\n background: var(--dsw-codex-hover-fill);\n}\n\nhtml[data-codex-ui] .codex-mp-trigger-model {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\nhtml[data-codex-ui] .codex-mp-effort-layers {\n display: grid;\n grid-template-columns: max-content;\n flex-shrink: 1000;\n width: max-content;\n min-width: 0;\n overflow: hidden;\n color: var(--dsw-alias-label-caption);\n}\n\nhtml[data-codex-ui] .codex-mp-effort-layers[hidden] {\n display: none;\n}\n\nhtml[data-codex-ui] .codex-mp-effort-text {\n grid-area: 1 / 1;\n justify-self: center;\n opacity: 0;\n filter: blur(4px);\n white-space: nowrap;\n will-change: opacity, filter;\n transition:\n opacity var(--dsw-motion-slow) var(--dsw-ease),\n filter var(--dsw-motion-slow) var(--dsw-ease);\n}\n\nhtml[data-codex-ui] .codex-mp-effort-text[data-active=\"true\"] {\n opacity: 1;\n filter: none;\n}\n\nhtml[data-codex-ui] .codex-mp-trigger-chevron {\n display: inline-flex;\n flex: none;\n color: var(--dsw-alias-label-caption);\n transition: transform 120ms var(--dsw-ease);\n}\n\nhtml[data-codex-ui] .codex-mp-trigger[aria-expanded=\"true\"] .codex-mp-trigger-chevron {\n transform: rotate(180deg);\n}\n\nhtml[data-codex-ui] .codex-mp-popover {\n position: fixed;\n z-index: 1100;\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n width: calc(4px * 63.5);\n max-width: calc(100vw - 24px);\n max-height: min(360px, 100vh - 96px);\n padding: 5px;\n border-radius: var(--dsw-radius-menu);\n background: var(--dsw-alias-bg-layer-1);\n color: var(--dsw-alias-label-primary);\n box-shadow: var(--dsw-codex-menu-shadow);\n font-size: 13px;\n line-height: 20px;\n transform-origin: bottom right;\n animation: codex-mp-enter 0.32s cubic-bezier(0.23, 1, 0.32, 1) 30ms both;\n}\n\nhtml[data-codex-ui] .codex-mp-popover[hidden] {\n display: none;\n}\n\nhtml[data-codex-ui] .codex-mp-popover[data-reduced-motion=\"true\"] {\n animation: none;\n}\n\n@keyframes codex-mp-enter {\n from {\n opacity: 0;\n transform: scale(0.98);\n }\n\n to {\n opacity: 1;\n transform: none;\n }\n}\n\nhtml[data-codex-ui] .codex-mp-error {\n flex: none;\n margin-bottom: 3px;\n padding: 6px 9px;\n border-radius: calc(var(--dsw-radius-menu) - 5px);\n background: var(--dsw-alias-interactive-bg-hover-danger);\n color: var(--dsw-alias-state-error-primary);\n font-size: 11px;\n line-height: 16px;\n}\n\nhtml[data-codex-ui] .codex-mp-error[hidden] {\n display: none;\n}\n\nhtml[data-codex-ui] .codex-mp-list {\n min-height: 0;\n overflow-y: auto;\n scrollbar-width: thin;\n}\n\nhtml[data-codex-ui] .codex-mp-status {\n padding: 8px 9px;\n color: var(--dsw-alias-label-tertiary);\n font-size: 12px;\n line-height: 18px;\n}\n\nhtml[data-codex-ui] .codex-mp-retry {\n padding: 0;\n border: 0;\n background: none;\n color: inherit;\n font: inherit;\n font-weight: 600;\n cursor: pointer;\n}\n\nhtml[data-codex-ui] .codex-mp-group {\n padding: 4px 9px 2px;\n color: var(--dsw-alias-label-tertiary);\n font-size: 11px;\n font-weight: 500;\n line-height: 16px;\n}\n\nhtml[data-codex-ui] .codex-mp-group:not(:first-child) {\n margin-top: 3px;\n}\n\nhtml[data-codex-ui] .codex-mp-row {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n gap: 8px;\n width: 100%;\n min-height: 28px;\n padding: 4px 9px;\n border: 0;\n border-radius: calc(var(--dsw-radius-menu) - 5px);\n background: none;\n color: inherit;\n font-family: inherit;\n font-size: 13px;\n line-height: 20px;\n text-align: left;\n cursor: pointer;\n}\n\nhtml[data-codex-ui] .codex-mp-row:hover,\nhtml[data-codex-ui] .codex-mp-row[aria-checked=\"true\"] {\n background: var(--dsw-alias-interactive-bg-active);\n}\n\nhtml[data-codex-ui] .codex-mp-row:focus-visible {\n outline: 1px solid var(--dsw-focus-ring-color);\n outline-offset: -1px;\n background: var(--dsw-alias-interactive-bg-active);\n}\n\nhtml[data-codex-ui] .codex-mp-row[aria-busy=\"true\"] {\n cursor: progress;\n}\n\nhtml[data-codex-ui] .codex-mp-row-copy {\n display: flex;\n flex: 1;\n flex-direction: column;\n min-width: 0;\n}\n\nhtml[data-codex-ui] .codex-mp-row-name {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-weight: 500;\n}\n\nhtml[data-codex-ui] .codex-mp-row-desc {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n color: var(--dsw-alias-label-tertiary);\n font-size: 12px;\n line-height: 18px;\n}\n\nhtml[data-codex-ui] .codex-mp-row-check {\n display: grid;\n flex: 0 0 14px;\n place-items: center;\n color: var(--dsw-alias-label-primary);\n}\n\nhtml[data-codex-ui] .codex-mp-spinner {\n box-sizing: border-box;\n display: inline-block;\n flex: none;\n width: 12px;\n height: 12px;\n border: 1.5px solid var(--dsw-alias-border-l3);\n border-top-color: var(--dsw-alias-label-primary);\n border-radius: 50%;\n animation: codex-ui-spin 1s linear infinite;\n}\n\nhtml[data-codex-ui] .codex-mp-effort {\n flex: none;\n margin-top: 5px;\n padding-top: 5px;\n border-top: 0.5px solid var(--dsw-alias-border-l1);\n}\n\nhtml[data-codex-ui] .codex-mp-effort[hidden] {\n display: none;\n}\n\nhtml[data-codex-ui] .codex-mp-effort {\n --codex-mp-apex: #8b7ad0;\n --codex-mp-apex-flash: #d9d2f5;\n --codex-mp-apex-ink: #5f51b5;\n}\n\nhtml[data-codex-ui] body[data-ds-dark-theme] .codex-mp-effort {\n --codex-mp-apex: #9d8ce0;\n --codex-mp-apex-flash: #e6e0fb;\n --codex-mp-apex-ink: #b9adf0;\n}\n\nhtml[data-codex-ui] .codex-mp-effort-head {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n min-height: 28px;\n padding: 4px 9px;\n color: var(--dsw-alias-label-secondary);\n}\n\nhtml[data-codex-ui] .codex-mp-effort-value {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n color: var(--dsw-alias-label-tertiary);\n}\n\nhtml[data-codex-ui] .codex-mp-container {\n position: relative;\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n justify-content: center;\n height: 32px;\n margin-inline: 2px;\n padding-block: 2px;\n padding-inline: 6px;\n}\n\nhtml[data-codex-ui] .codex-mp-root {\n --codex-mp-motion-duration: 0.18s;\n --codex-mp-motion-easing: cubic-bezier(0.22, 0.61, 0.36, 1);\n --codex-mp-tick-transform-duration: 0.12s;\n --codex-mp-thumb-motion-duration: 0s;\n position: relative;\n display: flex;\n align-items: center;\n width: 100%;\n height: 30px;\n outline: none;\n touch-action: none;\n cursor: pointer;\n}\n\nhtml[data-codex-ui] .codex-mp-root[data-armed=\"true\"] {\n --codex-mp-thumb-motion-duration: var(--codex-mp-motion-duration);\n}\n\nhtml[data-codex-ui] .codex-mp-root[data-dragging=\"true\"],\nhtml[data-codex-ui] .codex-mp-root[data-dragging=\"true\"] .codex-mp-tick {\n cursor: grabbing;\n}\n\nhtml[data-codex-ui] .codex-mp-root[data-disabled=\"true\"] {\n opacity: 0.6;\n}\n\nhtml[data-codex-ui] .codex-mp-popover[data-reduced-motion=\"true\"] .codex-mp-root {\n --codex-mp-motion-duration: 0s;\n --codex-mp-tick-transform-duration: 0s;\n --codex-mp-thumb-motion-duration: 0s;\n}\n\nhtml[data-codex-ui] .codex-mp-track {\n position: relative;\n flex-grow: 1;\n height: 30px;\n}\n\nhtml[data-codex-ui] .codex-mp-track::before {\n content: \"\";\n position: absolute;\n left: 0;\n right: 0;\n top: 50%;\n height: 26px;\n margin-top: -13px;\n border-radius: 8px;\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\nhtml[data-codex-ui] .codex-mp-range {\n position: absolute;\n left: 0;\n top: 50%;\n height: 26px;\n margin-top: -13px;\n width: calc(8px + (100% - 16px) * var(--codex-mp-pos, 0));\n border-radius: 8px 0 0 8px;\n background: color-mix(in srgb, var(--dsw-alias-label-primary) 26%, transparent);\n transition: width var(--codex-mp-thumb-motion-duration) var(--codex-mp-motion-easing);\n pointer-events: none;\n}\n\nhtml[data-codex-ui] .codex-mp-matrix {\n position: absolute;\n left: 0;\n right: 0;\n top: 50%;\n height: 26px;\n margin-top: -13px;\n border-radius: 8px;\n overflow: hidden;\n box-sizing: border-box;\n display: none;\n pointer-events: none;\n}\n\nhtml[data-codex-ui] .codex-mp-root[data-tier=\"max\"] .codex-mp-matrix {\n display: grid;\n grid-auto-flow: row;\n}\n\nhtml[data-codex-ui] .codex-mp-matrix-cell {\n animation: codex-mp-cell-in 0.15s ease both;\n}\n\n@keyframes codex-mp-cell-in {\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n}\n\nhtml[data-codex-ui] .codex-mp-matrix-sq {\n width: 100%;\n height: 100%;\n border-radius: 1px;\n background-color: var(--codex-mp-apex);\n --codex-mp-flash-light: var(--codex-mp-apex-flash);\n animation: codex-mp-flash 1.45s infinite ease-in-out;\n}\n\nhtml[data-codex-ui] .codex-mp-matrix-sq[data-tone=\"0\"] { --codex-mp-flash-light: color-mix(in srgb, var(--codex-mp-apex) 62%, var(--codex-mp-apex-flash)); }\nhtml[data-codex-ui] .codex-mp-matrix-sq[data-tone=\"1\"] { --codex-mp-flash-light: color-mix(in srgb, var(--codex-mp-apex) 54%, var(--codex-mp-apex-flash)); }\nhtml[data-codex-ui] .codex-mp-matrix-sq[data-tone=\"2\"] { --codex-mp-flash-light: color-mix(in srgb, var(--codex-mp-apex) 46%, var(--codex-mp-apex-flash)); }\nhtml[data-codex-ui] .codex-mp-matrix-sq[data-tone=\"3\"] { --codex-mp-flash-light: color-mix(in srgb, var(--codex-mp-apex) 38%, var(--codex-mp-apex-flash)); }\nhtml[data-codex-ui] .codex-mp-matrix-sq[data-tone=\"4\"] { --codex-mp-flash-light: color-mix(in srgb, var(--codex-mp-apex) 30%, var(--codex-mp-apex-flash)); }\nhtml[data-codex-ui] .codex-mp-matrix-sq[data-tone=\"5\"] { --codex-mp-flash-light: color-mix(in srgb, var(--codex-mp-apex) 22%, var(--codex-mp-apex-flash)); }\nhtml[data-codex-ui] .codex-mp-matrix-sq[data-tone=\"6\"] { --codex-mp-flash-light: color-mix(in srgb, var(--codex-mp-apex) 14%, var(--codex-mp-apex-flash)); }\nhtml[data-codex-ui] .codex-mp-matrix-sq[data-tone=\"7\"] { --codex-mp-flash-light: color-mix(in srgb, var(--codex-mp-apex) 6%, var(--codex-mp-apex-flash)); }\n\n@keyframes codex-mp-flash {\n 0%,\n 17.24% {\n background-color: var(--codex-mp-apex);\n }\n\n 17.25%,\n 50.34% {\n background-color: var(--codex-mp-flash-light);\n }\n\n 100% {\n background-color: var(--codex-mp-apex);\n }\n}\n\nhtml[data-codex-ui] .codex-mp-tick {\n position: absolute;\n top: 50%;\n width: 4px;\n height: 4px;\n margin-top: -2px;\n border-radius: 50%;\n background: color-mix(in srgb, var(--dsw-alias-label-primary) 26%, transparent);\n transform: translateX(-50%);\n pointer-events: none;\n}\n\nhtml[data-codex-ui] .codex-mp-tick::before {\n content: \"\";\n position: absolute;\n inset: -6px;\n}\n\nhtml[data-codex-ui] .codex-mp-thumb-scale {\n position: absolute;\n top: 50%;\n left: calc(8px + (100% - 16px) * var(--codex-mp-pos, 0));\n width: 16px;\n height: 30px;\n margin-top: -15px;\n border-radius: 5px;\n transform: translateX(-50%);\n pointer-events: none;\n will-change: left;\n transition: left var(--codex-mp-thumb-motion-duration) var(--codex-mp-motion-easing);\n}\n\nhtml[data-codex-ui] .codex-mp-thumb {\n position: absolute;\n inset: 0;\n box-sizing: border-box;\n display: block;\n border-radius: 5px;\n background: var(--dsw-static-neutral-bluish-00, #ffffff);\n box-shadow:\n 0 1px 3px rgb(20 20 19 / 28%),\n 0 0 0 1px rgb(20 20 19 / 6%);\n}\n\nhtml[data-codex-ui] body[data-ds-dark-theme] .codex-mp-thumb {\n box-shadow:\n 0 1px 3px rgb(0 0 0 / 55%),\n 0 0 0 1px rgb(0 0 0 / 40%);\n}\n\nhtml[data-codex-ui] .codex-mp-root[data-tier=\"max\"] .codex-mp-range,\nhtml[data-codex-ui] .codex-mp-root[data-tier=\"max\"] .codex-mp-tick {\n opacity: 0;\n}\n\nhtml[data-codex-ui] .codex-mp-root[data-tier=\"max\"] .codex-mp-thumb {\n background: color-mix(in srgb, var(--codex-mp-apex) 22%, #ffffff);\n box-shadow:\n 0 0 10px color-mix(in srgb, var(--codex-mp-apex) 80%, transparent),\n 0 0 0 1px color-mix(in srgb, var(--codex-mp-apex) 35%, transparent);\n}\n\nhtml[data-codex-ui] .codex-mp-effort[data-tier=\"max\"] .codex-mp-effort-value {\n color: var(--codex-mp-apex-ink);\n}\n\nhtml[data-codex-ui] .codex-mp-root[data-keyboard-focused=\"true\"] .codex-mp-thumb-scale {\n outline: 2px solid var(--dsw-focus-ring-color);\n outline-offset: 0;\n}\n\nhtml[data-codex-ui] .codex-mp-root[data-unset] .codex-mp-thumb-scale,\nhtml[data-codex-ui] .codex-mp-root[data-unset] .codex-mp-range {\n visibility: hidden;\n}\n\nhtml[data-codex-ui] .codex-mp-ends {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n padding: 0 9px 2px;\n font-size: 11px;\n line-height: 14px;\n color: var(--dsw-alias-label-caption);\n}\n\nhtml[data-codex-ui] .codex-mp-value-text {\n animation: codex-mp-value-in 0.28s ease;\n}\n\nhtml[data-codex-ui] .codex-mp-effort-ghost {\n position: absolute;\n left: 0;\n top: 0;\n white-space: nowrap;\n pointer-events: none;\n color: inherit;\n animation: codex-mp-value-out 0.28s ease forwards;\n}\n\n@keyframes codex-mp-value-in {\n from {\n filter: blur(4px);\n opacity: 0;\n transform: translateY(5px);\n }\n\n to {\n filter: blur(0);\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n@keyframes codex-mp-value-out {\n from {\n filter: blur(0);\n opacity: 1;\n transform: translateY(0);\n }\n\n to {\n filter: blur(4px);\n opacity: 0;\n transform: translateY(-5px);\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n html[data-codex-ui] .codex-mp-matrix-cell,\nhtml[data-codex-ui] .codex-mp-matrix-sq,\nhtml[data-codex-ui] .codex-mp-value-text,\nhtml[data-codex-ui] .codex-mp-effort-ghost {\n animation: none;\n }\n}\n\nhtml[data-codex-ui] .codex-mp-popover[data-reduced-motion=\"true\"] .codex-mp-matrix-cell,\nhtml[data-codex-ui] .codex-mp-popover[data-reduced-motion=\"true\"] .codex-mp-matrix-sq,\nhtml[data-codex-ui] .codex-mp-popover[data-reduced-motion=\"true\"] .codex-mp-value-text,\nhtml[data-codex-ui] .codex-mp-popover[data-reduced-motion=\"true\"] .codex-mp-effort-ghost {\n animation: none;\n}\n\nhtml[data-codex-ui] [data-slot=\"sidebar\"] > div:not([class*=\"_collapsed\"]) > button {\n box-sizing: border-box;\n height: auto;\n min-height: 36px;\n flex: none;\n background: 0 0;\n border: none;\n border-radius: var(--dsw-radius-s);\n justify-content: flex-start;\n align-items: center;\n gap: 6px;\n\n margin: 0 2px 4px 0;\n padding: 7px 8px;\n font: inherit;\n line-height: 22px;\n text-align: left;\n color: var(--dsw-alias-label-primary);\n cursor: pointer;\n overflow: hidden;\n}\n\nhtml[data-codex-ui] [data-slot=\"sidebar\"] > div:not([class*=\"_collapsed\"]) > button:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\nhtml[data-codex-ui] [data-slot=\"sidebar\"] > div:not([class*=\"_collapsed\"]) > button:focus-visible {\n outline: 2px solid var(--dsw-focus-ring-color);\n outline-offset: -2px;\n}\n\nhtml[data-codex-ui] [data-slot=\"sidebar\"] > div:not([class*=\"_collapsed\"]) > button > svg {\n width: 16px;\n height: 16px;\n flex: none;\n}\n\nhtml[data-codex-ui] [data-slot=\"sidebar\"] > div:not([class*=\"_collapsed\"]) > button > span {\n max-width: none;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\nhtml[data-codex-ui] [data-slot=\"sidebar\"] > div:not([class*=\"_collapsed\"]) > button > span > span:has(> svg) {\n justify-content: flex-start;\n width: auto;\n}\n\nhtml[data-codex-ui] [data-slot=\"sidebar\"] > div:not([class*=\"_collapsed\"]) > button > span > span > svg {\n width: 16px;\n height: 16px;\n flex: none;\n}\n\nhtml[data-codex-ui] [data-slot=\"sidebar\"] > div:not([class*=\"_collapsed\"]) > button > span > span > span {\n max-width: none;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\nhtml[data-codex-ui] [data-slot=\"sidebar\"] > div:not([class*=\"_collapsed\"]) > nav > button {\n gap: 6px;\n margin-left: 0;\n}\n\nhtml[data-codex-ui] div > [data-slot=\"sidebar.workspaces\"] [class$=\"_fade\"] {\n display: none;\n}\n\nhtml[data-codex-ui] div > [data-slot=\"sidebar.workspaces\"] [class$=\"_list\"] {\n -webkit-mask-image:\n linear-gradient(\n to bottom,\n #000 0,\n #000 calc(100% - 40px),\n #000000e0 calc(100% - 24px),\n #00000085 calc(100% - 12px),\n #0000002e calc(100% - 4px),\n #00000000 100%\n ),\n linear-gradient(#000, #000);\n mask-image:\n linear-gradient(\n to bottom,\n #000 0,\n #000 calc(100% - 40px),\n #000000e0 calc(100% - 24px),\n #00000085 calc(100% - 12px),\n #0000002e calc(100% - 4px),\n #00000000 100%\n ),\n linear-gradient(#000, #000);\n -webkit-mask-size: calc(100% - var(--dsh-session-list-edge-inset, 12px)) 100%, var(--dsh-session-list-edge-inset, 12px) 100%;\n mask-size: calc(100% - var(--dsh-session-list-edge-inset, 12px)) 100%, var(--dsh-session-list-edge-inset, 12px) 100%;\n -webkit-mask-position: 0 0, 100% 0;\n mask-position: 0 0, 100% 0;\n -webkit-mask-repeat: no-repeat, no-repeat;\n mask-repeat: no-repeat, no-repeat;\n}\n\nhtml[data-codex-ui][data-windows-titlebar] div:has(> [data-slot=\"main\"]),\nhtml[data-codex-ui][data-windows-titlebar] div:has(> [data-slot=\"sidebar\"]) + div,\nhtml[data-codex-ui][data-platform=\"win32\"]:not([data-windows-titlebar]) div:has(> [data-slot=\"main\"]),\nhtml[data-codex-ui][data-platform=\"win32\"]:not([data-windows-titlebar]) div:has(> [data-slot=\"sidebar\"]) + div {\n position: relative;\n box-shadow:\n 0 0 0 0.5px var(--dsw-alias-border-l2),\n 0 0 13px rgba(13, 13, 13, 0.07);\n}\n\nhtml[data-codex-ui][data-windows-titlebar] body[data-ds-dark-theme] div:has(> [data-slot=\"main\"]),\nhtml[data-codex-ui][data-windows-titlebar] body[data-ds-dark-theme] div:has(> [data-slot=\"sidebar\"]) + div,\nhtml[data-codex-ui][data-platform=\"win32\"]:not([data-windows-titlebar]) body[data-ds-dark-theme] div:has(> [data-slot=\"main\"]),\nhtml[data-codex-ui][data-platform=\"win32\"]:not([data-windows-titlebar]) body[data-ds-dark-theme] div:has(> [data-slot=\"sidebar\"]) + div {\n box-shadow:\n 0 0 0 0.5px var(--dsw-alias-border-l2),\n 0 0 24px rgba(0, 0, 0, 0.5);\n}\n\nhtml[data-codex-ui][data-windows-titlebar] [data-sidebar-right-panel=\"push\"][data-sidebar-right-open],\nhtml[data-codex-ui][data-platform=\"win32\"]:not([data-windows-titlebar]) [data-sidebar-right-panel=\"push\"][data-sidebar-right-open] {\n box-shadow:\n 0 0 0 0.5px var(--dsw-alias-border-l1),\n 0 -12px 24px -12px var(--dsw-codex-ambient);\n}\n\nhtml[data-codex-ui] [data-sidebar-right-panel=\"push\"][data-sidebar-right-open] [data-dockkit-pane][data-dockkit-column=\"0\"] {\n border-left: 0;\n}\n\nhtml[data-codex-ui] [data-side=\"rightbar\"]::before {\n content: \"\";\n position: absolute;\n top: 0;\n bottom: 0;\n left: 50%;\n width: 2px;\n translate: -50% 0;\n border-radius: 1px;\n background: linear-gradient(to bottom, rgba(13, 13, 13, 0.09), rgba(13, 13, 13, 0.27) 50%, rgba(13, 13, 13, 0.09));\n opacity: 0;\n scale: 1 0.35;\n transform-origin: center;\n transition: opacity var(--dsw-motion-base) var(--dsw-ease), scale var(--dsw-motion-slow) var(--dsw-ease);\n pointer-events: none;\n}\n\nhtml[data-codex-ui] [data-side=\"rightbar\"]:hover::before {\n opacity: 1;\n scale: 1 1;\n}\n\nhtml[data-codex-ui] body[data-ds-dark-theme] [data-side=\"rightbar\"]::before {\n background: linear-gradient(to bottom, rgba(236, 236, 236, 0.08), rgba(236, 236, 236, 0.24) 50%, rgba(236, 236, 236, 0.08));\n}\n\nhtml[data-codex-ui][data-platform=\"win32\"]:not([data-windows-titlebar]) div:has(> [data-slot=\"sidebar\"]) {\n border-right-color: var(--dsw-alias-border-l1);\n}\n\nhtml[data-codex-ui] [data-conversation-scroll] {\n --dsh-composer-card-max-width: calc(var(--dsh-chat-content-width) + 32px);\n --dsh-composer-side-clearance: 24px;\n\n --dcu-composer-bg: var(--dsw-composer-surface);\n\n --dcu-composer-shadow: 0 0 0 0.5px rgba(13, 13, 13, 0.1), 0 2px 12px 0 rgba(0, 0, 0, 0.09);\n}\n\nhtml[data-codex-ui] body[data-ds-dark-theme] [data-conversation-scroll] {\n --dcu-composer-bg: color-mix(in srgb, var(--dsw-alias-label-primary) 5%, var(--dsw-composer-surface));\n --dcu-composer-shadow: inset 0 0 1px 0 #fff3;\n}\n\nhtml[data-codex-ui] [data-conversation-scroll] [data-composer-card] {\n padding-top: 12px;\n gap: 4px;\n border: 0;\n border-radius: var(--dsw-radius-card);\n background: var(--dcu-composer-bg);\n box-shadow: var(--dcu-composer-shadow);\n}\n\n@supports (corner-shape: superellipse(1.5)) {\n html[data-codex-ui] [data-conversation-scroll] [data-composer-card] {\n corner-shape: superellipse(1.5);\n }\n}\n\n@media (forced-colors: active) {\n html[data-codex-ui] [data-conversation-scroll] [data-composer-card] {\n outline: 1px solid CanvasText;\n }\n}\n\nhtml[data-codex-ui] [data-conversation-scroll] [data-composer-card] [data-input-scroll] {\n margin-right: 0;\n}\n\nhtml[data-codex-ui] [data-conversation-scroll] [data-input-scroll] [data-lexical-editor=true] {\n min-height: 44px;\n padding: 0 12px;\n}\n\nhtml[data-codex-ui] [data-conversation-scroll] [data-composer-placeholder] {\n inset: 0 12px auto;\n}\n\nhtml[data-codex-ui] [data-conversation-scroll] [data-composer-card] > [data-input-scroll] + div {\n padding: 0 8px 8px;\n gap: 5px;\n}\n\nhtml[data-codex-ui] [data-conversation-scroll] [data-composer-card] > [data-input-scroll] + div > div {\n gap: 4px;\n}\n\nhtml[data-codex-ui] [data-conversation-scroll] [data-composer-card] > [data-input-scroll] + div > div > div {\n gap: 4px;\n}\n\nhtml[data-codex-ui] [data-conversation-scroll] [data-composer-card] > [data-input-scroll] + div button:not([role]),\nhtml[data-codex-ui] [data-conversation-scroll] [data-composer-card] > [data-input-scroll] + div select:not([role]) {\n min-height: 28px;\n height: 28px;\n}\n\nhtml[data-codex-ui] [data-conversation-scroll] [data-composer-card] > [data-input-scroll] + div button[class$=_primary] {\n width: 28px;\n transform: none;\n background: var(--dsw-alias-label-primary);\n color: var(--dsw-alias-bg-base);\n}\n\nhtml[data-codex-ui] [data-conversation-scroll] [data-composer-card] > [data-input-scroll] + div button[class$=_primary]:hover:not(:disabled) {\n background: var(--dsw-alias-label-secondary);\n}\n\nhtml[data-codex-ui] [data-conversation-scroll] [data-composer-card] > [data-input-scroll] + div button:focus-visible,\nhtml[data-codex-ui] [data-conversation-scroll] [data-composer-card] > [data-input-scroll] + div select:focus-visible {\n outline: 2px solid var(--dsw-focus-ring-color);\n outline-offset: 2px;\n}\n\nhtml[data-codex-ui] [class*=\"_heroWorkspaceRow\"] button {\n min-height: 28px;\n border-radius: var(--dsw-radius-pill);\n font-size: 13px;\n line-height: 20px;\n}\n\nhtml[data-codex-ui] [class*=\"_heroWorkspaceRow\"] button:hover,\nhtml[data-codex-ui] [class*=\"_heroWorkspaceRow\"] button[aria-expanded=true] {\n background: color-mix(in srgb, var(--dsw-alias-label-primary) 8%, transparent);\n}\n\nhtml[data-codex-ui] [data-conversation-scroll] [data-trigger-menu] {\n box-sizing: border-box;\n left: 0;\n right: 0;\n width: auto;\n min-width: 0;\n max-width: none;\n padding: 5px;\n border-radius: var(--dsw-radius-menu);\n background: var(--dsw-codex-suggest-fill);\n box-shadow: var(--dsw-codex-suggest-shadow);\n}\n\nhtml[data-codex-ui] [data-conversation-scroll] [data-trigger-menu] > [role=listbox] {\n box-sizing: border-box;\n width: 100%;\n min-width: 0;\n align-self: stretch;\n scrollbar-width: thin;\n}\n\nhtml[data-codex-ui] [data-conversation-scroll] [data-trigger-menu] [role=option] {\n box-sizing: border-box;\n width: 100%;\n min-width: 0;\n min-height: 28px;\n padding: 4px 9px;\n gap: 8px;\n border-radius: calc(var(--dsw-radius-menu) - 5px);\n font-size: 13px;\n line-height: 20px;\n}\n\nhtml[data-codex-ui] [data-conversation-scroll] [data-trigger-menu] [role=option][aria-selected=true] {\n background: color-mix(in srgb, var(--dsw-alias-label-primary) 10%, transparent);\n}\n\nhtml[data-codex-ui] [data-phase=hero] [data-conversation-scroll][class] {\n --dsh-composer-side-clearance: 16px;\n justify-content: flex-start;\n scrollbar-gutter: stable both-edges;\n}\n\nhtml[data-codex-ui] [data-phase=hero] [data-composer-seat] {\n flex: 1 0 auto;\n min-height: 100%;\n}\n\nhtml[data-codex-ui] [data-phase=hero] [data-composer-seat] > :has(> * > [class*=\"_composerHero\"]) {\n display: flex;\n flex: 1;\n flex-direction: column;\n}\n\nhtml[data-codex-ui] [data-phase=hero] [class*=\"_composerHero\"] {\n box-sizing: border-box;\n flex: 1;\n width: 100%;\n max-width: none;\n min-width: 0;\n margin-inline: auto;\n gap: 0;\n padding-bottom: 32px;\n}\n\nhtml[data-codex-ui] [data-phase=hero] [class*=\"_heroWorkspaceRow\"] {\n box-sizing: border-box;\n flex: none;\n width: min(calc(var(--dsh-composer-card-max-width) + 2 * var(--dsh-composer-side-clearance) - 56px), calc(100% - 56px));\n align-self: center;\n justify-content: flex-start;\n flex-wrap: wrap;\n gap: 8px;\n min-height: 48px;\n margin: 0 28px -10px;\n padding: 6px 12px 16px;\n border-radius: var(--dsw-radius-card) var(--dsw-radius-card) 0 0;\n background: color-mix(in srgb, var(--dsw-alias-label-primary) 4%, var(--dsw-alias-bg-base));\n}\n\nhtml[data-codex-ui] [data-phase=hero] [class*=\"_heroWorkspaceRow\"] > [class$=\"_workspace\"] {\n min-width: 0;\n max-width: 100%;\n font-weight: 400;\n}\n\nhtml[data-codex-ui] .cx-form {\n display: flex;\n flex-direction: column;\n margin: 0;\n}\n\nhtml[data-codex-ui] .cx-row {\n display: grid;\n grid-template-columns: minmax(0, 1fr) auto;\n align-items: center;\n column-gap: 16px;\n padding: 10px 0;\n border-bottom: 0.5px solid var(--dsw-alias-border-l1);\n}\n\nhtml[data-codex-ui] .cx-row:last-child {\n border-bottom: none;\n}\n\nhtml[data-codex-ui] .cx-row__text {\n min-width: 0;\n}\n\nhtml[data-codex-ui] .cx-row__label {\n display: flex;\n align-items: center;\n gap: 8px;\n color: var(--dsw-alias-label-primary);\n font-size: 13px;\n line-height: 20px;\n}\n\nhtml[data-codex-ui] .cx-row__desc {\n margin-top: 2px;\n color: var(--dsw-alias-label-tertiary);\n font-size: 11px;\n line-height: 16px;\n}\n\nhtml[data-codex-ui] .cx-row__control {\n display: flex;\n align-items: center;\n gap: 8px;\n justify-self: end;\n}\n\nhtml[data-codex-ui] .cx-swatch {\n width: 24px;\n height: 24px;\n padding: 0;\n border: 0.5px solid var(--dsw-alias-border-l2);\n border-radius: var(--dsw-radius-s);\n background: none;\n cursor: pointer;\n}\n\nhtml[data-codex-ui] .cx-swatch::-webkit-color-swatch-wrapper {\n padding: 2px;\n}\n\nhtml[data-codex-ui] .cx-swatch::-webkit-color-swatch {\n border: none;\n border-radius: calc(var(--dsw-radius-s) - 2px);\n}\n\nhtml[data-codex-ui] .cx-hex {\n width: 96px;\n height: 24px;\n padding: 0 8px;\n border: 0.5px solid var(--dsw-alias-border-l2);\n border-radius: var(--dsw-radius-s);\n background: var(--dsw-alias-bg-base);\n color: var(--dsw-alias-label-primary);\n font-family: var(--ds-font-family-code);\n font-size: 11px;\n letter-spacing: 0.04em;\n}\n\nhtml[data-codex-ui] .cx-hex:focus-visible {\n outline: 2px solid var(--dsw-focus-ring-color);\n outline-offset: 1px;\n}\n\nhtml[data-codex-ui] .cx-text {\n width: 220px;\n height: 24px;\n padding: 0 8px;\n border: 0.5px solid var(--dsw-alias-border-l2);\n border-radius: var(--dsw-radius-s);\n background: var(--dsw-alias-bg-base);\n color: var(--dsw-alias-label-primary);\n font-size: 12px;\n}\n\nhtml[data-codex-ui] .cx-text:focus-visible {\n outline: 2px solid var(--dsw-focus-ring-color);\n outline-offset: 1px;\n}\n\nhtml[data-codex-ui] .cx-range {\n width: 160px;\n accent-color: var(--dsw-alias-link);\n}\n\nhtml[data-codex-ui] .cx-range__value {\n min-width: 24px;\n color: var(--dsw-alias-label-secondary);\n font-family: var(--ds-font-family-code);\n font-size: 11px;\n text-align: right;\n}\n\nhtml[data-codex-ui] .cx-note {\n margin: 0 0 8px;\n color: var(--dsw-alias-label-tertiary);\n font-size: 11px;\n line-height: 16px;\n}\n\nhtml[data-codex-ui] .cx-error {\n margin: 8px 0 0;\n color: var(--dsw-alias-state-error-primary);\n font-size: 11px;\n line-height: 16px;\n}\n\nhtml[data-codex-ui] {\n\n --cx-sm-sidebar-w: 236px;\n --cx-sm-row-h: 46px;\n --cx-sm-panel-w: 760px;\n --cx-sm-gutter: 24px;\n --cx-sm-radius-card: var(--dsw-radius-m, 12px);\n\n --cx-sm-radius-field: 10px;\n --cx-sm-radius-pill: 999px;\n\n}\n\n@media (max-width: 900px) {\n html[data-codex-ui] {\n --cx-sm-sidebar-w: 196px;\n --cx-sm-gutter: 14px;\n }\n}\n\nhtml[data-codex-ui] div[data-cx-sm-panel] {\n --cx-sm-surface-backdrop: var(--dsw-alias-bg-sidebar);\n\n --cx-sm-card-edge: var(--dsw-alias-bg-sidebar);\n\n --dsw-alias-bg-layer-2: var(--dsw-alias-bg-layer-1);\n --dsw-alias-bg-layer-3: var(--dsw-alias-bg-layer-1);\n}\n\nhtml[data-codex-ui] body[data-ds-dark-theme] div[data-cx-sm-panel] {\n --cx-sm-card-edge: var(--dsw-alias-border-l1);\n}\n\nhtml[data-codex-ui] div[data-cx-sm-panel] {\n position: fixed;\n inset: 0;\n box-sizing: border-box;\n width: auto;\n height: auto;\n max-width: none;\n max-height: none;\n border-radius: 0;\n box-shadow: none;\n overflow: hidden;\n\n background: var(--cx-sm-surface-backdrop);\n}\n\nhtml[data-codex-ui][data-windows-titlebar] div[data-cx-sm-panel] {\n padding-top: var(--dsh-windows-titlebar-height, 40px);\n}\n\nhtml[data-codex-ui][data-windows-titlebar] div[data-cx-sm-panel] button,\nhtml[data-codex-ui][data-windows-titlebar] div[data-cx-sm-panel] input,\nhtml[data-codex-ui][data-windows-titlebar] div[data-cx-sm-panel] a {\n -webkit-app-region: no-drag;\n}\n\nhtml[data-codex-ui] div[data-cx-sm-panel] > nav {\n position: relative;\n box-sizing: border-box;\n flex: 0 0 var(--cx-sm-sidebar-w);\n width: var(--cx-sm-sidebar-w);\n min-height: 0;\n padding: 12px 12px 16px;\n gap: 8px;\n background: none;\n overflow: hidden;\n}\n\nhtml[data-codex-ui] div[data-cx-sm-panel] > nav > div:not([data-codex-ui-injected]):not(:has(> button)) {\n position: absolute;\n width: 1px;\n height: 1px;\n margin: -1px;\n padding: 0;\n overflow: hidden;\n clip-path: inset(50%);\n white-space: nowrap;\n}\n\nhtml[data-codex-ui] div[data-cx-sm-panel] > nav > div:has(> button),\nhtml[data-codex-ui] div[data-cx-sm-panel] > nav > div:last-child {\n box-sizing: border-box;\n min-height: 0;\n flex: 1 1 auto;\n gap: 2px;\n}\n\nhtml[data-codex-ui] div[data-cx-sm-panel] > nav > div:has(> button) > button {\n box-sizing: border-box;\n width: 100%;\n min-height: 32px;\n padding: 6px 10px;\n gap: 9px;\n border: 0;\n border-radius: var(--dsw-radius-s, 8px);\n background: none;\n color: var(--dsw-alias-label-secondary);\n font-size: 14px;\n line-height: 20px;\n text-align: left;\n}\n\nhtml[data-codex-ui] div[data-cx-sm-panel] > nav > div:has(> button) > button:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n color: var(--dsw-alias-label-primary);\n}\n\nhtml[data-codex-ui] div[data-cx-sm-panel] > nav > div:has(> button) > button[aria-current=\"true\"] {\n background: var(--dsw-alias-interactive-bg-active);\n color: var(--dsw-alias-label-primary);\n font-weight: 500;\n}\n\nhtml[data-codex-ui] div[data-cx-sm-panel] > nav > div:has(> button) > button[aria-current=\"true\"]:hover {\n background: var(--dsw-alias-interactive-bg-active);\n}\n\nhtml[data-codex-ui] div[data-cx-sm-panel] > nav > div:has(> button) > button:focus-visible {\n outline-offset: -2px;\n}\n\nhtml[data-codex-ui] div[data-cx-sm-panel] > nav > div:has(> button) > button svg {\n width: 16px;\n height: 16px;\n flex: 0 0 auto;\n stroke-width: 1.4;\n opacity: 0.72;\n}\n\nhtml[data-codex-ui] div[data-cx-sm-panel] > nav > div:has(> button) > button:hover svg,\nhtml[data-codex-ui] div[data-cx-sm-panel] > nav > div:has(> button) > button[aria-current=\"true\"] svg {\n opacity: 1;\n}\n\nhtml[data-codex-ui] .cx-sm-group {\n margin: 12px 0 4px;\n padding: 0 10px;\n color: var(--dsw-alias-label-caption);\n font-size: 12px;\n line-height: 18px;\n font-weight: 500;\n letter-spacing: 0.01em;\n user-select: none;\n}\n\nhtml[data-codex-ui] :lang(zh) .cx-sm-group {\n letter-spacing: 0;\n}\n\nhtml[data-codex-ui] .cx-sm-search + .cx-sm-group {\n margin-top: 4px;\n}\n\nhtml[data-codex-ui] .cx-sm-back {\n display: flex;\n align-items: center;\n gap: 6px;\n box-sizing: border-box;\n width: fit-content;\n min-height: 28px;\n padding: 2px 6px 2px 4px;\n border-radius: var(--dsw-radius-s, 8px);\n color: var(--dsw-alias-label-secondary);\n font-size: 13px;\n line-height: 20px;\n cursor: pointer;\n user-select: none;\n}\n\nhtml[data-codex-ui] .cx-sm-back:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n color: var(--dsw-alias-label-primary);\n}\n\nhtml[data-codex-ui] .cx-sm-back svg {\n width: 14px;\n height: 14px;\n flex: 0 0 auto;\n stroke-width: 1.6;\n opacity: 0.8;\n}\n\nhtml[data-codex-ui] .cx-sm-search {\n display: flex;\n align-items: center;\n gap: 8px;\n box-sizing: border-box;\n width: 100%;\n height: 32px;\n\n padding: 0 14px;\n border: 0;\n border-radius: var(--cx-sm-radius-pill);\n background: var(--dsw-alias-bg-layer-1);\n color: var(--dsw-alias-label-tertiary);\n}\n\nhtml[data-codex-ui] .cx-sm-search:focus-within {\n box-shadow: inset 0 0 0 1px var(--dsw-alias-border-l3);\n}\n\nhtml[data-codex-ui] .cx-sm-search svg {\n width: 14px;\n height: 14px;\n flex: 0 0 auto;\n stroke-width: 1.6;\n opacity: 0.7;\n}\n\nhtml[data-codex-ui] .cx-sm-search input {\n box-sizing: border-box;\n flex: 1 1 auto;\n min-width: 0;\n height: 100%;\n padding: 0;\n border: 0;\n outline: 0;\n background: none;\n color: var(--dsw-alias-label-primary);\n font: inherit;\n font-size: 13px;\n line-height: 20px;\n}\n\nhtml[data-codex-ui] .cx-sm-search input::placeholder {\n color: var(--dsw-alias-label-caption);\n}\n\nhtml[data-codex-ui] div[data-cx-sm-panel] > div:last-child {\n box-sizing: border-box;\n flex: 1 1 auto;\n min-width: 0;\n min-height: 0;\n\n background: var(--dsw-alias-bg-base);\n\n overflow: hidden;\n}\n\nhtml[data-codex-ui] div[data-cx-sm-panel] > div:last-child > div:first-child {\n box-sizing: border-box;\n flex: 0 0 auto;\n align-items: center;\n min-height: 52px;\n padding: 12px var(--cx-sm-gutter) 8px;\n}\n\nhtml[data-codex-ui] div[data-cx-sm-panel] > div:last-child > div:last-child {\n box-sizing: border-box;\n flex: 1 1 auto;\n min-height: 0;\n padding: 2px var(--cx-sm-gutter) 0;\n}\n\nhtml[data-codex-ui] div[data-cx-sm-panel] > div:last-child > div:last-child [data-slot=\"settings.section\"] > * {\n box-sizing: border-box;\n width: 100%;\n max-width: var(--cx-sm-panel-w);\n margin-left: auto;\n margin-right: auto;\n\n padding-bottom: 40px;\n}\n\nhtml[data-codex-ui] div[data-cx-sm-panel] [data-slot=\"settings.action\"] button {\n box-sizing: border-box;\n height: 32px;\n padding: 0 12px;\n\n white-space: nowrap;\n border: 0.5px solid var(--dsw-alias-border-l2);\n border-radius: var(--dsw-radius-s, 8px);\n background: var(--dsw-alias-button-elevated-fill);\n color: var(--dsw-alias-label-primary);\n font-size: 13px;\n line-height: 1;\n cursor: pointer;\n}\n\nhtml[data-codex-ui] div[data-cx-sm-panel] [data-slot=\"settings.action\"] button:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n border-color: var(--dsw-alias-border-l3);\n}\n\nhtml[data-codex-ui] div[data-cx-sm-panel] button:has([data-slot=\"settings.close\"]) {\n display: none;\n}\n\nhtml[data-codex-ui] .cx-sm-pagehead {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 16px;\n box-sizing: border-box;\n width: 100%;\n min-height: 36px;\n margin: 0 0 12px;\n}\n\nhtml[data-codex-ui] .cx-sm-title,\nhtml[data-codex-ui] .cx-sm-pagehead > h1,\nhtml[data-codex-ui] .cx-sm-pagehead > h2 {\n margin: 0;\n padding: 0;\n color: var(--dsw-alias-label-primary);\n\n font-size: 20px;\n line-height: 26px;\n font-weight: 600;\n letter-spacing: -0.01em;\n}\n\nhtml[data-codex-ui] :lang(zh) .cx-sm-title,\nhtml[data-codex-ui] :lang(zh) .cx-sm-pagehead > h1,\nhtml[data-codex-ui] :lang(zh) .cx-sm-pagehead > h2 {\n letter-spacing: 0;\n}\n\nhtml[data-codex-ui] div[data-cx-sm-panel] [data-slot=\"settings.section\"] > * {\n box-sizing: border-box;\n width: 100%;\n gap: 0;\n padding-top: 2px;\n}\n\nhtml[data-codex-ui] div[data-cx-sm-panel] [data-slot=\"settings.general.item\"] > * {\n box-sizing: border-box;\n min-height: var(--cx-sm-row-h);\n padding: 8px 16px;\n border-style: solid;\n border-color: var(--cx-sm-card-edge);\n border-width: 0.5px 0;\n\n background: var(--dsw-alias-bg-layer-1);\n transition: background-color var(--dsw-motion-fast, 150ms) var(--dsw-ease, ease);\n}\n\nhtml[data-codex-ui] div[data-cx-sm-panel] [data-slot=\"settings.section\"] > :first-child > [data-slot=\"settings.general.item\"] > *:first-child {\n border-top-width: 0.5px;\n border-left-width: 0.5px;\n border-right-width: 0.5px;\n border-radius: var(--cx-sm-radius-card) var(--cx-sm-radius-card) 0 0;\n}\n\nhtml[data-codex-ui] div[data-cx-sm-panel] [data-slot=\"settings.section\"] > :first-child > [data-slot=\"settings.general.item\"] > *:last-child {\n border-bottom-width: 0.5px;\n border-left-width: 0.5px;\n border-right-width: 0.5px;\n border-radius: 0 0 var(--cx-sm-radius-card) var(--cx-sm-radius-card);\n}\n\n html[data-codex-ui] ._card { background: var(--dsw-alias-settings-card-fill) }\n html[data-codex-ui] ._cardActive { background: var(--dsw-alias-bg-module-platform) }\n html[data-codex-ui] —— 它们**吃令牌**,不是硬编码灰。该令牌由宿主主题包 dsh-client-ui-theme 在\n **body** 上声明为 var(--dsw-alias-settings-card-fill: var(--dsw-alias-bg-layer-2));\n 本机 app.asar 全文扫描里,该令牌的**声明**只有这一处,另 4 处都是 background 消费点。\n 皮肤把它同名重定义成 layer-1(skin.css:html[data-codex-ui],\nhtml[data-codex-ui] body),\n 特异性与顺序都压过宿主的 body 声明 —— 白卡 / 深色 #212121 因此**自动生效**。\n\n 旧注释怎么错的(一并记下,免得后人再被同一个坑骗):\n 旧文写「#f3f3f3 硬编码、换色试验证明不走任何令牌」。那个换色试验是在 §4.3 规则**还在**的\n 前提下做的 —— §4.3 以特异性 (0,3,3) 压过宿主的 (0,1,0),无论令牌被改成什么,卡都会保持\n §4.3 写死的 layer-1,于是「0 个元素跟随」是这条规则生效的**必然结果**,推不出「卡不读令牌」。\n 定案靠的是宿主源码里那两条 background 声明,不是那个试验。\n (二审结论见 docs/recon/second-pass-review.md 的 M1/M2。)\n\n **删除理由**(三条,任一条都够):\n ① 同值重复:皮肤已把该令牌定成 layer-1,§1 的 layer-2/3→layer-1 重定向同样落上去,\n 这条规则写的是**同一个值**,三层路径同值,将来改一处根本无法判断谁在生效;\n ② 覆盖面无意义:它靠特异性 (0,3,3) 压过宿主 .rowCard/.card 的 (0,1,0),\n 而值相同 —— 赢了也没有任何视觉差异;\n ③ **会漂**:[class$=\"_card\"] 匹配的是「整条 class 属性以该后缀结尾」,\n 覆盖面随宿主状态类的书写顺序漂移。实测 Agent 预设的选中卡是\n class=\"rtSEdW_card rtSEdW_cardActive\"(以 _cardActive 结尾)→ 今天**不命中**、\n 靠宿主自己的 .cardActive {background: var(--dsw-alias-bg-module-platform)} html[data-codex-ui] 保住选中底色,\n 纯属侥幸;一旦宿主把状态类挪到前面,选中卡会被压成 layer-1,**选中态视觉当场丢失,\n 而没有任何断言会红**。删除即消除这条会随宿主改版静默劣化的路径。\n\n 删除后的着色机制**唯一**:--dsw-alias-settings-card-fill(skin.css 定义)\n → 未选中卡 = layer-1(浅 #ffffff / 深 #212121)。选中卡保持宿主自己的\n bg-module-platform(浅 #f9f9f9)—— 与未选中卡不同色,选中态仍可区分。\n 这条路径由 scripts/settings-modal-verify.mjs 的两条集成断言把守\n (未选中卡 == var(--dsw-alias-bg-layer-1) 的计算值;选中卡背景 ≠ 未选中卡背景)。 */\n\nhtml[data-codex-ui] div[data-cx-sm-panel] [data-slot=\"settings.section\"] > :first-child > [data-slot=\"settings.general.item\"] > *:not(:first-child):not(:last-child) {\n border-radius: 0;\n}\n\nhtml[data-codex-ui] div[data-cx-sm-panel] [data-slot=\"settings.general.item\"] > *:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\nhtml[data-codex-ui] div[data-cx-sm-panel] [data-slot=\"settings.general.item\"] > * > :first-child > div:not(:first-child) {\n color: var(--dsw-alias-label-caption);\n}\n\nhtml[data-codex-ui] [data-cx-sm-hidden],\nhtml[data-codex-ui] .cx-sm-hidden {\n display: none !important;\n}\n\nhtml[data-codex-ui] .cx-sm-empty {\n box-sizing: border-box;\n padding: 32px 8px;\n color: var(--dsw-alias-label-tertiary);\n font-size: 13px;\n line-height: 20px;\n text-align: center;\n}\n\nhtml[data-codex-ui] [data-codex-ui-injected=\"settings-modal\"],\nhtml[data-codex-ui] [data-codex-ui-injected=\"settings-modal\"] * {\n box-sizing: border-box;\n}\n"; return { THEME_CSS }; })(); diff --git a/theme.css b/theme.css index 35582bf..1cd5c38 100644 --- a/theme.css +++ b/theme.css @@ -1845,9 +1845,6 @@ html[data-codex-ui] { } } - - - html[data-codex-ui] div[data-cx-sm-panel] { --cx-sm-surface-backdrop: var(--dsw-alias-bg-sidebar); @@ -1857,7 +1854,6 @@ html[data-codex-ui] div[data-cx-sm-panel] { --dsw-alias-bg-layer-3: var(--dsw-alias-bg-layer-1); } - html[data-codex-ui] body[data-ds-dark-theme] div[data-cx-sm-panel] { --cx-sm-card-edge: var(--dsw-alias-border-l1); } @@ -1877,20 +1873,16 @@ html[data-codex-ui] div[data-cx-sm-panel] { background: var(--cx-sm-surface-backdrop); } - html[data-codex-ui][data-windows-titlebar] div[data-cx-sm-panel] { padding-top: var(--dsh-windows-titlebar-height, 40px); } - html[data-codex-ui][data-windows-titlebar] div[data-cx-sm-panel] button, html[data-codex-ui][data-windows-titlebar] div[data-cx-sm-panel] input, html[data-codex-ui][data-windows-titlebar] div[data-cx-sm-panel] a { -webkit-app-region: no-drag; } - - html[data-codex-ui] div[data-cx-sm-panel] > nav { position: relative; box-sizing: border-box; @@ -1903,7 +1895,6 @@ html[data-codex-ui] div[data-cx-sm-panel] > nav { overflow: hidden; } - html[data-codex-ui] div[data-cx-sm-panel] > nav > div:not([data-codex-ui-injected]):not(:has(> button)) { position: absolute; width: 1px; @@ -1915,7 +1906,6 @@ html[data-codex-ui] div[data-cx-sm-panel] > nav > div:not([data-codex-ui-injecte white-space: nowrap; } - html[data-codex-ui] div[data-cx-sm-panel] > nav > div:has(> button), html[data-codex-ui] div[data-cx-sm-panel] > nav > div:last-child { box-sizing: border-box; @@ -1924,7 +1914,6 @@ html[data-codex-ui] div[data-cx-sm-panel] > nav > div:last-child { gap: 2px; } - html[data-codex-ui] div[data-cx-sm-panel] > nav > div:has(> button) > button { box-sizing: border-box; width: 100%; @@ -1940,13 +1929,11 @@ html[data-codex-ui] div[data-cx-sm-panel] > nav > div:has(> button) > button { text-align: left; } - html[data-codex-ui] div[data-cx-sm-panel] > nav > div:has(> button) > button:hover { background: var(--dsw-alias-interactive-bg-hover); color: var(--dsw-alias-label-primary); } - html[data-codex-ui] div[data-cx-sm-panel] > nav > div:has(> button) > button[aria-current="true"] { background: var(--dsw-alias-interactive-bg-active); color: var(--dsw-alias-label-primary); @@ -1961,7 +1948,6 @@ html[data-codex-ui] div[data-cx-sm-panel] > nav > div:has(> button) > button:foc outline-offset: -2px; } - html[data-codex-ui] div[data-cx-sm-panel] > nav > div:has(> button) > button svg { width: 16px; height: 16px; @@ -1975,7 +1961,6 @@ html[data-codex-ui] div[data-cx-sm-panel] > nav > div:has(> button) > button[ari opacity: 1; } - html[data-codex-ui] .cx-sm-group { margin: 12px 0 4px; padding: 0 10px; @@ -1991,12 +1976,10 @@ html[data-codex-ui] :lang(zh) .cx-sm-group { letter-spacing: 0; } - html[data-codex-ui] .cx-sm-search + .cx-sm-group { margin-top: 4px; } - html[data-codex-ui] .cx-sm-back { display: flex; align-items: center; @@ -2026,8 +2009,6 @@ html[data-codex-ui] .cx-sm-back svg { opacity: 0.8; } - - html[data-codex-ui] .cx-sm-search { display: flex; align-items: center; @@ -2074,9 +2055,6 @@ html[data-codex-ui] .cx-sm-search input::placeholder { color: var(--dsw-alias-label-caption); } - - - html[data-codex-ui] div[data-cx-sm-panel] > div:last-child { box-sizing: border-box; flex: 1 1 auto; @@ -2088,7 +2066,6 @@ html[data-codex-ui] div[data-cx-sm-panel] > div:last-child { overflow: hidden; } - html[data-codex-ui] div[data-cx-sm-panel] > div:last-child > div:first-child { box-sizing: border-box; flex: 0 0 auto; @@ -2097,12 +2074,6 @@ html[data-codex-ui] div[data-cx-sm-panel] > div:last-child > div:first-child { padding: 12px var(--cx-sm-gutter) 8px; } - - - - - - html[data-codex-ui] div[data-cx-sm-panel] > div:last-child > div:last-child { box-sizing: border-box; flex: 1 1 auto; @@ -2110,7 +2081,6 @@ html[data-codex-ui] div[data-cx-sm-panel] > div:last-child > div:last-child { padding: 2px var(--cx-sm-gutter) 0; } - html[data-codex-ui] div[data-cx-sm-panel] > div:last-child > div:last-child [data-slot="settings.section"] > * { box-sizing: border-box; width: 100%; @@ -2121,7 +2091,6 @@ html[data-codex-ui] div[data-cx-sm-panel] > div:last-child > div:last-child [dat padding-bottom: 40px; } - html[data-codex-ui] div[data-cx-sm-panel] [data-slot="settings.action"] button { box-sizing: border-box; height: 32px; @@ -2142,12 +2111,10 @@ html[data-codex-ui] div[data-cx-sm-panel] [data-slot="settings.action"] button:h border-color: var(--dsw-alias-border-l3); } - html[data-codex-ui] div[data-cx-sm-panel] button:has([data-slot="settings.close"]) { display: none; } - html[data-codex-ui] .cx-sm-pagehead { display: flex; align-items: center; @@ -2178,10 +2145,6 @@ html[data-codex-ui] :lang(zh) .cx-sm-pagehead > h2 { letter-spacing: 0; } - - - - html[data-codex-ui] div[data-cx-sm-panel] [data-slot="settings.section"] > * { box-sizing: border-box; width: 100%; @@ -2189,8 +2152,6 @@ html[data-codex-ui] div[data-cx-sm-panel] [data-slot="settings.section"] > * { padding-top: 2px; } - - html[data-codex-ui] div[data-cx-sm-panel] [data-slot="settings.general.item"] > * { box-sizing: border-box; min-height: var(--cx-sm-row-h); @@ -2203,7 +2164,6 @@ html[data-codex-ui] div[data-cx-sm-panel] [data-slot="settings.general.item"] > transition: background-color var(--dsw-motion-fast, 150ms) var(--dsw-ease, ease); } - html[data-codex-ui] div[data-cx-sm-panel] [data-slot="settings.section"] > :first-child > [data-slot="settings.general.item"] > *:first-child { border-top-width: 0.5px; border-left-width: 0.5px; @@ -2211,7 +2171,6 @@ html[data-codex-ui] div[data-cx-sm-panel] [data-slot="settings.section"] > :firs border-radius: var(--cx-sm-radius-card) var(--cx-sm-radius-card) 0 0; } - html[data-codex-ui] div[data-cx-sm-panel] [data-slot="settings.section"] > :first-child > [data-slot="settings.general.item"] > *:last-child { border-bottom-width: 0.5px; border-left-width: 0.5px; @@ -2219,7 +2178,6 @@ html[data-codex-ui] div[data-cx-sm-panel] [data-slot="settings.section"] > :firs border-radius: 0 0 var(--cx-sm-radius-card) var(--cx-sm-radius-card); } - html[data-codex-ui] ._card { background: var(--dsw-alias-settings-card-fill) } html[data-codex-ui] ._cardActive { background: var(--dsw-alias-bg-module-platform) } html[data-codex-ui] —— 它们**吃令牌**,不是硬编码灰。该令牌由宿主主题包 dsh-client-ui-theme 在 @@ -2254,24 +2212,18 @@ html[data-codex-ui] body), 这条路径由 scripts/settings-modal-verify.mjs 的两条集成断言把守 (未选中卡 == var(--dsw-alias-bg-layer-1) 的计算值;选中卡背景 ≠ 未选中卡背景)。 */ - html[data-codex-ui] div[data-cx-sm-panel] [data-slot="settings.section"] > :first-child > [data-slot="settings.general.item"] > *:not(:first-child):not(:last-child) { border-radius: 0; } - html[data-codex-ui] div[data-cx-sm-panel] [data-slot="settings.general.item"] > *:hover { background: var(--dsw-alias-interactive-bg-hover); } - html[data-codex-ui] div[data-cx-sm-panel] [data-slot="settings.general.item"] > * > :first-child > div:not(:first-child) { color: var(--dsw-alias-label-caption); } - - - html[data-codex-ui] [data-cx-sm-hidden], html[data-codex-ui] .cx-sm-hidden { display: none !important; @@ -2286,8 +2238,6 @@ html[data-codex-ui] .cx-sm-empty { text-align: center; } - - html[data-codex-ui] [data-codex-ui-injected="settings-modal"], html[data-codex-ui] [data-codex-ui-injected="settings-modal"] * { box-sizing: border-box; From 43e87dcd49e384c9022ffa86845e94d10bd382e0 Mon Sep 17 00:00:00 2001 From: Agent-Evo RSI Date: Tue, 29 Sep 2026 01:10:41 +0800 Subject: [PATCH 3/3] =?UTF-8?q?test(sidebar-color):=200.6.4=20=E7=9A=84?= =?UTF-8?q?=E4=BE=A7=E6=A0=8F=E5=BA=95=E8=89=B2=E9=AA=8C=E6=94=B6=E6=90=AC?= =?UTF-8?q?=E8=BF=9B=20specs=EF=BC=8816=20=E9=A1=B9=EF=BC=8C=E4=BA=AE?= =?UTF-8?q?=E6=9A=97=E5=90=8C=E9=A1=B5=20+=20=E5=8F=8D=E4=BE=8B=E5=AF=B9?= =?UTF-8?q?=E7=85=A7=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit main 的 scripts/sidebar-color-verify.mjs(自带 CDP + 自写 PNG 解码)改写为 scripts/specs/sidebar-color.mjs,走 PR #3 的夹具 harness(t.page / page.pixels / t.shot): 同一页并排渲染新值与旧值两组,亮暗各截一次,采样点与判据不变。 验证:node scripts/verify.mjs sidebar-color → 16/16;全套 224/224;npm run check 67/67。 --- CHANGELOG.md | 4 +- CHANGELOG.zh-CN.md | 3 +- README.md | 3 +- README.zh-CN.md | 3 +- scripts/specs/sidebar-color.mjs | 102 ++++++++++++++++++++++++++++++++ 5 files changed, 111 insertions(+), 4 deletions(-) create mode 100644 scripts/specs/sidebar-color.mjs diff --git a/CHANGELOG.md b/CHANGELOG.md index f44cce6..f731d47 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -48,10 +48,12 @@ old flat scripts was re-expressed in the new ones. token cannot express both. - `scripts/live/settings-modal.mjs` and `scripts/live/settings-sweep.mjs` are the live-GUI checks for the modal. The sweep treats "found zero settings pages" as a hard failure — it used to report PASS while scanning nothing. +- 0.6.4's sidebar-colour verification comes across as the `sidebar-color` fixture spec (16 assertions: both themes on + one page, measured pixels, the hierarchy direction, plus a per-theme negative control). ### Verification -`npm run check` 67/67 · `node scripts/verify.mjs` 208/208 (8 specs). +`npm run check` 67/67 · `node scripts/verify.mjs` 224/224 (9 specs). ## 0.6.4 - 2026-09-28 diff --git a/CHANGELOG.zh-CN.md b/CHANGELOG.zh-CN.md index e4aeb0c..85f8de0 100644 --- a/CHANGELOG.zh-CN.md +++ b/CHANGELOG.zh-CN.md @@ -44,10 +44,11 @@ 亮色那支拟合对暗色不成立,一个令牌表达不了两档。 - `scripts/live/settings-modal.mjs` 与 `scripts/live/settings-sweep.mjs` 是模态框的真 GUI 验收。 扫掠脚本把「一个设置页都没扫到」当硬故障 —— 旧版在这种情况下报 PASS。 +- 0.6.4 的侧栏底色验收搬成 `sidebar-color` 夹具 spec(16 项:亮暗同页、实测像素、层级方向,外加每套一条反例对照)。 ### 验收 -`npm run check` 67/67 · `node scripts/verify.mjs` 208/208(8 个 spec)。 +`npm run check` 67/67 · `node scripts/verify.mjs` 224/224(9 个 spec)。 ## 0.6.4 - 2026-09-28 diff --git a/README.md b/README.md index 2123a4c..0aac547 100644 --- a/README.md +++ b/README.md @@ -152,7 +152,7 @@ ones go through a `ctx.inject([...], cb)` child scope, as the model picker does. | Command | Coverage | Requirement | |---|---|---| | `npm run check` | Syntax, JSON, manifest and `peerDependencies`, artifacts in sync with sources, the DSH client plugin contract of `client.js` (executed once in isolation), scoping, override-layer and power-rail pure functions, 36 WCAG pairs, color whitelist, encoding, docs pairing, machine-specific paths, the settings-modal contract (sources / scoping / host-first anchor / assembly) — 67 checks | none | -| `npm run verify` | All fixtures, 208 assertions (table below) | host packages + Chromium | +| `npm run verify` | All fixtures, 224 assertions (table below) | host packages + Chromium | | `node scripts/live/gui.mjs --url ` | Real GUI: shadows and both dividers, plus the model seat — 14 assertions with face B on (takeover, geometry, a keyboard change written into the host store and reverted), 10 with it off (the face A pending window; `--latency` adds 800ms to that round trip by default, since locally it takes <60ms and cannot be sampled) | a running `dsh web` | | `node scripts/live/settings.mjs --url <…>` | Real GUI: the card on the bundle page, its 9 rows, no override at defaults, switch and accent writes, the host seat coming back when the model picker is off, survival across a reload, no intermediate frame while switching theme; resets everything at the end — 30 assertions | same, with the plugin manager enabled | | `node scripts/live/settings-modal.mjs --url <…>` | Real GUI: the ㉑ structure layer and its visual layer together — the grouped sidebar, the "← Back to app" row, the search filter, group headers, host node identity (nothing moved or cloned), and the attribute-first hiding that survives the host rewriting `className`. Needs a live `dsh web` with the plugin manager enabled; `--explore` dumps the structure without asserting | same | @@ -168,6 +168,7 @@ Fixtures: `node scripts/verify.mjs [spec…]`; without a spec, all of them run. | `model-picker` | host-menu · power-rail | ⑫ face A (the host menu) and the pending indicator; ⑳ face B: seat takeover and hand-back, geometry, no commit while dragging / one snapped commit on release, no snap-back and a spinner during a slow round trip, **the top-rung violet dot matrix** (5 rows, 8 tone buckets, hash-scattered phases, feathering, both reduced-motion switches), the four keys, focus ring, Escape, model change carrying its default effort, failure notice, reduced motion, dark, the switch. The fake directory is shaped like the **installed** host (no `pending` in the snapshot) | 20 + 62 | | `rightbar` | rightbar | Shadow layer, right panel, both dividers | 42 | | `sidebar` | align · surface | Sidebar column alignment; the sidebar scroll fade (Codex mask ramp), mechanism plus per-pixel alpha | 6 + 13 | +| `sidebar-color` | sidebar-color | The sidebar base against Codex's **measured** pixels, both themes on one page: light 246/233/255 and dark 15/31/17 (all neutral, R=G=B), the sidebar-to-content step in each, the hierarchy direction, plus a per-theme negative control | 16 | Options: `--host ` picks the host, `--shots ` the screenshot directory (default `codex-ui-shots/` under the system temp directory), `--verbose` prints the readings. Fixtures read the shipped host CSS diff --git a/README.zh-CN.md b/README.zh-CN.md index 812c32e..2c32be0 100644 --- a/README.zh-CN.md +++ b/README.zh-CN.md @@ -143,7 +143,7 @@ node scripts/build.mjs --check # 只比对产物是否过期,不落盘 | 命令 | 覆盖 | 前置 | |---|---|---| | `npm run check` | 语法、JSON、清单与 `peerDependencies`、产物与源码同源、`client.js` 的 DSH 插件契约(隔离执行一遍)、作用域化、覆盖层与功率轨纯函数、36 组 WCAG、彩色白名单、编码、双语文档成对、机器专属路径,60 项 | 无 | -| `npm run verify` | 全部夹具,195 项(见下表) | 宿主包 + Chromium | +| `npm run verify` | 全部夹具,224 项(见下表) | 宿主包 + Chromium | | `node scripts/live/gui.mjs --url <带 token 的 URL>` | 真 GUI:阴影与两条分界线,加模型位 —— B 面开着时 14 项(顶替、几何、键盘改档写进宿主 store 并改回),关着时 10 项(A 面 pending 窗口;`--latency` 默认给往返加 800ms,本机往返 <60ms 采不到) | `dsh web` 实例 | | `node scripts/live/settings.mjs --url <…>` | 真 GUI:组合包页设置卡、9 行结构、默认不覆盖、开关与强调色写入、模型选择器关掉后宿主那一格复原、刷新后仍在、主题切换逐帧无中间帧;结束时全部重置,30 项 | 同上(profile 需启用插件管理) | | `node scripts/live/parity.mjs snap --url <…> --out <目录>`
`node scripts/live/parity.mjs diff <改前> <改后>` | 14 个界面状态逐元素存下全部计算样式再逐项比,0 差异时退出码 0;重构靠它证明外观没变。`--ignore` 可跳过指定属性或新加的 `--变量` | 同上 | @@ -157,6 +157,7 @@ node scripts/build.mjs --check # 只比对产物是否过期,不落盘 | `model-picker` | host-menu · power-rail | ⑫ A 面宿主菜单与 pending 指示器;⑳ B 面:席位顶替与复原、几何、拖动中不提交 / 松手对齐提交一次、慢往返不回弹且转圈、键盘四键、焦点环、Escape、换模型带默认档、失败提示、**顶档紫色点阵**(5 行、8 档色调桶、相位 hash 散开、羽化、两条关动效口子)、reduced-motion、深色、开关。假目录按**安装中的**宿主形状写(快照里没有 `pending`) | 20 + 62 | | `rightbar` | rightbar | 阴影层、右栏三件套、两条分界线 | 42 | | `sidebar` | align · surface | 侧栏列对齐;侧栏滚动渐隐(Codex mask 斜坡)的机制与逐像素 alpha | 6 + 13 | +| `sidebar-color` | sidebar-color | 侧栏底色对 Codex **实测**像素,亮暗同页:亮 246/233/255、暗 15/31/17(全中性,R=G=B)、各自与主区的档差、层级方向,外加每套一条反例对照 | 16 | 选项:`--host ` 指定宿主,`--shots <目录>` 指定截图位置(默认系统临时目录下的 `codex-ui-shots/`), `--verbose` 打印读数。夹具取宿主 shipped CSS 加按渲染代码复刻的 DOM,用 `getComputedStyle` 读值;它没有标题栏条、真实 diff --git a/scripts/specs/sidebar-color.mjs b/scripts/specs/sidebar-color.mjs new file mode 100644 index 0000000..451ba28 --- /dev/null +++ b/scripts/specs/sidebar-color.mjs @@ -0,0 +1,102 @@ +/** + * sidebar-color — 侧栏底色的像素验收(侧栏 <-> 主区那一档),亮暗两套都量。 + * + * 判据不是本皮肤自己定的,来自 Codex 应用的样式表 + 同屏实测: + * + * Codex **没有**「侧栏色」令牌。侧栏(左侧板 + 标题栏条 + frame 底)= --color-surface-tertiary + * 以 70% 不透明度叠在窗口底上(app-shared-*.css,electron 窗口、左侧板外观非 content-surface): + * .app-shell-left-panel:not([data-app-shell-left-panel-appearance=content-surface]) + * { background: color-mix(in srgb, var(--color-surface-tertiary) 70%, transparent) } + * 那 30% 透明意味着渲染值随窗口背后的底而变 —— 所以只认同屏实测值,不认推导值。 + * + * 同屏实测(避开文字取样): + * 亮色 侧栏 246,246,246 · 选中行 233,234,234 · 主区 255,255,255 + * 暗色 侧栏 15, 15, 15 · 选中行 31, 31, 31 · 主区 17, 17, 17 + * 两套里侧栏都**比主区低一档**(亮 255→246、暗 17→15),方向一致。 + * + * 同一页上并排渲染「新值 / 旧值」两组,同一台无头 Chromium、同一 DPR、同一采样点, + * 亮暗各截一次(只切 body[data-ds-dark-theme],不重排版)。旧值那组是反例对照: + * 它必须复现出旧读数,否则说明夹具分辨不出差别,正面断言就没有意义。 + */ + +/* Codex 同屏实测(判据;改这里等于改判据,必须同时改 CHANGELOG 与 README 的表)。 */ +const CODEX = { + light: { sidebar: 246, active: 233, content: 255 }, + dark: { sidebar: 15, active: 31, content: 17 }, +}; +/* 旧值:亮色 #eef4f9 是某次蓝底截图取样,暗色 #181818 是把侧栏当成「表面」那一层。两组都留作反例。 */ +const OLD = { + light: { sidebar: '#eef4f9', active: '#e2e9ed' }, + dark: { sidebar: '#181818', active: '#282828' }, +}; + +const BOX = 200; +const AT = { sidebar: [20, 20], content: [240, 20], active: [460, 20] }; +const OLD_AT = { sidebar: [20, 240], content: [240, 240], active: [460, 240] }; +const PAGE = { w: 680, h: 460 }; + +const block = (id, x, y, decl) => '
'; + +const hex = (c) => '#' + c.map((v) => v.toString(16).padStart(2, '0')).join(''); +const near = (a, b, tol) => Math.abs(a - b) <= tol; +const neutral = (c) => c[0] === c[1] && c[1] === c[2]; + +async function sidebarColor(t) { + const page = await t.page({ width: PAGE.w, height: PAGE.h, dpr: 2 }); + const html = '' + + 'sidebar-color' + + '' + + block('new-sidebar', AT.sidebar[0], AT.sidebar[1], '') + + block('new-content', AT.content[0], AT.content[1], 'background:var(--dsw-alias-bg-base)') + + block('new-active', AT.active[0], AT.active[1], 'background:var(--dsw-specific-sidebar-nav-item-active)') + + '
' + + block('old-sidebar', OLD_AT.sidebar[0], OLD_AT.sidebar[1], '') + + block('old-content', OLD_AT.content[0], OLD_AT.content[1], 'background:var(--dsw-alias-bg-base)') + + block('old-active', OLD_AT.active[0], OLD_AT.active[1], 'background:var(--dsw-specific-sidebar-nav-item-active)') + + '
' + + '

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 literal 115445 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 U^XIUQlDW7}XsbuZX<@LmaP{x+&+kg4KMOe> z|NPd@)f0BD370H(=811aDPak1lTzlRYc`F6J2TQc_+{3&5P=m73nmIwy1Ke&&z(DE zB4mSiw`t!W?r&$w#nocCdpKIdNqayNfnh-!FbPPF_q8epo;6gecql)NSm|zgekkNt z|9!9)*G`ak)Y?r6`NY=eT2MQ~t(Zp@XA{;?JIi32UWV?2`JPwcz4Z`NQnB7v zHznSnK36g?q?MBsi}28aij0ekJI~6=*?G;n@QZW!d!51Hy5gQuIQDZt0KO$&Qa}7Y zzCMFm@NO`aYiA;`ld?=7Umq@2n5Nf%f){EnKl$SV1&2oCZyjsS({~lVaGo$(_Rjr0 ztEV;fWbf{%uc{W?@Z1>}mYCD*cE2{6S9Vu&_Dsv{>}=xKRK=9oy1`Oc29%tQ`@D#T zh5eik?Nn>$KNAjJ)Jj!VVo;pX2TwyD0Y*kvPE#2xBP+cpR!{V-o}hJt>3?B+U%utAc=4jwdBW6dRLX_&?=|}zcm9}v##LZrC#a8XJCDL3HE+x1sWQNp3kwT?VJD(6 z?12;JsIM~H_v#i}QSj=r;%OY5W(EWg;hc(>fhNtpnZ5O=Yg>;zx04b>*Jv1%x~&tB ztf^llXg@vt^QrIhC|+Fmvdntk?F$e$9lwJd-Im-ZT|T>Lh0$3-dj4X znEX;&uzrAi@gP^Jv)-0b)WG=uZhP|wM>#Ku6;RSAFutSKI59~{$t8pnNUpt(8cjt2 zJ~wwD&+p3PI8EdY;e92U_pzbAHfXr;_5ul+xL>+T`*)50_2$@hx&xC2rxuxi8+_DV zq8cReQ)Cs_zu*SHja6c^m{M}Kox8S#o?gIAa+eZgR=*ks0c&Dpv8nipVT3A3hQ~utc^oU^5q#T!;K*I1;F83tP+Gj&n`E0OuFk`J zk1^_{nADAqvZlB1V;+%9Uga!~()5WQA1^Hk%ad($Mz>M@o(XucJ0b_5~>1j z8k&2qA6diw2}M2McYHoC!{hSWJVo&*bfy?y#o^~!at^bBo}G5+u|O}G2LZ$s1edAT zW7`NP=wd3k1@{+nhn<%NG+q?}i-FIKFtw84x0kQxugOhYOU_i_GnsiwyFssh6d|^k z{>`+Y`9+VD!NZ5kZ}%VjMHHZ#7bedk>H|GmTCR-ODJ}N(3QF~tnh!D+QmdCIR$XAs zHyqSHXphM^F7<1CD$!@LT)D-v^Yi2kHfXIqD? zCVl<-6@;2y;MR%o@!5~Mf9vk7i~{pMz?fC$AFMoN#uiFliQ7UlNF~%2%zdq=qi;L>f`}rIPq5CwhbSb$n;mhB8 zE;8@GT(^|c@*S3XqjA+Ef+7}lQ>!F`R4aE}EILzZOW*z#r=AO{j4E~}KH`gnX@JhePmRr-zAAfNA>2{M?HPz`{CO|~+U{_bqYdDB*RV?6< zF}&8NcJ)4=qBj5b2q|>@r{TRV3)L0X7`+cT?oyNd=k#zni^e``MZ5K!?ERX(#A63N zyRD@O(sz~n>lRkI^{tQxcIZ8PeSBP}Bkiwq7`&7KM@y-u(`*7bgr=Cc)eFrA!C|!# ztY-FuHDzrEh;nTJ6~OVaPeu;o%m7i45FcL#$~E-nihwpTA|oWL!MU-a`@Fonzlelf zz=_0VK4gMdSDv<}^~PG-(szfx$#w210$GPH)CfOI;nc10`=Hy!dTm%CITJjk!6GgR{!X zvNU(Y&ozNm$c zz)x7Q)n~k1GS6Jo0_{Kqs7at?zeGxe=$s<8bZ9h|f>6dC$*th(X_rPysTG5r1lrnz zQBP{H2vi}2#lQS7(5tV&H2mvVRHb#|Rj0BXhHUL3F_x(ymcbI^SrZn8$la`zRw<-| zam9=uri!qp4V@_v37tLq9Ht{!K!(LIf+{qSl&H9&&2G6!+ ztVK)eYVfhT&uJqN_dJG&97{I8idp0F^s}LBZ}gN@JMZ1c@_cJb1R~#dUHY%nru=K= zpOKdWw22866E$X`pGHvr1Ss&c4Eak%Z!h-SkA5J(lA8R>pXS-#*5W>JIV!+3K|t7p zl?=np*Rx<_BY1jE_g5p8%!fh?48^J{PEuM(~$oU#!t&ni^Mo)zCy>e}&d-F*9+# zyv>oAZRUletrD$et)fQKj|DOYvM74qAuUAJB}xK=#N%S zmB(1eFi)QubeRkNN%6JxUc8!_eQGKI7U`iEpv}a_2BYo!MQa zUZ;C~0J~tCvyg4L7QeZ=*IZORZ|LgGd}JL$!ipSBCez;zUk!?#bLNZSv)nv4+-@q4 z{&SJB7*PU@5`-c*%{>~LNl^AUYgT@f$k5pn;^Vi!HC!z)XNeY~rG?>wiL}XLB2q5b zq3wN{2K^!bP`BSF(XmE;kKxs5%F!hF-tm?!zBxJ1-{8(P8zLAkVHUnzA$MTfE53Uf`M{v7dtag5q{{>^ zM~Kt5u)m2cGPy)H&z0e9$aAL`IkUOoD6t0eAo1!E$iz?}6Wx!GYV#d{C+3>G45JS> zwUlId8=T+e-El6++I>B|{H0wXASaNIx+l!ZA><@LNbjN^erSx?FCuSMvaZ~BoDpr# zQe}6ZUmj9JQ}=8Kb3TQOUdo+Hh2=Y=BMom z@b?%sY$Pmr*1U6FWny!4a&Z_HAJD`Db(;7Xqt+z$Oray60cXJDc=pUk2lJKjeH^02 z{ic(J!((Ajo59Mvo0tH=g|z2>iMEAyYN0B%m;bSAm!ZNKH@z#Dpn^_PZ65I)7QuX} zepm4qD^ihQR+_8ACv;>o)b~(rwUP~krU02j`*6jU}AoJRidxlcjE;7dEI9$ zea?N0|7)0XvGz|an@KM+G9_n26rJOrbo1clA!Dz*&86f^GE&woKUwqbi3BwH^rPs# z(-#&z{P9r$1`Q=TK&dnIY6=y%vB{%P!f;%>c;{D~3OyIJHPSGeyGMY!@CSs#MRCJf zxm!Q&iXcdrH|M(kbkgh=6l9>&)SUk;m@hngB_e_=uTb8YWT`kYfsanRa%E0%t?t>m zo;PRR@0v(T)LTESsn?jV?HRpNyHK`dHJwn{JvlI0A+8u0>7JGvq;JxzhnE$PJp%{o zN%57$Gc>fcVcOPu@?&4@$1rr|M23969@!lu2g6Hp334?n*Hgs2Y#YvEmRq2yTnw28Q+d!xPoPb9(|&tIl3gjGM1^AYR(IVa!a@F{Cz@6 zRqCvszVXh@ePUdW^x=vpoC4^coThSNPd{u1#Xk(i(L+mp`Dw3lW&jnD3wdP1m=I;l zSm?>#zkFD29MQM_gTYpY=u5gr@`ZPdPn6Q^efPhgTg)6-8PBae+R6KuA=#102dL+p zG{o&~VUIpDmkorp{G}xhbpHkTaF@Q))-7k#5q?$4Ca=JL7xi zS4@O#p8m3rwo9cq+MY&qE3?tOhKUx8xsN6ZoNKGAtBDS1p7D!FR1NziDV)fNh3eS3 zDEm$BpD{FcrSGO9m%-`$b7+{H;$&w8*>ZERrB<VIe7>>2~G+;;m ztDC=6QztsT4a+l0=OcXZ6GG<@L=Y=lN~Q9hY@wg}Z%% z*Iv9xd>`mg-Jh%9404NEZ%z%V(&65w^Ttff8)$}?EB4WW3c!+B$m5?+f1Yb8!$M$Z zu93Yrk2_GeFj$a1YS{g_(_~UNwLV{l9kVnZ2MM~b&*73XdI)~?S1v|TwMZlfDTG%$ zj~`?*r7Cw-_0PNI>kKV+X26=z9!vJp54?J2G0>5iFohazH&P7W-bYg(2KcW>UzNLHflS`x};;nh8=s*s3X zH*U{#%1;W;S`&=MtkK~?rdS(0pF2mKY)u$TBzyC<0#4Lowp4W1vECaieHt|N)>3An zfgGoky_Hvp=q8GZg!GaHkHBDHgzbD+Qz&~9ChfmJbLLDLbeRH98*~eU=XG>+hG8HC zp+fE;+C#xbI!WuJiy6<0=wNHZ+bI-vGLm2V78-i?z=IK)d-s_)=5Pw{TK^%-c=GYg z@@BDTj^~7TV`h8B)s7+&$lUA3>}H|^)sdxT&2@*GZ)=k7mH>SqAQWkuYa%dIXpw@w zl#N2|yQ!B9PrvQxV{_sU{Ps$s15jdrtmqdA$}nO~zi2(x2vi`;i=5we;&4*EF%1KW zkpuASFmv{mz8g~fNW7iHaBbtpMAe9kd!FshTYk?b#Y?+8O*)z;SS-6$PtnS-pbDwl z9ge&|ST<-$d3i0Z{j}BGeR5{T>?S}V1+P7c^^@#8mGV5))M(j}&hADR?9D+@>xNEM zzd1?+tda^3jk+^27JND}*xnF)6Id>8p|wAEZe^B=(cZnQ4h|dDy9$|PX>Gg+)Qz5; zvBd*T`Mt8`?V94c<$(w74oWXiu7&6CWPBQZ3g@p!1Z%NOx!g20J3qlA2rl#@-G(a) zR-|-7U?IVbgun=lNl`@U8%=o}&Rl{5vq9*uLV)TU47A?>B_m+)BXv}&Q+=q?oXy77 zXsem#pxh^uyno+BHjt@t^DoZvYYpZu)@4+d>0r(%Li5ma=V`c+(wq|Bu-nY1Hx#A; zUT@x1?wjTwfN+R8{}|VKp}Dz)?-Yhy>FDTy!cDI=^h3wfa?{VOC;JsNaEv8N5^(=o zutx>%$8OfdP|rL9H1wX-6D@C+Lya((vbaC+wYSGyY9jQtUfyu%l zh!ALZd%}6Kg`;xdm7ANZZZp-yFc;}w4wGa5lk>JY%Lx*%dhi!$$MwJ*$b9`I;nP)W zS3i=;P`0&hiy0;kxTqfXM2yobHP56wikJlv84XlMHl!smP8qkL-mLmzJW%_Kh3nJJ z$KVca5>LGAEbIx&3odQ|56()YfX+;6kfp{gMMPv&R8+9Cg!{{rec`Df_KokrlaU(= z3yLhKpGEP`a{798boJP+$fhJTuO)mr2ii&>oC~14lwhzh@I8=vm^}l*XSmQjn)gMJ zB!ZHZG=AdK%r#-wS&rC%&&;~eV87PWJEfxQON#{d(Y`6Yclp>j9=u$vz)5^~*4nBb zZKjbS5&3B)K5v5n*H^~fqUJZg#zhI~3y*6-cz^-N_-2HJ7y91l=&0im#}&-wdRWmm zd`~E~qn4D(QllSB{~mT(Vno8rfaaVo65+MEw~{@2tD#Fq?0eT-LXs~+1Y4GnjM0OTfPfP*!cE4Y z*y1<^-pLcW#Ur39X2V;_c^h|GNEXRoCjHo9GrMK(RpO0jlF#}rd3Z-xzImJM352ML z5~1F`dzZ3*v1-^Rs*S_Z}`sem9bswXdfVz+qmJHoxTH?U{GW?KO?XlrXLIO?+7reUC{5?o%1JWtB@ ztz8b9mwg|=I*P;4r<7C%@Gg$^GdS4T3@Vu}J1eh@{u56qJrR4rQ)hrg119$k&=|o) zWC&wWFj(LQES7h)0PDS>rigoMPQ2YcH!@w2%_@kI9e_?UAU;FVlyZ!*y?}?;SMFSR zlEo0Z1D46Itgruk-Cdt%Q7dQ^#Q3x^1TRpcE-)C>+uNJi6G$%PpscvGN+I;wXEAbF zQ6|qkmX>kZI^6Tcnn4}oJrG1=7D0uwnyiN#1SiFX3l|c-+f_j%gw)42{NT>K_oG-}rqMN)kg9`p+M_-vfjAdJ`%hcM9(&Re#j~ z>2q)DH<8(x>)2Z-MI1UqjH^U6c3lZ69)JIn?tzxT3K<9H9F z2m4FcW(V)05z;QW>Vea9W!JAI1%;BRm7*R^ zY_G>YKG#woh?&NOPjv-@5w+_^E7)H#W3NdRWq-x)!S+mi2~0|-R-3BTsbMoqj5+QD9vRFSxByec=-PGlL+g;c z*fDs5eJGIyU7xz5CY-#$4>wS zRxZ-p80@q~^$y0Uh%a6Gs*f0iDRuB_U?vs>G1CS~GSNq1jsLZiIk~vH%KL%M>Z6~M zrF36W(j@)XWF@(sG@ml7s%5UYgoGDg-vz!Tq)nUu^k2}kPhO~^gC3kd<@IzJ&1R=% zXU_%H3k2AcrP??#Ka2xwu&yIZ%N=H{YW3wxr)x{uT*5Tqj*C`@5It z!I6EB!cUrQY_Q*YY)ULzYr1i=f+*NTo!j33-v=Q`1K?Q)P?23=Kn@0sDq-Xr%osk5 z9z$TNS5{VDs)h3DNkm=n3tS?Y0c^}86#fR>Bj2FCGjzx+c=R*kHd@^I$m^S*tp#&W ztqgykR7uWu5S*IRm#oWC`GrxKuvms(df2vG1Li@Spy?@gSRI3tNX27u)4t);r}Jl9 zU`t^J3xirYr@%ZI!K(9ddsm2c+HT#&B;9d)8n>D41NUsbZvemk)#Gjd7T@HbtE=w@ z#qKhFUUW$K?}jFRRbtr~8O=dL?0`IXwj~6Zeeiy8$cwCFkrSwc*|FeJ9`+2NR_RbS z8dg@zsm4%v6oOW30U^r7^x#1@(0!O_hGP#$%1OaRPG8_E_3=w|ORbFH zk2rN!tBxP%#7_$j*q>AqE(@#Sg_&OP1v}~x{N55vK3Fs$?JrjzyZw!Co`NGA{e7Gv za#f|=CxVZH^FJ$DRn~z6Ni{$Gial%-U^#2*-eT)%Z*OlH0{#1M2N3mNAo-EQ1TZ9m z2IkVnYb2zk9AIZoXf`x7{O>AcH3Ky-5Mm~L;JjldSuq<8&Ub@GB^3=NC?>d64ppSh zOT+gLHz%^Lw}^3GyFo3~v&hT&-@{L;nkA4P!7w)+37!_1N|^(LI5_rPKpVsuLGj6% zIYhrIpo_)P!Vv4r))dQ{IDE~Yld(>#J-E4)Pm?Bi5v5oalVwMz!p$K*P*dzMiv}~u zQ=qY(L#(Mxl5yhyK8h@!5A)N9DjTW?-`ASdx?*S|x;|ZT& zO5*BkFm70&Pq&ipi`R3Uum|Ub4aXu*kGJdN(%7y{f__r(dVX+}2s7JRw+P*EGmIH)r7wIAGdoT$A zN@4-e)#)#zE;2YFGM;`C{ERqYVr2Ys3ZD=tZ}?*-fE@6{pHJyU1Zsgn84UTnl0NZF*JtSa7zTzV0QA4ZT0%2jF`Tehejl`uab7 z-pgB9)su6UEqIcAmkEp~n|qRyq$fU+u|XjJRX|BCrgFx;cri zOQ_5xSB(-TKZ`NWIPtdzpInbDS{COzLiRqGaRz5|Tz1#Mj!JQrdY<}tjIPXa&t z#E%LX%P_>h*7w)aLmqs9bt+K*nMyn;mtlcZwu1}pi zdsgnk34R{Ahq;Fvn*b0ngL+>60sj7plA$?PlM=&8N-s5@loB(#D%)h{pMuapjwQh} zh$=bEm?EfOQls?cOzqqoxtl2V{{olBiwfS6G{kw)myO}(O%G}K4mO2Yj0lG0ywbAI z#tG1sEe%&57f(k~P*FjHR{?GknD!olmV&AY?8i3nNR1WkP`Cdj>%v2CKALWA8~l3fkzR9@ z>Alv2?hLhU7^^W*9tx2l0M7wnO$jFN+^10N!}ci#L5>UOHZORV^ZGBbpYG0fzVKiYBXnxD!t+%N#nDYs77R1kmnb~N!!zw{m!L-qyk>&;YL^Acbc znCa~UKi48_^UTZ)jF?KyT0eaFR`3Iy9{_nNq16U{#XvSljR%ROB?$H=C)0gs1!oSE z1#7(lfiY&Ot3G?f4#-le!xJ?y4;%vgHlWZ@RaFIsJd6VnlsQe9-K6Bz{{0Ca%K#y;?$^hYmFvE9e{^+^qdBC1nEV}*9^3^wcVZt?Uygy zCb;@w1fIC#2pL@PVC9jI;@3g&)-!9A7!-j6Dl8*64=;`k-RG?ogPBTc`Ycv#YKd)- zVFk{A0B6Gv<36AV&!jNlow;K?SOV&H+MpW44Gbp$`e)MUR8zQ?`{AZU=w{3@Y~@lD z1PU1mNnFb@Mhs2P*m%*u1yA+pyew(G4^28J1#m`ov7!X7}B1u96(UDSZ5f;cY~>vv~rz|aNKWhYyH z`3jS&LA>VNVCgov_g7)M>$=MOjIHY}r7jz-Vn!y?{1x%dpwdx8$?38OGf+XnlW;E6 z%;KpqNRvz&C3#Sh;UjV9nD-oyhr@yq~0b69S8K9KyG zYZMgy@!|n6V!8xC>Bpcd(q_g2^H`L}&vhU&Y{8}eyTm|P#+1FL-b*5q?sBUdiQ z!UG4(WFO|Ao4>REViuN^Y$Q`rk9h;L8FXreA3nQ-a}i8nKO?@n{56G>mz4hEvIT_j z!gmON!!(8vmDlM#uHb%^KGdD;z&r;!Ks(rE*9{PI@JGidZL_`<`3;sJ!!2ED-eQZSE% zS#N`(5qSA97MgK>V z^Rt8t_4~!oa!XrY72*u_=RZqgUs>O`DJWCq{E_#&Wak%eCR#L zAp6hDNRpMV+%A;5(9*0oJ8U{a91|gH05eTMKtS;nAeEV7y$UI(Y1Tae)(pvXb7eDW za+vMde3k@agW(@gN<&44y8_+gm^w)SL3_p*!aOd@mEFMdy zW-c_AU9XGh9AGoU9xk<;lG@K$X$a$9f{ZQDh_IjscE=bwS{q1$gP4DNkGxlqqRb>p z)k6aH6JEn~O3G669gw2~iYl>unot6i-sXbS*qWXixll6~eKRDvsy$YCWcq8mur*?2 za@_-OO^Bc%w^)%1u=Z8^YOqE9Z>QWcYk6t%-Im-=H~7+h4vc+zeThG=UTy5z~mU2q$On98Z*BL7PoRaLOrHI4e3-Q|5ur7BPBfqlGoE z*`OY;bjj6_x68|p&t57wZXgVRc5#Bc{KjL93H($psVU)~w&1cv+^A3z^Mhc|ovS9T^-v$?+9xjQ(uhLDvihXRx!tRcLFIBqSgr;t5wfjf1SBqDyYF zo&_XQ#p5(|b3cDVsN>$$b_i2SaMXHN0U-QTg-tT(g}_XezF|{)nA&dx_-@@KG`Z!9 zU>fVr)MP`8AqqA?p59OBn%BXbX{@i027R)dAi*$P%;zp%G_3J(eU4wWVj}kY8LuLg ze~5L*;Y@~RZqAclS+T_@Eiz6c#g<`}CLeFhL&d(d8VKPg-o!Fkw{{v;#$XM5i#0`3f&`~5w}?YV2p=qj=(Otl z=FGd7#UOLR8IBenqc~Bon#&I78606>7mHL)DMPiu!zv9)HFR)Q(`P4z&6uVc}%#}F!L*--ols*M3@!|&2!+h)kG=`E`C z;v`-Rk53SffSR)qpkR>Db)ds^Si}OBXtv75yFs7afMYP!#S`G?cLm_Z`2gC;Meo!K zkSq)TOusf%{k7ohRyB7{TM=OEjb~a45IdsJ6otkfs9P_NP>}c;LJ|=Z=2lUVimIx0 z6*FN0x5F%5_8hoUAFpI-sT38|oGK%HQ7jyariI%ip^$S4Vw=(ywchoC;t&!DA+6`` z_80-FEpvM*FT20fRLF?46~v5zbA1>VaH1JnpyJai^xKMdCEF&g|M^Ek5T%dUFeHii z!}A-~9dcS8-9_potk}5vV3X5}eqjk&l8tHzYbEg{4IZ&VR5A3*5SOYg+|rOraRoh|K!D z(ZZbDHwBmOa)|xFs8k?TI-hRg9=x`tW^iy6gEO^^3DpL;=+@#e^m?ge2E7BBnu@uB zP;T$Yo!tT3s8w`!Jz^_Fq<6)5&hm)-PPK>R`_FPlp{k`x4i&pyK~|cnP>LW(=W(q7 zH1@zW^Ud&KIx7#u7haLpwziEF|3A8JA4$Yx5_Mt}s=jfkdB9L1^9flm!txIvD#xZZ z^WC{4m%adx9@l*rwl)-maA(#m-OhSnYTV%G{2H8lo>Kw5(Rn-IG*j^#gDa$6kC=&o zM!+#Gn=b()qX4mcJ#btGrR+gX3=f6l+3F+iOtti2`)Nq0@c?zKMeas9+~+#%QD|Mj zUNmW}Gqo55X?UMTpWaC8N5L&MF5q(g!U|FfJI?ih%-j5?dCAMu=X>_B4FkHMC4$tJ zuxIq<)^gSlRR^A!m~MlS@j4FGxpeUp@=MY^S8AT67>L6e!8i-{`^^R5c3W>XnFKfC0_@x2mlumtLpkMS>DDjw>co?P3*hxZbs&H7j+d=w$OR>t}$(B^x5)Y28m>Dn1-UKI!fTLepqk5(KA6tHY?yMyV7pb(j zRDDoBL9?n2&Lt$DVq;?iDiBLJ$HC^>(+rPqrW@$a8Zc% zjydasJ*a0EdJeNH6-+TJB5Z(quLNL!=;$M+=CcYrDt^4CjK;wE*sXHa3z0TMsu{J> zFaWzyC(>TMx(m)E%J?ePWh(~*-N3H`2I$1XG1zmLgnw6hGV*UvchMz0o#;3}wmy47 z*nUqibun$bM1n5q1?x7!Nczf2bIlsPH1RHehjhJNEJy#^ zywlhZCe4`lG}NZb?k6Qv)3!m(><+n^YqD|Kh=B~Ee8BCadZ_PR2DJ%b0*^d%nT{hx zy*z_k!E}eTV5@^QT+WMHCcUXeSz7tVz$-cLK*7EPFWo;g7(wlU<4E`ci{THUix)yp zuZ3s5FG$O`m-Tew9yK%V4v0-1CZlz()lT0UIBXmxTQ6>0Rr zR>v0sk${R0ZoK^3ljc6nG8O9!_)x8D0+aL<>L?(b^7HedD%zdT%=OPaR9p`I-EFWq9$YVwCWUSZaSXKTIMeCFfx5IGaG6L(!X?q$_Pcva9`p zXO7bk$*cttZB3ETv(t%@X$r0 z>rv}%@s^YojRzbHJ}yGKq}lsxYp$X$&SNfJR73k1e3=&~%!QqoM_tFOTn!={>g$Wl zyC;zZvekRg3#zE7z~7;MAM1EZtf#_>U&p!854M+IH8OF4m|D$?^CNo$++z83^z?v4 zKZA(T4<9}lMCv=VbHmfqF1Jr%)Q1WUGNOo}-Tjw}%Bm$0%rKrHn)nM*&osR4IVq5P z)Ik?7p|Bb7SQukXl6?*fAOqcZsMIw(++i6YJuTp@<&+z6dO&52)CkW_1Y`yv5~veS z{ILrV)dsejBNs-tKOYwFQOpD0>vvFIvT*^-)1JNW?jUr8Y0yLs~_Lt02+fm8qmyhOEh70H!-fQaA*s0NUochpt_?x8hi@t9Aa zN?g}X|13AW9qD1h`1Ojj3Bzj*T0!ol6!acj9?DlY$on@4uX4%M1DXJl5MLmh=oiFJ z41;vV-XNt1;dEhj7#mN*S;S>KVqGc>G$I(;xsUpwz+id1&c({g%FXSxyA~be1<#AH zem%+-SYY}(;mdy(j}mKWHXgP#>R%e7xb?u)uv*RmJrhn`=H<0#)C?gf&s-1!YzZ!; zY*-?|Y(kM=17H!{#Y`uFg4PfReTE~n-w?Q!30`4#&!m5M;an&dj+YLk8U{-0)vH&4 zFyT@l^7z>tzWm-_B>b2$h>q`5?YiUwN6hxmICVC!+4k^}(-ElTP6ozIy)}$8d1`x5y;F5p*g1c;~^jh#cNkhAo9^QkQ15Z)2l^JshryB2dCzBoV+9 zTop)J;#tzsKqZPCybytcfMHjz;HGW?dJkuN45wM(-`(q~Y>)5wygKl3d4~=Edjk}f zWl*20Jcv^~1&0gUD(9ai;{DOU2g;PIcnr0F5*bLy$$$4I5C~F1hz?`_yJqn`{(lUb zN9^hJ`G8IWV8&%NggBmn&5HT+n=tVImT&2ZiHSko0hvuSWMrm+AK}nCM8u5%sQyMg zL0~5i=rUh=3I@{|!70sA#P10QL^(Vm=(_&g14=bWEWVtE#wUKyt(6H;s4@RMg%)ZV zTL8!lKXbT@B4hAs@AbiX$`9f~+$z`zmq$w3z$faO4rfH95%}@F3z@QxbT@nUK_k|-6py@+c&kHDM zh+qHC&({0y@%w#=Y2W{CX}7XkL|~CsR;@g-w|Q%$p#5rWXqZcZ&Y9`9h87hq$dXF| zl7gfbkofk?!j4pD7lz9W>S#DmbiUReZbii;OfG@~SBwq1f^>i!VE3N;=bv!sj(dI} z$32{^GAVgWI$^&UHAK}0j^};mhL@#1y0g``C2%)UO{)ogU1E%_i?@(HX zHzIbG3@R-s7MTT)0F~Y3Vq`@9NyzWAefDez$!&&%^bpWrw+t@r?!p@=lO|a2fGlY; zRfDCwx(Hq};13NE7%Z6G*(`F6+GV;+8bL~i!C;szV|i_2;d@3Sp8$|Yk!0$ix2F35 zJ{eF=<&@Jje_DeUd?4=_03EJ_eE=Y?W!!CgdO??UU;`pmrl7d^ipnyQ?4ihw2I^Jk zp<^s3L^;X8#{?bl4}b7;szql@pI?Ds@^S~Lx1azq`uK<4@;>zi}j;Nh1qaMRN5j>I?`wHdSCbj+x;M;*(&J0fZC@0*VI@-i$Ys7=R$*&l$5^>*Y{$qtE&rEI5Wk-vy`^hFg7Fr3B)Z~pCI6-E3eVK%0M4-?4g4U zy<^EV(+uC42`CA?$Ub|x>}4Wgc~edIBuQVawwO@3f8A9P-U`?qy3EhhSivntK6Wn7v}0idt;#|hjnn+Snhrh(;X8sd1vEy#a=i{MA+xHZd3ALa;amWt zu7G?B06k1(>bviA)1P}<-T1mA=ZD_;5r)t}>iG}cLGu)a0`yWel}3?_j;Dp~l-8?K z^U8}lALh2lh0$6rw8Tweb}H_;o?80*^K1`x^G`|J+UC&!Dvc9a1Hul8Uj?}42#)C7 zZ@!o3Ax9)!9Jg9}gMygsmem!5o4L-J(oWVQbRreKT0xN%#AgC@!_Do3!g#m|M{3Kv zq!bnoOAlP@R-;Aw^CgI@nycems;c`ISC5$f{?MK0Ub40ioSmJQKLCY!JlXILitVWV z6ySRdKw*tgr;t!>;!*7GVvM;!-1cS)KmL z&MD3h*guCh9-hoQu%&`nc$)tR_>Web%LKik-Qx7gL+`WpRv1uf;*Ci?v^t0$PIbW? z=*+6}JXRaL;y^WY)bUn2E+E?31%s>inIeoKp3Mqj&ZmjYOBkQHYZ*XIAschy?=PIv z0i|5l!3lFVkRqQrL0I}I(}iAYFm0A1OY^3H-F9~+&6c)pk+DzaNn1xuz89M@htc!F zL^7{*?M}mfW~<%v(h3yWJLPX4=8NMXW+MkEk49%t);*#BmTB4n8adn@axbr7+V@=lA~drx)uA1eaF$4}ZQ9Mz^KYSNI~pQ|hlXMrNlZ+A z50!z4)leSLxTK?8vz};)pbN7b_B57fh>tCdZ0NLJUD?G6|D&%TFDvxb$;nGWt%YX6 zua>^Uz`-S8iH0;fX-oqbe&X^>?Oj~-+$83`$e)r0kB?R6rgsgvRiT$#h3qs^iwwwz z9~;EOI<<<7w3lyEM73AE79JrLk#ctOR*;k1kS50^&BQjz@wfyPALgzzDd-n1w*2v_4kD+wHz3nL?UXSjRMg&uMY_X!cCWcHchH%taofjx7I}4H+vD3mb{m` z#Dto5^j6R-G!1*Z#Qr5jNOV)dnUv}+Pfj~Igc`g?9c4T^54xFjz4EmrR*K&>ruW^t z6?{i1o;R8$W&w`Wo0!qNIIF+L;cNU!uGE52apu5#;jo+bi5d#TieZB|55j zY3Qpp(^+_iC1_jXM7FaO|vi!e%>nx(tScI&=; ze%|)bIH8^5hDD3C4F=b@)b*1iN4@1+{P~7>{19cr^I+;$(AV|=-dXNCqq-1;kb(Y_ z*W?2Y8_;OXe0)2|EeA<_pgtiO=z);5Z@#j54Lv2+y25*Evn>HUKcOE$>Ve1Z=qJ!C z^!_Z4i)Uqts_Qiio1KlFs7pgHzdIiY*seK8G$~v0dCy6Pj&8>)+~sb7<+Cp?gH3b{ zJk^X)fkwDA1=f1V-ITK^b*yfFU=P0<+>O~EK>o@_)D+8h%Q2@9DTpB6fQ~IT>j8Fcl zUkgh>$?p21a-sZ+Ld(yc zDsTgaP^iUTeSe}I*c>Bh%#p?nitI7Ng13zayX!#ZRF8hdRdYQ=bf>7Ts1oX@Q1lXu zEzGCBCPjfDMd{bfdDdlOvYik2$ z0?G8gI#t>F0#6%SUe;_Aa4=SY&7c`7CpsAmvnvE7Drge~O8GE%*~m*5DYLcmZ)}?= z&kYyOg3zM?1cdr`>}Ycx>Y%+k=6*VgFb-=w5|8P-H8F6hBD0pF-$R}WGRkIeZv)5$ z5(}n7PKD#-D86prv<>qh6W*pZotb8i5{HfM1AYvxgM#1am;Orr(xC*2v9BX%i9&uh zD)N)fC{S^kJ*(@Q>N@*BSb?-t0EaXuj)3^KGt1IBYB5w-*fem2Lq7nVgie+5y6}`g zC#XWUp~5gTGaCtmlLGN-g8&MUkm0Qsm3}^E=2nuR8hb=o0oA162t-qZW9p2>Jes9a+$|-*+T6J ztS$wN-U9Lgu6;%#sEktDwt;k78z)s`dqD; zq3?cns*55?+GGH3tMB(`Ch)KtCDGX{{Z2BzuM%7oDfxe$TD-rgQ#M|?-kBloM6GJ`b6W=t zd=BY3AYu+W*l0Sdp5(WUvuZdtCm9;jIqSxNZ~qh-;u3=h%b zQI;tp{XKo46DzKn9y-NLxINwmn9f)VD2{n@-kqV*A8enftk7LnE@r8iOny*8)ilhi zuz!!Wqu2OIL%-VrZX_r3TXb}&VaI>?$oge;Gv1O5Gwkbj2Y#;V(>oy{S`jj?_!6-)G*Fz+ztBC#!VOb z4@EiWs-bh0%se~gqi{*)vr~@wP+o#NUUs#zSB+C$p9yEoxfoFcih(O812Q?Fa{K(Y z1&Us@|H!@5F^-R*t|G-9a|f2GavTy4YlBN)9b)Spo#@($Zu`$$yms+Z(BoUy zS`@HYs~dm3&Xn?F++nCcM$4|qOv~~nj=1Q(qyn2+?%KC`{18QGQ)Pw$JxRZ{0NN@f z<^M(=NYUUGfN0MPW;HZk1Tq~NenwyhRkjbO%0vWd8tNgK{<4i`gT&!LB$0!DD(@e! z+kTx=nFK#$X-Fask%=O4#V>ez+1^=gn-O#w)VW}C-c1gU&J{}Ex13S%49Gm~xa|7V zv(lHwt$F(Efb2J61EOP4JxA)bE~cFFg;yjZ^{dqVIclU+hxX}N4QcECjL@wEP!d@_ z4|Q3%?EV~o1IP_H5{f605P|g(0=y@Ul|;$8z_ z%>A}kg(zK1wf)4&laSGR0GKt5Xwx@58kDGfUXK1akMGx8Z?HWkoVe5h-g1Fm411>;~LWtp;Wj(eI zbn@D&_zrmZy1(%|rIXknr)tVG<11WjotJgZWfU+9F&pKA?(ec|m51K_>yuK?4{Ul4WHz9tRPkQq2%_OKOwQzOcc6@Xp-|HC zb_TcyRZetk7mo)padJj?V2V#=;*l6GIGC7lLA6)?p_d*Vk|gZ()FoHf!`zH9RQ-hX;$B~Lkq|;f|-E4IT<&x!9Xt|rM~CX z#APZFrFKEFk!WMM=ldb(BQ8#6k39S6a7lIH16oHqYKLD&ReD*03Y-4*)mwds6Q-Kv zv)_n#{gbesrn)M)6vk-5r7s#z+RK0Ct`c=UYeB}g#N zzI$zIo(n`upP)_MhXhPlU~FU$Foy_14<0n*3$wmoWfDW9Z~-B93`e~#rs#Ji-49{X zLye9gua_VQ!g8wCWYAt3T1nC=YM@C>cyV%DAsz}Zgo3J%FO#0g5A9_n=ske$e^*@n zgMy5VN@{AvLQqJLz{G+qLqYdl1{Fs3wdL{Z%0ylhVx4<4C$P5(r;3J)??vbI?p-69 zo-4@2;vAIU#H(+W?dN1S#)okc&$!5(H0=2i ztjom(WG=YGqTf^R=~*pnwDk}lIfKW#69)4z&UiqZIdgSF(5jnsn_~-Ql=+I(uZ|im zuy@Dtp+RN7h>4FOVd$u3-!mn$bVa2mS~wUJnekrC^Ho0#w8R86wxr}U^|-eWHiIvmZ&&(J z+`%4Mdx2r5T!3=NQ&Prv9Tr@!Ix_95Ljk*k^>&kP=j@yr1rP79r6(!!!X7)eOHR&O zm^(hPkzHkpa@J(}6n(1z#~^jv!b3N8`ZLur9hY17itn}M$LTR__f?vID3Ue5{`KqE zr6$cH79|xkWf$x=m!f13ygiJ)8QKoR z^gNn>*pHQ+0X^_y*huvOmJehW0?&#g8%h7Q6zy&h@>%p-5oQe`i>t=Ga35pRZIfBa zZ0M4*Jx=-Xy7*a1cxcJXKtX+xZnK2!?*2ikE?3gY)oeM*vzVIQ8b(P@ zJdz0z+9l*78F9smqI1e#m_cpa*V9<W&q#jL*#?>7&(h=BRL)@cbYkkKI)V*levaHDqpc_p5p9%7 zaUr5z>M+YzSHfoEv&0e?Fi&WDpuD=i-|-H#qZC`1>dk{3n{f6oQ^{)6EJ_7t%CfCl z4(a=!iar!MKUg8Q2(o|C4a_N&cEWr29sQ@vZ~5&z*hm;ElsG4|_TxPEp~=9xNpJxRx7C!kFd~kFC zpd86Zuao9p>tqDvo7{K|O(eX?kl#Jl451v@hJ@76@`Y9QNXBk@u&ktiJp7R-j=%r) ziH~8UlOlbTJg<}T4W&wFYux}W*=gll1OUA!$mdG z*7!bmWc~%Hm3-R(C1V?MkNI4IBI#sW{^V<<|3)P}B-v)L>pG1bPbJ=y7gNqc)7tk* zQBm<2WGQR@npWhG=#Kp2?9X)h=?2EFZ^*!!Fr*3Pp_h>Jh1-qctcmuX*ZzTx|fKeD~wv{D{gTkGs>)_+L6!Q=Dk3y;Ct$lA8a7?9Ml@sc3#_`WV`dtJXv1 zkL4RXdQhP z2j@rDQYo3(*A?@RJbt!*8wl*nNt59297{Lf&|VP8$vI{u9z5OG{R=u`ceRSHIDbk# zxgRLYp*Vse3>>x!-+7`2_$Q8f9(Y+76Ku??f8BaNXmALDIDBzFM+^&YZz(K&^T~Pc zFO3~%nRjY(Qey>9p9O!RcU;I4lKvD^aIQg2h9jC|&p-fFBgp70&^!3u*<{gwI}5dOTt4(tf3{EvGwM_nAl!%?R$9Bu<<-_)Xh2H!yhmdbfH+w&% z2&wscJRc+_Az`9)%CI#r9n9+xFKH8B?$;dP>1vpwTQNI%Q6~%lEkVWNIme7XyJY#W z38&i=iW)Ve2I_Ie!G`*2UHED01G)=Ir6#UR);gO;{D(m zt5BAFj-;Wf70n}fGs^q;xd;ES&Yo?kOO&zFt8B%lL*wkNAxNB7*ZuCtoYOV#31t*B z;h@hM`UCaH)JJZXLE3XG1=;Ure6~CeH;bGy>&XfWyuz$`ti4dl>*dZ5;F5O_+`3AA zuSBXuFovmEn%|4M2ra~#Z_e9`?+6|Le^|isLEtI4)9b;TDCU})o4e;cfB(@1G{?a9 zG{he)2o}~fAtKh_jq5y8Py+lt8yf|NjBjx#W&r;|x}BEf5V+0DYjD`AuZO;0c}_YJ zidmlB+|>FIy?)Zj*F8G&!w2PQrj%Xf_Yje(OBc0gZ1|}AEZvE#0U1j{ zhMmGv?)8+U%(V+Msx1WI2ATR5tQt5_#xn(~1W*qrsIRW|?#Jl~NmaPq7;w(3epziB z_g4NDsSjdBS9qUX&Uh*x{a$$ap%#^ng7El~F(KP_#RzFndy?=|^v*zIivhtkKY2I}UBvBp-R>i3+NvV$(gFDg72NeT;ms|JL( z*7#d!LMq?mAj5<#lPiRCZtb8sfmXk$wBeSyM(L--qIdPQ97vjt0U9znL zVGFh@ru$!i07{3mtWvRRz*i{c9=SJiIz5%WsBN!iX}q@bpK-6_Lqz8Nqt1t*WE9>Z z$R@gB(i$eiCbmdOhlwRhdek&*U=Eej*H|rfFLs?H=btI)iq?DNe!UVgk<^sgBHe0_ z5ggoUe4VF2`-Fg@e1xw$cq}tyXyg8{ugJaa5bd)^pm9TZiuSxGnGZ&^T}e)`{ygWv z7OT%jm)&4!PwfVRx<21Tt`_vMns-X4?6(gz!UDH-Dbmv&!-wKw`Z2RYPffD-$YYOZ z&&uRkNZE%q`{jtH=o~hF;TE7n3N-g|!#05c?u;4lmi_mGNqcBVL8)WNF$|>{C!-XEQ1%>-twMl0|Qo%_+nbcUi*S4&rjY=({h zabAPU6#KzBO993s|Ltn5}LP{)QVbl|>>Kaun8^dUFEnH-f+nl7W| zx=Yq%md?sV7t10Blk(uEqa>`OCrvx=}6Tk)2873V?Zy30~WO%SJyk*^6=p zL`z3nzh%>&KyvV`4A19&rwi7))E5M<^EG7oFOXjm5GeZM)F2+_Q^YwWOX3{Y{oM4V zC7TeTkEJduY+xKGI|eyR-igSx6#EB;@<=i);$wUj39`ne=vsRjm7Gln3yaWp1JXAWvkfMKDicK8umxt>jo4`TyyndZqhSvk%1wg zU<1ZU&_qH;zj|P#8ncHAS-%(TJy*UA}C17=otJex6KGoZYOIWfZ98<=0(0TR7!t!*G~ zQO~)(Vs2DX4fWEN*2 z?xLX|thhTJt>QRY4Lad5QF64cjtTW0 z_F&)twbSCk6z#FC;xPbKS@P2&X8JThh$OA6g@ri!4b0-ID@gG0#O!|C$4;V;YeD0( zn0MkIv|;hYD-ecT&z61z%OEhbXh?_OY}Ye12_otflpU-|2&se7kAw2&zKq12lv%U)%oGg0*Tps<79EZXk1Gy76Riz|10>sf{N^D(I# zvl1&g>j_(|?HXToOr!KDMb~GZ=xXUm&jzJyXv_-utWdQ#C&fbk2Q z$#{OD6NU>>zg?dFW?WFp(%+F9uy{n?TQ+}hj_?(kqV=ekX|iH%c`Kxmr+$@p56Mx% zalrxTxc$v(cOD?uZYL7!8{7k)X$~(~(V;u~K%wAKA+-+;V%w9#8tJ-f7`BFfs%UDF zIhCpqgM~O=wEBRiWAzik8dS2%SylTDG#_M$8+HrVaE{PkVBYU?G2O0`l3jz7b&k>r zX#7xN(D*8RTp+47=G*>ejdO;~#qIh2*0SIb;B5I14c>J&DXCAahOy{6Ln@>NB@e3S ze)r28Oxb~CQg4H;*P#^#H@p)JSl&}2`IQW+(d>N)KN$6z&FPa`=?4p@NsGlth@01Y zsQr>yj8cW ze0aCTAgn&HXuu+kNkpR+uQ%o_VTv@F!+U4MrJg{oDRrjTL=4Vx<}Vx$E#(|&UFz_=Zw*Y zQ&kSfe2dhVHfx++*Y-We7(*ecFPJzT$**WJ8Ex7rTV!9}*@)UZ0S2_%d z^_0!Kb{GEr7Q~^;FpI-KAM(!#KL738jl#X#V)Vu&+8`EobWH-qG2%r5%dVMHqDZgKlUu;(b$#YR+CwK_@!}x6;(ef+t>?8s(t)rW)ASfuvWnM2yt_+S+ zP@n7qXJ9o^Bh1Cc#ly1&d?6%n$M8Gc{_R1$^E)_+iWlxI=yC@i>*N__r}EZG987?_OeXiACBvIoHsWHuG{r}AV|PVLZLvZWB_m z|5$J-@^Y_J$gc>MCk>tasuwLja=H(8)xRLSzM_%idUb^pPf6haZZl~yzlc-Te{7su zAGO1{EbQNON3QLvYI4^g3pzHO)4iP;M6)&of<^!E%jTK>9q)&SH+{W1L>-xFMk~N& z^qe2tKCCWslOsR&?v%KrJCAcubVu8-W$IM=3l>j99$u6mQer!P+SU>e;)&m1*KABm zPjCD`Of9>M?qHl)jO5ZRzhKhEp*lGx`^Rqy-{qls+fvLu6EEf_GIy*RorZ5ct16Z~ zTeT;B9FRS3qui1N(}7;)H^tf>-~02y@aQ87bYI-0U*&$9zut_Z zT;`ebXnTfcIEdz5;jkCU#p?bU9SnMuZz)-)yKZ7OHN2y>Y?AkzVbUA9TzJ|8wb=FR~cvA7;7(FFjlS{@Y68C*&fy3KSR2KbF}>>uLyr@*1Y$IpbcO-Rj?&5gFI* z;uh81qY|b2nY*E#beZcv`&((?o<%p+SeQ)#Jr6qHwj%nAu}P-mWfrUdLWNidT)FWItc=C`-F0 zzVg84RsEwE)oDBIxA$ou(nwFzUcGHODH5?*HZ`?MANb+hRAh|&xuE*I2R!B{e*P+u ze@A}mst?|e8_oKx?bQjn2cqc{t5H+wvT+$X78M!exxSbR5d?fmehl_VaFM zJHPYc9?|obxUUY2X}x1g`Mp_zVrT&);*Cf*!_3!V57x>Hq!hhrO;O3A)j97oZRFEm5f4<&d{%=d*d50jA zAO3tLpZb&J5C35Ik8 zQzeF(y#_r@a?wSP%U`|M!>0Ubx-r?zBPm48b^Cedy-3Lwk_lbD{A?M5YPKR*>l(p2 z!^ic5{l6BQLbl6JP2|0rcp1rzJ#!O2&U>E<3Oq4^Oqkfp##X!gGYXta3)HocH8yjn zp`qbNA;Z-OcB2=lR=^O)?!ss{1p9$3@-Ko&uKwEEn#au;KR?1l7(btT_I9%da8#iE zF#)%lTFv7y+E-DnB2_SD8nR!CUm;S@S8M5D%AEHpJ1gKXUOhiQ4=&ANU#zC{N9@CI zSjcIB84Uz0nNN>Tzy$bZ!KTZpoP`+~7SJvMTk@78LYNEeO&1MqKGQv$Q}>4?awxLL z(TVD~B`9ldPXw+}Q<#C0Cvr%*Pdk}e*x8@VX=n8ZwDaaeg7Q%yL{3pH%E{@dSKR-S z(@n2E8*JVQI$P*#<#SoFbIIt;?T{_&_XJX-rj?J;E0)=szFG_YsQ4Lo`ehiKz0>3q zV}N<(!jCNlxT0TX^MiS*;ri{WuSwN}D;PTD_0qz^d0^wGMlvb~Xcjz8PO}a*xka?I z)Ejr)B&VT>N#;RaQ#kXFB>hE+i^9|T9S~whYFqiCkr*$6IX}|)+RCW`BxK}u^;{ks zsL1Pxi2b&AL1!D0=h+n z(0fJ3lL*^JM8sBfhlPdvS1%7P)I#w#v)5v@;~t|_-&w@Ubn4+{{Tp-Rm$q2qnVAI) zYD(YM-LH;XOz8d!2Z?RLP;<+9P78!u#y~5kueP3k5;KtcZ?8zV#c|TFWifY}c?Kk+C1&Jj%N*=(yZu$r z-tIvM#~n{PH@d}=m!Gfvb{$lN)&0dfK6Mk9Zc3dx7k}nFMY4+@FaCC{tbw29809EA zwt~eF^kDlgR`2Ig+x(B_f;+(luo+xUdvELH^#j6t^{jO1-$i^NUoNXzSMyGh>yH&_ z*~-5CduGE76P3K97`+|Zu$`mV5^*%k2`ijPb=S=E`#FUq3xUbHJ2qgb=~~s%;H#Mo z4yGLvVZ|sOmMXjFF1xUC3XL3}*_P^FAZ)a5` zql7B%^oQc4#SY(G?gwg*{V}Ep-v+({`RGGktGCNw4w!AkQU72)Fej>Ak6C%vsc7vT+fOr~ zce`)xhVjSktyLZ=O{Ikn!hr5o;Fz;|`)M3C7qdQ$bB#KM{$ka@_-<#<3oo6F{CAR? zxRSv4Y`+OJ!B(ti#q@Wy@_3F2KG<#**}7PJDW6zMBDbFy39>dC^>9|S6(jMCbao9c zkc+K0aFykbf`5A%Dc{raDt;l$LbMZUZyCoWq8xd_8=AU3xT8pe>y4nvomkkp* z5IS26o`{mHc-2kUTC(q#s^*u?r=n_c%p9%GkY(gPC=+l|MK^;{pVzFCZttpRu^7>| zNw2_&)6)ej-e0}3rI_~y;`I`9=O5}vRBeS{HX=?D5f(bh9cy87erM}-#|`UR_cOzc z){OZh53;e`7nRkrXDlyPT3&g0FR5cFn6ZQ#+yEjV*mf<3zYH7Vb&a+bZxK8W;57q-ky==z^3uzvwy%6_|ha%$?v?HTiRs zDOp3hR6+d3`NgZovVBfUqgx~Hd&35eJSu9DRxg#?*B~Ad=U<@8q^GL zQG?ZR0VfN+7_rfM=j+(car6jAk(PQAKIk4ite4KF?j4CBgqdq#Vm>Dt!tqr6%1zY^ zX7m~~8LhX*Gr8TA5zz5RIC!0_Zzr7Pil}5tIHttN&W;HeRC>ZJ1Z8=zLl z*_CeIasB%*)Jab$Qq)BEhdXJWeaDZA zg47g_st5czWK@?Nu2Py{dme{1Gq}$~AO`L6P7~m%ZYOcxb;NYEVPxgYS4*6=@D1x9 zHQ(0Y(UmLX(;-rpN^c$t$dAYhn6Km1h;osx?2cghv~-GhfP4B=SylXE($nu!k4)RYwI$3xzhdz%> z^zx)whGQI>%?Udwk4KoMR=rr1>_-AsDzWe#rcb-bX>kEC=<;QbOwRUvLOr!q68p9f5wKh0IVDo&f} z;w$1^Tp1cRZACVj{5UEjAUZl)`#s)w8LBX#FaJ7lMD!o>@WDPmUY-(9W-Ip-&|U@t z5RUZVOZwIC+BYs-=ikPB7S6DxZU`qdK_3!olXNqxl?7F>4hR4b{ut+|a*sieI)j&l zCg6QJh*@ox3cnW@F&9jWId+ao;8;tYg_gJ@N9pl})67g{^~yiPGkChn+o16N|5 z#0gLWuu)AS#S7Mo7APx(3`SzzV^s>;7oXC85G~{gFc&HKvf(1EiMuHp^5x7sVa4$x zkqnW~+P2J{N3bO+%%UL+W2Oj`Uf2*vX{eA~I}j`wk0Yt`q%J1G(!1?$o*oa=THwYV z`87|BcTOm}D*AU_krE~@4(fPyM&i<5q1nn~jjYc5cBOfmVeE3`6c_v9Fl3`)rlaiM zLpN~rlXFw&y!snZY4geEzaW$lr!xu+XnuB=zHK0zsgT07D2{rK8H>GBEqoG@I5s{Z zD8F#dvc3i@*>GW5%j|kL$rUjjF)N?%t*vX+zp!7X8P=LkMwFEyVtU*MuA|PSp61U; zsOT&u14P{UHP0XZEE2s;PnC2A$`JNO=oKhJMv)$ySyZ#@z$$KoOMIQiHGPoy@ARY` zWD?`g*4{_=IKHpU$bB`%D?Hc-(xyj6EOJ8?1poBMiB(k*ReKpj_#v~x4-7mv&%+i{ z>CjPIhH^ihR8{pT?F{i)>+8W}mV3w0=RN2z*G`qO)rM)U6V@>$#pxR_`qR4X(Z)%) z)&8VY{Nd1d#%kX@^@ifwnV9qnl9=6R=5JXmV_U&dk{hXmZ$z8tUn&*T*vzHDH_u` zpsgKm({SXeyC4(^hJC-}SCE()OuQG*bsfFvD_i4|Qmz%?oL>%}46P|FKx=vV zkmDq(0IgJorxg&crEyaEyy(4ok=aevjBWV!>)Mtx$48 z(?;9Jz6$wxl$C`I(TtD%7>UrmuYktx*M)TkYo)`o100`9mN;hz_wH(aN{eR&LOYka z(UCl_^k^sOZEV7FA})8z>%F(K`830-`ZyP@9k9VBxg8|@(0v2KnR2nu{c{$Up7&Lo z%RhXOcjx}5(m&_OI}}4N>O&B>92-SAqtK)~(qC2OMd|j+GEwaJ;`2M&wl@jgKEix^ zU)fw$&+V38yY^1#Ag3J3Mgo1<*4PxhrRnU%rtnsME)_tZ)T3+3<%j8 zSk!oPfv#}krU%m~in@MxbO|de<9)P`G4<^)QG$_JG;RxwkN%BB z;y*k$>2_DLh~1xm_c*ZjA~>$5@`8-lQHf7F+t^OLyC0>(S%37WsPRec-?~cpfiK#R&ZK ziRcJXd|pnD+^sLrDX7S5pY#BHWG?a4ZUlFEGbJP>Ts{`E$ZD_A5Ose%^)4^%{Gg!j z%kYw3VNFxba|ibqB^G&oobkepy_^f&DgqBV;2Q9Vx@ zQJ8=rcUk9Y%TM9!%1bf%atZ=FWXwk8=@esMDDs?Yt30xGt;X4;8l)EpIHZl?l^J;$ zUXQFT+FoxAzvbviRW>Yu>dt&n^&_KF*I;t_NSgW#cUjNy8Z&l^Mz3SpFS)L4n4f@& zsS{`st3K`hReIc(*rs>3B79EtY|BLbdKO>Vts?z=@$aM30~~S}Z5CK)mWVg3-!2Ki zCA@IkOs?KdsVy;SuHMWqDhSSq8oKbh`rb03Dq>UgrTAm(%<@kosG163r@G0zDKaSIpa3JLQ`ieNnv`sBPd7djM_t$*Ll1C+SS?@^amCjF_b(^)& zF8zm+d>i|lt&pqSJ_kZpcO4Hi7r*R|-}1Tdot@sC(%z1xcw}N?(sUShh!|Ji&FUx4 z-fWC@{&cYttJ>&Ga=$T9^cw1OzNMPsU4FDnF@^<=YFGhWAvOXq_N&l=S-?Bcg^o4# z8JOjw+$zS#Y-=8bjXUN-*=yI`ig_1>-)v+=u| zB>L^)eEmTlrpfi`DPohM;u0RA%mo9&DJTE z=G~oUb!volA>+8cYSLp42=7Y_(jW}|W(zAkyx!1=svD1(N0?-krX4$h{10SM$shlA z4z4{Cl-;%RHxFt{{YJ>8CUEzi+GP%eF^jxjgiB3~+}aK&e=hj;ugM2d?%kPp&NTs{ z*DvG2kL=&~F*CWepIW^6R)*>6zgHz9lB2MnR+K#-=KI$`Bega#xzty@v!U~3_}@%z z5R+T`-T&`D7~I)^jg8IM0Nnq%ubEFw8 zg8!Be;bUc_z^rTE?DM~ufNXI^D1vqR^V*7_Wz@PETSE6YnJf{|aQ1s64d~PVUeG(1 zM(e3ROEQfumn8i;Yq_|jzjygfVM!)h7~9I+Ej#_cyXW1ry{4OR%XOP@kF6tv!>3*O z?@gTPJ(+Z5b&)+?-|>Gb?XA-Gn6Fod;I88 zs_QyrzkteZt6n8{0sqji9a|0+c8!)XKzglhXPg}<7I@HDEF6Cj)KDe?`Etm4Fx?Li zB`joItBXJ+YWews#A<44Gv1%!AO?C!B8FE0koHS&&10{@`>#Htk6;iIG-JcB!I>XC z+N$0TH^`?&=wjD)bS=!y`Qrm&W$D&Ivuk}`hdRX-_l4p?RBE%ZFX+5Ny3h> z^L%|q1*sYtzkwS`$?*dRvT~7}MpZP-YzH^KtX?92Y`mNHXPyM8` zJgJ_A;!903w*~n-MVMx9Y$fNwuzhhdN`~w8m6>9XZTmmp_0JML zkh!B~eyvcSPH;l5@DwiI<0pxfM#vz12<#$Ona>_jK|NHWnD;nLrpu0(?esW*R^2_1 zETA))AM)~`pXNL8>jFC@Ae44E*n947`UNtIuW3cvcY7z!QqB=0zm$j}m(f3(Z1g05 z(FL6^bajWLuDpGY%&<&Kv6bCm_V7?rYJ+EB)lYX|6*{O*ia4_TS;WySuG1M>}AhuVm+4mBWwRT7@cOBR>x@%!c*PNeBLJ(lV*7FrG`TvatqCkU%bsA00g`aUo z0mjH$UZSa_6y^oeoSmj>eL5g~vU794gE|Hx9KGIvd`YRdXRY;}&{(MxsmS|#e|?V( z2@aOnT@cu{{q-&4{$0dtM%?6XQYwOiM(|hA-Gnq8d;ud)cxj?(t~T?gv3SHW>agE0ee=FwA`$qfwYHqVb7aydAhxLDt5 z^WJ6DDVFpHuj%yk{-R6$n)O<5uIl{U+&b4s8ysL0W22+@2M%`(PGetQpd)&d1tnKl zK%#CU#A~qffXKyp513$4LO=t^tg6y}fTpj68XbsuG!4GNS!L=TQjV3&1vQQb5L<(r zsNMjd(H*6Hn6%_^|7ko)CqhAL3mT@mi7DN?wPi2*1F((gO?{7*MuWqhf!E@MLCd0A zVekzaETt27>pdv^)pUEkQ(8OF%iIk({z{@J?O*tyXP1>ypKNm(YzH5w5(gpSaQJQS zgT1l+(Xo9(dA(C4$Nm0GV$~(P-h0j7y*P&sPBRVm{PGvH86sa0#hig=EqO5&`+YHe zQAO_!O>gQ+dPi_!w5Z+DyXlbtYFA}TIso54USP1{lKHo~;NQs4>MG3aQBx>453Ri7 zyLcP#>W?2EX}-X#F1EhxX!!&6WEhGu8KZ5?g?^Uk4f6Gt*+Nzjv#hs4;7ABHQ{6Fm6esn z@xx=!+)q^5-viO0M^CdpR{dAWWP9f+Y;sQdh@_7T1Bbhmv(^E9n4ZL^vZL*1%CcRHpP@z zC!ZW0Jt(Ufhe15&(t*q}@U)?1Rjhy>Ge<)%j)P`+en3NQq=-_=`M47xxtB&dI`mDG ztDyYVd6eEW+e!S`>55g;r7zU?&d`gln@aA|ly%^d2R4)geHv^Jlh<*YA7MjA=B%7F zf48a5g#u`1ZnLS1z`uSGd7jbb!>Z|hnqnSim%5cOo4ubWBwhbCbD4#brN_L^*v@u` zci~f;PC6z}j7gW91z?Weui4#C+n4P`wd*{2G9#aAcKC zup6)zTy%Gq{n3*DRn=%$m_Lotva!WEGp6V^$YSBW<;7+FmSfznZ?6Wj4p-P^=!GZi zRoJHSD*L(|N+m)h#Xu{5)e!mWj;tuc#Pzg#`E`FwjM0l5W%Y-<^=AyQ1N8?Rfe)Qt ztaEx3SX*%`7}v_e!b0!E16Hau3)h3a?Za8geYSyzU!6nxy)gJt&k%Jl`juQ|F2is- zo9ifdgROf|s=;qG@_DK3g3_Sv@&PKavYY*@?*RocvOnQ8E(zc1uVKwM@*gI$!I#G5 zzRD>dzIw2HLi`<60{opk@aae@{xm}Lbe@2ji-FsoZ~%=z^UMWS-6#JGhNVo$TVp+= zIJhpZNubN#!EW2NBeR=Kc7`~TSFUAb=Li)%=z!Ixmf-H zr0e!~wv@dc_^oFS$0Y}|7w}}S>BW9iylj%utytoqCz;BuhbO9NdY;*k;)*nQ$@%O> z7kM-$SwT?bL;CDT96weTB-wQ?nLKctz7Z_K5QIhFhRY#q#4lhU=k}d&vVOpVGsc&h>dMi5IffVJ#dJgXw+}{;(RYHyJn+{tkJq+ z+`oRWwI19;av19)u3*NKz1;3|8VCf+oLd7hO3~=e=c~r}EMTuAOzpx#Wu~t>rnjNd z8c}fw+L@SSl_0($L(iQ~7Op+IT@bX0{R)ae6sCnaJeb+5oyTQc{1U3!E$5;Ga94Jx- zjbjFrQjf$)dT&;bm9;5;Ng*3N0@IqD2FkXuibq{U;Qn9-33g3UU(CX^=nS!j(!Z8J zOe6f9?{(I*Fu+uaP-1;%VT6OoI{mBquy1Sva{VE_qb(d_k&#a1NY;`>T`a4R@=CFj zSQK@2Ix`L;K!_h9(NY2a1`lsT!~7NTyp$9V9E=TfTiFE%>1#`4du?M2*s^&@I%7Lp zo^L#2@{Ba^fNWhe=uDmbnl1|fUKr|I<`Zx)hHgxIA544q_a!WsnH9nT0P37tJ+3{b zQ;m>A@PwTJjRVjVQpGQU6!ArB>V5p!LBZ)Lp^#l#5*`D~VsFu(8U^DuH8t?eXpY`H z_OB1+r@mj{CiCv`?brmTD_xA=l=Tm+JpWtN*Q>|&7mJ&(tl`2s!}++m7vA9$#UAUr zFgdbx;Bb7w{xFq`#_U^pM4j;B$GxwvjvWkpuPF>?F=oR{ND=T&&0G*mYb@tWW?(}rVr8v+X zfJtGGh?eWAi~6>1)J~Y|h~KvQh1_3VV)l?Og2M$+fddI2y)2$|9U>_}iE7p@WYb|< zB3%ieRSWp!A)y*R>c^yy6VtCsJX;5CCveMZC&R@M-@p4;o*M&Bzva32N{E3j=#s7P zHP)TWOGMey6(0-0Q{t^v%!U-iE-&kS=yF?v&)?Z`GZ_(`z`4^hQvW?Vik_1-KNlim z)NFib)w0n8+UEEF%aJE4DY_$WL zROn{iN)xS;o4h<{0fQ^(8j!dGu~dOT2IxD@7$MCk3-2poi-{r!E%}J%QM@NPyNnlf zvW%*}4v6b~V9nUaF?=xF@;RmQOWP$ou`-K-MWmH6tUL`u^#( z08M|FhL;DuG&5{FZ*zEB_8AP*tZo5DlQv)(=H=x%xNpG5-gLNi^-%hV#c-j@0==|e=6 zB!~W8Dp60)zv2$&Wfqo}Un#2ymZgLtu{)+*QT-GE-hgPz-O4?TEycqgZt`?TiUI6N z<>US(lPQOL(=eO%LD&-gDAAW&2cxJ-MfE(f{aWGV+o&Vi#s+N9T|aMiW!yhpI5imGoCVuKI2V%iY-|6?2jVHmr z;()frFPZ|8HIhkt&X#UKgEN<;x>T;Own_~Vt*zg)Bfjp)S;tD#GkOIwh>Bva36=Ij!9Y5opW2I26?dm=RRe8?1I>5rt7aU5KE7?hdlH0W@;pX@jvB{nZN?;I&uzzaxb=gf`u`AZYez+=Q*qDSL<Q6PERDOuI%^_JyrEG{eC zm=3rrwVtW}k>ThLp5|2~@ev8zrP%SQc&-mCJjmr2q26E1BmYLw-U}))$`ym7n z3`m;%9I|sID&Pl=oG!E;!8r8cz9uPYFvcwG7xycuf(8M%OqqFVtu##~#f%Do+`<5w zXcr>B-;gl=S7vzXhG#?T840`x^&O3f7lE{AC%**YE`r48^QNLZ=EMHdF;sz93i_*( zlG4sw`sKDknwh|Pr5&i4W;trIsce}?u8Wwa!rJEXQ| zp`fFsrDf#OF%RCi!b23L~}I=q%6?*)MVgxuSzQ58&`uR)B|dna9x! zYQBgo>wkxvxbIZ*zGc&iiHSlBwbiM#6!lZ7^puktzUNXNUoS}2%2Q3vCpK8vg<7K~4MdK+9A1yKM{$)C{PnBsO`*T_$HDgL0q-|Kn+oFL223dk}!& zcJAxVHYjPM;r8KRf3?o6^K1C#QFb=#lDfKj_Um)akQV+o7w|A8{8A*xdG({_*a>p% zy64?_U>5gSguCgAp zID%H+v7hzS7$YxZOtKl@E-Gx9aV&wyRnXOr9&li&}d1#XfBAj)}SNHC>I`F!Y7$kZf58wcqMh}qIgG=AQ7i-c@ehrc4lTQtuqKegYqRtBQWL#ld>zn`+=R>NWDrWG2;%>2bnQ5)$^@`zMF6!u=+b&;9yw8x>KU#G zUq^zP2&VhGl%bh2KTy`po70Nt{^)#yoszu|o>S%)wrRY&_fEk)!;2TJ8Sgm>U%~?G zh&6ZYvhCx|+a^8o(Fzt}bsuze=&jCEGuL2f zjU?)0uei-z+s$vwT$lY&Q85@M_%zKlG;k=U+ew~1%rB|~gqq+N zc^^lf8yct?8D)q&DXphJbN5UK1=H9rZqsA?cj(!rw`EUi$u6F(D))~KlaG#Ob8h?E zEwQ3k6U0tX_q~LUL|j?SOck~gzqt|$2$1|>!++ddVqQq>Vt(zM8eZZ28_;=W9Vu>e z9AifbHQmQf>6tGlN8&pBl{0h)X(zFf*DB@Z<Xg~nUmiHI__wb23XYPW9PqQ@NSb%dEY2AQ-(ar~A)?Sz&*CMC)UgO~dTw8%nN zbF06L{P}1VK-J|{eapY}E$c3sZj@?oZ|~M`rHVQ}2A!BEDk|eXY8N-Rw!X+1@J6mn za-PA_>*V(T5q?r(1>1ZdE4w?KFAqTNWsmf<I6!L{l^$UFUbI15 zv!;jE(7(DlFC{AoGU=@)bY9>) zk?XI~>$>{uL8Miogl6mObK8}Ixmyr%wLwOL z_mzLDH&m0gY7(O)QlhJW4w_VBxB{Kk9y|yN%1uif2jLEZkVe5rucWbKB{4R`B)d>K z&U?IJ#^-!-=djL+q{le*nd=;$g&=2A>AbV9UsX|srbT>jd5Z^omf%E>YR~y0s%;RF z890iOTe{do;TG?9v04*VjjuK(CntA$o3CBQsi*CFM5=_{F{G>E0)1{-S+tQ|8KnKs zOSxR3@!&=d!(o-MmOVQeOuJs%re*@RAT2>uI=dDssBsI|*e5nKP$ebJ&@dJt2gFTc z&2VZ(r;d@?c9U7@=<(qljZNSe?CTZ+8Gf^TyD;U&>A+XN?k}O;u@x zVwb_ASXr_hHT>+Y{L@-emV)B>_mNJ|8DxtX-xWm-Iz8%AS;jo>+CG~xBCt96sqhO3|K=&s-CxfP$lNyi-y{w9>qM^6+=e*C5=_or+~I#;m)Eo5fZS z$ti}3u={;}IQpI0E8&-gJpABt9X>Dzw0JIc$(c<3T4Jk*HhDNKEQPaIP7at9d8C4k(BeUg^Y~DHECK>@CmFyg-Fe#jzw#>rmx0esR3hVWU1@DdyFR?b4hz8x*K;ywiB9-Q{?h z;em=)1>x8;d?<|1I)%0OF*E@WIwVY}x*so;?-~0jd777S&_+9W;l3n+J*|Des69camN1 zoAbPhQ5?bD+9Mba>K(}X7?YGe)K5o`aA^jgm&%VFSV_q8kF=lDj#_=Putg* zn61yPr$6T6uZg#t}p_v zbg4O%W->2tb9zXtfzvk??YcWrnJ|wKt?J7Nr|!ZBRz47rOWT zp;x-*2S3#lry1PYXTGvHuv? z(63Eg!2%{kA?`l+1q%1Hu4SxVG+}`j&Xt4s znyhFEP~^AxN2zip_N=!ctoW=-aFuNjT6WpI0e>jbYZ{1 zNu%95MrXw@?++6?|b@adk{HyL7nS zmjIV8^X$M_Q4+$7@QAPXtfrpc9r*6}dr(4>AT;N2ubOd!EiGmVm+V|_`N`!0cTISO zL$@<_^BcG;;;+WetSUBWjy{u>Br?9VU;n0?_Q$h=!8@fkBqI4EN;K%|&!9-l2z zYj?bi@lY4Lb~`UPCe}}NHK$iy>v3Wm`(x&&yuc8=cAZ7vhro^|Ys~Poq&g^rs7+TE zo*ryJBO0JoQhB_Me}?C*W(XLkhwws756I?j_aXf^TfhhSGW?WHmzX{*yaH$Txo28f z$CmwgU(r62bf~?0^1&=|LHUCQm!9Oan~zei@4O@JCL7WJq-r*=jjN7uW3wR7Ncx`S zyZfS#2;dFGTO&Ak)_Rzz1K zg;h;W<&_cket(lC#x>`v-uM$@2#wfhFjkeWqIOd?S_ zDzuHi_E^w(<0J++fy6Y zf=>#!VwHSRF{Z;(!+Tf_9rweV;@Ypf7>Z;$h9O3L^}`*2s+K%0?9~0BsB5z>)vtbh ztu`3a&_my?_y&NTJgg?J{cVx*W7h}$SvUwN?dkdzDgD^EOJ!gAL%h&^qS5+u#ADKO zOy>q^k`+eWZ?m_|q|rIFolED%k{FGZ0uXCMx_rJWn?E$Cmv@n_6c+h$VcZ&Azf?Cq zm8n$oy6%BbK<|TeR1Zb({KkI7OU-Vs)X4VT-0l@eXIU$~^X+xg2uW7YNY%}Yio5&K+nSXBNP8y<7fbFFG2{)>jycVCH~ySkk?oV0MH!rQH(Ss5+OfVk ztC01|x7RvBP#&$bz;<7@e%mj+4lNx2XQu)qWyd3R7!hnM9vPi$NdX=$yrVG~1W}na1mFb_; zOcP)$)QtGViEh43OKSjdDOq={{qQ$2L(?+`J^ICcZNlzCDl=tVV;~NAKXJGE$4`_r zn%`}gS@)`ik>k>(+H=?*hQR~=m*RP&Uuyk2MDb4TgAUT!RXWw-%AptNe#=+C&7^`M z`^lNDyzw`VN@zl?-RlE-XnM46FHq!~V%+Ad^tK>R`j-pSb1wC}dY;L*p-@JMl-DuS zNk6gF6#2q=k<2A@NvfAYOC1Ci|TaqE-p#T2x5JYx-~0zGLvf3MeZ z7|p-)|h+>)_k9Di(1OUVa$C`oTZ zY05SyJN0AWm7}0|iD7;YIq?LBe;h4scrHz1Y;bSd5BMua?Hm1wcdyK-v)AZ@A4A9o zYEBM22NA)Zhq63{(I0rK1izoHmQlI&^Uq=10Nc=v`nYNM0;AMbc@KbMeTf{q+V&@? zGLGFRITnpwsL=PLxKoq&sJ+n7^4_l7XaPya%I^Y*$v>KAkf)BS!Z{X`_Q5$Y+})M- zw5+RW7Ji@BNdp?%>kJQ%GS}Y0Sn|^G2$%60bZ~BO^uKmtM#U)~uV%p>Pr6=5g}W~{ zhO-pJR(HFrGfhOu$F++uosdmLVD-F4aa=aUOKg3Bl8bsYOwQx1>Ur@Rmga%`n4_B! zQW#+M;`Ma4x!|5|VI$))-)M#>A)?8@CPRakaPl0za^vxb$;nHWK~Ij-d$=0{KY89l z;F$7`zPxoW?Z?P_hOLS!8;-ieZ-%sWbT*FhmF`NoPyJta`eO+IBVIT{Bo(95sjICm z|NayaY2XvC1pc?@3ow;$%qV?dzrJa*JY@9xwL-wglw8XYwGE5Yrzf|@N$^p1Ij7+G zZ_M&X!T91wZ|-6aDbXxTX-4|5I`p8z{Lf3GTSqlD4HKuyO_}=RPF%ezaieg^vm=2S z@1X5tocZIh=lq|t4^gIE$)fy4&EWusz6u)ErYp;3=+fm|xW=YxI%9#q0?87&X7o$t zeqou!8*GEMCsYS|Ze>l7IU6ay%TKK|I%{gm3E3{>^EAes zqL{*cK@4YJ9#(PmyT>H{+nu%3nV0{nCb2BVjAoRk$5B30zj1;BN50HN5nd@*cne1G z`~2@R7L7W#Nl|qjtlVr$A-6?~twdhd+~jcKJBme0|9`$TLB1mUzM;6t`T1SC+nP#l zYDrac<&!qDa<{`O;K=vqO$<}#xhyE`cke`MJhv-BXI~Y>3w1{PEkkvlJ8wx%pE-Do zc2UY~BFJBLU?kr4@(QG^{`|4j`J*+`|9mOu5+q)oaCph($;ss+8u{T4WDMoS{ZT6qm#kM%A&fsUy!tg}H_jp92>-vs0e?=@e>nNmKpX9CUFDWJlJF(9^sHh$cVKw= zV5NAPEvL4h@ez2dRJN+7<{v-GRQktB-oK0>((A944c*+;eg5g5UidqhU*s_aeRe^^ zDD|0Db`819!29<*SBPQ_$mor?0|S#@h5vo~8@y;8d4LVxAJa~sCGe}=cudRhui{zr zs>mfpAwvUQ>i>O2i)^Ppa~H^V?M>~M|4+6nIe(i5Eqi|SN|L}di)Z`Yzwe*vt;uD1 z>UgT5ddBzfeOa~<)j8*Q)1WC~>bavEOZ%_Mp`gE4oaNMhAOG~TU>8p}5^nx^9q3K- z`B3;YU`odWjSF=Doh3xBZ>Sk7Z)TLx{C(S=+^GoecM4kJAQAib_1I^f=5GO?fh1j; z2!H>-k~k4#DUIXtk;t?3ugNccM2Zy)WsD8zj<+ld;dHkiL%!nAC!DVCSti_uqcYR9|a{&$EJ>7wH*$^a^vIO=>V}}Qukh2upvkJ7iV4#i6 zA%+4Db>>%#a@g@>$BrR@T_}b?&+r4v%#LCqf883_;<`Es1>7U#3-nPvV0w@A>D(y|SLNSI_X!JVd5Ww;;r1oJY`yOEMg^-(b<78GReFkV3paTsvlAV<` z1+`%^E~V`I>vS^U=mk?5|5+R=d3t(!mX>+n&5#S>t!TsklnR}b#wg>L~;lITTf#M7)!_#yH~Hqs$yq?~*^_eXhUxAC{b=e+y$nAbZV}DmMfflHxs}oI4P0&L!zZnaO3zis(kY~LM+JP6cj#)sJ zR##yL%I|O@uFC9)wVvLeRbg6(m+wlcilgu4b+oXEG0J#SsGhH@UByhV4Ju$ z`ts2QUfmqq=XQa|Yf6u1`wesJ7-V|^_~J~>-RI?DiKt~13kG_3iHOXZ3smJy8ep_Y zK3~oBiZx$5bMIA8I$DZHgM5IKq`ePHU64L`2by0P5$_$C+>|fSThiOnZvtloqk4?z zCJ{pz^u^6iLrH$a!6cA$^tLUOU+OqeY^TNYWo}{%j%|$2d_5z%j(gMDwgpy7h_;$2 zkWneoo}C_J(t5yVzs4Iq+N-wH_+El3amV9Y)A_2t{n?H~W$Ssn^&>qyl_zyVcsMz` zIpG{+L^1=$45a%l&qVp{r!%W<$L|*D*E+5rNoF$-AVWYXRfTonSUx5gU zVzj@%KS&!+hcXjFkxTzmNY(US0s6A}L_|bxZ&-3(c|JifZ68^EvcDX!ZZvAOV&sT8(vGJv~nlkY{zjr)Pbb zoG&vx>?a+=XJAe1={mcL2-#Q8B|=3El-A0)g_2UCnMc0{Iy-;TJFH;&3@&M*&i7}{ zZ}T0P#40$66Y3Y6%n>&$@*CxtY=IH?Hx-qWLLwq3xFa9lhjmu!_-c&o!}uGGo7X*d z5N%gIFDK^?_&_Yg!I}kocyMw?0k9mt1XhqTDq1T{FOj*RHqs1V}q4wt41#TBdd7IE`G2Dc9n zuG@~5W7ztL*VV_S1LfF)!t1{OSq^V4oFj-o$9lNC{65k8F_9-M&Ng0a zi692O30_Jdc{WP943gu5Kl*y}awt$2#2)k_zYQBjne;%Irzh(xkKZfW)}};ebMETg zvVUIChjZyz9k%`m`mUs*qQY;~bV@U!fLNRkm_%>X%}QEYZ1q~R)K7+n0060Yk0Z1 z1c=!wLDuzWC+(#8-j<45Um%(Jo&K3MH-Y@bbf5P#&92`u!=yg<@h!Gs?dN>)>cGGN zk}3vC;M{O|kxdJ*H);-c<{`sWrv*N$YL6aW2SYSSASHAzxwy^2y7hi^y*ksY2mMuh zDbc3x`NAOoEAD^Gg}Ez`>I4_I1s)F#<2_Ia&RhEWr<^XH1X=rf?*y0N67VHmz!V4c z*Y`R&UtJNg*4^Ta5*n7(3NBz%jJx$y1Ju3$>H@B_H5^Tq(JB427|hUlIDO_3Z+%N^ zE3$dHdw(l{HTlUcUfyB#lG}C@GGg|K&|SpFxhIrftY1gi*tF|Y6o;y^FFOY>FK-=q zpDY|jHr2!}AgpT$k3xe6XpHXHNa8?H&t(02_!KH`iC0Ej`;+tFH|9U9X3e=Z*q0As z*LVs7q&k@`uv`L1;Bua1CH4;*=RJFrL@G&X+b;~LOKbq|i2;(+C0G6iXK$WG;rsjh5zGOm{p6rdC1})DfpLErqhsCm z2~;9NC8?>OWCw#*-s4!^&X`pXt&jX+1R-+?*k6d=6+r)VS47K)e2m8GJh!*EK|jM+ zyZ#t{hQ7YOk*(w zW%Spri16$9VG+Y)Xx37v{$NbrhYwL^yHzN~xa)T$VJOVd&*F(eEma3Njlq?KeR6}X zFEFpZE1fJQ```U6L=1%1d zxzM8utxf%N3##(v(3_PbH8jwF%kYd@f!eSGtZA?jQ%ade{|&7fR0r?TL0<*vY*o)% zO&U35C6*$T2x6vxrn(X|LvEy*xx=`FxB<{e`Awjf9ToN@@X90mU0_8HWO(OuA%8fV z4aP_DVX(#ic^Oxa_^Yz!zODQ8Q@5<7$jHB`8ceGjH#RmFwfw$-5}=ex@4c?R{vv)U z{}hZp0vPSq!%StwxnAevd#E7cIP=CPQqaCPM}@5JHE1N)XSzr!Svz-bx&KuPzpxtE zSZDil4KwR%JO)BO4K=mFfR+f;_IJ4{fc}Ohu^MWPOfj@vcNSrJTQ%|Pg;cm6G||EW z0P1RJM2MNqo~JA@htaw8`$K+y4X8+A`CS8hDE1E^Cs=h_`#8Vq^y>}iulsa4+WH^1 zAJH%OYnawp&dy7F{ImGP|MSE z9~?=o>hj-d=Waq5OI`$osAWtbv?*}K(n?v1nf{1NYtZT$v^UpG9nI6^n@cSvhGD~? zzF2?gwGSOF7dISW)F6^#ph6=@Y2@*wQktPqZEgGI4Y#tht{r~TiEYV_H||Wg*S?Im z1qLpfG4gh>%SLsyO{Ts6v1)?9FK#7KT9Mt+nW?Dq_vL}(+PCZ*%FJFupTi26r()13M47zt{cn6S_|Hnq|~ zgiHM5hdKav6iT4{${(+AYYCJ<8!0YcUI(x`Z(OZx^N>C4;Uai~Rus-vBkLg3d;as~ z3CGXRVHDw}%nUtipH$jU!7ln`!0=)n2kaXSl~q+c2uh)6IN+-1dIUz`+rqi>KL^FP zW?+T@EkqC|m!HvD3l7&5H?7(f#z(4pr!VQOInZ_t1pt%=oH}-4WDmb9uBq9B?~$#n zSN6NBLK_4}R0giqNyg`405H^YDD``*!4j10&!=CLgVwApxQ89lFmQBK68p!$8jyvJ zb+Dm^UXnUHijat2a32cs;Y{Lin4O}eAheg976YaOVb@nrSw&b`hm%B?u%&`3dcf8FpO5_=Cj!7 zkG!hmcekdx^B+`5G#C36`{vvm5&7q9y(!BD+t;Bx)Db_2M(-c%TTlbf0Psoysq)BR? zF7bte4IFST8K;2K{#4!5^Dw(I`H!^(JBongHvQ~nDXv5br#UrQS-({i+Fi~cp3ouo z)m>@{j!eIQ#Pi~lge+rj=#F`NWo2c_`@Y(H{X|P^wzgXKL{DD7^A!n?LAZNFQi?mr zvdhZKDk`?XU$*e1c2&}L=912#&DT$fw7a3!a{?bKJ1!b>XIhS?z~P6Z$XaKUiPm15 zw)WxFuU}^4+OnUliqq2W)Q51qf+noDcltZeEx~~d>VyAAxlL5OTysvIoQMn3jj6po z50f5Zn@c(05phEn$BQeHUNteZT;l!R>q6h$J0{GctPwk1=%Q*vlzF~etjoev%Q0#& zg2g=y4amcVEz|LN6qllq{LCjvcEH3~5BULat(~N1*}S=qIf!>==iyQRcxmsw53Ksw zx1jzfnaNLQDxAM6y7OUub@aa{l-T6o|Yv{AUtp&%bHMtgo!Sj$b6yw(?GCj^~q>SrKpzHsC^3C%6stf5e#s z)ZV7`{l1%1%iV$?SM~_yDK1T@hbFvWF{J| zc0v@l#$5a7OsPsTPxcO}-DGtXZn>ZWNvSD9^2GWFQV|7h8E9eGE--t3!r)4Uoh=np#B){{^?!NEm z{XNI=9`AcR_w)Sou7CDE_O7+Q!{>8-uIoI{>%5%29ynN-nu?&GH-PLVfuaDiarzik zBUlIehKAA4)BeiQMm`4N!sW|ZUS}|;4V331cYILyeaeH@{C5Xpxs zV18>w%^kwaaTFKcXDw>EbW+cOSUhTmcT0ACpgeE9c>C^_zFy{3*h13K7>W*y#@d#U zRD)6-mEy8fbe5hAcvnQ^I!vqw9;aaCbIZ`er=n^)_glk7Zacyh^|DWh!%)+n70q<4 z&qH1h3m%RgW|&D3`jByucwlr0UF{&|OWJ9a>=Fb$sHAmvj~#<6>twkdO^-AVdpmg`+nyF&s8;UFoSW14mRkR9q{o&!hDr42g>dN4I+AqU_pNnE_N^K z@_%)TrNR+bYMW?9a1v)qhrPDERssQ%!4yr3CR z({osrTxWG@UP^)2M*k?Ya3GS^P@4Ii=o!7#UztnJWR zB_9w9^~kXQcBjGEEgWHaJNtUp2#p~L8_A^fXSvQgM4YmK?p)8J@dN`xiWBw`n;TL9 zknm<>x@hqcE<^oH=E^@fgNE@*<*tT~4pVQT+fvg{o;(3^Q%JXqt7TYw10E9biCl1A z7Pih=({-(K)6xuvuS%8{0W4Z*csbsgUi$o;np$&BFkh)q1=+DJ2erlR4)G&KVi!MS zj>$B+O4%UQu$P^jQ1H3&bYRhDmDS znsHqH+s&;5{)+Sdg9R-7=zqC~ww(~kBexX>l#3KYlcBzTPpZRwv5kO!ZcX5rbX{{xRsl8>!1x&(fycw20cC;tGtLi!!otz( z8a-ayJ$w$sX3Gl<1J%>98B3kext9K3=Hw!8|yn-ww#A@sbtB#?q&0qQV?*|I=9gU`EB1KIO5p;6= z!7i;6eX=32kGcBQXyPZmsYwlfvU%RT*Ned1nl>k+Xx2OCekp2E#B912h0zg5CTD=B)vTZgLY z{n#sZDldp$s`(jI8blSh>LQ?2a*jU-h1gq?bc1baU3fjZy1IC3oxcY=6^3k48rojD z!pI@o($uukCLN8DNVKtbc6UEtHY9z?=j}7dC$@>$aH_2nCBjfB!;;*Lm3C`;jXq;K zoFahds^mKVg{JxdnaPN=1_r&To_3LoZT>o!JH0AvFW#bepfJC7t?&}&O`CXgfcTu$ zlWvxEoPN4p%wb>FOM%Gk1Uqpemz80bYWfBS4#dil+=QY+_xorMdJx&8B)W_X>+(yi zuKP5jKVt~V0h+?Tz<9;hHplEXS>~94-qUjdN_JH&lAk|+hEWdbP(Z2Q`2e0|S7P-C zoFCC&8N6ZkC7+W2cYhm)nei<%$nWW6^5UA4&J+}`$0=4}R(6kKS7qOAKdIzJG^4CN zNUZHs{#8+2{mTK&U`|n9>W^Hy7}FSWzfK)e@qk zNH`ZW@_giW&VswAjo-TmFKl14I?c-uB|rQ5Sklopwc=G}K2_hadrml8E&FZhTb>K| z?cwg7zv9%|aL)caxL9z9cOAXfZWXb?dWB>-BQ32JoxDHbn{Ym&PMo+1P8#<(&BOP@ zQ(s-NeIDtLAEP7Di?6QDV;g4pkgH3=_hsoWpBm{zW)TL^P58%A4o3oRiPSgZ7Xfc2 za=v0YTxnBL++l1g$LpgjzAv##-*w2smrxWW@zyVv%|3J)gwcf_2g>Db@ zq>nuC-tKnwv~0vdVdBc-H&}O?ZM@Jwe!4;KbGH7TS|9|uyTG9qU7NTlT!-#C;FK;o zrsu$t?Uf2bZN9nBrjo(oItI2^D*XbQ!WS{xne%yasF_9G+xi*SYq*g*6?F z>|ve&DGzDDfTn;Z1FRG)f`zZkyNH}V*(qHw|Ck8dfUComc_v|`(tYRl3CnY(=&xHi z30e0JN!LW?CyWWT>pdFOmdomY2X<_z;OM{$z&+@^$ZTzpkPji+hOJq0uFwohorW|| z3n#|KN!>02-S%T7ztFotukPJC6Y?ayqv5d7k8r z)IWI)DW27&7;g$a-C1demriT!-?y(N2n($oV4YwlQYJr04{bI$7?mU!-0EFMwIYiP zXEWdq7Cr%|u}Y`E)e3lfzoq2A!!!azH#fIy*M2Gpl%9olJ~XtwqvI(CTA_Qb4-mzM z_5uF9>2JNB4J^v+oNNF2H6Ui0ca~!aW7$_U|F_m>XCGo;>0R(H03FpRq_V(!bJ^w0 zz|WDNUuF%XGgE~{df`jQ565dy8yXsJ=XWJ~b6tN2EL?X!{58-%N?@7n->8gR$Q}+e(=_(1r8@UJMJ=Se@Pg%YU3%x|W3DbiuexuuAPSfG9! zVj3SXCBP~|!g+IoIx{o#Nxc?$5=^z^Q@SRbHQoK*{IN)YLiFEEa-9Q z!qeyDb?Am1CaJL%r|FN2W#}R=vs&UPthyYX$8IJ=|LBVlRmXNF=Q|M;~6MP zRjzifC_Mf*se>KN9s<}N^J7N`8TiR*mL74~Rzc>CbsiCZ~| zSp!Y!lEs+b+H(BTjfYE?(QP4B>!Dp_X8UC@3X3V=U5v6sA~ub3e)>J;fZ*U)Jal!l zx~ghi{1kyG+NJ~kp0-0JfBEuP{HdwhjN%h9cT4x2qfpY8n&`TY(B5u1{rs}JdMgh3 zJaOXDV#zEKH1GM{5HCprrdxNubgQTH8wncf_ z0KDqf0L@sqK+*evVYm;7L*d~1AdUnPOp8|z<*mAbLAvD8EE1a;Ak}o$1=tt!6NHbh{0rk>E}1mVy7ZJ$1V)MGR|!;$N^p;Q4v zpkgraIco{4q_e*@?{ds}{#&5lm^b>fUdMx!(sQq`Nk#Wx;Z(_c6qy?6_| zllSV}t}yeFfW?J?X%w0PFjC?NfLB)H7oSq0Xr7AjKQxF8rSl-|O-$vbmWp70YQ$Jx zGBOH8HM-7Iuk=s#8FM2StzHfcw-dud&fz}TOkI*CQ)RO2{bYRc?`!Iyl(!UcJGt(+EvK71aGT3pfo zP@Hit>w%ZqOy_gTeoKWxRNFizZO=Rd#$T66Hz&WXBZ3O27ebSl7u|{mdLP%X(ZXKj z#`}XEOaMi`k94XHIXvrcgCWR@25J}Ac;7YG?ueTuG_X!BJJ95mjn1h2u z!0c_h;JOlEfwzmoxZmn|_JjO35GN6d%RSJ6ie}%Co}h_2c|2-cnPPYT)It(xqaG=8 z*$A^ZF{4Br(92b(UNT?I1;v=8+zzDpFd2wA$E;oeHP&d)EHXyszl*nch}WBeHRLiSJ%+MJ!8ouGrZ#+7K5i|=tb zB_drvoqmI>rSAih8=Wh93d*FkJ$So#5xgag0yQ!(t6#rv)V?(Dp#4fbYt|rf1+iS# z6W#mugk4O--Mf$fU;&*urz&ScnllWK`4O;_s+r-vE2`g2`FFgFTsWX(4mS%Z!?fcp zvzD@Q1LmwUbgVyOz`tW^$E~@y3Cya6wq|C@hXzq@+}=UVw|Cbki>`JK-g)e#w{E${ zu+Jr%8Ow!*GaL&GqyIN2^{^-vvTm9I&&?zczew1hGjbEbJH@(Q9hl$_iYfbkxw!79WabA z+ioSbig=+1AN~UewX(XXS$&a3{~WkIikaE#sNcLq(cEkK=u!k@m-9L*xq@nTd| zVz)RUn)hO0wVhsysioy4%Tn&+h&eA2U0H0pLe#moQ7cgXQ;DA-#i_}JX$hOhOjH9h zu|rEqIm~4`r7k#+J;&=A{EXlcJpQESn(Z?Ahwo&WI1N8F6=TK+uS2 zU)q^fVI=*M{DiU07iN=12Z6gc7`3NrgLjG*Lc5PEItj^k`}z6vRPyxQ7|@oA=?m70Tz;3WtYvB5DXDRQ;+`|uHj(c7gV07UCfFKWLf6N$3R zEmg0?;H9jw83N+Xvxdj9d9S?ET|u5Fb#a(i&t z`aZz~+-pjSPqpi*cXXFpEsE-^&;2WG7eT;w3-1S5N#o!17*TTm!;SZUYQWs$HIe=g zkt=-$5+?;-x$FynJ>WNi!Tkr-H|fwagrAt^1ciAb|fLb=oP0CGHdC<>FwUp@mnc5UW+ zuPAKOVFW@=BhkQ~VO_hX>D{H?++cOwGKo85hON=papG6jq+=T?G zLFLMoEAS6Me$j{k2-}q#cN(@_flL@_BHCyp_67WHOs|k-CN2G9!I)kr%jgAUSc<=3 z@k9w0T+B`zI$;r+5FZ~8Nf05RC1S9-`Jw7nNSm6aS8y0H06Q#0&VjStSdc*M{jTX! zcHdb9$dvazepZ0ONWVB=c)x{}RhiBE>)9`stA4;WU_%%GN73+&JNKib`yh&lyuv18 z|D^?$5N<y9fjzhA;%)-L6#1j0M?Wa43 z3~yF*xzT3?@8wlL>yvs_CD{m4XB=gW>63+dc~i(VQSQ>Qeld~-8HO|F^f3k;-w)OX zTaZXYiecaGaZd(CzC*IBpKGd;yT?>Mp=ntLWXeg_cQ_XORymnqlqGroGU|0?3{zbJ zsvoMFE-^iEZTqA5{Yoy!0Rg%1{vq3t1{H$I^uG#>LGcq2Z4@&>np+z{#5=FmXMg<- zXyzkU-6GcWerQ@%-+T^32w9vD5%0a4gm*X!g#+l?V78UNgm_o+%dcrM%Ckw^`A#oi zY#b;b$W`M24!cx)08?FkvkA>{5Skh%cL*PN$h1+y4In1{qs1q+JfSk*vQyaL`Bzv% z4G@w*J=r^ZTzMEF2&>Mw zkz(^R8S_qn?0PTdjl-mlg_(J|S#l$oR3zWKHyQ2XA1u1*PiWy^D-%x1iUBrj{I~GO zyJFQX;LOGWAj6rS9J9XwSZxNjQ}2Q`4OTypaQ54JsKFzI{I8D=lh&qoOM?>`2zGZ#Al%@C#2 z%&_4+)vtwDP@;N-x@}baL1cJD1my3FYf>>l@()Z`bF=g>Yn=D)KPtC}J2XrE9-E&l z$1jArc64-XIiULn;MU*R9g&?9Cd`M9SMZDM77!T2^bx;CmkStBsgp=V2#+^`5fRQP zOTUjt{~n4CRK2OAs*2^m@q0tDFS)>*Bq}zvyRlK2)t5kxx^WT#@?v{b=@nG-ClKpM_z-ka3YW*vpDbF}{hViD{_F2F+&S@o3C zwf?GG?S}59$;q#UYf)e!e$lPl2Ex~XX{K3A+JZ(OU7i~iDd|<+l8$ja!f$++C^@LQ>5aE)Ixx@ zyZC-elon4CO|U=upNduU;Z7iYn=TP9;5$#sT}JWCAl!X!?^B4-x~qtSJ$nds^J$1K zj4lNte93fgD`2G_NUIj}3)wX8c4two+PlfC<9+asvekP2BabXT$Vcl>j?^Wy7-VQ= zRVWpTRME8o%2~*c11@9!8zqo;XpLeB&?K40oIs-&&u1tqtA_kA- zF&*q#I5OcUeL6GlCuhliD z4Pc@$Ukq82Ai4hj8c26xmW%# zVq6^%7#N6To6=iSn4SHtP1kzLt0aG!7eh=W9Dig|J=%=(-|93vsH+EWq!O(FjY#A&$jF{bbGd4%T)%RKt)6c@{MJKGTOgS*cyPd%zLVXnf(Ovyl@37>M@ zUF#3nbao}y_ez_wpucIuW+9Z!;(1WB%uTi$?#lVcd=1Oc$?)zJt&hV`f?YWd3-%7Y zAoBq3cdX}Sjv`aSIflq(B_%k|v{~&a6dIz2TP1_=$&#<huH;+ z(_g?Mq5Y4UvYjRj+7~{ZZ#5VkKdq3l?V=RaMT!-~#X%P2f7JGq;vDP(?cte;Xu*-y zt+o0J>XBdpzW83W8HWp5U=Pm$G!}qgU59Ylww!8K_Wd%UKM z2ygw+j9uQ{PQz)RY9t!}bG<1b*DLB zaDCl7H->x6--XeEpXaFUWr?p#6bAds=Lw%^Y;YbPKsrUG=VR_}GFmwjm%CL-!_ctY zyp=aXfG~l5cYnc zJUAj_0G)g~LoN(pEgF|XD=ipyv4oc21$l0{W#^$jL6-54|G)yAPmH*(VL1pnwB-3o zEO)_L+->?E?mL8>FBXIGT?YT1J{LO~65AA+eGi4kaxkaiNr zeV^{2Y(-XNdw8ewV7HpfdzwR_95Hnz>=X1u#b~jxzjx%vK0siNXW9=fWFFbaK_V91 z%nIxqbDy70?8#kk?eh@bEi5a-4&D-%3^1_kzOT#Gm)t-c?sYf^{B`daBq_D%pW16-OHh%gBMjO%5#~erXtoLSYAqWFJ^x0DAFeSjoK?bjM^=WE=69A@k zj#DFVL?4E*ZgU|bljPob!{nelkw>q61G>@sRk+)x^4R>uvAbK3G*w-|Gs1Nglz!hP z7~3a@c_W0CKPRgla#vIom)|{Ga%10NXqh5+fQvg2=5w1DZIYAo%@g&<#@Lf>e*U#` zn-+{I?r>@yCX>njTMq6#>ak78JSfh*eXWz4?2m6)bVEwH3-BIoussY2T7Q2(`ZbDo zns!2S7J9-8ZpCAO9K^kW1CFV|8Bph`#)k3lTy^P&c|pgE*|+Ru zAM|k?YLYIGk626KG@Y`2Zdihb0EE~4?zNVp55=*PF)sSDgm7#HPNX!L(F$$ShoY_> zM4YhW1zyiXNCl(_|95}QO~2%Q%)FbLR9D=7Zq2J@Xqdsz!^^wV<1Mdff6?z);svyJ)Vf@Z8ub`}KcmTBcnSg5+zv#nU-QAL1>0q)0EB#O?|v;j)e) z4cmQplNOGlfL53C;g^$S)x75^rDcaQm-l78@C%o1Up~0|X z&~t1#G>gJ@={JKyLoNQ&N!_%qeIv@pPK;+kgzDB)Eq;^q2rdLqc7YPQe7}$wr7^@$ zRa$xpxq)ZjHXEp?Fxb(7A}Cl|wym|L<)q#{%3SJIC!CS^Upc$-p25ek(Pv?a>8Sm> zG#umn4^3jKTjin4NaLXiRwJdYn#CGN3C7yZCK7?YIJ8mv|0hW-Fcn^X$CXJ+!O%i5 z?8+tA&Za#x0G7(J^*31ipARL9;PDvk!u+Tv5-X7~c}&_%?B2UK2}NSz4lcK}9rR44 z1%is_6qrSa9drBF^V2}B(kC(;lEO(3s$Xf)>4w|(`X3fVZ#^1qRfjG7AbOkGn)TC5 zA=(gf{P9adwMeP(VOabH!K8Oj59ju)@4SZN=S9%Xn>WcBit<1um+7luF74NT={dG- zSxfgV^bcy(*4GOFe)cGb(Gnv+KlD&!XE)Z+M0=9tPTY3S&%9gJT{ z#j1u?eU>y4L!pd$r0b#Ap+U$u%s^mskcp2GjB^OTZRmM|2p@lU{6!7xONQo^~ zcmUBSZugNAv4o&{C7Q2u$@pO;A}3wUWqhnZqPZ3vq%-8S(Q_l0Hgt*Krp2B=Va`zH z6T66S7{PPFLolCQ74ISSIVsAiX7RgnPy8VXNt`PXX*nxR&aYcc!aPo2|I>%^-yl_6 zxSandPm^8!Ck6iZJafsjFuZm`PJ-4}%f%(oPjLD^U(l_|CTcf`rdsyhH#BtS;1-&W z(nl=2sEB~M%kC}wX-)+qiH<|7tOIgCWT*f{T0d3Er%X*?vh4yZLn7^1K+NGEMoeXz zTkCF)iBsqaMSpkxItz32l69r{^;41GrUIrIv>KXWZKanIWA5-v#jaJG_( zpED|Qxw#}jDSM){uNB-yHg+9|cMm4M9;ioBorzXX02F|5rIYQTiL*9J=%7z6y)a40 zX8y+KB-@AyPdLhng5ey=I17Bq#16ItVgB`EB*~54XdTDl;`00F=j|AOAxt=>16p}g zTiZOJjIF#X%8Ce^tXzm+@$n~za_9)UZr~>(7KGe%k|9GNeV|~SG*i~o>qeG}10xDq zjj#3@Qn1+VQZzaZJ(9vmRu#; z;#bOK1IJ=YPQ}nT6Rl>|svsMFqqfIrB;wMnyBJciu#mIE!T7JSZ8yR# zevH4TkF@7+_iq%$6k<$nyGKN>Y`OF2&s$kRt8+=fu*~wG-wLjAF|F_!xOZwB@__JT z?!N)MR7R&geoQ>jDA0vIwz&EVKW#h}z=2~W6Q>t0@jg(_;m;tS){;&d9ov3L#N!i} zCy9jS8>TEjuL(=pA6L6JIsrN9y@z8SwNnoeU4XzsBQMM0Y77CfE-r6zf|Rj0peZ3i zLFM0TIoVt#2GyjZSr%nrPR;YGX=!Qt#WFvRZby&SYOa!;oE)PU^a-yq9qB=nG1D6W zLiLei-`^ar|M8N~u?#vEVwM7i8(jKZ`B}YGzsTRo$$cI+E!-tEFF%mc9>^T(x{vfz7P@#d*f^`R31^&X+!C?{NM+r;}P5HP=<| zdaQHACCad@99dvjd5Elh5OAidd{kYokpzf}O(FD$D# zEvt?qr@V9L4(2eu#k(Zc-B?P{+^i%Y#psRvI=d;S6%c!FQP3F)(IfCwH{@sfk17U< zT)wljlQ`=^pqZzKfX;CQ5=E#Ap&dl+4S83PNK#S~a^viM##lRqf>w&gzmC9DcOSed z-_l1~A1Sd%RaI3nFmCxu(r)rV2^PRxAd%mqe>c0cp*9UQbVFuqG0=#I+*#^e&}3kn z7oU)TYoS3KhJ?AH8P$7_=a=Ka?k0f5X8UQJKK&LrB}m>%M$1*iZ?R&hHx8-oyyYxO z%=oLo$odcNBV7e!2ymmQ`Cv)#yAQeqBI=^?T3hoPR*@)fIJyHM+~ z=^j7+9JN;&Fm-eqc7{L(GAO*lS|M`NT@>-Om;M|neaErWD5Q7v_)S^5HBxc)OeXQi zvE%xILKi3DHQjYxzMwCky0EMpnw_E$bd`c%cf~-Lb#IYG77=m5_fF~IRNaD6Bzs7e zi2LHl>pXVlqpbMS0iEy4>`x5OGQ?;TAjXfz6NFCTsRmIup&KhHF>#?IdAY5D;pdHF zH=5qV*M&E8zkopf>(?rD;&y||!u6oeT`eZ|v>Sl>DBC36fp>`(L9x>rJA+&LRjLO8?;3 z(e+GE9^jSS%_y7Uh11inG;J|u1A}eT>S;d-IHsEid%xDA>qq zXoLjz6GLd(VHp$5(YMt|_c3+tyDxu?tW0@{$Ad~i>FGhb3);LeU4gCz%eokeT=24E|MhW4{DcA48JW!APCP~Viy?{9L&HW zdbV(a0Fh=-L7*9hQFH)iRYK@>yDOK|?U)R{;xD)=w%^*BnT~YyAKxM_U4;BlyT~p% zLp+470VdwR0i5LhK%!1jFgO1K%s*J3P}W&VM$n!AqYEG#Mw{r~y8w^GPx9Ww@AjK9 zp!4~_hHf-u0JxgWzbgEh=FSk)38n<^jYKllfn^O822LpF2|)vw0rFT-3qXS@XFi@| zFjZ0P#?wws-8XB8fQDUmD`EL7$l!>ztm%4VWxhrG=?RFrq~!u|qRsyN9Njg9W#5fP zt9ptDH?rkYLGhdNIelTsqj7;gS(esNKrU^8 zI*V{4GAwt)ZN`q!k-Yy#RAZ9W)~85JnV7iwXbye6TZ3*uS;sC0WNZ5wY{yz0at(?CJnti8$)ROd!QkeeqG~3Dg2DMa7{Q%%oy_i{LT4FMJ$3A z#=&b0 zEXrPA*^nEjjp9~t!vjRiU9laED_m#0`k=ZNaTs}E_5|ihk27kc-GBc?PEkS=4S_Zk zBF(hM&FwsM-tIrVk+lxKdYnegKZIoxV2vz((IZsPx4{;-%Ipig&|;CBo9k76gMewR zc`zFlU{Glu7OY`