matefluency 1.0.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/LICENSE +78 -0
- package/README.md +219 -0
- package/dist/base.css +132 -0
- package/dist/components.css +184 -0
- package/dist/matefluency.css +562 -0
- package/dist/tailwind.css +18 -0
- package/dist/utilities.css +264 -0
- package/index.js +43 -0
- package/package.json +38 -0
|
@@ -0,0 +1,562 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* MateFluency Design System v1.0.0
|
|
3
|
+
* EcoWestern Naturalism Design Language
|
|
4
|
+
* Copyright (c) 2026 EcoWestern. All rights reserved.
|
|
5
|
+
* https://ecowestern.net
|
|
6
|
+
*
|
|
7
|
+
* Proprietary license — free to use, no derivatives or redistribution.
|
|
8
|
+
* See LICENSE or https://ecowestern.net/matefluency/license for full terms.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* MateFluency Design System — Base Layer
|
|
13
|
+
*
|
|
14
|
+
* Foundational body styles, CSS custom properties (design tokens),
|
|
15
|
+
* resets, and the signature fractal noise texture.
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
/* ─── Design Tokens ──────────────────────────── */
|
|
19
|
+
|
|
20
|
+
:root {
|
|
21
|
+
/* Brand colors */
|
|
22
|
+
--mf-green: #086d00;
|
|
23
|
+
--mf-green-focus: #1db100;
|
|
24
|
+
--mf-green-hover: #065a00;
|
|
25
|
+
|
|
26
|
+
/* Neutrals */
|
|
27
|
+
--mf-ink: #1d1d1f;
|
|
28
|
+
--mf-text-2: #515154;
|
|
29
|
+
--mf-text-3: #6e6e73;
|
|
30
|
+
--mf-separator: #e8e8ed;
|
|
31
|
+
--mf-canvas: #f7f7f2;
|
|
32
|
+
|
|
33
|
+
/* Typography */
|
|
34
|
+
--mf-font: "Google Sans", system-ui, -apple-system, BlinkMacSystemFont,
|
|
35
|
+
"Segoe UI", Roboto, sans-serif;
|
|
36
|
+
--mf-font-mono: source-code-pro, Menlo, Monaco, Consolas, "Courier New", monospace;
|
|
37
|
+
|
|
38
|
+
/* Easing — "release" feel: fast start, very soft landing */
|
|
39
|
+
--mf-ease: cubic-bezier(0.25, 1, 0.5, 1);
|
|
40
|
+
|
|
41
|
+
/* Radius */
|
|
42
|
+
--mf-radius-organic: 2rem;
|
|
43
|
+
|
|
44
|
+
/* Noise texture (inline SVG — no external request needed) */
|
|
45
|
+
--mf-noise: url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.65' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.03'/%3E%3C/svg%3E");
|
|
46
|
+
--mf-noise-surface: url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.5' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/* ─── Document ──────────────────────────────── */
|
|
50
|
+
|
|
51
|
+
html {
|
|
52
|
+
scroll-behavior: smooth;
|
|
53
|
+
box-sizing: border-box;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
*,
|
|
57
|
+
*::before,
|
|
58
|
+
*::after {
|
|
59
|
+
box-sizing: inherit;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/* ─── Body ───────────────────────────────────── */
|
|
63
|
+
|
|
64
|
+
body {
|
|
65
|
+
font-family: var(--mf-font);
|
|
66
|
+
font-weight: 400;
|
|
67
|
+
-webkit-font-smoothing: antialiased;
|
|
68
|
+
-moz-osx-font-smoothing: grayscale;
|
|
69
|
+
line-height: 1.6;
|
|
70
|
+
color: var(--mf-ink);
|
|
71
|
+
background-color: var(--mf-canvas);
|
|
72
|
+
background-image: var(--mf-noise);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/* ─── Focus & Accessibility ──────────────────── */
|
|
76
|
+
|
|
77
|
+
button:focus-visible,
|
|
78
|
+
a:focus-visible,
|
|
79
|
+
input:focus-visible,
|
|
80
|
+
textarea:focus-visible,
|
|
81
|
+
select:focus-visible {
|
|
82
|
+
outline: 2px solid var(--mf-green-focus);
|
|
83
|
+
outline-offset: 2px;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
button:focus,
|
|
87
|
+
a:focus {
|
|
88
|
+
outline: 2px solid var(--mf-green-focus);
|
|
89
|
+
outline-offset: 2px;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/* ─── Resets ─────────────────────────────────── */
|
|
93
|
+
|
|
94
|
+
code,
|
|
95
|
+
pre,
|
|
96
|
+
kbd,
|
|
97
|
+
samp {
|
|
98
|
+
font-family: var(--mf-font-mono);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
ul,
|
|
102
|
+
ol {
|
|
103
|
+
list-style: none;
|
|
104
|
+
padding: 0;
|
|
105
|
+
margin: 0;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
a {
|
|
109
|
+
text-decoration: none;
|
|
110
|
+
color: inherit;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
img,
|
|
114
|
+
video,
|
|
115
|
+
svg {
|
|
116
|
+
display: block;
|
|
117
|
+
max-width: 100%;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
h1,
|
|
121
|
+
h2,
|
|
122
|
+
h3,
|
|
123
|
+
h4,
|
|
124
|
+
h5,
|
|
125
|
+
h6 {
|
|
126
|
+
margin: 0;
|
|
127
|
+
line-height: 1.1;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
p {
|
|
131
|
+
margin: 0;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
* MateFluency Design System — Components Layer
|
|
136
|
+
*
|
|
137
|
+
* The core MateFluency surface system (.biodegradable),
|
|
138
|
+
* buttons, and geometry helpers. No Tailwind required —
|
|
139
|
+
* these are plain CSS classes that work in any framework.
|
|
140
|
+
*/
|
|
141
|
+
|
|
142
|
+
/* ─── Surfaces ───────────────────────────────── */
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* .biodegradable
|
|
146
|
+
* The signature MateFluency surface. Frosted glass, but
|
|
147
|
+
* warmer and more grounded — like sunlight through paper.
|
|
148
|
+
*
|
|
149
|
+
* Usage: apply to any card, panel, navbar, or hero section.
|
|
150
|
+
*/
|
|
151
|
+
.biodegradable {
|
|
152
|
+
background-color: rgba(255, 255, 255, 0.82);
|
|
153
|
+
backdrop-filter: blur(32px) saturate(110%);
|
|
154
|
+
-webkit-backdrop-filter: blur(32px) saturate(110%);
|
|
155
|
+
|
|
156
|
+
border: 1px solid rgba(0, 0, 0, 0.04);
|
|
157
|
+
box-shadow:
|
|
158
|
+
0 2px 4px -1px rgba(0, 0, 0, 0.01),
|
|
159
|
+
inset 0 0 0 1px rgba(255, 255, 255, 0.5);
|
|
160
|
+
/* Tactile physical edge */
|
|
161
|
+
|
|
162
|
+
transition: all 0.5s var(--mf-ease, cubic-bezier(0.25, 1, 0.5, 1));
|
|
163
|
+
position: relative;
|
|
164
|
+
overflow: hidden;
|
|
165
|
+
/* Clips the ::before noise overlay */
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
/* Physical texture overlay — layered fractal noise on every surface */
|
|
169
|
+
.biodegradable::before {
|
|
170
|
+
content: "";
|
|
171
|
+
position: absolute;
|
|
172
|
+
inset: 0;
|
|
173
|
+
pointer-events: none;
|
|
174
|
+
opacity: 0.02;
|
|
175
|
+
background-image: var(--mf-noise-surface,
|
|
176
|
+
url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.5' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E"));
|
|
177
|
+
z-index: 0;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
/* Ensure direct children sit above the texture overlay */
|
|
181
|
+
.biodegradable>* {
|
|
182
|
+
position: relative;
|
|
183
|
+
z-index: 1;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
.biodegradable:hover {
|
|
187
|
+
background-color: rgba(255, 255, 255, 0.9);
|
|
188
|
+
border-color: rgba(0, 0, 0, 0.08);
|
|
189
|
+
transform: translateY(-2px);
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
/**
|
|
193
|
+
* .biodegradable-dark
|
|
194
|
+
* Dark variant for sidebars, modals, and dark-mode surfaces.
|
|
195
|
+
*/
|
|
196
|
+
.biodegradable-dark {
|
|
197
|
+
background-color: rgba(29, 29, 31, 0.85);
|
|
198
|
+
backdrop-filter: blur(30px);
|
|
199
|
+
-webkit-backdrop-filter: blur(30px);
|
|
200
|
+
border: 1px solid rgba(255, 255, 255, 0.1);
|
|
201
|
+
color: #ffffff;
|
|
202
|
+
position: relative;
|
|
203
|
+
overflow: hidden;
|
|
204
|
+
transition: all 0.5s var(--mf-ease, cubic-bezier(0.25, 1, 0.5, 1));
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
.biodegradable-dark::before {
|
|
208
|
+
content: "";
|
|
209
|
+
position: absolute;
|
|
210
|
+
inset: 0;
|
|
211
|
+
pointer-events: none;
|
|
212
|
+
opacity: 0.03;
|
|
213
|
+
background-image: var(--mf-noise-surface,
|
|
214
|
+
url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.5' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E"));
|
|
215
|
+
z-index: 0;
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
.biodegradable-dark>* {
|
|
219
|
+
position: relative;
|
|
220
|
+
z-index: 1;
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
/* ─── Geometry ───────────────────────────────── */
|
|
224
|
+
|
|
225
|
+
/**
|
|
226
|
+
* .rounded-organic
|
|
227
|
+
* The signature leaf-like corner radius (2rem).
|
|
228
|
+
* Pair with .biodegradable on every card and panel.
|
|
229
|
+
*/
|
|
230
|
+
.rounded-organic {
|
|
231
|
+
border-radius: var(--mf-radius-organic, 2rem);
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
/* ─── Buttons ────────────────────────────────── */
|
|
235
|
+
|
|
236
|
+
/**
|
|
237
|
+
* .mate-button
|
|
238
|
+
* Base button styles. Always pair with a variant:
|
|
239
|
+
* .mate-button-primary — brand green CTA
|
|
240
|
+
* .mate-button-secondary — neutral grey action
|
|
241
|
+
*/
|
|
242
|
+
.mate-button {
|
|
243
|
+
display: inline-flex;
|
|
244
|
+
align-items: center;
|
|
245
|
+
justify-content: center;
|
|
246
|
+
gap: 0.5rem;
|
|
247
|
+
padding: 0.625rem 1.5rem;
|
|
248
|
+
/* py-2.5 px-6 */
|
|
249
|
+
border-radius: 9999px;
|
|
250
|
+
/* pill shape */
|
|
251
|
+
font-size: 0.875rem;
|
|
252
|
+
/* text-sm */
|
|
253
|
+
font-weight: 600;
|
|
254
|
+
font-family: var(--mf-font, inherit);
|
|
255
|
+
border: none;
|
|
256
|
+
cursor: pointer;
|
|
257
|
+
text-decoration: none;
|
|
258
|
+
transition: all 0.2s ease;
|
|
259
|
+
white-space: nowrap;
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
.mate-button-primary {
|
|
263
|
+
background-color: var(--mf-green, #086d00);
|
|
264
|
+
color: #ffffff;
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
.mate-button-primary:hover {
|
|
268
|
+
background-color: var(--mf-green-hover, #065a00);
|
|
269
|
+
transform: scale(1.02);
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
.mate-button-secondary {
|
|
273
|
+
background-color: #e5e7eb;
|
|
274
|
+
color: var(--mf-ink, #1d1d1f);
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
.mate-button-secondary:hover {
|
|
278
|
+
background-color: #d1d5db;
|
|
279
|
+
transform: scale(1.02);
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
/* ─── Accent Bar ─────────────────────────────── */
|
|
283
|
+
|
|
284
|
+
/**
|
|
285
|
+
* .mate-accent-bar
|
|
286
|
+
* The animated green bar used on feature cards.
|
|
287
|
+
* Grows from 3rem → 6rem when a parent has .group:hover
|
|
288
|
+
* (Tailwind) OR when a parent has the .is-hovered class.
|
|
289
|
+
*
|
|
290
|
+
* For Tailwind v4 users: use group-hover:w-24 inline.
|
|
291
|
+
*/
|
|
292
|
+
.mate-accent-bar {
|
|
293
|
+
height: 0.375rem;
|
|
294
|
+
/* h-1.5 */
|
|
295
|
+
width: 3rem;
|
|
296
|
+
/* w-12 */
|
|
297
|
+
background-color: var(--mf-green, #086d00);
|
|
298
|
+
border-radius: 9999px;
|
|
299
|
+
transition: width 0.5s var(--mf-ease, cubic-bezier(0.25, 1, 0.5, 1));
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
/* Works when a parent container gains .is-hovered on mouseenter */
|
|
303
|
+
.is-hovered .mate-accent-bar,
|
|
304
|
+
:hover>.mate-accent-bar {
|
|
305
|
+
width: 6rem;
|
|
306
|
+
/* w-24 */
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
/**
|
|
310
|
+
* MateFluency Design System — Utilities & Motion Layer
|
|
311
|
+
*
|
|
312
|
+
* Animation keyframes, utility classes, and the full animation
|
|
313
|
+
* vocabulary used across the MateFluency design language.
|
|
314
|
+
*/
|
|
315
|
+
|
|
316
|
+
/* ─── Keyframes ──────────────────────────────── */
|
|
317
|
+
|
|
318
|
+
@keyframes mf-fade-in-up {
|
|
319
|
+
from {
|
|
320
|
+
opacity: 0;
|
|
321
|
+
transform: translateY(20px);
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
to {
|
|
325
|
+
opacity: 1;
|
|
326
|
+
transform: translateY(0);
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
@keyframes mf-scroll {
|
|
331
|
+
0% {
|
|
332
|
+
transform: translateX(0);
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
100% {
|
|
336
|
+
transform: translateX(-50%);
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
@keyframes mf-scroll-reverse {
|
|
341
|
+
0% {
|
|
342
|
+
transform: translateX(-50%);
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
100% {
|
|
346
|
+
transform: translateX(0);
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
@keyframes mf-blob {
|
|
351
|
+
0% {
|
|
352
|
+
transform: translate(0px, 0px) scale(1);
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
33% {
|
|
356
|
+
transform: translate(30px, -50px) scale(1.1);
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
66% {
|
|
360
|
+
transform: translate(-20px, 20px) scale(0.9);
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
100% {
|
|
364
|
+
transform: translate(0px, 0px) scale(1);
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
@keyframes mf-float {
|
|
369
|
+
0% {
|
|
370
|
+
transform: translateY(0px);
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
50% {
|
|
374
|
+
transform: translateY(-20px);
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
100% {
|
|
378
|
+
transform: translateY(0px);
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
|
|
382
|
+
@keyframes mf-breathe {
|
|
383
|
+
|
|
384
|
+
0%,
|
|
385
|
+
100% {
|
|
386
|
+
transform: scale(1);
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
50% {
|
|
390
|
+
transform: scale(1.05);
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
/* ─── Animation Utility Classes ──────────────── */
|
|
395
|
+
|
|
396
|
+
/**
|
|
397
|
+
* .mf-animate-in
|
|
398
|
+
* Page-entry animation — fades content up from 20px.
|
|
399
|
+
* Apply to the first visible section on each page.
|
|
400
|
+
*/
|
|
401
|
+
.mf-animate-in {
|
|
402
|
+
animation: mf-fade-in-up 0.8s cubic-bezier(0.16, 1, 0.3, 1) forwards;
|
|
403
|
+
}
|
|
404
|
+
|
|
405
|
+
/**
|
|
406
|
+
* .mf-scroll / .mf-scroll-reverse
|
|
407
|
+
* Infinite marquee strip. Apply to TWO duplicate containers
|
|
408
|
+
* inside a parent with overflow: hidden; display: flex.
|
|
409
|
+
* Both children must have the same class to avoid a reset flash.
|
|
410
|
+
*/
|
|
411
|
+
.mf-scroll {
|
|
412
|
+
animation: mf-scroll 20s linear infinite;
|
|
413
|
+
}
|
|
414
|
+
|
|
415
|
+
.mf-scroll-reverse {
|
|
416
|
+
animation: mf-scroll-reverse 20s linear infinite;
|
|
417
|
+
}
|
|
418
|
+
|
|
419
|
+
/**
|
|
420
|
+
* .mf-blob
|
|
421
|
+
* Ambient background blob drift. Use on large blurred circles
|
|
422
|
+
* behind hero sections.
|
|
423
|
+
*/
|
|
424
|
+
.mf-blob {
|
|
425
|
+
animation: mf-blob 7s infinite;
|
|
426
|
+
}
|
|
427
|
+
|
|
428
|
+
/**
|
|
429
|
+
* .mf-float
|
|
430
|
+
* Slow vertical float. Great for illustration SVGs or product
|
|
431
|
+
* images in hero sections.
|
|
432
|
+
*/
|
|
433
|
+
.mf-float {
|
|
434
|
+
animation: mf-float 6s ease-in-out infinite;
|
|
435
|
+
}
|
|
436
|
+
|
|
437
|
+
/**
|
|
438
|
+
* .mf-breathe
|
|
439
|
+
* Subtle scale pulse. Use on ambient background shapes to make
|
|
440
|
+
* them feel alive.
|
|
441
|
+
*/
|
|
442
|
+
.mf-breathe {
|
|
443
|
+
animation: mf-breathe 4s ease-in-out infinite;
|
|
444
|
+
}
|
|
445
|
+
|
|
446
|
+
/* ─── Text Utilities ─────────────────────────── */
|
|
447
|
+
|
|
448
|
+
/**
|
|
449
|
+
* .mf-text-balance
|
|
450
|
+
* Prevents awkward single-word last lines in headings.
|
|
451
|
+
* Especially useful on H1/H2 copy.
|
|
452
|
+
*/
|
|
453
|
+
.mf-text-balance {
|
|
454
|
+
text-wrap: balance;
|
|
455
|
+
}
|
|
456
|
+
|
|
457
|
+
/* ─── Layout Utilities ───────────────────────── */
|
|
458
|
+
|
|
459
|
+
/**
|
|
460
|
+
* .mf-container
|
|
461
|
+
* The standard MateFluency page container.
|
|
462
|
+
* max-width: 72rem (1152px), centered, with responsive horizontal padding.
|
|
463
|
+
*/
|
|
464
|
+
.mf-container {
|
|
465
|
+
max-width: 72rem;
|
|
466
|
+
margin-left: auto;
|
|
467
|
+
margin-right: auto;
|
|
468
|
+
padding-left: 1.5rem;
|
|
469
|
+
/* px-6 */
|
|
470
|
+
padding-right: 1.5rem;
|
|
471
|
+
}
|
|
472
|
+
|
|
473
|
+
@media (min-width: 768px) {
|
|
474
|
+
.mf-container {
|
|
475
|
+
padding-left: 2.5rem;
|
|
476
|
+
/* md:px-10 */
|
|
477
|
+
padding-right: 2.5rem;
|
|
478
|
+
}
|
|
479
|
+
}
|
|
480
|
+
|
|
481
|
+
/* ─── Typography Presets ─────────────────────── */
|
|
482
|
+
|
|
483
|
+
/**
|
|
484
|
+
* These classes mirror the canonical MateFluency type scale.
|
|
485
|
+
* You don't have to use them — they're provided as a convenience
|
|
486
|
+
* for non-Tailwind projects.
|
|
487
|
+
*/
|
|
488
|
+
|
|
489
|
+
.mf-eyebrow {
|
|
490
|
+
font-size: 0.65rem;
|
|
491
|
+
font-weight: 700;
|
|
492
|
+
text-transform: uppercase;
|
|
493
|
+
letter-spacing: 0.3em;
|
|
494
|
+
color: var(--mf-green, #086d00);
|
|
495
|
+
}
|
|
496
|
+
|
|
497
|
+
@media (min-width: 768px) {
|
|
498
|
+
.mf-eyebrow {
|
|
499
|
+
font-size: 0.75rem;
|
|
500
|
+
}
|
|
501
|
+
}
|
|
502
|
+
|
|
503
|
+
.mf-h1 {
|
|
504
|
+
font-size: 2.25rem;
|
|
505
|
+
/* text-4xl */
|
|
506
|
+
font-weight: 800;
|
|
507
|
+
letter-spacing: -0.025em;
|
|
508
|
+
line-height: 1.05;
|
|
509
|
+
color: var(--mf-ink, #1d1d1f);
|
|
510
|
+
text-wrap: balance;
|
|
511
|
+
}
|
|
512
|
+
|
|
513
|
+
@media (min-width: 640px) {
|
|
514
|
+
.mf-h1 {
|
|
515
|
+
font-size: 3rem;
|
|
516
|
+
}
|
|
517
|
+
}
|
|
518
|
+
|
|
519
|
+
/* sm:text-5xl */
|
|
520
|
+
@media (min-width: 768px) {
|
|
521
|
+
.mf-h1 {
|
|
522
|
+
font-size: 4.5rem;
|
|
523
|
+
}
|
|
524
|
+
}
|
|
525
|
+
|
|
526
|
+
/* md:text-7xl */
|
|
527
|
+
|
|
528
|
+
.mf-h2 {
|
|
529
|
+
font-size: 1.875rem;
|
|
530
|
+
/* text-3xl */
|
|
531
|
+
font-weight: 700;
|
|
532
|
+
letter-spacing: -0.025em;
|
|
533
|
+
color: var(--mf-ink, #1d1d1f);
|
|
534
|
+
}
|
|
535
|
+
|
|
536
|
+
.mf-h3 {
|
|
537
|
+
font-size: 1.5rem;
|
|
538
|
+
/* text-2xl */
|
|
539
|
+
font-weight: 700;
|
|
540
|
+
color: var(--mf-ink, #1d1d1f);
|
|
541
|
+
}
|
|
542
|
+
|
|
543
|
+
.mf-body {
|
|
544
|
+
font-size: 1rem;
|
|
545
|
+
font-weight: 500;
|
|
546
|
+
line-height: 1.75;
|
|
547
|
+
color: var(--mf-text-2, #515154);
|
|
548
|
+
text-wrap: balance;
|
|
549
|
+
}
|
|
550
|
+
|
|
551
|
+
@media (min-width: 768px) {
|
|
552
|
+
.mf-body {
|
|
553
|
+
font-size: 1.25rem;
|
|
554
|
+
/* md:text-xl */
|
|
555
|
+
}
|
|
556
|
+
}
|
|
557
|
+
|
|
558
|
+
.mf-meta {
|
|
559
|
+
font-size: 0.75rem;
|
|
560
|
+
font-weight: 600;
|
|
561
|
+
color: var(--mf-text-3, #6e6e73);
|
|
562
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* MateFluency — Tailwind CSS v4 Add-on v1.0.0
|
|
3
|
+
* Import this file in your globals.css (before or after @import "tailwindcss")
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
@import "./matefluency.css";
|
|
7
|
+
|
|
8
|
+
@theme {
|
|
9
|
+
--font-sans: var(--mf-font);
|
|
10
|
+
--font-display: var(--mf-font);
|
|
11
|
+
|
|
12
|
+
--animate-scroll: mf-scroll 20s linear infinite;
|
|
13
|
+
--animate-scroll-reverse: mf-scroll-reverse 20s linear infinite;
|
|
14
|
+
--animate-blob: mf-blob 7s infinite;
|
|
15
|
+
--animate-float: mf-float 6s ease-in-out infinite;
|
|
16
|
+
--animate-breathe: mf-breathe 4s ease-in-out infinite;
|
|
17
|
+
--animate-in-up: mf-fade-in-up 0.8s cubic-bezier(0.16, 1, 0.3, 1) forwards;
|
|
18
|
+
}
|