/**
 * @license
 * Scale https://github.com/telekom/scale
 *
 * Copyright (c) 2021 Egor Kirpichev and contributors, Deutsche Telekom AG
 *
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at https://mozilla.org/MPL/2.0/.
 */

:host {
  /* not selected */
  --background-color-selected: var(--telekom-color-ui-base);
  --button-radius: 6px;
  --padding-top-bottom: var(--telekom-spacing-composition-space-03);
  --height: 28px;
  --font: var(--telekom-text-style-caption-bold);
  --label-disabled: var(--telekom-color-text-and-icon-disabled);
  --transition: all var(--telekom-motion-duration-transition)
    var(--telekom-motion-easing-standard);
  --color: var(--telekom-color-text-and-icon-standard);

  --color-selected: var(--telekom-color-text-and-icon-primary-standard);

  /* medium styles */
  --font-medium: var(--telekom-text-style-ui-bold);
  --height-medium: 36px;

  /* large styles */
  --font-large: var(--telekom-text-style-ui-bold);
  --height-large: 40px;

  /* hover styles */
  --background-color-hover: var(--telekom-color-ui-state-fill-hovered);

  /* active styles */
  --background-color-active: var(--telekom-color-ui-state-fill-pressed);

  display: flex;
  align-items: center;
  justify-content: center;
  flex: 1;
}

.segment {
  box-sizing: border-box;
  position: relative;
  border: 0;
  height: 100%;
  width: 100%;
  border-radius: var(--button-radius);
  padding-top: var(--padding-top-bottom);
  padding-bottom: var(--padding-top-bottom);
  transition: var(--transition);
  background-color: transparent;
  padding: 0;
}

.segment--mask {
  box-sizing: border-box;
  display: flex;
  align-items: center;
  justify-content: center;
  position: relative;
  height: 100%;
  width: 100%;
  border-radius: var(--button-radius);
  background-color: transparent;
  font: var(--font);
  transition: var(--transition);
  white-space: nowrap;
  color: var(--color);
  line-height: 1;
}

button.segment--small.segment--selected .segment--mask {
  padding-left: var(--telekom-spacing-composition-space-04);
  padding-right: var(--telekom-spacing-composition-space-05);
}

button.segment--icon-only.segment--small .segment--mask {
  padding-left: var(--telekom-spacing-composition-space-06);
  padding-right: var(--telekom-spacing-composition-space-06);
}

button.segment--small .segment--mask {
  padding-left: 0.625rem;
  padding-right: 0.625rem;
}

.segment--small {
  height: var(--height);
}

.segment--medium {
  height: var(--height-medium);
}

button.segment--medium.segment--selected .segment--mask {
  padding-left: var(--telekom-spacing-composition-space-05);
  padding-right: var(--telekom-spacing-composition-space-06);
}

button.segment--medium .segment--mask {
  font: var(--font-medium);
  padding-left: 0.875rem;
  padding-right: 0.875rem;
}

.segment--large {
  height: var(--height-large);
}

button.segment--large.segment--selected .segment--mask {
  padding-left: var(--telekom-spacing-composition-space-06);
  padding-right: var(--telekom-spacing-composition-space-07);
}

button.segment--large .segment--mask {
  font: var(--font-large);
  padding-left: var(--telekom-spacing-composition-space-06);
  padding-right: var(--telekom-spacing-composition-space-07);
}

.segment--selected {
  background-color: var(--background-color-selected);
  box-shadow: var(--telekom-shadow-raised-standard);
}

.segment--selected .segment--mask {
  color: var(--color-selected);
}

.segment--disabled.segment--selected .segment--mask {
  color: var(--label-disabled);
}

.segment--disabled:not(.segment--selected) .segment--mask {
  color: var(--label-disabled);
  background-color: transparent;
}

.segment--left-sibling-selected {
  border-radius: 0 var(--button-radius) var(--button-radius) 0;
  margin-left: 0;
  clip-path: inset(-2.75rem -2.75rem -2.75rem 0);
  backface-visibility: hidden;
  overflow: hidden;
}

.segment--right-sibling-selected {
  border-radius: var(--button-radius) 0 0 var(--button-radius);
  clip-path: inset(-2.75rem 0 -2.75rem -2.75rem);
  margin-right: 0;
  backface-visibility: hidden;
  overflow: hidden;
  position: relative;
}

.segment--left-right-sibling-selected {
  clip-path: inset(-2.75rem 0 -2.75rem 0);
  border-radius: 0;
  margin-left: 0;
  margin-right: 0;
  backface-visibility: hidden;
}

.segment:not(.segment--disabled):hover .segment--mask {
  background-color: var(--background-color-hover);
}

.segment:not(.segment--disabled):active .segment--mask {
  background-color: var(--background-color-active);
}

.segment:focus {
  box-shadow: var(--telekom-shadow-raised-standard);
  outline: var(--telekom-spacing-composition-space-02) solid
    var(--telekom-color-functional-focus-standard);
  outline-offset: var(--telekom-spacing-composition-space-01);
  z-index: 40;
  position: relative;
}

.segment:not(.segment--selected):focus {
  outline-offset: 0;
}

.segment--left-right-sibling-selected:focus,
.segment--right-sibling-selected:focus,
.segment--left-sibling-selected:focus {
  clip-path: none;
}

/* FIXME remove the hard-coded icon names */
.segment:not(.segment--icon-only) scale-icon-action-checkmark,
.segment scale-icon-action-close {
  margin-right: var(--telekom-spacing-composition-space-03);
}

.segment:not(.segment--selected) scale-icon-action-checkmark {
  visibility: hidden !important;
}

.segment scale-icon-action-checkmark {
  vertical-align: middle;
}

.segment--selected:not(.segment--icon-only) .icon-container {
  display: none !important;
}

.segment .success-icon-container {
  display: none;
}

.segment--selected .success-icon-container {
  display: flex;
  justify-content: center;
  align-items: center;
}

.icon-container {
  height: 100%;
  display: flex;
  justify-content: center;
  align-items: center;
}

.segment--selected .icon-container {
  color: var(--color-selected);
}
