:host {
  display: block;
  width: 100%;
}

  :host * {
    box-sizing: border-box;
  }

.form-control {
  --swirl-autocomplete-tags-margin-top: var(--s-space-4);

  display: block;
  width: 100%;
  line-height: var(--s-line-height-sm);
}

.form-control.form-control--has-focus:not(.form-control--disabled) .form-control__label {
      border-color: var(--s-border-highlight);
      box-shadow: 0 0 0 var(--s-border-width-default) var(--s-border-highlight);
    }

.form-control:not(.form-control--has-value):not(.form-control--has-focus):not(
      .form-control--is-select
    ):not(.form-control--has-placeholder) .form-control__input {
      overflow: hidden;
      max-height: 0;
    }

.form-control:not(.form-control--has-value):not(.form-control--has-focus):not(
      .form-control--is-select
    ):not(.form-control--has-placeholder) .form-control__label-text {
      font-size: var(--s-font-size-base);
      opacity: 1;
    }

@media (min-width: 992px) and (max-width: 1439px) and (hover: hover),(min-width: 1440px) {

.form-control:not(.form-control--has-value):not(.form-control--has-focus):not(
      .form-control--is-select
    ):not(.form-control--has-placeholder) .form-control__label-text {
        font-size: var(--s-font-size-sm);
        line-height: var(--s-line-height-sm)
    }
      }

.form-control:not(.form-control--has-value):not(.form-control--has-focus):not(
      .form-control--is-select
    ):not(.form-control--has-placeholder):not(.form-control--label-position-outside) .form-control__label-text {
      position: absolute;
      top: 0;
      bottom: 0;
      display: flex;
      align-items: center;
      height: auto;
    }

.form-control:not(.form-control--has-value):not(.form-control--has-focus):not(
      .form-control--is-select
    ):not(.form-control--has-placeholder) .form-control--font-size-sm .form-control__label-text {
        font-size: var(--s-font-size-sm);
      }

.form-control:not(.form-control--has-value):not(.form-control--has-focus):not(
      .form-control--is-select
    ):not(.form-control--has-placeholder) .form-control--font-size-sm .form-control__description {
        font-size: var(--s-font-size-sm);
      }

.form-control:not(.form-control--has-value):not(.form-control--has-focus):not(
      .form-control--is-select
    ):not(.form-control--has-placeholder).form-control--font-size-base .form-control__label-text {
        font-size: var(--s-font-size-base);
      }

@media (min-width: 992px) and (max-width: 1439px) and (hover: hover),(min-width: 1440px) {

.form-control:not(.form-control--has-value):not(.form-control--has-focus):not(
      .form-control--is-select
    ):not(.form-control--has-placeholder).form-control--font-size-base .form-control__label-text {
          font-size: var(--s-font-size-base)
      }
        }

.form-control:not(.form-control--has-value).form-control--is-select .select__label {
      overflow: hidden;
      max-height: 0;
      pointer-events: none;
    }

.form-control:not(.form-control--has-value).form-control--is-select .form-control__label-text {
      font-size: var(--s-font-size-base);
      opacity: 1;
    }

@media (min-width: 992px) and (max-width: 1439px) and (hover: hover),(min-width: 1440px) {

.form-control:not(.form-control--has-value).form-control--is-select .form-control__label-text {
        font-size: var(--s-font-size-sm);
        line-height: var(--s-line-height-sm)
    }
      }

.form-control:not(.form-control--has-value).form-control--is-select:not(.form-control--label-position-outside) .form-control__label-text {
      position: absolute;
      top: 0;
      bottom: 0;
      display: flex;
      align-items: center;
      height: auto;
      pointer-events: auto;
    }

.form-control:not(.form-control--has-value).form-control--is-select.form-control--font-size-base .form-control__label-text {
        font-size: var(--s-font-size-base);
      }

@media (min-width: 992px) and (max-width: 1439px) and (hover: hover),(min-width: 1440px) {

.form-control:not(.form-control--has-value).form-control--is-select.form-control--font-size-base .form-control__label-text {
          font-size: var(--s-font-size-base)
      }
        }

