@tuuject/koi-tokens 0.0.0-stage → 0.1.0

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 (140) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +39 -2
  3. package/dist/dimensions.d.ts +150 -0
  4. package/dist/dimensions.js +154 -0
  5. package/dist/native.d.ts +374 -0
  6. package/dist/native.js +380 -0
  7. package/dist/palette-kit.d.ts +35 -0
  8. package/dist/palette-kit.js +96 -0
  9. package/dist/palette.d.ts +779 -0
  10. package/dist/palette.js +1383 -0
  11. package/dist/panda-preset.d.ts +4 -0
  12. package/dist/panda-preset.js +1243 -0
  13. package/dist/theme-init.js +29 -0
  14. package/dist/tokens.css +420 -0
  15. package/fonts/00744f2b0f1e3a0e71521b7f5511b30c.woff2 +0 -0
  16. package/fonts/00b4ecd1817ecf947ca664b4fce8a4ad.woff2 +0 -0
  17. package/fonts/020f0fa79f25f5cfa8506d2f431df767.woff2 +0 -0
  18. package/fonts/03317bcae1fdca87a87769c43fd1ce47.woff2 +0 -0
  19. package/fonts/06d0a95f1efd8d124a255600ece94494.woff2 +0 -0
  20. package/fonts/06e7c4ae0fa82b85be634e3c308bf4b3.woff2 +0 -0
  21. package/fonts/0bad1aeeb4500b6301d8d3b64dcc3c73.woff2 +0 -0
  22. package/fonts/0d14b3729a41fc911ff13c3e4fe328c7.woff2 +0 -0
  23. package/fonts/0d6b7caaa1be1467b901364154c917b1.woff2 +0 -0
  24. package/fonts/0e73696b7f29da06cb67fe062f1b8a0c.woff2 +0 -0
  25. package/fonts/114edcf282654c7c63c8234c13b4b089.woff2 +0 -0
  26. package/fonts/1548b3024522036bb36484bbb82345c8.woff2 +0 -0
  27. package/fonts/17a63a64b5e2aac1dbe08b6b901f8856.woff2 +0 -0
  28. package/fonts/1f1f99649d10cf4638c162b7f5cd127a.woff2 +0 -0
  29. package/fonts/23f3a6ad5586406597914ccdfa6485a4.woff2 +0 -0
  30. package/fonts/242bc3d315aabb2c760c22901a294381.woff2 +0 -0
  31. package/fonts/28e0c9f4f663c3f04ba89ba81d19a2ad.woff2 +0 -0
  32. package/fonts/2928810ffc97278ca4fd2b599a1e9b6e.woff2 +0 -0
  33. package/fonts/2a66ebc75f6b74521f3042801a93ffe2.woff2 +0 -0
  34. package/fonts/2b46bd327dad644b0411ba6041e2e1cf.woff2 +0 -0
  35. package/fonts/30b3cf0ad50d03aeef55b669f99da4fa.woff2 +0 -0
  36. package/fonts/30c37e68fbeb4952e205077a53b7eab9.woff2 +0 -0
  37. package/fonts/333a4e28420bfab893a59cfa1c39c4b3.woff2 +0 -0
  38. package/fonts/34735fd05b36eaadb090efd3ba6409fa.woff2 +0 -0
  39. package/fonts/396b875417270491b2e4d246b980bbc8.woff2 +0 -0
  40. package/fonts/3a59340ca71997c84885188961d30e72.woff2 +0 -0
  41. package/fonts/3ab85b02fd30c5efe3dce62b69a7bea9.woff2 +0 -0
  42. package/fonts/3d54bf645647805f52d0281ed0228833.woff2 +0 -0
  43. package/fonts/409d74c42bdbae43d406a441af69a95f.woff2 +0 -0
  44. package/fonts/41050fd57f10e50907fd856f3a08346b.woff2 +0 -0
  45. package/fonts/418b784f58090a3a36c5dc1c53b62704.woff2 +0 -0
  46. package/fonts/42b4508a095cde5d8e9d25b07986f95f.woff2 +0 -0
  47. package/fonts/4409e57103e082215798f5214b4a3637.woff2 +0 -0
  48. package/fonts/44b889b0db6383d450ba3218ed64e108.woff2 +0 -0
  49. package/fonts/45f3d6d7263d515d4a2b58ff040fcc48.woff2 +0 -0
  50. package/fonts/46fe5b1f008721214771f40a4bd9bd72.woff2 +0 -0
  51. package/fonts/479f65c995cb67ce3a460c697dce9e22.woff2 +0 -0
  52. package/fonts/486b4a4a84c7578264e1303ecc433b16.woff2 +0 -0
  53. package/fonts/49b5445e12abe2d3eed431f38cfbb037.woff2 +0 -0
  54. package/fonts/4c4f826589fc39d61b1919ad8b627f80.woff2 +0 -0
  55. package/fonts/4cd5c9017bd228aca94124a40497f635.woff2 +0 -0
  56. package/fonts/4ecec2bf5c75f5ccb280052fb53157db.woff2 +0 -0
  57. package/fonts/4f0e75d692721110bee70b4e0d71300a.woff2 +0 -0
  58. package/fonts/518a6f44c506e83d1068d7515b0b8cb7.woff2 +0 -0
  59. package/fonts/5391ad919de181aa8608e4a0f1bd8c09.woff2 +0 -0
  60. package/fonts/53fe3ba2954fef70128d6733a90f8601.woff2 +0 -0
  61. package/fonts/56374bb0572ee6463de3cb83496d3f36.woff2 +0 -0
  62. package/fonts/574b1e1f154cecf2ac873c7a7544023b.woff2 +0 -0
  63. package/fonts/5a899d3bb4efd96c8fa0452768a3d456.woff2 +0 -0
  64. package/fonts/5e11c9b612776d9aee6b2062e3fccb55.woff2 +0 -0
  65. package/fonts/658767ed025bc501c3013e1f63c86bcb.woff2 +0 -0
  66. package/fonts/65c499c6e48d6c1b7827d6ff1d1eab60.woff2 +0 -0
  67. package/fonts/6760e79d75ce409f09427e56e3c025dc.woff2 +0 -0
  68. package/fonts/67d5234b7c17f407e8a242ce5ada493d.woff2 +0 -0
  69. package/fonts/6fbfc0af5a7ef4c448e8c1f5f1e91a60.woff2 +0 -0
  70. package/fonts/709e77d11c679cffc2dc25b032c67764.woff2 +0 -0
  71. package/fonts/75541edae19d80ac844e3d4a1b0e711a.woff2 +0 -0
  72. package/fonts/779acde69b4191ed711e89f176fae2d5.woff2 +0 -0
  73. package/fonts/7ade1c118b1bc97b3971f06048aa1e7a.woff2 +0 -0
  74. package/fonts/7f1ef4145bf986fb433cf7101594dbb8.woff2 +0 -0
  75. package/fonts/7ff32e4612a40f0203fe4d2409e515e8.woff2 +0 -0
  76. package/fonts/82afad3d44e99cbf1fb2a204740d7fd2.woff2 +0 -0
  77. package/fonts/86d79968a677302ec040c57fdbab6576.woff2 +0 -0
  78. package/fonts/8779a26aa266a22e886093a4ef65b0bd.woff2 +0 -0
  79. package/fonts/890aa53ea0c3bb3f35af8d1b17932473.woff2 +0 -0
  80. package/fonts/8cb1aba653e86d46fa31bf573631acd8.woff2 +0 -0
  81. package/fonts/8d9c6a762bbdfada274c0207bda44234.woff2 +0 -0
  82. package/fonts/8e9c72c231c8aa96c5b012f676fb54c3.woff2 +0 -0
  83. package/fonts/90501be40b3dbe4bb109d3f46dac3c61.woff2 +0 -0
  84. package/fonts/90e09d4c8c204194c134a583b5c1288b.woff2 +0 -0
  85. package/fonts/923694b5cdecd8647ba08a59697ab0cc.woff2 +0 -0
  86. package/fonts/9269e657048e89d04d79f8507e3cf1c3.woff2 +0 -0
  87. package/fonts/93de4eca97bc343ece70a4eeb03bd4a4.woff2 +0 -0
  88. package/fonts/98939883b0194fe74f877650c78b94c4.woff2 +0 -0
  89. package/fonts/993ac31171f7c467735857b80fe3cf7b.woff2 +0 -0
  90. package/fonts/9ae2fdcb005bd7479a071ecd605c4fd6.woff2 +0 -0
  91. package/fonts/9b4a1427f1fa323ed77767ee8f3a7321.woff2 +0 -0
  92. package/fonts/9c62c786a52ff747ef38e9acf9e65498.woff2 +0 -0
  93. package/fonts/9d53647c2ce0f4a1824203e0c644c41f.woff2 +0 -0
  94. package/fonts/9e1626f7a444a0a34b87a47d57de3e8b.woff2 +0 -0
  95. package/fonts/a07cb815b1d6dcee1e531a94d44aacdb.woff2 +0 -0
  96. package/fonts/a2a0ba09a982eca5baf40d99fd12196d.woff2 +0 -0
  97. package/fonts/a384403ad6999ff7528f25fff9ebf8cc.woff2 +0 -0
  98. package/fonts/aa37a3aaae61ab3cd934944af6ee9e10.woff2 +0 -0
  99. package/fonts/ab7939cba0d4b9d5a3b91073405b5704.woff2 +0 -0
  100. package/fonts/ad0be591acad4d101daab250ab3f6b13.woff2 +0 -0
  101. package/fonts/b1690dc0318a2d6ed494c70714c369fb.woff2 +0 -0
  102. package/fonts/b27ed0031d733b4f92aefe3a0bdad1a3.woff2 +0 -0
  103. package/fonts/b3a36aae2ce94efc1b33a812b0a63723.woff2 +0 -0
  104. package/fonts/b408e0a9c403f84d826fedddad4eafce.woff2 +0 -0
  105. package/fonts/b7552d432bbe1131f8b081a8a304c826.woff2 +0 -0
  106. package/fonts/b833866d3ed2eaf4157e4297f4db5818.woff2 +0 -0
  107. package/fonts/b86065dc8cf074e9da64f7cad2418175.woff2 +0 -0
  108. package/fonts/b90bb4ee23ef9b5e9a729a5a76885d8d.woff2 +0 -0
  109. package/fonts/bd6bc332a723d00071b7bd73098b1fca.woff2 +0 -0
  110. package/fonts/c1c4a62366427c476d7505d8d5607d43.woff2 +0 -0
  111. package/fonts/c37032acc02b2ec9bb82ea7e221a70f0.woff2 +0 -0
  112. package/fonts/c61c4905f06bdace00a01fee99fe4b4d.woff2 +0 -0
  113. package/fonts/c9e516ccf548caff87ac46d4a49d8439.woff2 +0 -0
  114. package/fonts/d29782161ecac8d5da44b6dbd63d98f1.woff2 +0 -0
  115. package/fonts/d5b155ab8ea80680e3a22b4b54282913.woff2 +0 -0
  116. package/fonts/d620b1ee2164749fe8d928f722896d1c.woff2 +0 -0
  117. package/fonts/d89b25cb16ce4004c3ba90531c1886d1.woff2 +0 -0
  118. package/fonts/d920f76005494dd4a42508a011b5bc7f.woff2 +0 -0
  119. package/fonts/d945c834b912b4ace6cf283b3731d66c.woff2 +0 -0
  120. package/fonts/deacad65f91899cb01176de287a9c00c.woff2 +0 -0
  121. package/fonts/dfb7d78b6b838654f246ad1b2b5b4b72.woff2 +0 -0
  122. package/fonts/dfe41a1b55be51bdac0d41e5c8b1e3b7.woff2 +0 -0
  123. package/fonts/e431ea7665f64dccbedcaa0ed19fccb7.woff2 +0 -0
  124. package/fonts/e71d1216d5e6b470598a17c11a0b132b.woff2 +0 -0
  125. package/fonts/e768b29b57d95b735c13984980dbd3b8.woff2 +0 -0
  126. package/fonts/e7efc76412d4935b4567b2760eb300fd.woff2 +0 -0
  127. package/fonts/ee11a2523b2c5b1ae3af86d162a95f8d.woff2 +0 -0
  128. package/fonts/efec9899498ea2c9be7453a7901c936e.woff2 +0 -0
  129. package/fonts/f1c118f9188115a5a596531b92587a83.woff2 +0 -0
  130. package/fonts/f36f25301e61cfb9d1f3200e047e927a.woff2 +0 -0
  131. package/fonts/f497194ba693571f76789df48028d494.woff2 +0 -0
  132. package/fonts/f6717ea5a513aacfe7494fdb6fdca2fa.woff2 +0 -0
  133. package/fonts/fab526c8b7ec2e57851baa1d4d61448f.woff2 +0 -0
  134. package/fonts/fb6e6ac34118a226d7cd3d1fbc5ddef1.woff2 +0 -0
  135. package/fonts/fd1d2083d4f38dc1f6f4dd0947f51f5d.woff2 +0 -0
  136. package/fonts/fonts.css +182 -0
  137. package/package.json +49 -3
  138. package/src/contrast-pairs.json +144 -0
  139. package/src/palette-kit.ts +140 -0
  140. package/src/tokens.json +1870 -0
