/* Presentation only. Typography and colours remain in Elementor Site Settings. */
.elementor a:focus-visible,.elementor button:focus-visible,.elementor summary:focus-visible {
  outline:2px solid var(--e-global-color-brand_coral);
  outline-offset:4px;
}
.elementor .elementor-button { transition:color .2s,background-color .2s,border-color .2s; }
/* One interaction speed sitewide: Elementor's tab and accordion titles default to .3s. */
.elementor .e-n-tab-title,.elementor .e-n-accordion-item-title,.elementor .e-n-accordion-item-title-text { transition-duration:.2s; }
.elementor .e-n-accordion-item-title:hover .e-n-accordion-item-title-text { color:var(--e-global-color-brand_coral); }
.cx-partner-marquee { display:none; }
@media(max-width:767px) and (prefers-reduced-motion:no-preference) {
  .cx-logo-motion > .cx-logo-source { display:none; }
  .cx-partner-marquee { display:flex;width:100%;overflow:hidden;height:64px;align-items:center; }
  .cx-partner-track { display:flex;flex-shrink:0;align-items:center;gap:24px;padding-right:24px;animation:cx-partner-flow 24s linear infinite; }
  .cx-partner-track img { height:40px;width:auto;max-width:150px;object-fit:contain;flex-shrink:0; }
  .cx-partner-marquee:is(:hover,:focus-within) .cx-partner-track { animation-play-state:paused; }
  @keyframes cx-partner-flow { to { transform:translateX(-100%); } }
}
@media(max-width:1024px) {
  /* Open menu is a full-bleed stone sheet below the bar (Figma 312:15224); the bar and header merge into it. */
  .elementor-widget-n-menu .e-n-menu[data-layout="dropdown"] > .e-n-menu-wrapper {
    position:fixed!important;top:var(--cx-menu-top,96px)!important;left:0!important;right:0!important;bottom:0;
    width:100vw!important;max-height:none;height:auto;overflow-y:auto;border-radius:0;
    background:var(--e-global-color-surface_stone);
  }
  .elementor-location-header:has(.e-n-menu-toggle[aria-expanded="true"]) > .elementor > .e-con,
  .elementor-location-header:has(.e-n-menu-toggle[aria-expanded="true"]) > .elementor > .e-con.cx-header-scrolled {
    background-color:var(--e-global-color-surface_stone);
  }
  .elementor-location-header:has(.e-n-menu-toggle[aria-expanded="true"]) > .elementor > .e-con > .e-con {
    background-color:var(--e-global-color-surface_stone)!important;backdrop-filter:none;-webkit-backdrop-filter:none;
  }
}
/* Tablet/phone Services drill-down (editable-behaviour.js; Figma 312:15244). Type comes from the global font variables. */
.cx-menu-back { display:none; }
@media(max-width:1024px) {
  .cx-menu-drill > .e-n-menu-heading > .e-n-menu-item:not(.cx-menu-drill-item) { display:none; }
  .cx-menu-drill .cx-menu-drill-item > .e-n-menu-title { display:none; }
  .elementor-location-header.elementor .elementor-element.elementor-widget-n-menu .cx-menu-drill .cx-menu-back {
    display:flex;align-items:center;gap:8px;width:auto;align-self:stretch;box-sizing:border-box;padding:12px 0;margin:0 0 8px;border:0;background:none;cursor:pointer;text-align:left;
    color:var(--e-global-color-brand_ink);font-family:var(--e-global-typography-menu-font-family),sans-serif;
    font-size:var(--e-global-typography-menu-font-size);font-weight:var(--e-global-typography-menu-font-weight);line-height:var(--e-global-typography-menu-line-height);
  }
  .cx-menu-back svg { width:14px;height:14px;flex:none;transform:rotate(-90deg); }
  /* Elementor sizes the dropdown panel to the viewport; inside the padded sheet it has to fit the column. */
  .elementor-location-header.elementor .elementor-element.elementor-widget-n-menu .cx-menu-drill .cx-menu-drill-item > .e-n-menu-content { width:100%;min-width:0;max-width:100%; }
  .elementor-location-header.elementor .elementor-element.elementor-widget-n-menu .cx-menu-drill .cx-service-links { gap:12px; }
  .elementor-location-header.elementor .elementor-element.elementor-widget-n-menu .cx-menu-drill .cx-service-link { padding:12px 0; }
  .elementor-location-header.elementor .elementor-element.elementor-widget-n-menu .cx-menu-drill .cx-service-link .elementor-heading-title {
    font-family:var(--e-global-typography-heading_xl-font-family),sans-serif;font-size:var(--e-global-typography-heading_xl-font-size);
    font-weight:var(--e-global-typography-heading_xl-font-weight);line-height:var(--e-global-typography-heading_xl-line-height);letter-spacing:var(--e-global-typography-heading_xl-letter-spacing);
  }
  .elementor-location-header.elementor .elementor-element.elementor-widget-n-menu .cx-menu-drill .cx-service-link p {
    margin-top:4px;font-size:var(--e-global-typography-body_base-font-size);line-height:var(--e-global-typography-body_base-line-height);font-weight:var(--e-global-typography-body_base-font-weight);
  }
}
/* Menu motion uses the sitewide reveal (fade and 16px rise, power3.out). The desktop dropdown and the mobile
   Services panel run on the menu's native Animation control (Fade in, duration from the control); Elementor does
   not load its fadeIn keyframes here, so the classes it adds are given the site's keyframes. */
