@rafael_dias/akoma 0.3.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.
@@ -0,0 +1,328 @@
1
+ /* Akoma Design System — foundations
2
+ *
3
+ * One family, two expressions:
4
+ * App (default / data-mood="app") — tactile, optimistic and relaxed
5
+ * Site (data-mood="site") — composed, precise and trustworthy
6
+ *
7
+ * The component API stays identical. Mood only changes design tokens.
8
+ */
9
+
10
+ @import url('https://fonts.googleapis.com/css2?family=DM+Sans:opsz,wght@9..40,400..700&family=Lora:ital,wght@0,500;0,600;1,500&display=swap');
11
+
12
+ :root {
13
+ /* Shared family DNA */
14
+ --font-display: 'DM Sans', system-ui, -apple-system, sans-serif;
15
+ --font-body: 'DM Sans', system-ui, -apple-system, sans-serif;
16
+ --font-editorial: 'Lora', Georgia, serif;
17
+ --font-mono: 'SFMono-Regular', Consolas, 'Liberation Mono', monospace;
18
+
19
+ --space-1: 4px;
20
+ --space-2: 8px;
21
+ --space-3: 12px;
22
+ --space-4: 16px;
23
+ --space-5: 20px;
24
+ --space-6: 24px;
25
+ --space-8: 32px;
26
+ --space-10: 40px;
27
+ --space-12: 48px;
28
+ --space-16: 64px;
29
+
30
+ --radius-full: 9999px;
31
+
32
+ --page-pad-x: 20px;
33
+ --page-pad-top: 28px;
34
+ --page-pad-bottom: 24px;
35
+ --shell-max: 480px;
36
+ --nav-height: 68px;
37
+ --safe-bottom: env(safe-area-inset-bottom, 0px);
38
+ --safe-top: env(safe-area-inset-top, 0px);
39
+
40
+ --ease-out-expo: cubic-bezier(0.16, 1, 0.3, 1);
41
+ --ease-spring: cubic-bezier(0.22, 1, 0.36, 1);
42
+ --ease-smooth: cubic-bezier(0.4, 0, 0.2, 1);
43
+ --transition: 180ms cubic-bezier(0.4, 0, 0.2, 1);
44
+
45
+ /* App expression — warm stone + soft violet */
46
+ --bg: #f8f6f1;
47
+ --bg-elevated: #fffefa;
48
+ --bg-soft: #f0ede6;
49
+ --bg-muted: #e5e0d6;
50
+ --bg-tinted: #f1eefb;
51
+
52
+ --text: #29312d;
53
+ --text-secondary: #65706a;
54
+ --text-tertiary: #929b95;
55
+ --text-inverse: #fffefa;
56
+
57
+ --border: rgba(41, 49, 45, 0.07);
58
+ --border-strong: rgba(41, 49, 45, 0.14);
59
+
60
+ --accent: #6658b8;
61
+ --accent-hover: #5548a3;
62
+ --accent-soft: #ece9f8;
63
+ --accent-contrast: #ffffff;
64
+
65
+ --cat-1: #5d8ca8;
66
+ --cat-2: #8a72b4;
67
+ --cat-3: #b98136;
68
+ --cat-4: #568269;
69
+ --cat-5: #b86e7f;
70
+ --cat-6: #7c7a72;
71
+
72
+ --success: #327257;
73
+ --success-soft: #e5f2eb;
74
+ --warning: #8b641e;
75
+ --warning-soft: #f8efd9;
76
+ --danger: #a94f46;
77
+ --danger-soft: #fae9e6;
78
+ --info: #426f8e;
79
+ --info-soft: #e6f0f6;
80
+
81
+ --shadow-sm: 0 1px 2px rgba(49, 44, 35, 0.04), 0 8px 22px rgba(49, 44, 35, 0.055);
82
+ --shadow-md: 0 2px 4px rgba(49, 44, 35, 0.04), 0 18px 44px rgba(49, 44, 35, 0.09);
83
+ --shadow-nav: 0 -8px 32px rgba(49, 44, 35, 0.07);
84
+
85
+ --radius-sm: 12px;
86
+ --radius-md: 18px;
87
+ --radius-lg: 28px;
88
+ --button-radius: var(--radius-full);
89
+ --card-radius: 24px;
90
+ --field-radius: 16px;
91
+ --chip-radius: var(--radius-full);
92
+ --badge-radius: var(--radius-full);
93
+
94
+ --card-bg: var(--bg-elevated);
95
+ --card-border: transparent;
96
+ --card-shadow: var(--shadow-sm);
97
+ --field-bg: var(--bg-soft);
98
+ --field-bg-hover: var(--bg-muted);
99
+ --field-border: transparent;
100
+ --control-border: var(--border-strong);
101
+ --focus-ring: 0 0 0 4px rgba(102, 88, 184, 0.15);
102
+ --button-shadow: 0 6px 18px rgba(102, 88, 184, 0.2);
103
+
104
+ --nav-glass: rgba(255, 254, 250, 0.9);
105
+ --fill-strong: #29312d;
106
+ --on-fill-strong: #fffefa;
107
+ --toast-bg: #29312d;
108
+ --toast-fg: #fffefa;
109
+
110
+ --orb-1: rgba(102, 88, 184, 0.13);
111
+ --orb-2: rgba(86, 130, 105, 0.12);
112
+ --orb-3: rgba(221, 168, 94, 0.12);
113
+
114
+ color-scheme: light;
115
+ }
116
+
117
+ /* Explicit app scope makes side-by-side mood previews possible. */
118
+ [data-mood='app'] {
119
+ --bg: #f8f6f1;
120
+ --bg-elevated: #fffefa;
121
+ --bg-soft: #f0ede6;
122
+ --bg-muted: #e5e0d6;
123
+ --bg-tinted: #f1eefb;
124
+ --text: #29312d;
125
+ --text-secondary: #65706a;
126
+ --text-tertiary: #929b95;
127
+ --text-inverse: #fffefa;
128
+ --border: rgba(41, 49, 45, 0.07);
129
+ --border-strong: rgba(41, 49, 45, 0.14);
130
+ --accent: #6658b8;
131
+ --accent-hover: #5548a3;
132
+ --accent-soft: #ece9f8;
133
+ --accent-contrast: #ffffff;
134
+ --shadow-sm: 0 1px 2px rgba(49, 44, 35, 0.04), 0 8px 22px rgba(49, 44, 35, 0.055);
135
+ --shadow-md: 0 2px 4px rgba(49, 44, 35, 0.04), 0 18px 44px rgba(49, 44, 35, 0.09);
136
+ --radius-sm: 12px;
137
+ --radius-md: 18px;
138
+ --radius-lg: 28px;
139
+ --button-radius: var(--radius-full);
140
+ --card-radius: 24px;
141
+ --field-radius: 16px;
142
+ --chip-radius: var(--radius-full);
143
+ --badge-radius: var(--radius-full);
144
+ --card-bg: var(--bg-elevated);
145
+ --card-border: transparent;
146
+ --card-shadow: var(--shadow-sm);
147
+ --field-bg: var(--bg-soft);
148
+ --field-bg-hover: var(--bg-muted);
149
+ --field-border: transparent;
150
+ --focus-ring: 0 0 0 4px rgba(102, 88, 184, 0.15);
151
+ --button-shadow: 0 6px 18px rgba(102, 88, 184, 0.2);
152
+ }
153
+
154
+ /* Site expression — mineral white + confident evergreen.
155
+ * More controlled radii and visible structure suit finance and B2B contexts.
156
+ */
157
+ [data-mood='site'] {
158
+ --bg: #f6f7f3;
159
+ --bg-elevated: #ffffff;
160
+ --bg-soft: #edf0ea;
161
+ --bg-muted: #dfe4dc;
162
+ --bg-tinted: #e8f0eb;
163
+
164
+ --text: #213129;
165
+ --text-secondary: #5b6a62;
166
+ --text-tertiary: #8b978f;
167
+ --text-inverse: #ffffff;
168
+
169
+ --border: rgba(33, 49, 41, 0.08);
170
+ --border-strong: rgba(33, 49, 41, 0.16);
171
+
172
+ --accent: #2e684f;
173
+ --accent-hover: #245640;
174
+ --accent-soft: #e2eee7;
175
+ --accent-contrast: #ffffff;
176
+
177
+ --cat-1: #4f7f9b;
178
+ --cat-2: #76639b;
179
+ --cat-3: #9a702d;
180
+ --cat-4: #3f7557;
181
+ --cat-5: #9e596b;
182
+ --cat-6: #6f756f;
183
+
184
+ --success: #276a4a;
185
+ --success-soft: #e2f0e8;
186
+ --warning: #805d18;
187
+ --warning-soft: #f5ecd4;
188
+ --danger: #98483f;
189
+ --danger-soft: #f8e7e4;
190
+ --info: #386984;
191
+ --info-soft: #e3eef4;
192
+
193
+ --shadow-sm: 0 1px 2px rgba(28, 48, 38, 0.035), 0 5px 16px rgba(28, 48, 38, 0.045);
194
+ --shadow-md: 0 2px 4px rgba(28, 48, 38, 0.04), 0 14px 36px rgba(28, 48, 38, 0.075);
195
+ --shadow-nav: 0 -6px 28px rgba(28, 48, 38, 0.055);
196
+
197
+ --radius-sm: 8px;
198
+ --radius-md: 12px;
199
+ --radius-lg: 18px;
200
+ --button-radius: 10px;
201
+ --card-radius: 16px;
202
+ --field-radius: 10px;
203
+ --chip-radius: 10px;
204
+ --badge-radius: 8px;
205
+
206
+ --card-bg: var(--bg-elevated);
207
+ --card-border: var(--border);
208
+ --card-shadow: 0 1px 2px rgba(28, 48, 38, 0.025), 0 8px 24px rgba(28, 48, 38, 0.04);
209
+ --field-bg: var(--bg-elevated);
210
+ --field-bg-hover: var(--bg-elevated);
211
+ --field-border: var(--border-strong);
212
+ --control-border: var(--border-strong);
213
+ --focus-ring: 0 0 0 4px rgba(46, 104, 79, 0.13);
214
+ --button-shadow: 0 4px 12px rgba(46, 104, 79, 0.16);
215
+
216
+ --nav-glass: rgba(255, 255, 255, 0.92);
217
+ --fill-strong: #213129;
218
+ --on-fill-strong: #ffffff;
219
+ --toast-bg: #213129;
220
+ --toast-fg: #ffffff;
221
+
222
+ --orb-1: rgba(46, 104, 79, 0.1);
223
+ --orb-2: rgba(79, 127, 155, 0.08);
224
+ --orb-3: rgba(154, 112, 45, 0.07);
225
+
226
+ --ease-spring: cubic-bezier(0.2, 0.8, 0.2, 1);
227
+ color-scheme: light;
228
+ }
229
+
230
+ /* App dark — charcoal with a warm mineral undertone. */
231
+ [data-theme='dark'] {
232
+ --bg: #1d211f;
233
+ --bg-elevated: #272c29;
234
+ --bg-soft: #303632;
235
+ --bg-muted: #3a413c;
236
+ --bg-tinted: #312e40;
237
+
238
+ --text: #f3f1ec;
239
+ --text-secondary: #b4bbb6;
240
+ --text-tertiary: #7f8983;
241
+ --text-inverse: #202421;
242
+
243
+ --border: rgba(255, 255, 255, 0.07);
244
+ --border-strong: rgba(255, 255, 255, 0.14);
245
+
246
+ --accent: #a99ee8;
247
+ --accent-hover: #bbb2f0;
248
+ --accent-soft: #39354f;
249
+ --accent-contrast: #211d38;
250
+
251
+ --success: #78b997;
252
+ --success-soft: #283e32;
253
+ --warning: #d4ad61;
254
+ --warning-soft: #413823;
255
+ --danger: #df8a81;
256
+ --danger-soft: #472f2d;
257
+ --info: #86afc8;
258
+ --info-soft: #293b46;
259
+
260
+ --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.16), 0 8px 22px rgba(0, 0, 0, 0.14);
261
+ --shadow-md: 0 2px 4px rgba(0, 0, 0, 0.18), 0 18px 44px rgba(0, 0, 0, 0.24);
262
+ --card-border: rgba(255, 255, 255, 0.04);
263
+ --field-border: rgba(255, 255, 255, 0.1);
264
+ --control-border: rgba(255, 255, 255, 0.14);
265
+ --focus-ring: 0 0 0 4px rgba(169, 158, 232, 0.18);
266
+ --button-shadow: 0 6px 18px rgba(0, 0, 0, 0.22);
267
+
268
+ --nav-glass: rgba(39, 44, 41, 0.92);
269
+ --fill-strong: #f3f1ec;
270
+ --on-fill-strong: #202421;
271
+ --toast-bg: #f3f1ec;
272
+ --toast-fg: #202421;
273
+
274
+ --orb-1: rgba(169, 158, 232, 0.11);
275
+ --orb-2: rgba(120, 185, 151, 0.09);
276
+ --orb-3: rgba(212, 173, 97, 0.08);
277
+
278
+ color-scheme: dark;
279
+ }
280
+
281
+ /* Site dark — deep green-charcoal, restrained and high-confidence. */
282
+ [data-mood='site'][data-theme='dark'] {
283
+ --bg: #19211d;
284
+ --bg-elevated: #232d28;
285
+ --bg-soft: #2b3731;
286
+ --bg-muted: #35433b;
287
+ --bg-tinted: #263b31;
288
+
289
+ --text: #f0f3f0;
290
+ --text-secondary: #abb7b0;
291
+ --text-tertiary: #77867d;
292
+ --text-inverse: #17201b;
293
+
294
+ --accent: #82b99d;
295
+ --accent-hover: #96c6ae;
296
+ --accent-soft: #294438;
297
+ --accent-contrast: #13241c;
298
+
299
+ --success: #76b792;
300
+ --success-soft: #274236;
301
+ --warning: #d0ab62;
302
+ --warning-soft: #413824;
303
+ --danger: #dc8b82;
304
+ --danger-soft: #472f2d;
305
+ --info: #84adc4;
306
+ --info-soft: #293d47;
307
+
308
+ --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.16), 0 6px 18px rgba(0, 0, 0, 0.13);
309
+ --shadow-md: 0 2px 4px rgba(0, 0, 0, 0.18), 0 16px 40px rgba(0, 0, 0, 0.22);
310
+ --card-border: rgba(255, 255, 255, 0.065);
311
+ --card-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 8px 24px rgba(0, 0, 0, 0.12);
312
+ --field-border: rgba(255, 255, 255, 0.13);
313
+ --control-border: rgba(255, 255, 255, 0.14);
314
+ --focus-ring: 0 0 0 4px rgba(130, 185, 157, 0.16);
315
+ --button-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);
316
+
317
+ --nav-glass: rgba(35, 45, 40, 0.92);
318
+ --fill-strong: #f0f3f0;
319
+ --on-fill-strong: #17201b;
320
+ --toast-bg: #f0f3f0;
321
+ --toast-fg: #17201b;
322
+
323
+ --orb-1: rgba(130, 185, 157, 0.09);
324
+ --orb-2: rgba(132, 173, 196, 0.07);
325
+ --orb-3: rgba(208, 171, 98, 0.06);
326
+
327
+ color-scheme: dark;
328
+ }