:root {
  /* Core Brand Palette (New Leaf Vitality) */
  --nlvp-primary-green: #4caf50;
  --nlvp-deep-forest-green: #2e7d32;
  --nlvp-soft-sage: #a5d6a7;

  /* Supporting Healthcare Colors */
  --nlvp-clean-medical-blue: #2c7be5;
  --nlvp-light-blue-tint: #e3f2fd;

  /* Neutrals */
  --nlvp-bg-white: #ffffff;
  --nlvp-light-grey: #f5f7f9;
  --nlvp-text-dark-grey: #2f3a3f;
  --nlvp-placeholder-grey: #999999;

  /* Optional Accent */
  --nlvp-fresh-lime-accent: #8bc34a;

  /* Bootstrap aliasing for consistent framework component colors */
  --bs-primary: var(--nlvp-primary-green);
  --bs-primary-rgb: 76, 175, 80;
  --bs-secondary: var(--nlvp-clean-medical-blue);
  --bs-secondary-rgb: 44, 123, 229;
  --bs-success: var(--nlvp-deep-forest-green);
  --bs-success-rgb: 46, 125, 50;
  --bs-light: var(--nlvp-light-grey);
  --bs-light-rgb: 245, 247, 249;
  --bs-dark: var(--nlvp-text-dark-grey);
  --bs-dark-rgb: 47, 58, 63;

  --bs-link-color: var(--nlvp-clean-medical-blue);
  --bs-link-hover-color: var(--nlvp-deep-forest-green);
}

.btn:focus, .btn:active:focus, .btn-link.nav-link:focus, .form-control:focus, .form-check-input:focus {
  box-shadow: 0 0 0 0.1rem var(--nlvp-bg-white), 0 0 0 0.25rem var(--nlvp-clean-medical-blue);
}

html {
  position: relative;
  min-height: 100%;
}

body {
  background-color: var(--nlvp-bg-white);
  color: var(--nlvp-text-dark-grey);
}

.nlvp-section-soft {
  background-color: var(--nlvp-soft-sage);
}

.nlvp-section-light {
  background-color: var(--nlvp-light-blue-tint);
}

.card,
.nlvp-card {
  background-color: var(--nlvp-bg-white);
  border: 1px solid var(--nlvp-soft-sage);
}

.card-header,
.nlvp-card-header {
  background-color: var(--nlvp-light-blue-tint);
  color: var(--nlvp-deep-forest-green);
}

/* Bootstrap semantic component alignment */
.btn-success {
  --bs-btn-color: var(--nlvp-bg-white);
  --bs-btn-bg: var(--nlvp-deep-forest-green);
  --bs-btn-border-color: var(--nlvp-deep-forest-green);
  --bs-btn-hover-color: var(--nlvp-bg-white);
  --bs-btn-hover-bg: var(--nlvp-primary-green);
  --bs-btn-hover-border-color: var(--nlvp-primary-green);
  --bs-btn-active-color: var(--nlvp-bg-white);
  --bs-btn-active-bg: var(--nlvp-deep-forest-green);
  --bs-btn-active-border-color: var(--nlvp-deep-forest-green);
}

.btn-outline-primary {
  --bs-btn-color: var(--nlvp-primary-green);
  --bs-btn-border-color: var(--nlvp-primary-green);
  --bs-btn-hover-color: var(--nlvp-bg-white);
  --bs-btn-hover-bg: var(--nlvp-primary-green);
  --bs-btn-hover-border-color: var(--nlvp-primary-green);
  --bs-btn-active-color: var(--nlvp-bg-white);
  --bs-btn-active-bg: var(--nlvp-deep-forest-green);
  --bs-btn-active-border-color: var(--nlvp-deep-forest-green);
}

.alert-primary {
  --bs-alert-color: var(--nlvp-deep-forest-green);
  --bs-alert-bg: var(--nlvp-soft-sage);
  --bs-alert-border-color: var(--nlvp-primary-green);
}

.alert-info {
  --bs-alert-color: var(--nlvp-clean-medical-blue);
  --bs-alert-bg: var(--nlvp-light-blue-tint);
  --bs-alert-border-color: var(--nlvp-clean-medical-blue);
}

.badge.text-bg-primary {
  background-color: var(--nlvp-primary-green) !important;
  color: var(--nlvp-bg-white) !important;
}

.badge.text-bg-success {
  background-color: var(--nlvp-deep-forest-green) !important;
  color: var(--nlvp-bg-white) !important;
}

.form-floating > .form-control-plaintext::placeholder, .form-floating > .form-control::placeholder {
  color: var(--bs-secondary-color);
  text-align: end;
}

.form-floating > .form-control-plaintext:focus::placeholder, .form-floating > .form-control:focus::placeholder {
  text-align: start;
}

.nlvp-card-body {
  background-color: var(--nlvp-bg-white);
}

.nlvp-card-body label {
  font-weight: 500;
  color: var(--nlvp-text-dark-grey);
}

.nlvp-card-body .form-control,
.nlvp-card-body .form-control-lg {
  border-color: var(--nlvp-soft-sage);
  color: var(--nlvp-text-dark-grey);
  font-size: 1rem;
}

.nlvp-card-body .form-control:focus,
.nlvp-card-body .form-control-lg:focus {
  border-color: var(--nlvp-primary-green);
  box-shadow: 0 0 0 0.2rem rgba(76, 175, 80, 0.25);
}

.nlvp-card-body .input-group-text {
  background-color: var(--nlvp-light-grey);
  border-color: var(--nlvp-soft-sage);
  color: var(--nlvp-text-dark-grey);
}

.nlvp-card-body .form-check-input {
  width: 1.25rem;
  height: 1.25rem;
  border-color: var(--nlvp-soft-sage);
  cursor: pointer;
}

.nlvp-card-body .form-check-input:checked {
  background-color: var(--nlvp-primary-green);
  border-color: var(--nlvp-primary-green);
}

.nlvp-card-body .form-check-label {
  cursor: pointer;
  margin-left: 0.5rem;
  color: var(--nlvp-text-dark-grey);
}

/* Field validation error styling */
.field-validation-error {
  color: #dc3545;
  font-size: 0.875rem;
  display: block;
  margin-top: 0.25rem;
}

.form-control.is-invalid,
.form-control-lg.is-invalid {
  border-color: #dc3545;
}

.form-control.is-invalid:focus,
.form-control-lg.is-invalid:focus {
  border-color: #dc3545;
  box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);
}

/* Placeholder text styling */
input::placeholder,
textarea::placeholder,
select::placeholder {
  color: var(--nlvp-placeholder-grey);
  opacity: 1;
}

.nlvp-card-body input::placeholder,
.nlvp-card-body textarea::placeholder,
.nlvp-card-body .form-control::placeholder {
  color: var(--nlvp-placeholder-grey);
  opacity: 1;
}

.text-nlvp-dark {
  color: var(--nlvp-deep-forest-green);
}

/* ========================================
   Welcome Screen — Process Step List
   ======================================== */

.nlvp-step-list {
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
}

.nlvp-step-item {
  padding: 0.875rem 1rem;
  border: 1px solid var(--nlvp-soft-sage);
  border-radius: 0.375rem;
  background: var(--nlvp-bg-white);
}