/* ============================================================
   PULSEGRID — FLUENT FORMS SKIN
   Selectors are scoped to .pg-formshell so nothing leaks into
   the WP admin or other plugins' forms.
   ============================================================ */

.pg-formshell{
  position:relative;
  border:1px solid var(--pg-line);
  border-radius:var(--pg-r-lg);
  padding:clamp(24px,3.2vw,44px);
  background:linear-gradient(168deg,rgba(255,255,255,.055),rgba(255,255,255,.02) 60%,rgba(255,255,255,.012));
  backdrop-filter:blur(14px);
  -webkit-backdrop-filter:blur(14px);
  overflow:hidden;
}
.pg-formshell::before{
  content:"";position:absolute;top:0;left:10%;right:10%;height:1px;
  background:linear-gradient(90deg,transparent,rgba(255,255,255,.3),transparent);
}
.pg-formshell__head{margin-bottom:26px}
.pg-formshell__head h2{font-size:clamp(1.35rem,2.4vw,1.9rem);margin-bottom:8px}
.pg-formshell__head p{font-size:.94rem;color:var(--pg-muted);margin:0}

/* ---------- Grid ---------- */
.pg-formshell .ff-el-group,
.pg-formshell .pg-field{margin:0 0 20px}
.pg-formshell .ff-t-cell{padding:0 9px}
.pg-formshell .ff-t-container{margin:0 -9px}

.pg-fgrid{display:grid;grid-template-columns:repeat(2,1fr);gap:0 18px}
.pg-fgrid--full{grid-template-columns:1fr}
@media (max-width:768px){.pg-fgrid{grid-template-columns:1fr}}

/* ---------- Labels ---------- */
.pg-formshell .ff-el-input--label label,
.pg-formshell .pg-label{
  display:block;
  font-family:var(--pg-display);
  font-size:.74rem;font-weight:600;letter-spacing:.15em;text-transform:uppercase;
  color:var(--pg-dim);margin:0 0 9px;
}
.pg-formshell .ff-el-is-required label:after,
.pg-formshell .pg-label--req:after{content:"*";color:var(--pg-magenta);margin-left:5px}

/* ---------- Inputs ---------- */
.pg-formshell input[type=text],
.pg-formshell input[type=email],
.pg-formshell input[type=tel],
.pg-formshell input[type=url],
.pg-formshell input[type=number],
.pg-formshell input[type=date],
.pg-formshell select,
.pg-formshell textarea,
.pg-formshell .ff-el-form-control{
  width:100%;
  min-height:58px;
  padding:16px 20px;
  background:rgba(0,0,0,.32);
  border:1px solid var(--pg-line);
  border-radius:14px;
  color:var(--pg-white);
  font-family:var(--pg-body);
  font-size:1rem;
  line-height:1.45;
  transition:border-color var(--pg-fast) var(--pg-ease),
             background-color var(--pg-fast) var(--pg-ease),
             box-shadow var(--pg-fast) var(--pg-ease);
  box-shadow:none;
  appearance:none;
  -webkit-appearance:none;
}
.pg-formshell textarea,
.pg-formshell textarea.ff-el-form-control{min-height:140px;resize:vertical;padding-top:18px}

.pg-formshell input::placeholder,
.pg-formshell textarea::placeholder{color:var(--pg-dim);opacity:.75}

.pg-formshell input:hover,
.pg-formshell select:hover,
.pg-formshell textarea:hover{border-color:rgba(255,255,255,.2)}

.pg-formshell input:focus,
.pg-formshell select:focus,
.pg-formshell textarea:focus{
  outline:none;
  border-color:var(--pg-magenta);
  background:rgba(0,0,0,.45);
  box-shadow:0 0 0 3px rgba(236,0,140,.16);
}

/* Select caret */
.pg-formshell select{
  padding-right:48px;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='9' fill='none' stroke='%238E8B98' stroke-width='2'%3E%3Cpath d='M1 1l6 6 6-6'/%3E%3C/svg%3E");
  background-repeat:no-repeat;
  background-position:right 20px center;
}
.pg-formshell select option{background:var(--pg-elevated);color:var(--pg-white)}

/* Phone / country-code widget */
.pg-formshell .iti{width:100%}
.pg-formshell .iti__flag-container{padding:2px 0 2px 6px}
.pg-formshell .iti__selected-flag{border-radius:14px 0 0 14px;padding:0 10px 0 16px}
.pg-formshell .iti__country-list{
  background:var(--pg-elevated);border:1px solid var(--pg-line);
  border-radius:12px;color:var(--pg-text);
}
.pg-formshell .iti__country.iti__highlight{background:rgba(236,0,140,.16)}
.pg-formshell .iti--separate-dial-code input{padding-left:96px}

