@layer components {
/* Form component styles */

/* Form container */
.form-container {
  max-width: 100%;
  margin-bottom: var(--spacing-6);
}

/* Form sections */
.form-section {
  margin-bottom: var(--spacing-6);
}

.form-section-title {
  font-size: var(--font-size-lg);
  font-weight: var(--font-weight-semibold);
  color: var(--text-muted);
  margin-bottom: var(--spacing-3);
  padding-bottom: var(--spacing-2);
  border-bottom: var(--border-width) solid var(--border);
}

/* Form rows and columns for side-by-side fields */
.form-row {
  display: flex;
  flex-wrap: wrap;
  gap: var(--spacing-4);
  margin-bottom: var(--spacing-4);
}

.form-col {
  flex: 1 1 200px;
  min-width: 0;
}

/* Canonical vertical form layout: a max-width-capped, centered column whose
   fields all stretch to equal width. `align-items: stretch` is explicit to
   override the global `form { align-items: center }`. Screen-specific forms
   (.expense-form, .income-form, .advance-form) follow this same recipe. */
.responsive-form {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: var(--spacing-4);
  width: 100%;
  max-width: var(--container-md);
  margin-inline: auto;
}

/* Form groups */
.form-group,
.form-field {
  margin-bottom: var(--spacing-4);
}

.form-label {
  display: block;
  font-weight: var(--font-weight-medium);
  margin-bottom: var(--spacing-2);
  color: var(--text-muted);
}

.form-label .required {
  color: var(--red-700);
  margin-inline-start: var(--spacing-1);
}

.form-control,
.form-control-file {
  display: block;
  width: 100%;
  min-height: var(--tap-min);
  padding: var(--spacing-3);
  font-size: var(--font-size-lg);
  line-height: var(--line-height-base);
  text-align: start;
  color: var(--text);
  background: var(--surface);
  border: var(--border-width) solid var(--border);
  border-radius: var(--radius);
  transition: border-color var(--transition-fast), box-shadow var(--transition-fast);
}

.form-control-file {
  display: flex;
  align-items: center;
}

.form-control:focus {
  border-color: var(--brand);
  outline: none;
  box-shadow: 0 0 0 3px var(--focus-ring);
}

.form-control-sm {
  min-height: calc(var(--tap-min) * 0.75);
  padding: var(--spacing-2);
  font-size: var(--font-size-base);
}

.form-check {
  display: flex;
  align-items: center;
  gap: var(--spacing-2);
  min-height: var(--tap-min);
}

.form-check-input {
  width: var(--spacing-5);
  height: var(--spacing-5);
}

.form-check-label {
  color: var(--text);
}

.form-hint {
  display: block;
  margin-top: var(--spacing-1);
  font-size: var(--font-size-sm);
  color: var(--text-muted);
}

.form-error {
  display: block;
  margin-top: var(--spacing-1);
  font-size: var(--font-size-sm);
  color: var(--red-700);
}

/* File upload styling */
.file-upload {
  margin-top: var(--spacing-2);
}

.file-preview {
  margin-top: var(--spacing-2);
  max-width: 200px;
  border: var(--border-width) solid var(--border);
  border-radius: var(--radius);
  overflow: hidden;
}

.file-preview img {
  width: 100%;
  height: auto;
  display: block;
}

.file-list {
  margin-top: var(--spacing-2);
}

.file-item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: var(--spacing-2);
  margin-bottom: var(--spacing-1);
  background: var(--surface-sunken);
  border-radius: var(--radius);
}

.file-remove {
  color: var(--red-700);
  text-decoration: none;
  font-size: var(--font-size-lg);
  line-height: 1;
}

.file-remove:hover {
  color: var(--red-900);
}

/* Trix editor styling */
.trix-wrapper {
  margin-top: var(--spacing-2);
}

trix-editor {
  min-height: 200px;
  max-height: 500px;
  overflow-y: auto;
  text-align: start;
  border: var(--border-width) solid var(--border);
  border-radius: var(--radius);
  padding: var(--spacing-2);
  background: var(--surface);
  color: var(--text);
}

trix-editor:focus {
  border-color: var(--brand);
  outline: none;
  box-shadow: 0 0 0 3px var(--focus-ring);
}

/* Form actions */
.form-actions {
  display: flex;
  align-items: center;
  gap: var(--spacing-2);
  padding-top: var(--spacing-4);
}

.search-form {
  flex-direction: row;
  align-items: center;
  gap: 1em;
}

/* Responsive adjustments */
@media (max-width: 768px) {
  .form-row {
    flex-direction: column;
    gap: var(--spacing-3);
  }

  .form-col {
    flex: 1 1 100%;
  }

  .form-actions {
    flex-direction: column-reverse;
  }

  .form-actions .button {
    width: 100%;
    text-align: center;
  }
}
}
