/* CPN Form - fully self-styled */
.cpnform{
  --cpnform-primary:#ff0057;
  --cpnform-primary-hover:#d8004a;
  --cpnform-bg:#ffffff;
  --cpnform-surface:#ffffff;
  --cpnform-text:#111111;
  --cpnform-muted:rgba(0,0,0,.65);
  --cpnform-border:rgba(0,0,0,.12);
  --cpnform-danger:#d11a2a;

  font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  color:var(--cpnform-text);
  box-sizing:border-box;
  background:var(--cpnform-bg);
  padding:0;
}
.cpnform *{ box-sizing:border-box; }
.cpnform-card{
  max-width:980px;
  margin:0 auto;
  background:var(--cpnform-surface);
  border:1px solid var(--cpnform-border);
  border-radius:18px;
  /* No drop shadow (requested) */
  box-shadow:none;
  overflow:hidden;
}
.cpnform-header{ padding:18px 18px 8px; border-bottom:1px solid rgba(0,0,0,.06); }
.cpnform-progress{ height:10px; background:rgba(0,0,0,.06); border-radius:999px; overflow:hidden; }
.cpnform-progress-bar{ height:100%; width:0%; background:var(--cpnform-primary); transition:width .25s ease; }
.cpnform-step-meta{ padding:14px 2px 0; }
.cpnform-step-title{ margin:0; font-size:18px; letter-spacing:.2px; }
.cpnform-step-desc{ margin:6px 0 0; color:var(--cpnform-muted); font-size:13px; line-height:1.4; }
.cpnform-form{ padding:18px; }
.cpnform-step-body{ display:grid; grid-template-columns:1fr 1fr; gap:14px; }
@media (max-width:860px){ .cpnform-step-body{ grid-template-columns:1fr; } }

.cpnform-label{ display:block; font-size:12px; font-weight:650; color:rgba(0,0,0,.78); margin-bottom:6px; }
.cpnform-req{ color:var(--cpnform-primary); }

.cpnform-field input[type="text"],.cpnform-field input[type="email"],.cpnform-field input[type="tel"],.cpnform-field input[type="date"],.cpnform-field select,.cpnform-field textarea{
  width:100%;
  border:1px solid var(--cpnform-border);
  border-radius:14px;
  padding:10px 12px;
  font-size:14px;
  outline:none;
  transition:border-color .15s ease, box-shadow .15s ease;
  background:#fff;
  color:var(--cpnform-text);
}
.cpnform-field textarea{ resize:vertical; min-height:110px; }
.cpnform-field input:focus,.cpnform-field select:focus,.cpnform-field textarea:focus{
  border-color:var(--cpnform-primary);
  box-shadow:0 0 0 4px rgba(255,0,87,.12);
}

/* Highlight missing required fields */
.cpnform-field.cpnform-invalid input[type="text"],
.cpnform-field.cpnform-invalid input[type="email"],
.cpnform-field.cpnform-invalid input[type="tel"],
.cpnform-field.cpnform-invalid input[type="date"],
.cpnform-field.cpnform-invalid select,
.cpnform-field.cpnform-invalid textarea{
  border-color:var(--cpnform-danger);
  box-shadow:0 0 0 4px rgba(209,26,42,.10);
}
.cpnform-field.cpnform-invalid .cpnform-choice-item{
  border-color:rgba(209,26,42,.45);
  background:rgba(209,26,42,.06);
}

.cpnform-choice{ display:grid; gap:10px; }
.cpnform-choice-item{
  display:inline-flex;
  gap:10px;
  align-items:center;
  padding:10px 12px;
  border:1px solid var(--cpnform-border);
  border-radius:14px;
  background:rgba(0,0,0,.02);
  cursor:pointer;
  user-select:none;
  font-size:14px;
}
.cpnform-choice-item input{ transform:translateY(1px); }

.cpnform-hidden{ display:none !important; }

.cpnform-actions{ margin-top:18px; display:flex; gap:10px; justify-content:flex-end; }
.cpnform-btn{
  border:1px solid var(--cpnform-border);
  background:#fff;
  color:var(--cpnform-text);
  padding:10px 14px;
  border-radius:14px;
  cursor:pointer;
  font-weight:650;
  transition:transform .05s ease, background .15s ease, border-color .15s ease, filter .15s ease;
}
.cpnform-btn:active{ transform:translateY(1px); }
.cpnform-btn:disabled{ opacity:.6; cursor:not-allowed; }

