.language-switcher {
  --ls-base-color: currentColor;
  --ls-alt-color: white;
  --ls-text-color: var(--ls-base-color);
  --ls-bg-color: var(--ls-alt-color);
  --ls-list-text-color: var(--ls-text-color);
  --ls-list-bg-color: var(--ls-bg-color);
  --ls-list-hover-text-color: var(--ls-alt-color);
  --ls-list-hover-bg-color: var(--ls-base-color);
  --ls-border-color: var(--ls-base-color);
  --ls-border-width: 1px;
  --ls-main-padding: .5em 1.7em .5em .5em;

  display: flex;
  text-align: left;
  position: relative;
  min-width: 4em;
  line-height: 1;
  white-space: nowrap;
  text-box: trim-both cap alphabetic; /* remove extra space around text */
  border: none; /* reset conflict with WP core styles */
}

/**
 * button
 */
.language-switcher__opener {
  position: relative;
  display: flex;
  align-items: center;
  width: 100%;
  margin: 0;
  padding: var(--ls-main-padding);
  font-size: 100%;         /* ! for button */
  font-family: inherit;    /* ! for button */
  font-weight: inherit;    /* ! for button */
  text-transform: inherit; /* ! for button */
  line-height: inherit;    /* ! for button */
  color: var(--ls-text-color);
  background: var(--ls-bg-color);
  border: var(--ls-border-width) solid var(--ls-border-color);
  cursor: pointer;
  text-box: inherit;
}

/* Arrow */
.language-switcher__opener::after {
  position: absolute;
  top: 50%;
  right: 0.5em;
  width: .5em;
  height: .5em;
  border-left: 0.2em solid var(--ls-text-color);
  border-bottom: 0.2em solid var(--ls-text-color);
  transform: translateY(calc(-50% - .1em)) rotate(-45deg);
  content: '';
}

.language-switcher__opener[aria-expanded='true']::after {
  transform: translateY(calc(-50% + .1em)) rotate(135deg);
}

.language-switcher__opener[aria-expanded='true'] + .language-switcher__list {
  display: block;
}

/**
 * List
 */
.language-switcher__list {
  list-style: none; /* reset UL */
  margin: 0;        /* reset UL */
  padding-left: 0;  /* reset UL */
  font-size: 100%;  /* reset */

  text-box: inherit;
  display: none;
  position: absolute;
  top: 100%;
  left: 0;
  right: 0;
  margin-top: calc(var(--ls-border-width) * -1);
  border: solid var(--ls-border-color);
  border-width: 0 var(--ls-border-width) var(--ls-border-width);
  color: var(--ls-list-text-color);
  background: var(--ls-list-bg-color);
}

.language-switcher__item {
  margin: 0;  /* reset li */
  padding: 0; /* reset li */
}

.language-switcher__link[class] {
  display: flex;
  align-items: center;
  width: 100%;
  padding: var(--ls-main-padding);
  color: inherit;
  text-decoration: none;
}

.language-switcher__item:hover {
  /* NOTE: Split bg-color for the "item" and color for "link" because,
     the value of "Bg color" can be `currentColor` that leads to `gb-color == color` */
  background: var(--ls-list-hover-bg-color);
}
.language-switcher__link[class]:hover {
  color: var(--ls-list-hover-text-color);
}

.language-switcher__flag {
  width: 2em;
  height: 1.5em;
  margin-right: .7em;
}

.language-switcher__flag picture {
  display: contents;
}

.language-switcher__flag img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: contain;
  object-position: center;
}
