:root{
  --ef-font: system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, "Apple Color Emoji", "Segoe UI Emoji";
  --ef-fg:  #111827;      /* slate-900 */
  --ef-bg:  #ffffff;
  --ef-muted:#6b7280;     /* gray-500 */
  --ef-border:#e5e7eb;    /* gray-200 */
  --ef-accent:#7c3aed;    /* violet-600 */
  --ef-accent-weak:#ede9fe;
  --ef-danger:#dc2626;
  --ef-success:#16a34a;
  color-scheme: light dark;
}
@media (prefers-color-scheme: dark){
  :root{
    --ef-fg:#e5e7eb; --ef-bg:#0b0f1a; --ef-muted:#9ca3af; --ef-border:#1f2937;
    --ef-accent:#8b5cf6; --ef-accent-weak:#1f1733;
  }
}
/* Scope to Gravity Forms wrappers */
.gform_wrapper.ef-signup, .gform_wrapper form.ef-signup { font-family: var(--ef-font); }
.gform_wrapper.ef-signup * { box-sizing: border-box; }

/* Container */
.gform_wrapper.ef-signup .gform_heading{
  margin-bottom:1rem;
}
.gform_wrapper.ef-signup .gform_body{
  background: var(--ef-bg);
  border: 1px solid var(--ef-border);
  border-radius: 12px;
  padding: clamp(16px, 2.5vw, 28px);
  box-shadow: 0 10px 20px rgba(0,0,0,.04);
}

/* Labels & fields */
.gform_wrapper.ef-signup .gfield_label{
  font-weight:600; color:var(--ef-fg);
  margin-bottom:6px;
}
.gform_wrapper.ef-signup .ginput_container input,
.gform_wrapper.ef-signup .ginput_container select,
.gform_wrapper.ef-signup .ginput_container textarea{
  width:100%;
  font-size:16px;
  line-height:1.35;
  padding:14px 12px;
  border:1px solid var(--ef-border);
  border-radius:10px;
  background:var(--ef-bg);
  color:var(--ef-fg);
  outline:none;
  min-height:44px; /* meets WCAG target size */
}
.gform_wrapper.ef-signup .ginput_container input:focus,
.gform_wrapper.ef-signup .ginput_container select:focus,
.gform_wrapper.ef-signup .ginput_container textarea:focus{
  border-color:var(--ef-accent);
  box-shadow: 0 0 0 4px color-mix(in oklab, var(--ef-accent) 20%, transparent);
}

/* Help & validation text */
.gform_wrapper.ef-signup .gfield_description{
  color: var(--ef-muted);
  font-size: 0.925rem;
}

/* Error states */
.gform_wrapper.ef-signup .gfield--error .ginput_container input,
.gform_wrapper.ef-signup .gfield--error .ginput_container select,
.gform_wrapper.ef-signup .gfield--error .ginput_container textarea{
  border-color:var(--ef-danger);
  box-shadow: 0 0 0 4px color-mix(in oklab, var(--ef-danger) 20%, transparent);
}
.gform_wrapper.ef-signup .gfield_validation_message{
  background: color-mix(in oklab, var(--ef-danger) 8%, transparent);
  border-left: 3px solid var(--ef-danger);
  padding:8px 10px;
  border-radius:8px;
  color:var(--ef-fg);
}

/* Success hint */
.gform_wrapper.ef-signup .ef-valid-hint{
  color: var(--ef-success);
  font-size: .9rem;
}

/* Stepper */
.ef-stepper{
  display:flex; gap:10px; margin: 0 0 14px 0; padding:0; list-style:none; overflow-x:auto;
}
.ef-stepper__item{
  display:flex; align-items:center; gap:10px; white-space:nowrap;
  padding:10px 12px; border-radius:9999px; border:1px solid var(--ef-border);
  background: var(--ef-accent-weak); color: var(--ef-fg); font-weight:600; font-size:14px;
}
.ef-stepper__item[aria-current="step"]{ border-color:var(--ef-accent); background:color-mix(in oklab, var(--ef-accent) 15%, var(--ef-accent-weak)); }
.ef-stepper__dot{
  display:inline-grid; place-items:center; width:26px; height:26px; border-radius:50%;
  background:var(--ef-accent); color:white; font-weight:700; font-size:13px; flex:0 0 26px;
}

/* Steps (progressive disclosure) */
.ef-step{ display:none; }
.ef-step[aria-hidden="false"]{ display:block; }

/* Sticky actions */
.ef-sticky-cta{
  position:sticky; bottom:0; inset-inline:0;
  background:linear-gradient(180deg, transparent, var(--ef-bg) 30%);
  padding-top:12px; margin-top:16px;
}
.ef-actions{ display:flex; gap:10px; }
.ef-btn{
  appearance:none; border:1px solid transparent; border-radius:12px;
  font-weight:700; font-size:16px; padding:14px 16px; min-height:48px; cursor:pointer;
}
.ef-btn--primary{ background:var(--ef-accent); color:#fff; }
.ef-btn--secondary{ background:transparent; border-color:var(--ef-border); color:var(--ef-fg); }
.ef-btn[disabled]{ opacity:.55; cursor:not-allowed; }

/* Password meter */
.ef-meter{
  height:10px; border-radius:8px; background:var(--ef-border); overflow:hidden; margin-top:6px;
}
.ef-meter__bar{ height:100%; width:0%; transition: width .25s ease; }

/* Terms modal */
.ef-modal[hidden]{ display:none !important; }
.ef-modal{ position:fixed; inset:0; z-index:9999; display:grid; place-items:center; background:rgba(0,0,0,.45); }
.ef-modal__dialog{ width:min(720px, 92vw); max-height:85vh; overflow:auto; background:var(--ef-bg); color:var(--ef-fg); border-radius:16px; border:1px solid var(--ef-border); }
.ef-modal__header, .ef-modal__footer{ padding:14px 16px; border-bottom:1px solid var(--ef-border); }
.ef-modal__footer{ border-top:1px solid var(--ef-border); border-bottom:0; }
.ef-modal__body{ padding:16px; }
.ef-modal__close{ font-size:22px; line-height:1; border:none; background:transparent; cursor:pointer; }

/* Signature pad */
.ef-signature-pad{
  border:1px dashed var(--ef-border); border-radius:12px; background:var(--ef-bg);
  height:180px; display:block; width:100%;
}
.ef-signature-tools{ display:flex; gap:10px; margin-top:8px; }

/* Utility */
.ef-sr-only{ position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0; }