/* ---------- Consent checkbox ---------- */
.pg-formshell .ff-el-form-check,
.pg-consent{
  display:flex;align-items:flex-start;gap:12px;
  font-size:.9rem;color:var(--pg-muted);line-height:1.5;
}
.pg-formshell .ff-el-form-check input[type=checkbox],
.pg-consent input[type=checkbox]{
  appearance:none;-webkit-appearance:none;
  width:21px;height:21px;min-height:0;flex:none;margin:2px 0 0;padding:0;
  border:1px solid var(--pg-line-strong);border-radius:6px;
  background:rgba(0,0,0,.32);cursor:pointer;
  transition:all var(--pg-fast) var(--pg-ease);
}
.pg-formshell .ff-el-form-check input[type=checkbox]:checked,
.pg-consent input[type=checkbox]:checked{
  background:var(--pg-magenta) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='11' height='9' fill='none' stroke='%23fff' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M1 4.5L4 7.5 10 1.5'/%3E%3C/svg%3E") center/11px no-repeat;
  border-color:var(--pg-magenta);
}
.pg-consent a{color:var(--pg-white);border-bottom:1px solid var(--pg-magenta)}

/* ============================================================
   SERVICE SELECTION CARDS (Free Audit)
   Fluent Forms renders <input type=checkbox> + <label>.
   We hide the native box and turn the label into a card.
   ============================================================ */
/* The grid must apply to whichever element actually holds the options:
   .pg-servicepick itself in hand-built markup, or the wrapper Fluent
   Forms generates inside it. */
.pg-servicepick,
.pg-servicepick .ff-el-form-check,
.pg-servicepick .ff_list_buttons{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(200px,1fr));
  gap:12px;margin:0;
}
/* When Fluent Forms supplies its own wrapper, the outer element must not
   also be a grid or the options end up nested two levels deep. */
.pg-servicepick:has(.ff-el-form-check),
.pg-servicepick:has(.ff_list_buttons){display:block}
.pg-servicepick .ff-el-form-check-checkbox,
.pg-servicepick .pg-pick{margin:0;position:relative}

.pg-servicepick input[type=checkbox]{
  position:absolute;opacity:0;width:100%;height:100%;top:0;left:0;margin:0;
  cursor:pointer;z-index:2;
}
.pg-servicepick input[type=checkbox] + label,
.pg-servicepick .pg-pick__face{
  display:flex;flex-direction:column;gap:12px;
  min-height:126px;padding:18px;
  border:1px solid var(--pg-line);border-radius:var(--pg-r);
  background:rgba(255,255,255,.025);
  cursor:pointer;position:relative;overflow:hidden;
  font-size:.95rem;font-weight:600;color:var(--pg-text);
  font-family:var(--pg-display);letter-spacing:-.01em;
  transition:border-color var(--pg-fast) var(--pg-ease),
             background-color var(--pg-fast) var(--pg-ease),
             transform var(--pg-fast) var(--pg-ease);
}
.pg-servicepick input[type=checkbox]:hover + label,
.pg-servicepick .pg-pick:hover .pg-pick__face{
  border-color:var(--pg-line-strong);background:rgba(255,255,255,.05);
}
.pg-servicepick .pg-pick__icon{
  width:34px;height:34px;display:grid;place-items:center;
  transition:transform var(--pg-med) var(--pg-ease);
}
.pg-servicepick .pg-pick__icon svg,
.pg-servicepick .pg-pick__icon img{width:100%;height:100%;object-fit:contain}

/* check indicator */
.pg-servicepick .pg-pick__face::after,
.pg-servicepick input[type=checkbox] + label::after{
  content:"";position:absolute;top:15px;right:15px;
  width:21px;height:21px;border-radius:50%;
  border:1px solid var(--pg-line-strong);
  background:transparent center/11px no-repeat;
  transition:all var(--pg-fast) var(--pg-ease);
}

/* selected state */
.pg-servicepick input[type=checkbox]:checked + label,
.pg-servicepick .pg-pick.is-picked .pg-pick__face{
  border-color:rgba(236,0,140,.55);
  background:linear-gradient(160deg,rgba(236,0,140,.12),rgba(236,0,140,.03));
  color:var(--pg-white);
}
.pg-servicepick input[type=checkbox]:checked + label::after,
.pg-servicepick .pg-pick.is-picked .pg-pick__face::after{
  border-color:var(--pg-magenta);
  background-color:var(--pg-magenta);
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='11' height='9' fill='none' stroke='%23fff' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M1 4.5L4 7.5 10 1.5'/%3E%3C/svg%3E");
}
.pg-servicepick input[type=checkbox]:checked + label .pg-pick__icon,
.pg-servicepick .pg-pick.is-picked .pg-pick__icon{transform:scale(1.1) rotate(-3deg)}

.pg-servicepick input[type=checkbox]:focus-visible + label,
.pg-servicepick .pg-pick input:focus-visible ~ .pg-pick__face{
  outline:2px solid var(--pg-amber);outline-offset:3px;
}

