@use '../../util/util';

#{util.$buttons} {
  background-color: var(--button-bg);
  color: var(--button-fg);
  border: 1px solid var(--button-light);
  border-bottom: 1px solid var(--button-dark);
  border-right: 1px solid var(--button-dark);
  padding: 2px 4px;
  cursor: default;
  user-select: none;
  text-align: center;

  &:focus, &.focus {
    outline: 1px solid var(--focus);
    outline-offset: 0;
  }

  &:disabled, &.disabled {
    color: var(--button-dark);
    text-shadow: 1px 1px 0 var(--button-light);
  }

  &:not(:disabled, .disabled):active, &.active {
    background-color: var(--button-active-bg);
    color: var(--button-active-fg);
    border: 1px solid var(--button-light);
    border-top: 1px solid var(--button-dark);
    border-left: 1px solid var(--button-dark);
  }
}

@mixin primary-button {
  position: relative;

  &::before {
    display: block;
    content: ' ';
    position: absolute;
    inset: -4px;
    border: 1px solid var(--button-light);
    border-top: 1px solid var(--button-dark);
    border-left: 1px solid var(--button-dark);
  }
}

form:focus-within:not(:has(button:focus, input[type=button]:focus, input[type=submit]:focus, input[type=reset]:focus)) {
  #{util.$buttons} {
    &:default {
      @include primary-button;
    }
  }
}

form {
  #{util.$buttons} {
    &:focus, &.focus {
      outline-offset: 5px;
      @include primary-button;
    }
  }
}

#{util.$buttons} {
  &.primary {
    @include primary-button;

    &:focus, &.focus {
      outline-offset: 5px;
    }
  }
}
