@layer controls {

  /* simple_form default wrapper: div.input > label + input (+ .error / .hint). */
  .input {
    display: grid;
    align-content: start; /* beside a taller neighbour the field keeps its height */
    gap: 4px;

    & label {
      font-size: 12px;
      color: var(--color-ink-muted);
    }

    & input[type="text"],
    & input[type="number"],
    & input:not([type]),
    & select {
      width: 100%;
      padding: 6px 8px;
      font: inherit;
      color: var(--color-ink);
      background: var(--color-surface-sunken);
      border: 1px solid var(--color-line);
      border-radius: 4px;
    }

    &.field_with_errors :is(input, select),
    & .error~:is(input, select) {
      border-color: var(--color-danger);
    }

    & .error {
      font-size: 12px;
      color: var(--color-danger-ink);
    }

    & .hint {
      font-size: 12px;
      line-height: 1.4;
      color: var(--color-ink-muted);
    }
  }

  .error_notification {
    padding: 6px 8px;
    font-size: 12px;
    color: var(--color-danger-ink);
    background: var(--color-danger-surface);
    border-radius: 4px;
  }
}