/* ---------- File upload ---------- */
.pg-formshell .ff-el-input--content .ff_upload_btn,
.pg-formshell .pg-upload{
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;
  width:100%;min-height:124px;padding:22px;
  border:1px dashed var(--pg-line-strong);border-radius:var(--pg-r);
  background:rgba(0,0,0,.22);color:var(--pg-muted);
  font-family:var(--pg-body);font-size:.93rem;cursor:pointer;text-align:center;
  transition:border-color var(--pg-fast) var(--pg-ease),background-color var(--pg-fast) var(--pg-ease);
}
.pg-formshell .ff-el-input--content .ff_upload_btn:hover,
.pg-formshell .pg-upload:hover{border-color:var(--pg-magenta);background:rgba(236,0,140,.06)}
.pg-upload__hint{font-size:.78rem;color:var(--pg-dim)}

/* ---------- Submit ---------- */
.pg-formshell .ff-btn-submit,
.pg-formshell button[type=submit]{
  display:inline-flex;align-items:center;justify-content:center;gap:11px;
  width:100%;min-height:60px;padding:18px 32px;
  border:0;border-radius:var(--pg-r-pill);cursor:pointer;
  font-family:var(--pg-display);font-weight:700;font-size:.98rem;letter-spacing:-.01em;
  color:#0B0912;
  background:var(--pg-grad);background-size:180% 100%;background-position:0 0;
  box-shadow:0 10px 30px -14px rgba(236,0,140,.65);
  transition:background-position var(--pg-med) var(--pg-ease),
             transform var(--pg-fast) var(--pg-ease),
             box-shadow var(--pg-med) var(--pg-ease);
}
.pg-formshell .ff-btn-submit:hover,
.pg-formshell button[type=submit]:hover{
  background-position:100% 0;transform:translateY(-2px);
  box-shadow:0 16px 40px -16px rgba(236,0,140,.8);
}
.pg-formshell .ff-btn-submit:disabled{opacity:.55;cursor:not-allowed;transform:none}

/* ---------- Validation ---------- */
.pg-formshell .ff-el-is-error input,
.pg-formshell .ff-el-is-error select,
.pg-formshell .ff-el-is-error textarea,
.pg-formshell .pg-field--error input{
  border-color:var(--pg-coral);
  background:rgba(239,49,36,.07);
  box-shadow:0 0 0 3px rgba(239,49,36,.13);
}
.pg-formshell .error.text-danger,
.pg-formshell .ff-el-is-error .error,
.pg-formshell .pg-error{
  display:flex;align-items:center;gap:7px;
  margin-top:9px;font-size:.83rem;color:var(--pg-coral);
}
.pg-formshell .pg-error::before,
.pg-formshell .error.text-danger::before{
  content:"";width:14px;height:14px;flex:none;
  background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23EF3124' stroke-width='1.6'%3E%3Ccircle cx='8' cy='8' r='6.6'/%3E%3Cpath d='M8 4.6v4.2M8 11.2v.2' stroke-linecap='round'/%3E%3C/svg%3E") center/contain no-repeat;
}

/* ---------- Success ---------- */
.pg-formshell .ff-message-success,
.pg-success{
  position:relative;
  border:1px solid rgba(6,199,85,.42);
  background:linear-gradient(150deg,rgba(6,199,85,.13),rgba(6,199,85,.03));
  border-radius:var(--pg-r);
  padding:28px 30px 28px 76px;
  color:var(--pg-text);font-size:1rem;line-height:1.6;
  animation:pgSuccessIn .6s var(--pg-ease) both;
}
.pg-formshell .ff-message-success::before,
.pg-success::before{
  content:"";position:absolute;left:28px;top:28px;
  width:30px;height:30px;border-radius:50%;
  border:1px solid rgba(6,199,85,.6);
  background:rgba(6,199,85,.14) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='11' fill='none' stroke='%2306C755' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M1 5.6L5 9.6 13 1.4'/%3E%3C/svg%3E") center/14px no-repeat;
  animation:pgTick .55s .18s var(--pg-ease) both;
}
@keyframes pgSuccessIn{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
@keyframes pgTick{from{transform:scale(.5);opacity:0}to{transform:none;opacity:1}}

/* ---------- Fluent Forms resets we must override ---------- */
.pg-formshell .frm-fluent-form .ff-el-group{margin-bottom:20px}
.pg-formshell .ff-el-input--label{margin-bottom:0}
.pg-formshell .ff_submit_btn_wrapper{margin-top:8px}
.pg-formshell .ff-el-help-message,
.pg-formshell .ff-hidden-desc{font-size:.82rem;color:var(--pg-dim);margin-top:7px}
.pg-formshell .ff-el-recaptcha,
.pg-formshell .ff-el-turnstile{margin-bottom:20px}

/* Hidden UTM fields must never render */
.pg-formshell .ff_hidden,
.pg-formshell input[type=hidden]{display:none!important}

@media (prefers-reduced-motion:reduce){
  .pg-formshell .ff-message-success,.pg-success,
  .pg-formshell .ff-message-success::before,.pg-success::before{animation:none}
}
