.button { --button-bg: var(--color-text-accent); --button-hover-bg: color-mix( in oklch, var(--button-bg) 85%, var(--color-text) ); --button-hover-border: var(--button-hover-bg); display: flex; width: auto; align-items: center; justify-content: center; border: var(--border-style-accent); border-radius: var(--radius-field); appearance: none; background: var(--button-bg); color: var(--color-text-inverse); cursor: pointer; font-size: var(--font-sm); font-weight: var(--weight-bold); padding: 0 var(--field-padding); user-select: none; outline-color: var(--color-text-accent); height: var(--field-size); white-space: nowrap; text-decoration: none; transition: background-color 0.15s, border-color 0.15s; &:hover:not(:disabled):not([data-pending]), &:focus-visible { background-color: var(--button-hover-bg); border-color: var(--button-hover-border); } &:focus-visible { outline-style: solid; outline-width: 2px; outline-offset: 1px; } &:active { transform: translateY(1px); } &:disabled, &[data-pending] { cursor: not-allowed; opacity: 0.5; transform: initial; } } .outlined { --button-bg: transparent; --button-hover-bg: var(--color-bg-high); --button-hover-border: var(--color-text-accent); color: var(--color-text-accent); } .outlinedSuccess { --button-bg: transparent; --button-hover-bg: var(--color-bg-high); --button-hover-border: var(--color-success); border-color: var(--color-success); color: var(--color-success); outline-color: var(--color-success); } .outlinedDestructive { --button-bg: transparent; --button-hover-bg: var(--color-bg-high); --button-hover-border: var(--color-error); border-color: var(--color-error); color: var(--color-error); outline-color: var(--color-error); } .small { font-size: var(--font-xs); height: var(--field-size-sm); } .miniscule { font-size: var(--font-2xs); height: var(--field-size-xs); } .big { font-size: var(--font-md); height: var(--field-size-lg); } .minimal { --button-bg: transparent; --button-hover-bg: var(--color-bg-high); padding: 0 var(--s-1); border: none; color: var(--color-text-accent); outline: initial; &:focus-visible { outline: var(--focus-ring); } } .minimalSuccess { --button-bg: transparent; --button-hover-bg: var(--color-bg-high); padding: 0 var(--s-1); border: none; color: var(--color-success); outline-color: var(--color-success); } .success { --button-bg: var(--color-success); border-color: var(--color-success); outline-color: var(--color-success); } .destructive { --button-bg: var(--color-error); border-color: var(--color-error); color: var(--color-text-inverse); outline-color: var(--color-error); } .minimalDestructive { --button-bg: transparent; --button-hover-bg: var(--color-bg-high); padding: 0 var(--s-1); border: none; color: var(--color-error); outline-color: var(--color-error); } .square { aspect-ratio: 1 / 1; padding: 0; } .circle { border-radius: 50%; aspect-ratio: 1 / 1; padding: 0; } .buttonIcon { min-width: 20px; max-width: 20px; margin-inline-end: var(--s-1-5); &.lonely { margin-inline-end: 0 !important; } } .buttonIconSmall { min-width: 18px; max-width: 18px; margin-inline-end: var(--s-1); } .buttonIconMiniscule { min-width: 14px; max-width: 14px; margin-inline-end: var(--s-1); } .buttonIconBig { min-width: 28px; max-width: 28px; margin-inline-end: var(--s-2); }