@dknight/puff
Version:
Full-featured, lightweight CSS framework that maintained
757 lines (600 loc) • 9.63 kB
CSS
.alert {
border-radius: var(--br);
color: var(--c-bg);
padding: calc(var(--s) * 2);
}
.alert p:last-of-type {
margin-top: 0;
margin-bottom: 0;
}
.badge {
border-radius: var(--br);
color: var(--c-bg);
padding: calc(var(--s) / 4) var(--s);
}
.button {
all: unset;
background: var(--grad);
color: var(--c-bg);
cursor: pointer;
padding: calc(var(--s) * .75) calc(var(--s) * 2);
white-space: nowrap;
border-radius: 99px;
font-weight: 600;
}
.button:focus-visible {
outline-offset: calc(var(--bw) * 3);
outline: auto;
}
.button:hover:not(:disabled) {
outline-offset: calc(var(--bw) * 2);
outline: calc(var(--bw) * 2) solid var(--c-pri);
}
.button:disabled {
border: var(--brd);
cursor: default;
opacity: .5;
}
.button + a, .button + .button {
margin-left: var(--s);
}
.card {
background: var(--c-surf);
border-radius: var(--br);
border: var(--brd);
padding: calc(var(--s) * 2);
}
.dialog {
background: var(--c-bg);
color: var(--c-txt);
max-width: var(--maxw);
border: 0;
margin: auto;
}
.dialog::backdrop {
-webkit-backdrop-filter: blur(2px);
backdrop-filter: blur(2px);
background: rgba(0, 0, 0, .9);
}
.dropdown {
position: relative;
}
.dropdown-menu {
background: var(--c-surf);
display: none;
}
.dropdown.open > .dropdown-menu {
display: block;
position: absolute;
transform: translateY(7px);
}
.input {
background: var(--c-surf);
border: var(--bw) solid var(--c-line);
border-radius: var(--br);
color: var(--c-txt);
font-size: inherit;
padding: var(--s);
}
input:not(:focus-visible, :focus) {
accent-color: var(--c-sec);
}
.input:focus {
border-color: var(--c-txt);
}
.input[type]:read-only, .input:disabled {
background: var(--c-line);
}
textarea {
font: inherit;
}
li {
margin: calc(var(--s) / 4) 0;
}
.menu li {
padding: var(--s) calc(var(--s) * 2);
margin: 0;
}
.menu, .reset {
margin: 0;
padding: 0;
list-style: none;
}
.table {
overflow-x: auto;
}
.table table {
border-collapse: collapse;
width: 100%;
}
td, th {
border-bottom: var(--bw) solid var(--c-line);
padding: calc(var(--s) * 2);
text-align: left;
}
.caret {
align-items: center;
gap: var(--s);
text-decoration: none;
display: inline-flex;
}
.caret:after {
content: "▾";
}
.caret.up:after {
content: "▴";
}
.round {
border-radius: var(--br);
}
.border {
border: var(--brd);
}
.nowrap {
white-space: nowrap;
}
:root {
font: var(--fw) var(--fs) var(--ff);
}
body {
background: var(--c-bg);
color: var(--c-txt);
margin: 0;
}
pre {
background: var(--c-surf);
border: var(--bw) solid var(--c-line);
border-radius: var(--br);
padding: calc(var(--s) * 2);
overflow-x: auto;
}
hr {
border-bottom: var(--bw) solid var(--c-pri);
}
img {
filter: var(--img-filter);
}
summary {
cursor: pointer;
}
mark {
background-color: var(--c-tri);
}
.primary {
color: var(--c-pri);
}
.secondary {
color: var(--c-sec);
}
.tertiary {
color: var(--c-tri);
}
.text {
color: var(--c-txt);
}
.dimmed {
color: var(--c-dim);
font-size: 90%;
}
.invert {
color: var(--c-bg);
}
.error {
color: var(--c-err);
}
.success {
color: var(--c-suc);
}
.bg-primary {
background-color: var(--c-pri);
}
.bg-secondary {
background-color: var(--c-sec);
}
.bg-tertiary {
background-color: var(--c-tri);
}
.bg-text {
background-color: var(--c-txt);
}
.bg-error {
background-color: var(--c-err);
}
.bg-success {
background-color: var(--c-suc);
}
.b-primary {
border-color: var(--c-pri);
}
.b-secondary {
border-color: var(--c-sec);
}
.b-tertiary {
border-color: var(--c-tri);
}
.b-text {
border-color: var(--c-txt);
}
.b-invert {
border-color: var(--c-bg);
}
.b-error {
border-color: var(--c-err);
}
.b-success {
border-color: var(--c-suc);
}
* {
box-sizing: border-box;
}
.wrap {
max-width: var(--maxw);
padding: calc(var(--s) * 2);
margin: auto;
}
@media (min-width: 36rem) {
.grid {
grid-template-columns: repeat(12, 1fr);
display: grid;
}
.\31 2 {
grid-column: span 12;
}
.\31 {
grid-column: span 1;
}
.\32 {
grid-column: span 2;
}
.\33 {
grid-column: span 3;
}
.\34 {
grid-column: span 4;
}
.\35 {
grid-column: span 5;
}
.\36 {
grid-column: span 6;
}
.\37 {
grid-column: span 7;
}
.\38 {
grid-column: span 8;
}
.\39 {
grid-column: span 9;
}
.\31 0 {
grid-column: span 10;
}
.\31 1 {
grid-column: span 11;
}
}
@media screen and (max-width: 36rem) {
.hide-small {
display: none;
}
}
.w100 {
width: 100%;
}
.vh100 {
height: 100vh;
}
.ph1 {
padding-left: var(--s);
padding-right: var(--s);
}
.pv1 {
padding-top: var(--s);
padding-bottom: var(--s);
}
.ph2 {
padding-left: calc(var(--s) * 2);
padding-right: calc(var(--s) * 2);
}
.pv2 {
padding-top: calc(var(--s) * 2);
padding-bottom: calc(var(--s) * 2);
}
.ph3 {
padding-left: calc(var(--s) * 3);
padding-right: calc(var(--s) * 3);
}
.pv3 {
padding-top: calc(var(--s) * 3);
padding-bottom: calc(var(--s) * 3);
}
.ph4 {
padding-left: calc(var(--s) * 4);
padding-right: calc(var(--s) * 4);
}
.pv4 {
padding-top: calc(var(--s) * 4);
padding-bottom: calc(var(--s) * 4);
}
.p0 {
padding: 0;
}
.p1 {
padding: var(--s);
}
.p2 {
padding: calc(var(--s) * 2);
}
.p3 {
padding: calc(var(--s) * 3);
}
.p4 {
padding: calc(var(--s) * 4);
}
.mt0 {
margin-top: 0;
}
.mb0 {
margin-bottom: 0;
}
.mt1 {
margin-top: var(--s);
}
.mb1 {
margin-bottom: var(--s);
}
.mt2 {
margin-top: calc(var(--s) * 2);
}
.mb2 {
margin-bottom: calc(var(--s) * 2);
}
.mt3 {
margin-top: calc(var(--s) * 3);
}
.mb3 {
margin-bottom: calc(var(--s) * 3);
}
.mt4 {
margin-top: calc(var(--s) * 4);
}
.mb4 {
margin-bottom: calc(var(--s) * 4);
}
.m0 {
margin: 0;
}
.m1 {
margin: var(--s);
}
.m2 {
margin: calc(var(--s) * 2);
}
.m3 {
margin: calc(var(--s) * 3);
}
.m4 {
margin: calc(var(--s) * 4);
}
.g0 {
gap: 0;
}
.g1 {
gap: var(--s);
}
.g2 {
gap: calc(var(--s) * 2);
}
.g3 {
gap: calc(var(--s) * 3);
}
.g4 {
gap: calc(var(--s) * 4);
}
.d-block {
display: block;
}
.d-inline {
display: inline;
}
.d-inline-block {
display: inline-block;
}
.d-flex {
display: flex;
}
.d-inline-flex {
display: inline-flex;
}
.f-col {
flex-direction: column;
}
.f-row {
flex-direction: row;
}
.f-wrap {
flex-wrap: wrap;
}
.justify-start {
justify-content: start;
}
.justify-end {
justify-content: end;
}
.justify-center {
justify-content: center;
}
.justify-between {
justify-content: space-between;
}
.justify-around {
justify-content: space-around;
}
.justify-evenly {
justify-content: space-evenly;
}
.align-start {
align-items: start;
}
.align-end {
align-items: end;
}
.align-center {
align-items: center;
}
@media screen and (min-width: 36rem) {
.start {
margin-right: auto;
}
.end {
margin-left: auto;
}
.center {
margin: auto;
}
}
@media print {
:root {
--c-txt: #000;
--c-bg: #fff;
print-color-adjust: economy;
}
}
:root {
--maxw: 60rem;
--ff: ui-sans-serif, system-ui, -apple-system, Helvetica Neue, Arial, sans-serif;
--fs: 18px / 1.6;
--fw: 400;
--bw: .0625rem;
--brd: var(--bw) solid var(--c-line);
--br: .25rem;
--s: .5rem;
--grad: linear-gradient(45deg, var(--c-pri), var(--c-sec));
}
a {
color: var(--c-pri);
background-image: linear-gradient(-90deg, #00f, red);
-webkit-background-clip: text;
background-clip: text;
}
a:not(.button):hover {
color: var(--c-sec);
}
p {
margin: 0 0 calc(var(--s) * 2);
}
h1, h2, h3, h4, h5, h6 {
margin-bottom: var(--s);
}
h1 {
font: 300 2.5rem / 150% var(--ff);
}
h2 {
font: 300 2.2rem / 150% var(--ff);
}
h3 {
font: 300 1.8rem / 140% var(--ff);
}
h4 {
font: 300 1.5rem / 140% var(--ff);
}
h5 {
font: 300 1.2rem / 130% var(--ff);
}
h6 {
font: 300 1rem var(--ff);
}
.xs {
font-size: .75rem;
}
.s {
font-size: .9rem;
}
.l {
font-size: 1.25rem;
line-height: 140%;
}
.xl {
font-size: 1.5rem;
line-height: 140%;
}
.xxl {
font-size: 2rem;
}
.xxxl {
font-size: 5rem;
}
.ts {
text-align: left;
}
.te {
text-align: right;
}
.tc {
text-align: center;
}
@media (prefers-color-scheme: light) {
:root {
color-scheme: light;
--c-pri: #8a00d4;
--c-sec: #c224a8;
--c-tri: #f7b23b;
--c-err: #f33;
--c-suc: #007800;
--c-txt: #202124;
--c-dim: #4d5156;
--c-bg: #fff;
--c-line: #d3d3d3;
--c-surf: #f3f3f3;
}
.bg-tertiary {
color: var(--c-txt);
}
}
:root[data-theme="light"] {
color-scheme: light;
--c-pri: #8a00d4;
--c-sec: #c224a8;
--c-tri: #f7b23b;
--c-err: #b22222;
--c-suc: #007800;
--c-txt: #202124;
--c-dim: #4d5156;
--c-bg: #fff;
--c-line: #d3d3d3;
--c-surf: #f3f3f3;
}
:root[data-theme="light"] .bg-tertiary {
color: var(--c-txt);
}
@media (prefers-color-scheme: dark) {
:root {
color-scheme: dark;
--c-pri: #b86ce4;
--c-sec: #db7ac5;
--c-tri: #f9c46b;
--c-err: #ff8672;
--c-suc: #6ba55d;
--c-txt: #e8eaed;
--c-dim: #bdc1c6;
--c-bg: #202124;
--c-line: #413e46;
--c-surf: #151417;
--img-filter: brightness(.8) contrast(1.2);
}
}
:root[data-theme="dark"] {
color-scheme: dark;
--c-pri: #b86ce4;
--c-sec: #db7ac5;
--c-tri: #f9c46b;
--c-err: #ff8672;
--c-suc: #6ba55d;
--c-txt: #e8eaed;
--c-dim: #bdc1c6;
--c-bg: #202124;
--c-line: #413e46;
--c-surf: #151417;
--img-filter: brightness(.8) contrast(1.2);
}