dsh-plugin-core 0.35.3 → 0.35.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/dist/design/tokens-css.generated.d.ts +1 -1
  2. package/dist/design/tokens-css.generated.d.ts.map +1 -1
  3. package/dist/design/tokens-css.generated.js +1 -1
  4. package/dist/design/tokens-css.generated.js.map +1 -1
  5. package/dist/ui/actions/Button.d.ts +4 -0
  6. package/dist/ui/actions/Button.d.ts.map +1 -1
  7. package/dist/ui/actions/Button.js +7 -5
  8. package/dist/ui/actions/Button.js.map +1 -1
  9. package/dist/ui/actions/button-css.generated.d.ts +1 -1
  10. package/dist/ui/actions/button-css.generated.d.ts.map +1 -1
  11. package/dist/ui/actions/button-css.generated.js +1 -1
  12. package/dist/ui/actions/button-css.generated.js.map +1 -1
  13. package/dist/ui/display/Card.d.ts +11 -0
  14. package/dist/ui/display/Card.d.ts.map +1 -1
  15. package/dist/ui/display/Card.js +10 -1
  16. package/dist/ui/display/Card.js.map +1 -1
  17. package/dist/ui/display/ListRow.d.ts +40 -0
  18. package/dist/ui/display/ListRow.d.ts.map +1 -0
  19. package/dist/ui/display/ListRow.js +71 -0
  20. package/dist/ui/display/ListRow.js.map +1 -0
  21. package/dist/ui/display/card-css.generated.d.ts +1 -1
  22. package/dist/ui/display/card-css.generated.d.ts.map +1 -1
  23. package/dist/ui/display/card-css.generated.js +1 -1
  24. package/dist/ui/display/card-css.generated.js.map +1 -1
  25. package/dist/ui/display/list-row-css.d.ts +2 -0
  26. package/dist/ui/display/list-row-css.d.ts.map +1 -0
  27. package/dist/ui/display/list-row-css.generated.d.ts +2 -0
  28. package/dist/ui/display/list-row-css.generated.d.ts.map +1 -0
  29. package/dist/ui/display/list-row-css.generated.js +4 -0
  30. package/dist/ui/display/list-row-css.generated.js.map +1 -0
  31. package/dist/ui/display/list-row-css.js +7 -0
  32. package/dist/ui/display/list-row-css.js.map +1 -0
  33. package/dist/ui/index.d.ts +1 -0
  34. package/dist/ui/index.d.ts.map +1 -1
  35. package/dist/ui/index.js +2 -0
  36. package/dist/ui/index.js.map +1 -1
  37. package/dist/ui/inputs/Segmented.js +1 -1
  38. package/dist/ui/inputs/Segmented.js.map +1 -1
  39. package/dist/ui/inputs/segmented-css.generated.d.ts +1 -1
  40. package/dist/ui/inputs/segmented-css.generated.d.ts.map +1 -1
  41. package/dist/ui/inputs/segmented-css.generated.js +1 -1
  42. package/dist/ui/inputs/segmented-css.generated.js.map +1 -1
  43. package/docs/design/structure.md +3 -3
  44. package/docs/design/style.md +96 -0
  45. package/docs/help/ui.doc.ts +79 -3
  46. package/docs/help/ui.md +74 -3
  47. package/package.json +1 -1
