/* form.css — forms, inputs, upload UI */

.form-group {
  margin-bottom: var(--space-6);
}

.form-label {
  display: block;
  font-size: var(--text-sm);
  font-weight: 500;
  color: var(--color-text);
  margin-bottom: var(--space-2);
}

.form-hint {
  font-size: var(--text-xs);
  color: var(--color-text-faint);
  margin-top: var(--space-1);
}

.form-input,
.form-select,
.form-textarea {
  width: 100%;
  font-family: var(--font-body);
  font-size: var(--text-base);
  color: var(--color-text);
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--border-radius);
  padding: var(--space-3) var(--space-4);
  transition: border-color var(--transition);
}

.form-input:focus,
.form-select:focus,
.form-textarea:focus {
  outline: none;
  border-color: var(--color-accent);
}

.form-textarea {
  min-height: 120px;
  resize: vertical;
  line-height: 1.6;
}

/* ── Upload zone ─────────────────────────── */
.upload-zone {
  border: 2px dashed var(--color-border-dark);
  border-radius: var(--border-radius);
  padding: var(--space-10) var(--space-8);
  text-align: center;
  cursor: pointer;
  transition: border-color var(--transition), background var(--transition);
}

.upload-zone:hover,
.upload-zone--dragover {
  border-color: var(--color-accent);
  background: var(--color-accent-light);
}

.upload-zone__icon {
  font-size: 2rem;
  margin-bottom: var(--space-3);
  color: var(--color-text-faint);
}

.upload-zone__label {
  font-size: var(--text-base);
  font-weight: 500;
  color: var(--color-text);
  margin-bottom: var(--space-1);
}

.upload-zone__hint {
  font-size: var(--text-sm);
  color: var(--color-text-faint);
}

.upload-zone input[type="file"] {
  display: none;
}

/* ── Buttons ─────────────────────────────── */
.btn {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  font-family: var(--font-body);
  font-size: var(--text-sm);
  font-weight: 600;
  padding: var(--space-3) var(--space-6);
  border-radius: var(--border-radius);
  border: none;
  cursor: pointer;
  transition: opacity var(--transition), background var(--transition);
  text-decoration: none;
  white-space: nowrap;
}

.btn:hover { opacity: 0.85; }
.btn:disabled { opacity: 0.4; cursor: not-allowed; }

.btn--primary {
  background: var(--color-accent);
  color: #fff;
}

.btn--secondary {
  background: var(--color-bg);
  color: var(--color-text);
  border: 1px solid var(--color-border-dark);
}

.btn--danger {
  background: var(--color-negative);
  color: #fff;
}

.btn--sm {
  font-size: var(--text-xs);
  padding: var(--space-2) var(--space-4);
}

/* ── Upload result ───────────────────────── */
.upload-result {
  font-family: var(--font-mono);
  font-size: var(--text-sm);
  padding: var(--space-4) var(--space-5);
  border-radius: var(--border-radius);
  margin-top: var(--space-4);
}

.upload-result--success {
  background: var(--color-accent-light);
  color: var(--color-accent);
  border: 1px solid #B8D8C5;
}

.upload-result--error {
  background: var(--color-negative-bg);
  color: var(--color-negative);
  border: 1px solid #E8BABA;
}
