create-bearnie 0.3.0 → 0.4.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/README.md +0 -8
- package/dist/index.js +1 -208
- package/package.json +1 -1
- package/template/src/styles/global.css +17 -4
package/README.md
CHANGED
|
@@ -24,14 +24,6 @@ npx create-bearnie my-app --full
|
|
|
24
24
|
|
|
25
25
|
This fetches all components from the registry and installs them in your project.
|
|
26
26
|
|
|
27
|
-
### `--theme`
|
|
28
|
-
|
|
29
|
-
Apply a custom theme from the [theme builder](https://bearnie.dev/create-bearnie-theme):
|
|
30
|
-
|
|
31
|
-
```bash
|
|
32
|
-
npx create-bearnie my-app --theme="https://bearnie.dev/create-bearnie-theme#..."
|
|
33
|
-
```
|
|
34
|
-
|
|
35
27
|
## What's included
|
|
36
28
|
|
|
37
29
|
- Astro 5 with TypeScript
|
package/dist/index.js
CHANGED
|
@@ -10,11 +10,6 @@ var __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
|
10
10
|
var amber = (text) => pc.yellow(text);
|
|
11
11
|
var logo = `${amber("\u{1F43B}")} ${pc.bold("bearnie")}`;
|
|
12
12
|
var link = (text, url) => `\x1B]8;;${url}\x07${pc.cyan(text)}\x1B]8;;\x07`;
|
|
13
|
-
function parseThemeArg() {
|
|
14
|
-
const themeArg = process.argv.find((arg) => arg.startsWith("--theme="));
|
|
15
|
-
if (!themeArg) return null;
|
|
16
|
-
return themeArg.split("=")[1];
|
|
17
|
-
}
|
|
18
13
|
function parseFullArg() {
|
|
19
14
|
return process.argv.includes("--full");
|
|
20
15
|
}
|
|
@@ -86,209 +81,13 @@ async function fetchUtility(name) {
|
|
|
86
81
|
return null;
|
|
87
82
|
}
|
|
88
83
|
}
|
|
89
|
-
function extractThemeHash(themeUrl) {
|
|
90
|
-
try {
|
|
91
|
-
const hashIndex = themeUrl.indexOf("#");
|
|
92
|
-
if (hashIndex === -1) return null;
|
|
93
|
-
return themeUrl.slice(hashIndex + 1);
|
|
94
|
-
} catch {
|
|
95
|
-
return null;
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
function decodeThemeConfig(hash) {
|
|
99
|
-
try {
|
|
100
|
-
const decoded = Buffer.from(hash, "base64").toString("utf-8");
|
|
101
|
-
return JSON.parse(decoded);
|
|
102
|
-
} catch {
|
|
103
|
-
return null;
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
function oklch(l, c, h) {
|
|
107
|
-
return `oklch(${l} ${c} ${h})`;
|
|
108
|
-
}
|
|
109
|
-
function generateThemeCSS(config) {
|
|
110
|
-
const radiusRem = config.radius / 16;
|
|
111
|
-
const fontFamily = config.font === "geist" ? "'Geist', sans-serif" : "Inter, sans-serif";
|
|
112
|
-
const neutralChroma = config.neutralHue > 0 ? 0.01 : 0;
|
|
113
|
-
const lightPrimary = config.primaryHue === 0 ? "oklch(0.205 0 0)" : oklch(0.55, 0.2, config.primaryHue);
|
|
114
|
-
const lightPrimaryFg = "oklch(0.985 0 0)";
|
|
115
|
-
const darkPrimary = config.primaryHue === 0 ? "oklch(0.985 0 0)" : oklch(0.7, 0.2, config.primaryHue);
|
|
116
|
-
const darkPrimaryFg = "oklch(0.205 0 0)";
|
|
117
|
-
return `@import "tailwindcss";
|
|
118
|
-
@plugin "@tailwindcss/forms";
|
|
119
|
-
|
|
120
|
-
@theme {
|
|
121
|
-
/* Typography */
|
|
122
|
-
--font-sans: ${fontFamily};
|
|
123
|
-
--font-mono: Geist Mono, monospace;
|
|
124
|
-
|
|
125
|
-
/* Border Radius - Base: ${radiusRem}rem */
|
|
126
|
-
--radius-sm: calc(var(--radius) - 4px);
|
|
127
|
-
--radius-md: calc(var(--radius) - 2px);
|
|
128
|
-
--radius-lg: var(--radius);
|
|
129
|
-
--radius-xl: calc(var(--radius) + 4px);
|
|
130
|
-
--radius-2xl: calc(var(--radius) + 8px);
|
|
131
|
-
--radius-full: 9999px;
|
|
132
|
-
|
|
133
|
-
/* Shadows */
|
|
134
|
-
--shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);
|
|
135
|
-
--shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
|
|
136
|
-
--shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
@theme inline {
|
|
140
|
-
/* Semantic Colors */
|
|
141
|
-
--color-background: var(--background);
|
|
142
|
-
--color-foreground: var(--foreground);
|
|
143
|
-
--color-card: var(--card);
|
|
144
|
-
--color-card-foreground: var(--card-foreground);
|
|
145
|
-
--color-popover: var(--popover);
|
|
146
|
-
--color-popover-foreground: var(--popover-foreground);
|
|
147
|
-
--color-primary: var(--primary);
|
|
148
|
-
--color-primary-foreground: var(--primary-foreground);
|
|
149
|
-
--color-secondary: var(--secondary);
|
|
150
|
-
--color-secondary-foreground: var(--secondary-foreground);
|
|
151
|
-
--color-muted: var(--muted);
|
|
152
|
-
--color-muted-foreground: var(--muted-foreground);
|
|
153
|
-
--color-accent: var(--accent);
|
|
154
|
-
--color-accent-foreground: var(--accent-foreground);
|
|
155
|
-
--color-destructive: var(--destructive);
|
|
156
|
-
--color-destructive-foreground: var(--destructive-foreground);
|
|
157
|
-
--color-success: var(--success);
|
|
158
|
-
--color-success-foreground: var(--success-foreground);
|
|
159
|
-
--color-warning: var(--warning);
|
|
160
|
-
--color-warning-foreground: var(--warning-foreground);
|
|
161
|
-
--color-info: var(--info);
|
|
162
|
-
--color-info-foreground: var(--info-foreground);
|
|
163
|
-
--color-border: var(--border);
|
|
164
|
-
--color-input: var(--input);
|
|
165
|
-
--color-ring: var(--ring);
|
|
166
|
-
--color-chart-1: var(--chart-1);
|
|
167
|
-
--color-chart-2: var(--chart-2);
|
|
168
|
-
--color-chart-3: var(--chart-3);
|
|
169
|
-
--color-chart-4: var(--chart-4);
|
|
170
|
-
--color-chart-5: var(--chart-5);
|
|
171
|
-
|
|
172
|
-
/* Sidebar Colors */
|
|
173
|
-
--color-sidebar: var(--sidebar);
|
|
174
|
-
--color-sidebar-foreground: var(--sidebar-foreground);
|
|
175
|
-
--color-sidebar-primary: var(--sidebar-primary);
|
|
176
|
-
--color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
|
|
177
|
-
--color-sidebar-accent: var(--sidebar-accent);
|
|
178
|
-
--color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
|
|
179
|
-
--color-sidebar-border: var(--sidebar-border);
|
|
180
|
-
--color-sidebar-ring: var(--sidebar-ring);
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
:root {
|
|
184
|
-
--radius: ${radiusRem}rem;
|
|
185
|
-
--background: ${oklch(1, neutralChroma, config.neutralHue)};
|
|
186
|
-
--foreground: ${oklch(0.145, neutralChroma, config.neutralHue)};
|
|
187
|
-
--card: ${oklch(1, neutralChroma, config.neutralHue)};
|
|
188
|
-
--card-foreground: ${oklch(0.145, neutralChroma, config.neutralHue)};
|
|
189
|
-
--popover: ${oklch(1, neutralChroma, config.neutralHue)};
|
|
190
|
-
--popover-foreground: ${oklch(0.145, neutralChroma, config.neutralHue)};
|
|
191
|
-
--primary: ${lightPrimary};
|
|
192
|
-
--primary-foreground: ${lightPrimaryFg};
|
|
193
|
-
--secondary: ${oklch(0.97, neutralChroma, config.neutralHue)};
|
|
194
|
-
--secondary-foreground: ${oklch(0.205, neutralChroma, config.neutralHue)};
|
|
195
|
-
--muted: ${oklch(0.97, neutralChroma, config.neutralHue)};
|
|
196
|
-
--muted-foreground: ${oklch(0.556, neutralChroma, config.neutralHue)};
|
|
197
|
-
--accent: ${oklch(0.97, neutralChroma, config.neutralHue)};
|
|
198
|
-
--accent-foreground: ${oklch(0.205, neutralChroma, config.neutralHue)};
|
|
199
|
-
--destructive: ${oklch(0.577, 0.245, config.destructiveHue)};
|
|
200
|
-
--destructive-foreground: ${oklch(0.577, 0.245, config.destructiveHue)};
|
|
201
|
-
--success: ${oklch(0.564, 0.168, config.successHue)};
|
|
202
|
-
--success-foreground: ${oklch(0.564, 0.168, config.successHue)};
|
|
203
|
-
--warning: ${oklch(0.681, 0.15, config.warningHue)};
|
|
204
|
-
--warning-foreground: ${oklch(0.681, 0.15, config.warningHue)};
|
|
205
|
-
--info: ${oklch(0.609, 0.202, config.infoHue)};
|
|
206
|
-
--info-foreground: ${oklch(0.609, 0.202, config.infoHue)};
|
|
207
|
-
--border: ${oklch(0.922, neutralChroma, config.neutralHue)};
|
|
208
|
-
--input: ${oklch(0.922, neutralChroma, config.neutralHue)};
|
|
209
|
-
--ring: ${oklch(0.708, neutralChroma, config.neutralHue)};
|
|
210
|
-
--chart-1: oklch(0.646 0.222 41.116);
|
|
211
|
-
--chart-2: oklch(0.6 0.118 184.704);
|
|
212
|
-
--chart-3: oklch(0.398 0.07 227.392);
|
|
213
|
-
--chart-4: oklch(0.828 0.189 84.429);
|
|
214
|
-
--chart-5: oklch(0.769 0.188 70.08);
|
|
215
|
-
|
|
216
|
-
/* Sidebar */
|
|
217
|
-
--sidebar: ${oklch(0.985, neutralChroma, config.neutralHue)};
|
|
218
|
-
--sidebar-foreground: ${oklch(0.145, neutralChroma, config.neutralHue)};
|
|
219
|
-
--sidebar-primary: ${lightPrimary};
|
|
220
|
-
--sidebar-primary-foreground: ${lightPrimaryFg};
|
|
221
|
-
--sidebar-accent: ${oklch(0.97, neutralChroma, config.neutralHue)};
|
|
222
|
-
--sidebar-accent-foreground: ${oklch(0.205, neutralChroma, config.neutralHue)};
|
|
223
|
-
--sidebar-border: ${oklch(0.922, neutralChroma, config.neutralHue)};
|
|
224
|
-
--sidebar-ring: ${oklch(0.708, neutralChroma, config.neutralHue)};
|
|
225
|
-
}
|
|
226
|
-
|
|
227
|
-
.dark {
|
|
228
|
-
--background: ${oklch(0.145, neutralChroma, config.neutralHue)};
|
|
229
|
-
--foreground: ${oklch(0.985, neutralChroma, config.neutralHue)};
|
|
230
|
-
--card: ${oklch(0.145, neutralChroma, config.neutralHue)};
|
|
231
|
-
--card-foreground: ${oklch(0.985, neutralChroma, config.neutralHue)};
|
|
232
|
-
--popover: ${oklch(0.145, neutralChroma, config.neutralHue)};
|
|
233
|
-
--popover-foreground: ${oklch(0.985, neutralChroma, config.neutralHue)};
|
|
234
|
-
--primary: ${darkPrimary};
|
|
235
|
-
--primary-foreground: ${darkPrimaryFg};
|
|
236
|
-
--secondary: ${oklch(0.269, neutralChroma, config.neutralHue)};
|
|
237
|
-
--secondary-foreground: ${oklch(0.985, neutralChroma, config.neutralHue)};
|
|
238
|
-
--muted: ${oklch(0.269, neutralChroma, config.neutralHue)};
|
|
239
|
-
--muted-foreground: ${oklch(0.708, neutralChroma, config.neutralHue)};
|
|
240
|
-
--accent: ${oklch(0.269, neutralChroma, config.neutralHue)};
|
|
241
|
-
--accent-foreground: ${oklch(0.985, neutralChroma, config.neutralHue)};
|
|
242
|
-
--destructive: ${oklch(0.65, 0.245, config.destructiveHue)};
|
|
243
|
-
--destructive-foreground: oklch(0.985 0 0);
|
|
244
|
-
--success: ${oklch(0.634, 0.168, config.successHue)};
|
|
245
|
-
--success-foreground: oklch(0.985 0 0);
|
|
246
|
-
--warning: ${oklch(0.785, 0.15, config.warningHue)};
|
|
247
|
-
--warning-foreground: oklch(0.985 0 0);
|
|
248
|
-
--info: ${oklch(0.701, 0.202, config.infoHue)};
|
|
249
|
-
--info-foreground: oklch(0.985 0 0);
|
|
250
|
-
--border: ${oklch(0.269, neutralChroma, config.neutralHue)};
|
|
251
|
-
--input: ${oklch(0.269, neutralChroma, config.neutralHue)};
|
|
252
|
-
--ring: ${oklch(0.439, neutralChroma, config.neutralHue)};
|
|
253
|
-
--chart-1: oklch(0.488 0.243 264.376);
|
|
254
|
-
--chart-2: oklch(0.696 0.17 162.48);
|
|
255
|
-
--chart-3: oklch(0.769 0.188 70.08);
|
|
256
|
-
--chart-4: oklch(0.627 0.265 303.9);
|
|
257
|
-
--chart-5: oklch(0.645 0.246 16.439);
|
|
258
|
-
|
|
259
|
-
/* Sidebar */
|
|
260
|
-
--sidebar: ${oklch(0.205, neutralChroma, config.neutralHue)};
|
|
261
|
-
--sidebar-foreground: ${oklch(0.985, neutralChroma, config.neutralHue)};
|
|
262
|
-
--sidebar-primary: ${config.primaryHue === 0 ? "oklch(0.488 0.243 264.376)" : oklch(0.7, 0.2, config.primaryHue)};
|
|
263
|
-
--sidebar-primary-foreground: oklch(0.985 0 0);
|
|
264
|
-
--sidebar-accent: ${oklch(0.269, neutralChroma, config.neutralHue)};
|
|
265
|
-
--sidebar-accent-foreground: ${oklch(0.985, neutralChroma, config.neutralHue)};
|
|
266
|
-
--sidebar-border: ${oklch(0.269, neutralChroma, config.neutralHue)};
|
|
267
|
-
--sidebar-ring: ${oklch(0.439, neutralChroma, config.neutralHue)};
|
|
268
|
-
}
|
|
269
|
-
|
|
270
|
-
/* Base styles */
|
|
271
|
-
* {
|
|
272
|
-
border-color: var(--border);
|
|
273
|
-
}
|
|
274
|
-
`;
|
|
275
|
-
}
|
|
276
84
|
async function main() {
|
|
277
|
-
const themeUrl = parseThemeArg();
|
|
278
85
|
const fullInstall = parseFullArg();
|
|
279
|
-
let themeConfig = null;
|
|
280
|
-
if (themeUrl) {
|
|
281
|
-
const hash = extractThemeHash(themeUrl);
|
|
282
|
-
if (hash) {
|
|
283
|
-
themeConfig = decodeThemeConfig(hash);
|
|
284
|
-
}
|
|
285
|
-
}
|
|
286
86
|
console.log(`
|
|
287
87
|
${logo}
|
|
288
88
|
|
|
289
89
|
${amber("Hey!")} Let's create your Bearnie project.
|
|
290
|
-
${
|
|
291
|
-
` : ""}${fullInstall ? ` ${pc.dim("Full install: including all components")}
|
|
90
|
+
${fullInstall ? ` ${pc.dim("Full install: including all components")}
|
|
292
91
|
` : ""}
|
|
293
92
|
`);
|
|
294
93
|
let projectName = process.argv.find(
|
|
@@ -341,12 +140,6 @@ ${themeConfig ? ` ${pc.dim("Using custom theme from URL")}
|
|
|
341
140
|
const pkg = await fs.readJson(pkgPath);
|
|
342
141
|
pkg.name = finalName;
|
|
343
142
|
await fs.writeJson(pkgPath, pkg, { spaces: 2 });
|
|
344
|
-
if (themeConfig) {
|
|
345
|
-
const globalCssPath = path.join(targetDir, "src", "styles", "global.css");
|
|
346
|
-
const customCSS = generateThemeCSS(themeConfig);
|
|
347
|
-
await fs.writeFile(globalCssPath, customCSS);
|
|
348
|
-
console.log(` ${pc.green("\u2713")} Applied custom theme`);
|
|
349
|
-
}
|
|
350
143
|
if (fullInstall) {
|
|
351
144
|
console.log(`
|
|
352
145
|
${pc.dim("Fetching components from registry...")}
|
package/package.json
CHANGED
|
@@ -14,10 +14,14 @@
|
|
|
14
14
|
--radius-2xl: calc(var(--radius) + 8px);
|
|
15
15
|
--radius-full: 9999px;
|
|
16
16
|
|
|
17
|
-
/* Shadows */
|
|
18
|
-
--shadow-
|
|
19
|
-
--shadow-
|
|
20
|
-
--shadow
|
|
17
|
+
/* Shadows - Layered elevation scale */
|
|
18
|
+
--shadow-xs: rgba(14, 63, 126, 0.03) 0px 0px 0px 1px, rgba(42, 51, 69, 0.03) 0px 1px 1px -0.5px;
|
|
19
|
+
--shadow-sm: rgba(14, 63, 126, 0.04) 0px 0px 0px 1px, rgba(42, 51, 69, 0.04) 0px 1px 1px -0.5px, rgba(42, 51, 70, 0.04) 0px 2px 2px -1px;
|
|
20
|
+
--shadow: rgba(14, 63, 126, 0.04) 0px 0px 0px 1px, rgba(42, 51, 69, 0.04) 0px 1px 1px -0.5px, rgba(42, 51, 70, 0.04) 0px 3px 3px -1.5px, rgba(42, 51, 70, 0.04) 0px 6px 6px -3px, rgba(14, 63, 126, 0.04) 0px 12px 12px -6px, rgba(14, 63, 126, 0.04) 0px 24px 24px -12px;
|
|
21
|
+
--shadow-md: rgba(14, 63, 126, 0.06) 0px 0px 0px 1px, rgba(42, 51, 69, 0.06) 0px 1px 1px -0.5px, rgba(42, 51, 70, 0.06) 0px 3px 3px -1.5px, rgba(42, 51, 70, 0.06) 0px 6px 6px -3px, rgba(14, 63, 126, 0.06) 0px 12px 12px -6px, rgba(14, 63, 126, 0.06) 0px 24px 24px -12px;
|
|
22
|
+
--shadow-lg: rgba(14, 63, 126, 0.07) 0px 0px 0px 1px, rgba(42, 51, 69, 0.07) 0px 1px 1px -0.5px, rgba(42, 51, 70, 0.07) 0px 4px 4px -2px, rgba(42, 51, 70, 0.07) 0px 8px 8px -4px, rgba(14, 63, 126, 0.07) 0px 16px 16px -8px, rgba(14, 63, 126, 0.07) 0px 32px 32px -16px;
|
|
23
|
+
--shadow-xl: rgba(14, 63, 126, 0.08) 0px 0px 0px 1px, rgba(42, 51, 69, 0.08) 0px 2px 2px -1px, rgba(42, 51, 70, 0.08) 0px 6px 6px -3px, rgba(42, 51, 70, 0.08) 0px 12px 12px -6px, rgba(14, 63, 126, 0.08) 0px 24px 24px -12px, rgba(14, 63, 126, 0.08) 0px 48px 48px -24px;
|
|
24
|
+
--shadow-2xl: rgba(14, 63, 126, 0.1) 0px 0px 0px 1px, rgba(42, 51, 69, 0.1) 0px 3px 3px -1.5px, rgba(42, 51, 70, 0.1) 0px 8px 8px -4px, rgba(42, 51, 70, 0.1) 0px 16px 16px -8px, rgba(14, 63, 126, 0.1) 0px 32px 32px -16px, rgba(14, 63, 126, 0.1) 0px 64px 64px -32px;
|
|
21
25
|
}
|
|
22
26
|
|
|
23
27
|
@theme inline {
|
|
@@ -149,6 +153,15 @@
|
|
|
149
153
|
--sidebar-accent-foreground: oklch(0.985 0 0);
|
|
150
154
|
--sidebar-border: oklch(0.269 0 0);
|
|
151
155
|
--sidebar-ring: oklch(0.439 0 0);
|
|
156
|
+
|
|
157
|
+
/* Dark mode shadows */
|
|
158
|
+
--shadow-xs: rgba(0, 0, 0, 0.12) 0px 0px 0px 1px, rgba(0, 0, 0, 0.1) 0px 1px 1px -0.5px;
|
|
159
|
+
--shadow-sm: rgba(0, 0, 0, 0.15) 0px 0px 0px 1px, rgba(0, 0, 0, 0.12) 0px 1px 1px -0.5px, rgba(0, 0, 0, 0.12) 0px 2px 2px -1px;
|
|
160
|
+
--shadow: rgba(0, 0, 0, 0.15) 0px 0px 0px 1px, rgba(0, 0, 0, 0.15) 0px 1px 1px -0.5px, rgba(0, 0, 0, 0.15) 0px 3px 3px -1.5px, rgba(0, 0, 0, 0.15) 0px 6px 6px -3px, rgba(0, 0, 0, 0.15) 0px 12px 12px -6px, rgba(0, 0, 0, 0.15) 0px 24px 24px -12px;
|
|
161
|
+
--shadow-md: rgba(0, 0, 0, 0.2) 0px 0px 0px 1px, rgba(0, 0, 0, 0.18) 0px 1px 1px -0.5px, rgba(0, 0, 0, 0.18) 0px 3px 3px -1.5px, rgba(0, 0, 0, 0.18) 0px 6px 6px -3px, rgba(0, 0, 0, 0.18) 0px 12px 12px -6px, rgba(0, 0, 0, 0.18) 0px 24px 24px -12px;
|
|
162
|
+
--shadow-lg: rgba(0, 0, 0, 0.25) 0px 0px 0px 1px, rgba(0, 0, 0, 0.2) 0px 1px 1px -0.5px, rgba(0, 0, 0, 0.2) 0px 4px 4px -2px, rgba(0, 0, 0, 0.2) 0px 8px 8px -4px, rgba(0, 0, 0, 0.2) 0px 16px 16px -8px, rgba(0, 0, 0, 0.2) 0px 32px 32px -16px;
|
|
163
|
+
--shadow-xl: rgba(0, 0, 0, 0.3) 0px 0px 0px 1px, rgba(0, 0, 0, 0.25) 0px 2px 2px -1px, rgba(0, 0, 0, 0.25) 0px 6px 6px -3px, rgba(0, 0, 0, 0.25) 0px 12px 12px -6px, rgba(0, 0, 0, 0.25) 0px 24px 24px -12px, rgba(0, 0, 0, 0.25) 0px 48px 48px -24px;
|
|
164
|
+
--shadow-2xl: rgba(0, 0, 0, 0.35) 0px 0px 0px 1px, rgba(0, 0, 0, 0.3) 0px 3px 3px -1.5px, rgba(0, 0, 0, 0.3) 0px 8px 8px -4px, rgba(0, 0, 0, 0.3) 0px 16px 16px -8px, rgba(0, 0, 0, 0.3) 0px 32px 32px -16px, rgba(0, 0, 0, 0.3) 0px 64px 64px -32px;
|
|
152
165
|
}
|
|
153
166
|
|
|
154
167
|
/* Base styles */
|