/* 皮肤 night-glass · 暗夜玻璃（白晨 10-13 留用）。照原型 skins/night-glass/skin.css 搬：令牌一字不改，规则改成 wb- 类名。
   气质：夜里用的工作台，克制，有一束光——近黑石墨上一个斜射光源、右上一角琥珀光，卡片是烟色玻璃（暗色是主角，亮色「白昼」同一结构换色）。
   规则：中性色阶 4 级；唯一强调色琥珀 #F2B33D，只在主按钮、选中与光里，面积 < 6%；状态色只做发光圆点与文字色，卡底不变。
   作用范围：[data-skin="night-glass"] .wb-root（见 theme/tokens.css 文件头）。
   只写《界面规范》第 4 节的十项（背景、卡片材质、强调色、状态点位置、标签手法、主按钮、圆角、大数字、遮罩、焦点环）与颜色，取值照评审改版；
   位置、尺寸、间距、字号、字重、行高四套共用一份（theme/tokens.css 与各组件样式，定稿取值，S1E 清单 S-37）。评审改版暗夜自己的版式值
   （桌面左右 28、列距 14、卡头 32、问候行高 1.1、悬停上抬 2……）不再搬；testing/e2e/compare/geometry.ts 在浏览器里核对四套位置一致。 */

/* ============ 一、令牌（亮色「白昼」） ============ */
[data-skin="night-glass"] .wb-root {
  /* 大数字（十项之一）：SF 细体，评审改版 night-glass/skin.css:14 的 --font-num，只给 .wb-bign 用；时钟、计数等小数字和字号、字重、
     图标大小四套共用（theme/tokens.css，定稿的 SF 圆体），免得数字宽度把旁边元素推开（S-37） */
  --font-bignum: -apple-system, "SF Pro Display", "Helvetica Neue", "PingFang SC", sans-serif;

  --bg: #E6E8E6; --bg-2: #E1E3E1; --desk-bg: #E6E8E6;
  --surface: rgba(255, 255, 255, .74); --surface-2: rgba(255, 255, 255, .5); --surface-3: rgba(20, 28, 24, .065); --surface-raised: #FAFAF9;
  --pocket: rgba(255, 255, 255, .5); --pocket-2: rgba(255, 255, 255, .72);
  --topbar-bg: rgba(244, 245, 243, .5);
  --scrim: rgba(16, 20, 18, .24);
  --ink: #161817; --ink-2: #474A48; --ink-3: #626563;   /* 界面规范 1.1：原 #686B69 对页面 4.38，补到 4.79 */
  --line: rgba(20, 28, 24, .1); --line-strong: rgba(20, 28, 24, .18);
  --ng-amber: #F2B33D; --ng-amber-hover: #F7C25E; --ng-amber-ink: #1C1608; --ng-amber-rgb: 242, 179, 61;
  --ng-amber-text: #7A5200;
  --accent: #1F2220; --accent-hover: #323633; --on-accent: #FAFAF9;
  --accent-soft: rgba(20, 28, 24, .06); --accent-line: rgba(20, 28, 24, .22);
  --wait-dot: #D98A2B;  --wait-ink: #8A5210;  --wait-bg: rgba(217, 138, 43, .09);
  --late-dot: #CF4B34;  --late-ink: #A63823;  --late-bg: rgba(207, 75, 52, .08);
  --today-dot: #3C7FC0; --today-ink: #285F95; --today-bg: rgba(60, 127, 192, .08);
  --done-dot: #389A60;  --done-ink: #217546;  --done-bg: rgba(56, 154, 96, .08);
  --quiet-dot: #9EA29F; --quiet-ink: #474A48; --quiet-bg: rgba(20, 28, 24, .05);
  --on-dot: #161817;
  --decide-line: rgba(217, 138, 43, .5);
  --mark: rgba(242, 179, 61, .3);
  --changed-ring: rgba(22, 24, 23, .26);
  /* 提示条与横幅：照定稿的浅底手法（定稿 notify.css），底与影是下面「定稿新增令牌」的推断值；普通提示条在胶囊上另换评审改版的黑色反色（白晨 10-18 定，见「提示条保留玻璃」下面那条） */
  --toast-bg: var(--ntf-surface); --toast-fg: var(--ink);
  --edit-bar-bg: rgba(22, 24, 23, .9); --edit-bar-fg: #F4F5F3;   /* 编辑态浮条：评审改版 night-glass/skin.css:61 的提示条色 */
  --edit-bar-rm: var(--bad);
  --drag-src-line: var(--ng-amber);   /* 拖动时原位的虚线框同指到的那张，用琥珀 */   /* 浮条 × 悬停的红底（评审改版 app.css:529，暗夜没覆盖） */
  --toast-shadow: var(--ntf-sh-toast); --toast-btn: rgba(20, 28, 24, .065); --toast-d1: #F1F2F0; --toast-d2: #EBECEA;   /* 推断：叠在后面两条＝附录 B 第四节 B */
  --banner-bg: var(--ntf-surface); --banner-bg-d1: #F1F2F0; --banner-bg-d2: #EBECEA; --banner-shadow: var(--ntf-sh-bn);
  --banner-ic-ring: none; --banner-ic-ring-wait: none; --banner-x-hover: var(--surface-3); --banner-grab: var(--line);   /* 评审改版没有横幅：沿用浮层原有的做法（推断） */
  --ext-bg: rgba(20, 28, 24, .07); --ext-fg: #474A48;
  /* 圆角（十项之一：卡 18、面板 22、控件 12，评审改版 night-glass/skin.css） */
  --radius-card: 18px; --radius-panel: 22px; --radius-ctl: 12px; --radius-sm: 9px; --radius-xs: 6px;
  --radius-btn: 999px; --radius-pill: 999px;
  --ng-edge: inset 0 1px 0 rgba(255, 255, 255, .9), inset 0 0 0 1px rgba(255, 255, 255, .45);
  --ng-hair: 0 0 0 1px rgba(20, 28, 24, .06);
  --ng-drop: 0 1px 2px rgba(10, 16, 14, .04), 0 16px 36px -20px rgba(20, 30, 26, .3);
  --shadow-card: var(--ng-hair), var(--ng-drop);
  --shadow-hover: var(--ng-hair), 0 1px 2px rgba(10, 16, 14, .05), 0 22px 44px -20px rgba(20, 30, 26, .36);
  --shadow-pop: 0 0 0 1px rgba(20, 28, 24, .07), 0 2px 6px rgba(10, 16, 14, .06), 0 32px 64px -22px rgba(16, 24, 20, .36);
  --shadow-inset: inset 0 0 0 1px var(--line);
  --ease: linear(0, 0.04, 0.134, 0.254, 0.381, 0.502, 0.61, 0.704, 0.781, 0.843, 0.892, 0.929, 0.956, 0.976, 0.989, 0.998, 1.003, 1.006, 1.007, 1.008, 1.007, 1.006, 1.006, 1.005, 1);
  --ease-snappy: linear(0, 0.035, 0.116, 0.218, 0.325, 0.428, 0.522, 0.605, 0.677, 0.737, 0.788, 0.83, 0.864, 0.892, 0.914, 0.932, 0.947, 0.958, 0.967, 0.974, 0.98, 0.984, 0.988, 0.991, 1);
  --top-filter: blur(26px) saturate(1.5); --top-border: 1px solid rgba(20, 28, 24, .06);
  --logo-bg: #161817; --logo-fg: var(--ng-amber);
  --well-bg: rgba(255, 255, 255, .42); --well-shadow: inset 0 0 0 1px rgba(255, 255, 255, .55), 0 0 0 1px rgba(20, 28, 24, .05);
  --card-bg: rgba(255, 255, 255, .5); --card-backdrop: blur(24px) saturate(1.15);
  --card-shadow: var(--ng-edge), var(--ng-hair), var(--ng-drop);
  --card-shadow-hover: var(--ng-edge), var(--shadow-hover);
  --card-radius: 18px; --card-title-color: var(--ink); --card-icon-color: var(--ink-2);
  --modal-bg: #F9F9F8; --modal-radius: 22px; --modal-shadow: var(--shadow-pop);
  --sheet-bg: rgba(248, 249, 247, .8); --sheet-radius: 22px; --sheet-shadow: var(--ng-edge), var(--shadow-pop); --sheet-filter: blur(40px) saturate(1.7);
  --tile-bg: rgba(255, 255, 255, .62); --tile-radius: 16px; --tile-icon-color: var(--ink-2);
  --btn-bg: rgba(255, 255, 255, .78); --btn-shadow: inset 0 0 0 1px var(--line), 0 1px 2px rgba(10, 16, 14, .04);
  --btn-pri-bg: var(--ng-amber); --btn-pri-fg: var(--ng-amber-ink);
  /* 实心按钮＝琥珀实心（评审改版 ng/skin.css:494-497 弹窗、面板最后那一下提交的写法） */
  --btn-solid-bg: var(--ng-amber); --btn-solid-fg: var(--ng-amber-ink); --btn-solid-hover: var(--ng-amber-hover);
  --seg-on-shadow: 0 0 0 1px rgba(20, 28, 24, .07), 0 1px 3px rgba(10, 16, 14, .1);
  --badge-h: 20px; --badge-pad: 0;   /* 标签手法（十项之一）：不填底、不留内距，高 20（评审改版 .badge） */
  /* 背景（.wb-ng-field 与 .wb-ng-beam，theme/Backdrop.tsx 放进背景层） */
  --ng-canvas: linear-gradient(200deg, #EDEEEC 0%, #E6E8E6 44%, #DFE2E1 100%);
  --ng-sun-core: rgba(255, 252, 244, .95);
  --ng-sun-halo: rgba(255, 238, 206, .82);
  --ng-caustic-light: rgba(255, 253, 248, .96); --ng-caustic-light-blend: normal;
  --ng-caustic-shade: rgba(160, 172, 182, .38); --ng-caustic-shade-blend: multiply;
  --ng-beam: rgba(255, 255, 255, .78); --ng-beam-blend: normal; --ng-beam-w: 22vmax; --ng-beam-blur: 18px;
  --ng-grain-alpha: .05; --ng-grain-blend: multiply;
  --ng-sun-size: 140vmax;
  --ng-sun-layers: radial-gradient(closest-side, var(--ng-sun-core) 0%, var(--ng-sun-core) 20%, transparent 60%), radial-gradient(closest-side, var(--ng-sun-halo) 28%, transparent 78%);
  --ng-field-mask: radial-gradient(105vmax 82vmax at 96vw 0vh, #000 14%, transparent 60%);
  /* 焦散遮罩：feTurbulence 预渲染的可平铺噪点（光层约三成面积受光，影层只亮峭壁） */
  --ng-mask-a: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='1200' height='800'><filter id='c' x='0' y='0' width='100%' height='100%' color-interpolation-filters='sRGB'><feTurbulence type='fractalNoise' baseFrequency='.0015 .0022' numOctaves='2' seed='7' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 1  0 0 0 0 1  0 0 0 0 1  2.5 2.5 2.5 0 -3.6'/></filter><rect width='100%' height='100%' filter='url(%23c)'/></svg>");
  --ng-mask-b: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='900' height='1500'><filter id='c' x='0' y='0' width='100%' height='100%' color-interpolation-filters='sRGB'><feTurbulence type='fractalNoise' baseFrequency='.0021 .0014' numOctaves='2' seed='19' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 1  0 0 0 0 1  0 0 0 0 1  2.5 2.5 2.5 0 -3.95'/></filter><rect width='100%' height='100%' filter='url(%23c)'/></svg>");
  --backdrop: var(--ng-canvas);
  color-scheme: light;
}

/* ============ 一′、令牌（暗色，主角）：近黑石墨 4 级明度阶梯，色度 ≤ 2 ============ */
[data-skin="night-glass"][data-theme="dark"] .wb-root {
  --bg: #0F1110; --bg-2: #141716; --desk-bg: #0F1110;
  --surface: rgba(255, 255, 255, .07); --surface-2: rgba(255, 255, 255, .045); --surface-3: rgba(255, 255, 255, .08); --surface-raised: #242725;
  --pocket: rgba(255, 255, 255, .05); --pocket-2: rgba(255, 255, 255, .08);
  --topbar-bg: rgba(15, 17, 16, .42);
  --scrim: rgba(0, 0, 0, .58);
  --ink: #E8E6E0; --ink-2: #C0BDB7; --ink-3: #A5A29B;   /* --ink-2 推断（S-06）：原 #A9A69E 与 --ink-3 亮度比只剩 1.05，提到 1.36（评审改版两级是 1.34），对 --ink 仍差 1.5 */   /* 界面规范 1.1：对底、卡、浮层与浮层上再亮一级的面（白 8%）都 ≥ 4.5，最差 4.63（原 #918E87 在那一级面上 3.61） */
  --line: rgba(255, 255, 255, .08); --line-strong: rgba(255, 255, 255, .14);
  --accent: #E8E6E0; --accent-hover: #FFFFFF; --on-accent: #121413;
  --accent-soft: rgba(255, 255, 255, .07); --accent-line: rgba(255, 255, 255, .26);
  --ng-amber-text: #F2B33D;
  --wait-dot: #F2B33D;  --wait-ink: #F5C873;  --wait-bg: rgba(242, 179, 61, .1);
  --late-dot: #E5604A;  --late-ink: #F0998A;  --late-bg: rgba(229, 96, 74, .1);
  --today-dot: #5AA0E8; --today-ink: #9DC6F1; --today-bg: rgba(90, 160, 232, .1);
  --done-dot: #4CC38A;  --done-ink: #8EDCB3;  --done-bg: rgba(76, 195, 138, .1);
  --quiet-dot: #6E6B65; --quiet-ink: #A9A69E; --quiet-bg: rgba(255, 255, 255, .04);
  --on-dot: #121413;
  --decide-line: rgba(242, 179, 61, .5);
  --mark: rgba(242, 179, 61, .26);
  --changed-ring: rgba(232, 230, 224, .18);
  --toast-bg: var(--ntf-surface); --toast-fg: var(--ink);
  --edit-bar-bg: rgba(232, 230, 224, .94); --edit-bar-fg: #121413;   /* night-glass/skin.css:149（暗夜暗的浮条另换成浮层底，见下面 .wb-edit-bar 那条） */
  --toast-shadow: var(--ntf-sh-toast); --toast-btn: rgba(255, 255, 255, .08); --toast-d1: #2E312F; --toast-d2: #363836;   /* 推断：叠在后面两条＝附录 B 第四节 B */
  --banner-bg: var(--ntf-surface); --banner-bg-d1: #2E312F; --banner-bg-d2: #363836; --banner-shadow: var(--ntf-sh-bn);
  --banner-ic-ring: none; --banner-ic-ring-wait: none; --banner-x-hover: var(--surface-3); --banner-grab: var(--line);   /* 评审改版没有横幅：沿用浮层原有的做法（推断） */
  --ext-bg: rgba(255, 255, 255, .07); --ext-fg: #A9A69E;
  --ng-edge: inset 0 1px 0 rgba(255, 255, 255, .1), inset 0 0 0 1px rgba(255, 255, 255, .07);
  --ng-hair: 0 0 0 1px rgba(0, 0, 0, .3);
  --ng-drop: 0 18px 40px -24px rgba(0, 0, 0, .8);
  --shadow-card: var(--ng-hair), var(--ng-drop);
  --shadow-hover: 0 0 0 1px rgba(255, 255, 255, .12), 0 22px 44px -20px rgba(0, 0, 0, .85);
  --shadow-pop: 0 0 0 1px rgba(255, 255, 255, .1), 0 30px 70px -20px rgba(0, 0, 0, .9);
  --top-border: 1px solid rgba(255, 255, 255, .06); --top-filter: blur(26px) saturate(1.05);
  --logo-bg: var(--ng-amber); --logo-fg: var(--ng-amber-ink);
  --well-bg: rgba(255, 255, 255, .05); --well-shadow: inset 0 0 0 1px var(--line);
  --card-bg: rgba(27, 30, 28, .72); --card-backdrop: blur(24px) saturate(1.05);
  --modal-bg: #1D201E;
  --sheet-bg: rgba(26, 29, 27, .84);
  --tile-bg: rgba(255, 255, 255, .05);
  --btn-bg: rgba(255, 255, 255, .06); --btn-shadow: inset 0 0 0 1px var(--line);
  --seg-on-shadow: 0 0 0 1px rgba(255, 255, 255, .1);
  --ng-canvas: linear-gradient(200deg, #131614 0%, #0F1110 46%, #0C0D0D 100%);
  --ng-caustic-light: rgba(255, 192, 80, .3); --ng-caustic-light-blend: screen;
  --ng-caustic-shade: rgba(255, 170, 60, .15); --ng-caustic-shade-blend: screen;
  --ng-beam: rgba(255, 236, 205, .18); --ng-beam-blend: screen; --ng-beam-w: 9vmax; --ng-beam-blur: 12px;
  --ng-grain-alpha: .05; --ng-grain-blend: screen;
  /* 暗色把光收成「一角」：光源缩到 80vmax，核心够亮，往外很快衰减（大面积低亮琥珀会读成棕雾） */
  --ng-sun-core: rgba(255, 200, 100, .17); --ng-sun-halo: rgba(242, 170, 50, .06);   /* 评审改版 ng/skin.css:173-174（暗色光层下一行直接写死，这两个只留同值） */
  --ng-sun-size: 80vmax;
  --ng-sun-layers: radial-gradient(closest-side, rgba(255, 196, 96, .5) 0%, rgba(255, 186, 80, .2) 16%, rgba(255, 176, 60, .05) 40%, transparent 62%);
  --ng-field-mask: radial-gradient(62vmax 50vmax at 96vw 0vh, #000 12%, transparent 62%);
  color-scheme: dark;
}

/* ============ 一″、定稿新增的颜色令牌（S-02）：定稿只画了浮彩亮，这里全是推断（推法照附录 B 第四节：暗色四级明度阶梯、唯一强调色琥珀、
   长文本与确认不上玻璃、影带一圈白描边；白昼是同一结构换色、冷灰影不出泥）。名字照定稿，每个值验收时给白晨看。
   暗夜的详情层仍照评审改版（--detail-*，x-detail.css），这里的 --pv-* 给之后照定稿新画的弹窗用。 ============ */
[data-skin="night-glass"] .wb-root {
  --pv-scrim: var(--scrim); --pv-surface: #F9F9F8; --pv-tint: rgba(255, 255, 255, .8);   /* 推断：＝白昼的对话框底、图标底板 */
  --pv-sh-layer: 0 0 0 1px rgba(20, 28, 24, .07), 0 2px 6px rgba(10, 16, 14, .06), 0 32px 64px -22px rgba(16, 24, 20, .36);   /* 推断：＝白昼浮层影 */
  --pv-sh-menu: 0 0 0 1px rgba(20, 28, 24, .07), 0 2px 6px rgba(10, 16, 14, .06), 0 14px 32px -10px rgba(16, 24, 20, .28);   /* 推断 */
  --ntf-surface: #FAFAF9;   /* 推断：＝白昼浮层底 */
  --ntf-sh-toast: 0 0 0 1px rgba(20, 28, 24, .08), 0 12px 28px -12px rgba(16, 24, 20, .3);   /* 推断 */
  --ntf-sh-bn: 0 0 0 1px rgba(20, 28, 24, .08), 0 18px 40px -14px rgba(16, 24, 20, .32);   /* 推断 */
  --e1: #E9AE86; --e2: #E6A0B2; --e3: #B7A3DC; --r1: #E39F78; --r2: #DB8EA4; --r3: #A994D8; --e-ink: #96566A;   /* 推断：亮底上原值可用（--e-ink 对 #F9F9F8 5.20:1） */
  --e-tint: linear-gradient(115deg, color-mix(in srgb, var(--e1) 16%, #FFFFFF) 0%, color-mix(in srgb, var(--e2) 14%, #FFFFFF) 50%, color-mix(in srgb, var(--e3) 16%, #FFFFFF) 100%);   /* 推断 */
  --e-wash: linear-gradient(115deg, color-mix(in srgb, var(--e1) 6%, #FFFFFF) 0%, color-mix(in srgb, var(--e2) 5%, #FFFFFF) 50%, color-mix(in srgb, var(--e3) 7%, #FFFFFF) 100%);   /* 推断 */
  --shadow-lift: 0 1px 2px rgba(16, 24, 20, .1), 0 16px 32px -14px rgba(16, 24, 20, .2), 0 42px 84px -30px rgba(16, 24, 20, .3);   /* 推断：冷灰，不用暖褐 */
  --shadow-edge: 0 0 0 1px rgba(255, 255, 255, .75), 0 0 16px -3px color-mix(in srgb, var(--e2) 45%, transparent), var(--shadow-lift);   /* 推断 */
  --dusk: #A86A0A; --dusk-soft: rgba(242, 179, 61, .16); --dusk-line: rgba(200, 140, 30, .45);   /* 推断：暮色并进琥珀，亮底上写字压深到 #A86A0A（T39 收工小结已用的值） */
  --sc-paper: #F9F9F8;   /* 推断：不放暖纸渐变 */
}
[data-skin="night-glass"][data-theme="dark"] .wb-root {
  --pv-scrim: var(--scrim); --pv-surface: #1D201E; --pv-tint: rgba(255, 255, 255, .06);   /* 推断：弹窗不透明，取对话框底；图标底板同暗色卡头 */
  --pv-sh-layer: 0 0 0 1px rgba(255, 255, 255, .1), 0 30px 70px -20px rgba(0, 0, 0, .9);   /* 推断：＝暗夜暗的浮层影 */
  --pv-sh-menu: 0 0 0 1px rgba(255, 255, 255, .1), 0 14px 32px -12px rgba(0, 0, 0, .8);   /* 推断 */
  --ntf-surface: var(--surface-raised);   /* 推断：提示条照定稿浅底手法推一版深色底（白晨 10-18 定） */
  --ntf-sh-toast: 0 0 0 1px rgba(255, 255, 255, .1), 0 12px 28px -12px rgba(0, 0, 0, .8);   /* 推断 */
  --ntf-sh-bn: 0 0 0 1px rgba(255, 255, 255, .1), 0 18px 40px -14px rgba(0, 0, 0, .85);   /* 推断 */
  --e1: #E9AE86; --e2: #E6A0B2; --e3: #B7A3DC;   /* 推断，待白晨定：保留杏粉淡紫（AI 草案的语义色），还是改成琥珀单色系守「唯一强调色」 */
  --r1: var(--e1); --r2: var(--e2); --r3: var(--e3);   /* 推断：暗底描边取本色 */
  --e-ink: #E0A0B5;   /* 推断：对 #1F2220 7.54:1 */
  --e-tint: linear-gradient(115deg, color-mix(in srgb, var(--e1) 20%, #1F2220) 0%, color-mix(in srgb, var(--e2) 18%, #1F2220) 50%, color-mix(in srgb, var(--e3) 20%, #1F2220) 100%);   /* 推断：混进草稿卡底 */
  --e-wash: linear-gradient(115deg, color-mix(in srgb, var(--e1) 10%, #1F2220) 0%, color-mix(in srgb, var(--e2) 9%, #1F2220) 50%, color-mix(in srgb, var(--e3) 11%, #1F2220) 100%);   /* 推断 */
  --shadow-lift: 0 1px 2px rgba(0, 0, 0, .4), 0 16px 32px -14px rgba(0, 0, 0, .6), 0 42px 84px -30px rgba(0, 0, 0, .8);   /* 推断 */
  --shadow-edge: 0 0 0 1px rgba(255, 255, 255, .14), 0 0 16px -3px color-mix(in srgb, var(--e2) 45%, transparent), var(--shadow-lift);   /* 推断 */
  --dusk: var(--ng-amber); --dusk-soft: rgba(242, 179, 61, .12); --dusk-line: rgba(242, 179, 61, .45);   /* 推断：唯一强调色琥珀（T39 收工小结已用的值） */
  --sc-paper: #1D201E;   /* 推断：＝对话框底 */
}

/* ============ 二、背景：右上一角琥珀光＋一束斜光＋颗粒 ============ */
[data-skin="night-glass"] .wb-root {
  & .wb-ng-field { position: absolute; inset: 0; overflow: hidden; background: var(--ng-canvas); -webkit-mask-image: var(--ng-field-mask); mask-image: var(--ng-field-mask); }
  & .wb-ng-field i { position: absolute; display: block; }
  & .wb-ng-sun { width: var(--ng-sun-size); height: var(--ng-sun-size); left: calc(96vw - var(--ng-sun-size) / 2); top: calc(-6vh - var(--ng-sun-size) / 2); border-radius: 50%; filter: blur(48px); background: var(--ng-sun-layers); will-change: transform, opacity; animation: wb-ng-sun 12s ease-in-out infinite; }
  & .wb-ng-caustic { will-change: transform; -webkit-mask-repeat: repeat; mask-repeat: repeat; }
  & .wb-ng-caustic-a { left: -300px; right: -1300px; top: -900px; bottom: -300px; background: var(--ng-caustic-light); mix-blend-mode: var(--ng-caustic-light-blend); filter: blur(42px); -webkit-mask-image: var(--ng-mask-a); mask-image: var(--ng-mask-a); -webkit-mask-size: 1200px 800px; mask-size: 1200px 800px; animation: wb-ng-caustic-a 43s linear infinite; }
  & .wb-ng-caustic-b { left: -1000px; right: -300px; top: -1600px; bottom: -300px; background: var(--ng-caustic-shade); mix-blend-mode: var(--ng-caustic-shade-blend); filter: blur(46px); -webkit-mask-image: var(--ng-mask-b); mask-image: var(--ng-mask-b); -webkit-mask-size: 900px 1500px; mask-size: 900px 1500px; animation: wb-ng-caustic-b 80s linear infinite; }
  & .wb-ng-grain { inset: 0; opacity: var(--ng-grain-alpha); mix-blend-mode: var(--ng-grain-blend); background: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='200' height='200'><filter id='g'><feTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='3' stitchTiles='stitch'/><feColorMatrix type='saturate' values='0'/></filter><rect width='100%' height='100%' filter='url(%23g)'/></svg>") 0 0 / 200px 200px repeat; }
  & .wb-ng-beam { position: absolute; width: var(--ng-beam-w); height: 130vmax; right: 4vw; top: -12vmax; transform-origin: 50% 0; transform: rotate(38deg); background: linear-gradient(90deg, transparent 0%, var(--ng-beam) 30%, var(--ng-beam) 46%, transparent 100%); mix-blend-mode: var(--ng-beam-blend); filter: blur(var(--ng-beam-blur)); -webkit-mask-image: linear-gradient(180deg, #000 30%, transparent 78%); mask-image: linear-gradient(180deg, #000 30%, transparent 78%); pointer-events: none; will-change: transform, opacity; animation: wb-ng-beam 14s ease-in-out infinite; }
}
@keyframes wb-ng-caustic-a { 0% { transform: translate3d(0, 0, 0) rotate(0deg); } 25% { transform: translate3d(-300px, 200px, 0) rotate(3deg); } 50% { transform: translate3d(-600px, 400px, 0) rotate(0deg); } 75% { transform: translate3d(-900px, 600px, 0) rotate(-3deg); } 100% { transform: translate3d(-1200px, 800px, 0) rotate(0deg); } }
@keyframes wb-ng-caustic-b { from { transform: translate3d(0, 0, 0); } to { transform: translate3d(900px, 1500px, 0); } }
@keyframes wb-ng-sun { 0%, 100% { transform: scale(1); opacity: .86; } 50% { transform: scale(1.05); opacity: 1; } }
@keyframes wb-ng-beam { 0%, 100% { transform: rotate(36deg); opacity: .8; } 50% { transform: rotate(41deg); opacity: 1; } }

/* ============ 三、顶栏与首屏：只有颜色与 logo 的光（版式四套共用，features/shell/shell.css、brand.css、features/desk/desk.css） ============ */
[data-skin="night-glass"] .wb-root {
  & .wb-logo { box-shadow: inset 0 1px 0 rgba(255, 255, 255, .5), 0 4px 10px -4px rgba(180, 120, 20, .55); }
  & .wb-tbtn:hover, & .wb-tbtn[aria-expanded="true"], & .wb-top-me:hover, & .wb-top-me[aria-expanded="true"] { background: rgba(255, 255, 255, .5); }
  & .wb-wait-btn.has { color: var(--wait-ink); }
  & .wb-n { background: var(--wait-dot); color: var(--on-dot); }
}
[data-skin="night-glass"][data-theme="dark"] .wb-root {
  & .wb-tbtn:hover, & .wb-tbtn[aria-expanded="true"], & .wb-top-me:hover, & .wb-top-me[aria-expanded="true"] { background: rgba(255, 255, 255, .06); }
}

/* ============ 四、桌面卡：同层同色的烟色玻璃（卡底不随状态变）；状态点（位置与颜色四套共用，在 desk/card.css：图标右上角）带一圈底色描边、暗色发光。
   悬停上抬（3 像素）、卡头间距与图标块尺寸四套共用（desk/card.css） ============ */
[data-skin="night-glass"] .wb-root {
  & .wb-card-ico { background: rgba(255, 255, 255, .8); box-shadow: inset 0 0 0 1px var(--line), 0 1px 2px rgba(10, 16, 14, .05); }
  /* 状态点：一圈 2 像素的底色描边（评审改版 ng/skin.css .wcard-h .dot）；位置在 desk/card.css */
  & .wb-card-dot { box-shadow: 0 0 0 2px rgba(255, 255, 255, .95); transition: background-color .3s; }
  & .wb-card-chg { background: var(--ink-3); opacity: .55; }
  & .wb-card:focus-visible { box-shadow: 0 0 0 3px rgba(var(--ng-amber-rgb), .55), var(--card-shadow); }
  & .wb-add-tile { background: transparent; box-shadow: inset 0 0 0 1.5px var(--line-strong); color: var(--ink-3); }
  & .wb-add-tile:hover { background: rgba(255, 255, 255, .3); color: var(--ink); box-shadow: inset 0 0 0 1.5px var(--ink-3); }
  & .wb-ci:hover { background: rgba(255, 255, 255, .55); }
  & .wb-due--late { color: var(--late-ink); font-weight: 600; }
  & .wb-bign b { font-weight: 300; letter-spacing: -.02em; }
  & .wb-ck { border-radius: 7px; background: rgba(255, 255, 255, .7); }
  & .wb-ck[aria-checked="true"] { background: var(--done-dot); color: #FFFFFF; }
  & .wb-bar { background: rgba(20, 28, 24, .08); }
  & .wb-bar > i { background: var(--ink-2); }
  & .wb-avatar { background: rgba(20, 28, 24, .08); color: var(--ink-2); }
  & .wb-ext { box-shadow: inset 0 0 0 1px var(--line); }
  & .wb-edit-bar button[aria-pressed="true"] { background: var(--ng-amber); color: var(--ng-amber-ink); }
  /* 拖动时指到的那张描琥珀边（评审改版 ng/skin.css:453 .drop-to） */
  & .wb-card.is-drag-over { box-shadow: 0 0 0 2px var(--ng-amber), var(--card-shadow); }
}
[data-skin="night-glass"][data-theme="dark"] .wb-root {
  & .wb-card-ico { background: rgba(255, 255, 255, .06); box-shadow: inset 0 0 0 1px var(--line); }
  & .wb-card-dot { box-shadow: 0 0 0 2px #171A18, 0 0 10px var(--sd); }
  & .wb-ci:hover { background: rgba(255, 255, 255, .05); }
  & .wb-ck { background: rgba(255, 255, 255, .04); }
  & .wb-bar { background: rgba(255, 255, 255, .08); }
  & .wb-avatar { background: rgba(255, 255, 255, .09); }
  & .wb-edit-bar { background: var(--surface-raised); color: var(--ink); box-shadow: 0 0 0 1px var(--line-strong), var(--shadow-pop); }
  /* 当前那档仍是琥珀底深字（上面那条）：这里只改别的档，否则同优先级写在后面，把深字盖成灰（阶段 3 走查 W3） */
  & .wb-edit-bar button:not([aria-pressed="true"]) { color: var(--ink-2); }
}

/* ============ 五、标签与按钮：标签不填底、灰字，有语义的前面一个 7px 圆点；主按钮＝琥珀 tint，实心黄只留给弹窗最后那一下 ============ */
[data-skin="night-glass"] .wb-root {
  & .wb-badge { background: transparent; box-shadow: none; color: var(--ink-2); gap: 6px; height: 20px; padding: 0; font-weight: 500; }
  & :is(.wb-badge--ok, .wb-badge--warn, .wb-badge--bad, .wb-badge--info, .wb-badge--decide, .wb-badge--soon)::before { content: ""; width: 7px; height: 7px; border-radius: 50%; flex: none; }
  & .wb-badge--ok::before { background: var(--done-dot); }
  & :is(.wb-badge--warn, .wb-badge--bad)::before { background: var(--late-dot); }
  & .wb-badge--info::before { background: var(--today-dot); }
  & .wb-badge--decide::before { background: var(--wait-dot); }
  & .wb-badge--soon { font-size: 12px; color: var(--ink-3); }
  & .wb-badge--soon::before { box-shadow: inset 0 0 0 1.5px var(--ink-3); }
  & .wb-badge--accent { color: var(--ink); font-weight: 600; }
  & .wb-card-badge .wb-badge { color: var(--ink-3); }
  & .wb-card-badge .wb-badge::before { display: none; }
  & .wb-card-badge::before { content: "·"; margin-right: 0; color: var(--ink-3); }
  & .wb-src { background: transparent; color: var(--ink-2); padding: 0 2px; box-shadow: inset 0 -1px 0 var(--line-strong); border-radius: 0; }
  & .wb-btn { transition: background-color .25s var(--ease-snappy), transform .25s var(--ease-snappy), box-shadow .25s; }
  & .wb-btn:active { transform: scale(.97); }
  & .wb-btn:hover { background: rgba(255, 255, 255, .95); }
  & .wb-btn--ghost:hover { background: var(--surface-3); }
  & .wb-btn--pri { background: linear-gradient(rgba(var(--ng-amber-rgb), .22), rgba(var(--ng-amber-rgb), .22)), #FFFBF2; color: #3D2A00; box-shadow: inset 0 0 0 1px rgba(200, 140, 30, .45); }
  & .wb-btn--pri:hover { background: linear-gradient(rgba(var(--ng-amber-rgb), .34), rgba(var(--ng-amber-rgb), .34)), #FFFBF2; }
  & .wb-btn--pri .wb-ico { color: #8A5C00; }
  & :is(.wb-modal-f .wb-btn--pri:last-child, .wb-dl-f .wb-btn--pri) { background: var(--ng-amber); color: var(--ng-amber-ink); box-shadow: inset 0 1px 0 rgba(255, 255, 255, .45), 0 8px 18px -8px rgba(180, 120, 20, .6); }
  & :is(.wb-modal-f .wb-btn--pri:last-child, .wb-dl-f .wb-btn--pri) .wb-ico { color: inherit; }
  & :is(.wb-modal-f .wb-btn--pri:last-child, .wb-dl-f .wb-btn--pri):hover { background: var(--ng-amber-hover); }
  & .wb-btn--solid { box-shadow: inset 0 1px 0 rgba(255, 255, 255, .45), 0 8px 18px -8px rgba(180, 120, 20, .6); }
  & .wb-btn--solid:hover { background: var(--btn-solid-hover); }
  /* 不可点：暗夜的琥珀主按钮淡到 .45 会发橄榄，换成浅灰底灰字（评审改版 ng/skin.css:498）；其余按钮照通用写法 */
  & :is(.wb-btn--pri, .wb-btn--solid)[disabled] { opacity: 1; background: var(--surface-3); color: var(--ink-3); box-shadow: none; }
  & :is(.wb-btn--pri, .wb-btn--solid)[disabled] .wb-ico { color: inherit; }
  & .wb-seg { background: var(--surface-3); }
  & .wb-seg button[aria-pressed="true"] { background: var(--surface-raised); }
  & :focus-visible:not([tabindex="-1"]) { outline: 2px solid rgba(var(--ng-amber-rgb), .9); outline-offset: 2px; }
  & .wb-notice { background: rgba(20, 28, 24, .05); color: var(--ink-2); }
  & .wb-notice--warn { background: var(--late-bg); color: var(--late-ink); }
  & .wb-notice--decide { background: var(--wait-bg); color: var(--wait-ink); }
}
[data-skin="night-glass"][data-theme="dark"] .wb-root {
  & .wb-btn:hover { background: rgba(255, 255, 255, .1); }
  & .wb-btn--ghost:hover { background: var(--surface-3); }
  & .wb-btn--pri { background: transparent; color: #F5C46A; box-shadow: inset 0 0 0 1px rgba(var(--ng-amber-rgb), .6); }
  & .wb-btn--pri:hover { background: rgba(255, 255, 255, .06); }
  & .wb-btn--pri .wb-ico { color: #F2B33D; }
  & :is(.wb-modal-f .wb-btn--pri:last-child, .wb-dl-f .wb-btn--pri) { background: var(--ng-amber); color: var(--ng-amber-ink); box-shadow: 0 8px 22px -8px rgba(var(--ng-amber-rgb), .5); }
  & .wb-btn--solid { box-shadow: 0 8px 22px -8px rgba(var(--ng-amber-rgb), .5); }
  & .wb-btn--solid:hover { background: var(--btn-solid-hover); }
  & :is(.wb-btn--pri, .wb-btn--solid)[disabled] { background: var(--surface-3); color: var(--ink-3); box-shadow: none; }
  & .wb-notice { background: rgba(255, 255, 255, .05); }
}

/* ============ 六、详情层、弹窗、面板 ============ */
[data-skin="night-glass"] .wb-root {
  & .wb-scrim { -webkit-backdrop-filter: blur(6px) saturate(1.1); backdrop-filter: blur(6px) saturate(1.1); }
  & .wb-sheet-h > .wb-ico { color: var(--ink-2); }
  & .wb-mtile { box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .6), 0 0 0 1px rgba(20, 28, 24, .05); }
  & .wb-mtile:hover { background: rgba(255, 255, 255, .85); }
  & .wb-mtile.is-on { background: rgba(255, 255, 255, .9); box-shadow: inset 0 0 0 1.5px var(--ink); }
  & .wb-mtile.is-plug > .wb-ico { color: var(--ink-2); }
  & .wb-on-desk.is-ok { color: var(--done-ink); }
  & .wb-preview { background: rgba(255, 255, 255, .45); }
  & .wb-pv-h > .wb-ico { color: var(--ink-2); }
}
[data-skin="night-glass"][data-theme="dark"] .wb-root {
  & .wb-mtile { box-shadow: inset 0 0 0 1px var(--line); }
  & .wb-mtile:hover { background: rgba(255, 255, 255, .08); }
  & .wb-mtile.is-on { background: rgba(255, 255, 255, .1); }
  & .wb-preview { background: rgba(255, 255, 255, .03); }
}

/* ============ 七、手机：只改背景的光（桌面留白、卡头图标块四套共用，不像评审改版那样缩到 28） ============ */
@media (max-width: 760px) {
  [data-skin="night-glass"] .wb-root {
    & .wb-ng-field { -webkit-mask-image: radial-gradient(130vw 60vh at 100% 0, #000 12%, transparent 72%); mask-image: radial-gradient(130vw 60vh at 100% 0, #000 12%, transparent 72%); }
    & .wb-ng-beam { width: 60vw; right: -10vw; }
  }
  [data-skin="night-glass"][data-theme="dark"] .wb-root .wb-ng-beam { width: 26vw; right: 2vw; }
}

/* 提示条保留玻璃（界面规范 1.7：暗夜的皮肤特色） */
[data-skin="night-glass"] .wb-root .wb-toast:not(.is-soft) { -webkit-backdrop-filter: blur(20px); backdrop-filter: blur(20px); }
/* 暗夜亮色的提示条是黑色反色胶囊（白晨 10-18 定，照评审改版 night-glass）：只换材质（底、字色、阴影、圆角），位置、宽高、内边距、字号仍是
   features/shell/toast/toast.css 一份（同定稿）。页面上的 --toast-* 仍是浅底：轻提示（is-soft，撤销之后那条）照评审改版 .toast.soft（app.css:155）
   本来就是浅底；暗夜暗、浮彩两套都不走这条。评审改版没有横幅（会议提醒用的是浮层底 --pop-bg，x-meeting.css:63），横幅不改 */
[data-skin="night-glass"]:not([data-theme="dark"]) .wb-root .wb-toast:not(.is-soft) {
  --toast-bg: rgba(22, 24, 23, .9); --toast-fg: #F4F5F3;   /* 评审改版 night-glass/skin.css:61 */
  --toast-shadow: var(--shadow-pop);   /* 评审改版 .toast 用浮层影（app.css:154） */
  --toast-btn: color-mix(in srgb, var(--toast-fg) 14%, transparent); --toast-btn-hover: color-mix(in srgb, var(--toast-fg) 24%, transparent);   /* 反色底上的淡底按钮，评审改版 x-assistant.css:45-46 */
  --toast-d1: #2A2A29; --toast-d2: #353534;   /* 推断：评审改版不叠放；取实现黑色提示条的两档（theme/tokens.css:59） */
  /* 图标块、倒计时线、撤销类的灰字：黑底上用评审改版暗夜暗那一组（skin.css:134、140、142-144）；复制类照令牌引用在这里重新取一次 */
  --wait-dot: #F2B33D; --wait-ink: #F5C873; --wait-bg: rgba(242, 179, 61, .1);
  --today-dot: #5AA0E8; --today-ink: #9DC6F1; --today-bg: rgba(90, 160, 232, .1);
  --done-dot: #4CC38A; --done-ink: #8EDCB3; --done-bg: rgba(76, 195, 138, .1);
  --quiet-dot: #6E6B65; --ink-2: #A9A69E;
  --toast-file-dot: var(--wait-dot); --toast-file-bg: var(--wait-bg); --toast-file-ink: var(--wait-ink);
  border-radius: 999px;   /* 评审改版 .toast 圆角 --radius-pill（app.css:154） */
}
[data-skin="night-glass"]:not([data-theme="dark"]) .wb-root .wb-toast:not(.is-soft) .wb-toast-a { border-radius: var(--radius-pill); }   /* 评审改版 .toast-a（x-assistant.css:45） */

/* ============ 八、等你定草稿卡（S2；原型 skins/night-glass/skin.css 的 .ap／.kind；旧日程时间轴 .wb-tl-* 随 T28 日视图退场已删） ============ */
[data-skin="night-glass"] .wb-root {
  --ap-bg: #FFFFFF; --ap-radius: 14px; --ap-pad: 12px 14px; --ap-shadow: 0 0 0 1px var(--line), 0 1px 2px rgba(10, 16, 14, .04); --ap-out-shadow: var(--ap-shadow);
  & .wb-ap-hd { gap: 4px 8px; }
  & .wb-ap-hd::before { content: ""; width: 8px; height: 8px; border-radius: 50%; flex: none; background: var(--wait-dot); margin-right: 2px; }
  & .wb-ap[data-st="done"] .wb-ap-hd::before { background: var(--done-dot); }
  & .wb-ap[data-st="rejected"] .wb-ap-hd::before { background: var(--quiet-dot); }
  & .wb-ap.is-done { opacity: .78; }
  /* 依据左竖线是暗夜自己的（V1 定稿原型只有浮彩、.ap 没有竖线；暗夜未逐屏精调） */
  & .wb-ap-basis { padding-left: 9px; border-left: 2px solid var(--line-strong); }
  & .wb-ap-kind { background: transparent; color: var(--ink-2); padding: 0; height: 18px; font-weight: 600; }
  & .wb-ap-kind::before { content: "·"; margin-right: 4px; color: var(--ink-3); font-weight: 400; }
}
[data-skin="night-glass"][data-theme="dark"] .wb-root {
  --ap-bg: #1F2220; --ap-shadow: 0 0 0 1px var(--line);
  & .wb-ap-hd::before { box-shadow: 0 0 8px currentColor; color: var(--wait-dot); }
  & .wb-ap[data-st="done"] .wb-ap-hd::before { color: var(--done-dot); }
  & .wb-ap[data-st="rejected"] .wb-ap-hd::before { box-shadow: none; }
}
/* ============ S1 待办、随手记、项目（标签不填底、灰字；请核对只有琥珀图标＋琥珀字） ============ */
[data-skin="night-glass"] .wb-root {
  & .wb-scan-chk { background: transparent; padding: 0; height: auto; }
  & .wb-scan-chk.is-mini { margin-left: 8px; }
  & .wb-ci-note .tags { color: var(--ink-3); }
  & .wb-tag { background: transparent; color: var(--ink-3); padding: 0; }
  & .wb-capture { background: rgba(255, 255, 255, .62); box-shadow: inset 0 0 0 1px var(--line); border-radius: 14px; }
  & .wb-capture:focus-within { background: rgba(255, 255, 255, .86); box-shadow: inset 0 0 0 1.5px rgba(var(--ng-amber-rgb), .75); }
}
[data-skin="night-glass"][data-theme="dark"] .wb-root .wb-capture { background: rgba(255, 255, 255, .045); &:focus-within { background: rgba(255, 255, 255, .07); } }
/* ============ 第一天的入门清单（原型 skin.css 的 .brief.checklist .bchip:not(.done)：没做完的加一圈琥珀） ============ */
[data-skin="night-glass"] .wb-root .wb-fd-step:not(.is-done) { box-shadow: var(--card-shadow), inset 0 0 0 1.5px rgba(var(--ng-amber-rgb), .7); }

/* ============ 收工小结、回放色带、收成一摞、底部入口盒（T39）：键名与浮彩四套一致（theme/tokens.test.ts 核对），组件样式只读这些令牌。
   暮色换成本皮肤唯一的强调色琥珀；暗色只查可读性与冒烟，未精调（D-88）。 ============ */
[data-skin="night-glass"] .wb-root {
  --dy-dusk: var(--dusk); --dy-dusk-soft: var(--dusk-soft); --dy-dusk-hover: rgba(242, 179, 61, .24);
  --dy-dusk-line: var(--dusk-line); --dy-dusk-glow: rgba(242, 179, 61, .4); --dy-sheen: rgba(255, 255, 255, .9);
  --dy-hero-bg: radial-gradient(120% 140% at 0% 0%, rgba(255, 251, 242, .9) 0%, rgba(255, 251, 242, 0) 60%), linear-gradient(120deg, rgba(255, 255, 255, .7) 0%, rgba(250, 238, 214, .7) 100%);
  --dy-hero-ring: rgba(200, 140, 30, .18);
  --dy-track: var(--surface-3); --dy-past: linear-gradient(90deg, rgba(242, 179, 61, .06), rgba(242, 179, 61, .16)); --dy-lunch: rgba(20, 28, 24, .05);
  --dy-meet: var(--today-dot); --dy-todo: var(--quiet-dot); --dy-todo-on: var(--done-dot); --dy-on-dot: #FFFFFF;
  --dy-opt-bg: var(--surface-3); --dy-opt-hover: rgba(20, 28, 24, .1); --dy-opt-on-bg: var(--accent); --dy-opt-on-fg: var(--on-accent);
  --dy-rp-bg: var(--surface-2);
  --bye-ink: var(--ink); --bye-ink-2: var(--ink-2); --bye-moon: #C98E1E; --bye-card: rgba(255, 255, 255, .72); --bye-line: var(--line-strong); --bye-hover: #FFFFFF;
  --bye-sky: radial-gradient(60% 50% at 50% 48%, rgba(255, 248, 232, .6), rgba(255, 248, 232, 0) 70%);
  --bye-paper: #FFFDF7; --bye-paper-shadow: inset 0 0 0 1px var(--line-strong), 0 10px 26px -14px rgba(120, 90, 20, .3);
  --bye-sheet: #F6F0E2; --bye-sheet-shadow: inset 0 0 0 1px rgba(120, 90, 40, .12), 0 6px 18px -10px rgba(120, 90, 20, .26);
  --soon-bg: rgba(255, 255, 255, .3); --soon-ring: rgba(255, 255, 255, .6); --soon-item-bg: rgba(255, 255, 255, .4); --soon-ic-bg: rgba(20, 28, 24, .05); --soon-ink: var(--ink-3);
  /* 资讯（T37，原型只画了浮彩）：暗夜未精调，沿用浮彩亮色（D-88） */
  --nw-mk-0-bg: #F2E5D8; --nw-mk-0-ink: #8A5632; --nw-mk-1-bg: #E6EAF0; --nw-mk-1-ink: #4A586D;
  --nw-mk-2-bg: #EFE5EC; --nw-mk-2-ink: #6D4C67; --nw-mk-3-bg: #E3EBE2; --nw-mk-3-ink: #496350;
  --nw-tag-bg: rgba(31, 30, 27, .07); --nw-go-hover: #FFFFFF;
}
[data-skin="night-glass"][data-theme="dark"] .wb-root {
  --dy-dusk: var(--dusk); --dy-dusk-soft: var(--dusk-soft); --dy-dusk-hover: rgba(242, 179, 61, .18);
  --dy-dusk-line: var(--dusk-line); --dy-dusk-glow: rgba(242, 179, 61, .4); --dy-sheen: rgba(255, 255, 255, .16);
  --dy-hero-bg: radial-gradient(120% 140% at 0% 0%, rgba(242, 179, 61, .12) 0%, rgba(242, 179, 61, 0) 60%), linear-gradient(120deg, rgba(255, 255, 255, .06) 0%, rgba(255, 255, 255, .03) 100%);
  --dy-hero-ring: rgba(242, 179, 61, .18);
  --dy-track: var(--surface-2); --dy-past: linear-gradient(90deg, rgba(242, 179, 61, .05), rgba(242, 179, 61, .14)); --dy-lunch: rgba(255, 255, 255, .05);
  --dy-meet: var(--today-dot); --dy-todo: var(--quiet-dot); --dy-todo-on: var(--done-dot); --dy-on-dot: #121413;
  --dy-opt-bg: rgba(255, 255, 255, .06); --dy-opt-hover: rgba(255, 255, 255, .1); --dy-opt-on-bg: var(--accent); --dy-opt-on-fg: var(--on-accent);
  --dy-rp-bg: var(--surface-2);
  --bye-ink: var(--ink); --bye-ink-2: var(--ink-2); --bye-moon: #F2C890; --bye-card: rgba(255, 255, 255, .08); --bye-line: rgba(255, 255, 255, .15); --bye-hover: rgba(255, 255, 255, .14);
  --bye-sky: radial-gradient(60% 50% at 50% 48%, rgba(242, 179, 61, .1), rgba(242, 179, 61, 0) 70%);
  --bye-paper: #242725; --bye-paper-shadow: inset 0 0 0 1px rgba(255, 255, 255, .12), 0 12px 30px -12px rgba(0, 0, 0, .6);
  --bye-sheet: #1D201E; --bye-sheet-shadow: inset 0 0 0 1px rgba(255, 255, 255, .08), 0 8px 20px -10px rgba(0, 0, 0, .5);
  --soon-bg: rgba(255, 255, 255, .03); --soon-ring: rgba(255, 255, 255, .07); --soon-item-bg: rgba(255, 255, 255, .04); --soon-ic-bg: rgba(255, 255, 255, .06); --soon-ink: var(--ink-3);
  /* 资讯（T37）：暗夜未精调，沿用浮彩暗色（D-88） */
  --nw-mk-0-bg: rgba(242, 229, 216, .14); --nw-mk-0-ink: #E3B892; --nw-mk-1-bg: rgba(230, 234, 240, .12); --nw-mk-1-ink: #B4C0D2;
  --nw-mk-2-bg: rgba(239, 229, 236, .13); --nw-mk-2-ink: #D3B3CC; --nw-mk-3-bg: rgba(227, 235, 226, .12); --nw-mk-3-ink: #AECAB4;
  --nw-tag-bg: rgba(235, 240, 250, .07); --nw-go-hover: rgba(255, 255, 255, .16);
}

/* ============ 顶栏胶囊、随手记标签、问 AI（T33；原型 isl.css、r12.css、ask.css）
   标签八色＋未分类（--lb-<色>-c 圆点、-p 纸、-e 边，同明度，颜色只做辨认）、便签纸与附件卡（--lb-*）、AI 的光边色（--ai-*：
   问 AI 的 Siri 式全彩 s1～s5，整理与建议的杏粉紫 r1～r3）、胶囊（--isl-*）、问 AI 对话（--ask-*）。四套键名一致（theme/tokens.test.ts）；
   亮色照原型，暗色是同一结构换到深石墨上（未精调，交 T41）。 ============ */
[data-skin="night-glass"] .wb-root {
  --lb-blue-c: oklch(64% .08 250); --lb-blue-p: oklch(96.6% .014 240); --lb-blue-e: oklch(90.5% .026 240);
  --lb-amber-c: oklch(72% .11 66); --lb-amber-p: oklch(96.9% .026 78); --lb-amber-e: oklch(90.5% .045 74);
  --lb-green-c: oklch(66% .09 152); --lb-green-p: oklch(96.6% .022 150); --lb-green-e: oklch(90.5% .036 150);
  --lb-violet-c: oklch(64% .08 296); --lb-violet-p: oklch(96.6% .018 296); --lb-violet-e: oklch(90.5% .03 296);
  --lb-rose-c: oklch(66% .1 356); --lb-rose-p: oklch(96.7% .018 356); --lb-rose-e: oklch(90.5% .032 356);
  --lb-teal-c: oklch(64% .07 200); --lb-teal-p: oklch(96.6% .016 200); --lb-teal-e: oklch(90.5% .028 200);
  --lb-coral-c: oklch(67% .11 40); --lb-coral-p: oklch(96.8% .02 46); --lb-coral-e: oklch(90.5% .038 44);
  --lb-gray-c: oklch(68% .012 70); --lb-gray-p: oklch(96.8% .007 75); --lb-gray-e: oklch(90.5% .012 75);
  --lb-none-c: oklch(72% .008 70); --lb-none-p: #FFFDFA; --lb-none-e: var(--line-strong);
  --lb-glass: rgba(255, 255, 255, .72); --lb-glass-hi: #FFFFFF; --lb-paper-hi: linear-gradient(180deg, rgba(255, 255, 255, .55), rgba(255, 255, 255, 0) 46%);
  --lb-shade: rgba(90, 60, 40, .5); --lb-recv-bg: #FFFEFC; --lb-new-bg: rgba(255, 255, 255, .5); --lb-new-line: rgba(31, 30, 27, .16); --lb-new-line-on: rgba(31, 30, 27, .3); --lb-lane-bg: rgba(246, 240, 233, .55);
  --ai-s1: #2F8BFF; --ai-s2: #9B5CF6; --ai-s3: #F0479A; --ai-s4: #FF8A3D; --ai-s5: #FFC35A;
  --ai-r1: var(--r1); --ai-r2: var(--r2); --ai-r3: var(--r3); --ai-e2: var(--e2); --ai-ink: var(--e-ink);
  --isl-bg: #FFFDFB; --isl-bg-hover: #FFFFFF; --isl-bg-open: #FFFDFA; --isl-wash: #FFFFFF;
  --isl-shadow: 0 4px 14px -8px rgba(150, 90, 60, .28); --isl-shadow-open: 0 2px 6px rgba(70, 48, 34, .07), 0 30px 64px -20px rgba(70, 48, 34, .38);
  --isl-tabs-bg: rgba(31, 30, 27, .055); --isl-thumb: #FFFFFF; --isl-thumb-shadow: 0 1px 2px rgba(70, 48, 34, .12), 0 3px 10px -3px rgba(70, 48, 34, .22); --isl-on-thumb: #FFFFFF;
  --isl-send-off: rgba(31, 30, 27, .14); --isl-kbd-bg: rgba(31, 30, 27, .06); --isl-chip-bg: rgba(31, 30, 27, .05); --isl-chip-hover: rgba(31, 30, 27, .08);
  --isl-file-bg: #FFFFFF; --isl-file-ic: oklch(52% .09 296); --isl-drop-bg: rgba(255, 255, 255, .72); --isl-drop-hot: #FFFFFF;
  --ask-q-bg: var(--ink); --ask-q-fg: #FFFFFF; --ask-cite-bg: #FFFFFF; --ask-act-bg: rgba(31, 30, 27, .055); --ask-act-hover: rgba(31, 30, 27, .1);
  --ask-scrim: rgba(252, 247, 242, .42); --ask-hl: color-mix(in srgb, #E9AE86 30%, transparent); --ask-cite-min: #8A6A3E;
}
[data-skin="night-glass"][data-theme="dark"] .wb-root {
  --lb-blue-c: oklch(74% 0.08 250); --lb-blue-p: oklch(29% 0.028 240); --lb-blue-e: oklch(37% 0.040 240);
  --lb-amber-c: oklch(74% 0.1 66); --lb-amber-p: oklch(29% 0.030 78); --lb-amber-e: oklch(37% 0.045 78);
  --lb-green-c: oklch(74% 0.08 152); --lb-green-p: oklch(29% 0.028 150); --lb-green-e: oklch(37% 0.040 150);
  --lb-violet-c: oklch(74% 0.08 296); --lb-violet-p: oklch(29% 0.028 296); --lb-violet-e: oklch(37% 0.040 296);
  --lb-rose-c: oklch(74% 0.09 356); --lb-rose-p: oklch(29% 0.030 356); --lb-rose-e: oklch(37% 0.045 356);
  --lb-teal-c: oklch(74% 0.07 200); --lb-teal-p: oklch(29% 0.025 200); --lb-teal-e: oklch(37% 0.035 200);
  --lb-coral-c: oklch(74% 0.1 40); --lb-coral-p: oklch(29% 0.030 46); --lb-coral-e: oklch(37% 0.045 46);
  --lb-gray-c: oklch(74% 0.012 70); --lb-gray-p: oklch(29% 0.004 75); --lb-gray-e: oklch(37% 0.006 75);
  --lb-none-c: oklch(70% .01 70); --lb-none-p: #23262B; --lb-none-e: var(--line-strong);
  --lb-glass: rgba(255, 255, 255, .08); --lb-glass-hi: rgba(255, 255, 255, .16); --lb-paper-hi: linear-gradient(180deg, rgba(255, 255, 255, .05), rgba(255, 255, 255, 0) 46%);
  --lb-shade: rgba(0, 0, 0, .6); --lb-recv-bg: #22252A; --lb-new-bg: rgba(255, 255, 255, .03); --lb-new-line: rgba(235, 240, 250, .18); --lb-new-line-on: rgba(235, 240, 250, .32); --lb-lane-bg: rgba(235, 240, 250, .04);
  --ai-s1: #2F8BFF; --ai-s2: #9B5CF6; --ai-s3: #F0479A; --ai-s4: #FF8A3D; --ai-s5: #FFC35A;
  --ai-r1: var(--r1); --ai-r2: var(--r2); --ai-r3: var(--r3); --ai-e2: var(--e2); --ai-ink: var(--e-ink);
  --isl-bg: #1F2226; --isl-bg-hover: #24272C; --isl-bg-open: #1D2024; --isl-wash: #1D2024;
  --isl-shadow: 0 4px 14px -8px rgba(0, 0, 0, .6); --isl-shadow-open: 0 2px 6px rgba(0, 0, 0, .3), 0 30px 64px -20px rgba(0, 0, 0, .7);
  --isl-tabs-bg: rgba(235, 240, 250, .07); --isl-thumb: #2E3238; --isl-thumb-shadow: 0 1px 2px rgba(0, 0, 0, .4), 0 3px 10px -3px rgba(0, 0, 0, .5); --isl-on-thumb: #FFFFFF;
  --isl-send-off: rgba(235, 240, 250, .14); --isl-kbd-bg: rgba(235, 240, 250, .08); --isl-chip-bg: rgba(235, 240, 250, .06); --isl-chip-hover: rgba(235, 240, 250, .1);
  --isl-file-bg: #2A2D32; --isl-file-ic: oklch(72% .09 296); --isl-drop-bg: rgba(255, 255, 255, .04); --isl-drop-hot: rgba(255, 255, 255, .08);
  --ask-q-bg: var(--ink); --ask-q-fg: #17191C; --ask-cite-bg: #26292E; --ask-act-bg: rgba(235, 240, 250, .07); --ask-act-hover: rgba(235, 240, 250, .12);
  --ask-scrim: rgba(10, 12, 15, .42); --ask-hl: rgba(233, 174, 134, .25); --ask-cite-min: #D7B88A;
}

/* ============ 今天要做什么（第七轮「提议单」briefN；原型 brief.css 第一节的 --e1～--e3、--r1～--r3、--e-ink、--sheet-bg、--shadow-lift）
   单子纸色、光边的杏粉淡紫（描边压深一档）、草案胶囊与标识的淡底（原型 --e-tint）、草案标识字色、流过的暖光、卡下光晕、玻璃高光、浮起投影、落款主按钮投影、手机吸底落款底色。
   四套键名一致（theme/tokens.test.ts）；亮色照原型，暗色是同一结构换到深底上（未精调，交 T41）。 ============ */
[data-skin="night-glass"] .wb-root {
  --bn-sheet: #FFFFFF; --bn-e1: var(--e1); --bn-e2: var(--e2); --bn-e3: var(--e3); --bn-r1: var(--r1); --bn-r2: var(--r2); --bn-r3: var(--r3); --bn-ink: var(--e-ink);
  --bn-tint: var(--e-tint);
  --bn-streak: rgb(206, 98, 130); --bn-glow: rgb(222, 120, 150); --bn-hi: rgba(255, 255, 255, .75);
  --bn-lift: var(--shadow-lift);
  --bn-go-shadow: 0 1px 2px rgba(31, 30, 27, .2), 0 8px 18px -8px rgba(31, 30, 27, .5); --bn-sticky: rgba(255, 255, 255, .96);
}
[data-skin="night-glass"][data-theme="dark"] .wb-root {
  --bn-sheet: #242725; --bn-e1: var(--e1); --bn-e2: var(--e2); --bn-e3: var(--e3); --bn-r1: var(--r1); --bn-r2: var(--r2); --bn-r3: var(--r3); --bn-ink: var(--e-ink);
  --bn-tint: var(--e-tint);
  --bn-streak: rgb(235, 150, 175); --bn-glow: rgb(222, 120, 150); --bn-hi: rgba(255, 255, 255, .1);
  --bn-lift: var(--shadow-lift);
  --bn-go-shadow: 0 1px 2px rgba(0, 0, 0, .4), 0 8px 18px -8px rgba(0, 0, 0, .6); --bn-sticky: rgba(30, 33, 36, .96);
}

/* ============ 顶栏输入框变形期间临时去掉卡片的背景模糊（白晨 10-19 定第 6 项；S-39）
   features/capsule/islMorph.tsx 在长大、缩回、换标签、长高放动效时给外壳根挂 is-morphing，放完拿掉，材质终态不变。
   为什么：有头、开显卡的真 Chrome 上，暗夜的卡片背景模糊叠在会动的背景上，变形只有 19～27 帧每秒、中间帧不到原型一半（浮彩 56～60）；
   去掉卡片模糊后空闲回到 60。背景本身已是 40 像素以上的大模糊，静止时去不去卡片模糊截图只差几百个像素，变形那零点几秒里看不出来。读数见 S1I 报告。
   多带一个 [data-theme]（首帧脚本总会写上）压过上面亮暗两条令牌，不靠先后顺序。 ============ */
[data-skin="night-glass"][data-theme] .wb-root.is-morphing { --card-backdrop: none; }

/* ============ 登录页（V1 重做 S2A，清单 02 L-72）：卡、展开的入口块、输入框三层半透明白叠在一起，暗色里输入框的底亮到 #40413F，
   占位字用 --ink-3 只有 4.03:1（四套里唯一不到 4.5 的一处，另三套 5.0～6.0）；换 --ink-2 到 5.48:1，仍比输入的字（--ink，8.2:1）淡一级。 ============ */
[data-skin="night-glass"][data-theme="dark"] .wb-root {
  & .wb-login-form input::placeholder { color: var(--ink-2); }
}
