@layer components {
  input, textarea, select {
    width: 100%;
    padding: var(--spacing-xs) var(--spacing-sm);
    background: var(--color-surface);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-sm);
    font-size: var(--font-size-base);
  }

  input[type="radio"], input[type="checkbox"] {
    width: auto;
    padding: 0;
    flex-shrink: 0;
  }

  input:focus-visible, textarea:focus-visible, select:focus-visible {
    outline: none;
    border-color: var(--color-accent);
    box-shadow: var(--focus-ring);
  }

  input::placeholder, textarea::placeholder {
    color: var(--color-muted);
  }

  label {
    display: block;
    font-size: var(--font-size-sm);
    font-weight: 500;
    margin-bottom: var(--spacing-2xs);
  }

  .field {
    margin-bottom: var(--spacing-md);
  }

  .field > .label {
    margin-bottom: var(--spacing-xs);
  }

  .field-error {
    color: var(--color-alert);
    font-size: var(--font-size-sm);
    margin-top: var(--spacing-2xs);
  }
}