@media (min-width: 992px) and (max-width: 1439px) and (hover: hover),(min-width: 1440px) {

.form-control {
    --swirl-text-input-placeholder-size: var(--s-font-size-sm)
}
  }

.form-control--label-position-outside {
  --swirl-text-input-placeholder-size: var(--s-font-size-base);
  --swirl-autocomplete-tags-margin-top: 0;

  padding-top: calc(var(--s-line-height-sm) + var(--s-space-4));
}

.form-control--label-position-outside:not(.form-control--is-select) .form-control__label {
      cursor: text;
    }

.form-control--label-position-outside .form-control__label {
    min-height: calc(2.375rem + 2 * var(--s-border-width-default));
    padding: var(--s-space-8) var(--s-space-12);
    gap: var(--s-space-2);
  }

@media (min-width: 992px) and (max-width: 1439px) and (hover: hover),(min-width: 1440px) {

.form-control--label-position-outside .form-control__label {
      min-height: calc(2.25rem + 2 * var(--s-border-width-default))
  }
    }

.form-control--label-position-outside .form-control__label-text,
  .form-control--label-position-outside:not(.form-control--has-value):not(.form-control--has-focus):not(
      .form-control--is-select
    ):not(.form-control--has-placeholder)
    .form-control__label-text,
  .form-control--label-position-outside:not(.form-control--has-value).form-control--is-select
    .form-control__label-text {
    bottom: calc(100% + var(--s-space-4));
    left: 0;
    color: var(--s-text-default);
    font-size: var(--s-font-size-sm);
    font-weight: var(--s-font-weight-medium);
    transform: none;
    opacity: 1;
  }

.form-control--label-position-outside.form-control--has-character-counter .form-control__description {
    max-width: calc(100% - 6rem);
  }

.form-control--label-position-outside.form-control--font-size-base .form-control__label-text {
      font-size: var(--s-font-size-base);
    }

@media (min-width: 992px) and (max-width: 1439px) and (hover: hover),(min-width: 1440px) {

.form-control--label-position-outside.form-control--font-size-base .form-control__label-text {
        font-size: var(--s-font-size-base)
    }
      }

@media (min-width: 992px) and (max-width: 1439px) and (hover: hover),(min-width: 1440px) {

.form-control--label-position-outside {
    --swirl-text-input-placeholder-size: var(--s-font-size-sm)
}
  }

@media (min-width: 992px) and (max-width: 1439px) and (hover: hover),(min-width: 1440px) {

.form-control__label-text {
    display: flex;
    align-items: center
}
  }

.form-control__label-text .form-control__tooltip {
    display: none;
    color: var(--s-icon-default);
  }

@media (min-width: 992px) and (max-width: 1439px) and (hover: hover),(min-width: 1440px) {

.form-control__label-text .form-control__tooltip {
      display: flex;
      position: relative;
      padding: var(--s-space-4);
      z-index: 10
  }

      .form-control__label-text .form-control__tooltip:hover {
        cursor: default;
      }

      .form-control__label-text .form-control__tooltip swirl-tooltip::after {
        content: "";
        position: absolute;
        inset: calc(-1 * var(--s-space-4));
      }
    }

.form-control--invalid.form-control--has-focus:not(.form-control--disabled) .form-control__label {
      border-color: var(--s-border-critical);
      box-shadow: 0 0 0 var(--s-border-width-default) var(--s-border-critical);
    }

.form-control--invalid:not(.form-control--disabled) .form-control__prefix {
    border-color: var(--s-border-critical);
  }

.form-control--invalid .form-control__label {
    border-color: var(--s-border-critical);
  }

.form-control--disabled .form-control__label, .form-control--readonly .form-control__label {
    border-color: var(--s-border-default);
    background-color: var(--s-surface-raised-default);
  }

.form-control--disabled .form-control__prefix, .form-control--readonly .form-control__prefix {
    border-color: var(--s-border-default);
  }

