/* Inspired by https://github.com/lazaronixon/css-zero/blob/master/lib/generators/css_zero/add/templates/app/assets/stylesheets/button.css */

.btn {
  align-items: center;
  background-color: var(--btn-background, var(--color-surface));
  block-size: var(--btn-block-size, 3rem);
  border-radius: var(--btn-radius, var(--rounded-full));
  border: var(--border-width) solid var(--btn-border-color, var(--color-border));
  box-shadow: var(--btn-box-shadow, var(--shadow));
  color: var(--btn-color, var(--color-text));
  column-gap: 0.75rem;
  cursor: default;
  display: inline-flex;
  font-size: var(--btn-font-size, var(--text-medium));
  font-weight: var(--btn-font-weight, var(--font-medium));
  inline-size: var(--btn-inline-size, auto);
  justify-content: var(--btn-justify-content, center);
  padding: var(--btn-padding, .375rem 1rem);
  position: relative;
  white-space: nowrap;
  backdrop-filter: var(--btn-filter, blur(var(--blur)));

  img {
    @media (prefers-color-scheme: dark) {
      filter: invert(100%);
    }
  }

  &:hover {
    background-color: var(--btn-hover-color, var(--color-border));
  }

  &:focus-visible {
    outline: var(--btn-outline-size, 2px) solid var(--color-selected-dark);
  }

  &:is(:disabled, [aria-disabled="true"]) {
    opacity: var(--opacity-disabled);
    pointer-events: none;
  }
}

.btn--primary {
  --btn-background: var(--color-primary);
  --btn-border-color: transparent;
  --btn-color: var(--color-text-reversed);
  --btn-hover-color: rgb(from var(--color-primary) r g b / .7);

  img {
    filter: invert(100%);
  }
}

.btn--negative {
  --colorize-red: invert(20%) sepia(60%) saturate(3012%) hue-rotate(357deg) brightness(106%) contrast(111%);
  --btn-color: var(--color-negative);

  img {
    filter: var(--colorize-red);
  }
}

.btn--icon {
  --btn-padding: 0.5rem;
  --btn-inline-size: 3rem;
}