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

#{util.$buttons} {
  background-color: var(--button-bg);
  color: var(--button-fg);
  border: 1px solid var(--border);
  border-radius: 2.5px;
  min-width: 70px;
  padding: 2px 8px;
  position: relative;
  box-shadow: inset -1px -1px 0 var(--button-dark), inset 1px 1px 0 var(--button-light), 
    inset -2px -2px 0 var(--button-dark), inset 2px 2px 0 var(--button-light);
  outline: none;
  cursor: default;
  user-select: none;
  text-align: center;

  &:focus, &.focus {
    box-shadow: inset 1px 1px 0 var(--border), inset -1px -1px 0 var(--border),
      inset -2px -2px 0 var(--button-dark), inset 2px 2px 0 var(--button-light), 
      inset -3px -3px 0 var(--button-dark), inset 3px 3px 0 var(--button-light);

    &::after {
      content: '';
      display: block;
      position: absolute;
      top: 3px;
      bottom: 3px;
      left: 6px;
      right: 6px;
      border: 1px dotted var(--button-dark);
      border-radius: 1px;
    }
  }

  &:disabled, &.disabled {
    &::after {
      content: '';
      display: block;
      position: absolute;
      top: 3px;
      left: 3px;
      right: 3px;
      bottom: 3px;
      background-image: linear-gradient(45deg, var(--button-bg) 25%, transparent 25%), linear-gradient(-45deg, var(--button-bg) 25%, transparent 25%), linear-gradient(45deg, transparent 75%, var(--button-bg) 75%), linear-gradient(-45deg, transparent 75%, var(--button-bg) 75%);
      background-size: 2px 2px;
      background-position: 0 0, 0 1px, 1px -1px, -1px 0px;
    }
  }

  &:not(:disabled, .disabled):active, &.active {
    box-shadow: inset 1px 1px 0 var(--border), inset -1px -1px 0 var(--border), inset 2px 2px 0 var(--button-dark);
    padding: 3px 7px 1px 9px;

    &::after {
      top: 4px;
      bottom: 2px;
      left: 31px;
      right: 29px;
    }
  }
}

@mixin primary-button {
  box-shadow: inset 1px 1px 0 var(--border), inset -1px -1px 0 var(--border),
    inset -2px -2px 0 var(--button-dark), inset 2px 2px 0 var(--button-light), 
    inset -3px -3px 0 var(--button-dark), inset 3px 3px 0 var(--button-light);
}

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;
    }
  }
}

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