/* CanGrow x Elementor bridge.
   The design CSS (home.css / inner.css) targets plain HTML. Elementor wraps every element in its own containers and
   widgets, so this file (loaded last) neutralises Elementor's default spacing and layout and re-creates the few
   structural rules that depended on plain siblings. Section padding is exposed through Elementor's own padding
   controls (the values below are only defaults). */

/* ---- 1. neutralise Elementor defaults ---- */
.cgx .e-con{
  --container-default-padding-top:0px;--container-default-padding-right:0px;
  --container-default-padding-bottom:0px;--container-default-padding-left:0px;
  --widgets-spacing:0px;--widgets-spacing-row:0px;--widgets-spacing-column:0px;
  --kit-widget-spacing:0px;
  --flex-wrap:nowrap;--flex-wrap-mobile:nowrap;
  --content-width:100%;
}
.cgx .e-con>.elementor-widget{width:auto;max-width:100%;min-width:0}
.cgx .elementor-widget-text-editor,.cgx .elementor-widget-html,.cgx .elementor-widget-shortcode{font:inherit;color:inherit}
/* Elementor sets line-height:1 on every heading; give the design's own values back (specificity kept low so
   class-based rules such as .hero h1 or .svc h3 still win) */
:where(h1,h3,h4,h5,h6).elementor-heading-title{line-height:inherit}
:where(h2).elementor-heading-title{line-height:1.2}
.cgx .elementor-widget-shortcode .elementor-shortcode{display:contents}

/* ---- 2. page width + section padding (defaults, editable in Elementor) ---- */
.cgx .e-con.wrap{
  width:100%;max-width:calc(var(--wrap) + 2*16px);margin-inline:auto;
  padding-inline:max(16px,env(safe-area-inset-left,0px)) max(16px,env(safe-area-inset-right,0px));
  --margin-left:auto;--margin-right:auto;
}
.cgx .e-con.sec,.cgx .e-con.section,.cgx .e-con.svc-sec,.cgx .e-con.ph,.cgx .e-con.hero,.cgx .e-con.quote,
.cgx .e-con.stats,.cgx .e-con.band,.cgx .e-con.qband,.cgx .e-con.cta-band,.cgx .e-con.lost,.cgx .e-con.thanks{
  padding-block-start:var(--padding-block-start);padding-block-end:var(--padding-block-end);
}
.cgx .e-con.sec{--padding-top:96px;--padding-bottom:96px}
.cgx .e-con.section,.cgx .e-con.svc-sec{--padding-top:76px;--padding-bottom:76px}
.cgx .e-con.ph{--padding-top:48px;--padding-bottom:60px}
.cgx .e-con.hero{--padding-top:64px;--padding-bottom:72px}
.cgx .e-con.quote{--padding-top:84px;--padding-bottom:0px}
.cgx .e-con.stats{--padding-top:68px;--padding-bottom:68px}
.cgx .e-con.band,.cgx .e-con.qband{--padding-top:84px;--padding-bottom:84px}
.cgx .e-con.cta-band{--padding-top:76px;--padding-bottom:76px}
.cgx .e-con.lost{--padding-top:84px;--padding-bottom:96px}
.cgx .e-con.thanks{--padding-top:72px;--padding-bottom:88px}
@media (max-width:960px){
  .cgx .e-con.sec{--padding-top:72px;--padding-bottom:72px}
  .cgx .e-con.section,.cgx .e-con.svc-sec,.cgx .e-con.cta-band,.cgx .e-con.qband{--padding-top:60px;--padding-bottom:60px}
  .cgx .e-con.ph{--padding-top:40px;--padding-bottom:48px}
  .cgx .e-con.hero{--padding-top:48px;--padding-bottom:56px}
}
/* on the home page .svc-sec is a plain .sec (the 76px value belongs to inner pages) */
.home.cgx .e-con.svc-sec{--padding-top:96px;--padding-bottom:96px}
@media (max-width:960px){.home.cgx .e-con.svc-sec{--padding-top:72px;--padding-bottom:72px}}
/* padding-top that the static CSS set only on one side must stay one-sided */
.cgx .e-con.steps{padding-block-start:var(--steps-pt,66px)}
.cgx .e-con.steps::before{width:auto;height:0;bottom:auto}
@media (max-width:960px){.cgx .e-con.steps{--steps-pt:0px}}

