css-is-awesome 1.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/AGENTS.md +343 -0
- package/CHANGELOG.md +1036 -0
- package/CLAUDE.md +9 -0
- package/CONTRACT.md +580 -0
- package/GEMINI.md +9 -0
- package/LICENSE +21 -0
- package/LICENSE-third-party +88 -0
- package/MIGRATION.md +312 -0
- package/README.md +380 -0
- package/ROADMAP.md +714 -0
- package/THEMING.md +290 -0
- package/THREE-TIERS.md +158 -0
- package/VERSIONING.md +200 -0
- package/_index.scss +34 -0
- package/api.scss +16 -0
- package/bin/README.md +57 -0
- package/bin/cia.cjs +114 -0
- package/bin/migrate-bootstrap.cjs +427 -0
- package/bin/migrate-tailwind.cjs +832 -0
- package/css-is-awesome.instructions.md +533 -0
- package/dist/css-is-awesome.core.css +598 -0
- package/dist/css-is-awesome.core.min.css +1 -0
- package/dist/css-is-awesome.css +3733 -0
- package/dist/css-is-awesome.min.css +1 -0
- package/dist/css-is-awesome.utilities.css +2445 -0
- package/dist/css-is-awesome.utilities.min.css +1 -0
- package/dist/tokens.css +508 -0
- package/dist/tokens.d.ts +266 -0
- package/dist/tokens.min.css +1 -0
- package/figma-tokens/README.md +57 -0
- package/figma-tokens/primitives-brand.scss +121 -0
- package/figma-tokens/semantic-dark.scss +61 -0
- package/figma-tokens/semantic-light.scss +61 -0
- package/figma-tokens/tokens.json +144 -0
- package/llm.txt +183 -0
- package/mcp/server.cjs +1495 -0
- package/package.json +199 -0
- package/public/icons/README.md +278 -0
- package/public/icons/arrow-right.svg +4 -0
- package/public/icons/check.svg +4 -0
- package/public/icons/chevron-down.svg +4 -0
- package/public/icons/close.svg +4 -0
- package/public/icons/core/arrow-down.svg +13 -0
- package/public/icons/core/arrow-left.svg +13 -0
- package/public/icons/core/arrow-right.svg +13 -0
- package/public/icons/core/arrow-up.svg +13 -0
- package/public/icons/core/bell.svg +13 -0
- package/public/icons/core/calendar.svg +15 -0
- package/public/icons/core/check.svg +12 -0
- package/public/icons/core/chevron-down.svg +12 -0
- package/public/icons/core/chevron-left.svg +12 -0
- package/public/icons/core/chevron-right.svg +12 -0
- package/public/icons/core/chevron-up.svg +12 -0
- package/public/icons/core/clock.svg +13 -0
- package/public/icons/core/close.svg +13 -0
- package/public/icons/core/copy.svg +13 -0
- package/public/icons/core/download.svg +14 -0
- package/public/icons/core/edit.svg +13 -0
- package/public/icons/core/error.svg +14 -0
- package/public/icons/core/external-link.svg +14 -0
- package/public/icons/core/eye-off.svg +15 -0
- package/public/icons/core/eye.svg +13 -0
- package/public/icons/core/filter.svg +12 -0
- package/public/icons/core/heart.svg +12 -0
- package/public/icons/core/help.svg +14 -0
- package/public/icons/core/home.svg +13 -0
- package/public/icons/core/info.svg +14 -0
- package/public/icons/core/loading.svg +12 -0
- package/public/icons/core/lock.svg +13 -0
- package/public/icons/core/mail.svg +13 -0
- package/public/icons/core/menu.svg +14 -0
- package/public/icons/core/message.svg +12 -0
- package/public/icons/core/minus.svg +12 -0
- package/public/icons/core/more-horizontal.svg +14 -0
- package/public/icons/core/pause.svg +13 -0
- package/public/icons/core/play.svg +12 -0
- package/public/icons/core/plus.svg +13 -0
- package/public/icons/core/refresh.svg +15 -0
- package/public/icons/core/save.svg +14 -0
- package/public/icons/core/search.svg +13 -0
- package/public/icons/core/settings.svg +13 -0
- package/public/icons/core/share.svg +14 -0
- package/public/icons/core/sort.svg +15 -0
- package/public/icons/core/star.svg +12 -0
- package/public/icons/core/success.svg +13 -0
- package/public/icons/core/trash.svg +16 -0
- package/public/icons/core/unlock.svg +13 -0
- package/public/icons/core/upload.svg +14 -0
- package/public/icons/core/user.svg +13 -0
- package/public/icons/core/users.svg +15 -0
- package/public/icons/core/warning.svg +14 -0
- package/public/icons/download.svg +4 -0
- package/public/icons/edit.svg +4 -0
- package/public/icons/menu.svg +4 -0
- package/public/icons/search.svg +4 -0
- package/public/theme.css +4179 -0
- package/public/themes/README.md +102 -0
- package/public/themes/boilerplate/theme.css +154 -0
- package/public/themes/boilerplate-dark/theme.css +171 -0
- package/public/themes/boilerplate-light/theme.css +171 -0
- package/public/themes/cupertino/theme.css +165 -0
- package/public/themes/cupertino-dark/theme.css +200 -0
- package/public/themes/cupertino-light/theme.css +227 -0
- package/public/themes/glass/theme.css +190 -0
- package/public/themes/glass-dark/theme.css +201 -0
- package/public/themes/glass-light/theme.css +229 -0
- package/public/themes/graphite/theme.css +155 -0
- package/public/themes/graphite-dark/theme.css +223 -0
- package/public/themes/graphite-light/theme.css +191 -0
- package/public/themes/press/theme.css +189 -0
- package/public/themes/press-dark/theme.css +199 -0
- package/public/themes/press-light/theme.css +235 -0
- package/public/themes/prism/theme.css +159 -0
- package/public/themes/prism-dark/theme.css +185 -0
- package/public/themes/prism-light/theme.css +188 -0
- package/public/themes/sketchbook/theme.css +152 -0
- package/public/themes/sketchbook-dark/theme.css +194 -0
- package/public/themes/sketchbook-light/theme.css +188 -0
- package/public/themes/terminal/theme.css +159 -0
- package/public/themes/terminal-dark/theme.css +229 -0
- package/public/themes/terminal-light/theme.css +152 -0
- package/scripts/README.md +70 -0
- package/scripts/icon-contract.json +67 -0
- package/scripts/icon-validator.js +205 -0
- package/scripts/prepare-dist.mjs +65 -0
- package/scripts/theme-a11y.js +415 -0
- package/scripts/theme-contract.json +171 -0
- package/scripts/theme-validator.js +674 -0
- package/scss/README.md +55 -0
- package/scss/_animations-utilities.scss +107 -0
- package/scss/_animations.scss +248 -0
- package/scss/_app-styles.scss +15 -0
- package/scss/_generator.scss +174 -0
- package/scss/_icons.scss +475 -0
- package/scss/_index.scss +17 -0
- package/scss/_layout.scss +597 -0
- package/scss/_mixins.scss +1036 -0
- package/scss/_system.scss +291 -0
- package/scss/_utilities.scss +377 -0
- package/scss/api.scss +61 -0
- package/scss/components/_accordion.scss +72 -0
- package/scss/components/_buttons.scss +171 -0
- package/scss/components/_copy-button.scss +69 -0
- package/scss/components/_data.scss +190 -0
- package/scss/components/_feedback.scss +197 -0
- package/scss/components/_forms.scss +272 -0
- package/scss/components/_index.scss +17 -0
- package/scss/components/_navigation.scss +186 -0
- package/scss/components/_overlay.scss +259 -0
- package/scss/components/_stepper.scss +159 -0
- package/scss/components/_tabs.scss +72 -0
- package/scss/core.scss +54 -0
- package/scss/examples/_theming.scss +107 -0
- package/scss/examples/_usage.scss +317 -0
- package/scss/main.scss +64 -0
- package/scss/recipes/README.md +110 -0
- package/scss/recipes/_bare-tags.scss +232 -0
- package/scss/recipes/_recipe-template.md +119 -0
- package/scss/recipes/combobox.md +509 -0
- package/scss/recipes/dialog.md +265 -0
- package/scss/recipes/print-to-pdf.md +263 -0
- package/scss/theme/README.md +67 -0
- package/scss/theme/_brand.scss +18 -0
- package/scss/theme/_colors-dark.scss +68 -0
- package/scss/theme/_colors-light.scss +70 -0
- package/scss/theme/_components.scss +94 -0
- package/scss/theme/_icons.scss +104 -0
- package/scss/theme/_index.scss +62 -0
- package/scss/theme/_shadows.scss +65 -0
- package/scss/theme/_shape.scss +13 -0
- package/scss/theme/_typography.scss +9 -0
- package/scss/theme/registry.json +447 -0
- package/scss/themes/boilerplate-dark.scss +212 -0
- package/scss/themes/boilerplate-light.scss +209 -0
- package/scss/themes/boilerplate.scss +181 -0
- package/scss/themes/cupertino-dark.scss +238 -0
- package/scss/themes/cupertino-light.scss +266 -0
- package/scss/themes/cupertino.scss +194 -0
- package/scss/themes/glass-dark.scss +238 -0
- package/scss/themes/glass-light.scss +266 -0
- package/scss/themes/glass.scss +220 -0
- package/scss/themes/graphite-dark.scss +260 -0
- package/scss/themes/graphite-light.scss +228 -0
- package/scss/themes/graphite.scss +182 -0
- package/scss/themes/press-dark.scss +237 -0
- package/scss/themes/press-light.scss +273 -0
- package/scss/themes/press.scss +241 -0
- package/scss/themes/prism-dark.scss +217 -0
- package/scss/themes/prism-light.scss +220 -0
- package/scss/themes/prism.scss +190 -0
- package/scss/themes/sketchbook-dark.scss +231 -0
- package/scss/themes/sketchbook-light.scss +231 -0
- package/scss/themes/sketchbook.scss +178 -0
- package/scss/themes/terminal-dark.scss +267 -0
- package/scss/themes/terminal-light.scss +175 -0
- package/scss/themes/terminal.scss +185 -0
- package/scss/tokens.scss +23 -0
- package/scss/utilities-only.scss +4 -0
|
@@ -0,0 +1,266 @@
|
|
|
1
|
+
/* ============================================================
|
|
2
|
+
THEME — Cupertino (light)
|
|
3
|
+
-----------------------------------------------------------
|
|
4
|
+
Standalone file for `[data-theme="cupertino-light"]` consumers.
|
|
5
|
+
This is the ONE FILE users swap to reskin their site.
|
|
6
|
+
Replace this file with any other theme.css to change the
|
|
7
|
+
entire look & feel. Tokens only — no component CSS lives here.
|
|
8
|
+
|
|
9
|
+
TOKEN CONTRACT
|
|
10
|
+
-----------------------------------------------------------
|
|
11
|
+
Every theme MUST declare every variable in this file, even
|
|
12
|
+
if it sets it to a neutral value (e.g. --glow-md: 0 0 0 transparent;).
|
|
13
|
+
That's what guarantees a clean one-file swap.
|
|
14
|
+
|
|
15
|
+
Slots:
|
|
16
|
+
Surfaces : --paper, --paper-raised, --paper-sunk, --paper-glass
|
|
17
|
+
Ink : --ink, --ink-soft, --ink-faint, --graphite, --muted
|
|
18
|
+
Lines : --guide, --guide-soft, --hair, --hair-soft
|
|
19
|
+
Primary : --ai, --ai-ink, --ai-wash (system blue in cupertino)
|
|
20
|
+
Seal : --shu, --shu-wash (system red)
|
|
21
|
+
Accent : --ochre, --ochre-wash (system orange / amber)
|
|
22
|
+
Code : --code-bg/ink/muted/accent/green/blue
|
|
23
|
+
Type : --font-display/script/serif/sans/mono
|
|
24
|
+
Radius : --r-sm, --r-md, --r-lg
|
|
25
|
+
Shadow : --shadow-sm, --shadow-md, --shadow-lg
|
|
26
|
+
Blur : --blur-sm, --blur-md, --blur-lg (vibrancy)
|
|
27
|
+
Glow : --glow-sm, --glow-md, --glow-lg (cupertino lifts, doesn't glow)
|
|
28
|
+
Motion : --duration-fast, --duration-normal, --duration-slow, --ease
|
|
29
|
+
============================================================ */
|
|
30
|
+
|
|
31
|
+
@use '../mixins' as m;
|
|
32
|
+
|
|
33
|
+
@import 'https://fonts.googleapis.com/css2?family=Caveat:wght@400;500;600;700&display=swap';
|
|
34
|
+
|
|
35
|
+
@include m.theme('cupertino-light', light) {
|
|
36
|
+
/* Surfaces — AppKit panels */
|
|
37
|
+
--paper: #F5F5F7;
|
|
38
|
+
--paper-raised: #FFF;
|
|
39
|
+
--paper-sunk: #E9E9EC;
|
|
40
|
+
--paper-glass: rgba(255, 255, 255, 0.72);
|
|
41
|
+
|
|
42
|
+
/* Ink — warm black, never pure */
|
|
43
|
+
--ink: #1D1D1F;
|
|
44
|
+
--ink-soft: #3A3A3C;
|
|
45
|
+
--ink-faint: #66666B;
|
|
46
|
+
--graphite: #2C2C2E;
|
|
47
|
+
--muted: #6E6E73;
|
|
48
|
+
|
|
49
|
+
/* Hairlines / guides */
|
|
50
|
+
--guide: #D2D2D7;
|
|
51
|
+
--guide-soft: #E5E5EA;
|
|
52
|
+
--hair: #D2D2D7;
|
|
53
|
+
--hair-soft: #E5E5EA;
|
|
54
|
+
|
|
55
|
+
/* Primary accent — system blue */
|
|
56
|
+
--ai: #005EBB;
|
|
57
|
+
--ai-ink: #0058B0;
|
|
58
|
+
--ai-wash: #E5F0FB;
|
|
59
|
+
|
|
60
|
+
/* Seal — system red */
|
|
61
|
+
--shu: #FF3B30;
|
|
62
|
+
--shu-wash: #FFEAE8;
|
|
63
|
+
|
|
64
|
+
/* Accent — system orange / amber */
|
|
65
|
+
--ochre: #FF9F0A;
|
|
66
|
+
--ochre-wash: #FFF4E0;
|
|
67
|
+
|
|
68
|
+
/* Code surface — native Xcode dark */
|
|
69
|
+
--code-bg: #1C1C1E;
|
|
70
|
+
--code-ink: #F2F2F7;
|
|
71
|
+
--code-muted: #8E8E93;
|
|
72
|
+
--code-accent: #FF9F0A;
|
|
73
|
+
--code-green: #30D158;
|
|
74
|
+
--code-blue: #64D2FF;
|
|
75
|
+
|
|
76
|
+
/* Typography — SF system stack */
|
|
77
|
+
--font-display: -apple-system, BlinkMacSystemFont, 'SF Pro Display', 'Inter', 'Segoe UI', Helvetica, Arial, sans-serif;
|
|
78
|
+
--font-script: 'Caveat', 'Shadows Into Light', cursive;
|
|
79
|
+
--font-serif: ui-serif, 'New York', 'Iowan Old Style', 'Palatino', Georgia, serif;
|
|
80
|
+
--font-sans: -apple-system, BlinkMacSystemFont, 'SF Pro Text', 'Inter', 'Segoe UI', Helvetica, Arial, sans-serif;
|
|
81
|
+
--font-mono: 'SF Mono', ui-monospace, 'JetBrains Mono', 'Menlo', Consolas, monospace;
|
|
82
|
+
|
|
83
|
+
/* Radius — AppKit corners */
|
|
84
|
+
--r-sm: 8px;
|
|
85
|
+
--r-md: 10px;
|
|
86
|
+
--r-lg: 14px;
|
|
87
|
+
|
|
88
|
+
/* Shadows — small, diffuse, lifted */
|
|
89
|
+
--shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.04), 0 0 0 0.5px rgba(0, 0, 0, 0.04);
|
|
90
|
+
--shadow-md: 0 4px 14px rgba(0, 0, 0, 0.06), 0 1px 3px rgba(0, 0, 0, 0.04);
|
|
91
|
+
--shadow-lg: 0 12px 40px rgba(0, 0, 0, 0.10), 0 2px 6px rgba(0, 0, 0, 0.04);
|
|
92
|
+
|
|
93
|
+
/* Blur — vibrancy (Cupertino's signature) */
|
|
94
|
+
--blur-sm: blur(20px) saturate(180%);
|
|
95
|
+
--blur-md: blur(30px) saturate(180%);
|
|
96
|
+
--blur-lg: blur(40px) saturate(180%);
|
|
97
|
+
|
|
98
|
+
/* Glow — Cupertino doesn't glow, it lifts */
|
|
99
|
+
--glow-sm: 0 0 0 transparent;
|
|
100
|
+
--glow-md: 0 0 0 transparent;
|
|
101
|
+
--glow-lg: 0 0 0 transparent;
|
|
102
|
+
|
|
103
|
+
/* Motion — Apple-snappy */
|
|
104
|
+
--duration-fast: 160ms;
|
|
105
|
+
--duration-normal: 220ms;
|
|
106
|
+
--duration-slow: 320ms;
|
|
107
|
+
--ease: cubic-bezier(0.25, 0.1, 0.25, 1);
|
|
108
|
+
|
|
109
|
+
/* ----------------------------------------------------------
|
|
110
|
+
SEMANTIC ALIASES
|
|
111
|
+
-----------------------------------------------------------
|
|
112
|
+
Bridge the library's expected names to this theme's native
|
|
113
|
+
palette. Components can now write m.color(surface-default)
|
|
114
|
+
or var(--surface-default) and reskin with the theme
|
|
115
|
+
automatically.
|
|
116
|
+
---------------------------------------------------------- */
|
|
117
|
+
|
|
118
|
+
/* Backgrounds (page-level) */
|
|
119
|
+
--background-default: var(--paper);
|
|
120
|
+
--background-subtle: var(--paper-sunk);
|
|
121
|
+
--background-navbar: var(--paper-raised);
|
|
122
|
+
|
|
123
|
+
/* Surfaces */
|
|
124
|
+
--surface-default: var(--paper);
|
|
125
|
+
--surface-raised: var(--paper-raised);
|
|
126
|
+
--surface-sunk: var(--paper-sunk);
|
|
127
|
+
--surface-muted: var(--paper-sunk);
|
|
128
|
+
--surface-subtle: var(--paper-raised);
|
|
129
|
+
--surface-emphasis: var(--ink);
|
|
130
|
+
--surface-glass: var(--paper-glass);
|
|
131
|
+
|
|
132
|
+
/* Text */
|
|
133
|
+
--text-primary: var(--ink);
|
|
134
|
+
--text-secondary: var(--ink-soft);
|
|
135
|
+
--text-muted: var(--ink-faint);
|
|
136
|
+
--text-tertiary: var(--muted);
|
|
137
|
+
--text-inverse: var(--paper);
|
|
138
|
+
--text-link: var(--ai);
|
|
139
|
+
--text-link-hover: var(--ai-ink);
|
|
140
|
+
|
|
141
|
+
/* Borders */
|
|
142
|
+
--border-default: var(--hair);
|
|
143
|
+
--border-subtle: var(--hair-soft);
|
|
144
|
+
--border-emphasis: var(--ink);
|
|
145
|
+
--border-focus: var(--ai);
|
|
146
|
+
|
|
147
|
+
/* Interactive (hover / active wash layers) — macOS faint ink overlay */
|
|
148
|
+
--interactive-hover: rgba(0, 0, 0, 0.04);
|
|
149
|
+
--interactive-active: rgba(0, 0, 0, 0.08);
|
|
150
|
+
|
|
151
|
+
/* Brand (identity — action-primary usually references these) */
|
|
152
|
+
--brand-primary: var(--ai);
|
|
153
|
+
--brand-primary-hover: var(--ai-ink);
|
|
154
|
+
|
|
155
|
+
/* Action (primary / secondary / tertiary) */
|
|
156
|
+
--action-primary-default: var(--ai);
|
|
157
|
+
--action-primary-hover: var(--ai-ink);
|
|
158
|
+
--action-primary-active: var(--ai-ink);
|
|
159
|
+
--action-primary-wash: var(--ai-wash);
|
|
160
|
+
--action-secondary-default: var(--shu);
|
|
161
|
+
--action-secondary-hover: var(--shu);
|
|
162
|
+
--action-secondary-active: var(--shu);
|
|
163
|
+
--action-secondary-wash: var(--shu-wash);
|
|
164
|
+
--action-tertiary-default: var(--ochre);
|
|
165
|
+
--action-tertiary-hover: var(--ochre);
|
|
166
|
+
--action-tertiary-active: var(--ochre);
|
|
167
|
+
--action-tertiary-wash: var(--ochre-wash);
|
|
168
|
+
|
|
169
|
+
/* Feedback / status (high-level semantic) */
|
|
170
|
+
--feedback-info: var(--ai);
|
|
171
|
+
--feedback-success: var(--code-green);
|
|
172
|
+
--feedback-warning: var(--ochre);
|
|
173
|
+
--feedback-error: var(--shu);
|
|
174
|
+
|
|
175
|
+
/* Status — info (three-part: default / subtle / text) */
|
|
176
|
+
--info-default: var(--ai);
|
|
177
|
+
--info-subtle: var(--ai-wash);
|
|
178
|
+
--info-text: var(--ai-ink);
|
|
179
|
+
|
|
180
|
+
/* Status — success (macOS system green) */
|
|
181
|
+
--success-default: var(--code-green);
|
|
182
|
+
--success-subtle: rgba(48, 209, 88, 0.12);
|
|
183
|
+
--success-text: #0F6E22;
|
|
184
|
+
|
|
185
|
+
/* Status — warning (macOS system orange) */
|
|
186
|
+
--warning-default: var(--ochre);
|
|
187
|
+
--warning-subtle: var(--ochre-wash);
|
|
188
|
+
--warning-text: #985000;
|
|
189
|
+
|
|
190
|
+
/* Status — error (macOS system red) */
|
|
191
|
+
--error-default: var(--shu);
|
|
192
|
+
--error-subtle: rgba(255, 59, 48, 0.12);
|
|
193
|
+
--error-text: #A8281F;
|
|
194
|
+
|
|
195
|
+
/* ----------------------------------------------------------
|
|
196
|
+
LIBRARY SCALES (space / radius / type / motion / z)
|
|
197
|
+
-----------------------------------------------------------
|
|
198
|
+
The library mixins emit var(--space-<key>), var(--radius-<key>),
|
|
199
|
+
var(--font-primary), var(--font-size-<key>), var(--z-<key>), …
|
|
200
|
+
Themes declare the slots so those mixins always resolve.
|
|
201
|
+
---------------------------------------------------------- */
|
|
202
|
+
|
|
203
|
+
/* Space scale (rem for accessibility) */
|
|
204
|
+
|
|
205
|
+
/* Spacing rhythm — THE knob for how dense or airy this theme feels.
|
|
206
|
+
The numbered scale is the source of truth: every component reads
|
|
207
|
+
var(--space-N), and the t-shirt aliases (--space-md, --space-lg …)
|
|
208
|
+
are emitted by the library as references to these, so they follow
|
|
209
|
+
automatically. Change a value here and the whole page re-proportions.
|
|
210
|
+
Halve them for a compact UI; raise 4/5/6 for an airy editorial feel. */
|
|
211
|
+
--space-0: 0; /* flush */
|
|
212
|
+
--space-1: 0.5rem; /* tight inner gap */
|
|
213
|
+
--space-2: 0.75rem; /* control padding */
|
|
214
|
+
--space-3: 0.875rem; /* (no t-shirt) */
|
|
215
|
+
--space-4: 1rem; /* default rhythm */
|
|
216
|
+
--space-5: 1.5rem; /* section gap */
|
|
217
|
+
--space-6: 2rem; /* block gap */
|
|
218
|
+
--space-7: 3rem; /* major gap */
|
|
219
|
+
--space-8: 4rem; /* page section */
|
|
220
|
+
--space-9: 6rem; /* hero rhythm */
|
|
221
|
+
|
|
222
|
+
|
|
223
|
+
|
|
224
|
+
|
|
225
|
+
|
|
226
|
+
/* Radius alias — mirrors --r-* with standard names so
|
|
227
|
+
`m.radius(size)` in the library finds --radius-<size>. */
|
|
228
|
+
--radius-sm: var(--r-sm);
|
|
229
|
+
--radius-md: var(--r-md);
|
|
230
|
+
--radius-lg: var(--r-lg);
|
|
231
|
+
--radius-xl: 0.75rem;
|
|
232
|
+
--radius-full: 9999px;
|
|
233
|
+
|
|
234
|
+
/* Shadow — higher-elevation slots (AppKit floating surfaces) */
|
|
235
|
+
--shadow-xl: 0 20px 50px rgba(0, 0, 0, 0.14), 0 4px 10px rgba(0, 0, 0, 0.05);
|
|
236
|
+
--shadow-2xl: 0 28px 70px rgba(0, 0, 0, 0.20), 0 6px 14px rgba(0, 0, 0, 0.06);
|
|
237
|
+
|
|
238
|
+
/* Typography — base body font + key scale slots (SF Pro stack) */
|
|
239
|
+
--font-primary: var(--font-sans);
|
|
240
|
+
--font-size-base: 1rem;
|
|
241
|
+
--line-height-normal: 1.5;
|
|
242
|
+
--font-weight-medium: 500;
|
|
243
|
+
|
|
244
|
+
/* Z-index layers */
|
|
245
|
+
--z-sticky: 1020;
|
|
246
|
+
--z-dropdown: 1030;
|
|
247
|
+
--z-backdrop: 1040;
|
|
248
|
+
--z-modal: 1050;
|
|
249
|
+
--z-popover: 1060;
|
|
250
|
+
--z-tooltip: 1070;
|
|
251
|
+
|
|
252
|
+
/* ----------------------------------------------------------
|
|
253
|
+
OPTIONAL COMPONENT OVERRIDES (Feature 1.3)
|
|
254
|
+
-----------------------------------------------------------
|
|
255
|
+
Cupertino expresses AppKit UI: softly rounded controls,
|
|
256
|
+
diffuse card lift, larger panel radii. Overrides are
|
|
257
|
+
intentionally sparse — pick the ones that carry the
|
|
258
|
+
identity of the OS, leave the rest on library defaults.
|
|
259
|
+
---------------------------------------------------------- */
|
|
260
|
+
--btn-radius: var(--r-md); /* 10px — AppKit control */
|
|
261
|
+
--card-radius: var(--r-lg); /* 14px — panel corner */
|
|
262
|
+
--card-shadow: var(--shadow-sm); /* diffuse, lifted */
|
|
263
|
+
--input-radius: var(--r-sm); /* 8px — text field */
|
|
264
|
+
--modal-radius: var(--r-lg); /* matches panel */
|
|
265
|
+
--tooltip-radius: var(--r-sm); /* bezel tooltip */
|
|
266
|
+
}
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
// ============================================================================
|
|
2
|
+
// THEME — Cupertino
|
|
3
|
+
// ============================================================================
|
|
4
|
+
// macOS AppKit design language: SF system stack, soft AppKit radii (8/10/14),
|
|
5
|
+
// vibrancy blurs, lifted (not glowing) shadows.
|
|
6
|
+
// Light: AppKit panels on warm off-white. Dark: macOS Dark Mode warm ink-black.
|
|
7
|
+
//
|
|
8
|
+
// Selector: :root, :root[data-theme="cupertino"]
|
|
9
|
+
// Replaces: [data-theme="cupertino-light"] + [data-theme="cupertino-dark"]
|
|
10
|
+
// ============================================================================
|
|
11
|
+
@use '../mixins' as m;
|
|
12
|
+
|
|
13
|
+
@import 'https://fonts.googleapis.com/css2?family=Caveat:wght@400;500;600;700&display=swap';
|
|
14
|
+
|
|
15
|
+
@include m.theme('cupertino') {
|
|
16
|
+
/* Surfaces — AppKit panels */
|
|
17
|
+
--paper: light-dark(#F5F5F7, #1E1E1E);
|
|
18
|
+
--paper-raised: light-dark(#FFF, #2A2A2A);
|
|
19
|
+
--paper-sunk: light-dark(#E9E9EC, #141414);
|
|
20
|
+
--paper-glass: light-dark(rgba(255, 255, 255, 0.72), rgba(42, 42, 42, 0.72));
|
|
21
|
+
|
|
22
|
+
/* Ink — warm black / warm white, never pure */
|
|
23
|
+
--ink: light-dark(#1D1D1F, #F5F5F7);
|
|
24
|
+
--ink-soft: light-dark(#3A3A3C, #C7C7CC);
|
|
25
|
+
--ink-faint: light-dark(#66666B, #98989D);
|
|
26
|
+
--graphite: light-dark(#2C2C2E, #AEAEB2);
|
|
27
|
+
--muted: light-dark(#6E6E73, #6E6E73);
|
|
28
|
+
|
|
29
|
+
/* Hairlines — solid in light, translucent white in dark */
|
|
30
|
+
--guide: light-dark(#D2D2D7, rgba(255, 255, 255, 0.16));
|
|
31
|
+
--guide-soft: light-dark(#E5E5EA, rgba(255, 255, 255, 0.08));
|
|
32
|
+
--hair: light-dark(#D2D2D7, rgba(255, 255, 255, 0.12));
|
|
33
|
+
--hair-soft: light-dark(#E5E5EA, rgba(255, 255, 255, 0.06));
|
|
34
|
+
|
|
35
|
+
/* Primary accent — Apple system blue (dark variant brighter) */
|
|
36
|
+
--ai: light-dark(#005EBB, #0A84FF);
|
|
37
|
+
--ai-ink: light-dark(#0058B0, #409CFF);
|
|
38
|
+
--ai-wash: light-dark(#E5F0FB, rgba(10, 132, 255, 0.16));
|
|
39
|
+
|
|
40
|
+
/* Seal — Apple system red */
|
|
41
|
+
--shu: light-dark(#FF3B30, #FF453A);
|
|
42
|
+
--shu-wash: light-dark(#FFEAE8, rgba(255, 69, 58, 0.16));
|
|
43
|
+
|
|
44
|
+
/* Accent — Apple system orange */
|
|
45
|
+
--ochre: light-dark(#FF9F0A, #FF9F0A);
|
|
46
|
+
--ochre-wash: light-dark(#FFF4E0, rgba(255, 159, 10, 0.16));
|
|
47
|
+
|
|
48
|
+
/* Code surface — Xcode dark in both modes (intentional editorial) */
|
|
49
|
+
--code-bg: light-dark(#1C1C1E, #0F0F0F);
|
|
50
|
+
--code-ink: light-dark(#F2F2F7, #F2F2F7);
|
|
51
|
+
--code-muted: #8E8E93;
|
|
52
|
+
--code-accent: #FF9F0A;
|
|
53
|
+
--code-green: #30D158;
|
|
54
|
+
--code-blue: #64D2FF;
|
|
55
|
+
|
|
56
|
+
/* Typography — SF system stack, identical */
|
|
57
|
+
--font-display: -apple-system, BlinkMacSystemFont, 'SF Pro Display', 'Inter', 'Segoe UI', Helvetica, Arial, sans-serif;
|
|
58
|
+
--font-script: 'Caveat', 'Shadows Into Light', cursive;
|
|
59
|
+
--font-serif: ui-serif, 'New York', 'Iowan Old Style', 'Palatino', Georgia, serif;
|
|
60
|
+
--font-sans: -apple-system, BlinkMacSystemFont, 'SF Pro Text', 'Inter', 'Segoe UI', Helvetica, Arial, sans-serif;
|
|
61
|
+
--font-mono: 'SF Mono', ui-monospace, 'JetBrains Mono', 'Menlo', Consolas, monospace;
|
|
62
|
+
|
|
63
|
+
/* Radius — AppKit corners, identical */
|
|
64
|
+
--r-sm: 8px;
|
|
65
|
+
--r-md: 10px;
|
|
66
|
+
--r-lg: 14px;
|
|
67
|
+
|
|
68
|
+
/* Shadows — small, diffuse, lifted, deeper on dark */
|
|
69
|
+
--shadow-sm: 0 1px 2px light-dark(rgba(0, 0, 0, 0.04), rgba(0, 0, 0, 0.30)),
|
|
70
|
+
0 0 0 0.5px light-dark(rgba(0, 0, 0, 0.04), rgba(0, 0, 0, 0.30));
|
|
71
|
+
--shadow-md: 0 4px 14px light-dark(rgba(0, 0, 0, 0.06), rgba(0, 0, 0, 0.40)),
|
|
72
|
+
0 1px 3px light-dark(rgba(0, 0, 0, 0.04), rgba(0, 0, 0, 0.30));
|
|
73
|
+
--shadow-lg: 0 12px 40px light-dark(rgba(0, 0, 0, 0.10), rgba(0, 0, 0, 0.50)),
|
|
74
|
+
0 2px 6px light-dark(rgba(0, 0, 0, 0.04), rgba(0, 0, 0, 0.30));
|
|
75
|
+
--shadow-xl: 0 20px 50px light-dark(rgba(0, 0, 0, 0.14), rgba(0, 0, 0, 0.60)),
|
|
76
|
+
0 4px 10px light-dark(rgba(0, 0, 0, 0.05), rgba(0, 0, 0, 0.32));
|
|
77
|
+
--shadow-2xl: 0 28px 70px light-dark(rgba(0, 0, 0, 0.20), rgba(0, 0, 0, 0.72)),
|
|
78
|
+
0 6px 14px light-dark(rgba(0, 0, 0, 0.06), rgba(0, 0, 0, 0.36));
|
|
79
|
+
|
|
80
|
+
/* Blur — vibrancy signature, identical */
|
|
81
|
+
--blur-sm: blur(20px) saturate(180%);
|
|
82
|
+
--blur-md: blur(30px) saturate(180%);
|
|
83
|
+
--blur-lg: blur(40px) saturate(180%);
|
|
84
|
+
|
|
85
|
+
/* Glow — Cupertino doesn't glow, it lifts */
|
|
86
|
+
--glow-sm: 0 0 0 transparent;
|
|
87
|
+
--glow-md: 0 0 0 transparent;
|
|
88
|
+
--glow-lg: 0 0 0 transparent;
|
|
89
|
+
|
|
90
|
+
/* Motion — Apple-snappy, identical */
|
|
91
|
+
--duration-fast: 160ms;
|
|
92
|
+
--duration-normal: 220ms;
|
|
93
|
+
--duration-slow: 320ms;
|
|
94
|
+
--ease: cubic-bezier(0.25, 0.1, 0.25, 1);
|
|
95
|
+
|
|
96
|
+
/* Semantic aliases */
|
|
97
|
+
--background-default: var(--paper);
|
|
98
|
+
--background-subtle: var(--paper-sunk);
|
|
99
|
+
--background-navbar: var(--paper-raised);
|
|
100
|
+
--surface-default: var(--paper);
|
|
101
|
+
--surface-raised: var(--paper-raised);
|
|
102
|
+
--surface-sunk: var(--paper-sunk);
|
|
103
|
+
--surface-muted: var(--paper-sunk);
|
|
104
|
+
--surface-subtle: var(--paper-raised);
|
|
105
|
+
--surface-emphasis: var(--ink);
|
|
106
|
+
--surface-glass: var(--paper-glass);
|
|
107
|
+
|
|
108
|
+
--text-primary: var(--ink);
|
|
109
|
+
--text-secondary: var(--ink-soft);
|
|
110
|
+
--text-muted: var(--ink-faint);
|
|
111
|
+
--text-tertiary: var(--muted);
|
|
112
|
+
--text-inverse: var(--paper);
|
|
113
|
+
--text-link: var(--ai);
|
|
114
|
+
--text-link-hover: var(--ai-ink);
|
|
115
|
+
|
|
116
|
+
--border-default: var(--hair);
|
|
117
|
+
--border-subtle: var(--hair-soft);
|
|
118
|
+
--border-emphasis: var(--ink);
|
|
119
|
+
--border-focus: var(--ai);
|
|
120
|
+
|
|
121
|
+
--interactive-hover: light-dark(rgba(0, 0, 0, 0.04), rgba(255, 255, 255, 0.06));
|
|
122
|
+
--interactive-active: light-dark(rgba(0, 0, 0, 0.08), rgba(255, 255, 255, 0.10));
|
|
123
|
+
|
|
124
|
+
--brand-primary: var(--ai);
|
|
125
|
+
--brand-primary-hover: var(--ai-ink);
|
|
126
|
+
|
|
127
|
+
--action-primary-default: var(--ai);
|
|
128
|
+
--action-primary-hover: var(--ai-ink);
|
|
129
|
+
--action-primary-active: var(--ai-ink);
|
|
130
|
+
--action-primary-wash: var(--ai-wash);
|
|
131
|
+
--action-secondary-default: var(--shu);
|
|
132
|
+
--action-secondary-hover: var(--shu);
|
|
133
|
+
--action-secondary-active: var(--shu);
|
|
134
|
+
--action-secondary-wash: var(--shu-wash);
|
|
135
|
+
--action-tertiary-default: var(--ochre);
|
|
136
|
+
--action-tertiary-hover: var(--ochre);
|
|
137
|
+
--action-tertiary-active: var(--ochre);
|
|
138
|
+
--action-tertiary-wash: var(--ochre-wash);
|
|
139
|
+
|
|
140
|
+
--feedback-info: var(--ai);
|
|
141
|
+
--feedback-success: var(--code-green);
|
|
142
|
+
--feedback-warning: var(--ochre);
|
|
143
|
+
--feedback-error: var(--shu);
|
|
144
|
+
|
|
145
|
+
--info-default: var(--ai);
|
|
146
|
+
--info-subtle: var(--ai-wash);
|
|
147
|
+
--info-text: var(--ai-ink);
|
|
148
|
+
|
|
149
|
+
--success-default: light-dark(var(--code-green), #30D158);
|
|
150
|
+
--success-subtle: light-dark(rgba(48, 209, 88, 0.12), rgba(48, 209, 88, 0.16));
|
|
151
|
+
--success-text: light-dark(#0F6E22, #5FE37F);
|
|
152
|
+
|
|
153
|
+
--warning-default: var(--ochre);
|
|
154
|
+
--warning-subtle: var(--ochre-wash);
|
|
155
|
+
--warning-text: light-dark(#985000, #FFB340);
|
|
156
|
+
|
|
157
|
+
--error-default: var(--shu);
|
|
158
|
+
--error-subtle: light-dark(rgba(255, 59, 48, 0.12), rgba(255, 69, 58, 0.16));
|
|
159
|
+
--error-text: light-dark(#A8281F, #FF6961);
|
|
160
|
+
|
|
161
|
+
/* Library scales — identical */
|
|
162
|
+
|
|
163
|
+
/* Spacing rhythm — THE knob for how dense or airy this theme feels.
|
|
164
|
+
The numbered scale is the source of truth: every component reads
|
|
165
|
+
var(--space-N), and the t-shirt aliases (--space-md, --space-lg …)
|
|
166
|
+
are emitted by the library as references to these, so they follow
|
|
167
|
+
automatically. Change a value here and the whole page re-proportions.
|
|
168
|
+
Halve them for a compact UI; raise 4/5/6 for an airy editorial feel. */
|
|
169
|
+
--space-0: 0; /* flush */
|
|
170
|
+
--space-1: 0.5rem; /* tight inner gap */
|
|
171
|
+
--space-2: 0.75rem; /* control padding */
|
|
172
|
+
--space-3: 0.875rem; /* (no t-shirt) */
|
|
173
|
+
--space-4: 1rem; /* default rhythm */
|
|
174
|
+
--space-5: 1.5rem; /* section gap */
|
|
175
|
+
--space-6: 2rem; /* block gap */
|
|
176
|
+
--space-7: 3rem; /* major gap */
|
|
177
|
+
--space-8: 4rem; /* page section */
|
|
178
|
+
--space-9: 6rem; /* hero rhythm */
|
|
179
|
+
|
|
180
|
+
--radius-sm: var(--r-sm); --radius-md: var(--r-md); --radius-lg: var(--r-lg);
|
|
181
|
+
--radius-xl: 0.75rem; --radius-full: 9999px;
|
|
182
|
+
--font-primary: var(--font-sans);
|
|
183
|
+
--font-size-base: 1rem; --line-height-normal: 1.5; --font-weight-medium: 500;
|
|
184
|
+
--z-sticky: 1020; --z-dropdown: 1030; --z-backdrop: 1040;
|
|
185
|
+
--z-modal: 1050; --z-popover: 1060; --z-tooltip: 1070;
|
|
186
|
+
|
|
187
|
+
/* Component overrides — AppKit identity */
|
|
188
|
+
--btn-radius: var(--r-md);
|
|
189
|
+
--card-radius: var(--r-lg);
|
|
190
|
+
--card-shadow: var(--shadow-sm);
|
|
191
|
+
--input-radius: var(--r-sm);
|
|
192
|
+
--modal-radius: var(--r-lg);
|
|
193
|
+
--tooltip-radius: var(--r-sm);
|
|
194
|
+
}
|
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
/* ============================================================
|
|
2
|
+
THEME — Liquid Glass Dark
|
|
3
|
+
-----------------------------------------------------------
|
|
4
|
+
Dark companion to Liquid Glass (visionOS / iOS glassmorphism
|
|
5
|
+
light). Same glassmorphism design language: SF system stack,
|
|
6
|
+
soft large radii, dual-inset rim-light glow, --blur-* is the
|
|
7
|
+
star. Only the COLOR palette inverts.
|
|
8
|
+
|
|
9
|
+
Mood: visionOS Dark — translucent glassy surfaces over a
|
|
10
|
+
deep blue-black void. The --paper-glass token is the
|
|
11
|
+
showpiece (rgba over very dark). --blur-* values matter
|
|
12
|
+
here: 12-20px frost-saturate, where most other themes
|
|
13
|
+
default to 'none'. Vibrant accents (#6FA9FF / #FF6B8A /
|
|
14
|
+
#FFC56B) glow through the glass.
|
|
15
|
+
|
|
16
|
+
Opt-in via `<html data-theme="glass-dark">`. Pair with
|
|
17
|
+
glass/theme.css to ship a project with a default light
|
|
18
|
+
visionOS mode and an opt-in dark visionOS mode.
|
|
19
|
+
============================================================ */
|
|
20
|
+
|
|
21
|
+
@use '../mixins' as m;
|
|
22
|
+
|
|
23
|
+
@import 'https://fonts.googleapis.com/css2?family=Caveat:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;700&display=swap';
|
|
24
|
+
|
|
25
|
+
@include m.theme('glass-dark', dark) {
|
|
26
|
+
/* Surfaces — frosted translucent over deep blue-black */
|
|
27
|
+
--paper: #0A0F1A;
|
|
28
|
+
--paper-raised: #141E32;
|
|
29
|
+
--paper-sunk: #050810;
|
|
30
|
+
--paper-glass: rgba(20, 30, 50, 0.60);
|
|
31
|
+
|
|
32
|
+
/* Ink — cool near-white, glassy */
|
|
33
|
+
--ink: #F0F4FF;
|
|
34
|
+
--ink-soft: #C8CFE0;
|
|
35
|
+
--ink-faint: #8A92A8;
|
|
36
|
+
--graphite: #DCE2F0;
|
|
37
|
+
--muted: #5A627A;
|
|
38
|
+
|
|
39
|
+
/* Construction lines — translucent white hairlines */
|
|
40
|
+
--guide: rgba(240, 244, 255, 0.16);
|
|
41
|
+
--guide-soft: rgba(240, 244, 255, 0.08);
|
|
42
|
+
--hair: rgba(240, 244, 255, 0.12);
|
|
43
|
+
--hair-soft: rgba(240, 244, 255, 0.06);
|
|
44
|
+
|
|
45
|
+
/* Primary accent — vibrant iOS dark indigo/blue */
|
|
46
|
+
--ai: #6FA9FF;
|
|
47
|
+
--ai-ink: #93C2FF;
|
|
48
|
+
--ai-wash: rgba(111, 169, 255, 0.16);
|
|
49
|
+
|
|
50
|
+
/* Seal — vibrant iOS dark pink */
|
|
51
|
+
--shu: #FF6B8A;
|
|
52
|
+
--shu-wash: rgba(255, 107, 138, 0.16);
|
|
53
|
+
|
|
54
|
+
/* Draft / marginalia — vibrant iOS dark orange */
|
|
55
|
+
--ochre: #FFC56B;
|
|
56
|
+
--ochre-wash: rgba(255, 197, 107, 0.16);
|
|
57
|
+
|
|
58
|
+
/* Code surface — translucent over deep paper */
|
|
59
|
+
--code-bg: rgba(5, 8, 16, 0.82);
|
|
60
|
+
--code-ink: #F0F4FF;
|
|
61
|
+
--code-muted: #8A92A8;
|
|
62
|
+
--code-accent: #FFD60A;
|
|
63
|
+
--code-green: #5FE37F;
|
|
64
|
+
--code-blue: #93C2FF;
|
|
65
|
+
|
|
66
|
+
/* Typography — match Glass (SF system stack) */
|
|
67
|
+
--font-display: -apple-system, BlinkMacSystemFont, 'SF Pro Display', 'Inter', system-ui, sans-serif;
|
|
68
|
+
--font-script: 'Caveat', 'Shadows Into Light', cursive;
|
|
69
|
+
--font-serif: -apple-system, BlinkMacSystemFont, 'SF Pro Text', 'Inter', Georgia, serif;
|
|
70
|
+
--font-sans: -apple-system, BlinkMacSystemFont, 'SF Pro Display', 'SF Pro Text', 'Inter', system-ui, sans-serif;
|
|
71
|
+
--font-mono: 'SF Mono', ui-monospace, 'JetBrains Mono', Menlo, Consolas, monospace;
|
|
72
|
+
|
|
73
|
+
/* Radius — match Glass (soft and large, iOS-style) */
|
|
74
|
+
--r-sm: 10px;
|
|
75
|
+
--r-md: 18px;
|
|
76
|
+
--r-lg: 24px;
|
|
77
|
+
|
|
78
|
+
/* Shadows — floaty with deep undertone (dark needs heavier drops) */
|
|
79
|
+
--shadow-sm: 0 2px 10px rgba(0, 0, 0, 0.30);
|
|
80
|
+
--shadow-md: 0 8px 32px rgba(0, 0, 0, 0.42);
|
|
81
|
+
--shadow-lg: 0 24px 60px rgba(0, 0, 0, 0.55);
|
|
82
|
+
--shadow-xl: 0 40px 80px rgba(0, 0, 0, 0.65);
|
|
83
|
+
--shadow-2xl: 0 56px 112px rgba(0, 0, 0, 0.75);
|
|
84
|
+
|
|
85
|
+
/* Blur — THE star token; tuned for dark-glass depth */
|
|
86
|
+
--blur-sm: blur(12px) saturate(160%);
|
|
87
|
+
--blur-md: blur(18px) saturate(180%);
|
|
88
|
+
--blur-lg: blur(20px) saturate(200%);
|
|
89
|
+
|
|
90
|
+
/* Glow — dual-inset rim highlight (visionOS dark catches less but still rims) */
|
|
91
|
+
--glow-sm: inset 0 1px 0 rgba(255, 255, 255, 0.16);
|
|
92
|
+
--glow-md:
|
|
93
|
+
inset 0 1px 0 rgba(255, 255, 255, 0.22),
|
|
94
|
+
inset 0 -1px 0 rgba(255, 255, 255, 0.06),
|
|
95
|
+
inset 1px 0 0 rgba(255, 255, 255, 0.10),
|
|
96
|
+
inset -1px 0 0 rgba(255, 255, 255, 0.06);
|
|
97
|
+
--glow-lg:
|
|
98
|
+
inset 0 2px 0 rgba(255, 255, 255, 0.28),
|
|
99
|
+
inset 0 -2px 0 rgba(255, 255, 255, 0.08),
|
|
100
|
+
inset 2px 0 0 rgba(255, 255, 255, 0.14),
|
|
101
|
+
inset -2px 0 0 rgba(255, 255, 255, 0.08),
|
|
102
|
+
inset 0 0 40px rgba(111, 169, 255, 0.08);
|
|
103
|
+
|
|
104
|
+
/* Motion — match Glass */
|
|
105
|
+
--duration-fast: 180ms;
|
|
106
|
+
--duration-normal: 240ms;
|
|
107
|
+
--duration-slow: 380ms;
|
|
108
|
+
--ease: cubic-bezier(0.33, 0.66, 0.33, 1);
|
|
109
|
+
|
|
110
|
+
/* ----------------------------------------------------------
|
|
111
|
+
SEMANTIC ALIASES
|
|
112
|
+
---------------------------------------------------------- */
|
|
113
|
+
|
|
114
|
+
/* Backgrounds */
|
|
115
|
+
--background-default: var(--paper);
|
|
116
|
+
--background-subtle: var(--paper-sunk);
|
|
117
|
+
--background-navbar: var(--paper-raised);
|
|
118
|
+
|
|
119
|
+
/* Surfaces */
|
|
120
|
+
--surface-default: var(--paper);
|
|
121
|
+
--surface-raised: var(--paper-raised);
|
|
122
|
+
--surface-sunk: var(--paper-sunk);
|
|
123
|
+
--surface-muted: var(--paper-sunk);
|
|
124
|
+
--surface-subtle: var(--paper-raised);
|
|
125
|
+
--surface-emphasis: var(--ink);
|
|
126
|
+
--surface-glass: var(--paper-glass);
|
|
127
|
+
|
|
128
|
+
/* Text */
|
|
129
|
+
--text-primary: var(--ink);
|
|
130
|
+
--text-secondary: var(--ink-soft);
|
|
131
|
+
--text-muted: var(--ink-faint);
|
|
132
|
+
--text-tertiary: var(--muted);
|
|
133
|
+
--text-inverse: var(--paper);
|
|
134
|
+
--text-link: var(--ai);
|
|
135
|
+
--text-link-hover: var(--ai-ink);
|
|
136
|
+
|
|
137
|
+
/* Borders */
|
|
138
|
+
--border-default: var(--hair);
|
|
139
|
+
--border-subtle: var(--hair-soft);
|
|
140
|
+
--border-emphasis: var(--ink);
|
|
141
|
+
--border-focus: var(--ai);
|
|
142
|
+
|
|
143
|
+
/* Interactive — kept very subtle so glass translucency reads through */
|
|
144
|
+
--interactive-hover: rgba(240, 244, 255, 0.05);
|
|
145
|
+
--interactive-active: rgba(240, 244, 255, 0.10);
|
|
146
|
+
|
|
147
|
+
/* Brand */
|
|
148
|
+
--brand-primary: var(--ai);
|
|
149
|
+
--brand-primary-hover: var(--ai-ink);
|
|
150
|
+
|
|
151
|
+
/* Action triplets */
|
|
152
|
+
--action-primary-default: var(--ai);
|
|
153
|
+
--action-primary-hover: var(--ai-ink);
|
|
154
|
+
--action-primary-active: var(--ai-ink);
|
|
155
|
+
--action-primary-wash: var(--ai-wash);
|
|
156
|
+
--action-secondary-default: var(--shu);
|
|
157
|
+
--action-secondary-hover: var(--shu);
|
|
158
|
+
--action-secondary-active: var(--shu);
|
|
159
|
+
--action-secondary-wash: var(--shu-wash);
|
|
160
|
+
--action-tertiary-default: var(--ochre);
|
|
161
|
+
--action-tertiary-hover: var(--ochre);
|
|
162
|
+
--action-tertiary-active: var(--ochre);
|
|
163
|
+
--action-tertiary-wash: var(--ochre-wash);
|
|
164
|
+
|
|
165
|
+
/* Feedback */
|
|
166
|
+
--feedback-info: var(--ai);
|
|
167
|
+
--feedback-success: var(--code-green);
|
|
168
|
+
--feedback-warning: var(--ochre);
|
|
169
|
+
--feedback-error: var(--shu);
|
|
170
|
+
|
|
171
|
+
/* Status — info */
|
|
172
|
+
--info-default: var(--ai);
|
|
173
|
+
--info-subtle: rgba(111, 169, 255, 0.16);
|
|
174
|
+
--info-text: var(--ai-ink);
|
|
175
|
+
|
|
176
|
+
/* Status — success (iOS dark green) */
|
|
177
|
+
--success-default: #30D158;
|
|
178
|
+
--success-subtle: rgba(48, 209, 88, 0.16);
|
|
179
|
+
--success-text: #5FE37F;
|
|
180
|
+
|
|
181
|
+
/* Status — warning */
|
|
182
|
+
--warning-default: var(--ochre);
|
|
183
|
+
--warning-subtle: rgba(255, 197, 107, 0.16);
|
|
184
|
+
--warning-text: #FFD79A;
|
|
185
|
+
|
|
186
|
+
/* Status — error */
|
|
187
|
+
--error-default: var(--shu);
|
|
188
|
+
--error-subtle: rgba(255, 107, 138, 0.16);
|
|
189
|
+
--error-text: #FF93AB;
|
|
190
|
+
|
|
191
|
+
/* ----------------------------------------------------------
|
|
192
|
+
LIBRARY SCALES
|
|
193
|
+
---------------------------------------------------------- */
|
|
194
|
+
|
|
195
|
+
/* Space scale */
|
|
196
|
+
|
|
197
|
+
/* Spacing rhythm — THE knob for how dense or airy this theme feels.
|
|
198
|
+
The numbered scale is the source of truth: every component reads
|
|
199
|
+
var(--space-N), and the t-shirt aliases (--space-md, --space-lg …)
|
|
200
|
+
are emitted by the library as references to these, so they follow
|
|
201
|
+
automatically. Change a value here and the whole page re-proportions.
|
|
202
|
+
Halve them for a compact UI; raise 4/5/6 for an airy editorial feel. */
|
|
203
|
+
--space-0: 0; /* flush */
|
|
204
|
+
--space-1: 0.5rem; /* tight inner gap */
|
|
205
|
+
--space-2: 0.75rem; /* control padding */
|
|
206
|
+
--space-3: 0.875rem; /* (no t-shirt) */
|
|
207
|
+
--space-4: 1rem; /* default rhythm */
|
|
208
|
+
--space-5: 1.5rem; /* section gap */
|
|
209
|
+
--space-6: 2rem; /* block gap */
|
|
210
|
+
--space-7: 3rem; /* major gap */
|
|
211
|
+
--space-8: 4rem; /* page section */
|
|
212
|
+
--space-9: 6rem; /* hero rhythm */
|
|
213
|
+
|
|
214
|
+
|
|
215
|
+
|
|
216
|
+
|
|
217
|
+
|
|
218
|
+
/* Radius alias */
|
|
219
|
+
--radius-sm: var(--r-sm);
|
|
220
|
+
--radius-md: var(--r-md);
|
|
221
|
+
--radius-lg: var(--r-lg);
|
|
222
|
+
--radius-xl: 0.75rem;
|
|
223
|
+
--radius-full: 9999px;
|
|
224
|
+
|
|
225
|
+
/* Typography */
|
|
226
|
+
--font-primary: var(--font-sans);
|
|
227
|
+
--font-size-base: 1rem;
|
|
228
|
+
--line-height-normal: 1.5;
|
|
229
|
+
--font-weight-medium: 500;
|
|
230
|
+
|
|
231
|
+
/* Z-index */
|
|
232
|
+
--z-sticky: 1020;
|
|
233
|
+
--z-dropdown: 1030;
|
|
234
|
+
--z-backdrop: 1040;
|
|
235
|
+
--z-modal: 1050;
|
|
236
|
+
--z-popover: 1060;
|
|
237
|
+
--z-tooltip: 1070;
|
|
238
|
+
}
|