/* ==========================================================================
   Multi-step Assessment — full-screen focused UX
   ========================================================================== */

.assess-overlay {
  position: fixed;
  inset: 0;
  z-index: 100;
  background: var(--color-bg);
  display: none;
  flex-direction: column;
  overflow: hidden;
}
.assess-overlay.is-open { display: flex; }

.assess-header {
  display: flex;
  align-items: center;
  gap: var(--space-3);
  padding: var(--space-3) var(--space-4);
  border-bottom: 1px solid var(--color-border);
  flex-shrink: 0;
}
.assess-back {
  background: none; border: none; padding: 8px;
  border-radius: 50%; color: var(--color-ink-soft);
  display: flex; align-items: center; justify-content: center;
  min-width: 40px; min-height: 40px;
}
.assess-back:disabled { visibility: hidden; }
.assess-progress-track {
  flex: 1;
  height: 6px;
  background: var(--color-bg-tint);
  border-radius: var(--radius-pill);
  overflow: hidden;
}
.assess-progress-bar {
  height: 100%;
  background: var(--color-primary);
  border-radius: var(--radius-pill);
  transition: width var(--transition-base);
  width: 0%;
}
.assess-close {
  background: none; border: none; color: var(--color-ink-faint);
  font-size: 22px; line-height: 1; min-width: 40px; min-height: 40px;
}

.assess-body {
  flex: 1;
  overflow-y: auto;
  padding: var(--space-6) var(--space-4) var(--space-8);
}
.assess-step {
  max-width: 560px;
  margin: 0 auto;
  opacity: 0;
  transform: translateX(16px);
  transition: opacity var(--transition-base), transform var(--transition-base);
}
.assess-step.is-active { opacity: 1; transform: translateX(0); }
.assess-step.is-leaving-back { transform: translateX(-16px); opacity: 0; }

.assess-eyebrow {
  font-size: 13px; font-weight: 700; color: var(--color-primary);
  text-transform: uppercase; letter-spacing: 0.06em;
}
.assess-question {
  font-family: var(--font-display);
  font-size: var(--font-size-h2);
  line-height: 1.25;
  margin-top: var(--space-2);
}
.assess-help {
  margin-top: var(--space-2);
  color: var(--color-ink-soft);
  font-size: 15px;
}
.assess-info-message {
  margin-top: var(--space-4);
  background: var(--color-bg-tint);
  border-radius: var(--radius-md);
  padding: var(--space-5);
  font-size: 16px;
  color: var(--color-ink);
  line-height: 1.6;
}

.assess-options {
  margin-top: var(--space-5);
  display: grid;
  gap: var(--space-3);
}
.assess-option {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-3);
  width: 100%;
  min-height: 60px;
  padding: 16px 20px;
  background: var(--color-white);
  border: 2px solid var(--color-border);
  border-radius: var(--radius-md);
  font-size: 16px;
  font-weight: 600;
  text-align: left;
  color: var(--color-ink);
  transition: border-color var(--transition-base), background var(--transition-base);
}
.assess-option:hover { border-color: var(--color-primary); }
.assess-option.is-selected {
  border-color: var(--color-primary);
  background: var(--color-primary-tint);
  color: var(--color-primary-dark);
}
.assess-option .check {
  width: 22px; height: 22px; border-radius: 50%;
  border: 2px solid var(--color-border);
  flex-shrink: 0;
  display: flex; align-items: center; justify-content: center;
}
.assess-option.is-selected .check {
  border-color: var(--color-primary);
  background: var(--color-primary);
  color: #fff;
  font-size: 13px;
}

.assess-field { margin-top: var(--space-5); }
.assess-field label {
  display: block;
  font-size: 14px;
  font-weight: 700;
  margin-bottom: var(--space-2);
  color: var(--color-ink-soft);
}
.assess-field input,
.assess-field textarea {
  width: 100%;
  min-height: 56px;
  padding: 14px var(--space-4);
  border: 2px solid var(--color-border);
  border-radius: var(--radius-md);
  font-size: 17px;
  font-family: inherit;
  background: var(--color-white);
  color: var(--color-ink);
}
.assess-field textarea { resize: vertical; line-height: 1.5; }
.assess-field input:focus,
.assess-field textarea:focus { border-color: var(--color-primary); outline: none; }
.assess-field-row { display: grid; gap: var(--space-4); grid-template-columns: 1fr; margin-top: var(--space-5); }
@media (min-width: 480px) { .assess-field-row { grid-template-columns: 1fr 1fr; } }

