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,190 @@
|
|
|
1
|
+
@charset "UTF-8";
|
|
2
|
+
@import 'https://fonts.googleapis.com/css2?family=Caveat:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;700&display=swap';
|
|
3
|
+
:root, :root[data-theme=glass] {
|
|
4
|
+
color-scheme: light dark;
|
|
5
|
+
/* Surfaces — frosted translucent / blue-black void */
|
|
6
|
+
--paper: light-dark(#F4EEFF, #0A0F1A);
|
|
7
|
+
--paper-raised: light-dark(#FFF, #141E32);
|
|
8
|
+
--paper-sunk: light-dark(#E8E0F5, #050810);
|
|
9
|
+
--paper-glass: light-dark(rgba(255, 255, 255, 0.55), rgba(20, 30, 50, 0.60));
|
|
10
|
+
/* Ink — warm near-black / cool near-white */
|
|
11
|
+
--ink: light-dark(#1D1D1F, #F0F4FF);
|
|
12
|
+
--ink-soft: light-dark(#3A3A3C, #C8CFE0);
|
|
13
|
+
--ink-faint: light-dark(#65656A, #8A92A8);
|
|
14
|
+
--graphite: light-dark(#2C2C2E, #DCE2F0);
|
|
15
|
+
--muted: light-dark(#6E6E73, #5A627A);
|
|
16
|
+
/* Construction lines — translucent */
|
|
17
|
+
--guide: light-dark(rgba(29, 29, 31, 0.14), rgba(240, 244, 255, 0.16));
|
|
18
|
+
--guide-soft: light-dark(rgba(29, 29, 31, 0.10), rgba(240, 244, 255, 0.08));
|
|
19
|
+
--hair: light-dark(rgba(29, 29, 31, 0.08), rgba(240, 244, 255, 0.12));
|
|
20
|
+
--hair-soft: light-dark(rgba(29, 29, 31, 0.04), rgba(240, 244, 255, 0.06));
|
|
21
|
+
/* Primary accent — iOS indigo / vibrant dark blue */
|
|
22
|
+
--ai: light-dark(#5957E2, #6FA9FF);
|
|
23
|
+
--ai-ink: light-dark(#3634A3, #93C2FF);
|
|
24
|
+
--ai-wash: light-dark(rgba(89, 87, 226, 0.12), rgba(111, 169, 255, 0.16));
|
|
25
|
+
/* Seal — iOS system pink */
|
|
26
|
+
--shu: light-dark(#FF375F, #FF6B8A);
|
|
27
|
+
--shu-wash: light-dark(rgba(255, 55, 95, 0.12), rgba(255, 107, 138, 0.16));
|
|
28
|
+
/* Draft / marginalia — iOS orange */
|
|
29
|
+
--ochre: light-dark(#FF9500, #FFC56B);
|
|
30
|
+
--ochre-wash: light-dark(rgba(255, 149, 0, 0.14), rgba(255, 197, 107, 0.16));
|
|
31
|
+
/* Code surface */
|
|
32
|
+
--code-bg: light-dark(rgba(29, 29, 31, 0.82), rgba(5, 8, 16, 0.82));
|
|
33
|
+
--code-ink: light-dark(#F5F5F7, #F0F4FF);
|
|
34
|
+
--code-muted: light-dark(#BCBCC0, #8A92A8);
|
|
35
|
+
--code-accent: #FFD60A;
|
|
36
|
+
--code-green: light-dark(#30D158, #5FE37F);
|
|
37
|
+
--code-blue: light-dark(#64D2FF, #93C2FF);
|
|
38
|
+
/* Typography — SF stack, identical */
|
|
39
|
+
--font-display: -apple-system, BlinkMacSystemFont, 'SF Pro Display', 'Inter', system-ui, sans-serif;
|
|
40
|
+
--font-script: 'Caveat', 'Shadows Into Light', cursive;
|
|
41
|
+
--font-serif: -apple-system, BlinkMacSystemFont, 'SF Pro Text', 'Inter', Georgia, serif;
|
|
42
|
+
--font-sans: -apple-system, BlinkMacSystemFont, 'SF Pro Display', 'SF Pro Text', 'Inter', system-ui, sans-serif;
|
|
43
|
+
--font-mono: 'SF Mono', ui-monospace, 'JetBrains Mono', Menlo, Consolas, monospace;
|
|
44
|
+
/* Radius — soft and large, identical */
|
|
45
|
+
--r-sm: 10px;
|
|
46
|
+
--r-md: 18px;
|
|
47
|
+
--r-lg: 24px;
|
|
48
|
+
/* Shadows — floaty with cool-blue undertone / deep dark drops */
|
|
49
|
+
--shadow-sm: 0 2px 10px light-dark(rgba(31, 38, 135, 0.06), rgba(0, 0, 0, 0.30));
|
|
50
|
+
--shadow-md: 0 8px 32px light-dark(rgba(31, 38, 135, 0.10), rgba(0, 0, 0, 0.42));
|
|
51
|
+
--shadow-lg: 0 24px 60px light-dark(rgba(31, 38, 135, 0.14), rgba(0, 0, 0, 0.55));
|
|
52
|
+
--shadow-xl: 0 40px 80px light-dark(rgba(31, 38, 135, 0.18), rgba(0, 0, 0, 0.65));
|
|
53
|
+
--shadow-2xl: 0 56px 112px light-dark(rgba(31, 38, 135, 0.24), rgba(0, 0, 0, 0.75));
|
|
54
|
+
/* Blur — LIGHT defaults; dark overrides below via nested @media */
|
|
55
|
+
--blur-sm: blur(14px) saturate(160%);
|
|
56
|
+
--blur-md: blur(22px) saturate(170%);
|
|
57
|
+
--blur-lg: blur(30px) saturate(180%);
|
|
58
|
+
/* Glow — dual-inset rim highlight (LIGHT defaults; dark overrides below) */
|
|
59
|
+
--glow-sm: inset 0 1px 0 rgba(255, 255, 255, 0.70);
|
|
60
|
+
--glow-md:
|
|
61
|
+
inset 0 1px 0 rgba(255, 255, 255, 0.85),
|
|
62
|
+
inset 0 -1px 0 rgba(255, 255, 255, 0.20),
|
|
63
|
+
inset 1px 0 0 rgba(255, 255, 255, 0.35),
|
|
64
|
+
inset -1px 0 0 rgba(255, 255, 255, 0.20);
|
|
65
|
+
--glow-lg:
|
|
66
|
+
inset 0 2px 0 rgba(255, 255, 255, 0.95),
|
|
67
|
+
inset 0 -2px 0 rgba(255, 255, 255, 0.25),
|
|
68
|
+
inset 2px 0 0 rgba(255, 255, 255, 0.45),
|
|
69
|
+
inset -2px 0 0 rgba(255, 255, 255, 0.25),
|
|
70
|
+
inset 0 0 40px rgba(255, 255, 255, 0.15);
|
|
71
|
+
/* Motion — identical */
|
|
72
|
+
--duration-fast: 180ms;
|
|
73
|
+
--duration-normal: 240ms;
|
|
74
|
+
--duration-slow: 380ms;
|
|
75
|
+
--ease: cubic-bezier(0.33, 0.66, 0.33, 1);
|
|
76
|
+
/* ---- Pattern C: dark-mode overrides for NON-COLOR tokens ----
|
|
77
|
+
* stylelint can't trace through @include m.theme() to know the
|
|
78
|
+
* parent selector is :root[data-theme="glass"]; the declarations
|
|
79
|
+
* below are valid in compiled output (Sass hoists @media + scopes
|
|
80
|
+
* the vars under the parent selector). */
|
|
81
|
+
/* stylelint-disable no-invalid-position-declaration -- see comment above */
|
|
82
|
+
}
|
|
83
|
+
@media (prefers-color-scheme: dark) {
|
|
84
|
+
:root, :root[data-theme=glass] {
|
|
85
|
+
--blur-sm: blur(12px) saturate(160%);
|
|
86
|
+
--blur-md: blur(18px) saturate(180%);
|
|
87
|
+
--blur-lg: blur(20px) saturate(200%);
|
|
88
|
+
--glow-sm: inset 0 1px 0 rgba(255, 255, 255, 0.16);
|
|
89
|
+
--glow-md:
|
|
90
|
+
inset 0 1px 0 rgba(255, 255, 255, 0.22),
|
|
91
|
+
inset 0 -1px 0 rgba(255, 255, 255, 0.06),
|
|
92
|
+
inset 1px 0 0 rgba(255, 255, 255, 0.10),
|
|
93
|
+
inset -1px 0 0 rgba(255, 255, 255, 0.06);
|
|
94
|
+
--glow-lg:
|
|
95
|
+
inset 0 2px 0 rgba(255, 255, 255, 0.28),
|
|
96
|
+
inset 0 -2px 0 rgba(255, 255, 255, 0.08),
|
|
97
|
+
inset 2px 0 0 rgba(255, 255, 255, 0.14),
|
|
98
|
+
inset -2px 0 0 rgba(255, 255, 255, 0.08),
|
|
99
|
+
inset 0 0 40px rgba(111, 169, 255, 0.08);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
:root, :root[data-theme=glass] {
|
|
103
|
+
/* stylelint-enable no-invalid-position-declaration */
|
|
104
|
+
/* Semantic aliases */
|
|
105
|
+
--background-default: var(--paper);
|
|
106
|
+
--background-subtle: var(--paper-sunk);
|
|
107
|
+
--background-navbar: var(--paper-raised);
|
|
108
|
+
--surface-default: var(--paper);
|
|
109
|
+
--surface-raised: var(--paper-raised);
|
|
110
|
+
--surface-sunk: var(--paper-sunk);
|
|
111
|
+
--surface-muted: var(--paper-sunk);
|
|
112
|
+
--surface-subtle: var(--paper-raised);
|
|
113
|
+
--surface-emphasis: var(--ink);
|
|
114
|
+
--surface-glass: var(--paper-glass);
|
|
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
|
+
--border-default: var(--hair);
|
|
123
|
+
--border-subtle: var(--hair-soft);
|
|
124
|
+
--border-emphasis: var(--ink);
|
|
125
|
+
--border-focus: var(--ai);
|
|
126
|
+
--interactive-hover: light-dark(rgba(29, 29, 31, 0.04), rgba(240, 244, 255, 0.05));
|
|
127
|
+
--interactive-active: light-dark(rgba(29, 29, 31, 0.08), rgba(240, 244, 255, 0.10));
|
|
128
|
+
--brand-primary: var(--ai);
|
|
129
|
+
--brand-primary-hover: var(--ai-ink);
|
|
130
|
+
--action-primary-default: var(--ai);
|
|
131
|
+
--action-primary-hover: var(--ai-ink);
|
|
132
|
+
--action-primary-active: var(--ai-ink);
|
|
133
|
+
--action-primary-wash: var(--ai-wash);
|
|
134
|
+
--action-secondary-default: var(--shu);
|
|
135
|
+
--action-secondary-hover: var(--shu);
|
|
136
|
+
--action-secondary-active: var(--shu);
|
|
137
|
+
--action-secondary-wash: var(--shu-wash);
|
|
138
|
+
--action-tertiary-default: var(--ochre);
|
|
139
|
+
--action-tertiary-hover: var(--ochre);
|
|
140
|
+
--action-tertiary-active: var(--ochre);
|
|
141
|
+
--action-tertiary-wash: var(--ochre-wash);
|
|
142
|
+
--feedback-info: var(--ai);
|
|
143
|
+
--feedback-success: var(--code-green);
|
|
144
|
+
--feedback-warning: var(--ochre);
|
|
145
|
+
--feedback-error: var(--shu);
|
|
146
|
+
--info-default: var(--ai);
|
|
147
|
+
--info-subtle: light-dark(rgba(89, 87, 226, 0.12), rgba(111, 169, 255, 0.16));
|
|
148
|
+
--info-text: var(--ai-ink);
|
|
149
|
+
--success-default: light-dark(#34C759, #30D158);
|
|
150
|
+
--success-subtle: light-dark(rgba(52, 199, 89, 0.12), rgba(48, 209, 88, 0.16));
|
|
151
|
+
--success-text: light-dark(#0F6A22, #5FE37F);
|
|
152
|
+
--warning-default: var(--ochre);
|
|
153
|
+
--warning-subtle: var(--ochre-wash);
|
|
154
|
+
--warning-text: light-dark(#985000, #FFD79A);
|
|
155
|
+
--error-default: var(--shu);
|
|
156
|
+
--error-subtle: var(--shu-wash);
|
|
157
|
+
--error-text: light-dark(#A3193A, #FF93AB);
|
|
158
|
+
/* Library scales — identical */
|
|
159
|
+
/* Spacing rhythm — THE knob for how dense or airy this theme feels.
|
|
160
|
+
The numbered scale is the source of truth: every component reads
|
|
161
|
+
var(--space-N), and the t-shirt aliases (--space-md, --space-lg …)
|
|
162
|
+
are emitted by the library as references to these, so they follow
|
|
163
|
+
automatically. Change a value here and the whole page re-proportions.
|
|
164
|
+
Halve them for a compact UI; raise 4/5/6 for an airy editorial feel. */
|
|
165
|
+
--space-0: 0; /* flush */
|
|
166
|
+
--space-1: 0.5rem; /* tight inner gap */
|
|
167
|
+
--space-2: 0.75rem; /* control padding */
|
|
168
|
+
--space-3: 0.875rem; /* (no t-shirt) */
|
|
169
|
+
--space-4: 1rem; /* default rhythm */
|
|
170
|
+
--space-5: 1.5rem; /* section gap */
|
|
171
|
+
--space-6: 2rem; /* block gap */
|
|
172
|
+
--space-7: 3rem; /* major gap */
|
|
173
|
+
--space-8: 4rem; /* page section */
|
|
174
|
+
--space-9: 6rem; /* hero rhythm */
|
|
175
|
+
--radius-sm: var(--r-sm);
|
|
176
|
+
--radius-md: var(--r-md);
|
|
177
|
+
--radius-lg: var(--r-lg);
|
|
178
|
+
--radius-xl: 0.75rem;
|
|
179
|
+
--radius-full: 9999px;
|
|
180
|
+
--font-primary: var(--font-sans);
|
|
181
|
+
--font-size-base: 1rem;
|
|
182
|
+
--line-height-normal: 1.5;
|
|
183
|
+
--font-weight-medium: 500;
|
|
184
|
+
--z-sticky: 1020;
|
|
185
|
+
--z-dropdown: 1030;
|
|
186
|
+
--z-backdrop: 1040;
|
|
187
|
+
--z-modal: 1050;
|
|
188
|
+
--z-popover: 1060;
|
|
189
|
+
--z-tooltip: 1070;
|
|
190
|
+
}
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
@charset "UTF-8";
|
|
2
|
+
/* ============================================================
|
|
3
|
+
THEME — Liquid Glass Dark
|
|
4
|
+
-----------------------------------------------------------
|
|
5
|
+
Dark companion to Liquid Glass (visionOS / iOS glassmorphism
|
|
6
|
+
light). Same glassmorphism design language: SF system stack,
|
|
7
|
+
soft large radii, dual-inset rim-light glow, --blur-* is the
|
|
8
|
+
star. Only the COLOR palette inverts.
|
|
9
|
+
|
|
10
|
+
Mood: visionOS Dark — translucent glassy surfaces over a
|
|
11
|
+
deep blue-black void. The --paper-glass token is the
|
|
12
|
+
showpiece (rgba over very dark). --blur-* values matter
|
|
13
|
+
here: 12-20px frost-saturate, where most other themes
|
|
14
|
+
default to 'none'. Vibrant accents (#6FA9FF / #FF6B8A /
|
|
15
|
+
#FFC56B) glow through the glass.
|
|
16
|
+
|
|
17
|
+
Opt-in via `<html data-theme="glass-dark">`. Pair with
|
|
18
|
+
glass/theme.css to ship a project with a default light
|
|
19
|
+
visionOS mode and an opt-in dark visionOS mode.
|
|
20
|
+
============================================================ */
|
|
21
|
+
@import 'https://fonts.googleapis.com/css2?family=Caveat:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;700&display=swap';
|
|
22
|
+
:root, :root[data-theme=glass-dark] {
|
|
23
|
+
color-scheme: dark;
|
|
24
|
+
/* Surfaces — frosted translucent over deep blue-black */
|
|
25
|
+
--paper: #0A0F1A;
|
|
26
|
+
--paper-raised: #141E32;
|
|
27
|
+
--paper-sunk: #050810;
|
|
28
|
+
--paper-glass: rgba(20, 30, 50, 0.60);
|
|
29
|
+
/* Ink — cool near-white, glassy */
|
|
30
|
+
--ink: #F0F4FF;
|
|
31
|
+
--ink-soft: #C8CFE0;
|
|
32
|
+
--ink-faint: #8A92A8;
|
|
33
|
+
--graphite: #DCE2F0;
|
|
34
|
+
--muted: #5A627A;
|
|
35
|
+
/* Construction lines — translucent white hairlines */
|
|
36
|
+
--guide: rgba(240, 244, 255, 0.16);
|
|
37
|
+
--guide-soft: rgba(240, 244, 255, 0.08);
|
|
38
|
+
--hair: rgba(240, 244, 255, 0.12);
|
|
39
|
+
--hair-soft: rgba(240, 244, 255, 0.06);
|
|
40
|
+
/* Primary accent — vibrant iOS dark indigo/blue */
|
|
41
|
+
--ai: #6FA9FF;
|
|
42
|
+
--ai-ink: #93C2FF;
|
|
43
|
+
--ai-wash: rgba(111, 169, 255, 0.16);
|
|
44
|
+
/* Seal — vibrant iOS dark pink */
|
|
45
|
+
--shu: #FF6B8A;
|
|
46
|
+
--shu-wash: rgba(255, 107, 138, 0.16);
|
|
47
|
+
/* Draft / marginalia — vibrant iOS dark orange */
|
|
48
|
+
--ochre: #FFC56B;
|
|
49
|
+
--ochre-wash: rgba(255, 197, 107, 0.16);
|
|
50
|
+
/* Code surface — translucent over deep paper */
|
|
51
|
+
--code-bg: rgba(5, 8, 16, 0.82);
|
|
52
|
+
--code-ink: #F0F4FF;
|
|
53
|
+
--code-muted: #8A92A8;
|
|
54
|
+
--code-accent: #FFD60A;
|
|
55
|
+
--code-green: #5FE37F;
|
|
56
|
+
--code-blue: #93C2FF;
|
|
57
|
+
/* Typography — match Glass (SF system stack) */
|
|
58
|
+
--font-display: -apple-system, BlinkMacSystemFont, 'SF Pro Display', 'Inter', system-ui, sans-serif;
|
|
59
|
+
--font-script: 'Caveat', 'Shadows Into Light', cursive;
|
|
60
|
+
--font-serif: -apple-system, BlinkMacSystemFont, 'SF Pro Text', 'Inter', Georgia, serif;
|
|
61
|
+
--font-sans: -apple-system, BlinkMacSystemFont, 'SF Pro Display', 'SF Pro Text', 'Inter', system-ui, sans-serif;
|
|
62
|
+
--font-mono: 'SF Mono', ui-monospace, 'JetBrains Mono', Menlo, Consolas, monospace;
|
|
63
|
+
/* Radius — match Glass (soft and large, iOS-style) */
|
|
64
|
+
--r-sm: 10px;
|
|
65
|
+
--r-md: 18px;
|
|
66
|
+
--r-lg: 24px;
|
|
67
|
+
/* Shadows — floaty with deep undertone (dark needs heavier drops) */
|
|
68
|
+
--shadow-sm: 0 2px 10px rgba(0, 0, 0, 0.30);
|
|
69
|
+
--shadow-md: 0 8px 32px rgba(0, 0, 0, 0.42);
|
|
70
|
+
--shadow-lg: 0 24px 60px rgba(0, 0, 0, 0.55);
|
|
71
|
+
--shadow-xl: 0 40px 80px rgba(0, 0, 0, 0.65);
|
|
72
|
+
--shadow-2xl: 0 56px 112px rgba(0, 0, 0, 0.75);
|
|
73
|
+
/* Blur — THE star token; tuned for dark-glass depth */
|
|
74
|
+
--blur-sm: blur(12px) saturate(160%);
|
|
75
|
+
--blur-md: blur(18px) saturate(180%);
|
|
76
|
+
--blur-lg: blur(20px) saturate(200%);
|
|
77
|
+
/* Glow — dual-inset rim highlight (visionOS dark catches less but still rims) */
|
|
78
|
+
--glow-sm: inset 0 1px 0 rgba(255, 255, 255, 0.16);
|
|
79
|
+
--glow-md:
|
|
80
|
+
inset 0 1px 0 rgba(255, 255, 255, 0.22),
|
|
81
|
+
inset 0 -1px 0 rgba(255, 255, 255, 0.06),
|
|
82
|
+
inset 1px 0 0 rgba(255, 255, 255, 0.10),
|
|
83
|
+
inset -1px 0 0 rgba(255, 255, 255, 0.06);
|
|
84
|
+
--glow-lg:
|
|
85
|
+
inset 0 2px 0 rgba(255, 255, 255, 0.28),
|
|
86
|
+
inset 0 -2px 0 rgba(255, 255, 255, 0.08),
|
|
87
|
+
inset 2px 0 0 rgba(255, 255, 255, 0.14),
|
|
88
|
+
inset -2px 0 0 rgba(255, 255, 255, 0.08),
|
|
89
|
+
inset 0 0 40px rgba(111, 169, 255, 0.08);
|
|
90
|
+
/* Motion — match Glass */
|
|
91
|
+
--duration-fast: 180ms;
|
|
92
|
+
--duration-normal: 240ms;
|
|
93
|
+
--duration-slow: 380ms;
|
|
94
|
+
--ease: cubic-bezier(0.33, 0.66, 0.33, 1);
|
|
95
|
+
/* ----------------------------------------------------------
|
|
96
|
+
SEMANTIC ALIASES
|
|
97
|
+
---------------------------------------------------------- */
|
|
98
|
+
/* Backgrounds */
|
|
99
|
+
--background-default: var(--paper);
|
|
100
|
+
--background-subtle: var(--paper-sunk);
|
|
101
|
+
--background-navbar: var(--paper-raised);
|
|
102
|
+
/* Surfaces */
|
|
103
|
+
--surface-default: var(--paper);
|
|
104
|
+
--surface-raised: var(--paper-raised);
|
|
105
|
+
--surface-sunk: var(--paper-sunk);
|
|
106
|
+
--surface-muted: var(--paper-sunk);
|
|
107
|
+
--surface-subtle: var(--paper-raised);
|
|
108
|
+
--surface-emphasis: var(--ink);
|
|
109
|
+
--surface-glass: var(--paper-glass);
|
|
110
|
+
/* Text */
|
|
111
|
+
--text-primary: var(--ink);
|
|
112
|
+
--text-secondary: var(--ink-soft);
|
|
113
|
+
--text-muted: var(--ink-faint);
|
|
114
|
+
--text-tertiary: var(--muted);
|
|
115
|
+
--text-inverse: var(--paper);
|
|
116
|
+
--text-link: var(--ai);
|
|
117
|
+
--text-link-hover: var(--ai-ink);
|
|
118
|
+
/* Borders */
|
|
119
|
+
--border-default: var(--hair);
|
|
120
|
+
--border-subtle: var(--hair-soft);
|
|
121
|
+
--border-emphasis: var(--ink);
|
|
122
|
+
--border-focus: var(--ai);
|
|
123
|
+
/* Interactive — kept very subtle so glass translucency reads through */
|
|
124
|
+
--interactive-hover: rgba(240, 244, 255, 0.05);
|
|
125
|
+
--interactive-active: rgba(240, 244, 255, 0.10);
|
|
126
|
+
/* Brand */
|
|
127
|
+
--brand-primary: var(--ai);
|
|
128
|
+
--brand-primary-hover: var(--ai-ink);
|
|
129
|
+
/* Action triplets */
|
|
130
|
+
--action-primary-default: var(--ai);
|
|
131
|
+
--action-primary-hover: var(--ai-ink);
|
|
132
|
+
--action-primary-active: var(--ai-ink);
|
|
133
|
+
--action-primary-wash: var(--ai-wash);
|
|
134
|
+
--action-secondary-default: var(--shu);
|
|
135
|
+
--action-secondary-hover: var(--shu);
|
|
136
|
+
--action-secondary-active: var(--shu);
|
|
137
|
+
--action-secondary-wash: var(--shu-wash);
|
|
138
|
+
--action-tertiary-default: var(--ochre);
|
|
139
|
+
--action-tertiary-hover: var(--ochre);
|
|
140
|
+
--action-tertiary-active: var(--ochre);
|
|
141
|
+
--action-tertiary-wash: var(--ochre-wash);
|
|
142
|
+
/* Feedback */
|
|
143
|
+
--feedback-info: var(--ai);
|
|
144
|
+
--feedback-success: var(--code-green);
|
|
145
|
+
--feedback-warning: var(--ochre);
|
|
146
|
+
--feedback-error: var(--shu);
|
|
147
|
+
/* Status — info */
|
|
148
|
+
--info-default: var(--ai);
|
|
149
|
+
--info-subtle: rgba(111, 169, 255, 0.16);
|
|
150
|
+
--info-text: var(--ai-ink);
|
|
151
|
+
/* Status — success (iOS dark green) */
|
|
152
|
+
--success-default: #30D158;
|
|
153
|
+
--success-subtle: rgba(48, 209, 88, 0.16);
|
|
154
|
+
--success-text: #5FE37F;
|
|
155
|
+
/* Status — warning */
|
|
156
|
+
--warning-default: var(--ochre);
|
|
157
|
+
--warning-subtle: rgba(255, 197, 107, 0.16);
|
|
158
|
+
--warning-text: #FFD79A;
|
|
159
|
+
/* Status — error */
|
|
160
|
+
--error-default: var(--shu);
|
|
161
|
+
--error-subtle: rgba(255, 107, 138, 0.16);
|
|
162
|
+
--error-text: #FF93AB;
|
|
163
|
+
/* ----------------------------------------------------------
|
|
164
|
+
LIBRARY SCALES
|
|
165
|
+
---------------------------------------------------------- */
|
|
166
|
+
/* Space scale */
|
|
167
|
+
/* Spacing rhythm — THE knob for how dense or airy this theme feels.
|
|
168
|
+
The numbered scale is the source of truth: every component reads
|
|
169
|
+
var(--space-N), and the t-shirt aliases (--space-md, --space-lg …)
|
|
170
|
+
are emitted by the library as references to these, so they follow
|
|
171
|
+
automatically. Change a value here and the whole page re-proportions.
|
|
172
|
+
Halve them for a compact UI; raise 4/5/6 for an airy editorial feel. */
|
|
173
|
+
--space-0: 0; /* flush */
|
|
174
|
+
--space-1: 0.5rem; /* tight inner gap */
|
|
175
|
+
--space-2: 0.75rem; /* control padding */
|
|
176
|
+
--space-3: 0.875rem; /* (no t-shirt) */
|
|
177
|
+
--space-4: 1rem; /* default rhythm */
|
|
178
|
+
--space-5: 1.5rem; /* section gap */
|
|
179
|
+
--space-6: 2rem; /* block gap */
|
|
180
|
+
--space-7: 3rem; /* major gap */
|
|
181
|
+
--space-8: 4rem; /* page section */
|
|
182
|
+
--space-9: 6rem; /* hero rhythm */
|
|
183
|
+
/* Radius alias */
|
|
184
|
+
--radius-sm: var(--r-sm);
|
|
185
|
+
--radius-md: var(--r-md);
|
|
186
|
+
--radius-lg: var(--r-lg);
|
|
187
|
+
--radius-xl: 0.75rem;
|
|
188
|
+
--radius-full: 9999px;
|
|
189
|
+
/* Typography */
|
|
190
|
+
--font-primary: var(--font-sans);
|
|
191
|
+
--font-size-base: 1rem;
|
|
192
|
+
--line-height-normal: 1.5;
|
|
193
|
+
--font-weight-medium: 500;
|
|
194
|
+
/* Z-index */
|
|
195
|
+
--z-sticky: 1020;
|
|
196
|
+
--z-dropdown: 1030;
|
|
197
|
+
--z-backdrop: 1040;
|
|
198
|
+
--z-modal: 1050;
|
|
199
|
+
--z-popover: 1060;
|
|
200
|
+
--z-tooltip: 1070;
|
|
201
|
+
}
|
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
@charset "UTF-8";
|
|
2
|
+
/* ============================================================
|
|
3
|
+
THEME — Liquid Glass (light)
|
|
4
|
+
-----------------------------------------------------------
|
|
5
|
+
Standalone file for `[data-theme="glass-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. --blur-md: none;).
|
|
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 (iOS indigo)
|
|
21
|
+
Seal : --shu, --shu-wash (iOS system pink)
|
|
22
|
+
Accent : --ochre, --ochre-wash (iOS orange)
|
|
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 (glass is the star here)
|
|
28
|
+
Glow : --glow-sm, --glow-md, --glow-lg (dual-inset rim light)
|
|
29
|
+
Motion : --duration-fast, --duration-normal, --duration-slow, --ease
|
|
30
|
+
|
|
31
|
+
NOTE ON MESH BACKGROUNDS
|
|
32
|
+
-----------------------------------------------------------
|
|
33
|
+
A page-level mesh gradient is NOT a theme token. The base
|
|
34
|
+
--paper slot is a pastel-tint white so surfaces look vibrant
|
|
35
|
+
out of the box; consumers who want the full visionOS mesh
|
|
36
|
+
should add a background-image at the page level themselves.
|
|
37
|
+
============================================================ */
|
|
38
|
+
@import 'https://fonts.googleapis.com/css2?family=Caveat:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;700&display=swap';
|
|
39
|
+
:root, :root[data-theme=glass-light] {
|
|
40
|
+
color-scheme: light;
|
|
41
|
+
/* Surfaces — frosted translucent over a lavender-tint base */
|
|
42
|
+
--paper: #F4EEFF;
|
|
43
|
+
--paper-raised: #FFF;
|
|
44
|
+
--paper-sunk: #E8E0F5;
|
|
45
|
+
--paper-glass: rgba(255, 255, 255, 0.55);
|
|
46
|
+
/* Ink — warm near-black, Apple style */
|
|
47
|
+
--ink: #1D1D1F;
|
|
48
|
+
--ink-soft: #3A3A3C;
|
|
49
|
+
--ink-faint: #65656A;
|
|
50
|
+
--graphite: #2C2C2E;
|
|
51
|
+
--muted: #6E6E73;
|
|
52
|
+
/* Construction lines — glass doesn't like hard edges */
|
|
53
|
+
--guide: rgba(29, 29, 31, 0.14);
|
|
54
|
+
--guide-soft: rgba(29, 29, 31, 0.10);
|
|
55
|
+
--hair: rgba(29, 29, 31, 0.08);
|
|
56
|
+
--hair-soft: rgba(29, 29, 31, 0.04);
|
|
57
|
+
/* Primary accent — iOS indigo */
|
|
58
|
+
--ai: #5957E2;
|
|
59
|
+
--ai-ink: #3634A3;
|
|
60
|
+
--ai-wash: rgba(89, 87, 226, 0.12);
|
|
61
|
+
/* Seal — iOS system pink (draft / emphasis) */
|
|
62
|
+
--shu: #FF375F;
|
|
63
|
+
--shu-wash: rgba(255, 55, 95, 0.12);
|
|
64
|
+
/* Draft / marginalia — iOS orange */
|
|
65
|
+
--ochre: #FF9500;
|
|
66
|
+
--ochre-wash: rgba(255, 149, 0, 0.14);
|
|
67
|
+
/* Code surface */
|
|
68
|
+
--code-bg: rgba(29, 29, 31, 0.82);
|
|
69
|
+
--code-ink: #F5F5F7;
|
|
70
|
+
--code-muted: #BABABE;
|
|
71
|
+
--code-accent: #FFD60A;
|
|
72
|
+
--code-green: #30D158;
|
|
73
|
+
--code-blue: #64D2FF;
|
|
74
|
+
/* Typography — SF system stack */
|
|
75
|
+
--font-display: -apple-system, BlinkMacSystemFont, 'SF Pro Display', 'Inter', system-ui, sans-serif;
|
|
76
|
+
--font-script: 'Caveat', 'Shadows Into Light', cursive;
|
|
77
|
+
--font-serif: -apple-system, BlinkMacSystemFont, 'SF Pro Text', 'Inter', Georgia, serif;
|
|
78
|
+
--font-sans: -apple-system, BlinkMacSystemFont, 'SF Pro Display', 'SF Pro Text', 'Inter', system-ui, sans-serif;
|
|
79
|
+
--font-mono: 'SF Mono', ui-monospace, 'JetBrains Mono', Menlo, Consolas, monospace;
|
|
80
|
+
/* Radius — soft and large, iOS-style */
|
|
81
|
+
--r-sm: 10px;
|
|
82
|
+
--r-md: 18px;
|
|
83
|
+
--r-lg: 24px;
|
|
84
|
+
/* Shadows — floaty with a cool-blue undertone */
|
|
85
|
+
--shadow-sm: 0 2px 10px rgba(31, 38, 135, 0.06);
|
|
86
|
+
--shadow-md: 0 8px 32px rgba(31, 38, 135, 0.10);
|
|
87
|
+
--shadow-lg: 0 24px 60px rgba(31, 38, 135, 0.14);
|
|
88
|
+
--shadow-xl: 0 40px 80px rgba(31, 38, 135, 0.18);
|
|
89
|
+
--shadow-2xl: 0 56px 112px rgba(31, 38, 135, 0.24);
|
|
90
|
+
/* Blur — the star of this theme; pair with --paper-glass */
|
|
91
|
+
--blur-sm: blur(14px) saturate(160%);
|
|
92
|
+
--blur-md: blur(22px) saturate(170%);
|
|
93
|
+
--blur-lg: blur(30px) saturate(180%);
|
|
94
|
+
/* Glow — dual-inset rim highlight (catches light like visionOS) */
|
|
95
|
+
--glow-sm: inset 0 1px 0 rgba(255, 255, 255, 0.70);
|
|
96
|
+
--glow-md:
|
|
97
|
+
inset 0 1px 0 rgba(255, 255, 255, 0.85),
|
|
98
|
+
inset 0 -1px 0 rgba(255, 255, 255, 0.20),
|
|
99
|
+
inset 1px 0 0 rgba(255, 255, 255, 0.35),
|
|
100
|
+
inset -1px 0 0 rgba(255, 255, 255, 0.20);
|
|
101
|
+
--glow-lg:
|
|
102
|
+
inset 0 2px 0 rgba(255, 255, 255, 0.95),
|
|
103
|
+
inset 0 -2px 0 rgba(255, 255, 255, 0.25),
|
|
104
|
+
inset 2px 0 0 rgba(255, 255, 255, 0.45),
|
|
105
|
+
inset -2px 0 0 rgba(255, 255, 255, 0.25),
|
|
106
|
+
inset 0 0 40px rgba(255, 255, 255, 0.15);
|
|
107
|
+
/* Motion */
|
|
108
|
+
--duration-fast: 180ms;
|
|
109
|
+
--duration-normal: 240ms;
|
|
110
|
+
--duration-slow: 380ms;
|
|
111
|
+
--ease: cubic-bezier(0.33, 0.66, 0.33, 1);
|
|
112
|
+
/* ----------------------------------------------------------
|
|
113
|
+
SEMANTIC ALIASES
|
|
114
|
+
-----------------------------------------------------------
|
|
115
|
+
Bridge the library's expected names to this theme's native
|
|
116
|
+
palette. Components can now write m.color(surface-default)
|
|
117
|
+
or var(--surface-default) and reskin with the theme
|
|
118
|
+
automatically.
|
|
119
|
+
---------------------------------------------------------- */
|
|
120
|
+
/* Backgrounds (page-level) */
|
|
121
|
+
--background-default: var(--paper);
|
|
122
|
+
--background-subtle: var(--paper-sunk);
|
|
123
|
+
--background-navbar: var(--paper-raised);
|
|
124
|
+
/* Surfaces */
|
|
125
|
+
--surface-default: var(--paper);
|
|
126
|
+
--surface-raised: var(--paper-raised);
|
|
127
|
+
--surface-sunk: var(--paper-sunk);
|
|
128
|
+
--surface-muted: var(--paper-sunk);
|
|
129
|
+
--surface-subtle: var(--paper-raised);
|
|
130
|
+
--surface-emphasis: var(--ink);
|
|
131
|
+
--surface-glass: var(--paper-glass);
|
|
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
|
+
/* Borders */
|
|
141
|
+
--border-default: var(--hair);
|
|
142
|
+
--border-subtle: var(--hair-soft);
|
|
143
|
+
--border-emphasis: var(--ink);
|
|
144
|
+
--border-focus: var(--ai);
|
|
145
|
+
/* Interactive (hover / active wash layers)
|
|
146
|
+
Kept subtle so glass translucency reads through. */
|
|
147
|
+
--interactive-hover: rgba(29, 29, 31, 0.04);
|
|
148
|
+
--interactive-active: rgba(29, 29, 31, 0.08);
|
|
149
|
+
/* Brand (identity — action-primary usually references these) */
|
|
150
|
+
--brand-primary: var(--ai);
|
|
151
|
+
--brand-primary-hover: var(--ai-ink);
|
|
152
|
+
/* Action (primary / secondary / tertiary) */
|
|
153
|
+
--action-primary-default: var(--ai);
|
|
154
|
+
--action-primary-hover: var(--ai-ink);
|
|
155
|
+
--action-primary-active: var(--ai-ink);
|
|
156
|
+
--action-primary-wash: var(--ai-wash);
|
|
157
|
+
--action-secondary-default: var(--shu);
|
|
158
|
+
--action-secondary-hover: var(--shu);
|
|
159
|
+
--action-secondary-active: var(--shu);
|
|
160
|
+
--action-secondary-wash: var(--shu-wash);
|
|
161
|
+
--action-tertiary-default: var(--ochre);
|
|
162
|
+
--action-tertiary-hover: var(--ochre);
|
|
163
|
+
--action-tertiary-active: var(--ochre);
|
|
164
|
+
--action-tertiary-wash: var(--ochre-wash);
|
|
165
|
+
/* Feedback / status (high-level semantic) */
|
|
166
|
+
--feedback-info: var(--ai);
|
|
167
|
+
--feedback-success: var(--code-green);
|
|
168
|
+
--feedback-warning: var(--ochre);
|
|
169
|
+
--feedback-error: var(--shu);
|
|
170
|
+
/* Status — info (three-part: default / subtle / text) */
|
|
171
|
+
--info-default: var(--ai);
|
|
172
|
+
--info-subtle: rgba(89, 87, 226, 0.12);
|
|
173
|
+
--info-text: var(--ai-ink);
|
|
174
|
+
/* Status — success (iOS system green) */
|
|
175
|
+
--success-default: #34C759;
|
|
176
|
+
--success-subtle: rgba(52, 199, 89, 0.12);
|
|
177
|
+
--success-text: #0F6A22;
|
|
178
|
+
/* Status — warning (iOS system orange) */
|
|
179
|
+
--warning-default: var(--ochre);
|
|
180
|
+
--warning-subtle: rgba(255, 149, 0, 0.12);
|
|
181
|
+
--warning-text: #985000;
|
|
182
|
+
/* Status — error (iOS system pink) */
|
|
183
|
+
--error-default: var(--shu);
|
|
184
|
+
--error-subtle: rgba(255, 55, 95, 0.12);
|
|
185
|
+
--error-text: #A3193A;
|
|
186
|
+
/* ----------------------------------------------------------
|
|
187
|
+
LIBRARY SCALES (space / radius / type / motion / z)
|
|
188
|
+
-----------------------------------------------------------
|
|
189
|
+
The library mixins emit var(--space-<key>), var(--radius-<key>),
|
|
190
|
+
var(--font-primary), var(--font-size-<key>), var(--z-<key>), …
|
|
191
|
+
Themes declare the slots so those mixins always resolve.
|
|
192
|
+
---------------------------------------------------------- */
|
|
193
|
+
/* Space scale (rem for accessibility) */
|
|
194
|
+
/* Spacing rhythm — THE knob for how dense or airy this theme feels.
|
|
195
|
+
The numbered scale is the source of truth: every component reads
|
|
196
|
+
var(--space-N), and the t-shirt aliases (--space-md, --space-lg …)
|
|
197
|
+
are emitted by the library as references to these, so they follow
|
|
198
|
+
automatically. Change a value here and the whole page re-proportions.
|
|
199
|
+
Halve them for a compact UI; raise 4/5/6 for an airy editorial feel. */
|
|
200
|
+
--space-0: 0; /* flush */
|
|
201
|
+
--space-1: 0.5rem; /* tight inner gap */
|
|
202
|
+
--space-2: 0.75rem; /* control padding */
|
|
203
|
+
--space-3: 0.875rem; /* (no t-shirt) */
|
|
204
|
+
--space-4: 1rem; /* default rhythm */
|
|
205
|
+
--space-5: 1.5rem; /* section gap */
|
|
206
|
+
--space-6: 2rem; /* block gap */
|
|
207
|
+
--space-7: 3rem; /* major gap */
|
|
208
|
+
--space-8: 4rem; /* page section */
|
|
209
|
+
--space-9: 6rem; /* hero rhythm */
|
|
210
|
+
/* Radius alias — mirrors --r-* with standard names so
|
|
211
|
+
`m.radius(size)` in the library finds --radius-<size>. */
|
|
212
|
+
--radius-sm: var(--r-sm);
|
|
213
|
+
--radius-md: var(--r-md);
|
|
214
|
+
--radius-lg: var(--r-lg);
|
|
215
|
+
--radius-xl: 0.75rem;
|
|
216
|
+
--radius-full: 9999px;
|
|
217
|
+
/* Typography — base body font + key scale slots */
|
|
218
|
+
--font-primary: var(--font-sans);
|
|
219
|
+
--font-size-base: 1rem;
|
|
220
|
+
--line-height-normal: 1.5;
|
|
221
|
+
--font-weight-medium: 500;
|
|
222
|
+
/* Z-index layers */
|
|
223
|
+
--z-sticky: 1020;
|
|
224
|
+
--z-dropdown: 1030;
|
|
225
|
+
--z-backdrop: 1040;
|
|
226
|
+
--z-modal: 1050;
|
|
227
|
+
--z-popover: 1060;
|
|
228
|
+
--z-tooltip: 1070;
|
|
229
|
+
}
|