:host {
  position: relative;
  overflow: visible;
  font-family: var(--r-font-family-text, system-ui);
  font-weight: var(--r-font-weight-regular, 400);
  font-size: var(--r-font-size-400, 1rem);
  text-align: left;
}
:host slot {
  display: contents;
}
:host {
  --board--shift: 1rem;
  --board--min-width: 304px;
  --board--max-width: 504px;
  --board--max-height: 320px;
  --pointer--width: 1rem;
  --pointer--height: 0.5rem;
  --pointer--spacer: 0.25rem;
}

:host([data-open=true]) {
  --r-popover--pointer--display: block;
  --r-popover--board--visibility: visible;
  --r-popover--board--left: var(--r-popover--trigger--left);
  --r-popover--board--top: var(--r-popover--trigger--top);
}
:host([data-open=true]) ::slotted([slot=trigger]) {
  --r-popover--trigger--display: none;
}

:host([data-vertical=top]) {
  --r-popover--pointer--top: 100%;
  --r-popover--pointer--transform: rotate(0deg) translate(0,-1px);
}

:host([data-vertical=bottom]) {
  --r-popover--pointer--bottom: 100%;
  --r-popover--pointer--transform: rotate(180deg);
}

:host([data-vertical=middle]) {
  --r-popover--pointer--top: calc(50% - var(--pointer--height)/2);
  --r-popover--pointer--bottom: auto;
}

:host([data-horizontal=left]) {
  --r-popover--board--left: calc(var(--r-popover--trigger--left, 0) + var(--r-popover--trigger--width, 0) + var(--board--shift));
  --r-popover--pointer--left: calc(100% - var(--r-popover--trigger--width, 0)/2 - var(--board--shift) - var(--pointer--width)/2);
}

:host([data-horizontal=right]) {
  --r-popover--pointer--left: calc(var(--r-popover--trigger--width, 0)/2 + var(--pointer--width)/2);
}

:host([data-horizontal=center]) {
  --r-popover--pointer--left: calc(50% - var(--pointer--width)/2);
}

:host([data-vertical=top][data-horizontal=left]) {
  --r-popover--board--transform: translate(-100%, calc(-100% - var(--pointer--spacer) - var(--r-popover--pointer--height, var(--pointer--height))));
}

:host([data-vertical=top][data-horizontal=right]) {
  --r-popover--board--transform: translate(calc(0px - var(--board--shift)), calc(-100% - var(--pointer--spacer) - var(--r-popover--pointer--height, var(--pointer--height))));
}

:host([data-vertical=top][data-horizontal=center]) {
  --r-popover--board--transform: translate(calc(-50% + var(--r-popover--trigger--width, 0)/2), calc(-100% - var(--pointer--spacer) - var(--r-popover--pointer--height, var(--pointer--height))));
}

:host([data-vertical=top][data-horizontal=cover]) {
  --r-popover--pointer--left: calc(var(--r-popover--trigger--left, 0) + var(--r-popover--trigger--width, 0)/2 - var(--r-popover--pointer--width, var(--pointer--width))/2);
  --r-popover--board--left: 0;
  --r-popover--board--transform: translate(0, calc(-100% - var(--r-popover--pointer--height, var(--pointer--height))));
}

:host([data-vertical=middle][data-horizontal=left]) {
  --r-popover--board--left: var(--r-popover--trigger--left, 0);
  --r-popover--board--transform: translate(calc(-100% - var(--pointer--height) - var(--pointer--spacer)), calc(-50% + var(--r-popover--trigger--height, 0)/2));
  --r-popover--pointer--left: 100%;
  --r-popover--pointer--right: auto;
  --r-popover--pointer--transform: rotate(-90deg) translate(0, calc(0px - var(--pointer--spacer)));
}

:host([data-vertical=middle][data-horizontal=right]) {
  --r-popover--board--left: calc(var(--r-popover--trigger--left, 0) + var(--r-popover--trigger--width, 0) + var(--pointer--height) + var(--pointer--spacer));
  --r-popover--board--transform: translate(0, calc(-50% + var(--r-popover--trigger--height, 0)/2));
  --r-popover--pointer--top: calc(50% - var(--pointer--height)/2);
  --r-popover--pointer--left: auto;
  --r-popover--pointer--right: 100%;
  --r-popover--pointer--transform: rotate(90deg) translate(0, calc(0px - var(--pointer--spacer)));
}

