|
33 | 33 | @variant dark (&:where(.dark, .dark *)); |
34 | 34 |
|
35 | 35 | /* |
36 | | - * Color tokens (HSL channels, e.g. "220 80% 55%") |
| 36 | + * Color tokens (full oklch() values, e.g. "oklch(0.7 0.15 240)") |
37 | 37 | * |
38 | 38 | * Tier 1 - Accent: --accent, --accent-foreground |
39 | 39 | * Tier 2 - Full palette: background, foreground, border, surface, etc. |
|
48 | 48 | @layer base { |
49 | 49 | :root { |
50 | 50 | /* Tier 1 - Accent */ |
51 | | - --accent: 0 0% 9%; |
52 | | - --accent-foreground: 0 0% 100%; |
| 51 | + --accent: oklch(0.2044 0 0); |
| 52 | + --accent-foreground: oklch(1 0 0); |
53 | 53 | /* Tier 2 - Full palette */ |
54 | | - --background: 0 0% 100%; |
55 | | - --foreground: 0 0% 13%; |
56 | | - --foreground-muted: 0 0% 29%; |
57 | | - --border: 0 0% 91%; |
58 | | - --border-control: 0 0% 55%; |
59 | | - --ring: 0 0% 13%; |
60 | | - --surface: 0 0% 96%; |
61 | | - --surface-highlighted: 0 0% 91%; |
| 54 | + --background: oklch(1 0 0); |
| 55 | + --foreground: oklch(0.2484 0 0); |
| 56 | + --foreground-muted: oklch(0.4089 0 0); |
| 57 | + --border: oklch(0.9312 0 0); |
| 58 | + --border-control: oklch(0.6409 0 0); |
| 59 | + --ring: oklch(0.2484 0 0); |
| 60 | + --surface: oklch(0.9696 0 0); |
| 61 | + --surface-highlighted: oklch(0.9312 0 0); |
62 | 62 | --button-primary-bg: var(--accent); |
63 | 63 | --button-primary-text: var(--accent-foreground); |
64 | 64 | --button-primary-icon: var(--button-primary-text); |
65 | | - --danger: 0 72% 38%; |
66 | | - --danger-light: 0 100% 97%; |
67 | | - --danger-text: 0 72% 35%; |
68 | | - --success-bg: 142 76% 65%; |
69 | | - --success-text: 142 76% 13%; |
70 | | - --switch-track-checked: 142 70% 38%; |
71 | | - --warning-bg: 48 96% 65%; |
72 | | - --warning-text: 48 96% 15%; |
73 | | - --error-bg: 0 84% 75%; |
74 | | - --error-text: 0 93% 12%; |
| 65 | + --danger: oklch(0.47 0.1742 27.23); |
| 66 | + --danger-light: oklch(0.9663 0.0166 17.44); |
| 67 | + --danger-text: oklch(0.443 0.1634 27.14); |
| 68 | + --success-bg: oklch(0.8395 0.1698 152.91); |
| 69 | + --success-text: oklch(0.3088 0.0763 150.76); |
| 70 | + --switch-track-checked: oklch(0.6334 0.1664 149.75); |
| 71 | + --warning-bg: oklch(0.8908 0.1551 94.86); |
| 72 | + --warning-text: oklch(0.3625 0.0732 93.12); |
| 73 | + --error-bg: oklch(0.748 0.1306 20.64); |
| 74 | + --error-text: oklch(0.2248 0.0874 28.11); |
75 | 75 | --header-height: 63px; |
76 | 76 | } |
77 | 77 |
|
78 | 78 | .dark { |
79 | 79 | /* Tier 1 - Accent */ |
80 | | - --accent: 0 0% 100%; |
81 | | - --accent-foreground: 0 0% 9%; |
| 80 | + --accent: oklch(1 0 0); |
| 81 | + --accent-foreground: oklch(0.2044 0 0); |
82 | 82 | /* Tier 2 - Full palette */ |
83 | | - --background: 0 0% 0%; |
84 | | - --foreground: 0 0% 89%; |
85 | | - --foreground-muted: 0 0% 71%; |
86 | | - --border: 0 0% 16%; |
87 | | - --border-control: 0 0% 40%; |
88 | | - --ring: 0 0% 89%; |
89 | | - --surface: 0 0% 8%; |
90 | | - --surface-highlighted: 0 0% 16%; |
| 83 | + --background: oklch(0 0 0); |
| 84 | + --foreground: oklch(0.9157 0 0); |
| 85 | + --foreground-muted: oklch(0.7733 0 0); |
| 86 | + --border: oklch(0.2801 0 0); |
| 87 | + --border-control: oklch(0.5103 0 0); |
| 88 | + --ring: oklch(0.9157 0 0); |
| 89 | + --surface: oklch(0.193 0 0); |
| 90 | + --surface-highlighted: oklch(0.2801 0 0); |
91 | 91 | --button-primary-bg: var(--accent); |
92 | 92 | --button-primary-text: var(--accent-foreground); |
93 | 93 | --button-primary-icon: var(--button-primary-text); |
94 | | - --danger: 0 85% 60%; |
95 | | - --danger-light: 0 93% 15%; |
96 | | - --danger-text: 0 85% 64%; |
97 | | - --success-bg: 142 76% 15%; |
98 | | - --success-text: 142 76% 80%; |
99 | | - --switch-track-checked: 142 70% 45%; |
100 | | - --warning-bg: 48 96% 15%; |
101 | | - --warning-text: 48 96% 80%; |
102 | | - --error-bg: 0 93% 12%; |
103 | | - --error-text: 0 84% 75%; |
| 94 | + --danger: oklch(0.6362 0.2102 25.49); |
| 95 | + --danger-light: oklch(0.2596 0.1021 28.32); |
| 96 | + --danger-text: oklch(0.6607 0.1921 24.02); |
| 97 | + --success-bg: oklch(0.3385 0.0852 150.45); |
| 98 | + --success-text: oklch(0.8999 0.1022 155.94); |
| 99 | + --switch-track-checked: oklch(0.7176 0.1902 149.6); |
| 100 | + --warning-bg: oklch(0.3625 0.0732 93.12); |
| 101 | + --warning-text: oklch(0.9336 0.1 95.79); |
| 102 | + --error-bg: oklch(0.2248 0.0874 28.11); |
| 103 | + --error-text: oklch(0.748 0.1306 20.64); |
104 | 104 | } |
105 | 105 |
|
106 | 106 | /* Typography */ |
|
148 | 148 | .l-ui-body, |
149 | 149 | .l-ui-body * { |
150 | 150 | scrollbar-width: thin; |
151 | | - scrollbar-color: hsl(var(--foreground-muted) / 0.3) transparent; |
| 151 | + scrollbar-color: color-mix(in oklch, var(--foreground-muted) 30%, transparent) transparent; |
152 | 152 | } |
153 | 153 | } |
154 | 154 |
|
|
157 | 157 | @theme { |
158 | 158 | --font-manrope: 'Manrope', ui-sans-serif, system-ui, sans-serif; |
159 | 159 | --font-inter: 'Inter', ui-sans-serif, system-ui, sans-serif; |
160 | | - --color-accent: hsl(var(--accent)); |
161 | | - --color-accent-foreground: hsl(var(--accent-foreground)); |
162 | | - --color-background: hsl(var(--background)); |
163 | | - --color-foreground: hsl(var(--foreground)); |
164 | | - --color-foreground-muted: hsl(var(--foreground-muted)); |
165 | | - --color-border: hsl(var(--border)); |
166 | | - --color-border-control: hsl(var(--border-control)); |
167 | | - --color-surface: hsl(var(--surface)); |
168 | | - --color-surface-highlighted: hsl(var(--surface-highlighted)); |
169 | | - --color-button-primary-bg: hsl(var(--button-primary-bg)); |
170 | | - --color-button-primary-text: hsl(var(--button-primary-text)); |
171 | | - --color-button-primary-icon: hsl(var(--button-primary-icon)); |
172 | | - --color-danger: hsl(var(--danger)); |
173 | | - --color-danger-light: hsl(var(--danger-light)); |
174 | | - --color-danger-text: hsl(var(--danger-text)); |
175 | | - --color-success-bg: hsl(var(--success-bg)); |
176 | | - --color-success-text: hsl(var(--success-text)); |
177 | | - --color-switch-track-checked: hsl(var(--switch-track-checked)); |
178 | | - --color-warning-bg: hsl(var(--warning-bg)); |
179 | | - --color-warning-text: hsl(var(--warning-text)); |
180 | | - --color-error-bg: hsl(var(--error-bg)); |
181 | | - --color-error-text: hsl(var(--error-text)); |
182 | | - --color-ring: hsl(var(--ring)); |
| 160 | + --color-accent: var(--accent); |
| 161 | + --color-accent-foreground: var(--accent-foreground); |
| 162 | + --color-background: var(--background); |
| 163 | + --color-foreground: var(--foreground); |
| 164 | + --color-foreground-muted: var(--foreground-muted); |
| 165 | + --color-border: var(--border); |
| 166 | + --color-border-control: var(--border-control); |
| 167 | + --color-surface: var(--surface); |
| 168 | + --color-surface-highlighted: var(--surface-highlighted); |
| 169 | + --color-button-primary-bg: var(--button-primary-bg); |
| 170 | + --color-button-primary-text: var(--button-primary-text); |
| 171 | + --color-button-primary-icon: var(--button-primary-icon); |
| 172 | + --color-danger: var(--danger); |
| 173 | + --color-danger-light: var(--danger-light); |
| 174 | + --color-danger-text: var(--danger-text); |
| 175 | + --color-success-bg: var(--success-bg); |
| 176 | + --color-success-text: var(--success-text); |
| 177 | + --color-switch-track-checked: var(--switch-track-checked); |
| 178 | + --color-warning-bg: var(--warning-bg); |
| 179 | + --color-warning-text: var(--warning-text); |
| 180 | + --color-error-bg: var(--error-bg); |
| 181 | + --color-error-text: var(--error-text); |
| 182 | + --color-ring: var(--ring); |
183 | 183 | } |
184 | 184 |
|
185 | 185 | /* Accessibility */ |
@@ -1092,7 +1092,7 @@ pre.l-ui-surface { |
1092 | 1092 | w-4 h-4 |
1093 | 1093 | pointer-events-none; |
1094 | 1094 | content: ''; |
1095 | | - background-color: hsl(var(--foreground)); |
| 1095 | + background-color: var(--foreground); |
1096 | 1096 | -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'%3E%3Cpath d='M7.41 8.59L12 13.17l4.59-4.58L18 10l-6 6-6-6 1.41-1.41z'/%3E%3C/svg%3E"); |
1097 | 1097 | mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'%3E%3Cpath d='M7.41 8.59L12 13.17l4.59-4.58L18 10l-6 6-6-6 1.41-1.41z'/%3E%3C/svg%3E"); |
1098 | 1098 | -webkit-mask-size: contain; |
|
0 commit comments