@layer components {
  :where(.input) {
    &:not([type="checkbox"], [type="radio"], [type="range"]) {
      appearance: none;
      background-color: var(--input-background, var(--color-surface));
      block-size: var(--input-block-size, auto);
      border: 1px solid var(--input-border-color, var(--color-border));
      border-radius: var(--input-radius, var(--rounded-md));
      box-shadow: var(--input-box-shadow, var(--shadow-xs));
      font-size: var(--input-font-size, var(--text-sm));
      inline-size: var(--input-inline-size, var(--size-full));
      padding: var(--input-padding, .375rem .75rem);
    }

    &:is([type="checkbox"], [type="radio"]) {
      accent-color: var(--input-accent-color, var(--color-primary));
      block-size: var(--input-check-size, var(--size-4));
      inline-size: var(--input-check-size, var(--size-4));
    }

    &:is([type="range"]) {
      accent-color: var(--input-accent-color, var(--color-primary));
    }

    &:is(textarea[rows="auto"]) {
      field-sizing: content;
      max-block-size: calc(.875rem + var(--input-max-rows, 10lh));
      min-block-size: calc(.875rem + var(--input-rows, 2lh));
    }

    &:is(select):not([multiple], [size]) {
      background-image: url("/assets/chevron-down-zinc-500-e6dc6029.svg");
      background-position: center right var(--size-2);
      background-repeat: no-repeat;
      background-size: var(--size-4) auto;
    }

    >option {
      padding: revert;
    }

    &::file-selector-button {
      font-weight: var(--font-medium);
    }

    &:user-invalid {
      border-color: var(--color-negative);
    }

    &:user-invalid+[feedback] {
      display: unset;
    }

    &:focus-visible {
      outline: var(--input-outline-size, 2px) solid var(--color-selected-dark);
    }

    &:disabled {
      cursor: not-allowed;
      opacity: var(--opacity-50);
    }

    .field_with_errors & {
      border-color: var(--color-negative);
    }
  }

  .input--actor {
    >input {
      inline-size: 100%;
      outline: 0;
    }

    &:focus-within {
      outline: var(--input-outline-size, 2px) solid var(--color-selected-dark);
    }
  }
}
