.lv-button-control {
  --lv-button-scale: 1;
  --lv-button-border-width: calc(1px * var(--lv-button-scale));
  align-items: center;
  background: none;
  border-radius: calc(0.5rem * var(--lv-button-scale));
  box-sizing: border-box;
  color: inherit;
  cursor: pointer;
  display: inline-flex;
  font: inherit;
  gap: calc(1rem * var(--lv-button-scale));
  justify-content: center;
  margin: 0;
  position: relative;
  text-decoration: none;
  transform-origin: center;
  transition:
    transform 140ms ease,
    box-shadow 140ms ease,
    background-color 140ms ease,
    border-color 140ms ease,
    color 140ms ease;
  user-select: none;
}

.lv-button-control:focus-visible {
  box-shadow: var(--vats-focus-shadow);
  outline: none;
  z-index: 2;
}

.lv-button-control:not(:disabled):not([aria-disabled='true']):hover {
  transform: scale(1.2);
  z-index: 1;
}

.lv-button-control:disabled,
.lv-button-control[aria-disabled='true'] {
  cursor: not-allowed;
  opacity: 0.5;
}

.lv-button {
  min-block-size: calc(2.5rem * var(--lv-button-scale));
  padding: calc(0.1rem * var(--lv-button-scale)) calc(0.5rem * var(--lv-button-scale));
}

.lv-button-icon {
  display: block;
  flex: none;
}

.lv-button--xxs {
  font-size: calc(var(--vats-text-xs) * var(--lv-button-scale));
  gap: calc(0.5rem * var(--lv-button-scale));
}

.lv-button.lv-button--xxs {
  min-block-size: calc(2rem * var(--lv-button-scale));
}

.lv-button--xs,
.lv-button--sm,
.lv-button--md {
  font-size: calc(var(--vats-text-s) * var(--lv-button-scale));
}

.lv-button--lg,
.lv-button--xl {
  font-size: calc(var(--vats-text-m) * var(--lv-button-scale));
}

.lv-icon-button {
  block-size: calc(var(--lv-icon-button-size) * var(--lv-button-scale));
  inline-size: calc(var(--lv-icon-button-size) * var(--lv-button-scale));
  padding: 0;
}

.lv-icon-button.lv-button--xxs {
  --lv-icon-button-size: 1.5rem;
}

.lv-icon-button.lv-button--xs {
  --lv-icon-button-size: 2rem;
}

.lv-icon-button.lv-button--sm {
  --lv-icon-button-size: 2.5rem;
}

.lv-icon-button.lv-button--md {
  --lv-icon-button-size: 2.75rem;
}

.lv-icon-button.lv-button--lg {
  --lv-icon-button-size: 3.25rem;
}

.lv-icon-button.lv-button--xl {
  --lv-icon-button-size: 3.5rem;
  margin-block-start: calc(0.25rem * var(--lv-button-scale));
}

.lv-button--borderless {
  --lv-button-border-width: 0px;
}

.lv-icon-button:focus-visible {
  box-shadow: none;
}

.lv-icon-button :is(.icon-wrapper) {
  transition: filter 140ms ease;
}

.lv-icon-button:focus-visible :is(.icon-wrapper) {
  filter: var(--vats-focus-icon-filter);
}

.lv-button--ghost {
  background-color: transparent;
  border: 0;
  color: var(--vats-text);
}

.lv-button--ghost:not(:disabled):not([aria-disabled='true']):hover {
  background-color: transparent;
  color: hsl(from var(--vats-text2) h s l / 90%);
}

.lv-button--soft {
  background-color: hsl(from var(--vats-coloredtext) h s l / 20%);
  border: var(--lv-button-border-width) solid hsl(from var(--vats-coloredtext) h s l / 50%);
  color: var(--vats-text);
}

.lv-button--soft:not(:disabled):not([aria-disabled='true']):hover {
  background-color: hsl(from var(--vats-coloredtext) h s l / 30%);
  border-color: hsl(from var(--vats-coloredtext) h s l / 70%);
}

.lv-button--outline-info {
  background-color: hsl(from var(--vats-text4) h s l / 10%);
  border: var(--lv-button-border-width) solid hsl(from var(--vats-text) h s l / 20%);
  color: hsl(from var(--vats-text2) h s l / 100%);
}

.lv-button--outline-info:not(:disabled):not([aria-disabled='true']):hover {
  background-color: hsl(from var(--vats-text) h s l / 20%);
  border-color: hsl(from var(--vats-text) h s l / 70%);
}

.lv-button--outline-danger {
  background-color: transparent;
  border: var(--lv-button-border-width) solid var(--vats-coloredtext);
  color: var(--vats-coloredtext);
}

.lv-button--outline-danger:not(:disabled):not([aria-disabled='true']):hover {
  background-color: hsl(from var(--vats-coloredtext) h s l / 20%);
  border-color: hsl(from var(--vats-coloredtext) h s l / 70%);
}

.lv-button--secondary {
  background-color: var(--vats-thx-th);
  border: var(--lv-button-border-width) solid var(--vats-thx-th);
  color: var(--vats-text-inverse);
}

.lv-button--secondary:not(:disabled):not([aria-disabled='true']):hover {
  background-color: hsl(from var(--vats-thx-th) h s l / 80%);
}

.lv-button--tertiary {
  background-color: var(--vats-blue);
  border: var(--lv-button-border-width) solid var(--vats-blue);
  color: var(--vats-text-inverse);
}

.lv-button--tertiary:not(:disabled):not([aria-disabled='true']):hover {
  background-color: hsl(from var(--vats-blue) h s l / 80%);
}

.lv-button--outline {
  background-color: transparent;
  border: var(--lv-button-border-width) solid var(--vats-thx-th);
  color: var(--vats-thx-th);
}

.lv-button--outline:not(:disabled):not([aria-disabled='true']):hover {
  background-color: hsl(from var(--vats-thx-th) h s l / 10%);
}

.lv-button--primary {
  background-color: var(--vats-coloredtext);
  border: var(--lv-button-border-width) solid var(--vats-coloredtext);
  color: var(--vats-text-inverse);
}

.lv-button--primary:not(:disabled):not([aria-disabled='true']):hover {
  background-color: hsl(from var(--vats-coloredtext) h s l / 80%);
}

.lv-button--quiet {
  background-color: transparent;
  border: var(--lv-button-border-width) solid hsl(from var(--vats-text2) h s l / 30%);
  color: var(--vats-text3);
}

.lv-button--quiet:not(:disabled):not([aria-disabled='true']):hover {
  background-color: hsl(from var(--vats-text3) h s l / 10%);
  border-color: var(--vats-coloredtext);
  color: var(--vats-coloredtext);
}