:host([data-vertical=middle][data-horizontal=center]) {
  --r-popover--pointer--display: none;
  --r-popover--board--transform: translate(calc(-50% + var(--r-popover--trigger--width, 0)/2), calc(-50% + var(--r-popover--trigger--height, 0)/2));
}

:host([data-vertical=middle][data-horizontal=cover]) {
  --r-popover--pointer--display: none;
  --r-popover--board--left: 0;
  --r-popover--board--transform: translate(0, calc(-50% + var(--r-popover--trigger--height, 0)/2));
}

:host([data-vertical=bottom][data-horizontal=left]) {
  --r-popover--board--transform: translate(-100%, calc(var(--r-popover--trigger--height, 0) + var(--pointer--spacer) + var(--r-popover--pointer--height, var(--pointer--height))));
}

:host([data-vertical=bottom][data-horizontal=right]) {
  --r-popover--board--transform: translate(calc(0px - var(--board--shift)), calc(var(--r-popover--trigger--height, 0) + var(--r-popover--pointer--height, var(--pointer--height)) + var(--pointer--spacer)));
}

:host([data-vertical=bottom][data-horizontal=center]) {
  --r-popover--board--transform: translate(calc(-50% + var(--r-popover--trigger--width, 0)/2), calc(var(--r-popover--trigger--height, 0) + var(--pointer--spacer) + var(--r-popover--pointer--height, var(--pointer--height))));
}

:host([data-vertical=bottom][data-horizontal=cover]) {
  --r-popover--pointer--left: calc(var(--r-popover--trigger--left, 0) + var(--r-popover--trigger--width, 0)/2 - var(--r-popover--pointer--width, var(--pointer--width))/2);
  --r-popover--board--left: 0;
  --r-popover--board--transform: translate(0, calc(var(--r-popover--trigger--height, 0) + var(--r-popover--pointer--height, var(--pointer--height))));
}

:host([data-vertical=cover]) {
  --r-popover--board--top: 0;
  --r-popover--board--height: 100%;
  --r-popover--board-content--height: 100%;
  --r-popover--pointer--top: calc(var(--r-popover--trigger--top, 0) + var(--r-popover--trigger--height)/2 - var(--pointer--height)/2);
  --r-popover--pointer--bottom: auto;
}

:host([data-vertical=cover][data-content-has-scroll=false]) {
  --r-popover--board--top: var(--r-popover--trigger--top, 0);
}

:host([data-vertical=cover][data-horizontal=left]) {
  --r-popover--board--left: var(--r-popover--trigger--left, 0);
  --r-popover--board--transform: translate(calc(-100% - var(--pointer--spacer) - var(--pointer--height)), 0);
  --r-popover--pointer--left: 100%;
  --r-popover--pointer--right: auto;
  --r-popover--pointer--transform: rotate(-90deg) translate(0, calc(0px - var(--pointer--spacer)));
}

:host([data-vertical=cover][data-horizontal=right]) {
  --r-popover--board--left: calc(var(--r-popover--trigger--left, 0) + var(--r-popover--trigger--width, 0) + var(--pointer--width));
  --r-popover--pointer--left: auto;
  --r-popover--pointer--right: 100%;
  --r-popover--pointer--transform: rotate(90deg) translate(0, calc(0px - var(--pointer--spacer)));
}

:host([data-vertical=cover][data-horizontal=center]),
:host([data-vertical=cover][data-horizontal=cover]) {
  --r-popover--pointer--display: none;
  --r-popover--board--transform: translate(calc(-50% + var(--r-popover--trigger--width, 0)/2), 0);
}

:host([data-vertical=cover][data-horizontal=cover]) {
  --r-popover--pointer--display: none;
  --r-popover--board--transform: none;
  --r-popover--board--height: 100%;
  --r-popover--board--width: 100%;
  --r-popover--board--left: 0;
}