/* ---- 3. buttons ---- */
.cgx .cgb{width:auto}
.cgx .cgb .elementor-button{
  display:inline-flex;align-items:center;gap:10px;border:2px solid transparent;border-radius:var(--r-pill);
  padding:13px 30px;font:600 13px/1.2 var(--font);letter-spacing:.06em;text-transform:uppercase;text-decoration:none;
  cursor:pointer;box-shadow:none;fill:currentColor;
  transition:background .2s,color .2s,border-color .2s,transform .2s;
}
.cgx .cgb .elementor-button:hover{transform:translateY(-2px)}
.cgx .cgb .elementor-button-content-wrapper{display:inline-flex;align-items:center;gap:10px;flex-direction:row}
.cgx .cgb .elementor-button-text{display:inline}
.cgx .cgb-y .elementor-button{background:var(--yellow);color:var(--navy)}
.cgx .cgb-y .elementor-button:hover{background:var(--yellow-2);color:var(--navy)}
.cgx .cgb-n .elementor-button{background:var(--navy);color:#fff}
.cgx .cgb-n .elementor-button:hover{background:var(--navy-2);color:#fff}
.cgx .cgb-o .elementor-button{border-color:#fff;color:#fff;background:transparent}
.cgx .cgb-o .elementor-button:hover{background:#fff;color:var(--navy)}
.cgx .cgb-on .elementor-button{border-color:var(--navy);color:var(--navy);background:transparent}
.cgx .cgb-on .elementor-button:hover{background:var(--navy);color:#fff}
.cgx .cgb-arrow .elementor-button-content-wrapper::after,
.cgx .cgb-wa .elementor-button-content-wrapper::before{
  content:"";flex:none;background:currentColor;-webkit-mask:var(--cg-mask) center/contain no-repeat;mask:var(--cg-mask) center/contain no-repeat;
}
.cgx .cgb-arrow .elementor-button-content-wrapper::after{width:16px;height:16px;
  --cg-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 12h16M14 6l6 6-6 6'/%3E%3C/svg%3E")}
.cgx .cgb-wa .elementor-button-content-wrapper::before{width:18px;height:18px;
  --cg-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 3a9 9 0 0 0-7.800 13.500L3 21l4.600-1.200A9 9 0 1 0 12 3z' fill='none' stroke='%23000' stroke-width='1.8' stroke-linejoin='round'/%3E%3Cpath d='M9 8.500c.3 2.700 3.300 5.700 6.100 6.100l1.200-1.300-2.300-1.200-.9.900a4.600 4.600 0 0 1-2-2l.9-.9-1.200-2.300z'/%3E%3C/svg%3E")}
.cgx .aside-box .cgb,.cgx .aside-box .cgb .elementor-button{width:100%;justify-content:center}
.cgx .aside-box .cgb .elementor-button-content-wrapper{justify-content:center}
.cgx .band .cgb{margin-top:28px}
.cgx .form .cgb{justify-self:start}

/* ---- 4. article text (.prose) : spacing that used sibling selectors on plain tags ---- */
.cgx .prose>.elementor-widget+.elementor-widget,.cgx .prose>.e-con+.elementor-widget,.cgx .prose>.elementor-widget+.e-con{margin-top:1.1em}
.cgx .prose>.elementor-widget+.elementor-widget:has(>h2){margin-top:calc(2.3 * clamp(24px,2.7vw,34px))}
.cgx .prose>.elementor-widget+.elementor-widget:has(>h3){margin-top:calc(1.9 * 20px)}
.cgx .prose>.elementor-widget:has(>h2)+.elementor-widget,.cgx .prose>.elementor-widget:has(>h3)+.elementor-widget{margin-top:.7em}
.cgx .prose>.elementor-widget:first-child:has(>h2)+.elementor-widget{margin-top:0}
.cgx .prose>.elementor-widget:first-child{margin-top:0}
.cgx .prose .elementor-widget>:is(h2,h3){margin-top:0}
.cgx .prose .elementor-widget-text-editor>*+*{margin-top:1.1em}
.cgx .prose .elementor-widget-text-editor>:first-child{margin-top:0}
.cgx .prose .elementor-widget-text-editor>:last-child{margin-bottom:0}
.cgx .takeaways .elementor-widget-heading h2{font-size:21px;margin:0 0 12px}
.cgx .takeaways .elementor-widget:has(>h2){margin-top:0}
.cgx .aside-box .elementor-widget-heading h2{font-size:22px;line-height:1.3;color:#fff}
.cgx .aside-links .elementor-widget-heading h2{font-size:19px;margin-bottom:10px}

/* lists built from container widgets */
.cgx ul.cg-ul,.cgx ol.cg-ul{margin:0;padding:0;list-style:none}

/* ---- 5. clickable cards (whole card links through the heading link) ---- */
.cgx .cg-card-link{position:relative}
.cgx .cg-card-link .elementor-heading-title a{color:inherit;text-decoration:none}
.cgx .cg-card-link .elementor-heading-title a::after{content:"";position:absolute;inset:0;z-index:1}

/* ---- 6. headings inside design blocks keep the design's own sizes ---- */
.cgx .fc-title .elementor-heading-title{font:inherit;color:inherit}
.cgx .head .elementor-heading-title,.cgx h2.elementor-heading-title{text-wrap:balance}
.cgx .elementor-widget-heading .elementor-heading-title a{color:inherit}

/* ---- decorative SVGs that the design positions absolutely: the widget box must not take part in the layout ---- */
.cgx .elementor-widget.cgw-ghost,.cgx .elementor-widget.cgw-pat,.cgx .elementor-widget.cgw-cta-roo,.cgx .elementor-widget.cgw-hopper{display:contents}
.cgx .split-l>.elementor-widget:not(.cgw-ghost),.cgx .split-l>.e-con{position:relative}

/* inline spacing from the original markup */
.cgx .e-con.cg-mb0{--margin-bottom:0px;margin-block-end:0}
.cgx .e-con.cg-mt0{--margin-top:0px;margin-block-start:0}

/* the banner art is hidden on small screens, so its widget box must not leave a gap */
@media (max-width:960px){.cgx .elementor-widget.cgw-ph-art{display:none}}

/* an icon that sits alone in an HTML widget is a block, as it was a flex item in the original (no baseline gap under it) */
.cgx .elementor-widget-html>svg.ico{display:block}

.cgx .next .elementor-widget-text-editor>ol:last-child{margin-bottom:0}

/* ---- 7. misc ---- */
.cgx .contact-grid>.e-con:last-child>.elementor-widget:first-child h2{margin-bottom:18px}
/* Elementor removes the underline from every link; plain text links in the design keep it */
.cgx .places a,.cgx .fnote a{text-decoration-line:underline}
.cgx .f-contact a{text-decoration:none}
.admin-bar.cgx .site-header{top:32px}
@media (max-width:782px){.admin-bar.cgx .site-header{top:46px}}
.elementor-editor-active .cgx .site-header,.elementor-editor-active.cgx .site-header{position:relative}

/* ---- 8. home "call back" form: light fields so they stand out on the dark band, plus a message box ---- */
.cgx .qform{background:#FFF6D6;box-shadow:0 16px 36px -18px rgba(0,0,0,.65)}
.cgx .qform input,.cgx .qform select{color:var(--navy)}
.cgx .qform input::placeholder{color:#6A6A5E;opacity:1}
.cgx .qform select{
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5l5 5 5-5' fill='none' stroke='%23082340' stroke-width='1.8' stroke-linecap='round'/%3E%3C/svg%3E");
}
.cgx .qform select:has(option[value=""]:checked){color:#6A6A5E}
.cgx .qform label+label{border-left:1px solid rgba(8,35,64,.16)}
.cgx .qform input:focus-visible,.cgx .qform select:focus-visible{outline:3px solid var(--navy);outline-offset:-3px}
.cgx .qform input:invalid:not(:placeholder-shown):not(:focus){box-shadow:inset 0 -3px 0 #D97706}
.cgx .qtext{max-width:860px;width:100%;margin:14px auto 0}
.cgx .qtext label{display:block}
.cgx .qtext textarea{
  display:block;width:100%;min-height:88px;resize:vertical;background:#FFF6D6;color:var(--navy);border:0;border-radius:28px;
  padding:18px 26px;font:400 15px/1.55 var(--font);box-shadow:0 16px 36px -18px rgba(0,0,0,.65);
}
.cgx .qtext textarea::placeholder{color:#6A6A5E;opacity:1}
.cgx .qtext textarea:focus-visible{outline:3px solid #fff;outline-offset:2px}
.cgx .qband .qtext,.cgx .quote .qtext{text-align:left}
@media (max-width:640px){.cgx .qform label+label{border-left:0;border-top:1px solid rgba(8,35,64,.16)}}

/* ---- 9. services page: seven cards, the last ("Not sure which one?") runs across the row ---- */
@media (min-width:1081px){.cgx .svcs.cg-ul>.cg-li:last-child:nth-child(7){grid-column:1/-1}}
.cgx .svcs>.cg-li>.elementor-widget.cgw-svc{width:100%;flex:1}

/* generated: flex-direction per container class (Elementor drives direction through a variable) */
.cgx .btn{--flex-direction:row}
.cgx .head{--flex-direction:column}
.cgx .rule{--flex-direction:row}
.cgx .topbar .wrap{--flex-direction:row}
.cgx .tb{--flex-direction:row}
.cgx .tb-social a{--flex-direction:row}
.cgx .nav .wrap{--flex-direction:row}
.cgx .logo{--flex-direction:row}
.cgx .menu{--flex-direction:row}
.cgx .menu>li,
.cgx .menu>:where(.cg-li){--flex-direction:row}
.cgx .menu a.nl,
.cgx .menu button.nl{--flex-direction:row}
.cgx .mega a{--flex-direction:row}
.cgx .hero .cta{--flex-direction:row}
.cgx .tile{--flex-direction:column}
.cgx .get article{--flex-direction:row}
.cgx .ticks li,
.cgx .ticks :where(.cg-li){--flex-direction:row}
.cgx .btns{--flex-direction:row}
.cgx .split-l{--flex-direction:column}
.cgx .split-r{--flex-direction:row}
.cgx .why li,
.cgx .why :where(.cg-li){--flex-direction:row}
.cgx .step{--flex-direction:column}
.cgx .soc{--flex-direction:row}
.cgx .links a{--flex-direction:row}
.cgx .f-contact div{--flex-direction:row}
@media (max-width:1080px){
.cgx .burger{--flex-direction:row}
.cgx .menu{--flex-direction:column}
.cgx .menu.open{--flex-direction:row}
.cgx .menu>li,
.cgx .menu>:where(.cg-li){--flex-direction:column}
}
.cgx .svc .more{--flex-direction:row}
.cgx .places li,
.cgx .places :where(.cg-li){--flex-direction:row}
.cgx .cta-row{--flex-direction:row}
.cgx .ind{--flex-direction:column}
.cgx .ind.go span{--flex-direction:row}
.cgx .guide{--flex-direction:column}
.cgx .guide .top{--flex-direction:row}
.cgx .guide .gb{--flex-direction:column}
.cgx .guide .go{--flex-direction:row}
.cgx .faq summary{--flex-direction:row}
.cgx .copy{--flex-direction:row}
.cgx .sec-foot{--flex-direction:row}
.cgx .crumbs{--flex-direction:row}
.cgx .aside-links li a,
.cgx .aside-links :where(.cg-li) a{--flex-direction:row}
.cgx .form .check{--flex-direction:row}
.cgx .contact-list li,
.cgx .contact-list :where(.cg-li){--flex-direction:row}
.cgx .cta-band .actions{--flex-direction:row}
.cgx .lost .big{--flex-direction:row}
.cgx .lost .chips{--flex-direction:row}
.cgx .svcs>li,
.cgx .svcs>:where(.cg-li){--flex-direction:row}
.cgx .qb-text .actions{--flex-direction:row}
/* generated: the design rules for ul/ol/li, repeated for list-like Elementor containers */
:where(.cg-ul){margin:0}
:where(.cg-ul){padding:0;list-style:none}
.menu>:where(.cg-li){display:flex;align-items:center;height:100%;position:relative}
.ticks :where(.cg-li){display:flex;gap:14px;color:var(--muted);font-size:15.5px}
.why :where(.cg-li){display:flex;align-items:center;gap:18px;background:#fff;border-radius:var(--r-card);padding:18px 22px;color:var(--navy);font-weight:500;line-height:1.45}
.logos :where(.cg-li){display:grid;place-items:center;min-height:120px;background:#fff;border-radius:var(--r-card);padding:20px;color:#6C7C92;font-size:clamp(20px,2.2vw,28px);font-weight:700;letter-spacing:-.01em;text-align:center;transition:color .2s,box-shadow .2s}
.logos :where(.cg-li):hover{color:var(--navy);box-shadow:var(--shadow)}
.logos :where(.cg-li) small{display:block;font-size:.5em;font-weight:500;letter-spacing:.14em;text-transform:uppercase;opacity:.8}
@media (max-width:1080px){
.menu>:where(.cg-li){height:auto;flex-direction:column;align-items:stretch;border-bottom:1px solid var(--line)}
}
.places :where(.cg-li){display:flex;gap:20px}
.why :where(.cg-li){align-items:flex-start;padding:20px 22px;font-weight:400}
.why :where(.cg-li) b{display:block;font-weight:600;color:var(--navy);font-size:17px;line-height:1.35;margin-bottom:2px}
.why :where(.cg-li) p{margin:0;color:var(--muted);font-size:15px;line-height:1.6}
.crumbs :where(.cg-li)+:where(.cg-li)::before{content:"/";margin:0 10px;color:rgba(255,255,255,.35)}
.prose :where(.cg-ul):not(.ticks),
.prose :where(.cg-ol){display:grid;gap:12px;padding:0;list-style:none}
.prose :where(.cg-ul):not(.ticks)>:where(.cg-li){position:relative;padding-left:28px}
.prose :where(.cg-ul):not(.ticks)>:where(.cg-li)::before{content:"";position:absolute;left:3px;top:.62em;width:11px;height:11px;border-radius:50%;background:var(--yellow);box-shadow:0 0 0 2px var(--navy) inset}
.prose :where(.cg-ol){counter-reset:n}
.prose :where(.cg-ol)>:where(.cg-li){counter-increment:n;position:relative;padding-left:52px;min-height:34px}
.prose :where(.cg-ol)>:where(.cg-li)::before{content:counter(n);position:absolute;left:0;top:-.1em;display:grid;place-items:center;width:34px;height:34px;border-radius:50%;background:var(--navy);color:#fff;font:600 14.5px/1 var(--font)}
.ticks :where(.cg-li){position:relative;display:block;padding-left:40px;color:inherit;font-size:inherit}
.ticks :where(.cg-li)::before{content:"";position:absolute;left:0;top:.2em;width:26px;height:26px;border-radius:50%;background:var(--yellow) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M6 12.5l4 4 8-9' fill='none' stroke='%23082340' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/16px no-repeat}
.aside-links :where(.cg-li) a{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:11px 0;border-bottom:1px solid var(--line);text-decoration:none;color:var(--navy);font-weight:500;font-size:15.5px}
.aside-links :where(.cg-li):last-child a{border-bottom:0}
.aside-links :where(.cg-li) a::after{content:"";flex:none;width:8px;height:8px;border-top:2px solid var(--yellow);border-right:2px solid var(--yellow);transform:rotate(45deg);transition:transform .2s}
.aside-links :where(.cg-li) a:hover{color:var(--navy-2)}
.aside-links :where(.cg-li) a:hover::after{transform:translateX(3px) rotate(45deg)}
.contact-list :where(.cg-li){display:flex;gap:16px;align-items:flex-start;padding:15px 0;border-bottom:1px solid var(--line);color:var(--navy);font-size:17px;font-weight:600;line-height:1.5}
.contact-list :where(.cg-li):first-child{padding-top:0}
.contact-grid :where(.cg-ol){counter-reset:n;display:grid;gap:14px;padding:0;list-style:none}
.contact-grid :where(.cg-ol) :where(.cg-li){counter-increment:n;position:relative;padding-left:52px;min-height:36px;color:#38485C}
.contact-grid :where(.cg-ol) :where(.cg-li)::before{content:counter(n);position:absolute;left:0;top:0;display:grid;place-items:center;width:36px;height:36px;border-radius:50%;background:var(--yellow);color:var(--navy);font:600 15px/1 var(--font)}
.svcs>:where(.cg-li){display:flex}
.svcs>:where(.cg-li)>.svc{flex:1}
.thanks .next :where(.cg-ol){counter-reset:n;display:grid;gap:12px;list-style:none;padding:0}
.thanks .next :where(.cg-li){counter-increment:n;position:relative;padding-left:46px;color:#38485C;min-height:32px}
.thanks .next :where(.cg-li)::before{content:counter(n);position:absolute;left:0;top:-2px;display:grid;place-items:center;width:32px;height:32px;border-radius:50%;background:var(--yellow);color:var(--navy);font:600 14px/1 var(--font)}
