/* Copyright 2025-2026 Renofy Ltd. All rights reserved. */
/* === Form Components - Mobile First === */

/* Form Container - TODO: only used by manage_user_account.html, consider migrating to auth-card */
.container-form {
  max-width: 100%;
  margin: 0 1rem;
  padding: 1rem 0;
}

.container-form h2, .container-form h3 {
  font-size: var(--font-size-2xl);
  font-weight: var(--font-weight-semibold);
}

/* Form Controls */
.form-control,
input[type="text"],
input[type="email"],
input[type="password"],
input[type="number"],
input[type="tel"],
input[type="url"],
input[type="search"],
input[type="date"],
input[type="time"],
input[type="datetime-local"],
textarea,
select {
  font-size: 16px; /* Minimum 16px to prevent iOS zoom on focus */
}

.form-control {
  width: 100%;
  box-sizing: border-box;
  padding: 0.75em 1em;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-base);
  background-color: var(--color-white);
  color: var(--color-text-primary);
  font-family: var(--font-sans);
}

.form-control:focus {
  border-color: var(--color-pink);
  outline: none;
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--color-pink) 10%, transparent);
}

.form-control:disabled {
  background-color: var(--color-bg-light);
  color: var(--color-text-secondary);
}

.form-control::placeholder {
  color: var(--color-text-secondary);
  opacity: 0.7;
}

/* Textarea */
textarea.form-control {
  min-height: 120px;
  resize: vertical;
}

/* Automatic asterisk for required fields */
/* General rule: label with required input/textarea/select as following sibling */
label:has(~ input[required])::after,
label:has(~ textarea[required])::after,
label:has(~ select[required])::after,
[data-required="true"] > label::after {
  content: '*';
  color: var(--color-danger);
  font-weight: var(--font-weight-semibold);
  margin-left: 0.15rem;
}

/* Special case: nested labels (e.g., job form with label inside label-row container) */
.job-form__label-row:has(+ input[required]) label::after,
.job-form__label-row:has(+ textarea[required]) label::after {
  content: '*';
  color: var(--color-danger);
  font-weight: var(--font-weight-semibold);
  margin-left: 0.15rem;
}

/* Utility: Remove asterisks from required fields */
.no-asterisks label:has(~ input[required])::after,
.no-asterisks label:has(~ textarea[required])::after,
.no-asterisks label:has(~ select[required])::after,
.no-asterisks .job-form__label-row:has(+ input[required]) label::after,
.no-asterisks .job-form__label-row:has(+ textarea[required]) label::after {
  content: none;
}

/* Hide crispy forms' asterisk span - we use CSS ::after instead */
.asteriskField {
  display: none;
}

/* .error-text moved to typography.css */

/* Form Layout */
.form-group {
  margin-bottom: 1rem;
}

/* .form-label removed - unused in codebase */

/* .form-actions moved to action_forms.css (more comprehensive responsive version) */

/* Desktop Enhancements */
@media (min-width: 821px) {
  .container-form {
    max-width: 75%;
    margin: 0 auto;
  }
}
