:host {
  --background: var(--bp-status-neutral-background-200);
  --color: var(--bp-status-neutral-color-100);
  --border: var(--bp-object-border-width-100) solid transparent;
  --padding: 0 var(--bp-size-500);
  --min-width: var(--bp-size-1100);
  --font-size: var(--bp-text-size-200);
  --font-weight: var(--bp-text-weight-regular);
  --line-height: var(--font-size);
  --text-align: center;
  --height: calc(var(--bp-size-800) + var(--bp-size-300));
  --border-radius: var(--bp-object-border-radius-100);
  --opacity: 1;
  --text-decoration: none;
  --transform: translateY(calc(var(--bp-size-100) / 2));
  display: inline-flex;
  position: relative;
}

[part='internal'] {
  font-size: var(--font-size);
  line-height: var(--line-height);
  color: var(--color);
  padding: var(--padding);
  border: var(--border);
  min-width: var(--min-width);
  height: var(--height);
  gap: var(--bp-space-xs);
  border-radius: var(--border-radius);
  text-align: var(--text-align);
  opacity: var(--opacity);
  text-decoration: var(--text-decoration);
  overflow: hidden;
  display: inline-flex;
  place-content: center;
  place-items: center;
  width: 100%;
}

/* stylelint-disable-next-line selector-not-notation */
:host(:active:not(:state(disabled)):not([readonly])) [part='internal'] {
  transform: var(--transform);
}

:host([status='success']) {
  --background: var(--bp-status-success-background-200);
  --color: var(--bp-status-success-color-100);
}

:host([status='warning']) {
  --background: var(--bp-status-warning-background-200);
  --color: var(--bp-status-warning-color-100);
}

:host([status='danger']) {
  --background: var(--bp-status-danger-background-200);
  --color: var(--bp-status-danger-color-100);
}

:host([status='accent']) {
  --background: var(--bp-status-accent-background-200);
  --color: var(--bp-status-accent-color-100);
}

:host(:state(disabled)) {
  --opacity: 0.5;
  --cursor: default;
}

:host([size='sm']) {
  --font-size: var(--bp-text-size-200);
  --min-width: calc(var(--bp-size-800) * 2);
  --height: var(--bp-size-800);
}

:host([action='secondary']) {
  --background: transparent;
  --color: var(--bp-status-neutral-background-200);
  --border: var(--bp-object-border-width-100) solid currentcolor;
}

:host([action='secondary'][status='accent']) {
  --color: var(--bp-status-accent-background-200);
}

:host([action='secondary'][status='success']) {
  --color: var(--bp-status-success-background-200);
}

:host([action='secondary'][status='warning']) {
  --color: var(--bp-status-warning-background-300);
}

:host([action='secondary'][status='danger']) {
  --color: var(--bp-status-danger-background-200);
}

:host([action='secondary']:state(disabled)) {
  --bp-interaction-offset: 0;
}

::slotted(bp-icon) {
  --color: currentcolor;
}

:host([action='flat']),
:host([action='inline']) {
  --color: var(--bp-text-color-500);
  --min-width: auto;
  --background: inherit;
  --border: 0;
  --text-decoration: underline;
}

:host([action='flat']) [part='internal'],
:host([action='inline']) [part='internal'] {
  text-decoration-thickness: 1px;
}

:host([action='inline']) {
  --padding: 0;
  --min-width: fit-content;
  --width: fit-content;
  --height: fit-content;
  --background: transparent;
  --bp-interaction-offset: 0;
}

:host(:state(pressed)),
:host(:state(selected)) {
  --background: var(--bp-status-accent-background-200);
  --color: var(--bp-status-accent-color-100);
}

:host([action='flat']:state(pressed)),
:host([action='flat']:state(selected)),
:host([action='inline']:state(pressed)),
:host([action='inline']:state(selected)),
:host([action='secondary']:state(pressed)),
:host([action='secondary']:state(selected)) {
  --background: inherit;
  --color: var(--bp-status-accent-background-200);
}

:host([action='flat']:state(disabled)) {
  --bp-interaction-offset: 0;
}

:host([readonly]),
:host(:state(readonly):not(:state(anchor))) {
  --text-decoration: none !important;
  --background: inherit !important;
  --padding: 0 !important;
}
