/* =========================================================================
   GLOW & GO TEAM LTD — design system CSS (maps the approved standalone design
   onto native Salient/WPBakery markup + the save-safe gg_ elements).
   Scoped .gg-site (global chrome) / .gg-home (page design). Values transcribed
   1:1 from the design source (inline-style spec).
   ========================================================================= */

:root {
  --gg-ink:      #0A0A10;   /* page background */
  --gg-ink-2:    #0D0E16;   /* marquee / inputs */
  --gg-card:     #12141E;   /* cards */
  --gg-foot:     #08080D;
  --gg-accent:   #A855F7;   /* fluorescent purple */
  --gg-blue:     #4D8DF0;
  --gg-blue-lt:  #7FA9F5;
  --gg-blue-pl:  #9DBEF8;
  --gg-purple-lt:#C99AF5;
  --gg-purple-pl:#DFB8FF;
  --gg-pink:     #E879F9;
  --gg-text:     #F2F3FA;
  --gg-body:     #A9AFC8;
  --gg-body-2:   #C9CFEA;
  --gg-mute:     #8A90AC;
  --gg-faint:    #61667F;
  --gg-gold:     #FFC24B;
  --gg-wa:       #25D366;
  --gg-sora:     'Sora', sans-serif;
  --gg-jakarta:  'Plus Jakarta Sans', sans-serif;
  --gg-jak:      'Plus Jakarta Sans', sans-serif;
}

@keyframes ggTwinkle { 0%,100% { opacity:.08; transform:scale(.55); } 50% { opacity:.95; transform:scale(1.05); } }
@keyframes ggMarquee { 0% { transform:translateX(0); } 100% { transform:translateX(-50%); } }

/* =========================================================================
   BASE
   ========================================================================= */
html { scroll-behavior: smooth; }
body.gg-site { background: var(--gg-ink); color: var(--gg-text); font-family: var(--gg-jak); line-height: 1.6; -webkit-font-smoothing: antialiased; }
.gg-site ::selection { background: rgba(168,85,247,.35); }
.gg-site ::placeholder { color: var(--gg-faint); opacity: 1; }
.gg-home #ajax-content-wrap .container-wrap { padding-top: 0 !important; padding-bottom: 0 !important; min-height: 0 !important; background: var(--gg-ink); }
.gg-home #ajax-content-wrap { background: var(--gg-ink); }
.gg-home .container-wrap { background: var(--gg-ink); }
.gg-home .main-content > .row > #content { padding: 0 !important; }
.gg-home #content { width: 100% !important; margin: 0 !important; }
.gg-home .gg-section .wpb_text_column { margin-bottom: 0; }
.gg-home .gg-section p:last-child { margin-bottom: 0; }
html, body.gg-site { overflow-x: hidden !important; max-width: 100%; }

/* full-bleed sections; vertical padding lives on the WPBakery row settings */
.gg-home .gg-section {
  position: relative; width: 100vw !important; max-width: 100vw !important;
  margin: 0 calc(50% - 50vw) !important; left: 0; right: 0; overflow-x: clip;
}
.gg-home .gg-in { max-width: 1240px; margin-left: auto; margin-right: auto; }
.gg-home .gg-section { padding-left: 28px; padding-right: 28px; }

/* =========================================================================
   [gg_heading] — eyebrow + title + accent
   ========================================================================= */
.gg-home .gg-head { max-width: 640px; margin-bottom: 48px; }
.gg-home .gg-head--center { margin-left: auto; margin-right: auto; text-align: center; }
.gg-home .gg-eyebrow {
  display: inline-flex; align-items: center; gap: 10px;
  font-family: var(--gg-jakarta, 'Plus Jakarta Sans', sans-serif); font-weight: 600; font-size: .78rem;
  letter-spacing: .12em; text-transform: uppercase; color: var(--gg-blue-lt); opacity: .92;
}
.gg-home .gg-eyebrow::before {
  content: ""; width: 6px; height: 6px; border-radius: 50%; flex: none;
  background: var(--gg-accent); box-shadow: 0 0 8px 1px rgba(168,85,247,.55);
}
/* line-height 1.1 read as congested on any heading that wrapped to two or three lines,
   and it also clipped the descenders of the gradient accent word: background-clip:text
   paints inside the line box, so a tight box shears the tail off a "g" or "y". */
.gg-home .gg-title {
  font-family: var(--gg-sora); font-weight: 800; color: var(--gg-text);
  font-size: clamp(2rem, 3.6vw, 2.9rem); line-height: 1.2; letter-spacing: -.02em; margin: 14px 0 0;
  padding-bottom: .06em;
}
.gg-home .gg-head__sub { font-size: 1.1rem; color: var(--gg-body); margin: 14px 0 0; }
.gg-home .gg-acc--gradient {
  background: linear-gradient(92deg, #4D8DF0 5%, #A855F7 55%, #E879F9 100%);
  -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; color: transparent;
}
.gg-home .gg-acc--purple { color: var(--gg-accent); }
.gg-home .gg-acc--blue { color: var(--gg-blue-lt); }
.gg-home .gg-acc--white { color: #fff; }

/* =========================================================================
   BUTTONS (nectar_btn → a.nectar-button with gg-btn el_class)
   ========================================================================= */
.gg-home .nectar-button.gg-btn {
  display: inline-flex !important; align-items: center; gap: 9px; width: auto;
  font-family: var(--gg-jak) !important; font-weight: 700 !important; font-size: 1.02rem !important;
  padding: .95em 1.8em !important; margin: 0 14px 0 0 !important; border-radius: 999px !important;
  border: none !important; line-height: 1.35 !important; text-transform: none !important; letter-spacing: 0 !important;
  transition: transform .18s ease, box-shadow .18s ease, color .18s ease !important;
}
.gg-home .nectar-button.gg-btn:before, .gg-home .nectar-button.gg-btn:after { display: none !important; }
.gg-home .nectar-button.gg-btn span { font-family: var(--gg-jak); font-weight: 700; transition: none; }
.gg-home .nectar-button.gg-btn--primary { background: var(--gg-accent) !important; box-shadow: 0 14px 32px -12px rgba(168,85,247,.9) !important; }
.gg-home .nectar-button.gg-btn--primary, .gg-home .nectar-button.gg-btn--primary span { color: #fff !important; }
.gg-home .nectar-button.gg-btn--primary:hover { transform: translateY(-2px); box-shadow: 0 20px 40px -12px var(--gg-accent) !important; }
.gg-home .nectar-button.gg-btn--ghost { background: transparent !important; box-shadow: inset 0 0 0 1.5px rgba(255,255,255,.22) !important; }
.gg-home .nectar-button.gg-btn--ghost, .gg-home .nectar-button.gg-btn--ghost span { color: var(--gg-text) !important; }
.gg-home .nectar-button.gg-btn--ghost:hover { transform: translateY(-2px); box-shadow: inset 0 0 0 1.5px var(--gg-blue) !important; }
.gg-home .nectar-button.gg-btn--ghost:hover span { color: var(--gg-blue-lt) !important; }
/* text arrow-link style */
.gg-home .nectar-button.gg-link { background: none !important; box-shadow: none !important; padding: 0 !important; font-size: 1rem !important; }
.gg-home .nectar-button.gg-link, .gg-home .nectar-button.gg-link span { color: var(--gg-blue-pl) !important; }
.gg-home .nectar-button.gg-link--purple, .gg-home .nectar-button.gg-link--purple span { color: var(--gg-purple-pl) !important; }
.gg-home .nectar-button.gg-link:hover span, .gg-home .nectar-button.gg-link--purple:hover span { color: #fff !important; }

/* =========================================================================
   HEADER — Salient native header skinned to the design (sticky, blurred dark)
   ========================================================================= */
.gg-site #header-outer, .gg-site #header-outer.fixed, .gg-site #header-secondary-outer {
  background: rgba(10,10,16,.72) !important; backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px);
  box-shadow: none; border-bottom: 1px solid rgba(255,255,255,.06);
}
.gg-site #header-outer .container { max-width: 1240px; padding-left: 28px !important; padding-right: 28px !important; }
.gg-site #header-outer #logo img { height: 46px !important; width: auto !important; }
.gg-site #header-outer #logo { margin-top: 16px !important; margin-bottom: 16px !important; }
.gg-site #header-outer header#top nav > ul.sf-menu > li.gg-nav-link > a {
  font-family: var(--gg-jak) !important; font-weight: 600; font-size: .93rem; color: #A9AFC8;
  text-transform: none; letter-spacing: 0; transition: color .15s ease;
}
.gg-site #header-outer header#top nav > ul.sf-menu > li.gg-nav-link > a .menu-title-text { font-family: var(--gg-jak) !important; }
.gg-site #header-outer header#top nav > ul.sf-menu > li.gg-nav-link > a:hover { color: #fff; }
.gg-site #header-outer header#top nav > ul.sf-menu > li > a:before,
.gg-site #header-outer header#top nav > ul.sf-menu > li > a:after,
.gg-site #header-outer header#top nav > ul.sf-menu > li > a .menu-title-text:before,
.gg-site #header-outer header#top nav > ul.sf-menu > li > a .menu-title-text:after { display: none !important; content: none !important; }
/* phone link */
.gg-site #header-outer header#top nav > ul.sf-menu > li.gg-nav-phone > a { color: var(--gg-blue-lt) !important; font-weight: 700; font-size: .92rem; }
.gg-site #header-outer header#top nav > ul.sf-menu > li.gg-nav-phone > a .menu-title-text { font-family: var(--gg-jak) !important; }
/* Book now pill */
.gg-site #header-outer header#top nav > ul.sf-menu > li.gg-nav-cta { margin-left: 4px; }
.gg-site #header-outer header#top nav > ul.sf-menu > li.gg-nav-cta > a {
  background: var(--gg-accent); color: #fff !important; font-weight: 700 !important; font-size: .95rem !important;
  padding: 11px 24px !important; border-radius: 999px; line-height: 1 !important; white-space: nowrap;
  box-shadow: 0 12px 26px -12px rgba(168,85,247,.85);
  transition: transform .18s ease, box-shadow .18s ease;
}
.gg-site #header-outer header#top nav > ul.sf-menu > li.gg-nav-cta > a:hover { transform: translateY(-2px); box-shadow: 0 18px 34px -12px rgba(168,85,247,.95); }
.gg-site #header-outer header#top nav > ul.sf-menu > li.gg-nav-cta > a:before { display: none !important; }
@media only screen and (min-width: 1001px) {
  .gg-site #header-outer .slide-out-widget-area-toggle, .gg-site #header-outer a.mobile-search, .gg-site #header-outer .mobile-search { display: none !important; }
  .gg-site #header-outer header#top nav > ul.buttons { display: none !important; }
  .gg-site #header-outer header#top nav { justify-content: flex-end !important; }
}
/* mobile off-canvas */
.gg-site #slide-out-widget-area, .gg-site #slide-out-widget-area.slide-out-from-right,
.gg-site #slide-out-widget-area .inner-wrap, .gg-site #slide-out-widget-area .off-canvas-menu-container { background-color: var(--gg-ink-2) !important; background-image: none !important; }
.gg-site #slide-out-widget-area .off-canvas-menu-container ul.menu li a {
  font-family: var(--gg-jak) !important; font-weight: 700 !important; font-size: 20px !important; color: #fff !important; padding: 15px 6px !important;
}
.gg-site #slide-out-widget-area .off-canvas-menu-container ul.menu li a:hover { color: var(--gg-purple-pl) !important; }
.gg-site #slide-out-widget-area .slide_out_area_close .close-line { background-color: #fff !important; }
.gg-site #header-outer .slide-out-widget-area-toggle .lines,
.gg-site #header-outer .slide-out-widget-area-toggle .lines:before,
.gg-site #header-outer .slide-out-widget-area-toggle .lines:after { background-color: #fff !important; }

/* =========================================================================
   HERO  (.gg-hero row: bg_image + overlays + sparkles via CSS)
   ========================================================================= */
