.funkwhale.input {
  position: relative;
  flex-grow: 1;

  --padding-v: 9px;
  --padding: 16px;

  > input {
    border: none !important;
    width: 100%;
    padding: 10px 16px;
    font-size: 14px;
    font-family: $font-main;
    line-height: 28px;
    border-radius: var(--fw-border-radius);
    cursor: text;

    @include light-theme {
        &.raised {
          background-color: #ffffff;
          border-color: var(--border-color);
        }
    }

    &:hover {
      box-shadow: inset 0 0 0 4px var(--border-color);
    }

    &:focus {
      box-shadow: inset 0 0 0 4px var(--focus-ring-color);

      &:focus-visible {
        outline: none;
      }
    }

    &::placeholder {
      color: var(--fw-placeholder-color);
    }
  }

  &.has-icon > input {
    padding-left: 36px;
  }

  > .label {
    margin-top: -18px;
    padding-bottom: 8px;
    font-size:14px;
    font-weight:600;
  }

  > .prefix,
  > .input-right {
    align-items: center;
    font-size: 14px;
    color: var(--fw-placeholder-color);
  }

  > .prefix {
    position: absolute;
    left: 0;
    bottom: 0;

    height: 100%;
    min-width: 48px;
    display: flex;

    > i {
      font-size:18px;
      margin: auto;
    }
  }

  &:has(>.prefix)>input {
    padding-left: 40px;
  }

  > .input-right {
    position: absolute;
    right: 0px;
    bottom: 0px;
    height: 100%;
    min-width: 48px;
    display: flex;

    > i {
      font-size:18px;
    }

    > .span-right {
      padding: calc(var(--padding-v) - 1px) var(--padding) calc(var(--padding-v) + 1px) var(--padding);

      > .button {
        margin-right: -16px;
        margin-top: 2px;
        border-bottom-left-radius: 0px;
        border-top-left-radius: 0px;
      }
    }

  }

  > .search {
    > i {
      font-size:18px;
    }
    &.button {
      border-top-left-radius: 0;
      border-bottom-left-radius: 0;
    }
  }
  &:has(>.search)>input {
    padding-right: 140px;
  }

  > .show-password {
    justify-content:center;
  }
  &:has(>.show-password)>input {
    padding-right: 40px;
  }

  >.reset {
    min-width: auto;
    margin: 4px;

    // Make button fit snuggly into rounded border
    border-radius: 4px;
  }
}
