@cosxai/ui 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.
- package/package.json +38 -0
- package/src/actionbar/ActionBar.tsx +436 -0
- package/src/actionbar/ActionBarButton.tsx +110 -0
- package/src/actionbar/ActionBarMenuGroup.tsx +106 -0
- package/src/actionbar/ActionBarProvider.tsx +76 -0
- package/src/actionbar/actionbar-context.ts +23 -0
- package/src/actionbar/index.ts +13 -0
- package/src/actionbar/types.ts +50 -0
- package/src/actionbar/useActionBarItems.ts +47 -0
- package/src/ambient/AmbientBackdrop.tsx +74 -0
- package/src/ambient/CommandInput.tsx +107 -0
- package/src/ambient/SuperbarStrip.tsx +36 -0
- package/src/ambient/index.ts +6 -0
- package/src/bento/BentoCell.tsx +66 -0
- package/src/bento/BentoGrid.tsx +42 -0
- package/src/bento/index.ts +2 -0
- package/src/command/CommandPalette.tsx +277 -0
- package/src/command/CommandProvider.tsx +57 -0
- package/src/command/command-context.ts +12 -0
- package/src/command/index.ts +6 -0
- package/src/command/rank.ts +45 -0
- package/src/command/types.ts +26 -0
- package/src/command/useCommandSource.ts +37 -0
- package/src/dialogs/DialogsProvider.tsx +216 -0
- package/src/dialogs/Modal.tsx +204 -0
- package/src/dialogs/Toast.tsx +85 -0
- package/src/dialogs/dialogs-context.ts +6 -0
- package/src/dialogs/index.ts +10 -0
- package/src/dialogs/types.ts +37 -0
- package/src/dialogs/useDialogs.ts +8 -0
- package/src/editorial/EditorialSpotlight.tsx +63 -0
- package/src/editorial/Folio.tsx +52 -0
- package/src/editorial/PlateMarker.tsx +33 -0
- package/src/editorial/RomanSection.tsx +65 -0
- package/src/editorial/RunningMarginalia.tsx +65 -0
- package/src/editorial/index.ts +10 -0
- package/src/frutiger/GlossyOrb.tsx +79 -0
- package/src/frutiger/SkyBackdrop.tsx +114 -0
- package/src/frutiger/index.ts +2 -0
- package/src/hooks/index.ts +5 -0
- package/src/hooks/useKeyboardHotkey.ts +80 -0
- package/src/hooks/useReducedMotion.ts +20 -0
- package/src/hooks/useViewport.ts +61 -0
- package/src/index.ts +26 -0
- package/src/layout/Breadcrumb.tsx +74 -0
- package/src/layout/LeftNavRail.tsx +126 -0
- package/src/layout/MobileTabBar.tsx +101 -0
- package/src/layout/NavItem.tsx +128 -0
- package/src/layout/NavSearchTrigger.tsx +88 -0
- package/src/layout/NavSection.tsx +40 -0
- package/src/layout/RightSidebarPanel.tsx +111 -0
- package/src/layout/Shell.tsx +91 -0
- package/src/layout/StickyBanner.tsx +83 -0
- package/src/layout/Topbar.tsx +68 -0
- package/src/layout/index.ts +22 -0
- package/src/layout/useNavRailState.ts +69 -0
- package/src/lib/cn.ts +7 -0
- package/src/lib/time-utils.ts +44 -0
- package/src/neobrutalism/Marquee.tsx +81 -0
- package/src/neobrutalism/Sticker.tsx +71 -0
- package/src/neobrutalism/index.ts +4 -0
- package/src/primitives/Avatar.tsx +53 -0
- package/src/primitives/Button.tsx +30 -0
- package/src/primitives/Card.tsx +41 -0
- package/src/primitives/Checkbox.tsx +78 -0
- package/src/primitives/CountBadge.tsx +50 -0
- package/src/primitives/Input.tsx +71 -0
- package/src/primitives/Kbd.tsx +45 -0
- package/src/primitives/PageHeader.tsx +77 -0
- package/src/primitives/Tag.tsx +56 -0
- package/src/primitives/Textarea.tsx +62 -0
- package/src/primitives/ToggleSwitch.tsx +79 -0
- package/src/primitives/Tooltip.tsx +171 -0
- package/src/primitives/index.ts +24 -0
- package/src/pwa/InstallPromptBanner.tsx +132 -0
- package/src/pwa/index.ts +4 -0
- package/src/pwa/manifest.template.json +20 -0
- package/src/pwa/registerSW.ts +55 -0
- package/src/riso/Halftone.tsx +85 -0
- package/src/riso/Misregister.tsx +63 -0
- package/src/riso/RisoStamp.tsx +76 -0
- package/src/riso/index.ts +3 -0
- package/src/sketch/HandUnderline.tsx +53 -0
- package/src/sketch/RoughArrow.tsx +91 -0
- package/src/sketch/RoughBox.tsx +73 -0
- package/src/sketch/StickyNote.tsx +56 -0
- package/src/sketch/index.ts +4 -0
- package/src/styles/base.css +80 -0
- package/src/styles/chrome-ambient.css +222 -0
- package/src/styles/chrome-bento.css +184 -0
- package/src/styles/chrome-editorial.css +145 -0
- package/src/styles/chrome-frutiger.css +364 -0
- package/src/styles/chrome-neobrutalism.css +315 -0
- package/src/styles/chrome-riso.css +328 -0
- package/src/styles/chrome-sketch.css +351 -0
- package/src/styles/chrome-swiss.css +232 -0
- package/src/styles/chrome-terminal.css +235 -0
- package/src/styles/fonts.css +22 -0
- package/src/styles/index.css +198 -0
- package/src/styles/tokens.css +976 -0
- package/src/terminal/AsciiBox.tsx +65 -0
- package/src/terminal/BrailleSpinner.tsx +46 -0
- package/src/terminal/index.ts +4 -0
- package/src/theme/ThemeProvider.tsx +93 -0
- package/src/theme/index.ts +5 -0
- package/src/theme/inline-script.ts +36 -0
- package/src/theme/theme-context.ts +7 -0
- package/src/theme/types.ts +22 -0
- package/src/theme/useTheme.ts +8 -0
|
@@ -0,0 +1,976 @@
|
|
|
1
|
+
/* ============================================================
|
|
2
|
+
@cosxai/ui — design tokens
|
|
3
|
+
Variables only. No selectors that target consumer markup,
|
|
4
|
+
no app-specific overrides (those belong in the consumer).
|
|
5
|
+
Two axes: theme (light | dark) via html[data-ck-theme], chrome
|
|
6
|
+
(classic | seamless) via html[data-ck-chrome]. Both default to
|
|
7
|
+
light/classic on :root.
|
|
8
|
+
============================================================ */
|
|
9
|
+
|
|
10
|
+
:root {
|
|
11
|
+
/* ---------- Fonts ----------
|
|
12
|
+
Four slots — sans (UI body), mono (metadata / kbd / coordinates),
|
|
13
|
+
serif (editorial body), and display (headlines). By default
|
|
14
|
+
display = sans so headings inherit the same neutral grotesk;
|
|
15
|
+
editorial chrome overrides display → serif to flip headlines
|
|
16
|
+
to a high-contrast serif without touching component code. */
|
|
17
|
+
--ck-font-sans: "Geist", "Inter", system-ui, -apple-system, sans-serif;
|
|
18
|
+
--ck-font-mono: "Geist Mono", "JetBrains Mono", ui-monospace, "SF Mono", Menlo, monospace;
|
|
19
|
+
--ck-font-serif: "Playfair Display", "GT Sectra", "Canela", Georgia, serif;
|
|
20
|
+
--ck-font-display: var(--ck-font-sans);
|
|
21
|
+
|
|
22
|
+
/* ---------- Radii / motion ---------- */
|
|
23
|
+
--ck-radius-xs: 4px;
|
|
24
|
+
--ck-radius-sm: 6px;
|
|
25
|
+
--ck-radius-md: 8px;
|
|
26
|
+
--ck-radius-lg: 12px;
|
|
27
|
+
--ck-radius-xl: 16px;
|
|
28
|
+
--ck-ease: cubic-bezier(0.4, 0, 0.2, 1);
|
|
29
|
+
--ck-dur-fast: 150ms;
|
|
30
|
+
--ck-dur-page: 260ms;
|
|
31
|
+
|
|
32
|
+
/* ---------- Mono type sizes ----------
|
|
33
|
+
Drives the eyebrow / tag / meta scale. Body sans sizes are
|
|
34
|
+
set inline on typography utility classes. */
|
|
35
|
+
--ck-mono-tag-size: 10px;
|
|
36
|
+
--ck-mono-xs-size: 11px;
|
|
37
|
+
--ck-mono-sm-size: 12px;
|
|
38
|
+
--ck-mono-md-size: 14px;
|
|
39
|
+
|
|
40
|
+
/* ---------- Light palette (default) ---------- */
|
|
41
|
+
--ck-bg-canvas: #ECEEF2;
|
|
42
|
+
--ck-bg-surface: #FFFFFF;
|
|
43
|
+
--ck-bg-surface-2: #F4F6F9;
|
|
44
|
+
--ck-bg-muted: #E5E8EE;
|
|
45
|
+
--ck-bg-sidebar: #F4F4F6;
|
|
46
|
+
|
|
47
|
+
--ck-border-subtle: #DDE0E6;
|
|
48
|
+
--ck-border-strong: #C5C9D2;
|
|
49
|
+
|
|
50
|
+
--ck-text-primary: #0A0E1A;
|
|
51
|
+
--ck-text-secondary: #4A5160;
|
|
52
|
+
--ck-text-tertiary: #8B92A3;
|
|
53
|
+
--ck-text-disabled: #B8BDC8;
|
|
54
|
+
--ck-text-inverse: #FFFFFF;
|
|
55
|
+
|
|
56
|
+
/* Accent — single primitive, every shade derives via color-mix().
|
|
57
|
+
Runtime brand override: stamp --ck-accent-light-override or
|
|
58
|
+
--ck-accent-dark-override on documentElement.style. */
|
|
59
|
+
--ck-accent: var(--ck-accent-light-override, #534AB7);
|
|
60
|
+
--ck-accent-hover: color-mix(in oklab, var(--ck-accent), black 10%);
|
|
61
|
+
--ck-accent-active: color-mix(in oklab, var(--ck-accent), black 18%);
|
|
62
|
+
--ck-accent-muted: color-mix(in oklab, var(--ck-accent) 8%, transparent);
|
|
63
|
+
--ck-accent-border: color-mix(in oklab, var(--ck-accent) 35%, transparent);
|
|
64
|
+
--ck-border-focus: var(--ck-accent);
|
|
65
|
+
|
|
66
|
+
/* Status */
|
|
67
|
+
--ck-success: #0E9F6E;
|
|
68
|
+
--ck-success-muted: #E3F5EE;
|
|
69
|
+
--ck-warning: #D97706;
|
|
70
|
+
--ck-warning-muted: #FEF3E7;
|
|
71
|
+
--ck-critical: #DC2626;
|
|
72
|
+
--ck-critical-muted: #FCEAEA;
|
|
73
|
+
--ck-info: var(--ck-accent);
|
|
74
|
+
--ck-info-muted: var(--ck-accent-muted);
|
|
75
|
+
|
|
76
|
+
/* Shadows */
|
|
77
|
+
--ck-shadow-1: 0 1px 2px rgba(10, 14, 26, 0.04);
|
|
78
|
+
--ck-shadow-2: 0 4px 12px rgba(10, 14, 26, 0.06), 0 1px 2px rgba(10, 14, 26, 0.04);
|
|
79
|
+
--ck-shadow-3: 0 16px 48px rgba(10, 14, 26, 0.12), 0 4px 12px rgba(10, 14, 26, 0.06);
|
|
80
|
+
|
|
81
|
+
/* Layout vars — owned by layout primitives. Default 0 so pages
|
|
82
|
+
that don't mount the rails don't reserve space. */
|
|
83
|
+
--ck-leftnav-width: 0px;
|
|
84
|
+
--ck-rightrail-width: 0px;
|
|
85
|
+
--ck-tabbar-height: 0px;
|
|
86
|
+
--ck-breadcrumb-height: 64px;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/* ---------- Dark theme ---------- */
|
|
90
|
+
html[data-ck-theme="dark"] {
|
|
91
|
+
--ck-bg-canvas: #0B0D12;
|
|
92
|
+
--ck-bg-surface: #13161D;
|
|
93
|
+
--ck-bg-surface-2: #1A1E27;
|
|
94
|
+
--ck-bg-muted: #181B23;
|
|
95
|
+
--ck-bg-sidebar: #090B10;
|
|
96
|
+
|
|
97
|
+
--ck-border-subtle: #1F242E;
|
|
98
|
+
--ck-border-strong: #2A303C;
|
|
99
|
+
|
|
100
|
+
--ck-text-primary: #F2F3F5;
|
|
101
|
+
--ck-text-secondary: #A0A6B3;
|
|
102
|
+
--ck-text-tertiary: #6B7280;
|
|
103
|
+
--ck-text-disabled: #4A5160;
|
|
104
|
+
--ck-text-inverse: #0A0E1A;
|
|
105
|
+
|
|
106
|
+
--ck-accent: var(--ck-accent-dark-override, #7B72D9);
|
|
107
|
+
--ck-accent-muted: color-mix(in oklab, var(--ck-accent) 12%, transparent);
|
|
108
|
+
--ck-accent-border: color-mix(in oklab, var(--ck-accent) 32%, transparent);
|
|
109
|
+
|
|
110
|
+
--ck-success: #34D399; --ck-success-muted: rgba(52, 211, 153, 0.12);
|
|
111
|
+
--ck-warning: #FBBF24; --ck-warning-muted: rgba(251, 191, 36, 0.12);
|
|
112
|
+
--ck-critical: #F87171; --ck-critical-muted: rgba(248, 113, 113, 0.12);
|
|
113
|
+
|
|
114
|
+
--ck-shadow-1: none;
|
|
115
|
+
--ck-shadow-2: 0 8px 24px rgba(0, 0, 0, 0.4);
|
|
116
|
+
--ck-shadow-3: 0 24px 64px rgba(0, 0, 0, 0.5);
|
|
117
|
+
--ck-glow-accent: 0 0 32px color-mix(in srgb, var(--ck-accent) 25%, transparent);
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
/* ---------- Seamless chrome — borders go transparent, layering
|
|
121
|
+
carried by background shifts. Things 3 / Linear /
|
|
122
|
+
Raycast feel. Combine with dark via
|
|
123
|
+
html[data-ck-theme='dark'][data-ck-chrome='seamless']. */
|
|
124
|
+
html[data-ck-chrome="seamless"] {
|
|
125
|
+
--ck-bg-canvas: #FAFAFB;
|
|
126
|
+
--ck-bg-sidebar: #F4F4F6;
|
|
127
|
+
--ck-bg-surface: #FFFFFF;
|
|
128
|
+
--ck-bg-surface-2: #FCFCFD;
|
|
129
|
+
--ck-bg-muted: #F1F2F4;
|
|
130
|
+
--ck-border-subtle: transparent;
|
|
131
|
+
--ck-border-strong: rgba(10, 14, 26, 0.08);
|
|
132
|
+
--ck-shadow-1: 0 1px 2px rgba(10, 14, 26, 0.03);
|
|
133
|
+
--ck-shadow-2: 0 4px 16px rgba(10, 14, 26, 0.04), 0 1px 3px rgba(10, 14, 26, 0.03);
|
|
134
|
+
}
|
|
135
|
+
html[data-ck-theme="dark"][data-ck-chrome="seamless"] {
|
|
136
|
+
--ck-bg-canvas: #0F1218;
|
|
137
|
+
--ck-bg-sidebar: #090B10;
|
|
138
|
+
--ck-bg-surface: #181C24;
|
|
139
|
+
--ck-bg-surface-2: #1F232D;
|
|
140
|
+
--ck-bg-muted: #14171E;
|
|
141
|
+
--ck-border-subtle: transparent;
|
|
142
|
+
--ck-border-strong: rgba(255, 255, 255, 0.08);
|
|
143
|
+
--ck-shadow-1: none;
|
|
144
|
+
--ck-shadow-2: 0 12px 32px rgba(0, 0, 0, 0.5);
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
/* ---------- Editorial chrome — print-magazine / art-quarterly
|
|
148
|
+
aesthetic. Cream paper canvas, coral accent, serif
|
|
149
|
+
headlines. Defaults to its own light variant; the
|
|
150
|
+
[data-ck-theme="dark"] variant flips to the inverted
|
|
151
|
+
"spotlight" surface from the brief. Pure white never
|
|
152
|
+
appears in either mode. */
|
|
153
|
+
html[data-ck-chrome="editorial"] {
|
|
154
|
+
/* Cream paper, slightly green-tinted (--bg-paper) */
|
|
155
|
+
--ck-bg-canvas: #ECE6D6;
|
|
156
|
+
--ck-bg-sidebar: #E5DECB;
|
|
157
|
+
--ck-bg-surface: #E5DECB;
|
|
158
|
+
--ck-bg-surface-2: #DCD4C0;
|
|
159
|
+
--ck-bg-muted: #DCD4C0;
|
|
160
|
+
|
|
161
|
+
--ck-border-subtle: #A8A294;
|
|
162
|
+
--ck-border-strong: #6B6557;
|
|
163
|
+
|
|
164
|
+
/* Ink stack */
|
|
165
|
+
--ck-text-primary: #0F0F0F;
|
|
166
|
+
--ck-text-secondary: #6B6557;
|
|
167
|
+
--ck-text-tertiary: #A8A294;
|
|
168
|
+
--ck-text-disabled: #C9C3B5;
|
|
169
|
+
--ck-text-inverse: #ECE6D6;
|
|
170
|
+
|
|
171
|
+
/* Coral is THE accent. Ochre lives in --ck-warning for
|
|
172
|
+
secondary "guest star" use (the brief says one accent only;
|
|
173
|
+
ochre repurposes the warning slot since its tone matches). */
|
|
174
|
+
--ck-accent: #E96E50;
|
|
175
|
+
--ck-accent-hover: #D85A3E;
|
|
176
|
+
--ck-accent-active: #C44D34;
|
|
177
|
+
--ck-accent-muted: color-mix(in oklab, var(--ck-accent) 14%, transparent);
|
|
178
|
+
--ck-accent-border: color-mix(in oklab, var(--ck-accent) 40%, transparent);
|
|
179
|
+
--ck-border-focus: var(--ck-accent);
|
|
180
|
+
|
|
181
|
+
--ck-warning: #C99A3A;
|
|
182
|
+
--ck-warning-muted: color-mix(in oklab, var(--ck-warning) 18%, transparent);
|
|
183
|
+
|
|
184
|
+
/* Serif headlines + tracked-sans body. */
|
|
185
|
+
--ck-font-display: var(--ck-font-serif);
|
|
186
|
+
|
|
187
|
+
/* No drop shadows. 1 px hairlines do all the layering work. */
|
|
188
|
+
--ck-shadow-1: none;
|
|
189
|
+
--ck-shadow-2: none;
|
|
190
|
+
--ck-shadow-3: 0 2px 0 rgba(15, 15, 15, 0.04);
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
/* Dark editorial — coherent dark mode: charcoal canvas + lifted
|
|
194
|
+
charcoal cards + cream ink + coral accent. Like a magazine
|
|
195
|
+
printed on black paper. The "spotlight" inversion (cream paper
|
|
196
|
+
card on dark canvas) from the brief is intentionally OUT of the
|
|
197
|
+
global theme — it would break legibility when used as the
|
|
198
|
+
whole-page default (cream text on cream cards = invisible). For
|
|
199
|
+
genuine spotlight sections wrap content in <EditorialSpotlight>
|
|
200
|
+
which flips just its own subtree back to cream-on-dark. */
|
|
201
|
+
html[data-ck-theme="dark"][data-ck-chrome="editorial"] {
|
|
202
|
+
--ck-bg-canvas: #0E0E0E;
|
|
203
|
+
--ck-bg-sidebar: #161616;
|
|
204
|
+
--ck-bg-surface: #1A1A1A;
|
|
205
|
+
--ck-bg-surface-2: #232323;
|
|
206
|
+
--ck-bg-muted: #161616;
|
|
207
|
+
|
|
208
|
+
/* Cream-tinted hairlines so dividers read against charcoal
|
|
209
|
+
without going stark white. */
|
|
210
|
+
--ck-border-subtle: rgba(244, 239, 224, 0.12);
|
|
211
|
+
--ck-border-strong: rgba(244, 239, 224, 0.24);
|
|
212
|
+
|
|
213
|
+
/* Cream ink stack — printed-on-black-paper feel. */
|
|
214
|
+
--ck-text-primary: #F4EFE0;
|
|
215
|
+
--ck-text-secondary: #C9C3B5;
|
|
216
|
+
--ck-text-tertiary: #8F897D;
|
|
217
|
+
--ck-text-disabled: #5C5851;
|
|
218
|
+
--ck-text-inverse: #0F0F0F;
|
|
219
|
+
|
|
220
|
+
/* Coral inherits from the parent editorial block. Bump muted/
|
|
221
|
+
border alpha so accent tints still register on charcoal
|
|
222
|
+
without going neon. */
|
|
223
|
+
--ck-accent-muted: color-mix(in oklab, var(--ck-accent) 22%, transparent);
|
|
224
|
+
--ck-accent-border: color-mix(in oklab, var(--ck-accent) 44%, transparent);
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
/* ---------- Neobrutalism chrome — thick 2 px borders, hard
|
|
228
|
+
offset shadows, pastel canvas, saturated accent.
|
|
229
|
+
Memphis-group-meets-shareware aesthetic. The signature
|
|
230
|
+
move (hover-translate) is wired in
|
|
231
|
+
chrome-neobrutalism.css; this block just sets the
|
|
232
|
+
colour + typography stack. */
|
|
233
|
+
html[data-ck-chrome="neobrutalism"] {
|
|
234
|
+
--ck-bg-canvas: #FEF2E8;
|
|
235
|
+
--ck-bg-sidebar: #FEF2E8;
|
|
236
|
+
--ck-bg-surface: #FFFFFF;
|
|
237
|
+
--ck-bg-surface-2: #E3DFF2;
|
|
238
|
+
--ck-bg-muted: #E3DFF2;
|
|
239
|
+
|
|
240
|
+
/* All borders are pure black under neobrutalism — the brief
|
|
241
|
+
forbids gray. --neobrut-ink is the canonical "stamp colour"
|
|
242
|
+
used by every border + shadow in chrome-neobrutalism.css;
|
|
243
|
+
flips to near-white in dark mode (see below). */
|
|
244
|
+
--neobrut-ink: #000000;
|
|
245
|
+
--ck-border-subtle: #000000;
|
|
246
|
+
--ck-border-strong: #000000;
|
|
247
|
+
--ck-border-focus: #000000;
|
|
248
|
+
|
|
249
|
+
--ck-text-primary: #000000;
|
|
250
|
+
--ck-text-secondary: #1A1A1A;
|
|
251
|
+
--ck-text-tertiary: #4A4A4A;
|
|
252
|
+
--ck-text-disabled: #999999;
|
|
253
|
+
--ck-text-inverse: #FFFFFF;
|
|
254
|
+
|
|
255
|
+
/* Canonical blue accent. Override by setting --ck-accent-light-
|
|
256
|
+
override on documentElement to pick a different hero — the
|
|
257
|
+
brief approves lime, orange, violet, pink, yellow, teal. */
|
|
258
|
+
--ck-accent: var(--ck-accent-light-override, #88AAEE);
|
|
259
|
+
--ck-accent-hover: var(--ck-accent);
|
|
260
|
+
--ck-accent-active: var(--ck-accent);
|
|
261
|
+
--ck-accent-muted: color-mix(in oklab, var(--ck-accent) 30%, transparent);
|
|
262
|
+
--ck-accent-border: #000000;
|
|
263
|
+
|
|
264
|
+
/* Status colours saturated per brief. */
|
|
265
|
+
--ck-success: #A3E636;
|
|
266
|
+
--ck-warning: #FFD23F;
|
|
267
|
+
--ck-critical: #FF6B6B;
|
|
268
|
+
|
|
269
|
+
/* Display font — Archivo Black for headlines is the canonical
|
|
270
|
+
neobrutalism pick. Body uses Geist's heaviest weight. */
|
|
271
|
+
--ck-font-display: "Archivo Black", "Space Grotesk", var(--ck-font-sans);
|
|
272
|
+
|
|
273
|
+
/* Hard offset shadow primitive. Component CSS reads this so the
|
|
274
|
+
consistent "4 px offset, pure black, zero blur" reads through
|
|
275
|
+
every interactive surface. */
|
|
276
|
+
--ck-shadow-1: 2px 2px 0 0 var(--neobrut-ink);
|
|
277
|
+
--ck-shadow-2: 4px 4px 0 0 var(--neobrut-ink);
|
|
278
|
+
--ck-shadow-3: 8px 8px 0 0 var(--neobrut-ink);
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
html[data-ck-theme="dark"][data-ck-chrome="neobrutalism"] {
|
|
282
|
+
/* Dark canvas — deep saturated navy / purple. Lifted slightly
|
|
283
|
+
so the dark-gray card surface beneath it reads as DARKER
|
|
284
|
+
than canvas. Mirrors the reference site (neobrutalism.dev)
|
|
285
|
+
pattern exactly: canvas is the brighter hue, cards sit
|
|
286
|
+
darker, borders + shadows stay PURE BLACK in both modes. */
|
|
287
|
+
--ck-bg-canvas: oklch(29.12% 0.0633 270.86);
|
|
288
|
+
/* Cards / sidebar — dark gray, DARKER than canvas. Black
|
|
289
|
+
offset shadow on the brighter navy canvas is the dominant
|
|
290
|
+
visual cue; the border on the card is a quieter structural
|
|
291
|
+
line. */
|
|
292
|
+
--ck-bg-sidebar: oklch(23.93% 0 0);
|
|
293
|
+
--ck-bg-surface: oklch(23.93% 0 0);
|
|
294
|
+
--ck-bg-surface-2: oklch(28% 0 0);
|
|
295
|
+
--ck-bg-muted: oklch(28% 0 0);
|
|
296
|
+
|
|
297
|
+
/* CRITICAL: borders + shadows stay PURE BLACK in dark mode.
|
|
298
|
+
I tried flipping them to white earlier — that's the wrong
|
|
299
|
+
direction. The chunky offset shadow is black on the navy
|
|
300
|
+
canvas, which is where the contrast lives. */
|
|
301
|
+
--neobrut-ink: #000000;
|
|
302
|
+
--ck-border-subtle: #000000;
|
|
303
|
+
--ck-border-strong: #000000;
|
|
304
|
+
--ck-border-focus: #FFFFFF;
|
|
305
|
+
|
|
306
|
+
--ck-text-primary: oklch(92.49% 0 0);
|
|
307
|
+
--ck-text-secondary: #C0C0C0;
|
|
308
|
+
--ck-text-tertiary: #888888;
|
|
309
|
+
--ck-text-disabled: #555555;
|
|
310
|
+
--ck-text-inverse: #000000;
|
|
311
|
+
|
|
312
|
+
/* Accent stays identical to light — brand commitment doesn't
|
|
313
|
+
flip per theme. Override per-app via
|
|
314
|
+
--ck-accent-dark-override if you want a different shade. */
|
|
315
|
+
--ck-accent: var(--ck-accent-dark-override, var(--ck-accent-light-override, #88AAEE));
|
|
316
|
+
|
|
317
|
+
/* Shadow sizes back to the canonical 4 px offset that the
|
|
318
|
+
light mode uses — same chunky language across themes. */
|
|
319
|
+
--ck-shadow-1: 2px 2px 0 0 var(--neobrut-ink);
|
|
320
|
+
--ck-shadow-2: 4px 4px 0 0 var(--neobrut-ink);
|
|
321
|
+
--ck-shadow-3: 8px 8px 0 0 var(--neobrut-ink);
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
/* ---------- Ambient Glass chrome — Superlist / Linear / Arc /
|
|
325
|
+
Things 3 aesthetic. Translucent glass surfaces over
|
|
326
|
+
an ambient gradient backdrop. Dark-first; light is a
|
|
327
|
+
fully equal counterpart. The defining gesture is the
|
|
328
|
+
single multi-stop "Superbar" gradient used as a thin
|
|
329
|
+
accent on active elements. */
|
|
330
|
+
html[data-ck-chrome="ambient"] {
|
|
331
|
+
/* Ambient backdrop — radial gradient mesh derived from
|
|
332
|
+
--ck-accent. Three different opacities of the brand colour
|
|
333
|
+
bloom from three corners over a near-neutral base. Change
|
|
334
|
+
the accent (via --ck-accent-*-override) and the entire mesh
|
|
335
|
+
re-tints to match — coral accent yields a coral-bloom mesh,
|
|
336
|
+
emerald yields an emerald mesh, etc. Painted on body (Shell
|
|
337
|
+
inherits) so glass surfaces have something behind them to
|
|
338
|
+
blur.
|
|
339
|
+
|
|
340
|
+
Override --ck-bg-canvas directly if you want a fixed mesh
|
|
341
|
+
not derived from accent. */
|
|
342
|
+
--ck-bg-canvas:
|
|
343
|
+
radial-gradient(ellipse at 18% 22%, color-mix(in oklab, var(--ck-accent) 40%, transparent) 0%, transparent 55%),
|
|
344
|
+
radial-gradient(ellipse at 82% 70%, color-mix(in oklab, var(--ck-accent) 22%, transparent) 0%, transparent 52%),
|
|
345
|
+
radial-gradient(ellipse at 50% 110%, color-mix(in oklab, var(--ck-accent) 32%, transparent) 0%, transparent 50%),
|
|
346
|
+
#1A1525;
|
|
347
|
+
|
|
348
|
+
/* Glass overlay surfaces — semi-transparent so backdrop-filter
|
|
349
|
+
blurs the ambient mesh underneath. Cards, sidebar, topbar all
|
|
350
|
+
read from these. */
|
|
351
|
+
--ck-bg-surface: rgba(255, 255, 255, 0.05);
|
|
352
|
+
--ck-bg-surface-2: rgba(255, 255, 255, 0.08);
|
|
353
|
+
--ck-bg-sidebar: rgba(20, 20, 28, 0.55);
|
|
354
|
+
--ck-bg-muted: rgba(255, 255, 255, 0.04);
|
|
355
|
+
|
|
356
|
+
--ck-border-subtle: rgba(255, 255, 255, 0.08);
|
|
357
|
+
--ck-border-strong: rgba(255, 255, 255, 0.16);
|
|
358
|
+
--ck-border-focus: rgba(255, 122, 162, 0.6);
|
|
359
|
+
|
|
360
|
+
--ck-text-primary: #F5F5F7;
|
|
361
|
+
--ck-text-secondary: #A0A0AB;
|
|
362
|
+
--ck-text-tertiary: #6B6B78;
|
|
363
|
+
--ck-text-disabled: #4A4A52;
|
|
364
|
+
--ck-text-inverse: #1A1525;
|
|
365
|
+
|
|
366
|
+
/* Coral as the single brand pop. Override via the *-override
|
|
367
|
+
vars per-app to pick a different signature colour. */
|
|
368
|
+
--ck-accent: var(--ck-accent-dark-override, var(--ck-accent-light-override, #FF6B7A));
|
|
369
|
+
--ck-accent-hover: color-mix(in oklab, var(--ck-accent), white 10%);
|
|
370
|
+
--ck-accent-active: color-mix(in oklab, var(--ck-accent), black 8%);
|
|
371
|
+
--ck-accent-muted: color-mix(in oklab, var(--ck-accent) 14%, transparent);
|
|
372
|
+
--ck-accent-border: color-mix(in oklab, var(--ck-accent) 40%, transparent);
|
|
373
|
+
|
|
374
|
+
--ck-success: #6EE7B7;
|
|
375
|
+
--ck-warning: #FCD34D;
|
|
376
|
+
--ck-critical: #FF8A8A;
|
|
377
|
+
|
|
378
|
+
/* The Superbar — multi-stop signature gradient. Used as a thin
|
|
379
|
+
accent (right-edge strip on active items, divider above the
|
|
380
|
+
command input, tab underlines). Never as a button fill. */
|
|
381
|
+
--ck-superbar: linear-gradient(90deg, #FF7AA2 0%, #B66EFF 50%, #5DA8FF 100%);
|
|
382
|
+
|
|
383
|
+
/* Larger radii — every surface softens. */
|
|
384
|
+
--ck-radius-xs: 6px;
|
|
385
|
+
--ck-radius-sm: 10px;
|
|
386
|
+
--ck-radius-md: 14px;
|
|
387
|
+
--ck-radius-lg: 18px;
|
|
388
|
+
--ck-radius-xl: 22px;
|
|
389
|
+
|
|
390
|
+
/* Soft outer shadow — large blur, low opacity. Depth comes
|
|
391
|
+
from this gentle haze, not hard offsets. */
|
|
392
|
+
--ck-shadow-1: 0 1px 2px rgba(0, 0, 0, 0.18);
|
|
393
|
+
--ck-shadow-2: 0 8px 24px rgba(0, 0, 0, 0.24), 0 2px 6px rgba(0, 0, 0, 0.16);
|
|
394
|
+
--ck-shadow-3: 0 24px 60px rgba(0, 0, 0, 0.4), 0 4px 12px rgba(0, 0, 0, 0.2);
|
|
395
|
+
|
|
396
|
+
/* Backdrop blur strength — referenced from CSS in chrome-ambient.css. */
|
|
397
|
+
--ck-blur-window: blur(24px) saturate(140%);
|
|
398
|
+
--ck-blur-overlay: blur(40px) saturate(180%);
|
|
399
|
+
}
|
|
400
|
+
|
|
401
|
+
html[data-ck-theme="light"][data-ck-chrome="ambient"] {
|
|
402
|
+
/* Warm off-white ambient — softer mesh than the dark counterpart
|
|
403
|
+
but the same structural approach. */
|
|
404
|
+
/* Light mesh — same accent-derived structure as dark, lighter
|
|
405
|
+
base + lower opacity stops so the mesh reads as soft glow
|
|
406
|
+
blooms instead of saturated tints. */
|
|
407
|
+
--ck-bg-canvas:
|
|
408
|
+
radial-gradient(ellipse at 18% 22%, color-mix(in oklab, var(--ck-accent) 28%, transparent) 0%, transparent 55%),
|
|
409
|
+
radial-gradient(ellipse at 82% 70%, color-mix(in oklab, var(--ck-accent) 16%, transparent) 0%, transparent 52%),
|
|
410
|
+
radial-gradient(ellipse at 50% 110%, color-mix(in oklab, var(--ck-accent) 22%, transparent) 0%, transparent 50%),
|
|
411
|
+
#F1EDE6;
|
|
412
|
+
|
|
413
|
+
--ck-bg-surface: rgba(255, 255, 255, 0.62);
|
|
414
|
+
--ck-bg-surface-2: rgba(255, 255, 255, 0.72);
|
|
415
|
+
--ck-bg-sidebar: rgba(255, 255, 255, 0.58);
|
|
416
|
+
--ck-bg-muted: rgba(0, 0, 0, 0.03);
|
|
417
|
+
|
|
418
|
+
--ck-border-subtle: rgba(20, 20, 30, 0.08);
|
|
419
|
+
--ck-border-strong: rgba(20, 20, 30, 0.14);
|
|
420
|
+
|
|
421
|
+
--ck-text-primary: #1A1A22;
|
|
422
|
+
--ck-text-secondary: #5E5E68;
|
|
423
|
+
--ck-text-tertiary: #8B8B95;
|
|
424
|
+
--ck-text-disabled: #B5B5BC;
|
|
425
|
+
--ck-text-inverse: #FFFFFF;
|
|
426
|
+
}
|
|
427
|
+
|
|
428
|
+
/* ---------- Swiss / International Typographic chrome —
|
|
429
|
+
Müller-Brockmann / Vignelli / Stripe docs / Vercel
|
|
430
|
+
docs aesthetic. Achromatic + one saturated accent
|
|
431
|
+
(red by default). Single neutral grotesk family,
|
|
432
|
+
tight letter-spacing on headlines. No shadows, no
|
|
433
|
+
gradients, no decoration — type and space do all
|
|
434
|
+
the work. */
|
|
435
|
+
html[data-ck-chrome="swiss"] {
|
|
436
|
+
/* Pure white canvas; bg-alt for very rare row tinting. */
|
|
437
|
+
--ck-bg-canvas: #FFFFFF;
|
|
438
|
+
--ck-bg-sidebar: #FFFFFF;
|
|
439
|
+
--ck-bg-surface: #FFFFFF;
|
|
440
|
+
--ck-bg-surface-2: #F4F4F4;
|
|
441
|
+
--ck-bg-muted: #F4F4F4;
|
|
442
|
+
|
|
443
|
+
/* Near-black ink. Rule colour is a quiet gray; strong is the
|
|
444
|
+
ink itself (used for input focus underline + secondary
|
|
445
|
+
button border). */
|
|
446
|
+
--ck-border-subtle: #E5E5E5;
|
|
447
|
+
--ck-border-strong: #0A0A0A;
|
|
448
|
+
--ck-border-focus: #0A0A0A;
|
|
449
|
+
|
|
450
|
+
--ck-text-primary: #0A0A0A;
|
|
451
|
+
--ck-text-secondary: #525252;
|
|
452
|
+
--ck-text-tertiary: #A3A3A3;
|
|
453
|
+
--ck-text-disabled: #D4D4D4;
|
|
454
|
+
--ck-text-inverse: #FFFFFF;
|
|
455
|
+
|
|
456
|
+
/* Canonical Swiss red. Used SPARINGLY — links, active marks,
|
|
457
|
+
single accent button per page. Override per-app via
|
|
458
|
+
--ck-accent-*-override (deep blue / forest green /
|
|
459
|
+
international orange are the brief's other valid hero
|
|
460
|
+
colours). */
|
|
461
|
+
--ck-accent: var(--ck-accent-light-override, #DC2626);
|
|
462
|
+
--ck-accent-hover: color-mix(in oklab, var(--ck-accent), black 8%);
|
|
463
|
+
--ck-accent-muted: color-mix(in oklab, var(--ck-accent) 10%, transparent);
|
|
464
|
+
--ck-accent-border: var(--ck-accent);
|
|
465
|
+
|
|
466
|
+
/* Single sans family — no display swap. The same grotesk runs
|
|
467
|
+
headline → body → caption. Headlines achieve scale through
|
|
468
|
+
size + weight + letter-spacing, not a different face. */
|
|
469
|
+
--ck-font-display: var(--ck-font-sans);
|
|
470
|
+
|
|
471
|
+
/* Tiny radii — 3 px feels engineered, not friendly. */
|
|
472
|
+
--ck-radius-xs: 2px;
|
|
473
|
+
--ck-radius-sm: 3px;
|
|
474
|
+
--ck-radius-md: 3px;
|
|
475
|
+
--ck-radius-lg: 4px;
|
|
476
|
+
--ck-radius-xl: 4px;
|
|
477
|
+
|
|
478
|
+
/* No shadows. Depth comes from 1 px rules + whitespace. */
|
|
479
|
+
--ck-shadow-1: none;
|
|
480
|
+
--ck-shadow-2: none;
|
|
481
|
+
--ck-shadow-3: none;
|
|
482
|
+
}
|
|
483
|
+
|
|
484
|
+
html[data-ck-theme="dark"][data-ck-chrome="swiss"] {
|
|
485
|
+
--ck-bg-canvas: #0A0A0A;
|
|
486
|
+
--ck-bg-sidebar: #0A0A0A;
|
|
487
|
+
--ck-bg-surface: #0A0A0A;
|
|
488
|
+
--ck-bg-surface-2: #161616;
|
|
489
|
+
--ck-bg-muted: #161616;
|
|
490
|
+
|
|
491
|
+
--ck-border-subtle: rgba(255, 255, 255, 0.12);
|
|
492
|
+
--ck-border-strong: #FAFAFA;
|
|
493
|
+
--ck-border-focus: #FAFAFA;
|
|
494
|
+
|
|
495
|
+
--ck-text-primary: #FAFAFA;
|
|
496
|
+
--ck-text-secondary: #A3A3A3;
|
|
497
|
+
--ck-text-tertiary: #525252;
|
|
498
|
+
--ck-text-disabled: #2F2F2F;
|
|
499
|
+
--ck-text-inverse: #0A0A0A;
|
|
500
|
+
|
|
501
|
+
/* Brighter red against the near-black canvas. */
|
|
502
|
+
--ck-accent: var(--ck-accent-dark-override, var(--ck-accent-light-override, #EF4444));
|
|
503
|
+
}
|
|
504
|
+
|
|
505
|
+
/* ---------- Terminal / Monospace Maximalist chrome —
|
|
506
|
+
Vercel v0 / charm.sh / Warp / Lazygit / k9s feel.
|
|
507
|
+
Dark by default (CRT-style), light "vellum" variant
|
|
508
|
+
available. Everything monospace, semantic colours
|
|
509
|
+
only, square corners. */
|
|
510
|
+
html[data-ck-chrome="terminal"] {
|
|
511
|
+
/* Canonical dark canvas — near-black with a hint of warmth. */
|
|
512
|
+
--ck-bg-canvas: #0A0A0A;
|
|
513
|
+
--ck-bg-sidebar: #0A0A0A;
|
|
514
|
+
--ck-bg-surface: #141414;
|
|
515
|
+
--ck-bg-surface-2: #1A1A1A;
|
|
516
|
+
--ck-bg-muted: #1A1A1A;
|
|
517
|
+
|
|
518
|
+
--ck-border-subtle: #262626;
|
|
519
|
+
--ck-border-strong: #404040;
|
|
520
|
+
--ck-border-focus: #4ADE80;
|
|
521
|
+
|
|
522
|
+
--ck-text-primary: #E5E5E5;
|
|
523
|
+
--ck-text-secondary: #A3A3A3;
|
|
524
|
+
--ck-text-tertiary: #525252;
|
|
525
|
+
--ck-text-disabled: #404040;
|
|
526
|
+
--ck-text-inverse: #0A0A0A;
|
|
527
|
+
|
|
528
|
+
/* Terminal canon — six semantic colours that earn their place
|
|
529
|
+
by signalling state, never by decorating. Available as
|
|
530
|
+
CSS variables so consumer code can read them directly. */
|
|
531
|
+
--ck-term-green: #4ADE80;
|
|
532
|
+
--ck-term-amber: #FBBF24;
|
|
533
|
+
--ck-term-red: #F87171;
|
|
534
|
+
--ck-term-blue: #60A5FA;
|
|
535
|
+
--ck-term-magenta: #C084FC;
|
|
536
|
+
--ck-term-cyan: #67E8F9;
|
|
537
|
+
--ck-term-bright: #FAFAFA;
|
|
538
|
+
|
|
539
|
+
/* Default accent — green (the dominant terminal hue for
|
|
540
|
+
active / success). Override to swap to amber / blue /
|
|
541
|
+
magenta etc. as the brand pop. */
|
|
542
|
+
--ck-accent: var(--ck-accent-light-override, #4ADE80);
|
|
543
|
+
--ck-accent-hover: color-mix(in oklab, var(--ck-accent), white 8%);
|
|
544
|
+
--ck-accent-muted: color-mix(in oklab, var(--ck-accent) 16%, transparent);
|
|
545
|
+
--ck-accent-border: var(--ck-accent);
|
|
546
|
+
|
|
547
|
+
--ck-success: var(--ck-term-green);
|
|
548
|
+
--ck-warning: var(--ck-term-amber);
|
|
549
|
+
--ck-critical: var(--ck-term-red);
|
|
550
|
+
|
|
551
|
+
/* Single typeface — mono everywhere. font-display points to
|
|
552
|
+
mono too so headings stay terminal-textured. */
|
|
553
|
+
--ck-font-display: var(--ck-font-mono);
|
|
554
|
+
--ck-font-sans: var(--ck-font-mono);
|
|
555
|
+
|
|
556
|
+
/* Square edges (or near-square). The CRT feel forbids
|
|
557
|
+
anything that reads as friendly. */
|
|
558
|
+
--ck-radius-xs: 0px;
|
|
559
|
+
--ck-radius-sm: 2px;
|
|
560
|
+
--ck-radius-md: 2px;
|
|
561
|
+
--ck-radius-lg: 4px;
|
|
562
|
+
--ck-radius-xl: 4px;
|
|
563
|
+
|
|
564
|
+
/* No shadows. Depth comes from border darkness shifts. */
|
|
565
|
+
--ck-shadow-1: none;
|
|
566
|
+
--ck-shadow-2: none;
|
|
567
|
+
--ck-shadow-3: none;
|
|
568
|
+
}
|
|
569
|
+
|
|
570
|
+
/* Light "vellum" variant — flipped palette but same semantic
|
|
571
|
+
colour stack. The brief notes it should look like an iTerm2
|
|
572
|
+
light theme. */
|
|
573
|
+
html[data-ck-theme="light"][data-ck-chrome="terminal"] {
|
|
574
|
+
--ck-bg-canvas: #FAFAF7;
|
|
575
|
+
--ck-bg-sidebar: #FAFAF7;
|
|
576
|
+
--ck-bg-surface: #F3F3EE;
|
|
577
|
+
--ck-bg-surface-2: #ECECE6;
|
|
578
|
+
--ck-bg-muted: #ECECE6;
|
|
579
|
+
|
|
580
|
+
--ck-border-subtle: #D4D4D0;
|
|
581
|
+
--ck-border-strong: #A3A39E;
|
|
582
|
+
|
|
583
|
+
--ck-text-primary: #1A1A1A;
|
|
584
|
+
--ck-text-secondary: #525252;
|
|
585
|
+
--ck-text-tertiary: #A3A39E;
|
|
586
|
+
--ck-text-disabled: #C9C9C5;
|
|
587
|
+
--ck-text-inverse: #FAFAF7;
|
|
588
|
+
|
|
589
|
+
/* Dimmer semantic colours that read on the warm off-white. */
|
|
590
|
+
--ck-term-green: #16A34A;
|
|
591
|
+
--ck-term-amber: #CA8A04;
|
|
592
|
+
--ck-term-red: #DC2626;
|
|
593
|
+
--ck-term-blue: #2563EB;
|
|
594
|
+
--ck-term-magenta: #9333EA;
|
|
595
|
+
--ck-term-cyan: #0891B2;
|
|
596
|
+
--ck-term-bright: #0A0A0A;
|
|
597
|
+
|
|
598
|
+
--ck-accent: var(--ck-accent-light-override, #16A34A);
|
|
599
|
+
}
|
|
600
|
+
|
|
601
|
+
/* ---------- Bento Grid chrome — Apple product page / Linear /
|
|
602
|
+
Vercel marketing-page aesthetic. Less a "visual
|
|
603
|
+
style" than a layout pattern, but with a canonical
|
|
604
|
+
surface treatment that ties cells together: generous
|
|
605
|
+
radius (20-28 px), soft multi-layer shadow, neutral
|
|
606
|
+
page bg, cells where each one does its own visual
|
|
607
|
+
job. Pair with <BentoGrid> + <BentoCell> primitives. */
|
|
608
|
+
html[data-ck-chrome="bento"] {
|
|
609
|
+
--ck-bg-canvas: #F5F5F7;
|
|
610
|
+
--ck-bg-sidebar: #FFFFFF;
|
|
611
|
+
--ck-bg-surface: #FFFFFF;
|
|
612
|
+
--ck-bg-surface-2: #F0F0F2;
|
|
613
|
+
--ck-bg-muted: #ECECEE;
|
|
614
|
+
|
|
615
|
+
--ck-border-subtle: rgba(0, 0, 0, 0.06);
|
|
616
|
+
--ck-border-strong: rgba(0, 0, 0, 0.12);
|
|
617
|
+
--ck-border-focus: var(--ck-accent);
|
|
618
|
+
|
|
619
|
+
--ck-text-primary: #1D1D1F;
|
|
620
|
+
--ck-text-secondary: #6E6E73;
|
|
621
|
+
--ck-text-tertiary: #98989D;
|
|
622
|
+
--ck-text-disabled: #C7C7CC;
|
|
623
|
+
--ck-text-inverse: #FFFFFF;
|
|
624
|
+
|
|
625
|
+
/* Apple-y neutral accent (system blue). Override per app for
|
|
626
|
+
a different signature. */
|
|
627
|
+
--ck-accent: var(--ck-accent-light-override, #0A84FF);
|
|
628
|
+
--ck-accent-hover: color-mix(in oklab, var(--ck-accent), black 6%);
|
|
629
|
+
--ck-accent-muted: color-mix(in oklab, var(--ck-accent) 10%, transparent);
|
|
630
|
+
--ck-accent-border: color-mix(in oklab, var(--ck-accent) 35%, transparent);
|
|
631
|
+
|
|
632
|
+
/* Three canonical cell-accent gradients — apply manually inside
|
|
633
|
+
<BentoCell tone="..."> via the demo. */
|
|
634
|
+
--ck-bento-grad-1: linear-gradient(135deg, #FF6B9D, #C026D3);
|
|
635
|
+
--ck-bento-grad-2: linear-gradient(135deg, #60A5FA, #A78BFA);
|
|
636
|
+
--ck-bento-grad-3: linear-gradient(135deg, #34D399, #06B6D4);
|
|
637
|
+
|
|
638
|
+
/* Generous Apple-y radii — 20 px is the cell baseline. Smaller
|
|
639
|
+
primitives (buttons, inputs) sit at 12 px so they nest. */
|
|
640
|
+
--ck-radius-xs: 8px;
|
|
641
|
+
--ck-radius-sm: 12px;
|
|
642
|
+
--ck-radius-md: 16px;
|
|
643
|
+
--ck-radius-lg: 22px;
|
|
644
|
+
--ck-radius-xl: 28px;
|
|
645
|
+
|
|
646
|
+
/* Soft multi-layer shadow — the canonical bento card lift. */
|
|
647
|
+
--ck-shadow-1: 0 1px 2px rgba(0, 0, 0, 0.04);
|
|
648
|
+
--ck-shadow-2: 0 1px 3px rgba(0, 0, 0, 0.04), 0 8px 24px rgba(0, 0, 0, 0.06);
|
|
649
|
+
--ck-shadow-3: 0 1px 3px rgba(0, 0, 0, 0.05), 0 16px 40px rgba(0, 0, 0, 0.12);
|
|
650
|
+
}
|
|
651
|
+
|
|
652
|
+
html[data-ck-theme="dark"][data-ck-chrome="bento"] {
|
|
653
|
+
/* True black canvas (OLED-feel — Apple's product pages flip to
|
|
654
|
+
this in dark mode). */
|
|
655
|
+
--ck-bg-canvas: #000000;
|
|
656
|
+
--ck-bg-sidebar: #1C1C1E;
|
|
657
|
+
--ck-bg-surface: #1C1C1E;
|
|
658
|
+
--ck-bg-surface-2: #2C2C2E;
|
|
659
|
+
--ck-bg-muted: #2C2C2E;
|
|
660
|
+
|
|
661
|
+
--ck-border-subtle: rgba(255, 255, 255, 0.08);
|
|
662
|
+
--ck-border-strong: rgba(255, 255, 255, 0.16);
|
|
663
|
+
|
|
664
|
+
--ck-text-primary: #F5F5F7;
|
|
665
|
+
--ck-text-secondary: #98989D;
|
|
666
|
+
--ck-text-tertiary: #6E6E73;
|
|
667
|
+
--ck-text-disabled: #3A3A3C;
|
|
668
|
+
--ck-text-inverse: #1D1D1F;
|
|
669
|
+
|
|
670
|
+
--ck-accent: var(--ck-accent-dark-override, var(--ck-accent-light-override, #0A84FF));
|
|
671
|
+
|
|
672
|
+
/* Heavier shadow on dark — needed for cards to read against
|
|
673
|
+
true black. */
|
|
674
|
+
--ck-shadow-1: 0 1px 2px rgba(0, 0, 0, 0.4);
|
|
675
|
+
--ck-shadow-2: 0 1px 3px rgba(0, 0, 0, 0.4), 0 8px 24px rgba(0, 0, 0, 0.4);
|
|
676
|
+
--ck-shadow-3: 0 1px 3px rgba(0, 0, 0, 0.5), 0 24px 60px rgba(0, 0, 0, 0.6);
|
|
677
|
+
}
|
|
678
|
+
|
|
679
|
+
/* ---------- Frutiger Aero / Glossy Revival chrome — 2004-2013
|
|
680
|
+
Aero / Vista / iOS 6 / Vision Pro Liquid Glass.
|
|
681
|
+
Sky-blue canvas, glossy white-glass surfaces, lime
|
|
682
|
+
pop accent, deep-navy ink (not black), 1px white
|
|
683
|
+
top-highlight on every elevated element, soft blue-
|
|
684
|
+
tinted shadows + outer glow on hover. Image-driven,
|
|
685
|
+
optimistic, intentionally pretty. */
|
|
686
|
+
html[data-ck-chrome="frutiger"] {
|
|
687
|
+
/* Sky gradient as canvas — the whole page sits on it. */
|
|
688
|
+
--ck-bg-canvas: linear-gradient(180deg, #87CEEB 0%, #B3E5FC 45%, #E1F5FE 100%);
|
|
689
|
+
--ck-bg-sidebar: rgba(255, 255, 255, 0.55);
|
|
690
|
+
--ck-bg-surface: rgba(255, 255, 255, 0.62);
|
|
691
|
+
--ck-bg-surface-2: rgba(255, 255, 255, 0.78);
|
|
692
|
+
--ck-bg-muted: rgba(255, 255, 255, 0.4);
|
|
693
|
+
|
|
694
|
+
/* Cool, near-white borders with a hint of sky — they read as
|
|
695
|
+
light catching the edge of glass. */
|
|
696
|
+
--ck-border-subtle: rgba(255, 255, 255, 0.55);
|
|
697
|
+
--ck-border-strong: rgba(26, 35, 126, 0.18);
|
|
698
|
+
--ck-border-focus: var(--ck-accent);
|
|
699
|
+
|
|
700
|
+
/* Deep navy ink — black is too harsh against sky. */
|
|
701
|
+
--ck-text-primary: #0E1A6B;
|
|
702
|
+
--ck-text-secondary: #38507A;
|
|
703
|
+
--ck-text-tertiary: #6C82A8;
|
|
704
|
+
--ck-text-disabled: #B7C6DD;
|
|
705
|
+
--ck-text-inverse: #FFFFFF;
|
|
706
|
+
|
|
707
|
+
/* Aqua accent — the canonical Aero blue. */
|
|
708
|
+
--ck-accent: var(--ck-accent-light-override, #0288D1);
|
|
709
|
+
--ck-accent-hover: #01579B;
|
|
710
|
+
--ck-accent-muted: color-mix(in oklab, var(--ck-accent) 14%, transparent);
|
|
711
|
+
--ck-accent-border: color-mix(in oklab, var(--ck-accent) 38%, transparent);
|
|
712
|
+
|
|
713
|
+
/* Lime pop — used very sparingly for "go" / new / on-states. */
|
|
714
|
+
--ck-frutiger-lime: #C6FF00;
|
|
715
|
+
--ck-frutiger-orange: #FF9800;
|
|
716
|
+
|
|
717
|
+
/* Glossy gradient stacks — applied to buttons via background-
|
|
718
|
+
image. Two layers: the aqua tint at the bottom, the white
|
|
719
|
+
gloss highlight on the top half. */
|
|
720
|
+
--ck-frutiger-btn: linear-gradient(180deg, #4FC3F7 0%, #0288D1 50%, #01579B 100%);
|
|
721
|
+
--ck-frutiger-btn-hover: linear-gradient(180deg, #81D4FA 0%, #039BE5 50%, #0277BD 100%);
|
|
722
|
+
--ck-frutiger-gloss: linear-gradient(180deg, rgba(255,255,255,0.65) 0%, rgba(255,255,255,0) 50%, rgba(255,255,255,0) 100%);
|
|
723
|
+
|
|
724
|
+
/* Generous "pebble" radii. */
|
|
725
|
+
--ck-radius-xs: 8px;
|
|
726
|
+
--ck-radius-sm: 12px;
|
|
727
|
+
--ck-radius-md: 16px;
|
|
728
|
+
--ck-radius-lg: 20px;
|
|
729
|
+
--ck-radius-xl: 28px;
|
|
730
|
+
|
|
731
|
+
/* Soft blue-tinted shadows — never dark/crisp. */
|
|
732
|
+
--ck-shadow-1: 0 2px 8px rgba(0, 100, 200, 0.12);
|
|
733
|
+
--ck-shadow-2: 0 4px 16px rgba(0, 100, 200, 0.18), 0 1px 2px rgba(0, 100, 200, 0.08);
|
|
734
|
+
--ck-shadow-3: 0 12px 40px rgba(0, 100, 200, 0.28), 0 2px 6px rgba(0, 100, 200, 0.14);
|
|
735
|
+
|
|
736
|
+
/* The "Aero glow" — used on hover/focus. */
|
|
737
|
+
--ck-frutiger-glow: 0 0 24px rgba(79, 195, 247, 0.55);
|
|
738
|
+
--ck-frutiger-glow-soft: 0 0 14px rgba(79, 195, 247, 0.35);
|
|
739
|
+
}
|
|
740
|
+
|
|
741
|
+
html[data-ck-theme="dark"][data-ck-chrome="frutiger"] {
|
|
742
|
+
/* Twilight / aurora sky for dark — the brief lives in light,
|
|
743
|
+
but a coherent dark mode keeps the chrome usable. Deep
|
|
744
|
+
navy → indigo → soft lavender gradient. Glass surfaces
|
|
745
|
+
become darker translucent panels. */
|
|
746
|
+
--ck-bg-canvas: linear-gradient(180deg, #0B1029 0%, #1A2167 50%, #2E2280 100%);
|
|
747
|
+
--ck-bg-sidebar: rgba(20, 30, 80, 0.55);
|
|
748
|
+
--ck-bg-surface: rgba(30, 45, 110, 0.55);
|
|
749
|
+
--ck-bg-surface-2: rgba(45, 60, 130, 0.65);
|
|
750
|
+
--ck-bg-muted: rgba(20, 30, 80, 0.4);
|
|
751
|
+
|
|
752
|
+
--ck-border-subtle: rgba(255, 255, 255, 0.16);
|
|
753
|
+
--ck-border-strong: rgba(255, 255, 255, 0.28);
|
|
754
|
+
|
|
755
|
+
--ck-text-primary: #EAF3FF;
|
|
756
|
+
--ck-text-secondary: #B7C6E8;
|
|
757
|
+
--ck-text-tertiary: #8094BE;
|
|
758
|
+
--ck-text-disabled: #4B5C84;
|
|
759
|
+
--ck-text-inverse: #0E1A6B;
|
|
760
|
+
|
|
761
|
+
--ck-accent: var(--ck-accent-dark-override, var(--ck-accent-light-override, #4FC3F7));
|
|
762
|
+
|
|
763
|
+
--ck-frutiger-btn: linear-gradient(180deg, #4FC3F7 0%, #0288D1 50%, #01579B 100%);
|
|
764
|
+
--ck-frutiger-btn-hover: linear-gradient(180deg, #81D4FA 0%, #039BE5 50%, #0277BD 100%);
|
|
765
|
+
|
|
766
|
+
--ck-shadow-1: 0 2px 8px rgba(0, 0, 0, 0.35);
|
|
767
|
+
--ck-shadow-2: 0 4px 16px rgba(0, 0, 0, 0.42), 0 1px 2px rgba(0, 0, 0, 0.32);
|
|
768
|
+
--ck-shadow-3: 0 12px 40px rgba(0, 0, 0, 0.55), 0 2px 6px rgba(0, 0, 0, 0.32);
|
|
769
|
+
|
|
770
|
+
--ck-frutiger-glow: 0 0 24px rgba(129, 212, 250, 0.45);
|
|
771
|
+
--ck-frutiger-glow-soft: 0 0 14px rgba(129, 212, 250, 0.3);
|
|
772
|
+
}
|
|
773
|
+
|
|
774
|
+
/* ---------- Risograph / Zine Print chrome — DIY print culture as
|
|
775
|
+
a digital aesthetic. Warm uncoated paper canvas, 2-3
|
|
776
|
+
fluorescent inks per composition (pink/blue/yellow
|
|
777
|
+
signature trio), halftone dots, misregistration
|
|
778
|
+
offset, hand-drawn imperfection, bold display type
|
|
779
|
+
+ workhorse mono body. Anti-glossy, anti-gradient. */
|
|
780
|
+
html[data-ck-chrome="riso"] {
|
|
781
|
+
/* Warm cream paper, never flat white. */
|
|
782
|
+
--ck-bg-canvas: #F4EFE5;
|
|
783
|
+
--ck-bg-sidebar: #F8F1DE;
|
|
784
|
+
--ck-bg-surface: #F8F1DE;
|
|
785
|
+
--ck-bg-surface-2: #ECE5D2;
|
|
786
|
+
--ck-bg-muted: #ECE5D2;
|
|
787
|
+
|
|
788
|
+
/* "Black" is never pure — it's a soft charcoal that mimics riso
|
|
789
|
+
ink-on-paper rather than CRT pixels. */
|
|
790
|
+
--ck-border-subtle: rgba(26, 26, 26, 0.18);
|
|
791
|
+
--ck-border-strong: rgba(26, 26, 26, 0.85);
|
|
792
|
+
--ck-border-focus: var(--ck-accent);
|
|
793
|
+
|
|
794
|
+
--ck-text-primary: #1A1A1A;
|
|
795
|
+
--ck-text-secondary: #4A4A4A;
|
|
796
|
+
--ck-text-tertiary: #7A7468;
|
|
797
|
+
--ck-text-disabled: #B9B0A0;
|
|
798
|
+
--ck-text-inverse: #F8F1DE;
|
|
799
|
+
|
|
800
|
+
/* Pink is the canonical riso ink — the one print everyone
|
|
801
|
+
associates with the aesthetic. Override per-app for blue /
|
|
802
|
+
yellow / orange-led palettes. */
|
|
803
|
+
--ck-accent: var(--ck-accent-light-override, #FF48B0);
|
|
804
|
+
--ck-accent-hover: #E63A9D;
|
|
805
|
+
--ck-accent-muted: color-mix(in oklab, var(--ck-accent) 14%, transparent);
|
|
806
|
+
--ck-accent-border: color-mix(in oklab, var(--ck-accent) 50%, transparent);
|
|
807
|
+
|
|
808
|
+
/* The canonical riso ink palette — pick 2-3 per layout. */
|
|
809
|
+
--ck-riso-pink: #FF48B0;
|
|
810
|
+
--ck-riso-blue: #3D5AFE;
|
|
811
|
+
--ck-riso-yellow: #FFE100;
|
|
812
|
+
--ck-riso-teal: #00A99D;
|
|
813
|
+
--ck-riso-green: #00A95C;
|
|
814
|
+
--ck-riso-orange: #FF6F3C;
|
|
815
|
+
--ck-riso-violet: #765BA7;
|
|
816
|
+
--ck-riso-red: #F02D2D;
|
|
817
|
+
|
|
818
|
+
/* Overprint blends — when two inks overlap on paper. */
|
|
819
|
+
--ck-riso-overprint-pb: #6B2DCC; /* pink + blue */
|
|
820
|
+
--ck-riso-overprint-py: #FF7A2D; /* pink + yellow */
|
|
821
|
+
--ck-riso-overprint-by: #4A9A4F; /* blue + yellow */
|
|
822
|
+
|
|
823
|
+
/* Square-ish radii — riso isn't soft. */
|
|
824
|
+
--ck-radius-xs: 2px;
|
|
825
|
+
--ck-radius-sm: 4px;
|
|
826
|
+
--ck-radius-md: 6px;
|
|
827
|
+
--ck-radius-lg: 8px;
|
|
828
|
+
--ck-radius-xl: 12px;
|
|
829
|
+
|
|
830
|
+
/* "Shadows" in riso are ink-offset duplicates, not soft drop
|
|
831
|
+
shadows. The chrome CSS overrides individual primitives with
|
|
832
|
+
offset shadow blocks. These minimal values are fallbacks. */
|
|
833
|
+
--ck-shadow-1: 0 1px 0 rgba(26, 26, 26, 0.4);
|
|
834
|
+
--ck-shadow-2: 3px 3px 0 var(--ck-riso-blue);
|
|
835
|
+
--ck-shadow-3: 4px 4px 0 var(--ck-riso-pink);
|
|
836
|
+
|
|
837
|
+
/* Paper texture — SVG noise that the chrome stamps onto body. */
|
|
838
|
+
--ck-riso-paper:
|
|
839
|
+
url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='240' height='240'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' seed='4'/><feColorMatrix values='0 0 0 0 0.05 0 0 0 0 0.05 0 0 0 0 0.05 0 0 0 0.6 0'/></filter><rect width='100%25' height='100%25' filter='url(%23n)' opacity='0.18'/></svg>");
|
|
840
|
+
|
|
841
|
+
/* Halftone dot pattern — apply as background-image where you
|
|
842
|
+
want the "shaded with ink" look. */
|
|
843
|
+
--ck-riso-halftone:
|
|
844
|
+
radial-gradient(circle, currentColor 1.4px, transparent 1.6px);
|
|
845
|
+
}
|
|
846
|
+
|
|
847
|
+
html[data-ck-theme="dark"][data-ck-chrome="riso"] {
|
|
848
|
+
/* "Dark mode" riso = ink on dark paper / blueprint reversal.
|
|
849
|
+
Holds the spirit (limited inks, halftone, no gradients) but
|
|
850
|
+
flips canvas to deep ink-on-newsprint navy. Not the canonical
|
|
851
|
+
riso look — for late-night reading. */
|
|
852
|
+
--ck-bg-canvas: #14131A;
|
|
853
|
+
--ck-bg-sidebar: #1A1922;
|
|
854
|
+
--ck-bg-surface: #1F1D2A;
|
|
855
|
+
--ck-bg-surface-2: #262433;
|
|
856
|
+
--ck-bg-muted: #1A1922;
|
|
857
|
+
|
|
858
|
+
--ck-border-subtle: rgba(248, 241, 222, 0.16);
|
|
859
|
+
--ck-border-strong: rgba(248, 241, 222, 0.7);
|
|
860
|
+
|
|
861
|
+
--ck-text-primary: #F4EFE5;
|
|
862
|
+
--ck-text-secondary: #C7BFAE;
|
|
863
|
+
--ck-text-tertiary: #8C8678;
|
|
864
|
+
--ck-text-disabled: #4D4A40;
|
|
865
|
+
--ck-text-inverse: #14131A;
|
|
866
|
+
|
|
867
|
+
--ck-accent: var(--ck-accent-dark-override, var(--ck-accent-light-override, #FF6FBF));
|
|
868
|
+
--ck-accent-hover: #FF8FCC;
|
|
869
|
+
|
|
870
|
+
--ck-shadow-1: 0 1px 0 rgba(0, 0, 0, 0.6);
|
|
871
|
+
--ck-shadow-2: 3px 3px 0 var(--ck-riso-blue);
|
|
872
|
+
--ck-shadow-3: 4px 4px 0 var(--ck-riso-pink);
|
|
873
|
+
}
|
|
874
|
+
|
|
875
|
+
/* ---------- Hand-drawn / Sketchy chrome — Excalidraw / tldraw /
|
|
876
|
+
Whimsical aesthetic. Pen-on-paper feel, hatch-filled
|
|
877
|
+
shapes, slight wobble on every stroke, handwritten
|
|
878
|
+
type. Anti-final by design — perfect for AI-output
|
|
879
|
+
UIs and brainstorming tools. Dark mode flips to a
|
|
880
|
+
chalkboard. */
|
|
881
|
+
html[data-ck-chrome="sketch"] {
|
|
882
|
+
/* Notebook paper, never crisp white. */
|
|
883
|
+
--ck-bg-canvas: #FFFEF9;
|
|
884
|
+
--ck-bg-sidebar: #FFFBEE;
|
|
885
|
+
--ck-bg-surface: #FFFEF9;
|
|
886
|
+
--ck-bg-surface-2: #F8F5E8;
|
|
887
|
+
--ck-bg-muted: #F3EFE0;
|
|
888
|
+
|
|
889
|
+
--ck-border-subtle: rgba(26, 26, 26, 0.14);
|
|
890
|
+
--ck-border-strong: rgba(26, 26, 26, 0.85);
|
|
891
|
+
--ck-border-focus: var(--ck-accent);
|
|
892
|
+
|
|
893
|
+
/* Pen ink — never pure black. */
|
|
894
|
+
--ck-text-primary: #1A1A1A;
|
|
895
|
+
--ck-text-secondary: #555555;
|
|
896
|
+
--ck-text-tertiary: #8A8270;
|
|
897
|
+
--ck-text-disabled: #C7C0AE;
|
|
898
|
+
--ck-text-inverse: #FFFEF9;
|
|
899
|
+
|
|
900
|
+
/* The marker palette — bright, friendly, NOT fluorescent. */
|
|
901
|
+
--ck-sketch-red: #E54B4B;
|
|
902
|
+
--ck-sketch-orange: #F2994A;
|
|
903
|
+
--ck-sketch-yellow: #F2C94C;
|
|
904
|
+
--ck-sketch-green: #6FCF97;
|
|
905
|
+
--ck-sketch-teal: #45B7AF;
|
|
906
|
+
--ck-sketch-blue: #4A90E2;
|
|
907
|
+
--ck-sketch-purple: #9B6FE0;
|
|
908
|
+
--ck-sketch-pink: #E36AB0;
|
|
909
|
+
|
|
910
|
+
/* Highlighter (translucent so the line shows through) */
|
|
911
|
+
--ck-sketch-hi-yellow: rgba(242, 201, 76, 0.42);
|
|
912
|
+
--ck-sketch-hi-pink: rgba(227, 106, 176, 0.32);
|
|
913
|
+
--ck-sketch-hi-green: rgba(111, 207, 151, 0.32);
|
|
914
|
+
|
|
915
|
+
--ck-accent: var(--ck-accent-light-override, var(--ck-sketch-blue));
|
|
916
|
+
--ck-accent-hover: #3A78C8;
|
|
917
|
+
--ck-accent-muted: rgba(74, 144, 226, 0.16);
|
|
918
|
+
--ck-accent-border: rgba(74, 144, 226, 0.5);
|
|
919
|
+
|
|
920
|
+
/* Handwriting fonts — Caveat / Patrick Hand / Kalam are common
|
|
921
|
+
Google Fonts; Comic Sans MS is the universal fallback that
|
|
922
|
+
still captures the spirit. Body uses the friendlier
|
|
923
|
+
proportional sans so paragraphs stay readable. */
|
|
924
|
+
--ck-font-sketch-display: "Caveat", "Patrick Hand", "Kalam",
|
|
925
|
+
"Shadows Into Light Two", "Comic Sans MS", cursive;
|
|
926
|
+
--ck-font-sketch-body: "Comic Neue", "Atkinson Hyperlegible",
|
|
927
|
+
"Nunito", "Comic Sans MS", system-ui, sans-serif;
|
|
928
|
+
--ck-font-sans: var(--ck-font-sketch-body);
|
|
929
|
+
|
|
930
|
+
/* The wobble filter — feTurbulence + feDisplacementMap inline
|
|
931
|
+
SVG. Applied via filter: var(--ck-sketch-wobble) on the
|
|
932
|
+
elements that should "draw" with a rough edge. Chrome /
|
|
933
|
+
Safari render this fine; Firefox skips data:-URL filters,
|
|
934
|
+
which is OK — borders still read as drawn via asymmetric
|
|
935
|
+
radii + offset second strokes. */
|
|
936
|
+
--ck-sketch-wobble:
|
|
937
|
+
url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg'><filter id='w' x='-2%25' y='-2%25' width='104%25' height='104%25'><feTurbulence type='fractalNoise' baseFrequency='0.025' numOctaves='2' seed='4'/><feDisplacementMap in='SourceGraphic' scale='2.2'/></filter></svg>#w");
|
|
938
|
+
--ck-sketch-wobble-strong:
|
|
939
|
+
url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg'><filter id='w' x='-3%25' y='-3%25' width='106%25' height='106%25'><feTurbulence type='fractalNoise' baseFrequency='0.04' numOctaves='2' seed='6'/><feDisplacementMap in='SourceGraphic' scale='3.4'/></filter></svg>#w");
|
|
940
|
+
|
|
941
|
+
/* Asymmetric radii — corners that aren't quite the same. */
|
|
942
|
+
--ck-radius-xs: 5px 7px 6px 8px / 7px 5px 8px 6px;
|
|
943
|
+
--ck-radius-sm: 7px 9px 8px 10px / 9px 7px 10px 8px;
|
|
944
|
+
--ck-radius-md: 10px 12px 11px 13px / 12px 10px 13px 11px;
|
|
945
|
+
--ck-radius-lg: 12px 16px 14px 18px / 16px 12px 18px 14px;
|
|
946
|
+
--ck-radius-xl: 18px 22px 20px 24px / 22px 18px 24px 20px;
|
|
947
|
+
|
|
948
|
+
/* Shadows are offset second strokes — never blurred. */
|
|
949
|
+
--ck-shadow-1: 2px 3px 0 rgba(26, 26, 26, 0.85);
|
|
950
|
+
--ck-shadow-2: 3px 4px 0 rgba(26, 26, 26, 0.85);
|
|
951
|
+
--ck-shadow-3: 4px 6px 0 rgba(26, 26, 26, 0.85);
|
|
952
|
+
}
|
|
953
|
+
|
|
954
|
+
html[data-ck-theme="dark"][data-ck-chrome="sketch"] {
|
|
955
|
+
/* Chalkboard — dark teal-grey with off-white chalk lines. */
|
|
956
|
+
--ck-bg-canvas: #1E2A2E;
|
|
957
|
+
--ck-bg-sidebar: #25333A;
|
|
958
|
+
--ck-bg-surface: #233038;
|
|
959
|
+
--ck-bg-surface-2: #2D3D45;
|
|
960
|
+
--ck-bg-muted: #2A3942;
|
|
961
|
+
|
|
962
|
+
--ck-border-subtle: rgba(240, 240, 232, 0.18);
|
|
963
|
+
--ck-border-strong: rgba(240, 240, 232, 0.9);
|
|
964
|
+
|
|
965
|
+
--ck-text-primary: #F0F0E8;
|
|
966
|
+
--ck-text-secondary: #C8C8C0;
|
|
967
|
+
--ck-text-tertiary: #8E938F;
|
|
968
|
+
--ck-text-disabled: #4F5A60;
|
|
969
|
+
--ck-text-inverse: #1E2A2E;
|
|
970
|
+
|
|
971
|
+
--ck-accent: var(--ck-accent-dark-override, var(--ck-accent-light-override, #6FCF97));
|
|
972
|
+
|
|
973
|
+
--ck-shadow-1: 2px 3px 0 rgba(240, 240, 232, 0.85);
|
|
974
|
+
--ck-shadow-2: 3px 4px 0 rgba(240, 240, 232, 0.85);
|
|
975
|
+
--ck-shadow-3: 4px 6px 0 rgba(240, 240, 232, 0.85);
|
|
976
|
+
}
|