.assess-phone-input { display: flex; align-items: stretch; }
.assess-phone-prefix {
  display: flex; align-items: center; justify-content: center;
  padding: 0 var(--space-3);
  border: 2px solid var(--color-border); border-right: none;
  border-radius: var(--radius-md) 0 0 var(--radius-md);
  background: var(--color-bg-soft); font-weight: 700; color: var(--color-ink-soft);
}
.assess-phone-input input { border-radius: 0 var(--radius-md) var(--radius-md) 0; }

.assess-error {
  margin-top: var(--space-2);
  color: var(--color-error);
  font-size: 14px;
  display: none;
}
.assess-error.is-visible { display: block; }
.assess-field.has-error input { border-color: var(--color-error); }

.assess-footer {
  flex-shrink: 0;
  padding: var(--space-4);
  padding-bottom: max(var(--space-4), env(safe-area-inset-bottom));
  border-top: 1px solid var(--color-border);
  background: var(--color-white);
}
.assess-footer-inner { max-width: 560px; margin: 0 auto; }
.assess-consent {
  font-size: 13px;
  color: var(--color-ink-faint);
  margin-top: var(--space-3);
  text-align: center;
  line-height: 1.5;
}

.assess-summary {
  margin-top: var(--space-5);
  background: var(--color-bg-soft);
  border-radius: var(--radius-md);
  padding: var(--space-5);
  font-size: 14px;
  color: var(--color-ink-soft);
  line-height: 1.7;
}

/* ---------- Microcopy banner (transition-aware, shown atop the *next*
   real question, computed from the previous screen's answer — never its
   own tap/screen) ---------- */
.assess-microcopy {
  margin-top: var(--space-3);
  padding: var(--space-3) var(--space-4);
  background: var(--color-primary-tint);
  border-radius: var(--radius-md);
  color: var(--color-primary-dark);
  font-size: 15px;
  font-weight: 600;
  line-height: 1.5;
}

/* ---------- Language select (first screen) ---------- */
.assess-language-options {
  margin-top: var(--space-5);
  display: grid;
  gap: var(--space-3);
}
.assess-language-option {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 64px;
  padding: 16px 20px;
  background: var(--color-white);
  border: 2px solid var(--color-border);
  border-radius: var(--radius-md);
  font-size: 18px;
  font-weight: 700;
  color: var(--color-ink);
  transition: border-color var(--transition-base), background var(--transition-base);
}
.assess-language-option:hover { border-color: var(--color-primary); }

/* ---------- Combo screens (Q40, Q4+Q5) and reveal-choice screens (Q1, Q7):
   multiple named groups stacked on one screen ---------- */
.assess-group { margin-top: var(--space-5); }
.assess-group:first-child { margin-top: var(--space-4); }
.assess-group-label {
  font-size: 14px;
  font-weight: 700;
  color: var(--color-ink-soft);
  margin-bottom: var(--space-2);
}
.assess-group .assess-options { margin-top: 0; }

/* Content revealed in place under a primary choice (contact-lens
   frequency under Q1, city field under Q7, prescription fields under
   Q4+Q5's "know your power" group) — no layout shift surprise, just an
   animated-in block appended below the group that triggered it. */
.assess-reveal {
  margin-top: var(--space-4);
  padding-top: var(--space-4);
  border-top: 1px dashed var(--color-border);
  animation: assess-reveal-in var(--transition-base) ease-out;
}
@keyframes assess-reveal-in {
  from { opacity: 0; transform: translateY(-6px); }
  to { opacity: 1; transform: translateY(0); }
}

.assess-escape-hatch {
  display: inline-block;
  margin-top: var(--space-3);
  font-size: 14px;
  font-weight: 600;
  color: var(--color-primary);
  text-decoration: underline;
  background: none;
  border: none;
  padding: 4px 0;
}

/* ---------- Contact + final screen (Q8): text/tel fields, two choice
   groups (one optional/skippable), disclaimer, Submit — all one screen ---------- */
.assess-contact-fields { display: grid; gap: var(--space-4); margin-top: var(--space-4); }
.assess-skip-note {
  font-size: 12px;
  font-weight: 600;
  color: var(--color-ink-faint);
  text-transform: uppercase;
  margin-left: var(--space-2);
}
