/* QPS Enrollment Form — v1.0.0 */
@import url('https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,300;0,400;0,500;0,600;0,700;1,400&display=swap');

.qps-ef-wrap {
  --qps-navy:    #0a1628;
  --qps-gold:    #c9a84c;
  --qps-gold-lt: #e8d5a3;
  --qps-white:   #ffffff;
  --qps-off:     #f7f6f3;
  --qps-muted:   #6b7280;
  --qps-border:  #e2ddd6;
  --qps-error:   #c0392b;
  --qps-radius:  4px;
  --qps-ease:    cubic-bezier(0.4,0,0.2,1);

  font-family: 'Montserrat', sans-serif;
  color: var(--qps-navy);
  max-width: 680px;
  margin: 0 auto;
  padding: 2rem 0 4rem;
  box-sizing: border-box;
}

.qps-ef-wrap *, .qps-ef-wrap *::before, .qps-ef-wrap *::after { box-sizing: inherit; }

/* Header */
.qps-ef-header { text-align: center; margin-bottom: 2.5rem; }
.qps-ef-eyebrow { font-size: 11px; font-weight: 500; letter-spacing: 0.18em; text-transform: uppercase; color: var(--qps-gold); margin: 0 0 0.75rem; }
.qps-ef-title { font-family: 'Montserrat', sans-serif; font-size: clamp(1.75rem,5vw,2.75rem); font-weight: 700; color: var(--qps-navy); line-height: 1.1; margin: 0 0 0.75rem; }
.qps-ef-title em { font-style: italic; font-weight: 400; color: var(--qps-gold); }
.qps-ef-rule { width: 48px; height: 2px; background: var(--qps-gold); margin: 1rem auto; }
.qps-ef-subtitle { font-size: 14px; color: var(--qps-muted); line-height: 1.7; max-width: 480px; margin: 0 auto; }

/* Progress */
.qps-ef-progress { display: flex; align-items: center; gap: 6px; margin-bottom: 2rem; }
.qps-ef-prog-step { flex: 1; height: 3px; background: var(--qps-border); border-radius: 2px; transition: background 0.3s var(--qps-ease); }
.qps-ef-prog-step.active { background: var(--qps-gold); }
.qps-ef-prog-label { font-size: 11px; color: var(--qps-muted); white-space: nowrap; margin-left: 6px; }

/* Card */
.qps-ef-card { background: var(--qps-white); border: 1px solid var(--qps-border); border-radius: 8px; padding: 2rem; margin-bottom: 1.25rem; }
.qps-ef-section-label { font-size: 10px; font-weight: 600; letter-spacing: 0.15em; text-transform: uppercase; color: var(--qps-gold); margin: 0 0 1.25rem; padding-bottom: 0.75rem; border-bottom: 1px solid var(--qps-border); }

/* Rows & fields */
.qps-ef-row { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; margin-bottom: 1rem; }
.qps-ef-row--full { grid-template-columns: 1fr; }
.qps-ef-field { display: flex; flex-direction: column; gap: 5px; margin-bottom: 1.25rem; }
.qps-ef-field:last-child { margin-bottom: 0; }

/* Labels */
.qps-ef-wrap label { font-size: 12px; font-weight: 600; color: var(--qps-navy); letter-spacing: 0.02em; }
.qps-ef-req { color: var(--qps-gold); margin-left: 2px; }

