:root {
  --button-size: 2.5em;
}

.button {
  --icon-size: 1.3em;
  /* --button-hover-bg: color-mix(in oklch, var(--color-button-bg) 50%, var(--primary-color) 50%); */
  --button-hover-bg: color-mix(in oklch, var(--color-button-bg) 30%, var(--primary-color) 70%);
  --button-hover-color: var(--color-text-inverted);

  background-color: var(--color-button-bg);
  color: var(--color-text);
  border-radius: calc(var(--button-size) / 2);

  font-family: var(--font-mono);
  text-transform: uppercase;

  display: inline-flex;
  gap: calc(var(--button-size) * 0.1);
  align-items: center;
  height: var(--button-size);
  justify-content: flex-start;
  white-space: nowrap;
  text-decoration: none;

  padding-inline-start: calc(var(--button-size) * 0.4);
  padding-inline-end: calc(var(--button-size) * 0.4);

  border: none;

  /* very slight shadow */
  box-shadow: 0 0 0.8em rgba(0, 0, 0, 0.05);
  transition: background-color 0.2s, box-shadow 0.2s, color 0.2s;
  &:hover {
    box-shadow: 0.2em 0.2em 0.7em rgba(0, 0, 0, 0.1);
    cursor: pointer;
  }

  &:has(.icon) {
    padding-inline-start: calc(var(--button-size) * 0.25);
  }


  &.button--small {
    --button-size: 2em;
    --icon-size: 1em;
    font-size: 0.9em;
  }

  /* when it contains an .icon -> circular button */
  &[aria-label]:has(.icon) {
    --icon-size: 75%;
    aspect-ratio: 1;
    block-size: var(--button-size);
    display: grid;
    inline-size: var(--button-size);
    justify-content: normal;
    place-items: center;
    border-radius: 50%;
    padding: 0;
  }

  &:hover {
    background-color: var(--button-hover-bg);
    color: var(--button-hover-color);
  }

  &.primary {
    background-color: var(--primary-color);
    color: var(--color-text-inverted);

    &:hover {
      background-color: color-mix(in oklch, var(--primary-color) 30%, var(--color-button-bg) 70%);
      color: var(--color-text);
    }
  }

  &.secondary {
    opacity: 0.5; /* TODO */
  }

  &.warning {
    background-color: color-mix(in oklch, var(--color-button-bg) 50%, var(--color-red) 50%);
    color: var(--color-red);

    &:hover {
      background-color: color-mix(in oklch, var(--color-button-bg) 30%, var(--color-red) 70%);
    }
  }
}
