/* Shared form-input styling — extracted from inline <style> blocks in
   dashboard.html, login.html, password_reset.html, and contact_form.html
   so CSP can drop 'unsafe-inline' for style-src. The duplicated rules
   across those four templates are now defined here once. */

/* Enhanced form input styling */
.form-control {
  width: 100%;
  padding: 12px 16px;
  border: 2px solid #d1d5db;
  border-radius: 8px;
  font-size: 16px;
  background-color: #ffffff;
  color: #374151;
  transition: all 0.2s ease-in-out;
  box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1);
  font-family: inherit;
}

.form-control:focus {
  outline: none;
  border-color: #dc2626;
  box-shadow: 0 0 0 3px rgba(220, 38, 38, 0.1);
  background-color: #ffffff;
}

.form-control:hover {
  border-color: #9ca3af;
}

.form-control::placeholder {
  color: #9ca3af;
  font-weight: 400;
}

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

/* Direct-selector fallback for inputs that don't carry the .form-control
   class — used by the contact form's email + message fields. */
input[type="email"],
textarea {
  width: 100%;
  padding: 12px 16px;
  border: 2px solid #e5e7eb;
  border-radius: 8px;
  font-size: 16px;
  transition: border-color 0.2s ease-in-out, box-shadow 0.2s ease-in-out;
}

input[type="email"]:focus,
textarea:focus {
  outline: none;
  border-color: #dc2626;
  box-shadow: 0 0 0 3px rgba(220, 38, 38, 0.1);
}

textarea {
  min-height: 120px;
  resize: vertical;
}

/* Error styling */
input.error,
textarea.error {
  border-color: #ef4444;
}

input.error:focus,
textarea.error:focus {
  border-color: #ef4444;
  box-shadow: 0 0 0 3px rgba(239, 68, 68, 0.1);
}

/* Honeypot field — hidden off-screen instead of display:none so bots that
   skip hidden fields still auto-fill it. */
.visually-hidden-honeypot {
  position: absolute;
  left: -9999px;
}