@@ -1,2 +1,2 @@
1
- export declare const TOKENS_CSS_TEMPLATE = "\n/* \u2500\u2500 \u6587\u5B57\uFF08\u5BBF\u4E3B label \u56DB\u6863 + \u53CD\u8272\u9762\u7528\u5B57\uFF09\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\nbody{\n --dshpc-fg:var(--dsw-alias-label-primary,#1f2328);\n --dshpc-fg-2:var(--dsw-alias-label-secondary,#5c6370);\n --dshpc-fg-3:var(--dsw-alias-label-tertiary,#767d87);\n --dshpc-fg-4:var(--dsw-alias-label-caption,#9aa1ab);\n --dshpc-fg-dim:var(--dsw-alias-label-dimmed,#b9bfc7);\n /* \u53CD\u8272\u9762\u4E0A\u7684\u5B57\uFF08\u5B9E\u5FC3\u94AE / \u89D2\u6807\uFF09\uFF1A\u6697\u8272\u4E0B\u662F bluish-1000\uFF0C\u6545\u7528 -foreground \u800C\u975E -inverted */\n --dshpc-fg-inverse:var(--dsw-alias-label-primary-foreground,#fff);\n\n /* \u2500\u2500 \u9762\uFF08\u5BBF\u4E3B bg-layer \u4E09\u6863 + \u4E0B\u6C89\u8F68\u9053\u5E95\uFF09\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n --dshpc-surface-1:var(--dsw-alias-bg-layer-1,#fff);\n --dshpc-surface-2:var(--dsw-alias-bg-layer-2,#fff);\n --dshpc-surface-3:var(--dsw-alias-bg-layer-3,#fff);\n /* \u300C\u9009\u4E2D\u4EAE\u7247\u300D\u7684\u5E95\u76D8\u8272\uFF08\u914D --dshpc-shadow-raised \u7528\uFF09 */\n --dshpc-surface-raised:var(--dsw-alias-bg-layer-1,#fff);\n /* \u8F68\u9053 / \u4E0B\u6C89\u5E95\uFF08\u5B98\u65B9\u5206\u6BB5\u63A7\u4EF6\u8F68\u9053\u7528\u7684\u5C31\u662F\u8FD9\u6761\uFF09 */\n --dshpc-surface-sunken:var(--dsw-alias-interactive-bg-hover,rgba(38,49,72,.06));\n /* \u6574\u9875 / \u7F16\u8F91\u5668\u5E95\uFF08bg-base\uFF09 */\n --dshpc-surface-base:var(--dsw-alias-bg-base,#fff);\n /* \u81EA\u7ED8\u6D6E\u5C42 / \u83DC\u5355\u5361\u7684\u4E0D\u900F\u660E\u5E95\uFF08= base\uFF1B\u4E0D\u8981\u7528\u534A\u900F\u660E\u7684 specific-menu\uFF09 */\n --dshpc-surface-menu:var(--dshpc-surface-base);\n /* markdown \u4EE3\u7801\u5757\u9762 / \u5B57\u4F53\uFF08\u4F1A\u8BDD\u955C\u50CF\u91CC\u7528\u5230\uFF09 */\n --dshpc-code-surface:var(--dsw-alias-markdown-code-block,rgba(128,128,128,.10));\n --dshpc-code-font:var(--dsw-font-markdown-code-block-small,12px/18px var(--ds-font-family-code,monospace));\n /* \u8B66\u544A\u6587\u5B57\u8272\uFF08\u5BBF\u4E3B state-warn-label\uFF09 */\n --dshpc-warning-label:var(--dsw-alias-state-warn-label,#f5a623);\n /* \u56FA\u5B9A\u4E2D\u6027\u5B9E\u9762\uFF08\u81EA\u7ED8\u6D6E\u5C42\u3001\u6DF1\u8272\u4E3B\u9898\u4E0B\u5FC5\u987B\u81EA\u5DF1\u53D8\u7684\u90A3\u51E0\u4E2A\uFF09\u2014\u2014\u53EA\u6709\u5B83\u9700\u8981\u6697\u8272\u8986\u76D6 */\n --dshpc-solid:var(--dsw-static-neutral-00,#fff);\n --dshpc-on-solid:var(--dsw-alias-label-primary,#1f2328);\n /* \u4EA4\u4ED8\u6587\u4EF6\u5361\u90A3\u79CD\u300C\u6D45\u5E95\u76D8 + hover \u52A0\u6DF1\u300D\u4E24\u62CD */\n --dshpc-plate:var(--dsw-static-neutral-50,#fafafa);\n --dshpc-plate-hover:var(--dsw-static-neutral-100,#f5f5f5);\n /* \u26A0\uFE0F \u8FD9\u4E9B**\u56FA\u5B9A\u4E2D\u6027\u9762\u4E00\u5F8B\u7528 rgba \u5B57\u9762\u91CF**\uFF082026-10-19 \u771F\u673A\u6559\u8BAD\uFF09\uFF1A\u4E0D\u8981\u5199\u6210\n \u300Crgba \u56DE\u9000\u884C + \u5D4C --dsw-static-* \u7684 color-mix \u884C\u300D\u4E24\u6761\u540C\u540D\u58F0\u660E\u2014\u2014\u81EA\u5B9A\u4E49\u5C5E\u6027**\u540E\u8005\u6052\u80DC**\uFF0C\n \u54EA\u6015\u5B83\u7684\u503C\u5728\u5BBF\u4E3B\u91CC\u7B97\u4E0D\u51FA\u6765\uFF08static \u53D8\u91CF invalid\uFF09\u21D2 \u6574\u6761 token \u4F5C\u5E9F\u3001rgba \u515C\u5E95\u4E00\u8D77\u88AB\u5E9F\uFF0C\n 0.2.6 \u91CC Segmented \u8F68\u9053\u5168\u900F\u660E\u5C31\u662F\u8FD9\u4E48\u6765\u7684\u3002\u8981\u8DDF\u5BBF\u4E3B\u4E3B\u9898\u8054\u52A8\u7684\u9762\u7528 alias token\uFF08\u90A3\u4E9B\u5B9E\u6D4B\u6709\u6548\uFF09\u3002 */\n --dshpc-icon-plate:rgba(255,255,255,.5);\n /* \u8868\u5934\u5E95\uFF1A\u6D45\u8272\u4E3B\u9898**\u504F\u6DF1**\uFF0C\u4E14\u5FC5\u987B**\u6BD4\u6591\u9A6C\u7EB9\uFF08--dshpc-plate\uFF09\u518D\u6DF1\u4E00\u6863**\u2014\u2014\n \u4E24\u8005\u4E0D\u80FD\u649E\u8272\uFF08\u7528\u6237 2026-10-02\uFF1A\u8868\u5934\u8DDF\u6591\u9A6C\u7EB9\u4E00\u6A21\u4E00\u6837\uFF09\u3002 */\n --dshpc-head-bg:var(--dsw-static-neutral-100,#f5f5f5);\n /* \u8868\u683C\u5E95 / \u884C hover\uFF082026-10-30 \u7528\u6237\u4E8C\u6B21\u5B9A\u6848\uFF1A\u8868\u5934\u4E0E\u901A\u680F**\u4E92\u6362**\u5E95\u8272\uFF09\uFF1A\n \u8868\u5934\u9ED8\u8BA4\u5E95 = \u901A\u680F\u539F\u6765\u90A3\u5C42\u7070\uFF08--dshpc-surface-sunken\uFF0C\u8DDF\u7740\u5BBF\u4E3B\u4EA4\u4E92\u9762\u8D70\uFF09\uFF1B\n \u901A\u680F\u9ED8\u8BA4\u5E95 = \u8868\u5934\u539F\u6765\u90A3\u8272\uFF08\u4EAE #f6f8fa / \u6697 #151b23\uFF0C\u53C2\u8003\u56FE\u5B9E\u6D4B\uFF0C\u4E0E\u6DF1\u8272\u6BB5\u540C\u6E90\uFF09\uFF1B\n \u884C hover \u662F\u300C\u4E00\u5C42\u6781\u6DE1\u7684\u9ED1\u300D\u22481.5%\uFF08\u7528\u6237\uFF1A\u518D\u6D45\u4E00\u534A\uFF0C\u8981\u7279\u522B\u6DE1\uFF09\u3002 */\n --dshpc-table-head-bg:var(--dshpc-surface-sunken);\n --dshpc-table-banner-bg:#f6f8fa;\n --dshpc-table-row-hover:rgba(15,15,15,.015);\n /* \u56FE\u6807\u5C0F\u5E95\u677F\uFF08\u4EA7\u51FA\u7269\uFF09\uFF1A\u6D45\u8272\u4E0B\u8981**\u770B\u5F97\u89C1**\uFF08\u539F\u5148\u53D6 plate \u21D2 \u5728\u767D\u5E95\u4E0A\u7B49\u4E8E\u6CA1\u6709\uFF09\uFF1Bhover \u52A0\u500D\u3002 */\n --dshpc-chip-bg:rgba(15,15,15,.07);\n --dshpc-chip-bg-hover:rgba(15,15,15,.14);\n /* \u5C55\u5F00\u884C\uFF1A**\u5E26\u900F\u660E\u5EA6\u7684\u84DD**\u2014\u2014\u4E0D\u662F\u7070\u3001\u4E5F\u4E0D\u662F\u7EAF\u8272\uFF0C\u900F\u51FA\u5361\u7247\u5E95\u8272\uFF0C\u4E00\u773C\u770B\u51FA\u300C\u8FD9\u662F\u5C55\u5F00\u7684\u300D\n \uFF08\u7528\u6237 2026-10-02\uFF1A\u7070\u8272\u8DDF\u6591\u9A6C\u7EB9\u5206\u4E0D\u51FA\u6765\uFF09\u3002\u5185\u5BB9\u533A\u518D\u6DE1\u4E00\u6863\uFF0C\u5F62\u6210\u300C\u884C\u6DF1 / \u5185\u5BB9\u6D45\u300D\u7684\u533A\u9694\u3002 */\n --dshpc-open-bg:rgba(37,99,235,.10);\n --dshpc-open-bg-soft:rgba(37,99,235,.05);\n --dshpc-card-hover:rgba(37,99,235,.07);\n\n /* \u2500\u2500 \u63CF\u8FB9\u56DB\u6863\uFF08\u5BBF\u4E3B\u771F\u503C\uFF1Al1 4% / l2 10% / l3 12% / l4 16%\uFF09\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n --dshpc-border-faint:var(--dsw-alias-border-l1,#0000000a);\n --dshpc-border:var(--dsw-alias-border-l2,#0000001a);\n --dshpc-border-strong:var(--dsw-alias-border-l3,#0000001f);\n --dshpc-border-heavy:var(--dsw-alias-border-l4,#00000029);\n\n /* \u2500\u2500 \u54C1\u724C / \u8BED\u4E49\u8272 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n /* \u54C1\u724C\u300C\u9762\u300D\u8272\uFF1A\u660E\u8272\u8FD1\u9ED1\u3001\u6697\u8272\u8FD1\u767D\uFF08\u5B98\u65B9 Switch \u9009\u4E2D\u6001\u5373\u6B64\uFF09\uFF0C**\u4E0D\u662F\u84DD\u8272** */\n --dshpc-accent:var(--dsw-alias-brand-primary,#0f1115);\n /* \u84DD\u8272\uFF1A\u5F3A\u8C03 / \u9009\u4E2D / \u7126\u70B9\uFF0C\u4E00\u5F8B\u8D70\u8FD9\u6761 */\n --dshpc-business:var(--dsw-alias-state-business-primary,#3b5bdb);\n --dshpc-success:var(--dsw-alias-state-success-primary,#22c55e);\n /* \u26A0\uFE0F \u662F state-warn\uFF08\u4E0D\u662F state-warning\uFF0C\u540E\u8005\u5BBF\u4E3B\u65E0\u6B64\u5B9A\u4E49\uFF09 */\n --dshpc-warning:var(--dsw-alias-state-warn-primary,#f59e0b);\n --dshpc-danger:var(--dsw-alias-state-error-primary,#ec1313);\n --dshpc-link:var(--dsw-alias-link,#3b5bdb);\n /* \u8BED\u4E49\u8272**\u5B9E\u9762**\u4E0A\u7684\u5B57\uFF08\u89D2\u6807 / \u5B9E\u5FC3\u63D0\u793A\uFF09\uFF1A\u5BBF\u4E3B\u7EA2\u7EFF\u9EC4\u4E09\u8272\u90FD\u662F\u4E2D\u8C03 \u21D2 \u767D\u5B57\u4E24\u4E2A\u4E3B\u9898\u90FD\u53EF\u8BFB\uFF0C\n \u6545\u8FD9\u662F\u4E00\u6761\u4E0E\u4E3B\u9898\u65E0\u5173\u7684\u5E38\u91CF\uFF1B\u4E0D\u8981\u62FF --dshpc-fg-inverse \u9876\u2014\u2014\u5B83\u5728\u6697\u8272\u4E0B\u662F\u8FD1\u9ED1\uFF0C\u538B\u5728\u7EA2\u5E95\u4E0A\u770B\u4E0D\u6E05\u3002 */\n --dshpc-on-signal:#fff;\n /* \u9EC4\u5E95\u4E0A\u7684\u5B57\uFF1A\u9EC4\u8272\u662F\u4E2D\u9AD8\u660E\u5EA6\uFF0C\u767D\u5B57\u770B\u4E0D\u6E05 \u21D2 \u56FA\u5B9A\u6DF1\u8272\uFF08\u4E0E\u4E3B\u9898\u65E0\u5173\uFF09\u3002 */\n --dshpc-on-warning:#1f2328;\n /* \u544A\u8B66\u4E25\u91CD\u5EA6\u7684\u5706\u70B9\u5E95\u8272\uFF082026-11-03 \u4ECE feedback.css \u6536\u5230\u8FD9\u91CC\uFF09\u3002\n \u4E0E\u4E3B\u9898\u65E0\u5173\u7684\u4E00\u7EC4\u5E38\u91CF\uFF1A\u8FD9\u51E0\u4E2A\u8272\u8981\u5728\u4EFB\u610F\u5E95\u8272\u4E0A\u90FD\u8BA4\u5F97\u51FA\u6765\uFF0C\u6240\u4EE5**\u4E0D\u8DDF\u5BBF\u4E3B state \u8272\u8D70**\n \uFF08\u5BBF\u4E3B state-warn-primary \u504F\u4EAE\uFF0C\u538B\u767D \u2715 \u770B\u4E0D\u6E05\uFF09\u3002\u8BED\u4E49\u8272\u6539\u52A8\u8BF7\u53EA\u6539\u8FD9\u91CC\u3002 */\n --dshpc-sev-info:#2563eb;\n --dshpc-sev-success:#16a34a;\n --dshpc-sev-warning:#d97706;\n --dshpc-sev-error:#dc2626;\n\n /* \u2500\u2500 \u5B9E\u5FC3\u6309\u94AE\u7684 hover / active \u6D3E\u751F\u6001\uFF082026-10-19 \u7528\u6237\u70B9\u540D\uFF09\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n \u539F\u5B9E\u73B0\u662F :hover \u76F4\u63A5\u538B opacity .9\uFF1A\u9ED1\u5E95\u538B 10% \u51E0\u4E4E\u770B\u4E0D\u51FA\u6765\uFF0C\u7528\u6237\u539F\u8BDD\u300C\u5B8C\u5168\u611F\u89C9\u4E0D\u5230\u989C\u8272\u53D8\u4E86\u300D\u3002\n \u21D2 \u6539\u6210\u5BF9\u5E95\u8272\u505A**\u660E\u786E\u7684\u6DF7\u8272**\uFF08\u538B 22% / 34%\uFF09\uFF0C\u4E0D\u7528 opacity\uFF1A\n \u00B7 \u4EAE\u8272\u4E3B\u9898\uFF1A\u9ED1\u5E95\uFF08--dshpc-accent\uFF09\u63BA\u767D\u63D0\u4EAE\uFF1B\u7EA2 / \u7EFF / \u9EC4 / \u84DD\u5E95\u63BA\u9ED1\u538B\u6DF1\uFF1B\n \u00B7 \u6697\u8272\u4E3B\u9898\uFF1A\u53CD\u8FC7\u6765\uFF08\u6697\u5E95\u63BA\u767D\u3001\u4EAE\u5E95\u63BA\u9ED1\uFF09\u3002\n \u6DF7\u8272\u5BF9\u8C61\u662F**\u56FA\u5B9A\u4E2D\u6027\u8272\u5B57\u9762\u91CF**\uFF08#fff / #000\uFF09\uFF0C\u4E0D\u4F9D\u8D56\u5BBF\u4E3B static-neutral \u662F\u5426\u5B58\u5728\uFF1B\n \u65E7\u5185\u6838\u4E0D\u8BA4 color-mix \u65F6\u6574\u6761\u58F0\u660E\u4F5C\u5E9F \u21D2 \u56DE\u843D\u5404\u6863\u539F\u8272\uFF08\u53EF\u63A5\u53D7\uFF1A\u4ECD\u53EF\u70B9\uFF0C\u53EA\u662F\u6CA1\u6709 hover \u53CD\u9988\uFF09\u3002 */\n --dshpc-accent-hover:color-mix(in srgb,var(--dshpc-accent) 78%,#ffffff);\n --dshpc-accent-active:color-mix(in srgb,var(--dshpc-accent) 64%,#ffffff);\n --dshpc-danger-hover:color-mix(in srgb,var(--dshpc-danger) 78%,#000000);\n --dshpc-danger-active:color-mix(in srgb,var(--dshpc-danger) 64%,#000000);\n --dshpc-success-hover:color-mix(in srgb,var(--dshpc-success) 78%,#000000);\n --dshpc-success-active:color-mix(in srgb,var(--dshpc-success) 64%,#000000);\n --dshpc-warning-hover:color-mix(in srgb,var(--dshpc-warning) 78%,#000000);\n --dshpc-warning-active:color-mix(in srgb,var(--dshpc-warning) 64%,#000000);\n --dshpc-business-hover:color-mix(in srgb,var(--dshpc-business) 78%,#000000);\n --dshpc-business-active:color-mix(in srgb,var(--dshpc-business) 64%,#000000);\n /* \u8BED\u4E49\u8272**\u6D45\u5E95**\uFF1A\u72B6\u6001\u8272\u7CFB\u7684\u300C\u4E00\u5757\u5E95\u8272\u300D\u2014\u2014\u6267\u884C\u8BB0\u5F55\u9875\u6BCF\u6761\u6D41\u6C34\u8D26\u7684\u5757\u5E95\u5C31\u662F\u5B83\n \uFF08\u7528\u6237 2026-10-04\uFF1A\u6B63\u5E38\u6001\u7ED9\u540C\u8272\u7CFB\u5F88\u6D45\u7684\u900F\u660E\u5E95\u3001\u5931\u8D25\u7528\u7EA2\u5E95\u900F\u51FA\u6765\uFF09\u3002\n \u7528 \u300Ccolor-mix\u300D \u73B0\u7B97\u800C\u4E0D\u5199\u6B7B rgba\uFF1A\u72B6\u6001\u8272\u672C\u8EAB\u8DDF\u968F\u5BBF\u4E3B alias\uFF0C\u4E3B\u9898\u4E00\u6362\u81EA\u52A8\u6210\u7ACB\u3002\n \u26A0\uFE0F **\u6DF1\u8272\u4E0B\u8981\u66F4\u6DE1**\uFF1A\u7528\u6237 2026-10-04\u300C\u6DF1\u8272\u98CE\u683C\u7684\u7EFF\u8272\u548C\u7EA2\u8272\u597D\u50CF\u90FD\u6709\u70B9\u6DF1\u300D\u21D2 dark \u6BB5\n \u628A\u8FD9\u56DB\u6761\u538B\u5230 5%\uFF08\u66F4\u8D34\u8FD1\u9762\u677F\u5E95\u3001\u5B58\u5728\u611F\u66F4\u5F31\uFF09\uFF1B\u6D45\u8272\u6BB5\u7EF4\u6301 8%\u3002\u4E24\u7AEF\u5404\u81EA\u7ED9\u503C\uFF0C\u4E0D\u5171\u7528\u4E00\u6761\u66F2\u7EBF\u3002\n \u547D\u540D\u6536\u5728 tokens.ts \u5355\u70B9\uFF08\u672C\u4ED3\u786C\u89C4\u77E9\uFF1A\u4E1A\u52A1\u6587\u4EF6\u4E0D\u8BB8\u81EA\u9020 --dshpc-*\uFF09\u3002 */\n --dshpc-success-soft:color-mix(in srgb,var(--dshpc-success) 8%,transparent);\n --dshpc-warning-soft:color-mix(in srgb,var(--dshpc-warning) 8%,transparent);\n --dshpc-danger-soft:color-mix(in srgb,var(--dshpc-danger) 8%,transparent);\n --dshpc-business-soft:color-mix(in srgb,var(--dshpc-business) 8%,transparent);\n\n /* \u2500\u2500 \u6269\u5C55\u8BED\u4E49\u8272\uFF082026-10-29 \u7528\u6237\u62CD\u677F\uFF1A\u5206\u7C7B / \u56FE\u8868\u5E38\u7528\u8272\u516B\u652F\uFF09\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n \u5BBF\u4E3B\u65E0\u5BF9\u5E94 alias \u21D2 \u5199\u6B7B hex\uFF08\u4E0D\u8DDF\u968F\u5BBF\u4E3B\u6362\u80A4\uFF09\uFF1B\u5B9E\u5FC3\u9762\u5B57\u8272\u7EDF\u4E00\u8D70 --dshpc-on-signal\uFF08\u767D\uFF09\uFF0C\n \u56E0\u516B\u652F\u660E\u5EA6\u90FD\u4F4E\u4E8E\u9EC4 / \u9752\u67E0\uFF0C\u767D\u5B57\u4E24\u4E3B\u9898\u5747 \u22654.5:1 \u53EF\u8BFB\u3002\u6BCF\u6761\u81EA\u5E26 hover/active/soft \u6D3E\u751F\uFF1B\n \u6697\u8272\u6BB5\u53EA\u8986\u76D6\u6D3E\u751F\uFF08base \u5199\u6B7B\u3001\u4E24\u4E3B\u9898\u540C\u503C\uFF09\u3002 */\n --dshpc-purple:#9333ea;\n --dshpc-purple-hover:color-mix(in srgb,var(--dshpc-purple) 78%,#000000);\n --dshpc-purple-active:color-mix(in srgb,var(--dshpc-purple) 64%,#000000);\n --dshpc-purple-soft:color-mix(in srgb,var(--dshpc-purple) 8%,transparent);\n --dshpc-pink:#db2777;\n --dshpc-pink-hover:color-mix(in srgb,var(--dshpc-pink) 78%,#000000);\n --dshpc-pink-active:color-mix(in srgb,var(--dshpc-pink) 64%,#000000);\n --dshpc-pink-soft:color-mix(in srgb,var(--dshpc-pink) 8%,transparent);\n --dshpc-cyan:#0e7490;\n --dshpc-cyan-hover:color-mix(in srgb,var(--dshpc-cyan) 78%,#000000);\n --dshpc-cyan-active:color-mix(in srgb,var(--dshpc-cyan) 64%,#000000);\n --dshpc-cyan-soft:color-mix(in srgb,var(--dshpc-cyan) 8%,transparent);\n --dshpc-teal:#0f766e;\n --dshpc-teal-hover:color-mix(in srgb,var(--dshpc-teal) 78%,#000000);\n --dshpc-teal-active:color-mix(in srgb,var(--dshpc-teal) 64%,#000000);\n --dshpc-teal-soft:color-mix(in srgb,var(--dshpc-teal) 8%,transparent);\n --dshpc-orange:#c2410c;\n --dshpc-orange-hover:color-mix(in srgb,var(--dshpc-orange) 78%,#000000);\n --dshpc-orange-active:color-mix(in srgb,var(--dshpc-orange) 64%,#000000);\n --dshpc-orange-soft:color-mix(in srgb,var(--dshpc-orange) 8%,transparent);\n --dshpc-indigo:#4f46e5;\n --dshpc-indigo-hover:color-mix(in srgb,var(--dshpc-indigo) 78%,#000000);\n --dshpc-indigo-active:color-mix(in srgb,var(--dshpc-indigo) 64%,#000000);\n --dshpc-indigo-soft:color-mix(in srgb,var(--dshpc-indigo) 8%,transparent);\n --dshpc-rose:#e11d48;\n --dshpc-rose-hover:color-mix(in srgb,var(--dshpc-rose) 78%,#000000);\n --dshpc-rose-active:color-mix(in srgb,var(--dshpc-rose) 64%,#000000);\n --dshpc-rose-soft:color-mix(in srgb,var(--dshpc-rose) 8%,transparent);\n --dshpc-slate:#475569;\n --dshpc-slate-hover:color-mix(in srgb,var(--dshpc-slate) 78%,#000000);\n --dshpc-slate-active:color-mix(in srgb,var(--dshpc-slate) 64%,#000000);\n --dshpc-slate-soft:color-mix(in srgb,var(--dshpc-slate) 8%,transparent);\n\n /* \u26A0\uFE0F 2026-10-18 \u7528\u6237\u62CD\u677F\uFF1A\u5BBF\u4E3B alias \u7684 hover\uFF08\u6697\u8272\u767D 8% / \u4EAE\u8272 6%\uFF09**\u592A\u5F31**\uFF0C\n \u300C\u79FB\u4E0A\u53BB\u8981\u4ED4\u7EC6\u770B\u624D\u770B\u5F97\u51FA\u6765\u300D\u21D2 \u4E0D\u518D\u59D4\u6258\u5BBF\u4E3B hover \u522B\u540D\uFF0C\u6539\u4E3A\u81EA\u63BA\u4E2D\u6027\u8272\u5E76\u52A0\u91CD\uFF1A\n \u4EAE\u8272\u63BA\u9ED1 10%\u3001\u6697\u8272\u63BA\u767D 14%\uFF08active \u518D\u52A0\u4E00\u6863\uFF09\u3002\u6309\u94AE / \u5206\u6BB5\u8F68\u9053 / \u5404\u7C7B hover \u5E95\u540C\u65F6\u53D7\u76CA\u3002\n \u26A0\uFE0F \u5FC5\u987B\u4FDD\u7559 rgba \u515C\u5E95\u884C\u5728\u524D\uFF08\u672C\u6587\u4EF6\u60EF\u4F8B\uFF0C\u89C1 icon-plate \u6CE8\u91CA\uFF09\uFF1A\u63BA\u7684\u662F**\u56FA\u5B9A\u4E2D\u6027\u8272**\n \uFF08neutral-900=#0f0f0f / neutral-00=#fff\uFF09\uFF0C\u9884\u8BA1\u7B97\u65E0\u635F\uFF1B\u65E7\u5185\u6838\u4E0D\u8BA4 color-mix \u65F6\u8D70\u515C\u5E95\uFF0C\n \u5426\u5219\u6574\u6761 background:var(--seg-track) \u4F5C\u5E9F \u21D2 \u5206\u6BB5\u8F68\u9053\u900F\u660E\uFF08\u771F\u8E29\u8FC7\uFF1A\u9884\u89C8\u7AD9\u8F68\u9053\u6D88\u5931\uFF09\u3002 */\n --dshpc-hover:rgba(15,15,15,.10);\n --dshpc-active:rgba(15,15,15,.18);\n /* \u5206\u6BB5\u63A7\u4EF6\u8F68\u9053\u5E95\uFF1A\u4E13\u7528 token\uFF08rgba \u5B57\u9762\u91CF\u3001\u4E0D\u501F --dshpc-hover \u4E2D\u8F6C\uFF09\u2014\u2014\n 2026-10-19 \u6559\u8BAD\uFF1A\u53D8\u91CF\u94FE\u4E2D\u95F4\u4EFB\u4F55\u4E00\u73AF invalid \u21D2 background \u6574\u6761\u4F5C\u5E9F\u3001\u8F68\u9053\u5168\u900F\u660E\u3002\n \u4EAE\u8272\uFF1A\u9ED1 7%\uFF08\u6BD4 hover \u7684 10% \u6DE1\u4E00\u6863\uFF0C\u9009\u4E2D\u767D\u7247\u624D\u8DF3\u5F97\u51FA\uFF09\u3002 */\n --dshpc-seg-track:rgba(15,15,15,.07);\n --dshpc-mask:var(--dsw-alias-bg-mask-1,#0000003d);\n /* \u5F39\u7A97\u9501\u5B9A\u6001\u7ED9**\u81EA\u7ED8\u63A7\u4EF6**\u7684\u964D\u900F\u660E\u5EA6\u6863\uFF082026-11-05\uFF09\u3002\u653E\u5728 token \u91CC\u662F\u4E3A\u4E86\u8BA9\u6D88\u8D39\u65B9\n \u5728\u81EA\u5DF1\u5143\u7D20\u4E0A\u5199 --dshpc-lock-dim: 1 \u5C31\u80FD\u9000\u51FA\u8FD9\u6761\u6548\u679C\uFF0C\u4E0D\u7528 !important \u6253\u67B6\u3002 */\n --dshpc-lock-dim:.5;\n /* \u300C\u9009\u4E2D\u9762\u300D\uFF082026-10-06\uFF0C\u4EFB\u52A1\u65E5\u7A0B\u9875\u9996\u521B\uFF09= \u5F53\u524D\u5E95\u8272**\u671D\u66F4\u6DF1\u63BA 12% \u6587\u5B57\u8272**\uFF1A\n \u6D45\u8272\u4E3B\u9898\u4E0B\u6587\u5B57\u8272\u662F\u9ED1 \u21D2 \u9009\u4E2D\u9762\u6BD4\u5E38\u6001\u5E95\u8272**\u6DF1\u4E00\u6863**\u3002\u6DF1\u8272\u5206\u652F\u89C1 body[data-ds-dark-theme]\uFF08\u671D\u80CC\u666F\u8272\u63BA\uFF09\u3002\n \u8BED\u4E49\uFF1A\u6807\u8BB0\u300C\u6B63\u5728\u770B\u7684\u4E1C\u897F\u300D\uFF0C\u6BD4\u5E38\u6001\u660E\u663E\u3001\u53C8\u4E0D\u8BB8\u76D6\u4F4F\u5185\u5BB9\uFF08\u4E0D\u8BB8\u7528\u534A\u900F\u660E\u53E0\u72B6\u6001\u8272\uFF09\u3002 */\n --dshpc-selected-bg:color-mix(in srgb,var(--dshpc-surface-1) 88%,var(--dshpc-fg));\n /* \u4EFB\u52A1\u65E5\u7A0B\u9875\u672C\u6708\u683C\u9ED8\u8BA4\u5E95\uFF082026-10-06 \u2192 \u7EED2\uFF09\uFF1A\u6D45\u8272\u4E0B\u7ED9**\u6DE1\u84DD**\uFF08business 8% \u900F\u767D\u5E95\uFF09\u2014\u2014\n \u53C2\u7167\u7528\u6237\u53C2\u8003\u7A3F\u91CC\u672A\u9009\u4E2D\u65E5\u7A0B\u5757 / Tuesday \u5217\u7684\u90A3\u79CD\u84DD\u3001\u518D\u6D45\u4E00\u70B9\u70B9\uFF1B\n \u76F8\u90BB\u6708\u8865\u4F4D\u683C\u4ECD\u8D70 --dshpc-surface-2\uFF08\u66F4\u7070\uFF09\uFF0C\u4E0D\u53D7\u5F71\u54CD\u3002\n \u6DF1\u8272\u6BB5\u7EF4\u6301 #23262e\uFF08\u7528\u6237\uFF1A\u6DF1\u8272 UI \u5DF2\u5DEE\u4E0D\u591A\uFF0C\u4E0D\u52A8\uFF09\u3002 */\n --dshpc-cal-cell-bg:color-mix(in srgb,var(--dshpc-business) 8%,var(--dshpc-surface-1));\n /* \u4EFB\u52A1\u65E5\u7A0B\u9875\u300C\u70B9\u5F00\u67D0\u5929\u300D\u5C55\u5F00\u7684\u9762\u677F\u5E95\uFF082026-10-06 \u7EED\uFF09\uFF1A\u6D45\u8272\u4E0B**\u65E0\u9650\u63A5\u8FD1\u767D\u3001\u53EA\u5E26\u4E00\u4E01\u70B9\u7070**\n \uFF08neutral-50 = #fafafa\uFF09\u2014\u2014\u9762\u677F\u91CC\u88C5\u534A\u900F\u660E\u6267\u884C\u8BB0\u5F55\u5217\u8868\uFF0C\u5E95\u518D\u6DF1\u6574\u7247\u5C31\u53D1\u7CCA\u53D1\u7070\uFF1B\n \u6DF1\u8272\u6BB5\u6CBF\u7528\u539F selected-bg \u6697\u503C\uFF0C\u4FDD\u6301\u4E0D\u52A8\u3002 */\n --dshpc-cal-panel-bg:var(--dsw-static-neutral-50,#fafafa);\n /* \u4EFB\u52A1\u65E5\u7A0B\u9875\u672C\u6708\u683C hover \u5E95\uFF08\u6D45\u8272\u6BB5\uFF0C2026-10-06 \u7EED3\uFF09\uFF1A\u4E0D\u518D\u8D70\u7070\u8272\u901A\u7528\u4EA4\u4E92\u5E95\u2014\u2014\n \u9F20\u6807\u79FB\u4E0A\u53BB\u5E94\u662F\u300C\u66F4\u4EAE\u4E00\u70B9\u70B9\u7684\u84DD\u300D\uFF08\u4E0E\u6DF1\u8272\u6BB5\u540C\u8BED\u4E49\uFF1Ahover = \u63D0\u4EAE\u7684\u84DD\uFF0C\u4E0D\u662F\u7070\u4E0B\u53BB\uFF09\u3002\n \u6D53\u5EA6**\u4ECB\u4E8E**\u8868\u5934\u84DD\uFF0814%\uFF09\u4E0E\u672A\u9009\u4E2D\u683C\u84DD\uFF088%\uFF09\u4E4B\u95F4\u3001\u7565\u504F\u8868\u5934\u4E00\u4FA7\uFF1Abusiness 12% \u900F\u767D\u5E95\n \uFF08\u6BD4\u8868\u5934\u6D45\u4E00\u70B9\u3001\u6BD4\u672A\u9009\u4E2D\u683C\u6DF1\u4E00\u70B9\uFF09\u3002 */\n --dshpc-cal-cell-hover:color-mix(in srgb,var(--dshpc-business) 12%,var(--dshpc-surface-1));\n\n /* \u2500\u2500 \u6295\u5F71 / \u7126\u70B9 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n --dshpc-shadow-1:var(--dsw-elevation-soft,0 4px 16px 0 #00000008);\n /* \u4EAE\u7247\u81EA\u5E26\u7684\u6D6E\u8D77\u611F\uFF08\u9009\u4E2D\u6001\u7528\uFF1B\u4E0E --dshpc-surface-raised \u914D\u5BF9\uFF09 */\n --dshpc-shadow-raised:var(--dsw-elevation-soft,0 4px 16px 0 #00000008);\n --dshpc-shadow-2:var(--dsw-shadow-lv3,0 12px 32px 0 #00000014);\n /* \u952E\u76D8\u7126\u70B9\u73AF\u3002\u26A0\uFE0F \u4E0D\u7528\u5BBF\u4E3B --dsw-focus-ring-color\uFF1A\u5B83\u9ED8\u8BA4\u503C\u662F transparent\uFF08\u515C\u5E95\u4E0D\u751F\u6548\u3001\u4F1A\u9690\u8EAB\uFF09 */\n --dshpc-focus:var(--dsw-alias-state-business-primary,#3b5bdb);\n\n /* \u2500\u2500 \u5706\u89D2\uFF08\u5BBF\u4E3B\u771F\u503C 4 / 8 / 12 / 16 / 20 / 28\uFF09\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n --dshpc-radius-xs:var(--dsw-radius-xs,4px);\n --dshpc-radius-sm:var(--dsw-radius-sm,8px);\n --dshpc-radius-md:var(--dsw-radius-md,12px);\n --dshpc-radius-lg:var(--dsw-radius-lg,16px);\n --dshpc-radius-xl:var(--dsw-radius-xl,20px);\n --dshpc-radius-panel:var(--dsw-radius-panel,28px);\n /* \u5168\u5706\uFF08\u80F6\u56CA\u6807\u7B7E\uFF09\uFF1A\u5BBF\u4E3B\u7684 radius \u6863\u6700\u5927\u53EA\u6709 28px\uFF0C\u6491\u4E0D\u6EE1 24px \u9AD8\u7684 chip */\n --dshpc-radius-pill:999px;\n\n /* \u2500\u2500 \u95F4\u8DDD\u56DB\u62CD\uFF08\u53EA\u8BB8\u7528\u8FD9\u56DB\u6863\uFF0C\u4E0D\u8BB8\u51FA\u73B0 5 / 7 / 9px\uFF09\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n --dshpc-space-1:4px;\n --dshpc-space-2:8px;\n --dshpc-space-3:12px;\n --dshpc-space-4:16px;\n\n /* \u2500\u2500 \u63A7\u4EF6\u9AD8\u5EA6\uFF1A\u79BB\u6563\u4E09\u6863\uFF08\u63A7\u4EF6\u7528 size=\"sm|md|lg\" \u9009\uFF1B\u8C03\u7528\u70B9\u4E0D\u8BB8\u81EA\u5B9A\u4E49\u9AD8\u5EA6\uFF0C\n \u771F\u4E0D\u591F\u7528\u624D\u5141\u8BB8\u5728\u8C03\u7528\u70B9\u672C\u5730\u8986\u76D6 --dshpc-control-h-*\uFF0C\u5C5E\u4F8B\u5916\u800C\u975E\u5E38\u6001\uFF09\u2500\u2500 */\n --dshpc-control-h-sm:24px;\n --dshpc-control-h-md:28px;\n --dshpc-control-h-lg:32px;\n\n /* \u2500\u2500 \u5B57\u53F7 / \u884C\u9AD8\uFF1A\u76F4\u7ED1\u5BBF\u4E3B\u5B57\u53F7\u65CF\uFF08\u5BBF\u4E3B\u771F\u503C 11 / 12 / 13 / 14 / 16\uFF09\u2500\u2500\u2500\u2500\u2500 */\n --dshpc-font-xs:var(--dsw-font-xxxs-11-font-size,11px);\n --dshpc-font-sm:var(--dsw-font-xxs-12-font-size,12px);\n --dshpc-font-md:var(--dsw-font-xs-13-font-size,13px);\n --dshpc-font-lg:var(--dsw-font-s-14-font-size,14px);\n --dshpc-font-xl:var(--dsw-font-base-16-font-size,16px);\n --dshpc-line-xs:var(--dsw-font-xxxs-11-line-height,14px);\n --dshpc-line-sm:var(--dsw-font-xxs-12-line-height,18px);\n --dshpc-line-md:var(--dsw-font-xs-13-line-height,20px);\n --dshpc-line-lg:var(--dsw-font-s-14-line-height,22px);\n --dshpc-line-xl:var(--dsw-font-base-16-line-height,24px);\n --dshpc-font-mono:var(--ds-font-family-code,monospace);\n\n /* \u2500\u2500 \u7EC6\u6EDA\u52A8\u6761\u7684\u8BA9\u4F4D\u503C\uFF08\u7EBF\u5BBD\u4E0D\u80FD\u653E token\uFF0C\u89C1\u6587\u4EF6\u672B\u5C3E\u7684\u6CE8\u91CA\uFF09\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n 1px\u21922px \u53EA\u6539\u8FD9\u4E00\u884C\uFF1B\u5B83\u7528\u5728\u666E\u901A\u5143\u7D20\u4E0A\uFF0Cvar() \u80FD\u6B63\u5E38\u89E3\u6790\u3002 */\n --dshpc-scroll-inset:1px;\n\n /* \u2500\u2500 \u5C42\u7EA7\u9636\u68AF\uFF08\u4E1A\u52A1\u6587\u4EF6\u4E0D\u8BB8\u518D\u5199\u88F8 z-index\uFF09\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n /* \u9875\u9762\u7EA7\u9884\u89C8\u5206\u680F \u2192 \u62BD\u5C49\uFF08\u65B0\u5EFA/\u7F16\u8F91\uFF09\u2192 \u5F39\u7A97/\u786E\u8BA4\u6846 \u2192 \u6D6E\u5C42\u83DC\u5355 \u2192 \u6D6E\u5C42\u63D0\u793A */\n /* **\u6574\u6761\u9636\u68AF\u90FD\u5FC5\u987B\u4F4E\u4E8E\u5B98\u65B9\u6D6E\u70B9 1000 \u6863**\uFF082026-11-06 \u7528\u6237\u62CD\u677F\uFF09\uFF1A\u5B98\u65B9\u539F\u8BED\n Modal / ImageLightbox \u662F z-index 1000\uFF08body portal\uFF09\uFF0CMenu / Toast \u662F 1100\u3002\n \u6211\u4EEC\u53EA\u662F\u5BBF\u4E3B\u91CC\u7684\u4E00\u4E2A\u9875\u9762 \u21D2 \u5BBF\u4E3B\u6D6E\u70B9\u6052\u5728\u6211\u4EEC\u4E4B\u4E0A\uFF1B\u4EE5\u540E\u5F39\u7A97\u91CC\u518D\u5F00\u5B98\u65B9\u6A21\u6001/\u9884\u89C8\uFF0C\n \u4E0D\u5FC5\u9010\u4E2A\u573A\u666F\u300C\u4E34\u65F6\u8BA9\u4F4D\u300D\uFF08\u6B64\u524D 1070 \u538B\u4F4F\u5B98\u65B9\u539F\u56FE\u9884\u89C8\u5C31\u662F\u8FD9\u4E48\u8E29\u51FA\u6765\u7684\uFF09\u3002 */\n /* \u5185\u5BB9\u5C42\u5438\u9876\uFF08\u5929\u6807\u7B7E / \u8868\u5934\u8FD9\u7C7B\u300C\u8DDF\u7740\u6EDA\u4F46\u538B\u4F4F\u540C\u5C42\u5185\u5BB9\u300D\u7684\u5143\u7D20\uFF09\uFF1A\u53EA\u538B\u540C\u5C42\u5144\u5F1F\uFF0C\n \u5FC5\u987B\u4F4E\u4E8E\u4E0B\u9762\u6240\u6709\u6D6E\u5C42\u6863 \u2014\u2014 \u6240\u4EE5\u5B83\u4E0D\u662F\u300C\u5F00\u65B0\u6D6E\u5C42\u6863\u300D\uFF0C\u800C\u662F\u5185\u5BB9\u5C42\u5185\u90E8\u7684\u6392\u5E8F\u4F4D\u3002 */\n --dshpc-z-sticky:10;\n --dshpc-z-dock:900;\n --dshpc-z-drawer:920;\n --dshpc-z-modal:940;\n /* \u6536\u8D77\u540E\u7684\u8033\u6735\uFF1A\u5FC5\u987B\u9AD8\u4E8E\u5F39\u7A97\u906E\u7F69\uFF0C\u5426\u5219\u5F39\u7A97\u4E00\u5F00\u5C31\u70B9\u4E0D\u5230\u5B83\uFF082026-11-04 \u7528\u6237\u771F\u673A\uFF09\u3002\n \u53EA\u7ED9\u8033\u6735\u7528\uFF0C\u9875\u9762\u7EA7\u5206\u680F\u672C\u4F53\u4ECD\u662F\u5E03\u5C40\u6210\u5458\uFF0C\u4E0D\u8DDF\u7740\u62AC\u9AD8\u3002 */\n --dshpc-z-ear:950;\n --dshpc-z-menu:960;\n --dshpc-z-tip:970;\n /* \u8BED\u4E49\u522B\u540D\uFF082026-11-03 \u9762\u677F\u76AE\u80A4\u7EDF\u4E00\uFF09\uFF1A\u4E1A\u52A1\u6587\u4EF6\u53EA\u8BB8\u7528\u8FD9\u4E24\u4E2A\u8BF4\u300C\u6211\u8981\u4E00\u5C42\u6D6E\u5C42\u300D\uFF0C\n \u4E0D\u518D\u5404\u81EA\u5199\u6D6E\u5C42\u5B57\u9762\u91CF\u3002\n panel = \u6D6E\u5C42\u9762\u677F\u672C\u4F53\uFF08picker \u5F39\u7A97\u3001\u951A\u5B9A\u9762\u677F\uFF09\uFF1B\n popmenu = \u53E0\u5728\u9762\u677F\u4E4B\u4E0A\u7684\u83DC\u5355\uFF08\u25BE \u9009\u5C42\u3001Picker \u4E0B\u62C9\uFF09\u4E0E\u5176\u900F\u660E\u906E\u7F69\u3002 */\n --dshpc-z-panel:var(--dshpc-z-menu);\n --dshpc-z-popmenu:var(--dshpc-z-tip);\n\n /* \u2500\u2500 \u52A8\u6548 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n --dshpc-dur:var(--ds-transition-duration,.2s);\n --dshpc-dur-fast:var(--ds-transition-duration-fast,.12s);\n --dshpc-ease:var(--ds-ease-in-out,cubic-bezier(.4,0,.2,1));\n /* \u8FD0\u884C\u4E2D\u72B6\u6001\u7684\u8109\u52A8\u65F6\u957F\uFF082026-10-06 \u7EDF\u4E00\u524D\u540E\u4E24\u7AEF\uFF1A\u4EFB\u52A1\u914D\u7F6E\u91CC\u7684\u7EFF\u547C\u5438 \u2192 \u84DD\u3001\u653E\u6162\uFF1B\n \u6267\u884C\u8BB0\u5F55\u91CC\u7684\u84DD\u95EA \u2192 \u653E\u6162\u4E00\u70B9\u3002\u4E24\u8005\u7528\u540C\u4E00\u4E2A\u503C\uFF0C\u52A8\u753B\u5F62\u72B6\u672C\u5C31\u4E00\u81F4\uFF09\u3002 */\n --dshpc-dur-run:500ms;\n}\n\n/* \u2500\u2500 \u660E\u6697\u5DEE\u5F02\u7684**\u552F\u4E00**\u843D\u70B9 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n \u5224\u636E = body[data-ds-dark-theme]\uFF08\u5BBF\u4E3B 0.2.0-rc.2 \u6E90\u7801\u6838\u5B9E\uFF1A\u542F\u52A8\u811A\u672C toggleAttribute \u5199\u5165\uFF0C\n \u552F\u4E00\u660E\u6697\u5224\u636E\uFF1B\u63D2\u4EF6\u7981\u6B62\u7528 prefers-color-scheme \u2014\u2014 \u5B83\u8DDF\u7684\u662F\u7CFB\u7EDF\u3001\u4E0D\u662F\u7528\u6237\u5728\u5BBF\u4E3B\u91CC\u7684\u9009\u62E9\uFF09\u3002\n \u4E0B\u9762\u53EA\u653E alias \u8868\u8FBE\u4E0D\u4E86\u7684\u300C\u56FA\u5B9A\u4E2D\u6027\u9762\u300D\uFF1B\u989C\u8272\u82E5\u80FD\u9760 alias \u81EA\u52A8\u8DDF\u968F\uFF0C\u4E00\u5F8B\u4E0D\u8981\u5199\u5728\u8FD9\u91CC\u3002 */\nbody[data-ds-dark-theme]{\n /* \u6DF1\u8272\u6BB5\u7684\u84DD**\u523B\u610F\u4E0D\u8DDF\u968F\u5BBF\u4E3B alias**\uFF08\u552F\u4E00\u4F8B\u5916\uFF09\uFF1A\u5BBF\u4E3B\u6697\u8272 alias \u7ED9\u7684\u662F #60a5fa \u4E00\u6863\u7684\u9AD8\u4EAE\u84DD\uFF0C\n \u5B9E\u5FC3\u9762\uFF08Chip / Button info / \u65E5\u671F\u9009\u4E2D\u683C\uFF09\u538B\u767D\u5B57\u4F1A\u53D1\u7CCA \u2014\u2014 \u7528\u6237 2026-10-29 \u5B9E\u6D4B\u53CD\u9988\u3002\n \u21D2 \u6DF1\u8272\u4E0B\u6539\u5B9A\u5411\u6D45\u8272\u72B6\u6001\u7684\u84DD\uFF08#3b5bdb\uFF09\u9760\uFF0C\u53EA\u5728\u660E\u5EA6\u4E0A\u62AC\u4E00\u70B9\u70B9\uFF0C\u4FDD\u8BC1\u5B83\u5728\u6697\u5E95\u4E0A\u4ECD\u770B\u5F97\u89C1\uFF1A\n #4c6bd8 \u5BF9\u767D\u5B57 \u22484.8:1\uFF08\u539F\u4EAE\u84DD\u53EA\u6709 ~2.3:1\uFF09\uFF0C\u5BF9\u65E5\u5386\u683C\u5E95 \u22483.2:1 \u4ECD\u8FC7 UI \u4EF6\u7684 3:1 \u7EBF\u3002\n \u4EE3\u4EF7\uFF1A\u5BBF\u4E3B\u6362\u54C1\u724C\u8272\u65F6\u6DF1\u8272\u4E0D\u518D\u81EA\u52A8\u8DDF\u7740\u53D8\uFF0C\u9700\u8981\u8FD9\u91CC\u624B\u52A8\u540C\u6B65\u3002 */\n --dshpc-business:#4c6bd8;\n --dshpc-solid:var(--dsw-static-neutral-900,#0f0f0f);\n --dshpc-on-solid:var(--dsw-static-neutral-00,#fff);\n /* \u5B9E\u5FC3\u6309\u94AE hover / active\uFF08\u6697\u8272\u7248\uFF09\uFF1A\u9ED1\u5E95\uFF08\u6D45\u8272\u4E3B\u9898\u7684\u8FD1\u9ED1 \u2192 \u6697\u8272\u4E0B\u7684\u8FD1\u767D\uFF09\u63BA\u9ED1\u538B\u6DF1\uFF1B\n \u7EA2 / \u7EFF / \u9EC4 / \u84DD\u63BA\u767D\u63D0\u4EAE\u3002\u4E0E\u4EAE\u8272\u6BB5\u65B9\u5411\u76F8\u53CD\uFF0C\u4FDD\u8BC1\u4E24\u79CD\u4E3B\u9898\u4E0B\u300C\u4E00\u773C\u770B\u51FA\u53D8\u4E86\u300D\u3002 */\n --dshpc-accent-hover:color-mix(in srgb,var(--dshpc-accent) 80%,#000000);\n --dshpc-accent-active:color-mix(in srgb,var(--dshpc-accent) 66%,#000000);\n --dshpc-danger-hover:color-mix(in srgb,var(--dshpc-danger) 78%,#ffffff);\n --dshpc-danger-active:color-mix(in srgb,var(--dshpc-danger) 64%,#ffffff);\n --dshpc-success-hover:color-mix(in srgb,var(--dshpc-success) 78%,#ffffff);\n --dshpc-success-active:color-mix(in srgb,var(--dshpc-success) 64%,#ffffff);\n --dshpc-warning-hover:color-mix(in srgb,var(--dshpc-warning) 78%,#ffffff);\n --dshpc-warning-active:color-mix(in srgb,var(--dshpc-warning) 64%,#ffffff);\n /* \u540C\u4E0A\uFF1A\u63BA\u767D\u6BD4\u4F8B\u4ECE 22% / 36% \u6536\u5230 12% / 22% \u2014\u2014 \u5E95\u8272\u5DF2\u53D8\u6DF1\uFF0C\u7167\u65E7\u6BD4\u4F8B\u63D0\u4EAE\u4F1A\u5728 hover \u77AC\u95F4\n \u628A\u767D\u5B57\u5BF9\u6BD4\u6253\u56DE ~3:1\uFF08\u6B63\u662F\u7528\u6237\u5ACC\u7CCA\u7684\u90A3\u4E00\u6863\uFF09\uFF1B\u6536\u7A84\u540E hover \u4ECD\u53EF\u611F\u77E5\u3001\u5B57\u4ECD\u6E05\u6670\u3002 */\n --dshpc-business-hover:color-mix(in srgb,var(--dshpc-business) 88%,#ffffff);\n --dshpc-business-active:color-mix(in srgb,var(--dshpc-business) 78%,#ffffff);\n /* \u6697\u8272 hover \u63BA\u767D 14% / active 24%\uFF08\u5BF9\u9F50\u4E0A\u9762 2026-10-18 \u7684\u52A0\u91CD\u62CD\u677F\uFF09\u3002rgba \u515C\u5E95\u884C\u540C\u4E0A\u3002 */\n --dshpc-hover:rgba(255,255,255,.14);\n --dshpc-active:rgba(255,255,255,.24);\n /* \u5206\u6BB5\u8F68\u9053\uFF08\u6697\u8272\u7248\uFF09\uFF1A\u767D 10%\u2014\u2014\u6BD4 hover \u6DE1\u4E00\u6863\uFF0C\u9009\u4E2D\u4EAE\u7247\u624D\u8DF3\u5F97\u51FA\u3002 */\n --dshpc-seg-track:rgba(255,255,255,.10);\n --dshpc-plate:var(--dsw-static-neutral-850,#212123);\n --dshpc-plate-hover:var(--dsw-static-neutral-800,#292929);\n --dshpc-icon-plate:rgba(255,255,255,.05);\n /* \u6697\u8272\u4E3B\u9898**\u53CD\u8FC7\u6765**\uFF1A\u8868\u5934\u8981\u6BD4\u5361\u7247\u9762**\u4EAE**\u3001\u6BD4\u6591\u9A6C\u7EB9\u518D**\u6D45\u4E00\u6863**\uFF08\u7528\u6237\uFF1A\u7EAF\u9ED1\u80CC\u666F\u6CA1\u6CD5\u770B\uFF09\u3002 */\n --dshpc-head-bg:var(--dshpc-surface-2);\n /* \u8868\u683C\uFF082026-10-30 \u7528\u6237\u4E8C\u6B21\u5B9A\u6848\uFF1A\u4E0E\u901A\u680F\u4E92\u6362\u5E95\u8272\uFF09\uFF1A\u901A\u680F\u5E95\u53D6\u8868\u5934\u539F\u6765\u90A3\u8272 #151b23\n \uFF08\u4EAE\u8272\u6BB5\u5BF9\u5E94 #f6f8fa\uFF09\uFF1B\u8868\u5934\u9ED8\u8BA4\u5E95\u6CBF\u7528\u4EAE\u8272\u6BB5\u5B9A\u4E49\u7684 --dshpc-surface-sunken\uFF0C\u4E0D\u5728\u6697\u8272\u6BB5\u91CD\u5199\uFF1B\n \u884C hover \u662F\u300C\u4E00\u5C42\u6781\u6DE1\u7684\u767D\u300D\u22483% \u2014\u2014 \u6697\u5E95\u4E0A\u7528\u9ED1\u4F1A\u8D8A\u60AC\u8D8A\u6697\uFF0C\u770B\u4E0D\u51FA\u300C\u6D45\u7070\u300D\u53CD\u9988\u3002 */\n --dshpc-table-banner-bg:#151b23;\n --dshpc-table-row-hover:rgba(255,255,255,.03);\n /* \u6697\u8272\u5E95\u677F**\u5FAE\u4EAE**\uFF1Bhover **\u66F4\u4EAE**\uFF08\u539F\u5148 hover \u53D6 plate-hover \u53CD\u800C\u66F4\u6DE1 \u21D2 \u9F20\u6807\u79FB\u4E0A\u53BB\u5C31\u6CA1\u4E86\uFF09\u3002 */\n --dshpc-chip-bg:rgba(255,255,255,.08);\n --dshpc-chip-bg-hover:rgba(255,255,255,.16);\n /* \u6697\u8272\u4E0B\u84DD\u8272\u8981\u66F4\u4EAE\u3001\u900F\u660E\u5EA6\u7565\u9AD8\u624D\u538B\u5F97\u4F4F\u6DF1\u5E95\u3002 */\n --dshpc-open-bg:rgba(96,165,250,.18);\n --dshpc-open-bg-soft:rgba(96,165,250,.08);\n --dshpc-card-hover:rgba(96,165,250,.13);\n /* \u8BED\u4E49\u8272**\u6D45\u5E95**\uFF08\u6DF1\u8272\u7248\uFF09\uFF1A\u7528\u6237\u5ACC\u6DF1\u8272\u7684\u7EFF / \u7EA2\u300C\u6709\u70B9\u6DF1\u300D\u21D2 \u538B\u5230 **5%**\uFF08\u6D45\u8272\u6BB5\u662F 8%\uFF09\uFF0C\n \u66F4\u8D34\u8FD1\u9762\u677F\u5E95\u8272\u3001\u5B58\u5728\u611F\u66F4\u5F31\uFF1B\u5757\u5E95\u4E0E\u72B6\u6001\u8272\u7AD6\u6761\u4ECD\u540C\u6E90\uFF08\u7AD6\u6761\u662F\u5B9E\u8272\uFF0C\u4E0D\u53D7\u8FD9\u6761\u5F71\u54CD\uFF09\u3002 */\n --dshpc-success-soft:color-mix(in srgb,var(--dshpc-success) 5%,transparent);\n --dshpc-warning-soft:color-mix(in srgb,var(--dshpc-warning) 5%,transparent);\n --dshpc-danger-soft:color-mix(in srgb,var(--dshpc-danger) 5%,transparent);\n --dshpc-business-soft:color-mix(in srgb,var(--dshpc-business) 5%,transparent);\n /* \u6269\u5C55\u8272\u6DF1\u8272\u6D3E\u751F\uFF1A\u5E95\u8272\u5199\u6B7B\u3001hover \u63BA\u767D 12%/22%\uFF08\u540C business\uFF0C\u9632\u767D\u5B57\u53D1\u7CCA\uFF09\uFF0Csoft 5%\u3002 */\n --dshpc-purple-hover:color-mix(in srgb,var(--dshpc-purple) 88%,#ffffff);\n --dshpc-purple-active:color-mix(in srgb,var(--dshpc-purple) 78%,#ffffff);\n --dshpc-purple-soft:color-mix(in srgb,var(--dshpc-purple) 5%,transparent);\n --dshpc-pink-hover:color-mix(in srgb,var(--dshpc-pink) 88%,#ffffff);\n --dshpc-pink-active:color-mix(in srgb,var(--dshpc-pink) 78%,#ffffff);\n --dshpc-pink-soft:color-mix(in srgb,var(--dshpc-pink) 5%,transparent);\n --dshpc-cyan-hover:color-mix(in srgb,var(--dshpc-cyan) 88%,#ffffff);\n --dshpc-cyan-active:color-mix(in srgb,var(--dshpc-cyan) 78%,#ffffff);\n --dshpc-cyan-soft:color-mix(in srgb,var(--dshpc-cyan) 5%,transparent);\n --dshpc-teal-hover:color-mix(in srgb,var(--dshpc-teal) 88%,#ffffff);\n --dshpc-teal-active:color-mix(in srgb,var(--dshpc-teal) 78%,#ffffff);\n --dshpc-teal-soft:color-mix(in srgb,var(--dshpc-teal) 5%,transparent);\n --dshpc-orange-hover:color-mix(in srgb,var(--dshpc-orange) 88%,#ffffff);\n --dshpc-orange-active:color-mix(in srgb,var(--dshpc-orange) 78%,#ffffff);\n --dshpc-orange-soft:color-mix(in srgb,var(--dshpc-orange) 5%,transparent);\n --dshpc-indigo-hover:color-mix(in srgb,var(--dshpc-indigo) 88%,#ffffff);\n --dshpc-indigo-active:color-mix(in srgb,var(--dshpc-indigo) 78%,#ffffff);\n --dshpc-indigo-soft:color-mix(in srgb,var(--dshpc-indigo) 5%,transparent);\n --dshpc-rose-hover:color-mix(in srgb,var(--dshpc-rose) 88%,#ffffff);\n --dshpc-rose-active:color-mix(in srgb,var(--dshpc-rose) 78%,#ffffff);\n --dshpc-rose-soft:color-mix(in srgb,var(--dshpc-rose) 5%,transparent);\n --dshpc-slate-hover:color-mix(in srgb,var(--dshpc-slate) 88%,#ffffff);\n --dshpc-slate-active:color-mix(in srgb,var(--dshpc-slate) 78%,#ffffff);\n --dshpc-slate-soft:color-mix(in srgb,var(--dshpc-slate) 5%,transparent);\n /* \u300C\u9009\u4E2D\u9762\u300D\uFF08\u6DF1\u8272\u7248\uFF0C2026-10-06\uFF09\uFF1A\u63BA **~40% \u80CC\u666F\u8272**\uFF08--dshpc-surface-base\uFF09\u21D2 \u65E0\u9650\u63A5\u8FD1\u9875\u9762\u80CC\u666F\u7684\u9ED1\u3001\n \u53EA\u6BD4\u80CC\u666F\u7565\u6DF1\u4E00\u70B9\u70B9\uFF08\u7528\u6237\uFF1A\u6DF1\u8272\u4E0B\u5C55\u5F00\u533A\u538B\u7740\u4EFB\u52A1\u900F\u660E\u7EFF\u4F1A\u53D1\u7070\uFF0C\u5E95\u8272\u8981\u5C3D\u91CF\u8D34\u8FD1\u80CC\u666F\u624D\u4E0D\u663E\u7070\uFF09\u3002\n \u26A0\uFE0F \u6DF1\u8272\u4E0B\u4E0D\u80FD\u63BA\u6587\u5B57\u8272 \u2014\u2014 \u90A3\u662F\u767D\uFF0C\u4F1A\u53D8\u4EAE\uFF0C\u9009\u4E2D\u53CD\u800C\u6BD4\u672C\u6708\u65E5\u671F\u6D45\u3002 */\n --dshpc-selected-bg:color-mix(in srgb,var(--dshpc-surface-1) 60%,var(--dshpc-surface-base));\n /* \u4EFB\u52A1\u65E5\u7A0B\u9875\u672C\u6708\u683C\u7684\u9ED8\u8BA4\u5E95\uFF08\u6DF1\u8272\u7248\uFF0C2026-10-06\uFF09\uFF1A\u6DF1\u7684\u3001\u5E26\u70B9\u7070\u84DD\u7684\u6697\u8272\uFF08\u7528\u6237\u7ED9\u7684\u53C2\u8003\u56FE \u2248 #23262e\uFF09\uFF0C\n \u6BD4\u539F\u6765\u7684\u5361\u7247\u9762\u66F4\u6C89\u3001\u66F4\u504F\u84DD\u7070\uFF1B\u9009\u4E2D\u683C\u4ECD\u8D70 --dshpc-selected-bg\uFF08\u66F4\u6697\u4E00\u6863\uFF09\uFF0C\u5C42\u7EA7\u4E0D\u53D8\u3002 */\n --dshpc-cal-cell-bg:#23262e;\n /* \u4EFB\u52A1\u65E5\u7A0B\u9875\u672C\u6708\u683C hover \u5E95\uFF08\u6DF1\u8272\u6BB5\uFF0C2026-10-06\uFF09\uFF1A\u539F\u5148\u8D70 --dshpc-hover\uFF08\u5BBF\u4E3B\u6D45\u8272\u53E0\u52A0\uFF09\u5728\u6DF1\u5E95\u4E0A\u663E\u5F97\n \u300C\u7070\u53D1\u4EAE\u300D\uFF0C\u4E0D\u597D\u770B \u21D2 \u6362\u6210\u66F4\u8D34\u5E95\u7684\u84DD\u8C03\u5FAE\u4EAE\uFF08\u4E0E open-bg-soft \u540C\u65CF\uFF09\uFF0Chover \u65F6\u4E0D\u523A\u773C\u3001\u53C8\u6709\u53CD\u9988\u3002 */\n --dshpc-cal-cell-hover:rgba(96,165,250,.12);\n /* \u4EFB\u52A1\u65E5\u7A0B\u9875\u5C55\u5F00\u9762\u677F\u5E95\uFF08\u6DF1\u8272\u6BB5\uFF0C2026-10-06 \u7EED\uFF09\uFF1A\u4E0E\u539F selected-bg \u6697\u503C\u4E00\u81F4\uFF0C\u6DF1\u8272 UI \u4E0D\u52A8 */\n --dshpc-cal-panel-bg:color-mix(in srgb,var(--dshpc-surface-1) 60%,var(--dshpc-surface-base));\n}\n\n/* \u2500\u2500 \u7EC6\u6EDA\u52A8\u6761 + \u79BB\u8FB9 1px\uFF1A\u5168\u5E93\u552F\u4E00\u771F\u6E90 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n \u653E\u5728 tokens \u57DF\uFF08ensureComponentStyles \u6BCF\u6B21\u5FC5\u6CE8\u518C\u3001\u4E14\u6392\u5728\u6240\u6709\u63A7\u4EF6\u57DF\u4E4B\u524D\uFF09\uFF1A\n \u4EFB\u4F55\u7EC4\u4EF6\u53EA\u8981\u7ED9\u6EDA\u52A8\u5BB9\u5668\u6302 .dshpc-scroll-thin \u5C31\u751F\u6548\uFF0C\u4E0D\u5FC5\u53E6\u884C\u6CE8\u5165 panel \u57DF\u3002\n \u6539\u7EBF\u5BBD / \u8BA9\u4F4D / \u5706\u89D2 / \u989C\u8272\u53EA\u6539\u8FD9\u4E00\u5904\uFF1B\u522B\u5728\u522B\u7684 CSS \u91CC\u518D\u6284\u4E00\u4EFD\u3002\n\n \u53EA\u7528 ::-webkit-scrollbar\uFF1A\u4E00\u65E6\u5199 scrollbar-width\uFF0CChrome \u4F1A\u5207\u5230\u89C4\u8303\u5316\u6EDA\u52A8\u6761\u3001\n \u5FFD\u7565\u8FD9\u91CC\u7684\u5BBD\u5EA6\uFF082026-11-06 \u5B9E\u6D4B\uFF1A\u7559\u7740 scrollbar-width:thin \u65F6\u5BBD\u5EA6\u56DE\u5230 ~10px\uFF09\u3002\n 2026-11-06 \u7528\u6237\u53E3\u5F84\uFF1A1px \u592A\u7EC6 \u21D2 \u7EBF\u5BBD\u8D77\u6B65 2px\u3001thumb \u4E0A\u4E0B\u7AEF\u5706\u89D2\uFF1B\u73B0\u884C\u503C\u89C1\u4E0B\u9762\u4E09\u884C\u3002\n\n \u8BA9\u4F4D\uFF08\u6EDA\u52A8\u6761\u4E0E\u5BB9\u5668\u53EF\u89C1\u8FB9\u7F18\u9694 1px\uFF09\u4E5F\u7531\u8FD9\u4E2A\u7C7B\u8D1F\u8D23\uFF1A\u539F\u751F\u6EDA\u52A8\u6761\u753B\u5728 padding box \u4E4B\u5916\u3001\n border \u4E4B\u5185\uFF0C\u53EA\u6709 border \u80FD\u628A\u5B83\u63A8\u79BB\u8FB9\u7F18\uFF08\u52A0 padding \u65E0\u6548\uFF09\u3002\u6302\u7C7B\u5373\u81EA\u52A8\u8BA9\u4F4D\uFF0C\n \u5BB9\u5668\u4E0D\u5FC5\u81EA\u5DF1\u518D\u5199\u900F\u660E\u8FB9\u6846\u3002\u65B9\u5411\u6863\uFF08CSS \u6CA1\u6709 :scrollable\uFF0C\u63A8\u4E0D\u51FA\u6EDA\u52A8\u65B9\u5411\uFF0C\u987B\u663E\u5F0F\u58F0\u660E\uFF09\uFF1A\n .dshpc-scroll-thin \u7AD6\u6EDA\uFF08\u9ED8\u8BA4\uFF09\uFF1A\u53F3\u8BA9\u4F4D\n .dshpc-scroll-thin--x \u6A2A\u6EDA\uFF1A\u5E95\u8BA9\u4F4D\uFF0C\u4E14\u4E0D\u53E0\u53F3\n .dshpc-scroll-thin--both \u53CC\u5411\uFF1A\u53F3 + \u5E95\u90FD\u8BA9\u4F4D\n --x / --both \u5FC5\u987B\u4E0E\u57FA\u7C7B\u540C\u6302\uFF08\u7EBF\u5BBD\u89C4\u5219\u53EA\u8BA4\u57FA\u7C7B\uFF09\u3002\n\n \u6302 .dshpc-panel \u7684\u5BB9\u5668\u672C\u8EAB\u5DF2\u6709\u5B9E\u8272\u8FB9\u6846 \u21D2 :not(.dshpc-panel) \u8DF3\u8FC7\u8BA9\u4F4D\uFF1A\u6EDA\u52A8\u6761\u8D34\u90A3\u6761\n \u5B9E\u8272\u7EBF\u5373\u7B97\u8BA9\u4F4D\uFF0C\u65E0\u6761\u4EF6\u53E0\u900F\u660E\u8FB9\u6846\u4F1A\u628A\u5B9E\u8272\u53F3\u8FB9\u6846\u8986\u76D6\u6210\u900F\u660E\u3002\n CodeMirror \u7684 .cm-scroller \u7531\u5B98\u65B9\u751F\u6210\u3001\u6302\u4E0D\u4E0A\u7C7B \u21D2 \u540E\u4EE3\u9009\u62E9\u5668\u4E00\u5E76\u547D\u4E2D\u7EBF\u5BBD\u4E0E\u8BA9\u4F4D\uFF1B\n \u5B83\u53EA\u8BA9\u53F3\u4E0D\u8BA9\u5E95\uFF1A\u7ED9\u5E95\u4F1A\u6539 scroller \u9AD8\u5EA6\uFF0CCodeMirror \u7684\u6D4B\u91CF\u5FAA\u73AF\u4F1A\u591A\u7B97\u4E00\u6761\u6A2A\u6EDA\u6761\u3002\n \u5916\u5C42\u82E5\u81EA\u5DF1\u4E0D\u6EDA\uFF08\u5982 CodeViewer\uFF09\uFF0C\u628A --dshpc-scroll-inset-right \u8BBE 0px \u5173\u6389\u81EA\u8EAB\u8BA9\u4F4D\uFF0C\n \u514D\u5F97\u5916\u5C42\u4E0E .cm-scroller \u4E24\u5C42\u5404 1px \u53E0\u6210 2px\u3002 */\n/* \u26A0\uFE0F \u4E0B\u9762\u4E09\u884C\u7684\u7EBF\u5BBD / \u5706\u89D2**\u5FC5\u987B\u662F\u5B57\u9762\u91CF**\uFF1AWebKit \u7684 ::-webkit-scrollbar \u7CFB\u5217\u4F2A\u5143\u7D20\n \u4E0D\u89E3\u6790 var()\uFF0C\u5E26\u53D8\u91CF\u7684\u58F0\u660E\u4F1A\u88AB\u9759\u9ED8\u4E22\u5F03 \u21D2 \u5BBD\u5EA6\u6574\u6761\u4F5C\u5E9F\u3001\u9000\u56DE\u9ED8\u8BA4\u503C\u30022026-11-06 \u628A\n width:2px \u6539\u6210 var(--dshpc-scroll-w) \u540E\u771F\u673A\u5F53\u573A\u6253\u56DE\uFF08\u7528\u6237\u53D1\u73B0\uFF09\uFF0C\u6545\u7EBF\u5BBD\u4E0D\u653E token\u3002\n \u6539\u7EBF\u5BBD\u53EA\u6539\u8FD9\u4E00\u5757\u7684\u4E09\u5904\u6570\u5B57\uFF08\u4E09\u5904\u5FC5\u987B\u540C\u503C\uFF09\uFF1B\u8BA9\u4F4D\u4ECD\u8D70 --dshpc-scroll-inset\u3002 */\n.dshpc-scroll-thin::-webkit-scrollbar,\n.dshpc-scroll-thin .cm-scroller::-webkit-scrollbar{width:3px;height:3px}\n.dshpc-scroll-thin::-webkit-scrollbar-thumb,\n.dshpc-scroll-thin .cm-scroller::-webkit-scrollbar-thumb{background:var(--dshpc-border-heavy);border-radius:3px}\n.dshpc-scroll-thin::-webkit-scrollbar-track,\n.dshpc-scroll-thin .cm-scroller::-webkit-scrollbar-track{background:transparent}\n.dshpc-scroll-thin:not(.dshpc-panel){border-right:var(--dshpc-scroll-inset-right,var(--dshpc-scroll-inset)) solid transparent}\n.dshpc-scroll-thin--x:not(.dshpc-panel){border-right:0;border-bottom:var(--dshpc-scroll-inset) solid transparent}\n.dshpc-scroll-thin--both:not(.dshpc-panel){border-bottom:var(--dshpc-scroll-inset) solid transparent}\n.dshpc-scroll-thin .cm-scroller{border-right:var(--dshpc-scroll-inset) solid transparent}\n";
1
+ export declare const TOKENS_CSS_TEMPLATE = "\n/* \u2500\u2500 \u6587\u5B57\uFF08\u5BBF\u4E3B label \u56DB\u6863 + \u53CD\u8272\u9762\u7528\u5B57\uFF09\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\nbody{\n --dshpc-fg:var(--dsw-alias-label-primary,#1f2328);\n --dshpc-fg-2:var(--dsw-alias-label-secondary,#5c6370);\n --dshpc-fg-3:var(--dsw-alias-label-tertiary,#767d87);\n --dshpc-fg-4:var(--dsw-alias-label-caption,#9aa1ab);\n --dshpc-fg-dim:var(--dsw-alias-label-dimmed,#b9bfc7);\n /* \u53CD\u8272\u9762\u4E0A\u7684\u5B57\uFF08\u5B9E\u5FC3\u94AE / \u89D2\u6807\uFF09\uFF1A\u6697\u8272\u4E0B\u662F bluish-1000\uFF0C\u6545\u7528 -foreground \u800C\u975E -inverted */\n --dshpc-fg-inverse:var(--dsw-alias-label-primary-foreground,#fff);\n\n /* \u2500\u2500 \u9762\uFF08\u5BBF\u4E3B bg-layer \u4E09\u6863 + \u4E0B\u6C89\u8F68\u9053\u5E95\uFF09\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n --dshpc-surface-1:var(--dsw-alias-bg-layer-1,#fff);\n --dshpc-surface-2:var(--dsw-alias-bg-layer-2,#fff);\n --dshpc-surface-3:var(--dsw-alias-bg-layer-3,#fff);\n /* \u300C\u9009\u4E2D\u4EAE\u7247\u300D\u7684\u5E95\u76D8\u8272\uFF08\u914D --dshpc-shadow-raised \u7528\uFF09 */\n --dshpc-surface-raised:var(--dsw-alias-bg-layer-1,#fff);\n /* \u8F68\u9053 / \u4E0B\u6C89\u5E95\uFF08\u5B98\u65B9\u5206\u6BB5\u63A7\u4EF6\u8F68\u9053\u7528\u7684\u5C31\u662F\u8FD9\u6761\uFF09 */\n --dshpc-surface-sunken:var(--dsw-alias-interactive-bg-hover,rgba(38,49,72,.06));\n /* \u6574\u9875 / \u7F16\u8F91\u5668\u5E95\uFF08bg-base\uFF09 */\n --dshpc-surface-base:var(--dsw-alias-bg-base,#fff);\n /* \u81EA\u7ED8\u6D6E\u5C42 / \u83DC\u5355\u5361\u7684\u4E0D\u900F\u660E\u5E95\uFF08= base\uFF1B\u4E0D\u8981\u7528\u534A\u900F\u660E\u7684 specific-menu\uFF09 */\n --dshpc-surface-menu:var(--dshpc-surface-base);\n /* markdown \u4EE3\u7801\u5757\u9762 / \u5B57\u4F53\uFF08\u4F1A\u8BDD\u955C\u50CF\u91CC\u7528\u5230\uFF09 */\n --dshpc-code-surface:var(--dsw-alias-markdown-code-block,rgba(128,128,128,.10));\n --dshpc-code-font:var(--dsw-font-markdown-code-block-small,12px/18px var(--ds-font-family-code,monospace));\n /* \u8B66\u544A\u6587\u5B57\u8272\uFF08\u5BBF\u4E3B state-warn-label\uFF09 */\n --dshpc-warning-label:var(--dsw-alias-state-warn-label,#f5a623);\n /* \u56FA\u5B9A\u4E2D\u6027\u5B9E\u9762\uFF08\u81EA\u7ED8\u6D6E\u5C42\u3001\u6DF1\u8272\u4E3B\u9898\u4E0B\u5FC5\u987B\u81EA\u5DF1\u53D8\u7684\u90A3\u51E0\u4E2A\uFF09\u2014\u2014\u53EA\u6709\u5B83\u9700\u8981\u6697\u8272\u8986\u76D6 */\n --dshpc-solid:var(--dsw-static-neutral-00,#fff);\n --dshpc-on-solid:var(--dsw-alias-label-primary,#1f2328);\n /* \u4EA4\u4ED8\u6587\u4EF6\u5361\u90A3\u79CD\u300C\u6D45\u5E95\u76D8 + hover \u52A0\u6DF1\u300D\u4E24\u62CD */\n --dshpc-plate:var(--dsw-static-neutral-50,#fafafa);\n --dshpc-plate-hover:var(--dsw-static-neutral-100,#f5f5f5);\n /* \u26A0\uFE0F \u8FD9\u4E9B**\u56FA\u5B9A\u4E2D\u6027\u9762\u4E00\u5F8B\u7528 rgba \u5B57\u9762\u91CF**\uFF082026-10-19 \u771F\u673A\u6559\u8BAD\uFF09\uFF1A\u4E0D\u8981\u5199\u6210\n \u300Crgba \u56DE\u9000\u884C + \u5D4C --dsw-static-* \u7684 color-mix \u884C\u300D\u4E24\u6761\u540C\u540D\u58F0\u660E\u2014\u2014\u81EA\u5B9A\u4E49\u5C5E\u6027**\u540E\u8005\u6052\u80DC**\uFF0C\n \u54EA\u6015\u5B83\u7684\u503C\u5728\u5BBF\u4E3B\u91CC\u7B97\u4E0D\u51FA\u6765\uFF08static \u53D8\u91CF invalid\uFF09\u21D2 \u6574\u6761 token \u4F5C\u5E9F\u3001rgba \u515C\u5E95\u4E00\u8D77\u88AB\u5E9F\uFF0C\n 0.2.6 \u91CC Segmented \u8F68\u9053\u5168\u900F\u660E\u5C31\u662F\u8FD9\u4E48\u6765\u7684\u3002\u8981\u8DDF\u5BBF\u4E3B\u4E3B\u9898\u8054\u52A8\u7684\u9762\u7528 alias token\uFF08\u90A3\u4E9B\u5B9E\u6D4B\u6709\u6548\uFF09\u3002 */\n --dshpc-icon-plate:rgba(255,255,255,.5);\n /* \u8868\u5934\u5E95\uFF1A\u6D45\u8272\u4E3B\u9898**\u504F\u6DF1**\uFF0C\u4E14\u5FC5\u987B**\u6BD4\u6591\u9A6C\u7EB9\uFF08--dshpc-plate\uFF09\u518D\u6DF1\u4E00\u6863**\u2014\u2014\n \u4E24\u8005\u4E0D\u80FD\u649E\u8272\uFF08\u7528\u6237 2026-10-02\uFF1A\u8868\u5934\u8DDF\u6591\u9A6C\u7EB9\u4E00\u6A21\u4E00\u6837\uFF09\u3002 */\n --dshpc-head-bg:var(--dsw-static-neutral-100,#f5f5f5);\n /* \u8868\u683C\u5E95 / \u884C hover\uFF082026-10-30 \u7528\u6237\u4E8C\u6B21\u5B9A\u6848\uFF1A\u8868\u5934\u4E0E\u901A\u680F**\u4E92\u6362**\u5E95\u8272\uFF09\uFF1A\n \u8868\u5934\u9ED8\u8BA4\u5E95 = \u901A\u680F\u539F\u6765\u90A3\u5C42\u7070\uFF08--dshpc-surface-sunken\uFF0C\u8DDF\u7740\u5BBF\u4E3B\u4EA4\u4E92\u9762\u8D70\uFF09\uFF1B\n \u901A\u680F\u9ED8\u8BA4\u5E95 = \u8868\u5934\u539F\u6765\u90A3\u8272\uFF08\u4EAE #f6f8fa / \u6697 #151b23\uFF0C\u53C2\u8003\u56FE\u5B9E\u6D4B\uFF0C\u4E0E\u6DF1\u8272\u6BB5\u540C\u6E90\uFF09\uFF1B\n \u884C hover \u662F\u300C\u4E00\u5C42\u6781\u6DE1\u7684\u9ED1\u300D\u22481.5%\uFF08\u7528\u6237\uFF1A\u518D\u6D45\u4E00\u534A\uFF0C\u8981\u7279\u522B\u6DE1\uFF09\u3002 */\n --dshpc-table-head-bg:var(--dshpc-surface-sunken);\n --dshpc-table-banner-bg:#f6f8fa;\n --dshpc-table-row-hover:rgba(15,15,15,.015);\n /* \u56FE\u6807\u5C0F\u5E95\u677F\uFF08\u4EA7\u51FA\u7269\uFF09\uFF1A\u6D45\u8272\u4E0B\u8981**\u770B\u5F97\u89C1**\uFF08\u539F\u5148\u53D6 plate \u21D2 \u5728\u767D\u5E95\u4E0A\u7B49\u4E8E\u6CA1\u6709\uFF09\uFF1Bhover \u52A0\u500D\u3002 */\n --dshpc-chip-bg:rgba(15,15,15,.07);\n --dshpc-chip-bg-hover:rgba(15,15,15,.14);\n /* \u5C55\u5F00\u884C\uFF1A**\u5E26\u900F\u660E\u5EA6\u7684\u84DD**\u2014\u2014\u4E0D\u662F\u7070\u3001\u4E5F\u4E0D\u662F\u7EAF\u8272\uFF0C\u900F\u51FA\u5361\u7247\u5E95\u8272\uFF0C\u4E00\u773C\u770B\u51FA\u300C\u8FD9\u662F\u5C55\u5F00\u7684\u300D\n \uFF08\u7528\u6237 2026-10-02\uFF1A\u7070\u8272\u8DDF\u6591\u9A6C\u7EB9\u5206\u4E0D\u51FA\u6765\uFF09\u3002\u5185\u5BB9\u533A\u518D\u6DE1\u4E00\u6863\uFF0C\u5F62\u6210\u300C\u884C\u6DF1 / \u5185\u5BB9\u6D45\u300D\u7684\u533A\u9694\u3002 */\n --dshpc-open-bg:rgba(37,99,235,.10);\n --dshpc-open-bg-soft:rgba(37,99,235,.05);\n --dshpc-card-hover:rgba(37,99,235,.07);\n\n /* \u2500\u2500 \u63CF\u8FB9\u56DB\u6863\uFF08\u5BBF\u4E3B\u771F\u503C\uFF1Al1 4% / l2 10% / l3 12% / l4 16%\uFF09\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n --dshpc-border-faint:var(--dsw-alias-border-l1,#0000000a);\n --dshpc-border:var(--dsw-alias-border-l2,#0000001a);\n --dshpc-border-strong:var(--dsw-alias-border-l3,#0000001f);\n --dshpc-border-heavy:var(--dsw-alias-border-l4,#00000029);\n\n /* \u2500\u2500 \u54C1\u724C / \u8BED\u4E49\u8272 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n /* \u54C1\u724C\u300C\u9762\u300D\u8272\uFF1A\u660E\u8272\u8FD1\u9ED1\u3001\u6697\u8272\u8FD1\u767D\uFF08\u5B98\u65B9 Switch \u9009\u4E2D\u6001\u5373\u6B64\uFF09\uFF0C**\u4E0D\u662F\u84DD\u8272** */\n --dshpc-accent:var(--dsw-alias-brand-primary,#0f1115);\n /* \u84DD\u8272\uFF1A\u5F3A\u8C03 / \u9009\u4E2D / \u7126\u70B9\uFF0C\u4E00\u5F8B\u8D70\u8FD9\u6761 */\n --dshpc-business:var(--dsw-alias-state-business-primary,#3b5bdb);\n --dshpc-success:var(--dsw-alias-state-success-primary,#22c55e);\n /* \u26A0\uFE0F \u662F state-warn\uFF08\u4E0D\u662F state-warning\uFF0C\u540E\u8005\u5BBF\u4E3B\u65E0\u6B64\u5B9A\u4E49\uFF09 */\n --dshpc-warning:var(--dsw-alias-state-warn-primary,#f59e0b);\n --dshpc-danger:var(--dsw-alias-state-error-primary,#ec1313);\n --dshpc-link:var(--dsw-alias-link,#3b5bdb);\n /* \u8BED\u4E49\u8272**\u5B9E\u9762**\u4E0A\u7684\u5B57\uFF08\u89D2\u6807 / \u5B9E\u5FC3\u63D0\u793A\uFF09\uFF1A\u5BBF\u4E3B\u7EA2\u7EFF\u9EC4\u4E09\u8272\u90FD\u662F\u4E2D\u8C03 \u21D2 \u767D\u5B57\u4E24\u4E2A\u4E3B\u9898\u90FD\u53EF\u8BFB\uFF0C\n \u6545\u8FD9\u662F\u4E00\u6761\u4E0E\u4E3B\u9898\u65E0\u5173\u7684\u5E38\u91CF\uFF1B\u4E0D\u8981\u62FF --dshpc-fg-inverse \u9876\u2014\u2014\u5B83\u5728\u6697\u8272\u4E0B\u662F\u8FD1\u9ED1\uFF0C\u538B\u5728\u7EA2\u5E95\u4E0A\u770B\u4E0D\u6E05\u3002 */\n --dshpc-on-signal:#fff;\n /* \u9EC4\u5E95\u4E0A\u7684\u5B57\uFF1A\u9EC4\u8272\u662F\u4E2D\u9AD8\u660E\u5EA6\uFF0C\u767D\u5B57\u770B\u4E0D\u6E05 \u21D2 \u56FA\u5B9A\u6DF1\u8272\uFF08\u4E0E\u4E3B\u9898\u65E0\u5173\uFF09\u3002 */\n --dshpc-on-warning:#1f2328;\n /* \u544A\u8B66\u4E25\u91CD\u5EA6\u7684\u5706\u70B9\u5E95\u8272\uFF082026-11-03 \u4ECE feedback.css \u6536\u5230\u8FD9\u91CC\uFF09\u3002\n \u4E0E\u4E3B\u9898\u65E0\u5173\u7684\u4E00\u7EC4\u5E38\u91CF\uFF1A\u8FD9\u51E0\u4E2A\u8272\u8981\u5728\u4EFB\u610F\u5E95\u8272\u4E0A\u90FD\u8BA4\u5F97\u51FA\u6765\uFF0C\u6240\u4EE5**\u4E0D\u8DDF\u5BBF\u4E3B state \u8272\u8D70**\n \uFF08\u5BBF\u4E3B state-warn-primary \u504F\u4EAE\uFF0C\u538B\u767D \u2715 \u770B\u4E0D\u6E05\uFF09\u3002\u8BED\u4E49\u8272\u6539\u52A8\u8BF7\u53EA\u6539\u8FD9\u91CC\u3002 */\n --dshpc-sev-info:#2563eb;\n --dshpc-sev-success:#16a34a;\n --dshpc-sev-warning:#d97706;\n --dshpc-sev-error:#dc2626;\n\n /* \u2500\u2500 \u5B9E\u5FC3\u6309\u94AE\u7684 hover / active \u6D3E\u751F\u6001\uFF082026-10-19 \u7528\u6237\u70B9\u540D\uFF09\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n \u539F\u5B9E\u73B0\u662F :hover \u76F4\u63A5\u538B opacity .9\uFF1A\u9ED1\u5E95\u538B 10% \u51E0\u4E4E\u770B\u4E0D\u51FA\u6765\uFF0C\u7528\u6237\u539F\u8BDD\u300C\u5B8C\u5168\u611F\u89C9\u4E0D\u5230\u989C\u8272\u53D8\u4E86\u300D\u3002\n \u21D2 \u6539\u6210\u5BF9\u5E95\u8272\u505A**\u660E\u786E\u7684\u6DF7\u8272**\uFF08\u538B 22% / 34%\uFF09\uFF0C\u4E0D\u7528 opacity\uFF1A\n \u00B7 \u4EAE\u8272\u4E3B\u9898\uFF1A\u9ED1\u5E95\uFF08--dshpc-accent\uFF09\u63BA\u767D\u63D0\u4EAE\uFF1B\u7EA2 / \u7EFF / \u9EC4 / \u84DD\u5E95\u63BA\u9ED1\u538B\u6DF1\uFF1B\n \u00B7 \u6697\u8272\u4E3B\u9898\uFF1A\u53CD\u8FC7\u6765\uFF08\u6697\u5E95\u63BA\u767D\u3001\u4EAE\u5E95\u63BA\u9ED1\uFF09\u3002\n \u6DF7\u8272\u5BF9\u8C61\u662F**\u56FA\u5B9A\u4E2D\u6027\u8272\u5B57\u9762\u91CF**\uFF08#fff / #000\uFF09\uFF0C\u4E0D\u4F9D\u8D56\u5BBF\u4E3B static-neutral \u662F\u5426\u5B58\u5728\uFF1B\n \u65E7\u5185\u6838\u4E0D\u8BA4 color-mix \u65F6\u6574\u6761\u58F0\u660E\u4F5C\u5E9F \u21D2 \u56DE\u843D\u5404\u6863\u539F\u8272\uFF08\u53EF\u63A5\u53D7\uFF1A\u4ECD\u53EF\u70B9\uFF0C\u53EA\u662F\u6CA1\u6709 hover \u53CD\u9988\uFF09\u3002 */\n --dshpc-accent-hover:color-mix(in srgb,var(--dshpc-accent) 78%,#ffffff);\n --dshpc-accent-active:color-mix(in srgb,var(--dshpc-accent) 64%,#ffffff);\n --dshpc-danger-hover:color-mix(in srgb,var(--dshpc-danger) 78%,#000000);\n --dshpc-danger-active:color-mix(in srgb,var(--dshpc-danger) 64%,#000000);\n --dshpc-success-hover:color-mix(in srgb,var(--dshpc-success) 78%,#000000);\n --dshpc-success-active:color-mix(in srgb,var(--dshpc-success) 64%,#000000);\n --dshpc-warning-hover:color-mix(in srgb,var(--dshpc-warning) 78%,#000000);\n --dshpc-warning-active:color-mix(in srgb,var(--dshpc-warning) 64%,#000000);\n --dshpc-business-hover:color-mix(in srgb,var(--dshpc-business) 78%,#000000);\n --dshpc-business-active:color-mix(in srgb,var(--dshpc-business) 64%,#000000);\n /* \u8BED\u4E49\u8272**\u6D45\u5E95**\uFF1A\u72B6\u6001\u8272\u7CFB\u7684\u300C\u4E00\u5757\u5E95\u8272\u300D\u2014\u2014\u6267\u884C\u8BB0\u5F55\u9875\u6BCF\u6761\u6D41\u6C34\u8D26\u7684\u5757\u5E95\u5C31\u662F\u5B83\n \uFF08\u7528\u6237 2026-10-04\uFF1A\u6B63\u5E38\u6001\u7ED9\u540C\u8272\u7CFB\u5F88\u6D45\u7684\u900F\u660E\u5E95\u3001\u5931\u8D25\u7528\u7EA2\u5E95\u900F\u51FA\u6765\uFF09\u3002\n \u7528 \u300Ccolor-mix\u300D \u73B0\u7B97\u800C\u4E0D\u5199\u6B7B rgba\uFF1A\u72B6\u6001\u8272\u672C\u8EAB\u8DDF\u968F\u5BBF\u4E3B alias\uFF0C\u4E3B\u9898\u4E00\u6362\u81EA\u52A8\u6210\u7ACB\u3002\n \u26A0\uFE0F **\u6DF1\u8272\u4E0B\u8981\u66F4\u6DE1**\uFF1A\u7528\u6237 2026-10-04\u300C\u6DF1\u8272\u98CE\u683C\u7684\u7EFF\u8272\u548C\u7EA2\u8272\u597D\u50CF\u90FD\u6709\u70B9\u6DF1\u300D\u21D2 dark \u6BB5\n \u628A\u8FD9\u56DB\u6761\u538B\u5230 5%\uFF08\u66F4\u8D34\u8FD1\u9762\u677F\u5E95\u3001\u5B58\u5728\u611F\u66F4\u5F31\uFF09\uFF1B\u6D45\u8272\u6BB5\u7EF4\u6301 8%\u3002\u4E24\u7AEF\u5404\u81EA\u7ED9\u503C\uFF0C\u4E0D\u5171\u7528\u4E00\u6761\u66F2\u7EBF\u3002\n \u547D\u540D\u6536\u5728 tokens.ts \u5355\u70B9\uFF08\u672C\u4ED3\u786C\u89C4\u77E9\uFF1A\u4E1A\u52A1\u6587\u4EF6\u4E0D\u8BB8\u81EA\u9020 --dshpc-*\uFF09\u3002 */\n --dshpc-success-soft:color-mix(in srgb,var(--dshpc-success) 8%,transparent);\n --dshpc-warning-soft:color-mix(in srgb,var(--dshpc-warning) 8%,transparent);\n --dshpc-danger-soft:color-mix(in srgb,var(--dshpc-danger) 8%,transparent);\n --dshpc-business-soft:color-mix(in srgb,var(--dshpc-business) 8%,transparent);\n\n /* \u2500\u2500 \u6269\u5C55\u8BED\u4E49\u8272\uFF082026-10-29 \u7528\u6237\u62CD\u677F\uFF1A\u5206\u7C7B / \u56FE\u8868\u5E38\u7528\u8272\u516B\u652F\uFF09\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n \u5BBF\u4E3B\u65E0\u5BF9\u5E94 alias \u21D2 \u5199\u6B7B hex\uFF08\u4E0D\u8DDF\u968F\u5BBF\u4E3B\u6362\u80A4\uFF09\uFF1B\u5B9E\u5FC3\u9762\u5B57\u8272\u7EDF\u4E00\u8D70 --dshpc-on-signal\uFF08\u767D\uFF09\uFF0C\n \u56E0\u516B\u652F\u660E\u5EA6\u90FD\u4F4E\u4E8E\u9EC4 / \u9752\u67E0\uFF0C\u767D\u5B57\u4E24\u4E3B\u9898\u5747 \u22654.5:1 \u53EF\u8BFB\u3002\u6BCF\u6761\u81EA\u5E26 hover/active/soft \u6D3E\u751F\uFF1B\n \u6697\u8272\u6BB5\u53EA\u8986\u76D6\u6D3E\u751F\uFF08base \u5199\u6B7B\u3001\u4E24\u4E3B\u9898\u540C\u503C\uFF09\u3002 */\n --dshpc-purple:#9333ea;\n --dshpc-purple-hover:color-mix(in srgb,var(--dshpc-purple) 78%,#000000);\n --dshpc-purple-active:color-mix(in srgb,var(--dshpc-purple) 64%,#000000);\n --dshpc-purple-soft:color-mix(in srgb,var(--dshpc-purple) 8%,transparent);\n --dshpc-pink:#db2777;\n --dshpc-pink-hover:color-mix(in srgb,var(--dshpc-pink) 78%,#000000);\n --dshpc-pink-active:color-mix(in srgb,var(--dshpc-pink) 64%,#000000);\n --dshpc-pink-soft:color-mix(in srgb,var(--dshpc-pink) 8%,transparent);\n --dshpc-cyan:#0e7490;\n --dshpc-cyan-hover:color-mix(in srgb,var(--dshpc-cyan) 78%,#000000);\n --dshpc-cyan-active:color-mix(in srgb,var(--dshpc-cyan) 64%,#000000);\n --dshpc-cyan-soft:color-mix(in srgb,var(--dshpc-cyan) 8%,transparent);\n --dshpc-teal:#0f766e;\n --dshpc-teal-hover:color-mix(in srgb,var(--dshpc-teal) 78%,#000000);\n --dshpc-teal-active:color-mix(in srgb,var(--dshpc-teal) 64%,#000000);\n --dshpc-teal-soft:color-mix(in srgb,var(--dshpc-teal) 8%,transparent);\n --dshpc-orange:#c2410c;\n --dshpc-orange-hover:color-mix(in srgb,var(--dshpc-orange) 78%,#000000);\n --dshpc-orange-active:color-mix(in srgb,var(--dshpc-orange) 64%,#000000);\n --dshpc-orange-soft:color-mix(in srgb,var(--dshpc-orange) 8%,transparent);\n --dshpc-indigo:#4f46e5;\n --dshpc-indigo-hover:color-mix(in srgb,var(--dshpc-indigo) 78%,#000000);\n --dshpc-indigo-active:color-mix(in srgb,var(--dshpc-indigo) 64%,#000000);\n --dshpc-indigo-soft:color-mix(in srgb,var(--dshpc-indigo) 8%,transparent);\n --dshpc-rose:#e11d48;\n --dshpc-rose-hover:color-mix(in srgb,var(--dshpc-rose) 78%,#000000);\n --dshpc-rose-active:color-mix(in srgb,var(--dshpc-rose) 64%,#000000);\n --dshpc-rose-soft:color-mix(in srgb,var(--dshpc-rose) 8%,transparent);\n --dshpc-slate:#475569;\n --dshpc-slate-hover:color-mix(in srgb,var(--dshpc-slate) 78%,#000000);\n --dshpc-slate-active:color-mix(in srgb,var(--dshpc-slate) 64%,#000000);\n --dshpc-slate-soft:color-mix(in srgb,var(--dshpc-slate) 8%,transparent);\n\n /* \u26A0\uFE0F 2026-10-18 \u7528\u6237\u62CD\u677F\uFF1A\u5BBF\u4E3B alias \u7684 hover\uFF08\u6697\u8272\u767D 8% / \u4EAE\u8272 6%\uFF09**\u592A\u5F31**\uFF0C\n \u300C\u79FB\u4E0A\u53BB\u8981\u4ED4\u7EC6\u770B\u624D\u770B\u5F97\u51FA\u6765\u300D\u21D2 \u4E0D\u518D\u59D4\u6258\u5BBF\u4E3B hover \u522B\u540D\uFF0C\u6539\u4E3A\u81EA\u63BA\u4E2D\u6027\u8272\u5E76\u52A0\u91CD\uFF1A\n \u4EAE\u8272\u63BA\u9ED1 10%\u3001\u6697\u8272\u63BA\u767D 14%\uFF08active \u518D\u52A0\u4E00\u6863\uFF09\u3002\u6309\u94AE / \u5206\u6BB5\u8F68\u9053 / \u5404\u7C7B hover \u5E95\u540C\u65F6\u53D7\u76CA\u3002\n \u26A0\uFE0F \u5FC5\u987B\u4FDD\u7559 rgba \u515C\u5E95\u884C\u5728\u524D\uFF08\u672C\u6587\u4EF6\u60EF\u4F8B\uFF0C\u89C1 icon-plate \u6CE8\u91CA\uFF09\uFF1A\u63BA\u7684\u662F**\u56FA\u5B9A\u4E2D\u6027\u8272**\n \uFF08neutral-900=#0f0f0f / neutral-00=#fff\uFF09\uFF0C\u9884\u8BA1\u7B97\u65E0\u635F\uFF1B\u65E7\u5185\u6838\u4E0D\u8BA4 color-mix \u65F6\u8D70\u515C\u5E95\uFF0C\n \u5426\u5219\u6574\u6761 background:var(--seg-track) \u4F5C\u5E9F \u21D2 \u5206\u6BB5\u8F68\u9053\u900F\u660E\uFF08\u771F\u8E29\u8FC7\uFF1A\u9884\u89C8\u7AD9\u8F68\u9053\u6D88\u5931\uFF09\u3002 */\n --dshpc-hover:rgba(15,15,15,.10);\n --dshpc-active:rgba(15,15,15,.18);\n /* \u5206\u6BB5\u63A7\u4EF6\u8F68\u9053\u5E95\uFF1A\u4E13\u7528 token\uFF08rgba \u5B57\u9762\u91CF\u3001\u4E0D\u501F --dshpc-hover \u4E2D\u8F6C\uFF09\u2014\u2014\n 2026-10-19 \u6559\u8BAD\uFF1A\u53D8\u91CF\u94FE\u4E2D\u95F4\u4EFB\u4F55\u4E00\u73AF invalid \u21D2 background \u6574\u6761\u4F5C\u5E9F\u3001\u8F68\u9053\u5168\u900F\u660E\u3002\n \u4EAE\u8272\uFF1A\u9ED1 7%\uFF08\u6BD4 hover \u7684 10% \u6DE1\u4E00\u6863\uFF0C\u9009\u4E2D\u767D\u7247\u624D\u8DF3\u5F97\u51FA\uFF09\u3002 */\n --dshpc-seg-track:rgba(15,15,15,.07);\n --dshpc-mask:var(--dsw-alias-bg-mask-1,#0000003d);\n /* \u5F39\u7A97\u9501\u5B9A\u6001\u7ED9**\u81EA\u7ED8\u63A7\u4EF6**\u7684\u964D\u900F\u660E\u5EA6\u6863\uFF082026-11-05\uFF09\u3002\u653E\u5728 token \u91CC\u662F\u4E3A\u4E86\u8BA9\u6D88\u8D39\u65B9\n \u5728\u81EA\u5DF1\u5143\u7D20\u4E0A\u5199 --dshpc-lock-dim: 1 \u5C31\u80FD\u9000\u51FA\u8FD9\u6761\u6548\u679C\uFF0C\u4E0D\u7528 !important \u6253\u67B6\u3002 */\n --dshpc-lock-dim:.5;\n /* \u300C\u9009\u4E2D\u9762\u300D\uFF082026-10-06\uFF0C\u4EFB\u52A1\u65E5\u7A0B\u9875\u9996\u521B\uFF09= \u5F53\u524D\u5E95\u8272**\u671D\u66F4\u6DF1\u63BA 12% \u6587\u5B57\u8272**\uFF1A\n \u6D45\u8272\u4E3B\u9898\u4E0B\u6587\u5B57\u8272\u662F\u9ED1 \u21D2 \u9009\u4E2D\u9762\u6BD4\u5E38\u6001\u5E95\u8272**\u6DF1\u4E00\u6863**\u3002\u6DF1\u8272\u5206\u652F\u89C1 body[data-ds-dark-theme]\uFF08\u671D\u80CC\u666F\u8272\u63BA\uFF09\u3002\n \u8BED\u4E49\uFF1A\u6807\u8BB0\u300C\u6B63\u5728\u770B\u7684\u4E1C\u897F\u300D\uFF0C\u6BD4\u5E38\u6001\u660E\u663E\u3001\u53C8\u4E0D\u8BB8\u76D6\u4F4F\u5185\u5BB9\uFF08\u4E0D\u8BB8\u7528\u534A\u900F\u660E\u53E0\u72B6\u6001\u8272\uFF09\u3002 */\n --dshpc-selected-bg:color-mix(in srgb,var(--dshpc-surface-1) 88%,var(--dshpc-fg));\n /* ListRow \u9009\u4E2D\u9762\uFF082026-11-07 \u7528\u6237\u5B9A\uFF09\uFF1Aslate \u7684**\u6781\u6D45\u84DD\u7070**\uFF0C\u4E0D\u7528\u4E0A\u9762\u90A3\u6761\u901A\u7528\u300C\u9009\u4E2D\u9762\u300D\u3002\n \u901A\u7528\u503C\u4EAE\u8272\u662F\u63BA\u6587\u5B57\u8272\u7684\u4E2D\u6027\u7070\u3001\u6697\u8272\u662F\u4E24\u4E2A\u6DF1\u8272\u9762\u4E92\u63BA \u21D2 \u6DF1\u8272\u4E0B\u9009\u4E2D\u884C\u53D1\u9ED1\uFF08\u7528\u6237\u5B9E\u6D4B\uFF09\u3002\n \u8FD9\u91CC\u4ECE --dshpc-slate \u6D3E\u751F\u534A\u900F\u660E\u6D45\u8272\uFF1A\u4EAE\u8272 14% \u53E0\u767D \u2248 #e5e7ea\uFF0C\u6BD4\u5E38\u6001 tone-sunken\n \u6DF1\u4E00\u6863\u624D\u770B\u5F97\u51FA\u300C\u9009\u4E2D\u300D\uFF1B\u6697\u8272\u6D53\u5EA6\u89C1 body[data-ds-dark-theme] \u6BB5\u3002 */\n --dshpc-listrow-selected-bg:color-mix(in srgb,var(--dshpc-slate) 14%,transparent);\n /* ListRow hover\uFF082026-11-07 \u7528\u6237\uFF1A\u539F\u6765\u53D6 --dshpc-active \u592A\u5938\u5F20\uFF0C\u300C\u6709\u4E00\u70B9\u53D8\u5316\u5C31\u884C\u300D\uFF09\uFF1A\n \u5E38\u6001 tone-sunken \u662F 6% \u84DD\u7070\u53E0\u767D \u2248 #f0f1f3\uFF0C\u8FD9\u91CC\u53EA\u52A0\u6DF1\u5230 9% \u4E2D\u6027\u9ED1 \u2248 #e8e8e8\uFF0C\n \u80FD\u770B\u51FA\u79FB\u4E0A\u53BB\u4E86\uFF0C\u53C8\u4E0D\u4F1A\u628A\u6574\u884C\u5185\u5BB9\u548C\u6587\u5B57\u5BF9\u6BD4\u5EA6\u4E00\u8D77\u6539\u6389\u3002\u6697\u8272\u6863\u89C1 body[data-ds-dark-theme]\u3002 */\n --dshpc-listrow-hover-bg:rgba(15,15,15,.09);\n /* \u4EFB\u52A1\u65E5\u7A0B\u9875\u672C\u6708\u683C\u9ED8\u8BA4\u5E95\uFF082026-10-06 \u2192 \u7EED2\uFF09\uFF1A\u6D45\u8272\u4E0B\u7ED9**\u6DE1\u84DD**\uFF08business 8% \u900F\u767D\u5E95\uFF09\u2014\u2014\n \u53C2\u7167\u7528\u6237\u53C2\u8003\u7A3F\u91CC\u672A\u9009\u4E2D\u65E5\u7A0B\u5757 / Tuesday \u5217\u7684\u90A3\u79CD\u84DD\u3001\u518D\u6D45\u4E00\u70B9\u70B9\uFF1B\n \u76F8\u90BB\u6708\u8865\u4F4D\u683C\u4ECD\u8D70 --dshpc-surface-2\uFF08\u66F4\u7070\uFF09\uFF0C\u4E0D\u53D7\u5F71\u54CD\u3002\n \u6DF1\u8272\u6BB5\u7EF4\u6301 #23262e\uFF08\u7528\u6237\uFF1A\u6DF1\u8272 UI \u5DF2\u5DEE\u4E0D\u591A\uFF0C\u4E0D\u52A8\uFF09\u3002 */\n --dshpc-cal-cell-bg:color-mix(in srgb,var(--dshpc-business) 8%,var(--dshpc-surface-1));\n /* \u4EFB\u52A1\u65E5\u7A0B\u9875\u300C\u70B9\u5F00\u67D0\u5929\u300D\u5C55\u5F00\u7684\u9762\u677F\u5E95\uFF082026-10-06 \u7EED\uFF09\uFF1A\u6D45\u8272\u4E0B**\u65E0\u9650\u63A5\u8FD1\u767D\u3001\u53EA\u5E26\u4E00\u4E01\u70B9\u7070**\n \uFF08neutral-50 = #fafafa\uFF09\u2014\u2014\u9762\u677F\u91CC\u88C5\u534A\u900F\u660E\u6267\u884C\u8BB0\u5F55\u5217\u8868\uFF0C\u5E95\u518D\u6DF1\u6574\u7247\u5C31\u53D1\u7CCA\u53D1\u7070\uFF1B\n \u6DF1\u8272\u6BB5\u6CBF\u7528\u539F selected-bg \u6697\u503C\uFF0C\u4FDD\u6301\u4E0D\u52A8\u3002 */\n --dshpc-cal-panel-bg:var(--dsw-static-neutral-50,#fafafa);\n /* \u4EFB\u52A1\u65E5\u7A0B\u9875\u672C\u6708\u683C hover \u5E95\uFF08\u6D45\u8272\u6BB5\uFF0C2026-10-06 \u7EED3\uFF09\uFF1A\u4E0D\u518D\u8D70\u7070\u8272\u901A\u7528\u4EA4\u4E92\u5E95\u2014\u2014\n \u9F20\u6807\u79FB\u4E0A\u53BB\u5E94\u662F\u300C\u66F4\u4EAE\u4E00\u70B9\u70B9\u7684\u84DD\u300D\uFF08\u4E0E\u6DF1\u8272\u6BB5\u540C\u8BED\u4E49\uFF1Ahover = \u63D0\u4EAE\u7684\u84DD\uFF0C\u4E0D\u662F\u7070\u4E0B\u53BB\uFF09\u3002\n \u6D53\u5EA6**\u4ECB\u4E8E**\u8868\u5934\u84DD\uFF0814%\uFF09\u4E0E\u672A\u9009\u4E2D\u683C\u84DD\uFF088%\uFF09\u4E4B\u95F4\u3001\u7565\u504F\u8868\u5934\u4E00\u4FA7\uFF1Abusiness 12% \u900F\u767D\u5E95\n \uFF08\u6BD4\u8868\u5934\u6D45\u4E00\u70B9\u3001\u6BD4\u672A\u9009\u4E2D\u683C\u6DF1\u4E00\u70B9\uFF09\u3002 */\n --dshpc-cal-cell-hover:color-mix(in srgb,var(--dshpc-business) 12%,var(--dshpc-surface-1));\n\n /* \u2500\u2500 \u6295\u5F71 / \u7126\u70B9 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n --dshpc-shadow-1:var(--dsw-elevation-soft,0 4px 16px 0 #00000008);\n /* \u4EAE\u7247\u81EA\u5E26\u7684\u6D6E\u8D77\u611F\uFF08\u9009\u4E2D\u6001\u7528\uFF1B\u4E0E --dshpc-surface-raised \u914D\u5BF9\uFF09 */\n --dshpc-shadow-raised:var(--dsw-elevation-soft,0 4px 16px 0 #00000008);\n --dshpc-shadow-2:var(--dsw-shadow-lv3,0 12px 32px 0 #00000014);\n /* \u952E\u76D8\u7126\u70B9\u73AF\u3002\u26A0\uFE0F \u4E0D\u7528\u5BBF\u4E3B --dsw-focus-ring-color\uFF1A\u5B83\u9ED8\u8BA4\u503C\u662F transparent\uFF08\u515C\u5E95\u4E0D\u751F\u6548\u3001\u4F1A\u9690\u8EAB\uFF09 */\n --dshpc-focus:var(--dsw-alias-state-business-primary,#3b5bdb);\n\n /* \u2500\u2500 \u5706\u89D2\uFF08\u5BBF\u4E3B\u771F\u503C 4 / 8 / 12 / 16 / 20 / 28\uFF09\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n --dshpc-radius-xs:var(--dsw-radius-xs,4px);\n --dshpc-radius-sm:var(--dsw-radius-sm,8px);\n --dshpc-radius-md:var(--dsw-radius-md,12px);\n --dshpc-radius-lg:var(--dsw-radius-lg,16px);\n --dshpc-radius-xl:var(--dsw-radius-xl,20px);\n --dshpc-radius-panel:var(--dsw-radius-panel,28px);\n /* \u5168\u5706\uFF08\u80F6\u56CA\u6807\u7B7E\uFF09\uFF1A\u5BBF\u4E3B\u7684 radius \u6863\u6700\u5927\u53EA\u6709 28px\uFF0C\u6491\u4E0D\u6EE1 24px \u9AD8\u7684 chip */\n --dshpc-radius-pill:999px;\n\n /* \u2500\u2500 \u95F4\u8DDD\u56DB\u62CD\uFF08\u53EA\u8BB8\u7528\u8FD9\u56DB\u6863\uFF0C\u4E0D\u8BB8\u51FA\u73B0 5 / 7 / 9px\uFF09\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n --dshpc-space-1:4px;\n --dshpc-space-2:8px;\n --dshpc-space-3:12px;\n --dshpc-space-4:16px;\n\n /* \u2500\u2500 \u63A7\u4EF6\u9AD8\u5EA6\uFF1A\u79BB\u6563\u4E09\u6863\uFF08\u63A7\u4EF6\u7528 size=\"sm|md|lg\" \u9009\uFF1B\u8C03\u7528\u70B9\u4E0D\u8BB8\u81EA\u5B9A\u4E49\u9AD8\u5EA6\uFF0C\n \u771F\u4E0D\u591F\u7528\u624D\u5141\u8BB8\u5728\u8C03\u7528\u70B9\u672C\u5730\u8986\u76D6 --dshpc-control-h-*\uFF0C\u5C5E\u4F8B\u5916\u800C\u975E\u5E38\u6001\uFF09\u2500\u2500 */\n --dshpc-control-h-sm:24px;\n --dshpc-control-h-md:28px;\n --dshpc-control-h-lg:32px;\n\n /* \u2500\u2500 \u5B57\u53F7 / \u884C\u9AD8\uFF1A\u76F4\u7ED1\u5BBF\u4E3B\u5B57\u53F7\u65CF\uFF08\u5BBF\u4E3B\u771F\u503C 11 / 12 / 13 / 14 / 16\uFF09\u2500\u2500\u2500\u2500\u2500 */\n --dshpc-font-xs:var(--dsw-font-xxxs-11-font-size,11px);\n --dshpc-font-sm:var(--dsw-font-xxs-12-font-size,12px);\n --dshpc-font-md:var(--dsw-font-xs-13-font-size,13px);\n --dshpc-font-lg:var(--dsw-font-s-14-font-size,14px);\n --dshpc-font-xl:var(--dsw-font-base-16-font-size,16px);\n --dshpc-line-xs:var(--dsw-font-xxxs-11-line-height,14px);\n --dshpc-line-sm:var(--dsw-font-xxs-12-line-height,18px);\n --dshpc-line-md:var(--dsw-font-xs-13-line-height,20px);\n --dshpc-line-lg:var(--dsw-font-s-14-line-height,22px);\n --dshpc-line-xl:var(--dsw-font-base-16-line-height,24px);\n --dshpc-font-mono:var(--ds-font-family-code,monospace);\n\n /* \u2500\u2500 \u7EC6\u6EDA\u52A8\u6761\u7684\u8BA9\u4F4D\u503C\uFF08\u7EBF\u5BBD\u4E0D\u80FD\u653E token\uFF0C\u89C1\u6587\u4EF6\u672B\u5C3E\u7684\u6CE8\u91CA\uFF09\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n 1px\u21922px \u53EA\u6539\u8FD9\u4E00\u884C\uFF1B\u5B83\u7528\u5728\u666E\u901A\u5143\u7D20\u4E0A\uFF0Cvar() \u80FD\u6B63\u5E38\u89E3\u6790\u3002 */\n --dshpc-scroll-inset:1px;\n\n /* \u2500\u2500 \u5C42\u7EA7\u9636\u68AF\uFF08\u4E1A\u52A1\u6587\u4EF6\u4E0D\u8BB8\u518D\u5199\u88F8 z-index\uFF09\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n /* \u9875\u9762\u7EA7\u9884\u89C8\u5206\u680F \u2192 \u62BD\u5C49\uFF08\u65B0\u5EFA/\u7F16\u8F91\uFF09\u2192 \u5F39\u7A97/\u786E\u8BA4\u6846 \u2192 \u6D6E\u5C42\u83DC\u5355 \u2192 \u6D6E\u5C42\u63D0\u793A */\n /* **\u6574\u6761\u9636\u68AF\u90FD\u5FC5\u987B\u4F4E\u4E8E\u5B98\u65B9\u6D6E\u70B9 1000 \u6863**\uFF082026-11-06 \u7528\u6237\u62CD\u677F\uFF09\uFF1A\u5B98\u65B9\u539F\u8BED\n Modal / ImageLightbox \u662F z-index 1000\uFF08body portal\uFF09\uFF0CMenu / Toast \u662F 1100\u3002\n \u6211\u4EEC\u53EA\u662F\u5BBF\u4E3B\u91CC\u7684\u4E00\u4E2A\u9875\u9762 \u21D2 \u5BBF\u4E3B\u6D6E\u70B9\u6052\u5728\u6211\u4EEC\u4E4B\u4E0A\uFF1B\u4EE5\u540E\u5F39\u7A97\u91CC\u518D\u5F00\u5B98\u65B9\u6A21\u6001/\u9884\u89C8\uFF0C\n \u4E0D\u5FC5\u9010\u4E2A\u573A\u666F\u300C\u4E34\u65F6\u8BA9\u4F4D\u300D\uFF08\u6B64\u524D 1070 \u538B\u4F4F\u5B98\u65B9\u539F\u56FE\u9884\u89C8\u5C31\u662F\u8FD9\u4E48\u8E29\u51FA\u6765\u7684\uFF09\u3002 */\n /* \u5185\u5BB9\u5C42\u5438\u9876\uFF08\u5929\u6807\u7B7E / \u8868\u5934\u8FD9\u7C7B\u300C\u8DDF\u7740\u6EDA\u4F46\u538B\u4F4F\u540C\u5C42\u5185\u5BB9\u300D\u7684\u5143\u7D20\uFF09\uFF1A\u53EA\u538B\u540C\u5C42\u5144\u5F1F\uFF0C\n \u5FC5\u987B\u4F4E\u4E8E\u4E0B\u9762\u6240\u6709\u6D6E\u5C42\u6863 \u2014\u2014 \u6240\u4EE5\u5B83\u4E0D\u662F\u300C\u5F00\u65B0\u6D6E\u5C42\u6863\u300D\uFF0C\u800C\u662F\u5185\u5BB9\u5C42\u5185\u90E8\u7684\u6392\u5E8F\u4F4D\u3002 */\n --dshpc-z-sticky:10;\n --dshpc-z-dock:900;\n --dshpc-z-drawer:920;\n --dshpc-z-modal:940;\n /* \u6536\u8D77\u540E\u7684\u8033\u6735\uFF1A\u5FC5\u987B\u9AD8\u4E8E\u5F39\u7A97\u906E\u7F69\uFF0C\u5426\u5219\u5F39\u7A97\u4E00\u5F00\u5C31\u70B9\u4E0D\u5230\u5B83\uFF082026-11-04 \u7528\u6237\u771F\u673A\uFF09\u3002\n \u53EA\u7ED9\u8033\u6735\u7528\uFF0C\u9875\u9762\u7EA7\u5206\u680F\u672C\u4F53\u4ECD\u662F\u5E03\u5C40\u6210\u5458\uFF0C\u4E0D\u8DDF\u7740\u62AC\u9AD8\u3002 */\n --dshpc-z-ear:950;\n --dshpc-z-menu:960;\n --dshpc-z-tip:970;\n /* \u8BED\u4E49\u522B\u540D\uFF082026-11-03 \u9762\u677F\u76AE\u80A4\u7EDF\u4E00\uFF09\uFF1A\u4E1A\u52A1\u6587\u4EF6\u53EA\u8BB8\u7528\u8FD9\u4E24\u4E2A\u8BF4\u300C\u6211\u8981\u4E00\u5C42\u6D6E\u5C42\u300D\uFF0C\n \u4E0D\u518D\u5404\u81EA\u5199\u6D6E\u5C42\u5B57\u9762\u91CF\u3002\n panel = \u6D6E\u5C42\u9762\u677F\u672C\u4F53\uFF08picker \u5F39\u7A97\u3001\u951A\u5B9A\u9762\u677F\uFF09\uFF1B\n popmenu = \u53E0\u5728\u9762\u677F\u4E4B\u4E0A\u7684\u83DC\u5355\uFF08\u25BE \u9009\u5C42\u3001Picker \u4E0B\u62C9\uFF09\u4E0E\u5176\u900F\u660E\u906E\u7F69\u3002 */\n --dshpc-z-panel:var(--dshpc-z-menu);\n --dshpc-z-popmenu:var(--dshpc-z-tip);\n\n /* \u2500\u2500 \u52A8\u6548 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n --dshpc-dur:var(--ds-transition-duration,.2s);\n --dshpc-dur-fast:var(--ds-transition-duration-fast,.12s);\n --dshpc-ease:var(--ds-ease-in-out,cubic-bezier(.4,0,.2,1));\n /* \u8FD0\u884C\u4E2D\u72B6\u6001\u7684\u8109\u52A8\u65F6\u957F\uFF082026-10-06 \u7EDF\u4E00\u524D\u540E\u4E24\u7AEF\uFF1A\u4EFB\u52A1\u914D\u7F6E\u91CC\u7684\u7EFF\u547C\u5438 \u2192 \u84DD\u3001\u653E\u6162\uFF1B\n \u6267\u884C\u8BB0\u5F55\u91CC\u7684\u84DD\u95EA \u2192 \u653E\u6162\u4E00\u70B9\u3002\u4E24\u8005\u7528\u540C\u4E00\u4E2A\u503C\uFF0C\u52A8\u753B\u5F62\u72B6\u672C\u5C31\u4E00\u81F4\uFF09\u3002 */\n --dshpc-dur-run:500ms;\n}\n\n/* \u2500\u2500 \u660E\u6697\u5DEE\u5F02\u7684**\u552F\u4E00**\u843D\u70B9 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n \u5224\u636E = body[data-ds-dark-theme]\uFF08\u5BBF\u4E3B 0.2.0-rc.2 \u6E90\u7801\u6838\u5B9E\uFF1A\u542F\u52A8\u811A\u672C toggleAttribute \u5199\u5165\uFF0C\n \u552F\u4E00\u660E\u6697\u5224\u636E\uFF1B\u63D2\u4EF6\u7981\u6B62\u7528 prefers-color-scheme \u2014\u2014 \u5B83\u8DDF\u7684\u662F\u7CFB\u7EDF\u3001\u4E0D\u662F\u7528\u6237\u5728\u5BBF\u4E3B\u91CC\u7684\u9009\u62E9\uFF09\u3002\n \u4E0B\u9762\u53EA\u653E alias \u8868\u8FBE\u4E0D\u4E86\u7684\u300C\u56FA\u5B9A\u4E2D\u6027\u9762\u300D\uFF1B\u989C\u8272\u82E5\u80FD\u9760 alias \u81EA\u52A8\u8DDF\u968F\uFF0C\u4E00\u5F8B\u4E0D\u8981\u5199\u5728\u8FD9\u91CC\u3002 */\nbody[data-ds-dark-theme]{\n /* \u6DF1\u8272\u6BB5\u7684\u84DD**\u523B\u610F\u4E0D\u8DDF\u968F\u5BBF\u4E3B alias**\uFF08\u552F\u4E00\u4F8B\u5916\uFF09\uFF1A\u5BBF\u4E3B\u6697\u8272 alias \u7ED9\u7684\u662F #60a5fa \u4E00\u6863\u7684\u9AD8\u4EAE\u84DD\uFF0C\n \u5B9E\u5FC3\u9762\uFF08Chip / Button info / \u65E5\u671F\u9009\u4E2D\u683C\uFF09\u538B\u767D\u5B57\u4F1A\u53D1\u7CCA \u2014\u2014 \u7528\u6237 2026-10-29 \u5B9E\u6D4B\u53CD\u9988\u3002\n \u21D2 \u6DF1\u8272\u4E0B\u6539\u5B9A\u5411\u6D45\u8272\u72B6\u6001\u7684\u84DD\uFF08#3b5bdb\uFF09\u9760\uFF0C\u53EA\u5728\u660E\u5EA6\u4E0A\u62AC\u4E00\u70B9\u70B9\uFF0C\u4FDD\u8BC1\u5B83\u5728\u6697\u5E95\u4E0A\u4ECD\u770B\u5F97\u89C1\uFF1A\n #4c6bd8 \u5BF9\u767D\u5B57 \u22484.8:1\uFF08\u539F\u4EAE\u84DD\u53EA\u6709 ~2.3:1\uFF09\uFF0C\u5BF9\u65E5\u5386\u683C\u5E95 \u22483.2:1 \u4ECD\u8FC7 UI \u4EF6\u7684 3:1 \u7EBF\u3002\n \u4EE3\u4EF7\uFF1A\u5BBF\u4E3B\u6362\u54C1\u724C\u8272\u65F6\u6DF1\u8272\u4E0D\u518D\u81EA\u52A8\u8DDF\u7740\u53D8\uFF0C\u9700\u8981\u8FD9\u91CC\u624B\u52A8\u540C\u6B65\u3002 */\n --dshpc-business:#4c6bd8;\n --dshpc-solid:var(--dsw-static-neutral-900,#0f0f0f);\n --dshpc-on-solid:var(--dsw-static-neutral-00,#fff);\n /* \u5B9E\u5FC3\u6309\u94AE hover / active\uFF08\u6697\u8272\u7248\uFF09\uFF1A\u9ED1\u5E95\uFF08\u6D45\u8272\u4E3B\u9898\u7684\u8FD1\u9ED1 \u2192 \u6697\u8272\u4E0B\u7684\u8FD1\u767D\uFF09\u63BA\u9ED1\u538B\u6DF1\uFF1B\n \u7EA2 / \u7EFF / \u9EC4 / \u84DD\u63BA\u767D\u63D0\u4EAE\u3002\u4E0E\u4EAE\u8272\u6BB5\u65B9\u5411\u76F8\u53CD\uFF0C\u4FDD\u8BC1\u4E24\u79CD\u4E3B\u9898\u4E0B\u300C\u4E00\u773C\u770B\u51FA\u53D8\u4E86\u300D\u3002 */\n --dshpc-accent-hover:color-mix(in srgb,var(--dshpc-accent) 80%,#000000);\n --dshpc-accent-active:color-mix(in srgb,var(--dshpc-accent) 66%,#000000);\n --dshpc-danger-hover:color-mix(in srgb,var(--dshpc-danger) 78%,#ffffff);\n --dshpc-danger-active:color-mix(in srgb,var(--dshpc-danger) 64%,#ffffff);\n --dshpc-success-hover:color-mix(in srgb,var(--dshpc-success) 78%,#ffffff);\n --dshpc-success-active:color-mix(in srgb,var(--dshpc-success) 64%,#ffffff);\n --dshpc-warning-hover:color-mix(in srgb,var(--dshpc-warning) 78%,#ffffff);\n --dshpc-warning-active:color-mix(in srgb,var(--dshpc-warning) 64%,#ffffff);\n /* \u540C\u4E0A\uFF1A\u63BA\u767D\u6BD4\u4F8B\u4ECE 22% / 36% \u6536\u5230 12% / 22% \u2014\u2014 \u5E95\u8272\u5DF2\u53D8\u6DF1\uFF0C\u7167\u65E7\u6BD4\u4F8B\u63D0\u4EAE\u4F1A\u5728 hover \u77AC\u95F4\n \u628A\u767D\u5B57\u5BF9\u6BD4\u6253\u56DE ~3:1\uFF08\u6B63\u662F\u7528\u6237\u5ACC\u7CCA\u7684\u90A3\u4E00\u6863\uFF09\uFF1B\u6536\u7A84\u540E hover \u4ECD\u53EF\u611F\u77E5\u3001\u5B57\u4ECD\u6E05\u6670\u3002 */\n --dshpc-business-hover:color-mix(in srgb,var(--dshpc-business) 88%,#ffffff);\n --dshpc-business-active:color-mix(in srgb,var(--dshpc-business) 78%,#ffffff);\n /* \u6697\u8272 hover \u63BA\u767D 14% / active 24%\uFF08\u5BF9\u9F50\u4E0A\u9762 2026-10-18 \u7684\u52A0\u91CD\u62CD\u677F\uFF09\u3002rgba \u515C\u5E95\u884C\u540C\u4E0A\u3002 */\n --dshpc-hover:rgba(255,255,255,.14);\n --dshpc-active:rgba(255,255,255,.24);\n /* \u5206\u6BB5\u8F68\u9053\uFF08\u6697\u8272\u7248\uFF09\uFF1A\u767D 10%\u2014\u2014\u6BD4 hover \u6DE1\u4E00\u6863\uFF0C\u9009\u4E2D\u4EAE\u7247\u624D\u8DF3\u5F97\u51FA\u3002 */\n --dshpc-seg-track:rgba(255,255,255,.10);\n --dshpc-plate:var(--dsw-static-neutral-850,#212123);\n --dshpc-plate-hover:var(--dsw-static-neutral-800,#292929);\n --dshpc-icon-plate:rgba(255,255,255,.05);\n /* \u6697\u8272\u4E3B\u9898**\u53CD\u8FC7\u6765**\uFF1A\u8868\u5934\u8981\u6BD4\u5361\u7247\u9762**\u4EAE**\u3001\u6BD4\u6591\u9A6C\u7EB9\u518D**\u6D45\u4E00\u6863**\uFF08\u7528\u6237\uFF1A\u7EAF\u9ED1\u80CC\u666F\u6CA1\u6CD5\u770B\uFF09\u3002 */\n --dshpc-head-bg:var(--dshpc-surface-2);\n /* \u8868\u683C\uFF082026-10-30 \u7528\u6237\u4E8C\u6B21\u5B9A\u6848\uFF1A\u4E0E\u901A\u680F\u4E92\u6362\u5E95\u8272\uFF09\uFF1A\u901A\u680F\u5E95\u53D6\u8868\u5934\u539F\u6765\u90A3\u8272 #151b23\n \uFF08\u4EAE\u8272\u6BB5\u5BF9\u5E94 #f6f8fa\uFF09\uFF1B\u8868\u5934\u9ED8\u8BA4\u5E95\u6CBF\u7528\u4EAE\u8272\u6BB5\u5B9A\u4E49\u7684 --dshpc-surface-sunken\uFF0C\u4E0D\u5728\u6697\u8272\u6BB5\u91CD\u5199\uFF1B\n \u884C hover \u662F\u300C\u4E00\u5C42\u6781\u6DE1\u7684\u767D\u300D\u22483% \u2014\u2014 \u6697\u5E95\u4E0A\u7528\u9ED1\u4F1A\u8D8A\u60AC\u8D8A\u6697\uFF0C\u770B\u4E0D\u51FA\u300C\u6D45\u7070\u300D\u53CD\u9988\u3002 */\n --dshpc-table-banner-bg:#151b23;\n --dshpc-table-row-hover:rgba(255,255,255,.03);\n /* \u6697\u8272\u5E95\u677F**\u5FAE\u4EAE**\uFF1Bhover **\u66F4\u4EAE**\uFF08\u539F\u5148 hover \u53D6 plate-hover \u53CD\u800C\u66F4\u6DE1 \u21D2 \u9F20\u6807\u79FB\u4E0A\u53BB\u5C31\u6CA1\u4E86\uFF09\u3002 */\n --dshpc-chip-bg:rgba(255,255,255,.08);\n --dshpc-chip-bg-hover:rgba(255,255,255,.16);\n /* \u6697\u8272\u4E0B\u84DD\u8272\u8981\u66F4\u4EAE\u3001\u900F\u660E\u5EA6\u7565\u9AD8\u624D\u538B\u5F97\u4F4F\u6DF1\u5E95\u3002 */\n --dshpc-open-bg:rgba(96,165,250,.18);\n --dshpc-open-bg-soft:rgba(96,165,250,.08);\n --dshpc-card-hover:rgba(96,165,250,.13);\n /* \u8BED\u4E49\u8272**\u6D45\u5E95**\uFF08\u6DF1\u8272\u7248\uFF09\uFF1A\u7528\u6237\u5ACC\u6DF1\u8272\u7684\u7EFF / \u7EA2\u300C\u6709\u70B9\u6DF1\u300D\u21D2 \u538B\u5230 **5%**\uFF08\u6D45\u8272\u6BB5\u662F 8%\uFF09\uFF0C\n \u66F4\u8D34\u8FD1\u9762\u677F\u5E95\u8272\u3001\u5B58\u5728\u611F\u66F4\u5F31\uFF1B\u5757\u5E95\u4E0E\u72B6\u6001\u8272\u7AD6\u6761\u4ECD\u540C\u6E90\uFF08\u7AD6\u6761\u662F\u5B9E\u8272\uFF0C\u4E0D\u53D7\u8FD9\u6761\u5F71\u54CD\uFF09\u3002 */\n --dshpc-success-soft:color-mix(in srgb,var(--dshpc-success) 5%,transparent);\n --dshpc-warning-soft:color-mix(in srgb,var(--dshpc-warning) 5%,transparent);\n --dshpc-danger-soft:color-mix(in srgb,var(--dshpc-danger) 5%,transparent);\n --dshpc-business-soft:color-mix(in srgb,var(--dshpc-business) 5%,transparent);\n /* \u6269\u5C55\u8272\u6DF1\u8272\u6D3E\u751F\uFF1A\u5E95\u8272\u5199\u6B7B\u3001hover \u63BA\u767D 12%/22%\uFF08\u540C business\uFF0C\u9632\u767D\u5B57\u53D1\u7CCA\uFF09\uFF0Csoft 5%\u3002 */\n --dshpc-purple-hover:color-mix(in srgb,var(--dshpc-purple) 88%,#ffffff);\n --dshpc-purple-active:color-mix(in srgb,var(--dshpc-purple) 78%,#ffffff);\n --dshpc-purple-soft:color-mix(in srgb,var(--dshpc-purple) 5%,transparent);\n --dshpc-pink-hover:color-mix(in srgb,var(--dshpc-pink) 88%,#ffffff);\n --dshpc-pink-active:color-mix(in srgb,var(--dshpc-pink) 78%,#ffffff);\n --dshpc-pink-soft:color-mix(in srgb,var(--dshpc-pink) 5%,transparent);\n --dshpc-cyan-hover:color-mix(in srgb,var(--dshpc-cyan) 88%,#ffffff);\n --dshpc-cyan-active:color-mix(in srgb,var(--dshpc-cyan) 78%,#ffffff);\n --dshpc-cyan-soft:color-mix(in srgb,var(--dshpc-cyan) 5%,transparent);\n --dshpc-teal-hover:color-mix(in srgb,var(--dshpc-teal) 88%,#ffffff);\n --dshpc-teal-active:color-mix(in srgb,var(--dshpc-teal) 78%,#ffffff);\n --dshpc-teal-soft:color-mix(in srgb,var(--dshpc-teal) 5%,transparent);\n --dshpc-orange-hover:color-mix(in srgb,var(--dshpc-orange) 88%,#ffffff);\n --dshpc-orange-active:color-mix(in srgb,var(--dshpc-orange) 78%,#ffffff);\n --dshpc-orange-soft:color-mix(in srgb,var(--dshpc-orange) 5%,transparent);\n --dshpc-indigo-hover:color-mix(in srgb,var(--dshpc-indigo) 88%,#ffffff);\n --dshpc-indigo-active:color-mix(in srgb,var(--dshpc-indigo) 78%,#ffffff);\n --dshpc-indigo-soft:color-mix(in srgb,var(--dshpc-indigo) 5%,transparent);\n --dshpc-rose-hover:color-mix(in srgb,var(--dshpc-rose) 88%,#ffffff);\n --dshpc-rose-active:color-mix(in srgb,var(--dshpc-rose) 78%,#ffffff);\n --dshpc-rose-soft:color-mix(in srgb,var(--dshpc-rose) 5%,transparent);\n --dshpc-slate-hover:color-mix(in srgb,var(--dshpc-slate) 88%,#ffffff);\n --dshpc-slate-active:color-mix(in srgb,var(--dshpc-slate) 78%,#ffffff);\n --dshpc-slate-soft:color-mix(in srgb,var(--dshpc-slate) 5%,transparent);\n /* \u300C\u9009\u4E2D\u9762\u300D\uFF08\u6DF1\u8272\u7248\uFF0C2026-10-06\uFF09\uFF1A\u63BA **~40% \u80CC\u666F\u8272**\uFF08--dshpc-surface-base\uFF09\u21D2 \u65E0\u9650\u63A5\u8FD1\u9875\u9762\u80CC\u666F\u7684\u9ED1\u3001\n \u53EA\u6BD4\u80CC\u666F\u7565\u6DF1\u4E00\u70B9\u70B9\uFF08\u7528\u6237\uFF1A\u6DF1\u8272\u4E0B\u5C55\u5F00\u533A\u538B\u7740\u4EFB\u52A1\u900F\u660E\u7EFF\u4F1A\u53D1\u7070\uFF0C\u5E95\u8272\u8981\u5C3D\u91CF\u8D34\u8FD1\u80CC\u666F\u624D\u4E0D\u663E\u7070\uFF09\u3002\n \u26A0\uFE0F \u6DF1\u8272\u4E0B\u4E0D\u80FD\u63BA\u6587\u5B57\u8272 \u2014\u2014 \u90A3\u662F\u767D\uFF0C\u4F1A\u53D8\u4EAE\uFF0C\u9009\u4E2D\u53CD\u800C\u6BD4\u672C\u6708\u65E5\u671F\u6D45\u3002 */\n --dshpc-selected-bg:color-mix(in srgb,var(--dshpc-surface-1) 60%,var(--dshpc-surface-base));\n /* ListRow \u9009\u4E2D\u9762\uFF08\u6697\u8272\u7248\uFF09\uFF1Aslate \u63BA\u5230 26% \u2014\u2014 \u6DF1\u5E95\u4E0A\u6CDB\u84DD\u7070\uFF0C\u7EDD\u4E0D\u9000\u56DE\u63A5\u8FD1\u80CC\u666F\u7684\u9ED1\u3002\n slate \u662F\u4E2D\u660E\u5EA6\u84DD\u7070\uFF0C\u6697\u5E95\u4E0A\u8981\u6BD4\u4EAE\u8272\u63BA\u5F97\u66F4\u6D53\u624D\u770B\u5F97\u51FA\uFF08\u4EAE\u8272 14% / \u6697\u8272 26%\uFF09\u3002 */\n --dshpc-listrow-selected-bg:color-mix(in srgb,var(--dshpc-slate) 26%,transparent);\n /* \u6697\u8272 hover\uFF1A\u5E38\u6001 6% \u767D \u2192 10% \u767D\uFF0C\u53EA\u63D0\u4EAE\u4E00\u70B9\u70B9\uFF08\u539F\u6765\u662F active \u7684 24% \u767D\uFF0C\u592A\u8DF3\uFF09\u3002 */\n --dshpc-listrow-hover-bg:rgba(255,255,255,.10);\n /* \u4EFB\u52A1\u65E5\u7A0B\u9875\u672C\u6708\u683C\u7684\u9ED8\u8BA4\u5E95\uFF08\u6DF1\u8272\u7248\uFF0C2026-10-06\uFF09\uFF1A\u6DF1\u7684\u3001\u5E26\u70B9\u7070\u84DD\u7684\u6697\u8272\uFF08\u7528\u6237\u7ED9\u7684\u53C2\u8003\u56FE \u2248 #23262e\uFF09\uFF0C\n \u6BD4\u539F\u6765\u7684\u5361\u7247\u9762\u66F4\u6C89\u3001\u66F4\u504F\u84DD\u7070\uFF1B\u9009\u4E2D\u683C\u4ECD\u8D70 --dshpc-selected-bg\uFF08\u66F4\u6697\u4E00\u6863\uFF09\uFF0C\u5C42\u7EA7\u4E0D\u53D8\u3002 */\n --dshpc-cal-cell-bg:#23262e;\n /* \u4EFB\u52A1\u65E5\u7A0B\u9875\u672C\u6708\u683C hover \u5E95\uFF08\u6DF1\u8272\u6BB5\uFF0C2026-10-06\uFF09\uFF1A\u539F\u5148\u8D70 --dshpc-hover\uFF08\u5BBF\u4E3B\u6D45\u8272\u53E0\u52A0\uFF09\u5728\u6DF1\u5E95\u4E0A\u663E\u5F97\n \u300C\u7070\u53D1\u4EAE\u300D\uFF0C\u4E0D\u597D\u770B \u21D2 \u6362\u6210\u66F4\u8D34\u5E95\u7684\u84DD\u8C03\u5FAE\u4EAE\uFF08\u4E0E open-bg-soft \u540C\u65CF\uFF09\uFF0Chover \u65F6\u4E0D\u523A\u773C\u3001\u53C8\u6709\u53CD\u9988\u3002 */\n --dshpc-cal-cell-hover:rgba(96,165,250,.12);\n /* \u4EFB\u52A1\u65E5\u7A0B\u9875\u5C55\u5F00\u9762\u677F\u5E95\uFF08\u6DF1\u8272\u6BB5\uFF0C2026-10-06 \u7EED\uFF09\uFF1A\u4E0E\u539F selected-bg \u6697\u503C\u4E00\u81F4\uFF0C\u6DF1\u8272 UI \u4E0D\u52A8 */\n --dshpc-cal-panel-bg:color-mix(in srgb,var(--dshpc-surface-1) 60%,var(--dshpc-surface-base));\n}\n\n/* \u2500\u2500 \u7EC6\u6EDA\u52A8\u6761 + \u79BB\u8FB9 1px\uFF1A\u5168\u5E93\u552F\u4E00\u771F\u6E90 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n \u653E\u5728 tokens \u57DF\uFF08ensureComponentStyles \u6BCF\u6B21\u5FC5\u6CE8\u518C\u3001\u4E14\u6392\u5728\u6240\u6709\u63A7\u4EF6\u57DF\u4E4B\u524D\uFF09\uFF1A\n \u4EFB\u4F55\u7EC4\u4EF6\u53EA\u8981\u7ED9\u6EDA\u52A8\u5BB9\u5668\u6302 .dshpc-scroll-thin \u5C31\u751F\u6548\uFF0C\u4E0D\u5FC5\u53E6\u884C\u6CE8\u5165 panel \u57DF\u3002\n \u6539\u7EBF\u5BBD / \u8BA9\u4F4D / \u5706\u89D2 / \u989C\u8272\u53EA\u6539\u8FD9\u4E00\u5904\uFF1B\u522B\u5728\u522B\u7684 CSS \u91CC\u518D\u6284\u4E00\u4EFD\u3002\n\n \u53EA\u7528 ::-webkit-scrollbar\uFF1A\u4E00\u65E6\u5199 scrollbar-width\uFF0CChrome \u4F1A\u5207\u5230\u89C4\u8303\u5316\u6EDA\u52A8\u6761\u3001\n \u5FFD\u7565\u8FD9\u91CC\u7684\u5BBD\u5EA6\uFF082026-11-06 \u5B9E\u6D4B\uFF1A\u7559\u7740 scrollbar-width:thin \u65F6\u5BBD\u5EA6\u56DE\u5230 ~10px\uFF09\u3002\n 2026-11-06 \u7528\u6237\u53E3\u5F84\uFF1A1px \u592A\u7EC6 \u21D2 \u7EBF\u5BBD\u8D77\u6B65 2px\u3001thumb \u4E0A\u4E0B\u7AEF\u5706\u89D2\uFF1B\u73B0\u884C\u503C\u89C1\u4E0B\u9762\u4E09\u884C\u3002\n\n \u8BA9\u4F4D\uFF08\u6EDA\u52A8\u6761\u4E0E\u5BB9\u5668\u53EF\u89C1\u8FB9\u7F18\u9694 1px\uFF09\u4E5F\u7531\u8FD9\u4E2A\u7C7B\u8D1F\u8D23\uFF1A\u539F\u751F\u6EDA\u52A8\u6761\u753B\u5728 padding box \u4E4B\u5916\u3001\n border \u4E4B\u5185\uFF0C\u53EA\u6709 border \u80FD\u628A\u5B83\u63A8\u79BB\u8FB9\u7F18\uFF08\u52A0 padding \u65E0\u6548\uFF09\u3002\u6302\u7C7B\u5373\u81EA\u52A8\u8BA9\u4F4D\uFF0C\n \u5BB9\u5668\u4E0D\u5FC5\u81EA\u5DF1\u518D\u5199\u900F\u660E\u8FB9\u6846\u3002\u65B9\u5411\u6863\uFF08CSS \u6CA1\u6709 :scrollable\uFF0C\u63A8\u4E0D\u51FA\u6EDA\u52A8\u65B9\u5411\uFF0C\u987B\u663E\u5F0F\u58F0\u660E\uFF09\uFF1A\n .dshpc-scroll-thin \u7AD6\u6EDA\uFF08\u9ED8\u8BA4\uFF09\uFF1A\u53F3\u8BA9\u4F4D\n .dshpc-scroll-thin--x \u6A2A\u6EDA\uFF1A\u5E95\u8BA9\u4F4D\uFF0C\u4E14\u4E0D\u53E0\u53F3\n .dshpc-scroll-thin--both \u53CC\u5411\uFF1A\u53F3 + \u5E95\u90FD\u8BA9\u4F4D\n --x / --both \u5FC5\u987B\u4E0E\u57FA\u7C7B\u540C\u6302\uFF08\u7EBF\u5BBD\u89C4\u5219\u53EA\u8BA4\u57FA\u7C7B\uFF09\u3002\n\n \u6302 .dshpc-panel \u7684\u5BB9\u5668\u672C\u8EAB\u5DF2\u6709\u5B9E\u8272\u8FB9\u6846 \u21D2 :not(.dshpc-panel) \u8DF3\u8FC7\u8BA9\u4F4D\uFF1A\u6EDA\u52A8\u6761\u8D34\u90A3\u6761\n \u5B9E\u8272\u7EBF\u5373\u7B97\u8BA9\u4F4D\uFF0C\u65E0\u6761\u4EF6\u53E0\u900F\u660E\u8FB9\u6846\u4F1A\u628A\u5B9E\u8272\u53F3\u8FB9\u6846\u8986\u76D6\u6210\u900F\u660E\u3002\n CodeMirror \u7684 .cm-scroller \u7531\u5B98\u65B9\u751F\u6210\u3001\u6302\u4E0D\u4E0A\u7C7B \u21D2 \u540E\u4EE3\u9009\u62E9\u5668\u4E00\u5E76\u547D\u4E2D\u7EBF\u5BBD\u4E0E\u8BA9\u4F4D\uFF1B\n \u5B83\u53EA\u8BA9\u53F3\u4E0D\u8BA9\u5E95\uFF1A\u7ED9\u5E95\u4F1A\u6539 scroller \u9AD8\u5EA6\uFF0CCodeMirror \u7684\u6D4B\u91CF\u5FAA\u73AF\u4F1A\u591A\u7B97\u4E00\u6761\u6A2A\u6EDA\u6761\u3002\n \u5916\u5C42\u82E5\u81EA\u5DF1\u4E0D\u6EDA\uFF08\u5982 CodeViewer\uFF09\uFF0C\u628A --dshpc-scroll-inset-right \u8BBE 0px \u5173\u6389\u81EA\u8EAB\u8BA9\u4F4D\uFF0C\n \u514D\u5F97\u5916\u5C42\u4E0E .cm-scroller \u4E24\u5C42\u5404 1px \u53E0\u6210 2px\u3002 */\n/* \u26A0\uFE0F \u4E0B\u9762\u4E09\u884C\u7684\u7EBF\u5BBD / \u5706\u89D2**\u5FC5\u987B\u662F\u5B57\u9762\u91CF**\uFF1AWebKit \u7684 ::-webkit-scrollbar \u7CFB\u5217\u4F2A\u5143\u7D20\n \u4E0D\u89E3\u6790 var()\uFF0C\u5E26\u53D8\u91CF\u7684\u58F0\u660E\u4F1A\u88AB\u9759\u9ED8\u4E22\u5F03 \u21D2 \u5BBD\u5EA6\u6574\u6761\u4F5C\u5E9F\u3001\u9000\u56DE\u9ED8\u8BA4\u503C\u30022026-11-06 \u628A\n width:2px \u6539\u6210 var(--dshpc-scroll-w) \u540E\u771F\u673A\u5F53\u573A\u6253\u56DE\uFF08\u7528\u6237\u53D1\u73B0\uFF09\uFF0C\u6545\u7EBF\u5BBD\u4E0D\u653E token\u3002\n \u6539\u7EBF\u5BBD\u53EA\u6539\u8FD9\u4E00\u5757\u7684\u4E09\u5904\u6570\u5B57\uFF08\u4E09\u5904\u5FC5\u987B\u540C\u503C\uFF09\uFF1B\u8BA9\u4F4D\u4ECD\u8D70 --dshpc-scroll-inset\u3002 */\n.dshpc-scroll-thin::-webkit-scrollbar,\n.dshpc-scroll-thin .cm-scroller::-webkit-scrollbar{width:3px;height:3px}\n.dshpc-scroll-thin::-webkit-scrollbar-thumb,\n.dshpc-scroll-thin .cm-scroller::-webkit-scrollbar-thumb{background:var(--dshpc-border-heavy);border-radius:3px}\n.dshpc-scroll-thin::-webkit-scrollbar-track,\n.dshpc-scroll-thin .cm-scroller::-webkit-scrollbar-track{background:transparent}\n.dshpc-scroll-thin:not(.dshpc-panel){border-right:var(--dshpc-scroll-inset-right,var(--dshpc-scroll-inset)) solid transparent}\n.dshpc-scroll-thin--x:not(.dshpc-panel){border-right:0;border-bottom:var(--dshpc-scroll-inset) solid transparent}\n.dshpc-scroll-thin--both:not(.dshpc-panel){border-bottom:var(--dshpc-scroll-inset) solid transparent}\n.dshpc-scroll-thin .cm-scroller{border-right:var(--dshpc-scroll-inset) solid transparent}\n";
2
2
  //# sourceMappingURL=tokens-css.generated.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tokens-css.generated.d.ts","sourceRoot":"","sources":["../../src/design/tokens-css.generated.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,mBAAmB,uv3CAA83qB,CAAA"}