.gg-home .gg-hero { min-height: 760px; display: flex; align-items: center; overflow: hidden; }
.gg-home .gg-hero .row-bg { object-position: center 30%; }
.gg-home .gg-hero .row-bg-wrap:before {
  content: ""; position: absolute; inset: 0; z-index: 1;
  background: linear-gradient(88deg, #0A0A10 6%, rgba(10,10,16,.9) 32%, rgba(10,10,16,.45) 64%, rgba(10,10,16,.65) 100%);
}
.gg-home .gg-hero .row-bg-wrap:after {
  content: ""; position: absolute; inset: 0; z-index: 1;
  background: linear-gradient(180deg, rgba(10,10,16,.6) 0%, rgba(10,10,16,0) 28%, rgba(10,10,16,0) 60%, #0A0A10 100%);
}
.gg-home .gg-hero .row_col_wrap_12 { position: relative; z-index: 2; max-width: 1240px; margin: 0 auto; width: 100%; }
.gg-home .gg-hero__content { max-width: 680px; }
/* sparkles — pure CSS, two layers of twinkling dots */
.gg-home .gg-hero::before, .gg-home .gg-hero::after {
  content: ""; position: absolute; width: 5px; height: 5px; border-radius: 50%; z-index: 1; pointer-events: none;
  background: var(--gg-accent);
  box-shadow: 24vw 12vh 0 -1px var(--gg-blue), 55vw 22vh 0 0 var(--gg-accent), 71vw 9vh 0 -2px var(--gg-blue-lt),
              38vw 55vh 0 -1px var(--gg-pink), 82vw 48vh 0 0 var(--gg-accent), 12vw 68vh 0 -2px var(--gg-blue);
  animation: ggTwinkle 3.4s ease-in-out infinite;
  top: 14%; left: 7%;
}
.gg-home .gg-hero::after {
  width: 4px; height: 4px; top: 30%; left: 3%;
  background: var(--gg-blue-lt);
  box-shadow: 30vw 30vh 0 -1px var(--gg-accent), 63vw 40vh 0 0 var(--gg-blue-pl), 47vw 5vh 0 -2px var(--gg-pink),
              77vw 62vh 0 -1px var(--gg-blue), 18vw 40vh 0 0 var(--gg-accent);
  animation-delay: 1.7s;
}
.gg-home .gg-hero__title { /* h1 via gg_heading */ }
.gg-home .gg-hero .gg-head { margin-bottom: 0; max-width: 680px; }
.gg-home .gg-hero .gg-title {
  font-size: clamp(2.9rem, 6vw, 4.9rem); line-height: 1.08; letter-spacing: -.03em; margin-top: 20px;
  text-shadow: 0 2px 30px rgba(0,0,0,.45);
}
.gg-home .gg-hero__sub { font-size: 1.2rem; color: #D2D6E6; margin: 24px 0 34px !important; max-width: 44ch; text-shadow: 0 1px 14px rgba(0,0,0,.5); }
.gg-home .gg-hero__btns .vc_column-inner, .gg-home .gg-hero__btns .wpb_wrapper { display: flex; flex-wrap: wrap; gap: 14px; align-items: center; padding: 0 !important; }
.gg-home .gg-hero__btns .row-bg-wrap { display: none !important; }
.gg-home .gg-hero__btns .nectar-button.gg-btn { margin: 0 !important; }
/* testimonial chip */
.gg-home .gg-hero__chip {
  display: inline-flex; align-items: center; gap: 14px; margin-top: 42px;
  background: rgba(10,10,16,.55); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px);
  border: 1px solid rgba(255,255,255,.14); border-radius: 18px; padding: 15px 20px; max-width: 540px;
}
.gg-home .gg-hero__chip .img-with-aniamtion-wrap { width: 44px; height: 44px; flex: none; border-radius: 50%; background: #fff; overflow: hidden; display: grid; place-items: center; max-width: none !important; margin: 0; }
.gg-home .gg-hero__chip img { width: 82% !important; height: 82% !important; object-fit: contain; display: block; border-radius: 0; }
.gg-home .gg-hero__chip-text { line-height: 1.5; font-size: .94rem; color: #DDE0F0; margin: 0; }
.gg-home .gg-hero__chip-text b { display: block; color: var(--gg-blue-pl); font-size: .8rem; font-weight: 700; letter-spacing: .02em; }

/* =========================================================================
   CORPORATE LOGO SLIDER (seamless marquee) + ACCREDITATIONS
   Logos = native image_with_animation; gg-logo-marquee.js builds a cloned
   viewport for the infinite loop. Each logo sits in a uniform white chip so
   mixed backgrounds/proportions read consistently and nothing is cropped.
   ========================================================================= */
.gg-home .gg-logos { background: var(--gg-ink-2); border-top: 1px solid rgba(255,255,255,.07); border-bottom: 1px solid rgba(255,255,255,.07); overflow: hidden; }
.gg-home .gg-logos__head { margin-bottom: 0 !important; }
/* accreditations = its own section (dark, separate from the logo strips) */
.gg-home .gg-accred-sec { background: var(--gg-ink); }
.gg-home .gg-logos__head .gg-title { font-size: clamp(1.5rem, 2.6vw, 2.1rem); }
.gg-home .gg-logos__row { position: relative; margin-top: 34px !important; overflow: hidden;
  -webkit-mask-image: linear-gradient(90deg, transparent, #000 7%, #000 93%, transparent);
          mask-image: linear-gradient(90deg, transparent, #000 7%, #000 93%, transparent); }
.gg-home .gg-logos__track > .vc_column-inner, .gg-home .gg-logos__track > .vc_column-inner > .wpb_wrapper { padding: 0 !important; margin: 0 !important; }
/* pre-JS / no-JS fallback: a neat centred wrapping row (never a broken stack) */
.gg-home .gg-logos__track:not(.is-ready) > .vc_column-inner > .wpb_wrapper { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 18px 4px; }
/* JS-built seamless lane */
.gg-home .gg-logos__viewport { display: flex; width: max-content; will-change: transform; }
.gg-home .gg-logos__viewport.is-animated { animation: ggLogoScroll var(--gg-logo-dur, 60s) linear infinite; }
.gg-home .gg-logos__viewport.is-animated:hover { animation-play-state: paused; }
.gg-home .gg-logos__lane { display: flex; align-items: center; flex: none; }
/* the logo chip (image_with_animation el_class lands on the img, so style the wrap) */
.gg-home .gg-logos .img-with-aniamtion-wrap {
  flex: none; height: 84px; width: auto; min-width: 150px; margin: 0 12px; box-sizing: border-box;
  display: flex; align-items: center; justify-content: center; padding: 14px 26px;
  background: #fff; border-radius: 16px; box-shadow: 0 14px 34px -18px rgba(0,0,0,.6);
}
.gg-home .gg-logos .hover-wrap, .gg-home .gg-logos .hover-wrap-inner { height: 100%; display: flex; align-items: center; }
.gg-home .gg-logos img.gg-logos__logo { max-height: 56px; max-width: 150px; width: auto !important; height: auto !important; object-fit: contain; display: block; }
@keyframes ggLogoScroll { from { transform: translateX(0); } to { transform: translateX(-50%); } }
@media (prefers-reduced-motion: reduce) { .gg-home .gg-logos__viewport.is-animated { animation: none; } }

/* accreditation badges — balanced light panels, centred below the second slider */
.gg-home .gg-accred { margin-top: 44px !important; }
.gg-home .gg-accred__wrap > .vc_column-inner { padding: 0 !important; }
.gg-home .gg-accred__wrap > .vc_column-inner > .wpb_wrapper { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: clamp(20px, 3vw, 40px); }
.gg-home .gg-accred .img-with-aniamtion-wrap {
  flex: none; display: flex; align-items: center; justify-content: center; height: 128px; width: auto; padding: 20px 34px; margin: 0; box-sizing: border-box;
  background: #fff; border-radius: 20px; box-shadow: 0 22px 50px -26px rgba(0,0,0,.6);
}
.gg-home .gg-accred .hover-wrap, .gg-home .gg-accred .hover-wrap-inner { height: 100%; display: flex; align-items: center; }
.gg-home .gg-accred img.gg-accred__logo { max-height: 88px; max-width: 230px; width: auto !important; height: auto !important; object-fit: contain; display: block; }

/* =========================================================================
   AUDIENCE CARDS (.gg-aud row)
   ========================================================================= */
.gg-home .gg-aud__grid .row_col_wrap_12_inner { display: flex; flex-wrap: wrap; gap: 24px; }
.gg-home .gg-aud__grid .row_col_wrap_12_inner > .wpb_column { flex: 1 1 440px; min-width: 320px; float: none; margin: 0; width: auto; }
.gg-home .gg-card { position: relative; overflow: hidden; border-radius: 28px; display: flex; flex-direction: column; height: 100%; transition: transform .22s ease, box-shadow .22s ease; }
.gg-home .gg-card > .vc_column-inner { padding: 0 !important; display: flex; flex-direction: column; height: 100%; }
.gg-home .gg-card > .vc_column-inner > .wpb_wrapper { display: flex; flex-direction: column; height: 100%; }
.gg-home .gg-card--corp { background: linear-gradient(155deg, #101A38 0%, #16264F 100%); border: 1px solid rgba(127,169,245,.22); }
.gg-home .gg-card--corp:hover { transform: translateY(-6px); box-shadow: 0 34px 70px -30px rgba(77,141,240,.45); }
.gg-home .gg-card--priv { background: linear-gradient(155deg, #1B1033 0%, #2B1852 100%); border: 1px solid rgba(168,85,247,.35); }
.gg-home .gg-card--priv:hover { transform: translateY(-6px); box-shadow: 0 34px 70px -30px rgba(168,85,247,.55); }
/* photo top */
.gg-home .gg-card .img-with-aniamtion-wrap { height: 300px; overflow: hidden; flex: none; position: relative; max-width: none !important; margin: 0 !important; width: 100% !important; }
.gg-home .gg-card .img-with-aniamtion-wrap .inner, .gg-home .gg-card .hover-wrap, .gg-home .gg-card .hover-wrap-inner { height: 100%; width: 100% !important; margin: 0 !important; }
.gg-home .gg-card .img-with-aniamtion-wrap img { width: 100% !important; height: 100% !important; object-fit: cover; display: block; max-width: none !important; }
.gg-home .gg-card--corp .img-with-aniamtion-wrap::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(16,26,56,.05) 35%, #101A38 100%); }
.gg-home .gg-card--priv .img-with-aniamtion-wrap::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(27,16,51,.05) 35%, #1B1033 100%); }
/* floating category badge (vc_column_text wrapper) */
.gg-home .gg-card__badge { position: absolute; top: 14px; left: 14px; z-index: 3; margin: 0 !important; }
.gg-home .gg-card__badge p {
  margin: 0; display: inline-flex; align-items: center; background: rgba(10,10,16,.72); backdrop-filter: blur(8px);
  font-weight: 700; font-size: .78rem; letter-spacing: .1em; text-transform: uppercase;
  padding: 8px 14px !important; border-radius: 999px; line-height: 1;
}
.gg-home .gg-card--corp .gg-card__badge p { color: var(--gg-blue-pl); border: 1px solid rgba(127,169,245,.35); }
.gg-home .gg-card--priv .gg-card__badge p { color: var(--gg-purple-pl); border: 1px solid rgba(168,85,247,.45); }
/* body */
.gg-home .gg-card__body { padding: 24px 34px 36px; display: flex; flex-direction: column; gap: 18px; flex: 1; }
.gg-home .gg-card__title { font-family: var(--gg-sora); font-weight: 800; font-size: 1.7rem; letter-spacing: -.02em; margin: 4px 0 0 !important; line-height: 1.15; color: var(--gg-text); }
.gg-home .gg-card__text { font-size: 1rem; margin: 0; max-width: 46ch; }
.gg-home .gg-card--corp .gg-card__text p { color: #BCC5DE; margin: 0; }
.gg-home .gg-card--priv .gg-card__text p { color: #CDC2E4; margin: 0; }
/* chips */
.gg-home .gg-chips { display: flex; flex-wrap: wrap; gap: 9px; margin-top: 6px; }
.gg-home .gg-chip { display: inline-flex; align-items: center; background: rgba(255,255,255,.07); border: 1px solid rgba(255,255,255,.13); padding: 8px 14px; border-radius: 999px; font-weight: 600; font-size: .85rem; color: #DDE4F5; line-height: 1.2; }
/* kids note pill */
.gg-home .gg-card__note { margin: 4px 0 0 !important; }
.gg-home .gg-card__note p {
  display: flex; align-items: center; justify-content: center; text-align: center; gap: 10px; margin: 0;
  background: rgba(10,10,16,.45); border: 1px solid rgba(255,255,255,.1); border-radius: 16px;
  padding: 12px 16px !important; font-size: .88rem; color: #CDC2E4; font-weight: 600; line-height: 1.35;
}
.gg-home .gg-card__note p::before { content: "🎈"; line-height: 1; }
/* arrow links inside cards */
.gg-home .gg-card .nectar-button.gg-link { margin-top: 10px !important; align-self: flex-start; }

/* public & community slim band */
.gg-home .gg-public { margin-top: 24px !important; }
.gg-home .gg-public > .vc_column-inner { padding: 0 !important; }
.gg-home .gg-public > .vc_column-inner > .wpb_wrapper {
  border-radius: 28px; background: #10111A; border: 1px solid rgba(255,255,255,.09);
  padding: 30px 36px; display: flex; flex-wrap: wrap; align-items: center; gap: 22px;
  transition: border-color .2s ease;
}
.gg-home .gg-public:hover > .vc_column-inner > .wpb_wrapper { border-color: rgba(255,255,255,.22); }
.gg-home .gg-public .gg-feature { flex: 1 1 380px; min-width: 280px; background: none; border: none; padding: 0; display: flex; gap: 22px; align-items: center; }
.gg-home .gg-public .gg-feature__icon {
  width: 52px; height: 52px; border-radius: 16px; flex: none;
  background: linear-gradient(135deg, rgba(77,141,240,.2), rgba(168,85,247,.25));
  display: grid; place-items: center; color: var(--gg-body-2);
}
.gg-home .gg-public .gg-feature__title { font-family: var(--gg-sora); font-weight: 800; font-size: 1.3rem; letter-spacing: -.01em; color: var(--gg-text); display: block; margin-bottom: 4px; }
.gg-home .gg-public .gg-feature__text { color: var(--gg-body); font-size: .98rem; }
.gg-home .gg-public .nectar-button.gg-btn--ghost { font-size: .95rem !important; padding: .8em 1.5em !important; }

/* =========================================================================
   LINE-UP (6 image service cards, 3×2) — bg photo + readability gradient + caption
   ========================================================================= */
.gg-home .gg-lineup__grid .row_col_wrap_12_inner { display: grid; grid-template-columns: repeat(3, 1fr); gap: 22px; }
.gg-home .gg-lineup__grid .row_col_wrap_12_inner > .wpb_column { width: auto; float: none; margin: 0; min-width: 0; }
.gg-home .gg-svc.wpb_column { padding-left: 0 !important; padding-right: 0 !important; }
/* the card: fixed (square-ish) height box, image cover-fills it, caption pinned bottom */
.gg-home .gg-svc > .vc_column-inner { position: relative; height: clamp(290px, 30vw, 400px); border-radius: 22px; overflow: hidden; padding: 0 !important; }
.gg-home .gg-svc > .vc_column-inner::after { content: ""; position: absolute; inset: 0; z-index: 1; pointer-events: none;
  background: linear-gradient(180deg, rgba(8,8,14,.10) 0%, rgba(8,8,14,.16) 42%, rgba(8,8,14,.62) 72%, rgba(8,8,14,.92) 100%); }
/* image_with_animation nests wrap>hover-wrap>hover-wrap-inner>img; absolute-fill the box.
   wpb_wrapper stays position:static so the absolute wrap escapes to .vc_column-inner. */
.gg-home .gg-svc .img-with-aniamtion-wrap { position: absolute !important; inset: 0; margin: 0 !important; z-index: 0; }
.gg-home .gg-svc .img-with-aniamtion-wrap, .gg-home .gg-svc .hover-wrap, .gg-home .gg-svc .hover-wrap-inner { width: 100% !important; height: 100% !important; }
.gg-home .gg-svc img.gg-svc__img { width: 100% !important; height: 100% !important; object-fit: cover; transition: transform .7s cubic-bezier(.2,.7,.2,1); }
.gg-home .gg-svc:hover img.gg-svc__img { transform: scale(1.07); }
.gg-home .gg-svc > .vc_column-inner > .wpb_wrapper { position: static; height: 100%; display: flex; flex-direction: column; justify-content: flex-end; padding: clamp(20px, 2vw, 26px); box-sizing: border-box; }
.gg-home .gg-svc .gg-svc__cap { position: relative; z-index: 2; margin: 0 !important; max-width: none; }
.gg-home .gg-svc .gg-svc__cap .gg-title { font-family: var(--gg-sora); font-weight: 800; font-size: clamp(1.15rem, 1.5vw, 1.4rem); line-height: 1.15; color: #fff; margin: 0; }
.gg-home .gg-svc .gg-svc__text { position: relative; z-index: 2; margin: 7px 0 0 !important; color: rgba(242,243,250,.86); font-size: .92rem; line-height: 1.5; }

/* ---- responsive: logo slider / accreditations / service cards ---- */
@media only screen and (max-width: 999px) {
  .gg-home .gg-lineup__grid .row_col_wrap_12_inner { grid-template-columns: repeat(2, 1fr); }
  .gg-home .gg-svc > .vc_column-inner { height: clamp(260px, 42vw, 340px); }
}
@media only screen and (max-width: 690px) {
  .gg-home .gg-lineup__grid .row_col_wrap_12_inner { grid-template-columns: 1fr; gap: 16px; }
  .gg-home .gg-svc > .vc_column-inner { height: 220px; }
  .gg-home .gg-logos .img-with-aniamtion-wrap { height: 68px; min-width: 122px; padding: 11px 18px; margin: 0 8px; }
  .gg-home .gg-logos img.gg-logos__logo { max-height: 44px; max-width: 118px; }
  .gg-home .gg-accred .img-with-aniamtion-wrap { height: 104px; padding: 16px 24px; }
  .gg-home .gg-accred img.gg-accred__logo { max-height: 72px; max-width: 180px; }
}

/* =========================================================================
   ABOUT (.gg-about)
   ========================================================================= */
.gg-home .gg-about__grid .row_col_wrap_12_inner { display: flex; flex-wrap: wrap; gap: 56px; align-items: center; }
.gg-home .gg-about__grid .row_col_wrap_12_inner > .wpb_column { float: none; margin: 0; min-width: 300px; width: auto; }
.gg-home .gg-about__media { flex: .9 1 380px; position: relative; }
.gg-home .gg-about__content { flex: 1.1 1 440px; min-width: 320px; }
.gg-home .gg-about__media .vc_column-inner { position: relative; padding: 0 !important; }
.gg-home .gg-about__media .vc_column-inner::before {
  content: ""; position: absolute; inset: -24px; border-radius: 36px; pointer-events: none;
  background: radial-gradient(circle at 30% 70%, rgba(168,85,247,.18), transparent 70%);
}
.gg-home .gg-about__media .img-with-aniamtion-wrap {
  position: relative; border-radius: 30px; overflow: hidden; max-width: none !important; margin: 0;
  box-shadow: 0 40px 90px -40px rgba(0,0,0,.9), 0 0 0 1px rgba(255,255,255,.09);
  aspect-ratio: 5/5.6; background: var(--gg-card);
}
.gg-home .gg-about__media .inner, .gg-home .gg-about__media .hover-wrap, .gg-home .gg-about__media .hover-wrap-inner { height: 100%; width: 100%; }
.gg-home .gg-about__media img { width: 100% !important; height: 100% !important; object-fit: cover; display: block; max-width: none !important; }
.gg-home .gg-about__content .gg-head { margin-bottom: 0; }
.gg-home .gg-about__content .gg-title { font-size: clamp(1.9rem, 3.4vw, 2.7rem); line-height: 1.12; }
.gg-home .gg-about__lead { color: var(--gg-body); font-size: 1.08rem; margin: 10px 0 26px !important; }
.gg-home .gg-about__feats .wpb_wrapper { display: flex; flex-direction: column; gap: 18px; }
.gg-home .gg-feature--row { display: flex; gap: 16px; align-items: flex-start; }
.gg-home .gg-feature--row .gg-feature__icon { flex: none; width: 48px; height: 48px; border-radius: 14px; display: grid; place-items: center; }
.gg-home .gg-about__feats > .wpb_wrapper > div:nth-child(odd) .gg-feature__icon,
.gg-home .gg-feature--row:nth-of-type(odd) .gg-feature__icon { background: rgba(77,141,240,.14); color: var(--gg-blue-lt); }
.gg-home .gg-about__feats > .wpb_wrapper > div:nth-child(even) .gg-feature__icon,
.gg-home .gg-feature--row:nth-of-type(even) .gg-feature__icon { background: rgba(168,85,247,.15); color: var(--gg-purple-lt); }
.gg-home .gg-feature--row .gg-feature__title { font-family: var(--gg-sora); font-weight: 700; font-size: 1.1rem; margin: 0 0 3px; color: var(--gg-text); display: block; }
.gg-home .gg-feature--row .gg-feature__text { color: var(--gg-body); font-size: .95rem; }
.gg-home .gg-about__content .nectar-button.gg-btn--ghost { margin-top: 30px !important; font-size: 1rem !important; padding: .85em 1.6em !important; }

/* =========================================================================
   PORTFOLIO (.gg-pf)
   ========================================================================= */
.gg-home .gg-pf__head .gg-head { margin-bottom: 0; max-width: 560px; }
.gg-home .gg-pf__grid .row_col_wrap_12_inner { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 20px; }
.gg-home .gg-pf__grid .row_col_wrap_12_inner > .wpb_column { width: auto; float: none; margin: 0; min-width: 0; }
.gg-home .gg-pf-card { position: relative; border-radius: 24px; overflow: hidden; background: var(--gg-card); border: 1px solid rgba(255,255,255,.09); transition: transform .22s ease, border-color .22s ease; height: 100%; }
.gg-home .gg-pf-card > .vc_column-inner { padding: 0 !important; }
.gg-home .gg-pf__grid .wpb_column:nth-child(odd) .gg-pf-card:hover { transform: translateY(-6px); border-color: rgba(127,169,245,.5); }
.gg-home .gg-pf__grid .wpb_column:nth-child(even) .gg-pf-card:hover { transform: translateY(-6px); border-color: rgba(168,85,247,.55); }
.gg-home .gg-pf-card .img-with-aniamtion-wrap { aspect-ratio: 4/5; overflow: hidden; margin: 0 !important; max-width: none !important; width: 100% !important; }
.gg-home .gg-pf-card .inner, .gg-home .gg-pf-card .hover-wrap, .gg-home .gg-pf-card .hover-wrap-inner { height: 100%; width: 100% !important; }
.gg-home .gg-pf-card img { width: 100% !important; height: 100% !important; object-fit: cover; display: block; max-width: none !important; transition: transform .4s ease; }
.gg-home .gg-pf-card:hover img { transform: scale(1.04); }
.gg-home .gg-pf-card .gg-card__badge p { font-size: .74rem; letter-spacing: .08em; padding: 7px 12px; background: rgba(10,10,16,.78); }
.gg-home .gg-pf__grid .wpb_column:nth-child(odd) .gg-card__badge p { color: var(--gg-blue-pl); border: 1px solid rgba(127,169,245,.35); }
.gg-home .gg-pf__grid .wpb_column:nth-child(even) .gg-card__badge p { color: #E9A7FF; border: 1px solid rgba(168,85,247,.45); }
.gg-home .gg-pf-card__cap { padding: 16px 18px !important; margin: 0 !important; }
.gg-home .gg-pf-card__cap p { font-family: var(--gg-sora); font-weight: 700; font-size: .98rem; color: var(--gg-text); margin: 0; }

/* =========================================================================
   TESTIMONIALS (.gg-quotes)
   ========================================================================= */
.gg-home .gg-quotes__grid .row_col_wrap_12_inner { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 20px; align-items: stretch; }
.gg-home .gg-quotes__grid .row_col_wrap_12_inner > .wpb_column { width: auto; float: none; margin: 0; min-width: 0; }
.gg-home .gg-quotes__grid .wpb_column > .vc_column-inner { padding: 0 !important; height: 100%; }
.gg-home .gg-quotes__grid .wpb_column > .vc_column-inner > .wpb_wrapper { height: 100%; }
.gg-home .gg-quote { margin: 0; background: var(--gg-card); border-radius: 24px; padding: 30px 28px; display: flex; flex-direction: column; gap: 16px; height: 100%; }
.gg-home .gg-quotes__grid .wpb_column:nth-child(1) .gg-quote { border: 1px solid rgba(127,169,245,.28); }
.gg-home .gg-quotes__grid .wpb_column:nth-child(2) .gg-quote { border: 1px solid rgba(255,255,255,.09); }
.gg-home .gg-quotes__grid .wpb_column:nth-child(3) .gg-quote { border: 1px solid rgba(168,85,247,.3); }
.gg-home .gg-quote__stars { display: flex; gap: 4px; color: var(--gg-gold); font-size: 15px; letter-spacing: 2px; }
.gg-home .gg-quote__text { margin: 0; font-size: 1rem; color: var(--gg-body-2); line-height: 1.65; flex: 1; border: none; padding: 0; }
.gg-home .gg-quote figcaption { font-family: var(--gg-sora); font-weight: 700; font-size: .92rem; }
.gg-home .gg-quote__name--blue { color: var(--gg-blue-pl); }
.gg-home .gg-quote__name--pink { color: var(--gg-purple-pl); }
.gg-home .gg-quote__role { display: block; color: var(--gg-mute); font-weight: 500; font-size: .82rem; font-family: var(--gg-jak); }

/* =========================================================================
   BOOK / CONTACT (.gg-book) — gradient panel, contact pills, CF7 form card
   ========================================================================= */
.gg-home .gg-book__panel { position: relative; overflow: hidden; border-radius: 36px; background: linear-gradient(125deg, #16264F 0%, #2B1852 78%); border: 1px solid rgba(255,255,255,.1); padding: clamp(32px, 5vw, 60px); }
.gg-home .gg-book__panel::before { content: ""; position: absolute; width: 340px; height: 340px; border-radius: 50%; background: rgba(255,255,255,.06); top: -140px; right: -90px; pointer-events: none; }
.gg-home .gg-book__panel .row_col_wrap_12_inner { display: flex; flex-wrap: wrap; gap: 44px; align-items: flex-start; position: relative; z-index: 1; }
.gg-home .gg-book__panel .row_col_wrap_12_inner > .wpb_column { float: none; margin: 0; min-width: 300px; }
.gg-home .gg-book__left { flex: 1 1 400px; }
.gg-home .gg-book__right { flex: 1 1 440px; min-width: 320px; }
.gg-home .gg-book__left .gg-eyebrow { color: #C2CEF4; }
.gg-home .gg-book__left .gg-eyebrow::before { background: #C2CEF4; box-shadow: none; }
.gg-home .gg-book__left .gg-title { font-size: clamp(1.9rem, 3.4vw, 2.7rem); line-height: 1.12; }
.gg-home .gg-book__sub { color: var(--gg-body-2); font-size: 1.08rem; margin: 12px 0 28px !important; max-width: 44ch; }
.gg-home .gg-book__pills .wpb_wrapper { display: flex; flex-direction: column; gap: 14px; max-width: 420px; }
.gg-home .gg-pill { display: flex; align-items: center; gap: 12px; text-decoration: none; font-weight: 700; padding: 15px 22px; border-radius: 16px; transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease; }
.gg-home .gg-pill__ic { display: grid; place-items: center; flex: none; }
.gg-home .gg-pill--whatsapp { background: var(--gg-wa); color: #06281A !important; font-weight: 800; }
.gg-home .gg-pill--whatsapp:hover { transform: translateY(-2px); box-shadow: 0 18px 40px -14px rgba(37,211,102,.65); }
.gg-home .gg-pill--phone, .gg-home .gg-pill--email { background: rgba(255,255,255,.08); border: 1px solid rgba(255,255,255,.16); color: var(--gg-text) !important; }
.gg-home .gg-pill--phone:hover, .gg-home .gg-pill--email:hover { border-color: rgba(255,255,255,.4); }
/* form card (CF7 inside a wrapper-class text block) */
.gg-home .gg-book__form { background: rgba(10,10,16,.55); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); border: 1px solid rgba(255,255,255,.12); border-radius: 24px; padding: 28px; }
.gg-home .gg-book__form .wpcf7-form { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.gg-home .gg-book__form .wpcf7-form > p { margin: 0; display: contents; }
.gg-home .gg-book__form label { display: flex; flex-direction: column; gap: 6px; font-weight: 600; font-size: .82rem; color: var(--gg-body-2); margin: 0; }
.gg-home .gg-book__form .gg-w { grid-column: 1 / -1; }
.gg-home .gg-book__form .wpcf7-form-control-wrap { display: block; }
.gg-home .gg-book__form input.wpcf7-form-control:not([type="submit"]), .gg-home .gg-book__form textarea.wpcf7-form-control {
  width: 100%; background: var(--gg-ink-2); border: 1px solid rgba(255,255,255,.12); border-radius: 12px;
  padding: 12px 14px; color: var(--gg-text); font-family: var(--gg-jak); font-size: .95rem; font-weight: 500;
  outline: none; box-shadow: none; transition: border-color .18s ease;
}
.gg-home .gg-book__form input.wpcf7-form-control:focus, .gg-home .gg-book__form textarea.wpcf7-form-control:focus { border-color: var(--gg-accent); }
.gg-home .gg-book__form textarea.wpcf7-form-control { resize: vertical; min-height: 116px; }
.gg-home .gg-book__form input.wpcf7-submit {
  grid-column: 1 / -1; width: 100%; border: none; cursor: pointer; background: var(--gg-accent); color: #fff;
  font-family: var(--gg-jak); font-weight: 800; font-size: 1rem; padding: 15px; border-radius: 14px;
  box-shadow: 0 14px 32px -12px rgba(168,85,247,.9); transition: transform .18s ease, box-shadow .18s ease;
}
.gg-home .gg-book__form input.wpcf7-submit:hover { transform: translateY(-2px); box-shadow: 0 20px 40px -12px var(--gg-accent); }
.gg-home .gg-book__form .gg-form-note { grid-column: 1 / -1; margin: 0; font-size: .78rem; color: var(--gg-mute); text-align: center; }
.gg-home .gg-book__form .wpcf7-not-valid-tip { font-size: .78rem; color: #FF9EB3; margin-top: 4px; }
.gg-home .gg-book__form .wpcf7-response-output { grid-column: 1 / -1; margin: 0 !important; border: 1px solid rgba(255,255,255,.2) !important; border-radius: 12px; padding: 10px 14px !important; font-size: .85rem; color: var(--gg-body-2); }

/* =========================================================================
   FOOTER (Salient footer widgets skinned)
   ========================================================================= */
.gg-site #footer-outer { background: var(--gg-foot); color: var(--gg-mute); border-top: 1px solid rgba(255,255,255,.08); }
.gg-site #footer-outer #footer-widgets { padding: 68px 0 30px; }
.gg-site #footer-outer #footer-widgets .container { max-width: 1240px; padding-left: 28px !important; padding-right: 28px !important; }
.gg-site #footer-outer #footer-widgets .row { padding: 0 !important; }
.gg-site #footer-outer .widget { padding: 0; margin-bottom: 0; }
.gg-site .gg-foot__brand { display: flex; align-items: center; gap: 11px; text-decoration: none; }
.gg-site .gg-foot__logo { width: 42px; height: 42px; border-radius: 50%; background: #fff; display: grid; place-items: center; overflow: hidden; flex: none; }
.gg-site .gg-foot__logo img { width: 84%; height: 84%; object-fit: contain; display: block; }
.gg-site .gg-foot__name { display: flex; flex-direction: column; line-height: 1; }
.gg-site .gg-foot__name b { font-family: var(--gg-sora); font-weight: 800; font-size: 1.14rem; letter-spacing: -.02em; color: #fff; }
.gg-site .gg-foot__name span { font-size: .64rem; letter-spacing: .22em; text-transform: uppercase; color: var(--gg-mute); font-weight: 600; margin-top: 3px; }
.gg-site .gg-foot__blurb { color: var(--gg-mute); font-size: .95rem; max-width: 34ch; margin: 18px 0 0; }
.gg-site .gg-foot__social { display: flex; gap: 10px; margin-top: 20px; }
.gg-site .gg-foot__social a { width: 40px; height: 40px; border-radius: 11px; background: rgba(255,255,255,.08); display: grid; place-items: center; color: var(--gg-body-2); transition: background .15s; }
.gg-site .gg-foot__social a:hover { background: var(--gg-accent); color: #fff; }
.gg-site .gg-foot__social a.gg-soc-wa:hover { background: #1FA855; }
.gg-site #footer-outer #footer-widgets .widget h4, .gg-site .gg-foot__h {
  color: #fff !important; font-family: var(--gg-sora) !important; font-weight: 700 !important; font-size: .9rem !important;
  letter-spacing: .06em; text-transform: uppercase; margin: 0 0 18px !important;
}
.gg-site #footer-outer .widget_nav_menu ul { display: flex; flex-direction: column; gap: 11px; margin: 0; }
.gg-site #footer-outer .widget_nav_menu li { margin: 0; padding: 0; }
.gg-site #footer-outer .widget_nav_menu li a { color: var(--gg-mute); font-size: .95rem; text-decoration: none; transition: color .15s; padding: 0; border: none; }
.gg-site #footer-outer .widget_nav_menu li a:hover { color: #fff; }
.gg-site .gg-foot__touch { display: flex; flex-direction: column; gap: 13px; color: var(--gg-mute); font-size: .95rem; }
.gg-site .gg-foot__touch a, .gg-site .gg-foot__touch span { display: flex; gap: 11px; align-items: flex-start; color: var(--gg-mute); text-decoration: none; transition: color .15s; }
.gg-site .gg-foot__touch a:hover { color: #fff; }
.gg-site .gg-foot__touch svg { flex: none; margin-top: 3px; color: var(--gg-blue-lt); }
/* address text white (client request), on its own two lines; pin icon keeps the brand blue */
.gg-site .gg-foot__touch .gg-foot__addr span { color: #fff; line-height: 1.55; }
.gg-site #footer-outer #copyright { background: var(--gg-foot); border-top: 1px solid rgba(255,255,255,.1); padding: 22px 0; }
.gg-site #footer-outer #copyright .container { max-width: 1240px; display: flex; justify-content: center; gap: 0; flex-wrap: wrap; text-align: center; }
.gg-site #footer-outer #copyright .container .col { flex: 0 1 auto; } /* the old 2nd column is now empty (width 0); zero gap keeps the text dead-centre */
.gg-site #footer-outer #copyright p, .gg-site #footer-outer #copyright .col { color: var(--gg-faint); font-size: .84rem; margin: 0; width: auto; float: none; }
/* "Safetech LTD" credit link — same colour/size as the copyright text, subtle underline + hover */
.gg-site #footer-outer #copyright .gg-copy-link { color: inherit; text-decoration: underline; text-underline-offset: 2px; text-decoration-color: rgba(138,144,172,.5); transition: color .3s ease, text-decoration-color .3s ease; }
.gg-site #footer-outer #copyright .gg-copy-link:hover { color: var(--gg-purple-lt); text-decoration-color: var(--gg-purple-lt); }

/* =========================================================================
   RESPONSIVE
   ========================================================================= */
@media only screen and (max-width: 999px) {
  .gg-home .gg-about__grid .row_col_wrap_12_inner { gap: 40px; }
  .gg-home .gg-book__panel .row_col_wrap_12_inner { gap: 32px; }
}
@media only screen and (max-width: 690px) {
  .gg-home .gg-section { padding-left: 18px; padding-right: 18px; }
  .gg-home .gg-hero { min-height: 560px; }
  .gg-home .gg-hero .gg-title { font-size: clamp(2.3rem, 9vw, 2.9rem); }
  .gg-home .gg-hero__btns .vc_column-inner { flex-direction: column; align-items: stretch; }
  .gg-home .gg-hero__btns .nectar-button.gg-btn { justify-content: center; width: 100%; }
  .gg-home .gg-hero__chip { margin-top: 30px; }
  .gg-home .gg-card__body { padding: 20px 22px 28px; }
  .gg-home .gg-public > .vc_column-inner > .wpb_wrapper { padding: 24px 22px; }
  .gg-home .gg-book__form .wpcf7-form { grid-template-columns: 1fr; }
  .gg-home .gg-book__panel { border-radius: 24px; }
  .gg-site #footer-outer #footer-widgets .col { margin-bottom: 34px; }
  .gg-site #footer-outer #copyright .container { justify-content: center; text-align: center; }
}

/* header logo lockup: round badge image + wordmark (pseudo-elements on #logo) */
.gg-site #header-outer #logo { position: relative; display: flex; align-items: center; padding-right: 118px !important; }
.gg-site #header-outer #logo img { border-radius: 50%; background: #fff; padding: 3px; box-shadow: 0 6px 18px -6px rgba(168,85,247,.7); }
.gg-site #header-outer #logo::after {
  content: "Glow & Go"; position: absolute; left: 57px; top: 4px;
  font-family: var(--gg-sora); font-weight: 800; font-size: 1.14rem; letter-spacing: -.02em; color: #fff; line-height: 1;
}
.gg-site #header-outer #logo::before {
  content: "TEAM LTD"; position: absolute; left: 58px; bottom: 6px;
  font-size: .64rem; letter-spacing: .22em; text-transform: uppercase; color: var(--gg-body); font-weight: 600; line-height: 1;
}

/* =========================================================================
   STRUCTURE FIXES — card/about/book children sit DIRECTLY in their columns
   (WPBakery cannot nest vc_row_inner twice), so layout lives on the wrappers.
   ========================================================================= */
/* audience cards: column wrapper = flex column; image full-bleeds the padding */
.gg-home .gg-card > .vc_column-inner > .wpb_wrapper { padding: 0 34px 36px; gap: 18px; }
.gg-home .gg-card .img-with-aniamtion-wrap { margin: 0 -34px 6px !important; width: calc(100% + 68px) !important; }
.gg-home .gg-card .gg-head { margin: 4px 0 0; max-width: none; }
.gg-home .gg-card .gg-head .gg-title { font-size: 1.7rem; line-height: 1.15; margin: 0; }
.gg-home .gg-card .nectar-button.gg-link { margin-top: 10px !important; }
/* about: features are simple siblings; explicit icon tones */
.gg-home .gg-feature--row { margin: 0 0 18px; }
.gg-home .gg-i-blue .gg-feature__icon, .gg-home .gg-feature--row.gg-i-blue .gg-feature__icon { background: rgba(77,141,240,.14) !important; color: var(--gg-blue-lt) !important; }
.gg-home .gg-i-purple .gg-feature__icon, .gg-home .gg-feature--row.gg-i-purple .gg-feature__icon { background: rgba(168,85,247,.15) !important; color: var(--gg-purple-lt) !important; }
.gg-home .gg-about__content .gg-about__lead { margin-bottom: 26px !important; }
/* book: pills are simple siblings */
.gg-home .gg-book__left .gg-pill { margin-bottom: 14px; max-width: 420px; }

/* hero chip: flex the column wrapper inside the inner row; cap the row width */
.gg-home .gg-hero__chip { max-width: 540px; margin-top: 42px !important; background: rgba(10,10,16,.55); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); border: 1px solid rgba(255,255,255,.14); border-radius: 18px; padding: 15px 20px !important; display: block; }
.gg-home .gg-hero__chip .vc_column-inner { padding: 0 !important; }
.gg-home .gg-hero__chip .wpb_wrapper { display: flex; align-items: center; gap: 14px; }
.gg-home .gg-hero__chip .row-bg-wrap { display: none !important; }
.gg-home .gg-hero__chip .gg-hero__chip-text { flex: 1; min-width: 0; }
.gg-home .gg-hero__chip .gg-hero__chip-text p { margin: 0; }

/* header: solid near-black (translucent header over light page base read grey) */
.gg-site #header-outer, .gg-site #header-outer.fixed, .gg-site #header-outer[data-permanent-transparent] {
  background: rgba(10,10,16,.97) !important;
}
/* hero overlays: force above the bg image */
.gg-home .gg-hero .row-bg-wrap { position: absolute; inset: 0; }
.gg-home .gg-hero .row-bg-wrap:before, .gg-home .gg-hero .row-bg-wrap:after { z-index: 2; }

/* polish round 2 */
/* kill Salient's default blockquote accent border in testimonial cards */
.gg-home .gg-quote blockquote, .gg-home .gg-quote__text { border: 0 !important; border-left: 0 !important; padding: 0 !important; margin: 0 !important; }
/* CF7 note: keep as a real block spanning the grid (display:contents would dissolve it) */
.gg-home .gg-book__form .wpcf7-form > p:not(:has(.gg-form-note)) { display: contents; }
.gg-home .gg-book__form p.gg-form-note, .gg-home .gg-book__form .gg-form-note { display: block; grid-column: 1 / -1; }
/* footer void safety: kill any vh-based sticky-footer sizing */
.gg-site .container-wrap { min-height: 0 !important; }
.gg-site #footer-outer { margin-top: 110px; }
.gg-home #footer-outer { margin-top: 0; }

/* final nits */
.gg-home .gg-book__form .wpcf7-form > p { display: block; }
.gg-home .gg-book__form .wpcf7-form > p:not(.gg-form-note) { display: contents; }
.gg-home .gg-book__form p.gg-form-note { display: block !important; grid-column: 1 / -1 !important; text-align: center; }
.gg-site #footer-outer #copyright p { display: flex; justify-content: center; gap: 16px; flex-wrap: wrap; width: 100%; }
/* header wordmark: never wrap */
.gg-site #header-outer #logo::after, .gg-site #header-outer #logo::before { white-space: nowrap; }
@media only screen and (max-width: 690px) {
  .gg-site #header-outer #logo::after { font-size: 1rem; top: 6px; }
  .gg-site #header-outer #logo { padding-right: 96px !important; }
}

/* =========================================================================
   REFINEMENT ROUND (client feedback) — hero bg, card alignment/full-bleed
   images, portfolio head, testimonials, form, footer responsive, gallery.
   ========================================================================= */

/* ---- HERO: crop like the design (center 30%) on Salient's bg layer ---- */
.gg-home .gg-hero .row-bg { background-position: center 30% !important; }
.gg-home .gg-hero .row-bg.using-image { background-size: cover !important; }
.gg-home .gg-hero { min-height: 760px; height: auto; }
.gg-home .gg-hero .gg-hero__sub p { margin: 0; }

/* ---- AUDIENCE CARDS: deterministic full-bleed images + equal heights ----
   Body layout = flex column on the wrapper with NO horizontal padding; every
   text child carries the 34px gutter itself, so images meet the card edges. */
.gg-home .gg-card > .vc_column-inner > .wpb_wrapper { padding: 0 0 36px; gap: 18px; }
.gg-home .gg-card .img-with-aniamtion-wrap { margin: 0 0 6px !important; width: 100% !important; }
.gg-home .gg-card .gg-head,
.gg-home .gg-card .gg-card__text,
.gg-home .gg-card .gg-chips,
.gg-home .gg-card .gg-card__note,
.gg-home .gg-card .nectar-button.gg-link { margin-left: 34px !important; margin-right: 34px !important; }
.gg-home .gg-aud__grid .row_col_wrap_12_inner { align-items: stretch; }
.gg-home .gg-aud__grid .row_col_wrap_12_inner > .wpb_column { display: flex; }
.gg-home .gg-card { width: 100%; }
.gg-home .gg-card .nectar-button.gg-link { margin-top: auto !important; align-self: flex-start; }

/* (portfolio head rules consolidated in the single-column block further down) */

/* ---- GALLERY (new section, client's live-site photos) ---- */
.gg-home .gg-gal__grid .row_col_wrap_12_inner { display: grid; grid-template-columns: repeat(4, 1fr); gap: 20px; }
.gg-home .gg-gal__grid .row_col_wrap_12_inner > .wpb_column { width: auto; float: none; margin: 0; min-width: 0; }
.gg-home .gg-gal__tile > .vc_column-inner { padding: 0 !important; }
.gg-home .gg-gal__tile .img-with-aniamtion-wrap { aspect-ratio: 1; overflow: hidden; border-radius: 24px; border: 1px solid rgba(255,255,255,.09); background: var(--gg-card); margin: 0 !important; max-width: none !important; width: 100% !important; transition: transform .22s ease, border-color .22s ease; }
.gg-home .gg-gal__tile .inner, .gg-home .gg-gal__tile .hover-wrap, .gg-home .gg-gal__tile .hover-wrap-inner { height: 100%; width: 100% !important; margin: 0 !important; }
.gg-home .gg-gal__tile img { width: 100% !important; height: 100% !important; object-fit: cover; display: block; max-width: none !important; transition: transform .4s ease; }
.gg-home .gg-gal__grid .wpb_column:hover .img-with-aniamtion-wrap { transform: translateY(-6px); }
.gg-home .gg-gal__grid .wpb_column:nth-child(odd):hover .img-with-aniamtion-wrap { border-color: rgba(127,169,245,.5); }
.gg-home .gg-gal__grid .wpb_column:nth-child(even):hover .img-with-aniamtion-wrap { border-color: rgba(168,85,247,.55); }
.gg-home .gg-gal__grid .wpb_column:hover img { transform: scale(1.05); }

/* ---- TESTIMONIALS: reference polish ---- */
.gg-home .gg-quotes .gg-head { margin-bottom: 48px; }
.gg-home .gg-quote { padding: 30px 28px; gap: 16px; border-radius: 24px; }
.gg-home .gg-quote__stars { display: flex; gap: 4px; align-items: center; }
.gg-home .gg-quote__stars svg { display: block; }
.gg-home .gg-quote__text { font-size: 1rem; color: var(--gg-body-2); line-height: 1.65; }
.gg-home .gg-quote figcaption { line-height: 1.5; }
.gg-home .gg-quote__role { margin-top: 2px; }

/* ---- BOOK FORM: premium pass ---- */
.gg-home .gg-book__form { padding: 30px; border-radius: 24px; }
.gg-home .gg-book__form .wpcf7-form { gap: 16px; }
.gg-home .gg-book__form label { gap: 7px; font-size: .84rem; letter-spacing: .01em; }
.gg-home .gg-book__form input.wpcf7-form-control:not([type="submit"]), .gg-home .gg-book__form textarea.wpcf7-form-control {
  padding: 13px 15px; border-radius: 12px; font-size: .96rem;
  transition: border-color .18s ease, box-shadow .18s ease, background .18s ease;
}
.gg-home .gg-book__form input.wpcf7-form-control:focus, .gg-home .gg-book__form textarea.wpcf7-form-control:focus {
  border-color: var(--gg-accent); box-shadow: 0 0 0 3px rgba(168,85,247,.18); background: #101120;
}
.gg-home .gg-book__form input.wpcf7-submit { padding: 16px; font-size: 1.02rem; border-radius: 14px; margin-top: 2px; }
.gg-home .gg-book__form .wpcf7-spinner { position: absolute; }

/* ---- BOOK contact pills as native nectar_btn ---- */
.gg-home .gg-book__left .nectar-button.gg-pill {
  display: flex !important; width: 100%; max-width: 420px; align-items: center; justify-content: flex-start;
  gap: 12px; font-family: var(--gg-jak) !important; font-weight: 700 !important; font-size: 1rem !important;
  padding: 15px 22px !important; margin: 0 0 14px !important; border-radius: 16px !important; border: none !important;
  text-transform: none !important; letter-spacing: 0 !important; line-height: 1.3 !important;
  transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease !important;
}
.gg-home .gg-book__left .nectar-button.gg-pill:before, .gg-home .gg-book__left .nectar-button.gg-pill:after { display: none !important; }
.gg-home .gg-book__left .nectar-button.gg-pill i { font-size: 19px; line-height: 1; top: 0; }
.gg-home .nectar-button.gg-pill--whatsapp { background: #25D366 !important; }
.gg-home .nectar-button.gg-pill--whatsapp, .gg-home .nectar-button.gg-pill--whatsapp span, .gg-home .nectar-button.gg-pill--whatsapp i { color: #06281A !important; font-weight: 800 !important; }
.gg-home .nectar-button.gg-pill--whatsapp:hover { transform: translateY(-2px); box-shadow: 0 18px 40px -14px rgba(37,211,102,.65) !important; }
.gg-home .nectar-button.gg-pill--phone, .gg-home .nectar-button.gg-pill--email { background: rgba(255,255,255,.08) !important; border: 1px solid rgba(255,255,255,.16) !important; }
.gg-home .nectar-button.gg-pill--phone, .gg-home .nectar-button.gg-pill--phone span, .gg-home .nectar-button.gg-pill--phone i,
.gg-home .nectar-button.gg-pill--email, .gg-home .nectar-button.gg-pill--email span, .gg-home .nectar-button.gg-pill--email i { color: #F2F3FA !important; }
.gg-home .nectar-button.gg-pill--phone:hover, .gg-home .nectar-button.gg-pill--email:hover { border-color: rgba(255,255,255,.4) !important; }

/* ---- FOOTER: responsive copyright + column rhythm ---- */
.gg-site #footer-outer #copyright .container { align-items: center; }
@media only screen and (max-width: 690px) {
  .gg-site #footer-outer #copyright p { flex-direction: column; align-items: center; text-align: center; gap: 6px; }
  .gg-site #footer-outer #footer-widgets { padding: 48px 0 10px; }
  .gg-home .gg-gal__grid .row_col_wrap_12_inner { grid-template-columns: repeat(2, 1fr); gap: 12px; }
  .gg-home .gg-card .gg-head, .gg-home .gg-card .gg-card__text, .gg-home .gg-card .gg-chips,
  .gg-home .gg-card .gg-card__note, .gg-home .gg-card .nectar-button.gg-link { margin-left: 22px !important; margin-right: 22px !important; }
  .gg-home .gg-card > .vc_column-inner > .wpb_wrapper { padding-bottom: 28px; }
}
@media only screen and (max-width: 999px) and (min-width: 691px) {
  .gg-home .gg-gal__grid .row_col_wrap_12_inner { grid-template-columns: repeat(2, 1fr); }
}

/* audience cards: definitive equal height — force the stretch chain (no % heights on flex items) */
.gg-home .gg-aud__grid .row_col_wrap_12_inner { display: flex !important; align-items: stretch !important; }
.gg-home .gg-aud__grid .row_col_wrap_12_inner > .wpb_column.gg-card { display: flex !important; height: auto !important; align-self: stretch !important; }
.gg-home .gg-card > .vc_column-inner { display: flex !important; flex-direction: column !important; flex: 1 1 auto !important; height: auto !important; width: 100%; }
.gg-home .gg-card > .vc_column-inner > .wpb_wrapper { display: flex !important; flex-direction: column !important; flex: 1 1 auto !important; height: auto !important; }

/* pill icons: Salient positions .has-icon i absolutely — inline it, icon first */
.gg-home .gg-book__left .nectar-button.gg-pill i {
  position: static !important; transform: none !important; margin: 0 !important;
  order: -1; display: inline-flex; align-items: center; opacity: 1 !important;
  height: auto !important; width: auto !important; line-height: 1 !important;
}
.gg-home .gg-book__left .nectar-button.gg-pill span { padding: 0 !important; margin: 0 !important; }
/* testimonial quote bar: kill every Salient blockquote decoration mode */
.gg-home .gg-quote blockquote, .gg-home blockquote.gg-quote__text {
  border: none !important; border-left: none !important; box-shadow: none !important;
  background: none !important; padding: 0 !important; margin: 0 !important;
}
.gg-home .gg-quote blockquote::before, .gg-home .gg-quote blockquote::after { display: none !important; content: none !important; }
.gg-home .gg-book__left .nectar-button.gg-pill i { margin: 0 12px 0 0 !important; }

/* =========================================================================
   REFINEMENT ROUND 2 — strip above hero, heading rhythm, grids, pf head,
   hero slideshow deck, gallery lightbox.
   ========================================================================= */

/* ---- white strip above the hero: Salient's fixed-header spacer ---- */
.gg-site #header-space { background: #0A0A10 !important; }
.gg-site .container-wrap, .gg-site #ajax-content-wrap { background: #0A0A10; }

/* ---- heading ↔ description rhythm (tighter, consistent) ---- */
.gg-home .gg-head { margin-bottom: 0; }
.gg-home .gg-head__sub { margin: 12px 0 0 !important; max-width: 640px; }
/* the grid that follows a section head carries the 48px block gap */
.gg-home .gg-aud__grid, .gg-home .gg-lineup__grid, .gg-home .gg-pf__grid,
.gg-home .gg-quotes__grid, .gg-home .gg-gal__grid { margin-top: 44px !important; }
.gg-home .gg-quotes .gg-head { margin-bottom: 0; }
/* hero heading spacing unaffected */
.gg-home .gg-hero .gg-head { margin-bottom: 0; }

/* ---- grid items: neutralise Salient's span_% widths inside CSS grids ---- */
.gg-home .gg-lineup__grid .row_col_wrap_12_inner > .wpb_column,
.gg-home .gg-pf__grid .row_col_wrap_12_inner > .wpb_column,
.gg-home .gg-quotes__grid .row_col_wrap_12_inner > .wpb_column,
.gg-home .gg-gal__grid .row_col_wrap_12_inner > .wpb_column { width: 100% !important; min-width: 0; margin: 0 !important; }

/* ---- testimonials: exactly 3 across on desktop, full container width ---- */
@media only screen and (min-width: 1000px) {
  .gg-home .gg-quotes__grid .row_col_wrap_12_inner { grid-template-columns: repeat(3, 1fr) !important; }
}
@media only screen and (max-width: 999px) and (min-width: 691px) {
  .gg-home .gg-quotes__grid .row_col_wrap_12_inner { grid-template-columns: repeat(2, 1fr) !important; }
}
@media only screen and (max-width: 690px) {
  .gg-home .gg-quotes__grid .row_col_wrap_12_inner { grid-template-columns: 1fr !important; }
}

/* ---- portfolio head: heading left, link right, one row (single column now) ---- */
.gg-home .gg-pf__head { margin-bottom: 0; }
.gg-home .gg-pf__head .wpb_wrapper { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 20px; }
.gg-home .gg-pf__head .gg-head { margin: 0; max-width: 560px; }
.gg-home .gg-pf__head .nectar-button.gg-link { margin: 0 0 8px !important; }

/* ---- hero slideshow ---- */
.gg-home .gg-hero__slides { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); clip-path: inset(50%); margin: 0 !important; padding: 0 !important; }
.gg-home .gg-hero__deck { position: absolute; inset: 0; z-index: 1; }
.gg-home .gg-hero__slide { position: absolute; inset: 0; background-size: cover; background-position: 68% 30%; opacity: 0; transition: opacity 1.4s ease-in-out; will-change: opacity; }
.gg-home .gg-hero__slide.is-on { opacity: 1; }
/* overlays must sit above the deck */
.gg-home .gg-hero .row-bg-wrap:before, .gg-home .gg-hero .row-bg-wrap:after { z-index: 3; }
.gg-home .gg-hero--deck .row-bg { opacity: 0; } /* static bg hides once the deck runs (it remains the no-JS fallback) */

/* ---- audience card images: natural framing, faces safe ---- */
.gg-home .gg-card .img-with-aniamtion-wrap img { object-position: center 32%; }
.gg-home .gg-card--priv .img-with-aniamtion-wrap img { object-position: center 45%; }

/* ---- gallery lightbox ---- */
.gg-lb { position: fixed; inset: 0; z-index: 100000; display: flex; align-items: center; justify-content: center; background: rgba(10,10,16,.94); backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px); opacity: 0; pointer-events: none; transition: opacity .25s ease; }
.gg-lb.is-open { opacity: 1; pointer-events: auto; }
.gg-lb__stage { margin: 0; max-width: 90vw; max-height: 88vh; display: flex; }
.gg-lb__img { max-width: 90vw; max-height: 88vh; width: auto; height: auto; border-radius: 16px; box-shadow: 0 30px 90px rgba(0,0,0,.6), 0 0 0 1px rgba(255,255,255,.08); opacity: 0; transform: scale(.985); transition: opacity .3s ease, transform .3s ease; }
.gg-lb__img.is-in { opacity: 1; transform: scale(1); }
.gg-lb__btn { position: absolute; top: 50%; transform: translateY(-50%); width: 52px; height: 52px; border: none; border-radius: 999px; background: rgba(255,255,255,.09); color: #fff; font-size: 30px; line-height: 1; cursor: pointer; display: flex; align-items: center; justify-content: center; transition: background .18s ease, transform .18s ease; z-index: 2; }
.gg-lb__btn:hover { background: #A855F7; }
.gg-lb__prev { left: 22px; } .gg-lb__next { right: 22px; }
.gg-lb__close { top: 22px; right: 22px; transform: none; width: 46px; height: 46px; font-size: 26px; }
@media (max-width: 690px) {
  .gg-lb__prev { left: 8px; } .gg-lb__next { right: 8px; }
  .gg-lb__btn { width: 42px; height: 42px; font-size: 24px; }
  .gg-lb__img { border-radius: 10px; }
}
/* hero stacking: deck(1) < overlays(3) < content(4) */
.gg-home .gg-hero .row_col_wrap_12 { position: relative; z-index: 4; }

/* ============ round 3 refinements ============ */
/* audience cards: Salient gives top-level columns a percentage gutter as PADDING
   on the column itself (~12px @1240) — that was the residual side inset. The card
   bg sits on the column, so this padding must be zero for true edge-to-edge media. */
.gg-home .wpb_column.gg-card { padding-left: 0 !important; padding-right: 0 !important; }
/* new scene images: keep faces in frame */
.gg-home .gg-card--corp .img-with-aniamtion-wrap img { object-position: center 40%; }
.gg-home .gg-card--priv .img-with-aniamtion-wrap img { object-position: center 28%; }

/* black stripe above hero = Salient's fixed-header spacer (#header-space).
   Remove it and let the hero tuck underneath the (near-opaque) header instead. */
.gg-home #header-space { display: none !important; }
.gg-home .gg-hero { padding-top: 90px; }

/* --- per-image hero positioning (client update): reduce zoom, subject on the RIGHT ---
   4 of the 5 images are portrait selfies — cover-cropping them in a wide hero over-zooms to
   a narrow band. Instead, fit them to the hero HEIGHT (full subject, no crop) and anchor
   RIGHT, so the whole subject shows on the right while the dark overlay + headline sit on
   the left. The one landscape shot (balloon butterfly, slide 4) covers normally. Reviewed
   per image; slide order = source order [neon face, clown, henna hand, butterfly, glitter]. */
.gg-home .gg-hero__slide { background-size: auto 108%; background-repeat: no-repeat; background-position: 86% center; }
.gg-home .gg-hero__slide:nth-child(1) { background-position: 84% center; }   /* neon face (eyes down) */
.gg-home .gg-hero__slide:nth-child(2) { background-position: 88% 42%; }       /* clown — keep face + hat */
.gg-home .gg-hero__slide:nth-child(3) { background-position: 82% center; }    /* henna hand */
.gg-home .gg-hero__slide:nth-child(4) { background-size: auto 100%; background-position: 100% center; } /* butterfly (landscape) — full shape, right */
.gg-home .gg-hero__slide:nth-child(5) { background-position: 86% center; }    /* glitter face */
/* no-JS / pre-deck fallback = the row background (first image) → match the split treatment */
.gg-home .gg-hero .row-bg, .gg-home .gg-hero .row-bg.using-image { background-size: auto 108% !important; background-position: 84% center !important; background-repeat: no-repeat !important; }
/* mobile: the hero is portrait-shaped, so the portraits cover it well full-bleed (no split) */
@media only screen and (max-width: 690px) {
  .gg-home .gg-hero__slide, .gg-home .gg-hero__slide:nth-child(1), .gg-home .gg-hero__slide:nth-child(2),
  .gg-home .gg-hero__slide:nth-child(3), .gg-home .gg-hero__slide:nth-child(5) { background-size: cover; background-position: center 26%; }
  .gg-home .gg-hero .row-bg, .gg-home .gg-hero .row-bg.using-image { background-size: cover !important; background-position: center 26% !important; }
}

/* =========================================================================
   ROUND 6 — mobile header, fullscreen off-canvas menu skin, mobile rhythm
   ========================================================================= */

/* ---- off-canvas menu (Salient fullscreen-alt), brand skin ---- */
.gg-site #slide-out-widget-area.fullscreen-alt {
  background:
    radial-gradient(120% 90% at 85% -10%, rgba(168,85,247,.16) 0%, rgba(168,85,247,0) 55%),
    radial-gradient(120% 90% at 10% 110%, rgba(77,141,240,.14) 0%, rgba(77,141,240,0) 55%),
    #0A0A10;
}
.gg-site #slide-out-widget-area.fullscreen-alt .off-canvas-menu-container .menu > li > a {
  font-family: var(--gg-sora) !important; font-weight: 700 !important;
  font-size: clamp(1.6rem, 6.4vw, 2.1rem) !important; line-height: 1.2 !important;
  color: var(--gg-text) !important; letter-spacing: -.01em;
  padding: 14px 0 !important; transition: color .25s ease, opacity .25s ease;
}
.gg-site #slide-out-widget-area.fullscreen-alt .off-canvas-menu-container .menu > li > a:hover { color: var(--gg-blue-lt) !important; }
/* phone link — quieter, blue accent */
.gg-site #slide-out-widget-area.fullscreen-alt .off-canvas-menu-container .menu > li.gg-nav-phone > a {
  font-family: var(--gg-jakarta) !important; font-weight: 700 !important;
  font-size: 1.05rem !important; color: var(--gg-blue-lt) !important;
  letter-spacing: .02em; margin-top: 14px;
}
/* Book now — solid pill CTA */
.gg-site #slide-out-widget-area.fullscreen-alt .off-canvas-menu-container .menu > li.gg-nav-cta { margin-top: 18px; }
.gg-site #slide-out-widget-area.fullscreen-alt .off-canvas-menu-container .menu > li.gg-nav-cta > a {
  display: inline-block !important; background: var(--gg-accent) !important; color: #fff !important;
  font-family: var(--gg-jakarta) !important; font-weight: 700 !important; font-size: 1.05rem !important;
  padding: 15px 44px !important; border-radius: 999px !important; line-height: 1 !important;
  box-shadow: 0 16px 34px -12px rgba(168,85,247,.85);
}
/* close (X) — round ghost button, brand hover */
.gg-site #slide-out-widget-area.fullscreen-alt .slide_out_area_close {
  top: 22px; right: 24px;
}
.gg-site #slide-out-widget-area.fullscreen-alt .slide_out_area_close .close-wrap {
  width: 46px; height: 46px; border: 1px solid rgba(255,255,255,.16); border-radius: 50%;
  background: rgba(255,255,255,.05); transition: border-color .25s ease, background .25s ease;
}
.gg-site #slide-out-widget-area.fullscreen-alt .slide_out_area_close:hover .close-wrap {
  border-color: rgba(168,85,247,.65); background: rgba(168,85,247,.14);
}
.gg-site #slide-out-widget-area.fullscreen-alt .slide_out_area_close .close-line { background: #fff !important; }
/* smooth staggered entrance (Salient animates transform/opacity per li) */
.gg-site #slide-out-widget-area.fullscreen-alt .menu li { transition: transform .55s cubic-bezier(.25,.8,.25,1), opacity .55s ease; }

/* hamburger lines — brand white, thicker */
.gg-site #header-outer .slide-out-widget-area-toggle.mobile-icon .lines,
.gg-site #header-outer .slide-out-widget-area-toggle.mobile-icon .lines:before,
.gg-site #header-outer .slide-out-widget-area-toggle.mobile-icon .lines:after { background-color: #fff !important; }

/* ---- mobile header + page rhythm ---- */
@media only screen and (max-width: 999px) {
  /* roomier, balanced mobile header bar */
  .gg-site #header-outer #logo img { height: 40px !important; }
  .gg-site #header-outer .container { padding-left: 22px; padding-right: 22px; }
}

@media only screen and (max-width: 690px) {
  /* consistent section rhythm: equal 72px between all content sections */
  .gg-home .gg-section:not(.gg-hero):not(.gg-marquee) {
    padding-top: 72px !important; padding-bottom: 72px !important;
  }
  .gg-home .gg-head { margin-bottom: 0; }
  .gg-home .gg-head__sub { margin-top: 10px !important; }

  /* eyebrow: clean two-line wrap, dot pinned to the first line */
  .gg-home .gg-eyebrow {
    font-size: .68rem; letter-spacing: .09em; line-height: 1.7;
    align-items: flex-start; max-width: 100%;
  }
  .gg-home .gg-eyebrow::before { margin-top: .45em; }

  /* hero: keep breathing room without desktop-scale padding */
  .gg-home .gg-hero { min-height: 620px; padding-top: 82px; }
  .gg-home .gg-hero .gg-title { margin-top: 12px; }

  /* card + grid gutters slightly tighter but consistent */
  .gg-home .gg-aud__grid .row_col_wrap_12_inner,
  .gg-home .gg-pf__grid .row_col_wrap_12_inner,
  .gg-home .gg-gal__grid .row_col_wrap_12_inner,
  .gg-home .gg-quotes__grid .row_col_wrap_12_inner { gap: 18px; }

  /* footer breathing room */
  .gg-site #footer-outer #footer-widgets { padding-top: 56px; padding-bottom: 26px; }
}

/* =========================================================================
   ROUND 7 (client feedback) — portfolio tiles without captions, Instagram in
   the nav, sticky WhatsApp chat widget.
   ========================================================================= */

/* ---- PORTFOLIO: captions removed, tiles are now pure image + top badge ---- */
/* the image wrap is the only in-flow child left — keep it flush to the card edges */
.gg-home .gg-pf-card > .vc_column-inner > .wpb_wrapper { display: block; }
.gg-home .gg-pf-card .img-with-aniamtion-wrap,
.gg-home .gg-pf-card .inner { display: block; margin-bottom: 0 !important; }
/* the badge is the only label now — a touch more presence */
.gg-home .gg-pf-card .gg-card__badge p { padding: 8px 13px; letter-spacing: .09em; }

/* ---- NAV: social icon (Instagram) --------------------------------------- */
:root {
  --gg-ig-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'%3E%3Crect x='3' y='3' width='18' height='18' rx='5'/%3E%3Ccircle cx='12' cy='12' r='3.5'/%3E%3Ccircle cx='17.5' cy='6.5' r='1' fill='%23000' stroke='none'/%3E%3C/svg%3E");
}
/* The header block above nukes every ul.sf-menu > li > a pseudo-element (that is
   how Salient's animated underline is removed), so the icon rules have to be
   written at the same specificity or higher — hence the long selectors. */
.gg-site #header-outer header#top nav > ul.sf-menu > li.gg-nav-social > a::before,
.gg-site #slide-out-widget-area .off-canvas-menu-container .menu > li.gg-nav-social > a::before {
  content: "" !important; flex: none; display: block !important;
  -webkit-mask: var(--gg-ig-mask) center / contain no-repeat;
          mask: var(--gg-ig-mask) center / contain no-repeat;
  background-color: currentColor;
}

/* desktop header — icon only, label kept for screen readers */
.gg-site #header-outer header#top nav > ul.sf-menu > li.gg-nav-social > a {
  display: flex !important; align-items: center; justify-content: center;
  width: 38px; height: 38px; padding: 0 !important; border-radius: 50%;
  background: rgba(255,255,255,.07); border: 1px solid rgba(255,255,255,.12);
  color: var(--gg-text);
  transition: background .22s ease, border-color .22s ease, color .22s ease, transform .22s ease;
}
.gg-site #header-outer .sf-menu > li.gg-nav-social > a:hover {
  background: rgba(168,85,247,.18); border-color: rgba(168,85,247,.6);
  color: #fff; transform: translateY(-1px);
}
.gg-site #header-outer .sf-menu > li.gg-nav-social > a::before { width: 19px; height: 19px; }
.gg-site #header-outer .sf-menu > li.gg-nav-social > a .menu-title-text {
  position: absolute !important; width: 1px; height: 1px; padding: 0; overflow: hidden;
  clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap; border: 0;
}
/* kill Salient's animated underline on the icon item */
.gg-site #header-outer .sf-menu > li.gg-nav-social > a .menu-title-text::after,
.gg-site #header-outer .sf-menu > li.gg-nav-social > a::after { display: none !important; content: none !important; }

/* off-canvas (mobile) menu — icon + label, quiet like the phone row */
.gg-site #slide-out-widget-area.fullscreen-alt .off-canvas-menu-container .menu > li.gg-nav-social > a {
  display: inline-flex !important; align-items: center; gap: 11px;
  font-family: var(--gg-jakarta) !important; font-weight: 700 !important;
  font-size: 1.05rem !important; color: var(--gg-body-2) !important;
  letter-spacing: .02em; padding: 10px 0 !important; margin-top: 12px;
}
.gg-site #slide-out-widget-area.fullscreen-alt .off-canvas-menu-container .menu > li.gg-nav-social > a:hover {
  color: var(--gg-purple-pl) !important;
}
.gg-site #slide-out-widget-area.fullscreen-alt .off-canvas-menu-container .menu > li.gg-nav-social > a::before {
  width: 21px; height: 21px;
}

/* ---- STICKY WHATSAPP WIDGET --------------------------------------------- */
/* z-index sits below Salient's off-canvas overlay (9996) and menu (9997) so the
   bubble never floats over the open mobile menu, and below the header (9999). */
.gg-wa {
  position: fixed; right: 22px; bottom: 22px; z-index: 9995;
  display: flex; flex-direction: column; align-items: flex-end; gap: 14px;
  font-family: var(--gg-jak);
}
/* belt and braces: fully retire the widget while the mobile menu is open */
body:has(#slide-out-widget-area.open) .gg-wa { opacity: 0; pointer-events: none; }
/* Salient's back-to-top lives bottom-right too — slide it clear of the bubble */
.gg-site #to-top, .gg-site #to-top.dark { right: 104px !important; }

.gg-wa__toggle {
  position: relative; width: 58px; height: 58px; flex: none; padding: 0;
  border: none; border-radius: 50%; cursor: pointer;
  background: var(--gg-wa); color: #fff;
  display: grid; place-items: center;
  box-shadow: 0 14px 32px -10px rgba(37,211,102,.75), 0 2px 8px rgba(0,0,0,.35);
  transition: transform .2s ease, box-shadow .2s ease;
}
.gg-wa__toggle:hover { transform: translateY(-2px) scale(1.03); box-shadow: 0 20px 42px -12px rgba(37,211,102,.9), 0 2px 8px rgba(0,0,0,.35); }
.gg-wa__toggle:focus-visible { outline: 3px solid var(--gg-purple-pl); outline-offset: 3px; }
.gg-wa__toggle svg { width: 32px; height: 32px; position: relative; z-index: 1; }
.gg-wa__ring {
  position: absolute; inset: 0; border-radius: 50%;
  box-shadow: 0 0 0 0 rgba(37,211,102,.55); animation: ggWaPulse 2.6s ease-out infinite;
}
@keyframes ggWaPulse {
  0%   { box-shadow: 0 0 0 0 rgba(37,211,102,.5); }
  70%  { box-shadow: 0 0 0 18px rgba(37,211,102,0); }
  100% { box-shadow: 0 0 0 0 rgba(37,211,102,0); }
}
.gg-wa.is-open .gg-wa__ring { animation: none; }
.gg-wa.is-open .gg-wa__toggle { transform: scale(.94); }

.gg-wa__panel {
  width: 320px; max-width: calc(100vw - 44px); overflow: hidden;
  border-radius: 20px; background: var(--gg-card);
  border: 1px solid rgba(255,255,255,.12);
  box-shadow: 0 28px 70px -20px rgba(0,0,0,.75), 0 0 0 1px rgba(255,255,255,.03);
  opacity: 0; transform: translateY(14px) scale(.96); transform-origin: bottom right;
  pointer-events: none; transition: opacity .24s ease, transform .24s cubic-bezier(.25,.8,.25,1);
}
.gg-wa.is-open .gg-wa__panel { opacity: 1; transform: none; pointer-events: auto; }
.gg-wa__panel[hidden] { display: none; }

.gg-wa__head {
  display: flex; align-items: center; gap: 11px; padding: 14px 14px 14px 16px;
  background: linear-gradient(120deg, #128C4B 0%, #1FA855 100%); color: #fff;
}
.gg-wa__avatar {
  width: 40px; height: 40px; flex: none; border-radius: 50%; overflow: hidden;
  background: #fff; display: grid; place-items: center;
}
.gg-wa__avatar img { width: 84%; height: 84%; object-fit: contain; display: block; }
.gg-wa__avatar-mark svg { width: 24px; height: 24px; color: var(--gg-wa); display: block; }
.gg-wa__id { display: flex; flex-direction: column; line-height: 1.25; min-width: 0; flex: 1; }
.gg-wa__id b { font-family: var(--gg-sora); font-weight: 700; font-size: .95rem; color: #fff; }
.gg-wa__status { display: flex; align-items: center; gap: 6px; font-size: .74rem; color: rgba(255,255,255,.85); margin-top: 3px; }
.gg-wa__status::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: #B9F6CA; flex: none; }
.gg-wa__close {
  flex: none; width: 28px; height: 28px; padding: 0; border: none; border-radius: 50%; cursor: pointer;
  background: rgba(255,255,255,.16); color: #fff; display: grid; place-items: center;
  transition: background .18s ease;
}
.gg-wa__close:hover { background: rgba(255,255,255,.3); }
.gg-wa__close svg { width: 15px; height: 15px; }

.gg-wa__body { padding: 20px 16px 8px; background: var(--gg-ink-2); }
.gg-wa__bubble {
  position: relative; margin: 0; padding: 13px 15px;
  background: #1C2030; border-radius: 4px 16px 16px 16px;
  color: var(--gg-body-2); font-size: .89rem; line-height: 1.55;
}
.gg-wa__bubble::after {
  content: ""; position: absolute; top: 0; left: -7px;
  border: 7px solid transparent; border-top-color: #1C2030; border-left: 0;
}
.gg-wa__foot { padding: 14px 16px 16px; background: var(--gg-ink-2); }
.gg-wa__cta {
  display: flex; align-items: center; justify-content: center; gap: 9px;
  padding: 13px 16px; border-radius: 13px; text-decoration: none;
  background: var(--gg-wa); color: #06281A !important; font-weight: 800; font-size: .95rem;
  transition: transform .18s ease, box-shadow .18s ease;
}
.gg-wa__cta:hover { transform: translateY(-2px); box-shadow: 0 16px 34px -14px rgba(37,211,102,.8); }
.gg-wa__cta svg { width: 19px; height: 19px; flex: none; }

@media only screen and (max-width: 690px) {
  .gg-wa { right: 16px; bottom: 16px; gap: 12px; }
  .gg-wa__toggle { width: 54px; height: 54px; }
  .gg-wa__toggle svg { width: 29px; height: 29px; }
  .gg-wa__panel { width: min(320px, calc(100vw - 32px)); }
}

@media (prefers-reduced-motion: reduce) {
  .gg-wa__ring { animation: none; }
  .gg-wa__panel { transition: opacity .01s linear; transform: none; }
}

/* ==========================================================================
   INNER PAGES — About / Services / Portfolio / Contact
   Everything below reuses the homepage components; these are only the patterns
   the homepage does not already have. Scoped .gg-home like the rest, because
   gg_is_design() gives every gg-section page that body class.
   ========================================================================== */

/* --- page banner ---------------------------------------------------------
   The fixed header is near-opaque ink with light nav, so an inner page needs a
   dark band behind it or the header floats on nothing. */
.gg-home .gg-phero { position: relative; overflow: hidden; background: var(--gg-ink); }
/* Keep the photo VISIBLE (no flat brightness dim — that turned it into a black slab),
   but darken it evenly for CENTRED white text: a vertical gradient carries the overall
   legibility darkening and a radial vignette deepens the edges and focuses the middle. */
/* The MAIN darkening is a filter straight on the image div — reliable, and it can't
   be hidden behind the image the way a ::before overlay was (Salient's inner-wrap sits
   at z-index 1, above pseudos). The overlay pseudos themselves are defined once, near
   the end of this file (search "ONE even overlay") — do not re-add them here. */
.gg-home .gg-phero > .row-bg-wrap .row-bg { background-position: center 30% !important; background-size: cover !important; filter: brightness(.5) saturate(.95) !important; }
/* The inner rows (content + buttons) each render their OWN .row-bg-wrap; left visible
   they paint a dark gradient box directly behind the text — that was the "separate
   black overlay" the client saw. Hide them; only the section image shows through. */
.gg-home .gg-phero__row .row-bg-wrap,
.gg-home .gg-phero__btns .row-bg-wrap { display: none !important; }
.gg-home .gg-phero .row_col_wrap_12 { position: relative; z-index: 5; }
.gg-home .gg-phero__in {
  min-height: clamp(360px, 46vh, 520px);
  display: flex; flex-direction: column; justify-content: flex-end;
  padding-top: clamp(150px, 17vh, 210px); padding-bottom: clamp(48px, 5.5vw, 78px);
}
.gg-home .gg-phero__head { margin: 0 !important; }
.gg-home .gg-phero__head .gg-title { font-size: clamp(2.3rem, 5vw, 3.6rem); line-height: 1.06; }
.gg-home .gg-phero__sub { margin: 16px 0 0 !important; max-width: 62ch; }
.gg-home .gg-phero__sub p { font-size: clamp(1rem, 1.15vw, 1.12rem); color: var(--gg-body-2); margin: 0; }
.gg-home .gg-phero__btns { margin-top: 26px !important; }
.gg-home .gg-phero__btns .wpb_wrapper { display: flex; flex-wrap: wrap; gap: 14px; }

/* --- closing CTA ---------------------------------------------------------- */
.gg-home .gg-pcta { background: var(--gg-ink-2); }
.gg-home .gg-pcta__in { text-align: center; }
.gg-home .gg-pcta__in .gg-head__sub { margin: 14px auto 0 !important; max-width: 60ch; }
.gg-home .gg-pcta__btns { margin-top: 28px !important; }
.gg-home .gg-pcta__btns .wpb_wrapper { display: flex; flex-wrap: wrap; gap: 14px; justify-content: center; }

/* --- prose block (About history, service intros) -------------------------- */
.gg-home .gg-prose { max-width: 74ch; }
.gg-home .gg-prose p { color: var(--gg-body-2); font-size: 1.03rem; line-height: 1.78; margin: 0 0 18px; }
.gg-home .gg-prose p:last-child { margin-bottom: 0; }
.gg-home .gg-prose strong { color: var(--gg-text); font-weight: 600; }

/* --- team grid ------------------------------------------------------------ */
.gg-home .gg-team__grid .row_col_wrap_12_inner { display: grid; grid-template-columns: repeat(3, 1fr); gap: 26px; }
.gg-home .gg-team__grid .wpb_column { width: auto !important; float: none; margin: 0; padding: 0 !important; }
.gg-home .gg-member > .vc_column-inner {
  background: var(--gg-card); border: 1px solid rgba(255,255,255,.09); border-radius: 24px;
  overflow: hidden; padding: 0 !important; height: 100%;
}
.gg-home .gg-member > .vc_column-inner > .wpb_wrapper { display: flex; flex-direction: column; height: 100%; }
/* image_with_animation's el_class lands on the <img>, so the wrap is sized via the
   COLUMN class — the wrap is an ancestor of the img, never a descendant. */
.gg-home .gg-member .img-with-aniamtion-wrap { height: 300px; margin: 0 !important; max-width: none !important; width: 100% !important; }
.gg-home .gg-member .inner, .gg-home .gg-member .hover-wrap, .gg-home .gg-member .hover-wrap-inner { height: 100%; width: 100% !important; display: block; }
.gg-home .gg-member img { width: 100% !important; height: 100% !important; object-fit: cover; object-position: center 28%; display: block; max-width: none !important; }
.gg-home .gg-member__name { padding: 18px 22px 0 !important; margin: 0 !important; }
.gg-home .gg-member__name .gg-title { font-size: 1.18rem; }
.gg-home .gg-member__role { padding: 6px 22px 0 !important; margin: 0 !important; }
.gg-home .gg-member__role p { font-family: var(--gg-sora); font-weight: 600; font-size: .72rem; letter-spacing: .13em; text-transform: uppercase; color: var(--gg-blue-lt); margin: 0; }
.gg-home .gg-member__text { padding: 12px 22px 24px !important; margin: 0 !important; }
.gg-home .gg-member__text p { color: var(--gg-body); font-size: .95rem; line-height: 1.7; margin: 0; }

/* --- two-column media + copy (service pages) ------------------------------ */
/* stretch, not center: the media column now runs the full height of the copy beside it,
   which is what stops the image reading as a small inset tile next to a tall paragraph */
.gg-home .gg-split__grid .row_col_wrap_12_inner { display: grid; grid-template-columns: 1.05fr .95fr; gap: clamp(26px, 3.4vw, 54px); align-items: stretch; }
.gg-home .gg-split__grid .wpb_column { width: auto !important; float: none; margin: 0; padding: 0 !important; }
.gg-home .gg-split--flip .row_col_wrap_12_inner { grid-template-columns: .95fr 1.05fr; }
.gg-home .gg-split--flip .gg-split__media { order: 2; }
/* The image must FILL the row, not set it. A plain height:100% cannot do that: the row
   height depends on this column's content, and the content's height depends on the row,
   so the browser gives up and falls back to the image's natural size — which made a
   1500x2000 portrait 851px tall and dragged the whole row with it. Taking the wrap out
   of flow breaks the loop; the row is then sized by the copy beside it. */
.gg-home .gg-split__media,
.gg-home .gg-split__media > .vc_column-inner,
.gg-home .gg-split__media > .vc_column-inner > .wpb_wrapper { height: 100%; }
.gg-home .gg-split__media { min-height: clamp(340px, 32vw, 520px); }
.gg-home .gg-split__media > .vc_column-inner > .wpb_wrapper { position: relative; }
.gg-home .gg-split__body { align-self: center; }
.gg-home .gg-split__media .img-with-aniamtion-wrap {
  position: absolute; inset: 0;
  margin: 0 !important; max-width: none !important; width: auto !important;
  border-radius: 24px; overflow: hidden;
}
.gg-home .gg-split__media .inner, .gg-home .gg-split__media .hover-wrap, .gg-home .gg-split__media .hover-wrap-inner { height: 100%; width: 100% !important; display: block; }
.gg-home .gg-split__media img { width: 100% !important; height: 100% !important; object-fit: cover; display: block; max-width: none !important; }

/* --- portfolio card description ------------------------------------------- */
.gg-home .gg-pf-card__desc { padding: 0 18px 18px !important; margin: 0 !important; }
.gg-home .gg-pf-card__desc p { color: var(--gg-body); font-size: .88rem; line-height: 1.62; margin: 0; }

/* --- contact page --------------------------------------------------------- */
.gg-home .gg-contact__grid .row_col_wrap_12_inner { display: grid; grid-template-columns: .85fr 1.15fr; gap: clamp(26px, 3.4vw, 52px); align-items: start; }
.gg-home .gg-contact__grid .wpb_column { width: auto !important; float: none; margin: 0; padding: 0 !important; }
.gg-home .gg-contact__panel > .vc_column-inner { background: var(--gg-card); border: 1px solid rgba(255,255,255,.09); border-radius: 28px; padding: clamp(26px, 3vw, 40px) !important; }
.gg-home .gg-contact__list { margin: 0 !important; }
.gg-home .gg-contact__list p { color: var(--gg-body-2); font-size: .98rem; line-height: 1.75; margin: 0 0 14px; }
.gg-home .gg-contact__list p:last-child { margin-bottom: 0; }
.gg-home .gg-contact__list strong { display: block; font-family: var(--gg-sora); font-weight: 700; font-size: .72rem; letter-spacing: .13em; text-transform: uppercase; color: var(--gg-mute); margin-bottom: 3px; }
.gg-home .gg-contact__list a { color: var(--gg-text); text-decoration: none; border-bottom: 1px solid rgba(168,85,247,.4); transition: color .2s, border-color .2s; }
.gg-home .gg-contact__list a:hover { color: var(--gg-accent); border-color: var(--gg-accent); }

/* --- inner-page responsive ------------------------------------------------ */
@media (max-width: 999px) {
  .gg-home .gg-team__grid .row_col_wrap_12_inner { grid-template-columns: repeat(2, 1fr); }
  .gg-home .gg-split__grid .row_col_wrap_12_inner,
  .gg-home .gg-split--flip .row_col_wrap_12_inner { grid-template-columns: 1fr; }
  .gg-home .gg-split--flip .gg-split__media { order: 0; }
  .gg-home .gg-contact__grid .row_col_wrap_12_inner { grid-template-columns: 1fr; }
}
@media (max-width: 690px) {
  .gg-home .gg-team__grid .row_col_wrap_12_inner { grid-template-columns: 1fr; gap: 18px; }
  .gg-home .gg-phero__in { min-height: 320px; padding-top: 128px; padding-bottom: 42px; }
  .gg-home .gg-phero__head .gg-title { font-size: clamp(1.9rem, 8vw, 2.4rem); }
  .gg-home .gg-phero__btns .wpb_wrapper,
  .gg-home .gg-pcta__btns .wpb_wrapper { flex-direction: column; align-items: stretch; }
  .gg-home .gg-member .img-with-aniamtion-wrap { height: 240px; }
}

/* ==========================================================================
   HEADER DROPDOWN — Salient ships this white. On a black site that reads as a
   broken panel, so it is skinned to the brand here. Scoped .gg-site (chrome),
   so it applies on every page including the homepage.
   ========================================================================== */
/* Salient (and its generated dynamic styles) paint the dropdown WHITE with an !important
   that beat the earlier 3-class selector, so light menu text vanished on it. Out-rank it
   with html+body+id+tag specificity, and cover the .sf-menu ul form Salient also uses. */
html body.gg-site #header-outer ul.sub-menu,
html body.gg-site #header-outer .sf-menu ul.sub-menu,
html body.gg-site #header-outer nav ul.sub-menu,
.gg-site #slide-out-widget-area .sub-menu {
  background: #0D0E16 !important;
  background-color: #0D0E16 !important;
  border: 1px solid rgba(255,255,255,.12) !important;
  border-radius: 16px !important;
  box-shadow: 0 24px 60px -24px rgba(0,0,0,.85), 0 0 0 1px rgba(168,85,247,.10) !important;
  padding: 8px !important;
  overflow: hidden;
  min-width: 236px !important;
}
.gg-site #header-outer .sub-menu li,
.gg-site #header-outer nav > ul > li ul li { border: 0 !important; background: none !important; }

html body.gg-site #header-outer .sub-menu li > a,
html body.gg-site #header-outer nav > ul > li ul li > a {
  color: #EAECF6 !important;
  background: none !important;
  font-family: var(--gg-jak) !important;
  font-weight: 500 !important;
  font-size: .94rem !important;
  letter-spacing: 0 !important;
  text-transform: none !important;
  padding: 12px 16px !important;
  border-radius: 10px !important;
  transition: color .2s ease, background .2s ease !important;
}
/* Salient paints a solid accent bar on hover — replace it with a soft tint. */
.gg-site #header-outer .sub-menu li > a:hover,
.gg-site #header-outer .sub-menu li.current-menu-item > a,
.gg-site #header-outer nav > ul > li ul li > a:hover {
  color: #fff !important;
  background: rgba(168,85,247,.16) !important;
}
.gg-site #header-outer .sub-menu li > a .menu-title-text,
.gg-site #header-outer nav > ul > li ul li > a .menu-title-text { color: inherit !important; }
/* kill Salient's sliding highlight / underline inside the dropdown */
.gg-site #header-outer .sub-menu li > a::before,
.gg-site #header-outer .sub-menu li > a::after { display: none !important; }

/* parent gets a small caret so the dropdown is discoverable */
.gg-site #header-outer .menu-item-has-children > a .menu-title-text { position: relative; padding-right: 15px; }
.gg-site #header-outer .menu-item-has-children > a .menu-title-text::after {
  content: ""; position: absolute; right: 0; top: 50%;
  width: 5px; height: 5px; margin-top: -4px;
  border-right: 1.5px solid currentColor; border-bottom: 1.5px solid currentColor;
  transform: rotate(45deg); opacity: .6; transition: opacity .2s ease, transform .2s ease;
}
.gg-site #header-outer .menu-item-has-children:hover > a .menu-title-text::after { opacity: 1; transform: rotate(45deg) translate(1px,1px); }

/* mobile off-canvas: children indented, not boxed */
.gg-site #slide-out-widget-area .sub-menu {
  background: none !important; border: 0 !important; box-shadow: none !important;
  padding: 2px 0 6px 16px !important; min-width: 0 !important;
}

/* ==========================================================================
   CONTENT-PAGE COMPONENTS
   Built for the client's own copy: badge strip, service cards with real
   descriptions, 3 steps, reason cards, FAQ accordion. Scoped .gg-home because
   gg_is_design() gives every gg-section page that body class.
   ========================================================================== */

/* --- badge strip (NATIONWIDE / FREE QUOTES / YEARS OF EXPERTISE) ----------
   These were three bare icon+text rows floating on the dark band, which read as
   unfinished right under the hero. They are now proper glass cards with a gradient
   icon tile, so the strip has the same weight as the cards further down the page. */
.gg-home .gg-badges {
  background: var(--gg-ink-2);
  border-top: 1px solid rgba(255,255,255,.06); border-bottom: 1px solid rgba(255,255,255,.06);
}
.gg-home .gg-badges__grid .row_col_wrap_12_inner { display: grid; grid-template-columns: repeat(3, 1fr); gap: clamp(16px, 1.6vw, 22px); }
.gg-home .gg-badges__grid .wpb_column { width: auto !important; float: none; margin: 0; padding: 0 !important; }

.gg-home .gg-badge > .vc_column-inner {
  height: 100%;
  padding: clamp(20px, 1.7vw, 26px) clamp(20px, 1.8vw, 28px) !important;
  border-radius: 18px;
  border: 1px solid rgba(255,255,255,.09);
  background:
    linear-gradient(150deg, rgba(255,255,255,.055), rgba(255,255,255,.012)),
    var(--gg-card);
  transition: transform .22s ease, border-color .22s ease, box-shadow .22s ease;
}
.gg-home .gg-badge:hover > .vc_column-inner {
  transform: translateY(-4px); border-color: rgba(168,85,247,.42);
  box-shadow: 0 22px 44px -26px rgba(168,85,247,.85);
}
.gg-home .gg-badge .gg-feature { margin: 0 !important; align-items: center; gap: 18px; }

/* bigger, brighter icon tile with a soft ring — the 48px flat square was the weakest
   part of the old strip */
.gg-home .gg-badge .gg-feature__icon {
  width: 54px !important; height: 54px !important; border-radius: 16px !important;
  position: relative; flex: none;
  background: linear-gradient(150deg, rgba(168,85,247,.30), rgba(77,141,240,.20)) !important;
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.12), 0 10px 24px -14px rgba(168,85,247,.9);
  color: #fff !important;
}
.gg-home .gg-badge.gg-i-blue .gg-feature__icon,
.gg-home .gg-badge .gg-i-blue .gg-feature__icon {
  background: linear-gradient(150deg, rgba(77,141,240,.34), rgba(126,231,255,.18)) !important;
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.12), 0 10px 24px -14px rgba(77,141,240,.9);
}
.gg-home .gg-badge .gg-feature__icon svg { width: 26px; height: 26px; stroke-width: 1.7; }
.gg-home .gg-badge .gg-feature__title { font-size: 1.06rem; margin: 0 0 4px; letter-spacing: -.01em; }
.gg-home .gg-badge .gg-feature__text { color: var(--gg-body); font-size: .9rem; line-height: 1.6; }

/* --- centred intro -------------------------------------------------------- */
.gg-home .gg-intro__in { text-align: center; }
.gg-home .gg-prose--center { margin: 22px auto 0 !important; max-width: 78ch; }
.gg-home .gg-intro__btns { margin-top: 30px !important; }
.gg-home .gg-intro__btns .wpb_wrapper { display: flex; flex-wrap: wrap; gap: 14px; justify-content: center; }

/* --- service cards (photo on top, real copy underneath) ------------------- */
/* FLEX, not grid, purely so the LAST ROW CENTRES. The service counts per page are 9, 7,
   4, 8 and 3, so three of the pages end on a short row; in a grid those leftovers stay
   left-aligned under column 1 and read as a mistake. flex-wrap + justify-content:center
   centres a row of 1 or 2 while a full row of 3 still spans the container exactly,
   because the three bases plus two gaps add up to 100%. */
.gg-home .gg-svccard__grid .row_col_wrap_12_inner {
  --gg-svc-gap: clamp(18px, 2.2vw, 30px);
  display: flex; flex-wrap: wrap; justify-content: center; align-items: stretch;
  gap: var(--gg-svc-gap);
}
.gg-home .gg-svccard__grid .wpb_column {
  width: auto !important; float: none; margin: 0; padding: 0 !important;
  flex: 0 0 calc((100% - 2 * var(--gg-svc-gap)) / 3);
  max-width: calc((100% - 2 * var(--gg-svc-gap)) / 3);
}
.gg-home .gg-svccard > .vc_column-inner {
  background: var(--gg-card); border: 1px solid rgba(255,255,255,.09); border-radius: 22px;
  overflow: hidden; padding: 0 !important; height: 100%;
  transition: transform .22s ease, border-color .22s ease;
}
.gg-home .gg-svccard > .vc_column-inner > .wpb_wrapper { display: flex; flex-direction: column; height: 100%; }
.gg-home .gg-svccard:hover > .vc_column-inner { transform: translateY(-6px); border-color: rgba(168,85,247,.5); }
/* image_with_animation's el_class lands on the <img>; the wrap is an ANCESTOR,
   so it has to be sized through the COLUMN class. */
.gg-home .gg-svccard .img-with-aniamtion-wrap { height: 220px; margin: 0 !important; max-width: none !important; width: 100% !important; }
.gg-home .gg-svccard .inner, .gg-home .gg-svccard .hover-wrap, .gg-home .gg-svccard .hover-wrap-inner { height: 100%; width: 100% !important; display: block; }
.gg-home .gg-svccard img { width: 100% !important; height: 100% !important; object-fit: cover; display: block; max-width: none !important; transition: transform .4s ease; }
.gg-home .gg-svccard:hover img { transform: scale(1.04); }
.gg-home .gg-svccard__title { padding: 22px 24px 0 !important; margin: 0 !important; }
.gg-home .gg-svccard__title .gg-title { font-size: 1.16rem; line-height: 1.25; }
.gg-home .gg-svccard__text { padding: 10px 24px 26px !important; margin: 0 !important; }
.gg-home .gg-svccard__text p { color: var(--gg-body); font-size: .95rem; line-height: 1.72; margin: 0; }

/* --- 3 simple steps ------------------------------------------------------- */
.gg-home .gg-steps { background: var(--gg-ink-2); }
.gg-home .gg-steps__grid .row_col_wrap_12_inner { display: grid; grid-template-columns: repeat(3, 1fr); gap: clamp(18px, 2.4vw, 34px); }
.gg-home .gg-steps__grid .wpb_column { width: auto !important; float: none; margin: 0; padding: 0 !important; }
.gg-home .gg-step > .vc_column-inner {
  background: var(--gg-card); border: 1px solid rgba(255,255,255,.09); border-radius: 22px;
  padding: clamp(26px, 2.6vw, 36px) !important; height: 100%;
}
.gg-home .gg-step__numwrap { margin: 0 !important; }
.gg-home .gg-step__num {
  display: inline-flex; align-items: center; justify-content: center;
  width: 52px; height: 52px; border-radius: 50%;
  font-family: var(--gg-sora); font-weight: 800; font-size: 1.05rem; color: #fff;
  background: linear-gradient(135deg, var(--gg-blue), var(--gg-accent));
  box-shadow: 0 10px 26px -12px rgba(168,85,247,.9);
}
.gg-home .gg-step__title { margin: 18px 0 0 !important; }
.gg-home .gg-step__title .gg-title { font-size: 1.14rem; }
.gg-home .gg-step__text { margin: 10px 0 0 !important; }
.gg-home .gg-step__text p { color: var(--gg-body); font-size: .96rem; line-height: 1.72; margin: 0; }

/* --- reason cards (why customers love us / why choose us) ----------------- */
.gg-home .gg-reasons__grid .row_col_wrap_12_inner { display: grid; grid-template-columns: repeat(3, 1fr); gap: clamp(18px, 2.4vw, 32px); }
.gg-home .gg-reasons__grid .wpb_column { width: auto !important; float: none; margin: 0; padding: 0 !important; }
.gg-home .gg-reason > .vc_column-inner {
  background: var(--gg-card); border: 1px solid rgba(255,255,255,.09); border-radius: 22px;
  padding: clamp(26px, 2.6vw, 34px) !important; height: 100%;
}
.gg-home .gg-reason .gg-feature { margin: 0 !important; }
.gg-home .gg-choose { background: var(--gg-ink-2); }

/* --- FAQ accordion (Salient ships this light — skin it dark) -------------- */
.gg-home .gg-faq__list { max-width: 860px; margin-left: auto !important; margin-right: auto !important; }
.gg-home .gg-faq__list .toggle {
  background: var(--gg-card) !important; border: 1px solid rgba(255,255,255,.09) !important;
  border-radius: 16px !important; margin-bottom: 14px !important; overflow: hidden;
  transition: border-color .25s ease;
}
.gg-home .gg-faq__list .toggle:hover { border-color: rgba(168,85,247,.35) !important; }
.gg-home .gg-faq__list .toggle.open { border-color: rgba(168,85,247,.5) !important; }
.gg-home .gg-faq__list .toggle > h3,
.gg-home .gg-faq__list .toggle > div.toggle-title { margin: 0 !important; }
/* question row: text left, a chevron I control on the right */
.gg-home .gg-faq__list .toggle > h3 > a,
.gg-home .gg-faq__list .toggle .toggle-title > a {
  position: relative; display: block; text-decoration: none;
  color: var(--gg-text) !important; background: none !important;
  font-family: var(--gg-sora) !important; font-weight: 600 !important;
  font-size: 1.02rem !important; line-height: 1.45 !important;
  padding: 21px 60px 21px 26px !important;
}
.gg-home .gg-faq__list .toggle.open > h3 > a { color: #fff !important; }
/* Salient outputs a fa-plus/fa-minus-circle <i> (inconsistent, and its two chevron
   strokes read as a broken double mark). Hide it outright and draw one clean +/-
   from two bars — unambiguous, single icon, becomes a minus when open. */
.gg-home .gg-faq__list .toggle > h3 > a > i { display: none !important; }

/* The + is two bars that must share ONE centre. They used to carry independent `right`
   values, and the mobile breakpoint moved only the vertical one — so the two halves
   drifted 12px apart and rendered as a separate dash and pipe ("— |") on phones.
   Both are now derived from a single custom property: --gg-faq-icon is the distance
   from the row's right edge to the icon's CENTRE, so moving the icon at any breakpoint
   is one value and the halves cannot come apart again. */
.gg-home .gg-faq__list .toggle > h3 > a,
.gg-home .gg-faq__list .toggle .toggle-title > a { --gg-faq-icon: 31px; --gg-faq-arm: 15px; }

.gg-home .gg-faq__list .toggle > h3 > a::before,
.gg-home .gg-faq__list .toggle > h3 > a::after {
  content: ""; position: absolute; top: 50%;
  background: var(--gg-purple-lt); border-radius: 2px;
  transition: transform .3s ease, opacity .3s ease, background .3s ease;
}
/* horizontal bar: half its length either side of the centre */
.gg-home .gg-faq__list .toggle > h3 > a::before {
  right: calc(var(--gg-faq-icon) - (var(--gg-faq-arm) / 2));
  width: var(--gg-faq-arm); height: 2px; transform: translateY(-50%);
}
/* vertical bar: half its 2px thickness either side of the SAME centre */
.gg-home .gg-faq__list .toggle > h3 > a::after {
  right: calc(var(--gg-faq-icon) - 1px);
  width: 2px; height: var(--gg-faq-arm); transform: translateY(-50%);
}
/* open = the vertical arm folds away, leaving a clean minus */
.gg-home .gg-faq__list .toggle.open > h3 > a::after  { transform: translateY(-50%) scaleY(0); opacity: 0; }
.gg-home .gg-faq__list .toggle.open > h3 > a::before { background: var(--gg-accent); }
/* Smooth reveal. gg-faq.js sets the exact open height inline (max-height), so this
   only provides the closed default + the transition. NO !important on max-height, or
   the stylesheet would beat the script's inline value and nothing would open. */
.gg-home .gg-faq__list .toggle > div[role="region"] {
  display: block; max-height: 0; overflow: hidden;
  transition: max-height .42s cubic-bezier(.4, 0, .2, 1); padding: 0 !important;
}
.gg-home .gg-faq__list .toggle .inner-toggle-wrap { padding: 4px 26px 24px !important; }
.gg-home .gg-faq__list .toggle p { color: var(--gg-body-2) !important; font-size: .98rem; line-height: 1.75; margin: 0; }

/* --- founder block (About) ------------------------------------------------ */
/* The gradient panel sits on the section's TOP-LEVEL column so it wraps both halves
   of the split; the split itself is the inner row inside it. */
.gg-home .gg-founder > .vc_column-inner {
  background: linear-gradient(135deg, rgba(77,141,240,.10), rgba(168,85,247,.12));
  border: 1px solid rgba(255,255,255,.10); border-radius: 26px;
  padding: clamp(28px, 3vw, 46px) !important;
}
.gg-home .gg-founder__grid .row_col_wrap_12_inner {
  display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 2fr);
  gap: clamp(24px, 3vw, 44px); align-items: center;
}
.gg-home .gg-founder__grid .wpb_column { width: auto !important; float: none; margin: 0; padding: 0 !important; }
/* image_with_animation's el_class lands on the <img>, so the wrap is sized via the column */
.gg-home .gg-founder__media .img-with-aniamtion-wrap {
  aspect-ratio: 4/5; margin: 0 !important; max-width: none !important; width: 100% !important;
  border-radius: 20px; overflow: hidden; border: 1px solid rgba(255,255,255,.10);
}
.gg-home .gg-founder__media .inner,
.gg-home .gg-founder__media .hover-wrap,
.gg-home .gg-founder__media .hover-wrap-inner { height: 100%; width: 100% !important; display: block; }
.gg-home .gg-founder__media img {
  width: 100% !important; height: 100% !important; object-fit: cover;
  object-position: center 22%; display: block; max-width: none !important;
}
.gg-home .gg-founder__bio p { color: var(--gg-body-2); font-size: 1.02rem; line-height: 1.75; margin: 0 0 14px; }
.gg-home .gg-founder__bio p:last-child { margin-bottom: 0; }

/* --- Salient's row clearfix must not become a grid item -------------------
   Salient hangs a clearfix ::before/::after on its row wrappers. Turn that wrapper
   into a grid and those two pseudo-elements become real GRID ITEMS and consume cells,
   so the columns land in the wrong tracks. It bit the flipped split on the Private
   page: a two-column grid stacked its image UNDER the copy, because `order:2` on the
   media plus two invisible items shifted the auto-placement by a whole cell.
   (Same trap as the flex version noted in the playbook, and just as silent.)
   Every wrapper this file converts to a grid is listed here. ADD TO THIS LIST when
   you grid another row. */
.gg-home .gg-lineup__grid  .row_col_wrap_12_inner::before, .gg-home .gg-lineup__grid  .row_col_wrap_12_inner::after,
.gg-home .gg-pf__grid      .row_col_wrap_12_inner::before, .gg-home .gg-pf__grid      .row_col_wrap_12_inner::after,
.gg-home .gg-quotes__grid  .row_col_wrap_12_inner::before, .gg-home .gg-quotes__grid  .row_col_wrap_12_inner::after,
.gg-home .gg-gal__grid     .row_col_wrap_12_inner::before, .gg-home .gg-gal__grid     .row_col_wrap_12_inner::after,
.gg-home .gg-team__grid    .row_col_wrap_12_inner::before, .gg-home .gg-team__grid    .row_col_wrap_12_inner::after,
.gg-home .gg-split__grid   .row_col_wrap_12_inner::before, .gg-home .gg-split__grid   .row_col_wrap_12_inner::after,
.gg-home .gg-contact__grid .row_col_wrap_12_inner::before, .gg-home .gg-contact__grid .row_col_wrap_12_inner::after,
.gg-home .gg-badges__grid  .row_col_wrap_12_inner::before, .gg-home .gg-badges__grid  .row_col_wrap_12_inner::after,
.gg-home .gg-svccard__grid .row_col_wrap_12_inner::before, .gg-home .gg-svccard__grid .row_col_wrap_12_inner::after,
.gg-home .gg-steps__grid   .row_col_wrap_12_inner::before, .gg-home .gg-steps__grid   .row_col_wrap_12_inner::after,
.gg-home .gg-reasons__grid .row_col_wrap_12_inner::before, .gg-home .gg-reasons__grid .row_col_wrap_12_inner::after,
.gg-home .gg-founder__grid .row_col_wrap_12_inner::before, .gg-home .gg-founder__grid .row_col_wrap_12_inner::after {
  display: none !important;
}

/* --- meet the team (About) ------------------------------------------------ */
/* ggp_head_sub renders the sub-line as a SIBLING of .gg-head, not a child, so the
   text-align:center on .gg-head--center never reached it — that is why the intro sat
   left while its heading was centred. */
.gg-home .gg-team .gg-head__sub {
  text-align: center; max-width: 68ch; margin-left: auto !important; margin-right: auto !important;
}
/* FLEX, not grid, for the same reason as the service cards: 14 members over 4 columns
   leaves a last row of 2, and in a grid those two stay pinned under columns 1 and 2.
   flex-wrap + justify-content:center centres a short row while a full row of 4 still
   spans the container exactly (four bases plus three gaps = 100%). */
.gg-home .gg-team__grid .row_col_wrap_12_inner {
  --gg-team-gap: clamp(16px, 1.8vw, 24px);
  --gg-team-cols: 4;
  display: flex; flex-wrap: wrap; justify-content: center; align-items: stretch;
  gap: var(--gg-team-gap);
}
.gg-home .gg-team__grid .wpb_column {
  flex: 0 0 calc((100% - (var(--gg-team-cols) - 1) * var(--gg-team-gap)) / var(--gg-team-cols));
  max-width: calc((100% - (var(--gg-team-cols) - 1) * var(--gg-team-gap)) / var(--gg-team-cols));
}
.gg-home .gg-team__grid .wpb_column { width: auto !important; float: none; margin: 0; padding: 0 !important; }
.gg-home .gg-teamcard > .vc_column-inner {
  background: var(--gg-card); border: 1px solid rgba(255,255,255,.09); border-radius: 22px;
  overflow: hidden; padding: 0 !important; height: 100%;
  transition: transform .22s ease, border-color .22s ease;
}
.gg-home .gg-teamcard:hover > .vc_column-inner { transform: translateY(-6px); border-color: rgba(168,85,247,.5); }
.gg-home .gg-teamcard > .vc_column-inner > .wpb_wrapper { height: 100%; }

/* Salient's markup is .team-member > img + h4 + .position + .description
   (a DIV of paragraphs — see gg_team_member_bio_paragraphs() in functions.php) */
.gg-home .gg-teamcard .team-member {
  display: flex; flex-direction: column; height: 100%; margin: 0; padding: 0 0 22px;
}
/* The photos arrive at wildly different aspect ratios (portrait, square and two
   landscape), so a fixed ratio plus cover is what keeps the grid aligned. The focal
   point is biased upward because faces sit in the top half of every one of them. */
.gg-home .gg-teamcard .team-member img,
.gg-home .gg-teamcard .gg-team__photo {
  width: 100% !important; max-width: none !important; height: auto;
  aspect-ratio: 4/5; object-fit: cover; object-position: center 20%;
  display: block; margin: 0 !important; border-radius: 0;
  transition: transform .4s ease;
}
.gg-home .gg-teamcard:hover .team-member img { transform: scale(1.04); }
.gg-home .gg-teamcard .team-member h4 {
  margin: 0 !important; padding: 20px 22px 0; font-size: 1.1rem; line-height: 1.3;
  color: #fff; font-weight: 700;
}
.gg-home .gg-teamcard .team-member .position {
  padding: 6px 22px 0; margin: 0; font-size: .7rem; font-weight: 600;
  letter-spacing: .09em; text-transform: uppercase; color: var(--gg-blue-lt); line-height: 1.5;
}
/* MARGIN, not padding: max-height below clamps the box, and padding would count inside
   it — five lines of text would then show as four and a bit. */
.gg-home .gg-teamcard .team-member .description {
  padding: 0; margin: 13px 22px 0; border: none;
  color: var(--gg-body); font-size: .92rem; line-height: 1.72;
  max-height: calc(var(--gg-tm-lines, 5) * 1.72em);
  overflow: hidden;
  transition: max-height .5s cubic-bezier(.22, .61, .36, 1);
}
/* .gg-has-more is added by gg-team.js only when the bio really is taller than the clamp,
   so a short bio never gets a pointless fade over its last line. */
.gg-home .gg-teamcard.gg-has-more:not(.is-open) .team-member .description {
  -webkit-mask-image: linear-gradient(#000 68%, transparent 100%);
          mask-image: linear-gradient(#000 68%, transparent 100%);
}
.gg-home .gg-teamcard__more {
  align-self: flex-start; margin: 12px 22px 0; padding: 0; border: 0; background: none;
  cursor: pointer; display: inline-flex; align-items: center; gap: 7px;
  font-family: inherit; font-size: .85rem; font-weight: 700; letter-spacing: .01em;
  color: var(--gg-blue-pl); transition: color .2s ease, gap .2s ease;
}
.gg-home .gg-teamcard__more::after {
  content: ""; width: 14px; height: 14px; flex: none;
  background-color: currentColor;
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E") center / contain no-repeat;
          mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E") center / contain no-repeat;
  transition: transform .35s cubic-bezier(.22, .61, .36, 1);
}
.gg-home .gg-teamcard__more:hover { color: #fff; gap: 10px; }
.gg-home .gg-teamcard.is-open .gg-teamcard__more::after { transform: rotate(180deg); }
.gg-home .gg-teamcard__more:focus-visible { outline: 2px solid var(--gg-accent); outline-offset: 3px; border-radius: 4px; }
/* Salient hides the meta until its own scroll script runs; these cards are plain
   markup with no such script, so they must be visible from the start. */
.gg-home .gg-teamcard .team-member h4,
.gg-home .gg-teamcard .team-member .position,
.gg-home .gg-teamcard .team-member .description { opacity: 1; visibility: visible; }

/* --- responsive ----------------------------------------------------------- */
/* four across needs the full container; below that the cards get too narrow for a
   name, a role line and five lines of bio to sit comfortably */
@media (max-width: 1180px) {
  .gg-home .gg-team__grid .row_col_wrap_12_inner { --gg-team-cols: 3; }
}
@media (max-width: 999px) {
  .gg-home .gg-steps__grid .row_col_wrap_12_inner,
  .gg-home .gg-reasons__grid .row_col_wrap_12_inner,
  .gg-home .gg-badges__grid .row_col_wrap_12_inner { grid-template-columns: repeat(2, 1fr); }
  /* the team grid is flex too — it re-columns by its column COUNT variable */
  .gg-home .gg-team__grid .row_col_wrap_12_inner { --gg-team-cols: 2; }
  /* the service grid is flex, so it re-columns by BASIS, not grid-template-columns */
  .gg-home .gg-svccard__grid .wpb_column {
    flex-basis: calc((100% - var(--gg-svc-gap)) / 2);
    max-width: calc((100% - var(--gg-svc-gap)) / 2);
  }
  /* Portrait above the bio once there is no room for them side by side. Capping the
     width keeps it a portrait: stretched to the full column it becomes a 500px-plus
     banner on a tablet and a 200px letterbox on a phone, neither of which frames a face. */
  .gg-home .gg-founder__grid .row_col_wrap_12_inner { grid-template-columns: 1fr; }
  /* !important is required: the base rule above sets max-width:none !important to beat
     Salient's own cap, and that would otherwise outrank this one */
  .gg-home .gg-founder__media .img-with-aniamtion-wrap { max-width: 320px !important; margin: 0 auto !important; }
}
@media (max-width: 690px) {
  .gg-home .gg-steps__grid .row_col_wrap_12_inner,
  .gg-home .gg-reasons__grid .row_col_wrap_12_inner,
  .gg-home .gg-badges__grid .row_col_wrap_12_inner { grid-template-columns: 1fr; gap: 16px; }
  .gg-home .gg-team__grid .row_col_wrap_12_inner { --gg-team-cols: 1; --gg-team-gap: 16px; }
  .gg-home .gg-svccard__grid .row_col_wrap_12_inner { --gg-svc-gap: 16px; }
  .gg-home .gg-svccard__grid .wpb_column { flex-basis: 100%; max-width: 100%; }
  /* square, not a letterbox: one card fills the width on a phone, and 4/5 there would
     be a 450px-tall photo on every one of the fourteen cards */
  .gg-home .gg-teamcard .team-member img { aspect-ratio: 1/1; }
  .gg-home .gg-intro__btns .wpb_wrapper { flex-direction: column; align-items: stretch; }
  .gg-home .gg-svccard .img-with-aniamtion-wrap { height: 200px; }
  /* BOTH selectors are required. Salient puts class `toggle-title` on the very same h3,
     so the desktop rule's second selector `.toggle .toggle-title > a` (4 classes, 1
     element) outranks `.toggle > h3 > a` (3 classes, 2 elements) — class count is
     compared before element count, so the desktop values won inside this media query
     and the mobile padding never applied at all. Matching the pair makes them equal,
     and being later in the file this one wins.
     ONE value moves the whole icon: 25px centres it in the 50px gutter. Never set
     `right` on a single bar here — that is the bug this replaced. */
  .gg-home .gg-faq__list .toggle > h3 > a,
  .gg-home .gg-faq__list .toggle .toggle-title > a {
    padding: 17px 50px 17px 18px !important; font-size: .95rem !important;
    --gg-faq-icon: 25px;
  }
  .gg-home .gg-faq__list .toggle .inner-toggle-wrap { padding: 2px 18px 20px !important; }
}

/* --- inner-page mobile corrections ---------------------------------------
   The FAQ padding rule below has to match the desktop rule's specificity
   (.toggle > h3 > a), or the shorter selector never wins. The banner was
   taking ~88% of a phone screen on the longer page titles. */
@media (max-width: 690px) {
  .gg-home .gg-phero__col { padding-top: 0; }
  .gg-home .gg-phero__head .gg-title { font-size: clamp(1.75rem, 7.4vw, 2.15rem); line-height: 1.12; }
  .gg-home .gg-phero__sub p { font-size: .97rem; }
  .gg-home .gg-phero__sub { margin-top: 12px !important; }
  .gg-home .gg-phero__btns { margin-top: 20px !important; }
}

/* ==========================================================================
   FIX (2026-08-11): bare gg_feature had NO base layout, so on the content
   pages the icon had no box, the title and text ran together, and everything
   read as cramped. Give the bare element a proper icon-top card layout, then
   polish the badge strip, the reason cards and the header dropdown.
   The homepage is unaffected: it only uses .gg-feature--row / .gg-public
   .gg-feature, both of which out-rank this 2-class base selector.
   ========================================================================== */

/* --- reason cards (Why our customers love us / Why choose us) --------------
   The bare gg_feature layout MUST be scoped to .gg-reason. A bare `.gg-feature`
   selector leaks into the homepage's --row / .gg-public features, because CSS
   applies per-property: the higher-specificity context rules only win for the
   properties they declare, so flex-direction / margin / svg-size / title-display
   fall through to a bare rule and shove the homepage icons to the top. (That is
   exactly the regression the first version of this block caused.) */
.gg-home .gg-reasons__grid .row_col_wrap_12_inner { align-items: stretch; }
.gg-home .gg-reason > .vc_column-inner {
  padding: clamp(30px, 3vw, 42px) clamp(26px, 2.6vw, 34px) !important;
  display: flex; text-align: center;
}
.gg-home .gg-reason .gg-feature { display: flex; flex-direction: column; align-items: center; width: 100%; }
.gg-home .gg-reason .gg-feature__icon {
  flex: none; width: 62px; height: 62px; border-radius: 18px;
  display: grid; place-items: center; margin: 0 0 22px;
  background: rgba(168,85,247,.14); color: var(--gg-purple-lt);
}
.gg-home .gg-reason .gg-feature__icon svg { width: 29px; height: 29px; }
.gg-home .gg-reason .gg-feature__body { display: flex; flex-direction: column; align-items: center; width: 100%; }
.gg-home .gg-reason .gg-feature__title {
  display: block; font-family: var(--gg-sora); font-weight: 700;
  font-size: 1.22rem; line-height: 1.3; letter-spacing: -.01em;
  color: var(--gg-text); margin: 0 0 12px;
}
.gg-home .gg-reason .gg-feature__text { display: block; color: var(--gg-body); font-size: .97rem; line-height: 1.72; max-width: 34ch; }

/* --- badge strip (Nationwide / FREE Quotes / Years of Expertise) ----------
   Keep icon-left but size and space it so it reads as a designed trust bar. */
.gg-home .gg-badges__grid .row_col_wrap_12_inner { align-items: center; }
.gg-home .gg-badge .gg-feature { flex-direction: row; align-items: center; gap: 18px; }
.gg-home .gg-badge .gg-feature__icon { margin: 0; width: 54px; height: 54px; border-radius: 15px; }
.gg-home .gg-badge .gg-feature__icon svg { width: 25px; height: 25px; }
.gg-home .gg-badge .gg-feature__title { font-size: 1.05rem; margin-bottom: 5px; }
.gg-home .gg-badge .gg-feature__text { font-size: .9rem; line-height: 1.55; color: var(--gg-mute); }
/* subtle divider between badges on wide screens */
.gg-home .gg-badges__grid .wpb_column + .wpb_column .gg-feature { padding-left: clamp(0px, 2vw, 30px); }

/* --- header dropdown: Salient paints hover/current a SOLID accent bar;
   replace it with a soft, on-brand tint so the panel stops looking heavy. -- */
.gg-site #header-outer .sub-menu li > a,
.gg-site #header-outer nav > ul > li ul li > a,
.gg-site #header-outer .sub-menu li.current-menu-item > a,
.gg-site #header-outer .sub-menu li.current_page_item > a {
  background: none !important; background-color: transparent !important;
}
.gg-site #header-outer .sub-menu li > a:hover,
.gg-site #header-outer nav > ul > li ul li > a:hover,
.gg-site #header-outer .sub-menu li.sfHover > a,
.gg-site #header-outer .sub-menu li.current-menu-item > a:hover {
  background: rgba(168,85,247,.18) !important;
  background-color: rgba(168,85,247,.18) !important;
  color: #fff !important;
}
/* Salient animates a sliding highlight background behind menu items — hide it
   inside the dropdown so two items never light up solid at once. */
.gg-site #header-outer .sub-menu li .sf-menu-item-bg,
.gg-site #header-outer .sub-menu .menu-item-bg,
.gg-site #header-outer .sub-menu li > a::before,
.gg-site #header-outer .sub-menu li > a::after { display: none !important; opacity: 0 !important; background: none !important; }

/* The founder block used to be a lone centred placeholder note. It is now a real
   photo-beside-bio split (see .gg-founder__grid), so the centring that lived here has
   been removed — it sat later in the file than the split rules and would have won. */

/* --- responsive corrections ---------------------------------------------- */
@media (max-width: 690px) {
  .gg-home .gg-badge .gg-feature { gap: 14px; }
  .gg-home .gg-badges__grid .wpb_column + .wpb_column .gg-feature { padding-left: 0; }
  .gg-home .gg-reason > .vc_column-inner { padding: 28px 24px !important; }
}

/* ==========================================================================
   FIX 2 (2026-08-11): container alignment + FAQ initial state.
   The banner / intro / closing-CTA content was centred with `.gg-in` on the
   section's TOP-LEVEL column, but Salient floats that column so margin:auto
   never centred it — the content sat flush against the left viewport edge.
   Content now lives in inner rows carrying `.gg-in` (the pattern every other
   section already uses), so it centres to the 1240 container.
   ========================================================================== */

/* banner: height comes from the section's own top/bottom padding. Do NOT make the
   section display:flex to vertically centre — a flex container shifts how the inner
   .gg-in computes its width, and the banner content stopped aligning with the section
   headings below (it landed ~14px further left). Plain block flow keeps the .gg-in
   centring identical to every other section. */
.gg-home .gg-phero { min-height: clamp(400px, 52vh, 560px); }
/* centred hero content */
.gg-home .gg-phero__col { text-align: center; }
.gg-home .gg-phero__row { margin-bottom: 0 !important; }
.gg-home .gg-phero__head { margin: 0 auto !important; }
.gg-home .gg-phero__head .gg-eyebrow { justify-content: center; }
.gg-home .gg-phero__sub { margin: 18px auto 0 !important; max-width: 60ch; }
.gg-home .gg-phero__btns .wpb_wrapper { justify-content: center; }

/* intro + closing CTA: genuinely centred on the page now */
.gg-home .gg-intro__col { text-align: center; }
.gg-home .gg-intro__col .gg-prose--center { margin-left: auto !important; margin-right: auto !important; }
.gg-home .gg-pcta__col { text-align: center; }
.gg-home .gg-pcta__col .gg-head__sub { margin: 14px auto 0 !important; max-width: 60ch; }
.gg-home .gg-intro__btns .wpb_wrapper,
.gg-home .gg-pcta__btns .wpb_wrapper { display: flex; flex-wrap: wrap; gap: 14px; justify-content: center; }
.gg-home .gg-phero__btns .wpb_wrapper { display: flex; flex-wrap: wrap; gap: 14px; }

/* --- FAQ: closed by default -----------------------------------------------
   Salient's toggle panels render with aria-expanded="false" but NOTHING hides
   them, and the theme's collapse init is not firing on these pages, so every
   answer showed at once. Salient's click handler DOES add `.open` to the
   toggle (verified), so drive visibility from that class. */

/* Salient paints the CURRENT page's dropdown item solid accent (from its generated
   dynamic styles). Kill it with a maximum-specificity override so the "you are here"
   item reads as a soft tint like every other item, not a heavy solid pill. */
html body.gg-site #header-outer ul.sub-menu li.current-menu-item > a,
html body.gg-site #header-outer ul.sub-menu li.current_page_item > a,
html body.gg-site #header-outer ul.sub-menu li.current-menu-ancestor > a {
  background: rgba(168,85,247,.16) !important;
  background-color: rgba(168,85,247,.16) !important;
  background-image: none !important;
  color: #fff !important;
}

/* ==========================================================================
   FIX 3 (2026-08-11): even section rhythm.
   The build gave content sections asymmetric padding (0 top, ~86 bottom), so each
   one borrowed its top gap from the previous section and read as though it had no
   top padding of its own — the "sections have no padding" the client saw. Enforce a
   consistent, self-contained symmetric rhythm; the hero keeps its own tall padding.
   ========================================================================== */
/* Scope to INNER pages only. The homepage carries the same .gg-home body class, so an
   unscoped .gg-section rule would rewrite the (final) homepage's section padding too —
   WordPress puts `home` on the front page's body, so .gg-home:not(.home) is the seam. */
.gg-home:not(.home) .gg-section:not(.gg-phero) {
  padding-top: clamp(50px, 5vw, 68px) !important;
  padding-bottom: clamp(50px, 5vw, 68px) !important;
}
/* compact strips (trust badges, logo marquee) sit a little tighter */
.gg-home:not(.home) .gg-section.gg-badges,
.gg-home:not(.home) .gg-section.gg-logos {
  padding-top: clamp(38px, 4vw, 52px) !important;
  padding-bottom: clamp(38px, 4vw, 52px) !important;
}
/* the closing CTA earns a touch more breathing room */
.gg-home:not(.home) .gg-section.gg-pcta {
  padding-top: clamp(64px, 6.5vw, 92px) !important;
  padding-bottom: clamp(64px, 6.5vw, 92px) !important;
}
@media (max-width: 690px) {
  .gg-home:not(.home) .gg-section:not(.gg-phero) { padding-top: 46px !important; padding-bottom: 46px !important; }
  .gg-home:not(.home) .gg-section.gg-badges, .gg-home:not(.home) .gg-section.gg-logos { padding-top: 34px !important; padding-bottom: 34px !important; }
}

/* ==========================================================================
   CONTACT PAGE — details panel + enquiry form, side by side
   ========================================================================== */
.gg-home .gg-contact__grid .row_col_wrap_12_inner { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(24px, 3vw, 44px); align-items: start; }
.gg-home .gg-contact__grid .wpb_column { width: auto !important; float: none; margin: 0; padding: 0 !important; }

.gg-home .gg-contact__panel > .vc_column-inner {
  background: var(--gg-card); border: 1px solid rgba(255,255,255,.09); border-radius: 28px;
  padding: clamp(28px, 3vw, 44px) !important; height: 100%;
}
.gg-home .gg-contact__intro { margin: 16px 0 0 !important; }
.gg-home .gg-contact__intro .gg-contact__lead { color: var(--gg-body); font-size: 1rem; line-height: 1.7; margin: 0; }

.gg-home .gg-contact__listwrap { margin: 24px 0 0 !important; }
.gg-home .gg-contact__list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; }
.gg-home .gg-contact__list li {
  display: flex; align-items: baseline; gap: 16px;
  padding: 15px 0; border-top: 1px solid rgba(255,255,255,.08); margin: 0;
}
.gg-home .gg-contact__list li:first-child { border-top: 0; }
.gg-home .gg-contact__list .gg-contact__k {
  flex: none; width: 96px; font-family: var(--gg-sora); font-weight: 600; font-size: .74rem;
  letter-spacing: .1em; text-transform: uppercase; color: var(--gg-mute);
}
.gg-home .gg-contact__list li > a,
.gg-home .gg-contact__list li > span:last-child { color: var(--gg-text); font-size: 1.02rem; text-decoration: none; transition: color .2s ease; }
.gg-home .gg-contact__list li > a:hover { color: var(--gg-accent); }

/* form panel: the .gg-book__panel gradient already styles it; tidy the heading + fields */
.gg-home .gg-contact__form > .vc_column-inner { height: 100%; }
.gg-home .gg-contact__form .gg-heading { margin-bottom: 20px !important; }
.gg-home .gg-contact__form .gg-book__form { margin-top: 4px; }

@media (max-width: 860px) {
  .gg-home .gg-contact__grid .row_col_wrap_12_inner { grid-template-columns: 1fr; }
}
@media (max-width: 500px) {
  .gg-home .gg-contact__list .gg-contact__k { width: 80px; font-size: .68rem; }
  .gg-home .gg-contact__list li { flex-wrap: wrap; gap: 4px 16px; }
}

/* ==========================================================================
   FIX 4 (2026-08-11): card link alignment, contact form panel, uniform hero overlay
   ========================================================================== */

/* --- "Learn more…" pinned to the bottom of every card ---------------------
   The cards are equal height and the wrapper is already a flex column, but the
   link sat directly after a description of varying length, so it landed at a
   different height in each card. margin-top:auto pushes it to the bottom. */
.gg-home .gg-svccard__text { padding-bottom: 14px !important; }
.gg-home .gg-svccard__link {
  margin: auto 0 0 !important;          /* auto TOP margin = pin to bottom */
  padding: 0 24px 26px !important;
}
.gg-home .gg-svccard__link a {
  display: inline-flex; align-items: center; gap: 7px;
  font-family: var(--gg-sora); font-weight: 600; font-size: .92rem;
  color: var(--gg-purple-lt); text-decoration: none;
  transition: gap .2s ease, color .2s ease;
}
.gg-home .gg-svccard__link a::after { content: "→"; transition: transform .2s ease; }
.gg-home .gg-svccard:hover .gg-svccard__link a { color: #fff; gap: 11px; }

/* --- contact: form panel needs its own padding ----------------------------
   .gg-contact__grid .wpb_column sets padding:0 !important (to kill Salient's
   column gutter), which also stripped the .gg-book__panel padding — so the dark
   form box sat flush against the gradient panel's edges. Restore it on the
   INNER element, which that rule does not touch. */
.gg-home .gg-contact__grid .row_col_wrap_12_inner { align-items: stretch; }
.gg-home .gg-contact__form > .vc_column-inner {
  padding: clamp(26px, 3vw, 40px) !important;
  height: 100%; display: flex; flex-direction: column;
}
.gg-home .gg-contact__form > .vc_column-inner > .wpb_wrapper { display: flex; flex-direction: column; height: 100%; }
.gg-home .gg-contact__form .gg-heading { margin: 0 0 22px !important; }
.gg-home .gg-contact__form .gg-book__form { margin: 0 !important; flex: 1 1 auto; }
/* the enquiry form's own box: a little more room + comfortable field rhythm */
.gg-home .gg-contact__form .gg-book__form { padding: clamp(20px, 2.4vw, 28px) !important; border-radius: 22px; }
.gg-home .gg-contact__form .wpcf7-form { gap: 16px 14px !important; }
.gg-home .gg-contact__panel > .vc_column-inner { height: 100%; }

@media (max-width: 860px) {
  .gg-home .gg-contact__form > .vc_column-inner { padding: 24px !important; }
}

/* --- hero: ONE even overlay across the whole banner -----------------------
   A radial vignette lightened the middle, which is exactly where the centred
   headline sits. Replace it with a single uniform scrim so every part of the
   hero reads the same, plus a soft bottom fade into the next section. */
.gg-home .gg-phero > .row-bg-wrap::before {
  content: ""; position: absolute; inset: 0; z-index: 4; pointer-events: none;
  /* Sits ON TOP of the image's own brightness(.5), so the two multiply. .35 here
     lands the photo around a third of its original brightness — dark enough for
     white text everywhere, light enough that the photograph still reads. */
  background: rgba(10, 10, 16, .35);
}
.gg-home .gg-phero > .row-bg-wrap::after {
  content: ""; position: absolute; inset: 0; z-index: 4; pointer-events: none;
  background: linear-gradient(180deg, rgba(10,10,16,.35) 0%, rgba(10,10,16,0) 22%, rgba(10,10,16,0) 74%, #0A0A10 100%);
}

/* ==========================================================================
   FIX 5 (2026-08-11): contact panel — real icons, row rhythm, heading spacing
   The rows had NO icon at all (just a small-caps text label), and the enquiry
   heading sat almost on top of the form box.

   Icons are masked SVG data-URIs driven off a class on each <li>, so the page
   markup stays plain text + links (no inline SVG to survive a KSES save) and the
   client can edit any value without touching an icon.
   ========================================================================== */

/* --- heading gets real breathing room above the form box ------------------ */
.gg-home .gg-contact__form .gg-head { margin: 0 0 30px !important; }

/* --- contact rows: icon tile + label + value ------------------------------ */
.gg-home .gg-contact__listwrap { margin: 30px 0 0 !important; }
.gg-home .gg-contact__list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 4px; }

.gg-home .gg-contact__list li.gg-ci {
  display: grid;
  grid-template-columns: 46px 1fr;
  grid-template-rows: auto auto;
  column-gap: 16px; row-gap: 3px;
  align-items: center;
  padding: 15px 0; margin: 0;
  border-top: 1px solid rgba(255,255,255,.07);
}
.gg-home .gg-contact__list li.gg-ci:first-child { border-top: 0; padding-top: 0; }

/* icon tile */
.gg-home .gg-contact__list li.gg-ci::before {
  content: ""; grid-column: 1; grid-row: 1 / 3;
  width: 46px; height: 46px; border-radius: 14px;
  background-color: rgba(168,85,247,.14);
  align-self: center;
}
/* the glyph, masked so a single rule colours every icon */
.gg-home .gg-contact__list li.gg-ci::after {
  content: ""; grid-column: 1; grid-row: 1 / 3;
  width: 22px; height: 22px;
  align-self: center; justify-self: center;
  background-color: var(--gg-purple-lt);
  -webkit-mask-repeat: no-repeat; mask-repeat: no-repeat;
  -webkit-mask-position: center; mask-position: center;
  -webkit-mask-size: contain; mask-size: contain;
  pointer-events: none;
}
/* alternate the tint so the list has rhythm */
.gg-home .gg-contact__list li.gg-ci:nth-child(even)::before { background-color: rgba(77,141,240,.14); }
.gg-home .gg-contact__list li.gg-ci:nth-child(even)::after { background-color: var(--gg-blue-lt); }

.gg-home .gg-contact__list .gg-contact__k {
  grid-column: 2; grid-row: 1; width: auto;
  font-family: var(--gg-sora); font-weight: 600; font-size: .68rem;
  letter-spacing: .13em; text-transform: uppercase; color: var(--gg-mute);
}
.gg-home .gg-contact__list li.gg-ci > a,
.gg-home .gg-contact__list li.gg-ci > span:last-child {
  grid-column: 2; grid-row: 2;
  color: var(--gg-text); font-size: 1.02rem; line-height: 1.5;
  text-decoration: none !important; border-bottom: 0 !important;
  transition: color .2s ease;
}
.gg-home .gg-contact__list li.gg-ci > a:hover { color: var(--gg-purple-lt); }

/* --- the glyphs ----------------------------------------------------------- */
.gg-home .gg-ci--whatsapp::after {
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 11.5a8.4 8.4 0 0 1-12.6 7.3L3 20.5l1.8-5.2A8.4 8.4 0 1 1 21 11.5z'/%3E%3C/svg%3E");
          mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 11.5a8.4 8.4 0 0 1-12.6 7.3L3 20.5l1.8-5.2A8.4 8.4 0 1 1 21 11.5z'/%3E%3C/svg%3E");
}
.gg-home .gg-ci--phone::after {
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M22 16.9v3a2 2 0 0 1-2.2 2 19.8 19.8 0 0 1-8.6-3.1 19.5 19.5 0 0 1-6-6A19.8 19.8 0 0 1 2.1 4.2 2 2 0 0 1 4.1 2h3a2 2 0 0 1 2 1.7c.1 1 .4 1.9.7 2.8a2 2 0 0 1-.5 2.1L8.1 9.9a16 16 0 0 0 6 6l1.3-1.3a2 2 0 0 1 2.1-.5c.9.3 1.8.6 2.8.7a2 2 0 0 1 1.7 2z'/%3E%3C/svg%3E");
          mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M22 16.9v3a2 2 0 0 1-2.2 2 19.8 19.8 0 0 1-8.6-3.1 19.5 19.5 0 0 1-6-6A19.8 19.8 0 0 1 2.1 4.2 2 2 0 0 1 4.1 2h3a2 2 0 0 1 2 1.7c.1 1 .4 1.9.7 2.8a2 2 0 0 1-.5 2.1L8.1 9.9a16 16 0 0 0 6 6l1.3-1.3a2 2 0 0 1 2.1-.5c.9.3 1.8.6 2.8.7a2 2 0 0 1 1.7 2z'/%3E%3C/svg%3E");
}
.gg-home .gg-ci--email::after {
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='2.5' y='4.5' width='19' height='15' rx='2.5'/%3E%3Cpath d='m21 7-9 5.5L3 7'/%3E%3C/svg%3E");
          mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='2.5' y='4.5' width='19' height='15' rx='2.5'/%3E%3Cpath d='m21 7-9 5.5L3 7'/%3E%3C/svg%3E");
}
.gg-home .gg-ci--instagram::after {
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='2.5' y='2.5' width='19' height='19' rx='5'/%3E%3Ccircle cx='12' cy='12' r='4'/%3E%3Ccircle cx='17.4' cy='6.6' r='1'/%3E%3C/svg%3E");
          mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='2.5' y='2.5' width='19' height='19' rx='5'/%3E%3Ccircle cx='12' cy='12' r='4'/%3E%3Ccircle cx='17.4' cy='6.6' r='1'/%3E%3C/svg%3E");
}
.gg-home .gg-ci--studio::after {
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 10.2c0 5.6-8 11.8-8 11.8s-8-6.2-8-11.8a8 8 0 0 1 16 0z'/%3E%3Ccircle cx='12' cy='10' r='2.8'/%3E%3C/svg%3E");
          mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 10.2c0 5.6-8 11.8-8 11.8s-8-6.2-8-11.8a8 8 0 0 1 16 0z'/%3E%3Ccircle cx='12' cy='10' r='2.8'/%3E%3C/svg%3E");
}
.gg-home .gg-ci--coverage::after {
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M3 12h18M12 3a15 15 0 0 1 0 18 15 15 0 0 1 0-18z'/%3E%3C/svg%3E");
          mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M3 12h18M12 3a15 15 0 0 1 0 18 15 15 0 0 1 0-18z'/%3E%3C/svg%3E");
}

@media (max-width: 500px) {
  .gg-home .gg-contact__list li.gg-ci { grid-template-columns: 40px 1fr; column-gap: 13px; }
  .gg-home .gg-contact__list li.gg-ci::before { width: 40px; height: 40px; border-radius: 12px; }
  .gg-home .gg-contact__list li.gg-ci::after { width: 19px; height: 19px; }
  .gg-home .gg-contact__list li.gg-ci > a,
  .gg-home .gg-contact__list li.gg-ci > span:last-child { font-size: .96rem; }
}

/* ==========================================================================
   REVIEWS CAROUSEL  [gg_reviews]
   The cards themselves are the existing .gg-quote design — untouched. This is
   only the track, arrows and dots around them. Pre-JS the track is a wrapped
   row so the reviews still read with JavaScript off; .is-ready switches it to
   the sliding layout.
   ========================================================================== */
.gg-home .gg-reviews { --gg-rv-per: 3; --gg-rv-gap: clamp(18px, 2vw, 26px); position: relative; }

/* no-JS fallback: a plain wrapped row */
.gg-home .gg-reviews__track { display: flex; flex-wrap: wrap; gap: var(--gg-rv-gap); }
.gg-home .gg-reviews__slide { flex: 1 1 300px; min-width: 0; display: flex; }
.gg-home .gg-reviews__nav { display: none; }

/* JS-upgraded carousel */
.gg-home .gg-reviews.is-ready .gg-reviews__viewport { overflow: hidden; width: 100%; }
.gg-home .gg-reviews.is-ready .gg-reviews__track {
  flex-wrap: nowrap; align-items: stretch;
  /* longer travel with a soft decelerating tail reads as "gliding" rather than
     "snapping" — the shorter material curve felt abrupt at three cards a page */
  transition: transform .78s cubic-bezier(.22, .61, .36, 1);
  will-change: transform;
  backface-visibility: hidden;
}
/* each slide is an exact fraction of the viewport, gaps accounted for */
.gg-home .gg-reviews.is-ready .gg-reviews__slide {
  flex: 0 0 calc((100% - (var(--gg-rv-per) - 1) * var(--gg-rv-gap)) / var(--gg-rv-per));
  max-width: calc((100% - (var(--gg-rv-per) - 1) * var(--gg-rv-gap)) / var(--gg-rv-per));
}
/* the quote card fills its slide so every card in a row is the same height */
.gg-home .gg-reviews__slide > .gg-quote { width: 100%; height: 100%; margin: 0; }

/* Desktop layout: arrows FLANK the cards, vertically centred against them, with the
   dots on their own row underneath. `display:contents` dissolves the nav wrapper so
   its three children become grid items of the carousel itself — that is what lets
   `align-self:center` centre each arrow against the card row rather than against the
   whole component (which would include the dots row and sit too low). */
.gg-home .gg-reviews.is-ready {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  grid-template-rows: auto auto;
  column-gap: clamp(12px, 1.6vw, 22px);
  align-items: center;
}
.gg-home .gg-reviews.is-ready .gg-reviews__viewport { grid-column: 2; grid-row: 1; }
.gg-home .gg-reviews.is-ready .gg-reviews__nav { display: contents; }
.gg-home .gg-reviews.is-ready .gg-reviews__arrow--prev { grid-column: 1; grid-row: 1; align-self: center; }
.gg-home .gg-reviews.is-ready .gg-reviews__arrow--next { grid-column: 3; grid-row: 1; align-self: center; }
.gg-home .gg-reviews.is-ready .gg-reviews__dots {
  grid-column: 1 / -1; grid-row: 2; justify-self: center;
  margin-top: clamp(24px, 2.6vw, 34px);
}
/* premium glass button */
.gg-home .gg-reviews__arrow {
  width: 52px; height: 52px; flex: none; padding: 0; cursor: pointer;
  /* !important is load-bearing: Salient's global button style emits
     `body[data-button-style*="slightly_rounded"] button { border-radius:4px !important }`
     in salient-dynamic-styles.css, which squares off EVERY <button> on the site —
     these arrows and the dots below included. Our selector outranks it, so an
     !important of our own is the only thing that restores the circle. */
  border-radius: 50% !important;
  border: 1px solid rgba(255,255,255,.14);
  background: linear-gradient(160deg, rgba(255,255,255,.09), rgba(255,255,255,.03));
  -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px);
  box-shadow: 0 10px 26px -14px rgba(0,0,0,.9);
  /* flex, not grid: `display:grid` on a <button> is the shape browsers have had
     the most trouble with historically. This dead-centres the glyph either way. */
  display: flex; align-items: center; justify-content: center;
  transition: background .28s ease, border-color .28s ease, transform .28s ease, box-shadow .28s ease;
}
/* The glyph is a masked SVG chevron: it is centred by its own 24x24 viewBox, so it
   lands dead centre. A rotated CSS border-corner never quite does — its visual mass
   sits off the box centre, which is what made the old arrows look misaligned. */
.gg-home .gg-reviews__arrow::before {
  content: ""; width: 20px; height: 20px;
  background-color: var(--gg-body-2);
  -webkit-mask-repeat: no-repeat; mask-repeat: no-repeat;
  -webkit-mask-position: center; mask-position: center;
  -webkit-mask-size: contain; mask-size: contain;
  transition: background-color .28s ease;
}
/* Both paths span x 9..15 and y 6..18 — dead centre on 12,12 of the 24 viewBox, and the
   round caps extend them symmetrically. So "centred by the viewBox" is literally true
   here; an asymmetric path would sit visibly off inside the circle. */
.gg-home .gg-reviews__arrow--prev::before {
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.25' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m15 18-6-6 6-6'/%3E%3C/svg%3E");
          mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.25' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m15 18-6-6 6-6'/%3E%3C/svg%3E");
}
.gg-home .gg-reviews__arrow--next::before {
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.25' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m9 18 6-6-6-6'/%3E%3C/svg%3E");
          mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.25' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m9 18 6-6-6-6'/%3E%3C/svg%3E");
}
.gg-home .gg-reviews__arrow:hover {
  background: linear-gradient(160deg, rgba(168,85,247,.34), rgba(77,141,240,.22));
  border-color: rgba(168,85,247,.55);
  transform: translateY(-2px);
  box-shadow: 0 16px 32px -16px rgba(168,85,247,.85);
}
.gg-home .gg-reviews__arrow:hover::before { background-color: #fff; }
.gg-home .gg-reviews__arrow:active { transform: translateY(0) scale(.96); }
.gg-home .gg-reviews__arrow:focus-visible { outline: 2px solid var(--gg-accent); outline-offset: 3px; }

.gg-home .gg-reviews__dots { display: flex; align-items: center; gap: 9px; }
/* same Salient !important button-radius trap as the arrows above */
.gg-home .gg-reviews__dot {
  width: 9px; height: 9px; padding: 0; cursor: pointer;
  border: 0; border-radius: 50% !important; background: rgba(255,255,255,.22);
  transition: background .25s ease, width .25s ease, border-radius .25s ease;
}
.gg-home .gg-reviews__dot.is-on {
  width: 26px; border-radius: 6px !important;
  background: linear-gradient(90deg, var(--gg-blue), var(--gg-accent));
}
.gg-home .gg-reviews__dot:focus-visible { outline: 2px solid var(--gg-accent); outline-offset: 3px; }

/* Phones have no spare width to give up to flanking arrows, so the component falls
   back to a single column with the arrows and dots on one row underneath. */
@media (max-width: 690px) {
  .gg-home .gg-reviews.is-ready { display: block; }
  .gg-home .gg-reviews.is-ready .gg-reviews__nav {
    display: flex; align-items: center; justify-content: center;
    gap: 14px; margin-top: 22px;
  }
  .gg-home .gg-reviews.is-ready .gg-reviews__dots { margin-top: 0; }
  .gg-home .gg-reviews__arrow { width: 44px; height: 44px; }
  .gg-home .gg-reviews__arrow::before { width: 18px; height: 18px; }
}

/* one page = nothing to navigate. Last so it beats both layouts above. */
.gg-home .gg-reviews.is-static .gg-reviews__nav { display: none; }

@media (prefers-reduced-motion: reduce) {
  .gg-home .gg-reviews.is-ready .gg-reviews__track { transition: none; }
}

/* The reviews carousel sits in its OWN full-width row — it must not inherit
   .gg-quotes__grid's 3-up CSS grid, which would squeeze it into one ~400px cell. */
.gg-home .gg-reviews__row { margin-top: 44px !important; }
.gg-home .gg-reviews__row .row_col_wrap_12_inner { display: block; }
.gg-home .gg-reviews__row .wpb_column { width: 100% !important; float: none; margin: 0; padding: 0 !important; }
.gg-home .gg-reviews__row .wpb_column > .vc_column-inner { padding: 0 !important; }

/* ==========================================================================
   CLIENT ROUND (2026-08-14): kids booking box, page-foot enquiry form,
   Kids Parties CTA
   ========================================================================== */

/* --- Contact page: direct Acuity booking for kids parties ----------------- */
/* A link, not a form route — it books straight into the client's calendar, so it is
   styled as its own card rather than another row in the contact list above it. */
.gg-home .gg-kidsbox__wrap { margin: 26px 0 0 !important; }
.gg-home a.gg-kidsbox {
  display: block; text-decoration: none !important;
  padding: 20px 22px; border-radius: 18px;
  border: 1px solid rgba(168,85,247,.34);
  background: linear-gradient(150deg, rgba(168,85,247,.16), rgba(77,141,240,.10));
  transition: transform .22s ease, border-color .22s ease, box-shadow .22s ease;
}
.gg-home a.gg-kidsbox:hover {
  transform: translateY(-3px); border-color: rgba(168,85,247,.6);
  box-shadow: 0 22px 44px -26px rgba(168,85,247,.9);
}
.gg-home .gg-kidsbox__k {
  display: block; font-size: .68rem; font-weight: 700; letter-spacing: .16em;
  text-transform: uppercase; color: var(--gg-blue-lt); margin-bottom: 8px;
}
.gg-home .gg-kidsbox__t {
  display: flex; align-items: center; gap: 9px;
  font-family: var(--gg-sora); font-weight: 700; font-size: 1.08rem; color: #fff;
}
.gg-home .gg-kidsbox__t::after {
  content: ""; width: 15px; height: 15px; flex: none; background-color: currentColor;
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12h14M13 6l6 6-6 6'/%3E%3C/svg%3E") center / contain no-repeat;
          mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12h14M13 6l6 6-6 6'/%3E%3C/svg%3E") center / contain no-repeat;
  transition: transform .22s ease;
}
.gg-home a.gg-kidsbox:hover .gg-kidsbox__t::after { transform: translateX(4px); }
.gg-home .gg-kidsbox__s {
  display: block; margin-top: 6px; font-size: .88rem; line-height: 1.6; color: var(--gg-body);
}

/* --- contact section at the foot of every page ---------------------------- */
/* It now carries .gg-contact__grid and the exact column classes the Contact page uses,
   so the whole two-column layout, the icon rows and the form panel are inherited — the
   only thing this section needs of its own is its heading rhythm. */
.gg-home .gg-formsec .gg-contact__panel .gg-head { margin-bottom: 0; }

/* --- Kids Parties CTA ----------------------------------------------------- */
/* Ghost like WhatsApp, but tinted blue so three buttons in a row still read as a
   hierarchy (one primary, two secondary) rather than a wall of identical pills. */
.gg-home .nectar-button.gg-btn--kids {
  box-shadow: inset 0 0 0 1.5px rgba(127,169,245,.42) !important;
}
.gg-home .nectar-button.gg-btn--kids span { color: var(--gg-blue-pl) !important; }
.gg-home .nectar-button.gg-btn--kids:hover {
  box-shadow: inset 0 0 0 1.5px var(--gg-blue) !important;
}
.gg-home .nectar-button.gg-btn--kids:hover span { color: #fff !important; }

@media (max-width: 690px) {
  .gg-home a.gg-kidsbox { padding: 17px 18px; }
}

/* Anchor target injected for a row's el_id. scroll-margin keeps the fixed header from
   covering the section heading when the in-page link jumps to it. */
.gg-site .gg-anchor { display: block; height: 0; scroll-margin-top: 110px; }

/* ==========================================================================
   CLIENT ROUND (2026-08-20)
   1. Hero eyebrow copy + hero testimonial chip removed  (content only)
   2. "For any other event…" note replacing the duplicate kids-parties box
   3. WhatsApp widget avatar
   ========================================================================== */

/* --- enquiry note in the contact panel ------------------------------------
   Replaces the second "Book Here for kids events!" card, which repeated the
   Acuity link already sitting directly above it. This is a note, not a call to
   action, so it deliberately carries none of the card's weight — no border, no
   panel, no arrow — and simply points at the form further down the section. */
/* The panel lives on the WRAPPER, not the paragraph. Salient ships
   `.row .col p:last-child { padding-bottom: 0 }` (0,3,1) which outranks any
   `.gg-home .gg-othernote p` rule (0,2,1), so a padded <p> loses its bottom
   padding and the text sits flush on the panel edge. Padding the wrapper puts
   it out of that rule's reach entirely — no !important arms race. */
.gg-home .gg-othernote {
  margin: 22px 0 0 !important;
  padding: 15px 18px;
  border-left: 2px solid rgba(168,85,247,.5);
  background: rgba(168,85,247,.07);
  border-radius: 0 12px 12px 0;
}
.gg-home .gg-othernote p {
  margin: 0; padding: 0;
  font-size: .92rem; line-height: 1.65; color: var(--gg-body-2);
}

/* --- WhatsApp widget avatar -----------------------------------------------
   The brand logo is a SQUARE neon sign on a near-black ground, so the old
   treatment (white circle, image inset to 84% and letterboxed by object-fit:
   contain) framed it in a white ring and shrank the wordmark until it was
   unreadable at 40px. A circle cannot help here either: the neon frame's
   corners sit outside any inscribed circle, so they would always be clipped.
   Squaring off the tile with a soft radius lets the whole sign show, fills it
   edge to edge, and drops the white ground the logo never needed. */
.gg-wa__avatar {
  width: 44px; height: 44px;
  border-radius: 12px;
  background: #0B0C14;
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.18);
}
.gg-wa__avatar img { width: 100%; height: 100%; object-fit: cover; }

/* ==========================================================================
   CLIENT ROUND (2026-08-25): Meet the Team bios broke when new copy was added

   The new bios are multi-paragraph. The bio is a shortcode ATTRIBUTE, and
   wpautop runs one priority BEFORE do_shortcode, so it turned the blank lines
   between paragraphs into `</p><p>` while they were still inside the attribute
   — closing `<p class="description">` after paragraph one and leaving the rest
   loose in the card, unstyled and outside the clamp. gg_team_member_bio_
   paragraphs() in functions.php now rebuilds the bio as a `.description` DIV of
   real paragraphs; these rules give those paragraphs their rhythm.

   Salient's own `.row .col .team-member p.description` (borders + 15px margins)
   no longer matches a DIV, so the box starts clean and needs no overrides.
   ========================================================================== */
.gg-home .gg-teamcard .team-member .description p {
  margin: 0 0 .85em; padding: 0;
  font-size: inherit; line-height: inherit; color: inherit;
}
.gg-home .gg-teamcard .team-member .description p:last-child { margin-bottom: 0; }

/* ==========================================================================
   CLIENT ROUND (2026-08-27)
   1. WhatsApp CTA in the Contact hero — WhatsApp green with a green glow
   2. Audiences section — Corporate / Private / Public as three equal cards
   ========================================================================== */

/* --- 1. WhatsApp button ---------------------------------------------------
   Keyed to its own class (like gg-btn--kids) rather than to the wa.me href, so
   the skin is opt-in per button: the other 18 WhatsApp links on the site stay
   as they are until the class is added to them.
   White on #25D366 measures 1.98:1 and is unreadable, so the label goes dark
   green (7.3:1). The "glow" is the same elevated-shadow language the purple
   primary already uses, pushed a little further and tinted green. */
.gg-home .nectar-button.gg-btn--wa {
  background: var(--gg-wa) !important;
  box-shadow: 0 0 22px -2px rgba(37,211,102,.55), 0 14px 34px -12px rgba(37,211,102,.95) !important;
}
.gg-home .nectar-button.gg-btn--wa,
.gg-home .nectar-button.gg-btn--wa span { color: #06301A !important; }
.gg-home .nectar-button.gg-btn--wa:hover {
  transform: translateY(-2px);
  box-shadow: 0 0 30px 0 rgba(37,211,102,.7), 0 20px 44px -10px var(--gg-wa) !important;
}

/* --- 2. three audience cards ----------------------------------------------
   The row was two 440px-basis cards plus a full-width strip underneath. Three
   cards at that basis (3x440 + 2x24 = 1368) overflow the 1240 container and
   wrap 2+1, so the basis comes down; they still collapse to 2-up and 1-up on
   the way down. */
.gg-home .gg-aud__grid .row_col_wrap_12_inner > .wpb_column { flex: 1 1 300px; min-width: 280px; }

/* Public card: continues the blue -> purple progression into magenta rather
   than inventing a colour from outside the palette. */
.gg-home .gg-card--pub {
  background: linear-gradient(155deg, #2A1030 0%, #45184A 100%);
  border: 1px solid rgba(232,121,249,.32);
}
.gg-home .gg-card--pub:hover { transform: translateY(-6px); box-shadow: 0 34px 70px -30px rgba(232,121,249,.5); }
.gg-home .gg-card--pub .img-with-aniamtion-wrap::after {
  content: ""; position: absolute; inset: 0;
  background: linear-gradient(180deg, rgba(42,16,48,.05) 35%, #2A1030 100%);
}
.gg-home .gg-card--pub .gg-card__badge p { color: #F3B9FB; border: 1px solid rgba(232,121,249,.4); }
.gg-home .gg-card--pub .gg-card__text p { color: #E2C6E8; margin: 0; }
.gg-home .nectar-button.gg-link--pink,
.gg-home .nectar-button.gg-link--pink span { color: var(--gg-pink) !important; }
.gg-home .nectar-button.gg-link--pink:hover span { color: #fff !important; }

/* Three cards wrap to 2-up then 1-up on the site's existing breakpoints. The
   max-width matters: without it flex-grow stretches a lone wrapped card to the
   full row, so the third box would sit double-width under the other two. */
@media only screen and (max-width: 999px) {
  .gg-home .gg-aud__grid .row_col_wrap_12_inner > .wpb_column {
    flex: 1 1 calc(50% - 12px); max-width: calc(50% - 12px);
  }
}
@media only screen and (max-width: 690px) {
  .gg-home .gg-aud__grid .row_col_wrap_12_inner > .wpb_column {
    flex: 1 1 100%; max-width: 100%;
  }
}

/* --- 3. Contact hero: the enquiry-form note moved up under the buttons -----
   Contact page only. The note itself already carries the tinted panel + left
   rule it uses further down the page; over the hero photograph that tint is
   too faint to read, so it gets a dark backing here and nothing else changes.
   Salient paints a row background wrapper on every inner row and the two other
   hero rows already hide theirs — this one needs the same or a black band
   shows behind the note. */
.gg-home .gg-phero__contact .row-bg-wrap { display: none !important; }
.gg-home .gg-phero__contact { margin: 22px auto 0 !important; max-width: 720px; }
.gg-home .gg-phero__contact .gg-othernote {
  margin: 0 !important;
  padding: 14px 18px;
  text-align: left;
  background: rgba(10,10,16,.62);
  border-left: 2px solid rgba(168,85,247,.65);
  border-radius: 0 14px 14px 0;
  -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px);
}
@media only screen and (max-width: 690px) {
  .gg-home .gg-phero__contact .gg-othernote { padding: 12px 14px; }
}