.form-control--inline .form-control__label {
    min-height: calc(2.375rem + 2 * var(--s-border-width-default));
    padding: var(--s-space-8) var(--s-space-12);
    gap: var(--s-space-2);
  }

@media (min-width: 992px) and (max-width: 1439px) and (hover: hover),(min-width: 1440px) {

.form-control--inline .form-control__label {
      min-height: calc(2.25rem + 2 * var(--s-border-width-default))
  }
    }

.form-control--inline:not(.form-control--has-placeholder) .form-control__label-text {
    right: var(--s-space-12);
    left: var(--s-space-12);
    transition: none;
    opacity: 0;
  }

.form-control--inline.form-control--has-character-counter .form-control__description {
    max-width: calc(100% - 6rem);
  }

.form-control--hide-label .form-control__label-text {
    position: absolute;
    display: inline;
    overflow: hidden;
    width: 1px;
    height: 1px;
    margin: -1px;
    padding: 0;
    border: 0;
    white-space: nowrap;
    word-wrap: normal;
    clip: rect(0, 0, 0, 0);
  }

.form-control--has-prefix.form-control--label-position-outside .form-control__label {
      position: static;
    }

.form-control--has-prefix.form-control--has-focus:not(.form-control--disabled).form-control--invalid .form-control__label {
        border-left-color: transparent;
        box-shadow: 0 0 0 var(--s-border-width-default) var(--s-border-critical);
      }

.form-control--has-prefix.form-control--has-focus:not(.form-control--disabled).form-control--invalid .form-control__prefix {
        border-color: var(--s-border-critical);
        box-shadow: 0 0 0 var(--s-border-width-default) var(--s-border-critical);
      }

.form-control--has-prefix.form-control--has-focus:not(.form-control--disabled) .form-control__label {
      border-left-color: transparent;
      box-shadow: 0 0 0 var(--s-border-width-default) var(--s-border-highlight);
    }

.form-control--has-prefix.form-control--has-focus:not(.form-control--disabled) .form-control__prefix {
      border-color: var(--s-border-highlight);
      border-right-color: transparent;
      box-shadow: 0 0 0 var(--s-border-width-default) var(--s-border-highlight);
    }

.form-control--has-prefix .form-control__label {
    border-top-left-radius: 0;
    border-bottom-left-radius: 0;
  }

.form-control--has-prefix .form-control__prefix {
    display: flex;
  }

.form-control__controls {
  position: relative;
  display: flex;
  align-items: stretch;
}

.form-control__label {
  position: relative;
  display: flex;
  width: 100%;
  min-height: 4.375rem;
  padding: calc(var(--s-space-12) + 1.25rem) var(--s-space-16) var(--s-space-12);
  justify-content: center;
  border: var(--s-border-width-default) solid var(--s-border-strong);
  border-radius: var(--s-border-radius-sm);
  color: var(--s-text-subdued);
  flex-direction: column;
  gap: var(--s-space-2);
  background-color: var(--swirl-form-control-label-background-color);
}

.form-control__secondary-label {
  font-weight: var(--s-font-weight-normal);
  color: var(--s-text-subdued);
  margin-left: var(--s-space-4);
}

.form-control__label-text {
  position: absolute;
  right: var(--s-space-16);
  bottom: calc(100% - 1.25rem - var(--s-space-12));
  left: var(--s-space-16);
  overflow: hidden;
  font-size: var(--s-font-size-sm);
  text-align: start;
  white-space: nowrap;
  text-overflow: ellipsis;
  transition: font-size 0.15s, transform 0.15s, top 0.15s;
  transform: none;
}

.form-control__prefix {
  z-index: 1;
  display: none;
  padding-right: var(--s-space-16);
  padding-left: var(--s-space-16);
  justify-content: center;
  align-items: center;
  border-top: var(--s-border-width-default) solid var(--s-border-strong);
  border-bottom: var(--s-border-width-default) solid var(--s-border-strong);
  border-left: var(--s-border-width-default) solid var(--s-border-strong);
  border-top-left-radius: var(--s-border-radius-sm);
  border-bottom-left-radius: var(--s-border-radius-sm);
  background-color: var(--s-surface-raised-default);
}