1
+ {"version":3,"file":"tokens-css.generated.d.ts","sourceRoot":"","sources":["../../src/design/tokens-css.generated.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,mBAAmB,k77CAAwvsB,CAAA"}
@@ -1,4 +1,4 @@
1
1
  // ⚠️ 生成物,勿手改。真源 = src/design/tokens.css
2
2
  // 由 scripts/gen-css.mjs 生成(`pnpm run gen:css`):改样式请改那个 .css 文件后重新生成。
3
- export const TOKENS_CSS_TEMPLATE = "\n/* ── 文字(宿主 label 四档 + 反色面用字)────────────────────────────── */\nbody{\n --dshpc-fg:var(--dsw-alias-label-primary,#1f2328);\n --dshpc-fg-2:var(--dsw-alias-label-secondary,#5c6370);\n --dshpc-fg-3:var(--dsw-alias-label-tertiary,#767d87);\n --dshpc-fg-4:var(--dsw-alias-label-caption,#9aa1ab);\n --dshpc-fg-dim:var(--dsw-alias-label-dimmed,#b9bfc7);\n /* 反色面上的字(实心钮 / 角标):暗色下是 bluish-1000,故用 -foreground 而非 -inverted */\n --dshpc-fg-inverse:var(--dsw-alias-label-primary-foreground,#fff);\n\n /* ── 面(宿主 bg-layer 三档 + 下沉轨道底)──────────────────────────── */\n --dshpc-surface-1:var(--dsw-alias-bg-layer-1,#fff);\n --dshpc-surface-2:var(--dsw-alias-bg-layer-2,#fff);\n --dshpc-surface-3:var(--dsw-alias-bg-layer-3,#fff);\n /* 「选中亮片」的底盘色(配 --dshpc-shadow-raised 用) */\n --dshpc-surface-raised:var(--dsw-alias-bg-layer-1,#fff);\n /* 轨道 / 下沉底(官方分段控件轨道用的就是这条) */\n --dshpc-surface-sunken:var(--dsw-alias-interactive-bg-hover,rgba(38,49,72,.06));\n /* 整页 / 编辑器底(bg-base) */\n --dshpc-surface-base:var(--dsw-alias-bg-base,#fff);\n /* 自绘浮层 / 菜单卡的不透明底(= base;不要用半透明的 specific-menu) */\n --dshpc-surface-menu:var(--dshpc-surface-base);\n /* markdown 代码块面 / 字体(会话镜像里用到) */\n --dshpc-code-surface:var(--dsw-alias-markdown-code-block,rgba(128,128,128,.10));\n --dshpc-code-font:var(--dsw-font-markdown-code-block-small,12px/18px var(--ds-font-family-code,monospace));\n /* 警告文字色(宿主 state-warn-label) */\n --dshpc-warning-label:var(--dsw-alias-state-warn-label,#f5a623);\n /* 固定中性实面(自绘浮层、深色主题下必须自己变的那几个)——只有它需要暗色覆盖 */\n --dshpc-solid:var(--dsw-static-neutral-00,#fff);\n --dshpc-on-solid:var(--dsw-alias-label-primary,#1f2328);\n /* 交付文件卡那种「浅底盘 + hover 加深」两拍 */\n --dshpc-plate:var(--dsw-static-neutral-50,#fafafa);\n --dshpc-plate-hover:var(--dsw-static-neutral-100,#f5f5f5);\n /* ⚠️ 这些**固定中性面一律用 rgba 字面量**(2026-10-19 真机教训):不要写成\n 「rgba 回退行 + 嵌 --dsw-static-* 的 color-mix 行」两条同名声明——自定义属性**后者恒胜**,\n 哪怕它的值在宿主里算不出来(static 变量 invalid)⇒ 整条 token 作废、rgba 兜底一起被废,\n 0.2.6 里 Segmented 轨道全透明就是这么来的。要跟宿主主题联动的面用 alias token(那些实测有效)。 */\n --dshpc-icon-plate:rgba(255,255,255,.5);\n /* 表头底:浅色主题**偏深**,且必须**比斑马纹(--dshpc-plate)再深一档**——\n 两者不能撞色(用户 2026-10-02:表头跟斑马纹一模一样)。 */\n --dshpc-head-bg:var(--dsw-static-neutral-100,#f5f5f5);\n /* 表格底 / 行 hover(2026-10-30 用户二次定案:表头与通栏**互换**底色):\n 表头默认底 = 通栏原来那层灰(--dshpc-surface-sunken,跟着宿主交互面走);\n 通栏默认底 = 表头原来那色(亮 #f6f8fa / 暗 #151b23,参考图实测,与深色段同源);\n 行 hover 是「一层极淡的黑」≈1.5%(用户:再浅一半,要特别淡)。 */\n --dshpc-table-head-bg:var(--dshpc-surface-sunken);\n --dshpc-table-banner-bg:#f6f8fa;\n --dshpc-table-row-hover:rgba(15,15,15,.015);\n /* 图标小底板(产出物):浅色下要**看得见**(原先取 plate ⇒ 在白底上等于没有);hover 加倍。 */\n --dshpc-chip-bg:rgba(15,15,15,.07);\n --dshpc-chip-bg-hover:rgba(15,15,15,.14);\n /* 展开行:**带透明度的蓝**——不是灰、也不是纯色,透出卡片底色,一眼看出「这是展开的」\n (用户 2026-10-02:灰色跟斑马纹分不出来)。内容区再淡一档,形成「行深 / 内容浅」的区隔。 */\n --dshpc-open-bg:rgba(37,99,235,.10);\n --dshpc-open-bg-soft:rgba(37,99,235,.05);\n --dshpc-card-hover:rgba(37,99,235,.07);\n\n /* ── 描边四档(宿主真值:l1 4% / l2 10% / l3 12% / l4 16%)────────── */\n --dshpc-border-faint:var(--dsw-alias-border-l1,#0000000a);\n --dshpc-border:var(--dsw-alias-border-l2,#0000001a);\n --dshpc-border-strong:var(--dsw-alias-border-l3,#0000001f);\n --dshpc-border-heavy:var(--dsw-alias-border-l4,#00000029);\n\n /* ── 品牌 / 语义色 ────────────────────────────────────────────────── */\n /* 品牌「面」色:明色近黑、暗色近白(官方 Switch 选中态即此),**不是蓝色** */\n --dshpc-accent:var(--dsw-alias-brand-primary,#0f1115);\n /* 蓝色:强调 / 选中 / 焦点,一律走这条 */\n --dshpc-business:var(--dsw-alias-state-business-primary,#3b5bdb);\n --dshpc-success:var(--dsw-alias-state-success-primary,#22c55e);\n /* ⚠️ 是 state-warn(不是 state-warning,后者宿主无此定义) */\n --dshpc-warning:var(--dsw-alias-state-warn-primary,#f59e0b);\n --dshpc-danger:var(--dsw-alias-state-error-primary,#ec1313);\n --dshpc-link:var(--dsw-alias-link,#3b5bdb);\n /* 语义色**实面**上的字(角标 / 实心提示):宿主红绿黄三色都是中调 ⇒ 白字两个主题都可读,\n 故这是一条与主题无关的常量;不要拿 --dshpc-fg-inverse 顶——它在暗色下是近黑,压在红底上看不清。 */\n --dshpc-on-signal:#fff;\n /* 黄底上的字:黄色是中高明度,白字看不清 ⇒ 固定深色(与主题无关)。 */\n --dshpc-on-warning:#1f2328;\n /* 告警严重度的圆点底色(2026-11-03 从 feedback.css 收到这里)。\n 与主题无关的一组常量:这几个色要在任意底色上都认得出来,所以**不跟宿主 state 色走**\n (宿主 state-warn-primary 偏亮,压白 ✕ 看不清)。语义色改动请只改这里。 */\n --dshpc-sev-info:#2563eb;\n --dshpc-sev-success:#16a34a;\n --dshpc-sev-warning:#d97706;\n --dshpc-sev-error:#dc2626;\n\n /* ── 实心按钮的 hover / active 派生态(2026-10-19 用户点名)─────────────────\n 原实现是 :hover 直接压 opacity .9:黑底压 10% 几乎看不出来,用户原话「完全感觉不到颜色变了」。\n ⇒ 改成对底色做**明确的混色**(压 22% / 34%),不用 opacity:\n · 亮色主题:黑底(--dshpc-accent)掺白提亮;红 / 绿 / 黄 / 蓝底掺黑压深;\n · 暗色主题:反过来(暗底掺白、亮底掺黑)。\n 混色对象是**固定中性色字面量**(#fff / #000),不依赖宿主 static-neutral 是否存在;\n 旧内核不认 color-mix 时整条声明作废 ⇒ 回落各档原色(可接受:仍可点,只是没有 hover 反馈)。 */\n --dshpc-accent-hover:color-mix(in srgb,var(--dshpc-accent) 78%,#ffffff);\n --dshpc-accent-active:color-mix(in srgb,var(--dshpc-accent) 64%,#ffffff);\n --dshpc-danger-hover:color-mix(in srgb,var(--dshpc-danger) 78%,#000000);\n --dshpc-danger-active:color-mix(in srgb,var(--dshpc-danger) 64%,#000000);\n --dshpc-success-hover:color-mix(in srgb,var(--dshpc-success) 78%,#000000);\n --dshpc-success-active:color-mix(in srgb,var(--dshpc-success) 64%,#000000);\n --dshpc-warning-hover:color-mix(in srgb,var(--dshpc-warning) 78%,#000000);\n --dshpc-warning-active:color-mix(in srgb,var(--dshpc-warning) 64%,#000000);\n --dshpc-business-hover:color-mix(in srgb,var(--dshpc-business) 78%,#000000);\n --dshpc-business-active:color-mix(in srgb,var(--dshpc-business) 64%,#000000);\n /* 语义色**浅底**:状态色系的「一块底色」——执行记录页每条流水账的块底就是它\n (用户 2026-10-04:正常态给同色系很浅的透明底、失败用红底透出来)。\n 用 「color-mix」 现算而不写死 rgba:状态色本身跟随宿主 alias,主题一换自动成立。\n ⚠️ **深色下要更淡**:用户 2026-10-04「深色风格的绿色和红色好像都有点深」⇒ dark 段\n 把这四条压到 5%(更贴近面板底、存在感更弱);浅色段维持 8%。两端各自给值,不共用一条曲线。\n 命名收在 tokens.ts 单点(本仓硬规矩:业务文件不许自造 --dshpc-*)。 */\n --dshpc-success-soft:color-mix(in srgb,var(--dshpc-success) 8%,transparent);\n --dshpc-warning-soft:color-mix(in srgb,var(--dshpc-warning) 8%,transparent);\n --dshpc-danger-soft:color-mix(in srgb,var(--dshpc-danger) 8%,transparent);\n --dshpc-business-soft:color-mix(in srgb,var(--dshpc-business) 8%,transparent);\n\n /* ── 扩展语义色(2026-10-29 用户拍板:分类 / 图表常用色八支)──────────────\n 宿主无对应 alias ⇒ 写死 hex(不跟随宿主换肤);实心面字色统一走 --dshpc-on-signal(白),\n 因八支明度都低于黄 / 青柠,白字两主题均 ≥4.5:1 可读。每条自带 hover/active/soft 派生;\n 暗色段只覆盖派生(base 写死、两主题同值)。 */\n --dshpc-purple:#9333ea;\n --dshpc-purple-hover:color-mix(in srgb,var(--dshpc-purple) 78%,#000000);\n --dshpc-purple-active:color-mix(in srgb,var(--dshpc-purple) 64%,#000000);\n --dshpc-purple-soft:color-mix(in srgb,var(--dshpc-purple) 8%,transparent);\n --dshpc-pink:#db2777;\n --dshpc-pink-hover:color-mix(in srgb,var(--dshpc-pink) 78%,#000000);\n --dshpc-pink-active:color-mix(in srgb,var(--dshpc-pink) 64%,#000000);\n --dshpc-pink-soft:color-mix(in srgb,var(--dshpc-pink) 8%,transparent);\n --dshpc-cyan:#0e7490;\n --dshpc-cyan-hover:color-mix(in srgb,var(--dshpc-cyan) 78%,#000000);\n --dshpc-cyan-active:color-mix(in srgb,var(--dshpc-cyan) 64%,#000000);\n --dshpc-cyan-soft:color-mix(in srgb,var(--dshpc-cyan) 8%,transparent);\n --dshpc-teal:#0f766e;\n --dshpc-teal-hover:color-mix(in srgb,var(--dshpc-teal) 78%,#000000);\n --dshpc-teal-active:color-mix(in srgb,var(--dshpc-teal) 64%,#000000);\n --dshpc-teal-soft:color-mix(in srgb,var(--dshpc-teal) 8%,transparent);\n --dshpc-orange:#c2410c;\n --dshpc-orange-hover:color-mix(in srgb,var(--dshpc-orange) 78%,#000000);\n --dshpc-orange-active:color-mix(in srgb,var(--dshpc-orange) 64%,#000000);\n --dshpc-orange-soft:color-mix(in srgb,var(--dshpc-orange) 8%,transparent);\n --dshpc-indigo:#4f46e5;\n --dshpc-indigo-hover:color-mix(in srgb,var(--dshpc-indigo) 78%,#000000);\n --dshpc-indigo-active:color-mix(in srgb,var(--dshpc-indigo) 64%,#000000);\n --dshpc-indigo-soft:color-mix(in srgb,var(--dshpc-indigo) 8%,transparent);\n --dshpc-rose:#e11d48;\n --dshpc-rose-hover:color-mix(in srgb,var(--dshpc-rose) 78%,#000000);\n --dshpc-rose-active:color-mix(in srgb,var(--dshpc-rose) 64%,#000000);\n --dshpc-rose-soft:color-mix(in srgb,var(--dshpc-rose) 8%,transparent);\n --dshpc-slate:#475569;\n --dshpc-slate-hover:color-mix(in srgb,var(--dshpc-slate) 78%,#000000);\n --dshpc-slate-active:color-mix(in srgb,var(--dshpc-slate) 64%,#000000);\n --dshpc-slate-soft:color-mix(in srgb,var(--dshpc-slate) 8%,transparent);\n\n /* ⚠️ 2026-10-18 用户拍板:宿主 alias 的 hover(暗色白 8% / 亮色 6%)**太弱**,\n 「移上去要仔细看才看得出来」⇒ 不再委托宿主 hover 别名,改为自掺中性色并加重:\n 亮色掺黑 10%、暗色掺白 14%(active 再加一档)。按钮 / 分段轨道 / 各类 hover 底同时受益。\n ⚠️ 必须保留 rgba 兜底行在前(本文件惯例,见 icon-plate 注释):掺的是**固定中性色**\n (neutral-900=#0f0f0f / neutral-00=#fff),预计算无损;旧内核不认 color-mix 时走兜底,\n 否则整条 background:var(--seg-track) 作废 ⇒ 分段轨道透明(真踩过:预览站轨道消失)。 */\n --dshpc-hover:rgba(15,15,15,.10);\n --dshpc-active:rgba(15,15,15,.18);\n /* 分段控件轨道底:专用 token(rgba 字面量、不借 --dshpc-hover 中转)——\n 2026-10-19 教训:变量链中间任何一环 invalid ⇒ background 整条作废、轨道全透明。\n 亮色:黑 7%(比 hover 的 10% 淡一档,选中白片才跳得出)。 */\n --dshpc-seg-track:rgba(15,15,15,.07);\n --dshpc-mask:var(--dsw-alias-bg-mask-1,#0000003d);\n /* 弹窗锁定态给**自绘控件**的降透明度档(2026-11-05)。放在 token 里是为了让消费方\n 在自己元素上写 --dshpc-lock-dim: 1 就能退出这条效果,不用 !important 打架。 */\n --dshpc-lock-dim:.5;\n /* 「选中面」(2026-10-06,任务日程页首创)= 当前底色**朝更深掺 12% 文字色**:\n 浅色主题下文字色是黑 ⇒ 选中面比常态底色**深一档**。深色分支见 body[data-ds-dark-theme](朝背景色掺)。\n 语义:标记「正在看的东西」,比常态明显、又不许盖住内容(不许用半透明叠状态色)。 */\n --dshpc-selected-bg:color-mix(in srgb,var(--dshpc-surface-1) 88%,var(--dshpc-fg));\n /* 任务日程页本月格默认底(2026-10-06 → 续2):浅色下给**淡蓝**(business 8% 透白底)——\n 参照用户参考稿里未选中日程块 / Tuesday 列的那种蓝、再浅一点点;\n 相邻月补位格仍走 --dshpc-surface-2(更灰),不受影响。\n 深色段维持 #23262e(用户:深色 UI 已差不多,不动)。 */\n --dshpc-cal-cell-bg:color-mix(in srgb,var(--dshpc-business) 8%,var(--dshpc-surface-1));\n /* 任务日程页「点开某天」展开的面板底(2026-10-06 续):浅色下**无限接近白、只带一丁点灰**\n (neutral-50 = #fafafa)——面板里装半透明执行记录列表,底再深整片就发糊发灰;\n 深色段沿用原 selected-bg 暗值,保持不动。 */\n --dshpc-cal-panel-bg:var(--dsw-static-neutral-50,#fafafa);\n /* 任务日程页本月格 hover 底(浅色段,2026-10-06 续3):不再走灰色通用交互底——\n 鼠标移上去应是「更亮一点点的蓝」(与深色段同语义:hover = 提亮的蓝,不是灰下去)。\n 浓度**介于**表头蓝(14%)与未选中格蓝(8%)之间、略偏表头一侧:business 12% 透白底\n (比表头浅一点、比未选中格深一点)。 */\n --dshpc-cal-cell-hover:color-mix(in srgb,var(--dshpc-business) 12%,var(--dshpc-surface-1));\n\n /* ── 投影 / 焦点 ──────────────────────────────────────────────────── */\n --dshpc-shadow-1:var(--dsw-elevation-soft,0 4px 16px 0 #00000008);\n /* 亮片自带的浮起感(选中态用;与 --dshpc-surface-raised 配对) */\n --dshpc-shadow-raised:var(--dsw-elevation-soft,0 4px 16px 0 #00000008);\n --dshpc-shadow-2:var(--dsw-shadow-lv3,0 12px 32px 0 #00000014);\n /* 键盘焦点环。⚠️ 不用宿主 --dsw-focus-ring-color:它默认值是 transparent(兜底不生效、会隐身) */\n --dshpc-focus:var(--dsw-alias-state-business-primary,#3b5bdb);\n\n /* ── 圆角(宿主真值 4 / 8 / 12 / 16 / 20 / 28)─────────────────────── */\n --dshpc-radius-xs:var(--dsw-radius-xs,4px);\n --dshpc-radius-sm:var(--dsw-radius-sm,8px);\n --dshpc-radius-md:var(--dsw-radius-md,12px);\n --dshpc-radius-lg:var(--dsw-radius-lg,16px);\n --dshpc-radius-xl:var(--dsw-radius-xl,20px);\n --dshpc-radius-panel:var(--dsw-radius-panel,28px);\n /* 全圆(胶囊标签):宿主的 radius 档最大只有 28px,撑不满 24px 高的 chip */\n --dshpc-radius-pill:999px;\n\n /* ── 间距四拍(只许用这四档,不许出现 5 / 7 / 9px)────────────────── */\n --dshpc-space-1:4px;\n --dshpc-space-2:8px;\n --dshpc-space-3:12px;\n --dshpc-space-4:16px;\n\n /* ── 控件高度:离散三档(控件用 size=\"sm|md|lg\" 选;调用点不许自定义高度,\n 真不够用才允许在调用点本地覆盖 --dshpc-control-h-*,属例外而非常态)── */\n --dshpc-control-h-sm:24px;\n --dshpc-control-h-md:28px;\n --dshpc-control-h-lg:32px;\n\n /* ── 字号 / 行高:直绑宿主字号族(宿主真值 11 / 12 / 13 / 14 / 16)───── */\n --dshpc-font-xs:var(--dsw-font-xxxs-11-font-size,11px);\n --dshpc-font-sm:var(--dsw-font-xxs-12-font-size,12px);\n --dshpc-font-md:var(--dsw-font-xs-13-font-size,13px);\n --dshpc-font-lg:var(--dsw-font-s-14-font-size,14px);\n --dshpc-font-xl:var(--dsw-font-base-16-font-size,16px);\n --dshpc-line-xs:var(--dsw-font-xxxs-11-line-height,14px);\n --dshpc-line-sm:var(--dsw-font-xxs-12-line-height,18px);\n --dshpc-line-md:var(--dsw-font-xs-13-line-height,20px);\n --dshpc-line-lg:var(--dsw-font-s-14-line-height,22px);\n --dshpc-line-xl:var(--dsw-font-base-16-line-height,24px);\n --dshpc-font-mono:var(--ds-font-family-code,monospace);\n\n /* ── 细滚动条的让位值(线宽不能放 token,见文件末尾的注释)──────────\n 1px→2px 只改这一行;它用在普通元素上,var() 能正常解析。 */\n --dshpc-scroll-inset:1px;\n\n /* ── 层级阶梯(业务文件不许再写裸 z-index)───────────────────────── */\n /* 页面级预览分栏 → 抽屉(新建/编辑)→ 弹窗/确认框 → 浮层菜单 → 浮层提示 */\n /* **整条阶梯都必须低于官方浮点 1000 档**(2026-11-06 用户拍板):官方原语\n Modal / ImageLightbox 是 z-index 1000(body portal),Menu / Toast 是 1100。\n 我们只是宿主里的一个页面 ⇒ 宿主浮点恒在我们之上;以后弹窗里再开官方模态/预览,\n 不必逐个场景「临时让位」(此前 1070 压住官方原图预览就是这么踩出来的)。 */\n /* 内容层吸顶(天标签 / 表头这类「跟着滚但压住同层内容」的元素):只压同层兄弟,\n 必须低于下面所有浮层档 —— 所以它不是「开新浮层档」,而是内容层内部的排序位。 */\n --dshpc-z-sticky:10;\n --dshpc-z-dock:900;\n --dshpc-z-drawer:920;\n --dshpc-z-modal:940;\n /* 收起后的耳朵:必须高于弹窗遮罩,否则弹窗一开就点不到它(2026-11-04 用户真机)。\n 只给耳朵用,页面级分栏本体仍是布局成员,不跟着抬高。 */\n --dshpc-z-ear:950;\n --dshpc-z-menu:960;\n --dshpc-z-tip:970;\n /* 语义别名(2026-11-03 面板皮肤统一):业务文件只许用这两个说「我要一层浮层」,\n 不再各自写浮层字面量。\n panel = 浮层面板本体(picker 弹窗、锚定面板);\n popmenu = 叠在面板之上的菜单(▾ 选层、Picker 下拉)与其透明遮罩。 */\n --dshpc-z-panel:var(--dshpc-z-menu);\n --dshpc-z-popmenu:var(--dshpc-z-tip);\n\n /* ── 动效 ─────────────────────────────────────────────────────────── */\n --dshpc-dur:var(--ds-transition-duration,.2s);\n --dshpc-dur-fast:var(--ds-transition-duration-fast,.12s);\n --dshpc-ease:var(--ds-ease-in-out,cubic-bezier(.4,0,.2,1));\n /* 运行中状态的脉动时长(2026-10-06 统一前后两端:任务配置里的绿呼吸 → 蓝、放慢;\n 执行记录里的蓝闪 → 放慢一点。两者用同一个值,动画形状本就一致)。 */\n --dshpc-dur-run:500ms;\n}\n\n/* ── 明暗差异的**唯一**落点 ──────────────────────────────────────────────\n 判据 = body[data-ds-dark-theme](宿主 0.2.0-rc.2 源码核实:启动脚本 toggleAttribute 写入,\n 唯一明暗判据;插件禁止用 prefers-color-scheme —— 它跟的是系统、不是用户在宿主里的选择)。\n 下面只放 alias 表达不了的「固定中性面」;颜色若能靠 alias 自动跟随,一律不要写在这里。 */\nbody[data-ds-dark-theme]{\n /* 深色段的蓝**刻意不跟随宿主 alias**(唯一例外):宿主暗色 alias 给的是 #60a5fa 一档的高亮蓝,\n 实心面(Chip / Button info / 日期选中格)压白字会发糊 —— 用户 2026-10-29 实测反馈。\n ⇒ 深色下改定向浅色状态的蓝(#3b5bdb)靠,只在明度上抬一点点,保证它在暗底上仍看得见:\n #4c6bd8 对白字 ≈4.8:1(原亮蓝只有 ~2.3:1),对日历格底 ≈3.2:1 仍过 UI 件的 3:1 线。\n 代价:宿主换品牌色时深色不再自动跟着变,需要这里手动同步。 */\n --dshpc-business:#4c6bd8;\n --dshpc-solid:var(--dsw-static-neutral-900,#0f0f0f);\n --dshpc-on-solid:var(--dsw-static-neutral-00,#fff);\n /* 实心按钮 hover / active(暗色版):黑底(浅色主题的近黑 → 暗色下的近白)掺黑压深;\n 红 / 绿 / 黄 / 蓝掺白提亮。与亮色段方向相反,保证两种主题下「一眼看出变了」。 */\n --dshpc-accent-hover:color-mix(in srgb,var(--dshpc-accent) 80%,#000000);\n --dshpc-accent-active:color-mix(in srgb,var(--dshpc-accent) 66%,#000000);\n --dshpc-danger-hover:color-mix(in srgb,var(--dshpc-danger) 78%,#ffffff);\n --dshpc-danger-active:color-mix(in srgb,var(--dshpc-danger) 64%,#ffffff);\n --dshpc-success-hover:color-mix(in srgb,var(--dshpc-success) 78%,#ffffff);\n --dshpc-success-active:color-mix(in srgb,var(--dshpc-success) 64%,#ffffff);\n --dshpc-warning-hover:color-mix(in srgb,var(--dshpc-warning) 78%,#ffffff);\n --dshpc-warning-active:color-mix(in srgb,var(--dshpc-warning) 64%,#ffffff);\n /* 同上:掺白比例从 22% / 36% 收到 12% / 22% —— 底色已变深,照旧比例提亮会在 hover 瞬间\n 把白字对比打回 ~3:1(正是用户嫌糊的那一档);收窄后 hover 仍可感知、字仍清晰。 */\n --dshpc-business-hover:color-mix(in srgb,var(--dshpc-business) 88%,#ffffff);\n --dshpc-business-active:color-mix(in srgb,var(--dshpc-business) 78%,#ffffff);\n /* 暗色 hover 掺白 14% / active 24%(对齐上面 2026-10-18 的加重拍板)。rgba 兜底行同上。 */\n --dshpc-hover:rgba(255,255,255,.14);\n --dshpc-active:rgba(255,255,255,.24);\n /* 分段轨道(暗色版):白 10%——比 hover 淡一档,选中亮片才跳得出。 */\n --dshpc-seg-track:rgba(255,255,255,.10);\n --dshpc-plate:var(--dsw-static-neutral-850,#212123);\n --dshpc-plate-hover:var(--dsw-static-neutral-800,#292929);\n --dshpc-icon-plate:rgba(255,255,255,.05);\n /* 暗色主题**反过来**:表头要比卡片面**亮**、比斑马纹再**浅一档**(用户:纯黑背景没法看)。 */\n --dshpc-head-bg:var(--dshpc-surface-2);\n /* 表格(2026-10-30 用户二次定案:与通栏互换底色):通栏底取表头原来那色 #151b23\n (亮色段对应 #f6f8fa);表头默认底沿用亮色段定义的 --dshpc-surface-sunken,不在暗色段重写;\n 行 hover 是「一层极淡的白」≈3% —— 暗底上用黑会越悬越暗,看不出「浅灰」反馈。 */\n --dshpc-table-banner-bg:#151b23;\n --dshpc-table-row-hover:rgba(255,255,255,.03);\n /* 暗色底板**微亮**;hover **更亮**(原先 hover 取 plate-hover 反而更淡 ⇒ 鼠标移上去就没了)。 */\n --dshpc-chip-bg:rgba(255,255,255,.08);\n --dshpc-chip-bg-hover:rgba(255,255,255,.16);\n /* 暗色下蓝色要更亮、透明度略高才压得住深底。 */\n --dshpc-open-bg:rgba(96,165,250,.18);\n --dshpc-open-bg-soft:rgba(96,165,250,.08);\n --dshpc-card-hover:rgba(96,165,250,.13);\n /* 语义色**浅底**(深色版):用户嫌深色的绿 / 红「有点深」⇒ 压到 **5%**(浅色段是 8%),\n 更贴近面板底色、存在感更弱;块底与状态色竖条仍同源(竖条是实色,不受这条影响)。 */\n --dshpc-success-soft:color-mix(in srgb,var(--dshpc-success) 5%,transparent);\n --dshpc-warning-soft:color-mix(in srgb,var(--dshpc-warning) 5%,transparent);\n --dshpc-danger-soft:color-mix(in srgb,var(--dshpc-danger) 5%,transparent);\n --dshpc-business-soft:color-mix(in srgb,var(--dshpc-business) 5%,transparent);\n /* 扩展色深色派生:底色写死、hover 掺白 12%/22%(同 business,防白字发糊),soft 5%。 */\n --dshpc-purple-hover:color-mix(in srgb,var(--dshpc-purple) 88%,#ffffff);\n --dshpc-purple-active:color-mix(in srgb,var(--dshpc-purple) 78%,#ffffff);\n --dshpc-purple-soft:color-mix(in srgb,var(--dshpc-purple) 5%,transparent);\n --dshpc-pink-hover:color-mix(in srgb,var(--dshpc-pink) 88%,#ffffff);\n --dshpc-pink-active:color-mix(in srgb,var(--dshpc-pink) 78%,#ffffff);\n --dshpc-pink-soft:color-mix(in srgb,var(--dshpc-pink) 5%,transparent);\n --dshpc-cyan-hover:color-mix(in srgb,var(--dshpc-cyan) 88%,#ffffff);\n --dshpc-cyan-active:color-mix(in srgb,var(--dshpc-cyan) 78%,#ffffff);\n --dshpc-cyan-soft:color-mix(in srgb,var(--dshpc-cyan) 5%,transparent);\n --dshpc-teal-hover:color-mix(in srgb,var(--dshpc-teal) 88%,#ffffff);\n --dshpc-teal-active:color-mix(in srgb,var(--dshpc-teal) 78%,#ffffff);\n --dshpc-teal-soft:color-mix(in srgb,var(--dshpc-teal) 5%,transparent);\n --dshpc-orange-hover:color-mix(in srgb,var(--dshpc-orange) 88%,#ffffff);\n --dshpc-orange-active:color-mix(in srgb,var(--dshpc-orange) 78%,#ffffff);\n --dshpc-orange-soft:color-mix(in srgb,var(--dshpc-orange) 5%,transparent);\n --dshpc-indigo-hover:color-mix(in srgb,var(--dshpc-indigo) 88%,#ffffff);\n --dshpc-indigo-active:color-mix(in srgb,var(--dshpc-indigo) 78%,#ffffff);\n --dshpc-indigo-soft:color-mix(in srgb,var(--dshpc-indigo) 5%,transparent);\n --dshpc-rose-hover:color-mix(in srgb,var(--dshpc-rose) 88%,#ffffff);\n --dshpc-rose-active:color-mix(in srgb,var(--dshpc-rose) 78%,#ffffff);\n --dshpc-rose-soft:color-mix(in srgb,var(--dshpc-rose) 5%,transparent);\n --dshpc-slate-hover:color-mix(in srgb,var(--dshpc-slate) 88%,#ffffff);\n --dshpc-slate-active:color-mix(in srgb,var(--dshpc-slate) 78%,#ffffff);\n --dshpc-slate-soft:color-mix(in srgb,var(--dshpc-slate) 5%,transparent);\n /* 「选中面」(深色版,2026-10-06):掺 **~40% 背景色**(--dshpc-surface-base)⇒ 无限接近页面背景的黑、\n 只比背景略深一点点(用户:深色下展开区压着任务透明绿会发灰,底色要尽量贴近背景才不显灰)。\n ⚠️ 深色下不能掺文字色 —— 那是白,会变亮,选中反而比本月日期浅。 */\n --dshpc-selected-bg:color-mix(in srgb,var(--dshpc-surface-1) 60%,var(--dshpc-surface-base));\n /* 任务日程页本月格的默认底(深色版,2026-10-06):深的、带点灰蓝的暗色(用户给的参考图 ≈ #23262e),\n 比原来的卡片面更沉、更偏蓝灰;选中格仍走 --dshpc-selected-bg(更暗一档),层级不变。 */\n --dshpc-cal-cell-bg:#23262e;\n /* 任务日程页本月格 hover 底(深色段,2026-10-06):原先走 --dshpc-hover(宿主浅色叠加)在深底上显得\n 「灰发亮」,不好看 ⇒ 换成更贴底的蓝调微亮(与 open-bg-soft 同族),hover 时不刺眼、又有反馈。 */\n --dshpc-cal-cell-hover:rgba(96,165,250,.12);\n /* 任务日程页展开面板底(深色段,2026-10-06 续):与原 selected-bg 暗值一致,深色 UI 不动 */\n --dshpc-cal-panel-bg:color-mix(in srgb,var(--dshpc-surface-1) 60%,var(--dshpc-surface-base));\n}\n\n/* ── 细滚动条 + 离边 1px:全库唯一真源 ─────────────────────────────────\n 放在 tokens 域(ensureComponentStyles 每次必注册、且排在所有控件域之前):\n 任何组件只要给滚动容器挂 .dshpc-scroll-thin 就生效,不必另行注入 panel 域。\n 改线宽 / 让位 / 圆角 / 颜色只改这一处;别在别的 CSS 里再抄一份。\n\n 只用 ::-webkit-scrollbar:一旦写 scrollbar-width,Chrome 会切到规范化滚动条、\n 忽略这里的宽度(2026-11-06 实测:留着 scrollbar-width:thin 时宽度回到 ~10px)。\n 2026-11-06 用户口径:1px 太细 ⇒ 线宽起步 2px、thumb 上下端圆角;现行值见下面三行。\n\n 让位(滚动条与容器可见边缘隔 1px)也由这个类负责:原生滚动条画在 padding box 之外、\n border 之内,只有 border 能把它推离边缘(加 padding 无效)。挂类即自动让位,\n 容器不必自己再写透明边框。方向档(CSS 没有 :scrollable,推不出滚动方向,须显式声明):\n .dshpc-scroll-thin 竖滚(默认):右让位\n .dshpc-scroll-thin--x 横滚:底让位,且不叠右\n .dshpc-scroll-thin--both 双向:右 + 底都让位\n --x / --both 必须与基类同挂(线宽规则只认基类)。\n\n 挂 .dshpc-panel 的容器本身已有实色边框 ⇒ :not(.dshpc-panel) 跳过让位:滚动条贴那条\n 实色线即算让位,无条件叠透明边框会把实色右边框覆盖成透明。\n CodeMirror 的 .cm-scroller 由官方生成、挂不上类 ⇒ 后代选择器一并命中线宽与让位;\n 它只让右不让底:给底会改 scroller 高度,CodeMirror 的测量循环会多算一条横滚条。\n 外层若自己不滚(如 CodeViewer),把 --dshpc-scroll-inset-right 设 0px 关掉自身让位,\n 免得外层与 .cm-scroller 两层各 1px 叠成 2px。 */\n/* ⚠️ 下面三行的线宽 / 圆角**必须是字面量**:WebKit 的 ::-webkit-scrollbar 系列伪元素\n 不解析 var(),带变量的声明会被静默丢弃 ⇒ 宽度整条作废、退回默认值。2026-11-06 把\n width:2px 改成 var(--dshpc-scroll-w) 后真机当场打回(用户发现),故线宽不放 token。\n 改线宽只改这一块的三处数字(三处必须同值);让位仍走 --dshpc-scroll-inset。 */\n.dshpc-scroll-thin::-webkit-scrollbar,\n.dshpc-scroll-thin .cm-scroller::-webkit-scrollbar{width:3px;height:3px}\n.dshpc-scroll-thin::-webkit-scrollbar-thumb,\n.dshpc-scroll-thin .cm-scroller::-webkit-scrollbar-thumb{background:var(--dshpc-border-heavy);border-radius:3px}\n.dshpc-scroll-thin::-webkit-scrollbar-track,\n.dshpc-scroll-thin .cm-scroller::-webkit-scrollbar-track{background:transparent}\n.dshpc-scroll-thin:not(.dshpc-panel){border-right:var(--dshpc-scroll-inset-right,var(--dshpc-scroll-inset)) solid transparent}\n.dshpc-scroll-thin--x:not(.dshpc-panel){border-right:0;border-bottom:var(--dshpc-scroll-inset) solid transparent}\n.dshpc-scroll-thin--both:not(.dshpc-panel){border-bottom:var(--dshpc-scroll-inset) solid transparent}\n.dshpc-scroll-thin .cm-scroller{border-right:var(--dshpc-scroll-inset) solid transparent}\n";
3
+ export const TOKENS_CSS_TEMPLATE = "\n/* ── 文字(宿主 label 四档 + 反色面用字)────────────────────────────── */\nbody{\n --dshpc-fg:var(--dsw-alias-label-primary,#1f2328);\n --dshpc-fg-2:var(--dsw-alias-label-secondary,#5c6370);\n --dshpc-fg-3:var(--dsw-alias-label-tertiary,#767d87);\n --dshpc-fg-4:var(--dsw-alias-label-caption,#9aa1ab);\n --dshpc-fg-dim:var(--dsw-alias-label-dimmed,#b9bfc7);\n /* 反色面上的字(实心钮 / 角标):暗色下是 bluish-1000,故用 -foreground 而非 -inverted */\n --dshpc-fg-inverse:var(--dsw-alias-label-primary-foreground,#fff);\n\n /* ── 面(宿主 bg-layer 三档 + 下沉轨道底)──────────────────────────── */\n --dshpc-surface-1:var(--dsw-alias-bg-layer-1,#fff);\n --dshpc-surface-2:var(--dsw-alias-bg-layer-2,#fff);\n --dshpc-surface-3:var(--dsw-alias-bg-layer-3,#fff);\n /* 「选中亮片」的底盘色(配 --dshpc-shadow-raised 用) */\n --dshpc-surface-raised:var(--dsw-alias-bg-layer-1,#fff);\n /* 轨道 / 下沉底(官方分段控件轨道用的就是这条) */\n --dshpc-surface-sunken:var(--dsw-alias-interactive-bg-hover,rgba(38,49,72,.06));\n /* 整页 / 编辑器底(bg-base) */\n --dshpc-surface-base:var(--dsw-alias-bg-base,#fff);\n /* 自绘浮层 / 菜单卡的不透明底(= base;不要用半透明的 specific-menu) */\n --dshpc-surface-menu:var(--dshpc-surface-base);\n /* markdown 代码块面 / 字体(会话镜像里用到) */\n --dshpc-code-surface:var(--dsw-alias-markdown-code-block,rgba(128,128,128,.10));\n --dshpc-code-font:var(--dsw-font-markdown-code-block-small,12px/18px var(--ds-font-family-code,monospace));\n /* 警告文字色(宿主 state-warn-label) */\n --dshpc-warning-label:var(--dsw-alias-state-warn-label,#f5a623);\n /* 固定中性实面(自绘浮层、深色主题下必须自己变的那几个)——只有它需要暗色覆盖 */\n --dshpc-solid:var(--dsw-static-neutral-00,#fff);\n --dshpc-on-solid:var(--dsw-alias-label-primary,#1f2328);\n /* 交付文件卡那种「浅底盘 + hover 加深」两拍 */\n --dshpc-plate:var(--dsw-static-neutral-50,#fafafa);\n --dshpc-plate-hover:var(--dsw-static-neutral-100,#f5f5f5);\n /* ⚠️ 这些**固定中性面一律用 rgba 字面量**(2026-10-19 真机教训):不要写成\n 「rgba 回退行 + 嵌 --dsw-static-* 的 color-mix 行」两条同名声明——自定义属性**后者恒胜**,\n 哪怕它的值在宿主里算不出来(static 变量 invalid)⇒ 整条 token 作废、rgba 兜底一起被废,\n 0.2.6 里 Segmented 轨道全透明就是这么来的。要跟宿主主题联动的面用 alias token(那些实测有效)。 */\n --dshpc-icon-plate:rgba(255,255,255,.5);\n /* 表头底:浅色主题**偏深**,且必须**比斑马纹(--dshpc-plate)再深一档**——\n 两者不能撞色(用户 2026-10-02:表头跟斑马纹一模一样)。 */\n --dshpc-head-bg:var(--dsw-static-neutral-100,#f5f5f5);\n /* 表格底 / 行 hover(2026-10-30 用户二次定案:表头与通栏**互换**底色):\n 表头默认底 = 通栏原来那层灰(--dshpc-surface-sunken,跟着宿主交互面走);\n 通栏默认底 = 表头原来那色(亮 #f6f8fa / 暗 #151b23,参考图实测,与深色段同源);\n 行 hover 是「一层极淡的黑」≈1.5%(用户:再浅一半,要特别淡)。 */\n --dshpc-table-head-bg:var(--dshpc-surface-sunken);\n --dshpc-table-banner-bg:#f6f8fa;\n --dshpc-table-row-hover:rgba(15,15,15,.015);\n /* 图标小底板(产出物):浅色下要**看得见**(原先取 plate ⇒ 在白底上等于没有);hover 加倍。 */\n --dshpc-chip-bg:rgba(15,15,15,.07);\n --dshpc-chip-bg-hover:rgba(15,15,15,.14);\n /* 展开行:**带透明度的蓝**——不是灰、也不是纯色,透出卡片底色,一眼看出「这是展开的」\n (用户 2026-10-02:灰色跟斑马纹分不出来)。内容区再淡一档,形成「行深 / 内容浅」的区隔。 */\n --dshpc-open-bg:rgba(37,99,235,.10);\n --dshpc-open-bg-soft:rgba(37,99,235,.05);\n --dshpc-card-hover:rgba(37,99,235,.07);\n\n /* ── 描边四档(宿主真值:l1 4% / l2 10% / l3 12% / l4 16%)────────── */\n --dshpc-border-faint:var(--dsw-alias-border-l1,#0000000a);\n --dshpc-border:var(--dsw-alias-border-l2,#0000001a);\n --dshpc-border-strong:var(--dsw-alias-border-l3,#0000001f);\n --dshpc-border-heavy:var(--dsw-alias-border-l4,#00000029);\n\n /* ── 品牌 / 语义色 ────────────────────────────────────────────────── */\n /* 品牌「面」色:明色近黑、暗色近白(官方 Switch 选中态即此),**不是蓝色** */\n --dshpc-accent:var(--dsw-alias-brand-primary,#0f1115);\n /* 蓝色:强调 / 选中 / 焦点,一律走这条 */\n --dshpc-business:var(--dsw-alias-state-business-primary,#3b5bdb);\n --dshpc-success:var(--dsw-alias-state-success-primary,#22c55e);\n /* ⚠️ 是 state-warn(不是 state-warning,后者宿主无此定义) */\n --dshpc-warning:var(--dsw-alias-state-warn-primary,#f59e0b);\n --dshpc-danger:var(--dsw-alias-state-error-primary,#ec1313);\n --dshpc-link:var(--dsw-alias-link,#3b5bdb);\n /* 语义色**实面**上的字(角标 / 实心提示):宿主红绿黄三色都是中调 ⇒ 白字两个主题都可读,\n 故这是一条与主题无关的常量;不要拿 --dshpc-fg-inverse 顶——它在暗色下是近黑,压在红底上看不清。 */\n --dshpc-on-signal:#fff;\n /* 黄底上的字:黄色是中高明度,白字看不清 ⇒ 固定深色(与主题无关)。 */\n --dshpc-on-warning:#1f2328;\n /* 告警严重度的圆点底色(2026-11-03 从 feedback.css 收到这里)。\n 与主题无关的一组常量:这几个色要在任意底色上都认得出来,所以**不跟宿主 state 色走**\n (宿主 state-warn-primary 偏亮,压白 ✕ 看不清)。语义色改动请只改这里。 */\n --dshpc-sev-info:#2563eb;\n --dshpc-sev-success:#16a34a;\n --dshpc-sev-warning:#d97706;\n --dshpc-sev-error:#dc2626;\n\n /* ── 实心按钮的 hover / active 派生态(2026-10-19 用户点名)─────────────────\n 原实现是 :hover 直接压 opacity .9:黑底压 10% 几乎看不出来,用户原话「完全感觉不到颜色变了」。\n ⇒ 改成对底色做**明确的混色**(压 22% / 34%),不用 opacity:\n · 亮色主题:黑底(--dshpc-accent)掺白提亮;红 / 绿 / 黄 / 蓝底掺黑压深;\n · 暗色主题:反过来(暗底掺白、亮底掺黑)。\n 混色对象是**固定中性色字面量**(#fff / #000),不依赖宿主 static-neutral 是否存在;\n 旧内核不认 color-mix 时整条声明作废 ⇒ 回落各档原色(可接受:仍可点,只是没有 hover 反馈)。 */\n --dshpc-accent-hover:color-mix(in srgb,var(--dshpc-accent) 78%,#ffffff);\n --dshpc-accent-active:color-mix(in srgb,var(--dshpc-accent) 64%,#ffffff);\n --dshpc-danger-hover:color-mix(in srgb,var(--dshpc-danger) 78%,#000000);\n --dshpc-danger-active:color-mix(in srgb,var(--dshpc-danger) 64%,#000000);\n --dshpc-success-hover:color-mix(in srgb,var(--dshpc-success) 78%,#000000);\n --dshpc-success-active:color-mix(in srgb,var(--dshpc-success) 64%,#000000);\n --dshpc-warning-hover:color-mix(in srgb,var(--dshpc-warning) 78%,#000000);\n --dshpc-warning-active:color-mix(in srgb,var(--dshpc-warning) 64%,#000000);\n --dshpc-business-hover:color-mix(in srgb,var(--dshpc-business) 78%,#000000);\n --dshpc-business-active:color-mix(in srgb,var(--dshpc-business) 64%,#000000);\n /* 语义色**浅底**:状态色系的「一块底色」——执行记录页每条流水账的块底就是它\n (用户 2026-10-04:正常态给同色系很浅的透明底、失败用红底透出来)。\n 用 「color-mix」 现算而不写死 rgba:状态色本身跟随宿主 alias,主题一换自动成立。\n ⚠️ **深色下要更淡**:用户 2026-10-04「深色风格的绿色和红色好像都有点深」⇒ dark 段\n 把这四条压到 5%(更贴近面板底、存在感更弱);浅色段维持 8%。两端各自给值,不共用一条曲线。\n 命名收在 tokens.ts 单点(本仓硬规矩:业务文件不许自造 --dshpc-*)。 */\n --dshpc-success-soft:color-mix(in srgb,var(--dshpc-success) 8%,transparent);\n --dshpc-warning-soft:color-mix(in srgb,var(--dshpc-warning) 8%,transparent);\n --dshpc-danger-soft:color-mix(in srgb,var(--dshpc-danger) 8%,transparent);\n --dshpc-business-soft:color-mix(in srgb,var(--dshpc-business) 8%,transparent);\n\n /* ── 扩展语义色(2026-10-29 用户拍板:分类 / 图表常用色八支)──────────────\n 宿主无对应 alias ⇒ 写死 hex(不跟随宿主换肤);实心面字色统一走 --dshpc-on-signal(白),\n 因八支明度都低于黄 / 青柠,白字两主题均 ≥4.5:1 可读。每条自带 hover/active/soft 派生;\n 暗色段只覆盖派生(base 写死、两主题同值)。 */\n --dshpc-purple:#9333ea;\n --dshpc-purple-hover:color-mix(in srgb,var(--dshpc-purple) 78%,#000000);\n --dshpc-purple-active:color-mix(in srgb,var(--dshpc-purple) 64%,#000000);\n --dshpc-purple-soft:color-mix(in srgb,var(--dshpc-purple) 8%,transparent);\n --dshpc-pink:#db2777;\n --dshpc-pink-hover:color-mix(in srgb,var(--dshpc-pink) 78%,#000000);\n --dshpc-pink-active:color-mix(in srgb,var(--dshpc-pink) 64%,#000000);\n --dshpc-pink-soft:color-mix(in srgb,var(--dshpc-pink) 8%,transparent);\n --dshpc-cyan:#0e7490;\n --dshpc-cyan-hover:color-mix(in srgb,var(--dshpc-cyan) 78%,#000000);\n --dshpc-cyan-active:color-mix(in srgb,var(--dshpc-cyan) 64%,#000000);\n --dshpc-cyan-soft:color-mix(in srgb,var(--dshpc-cyan) 8%,transparent);\n --dshpc-teal:#0f766e;\n --dshpc-teal-hover:color-mix(in srgb,var(--dshpc-teal) 78%,#000000);\n --dshpc-teal-active:color-mix(in srgb,var(--dshpc-teal) 64%,#000000);\n --dshpc-teal-soft:color-mix(in srgb,var(--dshpc-teal) 8%,transparent);\n --dshpc-orange:#c2410c;\n --dshpc-orange-hover:color-mix(in srgb,var(--dshpc-orange) 78%,#000000);\n --dshpc-orange-active:color-mix(in srgb,var(--dshpc-orange) 64%,#000000);\n --dshpc-orange-soft:color-mix(in srgb,var(--dshpc-orange) 8%,transparent);\n --dshpc-indigo:#4f46e5;\n --dshpc-indigo-hover:color-mix(in srgb,var(--dshpc-indigo) 78%,#000000);\n --dshpc-indigo-active:color-mix(in srgb,var(--dshpc-indigo) 64%,#000000);\n --dshpc-indigo-soft:color-mix(in srgb,var(--dshpc-indigo) 8%,transparent);\n --dshpc-rose:#e11d48;\n --dshpc-rose-hover:color-mix(in srgb,var(--dshpc-rose) 78%,#000000);\n --dshpc-rose-active:color-mix(in srgb,var(--dshpc-rose) 64%,#000000);\n --dshpc-rose-soft:color-mix(in srgb,var(--dshpc-rose) 8%,transparent);\n --dshpc-slate:#475569;\n --dshpc-slate-hover:color-mix(in srgb,var(--dshpc-slate) 78%,#000000);\n --dshpc-slate-active:color-mix(in srgb,var(--dshpc-slate) 64%,#000000);\n --dshpc-slate-soft:color-mix(in srgb,var(--dshpc-slate) 8%,transparent);\n\n /* ⚠️ 2026-10-18 用户拍板:宿主 alias 的 hover(暗色白 8% / 亮色 6%)**太弱**,\n 「移上去要仔细看才看得出来」⇒ 不再委托宿主 hover 别名,改为自掺中性色并加重:\n 亮色掺黑 10%、暗色掺白 14%(active 再加一档)。按钮 / 分段轨道 / 各类 hover 底同时受益。\n ⚠️ 必须保留 rgba 兜底行在前(本文件惯例,见 icon-plate 注释):掺的是**固定中性色**\n (neutral-900=#0f0f0f / neutral-00=#fff),预计算无损;旧内核不认 color-mix 时走兜底,\n 否则整条 background:var(--seg-track) 作废 ⇒ 分段轨道透明(真踩过:预览站轨道消失)。 */\n --dshpc-hover:rgba(15,15,15,.10);\n --dshpc-active:rgba(15,15,15,.18);\n /* 分段控件轨道底:专用 token(rgba 字面量、不借 --dshpc-hover 中转)——\n 2026-10-19 教训:变量链中间任何一环 invalid ⇒ background 整条作废、轨道全透明。\n 亮色:黑 7%(比 hover 的 10% 淡一档,选中白片才跳得出)。 */\n --dshpc-seg-track:rgba(15,15,15,.07);\n --dshpc-mask:var(--dsw-alias-bg-mask-1,#0000003d);\n /* 弹窗锁定态给**自绘控件**的降透明度档(2026-11-05)。放在 token 里是为了让消费方\n 在自己元素上写 --dshpc-lock-dim: 1 就能退出这条效果,不用 !important 打架。 */\n --dshpc-lock-dim:.5;\n /* 「选中面」(2026-10-06,任务日程页首创)= 当前底色**朝更深掺 12% 文字色**:\n 浅色主题下文字色是黑 ⇒ 选中面比常态底色**深一档**。深色分支见 body[data-ds-dark-theme](朝背景色掺)。\n 语义:标记「正在看的东西」,比常态明显、又不许盖住内容(不许用半透明叠状态色)。 */\n --dshpc-selected-bg:color-mix(in srgb,var(--dshpc-surface-1) 88%,var(--dshpc-fg));\n /* ListRow 选中面(2026-11-07 用户定):slate 的**极浅蓝灰**,不用上面那条通用「选中面」。\n 通用值亮色是掺文字色的中性灰、暗色是两个深色面互掺 ⇒ 深色下选中行发黑(用户实测)。\n 这里从 --dshpc-slate 派生半透明浅色:亮色 14% 叠白 ≈ #e5e7ea,比常态 tone-sunken\n 深一档才看得出「选中」;暗色浓度见 body[data-ds-dark-theme] 段。 */\n --dshpc-listrow-selected-bg:color-mix(in srgb,var(--dshpc-slate) 14%,transparent);\n /* ListRow hover(2026-11-07 用户:原来取 --dshpc-active 太夸张,「有一点变化就行」):\n 常态 tone-sunken 是 6% 蓝灰叠白 ≈ #f0f1f3,这里只加深到 9% 中性黑 ≈ #e8e8e8,\n 能看出移上去了,又不会把整行内容和文字对比度一起改掉。暗色档见 body[data-ds-dark-theme]。 */\n --dshpc-listrow-hover-bg:rgba(15,15,15,.09);\n /* 任务日程页本月格默认底(2026-10-06 → 续2):浅色下给**淡蓝**(business 8% 透白底)——\n 参照用户参考稿里未选中日程块 / Tuesday 列的那种蓝、再浅一点点;\n 相邻月补位格仍走 --dshpc-surface-2(更灰),不受影响。\n 深色段维持 #23262e(用户:深色 UI 已差不多,不动)。 */\n --dshpc-cal-cell-bg:color-mix(in srgb,var(--dshpc-business) 8%,var(--dshpc-surface-1));\n /* 任务日程页「点开某天」展开的面板底(2026-10-06 续):浅色下**无限接近白、只带一丁点灰**\n (neutral-50 = #fafafa)——面板里装半透明执行记录列表,底再深整片就发糊发灰;\n 深色段沿用原 selected-bg 暗值,保持不动。 */\n --dshpc-cal-panel-bg:var(--dsw-static-neutral-50,#fafafa);\n /* 任务日程页本月格 hover 底(浅色段,2026-10-06 续3):不再走灰色通用交互底——\n 鼠标移上去应是「更亮一点点的蓝」(与深色段同语义:hover = 提亮的蓝,不是灰下去)。\n 浓度**介于**表头蓝(14%)与未选中格蓝(8%)之间、略偏表头一侧:business 12% 透白底\n (比表头浅一点、比未选中格深一点)。 */\n --dshpc-cal-cell-hover:color-mix(in srgb,var(--dshpc-business) 12%,var(--dshpc-surface-1));\n\n /* ── 投影 / 焦点 ──────────────────────────────────────────────────── */\n --dshpc-shadow-1:var(--dsw-elevation-soft,0 4px 16px 0 #00000008);\n /* 亮片自带的浮起感(选中态用;与 --dshpc-surface-raised 配对) */\n --dshpc-shadow-raised:var(--dsw-elevation-soft,0 4px 16px 0 #00000008);\n --dshpc-shadow-2:var(--dsw-shadow-lv3,0 12px 32px 0 #00000014);\n /* 键盘焦点环。⚠️ 不用宿主 --dsw-focus-ring-color:它默认值是 transparent(兜底不生效、会隐身) */\n --dshpc-focus:var(--dsw-alias-state-business-primary,#3b5bdb);\n\n /* ── 圆角(宿主真值 4 / 8 / 12 / 16 / 20 / 28)─────────────────────── */\n --dshpc-radius-xs:var(--dsw-radius-xs,4px);\n --dshpc-radius-sm:var(--dsw-radius-sm,8px);\n --dshpc-radius-md:var(--dsw-radius-md,12px);\n --dshpc-radius-lg:var(--dsw-radius-lg,16px);\n --dshpc-radius-xl:var(--dsw-radius-xl,20px);\n --dshpc-radius-panel:var(--dsw-radius-panel,28px);\n /* 全圆(胶囊标签):宿主的 radius 档最大只有 28px,撑不满 24px 高的 chip */\n --dshpc-radius-pill:999px;\n\n /* ── 间距四拍(只许用这四档,不许出现 5 / 7 / 9px)────────────────── */\n --dshpc-space-1:4px;\n --dshpc-space-2:8px;\n --dshpc-space-3:12px;\n --dshpc-space-4:16px;\n\n /* ── 控件高度:离散三档(控件用 size=\"sm|md|lg\" 选;调用点不许自定义高度,\n 真不够用才允许在调用点本地覆盖 --dshpc-control-h-*,属例外而非常态)── */\n --dshpc-control-h-sm:24px;\n --dshpc-control-h-md:28px;\n --dshpc-control-h-lg:32px;\n\n /* ── 字号 / 行高:直绑宿主字号族(宿主真值 11 / 12 / 13 / 14 / 16)───── */\n --dshpc-font-xs:var(--dsw-font-xxxs-11-font-size,11px);\n --dshpc-font-sm:var(--dsw-font-xxs-12-font-size,12px);\n --dshpc-font-md:var(--dsw-font-xs-13-font-size,13px);\n --dshpc-font-lg:var(--dsw-font-s-14-font-size,14px);\n --dshpc-font-xl:var(--dsw-font-base-16-font-size,16px);\n --dshpc-line-xs:var(--dsw-font-xxxs-11-line-height,14px);\n --dshpc-line-sm:var(--dsw-font-xxs-12-line-height,18px);\n --dshpc-line-md:var(--dsw-font-xs-13-line-height,20px);\n --dshpc-line-lg:var(--dsw-font-s-14-line-height,22px);\n --dshpc-line-xl:var(--dsw-font-base-16-line-height,24px);\n --dshpc-font-mono:var(--ds-font-family-code,monospace);\n\n /* ── 细滚动条的让位值(线宽不能放 token,见文件末尾的注释)──────────\n 1px→2px 只改这一行;它用在普通元素上,var() 能正常解析。 */\n --dshpc-scroll-inset:1px;\n\n /* ── 层级阶梯(业务文件不许再写裸 z-index)───────────────────────── */\n /* 页面级预览分栏 → 抽屉(新建/编辑)→ 弹窗/确认框 → 浮层菜单 → 浮层提示 */\n /* **整条阶梯都必须低于官方浮点 1000 档**(2026-11-06 用户拍板):官方原语\n Modal / ImageLightbox 是 z-index 1000(body portal),Menu / Toast 是 1100。\n 我们只是宿主里的一个页面 ⇒ 宿主浮点恒在我们之上;以后弹窗里再开官方模态/预览,\n 不必逐个场景「临时让位」(此前 1070 压住官方原图预览就是这么踩出来的)。 */\n /* 内容层吸顶(天标签 / 表头这类「跟着滚但压住同层内容」的元素):只压同层兄弟,\n 必须低于下面所有浮层档 —— 所以它不是「开新浮层档」,而是内容层内部的排序位。 */\n --dshpc-z-sticky:10;\n --dshpc-z-dock:900;\n --dshpc-z-drawer:920;\n --dshpc-z-modal:940;\n /* 收起后的耳朵:必须高于弹窗遮罩,否则弹窗一开就点不到它(2026-11-04 用户真机)。\n 只给耳朵用,页面级分栏本体仍是布局成员,不跟着抬高。 */\n --dshpc-z-ear:950;\n --dshpc-z-menu:960;\n --dshpc-z-tip:970;\n /* 语义别名(2026-11-03 面板皮肤统一):业务文件只许用这两个说「我要一层浮层」,\n 不再各自写浮层字面量。\n panel = 浮层面板本体(picker 弹窗、锚定面板);\n popmenu = 叠在面板之上的菜单(▾ 选层、Picker 下拉)与其透明遮罩。 */\n --dshpc-z-panel:var(--dshpc-z-menu);\n --dshpc-z-popmenu:var(--dshpc-z-tip);\n\n /* ── 动效 ─────────────────────────────────────────────────────────── */\n --dshpc-dur:var(--ds-transition-duration,.2s);\n --dshpc-dur-fast:var(--ds-transition-duration-fast,.12s);\n --dshpc-ease:var(--ds-ease-in-out,cubic-bezier(.4,0,.2,1));\n /* 运行中状态的脉动时长(2026-10-06 统一前后两端:任务配置里的绿呼吸 → 蓝、放慢;\n 执行记录里的蓝闪 → 放慢一点。两者用同一个值,动画形状本就一致)。 */\n --dshpc-dur-run:500ms;\n}\n\n/* ── 明暗差异的**唯一**落点 ──────────────────────────────────────────────\n 判据 = body[data-ds-dark-theme](宿主 0.2.0-rc.2 源码核实:启动脚本 toggleAttribute 写入,\n 唯一明暗判据;插件禁止用 prefers-color-scheme —— 它跟的是系统、不是用户在宿主里的选择)。\n 下面只放 alias 表达不了的「固定中性面」;颜色若能靠 alias 自动跟随,一律不要写在这里。 */\nbody[data-ds-dark-theme]{\n /* 深色段的蓝**刻意不跟随宿主 alias**(唯一例外):宿主暗色 alias 给的是 #60a5fa 一档的高亮蓝,\n 实心面(Chip / Button info / 日期选中格)压白字会发糊 —— 用户 2026-10-29 实测反馈。\n ⇒ 深色下改定向浅色状态的蓝(#3b5bdb)靠,只在明度上抬一点点,保证它在暗底上仍看得见:\n #4c6bd8 对白字 ≈4.8:1(原亮蓝只有 ~2.3:1),对日历格底 ≈3.2:1 仍过 UI 件的 3:1 线。\n 代价:宿主换品牌色时深色不再自动跟着变,需要这里手动同步。 */\n --dshpc-business:#4c6bd8;\n --dshpc-solid:var(--dsw-static-neutral-900,#0f0f0f);\n --dshpc-on-solid:var(--dsw-static-neutral-00,#fff);\n /* 实心按钮 hover / active(暗色版):黑底(浅色主题的近黑 → 暗色下的近白)掺黑压深;\n 红 / 绿 / 黄 / 蓝掺白提亮。与亮色段方向相反,保证两种主题下「一眼看出变了」。 */\n --dshpc-accent-hover:color-mix(in srgb,var(--dshpc-accent) 80%,#000000);\n --dshpc-accent-active:color-mix(in srgb,var(--dshpc-accent) 66%,#000000);\n --dshpc-danger-hover:color-mix(in srgb,var(--dshpc-danger) 78%,#ffffff);\n --dshpc-danger-active:color-mix(in srgb,var(--dshpc-danger) 64%,#ffffff);\n --dshpc-success-hover:color-mix(in srgb,var(--dshpc-success) 78%,#ffffff);\n --dshpc-success-active:color-mix(in srgb,var(--dshpc-success) 64%,#ffffff);\n --dshpc-warning-hover:color-mix(in srgb,var(--dshpc-warning) 78%,#ffffff);\n --dshpc-warning-active:color-mix(in srgb,var(--dshpc-warning) 64%,#ffffff);\n /* 同上:掺白比例从 22% / 36% 收到 12% / 22% —— 底色已变深,照旧比例提亮会在 hover 瞬间\n 把白字对比打回 ~3:1(正是用户嫌糊的那一档);收窄后 hover 仍可感知、字仍清晰。 */\n --dshpc-business-hover:color-mix(in srgb,var(--dshpc-business) 88%,#ffffff);\n --dshpc-business-active:color-mix(in srgb,var(--dshpc-business) 78%,#ffffff);\n /* 暗色 hover 掺白 14% / active 24%(对齐上面 2026-10-18 的加重拍板)。rgba 兜底行同上。 */\n --dshpc-hover:rgba(255,255,255,.14);\n --dshpc-active:rgba(255,255,255,.24);\n /* 分段轨道(暗色版):白 10%——比 hover 淡一档,选中亮片才跳得出。 */\n --dshpc-seg-track:rgba(255,255,255,.10);\n --dshpc-plate:var(--dsw-static-neutral-850,#212123);\n --dshpc-plate-hover:var(--dsw-static-neutral-800,#292929);\n --dshpc-icon-plate:rgba(255,255,255,.05);\n /* 暗色主题**反过来**:表头要比卡片面**亮**、比斑马纹再**浅一档**(用户:纯黑背景没法看)。 */\n --dshpc-head-bg:var(--dshpc-surface-2);\n /* 表格(2026-10-30 用户二次定案:与通栏互换底色):通栏底取表头原来那色 #151b23\n (亮色段对应 #f6f8fa);表头默认底沿用亮色段定义的 --dshpc-surface-sunken,不在暗色段重写;\n 行 hover 是「一层极淡的白」≈3% —— 暗底上用黑会越悬越暗,看不出「浅灰」反馈。 */\n --dshpc-table-banner-bg:#151b23;\n --dshpc-table-row-hover:rgba(255,255,255,.03);\n /* 暗色底板**微亮**;hover **更亮**(原先 hover 取 plate-hover 反而更淡 ⇒ 鼠标移上去就没了)。 */\n --dshpc-chip-bg:rgba(255,255,255,.08);\n --dshpc-chip-bg-hover:rgba(255,255,255,.16);\n /* 暗色下蓝色要更亮、透明度略高才压得住深底。 */\n --dshpc-open-bg:rgba(96,165,250,.18);\n --dshpc-open-bg-soft:rgba(96,165,250,.08);\n --dshpc-card-hover:rgba(96,165,250,.13);\n /* 语义色**浅底**(深色版):用户嫌深色的绿 / 红「有点深」⇒ 压到 **5%**(浅色段是 8%),\n 更贴近面板底色、存在感更弱;块底与状态色竖条仍同源(竖条是实色,不受这条影响)。 */\n --dshpc-success-soft:color-mix(in srgb,var(--dshpc-success) 5%,transparent);\n --dshpc-warning-soft:color-mix(in srgb,var(--dshpc-warning) 5%,transparent);\n --dshpc-danger-soft:color-mix(in srgb,var(--dshpc-danger) 5%,transparent);\n --dshpc-business-soft:color-mix(in srgb,var(--dshpc-business) 5%,transparent);\n /* 扩展色深色派生:底色写死、hover 掺白 12%/22%(同 business,防白字发糊),soft 5%。 */\n --dshpc-purple-hover:color-mix(in srgb,var(--dshpc-purple) 88%,#ffffff);\n --dshpc-purple-active:color-mix(in srgb,var(--dshpc-purple) 78%,#ffffff);\n --dshpc-purple-soft:color-mix(in srgb,var(--dshpc-purple) 5%,transparent);\n --dshpc-pink-hover:color-mix(in srgb,var(--dshpc-pink) 88%,#ffffff);\n --dshpc-pink-active:color-mix(in srgb,var(--dshpc-pink) 78%,#ffffff);\n --dshpc-pink-soft:color-mix(in srgb,var(--dshpc-pink) 5%,transparent);\n --dshpc-cyan-hover:color-mix(in srgb,var(--dshpc-cyan) 88%,#ffffff);\n --dshpc-cyan-active:color-mix(in srgb,var(--dshpc-cyan) 78%,#ffffff);\n --dshpc-cyan-soft:color-mix(in srgb,var(--dshpc-cyan) 5%,transparent);\n --dshpc-teal-hover:color-mix(in srgb,var(--dshpc-teal) 88%,#ffffff);\n --dshpc-teal-active:color-mix(in srgb,var(--dshpc-teal) 78%,#ffffff);\n --dshpc-teal-soft:color-mix(in srgb,var(--dshpc-teal) 5%,transparent);\n --dshpc-orange-hover:color-mix(in srgb,var(--dshpc-orange) 88%,#ffffff);\n --dshpc-orange-active:color-mix(in srgb,var(--dshpc-orange) 78%,#ffffff);\n --dshpc-orange-soft:color-mix(in srgb,var(--dshpc-orange) 5%,transparent);\n --dshpc-indigo-hover:color-mix(in srgb,var(--dshpc-indigo) 88%,#ffffff);\n --dshpc-indigo-active:color-mix(in srgb,var(--dshpc-indigo) 78%,#ffffff);\n --dshpc-indigo-soft:color-mix(in srgb,var(--dshpc-indigo) 5%,transparent);\n --dshpc-rose-hover:color-mix(in srgb,var(--dshpc-rose) 88%,#ffffff);\n --dshpc-rose-active:color-mix(in srgb,var(--dshpc-rose) 78%,#ffffff);\n --dshpc-rose-soft:color-mix(in srgb,var(--dshpc-rose) 5%,transparent);\n --dshpc-slate-hover:color-mix(in srgb,var(--dshpc-slate) 88%,#ffffff);\n --dshpc-slate-active:color-mix(in srgb,var(--dshpc-slate) 78%,#ffffff);\n --dshpc-slate-soft:color-mix(in srgb,var(--dshpc-slate) 5%,transparent);\n /* 「选中面」(深色版,2026-10-06):掺 **~40% 背景色**(--dshpc-surface-base)⇒ 无限接近页面背景的黑、\n 只比背景略深一点点(用户:深色下展开区压着任务透明绿会发灰,底色要尽量贴近背景才不显灰)。\n ⚠️ 深色下不能掺文字色 —— 那是白,会变亮,选中反而比本月日期浅。 */\n --dshpc-selected-bg:color-mix(in srgb,var(--dshpc-surface-1) 60%,var(--dshpc-surface-base));\n /* ListRow 选中面(暗色版):slate 掺到 26% —— 深底上泛蓝灰,绝不退回接近背景的黑。\n slate 是中明度蓝灰,暗底上要比亮色掺得更浓才看得出(亮色 14% / 暗色 26%)。 */\n --dshpc-listrow-selected-bg:color-mix(in srgb,var(--dshpc-slate) 26%,transparent);\n /* 暗色 hover:常态 6% 白 → 10% 白,只提亮一点点(原来是 active 的 24% 白,太跳)。 */\n --dshpc-listrow-hover-bg:rgba(255,255,255,.10);\n /* 任务日程页本月格的默认底(深色版,2026-10-06):深的、带点灰蓝的暗色(用户给的参考图 ≈ #23262e),\n 比原来的卡片面更沉、更偏蓝灰;选中格仍走 --dshpc-selected-bg(更暗一档),层级不变。 */\n --dshpc-cal-cell-bg:#23262e;\n /* 任务日程页本月格 hover 底(深色段,2026-10-06):原先走 --dshpc-hover(宿主浅色叠加)在深底上显得\n 「灰发亮」,不好看 ⇒ 换成更贴底的蓝调微亮(与 open-bg-soft 同族),hover 时不刺眼、又有反馈。 */\n --dshpc-cal-cell-hover:rgba(96,165,250,.12);\n /* 任务日程页展开面板底(深色段,2026-10-06 续):与原 selected-bg 暗值一致,深色 UI 不动 */\n --dshpc-cal-panel-bg:color-mix(in srgb,var(--dshpc-surface-1) 60%,var(--dshpc-surface-base));\n}\n\n/* ── 细滚动条 + 离边 1px:全库唯一真源 ─────────────────────────────────\n 放在 tokens 域(ensureComponentStyles 每次必注册、且排在所有控件域之前):\n 任何组件只要给滚动容器挂 .dshpc-scroll-thin 就生效,不必另行注入 panel 域。\n 改线宽 / 让位 / 圆角 / 颜色只改这一处;别在别的 CSS 里再抄一份。\n\n 只用 ::-webkit-scrollbar:一旦写 scrollbar-width,Chrome 会切到规范化滚动条、\n 忽略这里的宽度(2026-11-06 实测:留着 scrollbar-width:thin 时宽度回到 ~10px)。\n 2026-11-06 用户口径:1px 太细 ⇒ 线宽起步 2px、thumb 上下端圆角;现行值见下面三行。\n\n 让位(滚动条与容器可见边缘隔 1px)也由这个类负责:原生滚动条画在 padding box 之外、\n border 之内,只有 border 能把它推离边缘(加 padding 无效)。挂类即自动让位,\n 容器不必自己再写透明边框。方向档(CSS 没有 :scrollable,推不出滚动方向,须显式声明):\n .dshpc-scroll-thin 竖滚(默认):右让位\n .dshpc-scroll-thin--x 横滚:底让位,且不叠右\n .dshpc-scroll-thin--both 双向:右 + 底都让位\n --x / --both 必须与基类同挂(线宽规则只认基类)。\n\n 挂 .dshpc-panel 的容器本身已有实色边框 ⇒ :not(.dshpc-panel) 跳过让位:滚动条贴那条\n 实色线即算让位,无条件叠透明边框会把实色右边框覆盖成透明。\n CodeMirror 的 .cm-scroller 由官方生成、挂不上类 ⇒ 后代选择器一并命中线宽与让位;\n 它只让右不让底:给底会改 scroller 高度,CodeMirror 的测量循环会多算一条横滚条。\n 外层若自己不滚(如 CodeViewer),把 --dshpc-scroll-inset-right 设 0px 关掉自身让位,\n 免得外层与 .cm-scroller 两层各 1px 叠成 2px。 */\n/* ⚠️ 下面三行的线宽 / 圆角**必须是字面量**:WebKit 的 ::-webkit-scrollbar 系列伪元素\n 不解析 var(),带变量的声明会被静默丢弃 ⇒ 宽度整条作废、退回默认值。2026-11-06 把\n width:2px 改成 var(--dshpc-scroll-w) 后真机当场打回(用户发现),故线宽不放 token。\n 改线宽只改这一块的三处数字(三处必须同值);让位仍走 --dshpc-scroll-inset。 */\n.dshpc-scroll-thin::-webkit-scrollbar,\n.dshpc-scroll-thin .cm-scroller::-webkit-scrollbar{width:3px;height:3px}\n.dshpc-scroll-thin::-webkit-scrollbar-thumb,\n.dshpc-scroll-thin .cm-scroller::-webkit-scrollbar-thumb{background:var(--dshpc-border-heavy);border-radius:3px}\n.dshpc-scroll-thin::-webkit-scrollbar-track,\n.dshpc-scroll-thin .cm-scroller::-webkit-scrollbar-track{background:transparent}\n.dshpc-scroll-thin:not(.dshpc-panel){border-right:var(--dshpc-scroll-inset-right,var(--dshpc-scroll-inset)) solid transparent}\n.dshpc-scroll-thin--x:not(.dshpc-panel){border-right:0;border-bottom:var(--dshpc-scroll-inset) solid transparent}\n.dshpc-scroll-thin--both:not(.dshpc-panel){border-bottom:var(--dshpc-scroll-inset) solid transparent}\n.dshpc-scroll-thin .cm-scroller{border-right:var(--dshpc-scroll-inset) solid transparent}\n";
4
4
  //# sourceMappingURL=tokens-css.generated.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tokens-css.generated.js","sourceRoot":"","sources":["../../src/design/tokens-css.generated.ts"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,qEAAqE;AACrE,MAAM,CAAC,MAAM,mBAAmB,GAAG,23qBAA23qB,CAAA"}
1
+ {"version":3,"file":"tokens-css.generated.js","sourceRoot":"","sources":["../../src/design/tokens-css.generated.ts"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,qEAAqE;AACrE,MAAM,CAAC,MAAM,mBAAmB,GAAG,qvsBAAqvsB,CAAA"}
@@ -40,6 +40,8 @@ export interface ButtonProps {
40
40
  onBusyChange?: (busy: boolean) => void;
41
41
  /** 撑满父宽。 */
42
42
  block?: boolean;
43
+ /** 紧凑图标档:高度不变,图标放大、内距收紧(给描边细的文档 / 语言图标用)。 */
44
+ dense?: boolean;
43
45
  /**
44
46
  * 固定宽(px 或任意 CSS 宽度值)。与 `minWidth` / `maxWidth` 互斥:一旦设定,后两者自动失效。
45
47
  */
@@ -64,6 +66,8 @@ export interface IconButtonProps {
64
66
  variant?: 'plain' | 'outline' | 'danger';
65
67
  /** 高度档(默认 lg)。 */
66
68
  size?: ButtonSize;
69
+ /** 紧凑图标档:宽高不变,图标放大、四周留白变小(与 Button.dense 同名同义)。 */
70
+ dense?: boolean;
67
71
  /** 图标(必填)。 */
68
72
  icon: ReactNode;
69
73
  /** 无障碍名(必填;同时作为默认 title)。 */
@@ -1 +1 @@
1
- {"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../../src/ui/actions/Button.ts"],"names":[],"mappings":"AAwBA,OAAO,EACL,aAAa,IAAI,CAAC,EAClB,KAAK,aAAa,EAAE,KAAK,UAAU,EAAE,KAAK,SAAS,EACpD,MAAM,OAAO,CAAA;AAMd,aAAa;AACb,MAAM,MAAM,aAAa,GACrB,SAAS,GACT,WAAW,GACX,SAAS,GACT,OAAO,GACP,QAAQ,GACR,SAAS,GACT,SAAS,GACT,MAAM,GACN,gBAAgB,GAChB,MAAM,GACN,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAA;AAEhF,oCAAoC;AACpC,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAA;AAc3C,MAAM,WAAW,WAAW;IAC1B,uBAAuB;IACvB,OAAO,CAAC,EAAE,aAAa,CAAA;IACvB,kBAAkB;IAClB,IAAI,CAAC,EAAE,UAAU,CAAA;IACjB,gCAAgC;IAChC,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,6BAA6B;IAC7B,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,yDAAyD;IACzD,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB;;;;;;;OAOG;IACH,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB;;;OAGG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,iBAAiB,CAAC,KAAK,OAAO,CAAA;IAC3D;;;OAGG;IACH,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;IACtC,YAAY;IACZ,KAAK,CAAC,EAAE,OAAO,CAAA;IACf;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACvB,qCAAqC;IACrC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IAC1B;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IAC1B,2CAA2C;IAC3C,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,2BAA2B;IAC3B,KAAK,CAAC,EAAE,aAAa,CAAA;IACrB,eAAe;IACf,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB,wEAAwE;IACxE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB;AAED,MAAM,WAAW,eAAe;IAC9B,6BAA6B;IAC7B,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,QAAQ,CAAA;IACxC,kBAAkB;IAClB,IAAI,CAAC,EAAE,UAAU,CAAA;IACjB,cAAc;IACd,IAAI,EAAE,SAAS,CAAA;IACf,6BAA6B;IAC7B,KAAK,EAAE,MAAM,CAAA;IACb,mCAAmC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,yCAAyC;IACzC,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,4DAA4D;IAC5D,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,iDAAiD;IACjD,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,iBAAiB,CAAC,KAAK,OAAO,CAAA;IAC3D,8BAA8B;IAC9B,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;IACtC,gBAAgB;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,YAAY;IACZ,KAAK,CAAC,EAAE,aAAa,CAAA;IACrB,0BAA0B;IAC1B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB;AA8DD;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CA0F/D;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAiCvE"}
1
+ {"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../../src/ui/actions/Button.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,7 @@
10
10
  * - `size`:`sm`(24) / `md`(28) / `lg`(32) —— 高度一律吃 `--dshpc-control-h-*`,
11
11
  * **有边 / 无边同高**(边框在内部补回)
12
12
  * - `block`:撑满父宽
13
+ * - `dense`:图标放大一档、内距收紧(高度不变),Button / IconButton 同名同义
13
14
  *
14
15
  * 内容轴:`icon`(前置)/ `iconRight`(后置)/ `loading`(前置小圈并自动禁用)。
15
16
  * 颜色轴:任一档都可以再用 `color` 传任意 CSS 色值 —— 只覆盖 `--btn-*` 几个变量,
@@ -58,8 +59,9 @@ function colorVars(variant, color) {
58
59
  };
59
60
  }
60
61
  /** 组装按钮 class(结构一套 + 轴类)。 */
61
- function buttonClass(variant, size, block, hasIcon, extra) {
62
+ function buttonClass(variant, size, block, hasIcon, dense, extra) {
62
63
  return `dshpc-btn dshpc-btn--${variant} dshpc-btn--${size}`
64
+ + `${dense ? ' dshpc-btn--dense' : ''}`
63
65
  + `${block ? ' dshpc-btn--block' : ''}`
64
66
  // 前置图标标记:block 时靠它把文字拉回视觉中心(见 controls-css 的 --icon-start 规则)
65
67
  + `${hasIcon ? ' dshpc-btn--icon-start' : ''}`
@@ -101,7 +103,7 @@ function useAsyncClick(onClick, onBusyChange, onBusyStart) {
101
103
  */
102
104
  export function Button(props) {
103
105
  ensureComponentStyles('button', BUTTON_CSS);
104
- const { variant = 'outline', size = 'lg', icon, iconRight, color, loading: loadingProp = false, loadingText = true, block = false, width, minWidth, maxWidth, className, style, children, onClick, onBusyChange, ...rest } = props;
106
+ const { variant = 'outline', size = 'lg', icon, iconRight, color, loading: loadingProp = false, loadingText = true, block = false, dense = false, width, minWidth, maxWidth, className, style, children, onClick, onBusyChange, ...rest } = props;
105
107
  const btnRef = useRef(null);
106
108
  // 「有文案时的宽度」:只在非 loading 的布局里记,loading 时用它锁宽。
107
109
  const idleWidth = useRef(null);
@@ -174,7 +176,7 @@ export function Button(props) {
174
176
  'aria-busy': loading || undefined,
175
177
  ...(autoLabel !== undefined && rest['aria-label'] === undefined ? { 'aria-label': autoLabel } : {}),
176
178
  onClick: asyncClick.click,
177
- className: buttonClass(variant, size, block, icon !== undefined && icon !== null && !loading, className),
179
+ className: buttonClass(variant, size, block, icon !== undefined && icon !== null && !loading, dense, className),
178
180
  style: { ...colorVars(variant, color), ...widthStyle, ...style },
179
181
  };
180
182
  return h('button', attrs, loading
@@ -201,7 +203,7 @@ export function Button(props) {
201
203
  */
202
204
  export function IconButton(props) {
203
205
  ensureComponentStyles('button', BUTTON_CSS);
204
- const { variant = 'plain', size = 'lg', icon, label, color, background, loading: loadingProp = false, className, style, onClick, onBusyChange, ...rest } = props;
206
+ const { variant = 'plain', size = 'lg', icon, label, color, background, loading: loadingProp = false, dense = false, className, style, onClick, onBusyChange, ...rest } = props;
205
207
  const asyncClick = useAsyncClick(onClick, onBusyChange);
206
208
  const loading = loadingProp || asyncClick.busy;
207
209
  const locked = useOverlayLocked();
@@ -225,7 +227,7 @@ export function IconButton(props) {
225
227
  'aria-busy': loading || undefined,
226
228
  disabled: rest.disabled === true || loading || locked,
227
229
  onClick: asyncClick.click,
228
- className: `dshpc-iconbtn dshpc-iconbtn--${variant} dshpc-iconbtn--${size}${className !== undefined && className !== '' ? ` ${className}` : ''}`,
230
+ className: `dshpc-iconbtn dshpc-iconbtn--${variant} dshpc-iconbtn--${size}${dense ? ' dshpc-iconbtn--dense' : ''}${className !== undefined && className !== '' ? ` ${className}` : ''}`,
229
231
  style: { ...accent, ...style },
230
232
  };
231
233
  return h('button', attrs, loading ? h(Loader, { size: 'xs' }) : icon);
@@ -1 +1 @@
1
- {"version":3,"file":"Button.js","sourceRoot":"","sources":["../../../src/ui/actions/Button.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Button.js","sourceRoot":"","sources":["../../../src/ui/actions/Button.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export declare const BUTTON_CSS = "\n/* \u2500\u2500 \u6309\u94AE / \u56FE\u6807\u94AE P2 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n \u4E0E Segmented \u540C\u4E00\u6761\u9AD8\u5EA6\u7EAA\u5F8B\uFF1A--dshpc-control-h-sm(24) / -md(28) / -lg(32)\uFF0C\n \u6709\u8FB9\u6846\u7684 variant \u7528 1px \u771F\u8FB9\u6846 + \u5185\u90E8 padding \u8865\u56DE\uFF0C**\u6709\u8FB9 / \u65E0\u8FB9\u540C\u9AD8**\u3002\n\n \u4E09\u6761\u53D7\u63A7\u8F74\uFF082026-10-19 \u91CD\u5199\uFF0C\u5BF9\u9F50\u4E3B\u6D41 UI \u6846\u67B6\u7684\u5206\u7C7B\u53E3\u5F84\uFF09\uFF1A\n \u00B7 variant \u2014\u2014 \u5916\u89C2\u6863 = \u5F62\u6001 + \u8BED\u4E49\u8272\uFF0C\u5171 10 \u6863\uFF1A\n primary / secondary / outline / ghost / danger / success / warning / info /\n danger-outline\uFF08\u7EA2\u5B57\u63CF\u8FB9\uFF09/ link\uFF08\u884C\u5185\u94FE\u63A5\uFF09\n \u00B7 size \u2014\u2014 sm / md / lg\n \u00B7 block \u2014\u2014 \u6491\u6EE1\u7236\u5BBD\n \u6BCF\u4E00\u6863**\u53EA\u586B 5 \u4E2A\u5C40\u90E8\u53D8\u91CF**\uFF08--btn-bg / -fg / -border / -bg-hover / -bg-active\uFF09\uFF0C\n \u7ED3\u6784\u4E0E\u4EA4\u4E92\u53EA\u6709\u4E0A\u9762\u8FD9\u4E00\u4EFD\uFF1B\u4EFB\u4F55\u6863\u4F4D\u90FD\u4E0D\u8BB8\u518D\u5199\u4E00\u904D display/height/padding\u3002\n \u81EA\u5B9A\u4E49\u989C\u8272\uFF08Button \u7684 color \u53C2\u6570\uFF09\u540C\u6837\u53EA\u8986\u76D6\u8FD9 5 \u4E2A\u53D8\u91CF\uFF08token \u8986\u76D6\uFF0C\u4E0D\u662F\u65B0\u76AE\u80A4\uFF09\u3002\n\n \u26A0\uFE0F hover \u4E0D\u518D\u7528 opacity \u538B\u4E00\u5C42\uFF08\u7528\u6237 2026-10-19\uFF1A\u300C\u9ED1\u8272\u548C\u7EA2\u8272\u7684\u6309\u94AE\u79FB\u4E0A\u53BB\u53D8\u5316\u592A\u5C0F\uFF0C\n \u5B8C\u5168\u611F\u89C9\u4E0D\u5230\u989C\u8272\u53D8\u4E86\u300D\uFF09\u21D2 \u8D70 --dshpc-*-hover / -active \u7684\u660E\u786E\u6DF7\u8272\uFF0C\u89C1 tokens-css.ts\u3002 */\n.dshpc-btn{--btn-bg:transparent;--btn-fg:var(--dshpc-fg);--btn-border:transparent;--btn-pad:12px;\n --btn-bg-hover:var(--dshpc-hover);--btn-bg-active:var(--dshpc-active);--btn-fg-hover:var(--btn-fg);\n appearance:none;display:inline-flex;align-items:center;justify-content:center;gap:6px;\n box-sizing:border-box;border:1px solid var(--btn-border);border-radius:var(--dshpc-radius-md);\n background-color:var(--btn-bg);color:var(--btn-fg);font-family:inherit;font-weight:500;white-space:nowrap;cursor:pointer;\n transition:background-color var(--dshpc-dur-fast) var(--dshpc-ease),border-color var(--dshpc-dur-fast) var(--dshpc-ease),color var(--dshpc-dur-fast) var(--dshpc-ease),box-shadow var(--dshpc-dur-fast) var(--dshpc-ease),transform var(--dshpc-dur-fast) var(--dshpc-ease);}\n.dshpc-btn--sm{--btn-pad:10px;height:var(--dshpc-control-h-sm);padding:0 var(--btn-pad);font-size:var(--dshpc-font-sm);line-height:1;}\n.dshpc-btn--md{--btn-pad:12px;height:var(--dshpc-control-h-md);padding:0 var(--btn-pad);font-size:var(--dshpc-font-md);line-height:1;}\n.dshpc-btn--lg{--btn-pad:14px;height:var(--dshpc-control-h-lg);padding:0 var(--btn-pad);font-size:var(--dshpc-font-md);line-height:1;}\n/* block\uFF1A\u6491\u6EE1\u7236\u5BBD\uFF08\u8868\u5355\u5E95\u680F / \u62BD\u5C49\u5E95\u90E8\u7684\u4E3B\u64CD\u4F5C\uFF09 */\n.dshpc-btn--block{display:flex;width:100%;}\n/* block + \u524D\u7F6E\u56FE\u6807 \u21D2 \u6587\u5B57\u89C6\u89C9\u5C45\u4E2D\uFF082026-10-19 \u7528\u6237\u70B9\u540D\uFF09\uFF1A\n \u5185\u5BB9\u7EC4 [\u56FE\u6807 + \u95F4\u8DDD + \u6587\u5B57] \u6574\u4F53\u5728\u76D2\u5185\u5C45\u4E2D\u65F6\uFF0C**\u6587\u5B57**\u7684\u4E2D\u5FC3\u4F1A\u88AB\u56FE\u6807\u63A8\u53F3\u534A\u683C\u3002\n \u628A\u53F3\u5185\u8FB9\u8DDD\u8865\u4E0A\u300C\u56FE\u6807\u5BBD + \u95F4\u8DDD\u300D\uFF0C\u53EF\u7528\u76D2\u968F\u4E4B\u5DE6\u79FB\u540C\u91CF \u21D2 \u6587\u5B57\u843D\u56DE\u89C6\u89C9\u4E2D\u5FC3\uFF0C\u56FE\u6807\u8D34\u5DE6\u4FA7\u3002\n \u56FE\u6807\u5BBD\u6309 1.2em \u4F30\uFF08\u5B98\u65B9\u56FE\u6807 14/16px vs \u5B57\u53F7 12/13px\uFF09\uFF0Cem \u968F\u5B57\u53F7\u6863\u81EA\u52A8\u7F29\u653E\u3002 */\n.dshpc-btn--block.dshpc-btn--icon-start{padding-right:calc(var(--btn-pad) + 1.2em + 6px);}\n/* \u56FE\u6807\u6BD4\u540C\u6863\u6587\u5B57\u5C0F\u4E00\u53F7\uFF08\u7528\u6237 2026-11-02\uFF09\uFF1A\u5BB9\u5668\u5403\u6389 0.875em\uFF0C\u5185\u8054 SVG \u4E00\u5F8B\u8DDF\u968F 1em\uFF0C\n \u4E0D\u518D\u7531\u8C03\u7528\u65B9\u7684 size={16} \u8BF4\u4E86\u7B97 \u2014\u2014 \u5168\u7AD9\u6309\u94AE\u56FE\u6807\u5C3A\u5BF8\u53EA\u7531\u8FD9\u4E00\u5904\u51B3\u5B9A\u3002 */\n.dshpc-btn__icon,.dshpc-btn__icon-end{display:inline-flex;align-items:center;justify-content:center;flex:none;line-height:0;font-size:.875em;}\n.dshpc-btn__icon svg,.dshpc-btn__icon-end svg{display:block;margin:0;width:1em;height:1em;}\n/* maxWidth \u5305 MarqueeText \u65F6\uFF1A\u6807\u7B7E\u4F5C\u4E3A flex \u5B50\u9879\u5FC5\u987B\u80FD\u6536\u7F29\u5230\u5185\u5BB9\u4EE5\u4E0B\uFF0C\u5426\u5219\u7701\u7565\u53F7 / \u8DD1\u9A6C\u706F\u6D4B\u4E0D\u51C6 */\n.dshpc-btn .dshpc-btn__label{min-width:0;}\n/* loading\uFF1A\u4E0D\u6362 DOM \u7ED3\u6784\uFF0C\u53EA\u5728\u6587\u6848\u524D\u63D2\u4E00\u679A Loader\uFF08size=xs\uFF0C12px\uFF09\u3002\n \u73AF\u7684\u753B\u6CD5\u4E0E\u52A8\u753B\u7EDF\u4E00\u5728 controls/loader.css\uFF08\u672C\u6587\u4EF6\u4E0D\u518D\u7EF4\u62A4\u7B2C\u4E8C\u4EFD SVG \u5F27 / keyframes\uFF09\u3002 */\n\n/* \u4EA4\u4E92\u6001\uFF1A\u989C\u8272\u53D8\u5316\u5199\u5728\u53D8\u91CF\u4E0A \u21D2 \u6240\u6709\u6863\u4F4D\u4E00\u6B21\u751F\u6548\uFF0C\u4E14\u53D8\u5316\u5E45\u5EA6\u7531 token \u51B3\u5B9A\uFF08\u591F\u660E\u663E\uFF09 */\n.dshpc-btn:hover:not(:disabled){background-color:var(--btn-bg-hover);color:var(--btn-fg-hover);}\n.dshpc-btn:active:not(:disabled){background-color:var(--btn-bg-active);transform:translateY(1px);}\n.dshpc-btn:focus-visible{outline:2px solid var(--dshpc-focus);outline-offset:2px;}\n.dshpc-btn:disabled{cursor:default;opacity:.5;}\n\n.dshpc-btn--primary{--btn-bg:var(--dshpc-accent);--btn-fg:var(--dshpc-fg-inverse);\n --btn-bg-hover:var(--dshpc-accent-hover);--btn-bg-active:var(--dshpc-accent-active);}\n/* secondary\uFF1A\u4E2D\u6027\u5B9E\u5FC3\uFF08\u7070\u9762\uFF09\uFF0C\u7528\u4E8E\u300C\u53D6\u6D88 / \u6B21\u8981\u300D\u8FD9\u7C7B\u4E0E\u4E3B\u64CD\u4F5C\u5E76\u6392\u7684\u6309\u94AE */\n.dshpc-btn--secondary{--btn-bg:var(--dshpc-hover);--btn-fg:var(--dshpc-fg);\n --btn-bg-hover:var(--dshpc-active);--btn-bg-active:var(--dshpc-active);}\n.dshpc-btn--outline{--btn-bg:var(--dshpc-surface-1);--btn-border:var(--dshpc-border-strong);\n --btn-bg-hover:var(--dshpc-hover);--btn-bg-active:var(--dshpc-active);}\n.dshpc-btn--ghost{--btn-fg:var(--dshpc-fg-2);--btn-fg-hover:var(--dshpc-fg);\n --btn-bg-hover:var(--dshpc-hover);--btn-bg-active:var(--dshpc-active);}\n.dshpc-btn--danger{--btn-bg:var(--dshpc-danger);--btn-fg:var(--dshpc-on-signal);\n --btn-bg-hover:var(--dshpc-danger-hover);--btn-bg-active:var(--dshpc-danger-active);}\n.dshpc-btn--success{--btn-bg:var(--dshpc-success);--btn-fg:var(--dshpc-on-signal);\n --btn-bg-hover:var(--dshpc-success-hover);--btn-bg-active:var(--dshpc-success-active);}\n.dshpc-btn--warning{--btn-bg:var(--dshpc-warning);--btn-fg:var(--dshpc-on-warning);\n --btn-bg-hover:var(--dshpc-warning-hover);--btn-bg-active:var(--dshpc-warning-active);}\n.dshpc-btn--info{--btn-bg:var(--dshpc-business);--btn-fg:var(--dshpc-on-signal);\n --btn-bg-hover:var(--dshpc-business-hover);--btn-bg-active:var(--dshpc-business-active);}\n/* \u6269\u5C55\u516B\u8272\u5B9E\u5FC3\uFF082026-10-29\uFF09\uFF1A\u767D\u5B57\u4E24\u4E3B\u9898\u5747 \u22654.5:1\uFF1Bhover/active \u8D70\u5404\u81EA token \u6D3E\u751F\u3002 */\n.dshpc-btn--purple{--btn-bg:var(--dshpc-purple);--btn-fg:var(--dshpc-on-signal);\n --btn-bg-hover:var(--dshpc-purple-hover);--btn-bg-active:var(--dshpc-purple-active);}\n.dshpc-btn--pink{--btn-bg:var(--dshpc-pink);--btn-fg:var(--dshpc-on-signal);\n --btn-bg-hover:var(--dshpc-pink-hover);--btn-bg-active:var(--dshpc-pink-active);}\n.dshpc-btn--cyan{--btn-bg:var(--dshpc-cyan);--btn-fg:var(--dshpc-on-signal);\n --btn-bg-hover:var(--dshpc-cyan-hover);--btn-bg-active:var(--dshpc-cyan-active);}\n.dshpc-btn--teal{--btn-bg:var(--dshpc-teal);--btn-fg:var(--dshpc-on-signal);\n --btn-bg-hover:var(--dshpc-teal-hover);--btn-bg-active:var(--dshpc-teal-active);}\n.dshpc-btn--orange{--btn-bg:var(--dshpc-orange);--btn-fg:var(--dshpc-on-signal);\n --btn-bg-hover:var(--dshpc-orange-hover);--btn-bg-active:var(--dshpc-orange-active);}\n.dshpc-btn--indigo{--btn-bg:var(--dshpc-indigo);--btn-fg:var(--dshpc-on-signal);\n --btn-bg-hover:var(--dshpc-indigo-hover);--btn-bg-active:var(--dshpc-indigo-active);}\n.dshpc-btn--rose{--btn-bg:var(--dshpc-rose);--btn-fg:var(--dshpc-on-signal);\n --btn-bg-hover:var(--dshpc-rose-hover);--btn-bg-active:var(--dshpc-rose-active);}\n.dshpc-btn--slate{--btn-bg:var(--dshpc-slate);--btn-fg:var(--dshpc-on-signal);\n --btn-bg-hover:var(--dshpc-slate-hover);--btn-bg-active:var(--dshpc-slate-active);}\n/* danger-outline\uFF1A\u7EA2\u5B57\u63CF\u8FB9\uFF08\u7834\u574F\u6027\u6B21\u8981\u64CD\u4F5C\uFF0C\u5982\u5361\u7247\u4E0A\u7684\u300C\u5220\u9664\u300D\uFF09\u3002\n \u26A0\uFE0F \u65E7\u4FEE\u9970\u7C7B danger-ink \u4FDD\u7559\u4E3A\u522B\u540D\uFF08\u6D88\u8D39\u65B9\u53EF\u80FD\u8FD8\u5728\u6302\uFF09\uFF0C\u4E24\u8005\u540C\u4E00\u5957\u76AE\u80A4\u3002 */\n.dshpc-btn--danger-outline,.dshpc-btn--danger-ink{--btn-border:var(--dshpc-danger);--btn-fg:var(--dshpc-danger);\n --btn-fg-hover:var(--dshpc-danger);--btn-bg-hover:var(--dshpc-danger-soft);--btn-bg-active:var(--dshpc-danger-soft);}\n/* link\uFF1A\u884C\u5185\u6587\u5B57\u94FE\u63A5\u578B\uFF08\u4F1A\u8BDD / \u4EA7\u51FA\u6587\u4EF6\u540D\uFF09\uFF0C\u65E0\u5E95\u65E0\u8FB9\u3001\u54C1\u724C\u84DD\u3001hover \u4E0B\u5212\u7EBF */\n.dshpc-btn--link{--btn-fg:var(--dshpc-link);--btn-fg-hover:var(--dshpc-link);\n --btn-bg-hover:transparent;--btn-bg-active:transparent;\n height:auto;padding:0;border:0;background:none;font-weight:400;text-align:left;}\n.dshpc-btn--link:hover:not(:disabled){text-decoration:underline;}\n\n/* \u56FE\u6807\u94AE\uFF1A\u7EAF\u56FE\u6807\uFF0C\u65B9\u5F62\uFF1B\u5C3A\u5BF8\u6863\u7684\u5BBD\u9AD8\u4E0E\u540C\u6863\u6587\u5B57\u6309\u94AE\u7B49\u9AD8\u3001\u5706\u89D2\u7EDF\u4E00\u5403 md\uFF08\u4E0E .dshpc-btn \u540C\u6B3E\uFF0C2026-10-28 \u62CD\u677F\uFF09\n \u5E95\u8272 / \u56FE\u6807\u8272\u5168\u8D70\u5C40\u90E8\u53D8\u91CF\uFF1A\u9ED8\u8BA4**\u65E0\u5E95\u8272**\uFF0C\u6D88\u8D39\u65B9\u53EF\u4F20 color\uFF08\u56FE\u6807\u8272\uFF09/ background\uFF08\u5E95\u8272\uFF09\u8986\u76D6\uFF08\u7528\u6237 2026-11-02\uFF09\u3002 */\n.dshpc-iconbtn{--icb-bg:transparent;--icb-bg-hover:var(--dshpc-hover);--icb-fg:var(--dshpc-fg-2);--icb-fg-hover:var(--dshpc-fg);\n appearance:none;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;\n border:1px solid var(--icb-border,transparent);border-radius:var(--dshpc-radius-md);\n background:var(--icb-bg);color:var(--icb-fg);\n font-family:inherit;cursor:pointer;flex:none;\n transition:background-color var(--dshpc-dur-fast) var(--dshpc-ease),border-color var(--dshpc-dur-fast) var(--dshpc-ease),color var(--dshpc-dur-fast) var(--dshpc-ease),opacity var(--dshpc-dur-fast) var(--dshpc-ease);}\n.dshpc-iconbtn--sm{width:var(--dshpc-control-h-sm);height:var(--dshpc-control-h-sm);font-size:var(--dshpc-font-sm);}\n.dshpc-iconbtn--md{width:var(--dshpc-control-h-md);height:var(--dshpc-control-h-md);font-size:var(--dshpc-font-md);}\n.dshpc-iconbtn--lg{width:var(--dshpc-control-h-lg);height:var(--dshpc-control-h-lg);font-size:var(--dshpc-font-md);}\n/* \u56FE\u6807\u4E0E\u6587\u5B57\u6309\u94AE\u540C\u53E3\u5F84\uFF1A\u5185\u8054 SVG \u4E00\u5F8B\u8DDF\u968F 1em\uFF08\u6BD4 16px \u6863\u5C0F\u4E00\u53F7\uFF09 */\n.dshpc-iconbtn > svg{display:block;width:1em;height:1em;}\n.dshpc-iconbtn--outline{--icb-bg:var(--dshpc-surface-1);--icb-border:var(--dshpc-border);}\n.dshpc-iconbtn--danger{--icb-fg:var(--dshpc-danger);--icb-bg-hover:var(--dshpc-danger-soft);--icb-fg-hover:var(--dshpc-danger);}\n.dshpc-iconbtn:hover:not(:disabled){background:var(--icb-bg-hover);color:var(--icb-fg-hover);}\n.dshpc-iconbtn:focus-visible{outline:2px solid var(--dshpc-focus);outline-offset:2px;}\n.dshpc-iconbtn:disabled{cursor:default;opacity:.4;}\n\n/* \u2500\u2500 \u884C\u5F0F\u6587\u4EF6\u6309\u94AE\uFF08\u56FE\u6807 + \u6587\u4EF6\u540D\uFF09P2\uFF1A**\u5168\u7AD9\u552F\u4E00\u5B9E\u73B0**\uFF082026-10-04 \u6536\u7F16\uFF09\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n \u7528\u9014\uFF1A\u300C\u4EA7\u51FA\u7269 / \u9644\u4EF6\u300D\u90A3\u79CD**\u4E00\u884C\u4E00\u4E2A\u6587\u4EF6**\u7684\u6E05\u5355\u9879\uFF08\u57FA\u7840\u4FE1\u606F\u53F3\u680F\u4EA7\u51FA\u7269\u6E05\u5355\u3001\u9644\u4EF6\u533A\u3001\n \u6267\u884C\u8BB0\u5F55\u9875\u7684\u5C55\u5F00\u533A\uFF09\u3002\u5E73\u65F6\u900F\u660E\u3001**\u9F20\u6807\u79FB\u4E0A\u53BB\u624D\u51FA\u6D45\u5E95**\uFF08\u6CBF\u7528\u7528\u6237 2026-10-03 \u5B9A\u7684\u89C2\u611F\uFF09\u3002\n \u4E24\u4E2A\u5F62\u6001\u4FEE\u9970\u7C7B\uFF1A\n --block \u6491\u6EE1\u7236\u5BBD\uFF08\u6E05\u5355\u91CC\u4E00\u9879\u4E00\u884C\uFF09\n --inline \u5185\u5BB9\u5BBD\uFF08\u8DDF\u5728\u6587\u5B57\u540E\u5934\uFF0C\u5982\u9644\u4EF6\u884C\uFF09\n \u6536\u7F16\u539F\u56E0\uFF1A\u8FD9\u4EFD\u76AE\u80A4\u6B64\u524D\u53EA\u5199\u5728 task-list.tsx \u7684 TASK_LIST_CSS \u91CC\uFF08\u65E7\u540D .dshpc-info-out\uFF09\uFF0C\n \u6267\u884C\u8BB0\u5F55\u9875\u5C55\u5F00\u533A\u8981\u7528\u540C\u4E00\u79CD\u89C2\u611F \u21D2 \u4E0A\u63D0\u57FA\u7840\u5C42\uFF0C\u907F\u514D\u518D\u51FA\u73B0\u300C\u5404\u5199\u4E00\u4EFD\u5916\u89C2\u300D\uFF08\u540C\u540D\u4E0D\u540C\u76AE\u7684\u5751\u521A\u8E29\u8FC7\uFF09\u3002 */\n.dshpc-filechip{appearance:none;-webkit-appearance:none;border:0;border-radius:var(--dshpc-radius-xs);\n background:transparent;color:var(--dshpc-fg);font:inherit;text-align:left;cursor:pointer;min-width:0;\n transition:background-color var(--dshpc-dur) var(--dshpc-ease);}\n.dshpc-filechip:hover:not(:disabled){background:var(--dshpc-chip-bg);}\n.dshpc-filechip:focus-visible{outline:2px solid var(--dshpc-focus);outline-offset:1px;}\n.dshpc-filechip:disabled{cursor:default;background:transparent;color:var(--dshpc-fg-3);}\n.dshpc-filechip--block{display:flex;align-items:center;gap:6px;width:100%;box-sizing:border-box;\n padding:4px 6px;font-size:var(--dshpc-font-xs);}\n.dshpc-filechip--inline{display:inline-flex;align-items:center;gap:4px;padding:2px 6px;font-size:var(--dshpc-font-sm);}\n\n@media (prefers-reduced-motion: reduce){.dshpc-btn,.dshpc-iconbtn,.dshpc-filechip{transition:none;}}\n";
1
+ export declare const BUTTON_CSS = "\n/* \u2500\u2500 \u6309\u94AE / \u56FE\u6807\u94AE P2 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n \u4E0E Segmented \u540C\u4E00\u6761\u9AD8\u5EA6\u7EAA\u5F8B\uFF1A--dshpc-control-h-sm(24) / -md(28) / -lg(32)\uFF0C\n \u6709\u8FB9\u6846\u7684 variant \u7528 1px \u771F\u8FB9\u6846 + \u5185\u90E8 padding \u8865\u56DE\uFF0C**\u6709\u8FB9 / \u65E0\u8FB9\u540C\u9AD8**\u3002\n\n \u4E09\u6761\u53D7\u63A7\u8F74\uFF082026-10-19 \u91CD\u5199\uFF0C\u5BF9\u9F50\u4E3B\u6D41 UI \u6846\u67B6\u7684\u5206\u7C7B\u53E3\u5F84\uFF09\uFF1A\n \u00B7 variant \u2014\u2014 \u5916\u89C2\u6863 = \u5F62\u6001 + \u8BED\u4E49\u8272\uFF0C\u5171 10 \u6863\uFF1A\n primary / secondary / outline / ghost / danger / success / warning / info /\n danger-outline\uFF08\u7EA2\u5B57\u63CF\u8FB9\uFF09/ link\uFF08\u884C\u5185\u94FE\u63A5\uFF09\n \u00B7 size \u2014\u2014 sm / md / lg\n \u00B7 block \u2014\u2014 \u6491\u6EE1\u7236\u5BBD\n \u6BCF\u4E00\u6863**\u53EA\u586B 5 \u4E2A\u5C40\u90E8\u53D8\u91CF**\uFF08--btn-bg / -fg / -border / -bg-hover / -bg-active\uFF09\uFF0C\n \u7ED3\u6784\u4E0E\u4EA4\u4E92\u53EA\u6709\u4E0A\u9762\u8FD9\u4E00\u4EFD\uFF1B\u4EFB\u4F55\u6863\u4F4D\u90FD\u4E0D\u8BB8\u518D\u5199\u4E00\u904D display/height/padding\u3002\n \u81EA\u5B9A\u4E49\u989C\u8272\uFF08Button \u7684 color \u53C2\u6570\uFF09\u540C\u6837\u53EA\u8986\u76D6\u8FD9 5 \u4E2A\u53D8\u91CF\uFF08token \u8986\u76D6\uFF0C\u4E0D\u662F\u65B0\u76AE\u80A4\uFF09\u3002\n\n \u26A0\uFE0F hover \u4E0D\u518D\u7528 opacity \u538B\u4E00\u5C42\uFF08\u7528\u6237 2026-10-19\uFF1A\u300C\u9ED1\u8272\u548C\u7EA2\u8272\u7684\u6309\u94AE\u79FB\u4E0A\u53BB\u53D8\u5316\u592A\u5C0F\uFF0C\n \u5B8C\u5168\u611F\u89C9\u4E0D\u5230\u989C\u8272\u53D8\u4E86\u300D\uFF09\u21D2 \u8D70 --dshpc-*-hover / -active \u7684\u660E\u786E\u6DF7\u8272\uFF0C\u89C1 tokens-css.ts\u3002 */\n.dshpc-btn{--btn-bg:transparent;--btn-fg:var(--dshpc-fg);--btn-border:transparent;--btn-pad:12px;\n --btn-bg-hover:var(--dshpc-hover);--btn-bg-active:var(--dshpc-active);--btn-fg-hover:var(--btn-fg);\n appearance:none;display:inline-flex;align-items:center;justify-content:center;gap:6px;\n box-sizing:border-box;border:1px solid var(--btn-border);border-radius:var(--dshpc-radius-md);\n background-color:var(--btn-bg);color:var(--btn-fg);font-family:inherit;font-weight:500;white-space:nowrap;cursor:pointer;\n transition:background-color var(--dshpc-dur-fast) var(--dshpc-ease),border-color var(--dshpc-dur-fast) var(--dshpc-ease),color var(--dshpc-dur-fast) var(--dshpc-ease),box-shadow var(--dshpc-dur-fast) var(--dshpc-ease),transform var(--dshpc-dur-fast) var(--dshpc-ease);}\n.dshpc-btn--sm{--btn-pad:10px;height:var(--dshpc-control-h-sm);padding:0 var(--btn-pad);font-size:var(--dshpc-font-sm);line-height:1;}\n.dshpc-btn--md{--btn-pad:12px;height:var(--dshpc-control-h-md);padding:0 var(--btn-pad);font-size:var(--dshpc-font-md);line-height:1;}\n.dshpc-btn--lg{--btn-pad:14px;height:var(--dshpc-control-h-lg);padding:0 var(--btn-pad);font-size:var(--dshpc-font-md);line-height:1;}\n/* block\uFF1A\u6491\u6EE1\u7236\u5BBD\uFF08\u8868\u5355\u5E95\u680F / \u62BD\u5C49\u5E95\u90E8\u7684\u4E3B\u64CD\u4F5C\uFF09 */\n.dshpc-btn--block{display:flex;width:100%;}\n/* block + \u524D\u7F6E\u56FE\u6807 \u21D2 \u6587\u5B57\u89C6\u89C9\u5C45\u4E2D\uFF082026-10-19 \u7528\u6237\u70B9\u540D\uFF09\uFF1A\n \u5185\u5BB9\u7EC4 [\u56FE\u6807 + \u95F4\u8DDD + \u6587\u5B57] \u6574\u4F53\u5728\u76D2\u5185\u5C45\u4E2D\u65F6\uFF0C**\u6587\u5B57**\u7684\u4E2D\u5FC3\u4F1A\u88AB\u56FE\u6807\u63A8\u53F3\u534A\u683C\u3002\n \u628A\u53F3\u5185\u8FB9\u8DDD\u8865\u4E0A\u300C\u56FE\u6807\u5BBD + \u95F4\u8DDD\u300D\uFF0C\u53EF\u7528\u76D2\u968F\u4E4B\u5DE6\u79FB\u540C\u91CF \u21D2 \u6587\u5B57\u843D\u56DE\u89C6\u89C9\u4E2D\u5FC3\uFF0C\u56FE\u6807\u8D34\u5DE6\u4FA7\u3002\n \u56FE\u6807\u5BBD\u6309 1.2em \u4F30\uFF08\u5B98\u65B9\u56FE\u6807 14/16px vs \u5B57\u53F7 12/13px\uFF09\uFF0Cem \u968F\u5B57\u53F7\u6863\u81EA\u52A8\u7F29\u653E\u3002 */\n.dshpc-btn--block.dshpc-btn--icon-start{padding-right:calc(var(--btn-pad) + 1.2em + 6px);}\n/* \u56FE\u6807\u6BD4\u540C\u6863\u6587\u5B57\u5C0F\u4E00\u53F7\uFF08\u7528\u6237 2026-11-02\uFF09\uFF1A\u5BB9\u5668\u5403\u6389 0.875em\uFF0C\u5185\u8054 SVG \u4E00\u5F8B\u8DDF\u968F 1em\uFF0C\n \u4E0D\u518D\u7531\u8C03\u7528\u65B9\u7684 size={16} \u8BF4\u4E86\u7B97 \u2014\u2014 \u5168\u7AD9\u6309\u94AE\u56FE\u6807\u5C3A\u5BF8\u53EA\u7531\u8FD9\u4E00\u5904\u51B3\u5B9A\u3002 */\n.dshpc-btn__icon,.dshpc-btn__icon-end{display:inline-flex;align-items:center;justify-content:center;flex:none;line-height:0;font-size:.875em;}\n.dshpc-btn__icon svg,.dshpc-btn__icon-end svg{display:block;margin:0;width:1em;height:1em;}\n/* maxWidth \u5305 MarqueeText \u65F6\uFF1A\u6807\u7B7E\u4F5C\u4E3A flex \u5B50\u9879\u5FC5\u987B\u80FD\u6536\u7F29\u5230\u5185\u5BB9\u4EE5\u4E0B\uFF0C\u5426\u5219\u7701\u7565\u53F7 / \u8DD1\u9A6C\u706F\u6D4B\u4E0D\u51C6 */\n.dshpc-btn .dshpc-btn__label{min-width:0;}\n/* loading\uFF1A\u4E0D\u6362 DOM \u7ED3\u6784\uFF0C\u53EA\u5728\u6587\u6848\u524D\u63D2\u4E00\u679A Loader\uFF08size=xs\uFF0C12px\uFF09\u3002\n \u73AF\u7684\u753B\u6CD5\u4E0E\u52A8\u753B\u7EDF\u4E00\u5728 controls/loader.css\uFF08\u672C\u6587\u4EF6\u4E0D\u518D\u7EF4\u62A4\u7B2C\u4E8C\u4EFD SVG \u5F27 / keyframes\uFF09\u3002 */\n\n/* \u4EA4\u4E92\u6001\uFF1A\u989C\u8272\u53D8\u5316\u5199\u5728\u53D8\u91CF\u4E0A \u21D2 \u6240\u6709\u6863\u4F4D\u4E00\u6B21\u751F\u6548\uFF0C\u4E14\u53D8\u5316\u5E45\u5EA6\u7531 token \u51B3\u5B9A\uFF08\u591F\u660E\u663E\uFF09 */\n.dshpc-btn:hover:not(:disabled){background-color:var(--btn-bg-hover);color:var(--btn-fg-hover);}\n.dshpc-btn:active:not(:disabled){background-color:var(--btn-bg-active);transform:translateY(1px);}\n.dshpc-btn:focus-visible{outline:2px solid var(--dshpc-focus);outline-offset:2px;}\n.dshpc-btn:disabled{cursor:default;opacity:.5;}\n/* dense\uFF1A\u5C3A\u5BF8\u6863 / \u9AD8\u5EA6\u4E00\u5F8B\u4E0D\u53D8\uFF0C\u53EA\u628A\u56FE\u6807\u653E\u5927\u4E00\u6863\u3001\u5185\u8DDD\u6536\u7D27\uFF08\u63CF\u8FB9\u7EC6\u7684\u6587\u4EF6\u7C7B\u578B\u56FE\u6807\u7528\uFF09\u3002\n \u53EA\u8986\u76D6\u5C40\u90E8\u53D8\u91CF\u4E0E\u56FE\u6807\u5B57\u53F7\uFF0C\u4E0D\u53E6\u5199\u4E00\u5957\u76AE\u80A4\uFF1B\u5FC5\u987B\u5199\u5728\u5C3A\u5BF8\u6863\u4E0E\u56FE\u6807\u89C4\u5219\u4E4B\u540E\u624D\u538B\u5F97\u8FC7\u9ED8\u8BA4\u503C\u3002 */\n.dshpc-btn--dense{--btn-pad:6px;}\n.dshpc-btn--dense .dshpc-btn__icon,.dshpc-btn--dense .dshpc-btn__icon-end{font-size:1.25em;}\n\n.dshpc-btn--primary{--btn-bg:var(--dshpc-accent);--btn-fg:var(--dshpc-fg-inverse);\n --btn-bg-hover:var(--dshpc-accent-hover);--btn-bg-active:var(--dshpc-accent-active);}\n/* secondary\uFF1A\u4E2D\u6027\u5B9E\u5FC3\uFF08\u7070\u9762\uFF09\uFF0C\u7528\u4E8E\u300C\u53D6\u6D88 / \u6B21\u8981\u300D\u8FD9\u7C7B\u4E0E\u4E3B\u64CD\u4F5C\u5E76\u6392\u7684\u6309\u94AE */\n.dshpc-btn--secondary{--btn-bg:var(--dshpc-hover);--btn-fg:var(--dshpc-fg);\n --btn-bg-hover:var(--dshpc-active);--btn-bg-active:var(--dshpc-active);}\n.dshpc-btn--outline{--btn-bg:var(--dshpc-surface-1);--btn-border:var(--dshpc-border-strong);\n --btn-bg-hover:var(--dshpc-hover);--btn-bg-active:var(--dshpc-active);}\n.dshpc-btn--ghost{--btn-fg:var(--dshpc-fg-2);--btn-fg-hover:var(--dshpc-fg);\n --btn-bg-hover:var(--dshpc-hover);--btn-bg-active:var(--dshpc-active);}\n.dshpc-btn--danger{--btn-bg:var(--dshpc-danger);--btn-fg:var(--dshpc-on-signal);\n --btn-bg-hover:var(--dshpc-danger-hover);--btn-bg-active:var(--dshpc-danger-active);}\n.dshpc-btn--success{--btn-bg:var(--dshpc-success);--btn-fg:var(--dshpc-on-signal);\n --btn-bg-hover:var(--dshpc-success-hover);--btn-bg-active:var(--dshpc-success-active);}\n.dshpc-btn--warning{--btn-bg:var(--dshpc-warning);--btn-fg:var(--dshpc-on-warning);\n --btn-bg-hover:var(--dshpc-warning-hover);--btn-bg-active:var(--dshpc-warning-active);}\n.dshpc-btn--info{--btn-bg:var(--dshpc-business);--btn-fg:var(--dshpc-on-signal);\n --btn-bg-hover:var(--dshpc-business-hover);--btn-bg-active:var(--dshpc-business-active);}\n/* \u6269\u5C55\u516B\u8272\u5B9E\u5FC3\uFF082026-10-29\uFF09\uFF1A\u767D\u5B57\u4E24\u4E3B\u9898\u5747 \u22654.5:1\uFF1Bhover/active \u8D70\u5404\u81EA token \u6D3E\u751F\u3002 */\n.dshpc-btn--purple{--btn-bg:var(--dshpc-purple);--btn-fg:var(--dshpc-on-signal);\n --btn-bg-hover:var(--dshpc-purple-hover);--btn-bg-active:var(--dshpc-purple-active);}\n.dshpc-btn--pink{--btn-bg:var(--dshpc-pink);--btn-fg:var(--dshpc-on-signal);\n --btn-bg-hover:var(--dshpc-pink-hover);--btn-bg-active:var(--dshpc-pink-active);}\n.dshpc-btn--cyan{--btn-bg:var(--dshpc-cyan);--btn-fg:var(--dshpc-on-signal);\n --btn-bg-hover:var(--dshpc-cyan-hover);--btn-bg-active:var(--dshpc-cyan-active);}\n.dshpc-btn--teal{--btn-bg:var(--dshpc-teal);--btn-fg:var(--dshpc-on-signal);\n --btn-bg-hover:var(--dshpc-teal-hover);--btn-bg-active:var(--dshpc-teal-active);}\n.dshpc-btn--orange{--btn-bg:var(--dshpc-orange);--btn-fg:var(--dshpc-on-signal);\n --btn-bg-hover:var(--dshpc-orange-hover);--btn-bg-active:var(--dshpc-orange-active);}\n.dshpc-btn--indigo{--btn-bg:var(--dshpc-indigo);--btn-fg:var(--dshpc-on-signal);\n --btn-bg-hover:var(--dshpc-indigo-hover);--btn-bg-active:var(--dshpc-indigo-active);}\n.dshpc-btn--rose{--btn-bg:var(--dshpc-rose);--btn-fg:var(--dshpc-on-signal);\n --btn-bg-hover:var(--dshpc-rose-hover);--btn-bg-active:var(--dshpc-rose-active);}\n.dshpc-btn--slate{--btn-bg:var(--dshpc-slate);--btn-fg:var(--dshpc-on-signal);\n --btn-bg-hover:var(--dshpc-slate-hover);--btn-bg-active:var(--dshpc-slate-active);}\n/* danger-outline\uFF1A\u7EA2\u5B57\u63CF\u8FB9\uFF08\u7834\u574F\u6027\u6B21\u8981\u64CD\u4F5C\uFF0C\u5982\u5361\u7247\u4E0A\u7684\u300C\u5220\u9664\u300D\uFF09\u3002\n \u26A0\uFE0F \u65E7\u4FEE\u9970\u7C7B danger-ink \u4FDD\u7559\u4E3A\u522B\u540D\uFF08\u6D88\u8D39\u65B9\u53EF\u80FD\u8FD8\u5728\u6302\uFF09\uFF0C\u4E24\u8005\u540C\u4E00\u5957\u76AE\u80A4\u3002 */\n.dshpc-btn--danger-outline,.dshpc-btn--danger-ink{--btn-border:var(--dshpc-danger);--btn-fg:var(--dshpc-danger);\n --btn-fg-hover:var(--dshpc-danger);--btn-bg-hover:var(--dshpc-danger-soft);--btn-bg-active:var(--dshpc-danger-soft);}\n/* link\uFF1A\u884C\u5185\u6587\u5B57\u94FE\u63A5\u578B\uFF08\u4F1A\u8BDD / \u4EA7\u51FA\u6587\u4EF6\u540D\uFF09\uFF0C\u65E0\u5E95\u65E0\u8FB9\u3001\u54C1\u724C\u84DD\u3001hover \u4E0B\u5212\u7EBF */\n.dshpc-btn--link{--btn-fg:var(--dshpc-link);--btn-fg-hover:var(--dshpc-link);\n --btn-bg-hover:transparent;--btn-bg-active:transparent;\n height:auto;padding:0;border:0;background:none;font-weight:400;text-align:left;}\n.dshpc-btn--link:hover:not(:disabled){text-decoration:underline;}\n\n/* \u56FE\u6807\u94AE\uFF1A\u7EAF\u56FE\u6807\uFF0C\u65B9\u5F62\uFF1B\u5C3A\u5BF8\u6863\u7684\u5BBD\u9AD8\u4E0E\u540C\u6863\u6587\u5B57\u6309\u94AE\u7B49\u9AD8\u3001\u5706\u89D2\u7EDF\u4E00\u5403 md\uFF08\u4E0E .dshpc-btn \u540C\u6B3E\uFF0C2026-10-28 \u62CD\u677F\uFF09\n \u5E95\u8272 / \u56FE\u6807\u8272\u5168\u8D70\u5C40\u90E8\u53D8\u91CF\uFF1A\u9ED8\u8BA4**\u65E0\u5E95\u8272**\uFF0C\u6D88\u8D39\u65B9\u53EF\u4F20 color\uFF08\u56FE\u6807\u8272\uFF09/ background\uFF08\u5E95\u8272\uFF09\u8986\u76D6\uFF08\u7528\u6237 2026-11-02\uFF09\u3002 */\n.dshpc-iconbtn{--icb-bg:transparent;--icb-bg-hover:var(--dshpc-hover);--icb-fg:var(--dshpc-fg-2);--icb-fg-hover:var(--dshpc-fg);\n appearance:none;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;padding:0;\n border:1px solid var(--icb-border,transparent);border-radius:var(--dshpc-radius-md);\n background:var(--icb-bg);color:var(--icb-fg);\n font-family:inherit;cursor:pointer;flex:none;\n transition:background-color var(--dshpc-dur-fast) var(--dshpc-ease),border-color var(--dshpc-dur-fast) var(--dshpc-ease),color var(--dshpc-dur-fast) var(--dshpc-ease),opacity var(--dshpc-dur-fast) var(--dshpc-ease);}\n.dshpc-iconbtn--sm{width:var(--dshpc-control-h-sm);height:var(--dshpc-control-h-sm);font-size:var(--dshpc-font-sm);}\n.dshpc-iconbtn--md{width:var(--dshpc-control-h-md);height:var(--dshpc-control-h-md);font-size:var(--dshpc-font-md);}\n.dshpc-iconbtn--lg{width:var(--dshpc-control-h-lg);height:var(--dshpc-control-h-lg);font-size:var(--dshpc-font-md);}\n/* \u56FE\u6807\u4E0E\u6587\u5B57\u6309\u94AE\u540C\u53E3\u5F84\uFF1ASVG \u4E00\u5F8B\u8DDF\u968F 1em\uFF08\u6BD4 16px \u6863\u5C0F\u4E00\u53F7\uFF09\u3002\n \u26A0\uFE0F flex:none \u662F\u786C\u7EA6\u675F\uFF1Asvg \u662F\u6309\u94AE\u7684\u76F4\u63A5 flex item\uFF0C\u9ED8\u8BA4 flex-shrink:1 \u4F1A\u88AB\u6309\u94AE\u5185\u8DDD\n \u6324\u6210 10px \u7A84\u6761\uFF1B\u90A3\u662F\u5E03\u5C40\u6536\u7F29\uFF0C\u4E0D\u662F\u5C42\u53E0\u4F18\u5148\u7EA7 \u2014\u2014 \u6539 width\u3001\u52A0 !important \u90FD\u6551\u4E0D\u56DE\u6765\uFF0C\n \u800C height \u5728\u4EA4\u53C9\u8F74\u4E0D\u53D7\u5F71\u54CD\uFF0C\u4E8E\u662F\u56FE\u6807\u88AB\u538B\u6241\u53D8\u5F62\u3002\u540E\u4EE3\u9009\u62E9\u5668\u517C\u5BB9\u5B98\u65B9\u56FE\u6807\u5916\u7684 wrapper\u3002 */\n.dshpc-iconbtn svg{display:block;width:1em;height:1em;flex:none;}\n/* dense\uFF1A\u53EA\u653E\u5927\u56FE\u6807\u7684 em \u503C\uFF0C\u6B63\u65B9\u5F62\u5BBD\u9AD8\u4E0E\u9AD8\u5EA6\u6863\u90FD\u4E0D\u52A8\uFF1B\n 1.25em \u76F8\u5BF9\u6309\u94AE\u5B57\u53F7 12/13 \u21D2 15/16.25px\uFF0C\u4E0E .dshpc-btn--dense \u4E00\u81F4\u3002 */\n.dshpc-iconbtn.dshpc-iconbtn--dense svg{width:1.25em;height:1.25em;}\n.dshpc-iconbtn--outline{--icb-bg:var(--dshpc-surface-1);--icb-border:var(--dshpc-border);}\n.dshpc-iconbtn--danger{--icb-fg:var(--dshpc-danger);--icb-bg-hover:var(--dshpc-danger-soft);--icb-fg-hover:var(--dshpc-danger);}\n.dshpc-iconbtn:hover:not(:disabled){background:var(--icb-bg-hover);color:var(--icb-fg-hover);}\n.dshpc-iconbtn:focus-visible{outline:2px solid var(--dshpc-focus);outline-offset:2px;}\n.dshpc-iconbtn:disabled{cursor:default;opacity:.4;}\n\n/* \u2500\u2500 \u884C\u5F0F\u6587\u4EF6\u6309\u94AE\uFF08\u56FE\u6807 + \u6587\u4EF6\u540D\uFF09P2\uFF1A**\u5168\u7AD9\u552F\u4E00\u5B9E\u73B0**\uFF082026-10-04 \u6536\u7F16\uFF09\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n \u7528\u9014\uFF1A\u300C\u4EA7\u51FA\u7269 / \u9644\u4EF6\u300D\u90A3\u79CD**\u4E00\u884C\u4E00\u4E2A\u6587\u4EF6**\u7684\u6E05\u5355\u9879\uFF08\u57FA\u7840\u4FE1\u606F\u53F3\u680F\u4EA7\u51FA\u7269\u6E05\u5355\u3001\u9644\u4EF6\u533A\u3001\n \u6267\u884C\u8BB0\u5F55\u9875\u7684\u5C55\u5F00\u533A\uFF09\u3002\u5E73\u65F6\u900F\u660E\u3001**\u9F20\u6807\u79FB\u4E0A\u53BB\u624D\u51FA\u6D45\u5E95**\uFF08\u6CBF\u7528\u7528\u6237 2026-10-03 \u5B9A\u7684\u89C2\u611F\uFF09\u3002\n \u4E24\u4E2A\u5F62\u6001\u4FEE\u9970\u7C7B\uFF1A\n --block \u6491\u6EE1\u7236\u5BBD\uFF08\u6E05\u5355\u91CC\u4E00\u9879\u4E00\u884C\uFF09\n --inline \u5185\u5BB9\u5BBD\uFF08\u8DDF\u5728\u6587\u5B57\u540E\u5934\uFF0C\u5982\u9644\u4EF6\u884C\uFF09\n \u6536\u7F16\u539F\u56E0\uFF1A\u8FD9\u4EFD\u76AE\u80A4\u6B64\u524D\u53EA\u5199\u5728 task-list.tsx \u7684 TASK_LIST_CSS \u91CC\uFF08\u65E7\u540D .dshpc-info-out\uFF09\uFF0C\n \u6267\u884C\u8BB0\u5F55\u9875\u5C55\u5F00\u533A\u8981\u7528\u540C\u4E00\u79CD\u89C2\u611F \u21D2 \u4E0A\u63D0\u57FA\u7840\u5C42\uFF0C\u907F\u514D\u518D\u51FA\u73B0\u300C\u5404\u5199\u4E00\u4EFD\u5916\u89C2\u300D\uFF08\u540C\u540D\u4E0D\u540C\u76AE\u7684\u5751\u521A\u8E29\u8FC7\uFF09\u3002 */\n.dshpc-filechip{appearance:none;-webkit-appearance:none;border:0;border-radius:var(--dshpc-radius-xs);\n background:transparent;color:var(--dshpc-fg);font:inherit;text-align:left;cursor:pointer;min-width:0;\n transition:background-color var(--dshpc-dur) var(--dshpc-ease);}\n.dshpc-filechip:hover:not(:disabled){background:var(--dshpc-chip-bg);}\n.dshpc-filechip:focus-visible{outline:2px solid var(--dshpc-focus);outline-offset:1px;}\n.dshpc-filechip:disabled{cursor:default;background:transparent;color:var(--dshpc-fg-3);}\n.dshpc-filechip--block{display:flex;align-items:center;gap:6px;width:100%;box-sizing:border-box;\n padding:4px 6px;font-size:var(--dshpc-font-xs);}\n.dshpc-filechip--inline{display:inline-flex;align-items:center;gap:4px;padding:2px 6px;font-size:var(--dshpc-font-sm);}\n\n@media (prefers-reduced-motion: reduce){.dshpc-btn,.dshpc-iconbtn,.dshpc-filechip{transition:none;}}\n";
2
2
  //# sourceMappingURL=button-css.generated.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"button-css.generated.d.ts","sourceRoot":"","sources":["../../../src/ui/actions/button-css.generated.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,UAAU,0idAAmkT,CAAA"}
1
+ {"version":3,"file":"button-css.generated.d.ts","sourceRoot":"","sources":["../../../src/ui/actions/button-css.generated.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,UAAU,0mgBAA2pU,CAAA"}