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 */ 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 nav a + a::before { 234 content: "• "; 235 color: var(--dc-tx-2); 236} 237 238header * { 239 padding-top: 0rem; 240 padding-bottom: 0rem; 241 margin-top: 0.25rem; 242 margin-bottom: 0.25rem; 243} 244 245header h1, 246header h2, 247header h3 { 248 border-bottom: 0; 249} 250 251header h1 { 252 font-size: 1.6rem; 253} 254 255header h2 { 256 font-size: 1.4rem; 257} 258 259header h3 { 260 font-size: 1.2rem; 261} 262 263header h4 { 264 font-size: 1rem; 265} 266 267header h5 { 268 font-size: 0.9rem; 269} 270 271header p { 272 font-size: 1rem; 273} 274 275header nav { 276 font-size: 0.9rem; 277} 278 279header h6 { 280 font-size: 0.8rem; 281} 282 283/* 10. Footer */ 284footer { 285 border-top: 1px solid var(--dc-bg-3); 286 padding: 0.5rem calc(50vw - 50%); 287 margin: 2rem calc(50% - 50vw) -2rem; 288} 289 290footer * { 291 padding-top: 0rem; 292 padding-bottom: 0rem; 293 margin-top: 0.25rem; 294 margin-bottom: 0.25rem; 295} 296 297footer h1, 298footer h2, 299footer h3 { 300 border-bottom: 0; 301} 302 303/* 11. Buttons and Inputs */ 304a button, 305button, 306input[type="submit"], 307input[type="reset"], 308input[type="button"] { 309 display: inline-block; 310 padding: 0.25rem 0.75rem; 311 text-align: center; 312 text-decoration: none; 313 white-space: nowrap; 314 background: var(--dc-lkb-1); 315 color: var(--dc-lkb-tx); 316 border: 0; 317 border-radius: 0.25rem; 318 box-sizing: border-box; 319 cursor: pointer; 320} 321 322a button[disabled], 323button[disabled], 324input[type="submit"][disabled], 325input[type="reset"][disabled], 326input[type="button"][disabled] { 327 cursor: not-allowed; 328 opacity: 0.5; 329} 330 331.button:focus, 332.button:enabled:hover, 333button:focus, 334button:enabled:hover, 335input[type="submit"]:focus, 336input[type="submit"]:enabled:hover, 337input[type="reset"]:focus, 338input[type="reset"]:enabled:hover, 339input[type="button"]:focus, 340input[type="button"]:enabled:hover { 341 background: var(--dc-lkb-2); 342} 343 344textarea, 345select, 346input { 347 padding: 0.25rem 0.5rem; 348 margin-bottom: 0.5rem; 349 background: var(--dc-bg-2); 350 color: var(--dc-tx-2); 351 border: 1px solid var(--dc-bg-3); 352 border-radius: 0.25rem; 353 box-shadow: none; 354 box-sizing: border-box; 355} 356 357textarea { 358 max-width: 100%; 359} 360 361/* 12. Code and Keyboards */ 362code, 363samp, 364kbd, 365pre { 366 background: var(--dc-bg-2); 367 border: 1px solid var(--dc-bg-3); 368 border-radius: 0.25rem; 369 padding: 0.125rem 0.25rem; 370 font-size: 0.9rem; 371} 372 373kbd { 374 border-bottom: 3px solid var(--dc-bg-3); 375} 376 377pre { 378 padding: 1rem 1.5rem; 379 max-width: 100%; 380 overflow: auto; 381} 382 383/* 13. Details */ 384details { 385 padding: 0.5rem 1rem; 386 background: var(--dc-bg-2); 387 border: 1px solid var(--dc-bg-3); 388 border-radius: 0.25rem; 389} 390 391summary { 392 cursor: pointer; 393 font-weight: bold; 394} 395 396details[open] summary { 397 margin-bottom: 0.5rem; 398} 399 400details[open] > *:first-child { 401 margin-top: 0; 402 padding-top: 0; 403} 404 405details[open] > *:last-child { 406 margin-bottom: 0; 407 padding-bottom: 0; 408} 409 410/* 14. Description Lists */ 411dt { 412 font-weight: bold; 413} 414 415dd::before { 416 content: "→ "; 417} 418 419/* 15. Horizontal Rules */ 420hr { 421 border: 0; 422 border-bottom: 1px solid var(--dc-bg-3); 423 margin: 1rem auto; 424} 425 426/* 16. Fieldsets */ 427fieldset { 428 margin-top: 1rem; 429 padding: 2rem; 430 border: 1px solid var(--dc-bg-3); 431 border-radius: 0.25rem; 432} 433 434legend { 435 padding: auto 0.5rem; 436} 437 438/* 17. Tables */ 439table { 440 border-collapse: collapse; 441 width: 100%; 442} 443 444td, 445th { 446 border: 1px solid var(--dc-bg-3); 447 text-align: left; 448 padding: 0.5rem; 449} 450 451th { 452 background: var(--dc-bg-2); 453} 454 455tr:nth-child(even) { 456 background: var(--dc-bg-2); 457} 458 459table caption { 460 font-weight: bold; 461 margin-bottom: 0.5rem; 462} 463 464/* 18. Lists */ 465ol, 466ul { 467 padding-left: 2rem; 468} 469 470li { 471 margin-top: 0.4rem; 472} 473 474ul ul, 475ol ul, 476ul ol, 477ol ol { 478 margin-bottom: 0; 479}