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,165 @@
|
|
|
1
|
+
@charset "UTF-8";
|
|
2
|
+
@import 'https://fonts.googleapis.com/css2?family=Caveat:wght@400;500;600;700&display=swap';
|
|
3
|
+
:root, :root[data-theme=cupertino] {
|
|
4
|
+
color-scheme: light dark;
|
|
5
|
+
/* Surfaces — AppKit panels */
|
|
6
|
+
--paper: light-dark(#F5F5F7, #1E1E1E);
|
|
7
|
+
--paper-raised: light-dark(#FFF, #2A2A2A);
|
|
8
|
+
--paper-sunk: light-dark(#E9E9EC, #141414);
|
|
9
|
+
--paper-glass: light-dark(rgba(255, 255, 255, 0.72), rgba(42, 42, 42, 0.72));
|
|
10
|
+
/* Ink — warm black / warm white, never pure */
|
|
11
|
+
--ink: light-dark(#1D1D1F, #F5F5F7);
|
|
12
|
+
--ink-soft: light-dark(#3A3A3C, #C7C7CC);
|
|
13
|
+
--ink-faint: light-dark(#66666B, #98989D);
|
|
14
|
+
--graphite: light-dark(#2C2C2E, #AEAEB2);
|
|
15
|
+
--muted: light-dark(#6E6E73, #6E6E73);
|
|
16
|
+
/* Hairlines — solid in light, translucent white in dark */
|
|
17
|
+
--guide: light-dark(#D2D2D7, rgba(255, 255, 255, 0.16));
|
|
18
|
+
--guide-soft: light-dark(#E5E5EA, rgba(255, 255, 255, 0.08));
|
|
19
|
+
--hair: light-dark(#D2D2D7, rgba(255, 255, 255, 0.12));
|
|
20
|
+
--hair-soft: light-dark(#E5E5EA, rgba(255, 255, 255, 0.06));
|
|
21
|
+
/* Primary accent — Apple system blue (dark variant brighter) */
|
|
22
|
+
--ai: light-dark(#005EBB, #0A84FF);
|
|
23
|
+
--ai-ink: light-dark(#0058B0, #409CFF);
|
|
24
|
+
--ai-wash: light-dark(#E5F0FB, rgba(10, 132, 255, 0.16));
|
|
25
|
+
/* Seal — Apple system red */
|
|
26
|
+
--shu: light-dark(#FF3B30, #FF453A);
|
|
27
|
+
--shu-wash: light-dark(#FFEAE8, rgba(255, 69, 58, 0.16));
|
|
28
|
+
/* Accent — Apple system orange */
|
|
29
|
+
--ochre: light-dark(#FF9F0A, #FF9F0A);
|
|
30
|
+
--ochre-wash: light-dark(#FFF4E0, rgba(255, 159, 10, 0.16));
|
|
31
|
+
/* Code surface — Xcode dark in both modes (intentional editorial) */
|
|
32
|
+
--code-bg: light-dark(#1C1C1E, #0F0F0F);
|
|
33
|
+
--code-ink: light-dark(#F2F2F7, #F2F2F7);
|
|
34
|
+
--code-muted: #8E8E93;
|
|
35
|
+
--code-accent: #FF9F0A;
|
|
36
|
+
--code-green: #30D158;
|
|
37
|
+
--code-blue: #64D2FF;
|
|
38
|
+
/* Typography — SF system stack, identical */
|
|
39
|
+
--font-display: -apple-system, BlinkMacSystemFont, 'SF Pro Display', 'Inter', 'Segoe UI', Helvetica, Arial, sans-serif;
|
|
40
|
+
--font-script: 'Caveat', 'Shadows Into Light', cursive;
|
|
41
|
+
--font-serif: ui-serif, 'New York', 'Iowan Old Style', 'Palatino', Georgia, serif;
|
|
42
|
+
--font-sans: -apple-system, BlinkMacSystemFont, 'SF Pro Text', 'Inter', 'Segoe UI', Helvetica, Arial, sans-serif;
|
|
43
|
+
--font-mono: 'SF Mono', ui-monospace, 'JetBrains Mono', 'Menlo', Consolas, monospace;
|
|
44
|
+
/* Radius — AppKit corners, identical */
|
|
45
|
+
--r-sm: 8px;
|
|
46
|
+
--r-md: 10px;
|
|
47
|
+
--r-lg: 14px;
|
|
48
|
+
/* Shadows — small, diffuse, lifted, deeper on dark */
|
|
49
|
+
--shadow-sm: 0 1px 2px light-dark(rgba(0, 0, 0, 0.04), rgba(0, 0, 0, 0.30)),
|
|
50
|
+
0 0 0 0.5px light-dark(rgba(0, 0, 0, 0.04), rgba(0, 0, 0, 0.30));
|
|
51
|
+
--shadow-md: 0 4px 14px light-dark(rgba(0, 0, 0, 0.06), rgba(0, 0, 0, 0.40)),
|
|
52
|
+
0 1px 3px light-dark(rgba(0, 0, 0, 0.04), rgba(0, 0, 0, 0.30));
|
|
53
|
+
--shadow-lg: 0 12px 40px light-dark(rgba(0, 0, 0, 0.10), rgba(0, 0, 0, 0.50)),
|
|
54
|
+
0 2px 6px light-dark(rgba(0, 0, 0, 0.04), rgba(0, 0, 0, 0.30));
|
|
55
|
+
--shadow-xl: 0 20px 50px light-dark(rgba(0, 0, 0, 0.14), rgba(0, 0, 0, 0.60)),
|
|
56
|
+
0 4px 10px light-dark(rgba(0, 0, 0, 0.05), rgba(0, 0, 0, 0.32));
|
|
57
|
+
--shadow-2xl: 0 28px 70px light-dark(rgba(0, 0, 0, 0.20), rgba(0, 0, 0, 0.72)),
|
|
58
|
+
0 6px 14px light-dark(rgba(0, 0, 0, 0.06), rgba(0, 0, 0, 0.36));
|
|
59
|
+
/* Blur — vibrancy signature, identical */
|
|
60
|
+
--blur-sm: blur(20px) saturate(180%);
|
|
61
|
+
--blur-md: blur(30px) saturate(180%);
|
|
62
|
+
--blur-lg: blur(40px) saturate(180%);
|
|
63
|
+
/* Glow — Cupertino doesn't glow, it lifts */
|
|
64
|
+
--glow-sm: 0 0 0 transparent;
|
|
65
|
+
--glow-md: 0 0 0 transparent;
|
|
66
|
+
--glow-lg: 0 0 0 transparent;
|
|
67
|
+
/* Motion — Apple-snappy, identical */
|
|
68
|
+
--duration-fast: 160ms;
|
|
69
|
+
--duration-normal: 220ms;
|
|
70
|
+
--duration-slow: 320ms;
|
|
71
|
+
--ease: cubic-bezier(0.25, 0.1, 0.25, 1);
|
|
72
|
+
/* Semantic aliases */
|
|
73
|
+
--background-default: var(--paper);
|
|
74
|
+
--background-subtle: var(--paper-sunk);
|
|
75
|
+
--background-navbar: var(--paper-raised);
|
|
76
|
+
--surface-default: var(--paper);
|
|
77
|
+
--surface-raised: var(--paper-raised);
|
|
78
|
+
--surface-sunk: var(--paper-sunk);
|
|
79
|
+
--surface-muted: var(--paper-sunk);
|
|
80
|
+
--surface-subtle: var(--paper-raised);
|
|
81
|
+
--surface-emphasis: var(--ink);
|
|
82
|
+
--surface-glass: var(--paper-glass);
|
|
83
|
+
--text-primary: var(--ink);
|
|
84
|
+
--text-secondary: var(--ink-soft);
|
|
85
|
+
--text-muted: var(--ink-faint);
|
|
86
|
+
--text-tertiary: var(--muted);
|
|
87
|
+
--text-inverse: var(--paper);
|
|
88
|
+
--text-link: var(--ai);
|
|
89
|
+
--text-link-hover: var(--ai-ink);
|
|
90
|
+
--border-default: var(--hair);
|
|
91
|
+
--border-subtle: var(--hair-soft);
|
|
92
|
+
--border-emphasis: var(--ink);
|
|
93
|
+
--border-focus: var(--ai);
|
|
94
|
+
--interactive-hover: light-dark(rgba(0, 0, 0, 0.04), rgba(255, 255, 255, 0.06));
|
|
95
|
+
--interactive-active: light-dark(rgba(0, 0, 0, 0.08), rgba(255, 255, 255, 0.10));
|
|
96
|
+
--brand-primary: var(--ai);
|
|
97
|
+
--brand-primary-hover: var(--ai-ink);
|
|
98
|
+
--action-primary-default: var(--ai);
|
|
99
|
+
--action-primary-hover: var(--ai-ink);
|
|
100
|
+
--action-primary-active: var(--ai-ink);
|
|
101
|
+
--action-primary-wash: var(--ai-wash);
|
|
102
|
+
--action-secondary-default: var(--shu);
|
|
103
|
+
--action-secondary-hover: var(--shu);
|
|
104
|
+
--action-secondary-active: var(--shu);
|
|
105
|
+
--action-secondary-wash: var(--shu-wash);
|
|
106
|
+
--action-tertiary-default: var(--ochre);
|
|
107
|
+
--action-tertiary-hover: var(--ochre);
|
|
108
|
+
--action-tertiary-active: var(--ochre);
|
|
109
|
+
--action-tertiary-wash: var(--ochre-wash);
|
|
110
|
+
--feedback-info: var(--ai);
|
|
111
|
+
--feedback-success: var(--code-green);
|
|
112
|
+
--feedback-warning: var(--ochre);
|
|
113
|
+
--feedback-error: var(--shu);
|
|
114
|
+
--info-default: var(--ai);
|
|
115
|
+
--info-subtle: var(--ai-wash);
|
|
116
|
+
--info-text: var(--ai-ink);
|
|
117
|
+
--success-default: light-dark(var(--code-green), #30D158);
|
|
118
|
+
--success-subtle: light-dark(rgba(48, 209, 88, 0.12), rgba(48, 209, 88, 0.16));
|
|
119
|
+
--success-text: light-dark(#0F6E22, #5FE37F);
|
|
120
|
+
--warning-default: var(--ochre);
|
|
121
|
+
--warning-subtle: var(--ochre-wash);
|
|
122
|
+
--warning-text: light-dark(#985000, #FFB340);
|
|
123
|
+
--error-default: var(--shu);
|
|
124
|
+
--error-subtle: light-dark(rgba(255, 59, 48, 0.12), rgba(255, 69, 58, 0.16));
|
|
125
|
+
--error-text: light-dark(#A8281F, #FF6961);
|
|
126
|
+
/* Library scales — identical */
|
|
127
|
+
/* Spacing rhythm — THE knob for how dense or airy this theme feels.
|
|
128
|
+
The numbered scale is the source of truth: every component reads
|
|
129
|
+
var(--space-N), and the t-shirt aliases (--space-md, --space-lg …)
|
|
130
|
+
are emitted by the library as references to these, so they follow
|
|
131
|
+
automatically. Change a value here and the whole page re-proportions.
|
|
132
|
+
Halve them for a compact UI; raise 4/5/6 for an airy editorial feel. */
|
|
133
|
+
--space-0: 0; /* flush */
|
|
134
|
+
--space-1: 0.5rem; /* tight inner gap */
|
|
135
|
+
--space-2: 0.75rem; /* control padding */
|
|
136
|
+
--space-3: 0.875rem; /* (no t-shirt) */
|
|
137
|
+
--space-4: 1rem; /* default rhythm */
|
|
138
|
+
--space-5: 1.5rem; /* section gap */
|
|
139
|
+
--space-6: 2rem; /* block gap */
|
|
140
|
+
--space-7: 3rem; /* major gap */
|
|
141
|
+
--space-8: 4rem; /* page section */
|
|
142
|
+
--space-9: 6rem; /* hero rhythm */
|
|
143
|
+
--radius-sm: var(--r-sm);
|
|
144
|
+
--radius-md: var(--r-md);
|
|
145
|
+
--radius-lg: var(--r-lg);
|
|
146
|
+
--radius-xl: 0.75rem;
|
|
147
|
+
--radius-full: 9999px;
|
|
148
|
+
--font-primary: var(--font-sans);
|
|
149
|
+
--font-size-base: 1rem;
|
|
150
|
+
--line-height-normal: 1.5;
|
|
151
|
+
--font-weight-medium: 500;
|
|
152
|
+
--z-sticky: 1020;
|
|
153
|
+
--z-dropdown: 1030;
|
|
154
|
+
--z-backdrop: 1040;
|
|
155
|
+
--z-modal: 1050;
|
|
156
|
+
--z-popover: 1060;
|
|
157
|
+
--z-tooltip: 1070;
|
|
158
|
+
/* Component overrides — AppKit identity */
|
|
159
|
+
--btn-radius: var(--r-md);
|
|
160
|
+
--card-radius: var(--r-lg);
|
|
161
|
+
--card-shadow: var(--shadow-sm);
|
|
162
|
+
--input-radius: var(--r-sm);
|
|
163
|
+
--modal-radius: var(--r-lg);
|
|
164
|
+
--tooltip-radius: var(--r-sm);
|
|
165
|
+
}
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
@charset "UTF-8";
|
|
2
|
+
/* ============================================================
|
|
3
|
+
THEME — Cupertino Dark
|
|
4
|
+
-----------------------------------------------------------
|
|
5
|
+
Dark companion to Cupertino (macOS native light). Same
|
|
6
|
+
AppKit design language: SF system stack, soft AppKit radii
|
|
7
|
+
(8/10/14), vibrancy blurs, lifted (not glowing) shadows.
|
|
8
|
+
Only the COLOR palette inverts.
|
|
9
|
+
|
|
10
|
+
Mood: macOS Dark Mode. SF-symbol-adjacent, system-blue
|
|
11
|
+
accent brightened for dark surfaces (Apple's #0A84FF dark
|
|
12
|
+
variant), warm ink-black panels (never purple, never pure
|
|
13
|
+
black). Trivial inversion — most macOS Dark conventions
|
|
14
|
+
are well-established.
|
|
15
|
+
|
|
16
|
+
Opt-in via `<html data-theme="cupertino-dark">`. Pair with
|
|
17
|
+
cupertino/theme.css to ship a project with a default light
|
|
18
|
+
AppKit mode and an opt-in dark AppKit mode.
|
|
19
|
+
============================================================ */
|
|
20
|
+
@import 'https://fonts.googleapis.com/css2?family=Caveat:wght@400;500;600;700&display=swap';
|
|
21
|
+
:root, :root[data-theme=cupertino-dark] {
|
|
22
|
+
color-scheme: dark;
|
|
23
|
+
/* Surfaces — AppKit dark panels */
|
|
24
|
+
--paper: #1E1E1E;
|
|
25
|
+
--paper-raised: #2A2A2A;
|
|
26
|
+
--paper-sunk: #141414;
|
|
27
|
+
--paper-glass: rgba(42, 42, 42, 0.72);
|
|
28
|
+
/* Ink — warm white, never pure */
|
|
29
|
+
--ink: #F5F5F7;
|
|
30
|
+
--ink-soft: #C7C7CC;
|
|
31
|
+
--ink-faint: #98989D;
|
|
32
|
+
--graphite: #AEAEB2;
|
|
33
|
+
--muted: #6E6E73;
|
|
34
|
+
/* Hairlines / guides — translucent white */
|
|
35
|
+
--guide: rgba(255, 255, 255, 0.16);
|
|
36
|
+
--guide-soft: rgba(255, 255, 255, 0.08);
|
|
37
|
+
--hair: rgba(255, 255, 255, 0.12);
|
|
38
|
+
--hair-soft: rgba(255, 255, 255, 0.06);
|
|
39
|
+
/* Primary accent — Apple system blue (dark variant) */
|
|
40
|
+
--ai: #0A84FF;
|
|
41
|
+
--ai-ink: #409CFF;
|
|
42
|
+
--ai-wash: rgba(10, 132, 255, 0.16);
|
|
43
|
+
/* Seal — Apple system red (dark variant) */
|
|
44
|
+
--shu: #FF453A;
|
|
45
|
+
--shu-wash: rgba(255, 69, 58, 0.16);
|
|
46
|
+
/* Accent — Apple system orange (dark variant) */
|
|
47
|
+
--ochre: #FF9F0A;
|
|
48
|
+
--ochre-wash: rgba(255, 159, 10, 0.16);
|
|
49
|
+
/* Code surface — AppKit dark code panel */
|
|
50
|
+
--code-bg: #0F0F0F;
|
|
51
|
+
--code-ink: #F2F2F7;
|
|
52
|
+
--code-muted: #8E8E93;
|
|
53
|
+
--code-accent: #FF9F0A;
|
|
54
|
+
--code-green: #30D158;
|
|
55
|
+
--code-blue: #64D2FF;
|
|
56
|
+
/* Typography — match Cupertino (SF system stack) */
|
|
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
|
+
/* Radius — match Cupertino (AppKit corners) */
|
|
63
|
+
--r-sm: 8px;
|
|
64
|
+
--r-md: 10px;
|
|
65
|
+
--r-lg: 14px;
|
|
66
|
+
/* Shadows — small, diffuse, lifted (deeper for dark) */
|
|
67
|
+
--shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.30), 0 0 0 0.5px rgba(0, 0, 0, 0.30);
|
|
68
|
+
--shadow-md: 0 4px 14px rgba(0, 0, 0, 0.40), 0 1px 3px rgba(0, 0, 0, 0.30);
|
|
69
|
+
--shadow-lg: 0 12px 40px rgba(0, 0, 0, 0.50), 0 2px 6px rgba(0, 0, 0, 0.30);
|
|
70
|
+
--shadow-xl: 0 20px 50px rgba(0, 0, 0, 0.60), 0 4px 10px rgba(0, 0, 0, 0.32);
|
|
71
|
+
--shadow-2xl: 0 28px 70px rgba(0, 0, 0, 0.72), 0 6px 14px rgba(0, 0, 0, 0.36);
|
|
72
|
+
/* Blur — vibrancy (Cupertino's signature, match light) */
|
|
73
|
+
--blur-sm: blur(20px) saturate(180%);
|
|
74
|
+
--blur-md: blur(30px) saturate(180%);
|
|
75
|
+
--blur-lg: blur(40px) saturate(180%);
|
|
76
|
+
/* Glow — Cupertino doesn't glow, it lifts */
|
|
77
|
+
--glow-sm: 0 0 0 transparent;
|
|
78
|
+
--glow-md: 0 0 0 transparent;
|
|
79
|
+
--glow-lg: 0 0 0 transparent;
|
|
80
|
+
/* Motion — Apple-snappy, match Cupertino */
|
|
81
|
+
--duration-fast: 160ms;
|
|
82
|
+
--duration-normal: 220ms;
|
|
83
|
+
--duration-slow: 320ms;
|
|
84
|
+
--ease: cubic-bezier(0.25, 0.1, 0.25, 1);
|
|
85
|
+
/* ----------------------------------------------------------
|
|
86
|
+
SEMANTIC ALIASES
|
|
87
|
+
---------------------------------------------------------- */
|
|
88
|
+
/* Backgrounds */
|
|
89
|
+
--background-default: var(--paper);
|
|
90
|
+
--background-subtle: var(--paper-sunk);
|
|
91
|
+
--background-navbar: var(--paper-raised);
|
|
92
|
+
/* Surfaces */
|
|
93
|
+
--surface-default: var(--paper);
|
|
94
|
+
--surface-raised: var(--paper-raised);
|
|
95
|
+
--surface-sunk: var(--paper-sunk);
|
|
96
|
+
--surface-muted: var(--paper-sunk);
|
|
97
|
+
--surface-subtle: var(--paper-raised);
|
|
98
|
+
--surface-emphasis: var(--ink);
|
|
99
|
+
--surface-glass: var(--paper-glass);
|
|
100
|
+
/* Text */
|
|
101
|
+
--text-primary: var(--ink);
|
|
102
|
+
--text-secondary: var(--ink-soft);
|
|
103
|
+
--text-muted: var(--ink-faint);
|
|
104
|
+
--text-tertiary: var(--muted);
|
|
105
|
+
--text-inverse: var(--paper);
|
|
106
|
+
--text-link: var(--ai);
|
|
107
|
+
--text-link-hover: var(--ai-ink);
|
|
108
|
+
/* Borders */
|
|
109
|
+
--border-default: var(--hair);
|
|
110
|
+
--border-subtle: var(--hair-soft);
|
|
111
|
+
--border-emphasis: var(--ink);
|
|
112
|
+
--border-focus: var(--ai);
|
|
113
|
+
/* Interactive — translucent white on dark (macOS Dark convention) */
|
|
114
|
+
--interactive-hover: rgba(255, 255, 255, 0.06);
|
|
115
|
+
--interactive-active: rgba(255, 255, 255, 0.10);
|
|
116
|
+
/* Brand */
|
|
117
|
+
--brand-primary: var(--ai);
|
|
118
|
+
--brand-primary-hover: var(--ai-ink);
|
|
119
|
+
/* Action triplets */
|
|
120
|
+
--action-primary-default: var(--ai);
|
|
121
|
+
--action-primary-hover: var(--ai-ink);
|
|
122
|
+
--action-primary-active: var(--ai-ink);
|
|
123
|
+
--action-primary-wash: var(--ai-wash);
|
|
124
|
+
--action-secondary-default: var(--shu);
|
|
125
|
+
--action-secondary-hover: var(--shu);
|
|
126
|
+
--action-secondary-active: var(--shu);
|
|
127
|
+
--action-secondary-wash: var(--shu-wash);
|
|
128
|
+
--action-tertiary-default: var(--ochre);
|
|
129
|
+
--action-tertiary-hover: var(--ochre);
|
|
130
|
+
--action-tertiary-active: var(--ochre);
|
|
131
|
+
--action-tertiary-wash: var(--ochre-wash);
|
|
132
|
+
/* Feedback */
|
|
133
|
+
--feedback-info: var(--ai);
|
|
134
|
+
--feedback-success: var(--code-green);
|
|
135
|
+
--feedback-warning: var(--ochre);
|
|
136
|
+
--feedback-error: var(--shu);
|
|
137
|
+
/* Status — info */
|
|
138
|
+
--info-default: var(--ai);
|
|
139
|
+
--info-subtle: var(--ai-wash);
|
|
140
|
+
--info-text: var(--ai-ink);
|
|
141
|
+
/* Status — success (macOS dark green) */
|
|
142
|
+
--success-default: #30D158;
|
|
143
|
+
--success-subtle: rgba(48, 209, 88, 0.16);
|
|
144
|
+
--success-text: #5FE37F;
|
|
145
|
+
/* Status — warning (macOS dark orange) */
|
|
146
|
+
--warning-default: var(--ochre);
|
|
147
|
+
--warning-subtle: var(--ochre-wash);
|
|
148
|
+
--warning-text: #FFB340;
|
|
149
|
+
/* Status — error (macOS dark red) */
|
|
150
|
+
--error-default: var(--shu);
|
|
151
|
+
--error-subtle: var(--shu-wash);
|
|
152
|
+
--error-text: #FF6961;
|
|
153
|
+
/* ----------------------------------------------------------
|
|
154
|
+
LIBRARY SCALES
|
|
155
|
+
---------------------------------------------------------- */
|
|
156
|
+
/* Space scale */
|
|
157
|
+
/* Spacing rhythm — THE knob for how dense or airy this theme feels.
|
|
158
|
+
The numbered scale is the source of truth: every component reads
|
|
159
|
+
var(--space-N), and the t-shirt aliases (--space-md, --space-lg …)
|
|
160
|
+
are emitted by the library as references to these, so they follow
|
|
161
|
+
automatically. Change a value here and the whole page re-proportions.
|
|
162
|
+
Halve them for a compact UI; raise 4/5/6 for an airy editorial feel. */
|
|
163
|
+
--space-0: 0; /* flush */
|
|
164
|
+
--space-1: 0.5rem; /* tight inner gap */
|
|
165
|
+
--space-2: 0.75rem; /* control padding */
|
|
166
|
+
--space-3: 0.875rem; /* (no t-shirt) */
|
|
167
|
+
--space-4: 1rem; /* default rhythm */
|
|
168
|
+
--space-5: 1.5rem; /* section gap */
|
|
169
|
+
--space-6: 2rem; /* block gap */
|
|
170
|
+
--space-7: 3rem; /* major gap */
|
|
171
|
+
--space-8: 4rem; /* page section */
|
|
172
|
+
--space-9: 6rem; /* hero rhythm */
|
|
173
|
+
/* Radius alias */
|
|
174
|
+
--radius-sm: var(--r-sm);
|
|
175
|
+
--radius-md: var(--r-md);
|
|
176
|
+
--radius-lg: var(--r-lg);
|
|
177
|
+
--radius-xl: 0.75rem;
|
|
178
|
+
--radius-full: 9999px;
|
|
179
|
+
/* Typography */
|
|
180
|
+
--font-primary: var(--font-sans);
|
|
181
|
+
--font-size-base: 1rem;
|
|
182
|
+
--line-height-normal: 1.5;
|
|
183
|
+
--font-weight-medium: 500;
|
|
184
|
+
/* Z-index */
|
|
185
|
+
--z-sticky: 1020;
|
|
186
|
+
--z-dropdown: 1030;
|
|
187
|
+
--z-backdrop: 1040;
|
|
188
|
+
--z-modal: 1050;
|
|
189
|
+
--z-popover: 1060;
|
|
190
|
+
--z-tooltip: 1070;
|
|
191
|
+
/* ----------------------------------------------------------
|
|
192
|
+
OPTIONAL COMPONENT OVERRIDES — match Cupertino
|
|
193
|
+
---------------------------------------------------------- */
|
|
194
|
+
--btn-radius: var(--r-md); /* 10px — AppKit control */
|
|
195
|
+
--card-radius: var(--r-lg); /* 14px — panel corner */
|
|
196
|
+
--card-shadow: var(--shadow-sm); /* diffuse, lifted */
|
|
197
|
+
--input-radius: var(--r-sm); /* 8px — text field */
|
|
198
|
+
--modal-radius: var(--r-lg); /* matches panel */
|
|
199
|
+
--tooltip-radius: var(--r-sm); /* bezel tooltip */
|
|
200
|
+
}
|
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
@charset "UTF-8";
|
|
2
|
+
/* ============================================================
|
|
3
|
+
THEME — Cupertino (light)
|
|
4
|
+
-----------------------------------------------------------
|
|
5
|
+
Standalone file for `[data-theme="cupertino-light"]` consumers.
|
|
6
|
+
This is the ONE FILE users swap to reskin their site.
|
|
7
|
+
Replace this file with any other theme.css to change the
|
|
8
|
+
entire look & feel. Tokens only — no component CSS lives here.
|
|
9
|
+
|
|
10
|
+
TOKEN CONTRACT
|
|
11
|
+
-----------------------------------------------------------
|
|
12
|
+
Every theme MUST declare every variable in this file, even
|
|
13
|
+
if it sets it to a neutral value (e.g. --glow-md: 0 0 0 transparent;).
|
|
14
|
+
That's what guarantees a clean one-file swap.
|
|
15
|
+
|
|
16
|
+
Slots:
|
|
17
|
+
Surfaces : --paper, --paper-raised, --paper-sunk, --paper-glass
|
|
18
|
+
Ink : --ink, --ink-soft, --ink-faint, --graphite, --muted
|
|
19
|
+
Lines : --guide, --guide-soft, --hair, --hair-soft
|
|
20
|
+
Primary : --ai, --ai-ink, --ai-wash (system blue in cupertino)
|
|
21
|
+
Seal : --shu, --shu-wash (system red)
|
|
22
|
+
Accent : --ochre, --ochre-wash (system orange / amber)
|
|
23
|
+
Code : --code-bg/ink/muted/accent/green/blue
|
|
24
|
+
Type : --font-display/script/serif/sans/mono
|
|
25
|
+
Radius : --r-sm, --r-md, --r-lg
|
|
26
|
+
Shadow : --shadow-sm, --shadow-md, --shadow-lg
|
|
27
|
+
Blur : --blur-sm, --blur-md, --blur-lg (vibrancy)
|
|
28
|
+
Glow : --glow-sm, --glow-md, --glow-lg (cupertino lifts, doesn't glow)
|
|
29
|
+
Motion : --duration-fast, --duration-normal, --duration-slow, --ease
|
|
30
|
+
============================================================ */
|
|
31
|
+
@import 'https://fonts.googleapis.com/css2?family=Caveat:wght@400;500;600;700&display=swap';
|
|
32
|
+
:root, :root[data-theme=cupertino-light] {
|
|
33
|
+
color-scheme: light;
|
|
34
|
+
/* Surfaces — AppKit panels */
|
|
35
|
+
--paper: #F5F5F7;
|
|
36
|
+
--paper-raised: #FFF;
|
|
37
|
+
--paper-sunk: #E9E9EC;
|
|
38
|
+
--paper-glass: rgba(255, 255, 255, 0.72);
|
|
39
|
+
/* Ink — warm black, never pure */
|
|
40
|
+
--ink: #1D1D1F;
|
|
41
|
+
--ink-soft: #3A3A3C;
|
|
42
|
+
--ink-faint: #66666B;
|
|
43
|
+
--graphite: #2C2C2E;
|
|
44
|
+
--muted: #6E6E73;
|
|
45
|
+
/* Hairlines / guides */
|
|
46
|
+
--guide: #D2D2D7;
|
|
47
|
+
--guide-soft: #E5E5EA;
|
|
48
|
+
--hair: #D2D2D7;
|
|
49
|
+
--hair-soft: #E5E5EA;
|
|
50
|
+
/* Primary accent — system blue */
|
|
51
|
+
--ai: #005EBB;
|
|
52
|
+
--ai-ink: #0058B0;
|
|
53
|
+
--ai-wash: #E5F0FB;
|
|
54
|
+
/* Seal — system red */
|
|
55
|
+
--shu: #FF3B30;
|
|
56
|
+
--shu-wash: #FFEAE8;
|
|
57
|
+
/* Accent — system orange / amber */
|
|
58
|
+
--ochre: #FF9F0A;
|
|
59
|
+
--ochre-wash: #FFF4E0;
|
|
60
|
+
/* Code surface — native Xcode dark */
|
|
61
|
+
--code-bg: #1C1C1E;
|
|
62
|
+
--code-ink: #F2F2F7;
|
|
63
|
+
--code-muted: #8E8E93;
|
|
64
|
+
--code-accent: #FF9F0A;
|
|
65
|
+
--code-green: #30D158;
|
|
66
|
+
--code-blue: #64D2FF;
|
|
67
|
+
/* Typography — SF system stack */
|
|
68
|
+
--font-display: -apple-system, BlinkMacSystemFont, 'SF Pro Display', 'Inter', 'Segoe UI', Helvetica, Arial, sans-serif;
|
|
69
|
+
--font-script: 'Caveat', 'Shadows Into Light', cursive;
|
|
70
|
+
--font-serif: ui-serif, 'New York', 'Iowan Old Style', 'Palatino', Georgia, serif;
|
|
71
|
+
--font-sans: -apple-system, BlinkMacSystemFont, 'SF Pro Text', 'Inter', 'Segoe UI', Helvetica, Arial, sans-serif;
|
|
72
|
+
--font-mono: 'SF Mono', ui-monospace, 'JetBrains Mono', 'Menlo', Consolas, monospace;
|
|
73
|
+
/* Radius — AppKit corners */
|
|
74
|
+
--r-sm: 8px;
|
|
75
|
+
--r-md: 10px;
|
|
76
|
+
--r-lg: 14px;
|
|
77
|
+
/* Shadows — small, diffuse, lifted */
|
|
78
|
+
--shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.04), 0 0 0 0.5px rgba(0, 0, 0, 0.04);
|
|
79
|
+
--shadow-md: 0 4px 14px rgba(0, 0, 0, 0.06), 0 1px 3px rgba(0, 0, 0, 0.04);
|
|
80
|
+
--shadow-lg: 0 12px 40px rgba(0, 0, 0, 0.10), 0 2px 6px rgba(0, 0, 0, 0.04);
|
|
81
|
+
/* Blur — vibrancy (Cupertino's signature) */
|
|
82
|
+
--blur-sm: blur(20px) saturate(180%);
|
|
83
|
+
--blur-md: blur(30px) saturate(180%);
|
|
84
|
+
--blur-lg: blur(40px) saturate(180%);
|
|
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
|
+
/* Motion — Apple-snappy */
|
|
90
|
+
--duration-fast: 160ms;
|
|
91
|
+
--duration-normal: 220ms;
|
|
92
|
+
--duration-slow: 320ms;
|
|
93
|
+
--ease: cubic-bezier(0.25, 0.1, 0.25, 1);
|
|
94
|
+
/* ----------------------------------------------------------
|
|
95
|
+
SEMANTIC ALIASES
|
|
96
|
+
-----------------------------------------------------------
|
|
97
|
+
Bridge the library's expected names to this theme's native
|
|
98
|
+
palette. Components can now write m.color(surface-default)
|
|
99
|
+
or var(--surface-default) and reskin with the theme
|
|
100
|
+
automatically.
|
|
101
|
+
---------------------------------------------------------- */
|
|
102
|
+
/* Backgrounds (page-level) */
|
|
103
|
+
--background-default: var(--paper);
|
|
104
|
+
--background-subtle: var(--paper-sunk);
|
|
105
|
+
--background-navbar: var(--paper-raised);
|
|
106
|
+
/* Surfaces */
|
|
107
|
+
--surface-default: var(--paper);
|
|
108
|
+
--surface-raised: var(--paper-raised);
|
|
109
|
+
--surface-sunk: var(--paper-sunk);
|
|
110
|
+
--surface-muted: var(--paper-sunk);
|
|
111
|
+
--surface-subtle: var(--paper-raised);
|
|
112
|
+
--surface-emphasis: var(--ink);
|
|
113
|
+
--surface-glass: var(--paper-glass);
|
|
114
|
+
/* Text */
|
|
115
|
+
--text-primary: var(--ink);
|
|
116
|
+
--text-secondary: var(--ink-soft);
|
|
117
|
+
--text-muted: var(--ink-faint);
|
|
118
|
+
--text-tertiary: var(--muted);
|
|
119
|
+
--text-inverse: var(--paper);
|
|
120
|
+
--text-link: var(--ai);
|
|
121
|
+
--text-link-hover: var(--ai-ink);
|
|
122
|
+
/* Borders */
|
|
123
|
+
--border-default: var(--hair);
|
|
124
|
+
--border-subtle: var(--hair-soft);
|
|
125
|
+
--border-emphasis: var(--ink);
|
|
126
|
+
--border-focus: var(--ai);
|
|
127
|
+
/* Interactive (hover / active wash layers) — macOS faint ink overlay */
|
|
128
|
+
--interactive-hover: rgba(0, 0, 0, 0.04);
|
|
129
|
+
--interactive-active: rgba(0, 0, 0, 0.08);
|
|
130
|
+
/* Brand (identity — action-primary usually references these) */
|
|
131
|
+
--brand-primary: var(--ai);
|
|
132
|
+
--brand-primary-hover: var(--ai-ink);
|
|
133
|
+
/* Action (primary / secondary / tertiary) */
|
|
134
|
+
--action-primary-default: var(--ai);
|
|
135
|
+
--action-primary-hover: var(--ai-ink);
|
|
136
|
+
--action-primary-active: var(--ai-ink);
|
|
137
|
+
--action-primary-wash: var(--ai-wash);
|
|
138
|
+
--action-secondary-default: var(--shu);
|
|
139
|
+
--action-secondary-hover: var(--shu);
|
|
140
|
+
--action-secondary-active: var(--shu);
|
|
141
|
+
--action-secondary-wash: var(--shu-wash);
|
|
142
|
+
--action-tertiary-default: var(--ochre);
|
|
143
|
+
--action-tertiary-hover: var(--ochre);
|
|
144
|
+
--action-tertiary-active: var(--ochre);
|
|
145
|
+
--action-tertiary-wash: var(--ochre-wash);
|
|
146
|
+
/* Feedback / status (high-level semantic) */
|
|
147
|
+
--feedback-info: var(--ai);
|
|
148
|
+
--feedback-success: var(--code-green);
|
|
149
|
+
--feedback-warning: var(--ochre);
|
|
150
|
+
--feedback-error: var(--shu);
|
|
151
|
+
/* Status — info (three-part: default / subtle / text) */
|
|
152
|
+
--info-default: var(--ai);
|
|
153
|
+
--info-subtle: var(--ai-wash);
|
|
154
|
+
--info-text: var(--ai-ink);
|
|
155
|
+
/* Status — success (macOS system green) */
|
|
156
|
+
--success-default: var(--code-green);
|
|
157
|
+
--success-subtle: rgba(48, 209, 88, 0.12);
|
|
158
|
+
--success-text: #0F6E22;
|
|
159
|
+
/* Status — warning (macOS system orange) */
|
|
160
|
+
--warning-default: var(--ochre);
|
|
161
|
+
--warning-subtle: var(--ochre-wash);
|
|
162
|
+
--warning-text: #985000;
|
|
163
|
+
/* Status — error (macOS system red) */
|
|
164
|
+
--error-default: var(--shu);
|
|
165
|
+
--error-subtle: rgba(255, 59, 48, 0.12);
|
|
166
|
+
--error-text: #A8281F;
|
|
167
|
+
/* ----------------------------------------------------------
|
|
168
|
+
LIBRARY SCALES (space / radius / type / motion / z)
|
|
169
|
+
-----------------------------------------------------------
|
|
170
|
+
The library mixins emit var(--space-<key>), var(--radius-<key>),
|
|
171
|
+
var(--font-primary), var(--font-size-<key>), var(--z-<key>), …
|
|
172
|
+
Themes declare the slots so those mixins always resolve.
|
|
173
|
+
---------------------------------------------------------- */
|
|
174
|
+
/* Space scale (rem for accessibility) */
|
|
175
|
+
/* Spacing rhythm — THE knob for how dense or airy this theme feels.
|
|
176
|
+
The numbered scale is the source of truth: every component reads
|
|
177
|
+
var(--space-N), and the t-shirt aliases (--space-md, --space-lg …)
|
|
178
|
+
are emitted by the library as references to these, so they follow
|
|
179
|
+
automatically. Change a value here and the whole page re-proportions.
|
|
180
|
+
Halve them for a compact UI; raise 4/5/6 for an airy editorial feel. */
|
|
181
|
+
--space-0: 0; /* flush */
|
|
182
|
+
--space-1: 0.5rem; /* tight inner gap */
|
|
183
|
+
--space-2: 0.75rem; /* control padding */
|
|
184
|
+
--space-3: 0.875rem; /* (no t-shirt) */
|
|
185
|
+
--space-4: 1rem; /* default rhythm */
|
|
186
|
+
--space-5: 1.5rem; /* section gap */
|
|
187
|
+
--space-6: 2rem; /* block gap */
|
|
188
|
+
--space-7: 3rem; /* major gap */
|
|
189
|
+
--space-8: 4rem; /* page section */
|
|
190
|
+
--space-9: 6rem; /* hero rhythm */
|
|
191
|
+
/* Radius alias — mirrors --r-* with standard names so
|
|
192
|
+
`m.radius(size)` in the library finds --radius-<size>. */
|
|
193
|
+
--radius-sm: var(--r-sm);
|
|
194
|
+
--radius-md: var(--r-md);
|
|
195
|
+
--radius-lg: var(--r-lg);
|
|
196
|
+
--radius-xl: 0.75rem;
|
|
197
|
+
--radius-full: 9999px;
|
|
198
|
+
/* Shadow — higher-elevation slots (AppKit floating surfaces) */
|
|
199
|
+
--shadow-xl: 0 20px 50px rgba(0, 0, 0, 0.14), 0 4px 10px rgba(0, 0, 0, 0.05);
|
|
200
|
+
--shadow-2xl: 0 28px 70px rgba(0, 0, 0, 0.20), 0 6px 14px rgba(0, 0, 0, 0.06);
|
|
201
|
+
/* Typography — base body font + key scale slots (SF Pro stack) */
|
|
202
|
+
--font-primary: var(--font-sans);
|
|
203
|
+
--font-size-base: 1rem;
|
|
204
|
+
--line-height-normal: 1.5;
|
|
205
|
+
--font-weight-medium: 500;
|
|
206
|
+
/* Z-index layers */
|
|
207
|
+
--z-sticky: 1020;
|
|
208
|
+
--z-dropdown: 1030;
|
|
209
|
+
--z-backdrop: 1040;
|
|
210
|
+
--z-modal: 1050;
|
|
211
|
+
--z-popover: 1060;
|
|
212
|
+
--z-tooltip: 1070;
|
|
213
|
+
/* ----------------------------------------------------------
|
|
214
|
+
OPTIONAL COMPONENT OVERRIDES (Feature 1.3)
|
|
215
|
+
-----------------------------------------------------------
|
|
216
|
+
Cupertino expresses AppKit UI: softly rounded controls,
|
|
217
|
+
diffuse card lift, larger panel radii. Overrides are
|
|
218
|
+
intentionally sparse — pick the ones that carry the
|
|
219
|
+
identity of the OS, leave the rest on library defaults.
|
|
220
|
+
---------------------------------------------------------- */
|
|
221
|
+
--btn-radius: var(--r-md); /* 10px — AppKit control */
|
|
222
|
+
--card-radius: var(--r-lg); /* 14px — panel corner */
|
|
223
|
+
--card-shadow: var(--shadow-sm); /* diffuse, lifted */
|
|
224
|
+
--input-radius: var(--r-sm); /* 8px — text field */
|
|
225
|
+
--modal-radius: var(--r-lg); /* matches panel */
|
|
226
|
+
--tooltip-radius: var(--r-sm); /* bezel tooltip */
|
|
227
|
+
}
|