/* ==========================================================================
   Palette — taken from valunxt.com (2026-08-31)

   These are that site's own custom properties, read off the live page, mapped
   onto the token names this build already uses. The --vxn-gold-* names are kept
   deliberately: they are referenced in ~2,900 lines here and in the generated
   Elementor CSS, and renaming them would be a much larger and riskier edit than
   changing what they hold. Read "gold" as "the accent" — it is blue now.
   ========================================================================== */
:root {
  /* Their palette, under their names, so the source is traceable. */
  /* The #0B2DBE family became the CTA ramp's #0B2DBE family on 20260914,
     on client instruction, for India and every global page — the UAE sheets
     already ran it. Dark is the CTA sweep colour, light the ramp's midpoint. */
  --vxn-blue: #0B2DBE;
  --vxn-blue-dark: #08248F;
  --vxn-blue-light: #1436D8;
  --vxn-violet: #9C00DD;
  --vxn-navy-2: #0E355F;
  --vxn-sky: #8FB7FF;
  --vxn-ink: #16233B;
  --vxn-text: #35415A;
  --vxn-muted: #6A7590;
  --vxn-cream: #F6F4EF;
  --vxn-card: #FBFAF7;
  --vxn-line: rgba(11, 44, 86, .12);
  --vxn-line-inv: rgba(255, 255, 255, .16);

  /* Height of the pinned navbar. The mega-menu sheet hangs off it, so the two
     have to agree — keep this in step with `--min-height` on
     `.elementor-location-header .vamtam-sticky-header`. */
  --vxn-navh: 94px;

  /* The brand fill. It is written as a gradient with one colour on purpose:
     roughly 150 rules paint it through `background-image: var(--vxn-grad-gold)`
     — buttons, the feature bands, the panels, every card hover — and a plain
     hex there would paint nothing. Flattening it here changes all of them at
     once; put two stops back and the gradient returns everywhere. */
  --vxn-grad-gold: linear-gradient(150deg, #0E3FA8 0%, #1436D8 48%, #0B2DBE 100%);
  /* The same fill one step darker, for the states that need to differ. */
  --vxn-grad-hover: linear-gradient(150deg, #0B2DBE 0%, #08248F 100%);
  --vxn-grad-soft: linear-gradient(115deg, #1436D8 0%, #B24DE8 100%);
  /* Dark surfaces keep their blue-to-navy fall — this is a background for
     whole sections, not the accent fill. */
  --vxn-grad-navy: linear-gradient(115deg, #0B2DBE 0%, #0E355F 100%);
  /* Their footer panel. */
  --vxn-grad-footer: linear-gradient(165deg, #1436D8 0%, #0B2DBE 45%, #08248F 100%);

  /* Legacy names, now pointing at the new palette. */
  --vxn-navy: #0B2DBE;
  --vxn-navy-dark: #0E355F;
  --vxn-gold: #0B2DBE;
  /* The secondary accent — ghost-button text, small labels, the cookie link,
     the switcher tick. It was the violet half of the gradient; with the fill
     flat, a violet accent has nothing to belong to, so it is the fill one step
     darker. The violet itself stays defined above for the logo. */
  --vxn-gold-dark: #08248F;

  /* ---- THE ONE CTA (20260911) --------------------------------------------
     Every pill on the site draws its geometry from these, and the fill from
     one of three finishes: the gradient on a light ground, white with the ink
     on a dark or photographic ground, and an outline. The geometry is enforced
     at the foot of this file (THE ONE CTA) on every button class the site
     renders; the per-section sheets read the same tokens so the two agree.
     The wedge that sweeps a CTA on hover (CTA HOVER, below) takes the dark
     value on a filled pill and the light one on an inverse pill. */
  --vxn-cta-grad: linear-gradient(150deg, #0E3FA8 0%, #1436D8 48%, #0B2DBE 100%);
  --vxn-cta-ink: #0B2DBE;
  --vxn-cta-h: 46px;
  --vxn-cta-px: 28px;
  --vxn-cta-fs: 14px;
  /* Regular, on client instruction (20260911): the pills were 600, which in
     Sanomat Sans, with no 600 cut, drew the Bold face. */
  --vxn-cta-fw: 400;
  --vxn-cta-ls: .01em;
  --vxn-cta-r: 999px;
  --vxn-cta-sweep-dark: #08248F;
  --vxn-cta-sweep-light: #EAF0FF;
}

.elementor-button:not(.elementor-button-info):not(.elementor-button-success):not(.elementor-button-warning):not(.elementor-button-danger),
a.elementor-button:not(.elementor-button-info):not(.elementor-button-success):not(.elementor-button-warning):not(.elementor-button-danger),
.elementor-cta__button,
.wp-block-button__link,
.vamtam-button,
.vamtam-btn,
form.elementor-form button[type="submit"] {
  /* The one CTA gradient (20260911); was the flat --vxn-grad-gold. */
  background-image: var(--vxn-cta-grad) !important;
  background-color: var(--vxn-cta-ink) !important;
  color: #fff !important;
  fill: #fff !important;
  border-color: transparent !important;
  --vxn-cta-sweep: var(--vxn-cta-sweep-dark);
}

.elementor-button:not(.elementor-button-info):not(.elementor-button-success):not(.elementor-button-warning):not(.elementor-button-danger):hover,
.elementor-button:not(.elementor-button-info):not(.elementor-button-success):not(.elementor-button-warning):not(.elementor-button-danger):focus,
a.elementor-button:not(.elementor-button-info):not(.elementor-button-success):not(.elementor-button-warning):not(.elementor-button-danger):hover,
a.elementor-button:not(.elementor-button-info):not(.elementor-button-success):not(.elementor-button-warning):not(.elementor-button-danger):focus,
.elementor-cta__button:hover,
.wp-block-button__link:hover,
.vamtam-button:hover,
.vamtam-btn:hover,
form.elementor-form button[type="submit"]:hover {
  /* The darker fill is NOT set here any more. It arrives as the skewed wipe in
     the "CTA hover" section at the foot of this file — swapping the background
     outright here would repaint the button instantly and the wipe would have
     nothing to reveal. The resting fill stays; only the label is asserted. */
  color: #FFFFFF !important;
  fill: #FFFFFF !important;
  border-color: transparent !important;
}

[data-vxn-dark],
.vxn-dark {
  background-image: var(--vxn-grad-navy) !important;
}

.elementor-section[style*="0E355F"],
.elementor-section>.elementor-background-overlay[style*="0E355F"],
.e-con[style*="0E355F"],
.elementor-element[style*="0E355F"] {
  background-image: var(--vxn-grad-navy) !important;
}

.has-midnight-gradient-background {
  background: var(--vxn-grad-navy) !important;
}

.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background {
  background: var(--vxn-grad-gold) !important;
}

.elementor-location-header .elementor-element-72e5739 img {
  max-width: 180px !important;
}

.elementor-location-header .elementor-element-8d706f9 img,
.elementor-location-header .elementor-element-2d2e9ea img {
  max-width: 150px !important;
}

.elementor-widget-image:has(img[src*="/group-"]) {
  width: auto !important;
  max-width: none !important;
  flex: 0 0 auto !important;
}

.elementor-widget-image:has(img[src*="/group-"]) .elementor-widget-container {
  width: auto !important;
}

.e-con:has(> .elementor-widget-image img[src*="/group-"]),
.e-con-inner:has(> .elementor-widget-image img[src*="/group-"]) {
  justify-content: center !important;
  align-items: center !important;
  gap: 32px !important;
  flex-wrap: wrap !important;
}

.elementor-widget-image:has(img[src*="/group-"])>.elementor-widget-container>a,
.elementor-widget-image:has(img[src*="/group-"])>.elementor-widget-container {
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  width: 200px !important;
  height: 50px !important;
  max-width: 200px !important;
  overflow: hidden !important;
}

img[src*="/group-valunxt-corporate"],
img[src*="/group-reliant-surveyors"] {
  width: 100% !important;
  height: 100% !important;
  max-width: 100% !important;
  object-fit: contain !important;
  object-position: center !important;
}

.vamtam-footer,
footer.elementor-location-footer,
.elementor-location-footer>.elementor-section-wrap,
.elementor-2094 .elementor-element.elementor-element-6578101,
.elementor-2094 .elementor-element.elementor-element-6578101:not(.elementor-motion-effects-element-type-background),
.elementor-2094 .elementor-element.elementor-element-a66bf67,
.elementor-2094 .elementor-element.elementor-element-a66bf67:not(.elementor-motion-effects-element-type-background),
.elementor-2094 .elementor-element.elementor-element-e5832a5,
.elementor-2094 .elementor-element.elementor-element-e5832a5:not(.elementor-motion-effects-element-type-background) {
  background-image: none !important;
  background-color: var(--vxn-navy-dark) !important;

}

/* Footer logo. The 13px pull-left was compensating for the whitespace inside
   the old two-line PNG; the new single-line SVG is flush, so the nudge was
   pushing the mark out of line with the paragraph beneath it. */
.elementor-2094 .elementor-element.elementor-element-6a0cd31 img {
  width: 180px !important;
  height: auto !important;
  position: static;
  margin-bottom: 14px;
}

.elementor-2094 .elementor-element.elementor-element-7a5ce4a .elementor-element-ed7850a {
  margin-top: 14px;
}

.elementor-2094 .elementor-element.elementor-element-7a5ce4a .elementor-social-icons-wrapper {
  justify-content: flex-start !important;
}

.elementor-2094 .elementor-element.elementor-element-a66bf67>.e-con-inner {
  justify-content: flex-end !important;
  position: fixed;
  right: 33px;
  bottom: 0px;
  z-index: 1;
}

@media (min-width: 1025px) {
  .elementor-2094 .elementor-element.elementor-element-7a5ce4a {
    --width: 30%;
    gap: 0;
    z-index: 999;
  }

  .elementor-2094 .elementor-element.elementor-element-df2c858 {
    --width: 15%;
  }

  .elementor-2094 .elementor-element.elementor-element-aa41969 {
    --width: 27%;
  }

  .elementor-2094 .elementor-element.elementor-element-aa41969 .elementor-nav-menu .elementor-item {
    white-space: nowrap;
  }

  .elementor-2094 .elementor-element.elementor-element-b2872b3 {
    --width: 28%;

    margin-top: 43px;
  }

}

.elementor-2094 .elementor-element.elementor-element-b2872b3 {
  background-color: var(--vxn-navy) !important;

  border-radius: 14px;
  padding: 26px 28px !important;

  margin-bottom: 24px;

  align-self: flex-start;
}

.elementor-2094 .elementor-element.elementor-element-b2872b3 .elementor-element-65f6f11>.elementor-widget-container {
  margin-top: 0 !important;
}

.elementor-2094 .vxn-footer-disclaimer {
  background-color: var(--vxn-navy-dark) !important;

  display: flex !important;
  flex-direction: column;
  background-image: none !important;
}

.elementor-2094 .vxn-footer-disclaimer>.e-con-inner {
  padding-top: 26px;
  padding-bottom: 26px;
  border-top: 1px solid rgba(255, 255, 255, 0.08);

  width: 100%;
  max-width: min(100%, 1280px);
  margin-left: auto;
  margin-right: auto;
}

.elementor-2094 .vxn-footer-disclaimer__title {
  margin: 0 0 16px;
  font-size: 18px;
  font-weight: 600;
  letter-spacing: 2px;
  text-transform: uppercase;
  color: rgba(255, 255, 255, 0.82);
}

.elementor-2094 .vxn-footer-disclaimer p {
  margin: 0 0 0px;
  max-width: none;
  font-size: 14px;
  line-height: 1.75;
  color: rgba(255, 255, 255, 0.5);
}

.elementor-2094 .vxn-footer-disclaimer p:last-child {
  margin-bottom: 0;
}

.elementor-248 .elementor-element-7ab26c9 .elementor-element-26edf8b a.elementor-button.elementor-button-link,
.elementor-248 .elementor-element-7ab26c9 .elementor-element-26edf8b a.elementor-button.elementor-button-link:hover,
.elementor-248 .elementor-element-7ab26c9 .elementor-element-26edf8b a.elementor-button.elementor-button-link:focus {
  background-image: none !important;
  background-color: transparent !important;
  box-shadow: none !important;
  border-color: transparent !important;
}

.elementor-248 .elementor-element-7ab26c9 .elementor-element-26edf8b a.elementor-button.elementor-button-link,
.elementor-248 .elementor-element-7ab26c9 .elementor-element-26edf8b a.elementor-button.elementor-button-link .elementor-button-text {
  color: var(--vxn-navy) !important;

  fill: var(--vxn-navy) !important;
}

.elementor-248 .elementor-element-7ab26c9 .elementor-element-26edf8b a.elementor-button.elementor-button-link:hover .elementor-button-text,
.elementor-248 .elementor-element-7ab26c9 .elementor-element-26edf8b a.elementor-button.elementor-button-link:focus .elementor-button-text {
  color: var(--vxn-gold-dark) !important;

}

:is(.page-id-264, .page-id-296) .elementor-widget-icon-box+.elementor-widget-icon>.elementor-widget-container {
  margin-top: 0 !important;
  height: 48px;

  display: flex;
  align-items: center;
  justify-content: flex-end;
}

:is(.page-id-264, .page-id-296) .elementor-widget-icon-box+.elementor-widget-icon>.elementor-widget-container .elementor-icon-wrapper {
  line-height: 0 !important;
}

:is(.page-id-264, .page-id-296) .elementor-widget-icon-box:has(+ .elementor-widget-icon) .elementor-icon-box-wrapper {
  align-items: flex-start !important;
  text-align: left !important;
}

:is(.page-id-264, .page-id-296) .elementor-widget-icon-box:has(+ .elementor-widget-icon) .elementor-icon-box-icon,
:is(.page-id-264, .page-id-296) .elementor-widget-icon-box:has(+ .elementor-widget-icon) .elementor-icon-box-content {
  text-align: left !important;
}

.page-id-17 .elementor-2190 .elementor-element.elementor-element-752eec4 {
  margin-top: 50px !important;
}

:is(.page-id-250, .page-id-252, .page-id-254, .page-id-256) .elementor-widget-button.elementor-align-justify.vamtam-content-align-space-between a.elementor-button.elementor-button-link {
  background-image: none !important;
  background-color: transparent !important;
  box-shadow: none !important;
  border-color: transparent !important;
  color: var(--vxn-navy) !important;
  fill: var(--vxn-navy) !important;
}

:is(.page-id-250, .page-id-252, .page-id-254, .page-id-256) .elementor-widget-button.elementor-align-justify.vamtam-content-align-space-between a.elementor-button.elementor-button-link .elementor-button-text,
:is(.page-id-250, .page-id-252, .page-id-254, .page-id-256) .elementor-widget-button.elementor-align-justify.vamtam-content-align-space-between a.elementor-button.elementor-button-link .elementor-button-icon i {
  color: var(--vxn-navy) !important;
}

:is(.page-id-250, .page-id-252, .page-id-254, .page-id-256) .elementor-widget-button.elementor-align-justify.vamtam-content-align-space-between a.elementor-button.elementor-button-link:hover,
:is(.page-id-250, .page-id-252, .page-id-254, .page-id-256) .elementor-widget-button.elementor-align-justify.vamtam-content-align-space-between a.elementor-button.elementor-button-link:focus {
  background-image: none !important;
  background-color: transparent !important;
  color: var(--vxn-gold-dark) !important;
  fill: var(--vxn-gold-dark) !important;
}

:is(.page-id-250, .page-id-252, .page-id-254, .page-id-256) .elementor-widget-button.elementor-align-justify.vamtam-content-align-space-between a.elementor-button.elementor-button-link:hover .elementor-button-text,
:is(.page-id-250, .page-id-252, .page-id-254, .page-id-256) .elementor-widget-button.elementor-align-justify.vamtam-content-align-space-between a.elementor-button.elementor-button-link:hover .elementor-button-icon i,
:is(.page-id-250, .page-id-252, .page-id-254, .page-id-256) .elementor-widget-button.elementor-align-justify.vamtam-content-align-space-between a.elementor-button.elementor-button-link:focus .elementor-button-text,
:is(.page-id-250, .page-id-252, .page-id-254, .page-id-256) .elementor-widget-button.elementor-align-justify.vamtam-content-align-space-between a.elementor-button.elementor-button-link:focus .elementor-button-icon i {
  color: var(--vxn-gold-dark) !important;
}

.elementor-icon .vamtam-logo-sign-img,
.vamtam-logo-sign-img {
  display: inline-block;
  width: 1em;
  height: 1em;
  max-width: 2em;
  object-fit: contain;
  vertical-align: middle;
}

/* No glass on the navbar, and the theme's own sticky background is white:
   whatever paints the pinned bar — this rule, the theme's "shown" state, the
   scroll-down state — lands on the same solid white. */
body:not(.elementor-editor-active) .vamtam-sticky-header {
  --vamtam-sticky-header-bg-color: #FFFFFF !important;
  -webkit-backdrop-filter: none !important;
  backdrop-filter: none !important;
}

body:not(.elementor-editor-active) .vamtam-sticky-header--transparent-header::before {
  /* The theme reveals this overlay below its mobile breakpoint, which is the
     home header's at-rest solid state on a phone — it keeps the dark navy and
     the white logo. White belongs to the pinned state only, below. */
  background-color: #0E355F !important;
  background-image: none !important;
  -webkit-backdrop-filter: none !important;
  backdrop-filter: none !important;
}

.vxn-svc-card {
  position: relative;
  overflow: hidden;
  min-height: 0 !important;
  margin: 0 !important;
  padding: 0 !important;
  border: none !important;
  border-radius: 8px;
  background: var(--vxn-navy-dark) !important;

  display: flex !important;
  flex-direction: column !important;
  justify-content: flex-end !important;
  align-items: stretch !important;
}

a.vxn-svc-card,
a.vxn-svc-card:hover,
a.vxn-svc-card:focus {
  text-decoration: none !important;
  color: #FFFFFF !important;
}

.elementor-button .elementor-button-text {
  white-space: nowrap;
}

.elementor-17 .elementor-element-636c472 .elementor-heading-title {
  font-size: clamp(28px, 3vw, 42px) !important;
  line-height: 1.25 !important;
}

.elementor-17 .elementor-element.elementor-element-611b40a.e-con {
  --min-height: clamp(440px, 62vh, 600px);
  --margin-top: 70px;
  --margin-bottom: 0px;
}

.elementor-17 .elementor-element.elementor-element-1f79b02.e-con {
  --align-self: center;

}

.elementor-17 .elementor-element.elementor-element-c430c42 {
  --margin-bottom: 0px;

  --margin-right: 0px;

}

.elementor-element-1c4cf6b .elementor-heading-title {
  font-size: clamp(28px, 3vw, 42px) !important;
  line-height: 1.25 !important;
}

.elementor-2421 .elementor-element-35b5e58 img {
  aspect-ratio: 608 / 658;
  object-fit: cover;
  border-radius: 8px;
  display: block;
}

.elementor-2421 .e-con-inner {
  position: relative;
}

.elementor-2421 .elementor-element-35b5e58 a {
  display: block;
  position: relative;
  border-radius: 8px;
  overflow: hidden;
}

.elementor-2421 .elementor-element-35b5e58 a::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg,
      rgba(14, 53, 95, 0) 0%,
      rgba(14, 53, 95, 0) 52%,
      rgba(14, 53, 95, .55) 76%,
      rgba(14, 53, 95, .94) 100%);
}

.elementor-2421 .elementor-element-e1d7406 {
  position: absolute;
  left: 24px;
  right: 24px;
  bottom: 40px;
  z-index: 2;
}

.elementor-2421 .elementor-element-e1d7406 .elementor-heading-title {
  line-height: 1.2 !important;
}

.elementor-2421 .elementor-element-e1d7406 .elementor-widget-container,
.elementor-2421 .elementor-element-e1d7406 .elementor-heading-title,
.elementor-2421 .elementor-element-7dc0a15 .elementor-widget-container {
  margin: 0 !important;
}

.elementor-2421 .elementor-element-e1d7406 .elementor-heading-title,
.elementor-2421 .elementor-element-e1d7406 .elementor-heading-title a {
  color: #FFFFFF !important;
}

.elementor-2421 .elementor-element-7dc0a15 {
  position: absolute;
  left: 24px;
  right: 24px;
  bottom: 20px;
  z-index: 2;
}

.elementor-2421 .elementor-element-7dc0a15,
.elementor-2421 .elementor-element-7dc0a15 a {
  color: rgba(242, 245, 241, .85) !important;
}

.vxn-loc {
  max-width: 1240px;
  margin: 40px auto 100px;
  padding: 0 24px;
}

.vxn-loc__head {
  display: flex;
  justify-content: space-between;
  align-items: flex-end;
  gap: 40px;
  margin-bottom: 48px;
}

.vxn-loc__chip {
  display: inline-block;
  background: #F2F2EC;
  color: var(--vxn-navy-dark);
  font-size: 14px;
  line-height: 1;
  padding: 9px 14px;
  border-radius: 6px;
  margin-bottom: 18px;
}

.vxn-loc__title {
  margin: 0;
  color: #0E1B25;
  font-family: "Inter", sans-serif !important;
  font-weight: 400 !important;
  font-size: clamp(28px, 3vw, 42px) !important;
  line-height: 1.25 !important;
}

.vxn-loc__desc {
  margin: 0;
  max-width: 460px;
  color: rgba(14, 27, 37, .75);
  font-size: 16px;
  line-height: 1.65;
}

/* Entrance animations must never be the reason content is unreadable.
   `.elementor-invisible` is visibility:hidden and is only cleared by script,
   so it applies solely when scripting is available to clear it again — see the
   `vxn-js` marker set at the top of includes/head.php. */
html:not(.vxn-js) .elementor-invisible {
  visibility: visible !important;
}

/* Same principle for the home services accordion: the three collapsed panels
   keep their copy in the DOM at opacity:0, which a crawler reads but a sighted
   user cannot. If the accordion script never runs, show every panel's text. */
html:not(.vxn-js) .vxn-klay__content {
  opacity: 1;
  transform: none;
  pointer-events: auto;
}

@media (prefers-reduced-motion: reduce) {

  .elementor-invisible {
    visibility: visible !important;
  }
}

.vxn-loc__grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 28px;
}

/* The group section carries four companies, not three offices. */
.vxn-loc--group .vxn-loc__grid {
  grid-template-columns: repeat(4, 1fr);
}

/* Explains why only one office publishes a phone number. */
.vxn-loc__note {
  max-width: 78ch;
  margin: 30px 0 0;
  color: rgba(14, 27, 37, .62);
  font-size: 14.5px;
  line-height: 1.7;
}

.vxn-loc__media {
  position: relative;
  border-radius: 8px;
  overflow: hidden;
}

.vxn-loc__media img {
  display: block;
  width: 100%;
  aspect-ratio: 4 / 3;
  object-fit: cover;
  transition: transform .8s cubic-bezier(.22, .61, .36, 1);
}

.vxn-loc__media::after {
  content: "";
  position: absolute;
  inset: 0;
  opacity: 0;
  background: linear-gradient(180deg,
      rgba(14, 53, 95, .25) 0%,
      rgba(14, 53, 95, .72) 45%,
      rgba(13, 27, 40, .96) 100%);
  transition: opacity .5s ease;
}

.vxn-loc__panel {
  position: absolute;
  left: 22px;
  right: 22px;
  bottom: 20px;
  z-index: 1;
  opacity: 0;
  transform: translateY(16px);
  transition: opacity .5s ease, transform .5s cubic-bezier(.22, .61, .36, 1);
}

.vxn-loc__card:hover .vxn-loc__media::after,
.vxn-loc__card:focus-within .vxn-loc__media::after {
  opacity: 1;
}

.vxn-loc__card:hover .vxn-loc__panel,
.vxn-loc__card:focus-within .vxn-loc__panel {
  opacity: 1;
  transform: translateY(0);
}

.vxn-loc__card:hover .vxn-loc__media img {
  transform: scale(1.06);
}

.vxn-loc__city {
  margin: 0 0 0px;
  color: #FFFFFF !important;
  font-size: 16px !important;
  font-weight: 500 !important;
  line-height: 1.2 !important;
}

.vxn-loc__city span {
  font-size: 15px;
  font-weight: 400;
  color: var(--vxn-gold);
}

.vxn-loc__company {
  color: rgba(255, 255, 255, .85);
  font-size: 14px;
  line-height: normal;
  margin-bottom: 8px;
}

.vxn-loc__addr {
  margin: 0 0 10px;
  color: #FFFFFF;
  font-size: 14px;
  line-height: 1.55;
}

.vxn-loc__meta {
  margin: 0 0 3px;
  color: rgba(255, 255, 255, .9);
  font-size: 13px;
  line-height: 1.6;
}

.vxn-loc__meta strong {
  color: #FFFFFF;
  font-weight: 600;
}

.vxn-loc__meta a {
  color: var(--vxn-gold);
  text-decoration: none;
}

.vxn-loc__meta a:hover {
  color: #FFFFFF;
}

@media (hover: none) {

  .vxn-loc__media::after,
  .vxn-loc__panel {
    opacity: 1;
    transform: none;
  }
}

@media (max-width: 1024px) {
  .vxn-loc__head {
    flex-direction: column;
    align-items: flex-start;
    gap: 16px;
  }

  .vxn-loc__grid,
  .vxn-loc--group .vxn-loc__grid {
    grid-template-columns: repeat(2, 1fr);
  }
}

@media (max-width: 700px) {

  .vxn-loc__grid,
  .vxn-loc--group .vxn-loc__grid {
    grid-template-columns: 1fr;
  }
}

.vxn-svc-card__media {
  position: absolute;
  inset: 0;
  overflow: hidden;
  border-radius: inherit;
}

.vxn-svc-card__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  will-change: transform, filter;
}

.vxn-svc-card__media::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg,
      rgba(14, 53, 95, 0) 0%,
      rgba(14, 53, 95, 0) 55%,
      rgba(14, 53, 95, .55) 80%,
      rgba(14, 53, 95, .92) 100%);
}

.vxn-svc-card__footer {
  position: relative;
  z-index: 1;
  width: 100%;
  min-width: 0;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 18px 20px;
}

.vxn-svc-card__title {
  margin: 0;
  min-width: 0;

  color: #FFFFFF !important;

  font-family: "Inter", sans-serif !important;
  font-weight: 400 !important;
  font-size: 20px !important;
  line-height: 1.35 !important;
}

.vxn-svc-card__arrow,
.vxn-svc-card__arrow i {
  color: #FFFFFF !important;
}

.vxn-svc-card__arrow {
  flex: 0 0 auto;
  font-size: 22px;
  line-height: 1;
  transition: transform .5s cubic-bezier(.22, .61, .36, 1);
}

.vxn-svc-card:hover .vxn-svc-card__arrow {
  transform: translateX(8px);
}

@media (min-width: 1025px) {
  .vxn-svc-grid>.e-con-inner {
    display: block !important;
  }

  .vxn-svc-row {
    display: flex;
    gap: 16px;
    height: clamp(380px, 32vw, 500px);
  }

  .vxn-svc-card {

    flex-grow: 1 !important;
    flex-shrink: 1 !important;
    flex-basis: 0 !important;
    min-width: 0;
    width: auto !important;
    transition: flex-grow .65s cubic-bezier(.4, 0, .2, 1);
  }

  .vxn-svc-row .vxn-svc-card:hover,
  .vxn-svc-row .vxn-svc-card:focus-within {
    flex-grow: 2.2 !important;
  }

  .vxn-svc-row .vxn-svc-card__media img {
    filter: grayscale(1) brightness(.92);
    transition: filter .65s cubic-bezier(.4, 0, .2, 1);
  }

  .vxn-svc-row .vxn-svc-card:hover .vxn-svc-card__media img,
  .vxn-svc-row .vxn-svc-card:focus-within .vxn-svc-card__media img {
    filter: grayscale(0) brightness(1);
  }

}

@media (max-width: 1024px) {
  .vxn-svc-grid>.e-con-inner {
    display: grid !important;
    grid-template-columns: repeat(2, 1fr);
    grid-auto-rows: 320px;
    gap: 20px;
  }

  .vxn-svc-row {
    display: contents;
  }

  .vxn-svc-card {
    width: 100% !important;
  }

  .vxn-svc-card__media img {
    transform: scale(1.001);
    transition: transform 1.1s cubic-bezier(.22, .61, .36, 1);
  }

  .vxn-svc-card:hover .vxn-svc-card__media img {
    transform: scale(1.1);
  }
}

@media (max-width: 767px) {
  .vxn-svc-grid>.e-con-inner {
    grid-template-columns: 1fr;
    grid-auto-rows: 280px;
    gap: 16px;
  }

  .vxn-svc-card__footer {
    padding: 18px 20px;
  }
}

@media (prefers-reduced-motion: reduce) {

  .vxn-svc-card,
  .vxn-svc-card__media img,
  .vxn-svc-card__title,
  .vxn-svc-card__arrow {
    transition: none !important;
  }
}

.vxn-home-svc-section .vxn-svc-grid {
  padding-left: 0 !important;
  padding-right: 0 !important;
}

.vxn-home-svc-section .vxn-svc-grid>.e-con-inner {
  max-width: none !important;
  width: 100% !important;
  margin-left: 0 !important;
  margin-right: 0 !important;
}

.vxn-home-svc-section .vxn-svc-card,
.vxn-home-svc-section .vxn-svc-card__media,
.vxn-home-svc-section .vxn-svc-card__media img {
  border-radius: 0 !important;
}

.vxn-home-svc-section .elementor-element-85963b4 {
  display: none !important;
}

.vxn-home-svc-section {
  padding-top: 0px;
}

@media (min-width: 1025px) {
  .vxn-home-svc-section .vxn-svc-row {
    gap: 0 !important;
  }
}

@media (max-width: 1024px) {
  .vxn-home-svc-section .vxn-svc-grid>.e-con-inner {
    gap: 0 !important;
  }
}

@media (max-width: 767px) {
  .vxn-home-svc-section {
    padding-top: 40px;
  }
}

.vxn-offer {
  position: relative;
  background-color: #0E2233;
  background-image:
    linear-gradient(90deg,
      rgba(14, 30, 44, .30) 0%,
      rgba(14, 30, 44, .52) 42%,
      rgba(13, 27, 40, .90) 68%,
      rgba(13, 27, 40, .97) 100%),
    var(--vxn-offer-img);
  background-size: cover;
  background-position: center left;
  background-repeat: no-repeat;
  padding: 96px 24px;
  margin: 50px 0;
}

.vxn-offer__inner {
  max-width: 1280px;
  margin: 0 auto;
  display: flex;
  justify-content: flex-end;
}

.vxn-offer--reverse {
  background-image:
    linear-gradient(270deg,
      rgba(14, 30, 44, .30) 0%,
      rgba(14, 30, 44, .52) 42%,
      rgba(13, 27, 40, .90) 68%,
      rgba(13, 27, 40, .97) 100%),
    var(--vxn-offer-img);
  background-position: center right;
}

.vxn-offer--reverse .vxn-offer__inner {
  justify-content: flex-start;
}

.vxn-offer__content {
  width: min(660px, 100%);
}

.vxn-offer__label {
  display: inline-block;
  color: var(--vxn-gold);
  font-size: 14px;
  letter-spacing: .12em;
  text-transform: uppercase;
  margin-bottom: 14px;
}

.vxn-offer__heading {
  margin: 0 0 14px !important;
  color: #FFFFFF !important;
  font-family: "Inter", sans-serif !important;
  font-weight: 400 !important;
  font-size: clamp(28px, 2.6vw, 40px) !important;
  line-height: 1.2 !important;
}

.vxn-offer__sub {
  margin: 0 0 42px;
  color: rgba(242, 245, 241, .85) !important;
  font-size: 16px;
  line-height: 1.65;
  max-width: 560px;
}

.vxn-offer__grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 40px 32px;
}

