/**
 * FileUploadField — drag-and-drop file picker that registers a deferred
 * upload in form context.
 *
 * Override handles:
 *   .byline-field-file-upload                — root wrapper
 *   .byline-field-file-upload-input          — visually-hidden file input
 *   .byline-field-file-upload-zone           — clickable / drop target
 *   .byline-field-file-upload-zone-active    — drag-hovered state
 *   .byline-field-file-upload-zone-busy      — processing state
 *   .byline-field-file-upload-icon           — upload icon svg
 *   .byline-field-file-upload-label          — primary text inside the zone
 *   .byline-field-file-upload-action         — "browse" link inside the label
 *   .byline-field-file-upload-error          — error message paragraph
 */

.root,
:global(.byline-field-file-upload) {
  margin-top: 0.25rem;
}

.input,
:global(.byline-field-file-upload-input) {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

.zone,
:global(.byline-field-file-upload-zone) {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: var(--spacing-8);
  padding: 1.5rem 1rem;
  border: 2px dashed var(--gray-600);
  border-radius: var(--border-radius-lg);
  color: var(--gray-400);
  text-align: center;
  cursor: pointer;
  user-select: none;
  transition:
    color 150ms ease,
    background-color 150ms ease,
    border-color 150ms ease;
}

.zone:hover,
:global(.byline-field-file-upload-zone):hover {
  border-color: var(--primary-500);
  background-color: oklch(from var(--primary-900) l c h / 0.1);
}

.zone-active,
:global(.byline-field-file-upload-zone-active) {
  border-color: var(--primary-400);
  background-color: oklch(from var(--primary-900) l c h / 0.2);
  color: var(--primary-300);
}

.zone-busy,
:global(.byline-field-file-upload-zone-busy) {
  border-color: var(--gray-700);
  background-color: oklch(from var(--canvas-800) l c h / 0.5);
  color: var(--gray-600);
  cursor: not-allowed;
}

.icon,
:global(.byline-field-file-upload-icon) {
  width: 1.75rem;
  height: 1.75rem;
  opacity: 0.6;
}

.label,
:global(.byline-field-file-upload-label) {
  font-size: var(--font-size-xs);
  font-weight: var(--font-weight-medium);
}

.action,
:global(.byline-field-file-upload-action) {
  color: var(--primary-400);
  text-decoration: underline;
  text-underline-offset: 2px;
}

.error,
:global(.byline-field-file-upload-error) {
  margin-top: 0.375rem;
  color: var(--red-400);
  font-size: var(--font-size-xs);
}
