@use '../../_styles/mixin.scss' as *;

.o-btn {
  outline: none;
  background-color: transparent;
  border: 1px solid transparent;
  transition: all var(--o-duration-s) var(--o-easing-standard);
  white-space: nowrap;
  text-decoration: none;
  border-radius: var(--btn-radius);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  max-width: var(--btn-max-width);
  min-width: var(--btn-min-width);
  padding: var(--btn-padding);
  height: var(--btn-height);

  cursor: pointer;
}
.o-btn-outline {
  color: var(--btn-color);
  border: 1px solid var(--btn-bd-color);
  @include hover {
    color: var(--btn-color-hover);
    border: 1px solid var(--btn-bd-color-hover);
  }

  &:active {
    color: var(--btn-color-active);
    border: 1px solid var(--btn-bd-color-active);
  }
  &:focus-visible {
    border: 1px solid var(--btn-bd-color-active);
  }
}

.o-btn-solid {
  color: var(--btn-color);
  border: 1px solid var(--btn-bd-color);
  background-color: var(--btn-bg-color);
  background-image: var(--btn-bg-image);
  @include hover {
    color: var(--btn-color-hover);
    border: 1px solid var(--btn-bd-color-hover);
    background-color: var(--btn-bg-color-hover);
    background-image: var(--btn-bg-image-hover);
  }

  &:active {
    color: var(--btn-color-active);
    border: 1px solid var(--btn-bd-color-active);
    background-color: var(--btn-bg-color-active);
    background-image: var(--btn-bg-image-active);
  }
  &:focus-visible {
    border: 1px solid var(--btn-bd-color-active);
  }
}
.o-btn-text {
  color: var(--btn-color);
  background-color: transparent;
  padding: 0;

  @include hover {
    color: var(--btn-color-hover);
    background-color: transparent;
  }

  &:active {
    color: var(--btn-color-active);
    background-color: transparent;
  }
}
.o-btn-icon-only {
  width: var(--btn-height);
  background-color: var(--btn-bg-color);

  @include hover {
    color: var(--btn-color-hover);
    background-color: var(--btn-bg-color-hover);
  }

  &:active {
    color: var(--btn-color-active);
    background-color: var(--btn-bg-color-active);
  }
}
.o-btn-brand {
  border: none;
  @include hover {
    border: none;
  }
}

.o-btn-disabled {
  &,
  &:active,
  &:hover,
  &:focus-visible {
    cursor: not-allowed;

    color: var(--btn-color-disabled);
    border: 1px solid var(--btn-bd-color-disabled);
    background-color: var(--btn-bg-color-disabled);
    background-image: var(--btn-bg-image-disabled);
  }
}

.o-btn-small {
  font-size: var(--o-font_size-tip1);
  line-height: var(--o-line_height-tip1);
}

.o-btn-medium {
  font-size: var(--o-font_size-tip1);
  line-height: var(--o-line_height-tip1);
}

.o-btn-large {
  font-size: var(--o-font_size-text1);
  line-height: var(--o-line_height-text1);
}

.o-btn-prefix {
  display: inline-flex;
  align-items: center;
  margin-right: var(--btn-gap-prefix);
  font-size: var(--btn-icon-size);

  .o-btn-icon-only & {
    margin-right: 0;
    display: flex;
    align-items: center;
    justify-content: center;
  }
}
.o-btn-suffix {
  display: inline-flex;
  align-items: center;
  margin-left: var(--btn-gap-suffix);
  font-size: var(--btn-icon-size);
}