.vxn-offer__item {
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.vxn-offer__icon {
  font-size: 30px;
  line-height: 1;
  color: #E8EDF2;
}

.vxn-offer__text {
  color: #FFFFFF;
  font-size: 16px;
  line-height: 1.45;
}

@media (max-width: 1024px) {
  .vxn-offer {

    background-image:
      linear-gradient(rgba(13, 27, 40, .88), rgba(13, 27, 40, .92)),
      var(--vxn-offer-img);
    padding: 72px 20px;
  }

  .vxn-offer__inner {
    justify-content: flex-start;
  }

  .vxn-offer__grid {
    grid-template-columns: repeat(2, 1fr);
    gap: 32px 24px;
  }
}

@media (max-width: 560px) {
  .vxn-offer__grid {
    grid-template-columns: 1fr;
    gap: 26px;
  }
}

.elementor-widget-heading .elementor-heading-title[class*=elementor-size-]>a {
  font-size: 16px;
  /* font-weight: 600; */
}

.vxn-klay {
  display: flex;
  width: 100%;
  /* The closed panels carry their label set vertically, so the band needs real
     height for those to read — and the open panel's copy sits in the lower half
     of a full-bleed photograph. Stacks to auto height below 1024px. */
  height: clamp(640px, 84vh, 840px);
  background: var(--vxn-grad-navy);
  overflow: hidden;
}

.vxn-klay__panel {
  position: relative;
  overflow: hidden;
  display: block;
  flex: 1 1 0;
  min-width: 0;
  text-decoration: none !important;
  color: #FFFFFF !important;
  border-left: 1px solid rgba(255, 255, 255, .08);
  transition: flex-grow .8s cubic-bezier(.4, 0, .2, 1);
}

.vxn-klay__panel:first-child {
  border-left: none;
}

.vxn-klay__panel.is-active {
  flex-grow: 7;
}

.vxn-klay__bg {
  position: absolute;
  inset: 0;
}

.vxn-klay__bg img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  border-radius: 0 !important;
  opacity: .16;
  filter: grayscale(.65) brightness(.75);
  transform: scale(1.05);
  transition: opacity .8s cubic-bezier(.4, 0, .2, 1),
    filter .8s cubic-bezier(.4, 0, .2, 1),
    transform .8s cubic-bezier(.4, 0, .2, 1);
  will-change: opacity, filter, transform;
}

.vxn-klay__bg::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(90deg,
      rgba(13, 27, 40, .58) 0%,
      rgba(13, 27, 40, .24) 42%,
      rgba(13, 27, 40, 0) 72%);
  opacity: 0;
  transition: opacity .8s cubic-bezier(.4, 0, .2, 1);
}

.vxn-klay__panel.is-active .vxn-klay__bg img {
  opacity: 1;
  filter: grayscale(0) brightness(1);
  transform: scale(1);
}

.vxn-klay__panel.is-active .vxn-klay__bg::after {
  opacity: 1;
}

.vxn-klay__label {
  position: absolute;
  left: 50%;
  bottom: 48px;
  writing-mode: vertical-rl;
  transform: translateX(-50%) rotate(180deg);
  font-family: "Inter", sans-serif;
  font-size: clamp(19px, 1.6vw, 27px);
  letter-spacing: .05em;
  line-height: 1;
  white-space: nowrap;

  color: var(--vxn-gold);
  opacity: 1;
  transition: opacity .45s ease;
}

.vxn-klay__panel.is-active .vxn-klay__label {
  opacity: 0;
}

/* One accent colour per collapsed panel label instead of a uniform gold.
   The active panel hides its own label, so with the first panel open the
   three visible labels read teal / pink / orange, matching the reference.
   Panel 1 carries the fourth accent for when another panel is open. */
.vxn-klay__panel:nth-child(1) .vxn-klay__label {
  color: #A97BFF;
}

.vxn-klay__panel:nth-child(2) .vxn-klay__label {
  color: #2ED9C3;
}

.vxn-klay__panel:nth-child(3) .vxn-klay__label {
  color: #FF3B9A;
}

.vxn-klay__panel:nth-child(4) .vxn-klay__label {
  color: #FF7A33;
}

.vxn-klay__content {
  position: absolute;
  z-index: 1;
  left: clamp(28px, 4.5vw, 72px);
  top: clamp(52px, 10vh, 104px);
  max-width: min(540px, 62%);
  opacity: 0;
  transform: translateY(16px);
  transition: opacity .3s ease, transform .3s ease;
  pointer-events: none;
}

.vxn-klay__panel.is-active .vxn-klay__content {
  opacity: 1;
  transform: none;
  transition: opacity .55s ease .3s, transform .55s ease .3s;
  pointer-events: auto;
}

.vxn-klay__title {
  margin: 0 0 14px;
  font-family: "Inter", sans-serif !important;
  font-weight: 400 !important;
  color: #FFFFFF !important;
  font-size: clamp(30px, 3vw, 44px) !important;
  line-height: 1.15 !important;
}

.vxn-klay__desc {
  margin: 0 0 28px;
  max-width: 46ch;
  color: rgba(255, 255, 255, .88);
  font-size: clamp(15px, 1.1vw, 17px);
  line-height: 1.6;
}

.vxn-klay__btn {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  padding: 0;
  border: none;
  background: none;
  color: #FFFFFF;
  font-size: 16px;
  line-height: 1;
}

.vxn-klay__btn i {
  font-size: 15px;
  line-height: 1;
  transition: transform .35s ease;
}

.vxn-klay__panel.is-active:hover .vxn-klay__btn i {
  transform: translateX(6px);
}

@media (max-width: 1024px) {
  .vxn-klay {
    flex-direction: column;
    height: auto;
  }

  .vxn-klay__panel {

    flex: 0 0 auto !important;
    border-left: none;
    border-top: 1px solid rgba(255, 255, 255, .1);
  }

  .vxn-klay__panel:first-child {
    border-top: none;
  }

  .vxn-klay__label {
    display: none;
  }

  .vxn-klay__bg img,
  .vxn-klay__panel.is-active .vxn-klay__bg img {
    opacity: 1;
    filter: none;
    transform: none;
  }

  .vxn-klay__bg::after,
  .vxn-klay__panel.is-active .vxn-klay__bg::after {
    opacity: 1;
    background: linear-gradient(90deg,
        rgba(13, 27, 40, .86) 0%,
        rgba(13, 27, 40, .55) 55%,
        rgba(13, 27, 40, .25) 100%);
  }

  .vxn-klay__content,
  .vxn-klay__panel.is-active .vxn-klay__content {
    position: relative;
    left: auto;
    top: auto;
    max-width: 100%;
    opacity: 1;
    transform: none;
    pointer-events: auto;
    padding: 44px 24px;
  }

  .vxn-klay__title {
    font-size: 27px !important;
  }

  .vxn-klay__desc {
    font-size: 15px;
    margin-bottom: 22px;
  }
}

@media (prefers-reduced-motion: reduce) {

  .vxn-klay__panel,
  .vxn-klay__bg img,
  .vxn-klay__bg::after,
  .vxn-klay__label,
  .vxn-klay__content,
  .vxn-klay__btn,
  .vxn-klay__btn i {
    transition: none !important;
  }
}

/* ==========================================================================
   THE SERVICES ROW FRAMER MOTION DRIVES (20260917) —
   components/motion/UaeKlayMotion.tsx, which has the full account of why the
   band felt "chonky" and what each of the rules below is for.

   Scoped to [data-vxn-klay="motion"], which is the UAE home page's row of six
   and nothing else: the India home's four-panel accordion keeps the script and
   the timings it has always had. Every state the band can be in looks exactly
   as it did; only the movement between states is different.
   ========================================================================== */

.vxn-klay[data-vxn-klay="motion"] {
  --vxn-klay-paint: .7s;
  --vxn-klay-ease: cubic-bezier(.22, 1, .36, 1);
}

/* The widths are written inline by a spring, frame by frame; a CSS transition
   on flex-grow would ease values that are already being eased, one frame
   behind. The background-color transition valunxt-landing.css adds stays.

   `isolation: isolate` makes each panel the root its frost samples from, so a
   panel that only slides along the row while another opens keeps the blur it
   already has instead of recomputing it on every frame. The panels never
   overlap, so the stacking order between them is unchanged. */
.vxn-klay[data-vxn-klay="motion"] .vxn-klay__panel {
  transition: background-color .6s ease;
  isolation: isolate;
}

/* THE FROST, CROSS-FADED. valunxt-landing.css draws the sheet with
   `.vxn-klay--six .vxn-klay__panel:not(.is-active)::after`, so it is created
   the instant a panel closes and destroyed the instant one opens — a pop on
   both panels on the first frame of every hover. Here it exists on every
   panel, as the same sheet, and fades: fully on over a closed panel, fully off
   over the open one, which is exactly what the two resting states were.
   Written at (0,4,1) so it clears that rule's (0,3,1) whichever sheet loads
   last; the hover rule there that thins the frost still applies, and now
   eases. */
.vxn-klay.vxn-klay--six[data-vxn-klay="motion"] .vxn-klay__panel::after {
  content: "";
  position: absolute;
  inset: 0;
  -webkit-backdrop-filter: blur(7px) saturate(105%);
  backdrop-filter: blur(7px) saturate(105%);
  background: linear-gradient(to top,
      rgba(16, 20, 28, .88) 0%,
      rgba(16, 20, 28, .84) 20%,
      rgba(17, 22, 31, .78) 40%,
      rgba(18, 24, 34, .45) 62%,
      rgba(20, 27, 38, .24) 100%);
  border-left: 1px solid rgba(255, 255, 255, .10);
  pointer-events: none;
  opacity: 1;
  transition:
    opacity var(--vxn-klay-paint) var(--vxn-klay-ease),
    -webkit-backdrop-filter .6s var(--vxn-klay-ease),
    backdrop-filter .6s var(--vxn-klay-ease);
}

.vxn-klay.vxn-klay--six[data-vxn-klay="motion"] .vxn-klay__panel.is-active::after {
  opacity: 0;
}

/* THE FROST, BAKED. The live `backdrop-filter` above is what made this band
   stall: it is recomputed on every frame anything behind it changes, which
   while the band moves is every frame, on five sheets at once — measured at
   300 to 940ms a frame on an integrated GPU. components/motion/klay-frost.ts
   draws the same result once, as a picture (the closed panel's photograph,
   zoomed, filtered and 92% opaque over the ground, blurred 7px and saturated
   5%), and sets it on the panel as --vxn-frost with data-vxn-frost="baked".
   From then on the sheet is that picture under the same gradient, sized by
   `cover` exactly as the photograph beneath it is, and nothing is blurred
   while anything moves.

   Written at (0,5,1), so it also clears the hover rule in valunxt-landing.css
   that thinned the live blur under the pointer. That state lasted for the
   70ms before a hovered panel opens and could not be seen.

   A panel whose picture is not ready yet, or a browser whose canvas cannot
   filter, keeps the live frost above. */
.vxn-klay.vxn-klay--six[data-vxn-klay="motion"] .vxn-klay__panel[data-vxn-frost="baked"]::after {
  -webkit-backdrop-filter: none;
  backdrop-filter: none;
  background:
    linear-gradient(to top,
      rgba(16, 20, 28, .88) 0%,
      rgba(16, 20, 28, .84) 20%,
      rgba(17, 22, 31, .78) 40%,
      rgba(18, 24, 34, .45) 62%,
      rgba(20, 27, 38, .24) 100%),
    var(--vxn-frost) center / cover no-repeat;
  transition: opacity var(--vxn-klay-paint) var(--vxn-klay-ease);
}

@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
  .vxn-klay.vxn-klay--six[data-vxn-klay="motion"] .vxn-klay__panel::after {
    background: linear-gradient(to top,
        rgba(16, 20, 28, .92) 0%,
        rgba(16, 20, 28, .89) 20%,
        rgba(17, 22, 31, .84) 40%,
        rgba(18, 24, 34, .62) 62%,
        rgba(20, 27, 38, .48) 100%);
  }
}

/* The photograph, its scrim and its slow settle, all on the one curve.

   THE PHOTOGRAPHS KEEP THEIR OWN LAYERS, as the base rule above has always
   given them (`will-change` on .vxn-klay__bg img). For a day this row dropped
   the hint and raised it only while the band moved, to save GPU memory, and
   measured that was the worst of both: every raise re-rasterised six
   full-bleed pictures and every drop merged them back, a stall at each end of
   every hover. Nothing here overrides the hint now. */
.vxn-klay[data-vxn-klay="motion"] .vxn-klay__bg img {
  transition:
    opacity var(--vxn-klay-paint) var(--vxn-klay-ease),
    filter var(--vxn-klay-paint) var(--vxn-klay-ease),
    transform 1.1s var(--vxn-klay-ease);
}

.vxn-klay[data-vxn-klay="motion"] .vxn-klay__bg::after {
  transition: opacity var(--vxn-klay-paint) var(--vxn-klay-ease);
}

/* The vertical name. It waits for a closing panel to narrow before it comes
   back, rather than appearing across a panel that is still wide, and leaves an
   opening one at once. Both halves are named: valunxt-landing.css transitions
   its transform too, for the 6px nudge under the pointer. */
.vxn-klay[data-vxn-klay="motion"] .vxn-klay__label {
  transition:
    opacity .5s var(--vxn-klay-ease) .22s,
    transform .55s var(--vxn-klay-ease);
}

.vxn-klay[data-vxn-klay="motion"] .vxn-klay__panel.is-active .vxn-klay__label {
  transition:
    opacity .25s ease 0s,
    transform .55s var(--vxn-klay-ease);
}

/* The open panel's copy box. It only has to clear quickly and come back
   quickly: the heading, the sentence and "Learn more" inside it are brought
   in one after another by the engine. */
.vxn-klay[data-vxn-klay="motion"] .vxn-klay__content {
  transition: opacity .22s ease, transform .22s ease;
}

.vxn-klay[data-vxn-klay="motion"] .vxn-klay__panel.is-active .vxn-klay__content {
  transition:
    opacity .35s var(--vxn-klay-ease) .1s,
    transform .6s var(--vxn-klay-ease) .1s;
}

@media (prefers-reduced-motion: reduce) {
  .vxn-klay[data-vxn-klay="motion"] .vxn-klay__panel::after {
    transition: none !important;
  }
}

/* --------------------------------------------------------------------------
   THE ROW, STACKED (20260917, second pass) — UaeKlayMotion.tsx adds
   `.is-stacked` on a desktop, and has the account of why. Every panel becomes
   the full OPEN width, absolutely placed and layered above the panel to its
   left; the engine writes one translate3d per panel per frame and nothing in
   the row is laid out or rasterised while it moves. Without the class (bundle
   blocked, phone, reduced motion) every rule above still draws the row in flex.

   --klay-open and --klay-shut are the two widths in px, set by the engine.
   -------------------------------------------------------------------------- */
.vxn-klay[data-vxn-klay="motion"].is-stacked {
  display: block;
  position: relative;
}

.vxn-klay[data-vxn-klay="motion"].is-stacked .vxn-klay__panel {
  position: absolute;
  top: 0;
  left: 0;
  width: var(--klay-open, 54.6%);
  height: 100%;
  flex: none;
  will-change: transform;
  backface-visibility: hidden;
  transition: none;
}

/* The closed look is the real .vxn-klay__frost element below, so the pseudo
   sheet — and with it the last live backdrop-filter — is off in this mode. */
.vxn-klay.vxn-klay--six[data-vxn-klay="motion"].is-stacked .vxn-klay__panel::after {
  content: none !important;
}

/* The photograph is never dimmed, filtered or resized here: the frost above it
   is opaque once baked, so the closed state needs nothing from the picture.
   Only its slow scale settle is kept, which is a transform. */
.vxn-klay.vxn-klay--six[data-vxn-klay="motion"].is-stacked .vxn-klay__panel .vxn-klay__bg img,
.vxn-klay.vxn-klay--six[data-vxn-klay="motion"].is-stacked .vxn-klay__panel:not(.is-active):hover .vxn-klay__bg img {
  opacity: 1;
  filter: none;
  transition: transform 1.1s var(--vxn-klay-ease);
}

.vxn-klay[data-vxn-klay="motion"].is-stacked .vxn-klay__frost {
  position: absolute;
  inset: 0;
  pointer-events: none;
  will-change: opacity;
  background:
    linear-gradient(to top,
      rgba(16, 20, 28, .92) 0%,
      rgba(16, 20, 28, .89) 20%,
      rgba(17, 22, 31, .84) 40%,
      rgba(18, 24, 34, .62) 62%,
      rgba(20, 27, 38, .48) 100%);
}

.vxn-klay[data-vxn-klay="motion"].is-stacked .vxn-klay__panel[data-vxn-frost="baked"] .vxn-klay__frost {
  background:
    linear-gradient(to top,
      rgba(16, 20, 28, .88) 0%,
      rgba(16, 20, 28, .84) 20%,
      rgba(17, 22, 31, .78) 40%,
      rgba(18, 24, 34, .45) 62%,
      rgba(20, 27, 38, .24) 100%),
    var(--vxn-frost) center / cover no-repeat;
}

/* The vertical name sits in the middle of the CLOSED width, which is no longer
   half the panel's own. */
.vxn-klay[data-vxn-klay="motion"].is-stacked .vxn-klay__label {
  left: calc(var(--klay-shut, 9%) / 2);
}

.elementor-element.elementor-element-682a6a8.e-con {
  --margin-top: 90px;
  --margin-bottom: 90px;
}

@media (max-width: 767px) {
  .elementor-element.elementor-element-682a6a8.e-con {
    --margin-top: 56px;
    --margin-bottom: 56px;
  }
}

.elementor-element.elementor-element-6b781e9.e-con {
  --margin-top: 90px;
}

@media (max-width: 767px) {
  .elementor-element.elementor-element-6b781e9.e-con {
    --margin-top: 56px;
  }
}

.elementor-17 .elementor-element.elementor-element-4b2e43b.e-con {
  background-color: rgba(0, 83, 183, 0.14);
  background-image: linear-gradient(135deg,
      rgba(0, 83, 183, 0.24) 0%,
      rgba(0, 83, 183, 0.05) 100%);
  -webkit-backdrop-filter: blur(14px) saturate(120%);
  backdrop-filter: blur(14px) saturate(120%);
  border-width: 1px;
  border-color: rgba(0, 83, 183, 0.40);
  --border-color: rgba(0, 83, 183, 0.40);
  border-radius: 12px;
  --border-radius: 12px 12px 12px 12px;
  box-shadow: 0 12px 34px rgba(14, 53, 95, 0.10),
    inset 0 1px 0 rgba(255, 255, 255, 0.50);
  --padding-top: 12px;
  --padding-bottom: 12px;
}

@media (min-width: 1025px) {
  .elementor-17 .elementor-element.elementor-element-761c5fe {
    --align-items: stretch;
  }

  .elementor-17 .elementor-element.elementor-element-670c111 {
    --min-height: 0px;
  }
}

body {
  --vxn-hero-overlay: linear-gradient(90deg,
      rgba(14, 53, 95, 0.90) 0%,
      rgba(14, 53, 95, 0.72) 38%,
      rgba(14, 53, 95, 0.42) 68%,
      rgba(14, 53, 95, 0.22) 100%);
}

@media (max-width: 767px) {
  body {
    --vxn-hero-overlay: linear-gradient(180deg,
        rgba(14, 53, 95, 0.82) 0%,
        rgba(14, 53, 95, 0.74) 100%);
  }
}

.elementor-3752 .elementor-element.elementor-element-c4d353f.e-con,
.elementor-3752 .elementor-element.elementor-element-c4d353f:not(.elementor-motion-effects-element-type-background) {
  background-color: #0E355F;
  background-image: var(--vxn-hero-overlay),
    var(--vxn-hero-img, url("../content/uploads/new-folder/about-us-banner.webp"));
  background-position: center center, center center;
  background-size: cover, cover;
  background-repeat: no-repeat, no-repeat;
  padding: 100px 50px;
  /* margin: 10px 0; */
}

.elementor-3752 .elementor-element.elementor-element-c739b5b .elementor-heading-title,
.elementor-3752 .elementor-element.elementor-element-c739b5b .elementor-heading-title a,
.elementor-3752 .elementor-element.elementor-element-1707a75 .elementor-heading-title {
  color: rgba(255, 255, 255, 0.82);
}

.elementor-3752 .elementor-element.elementor-element-c739b5b .elementor-heading-title a:hover,
.elementor-3752 .elementor-element.elementor-element-c739b5b .elementor-heading-title a:focus {
  color: #ffffff;
}

.elementor-3752 .elementor-element.elementor-element-16f0cb0 .elementor-heading-title {
  color: #ffffff;
}

.elementor-3752 .elementor-element.elementor-element-44a2511 {
  color: rgba(255, 255, 255, 0.90);
}

.elementor-3752 .elementor-element.elementor-element-3f5733d {
  --divider-color: rgba(255, 255, 255, 0.32);
}

body.elementor-page-248 {
  --vxn-hero-img: url("../content/uploads/new-folder/services-1.webp");
}

body.elementor-page-258 {
  --vxn-hero-img: url("../content/uploads/banners/about-us.webp");
}

body.elementor-page-264 {
  --vxn-hero-img: url("../content/uploads/new-folder/about-us-1.webp");
}

body.elementor-page-268 {
  --vxn-hero-img: url("../content/uploads/new-folder/career-1.webp");
}

body.elementor-page-296 {
  --vxn-hero-img: url("../content/uploads/new-folder/client-success-2.webp");
}

body.elementor-page-9001 {
  --vxn-hero-img: url("../content/uploads/2025/04/low-view-modern-skyscrapers-office-buildings.jpg");
}

body.elementor-page-262 {
  --vxn-hero-img: url("../content/uploads/banners/insights.webp");
}

body.elementor-page-3 {
  --vxn-hero-img: url("../content/uploads/new-folder/who-we-are-2.webp");
}

body.elementor-page-2034 {
  --vxn-hero-img: url("../content/uploads/new-folder/who-we-are-2.webp");
}

.elementor-3752 .elementor-element.elementor-element-c4d353f.vxn-hero--group {
  --vxn-hero-img: url("../content/uploads/banners/our-group.webp");
}

.elementor-3752 .elementor-element.elementor-element-c4d353f.vxn-hero--corporate {
  --vxn-hero-img: url("../content/uploads/new-folder/valunxt-corporate-services.webp");
}

.elementor-3752 .elementor-element.elementor-element-c4d353f.vxn-hero--reliant {
  --vxn-hero-img: url("../content/uploads/new-folder/reliant-surveyors-1.webp");
}

.elementor-element.elementor-element-d726ecf.e-con.e-parent {
  background-color: #0E355F;
  background-image: var(--vxn-hero-overlay),
    var(--vxn-hero-img, url("../content/uploads/banners/insights.webp"));
  background-position: center center, center center;
  background-size: cover, cover;
  background-repeat: no-repeat, no-repeat;
  padding: 100px 50px;
  margin-bottom: 50px;
}

.elementor-element.elementor-element-d726ecf.e-con .elementor-heading-title,
.elementor-element.elementor-element-d726ecf.e-con .elementor-heading-title a {
  color: #ffffff;
}

.elementor-element-d726ecf.e-con .elementor-element-3b31e9d .elementor-heading-title,
.elementor-element-d726ecf.e-con .elementor-element-3b31e9d .elementor-heading-title a {
  color: rgba(255, 255, 255, 0.82);
}

.elementor-element-d726ecf.e-con .elementor-element-3b31e9d .elementor-heading-title a:hover,
.elementor-element-d726ecf.e-con .elementor-element-3b31e9d .elementor-heading-title a:focus {
  color: #ffffff;
}

.elementor-element.elementor-element-d726ecf .elementor-widget-text-editor,
.elementor-element.elementor-element-d726ecf .elementor-widget-theme-post-excerpt {
  color: rgba(255, 255, 255, 0.90);
}

.elementor-3947 .elementor-element.elementor-element-bc5a61e {
  display: block !important;
}

.elementor-3947 .elementor-element.elementor-element-110cfac {
  --divider-color: rgba(255, 255, 255, 0.32);
}

body.elementor-page-250 {
  --vxn-hero-img: url("../content/uploads/new-folder/real-estate-wealth-advisory-1.webp");
}

body.elementor-page-252 {
  --vxn-hero-img: url("../content/uploads/banners/capital-advisory.webp");
}

body.elementor-page-254 {
  --vxn-hero-img: url("../content/uploads/new-folder/research-intelligence-1.webp");
}

body.elementor-page-256 {
  --vxn-hero-img: url("../content/uploads/banners/technology-and-ai.webp");
}

.elementor-element.elementor-element-4f2e97ad.e-con.e-parent {
  background-color: #0E355F;
  background-image: var(--vxn-hero-overlay),
    url("../content/uploads/new-folder/insights-main.webp");
  background-position: center center, center center;
  background-size: cover, cover;
  background-repeat: no-repeat, no-repeat;
}

.elementor-element.elementor-element-4f2e97ad.e-con .elementor-heading-title,
.elementor-element.elementor-element-4f2e97ad.e-con .elementor-heading-title a {
  color: #ffffff;
}

.elementor-element.elementor-element-4f2e97ad .elementor-element-1ccc37a0 {
  --divider-color: rgba(255, 255, 255, 0.32);
}

.elementor-2094 .elementor-element.elementor-element-97f60b2>.elementor-widget-container {
  border-style: none;
  width: 85%;
  text-align: justify;
}

body.elementor-page-262 .e-loop__load-more,
body.elementor-page-262 .e-load-more-anchor,
body.elementor-page-262 .e-load-more-message,
body.elementor-page-262 .e-load-more-spinner {
  display: none !important;
}

.elementor img.vxn-blog-hero,
img.vxn-blog-hero {
  width: 100% !important;
  height: clamp(240px, 38vw, 460px) !important;
  max-width: 100% !important;
  object-fit: cover !important;
  object-position: center !important;
  border-radius: 12px;
  margin: 0 0 28px;
  display: block;
}

.elementor-page-7647 .elementor-widget-theme-post-content>.elementor-widget-container {
  max-width: 900px;
  margin-left: auto;
  margin-right: auto;
  padding-left: 22px;
  padding-right: 22px;
}

.elementor-page-7647 .elementor-widget-theme-post-content p {
  margin: 0 0 22px;
  line-height: 1.85;
}

.elementor-page-7647 .elementor-widget-theme-post-content h2,
.elementor-page-7647 .elementor-widget-theme-post-content h3 {
  margin: 42px 0 14px;
  line-height: 1.32;
}

.elementor-page-7647 img.vxn-blog-hero {
  margin: 4px 0 44px;
}

.elementor-page-7647 .elementor-element.elementor-element-c0f96e2 {
  --padding-top: 44px;
  --padding-bottom: 36px;
  padding-top: 44px;
  padding-bottom: 36px;
}

.elementor-page-7647 .vxn-author .elementor-post-info__item--type-author {
  color: var(--e-global-color-vamtam_accent_1);
  font-weight: 600;
}

.elementor-17 .elementor-element-61f0432 .vxn-icon,
.elementor-17 .elementor-element-d954cf7 .vxn-icon,
.elementor-17 .elementor-element-0dd4cbe .vxn-icon {
  background: none !important;
  padding: 0 !important;
  border-radius: 0 !important;
  width: 54px !important;
  height: 54px !important;
}

.elementor-2190 .vxn-wwa {
  text-align: center;
  padding: 4px 0;
}

.elementor-2190 .vxn-wwa__intro {
  max-width: 780px;
  margin: 0 auto 60px;
  font-family: "Inter", sans-serif;
  font-size: clamp(20px, 1.9vw, 27px);
  line-height: 1.5;
  color: #14202b;
}

.elementor-2190 .vxn-wwa__grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 34px 28px;
  max-width: 1060px;
  margin: 0 auto;
}

.elementor-2190 .vxn-wwa__item {
  position: relative;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: flex-start;
  gap: 14px;
  padding: 22px 18px;
  background-color: #FFFFFF;
  border: 1px solid rgba(14, 53, 95, .10);
  border-radius: 14px;
  transition: border-color .4s ease, background-color .4s ease;
}

.elementor-2190 .vxn-wwa__item::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 3px;
  z-index: 2;
  background: var(--vxn-grad-gold);
  opacity: 0;
  transition: opacity .4s ease;
}

.elementor-2190 .vxn-wwa__item:hover::before,
.elementor-2190 .vxn-wwa__item:focus-within::before {
  opacity: 1;
}

.elementor-2190 .vxn-wwa__icon {
  position: relative;
  z-index: 1;
  box-sizing: content-box;
  width: 32px;
  height: 32px;
  padding: 12px;
  flex: 0 0 auto;
  border-radius: 50%;
  background-color: rgba(0, 83, 183, .06);
  stroke: var(--vxn-navy-dark) !important;
  transition: background-color .4s ease, stroke .4s ease;
}

.elementor-2190 .vxn-wwa__item:hover .vxn-wwa__icon,
.elementor-2190 .vxn-wwa__item:focus-within .vxn-wwa__icon {
  background-color: rgba(0, 83, 183, .18);
  stroke: var(--vxn-gold-dark) !important;
}

.elementor-2190 .vxn-wwa__label {
  position: relative;
  z-index: 1;
  font-size: 15px;
  line-height: 1.45;
  color: var(--vxn-navy-dark);
  max-width: 220px;
}

.elementor-2190 .vxn-wwa__item:hover,
.elementor-2190 .vxn-wwa__item:focus-within {
  background-color: #FCF9F4;
  border-color: rgba(0, 83, 183, .55);
}

@media (max-width: 900px) {
  .elementor-2190 .vxn-wwa__grid {
    grid-template-columns: repeat(2, 1fr);
    gap: 44px 24px;
  }
}

@media (max-width: 520px) {
  .elementor-2190 .vxn-wwa__grid {
    grid-template-columns: 1fr;
  }
}

.elementor-17 .elementor-element.elementor-element-926da5a {
  position: relative;
  overflow: hidden;
}

.elementor-17 .elementor-element.elementor-element-926da5a::before {
  background-image: none !important;
}

.elementor-17 .elementor-element.elementor-element-926da5a>.vxn-hero-video {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  z-index: 0;
  pointer-events: none;
}

.elementor-17 .elementor-element.elementor-element-926da5a>.vxn-hero-scrim {
  position: absolute;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  background: linear-gradient(90deg,
      rgba(14, 53, 95, .85) 0%,
      rgba(14, 53, 95, .62) 40%,
      rgba(14, 53, 95, .30) 72%,
      rgba(14, 53, 95, .12) 100%);
}

.elementor-17 .elementor-element.elementor-element-926da5a>.e-con-inner {
  position: relative;
  z-index: 1;
}

.vxn-logo-slider {
  width: 100%;
  max-width: 960px;
  margin: 0 auto;
  --vxn-visible: 3;
}

@media (max-width: 991px) {
  .vxn-logo-slider {
    --vxn-visible: 2;
  }
}

@media (max-width: 639px) {
  .vxn-logo-slider {
    --vxn-visible: 1;
  }
}

.vxn-logo-slider__viewport {
  width: 100%;
  overflow: hidden;
  padding: 22px 0;
}

.vxn-logo-slider__track {
  display: flex;
  will-change: transform;
}

.vxn-logo-slider__slide {
  flex: 0 0 calc(100% / var(--vxn-visible, 3));
  min-width: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  height: 56px;
  overflow: visible;
  box-sizing: border-box;
}

.vxn-logo-slider__slide a {
  display: flex;
  align-items: center;
  justify-content: center;
}

.vxn-logo-slider .vxn-logo-slider__slide img {
  display: block;
  height: 56px !important;
  width: auto !important;
  max-width: none !important;
  object-fit: contain !important;
}

.vxn-logo-slider .vxn-logo-slider__slide img[src*="/reliant-surveyors.svg"] {
  height: 70px !important;
  width: auto !important;
  max-width: none !important;
}

.vxn-logo-slider__dots {
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 10px;
  margin-top: 26px;
}

