.btn { align-items: center; background-color: var(--btn-background, var(--color-bg)); border-radius: var(--btn-radius, var(--rounded-md)); border: 1px solid var(--btn-border-color, var(--color-border)); color: var(--btn-color, var(--color-text)); cursor: pointer; display: inline-flex; font-size: var(--text-sm); font-weight: var(--font-medium); gap: var(--size-2); justify-content: center; white-space: nowrap; padding: var(--btn-padding, 0.5rem 1rem); text-align: center; img:not([class]) { filter: var(--btn-icon-color, var(--color-filter-text)); } &:hover { filter: var(--btn-filter-hover, var(--brightness-95)); } &:focus-visible { outline: var(--border-2) solid var(--color-selected-dark); outline-offset: var(--border-2); } &:disabled { opacity: var(--opacity-50); pointer-events: none; } } .btn--primary { --btn-background: var(--color-primary); --btn-border-color: transparent; --btn-color: var(--color-text-reversed); --btn-icon-color: var(--color-filter-text-reversed); } .btn--secondary { --btn-background: var(--color-secondary); --btn-border-color: transparent; } .btn--borderless { --btn-border-color: transparent; } .btn--positive { --btn-background: var(--color-positive); --btn-border-color: transparent; --btn-color: var(--color-text-reversed); --btn-icon-color: var(--color-filter-text-reversed); } .btn--negative { --btn-background: var(--color-negative); --btn-border-color: transparent; --btn-color: var(--color-text-reversed); --btn-icon-color: var(--color-filter-text-reversed); } .btn--plain { --btn-background: transparent; --btn-border-color: transparent; --btn-filter-hover: none; --btn-padding: 0; } .btn--rounded { --btn-radius: var(--rounded-full); } [aria-busy] .btn--loading:disabled { > * { visibility: hidden; } &::after { filter: var(--btn-icon-color, var(--color-filter-text)); } &::after { animation: spin 1s linear infinite; background-image: url("loader-circle.svg"); background-size: cover; block-size: var(--size-4); content: ""; inline-size: var(--size-4); position: absolute; } }