/* Inputs */
.qps-ef-wrap input[type="text"],
.qps-ef-wrap input[type="email"],
.qps-ef-wrap input[type="tel"],
.qps-ef-wrap textarea {
  width: 100%;
  padding: 10px 13px;
  border: 1px solid var(--qps-border);
  border-radius: var(--qps-radius);
  font-family: 'Montserrat', sans-serif;
  font-size: 13px;
  color: var(--qps-navy);
  background: var(--qps-white);
  transition: border-color 0.25s var(--qps-ease), box-shadow 0.25s var(--qps-ease);
  outline: none;
  -webkit-appearance: none;
}
.qps-ef-wrap input:focus,
.qps-ef-wrap textarea:focus {
  border-color: var(--qps-gold);
  box-shadow: 0 0 0 3px rgba(201,168,76,0.15);
}
.qps-ef-wrap input::placeholder,
.qps-ef-wrap textarea::placeholder { color: #c0bdb7; }
.qps-ef-wrap textarea { resize: vertical; min-height: 88px; line-height: 1.6; }

/* Error */
.qps-ef-error { font-size: 11px; color: var(--qps-error); display: none; }
.qps-ef-field.has-error input,
.qps-ef-field.has-error textarea { border-color: var(--qps-error); }
.qps-ef-field.has-error .qps-ef-error { display: block; }

/* Radio cards */
.qps-ef-radio-grid { display: flex; flex-direction: column; gap: 8px; margin-top: 4px; }
.qps-ef-radio-grid--2col { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.qps-ef-radio-card { position: relative; cursor: pointer; }
.qps-ef-radio-card input[type="radio"] { position: absolute; opacity: 0; width: 0; height: 0; }

.qps-ef-radio-label {
  display: flex; align-items: flex-start; gap: 10px;
  padding: 12px 14px;
  border: 1px solid var(--qps-border);
  border-radius: var(--qps-radius);
  cursor: pointer;
  font-size: 13px; line-height: 1.4; color: var(--qps-navy);
  transition: border-color 0.2s var(--qps-ease), background 0.2s var(--qps-ease);
}
.qps-ef-radio-label:hover { border-color: var(--qps-gold-lt); background: #fdf9f0; }
.qps-ef-radio-card input:checked + .qps-ef-radio-label { border-color: var(--qps-gold); background: #fdf9f0; }
.qps-ef-radio-card input:focus-visible + .qps-ef-radio-label { outline: 2px solid var(--qps-gold); outline-offset: 2px; }

.qps-ef-radio-dot {
  width: 15px; height: 15px; border: 2px solid var(--qps-border); border-radius: 50%; flex-shrink: 0; margin-top: 1px;
  transition: border-color 0.2s; position: relative;
}
.qps-ef-radio-card input:checked + .qps-ef-radio-label .qps-ef-radio-dot { border-color: var(--qps-gold); }
.qps-ef-radio-card input:checked + .qps-ef-radio-label .qps-ef-radio-dot::after {
  content: ''; position: absolute; top: 2px; left: 2px;
  width: 7px; height: 7px; border-radius: 50%; background: var(--qps-gold);
}

.qps-ef-radio-text strong { display: block; font-weight: 600; font-size: 12px; margin-bottom: 1px; }
.qps-ef-radio-text span { font-size: 11px; color: var(--qps-muted); }

/* Conditional blocks */
.qps-ef-conditional { display: none; }
.qps-ef-conditional.visible { display: block; }
.qps-ef-conditional-inner {
  margin-top: 1.75rem; padding-top: 1.75rem;
  border-top: 1px solid var(--qps-border);
  animation: qpsSlideIn 0.3s var(--qps-ease) forwards;
}
@keyframes qpsSlideIn {
  from { opacity: 0; transform: translateY(6px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* Submit */
.qps-ef-submit-area { text-align: center; margin-top: 1.75rem; }
.qps-ef-btn {
  display: inline-flex; align-items: center; gap: 10px;
  background: var(--qps-navy); color: var(--qps-white);
  font-family: 'Montserrat', sans-serif; font-size: 13px; font-weight: 600;
  letter-spacing: 0.08em; text-transform: uppercase;
  padding: 14px 36px; border: none; border-radius: var(--qps-radius);
  cursor: pointer; transition: background 0.25s var(--qps-ease), transform 0.15s;
}
.qps-ef-btn:hover { background: #1a2d4a; }
.qps-ef-btn:active { transform: scale(0.98); }
.qps-ef-btn:disabled { opacity: 0.55; cursor: not-allowed; }
.qps-ef-btn .qps-ef-arrow { transition: transform 0.25s var(--qps-ease); }
.qps-ef-btn:hover .qps-ef-arrow { transform: translateX(4px); }

/* Spinner */
.qps-ef-spinner {
  display: none; width: 15px; height: 15px;
  border: 2px solid rgba(255,255,255,0.35); border-top-color: #fff;
  border-radius: 50%; animation: qpsSpin 0.65s linear infinite;
}
.qps-ef-btn.loading .qps-ef-spinner { display: block; }
.qps-ef-btn.loading .qps-ef-btn-text,
.qps-ef-btn.loading .qps-ef-arrow { display: none; }
@keyframes qpsSpin { to { transform: rotate(360deg); } }

.qps-ef-submit-note { font-size: 11px; color: var(--qps-muted); margin-top: 0.75rem; line-height: 1.6; }

/* Fieldset reset */
.qps-ef-wrap fieldset { border: none; padding: 0; margin: 0; }

/* Success */
.qps-ef-success { text-align: center; padding: 3rem 1rem; }
.qps-ef-success-icon {
  width: 52px; height: 52px; border-radius: 50%;
  background: #f0faf4; border: 2px solid #1a6b3c;
  display: flex; align-items: center; justify-content: center;
  margin: 0 auto 1.25rem; font-size: 22px; color: #1a6b3c;
}
.qps-ef-success h2 { font-family: 'Montserrat', sans-serif; font-size: 1.75rem; font-weight: 700; color: var(--qps-navy); margin: 0 0 0.75rem; }
.qps-ef-success p { font-size: 14px; color: var(--qps-muted); line-height: 1.7; }

/* Responsive */
@media (max-width: 580px) {
  .qps-ef-card { padding: 1.25rem; }
  .qps-ef-row { grid-template-columns: 1fr; }
  .qps-ef-radio-grid--2col { grid-template-columns: 1fr; }
}

/* ── Disclaimer & Responses (success state additions) ── */
.qps-ef-success-sub {
  font-size: 13px;
  color: var(--qps-muted);
  margin: 0 0 1.75rem;
}

.qps-ef-disclaimer {
  background: #fdf9f0;
  border: 1px solid var(--qps-gold-lt);
  border-left: 4px solid var(--qps-gold);
  border-radius: var(--qps-radius);
  padding: 1.25rem 1.5rem;
  margin: 0 auto 1.75rem;
  max-width: 560px;
  text-align: left;
}
.qps-ef-disclaimer-title {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--qps-gold);
  margin: 0 0 0.75rem;
}
.qps-ef-disclaimer p {
  font-size: 13px;
  color: var(--qps-navy);
  line-height: 1.75;
  margin: 0 0 0.75rem;
}
.qps-ef-disclaimer p:last-child { margin-bottom: 0; }

.qps-ef-responses {
  background: var(--qps-white);
  border: 1px solid var(--qps-border);
  border-radius: 8px;
  padding: 1.5rem;
  max-width: 560px;
  margin: 0 auto;
  text-align: left;
}
.qps-ef-responses-title {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--qps-muted);
  margin: 0 0 1rem;
  padding-bottom: 0.75rem;
  border-bottom: 1px solid var(--qps-border);
}
.qps-ef-responses dl { margin: 0; }
.qps-ef-responses dt {
  font-size: 11px;
  font-weight: 600;
  color: var(--qps-muted);
  text-transform: uppercase;
  letter-spacing: 0.08em;
  margin: 0.75rem 0 0.2rem;
}
.qps-ef-responses dt:first-of-type { margin-top: 0; }
.qps-ef-responses dd {
  font-size: 13px;
  color: var(--qps-navy);
  margin: 0;
  line-height: 1.5;
}

/* ── Commitment checkbox ── */
.qps-ef-commitment {
  display: none;
  margin-top: 1.5rem;
  padding-top: 1.5rem;
  border-top: 1px solid var(--qps-border);
  animation: qpsSlideIn 0.3s var(--qps-ease) forwards;
}
.qps-ef-commitment.visible { display: block; }

.qps-ef-commitment-box {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  padding: 1rem 1.25rem;
  border: 1px solid var(--qps-border);
  border-radius: var(--qps-radius);
  background: #fdf9f0;
  cursor: pointer;
  transition: border-color .2s, background .2s;
}
.qps-ef-commitment-box:hover { border-color: var(--qps-gold-lt); }
.qps-ef-commitment-box.checked { border-color: var(--qps-gold); background: #fdf9f0; }
.qps-ef-commitment-box.has-error { border-color: var(--qps-error); background: #fdf0f0; }

.qps-ef-commitment-box input[type="checkbox"] {
  width: 18px;
  height: 18px;
  flex-shrink: 0;
  margin-top: 1px;
  accent-color: var(--qps-gold);
  cursor: pointer;
}

.qps-ef-commitment-text {
  font-size: 13px;
  color: var(--qps-navy);
  line-height: 1.7;
}

.qps-ef-commitment-error {
  display: none;
  font-size: 11px;
  color: var(--qps-error);
  margin-top: 6px;
}
.qps-ef-commitment-error.visible { display: block; }