.vxn-logo-slider .vxn-logo-slider__dots .vxn-logo-slider__dot {
  -webkit-appearance: none !important;
  appearance: none !important;
  width: 8px !important;
  height: 8px !important;
  min-width: 0 !important;
  min-height: 0 !important;
  padding: 0 !important;
  margin: 0 !important;
  border: 0 !important;
  border-radius: 50% !important;
  background-color: #C7CBD1 !important;
  background-image: none !important;
  box-shadow: none !important;
  cursor: pointer;
  transition: background-color .3s ease, transform .3s ease;
}

.vxn-logo-slider .vxn-logo-slider__dots .vxn-logo-slider__dot:hover {
  background-color: #9BA2AA !important;
}

.vxn-logo-slider .vxn-logo-slider__dots .vxn-logo-slider__dot.is-active {
  background-color: #0B2DBE !important;
  transform: scale(1.4) !important;
}

@media (max-width: 767px) {

  body {
    -webkit-font-smoothing: antialiased;
    text-rendering: optimizeLegibility;
  }

  img,
  svg,
  video,
  iframe {
    max-width: 100%;
  }

  h1,
  h2,
  h3,
  h4,
  h5,
  h6,
  p,
  li,
  a,
  .elementor-heading-title {
    overflow-wrap: break-word;
    word-break: break-word;
  }

  h1,
  .elementor-widget-heading h1.elementor-heading-title {
    font-size: 30px !important;
    line-height: 1.18 !important;
  }

  h2,
  .elementor-widget-heading h2.elementor-heading-title {
    font-size: 26px !important;
    line-height: 1.22 !important;
  }

  h3,
  .elementor-widget-heading h3.elementor-heading-title {
    font-size: 21px !important;
    line-height: 1.3 !important;
  }

  h4,
  .elementor-widget-heading h4.elementor-heading-title {
    font-size: 19px !important;
    line-height: 1.35 !important;
  }

  h5,
  .elementor-widget-heading h5.elementor-heading-title {
    font-size: 17px !important;
    line-height: 1.4 !important;
  }

  h6,
  .elementor-widget-heading h6.elementor-heading-title {
    font-size: 15px !important;
    line-height: 1.45 !important;
  }

  .elementor-widget-text-editor p,
  .elementor-widget-text-editor li,
  .elementor-post__excerpt p,
  article p,
  article li,
  .vxn-loc__addr,
  .vxn-loc__desc,
  .vxn-loc__meta {
    line-height: 1.6 !important;
  }

  .elementor-widget-text-editor p {
    margin-bottom: 1em;
  }
}

@media (max-width: 480px) {

  h1,
  .elementor-widget-heading h1.elementor-heading-title {
    font-size: 27px !important;
  }

  h2,
  .elementor-widget-heading h2.elementor-heading-title {
    font-size: 23px !important;
  }

  h3,
  .elementor-widget-heading h3.elementor-heading-title {
    font-size: 20px !important;
  }
}

@media (min-width: 768px) {

  /* Tight to the bar. The bar goes white while a menu is open (.vxn-nav-open),
     so a deep gap here left a strip of hero showing between two white surfaces. */
  .elementor-nav-menu--main.elementor-nav-menu__container>ul.elementor-nav-menu>li.menu-item.menu-item-has-children>ul.sub-menu {
    margin-top: 10px !important;
  }

  /* Hover bridge: the panel sits below the bar with a gap, so an invisible slab
     above it keeps :hover alive while the pointer crosses. Narrow dropdowns only
     — see the mega-menu note below for why the wide panels are excluded. */
  .elementor-nav-menu--main>ul>li.menu-item-has-children:not(.vxn-mega)>.sub-menu::before {
    content: "";
    position: absolute;
    left: 0;
    right: 0;
    top: -32px;
    height: 32px;
  }

  /* A mega panel is ~1200px wide and centred on the viewport, so the bridge
     above spanned the WHOLE nav row: once one menu opened, that invisible slab
     covered every other item and swallowed the pointer — hovering "Our Group"
     kept showing the "Services" panel because the cursor never actually reached
     the Our Group <li>. The bridge therefore hangs off the <li> instead, where
     it is only as wide as the menu item itself.

     The selector has to out-rank Elementor's own divider rule,
     `.elementor-nav-menu--layout-horizontal .elementor-nav-menu > li:not(:last-child)::after`
     (0-3-2), which sets `content: var(--e-nav-menu-divider-content, none)` and
     so switches this pseudo-element off entirely. Hence the long selector and
     the !importants — without them there is no bridge at all, and the menu only
     appears to work because the panel sits a couple of pixels below the item. */
  .elementor-nav-menu--main.elementor-nav-menu__container>ul.elementor-nav-menu>li.menu-item.vxn-mega::after {
    content: "" !important;
    position: absolute !important;
    left: 0;
    right: 0;
    top: 100% !important;
    /* The sheet is flush under the bar now, so this only has to cover the few
       pixels of bar left below the menu item itself. */
    height: 26px !important;
    width: auto !important;
    background: none !important;
    border: 0 !important;
    transform: none !important;
    /* Inert until the item is actually being hovered, so the strip never eats a
       click on the page content sitting just under the bar. Hovering the link
       arms it; the pointer then stays inside the <li> all the way to the panel. */
    pointer-events: none;
  }

  .elementor-nav-menu--main.elementor-nav-menu__container>ul.elementor-nav-menu>li.menu-item.vxn-mega:hover::after,
  .elementor-nav-menu--main.elementor-nav-menu__container>ul.elementor-nav-menu>li.menu-item.vxn-mega:focus-within::after {
    pointer-events: auto;
  }
}

@media (min-width: 768px) {
  .elementor-nav-menu--main .vxn-mega {
    position: relative;
  }

  /* Full-bleed sheet: it spans the viewport and sits flush under the bar, which
     is what lets the bar itself go white behind it (see .vxn-nav-open). */
  .elementor-nav-menu--main .elementor-nav-menu>li.vxn-mega>.vxn-mega__panel {
    inset-inline-start: 0 !important;
    inset-inline-end: 0 !important;
    left: 0 !important;
    right: 0 !important;
    width: 100vw !important;
    max-width: 100vw !important;
    margin-top: 0 !important;
    padding: 46px 0 44px !important;
    background: #ffffff;
    border: 0;
    border-top: 1px solid rgba(14, 53, 95, 0.10);
    border-radius: 0;
    box-shadow: 0 28px 48px rgba(11, 26, 38, 0.14);
  }

  .elementor-nav-menu--main .vxn-mega:hover>.vxn-mega__panel,
  .elementor-nav-menu--main .vxn-mega:focus-within>.vxn-mega__panel {
    display: block !important;
  }

  /* Plain dropdowns (About) open on hover too. SmartMenus only initialises on
     the burger drawer's vertical nav — the desktop bar has no `sm-` classes, so
     nothing was ever opening these, and Location / Careers / FAQ were reachable
     only from the footer. Same CSS-only mechanism the mega panels use. */
  .elementor-nav-menu--main>ul>li.menu-item-has-children:not(.vxn-mega):hover>.sub-menu,
  .elementor-nav-menu--main>ul>li.menu-item-has-children:not(.vxn-mega):focus-within>.sub-menu {
    display: block !important;
  }

  .elementor-nav-menu--main>ul>li.menu-item-has-children:not(.vxn-mega)>.sub-menu {
    padding: 6px 0 !important;
    background: #ffffff;
    border: 1px solid rgba(14, 53, 95, 0.12);
    border-radius: 2px;
    box-shadow: 0 20px 44px rgba(11, 26, 38, 0.15);
    z-index: 9999;
  }

  /* The sheet runs edge to edge, but its content keeps the header's measure so
     the section title starts on the same line as the logo. Mirrors
     `.elementor-location-header .e-con-inner`. */
  .elementor-nav-menu--main .vxn-mega__panel>.vxn-mega__wrap {
    display: block;
    border: 0 !important;
    margin: 0 auto !important;
    padding: 0 34px !important;
    max-width: min(100%, 1560px) !important;
    background: transparent !important;
  }

  /* Stops the theme tinting menu anchors. The colour longhand, not the
     shorthand: the promo card is an anchor and sets background-size,
     -position and -repeat of its own further down, and the shorthand would
     reset all three — with this !important, so they could not be won back. */
  .elementor-nav-menu--main .vxn-mega__panel a:hover,
  .elementor-nav-menu--main .vxn-mega__panel a:focus {
    background-color: transparent !important;
  }
}

@media (min-width: 1025px) {
  .elementor-nav-menu--main.elementor-nav-menu__container .elementor-nav-menu>li.vxn-mega.menu-item.menu-item-has-children>ul.vxn-mega__panel.sub-menu {
    position: fixed !important;
    /* Flush against the foot of the bar, not clear of it: the sheet is full
       width and the bar goes white behind it, so the two read as one surface
       and there is no gap for the pointer to fall through. --vxn-navh tracks
       the bar's height, which shrinks once it pins. */
    top: var(--vxn-navh, 94px) !important;
    inset-inline-start: 0 !important;
    inset-inline-end: 0 !important;
    left: 0 !important;
    right: 0 !important;
    transform: none !important;
    /* Sized by the insets, not by 100vw: a fixed box's containing block already
       excludes a classic scrollbar, where 100vw does not — that difference is a
       15px horizontal scrollbar on Windows every time a menu opens. */
    width: auto !important;
    max-width: none !important;
    margin-top: 0 !important;
    padding: 46px 0 44px !important;
    z-index: 9999 !important;
  }
}

/* ==========================================================================
   MEGA MENU
   Three rails on one sheet: an intro column that names the section and carries
   the CTA, a two-up index of links (the substance), and a featured card.

   The register is deliberately sober — hairline rules, square corners, flat
   icons, text CTAs. An earlier pass used tinted rounded icon tiles and pill
   buttons, which read as a consumer SaaS product rather than an advisory firm.
   Colour appears twice only: the rule across the head of the panel, and on
   hover. Everything else is type and rules.

   SCOPING: by nav container, not viewport width. The theme hides the desktop
   bar below 1400px (`nav.elementor-nav-menu--main { display:none }` in
   elementor-max.css), so a `min-width: 1025px` query would hand the three-rail
   layout to the burger drawer for the whole 1025–1399 band. `--main` gets the
   rails; `--dropdown` (the drawer) always stacks, at any width.

   Markup is built in includes/partials/more-mega.php from vxn_services() /
   vxn_companies(), so the menu can never disagree with the pages it links to.
   ========================================================================== */
.vxn-mega__wrap {
  text-align: left;
  white-space: normal;
}

/* ---- Shared: type and marks, identical in both navs ---- */