.form-control__prefix::slotted(select) {
    height: 100%;
    margin-right: calc(-1 * var(--s-space-16));
    margin-left: calc(-1 * var(--s-space-16));
    padding-right: calc(var(--s-space-16) + 1.25rem);
    padding-left: var(--s-space-16);
    border: none;
    color: var(--s-text-default);
    background: url('data:image/svg+xml,<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M10 12.4579C9.88889 12.4579 9.78472 12.4404 9.6875 12.4054C9.59027 12.3709 9.5 12.312 9.41666 12.2287L5.5625 8.37453C5.40972 8.22175 5.33694 8.03064 5.34416 7.8012C5.35083 7.57231 5.43055 7.38148 5.58333 7.2287C5.73611 7.07592 5.93055 6.99953 6.16666 6.99953C6.40277 6.99953 6.59722 7.07592 6.75 7.2287L10 10.4787L13.2708 7.20787C13.4236 7.05509 13.6147 6.98203 13.8442 6.9887C14.0731 6.99592 14.2639 7.07592 14.4167 7.2287C14.5694 7.38148 14.6458 7.57592 14.6458 7.81203C14.6458 8.04814 14.5694 8.24259 14.4167 8.39537L10.5833 12.2287C10.5 12.312 10.4097 12.3709 10.3125 12.4054C10.2153 12.4404 10.1111 12.4579 10 12.4579Z" fill="%236E6E6E"/></svg>');
    background-color: transparent;
    background-repeat: no-repeat;
    background-position: right var(--s-space-8) center;
    font: inherit;
    line-height: var(--s-line-height-base);
    cursor: pointer;
    -webkit-appearance: none;
       -moz-appearance: none;
            appearance: none;
  }

.form-control__prefix::slotted(select):focus {
      outline: none;
    }

@media (min-width: 992px) and (max-width: 1439px) and (hover: hover),(min-width: 1440px) {

.form-control__prefix::slotted(select) {
      font-size: var(--s-font-size-sm);
      line-height: var(--s-line-height-sm)
  }
    }

.form-control__icon {
  position: absolute;
  top: 0px;
  bottom: 0px;
  margin: auto;
  display: flex;
  align-items: center;
  justify-content: center;
  width: var(--s-space-20);
}

.form-control--has-icon .form-control__label-text {
    margin-left: calc(var(--s-space-20) + var(--s-space-12));
  }

.form-control--has-icon .form-control__input {
    margin-left: calc(var(--s-space-20) + var(--s-space-12));
  }

.form-control__description {
  display: block;
  margin-top: var(--s-space-4);
  padding-left: var(--s-space-4);
  color: var(--s-text-subdued);
  font-size: var(--s-font-size-sm);
}

.form-control__error-message {
  display: block;
  margin-top: var(--s-space-4);
}

.form-control__input {
  display: flex;
  flex-direction: column;
  gap: var(--s-space-8);
}

.form-control__input::slotted([contenteditable]:focus) {
    outline: none;
  }

.form-control__input::slotted([contenteditable]) {
    width: 100%;
    margin: 0;
    padding: 0;
    border: none;
    color: var(--s-text-default);
    background-color: transparent;
    font: inherit;
    font-size: var(--s-font-size-base);
    line-height: var(--s-line-height-base);
    caret-color: var(--s-border-highlight);
  }

@media (min-width: 992px) and (max-width: 1439px) and (hover: hover),(min-width: 1440px) {

.form-control__input::slotted([contenteditable]) {
      font-size: var(--s-font-size-sm);
      line-height: var(--s-line-height-sm)
  }
    }

.form-control__bottom {
  display: none;
  width: 100%;
}

.form-control--has-bottom .form-control__bottom {
    display: block;
  }