:host([data-fixed-top=true]) {
  --r-popover--board-container--height: var(--r-popover--trigger--top, var(--board--max-height));
}

:host([dismiss-mode=manual]) {
  --r-popover--board-content--padding: 1.5rem 3.5rem 1.5rem 1.5rem;
}

.r-popover {
  position: var(--r-popover--position, relative);
  display: var(--r-popover--display, inline-flex);
}
.r-popover--dismiss {
  position: var(--r-popover--dismiss--position, absolute);
  top: var(--r-popover--dismiss--top, 20px);
  right: var(--r-popover--dismiss--right, 20px);
  color: var(--r-text-inverse);
}
.r-popover--dismiss:hover {
  --r-icon-button--background-color: var(--r-background-interactive-hovered-inverse, rgba(243, 241, 240, 0.04));
}
.r-popover--dismiss:active {
  --r-icon-button--background-color: var(--r-background-interactive-pressed-inverse, rgba(243, 241, 240, 0.12));
}
.r-popover--trigger {
  border: var(--r-popover--trigger--border, none);
  background: var(--r-popover--trigger--background, none);
  padding: var(--r-popover--trigger--padding, 0);
  cursor: var(--r-popover--trigger--cursor, pointer);
  display: var(--r-popover--trigger--display, inline-flex);
  align-items: var(--r-popover--trigger--align-items, center);
  justify-content: var(--r-popover--trigger--justify-content, center);
  min-width: var(--r-popover--trigger--min-width, unset);
  min-height: var(--r-popover--trigger--min-height, unset);
}
.r-popover--trigger:focus {
  box-shadow: 0 0 0 6px var(--r-border-focused-outlined, #fff);
  outline: 2px solid var(--r-border-focused, #0071e3);
  outline-offset: 2px;
}
.r-popover--board {
  position: var(--r-popover--board--position, fixed);
  top: var(--r-popover--board--top, -1000em);
  right: var(--r-popover--board--right, auto);
  bottom: var(--r-popover--board--bottom, auto);
  left: var(--r-popover--board--left, -1000em);
  visibility: var(--r-popover--board--visibility, hidden);
  width: var(--r-popover--board--width, 100%);
  min-width: var(--board--min-width);
  max-width: var(--board--max-width);
  height: var(--r-popover--board--height, auto);
  max-height: var(--r-popover--board--max-height, var(--board--max-height));
  background-color: var(--r-popover--board--background-color, var(--r-background-inverse));
  color: var(--r-popover--board--color, var(--r-text-inverse));
  border: var(--r-popover--board--border, none);
  transform: var(--r-popover--board--transform, none);
  box-sizing: var(--r-popover--board--box-sizing, border-box);
  padding: var(--r-popover--board--padding, 0);
  margin: var(--r-popover--board--margin, 0);
  overflow: var(--r-popover--board--overflow, visible);
}
.r-popover--board-content {
  display: var(--r-popover--board-content--display, flex);
  flex-direction: var(--r-popover--board-content--flex-direction, column);
  gap: var(--r-popover--board-content--gap, 1.5rem);
  overflow: var(--r-popover--board-content--overflow, auto);
  height: var(--r-popover--board-content--height, auto);
  max-height: var(--r-popover--board-content--max-height, var(--board--max-height));
  padding: var(--r-popover--board-content--padding, 1.5rem);
  box-sizing: var(--r-popover--board-content--box-sizing, border-box);
}
.r-popover--board-pointer {
  display: var(--r-popover--pointer--display, flex);
  width: var(--r-popover--pointer--width, var(--pointer--width));
  height: var(--r-popover--pointer--height, var(--pointer--height));
  position: var(--r-popover--pointer--position, absolute);
  top: var(--r-popover--pointer--top, auto);
  right: var(--r-popover--pointer--right, auto);
  bottom: var(--r-popover--pointer--bottom, auto);
  left: var(--r-popover--pointer--left, auto);
  color: var(--r-popover--pointer--color, var(--r-background-inverse));
  transform: var(--r-popover--pointer--transform, none);
  transform-origin: var(--r-popover--pointer--transform-origin, center);
}
.r-popover--board-pointer > svg {
  display: flex;
}