.vxn-mega__head {
  display: block;
  font-family: "Inter", sans-serif;
  font-weight: 400;
  color: var(--e-global-color-vamtam_text, #0E355F);
}

.vxn-mega__kicker {
  display: block;
  font-size: 10.5px;
  font-weight: 700;
  letter-spacing: 1.6px;
  text-transform: uppercase;
  color: var(--e-global-color-vamtam_text, #0E355F);
}

.vxn-mega__lede {
  display: block;
  font-size: 13px;
  line-height: 1.6;
  color: var(--vxn-muted, #6A7590);
}

.vxn-mega__itembody {
  display: block;
  min-width: 0;
}

.vxn-mega__itemtitle {
  display: block;
  font-size: 14.5px;
  font-weight: 600;
  line-height: 1.3;
  letter-spacing: -0.1px;
  color: var(--e-global-color-vamtam_text, #0E355F);
  transition: color .22s ease;
}

.vxn-mega__item:hover .vxn-mega__itemtitle {
  color: var(--vxn-blue, #0B2DBE);
}

.vxn-mega__itemdesc {
  margin-top: 4px;
  font-size: 12.5px;
  font-weight: 400;
  line-height: 1.45;
  color: var(--vxn-muted, #6A7590);
  /* Two lines keeps every row the same height however long the blurb is. */
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

/* Flat line icon, no tile. It carries the accent colour on hover — the only
   thing that changes besides the rule. */
.vxn-mega__ico {
  display: flex;
  align-items: center;
  justify-content: flex-start;
  width: 24px;
  height: 22px;
  color: #93A3B8;
  transition: color .25s ease;
}

.vxn-mega__ico svg {
  width: 21px;
  height: 21px;
}

.vxn-mega__item:hover .vxn-mega__ico {
  color: var(--vxn-blue, #0B2DBE);
}

.vxn-mega__chev {
  align-self: center;
  font-style: normal;
  font-size: 17px;
  line-height: 1;
  color: var(--vxn-blue, #0B2DBE);
  transition: transform .25s ease, opacity .25s ease;
}

.vxn-mega__eyebrow {
  display: block;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 1.5px;
  text-transform: uppercase;
  color: var(--vxn-muted, #6A7590);
}

/* The ringed arrow that ends every CTA on the sheet. The panel-wide radius
   reset below is written as `.vxn-mega__wrap *`, which outranks a bare class —
   hence the long selector to keep the ring round. */
.vxn-mega__panel .vxn-mega__wrap .vxn-mega__circ {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  width: 38px;
  height: 38px;
  border: 1px solid rgba(0, 83, 183, 0.35);
  border-radius: 999px !important;
  color: var(--vxn-blue, #0B2DBE);
  transition: background-color .25s ease, border-color .25s ease, color .25s ease;
}

.vxn-mega__viewall:hover .vxn-mega__circ,
.vxn-mega__card:hover .vxn-mega__circ {
  background-color: var(--vxn-blue, #0B2DBE);
  border-color: var(--vxn-blue, #0B2DBE);
  color: #ffffff;
}

/* Nothing inside the panel is rounded. Elementor's post-139.css carries
   `.elementor-139 .elementor-element-1243e1d .elementor-nav-menu--dropdown
   li:first-child a { border-top-*-radius: 6px }` (and the same for :last-child),
   which outweighs anything we can write by selector alone. The panel is a single
   <li>, so that rule caught BOTH CTAs and the featured card, leaving the ruled
   underlines curling up at their ends. */
.vxn-mega__panel .vxn-mega__wrap * {
  border-radius: 0 !important;
}

/* Elementor's dropdown rules force nowrap on sub-menu text; the panel is a
   layout, not a list of one-liners. */
.vxn-mega__panel .vxn-mega__head,
.vxn-mega__panel .vxn-mega__kicker,
.vxn-mega__panel .vxn-mega__lede,
.vxn-mega__panel .vxn-mega__itemtitle,
.vxn-mega__panel .vxn-mega__itemdesc,
.vxn-mega__panel .vxn-mega__eyebrow,
.vxn-mega__panel .vxn-mega__cardtitle {
  white-space: normal !important;
}

/* ==========================================================================
   Desktop bar (nav.elementor-nav-menu--main) — the three-rail sheet
   ========================================================================== */

.elementor-nav-menu--main .vxn-mega__inner {
  display: grid;
  /* Index on the left, the pair of cards on the right — the proportion of the
     reference. The cards are given a share rather than a fixed width so the
     link titles keep their measure as the viewport narrows. */
  grid-template-columns: minmax(0, 1fr) minmax(0, 0.82fr);
  gap: 0 64px;
  align-items: stretch;
  /* All three panels stand the same height. Left to their content they follow
     the length of their own link list — Services leads with six entries,
     Insights five, Our Group four — so the sheet visibly changed size as you
     moved along the bar. This is the height of the longest of them (three rows
     of links), so it is a floor the shorter menus rise to rather than a cap on
     any of them. */
  min-height: 545px;
}

/* ---- Index region (title, links, the ruled CTA at its foot) ---- */

.elementor-nav-menu--main .vxn-mega__main {
  display: flex;
  flex-direction: column;
  min-width: 0;
}

.elementor-nav-menu--main .vxn-mega__list {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  column-gap: 44px;
  align-content: start;
}

.elementor-nav-menu--main .vxn-mega__intro {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  margin-bottom: 22px;
}

.elementor-nav-menu--main .vxn-mega__kicker {
  margin-bottom: 12px;
  color: var(--vxn-blue, #0B2DBE);
}

.elementor-nav-menu--main .vxn-mega__head {
  font-size: 40px;
  line-height: 1.08;
  margin: 0 0 12px;
}

.elementor-nav-menu--main .vxn-mega__lede {
  max-width: 46ch;
  font-size: 14px;
}

/* The CTA runs the width of the index region under a hairline, with the ringed
   arrow on the far right — the "Tous les produits" row of the reference. */
.elementor-nav-menu--main .vxn-mega__panel .vxn-mega__viewall {
  display: flex !important;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  /* The theme gives every menu anchor flex-grow:1 and margin:0, which stretched
     this link down the whole column — pin it to its content and let the auto
     margin push it to the foot. */
  flex: 0 0 auto !important;
  align-self: stretch;
  margin: auto 0 0 !important;
  padding: 22px 0 0 !important;
  border-top: 1px solid rgba(14, 53, 95, 0.16);
  border-radius: 0;
  text-decoration: none !important;
  background: transparent !important;
  font-size: 15px;
  font-weight: 500;
  letter-spacing: 0;
  text-transform: none;
  color: var(--vxn-blue, #0B2DBE) !important;
  transition: color .25s ease;
}

.elementor-nav-menu--main .vxn-mega__panel .vxn-mega__viewall:hover {
  color: var(--vxn-blue-dark, #08248F) !important;
}

/* ---- Link index ---- */

.elementor-nav-menu--main .vxn-mega__panel .vxn-mega__item {
  position: relative;
  display: grid !important;
  grid-template-columns: 24px minmax(0, 1fr) 12px;
  align-items: start;
  gap: 0 14px;
  padding: 26px 6px 26px 0 !important;
  border-top: 1px solid rgba(14, 53, 95, 0.10);
  border-radius: 0;
  text-decoration: none !important;
  background: transparent !important;
}

/* Hover is carried by the title, the icon and the chevron alone — no drawn
   accent bar down the left edge, and no indent shifting the row sideways (the
   indent only existed to make room for that bar). */

.elementor-nav-menu--main .vxn-mega__ico {
  margin-top: 1px;
}

.elementor-nav-menu--main .vxn-mega__chev {
  opacity: 0;
}

.elementor-nav-menu--main .vxn-mega__item:hover .vxn-mega__chev {
  opacity: 1;
  transform: translateX(3px);
}

/* ---- Promo cards ----
   Two blue panels standing side by side to the right of the index, each a title
   over its artwork with a ruled "Discover" row at the foot. They are the only
   rounded thing on the sheet, which is why the radius reset above has to be
   answered explicitly here, and the only saturated thing on it — the sheet is
   white, so the cards are what the eye goes to.

   Each carries a slow abstract drift: two soft colour fields, brand blue and
   violet, moving behind the content on long unequal cycles so the pair never
   visibly loops. They sit at `z-index: -1` inside the card's own stacking
   context (`isolation: isolate`), which paints them above the card's background
   and below every word on it — no z-index needed on the content. */

.elementor-nav-menu--main .vxn-mega__cards {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 20px;
  align-items: stretch;
}

.elementor-nav-menu--main .vxn-mega__panel .vxn-mega__card {
  display: flex !important;
  flex-direction: column;
  /* The theme centres menu anchors (`align-items: center`), which centred the
     caption under a left-aligned image. */
  align-items: stretch;
  position: relative;
  margin: 0 !important;
  padding: 22px 22px 18px !important;
  /* The image longhand, not the `background` shorthand: the shorthand also
     resets background-size, -position and -repeat, and with this !important
     it would take them from the block at the foot of this file that sets
     them deliberately. */
  background-image: linear-gradient(150deg, #0057BE 0%, #0E355F 100%) !important;
  border: 1px solid rgba(255, 255, 255, 0.14);
  text-decoration: none !important;
  /* Clips the drifting fields to the card's rounded corner; `isolate` is what
     keeps them above this background and behind the content. */
  overflow: hidden;
  isolation: isolate;
  transition: border-color .3s ease, box-shadow .35s ease;
}

.vxn-mega__panel .vxn-mega__wrap .vxn-mega__card {
  border-radius: 14px !important;
}

/* The gradient has to be restated here, not just left to the base rule. The
   panel carries `.vxn-mega__panel a:hover { background: transparent !important }`
   to stop the theme tinting menu links, and at 0-3-1 that outranks the card's
   own 0-3-0 background — so without this the card turns white under the
   pointer. This selector is 0-4-0 and wins. One step brighter, so the hover
   still registers. */
.elementor-nav-menu--main .vxn-mega__panel .vxn-mega__card:hover {
  /* Longhand, for the same reason as the resting rule above. */
  background-image: linear-gradient(150deg, #0061D4 0%, #13416F 100%) !important;
  border-color: rgba(255, 255, 255, 0.3);
  box-shadow: 0 14px 30px -12px rgba(0, 45, 100, .55);
}

/* The two drifting fields. Long, unequal, alternating cycles — 19s against
   26s — so the pair never returns to the same arrangement on a visible beat,
   and `alternate` means each one eases back rather than snapping to its start. */
.elementor-nav-menu--main .vxn-mega__panel .vxn-mega__card::before,
.elementor-nav-menu--main .vxn-mega__panel .vxn-mega__card::after {
  content: "";
  position: absolute;
  z-index: -1;
  border-radius: 50%;
  pointer-events: none;
  filter: blur(34px);
  will-change: transform;
}

.elementor-nav-menu--main .vxn-mega__panel .vxn-mega__card::before {
  width: 72%;
  aspect-ratio: 1;
  left: -20%;
  top: -24%;
  background: radial-gradient(circle, rgba(143, 183, 255, .85) 0%, rgba(143, 183, 255, 0) 70%);
  animation: vxn-mega-drift-a 19s ease-in-out infinite alternate;
}

.elementor-nav-menu--main .vxn-mega__panel .vxn-mega__card::after {
  width: 80%;
  aspect-ratio: 1;
  right: -26%;
  bottom: -22%;
  background: radial-gradient(circle, rgba(156, 0, 221, .55) 0%, rgba(156, 0, 221, 0) 70%);
  animation: vxn-mega-drift-b 26s ease-in-out infinite alternate;
}

/* The second card runs both cycles from the other end, so the pair never drifts
   in step with each other. */
.elementor-nav-menu--main .vxn-mega__panel .vxn-mega__card:nth-child(2)::before,
.elementor-nav-menu--main .vxn-mega__panel .vxn-mega__card:nth-child(2)::after {
  animation-direction: alternate-reverse;
}

@keyframes vxn-mega-drift-a {
  from {
    transform: translate3d(0, 0, 0) scale(1);
  }

  to {
    transform: translate3d(30%, 26%, 0) scale(1.3);
  }
}

@keyframes vxn-mega-drift-b {
  from {
    transform: translate3d(0, 0, 0) scale(1.15);
  }

  to {
    transform: translate3d(-26%, -20%, 0) scale(.85);
  }
}

@media (prefers-reduced-motion: reduce) {

  .elementor-nav-menu--main .vxn-mega__panel .vxn-mega__card::before,
  .elementor-nav-menu--main .vxn-mega__panel .vxn-mega__card::after {
    animation: none;
  }
}

.vxn-mega__cardtitle {
  display: block;
  margin-top: 6px;
  font-family: "Inter", sans-serif;
  font-weight: 400;
  font-size: 24px;
  line-height: 1.15;
  color: #FFFFFF;
}

/* The artwork takes whatever height is left between the title and the CTA, so
   both cards stand exactly as tall as the index beside them.

   The <img> is taken out of flow. Left in it, `height: 100%` has no definite
   height to resolve against and falls back to the file's own aspect ratio — so
   a portrait-ish photo would set the height of the whole sheet. */
.vxn-mega__panel .vxn-mega__wrap .vxn-mega__cardmedia {
  position: relative;
  display: block;
  flex: 1 1 auto;
  height: 0;
  min-height: 150px;
  margin: 18px 0;
  overflow: hidden;
  border-radius: 10px !important;
  /* Reads as a lit panel on the blue rather than a grey hole while it loads. */
  background: rgba(255, 255, 255, .12);
}

/* The artwork holds still on hover — the card's own tint and the ringed arrow
   carry the state instead. */
.vxn-mega__cardmedia img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.vxn-mega__cardcta {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-top: auto;
  padding-top: 16px;
  border-top: 1px solid rgba(255, 255, 255, 0.26);
  font-size: 14px;
  font-weight: 500;
  color: #FFFFFF;
}

/* The eyebrow and the ringed arrow are on blue now, so both invert. The ring
   fills white on hover with the glyph in brand blue — the reverse of what it
   does beside the white "view all" link on the same sheet. */
.vxn-mega__card .vxn-mega__eyebrow {
  color: rgba(255, 255, 255, 0.68);
}

.vxn-mega__panel .vxn-mega__wrap .vxn-mega__card .vxn-mega__circ {
  border-color: rgba(255, 255, 255, 0.45);
  color: #FFFFFF;
}

/* Same selector depth as the resting rule above, plus `:hover`. Written short
   (`.vxn-mega__card:hover .vxn-mega__circ`) it loses to that 0-4-0 resting rule
   and the glyph stays white — invisible against the white fill. */
.vxn-mega__panel .vxn-mega__wrap .vxn-mega__card:hover .vxn-mega__circ {
  background-color: #FFFFFF;
  border-color: #FFFFFF;
  color: var(--vxn-blue, #0B2DBE);
}

/* ==========================================================================
   Burger drawer (nav.elementor-nav-menu--dropdown) — the stacked list
   Width-independent: the theme uses the drawer everywhere below 1400px.

   The `nav.` prefix is load-bearing. Every sub-menu <ul> also carries
   `elementor-nav-menu--dropdown` (Elementor tags submenus with it), so a bare
   `.elementor-nav-menu--dropdown .vxn-mega__inner` matches panels inside the
   DESKTOP bar too — and, coming later in the file, wins. Only the drawer's
   container is a <nav>, so that is what these are anchored to.
   ========================================================================== */

nav.elementor-nav-menu--dropdown .vxn-mega__panel>.vxn-mega__wrap {
  padding: 2px 15px 14px !important;
}

/* `display: contents` on the intro lets its children join the same flex order,
   so the "view all" link falls to the foot of the list instead of sitting above
   it as it does in the desktop rail. */
nav.elementor-nav-menu--dropdown .vxn-mega__inner {
  display: flex;
  flex-direction: column;
}

nav.elementor-nav-menu--dropdown .vxn-mega__main,
nav.elementor-nav-menu--dropdown .vxn-mega__intro {
  display: contents;
}

/* The drawer already shows the parent item ("Our Group") immediately above the
   panel, so repeating the section title here just stutters. */
nav.elementor-nav-menu--dropdown .vxn-mega__head {
  display: none;
}

nav.elementor-nav-menu--dropdown .vxn-mega__list {
  order: 2;
  display: block;
}

nav.elementor-nav-menu--dropdown .vxn-mega__kicker,
nav.elementor-nav-menu--dropdown .vxn-mega__lede,
nav.elementor-nav-menu--dropdown .vxn-mega__cards {
  display: none !important;
}

nav.elementor-nav-menu--dropdown .vxn-mega__panel .vxn-mega__item {
  display: grid !important;
  grid-template-columns: 24px minmax(0, 1fr) 12px;
  align-items: center;
  gap: 0 12px;
  padding: 12px 0 !important;
  border-bottom: 1px solid rgba(14, 53, 95, 0.09);
  border-radius: 0;
  text-decoration: none !important;
  background: transparent !important;
}

nav.elementor-nav-menu--dropdown .vxn-mega__itemdesc {
  -webkit-line-clamp: 1;
  font-size: 12px;
}

nav.elementor-nav-menu--dropdown .vxn-mega__chev {
  opacity: 1;
  color: #b7c0c7;
}

nav.elementor-nav-menu--dropdown .vxn-mega__panel .vxn-mega__viewall {
  display: inline-flex !important;
  align-items: center;
  gap: 9px;
  flex: 0 0 auto !important;
  order: 3;
  align-self: flex-start;
  margin: 18px 0 4px !important;
  padding: 0 0 6px !important;
  border-top: 0;
  border-bottom: 1px solid rgba(14, 53, 95, 0.30);
  border-radius: 0;
  text-decoration: none !important;
  background: transparent !important;
  font-size: 11.5px;
  font-weight: 700;
  letter-spacing: 1.1px;
  text-transform: uppercase;
  color: var(--e-global-color-vamtam_text, #0E355F) !important;
}

/* The ring is a desktop flourish; in the drawer it just eats a line. */
nav.elementor-nav-menu--dropdown .vxn-mega__panel .vxn-mega__circ {
  width: 22px;
  height: 22px;
  border: 0;
}

nav.elementor-nav-menu--dropdown .vxn-mega__panel .vxn-mega__circ svg {
  width: 14px;
  height: 14px;
}

/* ==========================================================================
   UAE HOME — "Who We Are" (.vxn-plat) and "Our Vision" (.vxn-vision)

   Both are two-rail layouts: a statement on one side, the substance on the
   other, divided by a hairline. They replace the earlier centred single-column
   treatments. Markup lives in en-ae/index.php; the India edition keeps its own
   .vxn-wwa block, so nothing here is shared between the two editions.
   ========================================================================== */

.vxn-plat {
  /* The foot padding is what keeps the skyline clear of the dark services band
     that follows; without it the drawing runs straight into that edge. */
  padding: 80px 0 64px;
  background: #FFFFFF;
}

.vxn-plat__inner {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 44px;
  width: 100%;
  max-width: 1200px;
  margin: 0 auto;
  padding: 0 28px;
}

@media (min-width: 1025px) {
  .vxn-plat__inner {
    grid-template-columns: minmax(0, 0.78fr) minmax(0, 1fr);
    gap: 76px;
    align-items: start;
  }
}

/* ---- Left rail: the statement ---- */

.vxn-plat__lede {
  position: relative;
  /* Room at the foot for the skyline to sit under the copy. The artwork is 3:2,
     so it needs noticeably more height than the 2:1 drawing it replaced. */
  padding-bottom: 300px;
}

.vxn-plat__chip {
  display: inline-block;
  padding: 6px 13px;
  background: #F1F3F6;
  border-radius: 3px;
  font-size: 12px;
  font-weight: 500;
  line-height: 1.2;
  color: rgba(14, 53, 95, 0.78);
}

.vxn-plat__head {
  margin: 22px 0 0;
  /* The measure is set in em so the three-line break holds at any column width:
     "An Integrated / Platform of / Expertise". */
  max-width: 8.2em;
  font-family: "Inter", sans-serif;
  font-size: 50px;
  font-weight: 400;
  line-height: 1.14;
  letter-spacing: -0.2px;
  color: var(--e-global-color-vamtam_text, #0E355F);
}

.vxn-plat__rule {
  display: block;
  width: 58px;
  height: 3px;
  margin: 24px 0 26px;
  background: var(--vxn-blue, #0B2DBE);
}

.vxn-plat__text {
  margin: 0;
  max-width: 30em;
  font-size: 15px;
  line-height: 1.85;
  color: var(--vxn-text, #35415A);
}

/* Sits at the foot of the rail, under the copy. `pointer-events: none` so it
   never intercepts a click, and it is dropped on small screens where there is
   no room for it to read as anything but noise.

   The copy is raised above it rather than the artwork being pushed below with
   `z-index: -1`: a negative index would drop the drawing behind the section's
   own white background the moment anything in the ancestor chain became a
   stacking context. */
.vxn-plat__art {
  position: absolute;
  left: -10px;
  /* Flush with the foot of the rail — not below it. The section's own bottom
     padding supplies the gap to whatever follows. */
  bottom: 0;
  width: 108%;
  max-width: 460px;
  height: auto;
  /* The file is line art on a white ground, so it needs no masking — except the
     JPEG's ground is rgb(254,254,254) against a pure-white section, and that one
     level is enough to show the image as a faint grey rectangle. The brightness
     lift clips the ground to 255 while barely touching the drawing; the opacity
     then keeps it behind the copy rather than competing with it. Order matters:
     `filter` applies before compositing, so the white is already 255 by the time
     opacity blends it with the section. */
  filter: brightness(1.03);
  opacity: 0.9;
  pointer-events: none;
}

.vxn-plat__chip,
.vxn-plat__head,
.vxn-plat__rule,
.vxn-plat__text {
  position: relative;
  z-index: 1;
}

/* ---- Right rail: the capability cards ---- */

.vxn-plat__grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 16px;
}

.vxn-plat__card {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  min-height: 178px;
  padding: 28px 22px;
  text-align: center;
  background: #FFFFFF;
  border: 1px solid rgba(14, 53, 95, 0.11);
  border-radius: 4px;
  transition: border-color .3s ease, box-shadow .3s ease, transform .3s ease;
}

.vxn-plat__card:hover {
  border-color: rgba(0, 83, 183, 0.32);
  box-shadow: 0 14px 32px rgba(11, 26, 38, 0.08);
  transform: translateY(-2px);
}

.vxn-plat__ico {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 54px;
  height: 54px;
  border-radius: 50%;
  background: #EDF3FB;
  color: var(--vxn-blue, #0B2DBE);
  transition: background-color .3s ease;
}

.vxn-plat__card:hover .vxn-plat__ico {
  background: #E1EDFC;
}

.vxn-plat__dash {
  display: block;
  width: 26px;
  height: 2px;
  margin: 18px 0 14px;
  background: rgba(0, 83, 183, 0.42);
}

.vxn-plat__label {
  display: block;
  max-width: 15em;
  font-size: 14px;
  font-weight: 400;
  line-height: 1.5;
  color: var(--vxn-blue, #0B2DBE);
}

@media (max-width: 1024px) {
  .vxn-plat {
    padding: 72px 0 78px;
  }

  .vxn-plat__lede {
    padding-bottom: 0;
  }

  .vxn-plat__art {
    display: none;
  }

  .vxn-plat__head {
    font-size: 38px;
  }
}

@media (max-width: 560px) {
  .vxn-plat__inner {
    gap: 32px;
    padding: 0 20px;
  }

  .vxn-plat__head {
    font-size: 30px;
  }

  .vxn-plat__grid {
    grid-template-columns: minmax(0, 1fr);
    gap: 12px;
  }

  .vxn-plat__card {
    min-height: 0;
    padding: 24px 20px;
  }
}

/* ==========================================================================
   Our Vision
   ========================================================================== */

.vxn-vision {
  padding: 88px 0 96px;
  background: #FFFFFF;
}

.vxn-vision__inner {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 40px;
  width: 100%;
  max-width: 1200px;
  margin: 0 auto;
  padding: 0 28px;
}

@media (min-width: 1025px) {
  .vxn-vision__inner {
    grid-template-columns: minmax(0, 0.78fr) minmax(0, 1fr);
    gap: 0 64px;
    align-items: start;
  }

  /* The hairline between the rails hangs off the track, so it stops with the
     last pillar rather than running the full height of the statement. */
  .vxn-vision__track {
    padding-right: 64px;
    margin-right: -64px;
    border-right: 1px solid rgba(14, 53, 95, 0.13);
  }
}

/* ---- Left rail: the three pillars as a track ---- */

.vxn-vision__track {
  margin: 0;
  padding: 0;
  list-style: none;
}

.vxn-vision__step {
  position: relative;
  padding: 0 0 34px 58px;
}

.vxn-vision__step:last-child {
  padding-bottom: 0;
}

/* Connector and its midpoint bead are drawn on the step, so adding a fourth
   pillar needs no extra markup. */
.vxn-vision__step:not(:last-child)::before {
  content: "";
  position: absolute;
  left: 17px;
  top: 44px;
  bottom: 4px;
  width: 1px;
  background: rgba(14, 53, 95, 0.16);
}

.vxn-vision__step:not(:last-child)::after {
  content: "";
  position: absolute;
  left: 14.5px;
  top: 62px;
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--vxn-blue, #0B2DBE);
}

.vxn-vision__mark {
  position: absolute;
  left: 0;
  top: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 35px;
  height: 35px;
  border-radius: 50%;
  background: #EDF3FB;
  color: var(--vxn-blue, #0B2DBE);
}

.vxn-vision__title {
  margin: 4px 0 8px;
  font-family: "Inter", sans-serif;
  font-size: 21px;
  font-weight: 400;
  line-height: 1.2;
  color: var(--e-global-color-vamtam_text, #0E355F);
}

.vxn-vision__text {
  margin: 0;
  max-width: 26em;
  font-size: 13px;
  line-height: 1.7;
  color: var(--vxn-muted, #6A7590);
}

/* ---- Right rail: the statement ---- */

.vxn-vision__chip {
  display: inline-block;
  padding: 6px 13px;
  background: #F1F3F6;
  border-radius: 3px;
  font-size: 12px;
  font-weight: 500;
  line-height: 1.2;
  color: rgba(14, 53, 95, 0.78);
}

.vxn-vision__lead {
  margin: 34px 0 0;
  font-family: "Inter", sans-serif;
  font-size: 36px;
  font-weight: 400;
  line-height: 1.45;
  letter-spacing: -0.2px;
  color: var(--e-global-color-vamtam_text, #0E355F);
}

@media (max-width: 1024px) {
  .vxn-vision {
    padding: 66px 0 72px;
  }

  .vxn-vision__lead {
    font-size: 28px;
    margin-top: 22px;
  }
}

@media (max-width: 560px) {
  .vxn-vision__inner {
    gap: 32px;
    padding: 0 20px;
  }

  .vxn-vision__lead {
    font-size: 23px;
    line-height: 1.4;
  }

  .vxn-vision__step {
    padding-left: 50px;
  }
}

.vxn-art-hero__inner {
  padding: 40px 0px !important;
  padding-left: 100px !important;

}

colgroup {

      width: 100%;
    max-width: 100%;
    display: block;

}

.vxn-cookie {
  position: fixed;
  z-index: 99999;
  left: 50%;
  bottom: 24px;
  transform: translateX(-50%);
  width: min(1100px, calc(100% - 32px));
  background-color: #ffffff;
  background-image: none;
  border: 1px solid rgba(14, 53, 95, 0.10);
  border-radius: 16px;
  box-shadow: 0 18px 50px rgba(14, 53, 95, 0.22);
  color: var(--vxn-navy-dark);

  animation: vxn-cookie-in 0.35s ease;
}

.vxn-cookie[hidden] {
  display: none;
}

@keyframes vxn-cookie-in {
  from {
    opacity: 0;
    transform: translate(-50%, 16px);
  }

  to {
    opacity: 1;
    transform: translate(-50%, 0);
  }
}

.vxn-cookie__inner {
  position: relative;
  display: flex;
  align-items: center;
  gap: 30px;
  padding: 24px 30px;
}

.vxn-cookie__close {
  position: absolute;
  top: -4px;
  right: 4px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 34px;
  height: 34px;
  padding: 0;
  border: 0 !important;
  background: none !important;
  background-color: transparent !important;
  background-image: none !important;
  box-shadow: none !important;
  color: rgba(14, 53, 95, 0.55) !important;
  font-size: 28px !important;
  line-height: 1 !important;
  cursor: pointer;
  transition: color 0.15s ease;
}

.vxn-cookie__close:hover,
.vxn-cookie__close:focus,
.vxn-cookie__close:focus-visible,
.vxn-cookie__close:active {
  color: var(--vxn-navy-dark) !important;
  background: none !important;
  background-color: transparent !important;
  background-image: none !important;
  box-shadow: none !important;
  outline: none;
}

.vxn-cookie__body {
  flex: 1 1 auto;
  min-width: 0;
}

.vxn-cookie__title {
  margin: 0 0 6px !important;
  font-size: 21px !important;
  line-height: 1.2 !important;
  font-weight: 700 !important;
  color: var(--vxn-navy-dark) !important;
}

.vxn-cookie__text {
  margin: 0 !important;
  padding-right: 16px;
  font-size: 14.5px !important;
  line-height: 1.6 !important;
  color: rgba(14, 53, 95, 0.62) !important;
  max-width: none;
}

.vxn-cookie__link {
  color: var(--vxn-gold-dark) !important;
  font-weight: 700 !important;
  text-decoration: none;
  white-space: nowrap;
}

.vxn-cookie__link:hover {
  text-decoration: underline;
}

.vxn-cookie__actions {
  flex: 0 0 auto;
  display: flex;
  align-items: center;
  gap: 10px;
}

/* The one CTA (20260911): the same pill as everywhere else, in its filled and
   outline finishes. The wedge does the hover; nothing swaps underneath it. */
.vxn-cookie__btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: var(--vxn-cta-h) !important;
  padding: 0 var(--vxn-cta-px) !important;
  border-radius: var(--vxn-cta-r);
  font-size: var(--vxn-cta-fs) !important;
  font-weight: var(--vxn-cta-fw) !important;
  letter-spacing: var(--vxn-cta-ls);
  line-height: 1 !important;
  white-space: nowrap;
  cursor: pointer;
  transition: background-image 0.2s ease, background-color 0.2s ease, color 0.2s ease, border-color 0.2s ease;
}

.vxn-cookie__btn--primary {
  border: 1px solid transparent !important;
  background-image: var(--vxn-cta-grad) !important;
  background-color: var(--vxn-cta-ink) !important;
  color: #fff !important;
  --vxn-cta-sweep: var(--vxn-cta-sweep-dark);
}

.vxn-cookie__btn--primary:hover {
  color: #fff !important;
}

.vxn-cookie__btn--ghost {
  border: 1px solid rgba(11, 45, 190, 0.35) !important;
  background: transparent !important;
  background-image: none !important;
  color: var(--vxn-cta-ink) !important;
  --vxn-cta-sweep: var(--vxn-cta-grad);
}

.vxn-cookie__btn--ghost:hover {
  border-color: transparent !important;
  color: #ffffff !important;
}

.vxn-cookie-modal {
  position: fixed;
  inset: 0;
  z-index: 100000;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 20px;
}

.vxn-cookie-modal[hidden] {
  display: none;
}

.vxn-cookie-modal__overlay {
  position: absolute;
  inset: 0;
  background: rgba(9, 20, 28, 0.68);
  backdrop-filter: blur(2px);
}

.vxn-cookie-modal__panel {
  position: relative;
  width: min(540px, 100%);
  max-height: calc(100vh - 40px);
  overflow-y: auto;
  background-color: #ffffff;
  border: 1px solid rgba(14, 53, 95, 0.10);
  border-radius: 14px;
  box-shadow: 0 30px 80px rgba(14, 53, 95, 0.35);
  color: var(--vxn-navy-dark);
  padding: 26px 26px 22px;
  animation: vxn-cookie-modal-in 0.25s ease;
}

@keyframes vxn-cookie-modal-in {
  from {
    opacity: 0;
    transform: translateY(14px);
  }

  to {
    opacity: 1;
    transform: translateY(0);
  }
}

.vxn-cookie-modal__close {
  position: absolute;
  top: 14px;
  right: 16px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 34px;
  height: 34px;
  padding: 0;
  border: 0 !important;
  background: none !important;
  background-color: transparent !important;
  background-image: none !important;
  box-shadow: none !important;
  color: rgba(14, 53, 95, 0.55) !important;
  font-size: 28px !important;
  line-height: 1 !important;
  cursor: pointer;
}

.vxn-cookie-modal__close:hover,
.vxn-cookie-modal__close:focus,
.vxn-cookie-modal__close:focus-visible,
.vxn-cookie-modal__close:active {
  color: var(--vxn-navy-dark) !important;
  background: none !important;
  background-color: transparent !important;
  background-image: none !important;
  box-shadow: none !important;
  outline: none;
}

.vxn-cookie-modal__title {
  margin: 0 0 8px !important;
  font-size: 18px !important;
  line-height: 1.2 !important;
  font-weight: 700 !important;
  color: var(--vxn-navy-dark) !important;
}

.vxn-cookie-modal__intro {
  margin: 0 0 18px !important;
  font-size: 13px !important;
  line-height: 1.55 !important;
  color: rgba(14, 53, 95, 0.62) !important;
  max-width: none;
}

.vxn-cookie-modal__list {
  list-style: none;
  margin: 0 0 22px;
  padding: 0;
}

.vxn-cookie-cat {
  padding: 15px 0;
  border-top: 1px solid rgba(14, 53, 95, 0.10);
}

.vxn-cookie-cat:last-child {
  border-bottom: 1px solid rgba(14, 53, 95, 0.10);
}

.vxn-cookie-cat__head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  margin-bottom: 6px;
}

.vxn-cookie-cat__name {
  font-size: 14.5px !important;
  font-weight: 600 !important;
  color: var(--vxn-navy-dark) !important;
}

.vxn-cookie-cat__always {
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.4px;
  color: var(--vxn-gold-dark) !important;
}

.vxn-cookie-cat__desc {
  margin: 0 !important;
  font-size: 12px !important;
  line-height: 1.55 !important;
  color: rgba(14, 53, 95, 0.55) !important;
  max-width: none;
}

.vxn-cookie-modal__actions {
  display: flex;
  justify-content: flex-end;
  gap: 12px;
}

.vxn-cookie-switch {
  position: relative;
  display: inline-flex;
  flex: 0 0 auto;
  width: 46px;
  height: 26px;
  cursor: pointer;
}

.vxn-cookie-switch input {
  position: absolute;
  opacity: 0;
  width: 0;
  height: 0;
}

.vxn-cookie-switch__slider {
  position: absolute;
  inset: 0;
  background: rgba(14, 53, 95, 0.18);
  border-radius: 999px;
  transition: background-color 0.2s ease;
}

.vxn-cookie-switch__slider::before {
  content: "";
  position: absolute;
  top: 3px;
  left: 3px;
  width: 20px;
  height: 20px;
  background: #fff;
  border-radius: 50%;
  box-shadow: 0 1px 3px rgba(14, 53, 95, 0.3);
  transition: transform 0.2s ease;
}

.vxn-cookie-switch input:checked+.vxn-cookie-switch__slider {
  background: var(--vxn-gold);
}

.vxn-cookie-switch input:checked+.vxn-cookie-switch__slider::before {
  transform: translateX(20px);
}

.vxn-cookie-switch input:focus-visible+.vxn-cookie-switch__slider {
  outline: 2px solid var(--vxn-gold);
  outline-offset: 2px;
}

.vxn-cookie-switch__sr {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
}

body.vxn-cookie-lock {
  overflow: hidden;
}

@media (max-width: 767px) {
  .vxn-cookie {
    bottom: 12px;
    width: calc(100% - 20px);
    border-radius: 14px;
  }

  .vxn-cookie__inner {
    flex-direction: column;
    align-items: stretch;
    gap: 16px;
    padding: 30px 18px;
  }

  .vxn-cookie__title {
    padding-right: 26px;

  }

  .vxn-cookie__text {
    padding-right: 0;
  }

  .vxn-cookie__actions {
    flex-direction: column-reverse;
  }

  .vxn-cookie__btn {
    width: 100%;
  }

  .vxn-cookie-modal__actions {
    flex-direction: column-reverse;
  }

  .vxn-cookie-modal__actions .vxn-cookie__btn {
    width: 100%;
  }
}

.elementor-2281 .elementor-element-10f841ea a.elementor-button.elementor-button-link.elementor-size-sm,
.elementor-2281 .elementor-element-10f841ea a.elementor-button.elementor-button-link.elementor-size-sm:hover,
.elementor-2281 .elementor-element-10f841ea a.elementor-button.elementor-button-link.elementor-size-sm:focus {
  background-image: none !important;
  background-color: transparent !important;
  box-shadow: none !important;
  border: 0 !important;
  border-radius: 0 !important;
  padding-left: 0 !important;
  padding-right: 0 !important;
  padding-top: 6px !important;
  padding-bottom: 6px !important;
  color: var(--vxn-navy) !important;
}

.elementor-2281 .elementor-element-10f841ea a.elementor-button.elementor-button-link.elementor-size-sm .elementor-button-text {
  color: var(--vxn-navy) !important;
  font-weight: 600 !important;
}

.elementor-2281 .elementor-element-10f841ea a.elementor-button.elementor-button-link.elementor-size-sm .elementor-button-icon,
.elementor-2281 .elementor-element-10f841ea a.elementor-button.elementor-button-link.elementor-size-sm .elementor-button-icon i {
  color: var(--vxn-gold) !important;
  fill: var(--vxn-gold) !important;
}

.elementor-2281 .elementor-element-10f841ea a.elementor-button.elementor-button-link.elementor-size-sm:hover,
.elementor-2281 .elementor-element-10f841ea a.elementor-button.elementor-button-link.elementor-size-sm:hover .elementor-button-text,
.elementor-2281 .elementor-element-10f841ea a.elementor-button.elementor-button-link.elementor-size-sm:hover .elementor-button-icon,
.elementor-2281 .elementor-element-10f841ea a.elementor-button.elementor-button-link.elementor-size-sm:hover .elementor-button-icon i {
  color: var(--vxn-gold-dark) !important;
  fill: var(--vxn-gold-dark) !important;
}

.elementor-2281 .elementor-element-10f841ea a.elementor-button.elementor-button-link.elementor-size-sm {
  transition: color 0.18s ease;
}

.elementor-2281 .elementor-element-10f841ea a.elementor-button.elementor-button-link.elementor-size-sm .elementor-button-icon {
  transition: transform 0.18s ease;
}

.elementor-2281 .elementor-element-10f841ea a.elementor-button.elementor-button-link.elementor-size-sm:hover .elementor-button-icon {
  transform: translateX(4px);
}

/* ==========================================================================
   Scroll-to-top button fix
   The theme's base rule sets `#scroll-to-top { display:none }` and its reveal
   script (low-priority.js) only toggles inline `opacity`/`transform` — which
   can never override `display:none`, so the button was permanently invisible.
   We drive visibility ourselves: the button stays block-level but hidden via
   opacity/visibility, and a small scroll script (scripts.php) adds `.vxn-visible`
   once the user has scrolled down the page (so it is present through the footer).
   ========================================================================== */
#scroll-to-top {
  display: block !important;
  opacity: 0 !important;
  visibility: hidden;
  pointer-events: none;
  transform: translate3d(0, 16px, 0) !important;
  transition: opacity 0.3s ease-out, transform 0.3s ease-out, visibility 0.3s !important;
}

#scroll-to-top.vxn-visible {
  opacity: 1 !important;
  visibility: visible;
  pointer-events: auto;
  transform: translate3d(0, 0, 0) !important;
  cursor: pointer;
}

/* It carries role="button" and a tab stop (PageShell), so it needs a focus
   ring of its own — the theme never gave the <div> one. */
#scroll-to-top:focus-visible {
  outline: 2px solid #0B2DBE;
  outline-offset: 3px;
}

#scroll-to-top.vxn-visible:hover {
  transform: translate3d(0, -8px, 0) !important;
}

/* Arrow direction: the theme renders the arrow via #scroll-to-top-text rotated
   270deg, which leaves it pointing sideways. Hide that glyph and paint a clean
   upward (vertical) arrow so the button clearly reads as "go to top". */
#scroll-to-top #scroll-to-top-text {
  font-size: 0 !important;
  transform: none !important;
  margin: 0 !important;
}

#scroll-to-top #scroll-to-top-text::after {
  content: none !important;
  display: none !important;
}

#scroll-to-top {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%230053B7' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 20V5'/%3E%3Cpath d='M6 11l6-6 6 6'/%3E%3C/svg%3E") !important;
  background-repeat: no-repeat !important;
  background-position: center !important;
  background-size: 17px 17px !important;
}

/* ==========================================================================
   Sticky navbar
   The theme keeps the header position:fixed, but its `stickyHeader` JS HIDES it
   on scroll-down by adding `.vamtam-sticky-header--fixed-hidden`, which applies
   `transform: translateY(-100%)` (theme's elementor-max.css) — so the navbar
   slid up out of view when scrolling down. We defeat that: the bar stays pinned
   and visible whether scrolling up or down, reusing the theme's "shown" blurred
   background so it stays readable. After 60px, scripts.php adds `.vxn-nav-stuck`
   to <html> for a subtle shadow.
   ========================================================================== */
.elementor-location-header .vamtam-sticky-header:not(.vamtam-sticky-header--spacer) {
  position: fixed !important;
  top: 0 !important;
  inset-inline: 0 !important;
  width: 100% !important;
  z-index: 1200 !important;
}

/* Never hide on scroll-down: cancel the theme's translateY(-100%) so the bar
   holds its place, and give it the same blurred background as the shown state. */
body:not(.elementor-editor-active) .vamtam-sticky-header.vamtam-sticky-header--fixed-hidden {
  transform: translateY(0) !important;
  -webkit-backdrop-filter: none !important;
  backdrop-filter: none !important;
}

/* Make the kept-visible scroll-down state look like the theme's "shown" state
   (same background) so the nav stays readable, mirroring elementor-max.css. */
body:not(.elementor-editor-active) .vamtam-sticky-header.vamtam-sticky-header--fixed-hidden.vamtam-sticky-header--transparent-header {
  background-color: transparent !important;
}

html.vxn-nav-stuck .elementor-location-header .vamtam-sticky-header:not(.vamtam-sticky-header--spacer) {
  background-color: #FFFFFF !important;
  box-shadow: 0 6px 24px rgba(11, 26, 38, .10) !important;
}

/* Transparent header (home): its background is painted by a ::before overlay
   (the element's own background-color is locked transparent by a higher-
   specificity kit rule). Reveal that overlay once scrolled past 60px so the nav
   stays readable over lighter sections. Scoped to transparent headers, so inner
   pages (which already have a solid header) are untouched. */
html.vxn-nav-stuck .vamtam-sticky-header--transparent-header:not(.vamtam-sticky-header--spacer)::before {
  opacity: 1 !important;
  /* Solid, not translucent: at the foot of the page the footer used to show
     through the pinned bar, stacking two logos and two sets of type. */
  background-color: #FFFFFF !important;
}

/* Footer "Building Wealth…" description: left-align (theme set it justified). */
.elementor-element-97f60b2,
.elementor-element-97f60b2 .elementor-widget-container,
.elementor-element-97f60b2 p {
  text-align: left !important;
}

.elementor-kit-5 a {
  color: #fff;
}

/* ==========================================================================
   Country switcher (includes/partials/region-switcher.php)

   Sits between the nav and the Free Consultation button in every header. The
   home header (139) is transparent over dark imagery, the inner-page header
   (3837) is light — so the trigger takes its colour from the header it is in,
   while the dropdown panel is always a light card.
   ========================================================================== */

.vxn-region {
  position: relative;
  display: flex;
  align-items: center;
  margin-left: 4px;
  z-index: 100;
}

/* The theme kit styles bare <button> elements (gold fill, 6px radius,
   16px padding), so the trigger has to state its own look explicitly. */
.vxn-region .vxn-region__toggle {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 7px 12px !important;
  border: 1px solid rgba(14, 53, 95, .18) !important;
  border-radius: 999px !important;
  background: transparent !important;
  background-image: none !important;
  box-shadow: none !important;
  color: var(--vxn-navy-dark) !important;
  font-size: 13px !important;
  font-weight: 600;
  letter-spacing: .01em;
  line-height: 1;
  min-height: 0;
  cursor: pointer;
  white-space: nowrap;
  transition: border-color .2s ease, background-color .2s ease, color .2s ease;
}

.vxn-region .vxn-region__toggle:hover,
.vxn-region .vxn-region__toggle:focus-visible,
.vxn-region.is-open .vxn-region__toggle {
  border-color: var(--vxn-gold) !important;
  background-color: rgba(0, 83, 183, .10) !important;
}

.vxn-region__flag {
  display: block;
  flex: 0 0 auto;
  border-radius: 2px;
}

.vxn-region__code {
  display: none;
}

.vxn-region__caret {
  opacity: .65;
  transition: transform .2s ease;
}

.vxn-region.is-open .vxn-region__caret {
  transform: rotate(180deg);
}

/* --- The dropdown panel ---------------------------------------------------- */

.vxn-region__menu {
  position: absolute;
  top: calc(100% + 12px);
  right: 0;
  min-width: 268px;
  padding: 10px;
  background: #fff;
  border: 1px solid rgba(14, 53, 95, .10);
  border-radius: 14px;
  box-shadow: 0 18px 44px rgba(11, 26, 38, .18);
  opacity: 0;
  visibility: hidden;
  transform: translateY(-6px);
  transition: opacity .18s ease, transform .18s ease, visibility .18s;
}

.vxn-region.is-open .vxn-region__menu {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
}

.vxn-region__label {
  margin: 4px 10px 8px;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: rgba(14, 53, 95, .5);
}

.vxn-region__item {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 10px;
  border-radius: 10px;
  color: var(--vxn-navy-dark) !important;
  text-decoration: none;
  transition: background-color .18s ease;
}

.vxn-region__item:hover,
.vxn-region__item:focus-visible {
  background-color: #F4F6F8;
}

.vxn-region__item.is-active {
  background-color: rgba(0, 83, 183, .12);
}

.vxn-region__item-flag {
  display: flex;
  flex: 0 0 auto;
  border-radius: 3px;
  overflow: hidden;
}

.vxn-region__item-text {
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
  flex: 1 1 auto;
}

.vxn-region__item-name {
  font-size: 14px;
  font-weight: 600;
  line-height: 1.25;
}

.vxn-region__item-meta {
  font-size: 12px;
  line-height: 1.25;
  color: rgba(14, 53, 95, .55);
}

.vxn-region__tick {
  color: var(--vxn-gold-dark);
  flex: 0 0 auto;
}

/* --- Header-specific colouring --------------------------------------------- */

/* Home: transparent header over dark imagery. */
.elementor-139 .vxn-region .vxn-region__toggle {
  color: #fff !important;
  border-color: rgba(255, 255, 255, .3) !important;
}

.elementor-139 .vxn-region .vxn-region__toggle:hover,
.elementor-139 .vxn-region .vxn-region__toggle:focus-visible,
.elementor-139 .vxn-region.is-open .vxn-region__toggle {
  border-color: var(--vxn-gold) !important;
  background-color: rgba(255, 255, 255, .10) !important;
}

/* --- Small screens: the burger takes the row, so keep the trigger compact --- */

/* Small screens: only the logo, the switcher and the burger are on the bar,
   and at 375px they add up to just over the row. Compact the trigger to the
   flag + country code, tighten the row gap, and order the switcher ahead of the
   burger so the burger keeps the right edge — otherwise the switcher wraps onto
   a second header row. */
@media (max-width: 1024px) {
  .elementor-location-header .e-con-inner {
    column-gap: 12px !important;
  }

  .elementor-location-header .e-con-inner>.elementor-widget-nav-menu {
    order: 3;
  }

  .vxn-region {
    order: 2;
    margin-left: auto;
    margin-right: 0;
  }

  .vxn-region__name {
    display: none;
  }

  .vxn-region__code {
    display: inline;
  }

  .vxn-region .vxn-region__toggle {
    gap: 6px;
    padding: 6px 10px !important;
  }

  .vxn-region__caret {
    display: none;
  }

  .vxn-region__menu {
    right: 0;
    min-width: 236px;
  }
}

/* ==========================================================================
   Navbar (2026-08-31)

   The bar was wrapping onto two rows at every desktop width: the boxed
   container caps at 1280px, the eight menu items plus the logo, the country
   switcher and the CTA needed more than that, and the menu list was allowed to
   wrap rather than being told to hold one line. Fixed by widening the header
   container (header only — page sections keep their 1280px measure), letting
   the menu take the slack, and tightening the item rhythm.
   ========================================================================== */

.elementor-location-header .e-con-inner {
  max-width: min(100%, 1560px) !important;
  column-gap: 28px !important;
  flex-wrap: nowrap !important;
  padding-inline: 34px !important;
}

/* ON THE UAE PAGES THE BAR TAKES THE PAGE'S CONTAINER (20260911). The home
   page's bands all run to min(1520px, 100% - 2 gutters) — see the .vxn-ae-home
   block in valunxt-landing.css — and the bar was the one thing above them on
   its own measure: 1560 with 34px inside it, so the logo sat 14px left of
   every heading at 1920 and 18px right of them at 1440. Same formula here, at
   (0,3,1), which also clears the two narrower-desktop paddings below. The
   gutter is read with its fallback because the bar is outside .vxn-ae-home. */
body.vxn-uae-face .elementor-location-header .e-con-inner {
  max-width: min(1520px, calc(100% - var(--vxn-gutter, clamp(16px, 4vw, 48px)) * 2)) !important;
  padding-inline: 0 !important;
}

/* The inner box's 100% is its Elementor container's CONTENT width, and that
   container pads itself 30px a side (20 and 15 on the narrower steps), which
   put the bar's content 30px further in than the formula says at every width
   but 1920. Measured: 78 at 1600 against the bands' 48. The container's own
   side padding goes to zero on these pages, so the formula is the whole
   inset. */
body.vxn-uae-face .elementor-location-header .e-con.e-parent {
  --padding-left: 0;
  --padding-right: 0;
  padding-left: 0 !important;
  padding-right: 0 !important;
}

@media (max-width: 1024px) {
  .elementor-location-header .e-con-inner {
    padding-inline: 18px !important;
  }
}

/* The new single-line wordmark is 5:1, where the old two-line PNG was 2.75:1. */
.elementor-location-header .vxn-logo {
  height: 35px;
  width: auto;
  max-width: none;
  display: block;
}

.elementor-location-header .elementor-widget-nav-menu {
  flex: 1 1 auto;
  min-width: 0;
}

.elementor-location-header nav.elementor-nav-menu--main ul.elementor-nav-menu {
  flex-wrap: nowrap !important;
  justify-content: center;
  gap: 0;
  /* What actually spaces the items. Elementor puts half this value as a margin
     on each side of every .elementor-item, so the theme's 30px was 15px a side
     — 52px between one label and the next once the anchors' own padding is
     counted. 18px brings that to 40px. The item padding below is deliberately
     NOT the lever here: it sets the width of the hover underline, so trimming
     it to close the gap shortens the rule under every label. */
  --e-nav-menu-horizontal-menu-item-margin: calc(18px / 2) !important;
}

.elementor-location-header nav.elementor-nav-menu--main ul.elementor-nav-menu>li {
  margin: 0 !important;
}

.elementor-location-header nav.elementor-nav-menu--main ul.elementor-nav-menu>li>a.elementor-item {
  padding: 10px 11px !important;
  font-size: 15px !important;
  font-weight: 500;
  letter-spacing: .005em;
  white-space: nowrap;
}

/* Dropdown affordance. Drawn as a background image rather than a pseudo
   element because Elementor's e--pointer-underline already owns ::before and
   ::after on .elementor-item for the hover rule. */
.elementor-location-header nav.elementor-nav-menu--main ul.elementor-nav-menu>li.menu-item-has-children>a.elementor-item {
  padding-right: 26px !important;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='7' viewBox='0 0 10 7'%3E%3Cpath d='M1 1.2L5 5.2L9 1.2' fill='none' stroke='%23ffffff' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round' opacity='.85'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 12px center;
  background-size: 10px 7px;
}

/* Inner-page header is light, so the chevron has to be too. */
.elementor-3837 nav.elementor-nav-menu--main ul.elementor-nav-menu>li.menu-item-has-children>a.elementor-item,
.elementor-3134 nav.elementor-nav-menu--main ul.elementor-nav-menu>li.menu-item-has-children>a.elementor-item {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='7' viewBox='0 0 10 7'%3E%3Cpath d='M1 1.2L5 5.2L9 1.2' fill='none' stroke='%230E355F' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round' opacity='.75'/%3E%3C/svg%3E");
}

/* Header CTA: a pill, as in the reference. The theme ships it as a square
   button; it takes the one arrow like every other CTA (client, 20260914; the
   arrow had been dropped here so it read as one calm shape). */
.elementor-location-header .elementor-widget-button .elementor-button {
  /* The one CTA's geometry (20260911), stated here as well as at the foot of
     the file so the header pill and the page pills cannot drift apart. */
  border-radius: var(--vxn-cta-r) !important;
  min-height: var(--vxn-cta-h) !important;
  padding: 0 var(--vxn-cta-px) !important;
  font-size: var(--vxn-cta-fs) !important;
  font-weight: var(--vxn-cta-fw);
  letter-spacing: var(--vxn-cta-ls);
  line-height: 1;
  white-space: nowrap;
  box-shadow: none !important;
}

/* Between 1024 and 1280 the eight items are tight — shave the rhythm rather
   than let the row break. */
@media (max-width: 1560px) and (min-width: 1400px) {
  .elementor-location-header .e-con-inner {
    column-gap: 14px !important;
    padding-inline: 24px !important;
  }

  .elementor-location-header nav.elementor-nav-menu--main ul.elementor-nav-menu>li>a.elementor-item {
    padding: 10px 7px !important;
    font-size: 14px !important;
  }

  .elementor-location-header nav.elementor-nav-menu--main ul.elementor-nav-menu>li.menu-item-has-children>a.elementor-item {
    padding-right: 21px !important;
    background-position: right 5px center;
  }

  /* The mega sheet keeps the header's measure — follow it in. */
  .elementor-nav-menu--main .vxn-mega__panel>.vxn-mega__wrap {
    padding-inline: 24px !important;
  }

  /* The pill used to shave to 11px 18px / 13px here. It keeps the one CTA's
     size now (20260911); the row makes room by giving up the country name. */

  /* Country name gives way to the code so the menu keeps its full row. */
  .vxn-region__name {
    display: none;
  }

  .vxn-region__code {
    display: inline;
  }

  .vxn-region .vxn-region__toggle {
    gap: 6px;
    padding: 6px 10px !important;
  }
}


/* Below 1400 the eight items, the logo, the country switcher and the CTA stop
   fitting on one line at any readable size — so the menu collapses to the
   burger there rather than at the theme's 1024. The burger takes the right
   edge; the switcher and CTA stay on the bar. */
@media (max-width: 1399px) {
  .elementor-location-header nav.elementor-nav-menu--main {
    display: none !important;
  }

  .elementor-location-header .elementor-menu-toggle {
    display: flex !important;
  }

  .elementor-location-header .e-con-inner>.elementor-widget-nav-menu {
    order: 3;
    flex: 0 0 auto;
  }

  .elementor-location-header .e-con-inner>.elementor-widget-button {
    order: 2;
  }

  .vxn-region {
    order: 1;
    margin-left: auto;
  }
}

/* The burger's drawer, restored across 768–1399px.

   The nav widget is configured "dropdown on mobile", so Elementor's own sheet
   carries `@media (min-width: 768px) { .elementor-nav-menu--dropdown-mobile
   .elementor-nav-menu--dropdown { display: none } }`. The rule above hides the
   desktop bar below 1400px and force-shows the toggle. Between the two, every
   tablet and small laptop (1280x800, 1366x768) had a burger button that opened
   nothing and no other way to navigate.

   This restores the drawer's normal open/closed behaviour in that band only:
   closed by default, shown when the toggle reports itself expanded. */
@media (min-width: 768px) and (max-width: 1399px) {
  .elementor-location-header .elementor-menu-toggle[aria-expanded="true"]+nav.elementor-nav-menu--dropdown {
    display: block !important;
  }
}

/* The contact-card logo widget was sized for the old two-line mark (100px wide
   read as ~36px tall). The single-line wordmark is 5:1, so at the same width it
   came out 20px tall and lost all presence — give it back the width instead. */
.elementor-element-2734fe6 img.vxn-logo {
  width: 152px !important;
  max-width: 152px !important;
  height: auto !important;
}

/* --------------------------------------------------------------------------
   Accent text on dark surfaces.

   The old palette had a light accent (gold) on dark navy. The new one puts the
   accent and the dark surfaces in the same blue family, so accent *text* sitting
   on a dark panel came out invisible — the footer's "Dubai (UAE)" labels were
   #0B2DBE on #0B2DBE. valunxt.com solves the same problem with sky, so
   .color-accent-2 — the theme's accent-text hook, only ever used on dark —
   takes sky here. Colour only: backgrounds are left alone deliberately, since
   re-pointing the kit variable itself would repaint panels as well as type.
   -------------------------------------------------------------------------- */
.color-accent-2,
.elementor-location-footer .color-accent-2,
[data-vxn-dark] .color-accent-2,
.vxn-dark .color-accent-2 {
  color: #8FB7FF !important;
}

/* ==========================================================================
   Palette follow-ups (2026-08-31)
   ========================================================================== */

/* 1. Hero headline emphasis.
   The second line of the home H1 is a .color-accent-2 span — gold once, then
   sky when the accent turned blue. Sky reads washed out against the hero, and
   valunxt.com sets its hero headline in plain white, so the emphasis span drops
   to white inside a heading. Elsewhere .color-accent-2 keeps sky, which is what
   makes the footer's office labels legible. */
h1 .color-accent-2,
h2 .color-accent-2,
.elementor-heading-title .color-accent-2 {
  color: #fff !important;
}

/* 2. The active navigation item.
   It was inheriting the theme's off-white (#FBFAF7) for its label and the
   accent blue for its underline — and accent blue on the dark bar is the same
   family as the bar itself, so the underline had all but vanished. White label,
   sky underline on the dark header; on the light inner header both stay blue,
   which is correct there. */
.elementor-139 .elementor-nav-menu--main .elementor-item.elementor-item-active {
  color: #fff !important;
}

.elementor-139 .elementor-nav-menu--main:not(.e--pointer-framed) .elementor-item.elementor-item-active:after,
.elementor-139 .elementor-nav-menu--main:not(.e--pointer-framed) .elementor-item:hover:after {
  background-color: #8FB7FF !important;
}

/* 3. The cream-to-accent band ("What Sets Us Apart", the group-ecosystem
   strip on Book a Consultation, and the same band on the service and group
   templates — ten elements across the generated Elementor CSS, all built from
   the one gradient rule).

   It carried black type over a gradient that ended in the accent: fine while
   the accent was gold, unreadable once that end turned blue. The band now takes
   the brand gradient outright, and everything on it — headings, list text, the
   tick icons — is white. */
.elementor-element-06c1139,
.elementor-element-06c1139>.elementor-motion-effects-container>.elementor-motion-effects-layer,
.elementor-element-2dda965,
.elementor-element-2dda965>.elementor-motion-effects-container>.elementor-motion-effects-layer,
.elementor-element-30214674,
.elementor-element-30214674>.elementor-motion-effects-container>.elementor-motion-effects-layer,
.elementor-element-30410955,
.elementor-element-30410955>.elementor-motion-effects-container>.elementor-motion-effects-layer,
.elementor-element-3733bc0d,
.elementor-element-3733bc0d>.elementor-motion-effects-container>.elementor-motion-effects-layer,
.elementor-element-410572a,
.elementor-element-410572a>.elementor-motion-effects-container>.elementor-motion-effects-layer,
.elementor-element-4675b88c,
.elementor-element-4675b88c>.elementor-motion-effects-container>.elementor-motion-effects-layer,
.elementor-element-6d892c81,
.elementor-element-6d892c81>.elementor-motion-effects-container>.elementor-motion-effects-layer,
.elementor-element-70e78184,
.elementor-element-70e78184>.elementor-motion-effects-container>.elementor-motion-effects-layer,
.elementor-element-e916678,
.elementor-element-e916678>.elementor-motion-effects-container>.elementor-motion-effects-layer {
  background-color: transparent !important;
  background-image: var(--vxn-grad-gold) !important;
}

.elementor-element-06c1139 .elementor-heading-title,
.elementor-element-06c1139 .elementor-icon-list-text,
.elementor-element-06c1139 p,
.elementor-element-06c1139 span,
.elementor-element-06c1139 a,
.elementor-element-2dda965 .elementor-heading-title,
.elementor-element-2dda965 .elementor-icon-list-text,
.elementor-element-2dda965 p,
.elementor-element-2dda965 span,
.elementor-element-2dda965 a,
.elementor-element-30214674 .elementor-heading-title,
.elementor-element-30214674 .elementor-icon-list-text,
.elementor-element-30214674 p,
.elementor-element-30214674 span,
.elementor-element-30214674 a,
.elementor-element-30410955 .elementor-heading-title,
.elementor-element-30410955 .elementor-icon-list-text,
.elementor-element-30410955 p,
.elementor-element-30410955 span,
.elementor-element-30410955 a,
.elementor-element-3733bc0d .elementor-heading-title,
.elementor-element-3733bc0d .elementor-icon-list-text,
.elementor-element-3733bc0d p,
.elementor-element-3733bc0d span,
.elementor-element-3733bc0d a,
.elementor-element-410572a .elementor-heading-title,
.elementor-element-410572a .elementor-icon-list-text,
.elementor-element-410572a p,
.elementor-element-410572a span,
.elementor-element-410572a a,
.elementor-element-4675b88c .elementor-heading-title,
.elementor-element-4675b88c .elementor-icon-list-text,
.elementor-element-4675b88c p,
.elementor-element-4675b88c span,
.elementor-element-4675b88c a,
.elementor-element-6d892c81 .elementor-heading-title,
.elementor-element-6d892c81 .elementor-icon-list-text,
.elementor-element-6d892c81 p,
.elementor-element-6d892c81 span,
.elementor-element-6d892c81 a,
.elementor-element-70e78184 .elementor-heading-title,
.elementor-element-70e78184 .elementor-icon-list-text,
.elementor-element-70e78184 p,
.elementor-element-70e78184 span,
.elementor-element-70e78184 a,
.elementor-element-e916678 .elementor-heading-title,
.elementor-element-e916678 .elementor-icon-list-text,
.elementor-element-e916678 p,
.elementor-element-e916678 span,
.elementor-element-e916678 a {
  color: #fff !important;
}

.elementor-element-06c1139 .elementor-icon-list-icon,
.elementor-element-06c1139 .elementor-icon-list-icon i,
.elementor-element-06c1139 svg,
.elementor-element-2dda965 .elementor-icon-list-icon,
.elementor-element-2dda965 .elementor-icon-list-icon i,
.elementor-element-2dda965 svg,
.elementor-element-30214674 .elementor-icon-list-icon,
.elementor-element-30214674 .elementor-icon-list-icon i,
.elementor-element-30214674 svg,
.elementor-element-30410955 .elementor-icon-list-icon,
.elementor-element-30410955 .elementor-icon-list-icon i,
.elementor-element-30410955 svg,
.elementor-element-3733bc0d .elementor-icon-list-icon,
.elementor-element-3733bc0d .elementor-icon-list-icon i,
.elementor-element-3733bc0d svg,
.elementor-element-410572a .elementor-icon-list-icon,
.elementor-element-410572a .elementor-icon-list-icon i,
.elementor-element-410572a svg,
.elementor-element-4675b88c .elementor-icon-list-icon,
.elementor-element-4675b88c .elementor-icon-list-icon i,
.elementor-element-4675b88c svg,
.elementor-element-6d892c81 .elementor-icon-list-icon,
.elementor-element-6d892c81 .elementor-icon-list-icon i,
.elementor-element-6d892c81 svg,
.elementor-element-70e78184 .elementor-icon-list-icon,
.elementor-element-70e78184 .elementor-icon-list-icon i,
.elementor-element-70e78184 svg,
.elementor-element-e916678 .elementor-icon-list-icon,
.elementor-element-e916678 .elementor-icon-list-icon i,
.elementor-element-e916678 svg {
  color: #fff !important;
  fill: #fff !important;
}

/* 4. Accent labels that sit on dark panels.
   Same problem as .color-accent-2 in the footer: an eyebrow that used to be a
   light gold is now the same blue as the panel behind it. Sky, per
   valunxt.com's own treatment of accent text on blue. */
.vxn-offer__label,
.vxn-loc__city span,
.vxn-loc__meta a {
  color: #8FB7FF !important;
}

/* --------------------------------------------------------------------------
   One gradient, used consistently (2026-08-31)

   Several panels came out of the palette change as flat or washed-out blues:
   the footer's offices card was solid #0B2DBE on a navy footer, the "Schedule a
   Consultation" banner ran blue-to-navy, and the About accordion sat in a 24%
   blue tint that read as a pale, unfinished box. They all take the one brand
   gradient now — the same 115deg blue-to-violet the buttons use.
   -------------------------------------------------------------------------- */

/* Footer — Our Offices card. */
.elementor-element-b2872b3 {
  background-color: transparent !important;
  background-image: var(--vxn-grad-gold) !important;
}

/* Home — Schedule a Consultation banner. */
.elementor-element-c9694fb {
  background-color: transparent !important;
  background-image: var(--vxn-grad-gold) !important;
}

/* Home — the About accordion panel. Going from a pale tint to a full gradient
   means everything inside it has to invert: titles, body copy, the +/- glyphs
   and the hairlines between rows. */
.elementor-element-4b2e43b {
  background-color: transparent !important;
  background-image: var(--vxn-grad-gold) !important;
}

.elementor-element-4b2e43b .e-n-accordion-item-title-text,
.elementor-element-4b2e43b .e-n-accordion-item-title,
.elementor-element-4b2e43b p,
.elementor-element-4b2e43b span,
.elementor-element-4b2e43b a,
.elementor-element-4b2e43b .elementor-heading-title {
  color: #fff !important;
}

.elementor-element-4b2e43b .e-n-accordion-item-title-icon,
.elementor-element-4b2e43b .e-n-accordion-item-title-icon span,
.elementor-element-4b2e43b .e-n-accordion-item-title-icon svg,
.elementor-element-4b2e43b .e-n-accordion-item-title-icon i {
  color: #fff !important;
  fill: #fff !important;
}

.elementor-element-4b2e43b .e-n-accordion-item,
.elementor-element-4b2e43b .e-n-accordion-item-title {
  border-color: rgba(255, 255, 255, .22) !important;
}

/* --------------------------------------------------------------------------
   The services accordion at six panels (UAE home).

   The component was built for four. With six, the open panel has to give a
   little width back or the five collapsed spines get too narrow for their
   vertical labels — and panels five and six need their own label accents, since
   the base colour is now the same blue as the panel behind it.
   -------------------------------------------------------------------------- */
.vxn-klay--six .vxn-klay__panel.is-active {
  flex-grow: 6;
}

.vxn-klay--six .vxn-klay__panel:nth-child(5) .vxn-klay__label {
  color: #FFB020;
}

.vxn-klay--six .vxn-klay__panel:nth-child(6) .vxn-klay__label {
  color: #4FD1FF;
}

@media (max-width: 1200px) {
  .vxn-klay--six .vxn-klay__label {
    font-size: clamp(15px, 1.5vw, 20px);
  }
}

/* ==========================================================================
   The pinned navbar in its white state (2026-08-31)

   At the top of the home page the bar is transparent over the hero: white
   logo, white menu. Once it pins it turns solid white, so everything on it has
   to invert — otherwise white type on a white bar. The logo can't be filtered
   dark without losing the violet in the mark, so both variants are in the
   markup and this swaps which one is shown.
   ========================================================================== */

.elementor-139 .vxn-logo--dark {
  display: none;
}

html.vxn-nav-stuck .elementor-139 .vxn-logo--light {
  display: none;
}

html.vxn-nav-stuck .elementor-139 .vxn-logo--dark {
  display: block;
}

/* Menu */
html.vxn-nav-stuck .elementor-139 .elementor-nav-menu--main .elementor-item {
  color: var(--vxn-ink) !important;
}

html.vxn-nav-stuck .elementor-139 .elementor-nav-menu--main .elementor-item.elementor-item-active {
  color: #0B2DBE !important;
}

html.vxn-nav-stuck .elementor-139 .elementor-nav-menu--main:not(.e--pointer-framed) .elementor-item.elementor-item-active:after,
html.vxn-nav-stuck .elementor-139 .elementor-nav-menu--main:not(.e--pointer-framed) .elementor-item:hover:after {
  background-color: #0B2DBE !important;
}

/* The dropdown chevrons are background images, so they need the dark artwork. */
html.vxn-nav-stuck .elementor-139 nav.elementor-nav-menu--main ul.elementor-nav-menu>li.menu-item-has-children>a.elementor-item {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='7' viewBox='0 0 10 7'%3E%3Cpath d='M1 1.2L5 5.2L9 1.2' fill='none' stroke='%2316233B' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round' opacity='.75'/%3E%3C/svg%3E");
}

/* Country switcher */
html.vxn-nav-stuck .elementor-139 .vxn-region .vxn-region__toggle {
  color: var(--vxn-ink) !important;
  border-color: rgba(18, 40, 54, .18) !important;
}

html.vxn-nav-stuck .elementor-139 .vxn-region .vxn-region__toggle:hover,
html.vxn-nav-stuck .elementor-139 .vxn-region .vxn-region__toggle:focus-visible,
html.vxn-nav-stuck .elementor-139 .vxn-region.is-open .vxn-region__toggle {
  border-color: #0B2DBE !important;
  background-color: rgba(0, 83, 183, .07) !important;
}

/* Burger, on the breakpoints where it replaces the menu. */
html.vxn-nav-stuck .elementor-139 .elementor-menu-toggle,
html.vxn-nav-stuck .elementor-139 .elementor-menu-toggle i {
  color: var(--vxn-ink) !important;
  fill: var(--vxn-ink) !important;
}

/* ==========================================================================
   The bar while a menu is open (.vxn-nav-open)

   The mega sheet is a full-width white slab hanging off the foot of the bar, so
   a transparent bar over a dark hero left white type sitting on white with the
   hero showing through above it. While any header dropdown is open the bar
   takes the sheet's own background and everything on it inverts — the same
   swap the pinned state makes, minus the height change, which would make the
   bar jump the moment the pointer touched a menu item.

   `.vxn-nav-open` is set on <html> by includes/scripts.php for as long as a
   parent menu item (or its panel) is hovered or holds focus.
   ========================================================================== */

html.vxn-nav-open .elementor-location-header .vamtam-sticky-header:not(.vamtam-sticky-header--spacer) {
  background-color: #FFFFFF !important;
  /* No drop shadow: the sheet below is part of the same surface and casts its
     own. A shadow here would draw a line through the middle of it. */
  box-shadow: none !important;
}

/* The transparent home header paints through a ::before overlay — the element's
   own background-color is locked transparent by a higher-specificity kit rule. */
html.vxn-nav-open .vamtam-sticky-header--transparent-header:not(.vamtam-sticky-header--spacer)::before {
  opacity: 1 !important;
  background-color: #FFFFFF !important;
}

html.vxn-nav-open .elementor-139 .vxn-logo--light {
  display: none;
}

html.vxn-nav-open .elementor-139 .vxn-logo--dark {
  display: block;
}

html.vxn-nav-open .elementor-139 .elementor-nav-menu--main .elementor-item {
  color: var(--vxn-ink) !important;
}

html.vxn-nav-open .elementor-139 .elementor-nav-menu--main .elementor-item.elementor-item-active,
html.vxn-nav-open .elementor-139 .elementor-nav-menu--main .menu-item:hover>.elementor-item {
  color: #0B2DBE !important;
}

html.vxn-nav-open .elementor-139 .elementor-nav-menu--main:not(.e--pointer-framed) .elementor-item.elementor-item-active:after,
html.vxn-nav-open .elementor-139 .elementor-nav-menu--main:not(.e--pointer-framed) .elementor-item:hover:after {
  background-color: #0B2DBE !important;
}

/* The dropdown chevrons are background images, so they need the dark artwork. */
html.vxn-nav-open .elementor-139 nav.elementor-nav-menu--main ul.elementor-nav-menu>li.menu-item-has-children>a.elementor-item {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='7' viewBox='0 0 10 7'%3E%3Cpath d='M1 1.2L5 5.2L9 1.2' fill='none' stroke='%2316233B' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round' opacity='.75'/%3E%3C/svg%3E");
}

html.vxn-nav-open .elementor-139 .vxn-region .vxn-region__toggle {
  color: var(--vxn-ink) !important;
  border-color: rgba(18, 40, 54, .18) !important;
}

html.vxn-nav-open .elementor-139 .elementor-menu-toggle,
html.vxn-nav-open .elementor-139 .elementor-menu-toggle i {
  color: var(--vxn-ink) !important;
  fill: var(--vxn-ink) !important;
}

/* Every menu item on the bar, on both header variants, marks itself while its
   own panel is open — otherwise the open sheet has nothing pointing at it. */
.elementor-location-header nav.elementor-nav-menu--main ul.elementor-nav-menu>li.menu-item-has-children:hover>a.elementor-item,
.elementor-location-header nav.elementor-nav-menu--main ul.elementor-nav-menu>li.menu-item-has-children:focus-within>a.elementor-item {
  color: #0B2DBE !important;
}

/* The home header is transparent at rest at *every* width.
   The theme paints the pinned bar solid below its mobile breakpoint, which now
   resolves to white — so on a phone the bar came up white at the top of the
   page with the white logo on it, i.e. invisible. Only the stuck state should
   be white, and that rule (above) outranks this one. */
body:not(.elementor-editor-active) .vamtam-sticky-header--transparent-header:not(.vamtam-sticky-header--spacer) {
  background-color: transparent !important;
}

/* Burger and switcher over the transparent bar stay white until it pins. */
.elementor-139 .elementor-menu-toggle,
.elementor-139 .elementor-menu-toggle i {
  color: #fff !important;
  fill: #fff !important;
}

/* Icons on the gradient panels.
   The panels were repainted with the brand gradient but their icons kept the
   colours they had on a light surface — the "Schedule a Consultation" send
   glyph was blue on violet, and the tick icons inside the About accordion were
   navy. These are icon fonts, so `color` is what actually paints them; `fill`
   is set too for the widgets that ship an SVG instead. */
.elementor-element-c9694fb .elementor-icon,
.elementor-element-c9694fb .elementor-icon i,
.elementor-element-c9694fb i,
.elementor-element-c9694fb svg,
.elementor-element-4b2e43b .elementor-icon,
.elementor-element-4b2e43b .elementor-icon-list-icon,
.elementor-element-4b2e43b .elementor-icon-list-icon i,
.elementor-element-4b2e43b i,
.elementor-element-4b2e43b svg,
.elementor-element-b2872b3 .elementor-icon,
.elementor-element-b2872b3 i,
.elementor-element-b2872b3 svg {
  color: #fff !important;
  fill: #fff !important;
}

/* About — the "Why Valunxt Capital?" card.
   Its panel fades to solid #0B2DBE behind the content. That fade used to end in
   gold, where the black heading and dark list read fine; on blue they do not.
   Same treatment as the other gradient panels. */
.elementor-element-45cf318 .elementor-heading-title,
.elementor-element-45cf318 .elementor-icon-list-text,
.elementor-element-45cf318 p,
.elementor-element-45cf318 li,
.elementor-element-45cf318 span:not(.elementor-button-text) {
  color: #fff !important;
}

.elementor-element-45cf318 .elementor-icon-list-icon,
.elementor-element-45cf318 .elementor-icon-list-icon i,
.elementor-element-45cf318 .elementor-icon,
.elementor-element-45cf318 i,
.elementor-element-45cf318 svg {
  color: #fff !important;
  fill: #fff !important;
}

/* About — the glass "4 Group Companies" card, without its button (20260914).
   The capture pulls the card 54px past the foot of the skyline photo
   (--margin-bottom: -54px in post-258.css) so that its "Contact Us" button
   straddled the photo's edge. The button came out on client instruction, and
   the overhang left the lower part of the glass sitting on white. Worse, below
   1025 the photo is anchored to the section's foot, so the shorter card pulled
   it 46px up into the paragraph above. With no overhang the card sits on the
   photo again and the section keeps the height it had. */
.elementor-258 .elementor-element.elementor-element-1e67f45.e-con {
  --margin-bottom: 0px;
}

/* --------------------------------------------------------------------------
   Link hover

   The theme hovers links to `var(--vamtam-body-link-hover)`, and nothing in
   this build ever defines that variable. An unresolvable var on an inherited
   property falls back to `inherit` — so hovering a footer link handed it the
   container's colour, which on the offices card is the theme's default dark.
   That is why hovering the Dubai address made it disappear into the gradient.

   The variable gets a real value here, and dark surfaces lift to sky instead of
   dropping to blue, which would be invisible on them.
   -------------------------------------------------------------------------- */
:root,
body {
  --vamtam-body-link-hover: #0B2DBE;
}

.elementor-location-footer a:hover,
.elementor-location-footer a:focus-visible,
[data-vxn-dark] a:hover,
.vxn-dark a:hover,
.elementor-element-b2872b3 a:hover,
.elementor-element-4b2e43b a:hover,
.elementor-element-45cf318 a:hover {
  color: #8FB7FF !important;
}

/* The office labels are already sky, so they lift the other way. */
.elementor-location-footer a:hover .color-accent-2,
.elementor-location-footer .color-accent-2 a:hover {
  color: #FFFFFF !important;
}

/* Buttons carry their own fill and keep white type through the hover. */
.elementor-location-footer .elementor-button:hover,
.elementor-location-footer .elementor-button:focus-visible,
.elementor-element-45cf318 .elementor-button:hover {
  color: #FFFFFF !important;
}

/* --------------------------------------------------------------------------
   Card hover

   The theme fills a card with accent 2 on hover. That worked while accent 2
   was gold — a light fill under the card's own dark type. On the new palette
   the fill is #0B2DBE, so the card turned solid blue with dark text sitting
   unreadably on top of it.

   These 96 selectors are every such rule in the generated Elementor CSS,
   collected rather than hand-listed so none is missed. They take the brand
   gradient, and their type and icons go white on top of it. Nav dropdown rows
   are deliberately left flat.
   -------------------------------------------------------------------------- */
:is(.elementor-17 .elementor-element.elementor-element-2266b4e:hover,
  .elementor-17 .elementor-element.elementor-element-667edd7:hover,
  .elementor-17 .elementor-element.elementor-element-7aabc05:hover,
  .elementor-17 .elementor-element.elementor-element-8338fc4:hover,
  .elementor-17 .elementor-element.elementor-element-a1560a1:hover,
  .elementor-17 .elementor-element.elementor-element-ae99a1f:hover,
  .elementor-17 .elementor-element.elementor-element-b47eb84:hover,
  .elementor-17 .elementor-element.elementor-element-e99c1cd:hover,
  .elementor-2094 .elementor-element.elementor-element-e21dd3c.elementor-view-framed .elementor-icon:hover,
  .elementor-2190 .elementor-element.elementor-element-1f1d60c:hover,
  .elementor-2190 .elementor-element.elementor-element-42a3d07:hover,
  .elementor-2190 .elementor-element.elementor-element-5603d86:hover,
  .elementor-2190 .elementor-element.elementor-element-a546be9:hover,
  .elementor-2190 .elementor-element.elementor-element-ba03ed4:hover,
  .elementor-2190 .elementor-element.elementor-element-d043720:hover,
  .elementor-2190 .elementor-element.elementor-element-dbd27b0:hover,
  .elementor-2190 .elementor-element.elementor-element-e70e4ef:hover,
  .elementor-2190 .elementor-element.elementor-element-e89f6c6:hover,
  .elementor-2272 .elementor-element.elementor-element-3d894274:hover,
  .elementor-2272 .elementor-element.elementor-element-466c1803:hover,
  .elementor-2272 .elementor-element.elementor-element-50da44e8:hover,
  .elementor-2272 .elementor-element.elementor-element-5167c9f0:hover,
  .elementor-2272 .elementor-element.elementor-element-64b6fb5:hover,
  .elementor-2272 .elementor-element.elementor-element-77af5ea6:hover,
  .elementor-2275 .elementor-element.elementor-element-4763435d:hover,
  .elementor-2275 .elementor-element.elementor-element-49a1ad4e:hover,
  .elementor-2275 .elementor-element.elementor-element-4cd68b5b:hover,
  .elementor-2275 .elementor-element.elementor-element-5089e2e:hover,
  .elementor-2275 .elementor-element.elementor-element-6040016f:hover,
  .elementor-2275 .elementor-element.elementor-element-6fb5cfaf:hover,
  .elementor-2278 .elementor-element.elementor-element-187b1408:hover,
  .elementor-2278 .elementor-element.elementor-element-681ae624:hover,
  .elementor-2278 .elementor-element.elementor-element-6943c9be:hover,
  .elementor-2278 .elementor-element.elementor-element-6b0286f9:hover,
  .elementor-2278 .elementor-element.elementor-element-6b71964a:hover,
  .elementor-2278 .elementor-element.elementor-element-70b61b36:hover,
  .elementor-2281 .elementor-element.elementor-element-2713121e:hover,
  .elementor-2281 .elementor-element.elementor-element-2ce67f72:hover,
  .elementor-2281 .elementor-element.elementor-element-341ba404:hover,
  .elementor-2281 .elementor-element.elementor-element-382b4a3a:hover,
  .elementor-2281 .elementor-element.elementor-element-5c48a250:hover,
  .elementor-2281 .elementor-element.elementor-element-5d6a3ff0:hover,
  .elementor-250 .elementor-element.elementor-element-0b9e57b:hover,
  .elementor-250 .elementor-element.elementor-element-3dc369c:hover,
  .elementor-250 .elementor-element.elementor-element-82ca797:hover,
  .elementor-250 .elementor-element.elementor-element-866b83f:hover,
  .elementor-250 .elementor-element.elementor-element-a66e626:hover,
  .elementor-250 .elementor-element.elementor-element-df7ef47:hover,
  .elementor-252 .elementor-element.elementor-element-16fd4fc1:hover,
  .elementor-252 .elementor-element.elementor-element-37f652da:hover,
  .elementor-252 .elementor-element.elementor-element-49674711:hover,
  .elementor-252 .elementor-element.elementor-element-4b1a12d5:hover,
  .elementor-252 .elementor-element.elementor-element-4cc66eb2:hover,
  .elementor-252 .elementor-element.elementor-element-4cdb5227:hover,
  .elementor-254 .elementor-element.elementor-element-11884c74:hover,
  .elementor-254 .elementor-element.elementor-element-27ce5b2a:hover,
  .elementor-254 .elementor-element.elementor-element-50616c1d:hover,
  .elementor-254 .elementor-element.elementor-element-6574b3eb:hover,
  .elementor-254 .elementor-element.elementor-element-6fbcd50d:hover,
  .elementor-254 .elementor-element.elementor-element-bc0e6a2:hover,
  .elementor-256 .elementor-element.elementor-element-10769f99:hover,
  .elementor-256 .elementor-element.elementor-element-15564488:hover,
  .elementor-256 .elementor-element.elementor-element-1b8a2b86:hover,
  .elementor-256 .elementor-element.elementor-element-3a8ee0e4:hover,
  .elementor-256 .elementor-element.elementor-element-43893eaa:hover,
  .elementor-256 .elementor-element.elementor-element-69bb40bb:hover,
  .elementor-2577 .elementor-element.elementor-element-1b53ff3:hover,
  .elementor-2577 .elementor-element.elementor-element-2ef5538:hover,
  .elementor-2577 .elementor-element.elementor-element-3261216:hover,
  .elementor-2577 .elementor-element.elementor-element-5c31e25:hover,
  .elementor-2577 .elementor-element.elementor-element-6aa8cf5:hover,
  .elementor-2577 .elementor-element.elementor-element-9523f2d:hover,
  .elementor-2577 .elementor-element.elementor-element-bcea599:hover,
  .elementor-2577 .elementor-element.elementor-element-c801b6d:hover,
  .elementor-2577 .elementor-element.elementor-element-ddcfe77:hover,
  .elementor-264 .elementor-element.elementor-element-03ad117:hover,
  .elementor-264 .elementor-element.elementor-element-1ab46f8:hover,
  .elementor-264 .elementor-element.elementor-element-24158a7:hover,
  .elementor-264 .elementor-element.elementor-element-4ed884b:hover,
  .elementor-264 .elementor-element.elementor-element-8493574:hover,
  .elementor-264 .elementor-element.elementor-element-bf13a2c:hover,
  .elementor-266 .elementor-element.elementor-element-6b7a8a9:hover,
  .elementor-266 .elementor-element.elementor-element-6efb0c8:hover,
  .elementor-266 .elementor-element.elementor-element-c5b19b5:hover,
  .elementor-266 .elementor-element.elementor-element-d20f471:hover,
  .elementor-268 .elementor-element.elementor-element-0a113e4:hover,
  .elementor-268 .elementor-element.elementor-element-7b3a044:hover,
  .elementor-268 .elementor-element.elementor-element-a63f0d3:hover,
  .elementor-268 .elementor-element.elementor-element-be40dd9:hover,
  .elementor-271 .elementor-element.elementor-element-20ae252:hover,
  .elementor-271 .elementor-element.elementor-element-a1e6b47:hover,
  .elementor-296 .elementor-element.elementor-element-9ec2789:hover,
  .elementor-296 .elementor-element.elementor-element-a6db877:hover,
  .elementor-3425 .elementor-element.elementor-element-265ca12.elementor-view-framed .elementor-icon:hover,
  .elementor-8993 .elementor-element.elementor-element-ad21d08:hover,
  .elementor-8993 .elementor-element.elementor-element-b69ba4b:hover) {
  background-color: transparent !important;
  background-image: var(--vxn-grad-gold) !important;
}

:is(.elementor-17 .elementor-element.elementor-element-2266b4e:hover,
  .elementor-17 .elementor-element.elementor-element-667edd7:hover,
  .elementor-17 .elementor-element.elementor-element-7aabc05:hover,
  .elementor-17 .elementor-element.elementor-element-8338fc4:hover,
  .elementor-17 .elementor-element.elementor-element-a1560a1:hover,
  .elementor-17 .elementor-element.elementor-element-ae99a1f:hover,
  .elementor-17 .elementor-element.elementor-element-b47eb84:hover,
  .elementor-17 .elementor-element.elementor-element-e99c1cd:hover,
  .elementor-2094 .elementor-element.elementor-element-e21dd3c.elementor-view-framed .elementor-icon:hover,
  .elementor-2190 .elementor-element.elementor-element-1f1d60c:hover,
  .elementor-2190 .elementor-element.elementor-element-42a3d07:hover,
  .elementor-2190 .elementor-element.elementor-element-5603d86:hover,
  .elementor-2190 .elementor-element.elementor-element-a546be9:hover,
  .elementor-2190 .elementor-element.elementor-element-ba03ed4:hover,
  .elementor-2190 .elementor-element.elementor-element-d043720:hover,
  .elementor-2190 .elementor-element.elementor-element-dbd27b0:hover,
  .elementor-2190 .elementor-element.elementor-element-e70e4ef:hover,
  .elementor-2190 .elementor-element.elementor-element-e89f6c6:hover,
  .elementor-2272 .elementor-element.elementor-element-3d894274:hover,
  .elementor-2272 .elementor-element.elementor-element-466c1803:hover,
  .elementor-2272 .elementor-element.elementor-element-50da44e8:hover,
  .elementor-2272 .elementor-element.elementor-element-5167c9f0:hover,
  .elementor-2272 .elementor-element.elementor-element-64b6fb5:hover,
  .elementor-2272 .elementor-element.elementor-element-77af5ea6:hover,
  .elementor-2275 .elementor-element.elementor-element-4763435d:hover,
  .elementor-2275 .elementor-element.elementor-element-49a1ad4e:hover,
  .elementor-2275 .elementor-element.elementor-element-4cd68b5b:hover,
  .elementor-2275 .elementor-element.elementor-element-5089e2e:hover,
  .elementor-2275 .elementor-element.elementor-element-6040016f:hover,
  .elementor-2275 .elementor-element.elementor-element-6fb5cfaf:hover,
  .elementor-2278 .elementor-element.elementor-element-187b1408:hover,
  .elementor-2278 .elementor-element.elementor-element-681ae624:hover,
  .elementor-2278 .elementor-element.elementor-element-6943c9be:hover,
  .elementor-2278 .elementor-element.elementor-element-6b0286f9:hover,
  .elementor-2278 .elementor-element.elementor-element-6b71964a:hover,
  .elementor-2278 .elementor-element.elementor-element-70b61b36:hover,
  .elementor-2281 .elementor-element.elementor-element-2713121e:hover,
  .elementor-2281 .elementor-element.elementor-element-2ce67f72:hover,
  .elementor-2281 .elementor-element.elementor-element-341ba404:hover,
  .elementor-2281 .elementor-element.elementor-element-382b4a3a:hover,
  .elementor-2281 .elementor-element.elementor-element-5c48a250:hover,
  .elementor-2281 .elementor-element.elementor-element-5d6a3ff0:hover,
  .elementor-250 .elementor-element.elementor-element-0b9e57b:hover,
  .elementor-250 .elementor-element.elementor-element-3dc369c:hover,
  .elementor-250 .elementor-element.elementor-element-82ca797:hover,
  .elementor-250 .elementor-element.elementor-element-866b83f:hover,
  .elementor-250 .elementor-element.elementor-element-a66e626:hover,
  .elementor-250 .elementor-element.elementor-element-df7ef47:hover,
  .elementor-252 .elementor-element.elementor-element-16fd4fc1:hover,
  .elementor-252 .elementor-element.elementor-element-37f652da:hover,
  .elementor-252 .elementor-element.elementor-element-49674711:hover,
  .elementor-252 .elementor-element.elementor-element-4b1a12d5:hover,
  .elementor-252 .elementor-element.elementor-element-4cc66eb2:hover,
  .elementor-252 .elementor-element.elementor-element-4cdb5227:hover,
  .elementor-254 .elementor-element.elementor-element-11884c74:hover,
  .elementor-254 .elementor-element.elementor-element-27ce5b2a:hover,
  .elementor-254 .elementor-element.elementor-element-50616c1d:hover,
  .elementor-254 .elementor-element.elementor-element-6574b3eb:hover,
  .elementor-254 .elementor-element.elementor-element-6fbcd50d:hover,
  .elementor-254 .elementor-element.elementor-element-bc0e6a2:hover,
  .elementor-256 .elementor-element.elementor-element-10769f99:hover,
  .elementor-256 .elementor-element.elementor-element-15564488:hover,
  .elementor-256 .elementor-element.elementor-element-1b8a2b86:hover,
  .elementor-256 .elementor-element.elementor-element-3a8ee0e4:hover,
  .elementor-256 .elementor-element.elementor-element-43893eaa:hover,
  .elementor-256 .elementor-element.elementor-element-69bb40bb:hover,
  .elementor-2577 .elementor-element.elementor-element-1b53ff3:hover,
  .elementor-2577 .elementor-element.elementor-element-2ef5538:hover,
  .elementor-2577 .elementor-element.elementor-element-3261216:hover,
  .elementor-2577 .elementor-element.elementor-element-5c31e25:hover,
  .elementor-2577 .elementor-element.elementor-element-6aa8cf5:hover,
  .elementor-2577 .elementor-element.elementor-element-9523f2d:hover,
  .elementor-2577 .elementor-element.elementor-element-bcea599:hover,
  .elementor-2577 .elementor-element.elementor-element-c801b6d:hover,
  .elementor-2577 .elementor-element.elementor-element-ddcfe77:hover,
  .elementor-264 .elementor-element.elementor-element-03ad117:hover,
  .elementor-264 .elementor-element.elementor-element-1ab46f8:hover,
  .elementor-264 .elementor-element.elementor-element-24158a7:hover,
  .elementor-264 .elementor-element.elementor-element-4ed884b:hover,
  .elementor-264 .elementor-element.elementor-element-8493574:hover,
  .elementor-264 .elementor-element.elementor-element-bf13a2c:hover,
  .elementor-266 .elementor-element.elementor-element-6b7a8a9:hover,
  .elementor-266 .elementor-element.elementor-element-6efb0c8:hover,
  .elementor-266 .elementor-element.elementor-element-c5b19b5:hover,
  .elementor-266 .elementor-element.elementor-element-d20f471:hover,
  .elementor-268 .elementor-element.elementor-element-0a113e4:hover,
  .elementor-268 .elementor-element.elementor-element-7b3a044:hover,
  .elementor-268 .elementor-element.elementor-element-a63f0d3:hover,
  .elementor-268 .elementor-element.elementor-element-be40dd9:hover,
  .elementor-271 .elementor-element.elementor-element-20ae252:hover,
  .elementor-271 .elementor-element.elementor-element-a1e6b47:hover,
  .elementor-296 .elementor-element.elementor-element-9ec2789:hover,
  .elementor-296 .elementor-element.elementor-element-a6db877:hover,
  .elementor-3425 .elementor-element.elementor-element-265ca12.elementor-view-framed .elementor-icon:hover,
  .elementor-8993 .elementor-element.elementor-element-ad21d08:hover,
  .elementor-8993 .elementor-element.elementor-element-b69ba4b:hover) :is(.elementor-heading-title, .elementor-icon-list-text, .elementor-icon-box-title, .elementor-icon-box-description, p, span, a, h1, h2, h3, h4, h5, h6, li) {
  color: #fff !important;
}

:is(.elementor-17 .elementor-element.elementor-element-2266b4e:hover,
  .elementor-17 .elementor-element.elementor-element-667edd7:hover,
  .elementor-17 .elementor-element.elementor-element-7aabc05:hover,
  .elementor-17 .elementor-element.elementor-element-8338fc4:hover,
  .elementor-17 .elementor-element.elementor-element-a1560a1:hover,
  .elementor-17 .elementor-element.elementor-element-ae99a1f:hover,
  .elementor-17 .elementor-element.elementor-element-b47eb84:hover,
  .elementor-17 .elementor-element.elementor-element-e99c1cd:hover,
  .elementor-2094 .elementor-element.elementor-element-e21dd3c.elementor-view-framed .elementor-icon:hover,
  .elementor-2190 .elementor-element.elementor-element-1f1d60c:hover,
  .elementor-2190 .elementor-element.elementor-element-42a3d07:hover,
  .elementor-2190 .elementor-element.elementor-element-5603d86:hover,
  .elementor-2190 .elementor-element.elementor-element-a546be9:hover,
  .elementor-2190 .elementor-element.elementor-element-ba03ed4:hover,
  .elementor-2190 .elementor-element.elementor-element-d043720:hover,
  .elementor-2190 .elementor-element.elementor-element-dbd27b0:hover,
  .elementor-2190 .elementor-element.elementor-element-e70e4ef:hover,
  .elementor-2190 .elementor-element.elementor-element-e89f6c6:hover,
  .elementor-2272 .elementor-element.elementor-element-3d894274:hover,
  .elementor-2272 .elementor-element.elementor-element-466c1803:hover,
  .elementor-2272 .elementor-element.elementor-element-50da44e8:hover,
  .elementor-2272 .elementor-element.elementor-element-5167c9f0:hover,
  .elementor-2272 .elementor-element.elementor-element-64b6fb5:hover,
  .elementor-2272 .elementor-element.elementor-element-77af5ea6:hover,
  .elementor-2275 .elementor-element.elementor-element-4763435d:hover,
  .elementor-2275 .elementor-element.elementor-element-49a1ad4e:hover,
  .elementor-2275 .elementor-element.elementor-element-4cd68b5b:hover,
  .elementor-2275 .elementor-element.elementor-element-5089e2e:hover,
  .elementor-2275 .elementor-element.elementor-element-6040016f:hover,
  .elementor-2275 .elementor-element.elementor-element-6fb5cfaf:hover,
  .elementor-2278 .elementor-element.elementor-element-187b1408:hover,
  .elementor-2278 .elementor-element.elementor-element-681ae624:hover,
  .elementor-2278 .elementor-element.elementor-element-6943c9be:hover,
  .elementor-2278 .elementor-element.elementor-element-6b0286f9:hover,
  .elementor-2278 .elementor-element.elementor-element-6b71964a:hover,
  .elementor-2278 .elementor-element.elementor-element-70b61b36:hover,
  .elementor-2281 .elementor-element.elementor-element-2713121e:hover,
  .elementor-2281 .elementor-element.elementor-element-2ce67f72:hover,
  .elementor-2281 .elementor-element.elementor-element-341ba404:hover,
  .elementor-2281 .elementor-element.elementor-element-382b4a3a:hover,
  .elementor-2281 .elementor-element.elementor-element-5c48a250:hover,
  .elementor-2281 .elementor-element.elementor-element-5d6a3ff0:hover,
  .elementor-250 .elementor-element.elementor-element-0b9e57b:hover,
  .elementor-250 .elementor-element.elementor-element-3dc369c:hover,
  .elementor-250 .elementor-element.elementor-element-82ca797:hover,
  .elementor-250 .elementor-element.elementor-element-866b83f:hover,
  .elementor-250 .elementor-element.elementor-element-a66e626:hover,
  .elementor-250 .elementor-element.elementor-element-df7ef47:hover,
  .elementor-252 .elementor-element.elementor-element-16fd4fc1:hover,
  .elementor-252 .elementor-element.elementor-element-37f652da:hover,
  .elementor-252 .elementor-element.elementor-element-49674711:hover,
  .elementor-252 .elementor-element.elementor-element-4b1a12d5:hover,
  .elementor-252 .elementor-element.elementor-element-4cc66eb2:hover,
  .elementor-252 .elementor-element.elementor-element-4cdb5227:hover,
  .elementor-254 .elementor-element.elementor-element-11884c74:hover,
  .elementor-254 .elementor-element.elementor-element-27ce5b2a:hover,
  .elementor-254 .elementor-element.elementor-element-50616c1d:hover,
  .elementor-254 .elementor-element.elementor-element-6574b3eb:hover,
  .elementor-254 .elementor-element.elementor-element-6fbcd50d:hover,
  .elementor-254 .elementor-element.elementor-element-bc0e6a2:hover,
  .elementor-256 .elementor-element.elementor-element-10769f99:hover,
  .elementor-256 .elementor-element.elementor-element-15564488:hover,
  .elementor-256 .elementor-element.elementor-element-1b8a2b86:hover,
  .elementor-256 .elementor-element.elementor-element-3a8ee0e4:hover,
  .elementor-256 .elementor-element.elementor-element-43893eaa:hover,
  .elementor-256 .elementor-element.elementor-element-69bb40bb:hover,
  .elementor-2577 .elementor-element.elementor-element-1b53ff3:hover,
  .elementor-2577 .elementor-element.elementor-element-2ef5538:hover,
  .elementor-2577 .elementor-element.elementor-element-3261216:hover,
  .elementor-2577 .elementor-element.elementor-element-5c31e25:hover,
  .elementor-2577 .elementor-element.elementor-element-6aa8cf5:hover,
  .elementor-2577 .elementor-element.elementor-element-9523f2d:hover,
  .elementor-2577 .elementor-element.elementor-element-bcea599:hover,
  .elementor-2577 .elementor-element.elementor-element-c801b6d:hover,
  .elementor-2577 .elementor-element.elementor-element-ddcfe77:hover,
  .elementor-264 .elementor-element.elementor-element-03ad117:hover,
  .elementor-264 .elementor-element.elementor-element-1ab46f8:hover,
  .elementor-264 .elementor-element.elementor-element-24158a7:hover,
  .elementor-264 .elementor-element.elementor-element-4ed884b:hover,
  .elementor-264 .elementor-element.elementor-element-8493574:hover,
  .elementor-264 .elementor-element.elementor-element-bf13a2c:hover,
  .elementor-266 .elementor-element.elementor-element-6b7a8a9:hover,
  .elementor-266 .elementor-element.elementor-element-6efb0c8:hover,
  .elementor-266 .elementor-element.elementor-element-c5b19b5:hover,
  .elementor-266 .elementor-element.elementor-element-d20f471:hover,
  .elementor-268 .elementor-element.elementor-element-0a113e4:hover,
  .elementor-268 .elementor-element.elementor-element-7b3a044:hover,
  .elementor-268 .elementor-element.elementor-element-a63f0d3:hover,
  .elementor-268 .elementor-element.elementor-element-be40dd9:hover,
  .elementor-271 .elementor-element.elementor-element-20ae252:hover,
  .elementor-271 .elementor-element.elementor-element-a1e6b47:hover,
  .elementor-296 .elementor-element.elementor-element-9ec2789:hover,
  .elementor-296 .elementor-element.elementor-element-a6db877:hover,
  .elementor-3425 .elementor-element.elementor-element-265ca12.elementor-view-framed .elementor-icon:hover,
  .elementor-8993 .elementor-element.elementor-element-ad21d08:hover,
  .elementor-8993 .elementor-element.elementor-element-b69ba4b:hover) :is(i, svg, .elementor-icon, .elementor-icon-list-icon) {
  color: #fff !important;
  fill: #fff !important;
}

/* The form-card header bars (Contact, Book a Consultation).
   Deep navy #0E355F panel with the send glyph still coloured with the accent —
   #0B2DBE on #0E355F is a 1.7:1 ratio, so the icon was barely there. The
   heading beside it was already white; the icon joins it. */
.elementor-element-dfdaf3f .elementor-icon,
.elementor-element-dfdaf3f .elementor-icon i,
.elementor-element-dfdaf3f i,
.elementor-element-dfdaf3f svg,
.elementor-element-69901f9 .elementor-icon,
.elementor-element-69901f9 .elementor-icon i,
.elementor-element-69901f9 i,
.elementor-element-69901f9 svg {
  color: #fff !important;
  fill: #fff !important;
}

/* --------------------------------------------------------------------------
   Navbar: breathing room at the top, no hairline underneath
   -------------------------------------------------------------------------- */

.elementor-location-header .vamtam-sticky-header {
  /* The bar sat flush against the top edge with the row filling it. A little
     air above lets the logo and the menu sit rather than butt against the
     viewport. The spacer copy takes the same padding, so nothing below moves. */
  padding-top: 16px !important;
  padding-bottom: 10px !important;
  /* The container is pinned to --min-height: 70px by the kit, so padding alone
     just squeezed the row. The bar has to be told it may grow. */
  --min-height: 94px !important;
  /* The theme drew a 1px rgba(255,255,255,.15) rule under the bar. */
  border-bottom: 0 !important;
  border-top: 0 !important;
}

/* Once pinned the bar slims down — the gap is there to frame the top of the
   page, not to follow you down it. The spacer keeps its resting height, so the
   page does not jump when this fires. */
html.vxn-nav-stuck .elementor-location-header .vamtam-sticky-header:not(.vamtam-sticky-header--spacer) {
  padding-top: 8px !important;
  padding-bottom: 8px !important;
  --min-height: 74px !important;
}

/* …and the mega sheet follows it down. */
html.vxn-nav-stuck {
  --vxn-navh: 74px;
}

@media (max-width: 1024px) {
  .elementor-location-header .vamtam-sticky-header {
    padding-top: 10px !important;
    padding-bottom: 8px !important;
    --min-height: 78px !important;
  }

  html {
    --vxn-navh: 78px;
  }
}

/* --------------------------------------------------------------------------
   Footer top row: use the width, lose the void

   The four columns were 30% / 14% / 26% / 28%, which left the offices card
   narrow enough that every address wrapped to four or five lines. That made the
   card 509px tall, and since the card set the row height, the two short link
   columns were left with ~230px of nothing under them. Widening the card lets
   the addresses breathe, which shortens it, which takes the emptiness out of
   the whole row — and it closes the gap that used to sit between Services and
   the card.

   The card also carried a 43px top and 24px bottom margin, so the row was 67px
   taller than its tallest child, and the brand column had 60px of top padding
   that pushed the logo below the other three headings.
   -------------------------------------------------------------------------- */
@media (min-width: 1025px) {
  .elementor-2094 .elementor-element.elementor-element-6578101>.e-con-inner {
    align-items: flex-start !important;
  }

  .elementor-2094 .elementor-element.elementor-element-7a5ce4a {
    width: 27% !important;
    padding-top: 0 !important;
  }

  .elementor-2094 .elementor-element.elementor-element-df2c858 {
    width: 14% !important;
  }

  .elementor-2094 .elementor-element.elementor-element-aa41969 {
    width: 21% !important;
  }

  .elementor-2094 .elementor-element.elementor-element-b2872b3 {
    width: 34% !important;
    margin-top: 0 !important;
    margin-bottom: 0 !important;
  }
}

/* The transparent home header reserves its height and then pulls the next
   content back up by the same amount, so the bar floats over the hero. The kit
   hard-codes that pair as --min-height:70px / --margin-bottom:-70px; raising the
   bar to 94px left 24px of the reserved space uncancelled, which is the white
   strip that appeared above the India hero. Tying the pull-up to the height
   means the two can't drift apart again at any breakpoint or in the slim
   scrolled state. Only the home header has this pair — inner headers push
   content down normally and are untouched. */
.vamtam-sticky-header--transparent-header {
  --margin-bottom: calc(-1 * var(--min-height)) !important;
}

.elementor-element.elementor-element-6578101.e-flex.e-con-boxed.e-con.e-parent.e-lazyloaded {

  margin: 20px 0px;

}

/* ==========================================================================
   CTA HOVER — the skewed wipe (2026-09-02)

   Every filled call to action now fills on hover with a blue wedge that sweeps
   in from the left, rather than repainting its background in one step. Adapted
   from the Uiverse "slimy-horse-19" button the brief pointed at, with three
   deliberate departures: the wedge is brand blue rather than teal, each
   button's resting border-radius is left exactly as it was, and the lift is
   scale(1.03) rather than the reference's 1.1 — a site CTA is often 250px wide,
   where a tenth of its width is a lurch rather than a lift.

   Mechanics. `isolation: isolate` makes each button its own stacking context,
   so the `::before` wedge at `z-index: -1` paints ABOVE the button's own
   background but BELOW its label — no z-index needed on the content span, and
   the wedge cannot slip behind the section the button sits on. `overflow:
   hidden` clips it to whatever radius the button already has.

   Colour is per-button through `--vxn-cta-sweep`. The default is the darker
   blue these buttons already jumped to on hover, so a solid brand-blue CTA
   deepens as the wedge crosses it. A white or outlined CTA sets the variable to
   the brand blue instead and flips its label to white — see the hero pill in
   en-ae/index.php and the ghost buttons in the section partials.
   ========================================================================== */

.elementor-button:not(.elementor-button-info):not(.elementor-button-success):not(.elementor-button-warning):not(.elementor-button-danger),
a.elementor-button:not(.elementor-button-info):not(.elementor-button-success):not(.elementor-button-warning):not(.elementor-button-danger),
.elementor-cta__button,
.wp-block-button__link,
.vamtam-button,
.vamtam-btn,
form.elementor-form button[type="submit"],
.vxae-hero__cta,
.vxn-plat__btn,
.vxn-rd__btn,
.vxn-com__btn,
.vxn-faq__btn,
.vxn-side-cta,
.vxn-coming__cta {
  position: relative;
  overflow: hidden;
  isolation: isolate;
  /* The label waits 150ms before it starts turning. By then the wedge has
     crossed the whole button (the easing below front-loads the travel), so a
     white CTA never shows white text on the white it has not covered yet. */
  transition: color .2s ease .15s, transform .35s ease, box-shadow .35s ease;
}

.elementor-button:not(.elementor-button-info):not(.elementor-button-success):not(.elementor-button-warning):not(.elementor-button-danger)::before,
a.elementor-button:not(.elementor-button-info):not(.elementor-button-success):not(.elementor-button-warning):not(.elementor-button-danger)::before,
.elementor-cta__button::before,
.wp-block-button__link::before,
.vamtam-button::before,
.vamtam-btn::before,
form.elementor-form button[type="submit"]::before,
.vxae-hero__cta::before,
.vxn-plat__btn::before,
.vxn-rd__btn::before,
.vxn-com__btn::before,
.vxn-faq__btn::before,
.vxn-side-cta::before,
.vxn-coming__cta::before {
  content: "";
  position: absolute;
  top: 0;
  left: -50px;
  width: 0;
  height: 100%;
  background: var(--vxn-cta-sweep, #08248F);
  transform: skewX(45deg);
  transform-origin: top left;
  z-index: -1;
  pointer-events: none;
  /* 700ms rather than the reference's 1000ms: slow enough to read as a sweep,
     short enough that a click never lands before the button has settled. The
     easing front-loads the travel so the label is covered early — that is what
     keeps a white CTA's text legible while it turns from blue to white. */
  transition: width .7s cubic-bezier(.25, .8, .25, 1);
}

.elementor-button:not(.elementor-button-info):not(.elementor-button-success):not(.elementor-button-warning):not(.elementor-button-danger):hover::before,
.elementor-button:not(.elementor-button-info):not(.elementor-button-success):not(.elementor-button-warning):not(.elementor-button-danger):focus-visible::before,
a.elementor-button:not(.elementor-button-info):not(.elementor-button-success):not(.elementor-button-warning):not(.elementor-button-danger):hover::before,
.elementor-cta__button:hover::before,
.wp-block-button__link:hover::before,
.vamtam-button:hover::before,
.vamtam-btn:hover::before,
form.elementor-form button[type="submit"]:hover::before,
.vxae-hero__cta:hover::before,
.vxae-hero__cta:focus-visible::before,
.vxn-plat__btn:hover::before,
.vxn-rd__btn:hover::before,
.vxn-com__btn:hover::before,
.vxn-faq__btn:hover::before,
.vxn-side-cta:hover::before,
.vxn-coming__cta:hover::before {
  width: 250%;
}

.elementor-button:not(.elementor-button-info):not(.elementor-button-success):not(.elementor-button-warning):not(.elementor-button-danger):hover,
a.elementor-button:not(.elementor-button-info):not(.elementor-button-success):not(.elementor-button-warning):not(.elementor-button-danger):hover,
.elementor-cta__button:hover,
.wp-block-button__link:hover,
.vamtam-button:hover,
.vamtam-btn:hover,
form.elementor-form button[type="submit"]:hover,
.vxae-hero__cta:hover,
.vxn-plat__btn:hover,
.vxn-rd__btn:hover,
.vxn-com__btn:hover,
.vxn-faq__btn:hover,
.vxn-side-cta:hover,
.vxn-coming__cta:hover {
  transform: scale(1.03);
  box-shadow: 0 10px 24px -8px rgba(0, 64, 140, .55);
}

/* Two Elementor "buttons" on the service and group templates are really text
   links — transparent, navy label, no fill (see the rules near the head of this
   file). A wedge sweeping across bare page background would be nonsense, so
   they opt out of the treatment entirely. */
.elementor-248 .elementor-element-7ab26c9 .elementor-element-26edf8b a.elementor-button.elementor-button-link::before,
:is(.page-id-250, .page-id-252, .page-id-254, .page-id-256) .elementor-widget-button.elementor-align-justify.vamtam-content-align-space-between a.elementor-button.elementor-button-link::before {
  content: none;
}

.elementor-248 .elementor-element-7ab26c9 .elementor-element-26edf8b a.elementor-button.elementor-button-link:hover,
:is(.page-id-250, .page-id-252, .page-id-254, .page-id-256) .elementor-widget-button.elementor-align-justify.vamtam-content-align-space-between a.elementor-button.elementor-button-link:hover {
  transform: none;
  box-shadow: none !important;
}

/* The header CTA sits on a bar only 74–94px tall; a 3% swell there reads as the
   bar wobbling. It keeps the wipe and loses the lift. */
.elementor-location-header .elementor-widget-button .elementor-button:hover {
  transform: none;
  box-shadow: none !important;
}

@media (prefers-reduced-motion: reduce) {

  .elementor-button::before,
  .vxae-hero__cta::before,
  .vxn-plat__btn::before,
  .vxn-rd__btn::before,
  .vxn-com__btn::before,
  .vxn-faq__btn::before,
  .vxn-side-cta::before,
  .vxn-coming__cta::before {
    transition: none;
  }

  .elementor-button:hover,
  .vxae-hero__cta:hover,
  .vxn-plat__btn:hover,
  .vxn-rd__btn:hover,
  .vxn-com__btn:hover,
  .vxn-faq__btn:hover,
  .vxn-side-cta:hover,
  .vxn-coming__cta:hover {
    transform: none;
  }
}

/* ==========================================================================
   ACTIVE NAV ITEM — a marker rule, not a filled chip (2026-09-04)

   The chip read as a control. The bar already carries two filled, rounded
   shapes — the country switcher and the Free Consultation pill — and both are
   things you press, so the current page looked like a third one that did
   nothing. The marker says the same thing without borrowing that shape: a 2px
   accent rule under the item, in the brand purple, which is on the bar nowhere
   else and so cannot be read as anything but "you are here".

   The rule is drawn with an inset box-shadow rather than a pseudo-element:
   Elementor's e--pointer-underline already owns ::before and ::after on
   .elementor-item, and background-image is taken by the dropdown chevron.

   Weight and size are deliberately left alone. The bar renders the same list on
   every page, so bolding the current item would re-measure the row and shift
   its neighbours a page at a time.

   Hover is untouched and keeps its own thin underline; that underline stays
   suppressed on the active item, so "where I am" and "where the pointer is"
   remain two different marks.
   ========================================================================== */

.elementor-location-header nav.elementor-nav-menu--main ul.elementor-nav-menu>li>a.elementor-item.elementor-item-active {
  background-color: transparent !important;
  border-radius: 0 !important;
  color: #FFFFFF !important;
  box-shadow: inset 0 -2px 0 0 #9C00DD !important;
  transition: color .3s ease, box-shadow .3s ease;
}

.elementor-location-header nav.elementor-nav-menu--main .elementor-item.elementor-item-active::after,
.elementor-location-header nav.elementor-nav-menu--main .elementor-item.elementor-item-active:hover::after {
  opacity: 0 !important;
  width: 0 !important;
}

/* On any white bar — the inner-page headers, the pinned state, and while a mega
   panel is open — the label takes the brand blue. The rule under it stays
   purple in both, so the mark itself never changes between states. */
.elementor-3837 nav.elementor-nav-menu--main ul.elementor-nav-menu>li>a.elementor-item.elementor-item-active,
.elementor-3134 nav.elementor-nav-menu--main ul.elementor-nav-menu>li>a.elementor-item.elementor-item-active,
html.vxn-nav-stuck .elementor-location-header nav.elementor-nav-menu--main ul.elementor-nav-menu>li>a.elementor-item.elementor-item-active,
html.vxn-nav-open .elementor-location-header nav.elementor-nav-menu--main ul.elementor-nav-menu>li>a.elementor-item.elementor-item-active {
  background-color: transparent !important;
  color: #0B2DBE !important;
}

/* ==========================================================================
   SUBSCRIBE BUTTON — keep the label inside the button (2026-09-04)

   post-4557.css sets `gap:3em; justify-content:space-between` on every <span>
   inside this button — the selector is `.elementor-button span`, so it lands on
   the content wrapper. At the button's 14px type that is a 42px gap, and the
   wrapper is 106px wide for a 67px label plus a 14px icon: 123px of content in
   a 106px box. The captured rule also sets `flex-direction:row-reverse`, so the
   17px of overflow left the box by its *left* edge and "Subscribe" was drawn
   outside the button it belongs to.

   Brought down to an ordinary icon gap and centred, which fits the pair with
   room to spare. Scoped to the content wrapper, so the captured rule still
   governs any other span in the button.
   ========================================================================== */

.elementor-4557 .elementor-button .elementor-button-content-wrapper {
  gap: 10px !important;
  justify-content: center !important;
}

/* ==========================================================================
   FOOTER — breathing room under the striped band (2026-09-04)

   The subscribe section carries a repeating line pattern as its background,
   anchored to its own bottom edge (background-position: 50% 100%). The footer
   opened with no top padding at all — the wordmark measured 0px from the footer's
   top edge — so the navy block started on the last line of that pattern and the
   logo sat directly against it.

   The room has to be made inside the footer: padding on the subscribe section
   would carry the pattern down with it, since the pattern is anchored to that
   section's bottom and would still meet the footer flush.
   ========================================================================== */

.elementor-location-footer.elementor-2094 {
  padding-top: 56px;
}

@media (max-width: 767px) {
  .elementor-location-footer.elementor-2094 {
    padding-top: 36px;
  }
}

/* ==========================================================================
   TRIO, STANDING ALONE (2026-09-04)

   The three feature cards used to close the UAE home page's "Who We Are"
   section and took their width from it (.vxn-plat__inner — 1200px, 28px of
   gutter). That section has been removed from this edition and the cards kept,
   so they need the container back: .vxn-trio is a bare `grid-template-columns:
   repeat(3, 1fr)` with no width of its own, and left loose it would run the full
   width of the page.

   Bottom spacing only — the grid already carries `margin: 46px 0 0` for its top.
   India is untouched: there the cards are still inside their own section.
   ========================================================================== */

.vxn-trio-solo {
  display: block;
  width: 100%;
  max-width: 1200px;
  margin: 0 auto;
  padding: 0 28px 88px;
}

@media (max-width: 767px) {
  .vxn-trio-solo {
    padding: 0 20px 56px;
  }
}

/* ==========================================================================
   SECTION IMAGE CARDS — one radius (2026-09-04)

   Every card in a page section that carries a photograph now rounds to 20px.
   They had drifted to six different values: 2px on the capability tiles, 5px on
   the related-article thumbs, 8px on the location media, 12px on the team,
   research and blog-hero images, 18px on the trio and proof cards, and 0 on the
   home industries row.

   The home industries row is the one exception and stays flat: its cards are a
   full-bleed strip that expands under the pointer, and a rounded corner on a
   card whose whole point is to grow edge to edge reads as an inset panel rather
   than a photograph. It keeps its square corners in its own block below, which
   beats this list on specificity — and since .vxn-svc-card is rendered nowhere
   but inside that row, it is left out of the list entirely rather than named
   here and immediately overridden.

   `!important` throughout, for two reasons: most of these are declared in
   component <style> blocks that render in the body, so they come after this
   file and would otherwise win on source order; and the industries row carries
   its own `border-radius: 0 !important`, which needs matching specificity to
   unseat.

   Deliberately not in this list: the mega-menu cards, the cookie and region
   panels, pills, dots and avatars. Those are nav and UI chrome, not section
   cards, and they keep the radii their own shapes were drawn for.
   ========================================================================== */

.vxn-cap__tile,
.vxn-trio__card,
.vxn-trio__media,
.vxn-proof__card,
.vxn-com__card,
.vxn-com__car-fig,
.vxn-team__card,
.vxn-rr__card,
.vxn-rel__thumb,
.vxn-loc__media,
.elementor img.vxn-blog-hero,
img.vxn-blog-hero {
  border-radius: 20px !important;
}

.vxn-home-svc-section .vxn-svc-card,
.vxn-home-svc-section .vxn-svc-card__media,
.vxn-home-svc-section .vxn-svc-card__media img {
  border-radius: 0 !important;
}

/* A radius only shows on the photograph if the box holding it clips. Most of
   these already do; the rest are named here so none is left square-cornered
   with a rounded frame around it. */
.vxn-cap__tile,
.vxn-trio__media,
.vxn-com__car-fig,
.vxn-rel__thumb,
.vxn-loc__media,
.vxn-team__card,
.vxn-rr__card {
  overflow: hidden;
}

/* ==========================================================================
   MEGA MENU — shorter, quieter, and it opens rather than appears (2026-09-04)

   Four things were wrong with the sheet. It was tall enough to cover most of
   the viewport; the promo cards were a gradient with two blurred radial fields
   drifting across them on 19s and 26s loops, which is a lot of motion for a
   menu; each card carried a photograph that set its height; and the panel was
   toggled with `display`, so it appeared in one frame with no transition.

   This block overrides the rules above rather than editing them in place —
   sixty scattered declarations across a thousand lines, several of them at
   0-4-0 with !important to beat the theme. Appended here it wins on order at
   equal specificity, and the original intent stays readable above.

   Everything is scoped to nav.elementor-nav-menu--main: the burger drawer
   renders the same markup through .elementor-nav-menu--dropdown and is left
   exactly as it was.
   ========================================================================== */

/* ---- Opening ------------------------------------------------------------
   `display` cannot be transitioned, so the panel is always laid out (it is
   position:fixed, so this costs no space) and shown by visibility, opacity and
   a short rise. visibility is what keeps it out of the tab order while closed;
   it is delayed on the way out so the fade can finish first. */
.elementor-nav-menu--main .vxn-mega > .vxn-mega__panel {
  display: block !important;
  visibility: hidden;
  opacity: 0;
  transform: translateY(-10px);
  pointer-events: none;
  transition:
    opacity .3s ease,
    transform .34s cubic-bezier(.22, .61, .36, 1),
    visibility 0s linear .34s;
}

.elementor-nav-menu--main .vxn-mega:hover > .vxn-mega__panel,
.elementor-nav-menu--main .vxn-mega:focus-within > .vxn-mega__panel {
  visibility: visible;
  opacity: 1;
  transform: translateY(0);
  pointer-events: auto;
  transition-delay: 0s;
}

/* ---- Height -------------------------------------------------------------
   The sheet was 46px/44px of padding around 40px type and 52px rows. Every one
   of those is trimmed; the photographs coming out of the cards does the rest. */
.elementor-nav-menu--main .vxn-mega__panel {
  padding: 36px 0 34px !important;
  box-shadow: 0 26px 50px -28px rgba(6, 18, 32, .34);
}

.elementor-nav-menu--main .vxn-mega__intro {
  margin-bottom: 18px;
}

.elementor-nav-menu--main .vxn-mega__head {
  font-size: 28px !important;
  line-height: 1.12 !important;
  margin: 0 0 8px !important;
}

.elementor-nav-menu--main .vxn-mega__lede {
  font-size: 13px;
  line-height: 1.55;
  max-width: 42ch;
}

/* ---- Index rows ---------------------------------------------------------
   Half the height they were, and the row itself now answers the pointer: a
   wash of brand blue and a small step to the right, instead of the title
   colour changing on its own. */
.elementor-nav-menu--main .vxn-mega__panel .vxn-mega__item {
  padding: 16px 10px 16px 10px !important;
  transition: background-color .28s ease, transform .3s cubic-bezier(.22, .61, .36, 1);
}

.elementor-nav-menu--main .vxn-mega__panel .vxn-mega__item:hover {
  background: rgba(0, 83, 183, .055) !important;
  transform: translateX(3px);
}

.elementor-nav-menu--main .vxn-mega__panel .vxn-mega__itemdesc {
  margin-top: 2px;
  font-size: 12px;
}

.elementor-nav-menu--main .vxn-mega__ico svg {
  width: 19px;
  height: 19px;
}

.elementor-nav-menu--main .vxn-mega__panel .vxn-mega__viewall {
  padding-top: 16px !important;
  margin-top: 4px !important;
}

/* ---- Promo cards --------------------------------------------------------
   Flat brand blue with a woven texture over it — no gradient, no drifting
   fields, no photograph. The same SVG texture the UAE service heroes use, so
   the two read as one idea; it is drawn rather than fetched, which costs no
   request and keeps its edges at any size.

   Selector depth matches the 0-4-0 rules above (the theme tints menu anchors
   at 0-3-1, which is what forced that depth originally). */
.elementor-nav-menu--main .vxn-mega__panel .vxn-mega__wrap .vxn-mega__card {
  background-color: #0B2DBE !important;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='40' height='40' viewBox='0 0 40 40'%3E%3Cg fill='none' stroke='%23ffffff' stroke-opacity='.08' stroke-width='1'%3E%3Cpath d='M0 40 L40 0 M-10 10 L10 -10 M30 50 L50 30'/%3E%3C/g%3E%3Cg fill='%23ffffff' fill-opacity='.06'%3E%3Ccircle cx='10' cy='30' r='1'/%3E%3Ccircle cx='30' cy='10' r='1'/%3E%3C/g%3E%3C/svg%3E") !important;
  background-repeat: repeat !important;
  background-size: 40px 40px !important;
  /* No background-position here: the block at the foot of this file sets the
     card's own, and an !important one here would outrank it. */
  border: 1px solid rgba(255, 255, 255, .18) !important;
  border-radius: 16px !important;
  padding: 20px 20px 18px !important;
  box-shadow: none;
  transition:
    background-color .35s ease,
    border-color .35s ease,
    transform .35s cubic-bezier(.22, .61, .36, 1),
    box-shadow .35s ease;
}

.elementor-nav-menu--main .vxn-mega__panel .vxn-mega__wrap .vxn-mega__card:hover {
  background-color: #0E355F !important;
  border-color: rgba(255, 255, 255, .34) !important;
  transform: translateY(-3px);
  box-shadow: 0 16px 34px -16px rgba(0, 45, 100, .6);
}

/* The two blurred fields that drifted across the cards. */
.elementor-nav-menu--main .vxn-mega__panel .vxn-mega__card::before,
.elementor-nav-menu--main .vxn-mega__panel .vxn-mega__card::after {
  display: none !important;
}

/* The photograph. The text sits on the texture now, which is most of the
   height that has come out of the sheet. */
.elementor-nav-menu--main .vxn-mega__panel .vxn-mega__cardmedia {
  display: none !important;
}

.elementor-nav-menu--main .vxn-mega__panel .vxn-mega__cards {
  gap: 14px;
}

.elementor-nav-menu--main .vxn-mega__panel .vxn-mega__cardtitle {
  font-size: 20px !important;
  line-height: 1.25 !important;
  margin-top: 10px !important;
  /* Both cards stay the same height whatever their titles run to. */
  min-height: 2.5em;
}

/* margin-top:auto, not a fixed gap. The photograph used to be the flex child
   that grew and pushed this to the foot of the card; with it hidden, a fixed
   margin left the CTA stranded just under the title with 250px of empty card
   below it. auto restores the push now that the card is full height. */
.elementor-nav-menu--main .vxn-mega__panel .vxn-mega__cardcta {
  margin-top: auto !important;
  padding-top: 18px;
}

.elementor-nav-menu--main .vxn-mega__panel .vxn-mega__wrap .vxn-mega__circ {
  width: 32px !important;
  height: 32px !important;
}

@media (prefers-reduced-motion: reduce) {
  .elementor-nav-menu--main .vxn-mega > .vxn-mega__panel,
  .elementor-nav-menu--main .vxn-mega__panel .vxn-mega__item,
  .elementor-nav-menu--main .vxn-mega__panel .vxn-mega__wrap .vxn-mega__card {
    transition: none;
  }
  .elementor-nav-menu--main .vxn-mega > .vxn-mega__panel { transform: none; }
  .elementor-nav-menu--main .vxn-mega__panel .vxn-mega__item:hover { transform: none; }
  .elementor-nav-menu--main .vxn-mega__panel .vxn-mega__wrap .vxn-mega__card:hover { transform: none; }
}

/* --------------------------------------------------------------------------
   The two declarations above that the full-bleed rule outranks.

   That rule is 0-8-2 and lives inside @media (min-width: 1025px) — it pins the
   sheet under the bar and neutralises any transform on it. Its padding and its
   `transform: none` therefore beat the block above, which is why the sheet kept
   its 46px/44px and refused to rise. Matched here selector for selector, in the
   same query, so the height and the opening animation land.

   The transform is safe on this element: it is the fixed panel itself, not an
   ancestor of one, so nothing loses its containing block.
   -------------------------------------------------------------------------- */

@media (min-width: 1025px) {
  .elementor-nav-menu--main.elementor-nav-menu__container .elementor-nav-menu>li.vxn-mega.menu-item.menu-item-has-children>ul.vxn-mega__panel.sub-menu {
    padding: 36px 0 34px !important;
    transform: translateY(-10px) !important;
  }

  .elementor-nav-menu--main.elementor-nav-menu__container .elementor-nav-menu>li.vxn-mega.menu-item.menu-item-has-children:hover>ul.vxn-mega__panel.sub-menu,
  .elementor-nav-menu--main.elementor-nav-menu__container .elementor-nav-menu>li.vxn-mega.menu-item.menu-item-has-children:focus-within>ul.vxn-mega__panel.sub-menu {
    transform: translateY(0) !important;
  }
}

@media (min-width: 1025px) and (prefers-reduced-motion: reduce) {
  .elementor-nav-menu--main.elementor-nav-menu__container .elementor-nav-menu>li.vxn-mega.menu-item.menu-item-has-children>ul.vxn-mega__panel.sub-menu,
  .elementor-nav-menu--main.elementor-nav-menu__container .elementor-nav-menu>li.vxn-mega.menu-item.menu-item-has-children:hover>ul.vxn-mega__panel.sub-menu {
    transform: none !important;
  }
}

/* --------------------------------------------------------------------------
   And the declaration that actually set the sheet's height.

   .vxn-mega__inner carried `min-height: 545px`, which sized the panel to a
   fixed slab whatever it contained — the index needs 319px — and stretched the
   promo cards to fill the rest. Trimming padding and type could never shorten
   the sheet while that stood; it is the reason the first pass moved it by only
   40px.

   Replaced with a floor low enough to be a floor rather than a height, so the
   sheet now measures its content — which is the index column, the taller of the
   two. The cards then stretch to meet it, so the pair of textured panels finish
   level with the link list rather than floating short of it.
   -------------------------------------------------------------------------- */

.elementor-nav-menu--main .vxn-mega__inner {
  min-height: 0;
}

.elementor-nav-menu--main .vxn-mega__panel .vxn-mega__cards {
  align-items: stretch;
}

/* The grid row is as tall as the index; each card fills its cell. The CTA
   already carries margin-top:auto, so the extra height opens up between the
   title and the arrow rather than stranding it in the middle. */
.elementor-nav-menu--main .vxn-mega__panel .vxn-mega__wrap .vxn-mega__card {
  height: 100%;
}

/* ==========================================================================
   MEGA MENU — second pass: a lit surface, and the sheet around it (2026-09-05)

   Two things were asked for and they pull in the same direction: the promo
   cards on the right wanted a richer texture with motion that never stops, and
   the sheet around them wanted tightening up.

   THE CARDS. The pass above flattened them to one brand blue with a woven SVG
   over it, having just removed two blurred fields that drifted on 19s and 26s
   loops. Flat solved the motion complaint but left a large blue rectangle with
   a title at the top, an arrow at the foot and nothing between — most of the
   card was empty. Two supplied plates fill it now, one per card, in layers:

     ::before   the plate, `cover`, drifting on a slow Ken Burns that
                `alternate`s — it eases back to where it began, so the loop
                has no seam, and the second card runs it in reverse.
     ::after    the two things that must stay still over a moving picture:
                the scrim that keeps white type legible, and the glint. The
                glint is a background layer rather than a transform, which
                is what lets it travel while the scrim under it does not.
     the card   nothing. No fill and no drawn texture — the plate is the
                card, and anything else here would only ever be seen through
                a gap in it.

   INFINITE, BUT NOT WHILE CLOSED. Both loops are `infinite` and neither ever
   restarts — but six cards animating behind a hidden panel is paint for
   nothing, so they are declared `paused` and set `running` on the same
   :hover/:focus-within that opens the sheet. Because pausing holds the
   playhead rather than resetting it, reopening a menu picks the loop up mid-
   stride instead of snapping every card back to its first frame.

   THE SHEET. The index rows carried a flat rectangular wash; they get a soft
   inset one on a radius, drawn on ::before so the row's own hairline stays
   full width above it. The kicker and the card eyebrows get the short rule
   that labels elsewhere on the site already use. The "view all" link draws its
   own underline. The icons and chevrons keep the sober flat register the block
   above argued for — no tinted tiles, no pills.

   Selector depth is 0-4-0 or deeper throughout, matching the block above: the
   theme tints menu anchors at 0-3-1 and the panel resets every radius inside
   it with `.vxn-mega__wrap * { border-radius: 0 !important }`, so anything
   shorter than this loses. Pseudo-elements are not matched by that `*`, which
   is why the row wash and the aurora can hold a radius without fighting it.
   ========================================================================== */

/* ---- The sheet ----------------------------------------------------------
   White still, but not flat white: a barely-there fall towards the foot, and a
   shadow that reads as depth rather than as a drop. */
.elementor-nav-menu--main .vxn-mega__panel {
  background: linear-gradient(180deg, #FFFFFF 0%, #FBFCFE 62%, #F7FAFD 100%) !important;
  border-top: 1px solid rgba(14, 53, 95, .09) !important;
  box-shadow:
    0 1px 0 rgba(255, 255, 255, .9) inset,
    0 30px 60px -34px rgba(6, 18, 32, .38) !important;
}

/* All three sheets stand the same height. Left to their own content they
   follow the length of their link list — Services leads with six entries,
   Insights five, Our Group four — so the sheet visibly resized as you moved
   along the bar. This is the tallest of the three, which makes it a floor the
   shorter menus rise to and not a cap on any of them: a seventh service still
   pushes the sheet down. The cards stretch to meet it, and their CTA already
   carries margin-top:auto, so the extra height opens between the title and
   the arrow rather than stranding it mid-card.

   The block above this one set `min-height: 0` to undo an earlier fixed 545px
   slab. This is not that slab returning — the number is re-measured off the
   longest menu each time the menus change shape, where 545 was 100px of air on
   every one of them. It was 445 while Services listed six rows down one
   column; folding that into two columns of three took Services to 420 with a
   drawer open — still the tallest, Insights measuring 391 — so 420 it is, and
   the sheet stands 490px. Anything shorter here would only mean Insights and
   Services no longer matching. */
.elementor-nav-menu--main .vxn-mega__inner {
  min-height: 420px;
}

/* ---- Intro --------------------------------------------------------------
   The kicker takes the short brand rule that section labels carry elsewhere.
   inline-flex, so the rule centres on the cap height rather than sitting on
   the baseline. */
.elementor-nav-menu--main .vxn-mega__panel .vxn-mega__kicker {
  display: inline-flex !important;
  align-items: center;
  gap: 10px;
  color: var(--vxn-blue, #0B2DBE) !important;
}

.elementor-nav-menu--main .vxn-mega__panel .vxn-mega__kicker::before {
  content: "";
  flex: 0 0 auto;
  width: 22px;
  height: 2px;
  background: currentColor;
  opacity: .55;
}

.elementor-nav-menu--main .vxn-mega__head {
  font-size: 29px !important;
  letter-spacing: -.2px;
  margin: 0 0 9px !important;
}

/* ---- Index rows ---------------------------------------------------------
   The wash is a ::before, inset a few pixels and set on a radius, so it reads
   as a soft plate under the row instead of a rectangle butted up against the
   hairline above it. It bleeds a little past the row's box left and right, so
   the text is not sitting on the plate's edge.

   The row is `display: grid`; an absolutely positioned ::before is out of
   flow, so it claims no column. `isolation: isolate` is what lets it sit at
   z-index -1 — above the row's own background, below all three children —
   without any of them needing a z-index of their own. */
.elementor-nav-menu--main .vxn-mega__panel .vxn-mega__item {
  isolation: isolate;
  border-top-color: rgba(14, 53, 95, .09);
  transition:
    border-top-color .3s ease,
    transform .34s cubic-bezier(.22, .61, .36, 1);
}

.elementor-nav-menu--main .vxn-mega__panel .vxn-mega__item::before {
  content: "";
  position: absolute;
  inset: 5px -12px 5px -12px;
  z-index: -1;
  border-radius: 12px;
  background: linear-gradient(90deg, rgba(0, 83, 183, .10) 0%, rgba(0, 83, 183, .045) 52%, rgba(0, 83, 183, 0) 100%);
  opacity: 0;
  transition: opacity .3s ease;
  pointer-events: none;
}

/* The flat rectangular wash from the block above, off. */
.elementor-nav-menu--main .vxn-mega__panel .vxn-mega__item:hover {
  background: transparent !important;
  border-top-color: rgba(0, 83, 183, .3);
  transform: translateX(2px);
}

.elementor-nav-menu--main .vxn-mega__panel .vxn-mega__item:hover::before {
  opacity: 1;
}

/* The icon carries the accent and grows a touch — flat, still no tile. */
.elementor-nav-menu--main .vxn-mega__panel .vxn-mega__ico {
  transition: color .25s ease, transform .3s cubic-bezier(.22, .61, .36, 1);
}

.elementor-nav-menu--main .vxn-mega__panel .vxn-mega__item:hover .vxn-mega__ico {
  transform: scale(1.08);
}

/* Slides in from behind the row's right edge rather than fading on the spot. */
.elementor-nav-menu--main .vxn-mega__panel .vxn-mega__chev {
  opacity: 0;
  transform: translateX(-5px);
}

.elementor-nav-menu--main .vxn-mega__panel .vxn-mega__item:hover .vxn-mega__chev {
  opacity: 1;
  transform: translateX(2px);
}

/* ---- "View all" ---------------------------------------------------------
   The rule above it brightens, and the label draws its own underline from the
   left. `__viewalltxt` had no styles of its own before this. */
.elementor-nav-menu--main .vxn-mega__panel .vxn-mega__viewall {
  transition: color .25s ease, border-top-color .3s ease;
}

.elementor-nav-menu--main .vxn-mega__panel .vxn-mega__viewall:hover {
  border-top-color: rgba(0, 83, 183, .34);
}

.elementor-nav-menu--main .vxn-mega__panel .vxn-mega__viewalltxt {
  position: relative;
  display: inline-block;
}

.elementor-nav-menu--main .vxn-mega__panel .vxn-mega__viewalltxt::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: -3px;
  height: 1px;
  background: currentColor;
  transform: scaleX(0);
  transform-origin: left center;
  transition: transform .34s cubic-bezier(.22, .61, .36, 1);
}

.elementor-nav-menu--main .vxn-mega__panel .vxn-mega__viewall:hover .vxn-mega__viewalltxt::after {
  transform: scaleX(1);
}

/* ---- The promo cards ----------------------------------------------------
   The texture is photographic now — two supplied plates under
   assets/content/uploads/banners/, one per card, in three layers:

     ::before   the plate itself, `cover`, drifting on a slow Ken Burns. The
                cycle `alternate`s, so it eases back to where it began and the
                loop has no seam; the second card runs it in reverse so the
                pair are never on the same beat.
     ::after    the two things that have to stay still over a moving picture
                — the scrim that keeps white type legible, and the glint. The
                glint is a background layer here rather than a transform,
                which is what lets it move while the scrim under it does not.
     the card   nothing at all: no fill, no drawn texture. The plate is the
                card.

   The plates are ~190KB for the pair and are fetched at load (the panel is
   `visibility: hidden`, not `display: none`), so the first hover is instant
   rather than a blank card that fills in.

   The scrim is on ::after and not stacked over the plate on ::before for a
   reason: ::before is scaled, so anything in it is scaled too, and a scrim's
   dark ends would be pushed outside the card exactly where the type sits. */
.elementor-nav-menu--main .vxn-mega__panel .vxn-mega__wrap .vxn-mega__card {
  position: relative;
  overflow: hidden;
  isolation: isolate;
  /* No fill. The plate is the card; anything painted here would only ever be
     seen through gaps in it, and there should not be any. Both declarations
     have to be written out because two blocks above set them !important — the
     flat brand blue with the woven SVG, and the navy gradient before that.
     The decode-time fallback moved to ::before, under the plate, so a plate
     that fails to load still leaves a dark card rather than white type on the
     white sheet. */
  background-color: transparent !important;
  background-image: none !important;
  border: 1px solid rgba(255, 255, 255, .16) !important;
  border-radius: 16px !important;
  padding: 24px 24px 20px !important;
  box-shadow:
    0 1px 0 rgba(255, 255, 255, .18) inset,
    0 10px 26px -18px rgba(4, 26, 62, .55);
  transition:
    transform .4s cubic-bezier(.22, .61, .36, 1),
    border-color .35s ease,
    box-shadow .4s ease;
}

/* Layer one: the plate. */
.elementor-nav-menu--main .vxn-mega__panel .vxn-mega__wrap .vxn-mega__card::before {
  content: "" !important;
  display: block !important;
  position: absolute;
  inset: 0;
  width: auto;
  height: auto;
  aspect-ratio: auto;
  filter: none;
  z-index: -1;
  border-radius: 0;
  pointer-events: none;
  background-position: center center;
  background-size: cover;
  background-repeat: no-repeat;
  will-change: transform;
  animation: vxn-mega-plate 32s ease-in-out infinite alternate;
  transition: filter .4s ease;
}

.elementor-nav-menu--main .vxn-mega__panel .vxn-mega__wrap .vxn-mega__card:nth-child(1)::before {
  background-image: url("/assets/content/uploads/banners/texture-1.webp");
}

.elementor-nav-menu--main .vxn-mega__panel .vxn-mega__wrap .vxn-mega__card:nth-child(2)::before {
  background-image: url("/assets/content/uploads/banners/texture-2.webp");
  animation-direction: alternate-reverse;
}

/* Layer two: the scrim and the glint — neither of which may move with the plate.

   The scrim is the only thing tinting the plate now that the card carries no
   fill, so it is spent where the type is and nowhere else: .48 at the head
   under the eyebrow and title, .58 at the foot under the Discover row, and
   .06 through the middle, which is as near to nothing as makes no difference.
   .48 over the brightest passage of either plate puts white type at about
   7.8:1 and .26 — where the title's last line falls — at 5.5:1, so there is
   no reason to spend more than that. */
.elementor-nav-menu--main .vxn-mega__panel .vxn-mega__wrap .vxn-mega__card::after {
  content: "" !important;
  display: block !important;
  position: absolute;
  inset: 0;
  /* Same four, for the same reason as ::before above — and it matters more
     here: a scrim that covers one corner is worse than no scrim at all. */
  width: auto;
  height: auto;
  aspect-ratio: auto;
  filter: none;
  z-index: -1;
  border-radius: 0;
  pointer-events: none;
  background-image:
    linear-gradient(100deg,
      rgba(255, 255, 255, 0) 42%,
      rgba(255, 255, 255, .09) 47%,
      rgba(255, 255, 255, .20) 50%,
      rgba(255, 255, 255, .09) 53%,
      rgba(255, 255, 255, 0) 58%),
    linear-gradient(180deg,
      rgba(6, 28, 64, .48) 0%,
      rgba(6, 28, 64, .26) 15%,
      rgba(6, 28, 64, .06) 38%,
      rgba(6, 28, 64, .10) 58%,
      rgba(6, 28, 64, .58) 100%);
  background-size: 260% 100%, 100% 100%;
  background-repeat: no-repeat, no-repeat;
  background-position: 118% 0, 0 0;
  animation: vxn-mega-glint 13s ease-in-out infinite;
  transition: opacity .4s ease;
}

.elementor-nav-menu--main .vxn-mega__panel .vxn-mega__wrap .vxn-mega__card:nth-child(2)::after {
  animation-delay: -6.5s;
}

/* Paused while the sheet is closed, running while it is open. The playhead is
   held, not reset, so a reopened menu resumes rather than restarts. */
.elementor-nav-menu--main .vxn-mega__panel .vxn-mega__wrap .vxn-mega__card::before,
.elementor-nav-menu--main .vxn-mega__panel .vxn-mega__wrap .vxn-mega__card::after {
  animation-play-state: paused;
}

.elementor-nav-menu--main .vxn-mega:hover .vxn-mega__wrap .vxn-mega__card::before,
.elementor-nav-menu--main .vxn-mega:hover .vxn-mega__wrap .vxn-mega__card::after,
.elementor-nav-menu--main .vxn-mega:focus-within .vxn-mega__wrap .vxn-mega__card::before,
.elementor-nav-menu--main .vxn-mega:focus-within .vxn-mega__wrap .vxn-mega__card::after {
  animation-play-state: running;
}

/* A gentle push and drift, not a zoom. `alternate` returns it to the start. */
@keyframes vxn-mega-plate {
  from {
    transform: scale(1.06) translate3d(-1.4%, -1.4%, 0);
  }

  to {
    transform: scale(1.17) translate3d(1.6%, 2.2%, 0);
  }
}

/* The band sits outside the card at both ends of the run — 118% has it clear
   to the left, -18% clear to the right — so the jump back at the loop boundary
   happens where there is nothing to see. Holding from 34% to the end is the
   dark stretch that keeps this a glint rather than a shimmer. The twill and
   the scrim are restated on every frame because background-position moves all
   the layers at once; pinning them at 0 is what holds them still. */
@keyframes vxn-mega-glint {
  0% {
    background-position: 118% 0, 0 0;
  }

  34% {
    background-position: -18% 0, 0 0;
  }

  100% {
    background-position: -18% 0, 0 0;
  }
}

/* ---- Card hover ---------------------------------------------------------
   The card lifts, the edge picks up a white hairline inside and out, and the
   plate comes forward — brighter and a shade more saturated, with the scrim
   easing off it. `filter` and `opacity`, never transform: ::before is already
   running a transform, and setting a second one would jump its playhead. */
.elementor-nav-menu--main .vxn-mega__panel .vxn-mega__wrap .vxn-mega__card:hover {
  transform: translateY(-4px);
  border-color: rgba(255, 255, 255, .42) !important;
  box-shadow:
    0 1px 0 rgba(255, 255, 255, .34) inset,
    0 0 0 1px rgba(255, 255, 255, .10),
    0 22px 42px -20px rgba(4, 30, 74, .68);
}

.elementor-nav-menu--main .vxn-mega__panel .vxn-mega__wrap .vxn-mega__card:hover::before {
  filter: saturate(1.12) brightness(1.07);
}

.elementor-nav-menu--main .vxn-mega__panel .vxn-mega__wrap .vxn-mega__card:hover::after {
  opacity: .88;
}

/* ---- Card content -------------------------------------------------------
   The eyebrow takes the same short rule as the kicker on the other side of the
   sheet, in white this time. */
.elementor-nav-menu--main .vxn-mega__panel .vxn-mega__card .vxn-mega__eyebrow {
  display: inline-flex !important;
  align-items: center;
  gap: 9px;
  color: rgba(255, 255, 255, .74);
  transition: color .3s ease;
}

.elementor-nav-menu--main .vxn-mega__panel .vxn-mega__card .vxn-mega__eyebrow::before {
  content: "";
  flex: 0 0 auto;
  width: 18px;
  height: 2px;
  background: currentColor;
  opacity: .7;
}

.elementor-nav-menu--main .vxn-mega__panel .vxn-mega__card:hover .vxn-mega__eyebrow {
  color: rgba(255, 255, 255, .92);
}

.elementor-nav-menu--main .vxn-mega__panel .vxn-mega__cardtitle {
  font-size: 21px !important;
  letter-spacing: -.2px;
  text-shadow: 0 1px 12px rgba(4, 22, 52, .35);
  transition: transform .4s cubic-bezier(.22, .61, .36, 1);
}

.elementor-nav-menu--main .vxn-mega__panel .vxn-mega__card:hover .vxn-mega__cardtitle {
  transform: translateY(-2px);
}

.elementor-nav-menu--main .vxn-mega__panel .vxn-mega__cardcta {
  border-top-color: rgba(255, 255, 255, .22);
  transition: border-top-color .3s ease;
}

.elementor-nav-menu--main .vxn-mega__panel .vxn-mega__card:hover .vxn-mega__cardcta {
  border-top-color: rgba(255, 255, 255, .46);
}

.elementor-nav-menu--main .vxn-mega__panel .vxn-mega__cardctatxt {
  display: inline-block;
  transition: transform .34s cubic-bezier(.22, .61, .36, 1);
}

.elementor-nav-menu--main .vxn-mega__panel .vxn-mega__card:hover .vxn-mega__cardctatxt {
  transform: translateX(3px);
}

/* ---- Reduced motion -----------------------------------------------------
   The plates stay — they are the surface, not an effect. Everything that
   moves stops, both infinite loops included.

   ::after is NOT hidden here. It carries the scrim as well as the glint, and
   without it white type would sit straight on a bright plate; stopping the
   animation already parks the glint band off the card, which is where its
   first frame puts it. ::before is left at scale 1, so the plate simply sits
   still at cover. */
@media (prefers-reduced-motion: reduce) {

  .elementor-nav-menu--main .vxn-mega__panel .vxn-mega__wrap .vxn-mega__card::before,
  .elementor-nav-menu--main .vxn-mega__panel .vxn-mega__wrap .vxn-mega__card::after,
  .elementor-nav-menu--main .vxn-mega:hover .vxn-mega__wrap .vxn-mega__card::before,
  .elementor-nav-menu--main .vxn-mega:hover .vxn-mega__wrap .vxn-mega__card::after,
  .elementor-nav-menu--main .vxn-mega:focus-within .vxn-mega__wrap .vxn-mega__card::before,
  .elementor-nav-menu--main .vxn-mega:focus-within .vxn-mega__wrap .vxn-mega__card::after {
    animation: none !important;
    transform: none;
  }

  .elementor-nav-menu--main .vxn-mega__panel .vxn-mega__item,
  .elementor-nav-menu--main .vxn-mega__panel .vxn-mega__item:hover,
  .elementor-nav-menu--main .vxn-mega__panel .vxn-mega__wrap .vxn-mega__card:hover,
  .elementor-nav-menu--main .vxn-mega__panel .vxn-mega__card:hover .vxn-mega__cardtitle,
  .elementor-nav-menu--main .vxn-mega__panel .vxn-mega__card:hover .vxn-mega__cardctatxt,
  .elementor-nav-menu--main .vxn-mega__panel .vxn-mega__item:hover .vxn-mega__ico {
    transform: none;
  }

  .elementor-nav-menu--main .vxn-mega__panel .vxn-mega__viewalltxt::after {
    transition: none;
  }
}

/* ==========================================================================
   CAREERS — the "Why Work With Valunxt?" card (2026-09-05)

   The card led with assets/content/uploads/2025/04/stats.png, a stock bar
   chart in two greens left over from the theme demo. It illustrated nothing on
   this page — there are no statistics on it — and the greens belong to no part
   of this palette, so on a brand-blue card it read as a mis-set image rather
   than as artwork. It is out of the markup, and the card takes one of the blue
   plates instead: the same two supplied files the mega-menu cards use, so the
   textured surfaces across the site are one family rather than one per page.

   texture-2 rather than texture-1: this card carries a heading, three list rows
   and a button in 280px, and texture-2 keeps its quiet half low in the frame
   where most of that sits. texture-1's folds run bright the whole way down.

   Layered on the card's own background rather than on a pseudo-element. The
   e-con already uses ::before for Elementor's background-overlay, and this is
   two layers with nothing to animate, so a second element would buy nothing.
   Scrim first in the list, which paints it over the plate.

   THE TYPE. The heading was #000 and the list rgba(0,0,0,.75), on #0B2DBE —
   2.9:1 and below, which fails at any size and was failing before this change
   too. They are white now, which the plate would have forced anyway. The button
   was already white.
   ========================================================================== */

.elementor-268 .elementor-element.elementor-element-7d7674e:not(.elementor-motion-effects-element-type-background) {
  background-color: #0A2E60;
  background-image:
    linear-gradient(180deg,
      rgba(6, 28, 64, .42) 0%,
      rgba(6, 28, 64, .16) 30%,
      rgba(6, 28, 64, .34) 64%,
      rgba(6, 28, 64, .74) 100%),
    url("/assets/content/uploads/banners/texture-2.webp");
  background-size: 100% 100%, cover;
  background-position: 0 0, center center;
  background-repeat: no-repeat, no-repeat;
}

.elementor-268 .elementor-element.elementor-element-ba294bb .elementor-heading-title {
  color: #FFFFFF !important;
}

.elementor-268 .elementor-element.elementor-element-8713576 .elementor-icon-list-text {
  color: rgba(255, 255, 255, .92) !important;
}

.elementor-268 .elementor-element.elementor-element-8713576 .elementor-icon-list-icon,
.elementor-268 .elementor-element.elementor-element-8713576 .elementor-icon-list-icon i {
  color: rgba(255, 255, 255, .8) !important;
}

/* ==========================================================================
   MEGA MENU — the services accordion (2026-09-07)

   The UAE services menu names six services and thirty pages beneath them.
   Listing all thirty at once — the three columns of headed groups this block
   replaces — made the sheet 671px tall and turned a menu into a page: nothing
   was foregrounded because everything was.

   So the children fold away. Six rows in two columns of three, each a service
   with a chevron that opens its pages under it. One drawer is open at a time
   (MegaAccordion.tsx owns which), so the sheet's height moves by one drawer
   and never by six, and the first is open on arrival so the panel is never a
   bare list of headings.

   TWO COLUMNS, AND NO BLURB. One column of six was still most of a screen —
   the sheet read as a page you scrolled rather than a menu you pointed at.
   Three rows a side halves the list, and the blurb comes out with it: at half
   the rail's width a clamped sentence truncates inside its first clause,
   which says less than the name above it, for 18px a row. Between them and
   the tighter row padding the sheet is ~500px against ~700px.

   THE ROW IS TWO CONTROLS. The name is still the link to the service's own
   overview page; the chevron beside it is a <button>. A row that only toggled
   would have buried six overview pages a level deeper, and a row that only
   linked could not open.

   THE ANIMATION is `grid-template-rows: 0fr -> 1fr` on a wrapper whose child
   clips — the one height transition to `auto` that needs neither a measured
   pixel value nor `interpolate-size`, and the reason the markup has a clip
   element between the drawer and the list: padding on a zero-height box is
   still painted, so it has to sit inside what `overflow: hidden` cuts.

   A collapsed drawer is `inert`, set by the component off the same boolean
   that opens it, and NOT `visibility: hidden`. The closed sheet is held out of
   the tab order by its own `visibility: hidden` (see "Panel" above, where the
   comment says as much), and every descendant inherits that — so a drawer that
   declared itself visible would punch a hole straight through it, and the five
   children of whichever service was open would be tabbable, and hit-testable,
   with the menu shut. `inert` does the same job from outside the visibility
   chain, and takes the subtree out of the accessibility tree with it.

   `!important` throughout, and anchors written out rather than left to
   inherit: every link here is inside `ul.sub-menu.elementor-nav-menu--dropdown`,
   which the theme styles as a dropdown — flex-grow, its own padding, nowrap,
   and a background tint on hover. Selectors sit at `.vxn-mega__panel
   .vxn-mega__wrap X` so one rule serves the desktop bar and the burger drawer
   both, as `.vxn-mega__circ` already does.

   THE DRAWER shows the children now. It could not before — thirty items
   stacked under six services was a 35-item scroll to reach Contact — and the
   fold is exactly what makes it affordable: closed, the drawer is six rows.
   ========================================================================== */

/* Two columns of services want more of the sheet than the flat menus' 0.82
   gives — each column has to hold "Accounting and Tax Services" on one line
   and two columns of children under it. The promo cards narrow to match; they
   keep their proportion, and no two menus are ever on screen together for the
   difference to show. */
.elementor-nav-menu--main .vxn-mega__inner--grouped {
  grid-template-columns: minmax(0, 1fr) minmax(0, 0.58fr);
}

/* ---- Two columns --------------------------------------------------------
   Split in the component, not here, and this is why: `columns: 2` breaks a
   group across the gap mid-drawer, and a two-track grid shares its rows
   between the columns — opening the drawer on the left grows the row on both
   sides and strands a hole of white under the service on the right. Two flex
   stacks side by side each measure themselves, so a drawer only moves what is
   below it in its own column. */
.vxn-mega__panel .vxn-mega__wrap .vxn-mega__list--grouped {
  display: grid !important;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  column-gap: 40px;
  align-items: start;
}

.vxn-mega__groupcol {
  display: flex;
  flex-direction: column;
  min-width: 0;
}

/* ---- The group ----------------------------------------------------------
   The hairline belongs to the group and not to the row inside it, so the
   rule stays put when the drawer opens. `isolation` is what lets the row's
   hover wash sit at z-index -1 — above the group's background, below every
   child — without a z-index on any of them. */
.vxn-mega__group {
  position: relative;
  isolation: isolate;
  border-top: 1px solid rgba(14, 53, 95, .10);
}

/* Per column, so both columns close on a rule whether or not one of them is
   carrying an open drawer. */
.vxn-mega__groupcol .vxn-mega__group:last-child {
  border-bottom: 1px solid rgba(14, 53, 95, .10);
}

.vxn-mega__grouprow {
  position: relative;
  display: grid;
  grid-template-columns: minmax(0, 1fr) 38px;
  align-items: center;
  gap: 0 8px;
}

/* The same soft plate the flat index rows carry, bled a little past the row
   left and right so the text is not sitting on its edge. It stays lit while
   the group is open, so the sheet says which drawer you are looking at. */
.vxn-mega__grouprow::before {
  content: "";
  position: absolute;
  inset: 4px -12px;
  z-index: -1;
  border-radius: 12px;
  background: linear-gradient(90deg, rgba(0, 83, 183, .10) 0%, rgba(0, 83, 183, .045) 52%, rgba(0, 83, 183, 0) 100%);
  opacity: 0;
  transition: opacity .3s ease;
  pointer-events: none;
}

.vxn-mega__group:hover > .vxn-mega__grouprow::before,
.vxn-mega__group.is-open > .vxn-mega__grouprow::before {
  opacity: 1;
}

/* ---- The row: the service, still a link to its own page ---- */
.vxn-mega__panel .vxn-mega__wrap .vxn-mega__grouphead {
  display: grid !important;
  grid-template-columns: 24px minmax(0, 1fr);
  align-items: center;
  gap: 0 13px;
  flex: 0 0 auto !important;
  min-width: 0;
  margin: 0 !important;
  padding: 25px 0 !important;
  border: 0;
  border-radius: 0;
  background: transparent !important;
  text-decoration: none !important;
  white-space: normal !important;
}

.vxn-mega__groupbody {
  display: block;
  min-width: 0;
}

.vxn-mega__grouptitle {
  display: block;
  font-size: 15px;
  font-weight: 600;
  line-height: 1.3;
  letter-spacing: -.1px;
  color: var(--e-global-color-vamtam_text, #0E355F);
  transition: color .22s ease;
  white-space: normal !important;
}

.vxn-mega__group:hover > .vxn-mega__grouprow .vxn-mega__grouptitle,
.vxn-mega__group.is-open > .vxn-mega__grouprow .vxn-mega__grouptitle,
.vxn-mega__grouphead:focus-visible .vxn-mega__grouptitle {
  color: var(--vxn-blue, #0B2DBE);
}

.vxn-mega__group:hover > .vxn-mega__grouprow .vxn-mega__ico,
.vxn-mega__group.is-open > .vxn-mega__grouprow .vxn-mega__ico {
  color: var(--vxn-blue, #0B2DBE);
}

/* ---- The disclosure -----------------------------------------------------
   A bare chevron on the sober flat register the rest of the sheet keeps — no
   tinted tile, no pill. The button is written out because the theme has
   never had one inside a menu to style. */
.vxn-mega__panel .vxn-mega__wrap .vxn-mega__grouptoggle {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  width: 38px;
  height: 38px;
  margin: 0;
  padding: 0;
  border: 0;
  background: transparent;
  box-shadow: none;
  -webkit-appearance: none;
  appearance: none;
  color: var(--vxn-muted, #6A7590);
  cursor: pointer;
  transition: color .22s ease, transform .36s cubic-bezier(.22, .61, .36, 1);
}

.vxn-mega__panel .vxn-mega__wrap .vxn-mega__grouptoggle:hover,
.vxn-mega__group.is-open .vxn-mega__grouptoggle {
  background: transparent;
  color: var(--vxn-blue, #0B2DBE);
}

.vxn-mega__group.is-open .vxn-mega__grouptoggle {
  transform: rotate(180deg);
}

.vxn-mega__panel .vxn-mega__wrap .vxn-mega__grouptoggle:focus-visible {
  outline: 2px solid var(--vxn-blue, #0B2DBE);
  outline-offset: -4px;
}

/* ---- The drawer ---------------------------------------------------------
   Three elements doing three jobs: __drawer is the grid whose row animates,
   __drawerclip is what the list is cut off against, __subs carries padding
   that would otherwise be painted at zero height and hold the drawer open by
   its own measure. */
.vxn-mega__drawer {
  display: grid;
  grid-template-rows: 0fr;
  opacity: 0;
  transition:
    grid-template-rows .4s cubic-bezier(.22, .61, .36, 1),
    opacity .22s ease;
}

.vxn-mega__group.is-open > .vxn-mega__drawer {
  grid-template-rows: 1fr;
  opacity: 1;
  transition:
    grid-template-rows .4s cubic-bezier(.22, .61, .36, 1),
    opacity .3s ease .08s;
}

.vxn-mega__drawerclip {
  min-height: 0;
  overflow: hidden;
}

/* Indented to the row's text rather than to its icon, so the children read as
   belonging to the name above them. Two columns, not three: the service
   column is half the rail now, and a third track would put "Plant & Machinery
   Valuation" onto three lines. Two keeps the longest child on two, and six
   children on three rows rather than six. */
.vxn-mega__panel .vxn-mega__wrap .vxn-mega__subs {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  column-gap: 20px;
  align-content: start;
  padding: 0 0 12px 37px;
}

.vxn-mega__panel .vxn-mega__wrap .vxn-mega__sub {
  display: block !important;
  position: relative;
  flex: 0 0 auto !important;
  margin: 0 !important;
  padding: 5px 0 !important;
  border-radius: 0;
  background: transparent !important;
  text-decoration: none !important;
  white-space: normal !important;
  font-size: 12.75px;
  font-weight: 400;
  line-height: 1.45;
  letter-spacing: 0;
  color: var(--vxn-muted, #6A7590);
  transition: color .2s ease, transform .26s cubic-bezier(.22, .61, .36, 1);
}

.vxn-mega__panel .vxn-mega__wrap .vxn-mega__sub:hover,
.vxn-mega__panel .vxn-mega__wrap .vxn-mega__sub:focus-visible {
  color: var(--vxn-blue, #0B2DBE);
  transform: translateX(3px);
}

/* ---- The burger drawer --------------------------------------------------
   The two columns fold back into one — a phone has no width to split — and
   the children stack under each service.

   The component emits the columns as two stacks of three, so unwinding them
   here is just `display: contents` on the wrapper: the six groups rejoin the
   list in their original order, 1..6, and nothing has to know a split
   happened. */
nav.elementor-nav-menu--dropdown .vxn-mega__panel .vxn-mega__list--grouped {
  display: block !important;
}

nav.elementor-nav-menu--dropdown .vxn-mega__groupcol {
  display: contents;
}

nav.elementor-nav-menu--dropdown .vxn-mega__group {
  border-top-color: rgba(14, 53, 95, .09);
}

/* One stack again, so only the last of the six closes on a rule. */
nav.elementor-nav-menu--dropdown .vxn-mega__groupcol .vxn-mega__group:last-child {
  border-bottom: 0;
}

nav.elementor-nav-menu--dropdown .vxn-mega__list--grouped > .vxn-mega__groupcol:last-child .vxn-mega__group:last-child {
  border-bottom: 1px solid rgba(14, 53, 95, .09);
}

nav.elementor-nav-menu--dropdown .vxn-mega__panel .vxn-mega__grouphead {
  padding: 13px 0 !important;
}

nav.elementor-nav-menu--dropdown .vxn-mega__panel .vxn-mega__subs {
  grid-template-columns: minmax(0, 1fr);
  padding: 0 0 10px 37px;
}

nav.elementor-nav-menu--dropdown .vxn-mega__panel .vxn-mega__sub {
  padding: 7px 0 !important;
}

/* The row wash is a desktop flourish; the drawer's rows are already ruled. */
nav.elementor-nav-menu--dropdown .vxn-mega__grouprow::before {
  display: none;
}

@media (prefers-reduced-motion: reduce) {

  .vxn-mega__panel .vxn-mega__wrap .vxn-mega__sub,
  .vxn-mega__panel .vxn-mega__wrap .vxn-mega__sub:hover {
    transform: none;
  }

  /* The fold still has to happen — it is what the button says it does — so
     the transition goes, not the state change. */
  .vxn-mega__drawer,
  .vxn-mega__group.is-open > .vxn-mega__drawer {
    transition: none;
  }

  .vxn-mega__panel .vxn-mega__wrap .vxn-mega__grouptoggle {
    transition: color .22s ease;
  }
}

/* ---- Height safety ------------------------------------------------------
   The services sheet hangs from the foot of the bar, and the accordion still
   grows by a drawer when one is opened — so on a 1366x768 laptop, where the
   viewport is around 640px tall, the last row of services and the whole
   "view all" line could fall off the bottom of the screen with no way to
   reach them. The fold made this far less likely than it was when all thirty
   children were listed at once; it did not make it impossible.

   Capped to what is left below the bar, and allowed to scroll inside itself
   past that.  shows no bar and changes nothing on a screen where the
   sheet already fits, which is every desktop over ~770px tall; 
   stops a flick at the end of the list scrolling the page behind it. */
.elementor-nav-menu--main .vxn-mega__panel {
  max-height: calc(100vh - var(--vxn-navh, 94px));
  overflow-y: auto;
  overscroll-behavior: contain;
}

/* ==========================================================================
   THE ONE CTA (2026-09-11)

   On client instruction every call to action on the site is the same pill:
   46px tall, 28px at the sides, 14px/600 with a hair of tracking, no
   capitals, a full radius, filled with one gradient. Three finishes, chosen
   by the ground the pill sits on:

     filled    the gradient, a white label          light and tinted grounds
     inverse   white, the ink for a label           navy, blue and photographs
     outline   a hairline and the ink; the wedge    beside a filled pill
               brings the gradient on hover

   The tokens are at the head of this file. This block is the ENFORCEMENT of
   the geometry: it names every button class the site renders and asserts the
   tokens with !important, because the Elementor kit sizes its buttons per
   widget (.elementor-17 .elementor-element-x .elementor-button, at 0,3,0) and
   a plain rule cannot reach them all. The bespoke sheets and the page bodies
   were rewritten to read the same tokens, so what they say and what this
   says agree; this is the backstop, not the only copy.

   NOT pills, and left alone: the round icon buttons (the hero ring, the
   trio's and the ready band's arrows), the ready band's rows, the text links
   with an arrow (the service strip's "Explore More", "View all", the mega
   menu's links), the two composite pills that carry a chip (the subscribe
   field's and the service pages' banner CTA, which keep their 7px seat and
   take the height, the type and the fill from the same tokens), and the
   three Elementor buttons that are really text links, re-asserted below.

   The hover is the wedge above, applied to every class here as well, with
   the dark value on a filled pill and the light one on an inverse pill.
   ========================================================================== */
.elementor-button:not(.elementor-button-info):not(.elementor-button-success):not(.elementor-button-warning):not(.elementor-button-danger),
a.elementor-button:not(.elementor-button-info):not(.elementor-button-success):not(.elementor-button-warning):not(.elementor-button-danger),
.elementor-cta__button,
.wp-block-button__link,
.vamtam-button,
.vamtam-btn,
form.elementor-form button[type="submit"] {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center;
  padding-left: var(--vxn-cta-px) !important;
  padding-right: var(--vxn-cta-px) !important;
}

.elementor-button:not(.elementor-button-info):not(.elementor-button-success):not(.elementor-button-warning):not(.elementor-button-danger),
a.elementor-button:not(.elementor-button-info):not(.elementor-button-success):not(.elementor-button-warning):not(.elementor-button-danger),
.elementor-cta__button,
.wp-block-button__link,
.vamtam-button,
.vamtam-btn,
form.elementor-form button[type="submit"],
.vxae-hero__cta,
.vxn-band__pill,
.vxn-whyus__cta,
.vxn-cookie__btn,
.at-btn,
.at-talk__cta,
.abk-root .abk-why__btn,
.abk-root .abk-card__btn,
.abk-root .abk-case__cta,
.abk-root .abk-band__cta,
.abk-root .abk-talk__cta,
.svcx-btn,
.vxn-plat__btn,
.vxn-rd__btn,
.vxn-com__btn,
.vxn-faq__btn,
.vxn-coming__cta,
.vxn-side-cta {
  box-sizing: border-box;
  gap: 10px !important;
  min-height: var(--vxn-cta-h) !important;
  padding-top: 0 !important;
  padding-bottom: 0 !important;
  border-radius: var(--vxn-cta-r) !important;
  font-size: var(--vxn-cta-fs) !important;
  font-weight: var(--vxn-cta-fw) !important;
  letter-spacing: var(--vxn-cta-ls) !important;
  text-transform: none !important;
  line-height: 1 !important;
  text-decoration: none !important;
}

/* The composite pills: the height, the type and the fill, not the sides. */
.vxn-sub__cta,
.at-prob__cta {
  min-height: var(--vxn-cta-h) !important;
  border-radius: var(--vxn-cta-r) !important;
}

/* ---- The wedge, on the classes the block above added --------------------- */
.vxn-band__pill,
.vxn-whyus__cta,
.vxn-cookie__btn,
.at-btn,
.at-talk__cta,
.at-prob__cta,
.abk-root .abk-why__btn,
.abk-root .abk-card__btn,
.abk-root .abk-case__cta,
.abk-root .abk-band__cta,
.abk-root .abk-talk__cta,
.svcx-btn,
.vxn-sub__cta {
  position: relative;
  overflow: hidden;
  isolation: isolate;
  transition: color .2s ease .15s, transform .35s ease, box-shadow .35s ease;
}

.vxn-band__pill::before,
.vxn-whyus__cta::before,
.vxn-cookie__btn::before,
.at-btn::before,
.at-talk__cta::before,
.at-prob__cta::before,
.abk-root .abk-why__btn::before,
.abk-root .abk-card__btn::before,
.abk-root .abk-case__cta::before,
.abk-root .abk-band__cta::before,
.abk-root .abk-talk__cta::before,
.svcx-btn::before,
.vxn-sub__cta::before {
  content: "";
  position: absolute;
  top: 0;
  left: -50px;
  width: 0;
  height: 100%;
  background: var(--vxn-cta-sweep, #08248F);
  transform: skewX(45deg);
  transform-origin: top left;
  z-index: -1;
  pointer-events: none;
  transition: width .7s cubic-bezier(.25, .8, .25, 1);
}

.vxn-band__pill:hover::before,
.vxn-band__pill:focus-visible::before,
.vxn-whyus__cta:hover::before,
.vxn-cookie__btn:hover::before,
.at-btn:hover::before,
.at-talk__cta:hover::before,
.at-prob__cta:hover::before,
.abk-root .abk-why__btn:hover::before,
.abk-root .abk-card__btn:hover::before,
.abk-root .abk-case__cta:hover::before,
.abk-root .abk-band__cta:hover::before,
.abk-root .abk-talk__cta:hover::before,
.svcx-btn:hover::before,
.vxn-sub__cta:hover::before {
  width: 250%;
}

.vxn-band__pill:hover,
.vxn-whyus__cta:hover,
.vxn-cookie__btn:hover,
.at-btn:hover,
.at-talk__cta:hover,
.at-prob__cta:hover,
.abk-root .abk-why__btn:hover,
.abk-root .abk-card__btn:hover,
.abk-root .abk-case__cta:hover,
.abk-root .abk-band__cta:hover,
.abk-root .abk-talk__cta:hover,
.svcx-btn:hover {
  transform: scale(1.03);
  box-shadow: 0 10px 24px -8px rgba(0, 64, 140, .55);
}

/* Seated in the field's well: the wedge, no lift. */
.vxn-sub__cta:hover {
  transform: none;
}

/* The three Elementor buttons that are text links keep their shape: no fill,
   no pill, no height. Each selector outranks the enforcement above. */
.elementor-248 .elementor-element-7ab26c9 .elementor-element-26edf8b a.elementor-button.elementor-button-link,
:is(.page-id-250, .page-id-252, .page-id-254, .page-id-256) .elementor-widget-button.elementor-align-justify.vamtam-content-align-space-between a.elementor-button.elementor-button-link,
.elementor-2281 .elementor-element-10f841ea a.elementor-button.elementor-button-link.elementor-size-sm {
  min-height: 0 !important;
  padding: 6px 0 !important;
  border-radius: 0 !important;
  background-image: none !important;
  background-color: transparent !important;
}

@media (prefers-reduced-motion: reduce) {

  .vxn-band__pill::before,
  .vxn-whyus__cta::before,
  .vxn-cookie__btn::before,
  .at-btn::before,
  .at-talk__cta::before,
  .at-prob__cta::before,
  .abk-root .abk-why__btn::before,
  .abk-root .abk-card__btn::before,
  .abk-root .abk-case__cta::before,
  .abk-root .abk-band__cta::before,
  .abk-root .abk-talk__cta::before,
  .svcx-btn::before,
  .vxn-sub__cta::before {
    transition: none;
  }

  .vxn-band__pill:hover,
  .vxn-whyus__cta:hover,
  .vxn-cookie__btn:hover,
  .at-btn:hover,
  .at-talk__cta:hover,
  .at-prob__cta:hover,
  .abk-root .abk-why__btn:hover,
  .abk-root .abk-card__btn:hover,
  .abk-root .abk-case__cta:hover,
  .abk-root .abk-band__cta:hover,
  .abk-root .abk-talk__cta:hover,
  .svcx-btn:hover {
    transform: none;
  }
}

/* ---- THE ONE ARROW (client, 20260914) -----------------------------------
   Every CTA ends in the theme's arrow-right glyph at one size, 10px after its
   label, nudged 3px to the right while the control is lit. <CtaArrow /> renders
   it; the Elementor buttons carry the same class on their icon. The nudge keys
   off the link or button the arrow sits in, so a card that wraps its pill in a
   larger link lights it too. */
.vxn-cta__arrow {
  display: inline-block;
  flex: 0 0 auto;
  font-size: 13px !important;
  line-height: 1 !important;
  transition: transform .25s var(--vxn-ease, ease);
}

:is(a, button):hover .vxn-cta__arrow,
:is(a, button):focus-visible .vxn-cta__arrow {
  transform: translateX(3px);
}

/* The Elementor buttons: the same gap, and the icon after the label wherever
   the widget asks for it (the captured per-element sheets carry this for the
   buttons that came from WordPress; the ones added since do not). */
.elementor-button .elementor-button-content-wrapper {
  gap: 10px !important;
  align-items: center;
}

.vamtam-icon-pos-row-reverse .elementor-button-content-wrapper {
  flex-direction: row-reverse;
}

@media (prefers-reduced-motion: reduce) {
  .vxn-cta__arrow {
    transition: none;
  }

  :is(a, button):hover .vxn-cta__arrow,
  :is(a, button):focus-visible .vxn-cta__arrow {
    transform: none;
  }
}

/* The dropdown items (About: Who We Are, Careers, FAQ) take white type when
   lit (20260914, client): the header kits paint the highlighted item a blue
   plate and left the type blue on it. (0,2,1) + !important over the kits'
   (0,5,1). */
.elementor-nav-menu--dropdown a.elementor-sub-item:hover,
.elementor-nav-menu--dropdown a.elementor-sub-item:focus,
.elementor-nav-menu--dropdown a.elementor-sub-item.highlighted {
  color: #FFFFFF !important;
}

/* ---- THE BRAND NAME (client, 20260914) ------------------------------------
   The name is "Valunxt", never "VALUNXT", anywhere on the site. The copy says
   so everywhere now; this is for the labels the stylesheets set in capitals
   (the UAE home's tags and eyebrows, the sub-service pages' panel mark and
   "Why Valunxt?" pill), which would still draw it as VALUNXT. The label keeps
   its capitals and the name inside it keeps its own case: brandCase() in
   components/ui/BrandName.tsx wraps it. Lower case needs less tracking than
   the capitals around it, so the name sets its own. */
.vxn-brand {
  text-transform: none !important;
  letter-spacing: 0.02em !important;
}

/* ==========================================================================
   THE SITE'S SCROLL MOTION (20260916) — components/layout/SiteMotion.tsx
   Built to the supplied recording (animation reference.mp4): headings a
   line at a time through a mask, copy out of a blur, pictures and cards
   rising, buttons a beat behind, the hero coming up on load, and the larger
   pictures drifting against the scroll.

   THE SAFETY RULE: nothing here hides anything unless the element carries
   data-reveal-state="pending", which only that engine sets, and it takes
   both marks off again once an arrival has played. With no script, a
   blocked bundle or reduced motion, the page is exactly as it was.
   ========================================================================== */

/* ---- Lines: every word wrapped, each line rising through its own clip ----
   The wrapper is an inline-block so the inner span can move, and it clips
   with clip-path rather than overflow, which would move its baseline to its
   bottom edge and knock the word out of line with its neighbours. The clip
   runs .2em over the top and .25em under, for the ascenders and
   descenders of a 1.08 line-height heading. */
.vxn-w {
  display: inline-block;
}

[data-reveal='lines'][data-reveal-state] .vxn-w {
  clip-path: inset(-.2em -.08em -.25em -.08em);
}

.vxn-w__i {
  display: inline-block;
}

[data-reveal='lines'][data-reveal-state='pending'] .vxn-w__i {
  transform: translateY(140%);
}

[data-reveal='lines'][data-reveal-state='in'] .vxn-w__i {
  transform: none;
  transition: transform .85s cubic-bezier(.22, 1, .36, 1);
  transition-delay: calc(var(--vxn-d, 0ms) + var(--vxn-line, 0) * 95ms);
}

/* ---- Blur: paragraphs, list items, small lines -------------------------- */
[data-reveal='blur'][data-reveal-state='pending'] {
  opacity: 0;
  filter: blur(10px);
  transform: translateY(14px);
}

[data-reveal='blur'][data-reveal-state='in'] {
  opacity: 1;
  filter: none;
  transform: none;
  transition: opacity .8s ease, filter .8s ease, transform .8s cubic-bezier(.22, 1, .36, 1);
  transition-delay: calc(var(--vxn-d, 0ms) + 140ms);
}

/* ---- Rise: pictures, cards, the panels a band marks itself -------------- */
[data-reveal='rise'][data-reveal-state='pending'] {
  opacity: 0;
  transform: translateY(56px);
}

[data-reveal='rise'][data-reveal-state='in'] {
  opacity: 1;
  transform: none;
  transition: opacity .9s ease, transform 1s cubic-bezier(.22, 1, .36, 1);
  transition-delay: var(--vxn-d, 0ms);
}

/* ---- Rise, small: the buttons, a beat behind their copy ------------------ */
[data-reveal='rise-sm'][data-reveal-state='pending'] {
  opacity: 0;
  transform: translateY(18px);
}

[data-reveal='rise-sm'][data-reveal-state='in'] {
  opacity: 1;
  transform: none;
  transition: opacity .7s ease, transform .7s cubic-bezier(.22, 1, .36, 1);
  transition-delay: calc(var(--vxn-d, 0ms) + 240ms);
}

/* ---- Fade: the first block coming up on a fresh load --------------------- */
[data-reveal='fade'][data-reveal-state='pending'] {
  opacity: 0;
}

[data-reveal='fade'][data-reveal-state='in'] {
  opacity: 1;
  transition: opacity 1s ease;
}

/* ---- Elementor's replay, voided ----------------------------------------
   A widget the engine took over (its .elementor-invisible removed, classed
   vxn-took) can still be handed `animated <name>` by Elementor's frontend
   when its waypoint fires; without this it would blink and slide a second
   time, already on screen. */
.vxn-took.animated,
.vxn-took.animated-fast,
.vxn-took.animated-slow {
  animation: none !important;
  opacity: 1;
}

/* ---- Drift: the larger pictures against the scroll ----------------------
   --vxn-px is written by the engine each frame from the picture's place in
   the viewport, in the sign it was given; a picture inside a clipping
   frame is scaled a little so its edges never show. */
[data-reveal-drift] {
  transform: translate3d(0, var(--vxn-px, 0px), 0) scale(var(--vxn-px-scale, 1));
  will-change: transform;
}

@media (prefers-reduced-motion: reduce) {
  [data-reveal-drift] {
    transform: none;
    will-change: auto;
  }
}