@media(prefers-reduced-motion:no-preference) {
  .elementor-widget-n-menu .e-n-menu-content > .e-con.animated.fadeIn { animation-name:cx-menu-in;animation-duration:var(--n-menu-open-animation-duration,.45s);animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-fill-mode:both; }
  @keyframes cx-menu-in { from { opacity:0;transform:translateY(16px); } to { opacity:1;transform:none; } }
}
@media(max-width:1024px) and (prefers-reduced-motion:no-preference) {
  .elementor-widget-n-menu .e-n-menu[data-layout="dropdown"] > .e-n-menu-wrapper > .e-n-menu-heading { animation:cx-menu-in var(--n-menu-open-animation-duration,.45s) cubic-bezier(.215,.61,.355,1) both; }
  .elementor-widget-n-menu .e-n-menu[data-layout="dropdown"] > .e-n-menu-wrapper.cx-menu-return > .e-n-menu-heading { animation-name:cx-menu-back; }
  @keyframes cx-menu-back { from { opacity:0;transform:translateY(16px); } to { opacity:1;transform:none; } }
}
/* Services tabs auto-cycle (editable-behaviour.js). The native badge image stays in the DOM for the editor. */
.cx-badge-host { position:relative; }
.cx-badge-source { visibility:hidden; }
.cx-badge-svg { position:absolute;display:block;overflow:visible;pointer-events:none; }
.cx-badge-line { fill:var(--e-global-color-brand_ink,#252423); }
.cx-badge-bar { fill:var(--e-global-color-surface_parchment,#fdfaf3);transform-box:fill-box;transform-origin:left center;transform:scaleX(0); }
.cx-badge-bar.cx-badge-on { transform:scaleX(1); }
/* Countdown on the active tab divider: a dim line over the native active border, filled left to right. */
.cx-services-cycle .e-n-tab-title { position:relative; }
.cx-services-cycle.cx-cycling .e-n-tab-title[aria-selected="true"]::before,
.cx-services-cycle.cx-cycling .e-n-tab-title[aria-selected="true"]::after { content:"";position:absolute;left:0;right:0;bottom:-1px;height:1px;pointer-events:none; }
.cx-services-cycle.cx-cycling .e-n-tab-title[aria-selected="true"]::before { background:var(--e-global-color-ink_600,#545451); }
.cx-services-cycle.cx-cycling .e-n-tab-title[aria-selected="true"]::after { background:var(--e-global-color-surface_parchment,#fdfaf3);transform-origin:left center;transform:scaleX(0); }
.cx-services-cycle.cx-cycling.cx-cycle-run .e-n-tab-title[aria-selected="true"]::after { animation:cx-tab-count var(--cx-cycle,6s) linear forwards; }
.cx-services-cycle.cx-cycling.cx-cycle-run.cx-cycle-paused .e-n-tab-title[aria-selected="true"]::after { animation-play-state:paused; }
@keyframes cx-tab-count { to { transform:scaleX(1); } }
@media(prefers-reduced-motion:no-preference) {
  .cx-services-cycle > .e-n-tabs > .e-n-tabs-content > .e-con.e-active { animation:cx-tab-fade .3s ease both; }
  @keyframes cx-tab-fade { from { opacity:0; } to { opacity:1; } }
}
/* Lists inside editable text keep the same rhythm as paragraphs (approved case-study copy has p + ul + p runs). */
.elementor-widget-text-editor :is(ul,ol) { margin:0 0 .9em; }
.elementor-widget-text-editor :is(ul,ol) li + li { margin-top:.25em; }
@media(prefers-reduced-motion:no-preference) {
  .cx-case-stack > .e-con { position:sticky;top:var(--cx-card-pin,112px); }
  .elementor .e-con.cx-case-head { position:sticky;top:var(--cx-head-pin,112px);z-index:1;margin-block-end:var(--cx-head-hold,0px);margin-bottom:var(--cx-head-hold,0px); }
  .elementor .e-con.cx-case-head + .e-con.cx-case-stack { margin-block-start:calc(-1 * var(--cx-head-hold,0px)); margin-top:calc(-1 * var(--cx-head-hold,0px)); }
  .cx-case-stack > .e-con + .e-con { box-shadow:0 -12px 24px -20px rgba(37,36,35,.3); }
  /* Scroll room after the last card so the full stack holds pinned before it leaves. Sticky boxes
     cannot use the container's padding or their own margin for this; it has to be content. */
  .cx-case-stack::after { content:"";display:block;flex:none;height:120px; }
  @media(max-width:1024px) { .cx-case-stack::after { height:100px; } }
  @media(max-width:767px) { .cx-case-stack::after { height:80px; } }
  /* Fallback reveal when GSAP is unavailable; same timing as editable-motion.js (power3.out). */
  .cx-reveal-ready { opacity:0;transform:translateY(16px);transition:opacity .45s cubic-bezier(.215,.61,.355,1),transform .45s cubic-bezier(.215,.61,.355,1); }
  .cx-reveal-ready.cx-reveal-in { opacity:1;transform:none; }
}
@media(prefers-reduced-motion:reduce) {
  html { scroll-behavior:auto!important; }
  .elementor *, .elementor *::before,.elementor *::after { animation-duration:.01ms!important;transition-duration:.01ms!important; }
}
/* 24/09/2026, Soha: "Get started" in the mobile menu. The header's own Get started button (Advanced > CSS Classes
   `cx-menu-cta`, hidden on tablet and mobile in the editor) is shown at the foot of the open menu sheet. Its text,
   link and style stay in the native Button controls. It sits above the sheet (z-index 2147483640). */
@media(max-width:1024px) {
  .elementor-location-header .e-con:has(.e-n-menu-toggle[aria-expanded="true"]) > .cx-menu-cta {
    display:block!important;position:fixed;left:24px;right:24px;bottom:calc(24px + env(safe-area-inset-bottom));z-index:2147483641;margin:0;
  }
  .elementor-location-header .e-con:has(.e-n-menu-toggle[aria-expanded="true"]) > .cx-menu-cta .elementor-button { width:100%;justify-content:center; }
}
@media(max-width:1024px) and (prefers-reduced-motion:no-preference) {
  .elementor-location-header .e-con:has(.e-n-menu-toggle[aria-expanded="true"]) > .cx-menu-cta { animation:cx-menu-in .45s cubic-bezier(.215,.61,.355,1) both; }
}
/* 24/09/2026: iOS Safari refuses autoplay in Low Power Mode and draws its own play button over background videos
   (large tiles only, which is why some showed it and the thin strips did not). Hide that button so the tile reads as
   a still frame; the video still plays wherever autoplay is allowed. */
.elementor-background-video-hosted::-webkit-media-controls-start-playback-button { display:none!important;-webkit-appearance:none; }
.elementor-background-video-hosted::-webkit-media-controls { display:none!important; }
