drizzle-css 0.1.0

Classless-first CSS framework — exposes compiled CSS as &'static str constants.
Documentation
/* Forms: inputs, textarea, select, fieldset, button, etc. */

form {
  display: block;
}

fieldset {
  border: var(--border-width-thin) var(--border-style) var(--color-border);
  border-radius: var(--radius);
  padding: var(--gutter-md) var(--gutter-lg);
  margin: 0 0 var(--gutter-md);
}

legend {
  padding: 0 var(--gutter-sm);
  font-weight: var(--font-weight-bold);
  color: var(--color-text);
}

label {
  display: inline-block;
  margin-bottom: var(--gutter-xs);
  font-weight: var(--font-weight-medium);
  color: var(--color-text);
}

label + input,
label + textarea,
label + select {
  margin-top: var(--gutter-xs);
}

input,
textarea,
select {
  display: block;
  width: 100%;
  padding: var(--gutter-sm) var(--gutter-md);
  font-family: inherit;
  font-size: var(--font-size-base);
  line-height: var(--line-height-tight);
  color: var(--color-text);
  background: var(--color-bg);
  border: var(--border-width-thin) var(--border-style) var(--color-border);
  border-radius: var(--radius);
  transition: border-color var(--transition-fast), box-shadow var(--transition-fast);
  margin-bottom: var(--gutter-md);
}

textarea {
  min-height: var(--textarea-min-height);
  resize: vertical;
}

select {
  appearance: none;
  background-image: linear-gradient(45deg, transparent 50%, var(--color-muted) 50%),
                    linear-gradient(135deg, var(--color-muted) 50%, transparent 50%);
  background-position: calc(100% - 1.1rem) 50%, calc(100% - 0.7rem) 50%;
  background-size: 0.4rem 0.4rem, 0.4rem 0.4rem;
  background-repeat: no-repeat;
  padding-right: var(--gutter-2xl);
}

input:focus,
textarea:focus,
select:focus {
  outline: 0;
  border-color: var(--color-link);
  box-shadow: 0 0 0 3px var(--color-focus-ring);
}

input:disabled,
textarea:disabled,
select:disabled,
button:disabled {
  opacity: var(--opacity-disabled);
  cursor: not-allowed;
}

input:read-only,
textarea:read-only {
  background: var(--color-surface);
  color: var(--color-muted);
  cursor: default;
}

input:invalid:not(:focus):not(:placeholder-shown),
textarea:invalid:not(:focus):not(:placeholder-shown) {
  border-color: var(--color-error);
}

label:has(+ :required)::after {
  content: " *";
  color: var(--color-error);
}

optgroup {
  font-weight: var(--font-weight-bold);
}

input[type="checkbox"],
input[type="radio"] {
  display: inline-block;
  width: auto;
  margin-right: var(--gutter-xs);
  margin-bottom: 0;
  accent-color: var(--color-link);
}

input[type="range"] {
  padding: 0;
  border: 0;
  background: transparent;
  accent-color: var(--color-link);
}

input[type="color"] {
  width: 3rem;
  height: 2.5rem;
  padding: 0.15rem;
  cursor: pointer;
}

input[type="file"] {
  padding: var(--gutter-xs);
}

input[type="search"] {
  appearance: none;
}

input[type="search"]::-webkit-search-cancel-button {
  appearance: none;
  width: 0.8em;
  height: 0.8em;
  background: var(--color-muted);
  clip-path: polygon(
    14% 0, 0 14%, 36% 50%, 0 86%, 14% 100%,
    50% 64%, 86% 100%, 100% 86%, 64% 50%,
    100% 14%, 86% 0, 50% 36%
  );
  cursor: pointer;
}

::placeholder {
  color: var(--color-muted);
  opacity: 1;
}

input[type="checkbox"]:indeterminate {
  opacity: 0.7;
}

progress:indeterminate {
  opacity: 0.7;
}

button,
[type="submit"],
[type="reset"],
[type="button"] {
  display: inline-block;
  padding: var(--gutter-sm) var(--gutter-lg);
  font-family: inherit;
  font-size: var(--font-size-base);
  font-weight: var(--font-weight-medium);
  line-height: var(--line-height-tight);
  color: #fff;
  background: var(--color-link);
  border: var(--border-width-thin) var(--border-style) var(--color-link);
  border-radius: var(--radius);
  cursor: pointer;
  width: auto;
  transition: background var(--transition-fast), border-color var(--transition-fast),
              transform var(--transition-fast);
  margin-bottom: 0;
}

button:hover:not(:disabled),
[type="submit"]:hover:not(:disabled),
[type="reset"]:hover:not(:disabled),
[type="button"]:hover:not(:disabled) {
  background: var(--color-link-hover);
  border-color: var(--color-link-hover);
}

button:active:not(:disabled),
[type="submit"]:active:not(:disabled),
[type="reset"]:active:not(:disabled),
[type="button"]:active:not(:disabled) {
  transform: var(--button-press);
}

[type="reset"] {
  background: var(--color-surface);
  color: var(--color-text);
  border-color: var(--color-border);
}

[type="reset"]:hover:not(:disabled) {
  background: var(--color-surface-2);
  border-color: var(--color-border);
  color: var(--color-text);
}

progress {
  width: 100%;
  height: var(--meter-height);
  accent-color: var(--color-link);
}

meter {
  width: 100%;
  height: var(--meter-height);
}

output {
  display: inline-block;
  padding: 0.15em 0.4em;
  background: var(--color-surface);
  border-radius: var(--radius-sm);
  font-family: var(--font-family-mono);
  font-size: var(--font-size-sm);
}