@photon-ai/pho-ui 0.1.0 → 0.2.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/dist/chunks/button-GQALfaly.js +325 -0
- package/dist/chunks/button-GQALfaly.js.map +1 -0
- package/dist/chunks/{close-button-CbQNfpxU.js → close-button-DKaNIndU.js} +6 -6
- package/dist/chunks/{close-button-CbQNfpxU.js.map → close-button-DKaNIndU.js.map} +1 -1
- package/dist/chunks/{cn-D6jQqeRj.js → cn-7uGUzCOM.js} +2 -3
- package/dist/chunks/{cn-D6jQqeRj.js.map → cn-7uGUzCOM.js.map} +1 -1
- package/dist/chunks/{dialog-BSBF1Wyq.js → dialog-CyyL5VCc.js} +13 -13
- package/dist/chunks/dialog-CyyL5VCc.js.map +1 -0
- package/dist/chunks/{input-aZqjjV_m.js → input-DX7d5MlS.js} +3 -3
- package/dist/chunks/input-DX7d5MlS.js.map +1 -0
- package/dist/chunks/menu-BfaNHnOp.js +101 -0
- package/dist/chunks/menu-BfaNHnOp.js.map +1 -0
- package/dist/components/accordion.js +1 -1
- package/dist/components/alert-dialog.js +5 -5
- package/dist/components/alert-dialog.js.map +1 -1
- package/dist/components/autocomplete.js +7 -7
- package/dist/components/autocomplete.js.map +1 -1
- package/dist/components/avatar.js +1 -1
- package/dist/components/badge.js +2 -2
- package/dist/components/badge.js.map +1 -1
- package/dist/components/button.js +10 -11
- package/dist/components/checkbox.js +2 -2
- package/dist/components/checkbox.js.map +1 -1
- package/dist/components/collapsible.js +1 -1
- package/dist/components/combobox.js +53 -53
- package/dist/components/combobox.js.map +1 -1
- package/dist/components/context-menu.js +11 -11
- package/dist/components/context-menu.js.map +1 -1
- package/dist/components/dialog.js +1 -1
- package/dist/components/drawer.js +2 -2
- package/dist/components/drawer.js.map +1 -1
- package/dist/components/field.js +26 -26
- package/dist/components/field.js.map +1 -1
- package/dist/components/fieldset.js +1 -1
- package/dist/components/form.js +1 -1
- package/dist/components/input.js +1 -1
- package/dist/components/kbd.js +8 -8
- package/dist/components/kbd.js.map +1 -1
- package/dist/components/menu.js +1 -1
- package/dist/components/menubar.js +5 -5
- package/dist/components/menubar.js.map +1 -1
- package/dist/components/meter.js +1 -1
- package/dist/components/navigation-menu.js +34 -34
- package/dist/components/navigation-menu.js.map +1 -1
- package/dist/components/notification.js +16 -16
- package/dist/components/notification.js.map +1 -1
- package/dist/components/number-field.js +18 -18
- package/dist/components/number-field.js.map +1 -1
- package/dist/components/otp-field.js +6 -6
- package/dist/components/otp-field.js.map +1 -1
- package/dist/components/popover.js +9 -9
- package/dist/components/popover.js.map +1 -1
- package/dist/components/preview-card.js +12 -12
- package/dist/components/preview-card.js.map +1 -1
- package/dist/components/progress.js +1 -1
- package/dist/components/radio-group.js +9 -9
- package/dist/components/radio-group.js.map +1 -1
- package/dist/components/scroll-area.js +1 -1
- package/dist/components/select.js +10 -10
- package/dist/components/select.js.map +1 -1
- package/dist/components/separator.js +1 -1
- package/dist/components/slider.js +16 -16
- package/dist/components/slider.js.map +1 -1
- package/dist/components/switch.js +11 -11
- package/dist/components/switch.js.map +1 -1
- package/dist/components/tabs.js +15 -15
- package/dist/components/tabs.js.map +1 -1
- package/dist/components/toast.js +6 -6
- package/dist/components/toast.js.map +1 -1
- package/dist/components/toggle-group.js +1 -1
- package/dist/components/toggle.js +6 -6
- package/dist/components/toggle.js.map +1 -1
- package/dist/components/toolbar.js +7 -7
- package/dist/components/toolbar.js.map +1 -1
- package/dist/components/tooltip.js +14 -14
- package/dist/components/tooltip.js.map +1 -1
- package/dist/index.js +17 -18
- package/dist/src/components/button/button.d.ts +12 -35
- package/dist/src/components/button/index.d.ts +1 -1
- package/dist/src/components/menu/menu.d.ts +2 -2
- package/dist/utils.js +1 -1
- package/package.json +1 -1
- package/src/styles/fonts.css +22 -0
- package/src/styles/theme.css +166 -169
- package/dist/chunks/button-9pp4g7en.js +0 -334
- package/dist/chunks/button-9pp4g7en.js.map +0 -1
- package/dist/chunks/dialog-BSBF1Wyq.js.map +0 -1
- package/dist/chunks/input-aZqjjV_m.js.map +0 -1
- package/dist/chunks/menu-BkzDbNuX.js +0 -101
- package/dist/chunks/menu-BkzDbNuX.js.map +0 -1
package/src/styles/theme.css
CHANGED
|
@@ -9,40 +9,53 @@
|
|
|
9
9
|
* function, resolved by the `color-scheme` set in pho.css (`:root` = light,
|
|
10
10
|
* `[data-mode="dark"]` = dark). No duplicated dark-mode override block.
|
|
11
11
|
*
|
|
12
|
-
* Values are
|
|
13
|
-
*
|
|
14
|
-
*
|
|
12
|
+
* Values are extracted from photon.codes (Framer "Landing V1" color styles +
|
|
13
|
+
* published CSS) — the single source of truth. The system is monochrome:
|
|
14
|
+
* black/white surfaces with an alpha-based text hierarchy. "Brand" is the
|
|
15
|
+
* high-contrast action color (black in light, white in dark — the site's
|
|
16
|
+
* button fill), not a hue. Functional reds/greens and the categorical accent
|
|
17
|
+
* set below are the only chromatic tokens.
|
|
15
18
|
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
19
|
+
* `static` so every token is emitted as a CSS variable even when no utility
|
|
20
|
+
* references it — consumers (and the docs) address tokens directly with
|
|
21
|
+
* var(--color-pho-*) for charts, code themes, and inline swatches.
|
|
18
22
|
*/
|
|
19
23
|
|
|
20
|
-
@theme {
|
|
24
|
+
@theme static {
|
|
21
25
|
/* ============================== Fonts ============================== */
|
|
22
26
|
--font-sans:
|
|
23
27
|
"PolySans", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto,
|
|
24
28
|
Arial, sans-serif;
|
|
25
29
|
--font-display: var(--font-sans);
|
|
30
|
+
/* Serif accent — the site's italicized editorial voice. */
|
|
31
|
+
--font-serif: "Instrument Serif", ui-serif, Georgia, serif;
|
|
26
32
|
--font-mono:
|
|
27
33
|
"Azeret Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas,
|
|
28
34
|
"Liberation Mono", "Courier New", monospace;
|
|
29
35
|
|
|
30
|
-
/*
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
--color-
|
|
34
|
-
--color-
|
|
35
|
-
--color-
|
|
36
|
-
--color-
|
|
37
|
-
--color-
|
|
38
|
-
--color-
|
|
39
|
-
--color-
|
|
40
|
-
--color-
|
|
41
|
-
--color-
|
|
36
|
+
/* ================ Accent set (photon.codes palette) ================ */
|
|
37
|
+
/* The site's categorical colors — code syntax highlighting, charts,
|
|
38
|
+
avatars. Not for interactive states. */
|
|
39
|
+
--color-pho-yellow: #c3bb26;
|
|
40
|
+
--color-pho-blue: #365eb3;
|
|
41
|
+
--color-pho-sky: #3f88b6;
|
|
42
|
+
--color-pho-indigo: #6985e4;
|
|
43
|
+
--color-pho-purple: #bf6eff;
|
|
44
|
+
--color-pho-green: #36b35b;
|
|
45
|
+
--color-pho-orange: #e78016;
|
|
46
|
+
--color-pho-amber: #ffab2a;
|
|
47
|
+
--color-pho-navy: #1d2650;
|
|
48
|
+
|
|
49
|
+
/* ================== Functional anchors (site-exact) ================== */
|
|
50
|
+
--color-pho-red: #ff2244; /* site Button error state */
|
|
42
51
|
|
|
43
52
|
/* =========================== Type scale =========================== */
|
|
44
|
-
|
|
45
|
-
|
|
53
|
+
/* CLOSED scale — the reset removes Tailwind's default sizes (text-base,
|
|
54
|
+
text-2xl, …) so only these steps generate utilities. Body: 12/14/16/18/20.
|
|
55
|
+
Display: 24/32/40/48/60, the heading steps measured on photon.codes.
|
|
56
|
+
NOTE: the reset wipes the whole --text-* prefix; every --text-color-pho-*
|
|
57
|
+
token is declared AFTER this point in the file, so it survives. */
|
|
58
|
+
--text-*: initial;
|
|
46
59
|
--text-xs: 0.75rem;
|
|
47
60
|
--text-xs--line-height: 1.125rem;
|
|
48
61
|
--text-sm: 0.875rem;
|
|
@@ -54,22 +67,33 @@
|
|
|
54
67
|
--text-xl: 1.25rem;
|
|
55
68
|
--text-xl--line-height: 1.875rem;
|
|
56
69
|
|
|
70
|
+
/* Display sizes — site headings run tight (lh 1.05–1.3) with -0.02em
|
|
71
|
+
tracking, -0.04em at hero sizes. */
|
|
57
72
|
--text-display-xs: 1.5rem;
|
|
58
|
-
--text-display-xs--line-height:
|
|
59
|
-
--text-display-
|
|
60
|
-
--text-display-sm
|
|
61
|
-
--text-display-
|
|
73
|
+
--text-display-xs--line-height: 1.95rem;
|
|
74
|
+
--text-display-xs--letter-spacing: -0.02em;
|
|
75
|
+
--text-display-sm: 2rem;
|
|
76
|
+
--text-display-sm--line-height: 2.4rem;
|
|
77
|
+
--text-display-sm--letter-spacing: -0.02em;
|
|
78
|
+
--text-display-md: 2.5rem;
|
|
62
79
|
--text-display-md--line-height: 2.75rem;
|
|
63
|
-
--text-display-md--letter-spacing: -0.
|
|
80
|
+
--text-display-md--letter-spacing: -0.02em;
|
|
64
81
|
--text-display-lg: 3rem;
|
|
65
|
-
--text-display-lg--line-height: 3.
|
|
66
|
-
--text-display-lg--letter-spacing: -0.
|
|
82
|
+
--text-display-lg--line-height: 3.15rem;
|
|
83
|
+
--text-display-lg--letter-spacing: -0.02em;
|
|
67
84
|
--text-display-xl: 3.75rem;
|
|
68
|
-
--text-display-xl--line-height:
|
|
69
|
-
--text-display-xl--letter-spacing: -
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
85
|
+
--text-display-xl--line-height: 3.9375rem;
|
|
86
|
+
--text-display-xl--letter-spacing: -0.04em;
|
|
87
|
+
|
|
88
|
+
/* ========================== Font weights ========================== */
|
|
89
|
+
/* CLOSED set — Pho ships four weights; nothing else generates a utility:
|
|
90
|
+
font-light (300) display/marketing lines · font-normal (400) body ·
|
|
91
|
+
font-medium (500) UI controls · font-semibold (600) headings. */
|
|
92
|
+
--font-weight-*: initial;
|
|
93
|
+
--font-weight-light: 300;
|
|
94
|
+
--font-weight-normal: 400;
|
|
95
|
+
--font-weight-medium: 500;
|
|
96
|
+
--font-weight-semibold: 600;
|
|
73
97
|
|
|
74
98
|
/* ============================= Radius ============================= */
|
|
75
99
|
--radius-xs: 0.125rem;
|
|
@@ -81,209 +105,182 @@
|
|
|
81
105
|
--radius-3xl: 1.5rem;
|
|
82
106
|
|
|
83
107
|
/* ============================= Shadows ============================= */
|
|
84
|
-
|
|
108
|
+
/* Floating layers only (menus, popovers, dialogs). Cards and buttons are
|
|
109
|
+
flat on photon.codes — hairline borders carry the separation. */
|
|
110
|
+
--shadow-pho-xs: 0 1px 2px rgba(0, 0, 0, 0.05);
|
|
85
111
|
--shadow-pho-sm:
|
|
86
|
-
0 1px 3px rgba(
|
|
112
|
+
0 1px 3px rgba(0, 0, 0, 0.1), 0 1px 2px -1px rgba(0, 0, 0, 0.1);
|
|
87
113
|
--shadow-pho-md:
|
|
88
|
-
0 4px 6px -1px rgba(
|
|
114
|
+
0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.06);
|
|
89
115
|
--shadow-pho-lg:
|
|
90
|
-
0 12px 16px -4px rgba(
|
|
91
|
-
0 4px 6px -2px rgba(10, 13, 18, 0.03);
|
|
116
|
+
0 12px 16px -4px rgba(0, 0, 0, 0.08), 0 4px 6px -2px rgba(0, 0, 0, 0.03);
|
|
92
117
|
--shadow-pho-xl:
|
|
93
|
-
0 20px 24px -4px rgba(
|
|
94
|
-
0 8px 8px -4px rgba(10, 13, 18, 0.03);
|
|
95
|
-
/* Skeuomorphic inset edge used on solid buttons. */
|
|
96
|
-
--shadow-pho-skeuomorphic:
|
|
97
|
-
inset 0 0 0 1px rgba(10, 13, 18, 0.18),
|
|
98
|
-
inset 0 -2px 0 0 rgba(10, 13, 18, 0.05);
|
|
99
|
-
--shadow-pho-skeuo-xs: var(--shadow-pho-skeuomorphic), var(--shadow-pho-xs);
|
|
118
|
+
0 20px 24px -4px rgba(0, 0, 0, 0.08), 0 8px 8px -4px rgba(0, 0, 0, 0.03);
|
|
100
119
|
|
|
101
120
|
/* =================== Semantic: text (text-pho-*) =================== */
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
var(--color-neutral-50)
|
|
105
|
-
);
|
|
121
|
+
/* The site's "Font/*" styles: pure black/white stepped by alpha. */
|
|
122
|
+
--text-color-pho-primary: light-dark(#000, #fff);
|
|
106
123
|
--text-color-pho-secondary: light-dark(
|
|
107
|
-
|
|
108
|
-
|
|
124
|
+
rgba(0, 0, 0, 0.75),
|
|
125
|
+
rgba(255, 255, 255, 0.75)
|
|
109
126
|
);
|
|
110
127
|
--text-color-pho-secondary-hover: light-dark(
|
|
111
|
-
|
|
112
|
-
|
|
128
|
+
rgba(0, 0, 0, 0.85),
|
|
129
|
+
rgba(255, 255, 255, 0.85)
|
|
113
130
|
);
|
|
114
131
|
--text-color-pho-tertiary: light-dark(
|
|
115
|
-
|
|
116
|
-
|
|
132
|
+
rgba(0, 0, 0, 0.5),
|
|
133
|
+
rgba(255, 255, 255, 0.5)
|
|
117
134
|
);
|
|
118
135
|
--text-color-pho-tertiary-hover: light-dark(
|
|
119
|
-
|
|
120
|
-
|
|
136
|
+
rgba(0, 0, 0, 0.65),
|
|
137
|
+
rgba(255, 255, 255, 0.65)
|
|
121
138
|
);
|
|
122
139
|
--text-color-pho-quaternary: light-dark(
|
|
123
|
-
|
|
124
|
-
|
|
140
|
+
rgba(0, 0, 0, 0.4),
|
|
141
|
+
rgba(255, 255, 255, 0.4)
|
|
142
|
+
);
|
|
143
|
+
--text-color-pho-placeholder: light-dark(
|
|
144
|
+
rgba(0, 0, 0, 0.4),
|
|
145
|
+
rgba(255, 255, 255, 0.4)
|
|
125
146
|
);
|
|
126
|
-
--text-color-pho-placeholder: var(--color-neutral-500);
|
|
127
147
|
--text-color-pho-disabled: light-dark(
|
|
128
|
-
|
|
129
|
-
|
|
148
|
+
rgba(0, 0, 0, 0.25),
|
|
149
|
+
rgba(255, 255, 255, 0.25)
|
|
130
150
|
);
|
|
131
151
|
--text-color-pho-white: #fff;
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
);
|
|
136
|
-
--text-color-pho-brand
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
);
|
|
140
|
-
--text-color-pho-
|
|
141
|
-
|
|
142
|
-
var(--color-red-400)
|
|
143
|
-
);
|
|
144
|
-
--text-color-pho-error-hover: light-dark(
|
|
145
|
-
var(--color-red-700),
|
|
146
|
-
var(--color-red-300)
|
|
147
|
-
);
|
|
148
|
-
--text-color-pho-success: light-dark(
|
|
149
|
-
var(--color-green-600),
|
|
150
|
-
var(--color-green-400)
|
|
151
|
-
);
|
|
152
|
-
--text-color-pho-warning: light-dark(
|
|
153
|
-
var(--color-yellow-600),
|
|
154
|
-
var(--color-yellow-400)
|
|
155
|
-
);
|
|
152
|
+
/* Content sitting on bg-pho-brand-solid (button labels, check marks…). */
|
|
153
|
+
--text-color-pho-on-brand: light-dark(#fff, #000);
|
|
154
|
+
/* Content sitting on bg-pho-inverse. */
|
|
155
|
+
--text-color-pho-inverse: light-dark(#fff, #101010);
|
|
156
|
+
--text-color-pho-brand: light-dark(#000, #fff);
|
|
157
|
+
--text-color-pho-brand-hover: light-dark(#000, #fff);
|
|
158
|
+
--text-color-pho-error: light-dark(#d61f3d, #ff5c75);
|
|
159
|
+
--text-color-pho-error-hover: light-dark(#b81a34, #ff8095);
|
|
160
|
+
--text-color-pho-success: light-dark(#2a8a46, #4cc571);
|
|
161
|
+
--text-color-pho-warning: light-dark(#a86a00, #ffab2a);
|
|
156
162
|
|
|
157
163
|
/* ============ Semantic: foreground/icons (text-fg-pho-*) ============ */
|
|
158
|
-
--text-color-fg-pho-primary: light-dark(
|
|
159
|
-
var(--color-neutral-900),
|
|
160
|
-
var(--color-white)
|
|
161
|
-
);
|
|
164
|
+
--text-color-fg-pho-primary: light-dark(#000, #fff);
|
|
162
165
|
--text-color-fg-pho-secondary: light-dark(
|
|
163
|
-
|
|
164
|
-
|
|
166
|
+
rgba(0, 0, 0, 0.75),
|
|
167
|
+
rgba(255, 255, 255, 0.75)
|
|
165
168
|
);
|
|
166
169
|
--text-color-fg-pho-quaternary: light-dark(
|
|
167
|
-
|
|
168
|
-
|
|
170
|
+
rgba(0, 0, 0, 0.3),
|
|
171
|
+
rgba(255, 255, 255, 0.3)
|
|
169
172
|
);
|
|
170
173
|
--text-color-fg-pho-quaternary-hover: light-dark(
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
);
|
|
174
|
-
--text-color-fg-pho-brand: light-dark(
|
|
175
|
-
var(--color-brand-600),
|
|
176
|
-
var(--color-brand-500)
|
|
177
|
-
);
|
|
178
|
-
--text-color-fg-pho-error: light-dark(
|
|
179
|
-
var(--color-red-500),
|
|
180
|
-
var(--color-red-400)
|
|
174
|
+
rgba(0, 0, 0, 0.45),
|
|
175
|
+
rgba(255, 255, 255, 0.45)
|
|
181
176
|
);
|
|
177
|
+
--text-color-fg-pho-brand: light-dark(#000, #fff);
|
|
178
|
+
--text-color-fg-pho-error: light-dark(#e01e3d, #ff5c75);
|
|
182
179
|
|
|
183
180
|
/* =============== Semantic: background (bg-pho-*) =============== */
|
|
184
|
-
|
|
185
|
-
--background-color-pho-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
);
|
|
189
|
-
--background-color-pho-secondary: light-dark(
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
);
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
);
|
|
197
|
-
--background-color-pho-tertiary: light-dark(
|
|
198
|
-
var(--color-neutral-100),
|
|
199
|
-
var(--color-neutral-800)
|
|
200
|
-
);
|
|
201
|
-
--background-color-pho-quaternary: light-dark(
|
|
202
|
-
var(--color-neutral-200),
|
|
203
|
-
var(--color-neutral-700)
|
|
204
|
-
);
|
|
181
|
+
/* App/page canvas — the site's "Primary BG". */
|
|
182
|
+
--background-color-pho-page: light-dark(#f5f5f7, #000);
|
|
183
|
+
/* Main surface: cards, inputs, panels — the site's "BG/Card". */
|
|
184
|
+
--background-color-pho-primary: light-dark(#fff, #101010);
|
|
185
|
+
--background-color-pho-primary-hover: light-dark(#f5f5f7, #1a1a1a);
|
|
186
|
+
--background-color-pho-secondary: light-dark(#f5f5f7, #0b0b0b);
|
|
187
|
+
--background-color-pho-secondary-hover: light-dark(#eee, #161616);
|
|
188
|
+
--background-color-pho-tertiary: light-dark(#eee, #202020);
|
|
189
|
+
--background-color-pho-quaternary: light-dark(#e2e2e4, #2e2e2e);
|
|
190
|
+
/* Inverted chip surface — the site's "msgbbl" (dark chip in light mode,
|
|
191
|
+
light chip in dark mode). Pair with text-pho-inverse. */
|
|
192
|
+
--background-color-pho-inverse: light-dark(#202020, #eee);
|
|
205
193
|
--background-color-pho-disabled: light-dark(
|
|
206
|
-
|
|
207
|
-
|
|
194
|
+
rgba(0, 0, 0, 0.05),
|
|
195
|
+
rgba(255, 255, 255, 0.05)
|
|
208
196
|
);
|
|
209
|
-
|
|
197
|
+
/* High-contrast action fill — the site's button. Pair with
|
|
198
|
+
text-pho-on-brand, never text-white. */
|
|
199
|
+
--background-color-pho-brand-solid: light-dark(#000, #fff);
|
|
210
200
|
--background-color-pho-brand-solid-hover: light-dark(
|
|
211
|
-
|
|
212
|
-
|
|
201
|
+
rgba(16, 16, 16, 0.85),
|
|
202
|
+
#eee
|
|
213
203
|
);
|
|
214
204
|
--background-color-pho-brand-secondary: light-dark(
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
);
|
|
218
|
-
--background-color-pho-error-solid: var(--color-red-600);
|
|
219
|
-
--background-color-pho-error-solid-hover: light-dark(
|
|
220
|
-
var(--color-red-700),
|
|
221
|
-
var(--color-red-500)
|
|
205
|
+
rgba(0, 0, 0, 0.05),
|
|
206
|
+
rgba(255, 255, 255, 0.05)
|
|
222
207
|
);
|
|
208
|
+
/* Knob/dot sitting on brand-solid (switch thumb, radio indicator). */
|
|
209
|
+
--background-color-pho-on-brand: light-dark(#fff, #000);
|
|
210
|
+
--background-color-pho-error-solid: #ff2244;
|
|
211
|
+
--background-color-pho-error-solid-hover: light-dark(#e01e3d, #ff4761);
|
|
223
212
|
--background-color-pho-error-primary: light-dark(
|
|
224
|
-
|
|
225
|
-
|
|
213
|
+
rgba(255, 34, 68, 0.08),
|
|
214
|
+
rgba(255, 34, 68, 0.15)
|
|
226
215
|
);
|
|
227
|
-
/* Quiet hover wash for ghost surfaces
|
|
216
|
+
/* Quiet hover wash for ghost surfaces — the site's "Font/5%". */
|
|
228
217
|
--background-color-pho-ghost-hover: light-dark(
|
|
229
|
-
rgba(
|
|
230
|
-
rgba(255, 255, 255, 0.
|
|
218
|
+
rgba(0, 0, 0, 0.05),
|
|
219
|
+
rgba(255, 255, 255, 0.05)
|
|
231
220
|
);
|
|
232
|
-
/* Modal/scrim backdrop
|
|
233
|
-
callers layer their own alpha). */
|
|
221
|
+
/* Modal/scrim backdrop. */
|
|
234
222
|
--background-color-pho-overlay: light-dark(
|
|
235
|
-
rgba(
|
|
223
|
+
rgba(0, 0, 0, 0.5),
|
|
236
224
|
rgba(0, 0, 0, 0.6)
|
|
237
225
|
);
|
|
238
226
|
|
|
239
227
|
/* ================ Semantic: border (border-pho-*) ================ */
|
|
228
|
+
/* Strong edge — inputs, interactive outlines. */
|
|
240
229
|
--border-color-pho-primary: light-dark(
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
);
|
|
244
|
-
--border-color-pho-secondary: light-dark(
|
|
245
|
-
var(--color-neutral-200),
|
|
246
|
-
var(--color-neutral-800)
|
|
230
|
+
rgba(0, 0, 0, 0.15),
|
|
231
|
+
rgba(255, 255, 255, 0.15)
|
|
247
232
|
);
|
|
233
|
+
/* Hairline card stroke — the site's "BG/Card Stroke". */
|
|
234
|
+
--border-color-pho-secondary: light-dark(#eee, #202020);
|
|
248
235
|
--border-color-pho-tertiary: light-dark(
|
|
249
|
-
|
|
250
|
-
|
|
236
|
+
rgba(0, 0, 0, 0.05),
|
|
237
|
+
rgba(255, 255, 255, 0.05)
|
|
251
238
|
);
|
|
239
|
+
/* Selected/focus edge — monochrome at 40%, matching ring/outline-pho-brand. */
|
|
252
240
|
--border-color-pho-brand: light-dark(
|
|
253
|
-
|
|
254
|
-
|
|
241
|
+
rgba(0, 0, 0, 0.4),
|
|
242
|
+
rgba(255, 255, 255, 0.4)
|
|
255
243
|
);
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
244
|
+
/* Hairline edge for elements ON a brand-solid fill (EffectButton pill). */
|
|
245
|
+
--border-color-pho-on-brand: light-dark(
|
|
246
|
+
rgba(255, 255, 255, 0.15),
|
|
247
|
+
rgba(0, 0, 0, 0.08)
|
|
259
248
|
);
|
|
249
|
+
--border-color-pho-error: #ff2244;
|
|
260
250
|
--border-color-pho-error-subtle: light-dark(
|
|
261
|
-
|
|
262
|
-
|
|
251
|
+
rgba(255, 34, 68, 0.3),
|
|
252
|
+
rgba(255, 34, 68, 0.4)
|
|
263
253
|
);
|
|
264
254
|
/* Hairline interactive edge shared by hover/selected surfaces. */
|
|
265
255
|
--border-color-pho-interactive: light-dark(
|
|
266
|
-
rgba(
|
|
256
|
+
rgba(0, 0, 0, 0.1),
|
|
267
257
|
rgba(255, 255, 255, 0.1)
|
|
268
258
|
);
|
|
269
259
|
|
|
270
260
|
/* ================== Semantic: ring (ring-pho-*) ================== */
|
|
271
261
|
--ring-color-pho-primary: light-dark(
|
|
272
|
-
|
|
273
|
-
|
|
262
|
+
rgba(0, 0, 0, 0.15),
|
|
263
|
+
rgba(255, 255, 255, 0.15)
|
|
274
264
|
);
|
|
275
|
-
--ring-color-pho-
|
|
276
|
-
--ring-color-pho-
|
|
265
|
+
--ring-color-pho-secondary: light-dark(#eee, #202020);
|
|
266
|
+
--ring-color-pho-brand: light-dark(
|
|
267
|
+
rgba(0, 0, 0, 0.4),
|
|
268
|
+
rgba(255, 255, 255, 0.4)
|
|
269
|
+
);
|
|
270
|
+
--ring-color-pho-error: #ff2244;
|
|
277
271
|
--ring-color-pho-error-subtle: light-dark(
|
|
278
|
-
|
|
279
|
-
|
|
272
|
+
rgba(255, 34, 68, 0.3),
|
|
273
|
+
rgba(255, 34, 68, 0.4)
|
|
280
274
|
);
|
|
281
275
|
--ring-color-pho-interactive: light-dark(
|
|
282
|
-
rgba(
|
|
276
|
+
rgba(0, 0, 0, 0.1),
|
|
283
277
|
rgba(255, 255, 255, 0.1)
|
|
284
278
|
);
|
|
285
279
|
|
|
286
280
|
/* ============== Semantic: outline (focus rings) ============== */
|
|
287
|
-
--outline-color-pho-brand:
|
|
288
|
-
|
|
281
|
+
--outline-color-pho-brand: light-dark(
|
|
282
|
+
rgba(0, 0, 0, 0.4),
|
|
283
|
+
rgba(255, 255, 255, 0.4)
|
|
284
|
+
);
|
|
285
|
+
--outline-color-pho-error: #ff2244;
|
|
289
286
|
}
|