/* stem-summer-camp.css — camp-port (GCO-300) additions on top of the shared
 * public-form.css primitives. Loaded by index.html + follow-up.html only,
 * NEVER by registration.html or the dashboard.
 *
 * Sections:
 *   1. VI-school radio group (Form 1 step 3)
 *   2. Camper review cards + multi-camper submit results (Form 1 step 4)
 *   3. Follow-up camper banner
 *   4. Document upload widget (Form 2)
 *   5. Additional-contact repeater row (Form 2)
 */

/* ── 1. VI-school radio group ──────────────────────────────────────────── */

.camp-radio-group {
  display: flex;
  gap: var(--spacing-md);
  margin: var(--spacing-xs) 0;
}

.camp-radio-group__option {
  display: flex;
  align-items: center;
  gap: var(--spacing-xs);
  font-size: var(--font-size-sm);
  color: var(--color-text);
  cursor: pointer;
}

.camp-radio-group__input {
  width: 18px;
  height: 18px;
  accent-color: var(--color-primary);
}

/* ── 2. Camper review cards + multi-result ─────────────────────────────── */

.camp-camper-list {
  display: flex;
  flex-direction: column;
  gap: var(--spacing-sm);
  margin-bottom: var(--spacing-md);
}

.camp-camper-card {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--spacing-md);
  padding: var(--spacing-md);
  background: var(--color-surface-subtle);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
}

.camp-camper-card__title {
  margin: 0 0 var(--spacing-xs);
  font-weight: 700;
  font-size: var(--font-size-sm);
  color: var(--color-text);
}

.camp-camper-card__meta {
  margin: 0;
  font-size: var(--font-size-sm);
  color: var(--color-text-light);
  line-height: 1.6;
}

.camp-camper-card__remove {
  flex: 0 0 auto;
  background: none;
  border: 0;
  color: var(--color-error);
  font-size: var(--font-size-sm);
  font-weight: 600;
  cursor: pointer;
  padding: var(--spacing-xs) var(--spacing-sm);
}

.camp-camper-card__remove:focus-visible {
  outline: 2px solid var(--color-focus);
  outline-offset: 1px;
  border-radius: var(--radius-sm);
}

.camp-add-camper {
  margin-bottom: var(--spacing-lg);
}

.camp-multi-result {
  display: flex;
  flex-direction: column;
  gap: var(--spacing-sm);
  margin: var(--spacing-md) 0;
  text-align: left;
}

.camp-multi-result__row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--spacing-md);
  padding: var(--spacing-sm) var(--spacing-md);
  background: var(--color-surface-subtle);
  border-radius: var(--radius-md);
  border-left: 4px solid var(--color-border-strong);
}

.camp-multi-result__row--success  { border-left-color: var(--color-success); }
.camp-multi-result__row--waitlist { border-left-color: var(--color-warning); }
.camp-multi-result__row--full,
.camp-multi-result__row--duplicate,
.camp-multi-result__row--error    { border-left-color: var(--color-error); }

.camp-multi-result__name {
  font-weight: 600;
  color: var(--color-text);
}

.camp-multi-result__status {
  font-size: var(--font-size-sm);
  color: var(--color-text-light);
}

/* ── 3. Follow-up camper banner ────────────────────────────────────────── */

.camp-banner {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--spacing-sm);
  padding: var(--spacing-md);
  margin-bottom: var(--spacing-lg);
  background: var(--color-primary-alpha-12);
  border-radius: var(--radius-md);
  border-left: 4px solid var(--color-primary);
}

.camp-banner__name {
  font-weight: 700;
  color: var(--color-text);
}

.camp-banner__meta {
  font-size: var(--font-size-sm);
  color: var(--color-text-light);
}

/* ── 4. Document upload widget ─────────────────────────────────────────── */

.camp-upload {
  border: 1px dashed var(--color-border-strong);
  border-radius: var(--radius-md);
  padding: var(--spacing-md);
  text-align: center;
}

.camp-upload--done {
  border-style: solid;
  border-color: var(--color-success);
  background: rgba(22, 163, 74, 0.06);
}

.camp-upload__input {
  display: block;
  margin: 0 auto;
  max-width: 100%;
}

.camp-upload__status {
  margin-top: var(--spacing-sm);
  font-size: var(--font-size-sm);
  color: var(--color-text);
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--spacing-sm);
}

.camp-upload__remove {
  background: none;
  border: 0;
  color: var(--color-error);
  font-size: var(--font-size-xs);
  font-weight: 600;
  cursor: pointer;
}

.camp-upload__progress {
  margin-top: var(--spacing-sm);
  height: 8px;
  border-radius: var(--radius-full);
  background: var(--color-overlay-black-medium);
  overflow: hidden;
}

.camp-upload__progress-fill {
  height: 100%;
  width: 0%;
  background: var(--color-primary);
  transition: width var(--transition-fast);
}

@media (prefers-reduced-motion: reduce) {
  .camp-upload__progress-fill {
    transition: none;
  }
}

/* ── 5. Additional-contact repeater row (Form 2 EC2/EC3) ───────────────── */

.camp-extra-contact {
  padding: var(--spacing-md);
  margin-bottom: var(--spacing-md);
  background: var(--color-surface-subtle);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
}

.camp-extra-contact__head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: var(--spacing-sm);
}

.camp-extra-contact__title {
  margin: 0;
  font-size: var(--font-size-sm);
  font-weight: 700;
  color: var(--color-text);
}

.camp-extra-contact__remove {
  background: none;
  border: 0;
  color: var(--color-error);
  font-size: var(--font-size-xs);
  font-weight: 600;
  cursor: pointer;
}

/* ── 6. Conditional detail row (has_allergies -> allergies_detail, etc.) ── */

.camp-condition-row {
  margin-left: var(--spacing-lg);
}