.cpnform-btn-primary{
  background:var(--cpnform-primary);
  border-color:transparent;
  color:#fff;
}
.cpnform-btn-primary:hover{ background:var(--cpnform-primary-hover); }

.cpnform-btn-ghost{ background:transparent; }

.cpnform-status{ margin-top:12px; font-size:13px; color:var(--cpnform-muted); }

.cpnform-success{ padding:18px; }
.cpnform-success-title{ margin:0; font-size:20px; }
.cpnform-success-message{ margin:10px 0 0; color:var(--cpnform-muted); line-height:1.5; }

.cpnform-error{ padding:14px; border:1px solid rgba(209,26,42,.25); background:rgba(209,26,42,.06); border-radius:14px; color:#7a0c15; }


/* Elegant missing-fields message */
.cpnform-alert{
  margin-top:12px;
  padding:12px 14px;
  border-radius:14px;
  border:1px solid rgba(255,0,87,.22);
  background: rgba(255,0,87,.06);
  color: rgba(0,0,0,.80);
}
.cpnform-alert-title{ font-weight:900; font-size:13px; }
.cpnform-alert-sub{ margin-top:4px; font-size:12px; color: rgba(0,0,0,.62); }
.cpnform-alert-list{ margin:10px 0 0; padding-left:18px; font-size:12px; color: rgba(0,0,0,.78); }
.cpnform-alert-list li{ margin:4px 0; }
.cpnform-missing-more{ margin-top:6px; font-size:12px; color: rgba(0,0,0,.55); }

/* Address autocomplete */
.cpnform-field{ position:relative; }
.cpnform-ac{
  position:absolute;
  left:0; right:0;
  top: calc(100% - 4px);
  background:#fff;
  border:1px solid var(--cpnform-border);
  border-radius:14px;
  box-shadow:0 18px 40px rgba(0,0,0,.12);
  overflow:hidden;
  z-index: 50;
}
.cpnform-ac-item{
  width:100%;
  text-align:left;
  padding:10px 12px;
  border:0;
  background:#fff;
  cursor:pointer;
  font-size:13px;
  color: var(--cpnform-text);
}
.cpnform-ac-item:hover{ background: rgba(0,0,0,.04); }

/* Class schedules (optional) */
.cpnform-schedule{
  margin:8px 0 0;
  padding:10px 12px;
  border:1px solid rgba(0,0,0,.08);
  border-radius:14px;
  background:#fafafa;
}
.cpnform-schedule-title{ font-weight:900; font-size:12px; margin-bottom:6px; color: rgba(0,0,0,.70); }
.cpnform-schedule ul{ margin:0; padding-left:18px; font-size:12px; color: rgba(0,0,0,.72); }
.cpnform-schedule li{ margin:3px 0; }


/* Phone flag inside input */
.cpnform-input-wrap{
  position:relative;
  width:100%;
}

/* Add space so the phone number never crashes into the flag */
.cpnform-has-flag{ padding-left:62px !important; }

.cpnform-flag{
  position:absolute;
  left:16px;
  top:50%;
  transform:translateY(-50%);
  width:22px;
  height:22px;
  border-radius:6px;
  display:flex;
  align-items:center;
  justify-content:center;
  font-size:14px;
  line-height:1;
  pointer-events:none;
  opacity:.9;
}

/* Address autocomplete list */
.cpnform-ac-list{
  position:fixed;
  background:#fff;
  border:1px solid rgba(0,0,0,.12);
  border-radius:12px;
  box-shadow:0 12px 30px rgba(0,0,0,.10);
  z-index: 9999;
  max-height: 260px;
  overflow:auto;
  padding:6px;
}

.cpnform-ac-item{
  width:100%;
  text-align:left;
  background:transparent;
  border:0;
  padding:10px 10px;
  border-radius:10px;
  cursor:pointer;
  font-size:13px;
  color:#111;
}

.cpnform-ac-item:hover,
.cpnform-ac-item:focus{
  background:rgba(0,0,0,.05);
  outline:none;
}

.cpnform-ac-empty{
  padding:10px;
  font-size:12px;
  color:rgba(0,0,0,.65);
}

