:host {
  display: block;
  --input-background-color: var(--klevu-input-background-color, var(--klevu-color-neutral-1));
  --input-color: var(--klevu-input-color, #000);
  --input-border: var(--klevu-input-border, 1px solid var(--klevu-color-neutral-2));
  --input-border-radius: var(--klevu-input-border-radius, 1000px);
  --input-placeholder-color: var(--klevu-input-placeholder-color, var(--klevu-color-neutral-5));
}

div {
  position: relative;
}

input {
  --padding: calc((var(--klevu-size-m) * 2 - var(--klevu-body-s-size)) / 2);

  display: block;
  width: 100%;
  box-sizing: border-box;
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
  border: 0;
  height: calc(var(--klevu-size-m) * 2);
  font-size: var(--klevu-body-m-size);
  padding: var(--padding);
  font-family: inherit;
}

input:focus {
  outline: 0;
}

input:disabled {
  opacity: var(--klevu-opacity-disabled);
  cursor: not-allowed;
}

/** Default bordered input */

input.default {
  border: 1px solid var(--klevu-color-neutral-5);
  margin: 0 1px;
  border-radius: var(--klevu-border-radius-s);
}

input.default:focus {
  border-color: var(--klevu-color-primary);
  margin: 0;
  border-width: 2px;
}

input.default.error {
  border-color: var(--klevu-color-primary);
  margin: 0;
  border-width: 2px;
}

/** Pill input */

input.pill {
  border: var(--input-border);
  margin: 1px;
  background-color: var(--input-background-color);
  border-radius: var(--input-border-radius);
  color: var(--input-color);
}

input.pill::-webkit-input-placeholder {
  color: var(--input-placeholder-color);
}

input.pill::-moz-placeholder {
  color: var(--input-placeholder-color);
}

input.pill:-ms-input-placeholder {
  color: var(--input-placeholder-color);
}

input.pill::-ms-input-placeholder {
  color: var(--input-placeholder-color);
}

input.pill::placeholder {
  color: var(--input-placeholder-color);
}

/** icon */

input.hasicon {
  padding-left: var(--klevu-spacing-07);
}

klevu-icon.icon {
  position: absolute;
  top: 50%;
  left: var(--klevu-spacing-04);
  transform: translateY(-50%);
  display: flex;
  align-items: center;
  justify-content: center;
}

/** clear button */

input.hasclear {
  padding-right: var(--klevu-spacing-07);
}

klevu-icon.clear {
  position: absolute;
  top: 50%;
  right: var(--klevu-spacing-04);
  transform: translateY(-50%);
  cursor: pointer;
}

slot[name="end"] {
  position: absolute;
  display: block;
  top: 50%;
  right: var(--klevu-spacing-04);
  transform: translateY(-50%);
}