@@ -0,0 +1,29 @@
1
+ /* GENERATED. Inline this in <head> before any CSS so there is no flash.
2
+ Follows the OS unless localStorage "koi-theme" is "light" or "dark".
3
+ Font: the system stack, or ChillRoundF when localStorage "koi-font" is "chill" (sets <html data-font="chill">).
4
+ Palette: koiSetPalette("rose") picks a built-in one (<html data-palette>); koiSetPalette({ primary, accent }) with
5
+ 11-step scales sets a custom one as inline variables. Saved in localStorage "koi-palette"; koiSetPalette() resets. */
6
+ (function () {
7
+ // The current choices live here; localStorage only carries them across reloads. When storage is blocked
8
+ // (some private modes, sandboxed frames) the switches still work for the page.
9
+ var mem = {};
10
+ function load(k) { if (k in mem) return mem[k]; try { return localStorage.getItem(k); } catch (e) { return null; } }
11
+ function save(k, v) { mem[k] = v; try { v == null ? localStorage.removeItem(k) : localStorage.setItem(k, v); } catch (e) {} }
12
+ var el = document.documentElement, mq = window.matchMedia('(prefers-color-scheme: dark)');
13
+ function apply() { var s = load('koi-theme'); el.setAttribute('data-theme', s === 'light' || s === 'dark' ? s : (mq.matches ? 'dark' : 'light')); }
14
+ apply();
15
+ mq.addEventListener('change', apply);
16
+ window.koiSetTheme = function (t) { save('koi-theme', t || null); apply(); };
17
+ function applyFont() { load('koi-font') === 'chill' ? el.setAttribute('data-font', 'chill') : el.removeAttribute('data-font'); }
18
+ applyFont();
19
+ window.koiSetFont = function (f) { save('koi-font', f === 'chill' ? f : null); applyFont(); };
20
+ function applyPalette() { var p = null, st = el.style;
21
+ try { p = JSON.parse(load('koi-palette')); } catch (e) {}
22
+ for (var i = st.length - 1; i >= 0; i--) if (/^--(colors-)?(primary|accent)-\d+$/.test(st[i])) st.removeProperty(st[i]);
23
+ if (typeof p === 'string' && p !== "koi") { el.setAttribute('data-palette', p); return; }
24
+ el.removeAttribute('data-palette');
25
+ if (p && typeof p === 'object') ['primary', 'accent'].forEach(function (k) { for (var s in p[k]) {
26
+ st.setProperty('--' + k + '-' + s, p[k][s]); st.setProperty('--colors-' + k + '-' + s, p[k][s]); } }); }
27
+ applyPalette();
28
+ window.koiSetPalette = function (p) { save('koi-palette', p ? JSON.stringify(p) : null); applyPalette(); };
29
+ })();
@@ -0,0 +1,420 @@
1
+ /* GENERATED from src/tokens.json. Light by default; dark with <html data-theme="dark">, or by the OS unless data-theme="light". */
2
+ :root, [data-theme="light"] {
3
+ --page-bg: var(--white);
4
+ --surface: var(--white);
5
+ --surface-muted: var(--secondary-100);
6
+ --surface-glass: rgba(255, 255, 255, 0.8);
7
+ --surface-glass-tint: rgba(255, 255, 255, 0.8);
8
+ --backdrop: rgba(0, 0, 0, 0.4);
9
+ --tooltip-bg: var(--secondary-900);
10
+ --tooltip-text: var(--white);
11
+ --text: var(--black);
12
+ --text-muted: rgba(0, 0, 0, 0.6);
13
+ --text-disabled: rgba(0, 0, 0, 0.38);
14
+ --text-brand: var(--primary-700);
15
+ --border: var(--secondary-200);
16
+ --border-control: var(--secondary-500);
17
+ --border-control-hover: var(--secondary-600);
18
+ --divider: rgba(0, 0, 0, 0.1);
19
+ --focus-ring: var(--primary-600);
20
+ --action: var(--primary-700);
21
+ --action-hover: var(--primary-800);
22
+ --on-action: var(--white);
23
+ --action-subtle: var(--primary-100);
24
+ --action-subtle-hover: var(--primary-200);
25
+ --on-action-subtle: var(--primary-800);
26
+ --control-checked: var(--primary-700);
27
+ --link: var(--accent-700);
28
+ --link-border: var(--accent-300);
29
+ --link-hover-bg: var(--accent-100);
30
+ --link-hover-border: var(--accent-500);
31
+ --danger: var(--error-600);
32
+ --danger-hover: var(--error-700);
33
+ --info-surface: var(--primary-50);
34
+ --info-border: var(--primary-200);
35
+ --info-text: var(--primary-800);
36
+ --warning-surface: var(--warning-50);
37
+ --warning-border: var(--warning-300);
38
+ --warning-text: var(--warning-800);
39
+ --error-surface: var(--error-50);
40
+ --error-border: var(--error-300);
41
+ --error-text: var(--error-700);
42
+ --error-control: var(--error-600);
43
+ --highlight: var(--accent-100);
44
+ --on-highlight: var(--accent-800);
45
+ --nav-item-text: var(--secondary-700);
46
+ --nav-item-hover: var(--secondary-50);
47
+ --table-row-hover: var(--secondary-50);
48
+ --nav-item-active: var(--secondary-100);
49
+ --skeleton: var(--secondary-100);
50
+ --skeleton-highlight: var(--secondary-50);
51
+ --prose-text: var(--secondary-700);
52
+ --code-block-bg: var(--secondary-800);
53
+ --code-block-text: var(--secondary-200);
54
+ --primary-solid: var(--action);
55
+ --primary-solid-hover: var(--action-hover);
56
+ --on-primary-solid: var(--on-action);
57
+ --primary-soft: var(--action-subtle);
58
+ --primary-soft-hover: var(--action-subtle-hover);
59
+ --on-primary-soft: var(--on-action-subtle);
60
+ --primary-fg: var(--text-brand);
61
+ --primary-edge: var(--primary-600);
62
+ --accent-solid: var(--accent-400);
63
+ --accent-solid-hover: var(--accent-300);
64
+ --on-accent-solid: var(--accent-950);
65
+ --accent-soft: var(--accent-100);
66
+ --accent-soft-hover: var(--accent-200);
67
+ --on-accent-soft: var(--accent-800);
68
+ --accent-fg: var(--accent-700);
69
+ --accent-edge: var(--accent-600);
70
+ --secondary-solid: var(--secondary-700);
71
+ --secondary-solid-hover: var(--secondary-800);
72
+ --on-secondary-solid: var(--white);
73
+ --secondary-soft: var(--secondary-100);
74
+ --secondary-soft-hover: var(--secondary-200);
75
+ --on-secondary-soft: var(--secondary-800);
76
+ --secondary-fg: var(--secondary-700);
77
+ --secondary-edge: var(--secondary-500);
78
+ --warning-solid: var(--warning-400);
79
+ --warning-solid-hover: var(--warning-300);
80
+ --on-warning-solid: var(--warning-950);
81
+ --warning-soft: var(--warning-100);
82
+ --warning-soft-hover: var(--warning-200);
83
+ --on-warning-soft: var(--warning-800);
84
+ --warning-fg: var(--warning-700);
85
+ --warning-edge: var(--warning-700);
86
+ --error-solid: var(--danger);
87
+ --error-solid-hover: var(--danger-hover);
88
+ --on-error-solid: var(--on-action);
89
+ --error-soft: var(--error-100);
90
+ --error-soft-hover: var(--error-200);
91
+ --on-error-soft: var(--error-800);
92
+ --error-fg: var(--error-700);
93
+ --error-edge: var(--error-600);
94
+ --primary-50: oklch(97.7% 0.013 236.62);
95
+ --primary-100: oklch(95.1% 0.026 236.824);
96
+ --primary-200: oklch(90.1% 0.058 230.902);
97
+ --primary-300: oklch(82.8% 0.111 230.318);
98
+ --primary-400: oklch(74.6% 0.16 232.661);
99
+ --primary-500: oklch(68.5% 0.169 237.323);
100
+ --primary-600: oklch(58.8% 0.158 241.966);
101
+ --primary-700: oklch(50% 0.134 242.749);
102
+ --primary-800: oklch(44.3% 0.11 240.79);
103
+ --primary-900: oklch(39.1% 0.09 240.876);
104
+ --primary-950: oklch(29.3% 0.066 243.157);
105
+ --accent-50: oklch(98.7% 0.022 95.277);
106
+ --accent-100: oklch(96.2% 0.059 95.617);
107
+ --accent-200: oklch(92.4% 0.12 95.746);
108
+ --accent-300: oklch(87.9% 0.169 91.605);
109
+ --accent-400: oklch(82.8% 0.189 84.429);
110
+ --accent-500: oklch(76.9% 0.188 70.08);
111
+ --accent-600: oklch(66.6% 0.179 58.318);
112
+ --accent-700: oklch(55.5% 0.163 48.998);
113
+ --accent-800: oklch(47.3% 0.137 46.201);
114
+ --accent-900: oklch(41.4% 0.112 45.904);
115
+ --accent-950: oklch(27.9% 0.077 45.635);
116
+ --secondary-50: oklch(98.5% 0.002 247.839);
117
+ --secondary-100: oklch(96.7% 0.003 264.542);
118
+ --secondary-200: oklch(92.8% 0.006 264.531);
119
+ --secondary-300: oklch(87.2% 0.01 258.338);
120
+ --secondary-400: oklch(70.7% 0.022 261.325);
121
+ --secondary-500: oklch(55.1% 0.027 264.364);
122
+ --secondary-600: oklch(44.6% 0.03 256.802);
123
+ --secondary-700: oklch(37.3% 0.034 259.733);
124
+ --secondary-800: oklch(27.8% 0.033 256.848);
125
+ --secondary-900: oklch(21% 0.034 264.665);
126
+ --secondary-950: oklch(13% 0.028 261.692);
127
+ --warning-50: oklch(98.7% 0.026 102.212);
128
+ --warning-100: oklch(97.3% 0.071 103.193);
129
+ --warning-200: oklch(94.5% 0.129 101.54);
130
+ --warning-300: oklch(90.5% 0.182 98.111);
131
+ --warning-400: oklch(85.2% 0.199 91.936);
132
+ --warning-500: oklch(79.5% 0.184 86.047);
133
+ --warning-600: oklch(68.1% 0.162 75.834);
134
+ --warning-700: oklch(55.4% 0.135 66.442);
135
+ --warning-800: oklch(47.6% 0.114 61.907);
136
+ --warning-900: oklch(42.1% 0.095 57.708);
137
+ --warning-950: oklch(28.6% 0.066 53.813);
138
+ --error-50: oklch(97.1% 0.013 17.38);
139
+ --error-100: oklch(93.6% 0.032 17.717);
140
+ --error-200: oklch(88.5% 0.062 18.334);
141
+ --error-300: oklch(80.8% 0.114 19.571);
142
+ --error-400: oklch(70.4% 0.191 22.216);
143
+ --error-500: oklch(63.7% 0.237 25.331);
144
+ --error-600: oklch(57.7% 0.245 27.325);
145
+ --error-700: oklch(50.5% 0.213 27.518);
146
+ --error-800: oklch(44.4% 0.177 26.899);
147
+ --error-900: oklch(39.6% 0.141 25.723);
148
+ --error-950: oklch(25.8% 0.092 26.042);
149
+ --white: #ffffff;
150
+ --black: #000000;
151
+ --space-1: 4px;
152
+ --space-2: 8px;
153
+ --space-3: 12px;
154
+ --space-4: 16px;
155
+ --space-5: 20px;
156
+ --space-6: 24px;
157
+ --space-8: 32px;
158
+ --space-10: 40px;
159
+ --space-12: 48px;
160
+ --space-16: 64px;
161
+ --radius-sm: 6px;
162
+ --radius-lg: 8px;
163
+ --radius-xl: 12px;
164
+ --radius-2xl: 16px;
165
+ --radius-panel: 24px;
166
+ --radius-dialog: 32px;
167
+ --radius-bar: 36px;
168
+ --radius-full: 9999px;
169
+ --control-sm: 28px;
170
+ --control-md: 36px;
171
+ --control-lg: 44px;
172
+ --content-max: 56rem;
173
+ --icon: 16px;
174
+ --icon-sm: 14px;
175
+ --icon-xs: 12px;
176
+ --icon-lg: 18px;
177
+ --shadow-raised: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px -1px rgba(0, 0, 0, 0.1);
178
+ --shadow-float: 0 25px 50px -12px rgba(0, 0, 0, 0.25);
179
+ --shadow-float-soft: 0 25px 50px -12px rgba(0, 0, 0, 0.15);
180
+ --blur-panel: 24px;
181
+ --blur-float: 40px;
182
+ --layer-dialog: 900;
183
+ --layer-popup: 950;
184
+ --layer-toast: 1000;
185
+ --layer-tooltip: 1000;
186
+ --font-sans: -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;
187
+ --ease-spring: cubic-bezier(.47,1.64,.41,.8);
188
+ --duration-fast: 150ms;
189
+ }
190
+
191
+ @media (prefers-color-scheme: dark) {
192
+ :root:not([data-theme="light"]) {
193
+ --page-bg: var(--secondary-950);
194
+ --surface: var(--secondary-900);
195
+ --surface-muted: var(--secondary-800);
196
+ --surface-glass: color-mix(in oklch, var(--secondary-950) 70%, transparent);
197
+ --surface-glass-tint: color-mix(in oklch, var(--primary-950) 80%, transparent);
198
+ --backdrop: rgba(0, 0, 0, 0.6);
199
+ --tooltip-bg: var(--secondary-100);
200
+ --tooltip-text: var(--black);
201
+ --text: var(--white);
202
+ --text-muted: rgba(255, 255, 255, 0.6);
203
+ --text-disabled: rgba(255, 255, 255, 0.38);
204
+ --text-brand: var(--primary-300);
205
+ --border: var(--secondary-800);
206
+ --border-control: var(--secondary-500);
207
+ --border-control-hover: var(--secondary-400);
208
+ --divider: rgba(255, 255, 255, 0.1);
209
+ --focus-ring: var(--primary-400);
210
+ --action: var(--primary-700);
211
+ --action-hover: var(--primary-800);
212
+ --on-action: var(--white);
213
+ --action-subtle: var(--primary-950);
214
+ --action-subtle-hover: var(--primary-900);
215
+ --on-action-subtle: var(--primary-200);
216
+ --control-checked: var(--primary-600);
217
+ --link: var(--accent-400);
218
+ --link-border: var(--accent-800);
219
+ --link-hover-bg: var(--accent-950);
220
+ --link-hover-border: var(--accent-600);
221
+ --danger: var(--error-600);
222
+ --danger-hover: var(--error-700);
223
+ --info-surface: var(--primary-950);
224
+ --info-border: var(--primary-800);
225
+ --info-text: var(--primary-200);
226
+ --warning-surface: var(--warning-950);
227
+ --warning-border: var(--warning-800);
228
+ --warning-text: var(--warning-200);
229
+ --error-surface: var(--error-950);
230
+ --error-border: var(--error-800);
231
+ --error-text: var(--error-300);
232
+ --error-control: var(--error-400);
233
+ --highlight: var(--accent-950);
234
+ --on-highlight: var(--accent-200);
235
+ --nav-item-text: var(--secondary-300);
236
+ --nav-item-hover: var(--secondary-900);
237
+ --table-row-hover: color-mix(in oklch, var(--secondary-800) 50%, transparent);
238
+ --nav-item-active: var(--secondary-800);
239
+ --skeleton: var(--secondary-800);
240
+ --skeleton-highlight: var(--secondary-700);
241
+ --prose-text: var(--secondary-300);
242
+ --code-block-bg: var(--secondary-800);
243
+ --code-block-text: var(--secondary-300);
244
+ --primary-solid: var(--action);
245
+ --primary-solid-hover: var(--action-hover);
246
+ --on-primary-solid: var(--on-action);
247
+ --primary-soft: var(--action-subtle);
248
+ --primary-soft-hover: var(--action-subtle-hover);
249
+ --on-primary-soft: var(--on-action-subtle);
250
+ --primary-fg: var(--text-brand);
251
+ --primary-edge: var(--primary-400);
252
+ --accent-solid: var(--accent-400);
253
+ --accent-solid-hover: var(--accent-300);
254
+ --on-accent-solid: var(--accent-950);
255
+ --accent-soft: var(--accent-950);
256
+ --accent-soft-hover: var(--accent-900);
257
+ --on-accent-soft: var(--accent-200);
258
+ --accent-fg: var(--accent-400);
259
+ --accent-edge: var(--accent-500);
260
+ --secondary-solid: var(--secondary-200);
261
+ --secondary-solid-hover: var(--secondary-300);
262
+ --on-secondary-solid: var(--secondary-950);
263
+ --secondary-soft: var(--secondary-800);
264
+ --secondary-soft-hover: var(--secondary-700);
265
+ --on-secondary-soft: var(--secondary-100);
266
+ --secondary-fg: var(--secondary-300);
267
+ --secondary-edge: var(--secondary-500);
268
+ --warning-solid: var(--warning-400);
269
+ --warning-solid-hover: var(--warning-300);
270
+ --on-warning-solid: var(--warning-950);
271
+ --warning-soft: var(--warning-950);
272
+ --warning-soft-hover: var(--warning-900);
273
+ --on-warning-soft: var(--warning-200);
274
+ --warning-fg: var(--warning-400);
275
+ --warning-edge: var(--warning-500);
276
+ --error-solid: var(--danger);
277
+ --error-solid-hover: var(--danger-hover);
278
+ --on-error-solid: var(--on-action);
279
+ --error-soft: var(--error-950);
280
+ --error-soft-hover: var(--error-900);
281
+ --on-error-soft: var(--error-200);
282
+ --error-fg: var(--error-400);
283
+ --error-edge: var(--error-400);
284
+ }
285
+ }
286
+
287
+ [data-theme="dark"] {
288
+ --page-bg: var(--secondary-950);
289
+ --surface: var(--secondary-900);
290
+ --surface-muted: var(--secondary-800);
291
+ --surface-glass: color-mix(in oklch, var(--secondary-950) 70%, transparent);
292
+ --surface-glass-tint: color-mix(in oklch, var(--primary-950) 80%, transparent);
293
+ --backdrop: rgba(0, 0, 0, 0.6);
294
+ --tooltip-bg: var(--secondary-100);
295
+ --tooltip-text: var(--black);
296
+ --text: var(--white);
297
+ --text-muted: rgba(255, 255, 255, 0.6);
298
+ --text-disabled: rgba(255, 255, 255, 0.38);
299
+ --text-brand: var(--primary-300);
300
+ --border: var(--secondary-800);
301
+ --border-control: var(--secondary-500);
302
+ --border-control-hover: var(--secondary-400);
303
+ --divider: rgba(255, 255, 255, 0.1);
304
+ --focus-ring: var(--primary-400);
305
+ --action: var(--primary-700);
306
+ --action-hover: var(--primary-800);
307
+ --on-action: var(--white);
308
+ --action-subtle: var(--primary-950);
309
+ --action-subtle-hover: var(--primary-900);
310
+ --on-action-subtle: var(--primary-200);
311
+ --control-checked: var(--primary-600);
312
+ --link: var(--accent-400);
313
+ --link-border: var(--accent-800);
314
+ --link-hover-bg: var(--accent-950);
315
+ --link-hover-border: var(--accent-600);
316
+ --danger: var(--error-600);
317
+ --danger-hover: var(--error-700);
318
+ --info-surface: var(--primary-950);
319
+ --info-border: var(--primary-800);
320
+ --info-text: var(--primary-200);
321
+ --warning-surface: var(--warning-950);
322
+ --warning-border: var(--warning-800);
323
+ --warning-text: var(--warning-200);
324
+ --error-surface: var(--error-950);
325
+ --error-border: var(--error-800);
326
+ --error-text: var(--error-300);
327
+ --error-control: var(--error-400);
328
+ --highlight: var(--accent-950);
329
+ --on-highlight: var(--accent-200);
330
+ --nav-item-text: var(--secondary-300);
331
+ --nav-item-hover: var(--secondary-900);
332
+ --table-row-hover: color-mix(in oklch, var(--secondary-800) 50%, transparent);
333
+ --nav-item-active: var(--secondary-800);
334
+ --skeleton: var(--secondary-800);
335
+ --skeleton-highlight: var(--secondary-700);
336
+ --prose-text: var(--secondary-300);
337
+ --code-block-bg: var(--secondary-800);
338
+ --code-block-text: var(--secondary-300);
339
+ --primary-solid: var(--action);
340
+ --primary-solid-hover: var(--action-hover);
341
+ --on-primary-solid: var(--on-action);
342
+ --primary-soft: var(--action-subtle);
343
+ --primary-soft-hover: var(--action-subtle-hover);
344
+ --on-primary-soft: var(--on-action-subtle);
345
+ --primary-fg: var(--text-brand);
346
+ --primary-edge: var(--primary-400);
347
+ --accent-solid: var(--accent-400);
348
+ --accent-solid-hover: var(--accent-300);
349
+ --on-accent-solid: var(--accent-950);
350
+ --accent-soft: var(--accent-950);
351
+ --accent-soft-hover: var(--accent-900);
352
+ --on-accent-soft: var(--accent-200);
353
+ --accent-fg: var(--accent-400);
354
+ --accent-edge: var(--accent-500);
355
+ --secondary-solid: var(--secondary-200);
356
+ --secondary-solid-hover: var(--secondary-300);
357
+ --on-secondary-solid: var(--secondary-950);
358
+ --secondary-soft: var(--secondary-800);
359
+ --secondary-soft-hover: var(--secondary-700);
360
+ --on-secondary-soft: var(--secondary-100);
361
+ --secondary-fg: var(--secondary-300);
362
+ --secondary-edge: var(--secondary-500);
363
+ --warning-solid: var(--warning-400);
364
+ --warning-solid-hover: var(--warning-300);
365
+ --on-warning-solid: var(--warning-950);
366
+ --warning-soft: var(--warning-950);
367
+ --warning-soft-hover: var(--warning-900);
368
+ --on-warning-soft: var(--warning-200);
369
+ --warning-fg: var(--warning-400);
370
+ --warning-edge: var(--warning-500);
371
+ --error-solid: var(--danger);
372
+ --error-solid-hover: var(--danger-hover);
373
+ --on-error-solid: var(--on-action);
374
+ --error-soft: var(--error-950);
375
+ --error-soft-hover: var(--error-900);
376
+ --on-error-soft: var(--error-200);
377
+ --error-fg: var(--error-400);
378
+ --error-edge: var(--error-400);
379
+ }
380
+
381
+ [data-palette="rose"] {
382
+ --primary-50: #fff1f2;
383
+ --primary-100: #ffe4e6;
384
+ --primary-200: #fecdd3;
385
+ --primary-300: #fda4af;
386
+ --primary-400: #fb7185;
387
+ --primary-500: #f43f5e;
388
+ --primary-600: #e11d48;
389
+ --primary-700: #be123c;
390
+ --primary-800: #9f1239;
391
+ --primary-900: #881337;
392
+ --primary-950: #4c0519;
393
+ --accent-50: #f5f3ff;
394
+ --accent-100: #ede9fe;
395
+ --accent-200: #ddd6fe;
396
+ --accent-300: #c4b5fd;
397
+ --accent-400: #a78bfa;
398
+ --accent-500: #8b5cf6;
399
+ --accent-600: #7c3aed;
400
+ --accent-700: #6d28d9;
401
+ --accent-800: #5b21b6;
402
+ --accent-900: #4c1d95;
403
+ --accent-950: #2e1065;
404
+ }
405
+
406
+ [data-font="chill"] {
407
+ --font-sans: "ChillRoundF", -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;
408
+ }
409
+
410
+ .koi-type-display { font-family: var(--font-sans); font-size: 30px; line-height: 38px; font-weight: 700; }
411
+ .koi-type-heading-1 { font-family: var(--font-sans); font-size: 24px; line-height: 32px; font-weight: 700; }
412
+ .koi-type-heading-2 { font-family: var(--font-sans); font-size: 20px; line-height: 28px; font-weight: 700; }
413
+ .koi-type-heading-3 { font-family: var(--font-sans); font-size: 16px; line-height: 24px; font-weight: 700; }
414
+ .koi-type-prose { font-family: var(--font-sans); font-size: 16px; line-height: 1.75; font-weight: 400; }
415
+ .koi-type-body { font-family: var(--font-sans); font-size: 14px; line-height: 20px; font-weight: 400; }
416
+ .koi-type-small { font-family: var(--font-sans); font-size: 12px; line-height: 16px; font-weight: 400; }
417
+ .koi-type-caption { font-family: var(--font-sans); font-size: 12px; line-height: 16px; font-weight: 700; }
418
+ .koi-type-label { font-family: var(--font-sans); font-size: 14px; line-height: 20px; font-weight: 700; }
419
+ .koi-type-button { font-family: var(--font-sans); font-size: 14px; line-height: 20px; font-weight: 600; }
420
+ .koi-type-button-sm { font-family: var(--font-sans); font-size: 12px; line-height: 16px; font-weight: 600; }