/* ===========================================================================
   3D Scanning page — /3d-scanning/
   GENERATED from final/final.html — do not hand-edit.
   Regenerate: python3 deploy/build-template.py

   Divi's parent style.css STILL LOADS under a child theme, so the defensive
   declarations on .rts-partner remain necessary. What the child theme removed
   is the 1080px .container cap and the <style>-in-post_content fragility.
   =========================================================================== */
/* ============================================================
   SCOPED DESIGN SYSTEM — Stridalyzer tokens, web-scaled
   ============================================================ */
.rts-partner{
  /* brand */
  --rp-deep:#1E6F94; --rp-mid:#2E9BB8; --rp-aqua:#3DCBB1;
  --rp-gradient:linear-gradient(135deg,#1E6F94 0%,#2E9BB8 50%,#3DCBB1 100%);
  /* neutrals */
  --rp-page:#F7F9FB; --rp-card:#FFFFFF;
  --rp-ink:#0F2A3A; --rp-ink2:#5A7383; --rp-ink3:#9AAEBC; --rp-divider:#E4EBF0;
  /* type — scaled up from the app scale for web reading distance */
  --rp-font-display:'Inter Tight','Inter',system-ui,-apple-system,'Segoe UI',sans-serif;
  --rp-font-body:'Inter',system-ui,-apple-system,'Segoe UI',sans-serif;
  /* spacing (4px base) */
  --rp-s1:4px; --rp-s2:8px; --rp-s3:12px; --rp-s4:16px; --rp-s6:24px;
  --rp-s8:32px; --rp-s12:48px; --rp-s16:64px; --rp-s20:80px;
  /* shape */
  --rp-r-sm:8px; --rp-r-md:16px; --rp-r-lg:24px; --rp-r-pill:9999px;
  --rp-shadow:0 4px 16px rgba(15,42,58,.06);
  --rp-maxw:1180px;

  /* defensive resets — Divi sets global line-height, heading margins and
     box-sizing that would otherwise reshape this block */
  box-sizing:border-box;
  font-family:var(--rp-font-body);
  font-size:17px;
  line-height:1.6;
  color:var(--rp-ink);
  background:var(--rp-page);
  -webkit-font-smoothing:antialiased;
}
.rts-partner *,.rts-partner *::before,.rts-partner *::after{box-sizing:border-box;}
.rts-partner h1,.rts-partner h2,.rts-partner h3,.rts-partner h4,
.rts-partner p,.rts-partner ul,.rts-partner li{margin:0;padding:0;}
.rts-partner ul{list-style:none;}
.rts-partner img{max-width:100%;height:auto;display:block;}
.rts-partner a{color:var(--rp-deep);text-decoration:none;}
.rts-partner a:hover{text-decoration:underline;}
.rts-partner a:focus-visible,.rts-partner .rp-btn:focus-visible{
  outline:3px solid var(--rp-mid);outline-offset:3px;border-radius:var(--rp-r-sm);
}

/* layout primitives */
.rts-partner .rp-sec{padding:var(--rp-s16) var(--rp-s6);}
.rts-partner .rp-wrap{max-width:var(--rp-maxw);margin:0 auto;}
.rts-partner .rp-alt{background:var(--rp-card);}
.rts-partner .rp-eyebrow{
  font-size:13px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;
  color:var(--rp-deep);margin-bottom:var(--rp-s3);   /* was --rp-mid: 3.06:1, failed AA */
}
.rts-partner .rp-h1{
  font-family:var(--rp-font-display);font-weight:800;
  font-size:clamp(32px,4.6vw,52px);line-height:1.1;letter-spacing:-.02em;
  color:var(--rp-ink);
}
.rts-partner .rp-h2{
  font-family:var(--rp-font-display);font-weight:700;
  font-size:clamp(26px,3vw,34px);line-height:1.2;letter-spacing:-.01em;
  margin-bottom:var(--rp-s4);
  color:var(--rp-ink);   /* Divi's customizer sets h1-h6 to #1E9DCC (2.95:1) */
}
.rts-partner .rp-h3{
  font-family:var(--rp-font-display);font-weight:700;font-size:20px;
  line-height:1.3;margin-bottom:var(--rp-s2);
  color:var(--rp-ink);   /* same Divi customizer override */
}
.rts-partner .rp-lead{font-size:19px;color:var(--rp-ink2);line-height:1.55;}
.rts-partner .rp-body{color:var(--rp-ink2);}
.rts-partner .rp-secintro{max-width:58ch;margin-bottom:var(--rp-s12);}

/* grids — minmax(0,1fr) + min-width:0 prevents track blowout */
.rts-partner .rp-g2,.rts-partner .rp-g3,.rts-partner .rp-g4{display:grid;gap:var(--rp-s6);}
.rts-partner .rp-g2{grid-template-columns:repeat(2,minmax(0,1fr));}
.rts-partner .rp-g3{grid-template-columns:repeat(3,minmax(0,1fr));}
.rts-partner .rp-g4{grid-template-columns:repeat(4,minmax(0,1fr));}
.rts-partner .rp-g2>*,.rts-partner .rp-g3>*,.rts-partner .rp-g4>*{min-width:0;}

.rts-partner .rp-card{
  background:var(--rp-card);border-radius:var(--rp-r-md);
  box-shadow:var(--rp-shadow);padding:var(--rp-s8);
  display:flex;flex-direction:column;gap:var(--rp-s3);
}
.rts-partner .rp-alt .rp-card{background:var(--rp-page);box-shadow:none;}

/* buttons */
.rts-partner .rp-btn{
  display:inline-block;font-family:var(--rp-font-body);font-weight:600;font-size:17px;
  padding:14px 28px;border-radius:var(--rp-r-pill);
  background:var(--rp-deep);color:#fff;border:2px solid var(--rp-deep);
  transition:background .2s ease,border-color .2s ease;
}
.rts-partner .rp-btn:hover{background:#17576f;border-color:#17576f;text-decoration:none;}
.rts-partner .rp-btn-ghost{background:transparent;color:#fff;border-color:rgba(255,255,255,.7);}
.rts-partner .rp-btn-ghost:hover{background:rgba(255,255,255,.14);border-color:#fff;}
.rts-partner .rp-btn-solid{background:#fff;color:var(--rp-deep);border-color:#fff;}
.rts-partner .rp-btn-solid:hover{background:#E9F3F7;border-color:#E9F3F7;text-decoration:none;}
.rts-partner .rp-cta-tel{color:#fff;font-size:17px;text-decoration:underline;
  text-underline-offset:4px;align-self:center;}

/* HERO */
.rts-partner .rp-hero{
  display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);
  gap:var(--rp-s12);align-items:center;
}
.rts-partner .rp-hero-fig{padding:0;}                      /* card removed — the asset stands alone */
.rts-partner .rp-hero-fig img{margin:0 auto;max-height:640px;width:auto;}
.rts-partner .rp-hero-cta{display:flex;flex-wrap:wrap;gap:var(--rp-s4);align-items:center;margin-top:var(--rp-s8);}
.rts-partner .rp-hero-note{font-size:15px;color:var(--rp-ink2);}
.rts-partner .rp-hero-req{font-size:15px;color:var(--rp-ink2);margin-top:var(--rp-s4);} /* was ink3: 2.17:1 */

/* icon */
.rts-partner .rp-ico{
  width:44px;height:44px;border-radius:var(--rp-r-sm);
  background:rgba(46,155,184,.10);color:var(--rp-deep);
  display:flex;align-items:center;justify-content:center;flex:0 0 auto;
}
.rts-partner .rp-ico svg{width:24px;height:24px;stroke:currentColor;fill:none;
  stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;}

/* BARE treatments — deliberately NOT cards.
   Cards are reserved for the two "feature" sections. Steps, audiences and
   figures sit on the page so the page does not read as one wall of boxes. */
.rts-partner .rp-steps{list-style:none;}
.rts-partner .rp-step{display:flex;flex-direction:column;gap:var(--rp-s3);}
.rts-partner .rp-aud{display:flex;flex-direction:column;gap:var(--rp-s3);padding-left:var(--rp-s6);
  border-left:2px solid var(--rp-divider);}
.rts-partner .rp-g3>.rp-aud:first-child{padding-left:0;border-left:0;}
.rts-partner .rp-fig{display:flex;flex-direction:column;gap:var(--rp-s3);}
.rts-partner .rp-fig img{border-radius:var(--rp-r-md);}
.rts-partner .rp-fig-dark{
  background:var(--rp-ink);border-radius:var(--rp-r-md);
  padding:var(--rp-s8);display:flex;justify-content:center;
}
.rts-partner .rp-cap{font-size:15px;color:var(--rp-ink2);}

/* numbered steps */
.rts-partner .rp-step-n{
  font-family:var(--rp-font-display);font-weight:800;font-size:15px;
  width:32px;height:32px;border-radius:var(--rp-r-pill);
  background:var(--rp-deep);color:#fff;
  display:flex;align-items:center;justify-content:center;flex:0 0 auto;
}
.rts-partner .rp-audience-mode{
  font-size:14px;font-weight:600;color:var(--rp-deep);  /* was --rp-mid, failed AA */
  padding-bottom:var(--rp-s3);border-bottom:1px solid var(--rp-divider);
}
.rts-partner .rp-bullets li{
  position:relative;padding-left:22px;margin-bottom:var(--rp-s2);
  color:var(--rp-ink2);overflow-wrap:anywhere;
}
.rts-partner .rp-bullets li::before{
  content:"";position:absolute;left:4px;top:11px;width:7px;height:7px;
  border-radius:50%;background:var(--rp-aqua);
}
/* note: ::before is decorative-only positioning, not content layout */

/* proof strip */
.rts-partner .rp-proof{
  display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));
  gap:var(--rp-s6);
}
.rts-partner .rp-proof div{
  padding:var(--rp-s6);border-radius:var(--rp-r-md);
  background:var(--rp-page);border:1px solid var(--rp-divider);
}
.rts-partner .rp-alt .rp-proof div{background:var(--rp-card);}
.rts-partner .rp-proof strong{
  font-family:var(--rp-font-display);font-size:19px;color:var(--rp-ink);display:block;
}

/* CTA band — THE single brand moment.
   The full blue->aqua gradient CANNOT sit behind text: white on the aqua stop
   (#3DCBB1) measures 2.02:1, far below AA. Measured, not assumed.
   So the band is solid --rp-deep (white text = 5.59:1) and the gradient is kept
   as a full-width accent bar, where no text sits on it. */
.rts-partner .rp-cta{
  background:var(--rp-deep);
  color:#fff;
  overflow:hidden;text-align:center;
}
.rts-partner .rp-cta-sec{padding:0;}
.rts-partner .rp-cta-bar{height:10px;background-image:var(--rp-gradient);}
.rts-partner .rp-cta-inner{padding:var(--rp-s16) var(--rp-s8);}
.rts-partner .rp-cta .rp-h2{color:#fff !important;}  /* must beat Divi's h1-h6 customizer rule */
.rts-partner .rp-cta p{color:rgba(255,255,255,.92);}
.rts-partner .rp-contact{
  display:flex;flex-wrap:wrap;gap:var(--rp-s4);justify-content:center;margin-top:var(--rp-s8);
}
.rts-partner .rp-cta a{color:#fff;}
/* must out-specify .rp-cta a above, or the solid button renders white-on-white */
.rts-partner .rp-cta a.rp-btn-solid{color:var(--rp-deep);}


/* customers — app icons, not a logo wall */
.rts-partner .rp-customers{
  list-style:none;display:grid;gap:var(--rp-s8);
  grid-template-columns:repeat(auto-fit,minmax(200px,1fr));
}
.rts-partner .rp-cust{display:flex;flex-direction:column;gap:var(--rp-s2);align-items:flex-start;}
.rts-partner .rp-cust a{display:flex;flex-direction:column;gap:var(--rp-s3);align-items:flex-start;}
.rts-partner .rp-cust img{
  width:84px;height:84px;border-radius:19px;
  box-shadow:0 4px 16px rgba(15,42,58,.14);
}
.rts-partner .rp-cust a:hover img{box-shadow:0 6px 22px rgba(15,42,58,.22);}
.rts-partner .rp-cust a:hover{text-decoration:none;}
.rts-partner .rp-cust-name{
  font-family:var(--rp-font-display);font-weight:700;font-size:20px;color:var(--rp-ink);
}
.rts-partner .rp-cust a:hover .rp-cust-name{color:var(--rp-deep);}
.rts-partner .rp-cust-app{color:var(--rp-ink2);font-size:14px;margin-top:-4px;} /* ink3 = 2.17:1, fails AA */
.rts-partner .rp-cust a:hover .rp-cust-app{color:var(--rp-mid);}
.rts-partner .rp-cust-who{color:var(--rp-ink2);font-size:16px;margin-top:var(--rp-s2);}
.rts-partner .rp-cust-mode{
  color:var(--rp-deep);font-size:14px;font-weight:600;
}

/* try-the-app */
.rts-partner .rp-try{
  display:grid;grid-template-columns:auto minmax(0,1fr);
  gap:var(--rp-s12);align-items:center;
}
.rts-partner .rp-try-icon{display:block;flex:0 0 auto;}
.rts-partner .rp-try-icon img{
  width:140px;height:140px;border-radius:30px;   /* iOS squircle-ish */
  box-shadow:0 8px 28px rgba(15,42,58,.16);
}
.rts-partner .rp-try-icon:hover img{box-shadow:0 10px 34px rgba(15,42,58,.24);}
.rts-partner .rp-try-copy .rp-btn{margin-top:var(--rp-s6);}
@media (max-width:760px){
  .rts-partner .rp-try{grid-template-columns:minmax(0,1fr);gap:var(--rp-s6);justify-items:start;}
}


/* ---------- responsive ---------- */
@media (max-width:1000px){
  .rts-partner .rp-g4{grid-template-columns:repeat(2,minmax(0,1fr));}
}
@media (max-width:900px){
  .rts-partner .rp-hero{grid-template-columns:minmax(0,1fr);gap:var(--rp-s8);}
  /* figure moves BELOW the copy — headline must be first on a phone */
  .rts-partner .rp-hero-fig{order:2;}
  .rts-partner .rp-hero-copy{order:1;}
}
@media (max-width:760px){
  .rts-partner .rp-g2,.rts-partner .rp-g3{grid-template-columns:minmax(0,1fr);}
  .rts-partner .rp-aud{padding-left:0;border-left:0;padding-top:var(--rp-s6);
    border-top:2px solid var(--rp-divider);}
  .rts-partner .rp-g3>.rp-aud:first-child{padding-top:0;border-top:0;}
  .rts-partner .rp-sec{padding:var(--rp-s12) var(--rp-s4);}
  .rts-partner{font-size:16px;}
}
@media (max-width:560px){
  .rts-partner .rp-g4{grid-template-columns:minmax(0,1fr);}
  .rts-partner .rp-card{padding:var(--rp-s6);}
}
@media (prefers-reduced-motion:reduce){
  .rts-partner *{transition:none !important;}
}
@media print{
  .rts-partner .rp-cta{background:none !important;color:#000;border:2px solid #000;}
  .rts-partner .rp-cta-bar{display:none;}
  .rts-partner .rp-cta .rp-h2,.rts-partner .rp-cta p,.rts-partner .rp-cta a{color:#000;}
  .rts-partner .rp-card{box-shadow:none;border:1px solid #ccc;}
}
/* ===========================================================================
   Forminator partner-enquiry form
   Forminator renders its own markup; these rules re-skin it to the page's
   design system. Selectors target Forminator's stable output classes and are
   all kept inside .rts-partner so nothing leaks to other forms on the site
   (notably the existing "HEALIC Interest" form, id 1773, which must be
   left exactly as it is).
   =========================================================================== */
.rts-partner .rp-form{
  background:var(--rp-card);border-radius:var(--rp-r-lg);
  box-shadow:var(--rp-shadow);padding:var(--rp-s12);
  max-width:760px;margin:0 auto;text-align:left;
}
.rts-partner .rp-form .forminator-ui,
.rts-partner .rp-form .forminator-ui *{font-family:var(--rp-font-body) !important;}
/* Forminator emits ALL fields into a single flex .forminator-row of
   .forminator-col-12 elements whose grid width does not resolve on this install
   (measured live: 87px columns, 57px inputs). Rather than depend on its grid,
   force a stacked, full-width layout. */
.rts-partner .rp-form .forminator-row{
  display:block !important;
  margin:0 0 var(--rp-s4) 0 !important;   /* kills Forminator's -15px side margins */
}
.rts-partner .rp-form .forminator-col{
  width:100% !important;max-width:100% !important;
  flex:0 0 100% !important;padding:0 !important;margin:0 0 var(--rp-s4) 0 !important;
}
.rts-partner .rp-form .forminator-field{width:100% !important;}
.rts-partner .rp-form .forminator-input,
.rts-partner .rp-form .forminator-textarea,
.rts-partner .rp-form select{width:100% !important;display:block !important;}
.rts-partner .rp-form .forminator-label{
  font-size:14px !important;font-weight:600 !important;
  color:var(--rp-ink) !important;margin-bottom:var(--rp-s2) !important;
  text-transform:none !important;letter-spacing:0 !important;
}
.rts-partner .rp-form .forminator-input,
.rts-partner .rp-form .forminator-textarea,
.rts-partner .rp-form select.forminator-select2,
.rts-partner .rp-form .forminator-select .selectize-input{
  font-size:16px !important;                  /* 16px stops iOS zooming on focus */
  color:var(--rp-ink) !important;
  background:var(--rp-page) !important;
  border:1px solid var(--rp-divider) !important;
  border-radius:var(--rp-r-sm) !important;
  padding:12px 14px !important;
  min-height:48px !important;                 /* comfortable touch target */
  box-shadow:none !important;
}
.rts-partner .rp-form .forminator-textarea{min-height:120px !important;}
.rts-partner .rp-form .forminator-input:focus,
.rts-partner .rp-form .forminator-textarea:focus{
  border-color:var(--rp-mid) !important;
  outline:3px solid rgba(46,155,184,.35) !important;outline-offset:1px !important;
}
.rts-partner .rp-form .forminator-button-submit{
  font-family:var(--rp-font-body) !important;font-weight:600 !important;font-size:17px !important;
  background:var(--rp-deep) !important;color:#fff !important;
  border:2px solid var(--rp-deep) !important;border-radius:var(--rp-r-pill) !important;
  padding:14px 28px !important;text-transform:none !important;letter-spacing:0 !important;
  min-height:48px !important;
}
.rts-partner .rp-form .forminator-button-submit:hover{
  background:#17576f !important;border-color:#17576f !important;
}
.rts-partner .rp-form .forminator-error-message{
  color:#A3235C !important;                   /* darkened from --status-bad for AA on white */
  font-size:14px !important;
}
.rts-partner .rp-form .forminator-success{
  background:rgba(61,203,177,.12) !important;
  border-left:4px solid var(--rp-aqua) !important;
  color:var(--rp-ink) !important;border-radius:var(--rp-r-sm) !important;
}
/* Forminator's "material" form-style draws its own floating labels; this form
   should be created with fields-style "enclosed"/default, not material. */
.rts-partner .rp-form-alt{
  margin-top:var(--rp-s6);font-size:16px;color:rgba(255,255,255,.92);
}
.rts-partner .rp-form-alt a{color:#fff;text-decoration:underline;text-underline-offset:4px;}
@media (max-width:560px){
  .rts-partner .rp-form{padding:var(--rp-s6);}
}

/* consent checkbox — Forminator renders a 1x1 input on this install */
.rts-partner .rp-form .forminator-checkbox,
.rts-partner .rp-form input[type="checkbox"]{
  width:20px !important;height:20px !important;min-height:0 !important;
  flex:0 0 20px !important;margin:2px 10px 0 0 !important;accent-color:var(--rp-deep);
  display:inline-block !important;
}
.rts-partner .rp-form .forminator-field-consent label,
.rts-partner .rp-form .forminator-checkbox-label{
  display:flex !important;align-items:flex-start !important;gap:var(--rp-s2);
  font-size:15px !important;font-weight:400 !important;color:var(--rp-ink2) !important;
  text-transform:none !important;letter-spacing:0 !important;line-height:1.5 !important;
}
/* required asterisk */
.rts-partner .rp-form .forminator-required{color:#A3235C !important;}
/* select needs a visible affordance once we force width */
.rts-partner .rp-form select{
  appearance:auto;background-image:none;
}

/* CTA: chat button must match the anchor-based buttons exactly */
.rts-partner .rp-chat{
  font-family:var(--rp-font-body);cursor:pointer;line-height:1.2;
}
.rts-partner .rp-cta-note{
  margin-top:var(--rp-s4);font-size:15px;color:rgba(255,255,255,.85);
}
