/* Upload fields (`Form::file`). Colors come from the theme tokens in zeyn.css. */

.z-upload { display: grid; gap: calc(var(--z-space) * 2); min-width: 0; }

.z-upload-drop {
  display: grid;
  gap: calc(var(--z-space) * 2);
  padding: calc(var(--z-space) * 3);
  border: 1px dashed var(--z-border-strong);
  border-radius: var(--z-radius);
  background: var(--z-surface-2);
}

.z-upload-drop.z-dragging { border-style: solid; border-color: var(--z-focus); background: var(--z-brand-subtle); }

.z-upload-input { max-width: 100%; min-height: 24px; font: inherit; color: var(--z-text); }

.z-upload-input::file-selector-button {
  min-height: var(--z-control);
  margin-inline-end: calc(var(--z-space) * 3);
  padding: 0 calc(var(--z-space) * 3);
  border: 1px solid var(--z-border-strong);
  border-radius: var(--z-radius);
  background: var(--z-surface);
  color: var(--z-text);
  font: inherit;
  font-weight: 500;
  cursor: pointer;
}

.z-upload-input:focus-visible { outline: 2px solid var(--z-focus); outline-offset: 2px; border-radius: var(--z-radius); }

.z-upload-hint { margin: 0; color: var(--z-text-muted); font-size: var(--z-font-size-sm); overflow-wrap: anywhere; }

.z-upload-list { display: grid; gap: var(--z-space); margin: 0; padding: 0; list-style: none; }

.z-upload-list:empty { display: none; }

.z-upload-item {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: calc(var(--z-space) * 2);
  padding: var(--z-space) calc(var(--z-space) * 2);
  border: 1px solid var(--z-border);
  border-radius: var(--z-radius);
  background: var(--z-surface);
  min-width: 0;
}

.z-upload-item[data-state="failed"] { border-color: var(--z-danger); }

.z-upload-preview { width: 40px; height: 40px; object-fit: cover; border-radius: var(--z-radius); background: var(--z-surface-2); }

.z-upload-name { flex: 1 1 10rem; min-width: 0; overflow-wrap: anywhere; color: var(--z-text); }

a.z-upload-name { color: var(--z-accent); text-decoration: underline; }

a.z-upload-name:focus-visible { outline: 2px solid var(--z-focus); outline-offset: 2px; }

.z-upload-size { color: var(--z-text-muted); font-size: var(--z-font-size-sm); font-variant-numeric: tabular-nums; }

.z-upload-progress { flex: 1 1 8rem; height: 8px; accent-color: var(--z-accent); }

.z-upload-error { flex-basis: 100%; color: var(--z-danger); font-size: var(--z-font-size-sm); }

.z-upload-error:empty { display: none; }

@media (pointer: coarse) {
  .z-upload-item .z-button, .z-upload-input::file-selector-button { min-height: 44px; }
}

@media (forced-colors: active) {
  .z-upload-drop.z-dragging { border-color: Highlight; }
  .z-upload-item[data-state="failed"] { border-color: Mark; }
}
