.ButtonGroup {
  --button-group-bg-color: var(--control-bg-color);
  --button-group-border-color: var(--control-border-color);
  --btn-group-control-size: calc(var(--control-size) - 2px);

  background-color: var(--button-group-bg-color);
  box-sizing: border-box;
  display: flex;
  flex-direction: row;
  align-self: flex-start;
  border-radius: var(--control-radius);
  border: 1px solid var(--button-group-border-color);

  /* variants */
}

.ButtonGroup[data-variant="danger"] {
    --btn-visual-color: var(--button-danger-fg-color);
    --btn-fg-color: var(--button-danger-fg-color);
    --btn-icon-color: var(--button-danger-fg-color);
    --btn-fg-color--disabled: rgb(from var(--button-danger-fg-color) r g b / 50%);
  }

.ButtonGroup[data-variant="primary"] {
    --btn-visual-color: var(--button-primary-fg-color);
    --btn-fg-color: var(--button-primary-fg-color);
    --btn-icon-color: var(--button-primary-fg-color);
    --btn-fg-color--disabled: var(--button-primary-fg-color);
    --btn-bg-color: var(--button-primary-bg-color);
    --btn-bg-color--hover: var(--button-primary-bg-color--hover);
    --btn-bg-color--active: var(--button-primary-bg-color--active);
    --btn-bg-color--disabled: var(--button-primary-bg-color--disabled);

    --button-group-bg-color: var(--button-primary-bg-color);
  }

.ButtonGroup[data-size="sm"] {
    --btn-group-control-size: calc(var(--control-small-size) - 2px);
    --control-font-size: var(--control-small-font-size);
    --control-gap: var(--control-small-gap);
    --control-padding: var(--control-small-padding);
  }

.ButtonGroup[data-size="lg"] {
    --btn-group-control-size: calc(var(--control-large-size) - 2px);
  }

.ButtonGroup > .Button {
    --btn-bg-color: var(--button-group-bg-color);
    --btn-border-color: transparent;
    --control-size: var(--btn-group-control-size);
  }

:is(.ButtonGroup > .Button):not(:first-of-type) {
      border-top-left-radius: 0;
      border-bottom-left-radius: 0;
    }

:is(.ButtonGroup > .Button):not(:last-of-type) {
      border-top-right-radius: 0;
      border-bottom-right-radius: 0;
      border-right: 1px solid var(--button-group-border-color);
    }

.Button[data-elevated="true"] {
    --btn-bg-color: var(--button-white-bg-color);
    --btn-bg-color--hover: var(--button-white-bg-color--hover);
    --btn-bg-color--active: var(--button-white-bg-color--active);
    --btn-bg-color--disabled: var(--button-white-bg-color--disabled);

    box-shadow: 1px 2px 3px -3px rgba(0, 0, 0, .76), 0 1px 13px -10px rgba(0, 0, 0, .35);
  }

.Button[data-elevated="true"][data-size="lg"] {
      border-color: transparent;
    }

.Button[data-invisible="true"] {
    --btn-bg-color: transparent;
    --btn-border-color: transparent;
    --btn-bg-color--hover: var(--button-invisible-bg-color--hover);
    --btn-bg-color--active: var(--button-invisible-bg-color--active);
    --btn-bg-color--disabled: var(--button-invisible-bg-color--disabled);
  }

.Button[data-invisible="true"][data-variant="primary"] {
      --btn-visual-color: var(--button-primary-bg-color);
      --btn-fg-color: var(--button-primary-bg-color);
      --btn-fg-color--disabled: var(--button-primary-bg-color--disabled);
    }

/* variants */

.Button[data-variant="danger"] {
    --btn-visual-color: var(--button-danger-fg-color);
    --btn-fg-color: var(--button-danger-fg-color);
    --btn-icon-color: var(--button-danger-fg-color);
    --btn-fg-color--disabled: rgb(from var(--button-danger-fg-color) r g b / 50%);
  }

.Button[data-variant="primary"]:not([data-invisible="true"]) {
    --btn-visual-color: var(--button-primary-fg-color);
    --btn-fg-color: var(--button-primary-fg-color);
    --btn-icon-color: var(--button-primary-fg-color);
    --btn-fg-color--disabled: var(--button-primary-fg-color);
    --btn-bg-color: var(--button-primary-bg-color);
    --btn-bg-color--hover: var(--button-primary-bg-color--hover);
    --btn-bg-color--active: var(--button-primary-bg-color--active);
    --btn-bg-color--disabled: var(--button-primary-bg-color--disabled);
  }

.Button[data-plain="true"] {
    width: 100%;
    border-radius: 0;
    --btn-font-weight: normal;
  }

.Button[data-plain="true"] [data-component="leadingVisual"] {
      opacity: 0;
    }

.Button[data-plain="true"][data-active="true"] [data-component="leadingVisual"] {
      opacity: 1;
    }