.btn {
  align-items: center;
  background-color: var(--btn-background, var(--color-surface));
  block-size: var(--btn-block-size, auto);
  border-radius: var(--btn-radius, var(--rounded-md));
  border: 1px solid var(--btn-border-color, var(--color-border));
  box-shadow: var(--btn-box-shadow, var(--shadow-xs));
  color: var(--btn-color, var(--color-text));
  column-gap: var(--size-2);
  cursor: default;
  display: inline-flex;
  font-size: var(--btn-font-size, var(--text-sm));
  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;

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

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

  &:is(:disabled, [aria-disabled="true"]) {
    opacity: var(--opacity-50);
    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 / .9);
}

.btn--secondary {
  --btn-background: var(--color-secondary);
  --btn-border-color: transparent;
  --btn-hover-color: light-dark(#d3d9de, #50585c);
  color: light-dark(#475c6d, #8394ab)
}

.btn--borderless {
  --btn-background: transparent;
  --btn-border-color: transparent;
  --btn-box-shadow: none;
}

.btn--positive {
  --btn-background: var(--color-positive);
  --btn-border-color: transparent;
  --btn-color: white;
  --btn-hover-color: rgb(from var(--color-positive) r g b / .9);
}

.btn--negative {
  --btn-background: var(--color-negative);
  --btn-border-color: transparent;
  --btn-color: white;
  --btn-hover-color: rgb(from var(--color-negative) r g b / .9);
}


.btn--plain {
  --btn-background: transparent;
  --btn-border-color: transparent;
  --btn-box-shadow: none;
  --btn-hover-color: transparent;
  --btn-padding: 0;
}

.btn--icon {
  --btn-padding: var(--size-2);
}

[aria-busy="true"] .btn--loading:disabled {
  >* {
    visibility: hidden;
  }

  &::after {
    animation: spin 1s linear infinite;
    background-color: currentColor;
    block-size: var(--size-5);
    content: "";
    inline-size: var(--size-5);
    mask-image: url("/assets/loading-b8fb367c.svg");
    mask-size: cover;
    position: absolute;
  }
}

/* Customizations */
.btn {
  --btn-radius: var(--rounded-sm);
  --btn-font-weight: var(--font-bold);
}

.btn.btn--light {
  --btn-background: transparent;
  --btn-font-size: var(--text-xs);
  --btn-font-weight: var(--font-extrabold);
  border: 0;
  box-shadow: none;
  text-transform: uppercase;
  --btn-color: light-dark(#3d3d3d, var(--gray-300));
  --btn-hover-color: light-dark(#e8ecef, var(--color-border-light));

  &:hover {
    color: var(--color-link);
  }

  >span+span {
    margin-block-start: 3px;
  }
}

.btn--sm {
  --btn-padding: 0.2rem .6rem;
  --icon-size: 0.85rem;
  --btn-font-size: 0.75rem;
}

.btn--lg {
  block-size: var(--size-14);
  font-size: var(--size-5);
}

.sort_link {
  color: var(--color-primary);

  &:hover {
    text-decoration: underline;
  }
}

.link {
  color: var(--color-link);

  &:hover {
    opacity: var(--opacity-90);
    text-decoration: underline;
  }
}

.link.link--primary {
  font-weight: bold;
}

/* Editor tabs related */
.btn--standout {
  --btn-background: var(--color-standout);
  --btn-border-color: transparent;
  --btn-color: white;
  --btn-hover-color: #507ebf;

  &:hover {
    color: var(--color-text-reversed);
  }
}

.btn--negative-light {
  --btn-background: rgb(from var(--color-negative) r g b / 0.3);
  --btn-border-color: transparent;
  --btn-color: var(--color-negative);
  --btn-hover-color: rgb(from var(--color-negative) r g b / .9);

  &:hover {
    color: white;
  }
}

.btn--primary-light {
  --btn-background: rgb(from var(--color-primary) r g b / 0.3);
  --btn-border-color: transparent;
  --btn-color: var(--color-primary);
  --btn-hover-color: rgb(from var(--color-primary) r g b / .9);

  &:hover {
    color: var(--color-text-reversed);
  }
}

.btn--standout-light {
  --btn-background: rgb(from var(--color-standout) r g b / 0.3);
  --btn-border-color: transparent;
  --btn-color: var(--color-standout);
  --btn-hover-color: rgb(from var(--color-standout) r g b / .9);

  &:hover {
    color: white;
  }
}

#view-tabs {
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  scrollbar-color: transparent transparent;

  &:hover {
    scrollbar-color: var(--color-border-dark) transparent;
  }
}

#view-tabs .view-tab {
  max-inline-size: 200px;
  margin-bottom: 0;
  border-bottom-left-radius: 0;
  border-bottom-right-radius: 0;
  border-bottom: 2px solid var(--color-standout);
  box-shadow: 3px 6px 6px rgb(0 0 0 / 38%);
}

#view-tabs .view-tab .handle {
  visibility: hidden;
  max-width: 0;
  transition: max-width 0.3s var(--ease-3);
  cursor: grab;
}

#view-tabs .view-tab:hover .handle {
  visibility: visible;
  max-width: 10px;
}

#view-tabs .view-tab.inactive {
  opacity: 0.5;
  border-bottom: 2px solid var(--color-secondary);

  &:hover {
    border-bottom: 2px solid rgb(from var(--color-standout) r g b / .6);
    opacity: 1;
  }
}

#editor-footer form button.btn:hover:not(.menu__item) {
  animation: var(--animate-shake-x);
}

/* Prevent form from affecting button display */
form.button_to {
  display: contents;
}
