/* ============================================================================
   Global Data — Contact page styles. SELF-CONTAINED (same token system as
   solutions.css). Pairs with contact.js. Scoped under .gdcontact, prefix ct-.
   Form styles target Gravity Forms' default markup (.gform_wrapper) as well
   as the preview's plain form.
   ============================================================================ */
.gdcontact{
  --p:#13ec80; --p-dark:#0eb561;
  --green:#047857; --green-700:#065f46; --green-soft:#ecfdf5; --green-line:#a7f3d0;
  --ink:#0f172a; --body:#475569; --muted:#64748b; --faint:#94a3b8;
  --line:#e2e8f0; --line-soft:#eef2f7; --surface:#ffffff; --surface-2:#f8fafc; --surface-3:#f1f5f9;
  --deep:#06281a;
}
.gdcontact .material-symbols-outlined{ font-variation-settings:'FILL' 0,'wght' 400,'GRAD' 0,'opsz' 24;
  width:1em; height:1em; overflow:hidden; display:inline-flex; align-items:center; justify-content:center; flex:none; line-height:1; }
html{ scroll-behavior:smooth; }
body{ font-family:'Manrope',sans-serif; background:#f1f5f9; color:#0f172a; }
.material-symbols-outlined{ font-variation-settings:'FILL' 0,'wght' 400,'GRAD' 0,'opsz' 24; }

.gdcontact .pt-badge{ display:inline-flex; align-items:center; gap:8px; font-size:11px; font-weight:800; letter-spacing:.12em;
  text-transform:uppercase; color:var(--green-700); background:var(--green-soft); padding:7px 14px; border-radius:100px; border:1px solid var(--green-line); }
.gdcontact .pt-dot{ width:7px; height:7px; border-radius:50%; background:var(--p); box-shadow:0 0 0 0 rgba(19,236,128,.55); animation:pt-pulse 1.8s infinite; }
@keyframes pt-pulse{ 0%{box-shadow:0 0 0 0 rgba(19,236,128,.55)} 70%{box-shadow:0 0 0 7px rgba(19,236,128,0)} 100%{box-shadow:0 0 0 0 rgba(19,236,128,0)} }
.gdcontact .pt-hero-mesh{ background-color:#fff;
  background-image:radial-gradient(circle at top left,rgba(19,236,128,.16),transparent 48%),radial-gradient(circle at 12% 8%,rgba(4,120,87,.08),transparent 40%); }
.mesh-gradient{ background-image:radial-gradient(at 0% 0%,rgba(19,236,128,.06) 0,transparent 50%),radial-gradient(at 100% 100%,rgba(4,120,87,.04) 0,transparent 50%); }
.gdcontact .pt-btn{ display:inline-flex; align-items:center; justify-content:center; gap:8px; cursor:pointer;
  font-family:inherit; font-weight:700; font-size:14.5px; line-height:1; border:1px solid transparent; border-radius:12px;
  padding:13px 22px; transition:transform .2s cubic-bezier(.2,.8,.2,1),box-shadow .2s,background .2s,color .2s; white-space:nowrap; text-decoration:none; }
.gdcontact .pt-btn .material-symbols-outlined{ font-size:18px; }
.gdcontact .pt-btn-primary{ background:var(--p); color:#06281a; box-shadow:0 8px 22px -8px rgba(19,236,128,.6); }
.gdcontact .pt-btn-primary:hover{ background:var(--p-dark); transform:translateY(-2px); box-shadow:0 14px 30px -8px rgba(19,236,128,.7); }
.gdcontact a{ color:inherit; }
.gdcontact .ct-link{ color:var(--green-700); font-weight:700; text-decoration:underline; text-decoration-color:rgba(19,236,128,.4); text-underline-offset:2px; }
.gdcontact .ct-link:hover{ color:var(--green); }
.gdcontact .pt-reveal{ transition:opacity .7s cubic-bezier(.2,.7,.2,1), transform .7s cubic-bezier(.2,.7,.2,1); }
html.pt-anim .gdcontact .pt-reveal:not(.in){ opacity:0; transform:translateY(24px); }
.gdcontact .pt-reveal.in{ opacity:1; transform:none; }
.gdcontact .pt-reveal.d1{ transition-delay:.08s } .gdcontact .pt-reveal.d2{ transition-delay:.16s } .gdcontact .pt-reveal.d3{ transition-delay:.24s }

/* ---- route cards (sales / support / partnerships) ---- */
.gdcontact .ct-route{ display:flex; flex-direction:column; gap:10px; background:#fff; border:1px solid var(--line); border-radius:16px; padding:24px;
  transition:transform .25s ease, box-shadow .25s ease, border-color .25s ease; }
.gdcontact .ct-route:hover{ transform:translateY(-2px); border-color:var(--green-line); box-shadow:0 14px 30px -14px rgba(15,23,42,.16); }
.gdcontact .ct-route .fi{ width:44px; height:44px; border-radius:12px; display:flex; align-items:center; justify-content:center;
  background:var(--green-soft); border:1px solid var(--green-line); color:var(--green); }
.gdcontact .ct-route .fi .material-symbols-outlined{ font-size:22px; }
.gdcontact .ct-route h2,.gdcontact .ct-route h3{ font-size:16px; font-weight:800; color:var(--ink); }
.gdcontact .ct-route p{ font-size:13.5px; color:var(--body); line-height:1.55; }
.gdcontact .ct-route .rows{ display:flex; flex-direction:column; gap:7px; margin-top:4px; }
.gdcontact .ct-route .row{ display:inline-flex; align-items:center; gap:8px; font-size:13.5px; font-weight:700; color:var(--green-700); }
.gdcontact .ct-route .row .material-symbols-outlined{ font-size:16px; color:var(--green); }
.gdcontact .ct-route .row a:hover{ text-decoration:underline; text-underline-offset:2px; }

/* ---- office / hours ---- */
.gdcontact .ct-office{ background:var(--deep); border-radius:18px; padding:28px; color:#fff; position:relative; overflow:hidden; }
.gdcontact .ct-office::before{ content:""; position:absolute; inset:0; background:radial-gradient(circle at 90% 0%,rgba(19,236,128,.22),transparent 50%); }
.gdcontact .ct-office > *{ position:relative; }
.gdcontact .ct-office h3{ font-size:17px; font-weight:800; }
.gdcontact .ct-office .row{ display:flex; gap:10px; font-size:13.5px; font-weight:600; color:rgba(255,255,255,.8); line-height:1.55; }
.gdcontact .ct-office .row .material-symbols-outlined{ font-size:17px; color:var(--p); margin-top:2px; }
.gdcontact .ct-office a:hover{ color:var(--p); }

/* ---- form card (preview form + Gravity Forms) ---- */
.gdcontact .ct-form{ background:#fff; border:1px solid var(--line); border-radius:20px; padding:32px; box-shadow:0 2px 10px -4px rgba(15,23,42,.06); }
.gdcontact .ct-form h2{ font-size:21px; font-weight:800; color:var(--ink); letter-spacing:-.01em; }
.gdcontact .ct-form .sub{ font-size:13.5px; color:var(--muted); font-weight:600; margin-top:4px; }
.gdcontact .ct-form label,.gdcontact .gform_wrapper .gfield_label{ display:block; font-size:12.5px; font-weight:800; color:var(--ink); margin-bottom:6px; }
.gdcontact .ct-form label .req,.gdcontact .gform_wrapper .gfield_required{ color:var(--green); }
.gdcontact .ct-form input[type="text"],.gdcontact .ct-form input[type="email"],.gdcontact .ct-form input[type="tel"],.gdcontact .ct-form textarea,
.gdcontact .gform_wrapper input:not([type="submit"]),.gdcontact .gform_wrapper textarea{
  width:100%; background:var(--surface-2); border:1px solid var(--line); border-radius:12px; padding:12px 15px;
  font-family:inherit; font-size:14px; font-weight:600; color:var(--ink); outline:none; transition:border-color .2s, box-shadow .2s, background .2s; }
.gdcontact .ct-form input:focus,.gdcontact .ct-form textarea:focus,
.gdcontact .gform_wrapper input:focus,.gdcontact .gform_wrapper textarea:focus{
  background:#fff; border-color:var(--green-line); box-shadow:0 0 0 3px rgba(19,236,128,.15); }
/* GF submit — match the design's primary button (the preview's
   .pt-btn.pt-btn-primary.w-full); GF renders <button class="btn"> in
   .gform_footer, which none of the pt-* classes reach. */
.gdcontact .gform_footer{ margin-top:16px; padding:0; }
.gdcontact .gform_footer button,
.gdcontact .gform_wrapper [type="submit"]{
  display:inline-flex; align-items:center; justify-content:center; gap:8px; width:100%; cursor:pointer;
  font-family:inherit; font-weight:700; font-size:14.5px; line-height:1; border:1px solid transparent; border-radius:12px;
  padding:13px 22px; background:var(--p); color:#06281a; box-shadow:0 8px 22px -8px rgba(19,236,128,.6);
  transition:transform .2s cubic-bezier(.2,.8,.2,1), box-shadow .2s, background .2s; }
.gdcontact .gform_footer button:hover,
.gdcontact .gform_wrapper [type="submit"]:hover{
  background:var(--p-dark); transform:translateY(-2px); box-shadow:0 14px 30px -8px rgba(19,236,128,.7); }
.gdcontact .gform_ajax_spinner{ margin-left:10px; }
.gdcontact .ct-form ::placeholder{ color:var(--faint); font-weight:500; }
.gdcontact .ct-form textarea{ min-height:120px; resize:vertical; }
.gdcontact .ct-field{ margin-top:16px; }
.gdcontact .ct-2col{ display:grid; grid-template-columns:1fr; gap:16px; }
@media (min-width:640px){ .gdcontact .ct-2col{ grid-template-columns:1fr 1fr; } }
.gdcontact .ct-2col .ct-field{ margin-top:0; }
.gdcontact .ct-form .fine{ font-size:12px; color:var(--muted); font-weight:600; line-height:1.55; }
.gdcontact .ct-sent{ display:flex; gap:12px; align-items:flex-start; background:var(--green-soft); border:1px solid var(--green-line); border-radius:14px; padding:18px 20px; }
.gdcontact .ct-sent .material-symbols-outlined{ font-size:22px; color:var(--green); }
.gdcontact .ct-sent p{ font-size:14px; color:var(--green-700); font-weight:700; line-height:1.5; }

/* ---- portal login strip ---- */
.gdcontact .ct-logins{ display:grid; grid-template-columns:repeat(2,1fr); gap:10px; }
@media (min-width:640px){ .gdcontact .ct-logins{ grid-template-columns:repeat(4,1fr); } }
.gdcontact .ct-login{ display:flex; align-items:center; gap:9px; background:#fff; border:1px solid var(--line); border-radius:12px; padding:13px 15px;
  font-size:13px; font-weight:800; color:var(--ink); text-decoration:none; transition:.2s; }
.gdcontact .ct-login:hover{ border-color:var(--green-line); color:var(--green-700); transform:translateY(-2px); }
.gdcontact .ct-login .material-symbols-outlined{ font-size:17px; color:var(--green); }
