tiny, simple, classless CSS framework inspired by new.css
devcss.devins.page
framework
lightweight
css
classless
stylesheet
1/* dev.css v3, a classless CSS framework - https://github.com/intergrav/dev.css */
2
3/* Table of Contents
4 1. Configuration
5 2. Dark Mode Handling
6 3. CSS Reset
7 4. Margins for Most Elements
8 5. Font Family
9 6. Body and Selection Styling
10 7. Typography
11 8. Blockquotes
12 9. Header
13 10. Footer
14 11. Buttons and Inputs
15 12. Code and Keyboards
16 13. Details
17 14. Description Lists
18 15. Horizontal Rules
19 16. Fieldsets
20 17. Tables
21 18. Lists
22*/
23
24/* 1. Configuration */
25:root {
26 /* Font families */
27 --dc-font-sans: "Geist", "Inter", -apple-system, BlinkMacSystemFont,
28 "Segoe UI", sans-serif;
29 --dc-font-mono: "Geist Mono", monospace;
30
31 /* Light colors */
32 --dc-tx-1: #000000;
33 --dc-tx-2: #1a1a1a;
34 --dc-bg-1: #fafafa;
35 --dc-bg-2: #fff;
36 --dc-bg-3: #ebebeb;
37 --dc-lk-1: #0068d6;
38 --dc-lkb-1: #0072f5;
39 --dc-lkb-2: #0062d1;
40 --dc-lkb-tx: #ededed;
41 --dc-ac-1: #8e4ec6;
42 --dc-ac-tx: #ededed;
43
44 /* Dark colors */
45 --dc-d-tx-1: #ededed;
46 --dc-d-tx-2: #a1a1a1;
47 --dc-d-bg-1: #000;
48 --dc-d-bg-2: #0a0a0a;
49 --dc-d-bg-3: #2e2e2e;
50 --dc-d-lk-1: #52a8ff;
51 --dc-d-lkb-1: #0072f5;
52 --dc-d-lkb-2: #0062d1;
53 --dc-d-lkb-tx: #ededed;
54 --dc-d-ac-1: #8e4ec6;
55 --dc-d-ac-tx: #ededed;
56}
57
58/* 2. Dark Mode Handling */
59@media (prefers-color-scheme: dark) {
60 :root {
61 --dc-tx-1: var(--dc-d-tx-1);
62 --dc-tx-2: var(--dc-d-tx-2);
63 --dc-bg-1: var(--dc-d-bg-1);
64 --dc-bg-2: var(--dc-d-bg-2);
65 --dc-bg-3: var(--dc-d-bg-3);
66 --dc-lk-1: var(--dc-d-lk-1);
67 --dc-lkb-1: var(--dc-d-lkb-1);
68 --dc-lkb-2: var(--dc-d-lkb-2);
69 --dc-lkb-tx: var(--dc-d-lkb-tx);
70 --dc-ac-1: var(--dc-d-ac-1);
71 --dc-ac-tx: var(--dc-d-ac-tx);
72 }
73}
74
75/* 3. CSS Reset - cleaned up https://www.joshwcomeau.com/css/custom-css-reset */
76*,
77*::before,
78*::after {
79 box-sizing: border-box;
80 margin: 0;
81 word-break: break-word;
82}
83
84body {
85 line-height: 1.5;
86}
87
88img,
89picture,
90video,
91canvas,
92svg {
93 display: block;
94 max-width: 100%;
95}
96
97input,
98button,
99textarea,
100select {
101 font: inherit;
102}
103
104#root,
105#__next {
106 isolation: isolate;
107}
108
109/* 4. Margins for Most Elements */
110address,
111area,
112article,
113aside,
114audio,
115blockquote,
116datalist,
117details,
118dl,
119fieldset,
120figure,
121form,
122input,
123iframe,
124img,
125meter,
126nav,
127ol,
128optgroup,
129option,
130output,
131p,
132pre,
133progress,
134ruby,
135section,
136table,
137textarea,
138ul,
139video {
140 margin-bottom: 1rem;
141}
142
143/* 5. Font Family */
144html {
145 font-family: var(--dc-font-sans);
146}
147
148code,
149pre,
150kbd,
151samp {
152 font-family: var(--dc-font-mono);
153}
154
155/* 6. Body and Selection Styling */
156body {
157 margin: 0 auto;
158 max-width: 48rem;
159 padding: 2rem;
160 background: var(--dc-bg-1);
161 color: var(--dc-tx-2);
162}
163
164::selection {
165 background: var(--dc-ac-1);
166 color: var(--dc-ac-tx);
167}
168
169/* 7. Typography */
170h1,
171h2,
172h3,
173h4,
174h5,
175h6 {
176 line-height: 1;
177 color: var(--dc-tx-1);
178 padding-top: 1rem;
179}
180
181h1,
182h2,
183h3 {
184 padding-bottom: 0.25rem;
185 margin-bottom: 0.5rem;
186 border-bottom: 1px solid var(--dc-bg-3);
187}
188
189h4,
190h5,
191h6 {
192 margin-bottom: 0.25rem;
193}
194
195a {
196 color: var(--dc-lk-1);
197 text-decoration: none;
198}
199
200a:hover {
201 text-decoration: underline;
202}
203
204mark {
205 padding: 0.125rem 0.25rem;
206 background: var(--dc-ac-1);
207 color: var(--dc-ac-tx);
208 border-radius: 0.25rem;
209}
210
211/* 8. Blockquotes */
212blockquote {
213 padding: 1.25rem;
214 background: var(--dc-bg-2);
215 border: 1px solid var(--dc-bg-3);
216 border-left: 5px solid var(--dc-bg-3);
217 border-radius: 0.25rem;
218}
219
220blockquote *:last-child {
221 padding-bottom: 0;
222 margin-bottom: 0;
223}
224
225/* 9. Header */
226header {
227 background: var(--dc-bg-2);
228 border-bottom: 1px solid var(--dc-bg-3);
229 padding: 0.5rem calc(50vw - 50%);
230 margin: -2rem calc(50% - 50vw) 2rem;
231}
232
233header * {
234 padding-top: 0rem;
235 padding-bottom: 0rem;
236 margin-top: 0.25rem;
237 margin-bottom: 0.25rem;
238}
239
240header h1,
241header h2,
242header h3 {
243 border-bottom: 0;
244}
245
246header h1 {
247 font-size: 1.6rem;
248}
249
250header h2 {
251 font-size: 1.4rem;
252}
253
254header h3 {
255 font-size: 1.2rem;
256}
257
258header h4 {
259 font-size: 1rem;
260}
261
262header h5 {
263 font-size: 0.9rem;
264}
265
266header p {
267 font-size: 1rem;
268}
269
270header nav {
271 font-size: 0.9rem;
272}
273
274header h6 {
275 font-size: 0.8rem;
276}
277
278/* 10. Footer */
279footer {
280 border-top: 1px solid var(--dc-bg-3);
281 padding: 0.5rem calc(50vw - 50%);
282 margin: 2rem calc(50% - 50vw) -2rem;
283}
284
285footer * {
286 padding-top: 0rem;
287 padding-bottom: 0rem;
288 margin-top: 0.25rem;
289 margin-bottom: 0.25rem;
290}
291
292footer h1,
293footer h2,
294footer h3 {
295 border-bottom: 0;
296}
297
298/* 11. Buttons and Inputs */
299a button,
300button,
301input[type="submit"],
302input[type="reset"],
303input[type="button"] {
304 display: inline-block;
305 padding: 0.25rem 0.75rem;
306 text-align: center;
307 text-decoration: none;
308 white-space: nowrap;
309 background: var(--dc-lkb-1);
310 color: var(--dc-lkb-tx);
311 border: 0;
312 border-radius: 0.25rem;
313 box-sizing: border-box;
314 cursor: pointer;
315}
316
317a button[disabled],
318button[disabled],
319input[type="submit"][disabled],
320input[type="reset"][disabled],
321input[type="button"][disabled] {
322 cursor: not-allowed;
323 opacity: 0.5;
324}
325
326.button:focus,
327.button:enabled:hover,
328button:focus,
329button:enabled:hover,
330input[type="submit"]:focus,
331input[type="submit"]:enabled:hover,
332input[type="reset"]:focus,
333input[type="reset"]:enabled:hover,
334input[type="button"]:focus,
335input[type="button"]:enabled:hover {
336 background: var(--dc-lkb-2);
337}
338
339textarea,
340select,
341input {
342 padding: 0.25rem 0.5rem;
343 margin-bottom: 0.5rem;
344 background: var(--dc-bg-2);
345 color: var(--dc-tx-2);
346 border: 1px solid var(--dc-bg-3);
347 border-radius: 0.25rem;
348 box-shadow: none;
349 box-sizing: border-box;
350}
351
352textarea {
353 max-width: 100%;
354}
355
356/* 12. Code and Keyboards */
357code,
358samp,
359kbd,
360pre {
361 background: var(--dc-bg-2);
362 border: 1px solid var(--dc-bg-3);
363 border-radius: 0.25rem;
364 padding: 0.125rem 0.25rem;
365 font-size: 0.9rem;
366}
367
368kbd {
369 border-bottom: 3px solid var(--dc-bg-3);
370}
371
372pre {
373 padding: 1rem 1.5rem;
374 max-width: 100%;
375 overflow: auto;
376}
377
378/* 13. Details */
379details {
380 padding: 0.5rem 1rem;
381 background: var(--dc-bg-2);
382 border: 1px solid var(--dc-bg-3);
383 border-radius: 0.25rem;
384}
385
386summary {
387 cursor: pointer;
388 font-weight: bold;
389}
390
391details[open] summary {
392 margin-bottom: 0.5rem;
393}
394
395details[open] > *:first-child {
396 margin-top: 0;
397 padding-top: 0;
398}
399
400details[open] > *:last-child {
401 margin-bottom: 0;
402 padding-bottom: 0;
403}
404
405/* 14. Description Lists */
406dt {
407 font-weight: bold;
408}
409
410dd::before {
411 content: "→ ";
412}
413
414/* 15. Horizontal Rules */
415hr {
416 border: 0;
417 border-bottom: 1px solid var(--dc-bg-3);
418 margin: 1rem auto;
419}
420
421/* 16. Fieldsets */
422fieldset {
423 margin-top: 1rem;
424 padding: 2rem;
425 border: 1px solid var(--dc-bg-3);
426 border-radius: 0.25rem;
427}
428
429legend {
430 padding: auto 0.5rem;
431}
432
433/* 17. Tables */
434table {
435 border-collapse: collapse;
436 width: 100%;
437}
438
439td,
440th {
441 border: 1px solid var(--dc-bg-3);
442 text-align: left;
443 padding: 0.5rem;
444}
445
446th {
447 background: var(--dc-bg-2);
448}
449
450tr:nth-child(even) {
451 background: var(--dc-bg-2);
452}
453
454table caption {
455 font-weight: bold;
456 margin-bottom: 0.5rem;
457}
458
459/* 18. Lists */
460ol,
461ul {
462 padding-left: 2rem;
463}
464
465li {
466 margin-top: 0.4rem;
467}
468
469ul ul,
470ol ul,
471ul ol,
472ol ol {
473 margin-bottom: 0;
474}