/* Sharon AI shared utility classes — reconstructed from captured CSS payloads
   (post-3819 RUCSS variants + products page-inline rules, round-7).
   These classes are used on ~171 pages but shipped on only 3. */

.background-gradient-con{ background: linear-gradient(145deg, #1e3a8a, #000000, #1e3a8a); background-image: linear-gradient(145deg, #1e3a8a, #000000, #1e3a8a) !important;transition: background 0.3s ease; }

.background-gradient-con-h{ background: linear-gradient(145deg, #1e3a8a, #000000, #1e3a8a); background-image: linear-gradient(145deg, #1e3a8a, #000000, #1e3a8a) !important;transition: background 0.3s ease; }
.background-gradient-con-h:hover{ background: #fff !important; }

.black-box-style:hover{ background-color: transparent !important; }
.black-box-style:hover svg path{ stroke: #141414; }
.black-box-style:hover p{ color: var(--e-global-color-text) !important; }
.black-box-style:hover .elementor-icon-box-title{ color: var(--e-global-color-primary) !important; }

/* Round-7: beat Elementor per-element bg rules regardless of sheet order */
.background-gradient-con, .background-gradient-con-h { background-image: linear-gradient(145deg, #1e3a8a, #000000, #1e3a8a) !important; }
.black-box-style:hover { background-color: transparent !important; background-image: none !important; }

/* A11y amendments 2026-10-23 (PA: docs/20261023-PA-a11y-css-fixes.md; evidence: docs/20261023-UIUX-ASSESSMENT.md) */

/* 1. Footer link hover — amended 2026-10-26 (PA: docs/20261026-PA-footer-blue.md). CORRECTION: the footer
      sits on the WHITE page background (no ancestor bg — verified via computed styles); the 2026-10-23
      "ink footer" premise was wrong and the white hover was 1:1 (invisible). New hover #102A56 = client
      logo navy (Sharon-AI-preffered-logo.svg), ≈13:1 on white. Base #646464 = 5.74:1, AA-compliant — the
      #999999 base rule below is beaten by higher-specificity kit rules and unnecessary on white. */
.elementor-location-footer .elementor-icon-list-text{color:#999999 !important}
.elementor-16449 .elementor-element.elementor-element-d402b4e .elementor-icon-list-item:hover .elementor-icon-list-text,
.elementor-16449 .elementor-element.elementor-element-dce6b2d .elementor-icon-list-item:hover .elementor-icon-list-text,
.elementor-16449 .elementor-element.elementor-element-36089a9 .elementor-icon-list-item:hover .elementor-icon-list-text,
.elementor-16449 .elementor-element.elementor-element-0f9f089 .elementor-icon-list-item:hover .elementor-icon-list-text,
.elementor-16449 .elementor-element.elementor-element-44987d2 .elementor-icon-list-item:hover .elementor-icon-list-text,
.elementor-16449 .elementor-element.elementor-element-b3861d6 .elementor-icon-list-item:hover .elementor-icon-list-text,
.elementor-16449 .elementor-element.elementor-element-72d65fd .elementor-icon-list-item:hover .elementor-icon-list-text{color:#102A56 !important}

/* 2. Keyboard focus visibility — post-25954.css:371 strips outline with !important on the mega-menu
      tab buttons; restore on :focus-visible (higher specificity), plus a keyboard-only global outline. */
.sharonai-mega-menu-tabs .e-n-tabs .e-n-tabs-heading button:focus-visible,
.sharon-ai-menu-explore-imgbox .elementor-image-box-wrapper:focus-visible{outline:2px solid #1E73BE !important;outline-offset:2px !important}
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,[tabindex]:focus-visible{outline:2px solid #1E73BE !important;outline-offset:2px !important}

/* 3. Carousel dot hit-areas — keep the approved 24x2px look (C-D2), add an invisible 24x24 target
      (WCAG 2.5.8). Pure ::before overlay; no visual change. */
.dira-carousel-dots button,.sharon-ai-slider .swiper-pagination-bullet{position:relative !important}
.dira-carousel-dots button::before,.sharon-ai-slider .swiper-pagination-bullet::before{content:'';position:absolute;left:0;right:0;top:-11px;bottom:-11px}

/* ===== R-261026-r1 client feedback fixes (2026-10-26, threads #10-#21) ===== */

/* B0 button hovers: solid fill hollows to outline; :focus mirrors :hover (transition all .3s inherited) */
/* on-light primary (#12 #13 #17): transparent fill, ink text, 1px ink ring (inset shadow = no layout shift).
   body-prefix + !important: the page-kit rest rules (.elementor-<id> … <wid> .elementor-button) are (0,4,0)
   and were beating these hovers on cloud-gpu/private-cloud (r5 #12/#16 "not fixed"). */
body .elementor-element.elementor-element-9e943ab .elementor-button:hover,
body .elementor-element.elementor-element-9e943ab .elementor-button:focus,
body #cta-explore-gpu-6:hover,
body #cta-explore-gpu-6:focus,
body .elementor-element.elementor-element-f62fcd0 .elementor-button:hover,
body .elementor-element.elementor-element-f62fcd0 .elementor-button:focus {
  background: transparent !important;
  color: #0D0800 !important;
  box-shadow: inset 0 0 0 1px #0D0800 !important;
}

/* #16 on-dark primary (white pill on dark hero): transparent fill, white text, white ring */
body .elementor-element.elementor-element-2dac619 .elementor-button:hover,
body .elementor-element.elementor-element-2dac619 .elementor-button:focus {
  background: transparent !important;
  color: #FFFFFF !important;
  box-shadow: inset 0 0 0 1px #FFFFFF !important;
}

/* #10 B7 orb pill (f19ade6, white section): user explicit — hover = BLACK outline + BLACK text
   (the white ring/text was invisible on the white section). svg orb hidden so it disappears cleanly. */
body .elementor-element.elementor-element-f19ade6 .elementor-button:hover,
body .elementor-element.elementor-element-f19ade6 .elementor-button:focus {
  background-color: transparent !important;
  color: #0D0800 !important;
  box-shadow: inset 0 0 0 1px #0D0800 !important;
}
body .elementor-element.elementor-element-f19ade6 .elementor-button:hover svg,
body .elementor-element.elementor-element-f19ade6 .elementor-button:focus svg { opacity: 0 !important; }

/* #11 pill height: approved B0 anatomy (20261016 spec) = pad 14/20 + lh 22 + border 1px -> 52px,
   matching every design-layer pill. The r1 lh24 (pristine 54px) was the wrong target — user compares
   against the approved pills. border-box so the ghost's 1px border is included. */
body .button_gradient a.elementor-button {
  height: 52px !important;
  box-sizing: border-box !important;
  line-height: 22px !important;
  padding: 14px 20px !important;
  font-weight: 500 !important;
  letter-spacing: -0.2px !important;
}

/* #11 restore global button_gradient rest rule (debloat dropped it) */
.button_gradient a.elementor-button {
  background: linear-gradient(145deg, #1e3a8a, #000000, #1e3a8a);
  color: #fff;
  padding: 15px 20px;
  border-radius: 50px;
  border: none;
  font-size: 16px;
  font-weight: bold;
  transition: background .3s ease;
}

/* #14 restore solve-real-box card gradients (ai-cloud; debloat dropped the rule; no motion layer in shipped markup).
   Selector must outrank the static lazyload kill rule (inline .e-con.e-parent:nth-of-type(n+3)…
   * { background-image:none !important } = (0,5,0)) because the JS that would add .e-lazyloaded is stripped. */
main .page-content .elementor-18447 .e-con.solve-real-box.elementor-element {
  background-color: transparent !important;
  background-image: linear-gradient(180deg, #101A31 0%, #0C0D0D 100%) !important;
  border-radius: 16px;
  box-shadow: 5px 10px 15px 0 rgba(0, 0, 0, .349);
  backdrop-filter: blur(10px);
}

/* #20 restore the sticky frameworks-nav bar (pristine post-7721 rule the debloat lost: sticky + z10 + bg).
   Without it the later #explore-sec section paints over the nav buttons and hover/click never reach them. */
.industries-frameworks-nav-section {
  position: sticky !important;
  top: 50px !important;
  z-index: 10 !important;
  background: #F6F6F6 !important;
}

/* #20 restore industries nav button hover (pristine rule) */
.btn-hover-gradient a:hover,
.industries-frameworks-nav-section .sharon-ai-btn a.active {
  background: linear-gradient(145deg, #1e3a8a, #000000, #1e3a8a);
  transition: background 0.3s ease;
}

/* #19 restore vertical-carousel strips (fade overlay + scroll; debloat dropped the rules).
   custom-frontend's .e-con::before{content:var(--background-overlay)} loads AFTER this sheet and
   kills the pseudo at equal specificity — hence the .e-con-qualified selector; body-prefix +
   !important beat the per-element kit heights. */
body .vertical-carousel { height: 657px !important; overflow: hidden !important; position: relative; }
.e-con.vertical-carousel-box::before {
  content: '' !important;
  position: absolute;
  left: 0; right: 0;
  height: 100%; width: 100%;
  z-index: 2;
  pointer-events: none;
  background: linear-gradient(180deg, #F6F6F6 0%, rgba(246,246,246,.85) 3.85%, rgba(246,246,246,0) 50.48%, rgba(246,246,246,.85) 95.67%, #F6F6F6 100%) !important;
}
body .vertical-carousel .carousel-track { animation: scroll-up 20s linear infinite !important; }
body .vertical-carousel.reverse .carousel-track { animation: scroll-down 20s linear infinite !important; }
.carousel-track .carousel-track-inner > .elementor-element { flex: 0 0 auto; width: 150px; padding: 16px; }
.carousel-track .carousel-track-inner > .elementor-element img { height: 100px !important; }
@keyframes scroll-up { 0% { transform: translateY(0); } 100% { transform: translateY(-50%); } }
@keyframes scroll-down { 0% { transform: translateY(-50%); } 100% { transform: translateY(0); } }

/* #21 supercluster hero: full-bleed AND flush to the very top (header pill floats over the image);
   body-prefix + !important beat the design layer's padding, which loads last and wins all ties. */
body .elementor-element-a1b6798 { max-width: 100% !important; margin-top: -90px !important; }
body .elementor-element-a1b6798 > .e-con-inner { max-width: 100% !important; padding: 0 !important; }
/* #24 follow-up (user: text block must align with the rest of the page after the bg update):
   keep the full-bleed hero but restore the boxed 1200px content alignment — original geometry
   was inner 1200 @x120 + 16px pad (text col x=136) and y=190 (90px header + 100px). */
body .elementor-element-0c0aae6 { padding: 190px max(16px, calc((100% - 1200px) / 2 + 16px)) 200px !important; }
.elementor-location-header { position: relative; z-index: 50; }

/* #15/#18 A1-A6 content accordions (native <details>; affordance + styling for the two page widgets) */
.elementor-element-f6e4747 .e-n-accordion-item,
.elementor-element-9addcef .e-n-accordion-item {
  background: #fff;
  border-radius: 16px;
  overflow: hidden;
  transition: background .3s;
}
.elementor-element-f6e4747 .e-n-accordion-item:hover,
.elementor-element-9addcef .e-n-accordion-item:hover { background: #F7F7F7; }
.elementor-element-f6e4747 .e-n-accordion-item-title,
.elementor-element-9addcef .e-n-accordion-item-title {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 16px 20px;
  cursor: pointer;
  list-style: none;
}
.elementor-element-f6e4747 .e-n-accordion-item-title::-webkit-details-marker,
.elementor-element-9addcef .e-n-accordion-item-title::-webkit-details-marker { display: none; }
.elementor-element-f6e4747 .e-n-accordion-item-title-text,
.elementor-element-9addcef .e-n-accordion-item-title-text {
  font-family: Inter, Karla, system-ui, sans-serif;
  font-size: 20px;
  font-weight: 500;
  line-height: 30px;
  letter-spacing: -.5px;
  color: #0D0800;
}
.elementor-element-f6e4747 .e-n-accordion-item-title::after,
.elementor-element-9addcef .e-n-accordion-item-title::after {
  content: "";
  width: 24px;
  height: 24px;
  margin-left: auto;
  flex: 0 0 auto;
  background: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%230D0800' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='m6 9 6 6 6-6'/></svg>") center / contain no-repeat;
  transition: transform .3s;
}
.elementor-element-f6e4747 details[open] > summary.e-n-accordion-item-title::after,
.elementor-element-9addcef details[open] > summary.e-n-accordion-item-title::after { transform: rotate(180deg); }

/* ===== R-261026-r3 fixes (threads #22-#26) ===== */

/* #26 media-and-news: the UE Remote-Tabs JS was stripped by the debloat, and the page's own
   inline CSS keeps every .panes panel display:none — so the Overview / Press Releases /
   Presentations / Blog sections never rendered. Reveal the real sections (the exact-duplicate
   PR panel item2 and the empty stub panels item5/6/7 stay hidden). Page-scoped by widget id. */
/* R5 #26: pane visibility is owned by the page script (one at a time, inline styles);
   the r3 blanket !important reveal is gone — it would out-rank the script's display:none. */

/* #23 investors: the ACTIVE tab pill (dira-pill-active) inherits the design layer's generic
   pill hover (`.e-n-tabs-heading .e-n-tab-title:not(.e-active):hover` — (0,4,0)+!important),
   which turns its white text invisible on white. Out-rank it for the active pill. */
body .e-n-tabs-heading .e-n-tab-title.dira-pill-active:hover,
body .e-n-tabs-heading .e-n-tab-title.dira-pill-active:focus,
body .dira-pill-active:hover,
body .dira-pill-active:focus { background-color: #1E73BE !important; color: #FFFFFF !important; }

/* ===== R-261026-r4 fixes (threads #27-#35) ===== */
/* #27 expandable spec cards (product pages) — cursor hint; expand css is per-page inline */
.card-box { cursor: pointer; }

/* #28 nvidia-l40s-gpu "Contact Sales" (506e44de): dark gradient rest, black fill + white text on hover */
body .elementor-element-506e44de .elementor-button {
  background-color: transparent !important;
  background-image: linear-gradient(145deg, #1e3a8a, #000000, #1e3a8a) !important;
  color: #FFFFFF !important;
}
body .elementor-element-506e44de .elementor-button:hover,
body .elementor-element-506e44de .elementor-button:focus {
  background-color: #000000 !important;
  background-image: none !important;
  color: #FFFFFF !important;
}

/* #30 /solutions/ "Talk to Our Experts" (664943f): ghost rest (ink text + ring), ink fill hover */
body .elementor-element-664943f .elementor-button {
  background-color: transparent !important;
  background-image: none !important;
  color: #0D0800 !important;
  box-shadow: inset 0 0 0 1px #0D0800;
}
body .elementor-element-664943f .elementor-button:hover,
body .elementor-element-664943f .elementor-button:focus {
  background-color: #0D0800 !important;
  color: #FFFFFF !important;
}

/* #31 /about/ hero background (sharon-1.mp4 is HEVC — paints nothing in Chrome/Firefox) */
body .elementor-element-d4612e2 {
  background-image: url("/media/2026/01/About-us-bg.webp") !important;
  background-size: cover !important;
  background-position: center !important;
}

/* #32 careers apply-now modal (overlay + panel + close; body scroll lock) */
.dira-apply-modal { position: fixed; inset: 0; z-index: 9999; display: flex; align-items: center; justify-content: center; padding: 24px; }
.dira-apply-modal[hidden] { display: none; }
.dira-apply-modal__backdrop { position: absolute; inset: 0; background: rgba(13, 8, 0, .55); }
.dira-apply-modal__panel { position: relative; z-index: 1; background: #FFFFFF; border-radius: 16px; max-width: 560px; width: 100%; max-height: calc(100vh - 48px); overflow: auto; padding: 32px; box-shadow: 0 20px 60px rgba(0, 0, 0, .35); }
.dira-apply-modal__close { position: absolute; top: 12px; right: 12px; width: 36px; height: 36px; border: 1px solid rgba(13, 8, 0, .2); border-radius: 50%; background: #FFFFFF; color: #0D0800; font-size: 20px; line-height: 1; cursor: pointer; z-index: 2; }
body.dira-modal-open { overflow: hidden; }

/* ===== R-261026-r5 fixes (threads #10-#12,#16,#22,#37) ===== */
/* #22 investors tab pills evenly spaced across the heading row (kit uses jc:left + 4px gap) */
body .e-n-tabs-heading { justify-content: space-between !important; }

/* #37 contact modal white strip below the HubSpot form's left image: the box had a fixed
   85%/90% height, taller than the form — let it size to the form instead. */
body .hubspot-popup-box { height: auto !important; max-height: 90vh !important; overflow: auto !important; }
/* #11 rejected follow-up: "Learn More!" (2f9c862) renders 56px via lh 26 — pill anatomy 52px */
body .elementor-element-2f9c862 .elementor-button { height: 52px !important; box-sizing: border-box !important; line-height: 22px !important; }

/* ===== R-261026-r6 fixes ===== */
/* #37 v2: white strip below the HubSpot form iframe — the pristine theme rule pads the
   popup content box 20px unconditionally, so the iframe ends 20px above the modal bottom. */
body .hubspot-popup-content { padding-bottom: 0 !important; }

/* ===== R-261026-r7 fixes (threads #13 #28 #31 #37 #40 #42-#47 #49) ===== */
/* #28/#13: svg icon rows are 32px tall inside the 52px pill's 24px content box and flow
   from padding-top, so text/circle sit ~5px low ("extra space above"). Centre the row. */
body .button_gradient a.elementor-button { display: inline-flex !important; align-items: center !important; }
/* #31 v2: client asked for the T&C hero image instead (private-cloud banner, 156KB webp) */
body .elementor-element-d4612e2 { background-image: url("/media/2025/10/private-cloud-banner.webp") !important; }
/* #37 v3: modal scrollbar — the HubSpot iframe is inline (10px descender gap) and the
   pristine content rule forces overflow-y:scroll; block-level iframe + overflow auto. */
body .hubspot-popup-content iframe { display: block !important; }
body .hubspot-popup-content { overflow-y: auto !important; }
/* #40 (r8 correction): the "Video Libary" h2 lives in heading widget 14d3db1d —
   the r7 rule wrongly hid 3339330b, which is the video-library TEMPLATE widget
   next to it (videos vanished, title stayed). Hide only the h2; keep the
   span#presentations anchor inside the widget for the tab pill nav. */
body .elementor-element-14d3db1d h2 { display: none !important; }
/* #43/#44: private-cloud Contact Us pills lost their hover to the gradient !important
   rest rule — restore the approved on-light hover (transparent + ink + ring). */
body .elementor-element-1559820 .elementor-button:hover, body .elementor-element-1559820 .elementor-button:focus,
body a#cta-speed-explore-8:hover, body a#cta-speed-explore-8:focus { background-color: transparent !important; background-image: none !important; color: #0D0800 !important; box-shadow: inset 0 0 0 1px #0D0800 !important; }
/* #42: ink arrows invisible on the dark gradient card — white circles, ink chevron */
body .elementor-element-c34de93 .dira-ncar-arrow { background-color: #FFFFFF !important; color: #0D0800 !important; }
/* #45/#46/#47: products nested-carousels — the pristine svg prev/next are dead (JS
   stripped) on EVERY .sharon-ai-slider: hide sitewide (r8: 71b9826c was missed).
   The helper's transform pager already drives these sliders; ink arrows are
   invisible on the dark cards — white circles (r8 adds the 71b9826c hero pager). */
body .sharon-ai-slider .elementor-swiper-button { display: none !important; }
body .elementor-element-37b19542 .dira-ncar-arrow, body .elementor-element-2dcd658a .dira-ncar-arrow, body .elementor-element-71b9826c .dira-ncar-arrow { background-color: #FFFFFF !important; color: #0D0800 !important; }
/* #49 rule RETIRED 2026-10-28 (menu-parity R13): live sharonai.com shows the
   header carets at desktop and flips them on open — hiding them was the user's
   "nav is missing the chevrons" complaint. */

/* ---- menu-revert (2026-10-28): client asked for the header menu/dropdowns to
   return to the morning (pre-R9) state — R9 nested-tab wiring + pane styling
   and the R10 mobile drawer are reverted on the pages; feedback threads #73,
   #78 and #80 are on hold in the tracker until the menu is settled. ---- */
/* #67: ai-cloud c34de93 — reviewer wants dots only, no arrows (kept: not menu) */
body .elementor-element-c34de93 .dira-ncar-arrow { display: none !important; }
/* #68/#76: feature check icon-box svgs scaled to 52px by css — restore natural 24px */
body .elementor-element-dd36f60 .elementor-icon svg, body .elementor-element-734717f .elementor-icon svg, body .elementor-element-180ad76 .elementor-icon svg,
body .elementor-element-2dfb3f7 .elementor-icon svg, body .elementor-element-639ca83 .elementor-icon svg, body .elementor-element-64a940e .elementor-icon svg,
body .elementor-element-90a15d4 .elementor-icon svg, body .elementor-element-b766d23 .elementor-icon svg, body .elementor-element-c311571 .elementor-icon svg,
body .elementor-element-d56f8e3 .elementor-icon svg, body .elementor-element-d70d347 .elementor-icon svg, body .elementor-element-e2e5640 .elementor-icon svg,
body .elementor-element-f0a6659 .elementor-icon svg { width: 24px !important; height: 24px !important; }
/* #78c2 rule retired 2026-10-28 (menu revert). */

/* R9 #74 — supercluster hero (0c0aae6): the 560x720 banner must not stretch across
   the full hero (cover = heavy upscale, reviewer: "help with resolution"). Pin it to
   the right half at contain. Sheet !important also means the §9c bg rescue never
   sees auto/0% 0% on this element, so it cannot stamp cover/center over it. */
body .elementor-element-0c0aae6 { background-size: contain !important; background-position: right center !important; background-repeat: no-repeat !important; }

/* #74 hero rule kept 2026-10-28 (page content, not menu). */

/* ---- R13 (2026-10-28) — menu parity with live sharonai.com ---- */
/* Mobile/tablet (<=1024px): canonical widget reveal needs
   data-layout="dropdown" (diraMobileMenu stamps it) + aria-expanded flip.
   This is the belt-and-braces fallback reveal; desktop (>=1025px) untouched. */
@media screen and (max-width: 1024px) {
  body .sharonai-header .e-n-menu .e-n-menu-toggle[aria-expanded="true"] + .e-n-menu-wrapper { --n-menu-wrapper-display: flex !important; }
  /* Drawer pin (measured R10): backdrop-filter: blur(20px) on
     .sharonai-mega-menu-inner/.e-con-inner makes those the fixed-position
     containing block, so the post-25954 width:100vw heading overlay overflowed
     and sat at its static x. Pin to the header pills inner box instead. */
  body .sharonai-header .e-n-menu-wrapper > ul.e-n-menu-heading { left: 0 !important; right: auto !important; width: 100% !important; }
  /* In-flow accordion panes: the helper css base makes every
     .e-n-menu-content position:absolute (desktop overlay pattern); inside the
     mobile drawer the expanded pane must flow inline (measured R10: no
     overlap, siblings pushed). */
  body .sharonai-header .e-n-menu-item.dira-open > .e-n-menu-content { position: static !important; background: transparent !important; box-shadow: none !important; }
}

/* R13d (2026-10-28): mega-menu right-panel icon-box svgs render 52px (scaled by
   css). Live measures 24px. Restores the #78c2 fix retired with the
   R12 menu revert. */
body .sharonai-header .elementor-icon-box-icon .elementor-icon svg { width: 24px !important; height: 24px !important; }

/* ---- R14 (2026-10-28) ---- */
/* Mega-menu left columns spread full-height: the #22 investor-page fix
   (`body .e-n-tabs-heading { justify-content: space-between !important; }`)
   was sitewide and hit the header's nested tab headings. Live measures the
   header columns as a compact top stack (flex-start, 4px gap). Scope the
   header back to flex-start; the investor page keeps its even spacing. */
body .sharonai-header .e-n-tabs-heading { justify-content: flex-start !important; }

/* ---- R17 (2026-10-28) ---- */
/* /products/ hero slider + two card carousels: on the LIVE site these widgets'
   Elementor n-carousel swiper NEVER initialises (static first state, inert
   arrows). Our stripped build's generic diraPager translates their wrappers
   into frames whose slides fall outside the wrapper's overflow:hidden clip
   box — every rotated frame renders blank (client: "H100 NVL rotating out and
   not being replaced", "carousel only shows first 3 cards, others blank").
   Parity fix: freeze translation on exactly these three widgets — the helper
   keeps writing inline transforms but !important here wins. Other sliders
   (ai-cloud, ai-studio, aus-home) keep rotating — their slides are laid out
   for it. Mirrored in HELPER_JS as a pager-init skip guard. */
/* (R23) 71b9826c moved to the diraR18 rotator (visibility mode) — client wants
   the hero cycling; freeze stays for the two bottom card carousels. */
body .elementor-element-37b19542 .swiper-wrapper,
body .elementor-element-2dcd658a .swiper-wrapper { transform: none !important; }

/* ---- R20 (2026-10-28) ---- */
/* Homepage 'Real-World Problems' custom carousel: the live site runs this widget
   in SCROLL mode (track overflow-x:auto + smooth per-card scroll, seamless wrap).
   Our transform path rendered statically. Force scroll mode at every viewport and
   hide the scrollbar (live shows none); the helper's section-3 pager then applies
   scrollTo smooth steps with clone-window wrap (patched same round). */
body .custom-carousel-track { overflow-x: auto !important; scrollbar-width: none; }
body .custom-carousel-track::-webkit-scrollbar { display: none; }

/* ---- R21a (2026-10-28) ---- */
/* Real-World Problems carousel: ours' 24px gap made 4 cards 1240px wide against
   the 1200px viewport — 4th card clipped 40px at the right. Live's gap is 10px
   (4×292 + 3×10 = 1198 ≤ 1200). Match live. */
body .custom-carousel-track { gap: 10px !important; }

/* R24 (2026-10-28) — investors tab/pill scroll landing was parked under the
   fixed 80px nav (header inner fixed at top 49px, z 999): §16 scrollIntoView has no
   offset, so the clicked section's title lands at viewport top and the pill strip
   flows into the nav band. Land 160px lower → clear gap below the nav. */
body.page-id-1216 main .e-n-tab-title { scroll-margin-top: 190px !important; }

/* R25 (2026-10-28) — PR pager scroll: keep the press-release grid clearing the
   fixed nav + pill strip when a page click smooth-scrolls it into view.
   (2026-10-28 R26: #dira-pr-grid → #pr-results — module now replaced in place.) */
body.page-id-1216 #pr-results { scroll-margin-top: 230px !important; }

/* R24c (supersedes R24b) — the pill strip (963a498, the investor sub-nav) must
   ride IN-FLOW inside the fixed pill header, beside the logo row (live geometry:
   relative, in .investor-menu-inner > .e-con-inner). R24b's absolute pin threw it
   below the header band entirely; in-flow restores the live layout. */
body.page-id-1216 .elementor-element-963a498 {
  position: relative !important; top: auto !important;
  left: 0 !important; right: 0 !important; margin-inline: auto !important;
}

/* R28: nav mega-menu PANEL offset (client 2026-10-29 — reverts R27): the open
   sub-menu panel (white pointer to e.g. "Solutions") sat flush up against the nav
   pill labels. Push the panel down 14px; margin works atop the kit's absolute
   top:21px. ::before bridge keeps hover continuity across the new gap.
   Desktop bar only — the mobile overlay reuses .e-n-menu-content. */
@media(min-width:1025px){
  .e-n-menu-content{margin-top:14px !important}
  .e-n-menu-content::before{content:"";position:absolute;top:-14px;left:0;right:0;height:14px}
}
