/* Start custom CSS */@import url('https://fonts.googleapis.com/css2?family=Fredoka:wght@300..700&family=Google+Sans:wght@400..700&family=Noto+Sans+Hebrew:wght@700&display=swap');
/* isr-design-system foundation (ported from mernstein.local mu-plugin) */
/* ISR Global Styles — design system for mernstein.local
   Pure black & white. Titles: Fredoka. Body: Google Sans. RTL-adjusted. */

:root[dir="rtl"], [dir="rtl"] { --isr-start: right; --isr-end: left; }

/* ===== ISR Global Styles ===== */

:root {
/* spacing utilities */

--s8: 0.5rem;
--s12: 0.75rem;
--s16: 1rem;
--s20: 1.25rem;
--s24: 1.5rem;
--s32: 2rem;
--s40: 2.5rem;
--s48: 3rem;
--s56: 3.5rem;
--s64: 4rem;
--s72: 4.5rem;
--s80: 5rem;
--s88: 5.5rem;
--s96: 6rem;
--s104: 6.5rem;
--s112: 7rem;
--s120: 7.5rem;
--s128: 8rem;
--s144: 9rem;
--s160: 10rem;

/* spacing styles */

--sm100: var(--s12);
--sm200: var(--s16);
--sm300: var(--s24);
--sm400: var(--s32);
--sm500: var(--s40);
--md100: var(--s48);
--md200: var(--s56);
--md300: var(--s64);
--md400: var(--s88);
--lg100: var(--s96);
--lg200: var(--s112);
--lg300: var(--s144);
--lg400: var(--s160);
}


@media (max-width: 1024px) {
:root {
/* spacing styles */

--sm100: var(--s8);
--sm200: var(--s12);
--sm300: var(--s16);
--sm400: var(--s24);
--sm500: var(--s32);
--md100: var(--s40);
--md200: var(--s48);
--md300: var(--s56);
--md400: var(--s72);
--lg100: var(--s88);
--lg200: var(--s104);
--lg300: var(--s120);
--lg400: var(--s128);
}
}

@media (max-width: 767px) {
:root {
    
/* spacing styles */

--sm400: var(--s20);
--sm500: var(--s24);
--md100: var(--s32);
--md200: var(--s40);
--md400: var(--s64);
--lg100: var(--s80);
--lg200: var(--s96);
--lg300: var(--s104);
--lg400: var(--s112);
}
}


/* || Dark Mode Styles  */


.dark-mode * {
    --Blank-Canvas-White: #000;
    --Kernel-Black: #fff;
	--Grey-800: var(--Grey-200)
}

.dark-mode .isr-btn-wrapper:is(:hover, :focus-visible) {
    --Blank-Canvas-White: #fff;
}

.dark-mode .isr-icon-list-item svg {
	filter: invert(1)
}


/* || Layout Styles  */


/* Exempts .isr-header: this reset assumes the header block delegates its
   padding to an inner container, but ours authors its own. Loaded after the
   element's styles at equal specificity, it was winning and collapsing the
   bar to exactly the logo's height. */
.elementor-location-header > .e-div-block-base:not(.isr-header) {
	padding: 0
}

.isr-grid {
    --col1: 1;
    --col2: 2;
    --col3: 3;
    --col4: 4;
	--col5: 5;
	--col6: 6;
    --isr-grid-col: var(--col2)
}

.isr-grid[data-col-desk="3"] { --isr-grid-col: var(--col3) }

.isr-grid[data-col-desk="4"] { --isr-grid-col: var(--col4) }

.isr-grid[data-col-desk="5"] { --isr-grid-col: var(--col5) }
	
.isr-grid[data-col-desk="6"] { --isr-grid-col: var(--col6) }

.isr-grid-full.isr-grid {
	padding-block: 0
}

.elementor .isr-wrapper .isr-grid {
     display: grid;
     grid-template-columns: repeat(var(--isr-grid-col), 1fr)
}

.isr-grid-item-span {
	grid-column: 1 / -1;
}

@media (max-width: 1024px) {
.isr-grid { --isr-grid-col: var(--col1) }
.isr-grid[data-col-tablet="1"] { --isr-grid-col: var(--col1) }
.isr-grid[data-col-tablet="2"] { --isr-grid-col: var(--col2) }
.isr-grid[data-col-tablet="3"] { --isr-grid-col: var(--col3) }
.isr-grid[data-col-tablet="4"] { --isr-grid-col: var(--col4) }
.isr-grid[data-col-tablet="5"] { --isr-grid-col: var(--col5) }
.isr-grid[data-col-tablet="6"] { --isr-grid-col: var(--col6) }
}

@media (max-width: 767px) {
.isr-grid[data-col-mobile="1"] { --isr-grid-col: var(--col1) }
.isr-grid[data-col-mobile="2"] { --isr-grid-col: var(--col2) }
.isr-grid[data-col-mobile="3"] { --isr-grid-col: var(--col3) }
.isr-grid[data-col-mobile="4"] { --isr-grid-col: var(--col4) }
.isr-grid[data-col-mobile="5"] { --isr-grid-col: var(--col5) }
}


.isr-content-grid .isr-content-wrapper {
	justify-self: center;
	width: min(35rem, 100%);
}

@media (min-width: 768px) {
.isr-content-grid-reverse > .isr-content-wrapper {
	order: -99999
}		
}

/* ISR Grid — Ratio Columns (2-1, 1-2) per breakpoint */
	
.elementor .isr-wrapper .isr-grid[data-col-ratio-desk="2-1"] { grid-template-columns: 2fr 1fr }
.elementor .isr-wrapper .isr-grid[data-col-ratio-desk="1-2"] { grid-template-columns: 1fr 2fr }
.elementor .isr-wrapper .isr-grid[data-col-ratio-desk="auto-1"] { grid-template-columns: auto 1fr }
.elementor .isr-wrapper .isr-grid[data-col-ratio-desk="1-auto"] { grid-template-columns: 1fr auto }

@media (max-width: 1024px) {
    .elementor .isr-wrapper .isr-grid[data-col-ratio-tablet="2-1"] { grid-template-columns: 2fr 1fr }
    .elementor .isr-wrapper .isr-grid[data-col-ratio-tablet="1-2"] { grid-template-columns: 1fr 2fr }
    .elementor .isr-wrapper .isr-grid[data-col-ratio-tablet="auto-1"] { grid-template-columns: auto 1fr }
    .elementor .isr-wrapper .isr-grid[data-col-ratio-tablet="1-auto"] { grid-template-columns: 1fr auto }
    /* No tablet ratio defined — collapse to single column */
    .elementor .isr-wrapper .isr-grid[data-col-ratio-desk]:not([data-col-ratio-tablet]) { grid-template-columns: 1fr }
}

@media (max-width: 767px) {
    .elementor .isr-wrapper .isr-grid[data-col-ratio-mobile="2-1"] { grid-template-columns: 2fr 1fr }
    .elementor .isr-wrapper .isr-grid[data-col-ratio-mobile="1-2"] { grid-template-columns: 1fr 2fr }
    .elementor .isr-wrapper .isr-grid[data-col-ratio-mobile="auto-1"] { grid-template-columns: auto 1fr }
    .elementor .isr-wrapper .isr-grid[data-col-ratio-mobile="1-auto"] { grid-template-columns: 1fr auto }
    /* No mobile ratio — collapse to single column */
    .elementor .isr-wrapper .isr-grid[data-col-ratio-tablet]:not([data-col-ratio-mobile]) { grid-template-columns: 1fr }
}


/* || Typography Styles  */


:root {
}

.isr-wrapper {
	-webkit-font-smoothing: antialiased;
}

.e-paragraph-base,
.e-heading-base {
	text-wrap: pretty
}


.e-heading-base .font-pixel,
.elementor-heading-title .font-pixel {
    font-feature-settings: "ss14";
}

.e-paragraph-base p:last-child {
	margin-block-end: 0
}


/* || Button Styles  */


button:focus-visible, 
a:focus-visible {
	/* outline-style must be stated: the UA default for :focus-visible is
	   outline-style:auto, and Chrome ignores outline-color on an auto
	   outline, painting its own blue ring instead. */
	outline-style: solid;
	outline-width: 0.125rem;
	outline-offset: 0.125rem;
    outline-color: var(--Kernel-Black);
}

.isr-btn-icon-play:after {
  content: '';
  display: inline-block;
  width: 1.334em;
  height: 1.334em;
  margin-inline: 0.44444em -.15em;
  background-color: currentColor;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24'%3E%3Cpath stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M5.25 5.653c0-.856.917-1.398 1.667-.986l11.54 6.347a1.125 1.125 0 0 1 0 1.972l-11.54 6.347a1.125 1.125 0 0 1-1.667-.986z'/%3E%3C/svg%3E") no-repeat center / contain;
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24'%3E%3Cpath stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M5.25 5.653c0-.856.917-1.398 1.667-.986l11.54 6.347a1.125 1.125 0 0 1 0 1.972l-11.54 6.347a1.125 1.125 0 0 1-1.667-.986z'/%3E%3C/svg%3E") no-repeat center / contain;
}

.isr-link-wrapper:before {
    content: '';
    display: inline-block;
	width: 1.1115em;
    height: 1.1115em;
    margin-inline-start: -1.5555em;
    margin-inline-end: 0.444em;
    background-color: currentColor;
    mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3E%3Cpath fill='%23000' fill-rule='evenodd' d='M2.25 10.071a.75.75 0 0 1 .75-.75h12.332l-4.629-4.628a.75.75 0 0 1 1.06-1.06l5.91 5.908a.75.75 0 0 1 0 1.06l-5.91 5.909a.75.75 0 1 1-1.06-1.06l4.629-4.629H3a.75.75 0 0 1-.75-.75Z' clip-rule='evenodd'/%3E%3C/svg%3E") no-repeat center / contain;
    -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3E%3Cpath fill='%23000' fill-rule='evenodd' d='M2.25 10.071a.75.75 0 0 1 .75-.75h12.332l-4.629-4.628a.75.75 0 0 1 1.06-1.06l5.91 5.908a.75.75 0 0 1 0 1.06l-5.91 5.909a.75.75 0 1 1-1.06-1.06l4.629-4.629H3a.75.75 0 0 1-.75-.75Z' clip-rule='evenodd'/%3E%3C/svg%3E") no-repeat center / contain;
    transition: .3s ease;
    pointer-events: none;
}

.isr-link-wrapper:is(:hover, :focus-visible):before {
    margin-inline-start: 0;
}


.e-paragraph-base a {
    color: var(--Kernel-Black);
	font-weight: 500;
	letter-spacing: 0;
	text-decoration: none;
	background-image: linear-gradient(currentColor 0 0);
	background-position: bottom var(--isr-start, left);
	background-repeat: no-repeat;
	background-size: var(--p, 100%) 0.0625em;
	transition: background-size .3s linear !important;
}

.e-paragraph-base a:is(:hover, :focus-visible) {
    --p: 0%;
    background-position: bottom var(--isr-end, right)
}


/* || ISR UI Elements  */


.isr-video .elementor-custom-embed-play,
.isr-video-control .elementor-icon-wrapper {
    display: flex
}

.isr-video .elementor-custom-embed-play svg {
    filter: none;
    opacity: 1;
    width: 7rem;
    height: 7rem 
}

.isr-video .elementor-custom-embed-play circle,
.isr-video-control circle {
    transition: all .2s ease-in-out
}

.isr-video .elementor-custom-embed-play svg .pause, 
.isr-video-control svg .play,
.isr-video-control.pause svg .pause {
    opacity: 0
}

.isr-video .elementor-custom-embed-image-overlay:is(:hover, :focus-within) circle,
.isr-video-control:is(:hover, :focus-within) circle {
    fill-opacity: 0.3;
}

.isr-video-control {
	cursor: pointer
}

.isr-video-control.pause svg .play {
    opacity: 1
}

@media (max-width: 1024px) {
.isr-video .elementor-custom-embed-play svg {
    width: 5rem;
    height: 5rem 
}
}

@media (max-width: 767px) {
.isr-video .elementor-custom-embed-play svg {
    width: 4rem;
    height: 4rem;
}
}


/* || ISR Carousels  */


 .isr-carousel {
     --carousel-slides: var(--e-n-carousel-swiper-slides-to-display);
 }
 
  .isr-carousel > .elementor-widget-container {
      position: relative
  }
 
.isr-carousel .e-n-carousel {
    overflow: visible;
}

.isr-carousel .elementor-swiper-button {
    opacity: 1 !important;
    z-index: 2
}

.isr-carousel .elementor-swiper-button :is(circle, path) {
    transition: all .2s ease-in-out
}

.isr-carousel .elementor-swiper-button:is(:hover, :focus-visible) circle.fill {
    fill-opacity: 1;
}

.isr-carousel .elementor-swiper-button:is(:hover, :focus-visible) path {
    fill: #fff;
}

.isr-carousel .elementor-swiper-button-prev svg {
    transform: rotate(180deg)
}

.isr-carousel .swiper-button-disabled {
    pointer-events: none;
}

.isr-carousel .elementor-swiper-button circle.fill {
    fill-opacity: 0;
}
	
.isr-wrapper.dark-mode .isr-carousel .elementor-swiper-button path {
    fill: #fff;
}

.isr-wrapper.dark-mode .isr-carousel .elementor-swiper-button circle {
    stroke: #fff;
    stroke-opacity: 0.2
}
	
.isr-carousel .swiper-button-disabled path {
    fill-opacity: 0.4;
}

.isr-carousel .elementor-swiper-button:not(.swiper-button-disabled) circle.stroke {
		stroke-opacity: 1
}

.isr-wrapper.dark-mode .isr-carousel .elementor-swiper-button[aria-disabled="false"] circle.fill  {
    fill: #fff;
    stroke-opacity: 0;
}

.isr-wrapper.dark-mode .isr-carousel .elementor-swiper-button:is(:hover, :focus-visible) circle.fill {
    fill-opacity: 1;
    fill: #fff;
}

.isr-wrapper.dark-mode .isr-carousel .elementor-swiper-button:is(:hover, :focus-visible) path {
    fill: #000;
}

.isr-wrapper.dark-mode .swiper-pagination-fraction {
	color: #fff
}

@media (min-width: 1025px) {
.isr-carousel--tablet .elementor-swiper-button {
    display: none !important;
}    
}

@media (min-width: 768px) and (max-width: 1024px) {
.isr-wrapper .isr-carousel.isr-carousel--gap-sm:not(.isr-carousel-cards) {
    --carousel-gap: var(--md200);
}
}

@media (min-width: 768px) {

.isr-carousel {
	--carousel-gap: var(--sm500);	
}
	
.isr-carousel .e-n-carousel {
    padding-block-end: 0 !important;
}

.isr-carousel:not(.isr-carousel--mobile):not(.isr-carousel--testimonial):not(.isr-expander) .e-n-carousel {
    margin-inline: calc((var(--carousel-gap) - (var(--carousel-gap) / 2)) * -1);
}

.isr-carousel--mobile .swiper-wrapper {
    display: grid !important;
    grid-template-columns: repeat(var(--carousel-slides), calc((100% / var(--carousel-slides)) - (var(--carousel-gap) * (var(--carousel-slides) - 1) / var(--carousel-slides))));
        gap: var(--carousel-gap);
    transform: none !important;
}

.isr-carousel.isr-carousel--gap-sm {
    --carousel-gap: var(--sm300);
}
 
.isr-carousel.isr-carousel--gap-md {
    --carousel-gap: var(--md200);
}
 
.isr-carousel.isr-carousel--gap-lg {
    --carousel-gap: var(--lg100);
}

.isr-carousel:not(.isr-carousel--mobile):not(.isr-carousel--testimonial) .swiper-slide {
    padding-inline: calc(var(--carousel-gap) - (var(--carousel-gap) / 2))
}

.isr-carousel--mobile .swiper-slide {
    width: 100% !important;
    margin-inline-end: 0 !important
}
    
.isr-carousel--mobile .elementor-swiper-button,
.isr-carousel .swiper-pagination,
.isr-expander .elementor-swiper-button {
    display: none !important;
}
}

@media (max-width: 767px) {
.isr-carousel--mobile.isr-carousel--cards .swiper-slide > .e-con {
    --padding-bottom: calc(var(--sm400) + 3rem); 
}
}


/* || ISR Tabs  */


.isr-tabs:not(.isr-tabs-pricing):not(.isr-tabs-full):not(.isr-tabs-top) .e-n-tabs-heading {
    max-width: calc(50% - (var(--sm500) / 2))
}


.isr-tabs:not(.isr-tabs-pricing) .e-n-tabs-heading .e-n-tab-title {
	width: min(35rem, 100%);
	align-self: center;
	align-items: start;
	transition: .2s ease;
	--n-tabs-title-color-active: var(--Kernel-Black, #000000);
	background: transparent !important
}

.isr-tabs:not(.isr-tabs-pricing) .e-n-tabs-heading .e-n-tab-title-text {
	flex-direction: column;
	align-items: flex-start;
}

.isr-tabs .e-n-tab-title-text b  {
    flex-basis: 100%;
	font-weight: 600;
}

.isr-tabs:not(.isr-tabs-pricing) .tab-description {
    display: none;
	flex-direction: column;
    align-items: flex-start;
}

.isr-tabs .tab-description ul {
	margin-block-start: 0;
    padding-inline-start: 0.5em;
    list-style-position: inside;
}

.isr-tabs .tab-description ul li::marker {
    font-size: 0.65em;
}

.isr-tabs .tab-description .isr-link-wrapper {
	margin-block-start: var(--sm300)
}

.isr-tabs .e-n-tab-title[aria-selected="true"] .tab-description {
    display: flex;
	margin-block-start: var(--sm200)
}

	
@media (min-width: 768px) {
.isr-tabs .progress-bar {
    display: block;
    width: 100%;
    background: var(--Grey-500, #D1D1D1);
    height: 0.0625rem;
    position: absolute;
    inset-block-start: 0;
}

.isr-tabs .progress-bar:before {
    content: '';
    display: block;
    width: var(--progress-width, 0%) !important;
    height: 100%;
    background: var(--Kernel-Black, #000000);
}
	
.isr-tabs:not(.isr-tabs--video) .e-n-tab-title[aria-selected="true"] .progress-bar:before,
.isr-tabs:not([data-class="isr-tabs--video"]) .isr-tab-wrapper.e--selected .progress-bar:before {
    width: 100%;
}

.isr-tabs .isr-tab-wrapper .isr-image {
	display: none;
}
}

@media (max-width: 1024px) {
.isr-tabs-top .e-n-tabs-heading {
    margin-inline: calc(var(--sm500) * -1);
    padding-inline: var(--sm500) 
}
}

@media (max-width: 767px) {
.isr-tabs.e-n-tabs-mobile .e-n-tabs-content > .e-con,
.isr-tabs .e-n-tab-title .tab-description {
    display: flex !important;
	margin-block-start: var(--sm200)
}
	
.isr-tabs.e-n-tabs-mobile .e-n-tab-title:not(:last-child) {
    margin-block-end: var(--n-tabs-gap);
}
	
.isr-tabs.e-n-tabs-mobile:not(.isr-tabs-pricing)  .e-n-tab-title {
	width: 100% !important
}
	
.isr-tabs-full .e-n-tabs-content {
	display: none !important
}
}
	
.isr-tabs.isr-tabs-pricing {
	margin-block-start: 0
}

.isr-tabs-top .e-tabs-menu-base .isr-tab-wrapper {
    width: auto;
    color: #767676;
    padding: 0.56rem 1.5rem;
/*     border-block-end: 0.063rem solid #767676; */
    transition: all .2s;
}

.isr-tabs-top .e-tabs-menu-base .isr-tab-title {
    font-weight: 400;
}

.isr-tabs-top .e-tabs-menu-base .isr-tab-wrapper:is(.e--selected, :hover, :focus-visibe)  {
    color: var(--Kernel-Black, #000000);
}

@media (max-width: 767px) {
.isr-tabs-top:not(.isr-tabs-pricing) .e-tabs-menu-base {
    justify-content: flex-start !important;
    overflow-x: scroll;
     -ms-overflow-style: none; 
  scrollbar-width: none;
  padding-inline: var(--sm500);
}    

.isr-tabs-top:not(.isr-tabs-pricing) .e-tabs-content-area-base {
    padding-inline: var(--sm500);
}

.isr-tabs-top:not(.isr-tabs-pricing) .e-tabs-menu-base .isr-tab-wrapper {
    flex-shrink: 0;
}

.isr-tabs-top:not(.isr-tabs-pricing) .e-tabs-menu-base .isr-tab-title {
    padding-block-start: 0;
    font-size: 0.875rem !important;
}
	
.isr-tabs:not(.isr-tabs-pricing) .isr-tab-wrapper .isr-image {
	display: block;
	margin-block-end: var(--sm300)
}
	
.isr-tabs:not(.isr-tabs-top) .e-tab-content-base .isr-image {
	display: none
}

.isr-tabs.isr-tabs-pricing {
    margin-inline: 0;
}
}
/* Plus icon */
.isr-tabs:not(.isr-tabs-top) .isr-tab-wrapper::after{
  content: "";
  position: absolute;
  top: var(--sm300);
  inset-inline-end: 0;
  width: 1rem;
  height: 1rem;
  pointer-events: none;
  background-repeat: no-repeat;
  background-position: center;
  background-size: 100% 1.5px, 1.5px 100%;
  background-image:
    linear-gradient(currentColor, currentColor),
    linear-gradient(currentColor, currentColor);
  transition: background-size 0.2s ease;
}

.isr-tabs:not(.isr-tabs-top) .isr-tab-wrapper.e--selected::after{
  background-size: 100% 1.5px, 0 0;
}
@media (max-width: 767px) {
  .isr-tabs:not(.isr-tabs-top) .isr-tab-wrapper::after{
    display: none;
  }
}
/* Indicator for Tabs-Top	 */
.isr-tab-indicator {
  position: absolute;
  border-radius: 2rem;
  background: rgba(0, 0, 0, 0.08);
  pointer-events: none;
  z-index: 0;
  transition: top 0.25s ease, height 0.25s ease, left 0.25s ease, width 0.25s ease;
}

/* || ISR Expander  */


@media (min-width: 768px) {
.isr-expander .swiper-wrapper {
    display: flex;
    height: min(36.5rem, 36.5vw);
    overflow: hidden;
    column-gap: var(--sm300);
	overflow: visible
}

.isr-expander .swiper-slide {
    width: 100% !important;
    flex-shrink: 1 !important;
    transition: all .4s ease-in-out;
	transform-origin: center center;
	padding: 0 !important
}

.isr-expander .swiper-slide.active {
    width: 300% !important;
}
	
/* .isr-expander .swiper-slide.step {
	margin-block-start: -2.5%;
	transform: translatey(-5%);
} */

.isr-expander .swiper-slide:not(.active) img {
    filter: blur(0.1em)
}
}


/* || ISR Testimonials  */


.isr-testimonial-card:is(:hover, :focus-visible) .e-div-block-base,
.elementor-widget-e-component .isr-testimonial-card .e-div-block-base {
  transform: translateY(0);
}

.isr-testimonial--grid .elementor-testimonial-wrapper {
	margin-block-end: calc(var(--md200) * 1.88);
}

.isr-testimonial--grid .elementor-testimonial-image img, .isr-testimonial-carousel-wrapper .isr-image {
    mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 150 175'%3E%3Cpath d='M0 17.2656C0 7.95001 7.92702 0.604049 17.2157 1.31186L135.216 10.3036C143.557 10.9392 150 17.8924 150 26.2573V145.897C150 154.134 143.746 161.025 135.548 161.822L17.5483 173.294C8.14423 174.208 0 166.817 0 157.369V17.2656Z' fill='white'/%3E%3C/svg%3E");
    -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 150 175'%3E%3Cpath d='M0 17.2656C0 7.95001 7.92702 0.604049 17.2157 1.31186L135.216 10.3036C143.557 10.9392 150 17.8924 150 26.2573V145.897C150 154.134 143.746 161.025 135.548 161.822L17.5483 173.294C8.14423 174.208 0 166.817 0 157.369V17.2656Z' fill='white'/%3E%3C/svg%3E");

    mask-size: contain;
    -webkit-mask-size: contain;
    mask-repeat: no-repeat;
    -webkit-mask-repeat: no-repeat;
    mask-position: center;
    -webkit-mask-position: center;
	object-fit: cover;
}

.isr-testimonial--grid .elementor-testimonial-content p {
	margin-block-start: var(--sm100)
}

@media (min-width: 1025px) {
.isr-testimonial--grid .elementor-testimonial-wrapper {
    display: grid;
    grid-template-columns: 1.4fr 1fr;
    gap: var(--sm300);
}

.isr-testimonial--grid .elementor-testimonial-meta {
    display: flex;
    justify-content: center
}

.isr-testimonial .elementor-testimonial-wrapper .elementor-testimonial-meta .elementor-testimonial-image {
    padding-inline-end: var(--sm300)
}
}

@media (max-width: 1024px) {
.isr-testimonial--grid .elementor-testimonial-wrapper .elementor-testimonial-content {
    margin-block-end: var(--md100)
}
	
.isr-testimonial .elementor-testimonial-wrapper .elementor-testimonial-meta .elementor-testimonial-image img {
	margin-inline-start: -6%;
}
}

@media (max-width: 767px) {
.isr-testimonial .elementor-testimonial-wrapper .elementor-testimonial-meta-inner {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: var(--sm300);
	margin-block-end: var(--sm200);
}
}


/* || ISR Gallery  */
	

.isr-gallery-row--wrapper {
  user-select: none;
  gap: var(--gap, 1rem);
  width: 100%;
  --gallery-gap: 1rem;
  --gallery-duration: 60s;
}

.isr-gallery-row {
  flex-shrink: 0;
  display: flex;
  gap: var(--gallery-gap, 1rem);
  animation: scroll var(--gallery-duration, 60s) linear infinite;
}

.isr-gallery-row--wrapper:nth-child(odd)  .isr-gallery-row {
      animation-name: scroll-reverse;
}

@keyframes scroll {
  from {
    transform: translateX(0);
  }
  to {
    transform: translateX(calc(-100% - var(--gallery-gap, 1rem)));
  }
}

@keyframes scroll-reverse {
  from {
    transform: translateX(calc(-100% - var(--gallery-gap, 1rem)));
  }
  to {
    transform: translateX(0);
  }
}


/* Pause on hover */


.isr-gallery-row--wrapper:hover .isr-gallery-row {
  animation-play-state: paused;
}

/* Respect reduced motion preferences */

@media (prefers-reduced-motion: reduce) {
  .isr-gallery-row {
    animation: none;
  }
}

@media (max-width: 767px) {
.isr-gallery-row--wrapper {
  --gallery-gap: 0.5rem;
}    
}


/* || ISR Interactive Sections  */


div[data-class="steps-scroll"] svg path {
	fill: var(--Grey-300)
}

@media (min-width: 1281px) {
div[data-class="steps-scroll"] {
	min-height: 130vh;
}

div[data-class="steps-scroll"] > .isr-content-wrapper .isr-content-wrapper {
	aspect-ratio: 2.2 / 1;
}

	
div[data-class="steps-scroll"] > .isr-content-wrapper:nth-child(2) {
    place-self: center
}

div[data-class="steps-scroll"] > .isr-content-wrapper:last-child {
    place-self: flex-end
}   
}


/* || ISR Pricing Hero  */

[data-class="pricing-hero"] {
	background: radial-gradient(237.76% 237.76% at 50% 50%, #FFF 0%, #FBC9FB 30.78%, #EFC7F3 100%);
}


/* ===== ISR Form Styles ===== */

.isr-form {
	--form-row-gap: var(--md100);
	--form-column-gap: var(--sm200);
}
.isr-form .elementor-form-fields-wrapper {
    row-gap: var(--form-row-gap);
    column-gap: var(--form-column-gap);
}
	
.isr-form.isr-form--gap-lg {
	--form-column-gap: var(--md300);
}

.isr-form.isr-form--gap-sm .elementor-form-fields-wrapper {
    row-gap: var(--sm400);
}
	
.isr-form .elementor-field-group {
    align-content: flex-start;
}

@media (min-width: 768px) {
 .isr-form .elementor-col-50 {
        width: calc(50% - (var(--form-column-gap) / 2));
    }
}


/*  Form Lables  */


.isr-form .elementor-field-group > label.elementor-field-label {
    font-weight: 700 !important;
}

.isr-form .elementor-field-label:after {
    display: inline-block;
    font-weight: 400;
    padding-inline-start: 0.2rem;
    transform: translateY(0.26rem)
}


/*  Form Input Fields  */


.isr-form .elementor-field-textual {
    padding: 0.5rem;
}

.isr-form .elementor-field-textual::placeholder {
    opacity: 1;
}

.isr-form .elementor-field-textual:is(:hover, :focus, :focus-visible) {
    border-color: var(--Kernel-Black, #000) !important;
}

.isr-form .elementor-field-textual:is(:focus, :focus-visible) {
    box-shadow: 0px 0px 6px 0px #E2E2E2;
}

.isr-form .elementor-select-wrapper::before {
    color: var(--Kernel-Black, #000);
    text-shadow: none;
}

.isr-form .select-caret-down-wrapper {
    font-size: 0.75rem;
    height: 1.7rem
}


/*  Form Checkbox Fields  */


.isr-form .elementor-field-group  .elementor-field-subgroup  {
    gap: 0.5rem 1.5rem;
}
.isr-form .elementor-field-group .elementor-field-option {
    position: relative;
    padding-inline-end: 0;
}
	
.isr-form .elementor-field-group .elementor-field-option input {
   position: absolute;
   width: 1rem;
   height: 1rem;
	inset-inline-start: 0;
   top: calc(50% - 0.4rem);
   opacity: 0;
}

.isr-form .elementor-field-group .elementor-field-option label {
    display: inline-block;
    position: relative;
    padding-inline-start: 1.5rem;
	cursor: pointer;
}

.isr-form .elementor-field-group .elementor-field-option label:before {
   content: "";
   display: inline-block;
   flex: 0 0 1rem;
   width: 1rem;
   height: 1rem;
   position: absolute;
   top: 0.18rem;
	inset-inline-start: 0;
   border: 1px solid #B5B5B5;
   background: var(--Blank-Canvas-White, #fff);
   background-repeat: no-repeat;
   background-position: center;
   transition: all .2s ease-in-out;
	cursor: pointer;
}

.isr-form .elementor-field-group .elementor-field-option input:checked + label:before {
    width: 1rem;
    height: 1rem;
    background: var(--Kernel-Black, #000);
    border-color: var(--Kernel-Black, #000);
}

.isr-form .elementor-field-type-checkbox label:before,
.isr-form .elementor-field-type-acceptance label:before,
.isr-form .elementor-field-type-checkbox .elementor-field-option input:checked + label:before,
.isr-form .elementor-field-type-acceptance .elementor-field-option input:checked + label:before,
.isr-form.dark-mode .elementor-field-type-checkbox label:before,
.isr-form.dark-mode .elementor-field-type-acceptance label:before,
.isr-form.dark-mode .elementor-field-type-checkbox .elementor-field-option input:checked + label:before,
.isr-form.dark-mode .elementor-field-type-acceptance .elementor-field-option input:checked + label:before {
    background-image:  url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none'%3E%3Cpath stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M10 3 4.5 8.5 2 6'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: center;
    border-radius: 0.13rem; 
}

.isr-form .elementor-field-type-radio label:before {
    border-radius: 1rem;
    box-shadow: inset 0 0 0 0.15rem var(--Blank-Canvas-White, #fff);
}


.isr-form .elementor-field-type-radio input:checked + label:before {
    background: var(--Kernel-Black, #000); 
}

/* Atomic Form */
.isr-form-base .e-form-radio-button-base:before {
    background: var(--Kernel-Black, #000); 
}
	
/* ---- */

.isr-form .elementor-field-group .elementor-field-option:hover label:before {
     border-color: var(--Kernel-Black, #000); 
}

.isr-form .elementor-field-group .elementor-field-option input:focus-visible + label:before {
    border-color: var(--Kernel-Black, #000);
    outline: solid  0.25rem #F4F4FF;
}

@media (max-width: 767px) {
.isr-form .elementor-field-group .elementor-field-option label:before {
   top: 0.13rem;
}
}
	

/*  Success/Error Messages  */


.isr-form .elementor-message.elementor-message-danger[style="display: block;"],
.isr-form .elementor-message.elementor-message-success[style="display: block;"] {
    margin-block: 1rem 0;
    display: flex !important;
}

.isr-form .elementor-message.elementor-message-danger {
    color: #EE0004;
}

.isr-form .elementor-error .elementor-field-textual,
.isr-form .elementor-error .elementor-field-textual:is(:hover, :focus-visible),
.isr-form .elementor-error.elementor-field-option input:not(:checked) + label:before {
    border-color: #EE0004 !important
}
	
.isr-form .elementor-message.elementor-message-danger:before {
    content: '';
    width: 1rem;
    height: 1rem;
	flex: 0 0 1rem;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 16'%3E%3Cpath fill='%23EE0004' fill-rule='evenodd' d='M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16ZM6.838 3.545H9.16l-.212 6.56H7.05l-.212-6.56ZM9.2 11.934c-.009.664-.567 1.2-1.2 1.2-.665 0-1.21-.536-1.2-1.2-.01-.656.535-1.187 1.2-1.187.633 0 1.191.531 1.2 1.187Z' clip-rule='evenodd'/%3E%3C/svg%3E");
    margin-inline-end: 0.5rem;
	margin-block-start: 0.2rem;
    background-repeat: no-repeat;
}
	
.isr-form .elementor-message.elementor-message-success {
    color: #004F32
}

.isr-form .elementor-message.elementor-message-success:before {
	content: '';
    width: 1rem;
    height: 1rem;
	flex: 0 0 1rem;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 16'%3E%3Cpath fill='%23004F32' d='M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0Z'/%3E%3Cpath stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m4.875 8.313 2.5 2.5 3.75-5.626'/%3E%3C/svg%3E");
    margin-inline-end: 0.5rem;
    background-repeat: no-repeat;
}
	

.isr-form .elementor-field-type-hidden,
.isr-form .elementor-field-type-html:nth-last-child(2) {
    display: none !important
}


/* ===== ISR LP Styles ===== */

@media (max-width: 767px) {
.isr-lp--header .isr-btn {
    position: fixed;
    inset-inline-start: 0;
    bottom: 0;
}

.isr-lp--header .isr-btn .elementor-button {
    padding-block: 0.9625rem
}
}
	
.isr-btn:not(.isr-btn--secondary) .elementor-button {
	border: none
}

/* || ISR Section Layout
   The rebrand stylesheet dropped the content-width token that the older
   sheet defined on the section wrapper. Restored here so .isr-wrapper
   sections can size their inner column from one place. */

.isr-wrapper {
    --content-width: min(100%, 80rem);
    -webkit-font-smoothing: antialiased;
}

@media (max-width: 1024px) {
    .isr-wrapper { --content-width: min(100%, 52rem) }
}

@media (max-width: 767px) {
    .isr-wrapper { --content-width: min(100%, 32rem) }
}


/* || ISR Resets

   Hello Elementor's reset.css sets a site-wide link colour (#CC3366, with a
   #333366 hover) at specificity (0,0,1). It is enqueued after this file, so
   these rules are scoped to .elementor to outrank it on specificity rather
   than load order. Links inherit their surrounding colour; the design
   system's own link treatments take over from there. */

.elementor a,
.elementor a:hover,
.elementor a:active,
.elementor a:focus {
    color: inherit;
}

/* Elementor's V4 form message defaults ship green/pink. Restated in
   greyscale — the message still reads as success vs. error through weight
   and border, not hue. */

body .elementor .e-form-success-message-base,
body .elementor .e-form-error-message-base {
    color: var(--Kernel-Black);
    background-color: var(--Grey-200);
    border-inline-start: 0.1875rem solid var(--Kernel-Black);
    text-align: start;
}

body .elementor .e-form-error-message-base {
    background-color: var(--Grey-300);
    font-weight: 500;
}

body .elementor .e-form-success-message-base p,
body .elementor .e-form-error-message-base p {
    color: inherit;
}


/* || ISR Expander (flex variant)

   The inherited expander drives Swiper markup (.swiper-wrapper/.swiper-slide).
   This page has no carousels, so this variant applies the same hover-expand
   behaviour to a plain flex row of panels. Collapsed panels show their title;
   the active panel grows and reveals its body. Below the tablet breakpoint it
   degrades to a stacked list with everything visible. */

@media (min-width: 1025px) {
    .elementor .isr-expander--flex {
        display: flex;
        flex-direction: row;
        gap: var(--sm300);
        align-items: stretch;
    }

    .elementor .isr-expander--flex > * {
        flex: 1 1 0;
        min-width: 0;
        overflow: hidden;
        /* Only the width animates. Height is fixed by align-items:stretch on
           the row, so revealing a panel's body cannot change the row height
           and make the cards jump. */
        transition: flex-grow .55s cubic-bezier(.33,1,.68,1),
                    border-color .3s ease,
                    background-color .3s ease;
        will-change: flex-grow;
    }

    .elementor .isr-expander--flex > .is-active {
        flex-grow: 2.6;
    }

    /* The row height is pinned. Without this, narrowing a panel rewraps its
       text taller and the whole row resizes mid-animation — the "jumping".
       With a fixed height every panel is the same height in every state and
       only the width moves. */
    .elementor .isr-expander--flex {
        align-items: stretch;
        min-height: 18rem;
    }

    .elementor .isr-expander--flex > * {
        height: auto;
        align-self: stretch;
    }

    /* Nothing in a panel may translate on hover — that is what made the row
       jump. Motion here is width only. */
    .elementor .isr-expander--flex > *:hover {
        transform: none;
    }

    /* Body copy and the CTA are held back until the panel is the active one. */
    .elementor .isr-expander--flex > * .isr-expander-reveal {
        opacity: 0;
        transition: opacity .35s ease .12s;
    }

    .elementor .isr-expander--flex > .is-active .isr-expander-reveal {
        opacity: 1;
    }

    .elementor .isr-expander--flex > *:not(.is-active) .isr-expander-reveal {
        pointer-events: none;
    }
}

@media (prefers-reduced-motion: reduce) {
    .elementor .isr-expander--flex > *,
    .elementor .isr-expander--flex > * .isr-expander-reveal {
        transition: none;
    }
}

/* Below the expand breakpoint the panels stack as a plain column. */
@media (max-width: 1024px) {
    .elementor .isr-expander--flex {
        display: grid;
        grid-template-columns: 1fr;
        gap: var(--sm300);
    }
}


/* || ISR Steps Scroll

   Numbered steps that resolve as they scroll into view. The inherited
   steps-scroll relies on a fixed-height pinned stage; these step lists run to
   seventeen items, so this variant reveals each step in sequence instead of
   pinning — same intent, and it degrades to fully-visible content when
   JavaScript or the observer is unavailable (the .isr-steps-ready guard means
   nothing is hidden until the script is actually driving it). */

.elementor .isr-steps-ready .isr-step {
    opacity: 0;
    transform: translateY(1.25rem);
    transition: opacity .5s cubic-bezier(.4,0,.2,1), transform .5s cubic-bezier(.4,0,.2,1);
}

.elementor .isr-steps-ready .isr-step.is-in {
    opacity: 1;
    transform: none;
}

/* A rule that runs alongside the steps and fills as they resolve. */
.elementor .isr-step {
    position: relative;
}

.elementor .isr-steps-ready .isr-step::before {
    content: "";
    position: absolute;
    inset-block-start: 0;
    inset-inline-start: 0;
    width: 0.125rem;
    height: 100%;
    background-color: currentColor;
    opacity: 0;
    transform: scaleY(0);
    transform-origin: top;
    transition: transform .5s ease .1s, opacity .3s ease .1s;
}

.elementor .isr-steps-ready .isr-step.is-in::before {
    opacity: 0.25;
    transform: scaleY(1);
}

@media (prefers-reduced-motion: reduce) {
    .elementor .isr-steps-ready .isr-step,
    .elementor .isr-steps-ready .isr-step::before {
        opacity: 1;
        transform: none;
        transition: none;
    }
}


/* || ISR Hero Video

   A scrim between the looping background video and the hero copy. Without it
   the white display type loses contrast wherever the wave is bright.
   Elementor renders this element with BEM parts: __media (the <video>),
   __content and __controls. */

.elementor .isr-hero-video .e-background-video__media {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    z-index: 0;
}

.elementor .isr-hero-video::after {
    content: "";
    position: absolute;
    inset: 0;
    z-index: 1;
    pointer-events: none;
    /* Two layers composite, so the flat scrim and the vignette multiply:
       at 0.72 + 0.28 the centre landed at ~0.80 effective black, which buried
       the footage. Lightened to ~0.63 at the centre. Tune with one number:
       --isr-hero-scrim on .isr-hero-video. */
    background:
        linear-gradient(rgb(0 0 0 / var(--isr-hero-scrim, 0.55)),
                        rgb(0 0 0 / var(--isr-hero-scrim, 0.55))),
        radial-gradient(120% 90% at 50% 45%,
                        rgb(0 0 0 / 0.18) 0%,
                        rgb(0 0 0 / 0.55) 70%,
                        rgb(0 0 0 / 0.82) 100%);
}

.elementor .isr-hero-video .e-background-video__content {
    position: relative;
    z-index: 2;
    width: 100%;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
}

.elementor .isr-hero-video .e-background-video__controls {
    position: absolute;
    z-index: 3;
    inset-block-end: var(--sm400);
    inset-inline-end: var(--sm500);
}

/* The video is decorative; keep it still for anyone who asked for less motion. */
@media (prefers-reduced-motion: reduce) {
    .elementor .isr-hero-video .e-background-video__media {
        display: none;
    }
    .elementor .isr-hero-video {
        background-color: var(--Kernel-Black);
    }
}


/* The header is fixed, so anchored sections need to clear it when jumped to. */
.elementor [id] {
    scroll-margin-top: 5rem;
}


/* || ISR Modal (book sales popup)

   Hidden until script opens it. The base class carries display:none so the
   panel never flashes on load; .is-open switches it to a centred flex box. */

.elementor .isr-modal {
    display: none;
}

.elementor .isr-modal.is-open {
    display: flex;
}

body.isr-modal-open {
    overflow: hidden;
}

.elementor .isr-modal .isr-modal-panel {
    animation: isr-modal-in .22s cubic-bezier(.4,0,.2,1);
}

@keyframes isr-modal-in {
    from { opacity: 0; transform: translateY(0.75rem) scale(0.985); }
    to   { opacity: 1; transform: none; }
}

@media (prefers-reduced-motion: reduce) {
    .elementor .isr-modal .isr-modal-panel { animation: none; }
}


/* || ISR Header

   Transparent over the hero video, resolving to a solid bar once the page
   scrolls. The .is-scrolled class is toggled by script; with JS off the
   header keeps the solid background so the nav never sits unreadable on
   whatever happens to be behind it. */

/* Bar height. Stated here rather than on the elements so both header
   templates stay in step and neither needs an edit (which flips their status
   to draft). Logo and padding together give ~77px, which matches the
   scroll-margin-top of 5rem already used for anchored sections. */

body .elementor .isr-header {
    padding-block: var(--sm200);
    padding-inline: var(--sm500);
}

body .elementor .isr-header .isr-image {
    height: 2.75rem;
}

@media (max-width: 767px) {
    body .elementor .isr-header {
        padding-block: var(--sm100);
        padding-inline: var(--sm300);
    }
    body .elementor .isr-header .isr-image {
        height: 2.25rem;
    }
}

/* Solid white from the top: there is no transparent state any more, so the
   scroll toggle has nothing to switch between and .is-scrolled is inert.
   The glyph shadow that lifted the nav off video is gone with it. */

body .elementor .isr-header,
body .elementor .isr-header.is-scrolled,
body.no-js .elementor .isr-header {
    background-color: #FFFFFF;
    backdrop-filter: none;
    border-block-end-color: var(--Grey-300);
    text-shadow: none;
}


/* || ISR Tabs — active state

   Inside a .dark-mode section the two palette tokens are swapped, so
   var(--Kernel-Black) is white here and var(--Blank-Canvas-White) is black.
   Using the tokens (rather than literal #fff/#000) keeps this correct if the
   tabs are ever placed in a light section. The body.elementor-page-957 outranks the
   element's own local style, which sets a transparent background. */

body .elementor .isr-tab-title[aria-selected="true"] {
    background-color: var(--Kernel-Black);
    border-color: var(--Kernel-Black);
}

body .elementor .isr-tab-title[aria-selected="true"],
body .elementor .isr-tab-title[aria-selected="true"] * {
    color: var(--Blank-Canvas-White);
}


/* || ISR Split section (text column + content column)

   Two columns on desktop, stacked below tablet. In RTL the first child lands
   on the right, which is where the heading block belongs. */

body .elementor .isr-split {
    display: grid;
    grid-template-columns: 1fr 1.15fr;
    grid-template-rows: none;
    column-gap: var(--md200);
    row-gap: var(--sm500);
    align-items: start;
    width: 100%;
}

@media (max-width: 1024px) {
    body .elementor .isr-split {
        grid-template-columns: 1fr;
    }
}


/* || ISR Expander — stack variant

   Vertical accordion driven by hover (and focus/tap). Collapsed rows show
   only their number and title; the body expands on the active row and the
   previously open row closes, so exactly one is open at a time.
   max-height carries the animation because the natural height is unknown;
   the value only needs to exceed the tallest body. */

body .elementor .isr-expander--stack {
    display: flex;
    flex-direction: column;
    gap: 0;
}

/* Rule under the last row so the list closes off. */
body .elementor .isr-expander--stack > *:last-child {
    border-block-end-width: 1px;
    border-block-end-style: solid;
    border-block-end-color: var(--Grey-400);
}

/* Plus / minus built from two bars, mirroring the FAQ indicator: both
   visible reads as a plus, the upright one lying flat makes a minus. */
body .elementor .isr-expander--stack > *::before,
body .elementor .isr-expander--stack > *::after {
    content: "";
    position: absolute;
    inset-inline-end: 0.125rem;
    inset-block-start: calc(var(--sm300) + 0.7rem);
    width: 1.05rem;
    height: 0.125rem;
    border-radius: 0.0625rem;
    background-color: var(--Kernel-Black);
    transition: transform .3s cubic-bezier(.22,.61,.36,1);
    pointer-events: none;
}

body .elementor .isr-expander--stack > *::after {
    transform: rotate(90deg);
}

body .elementor .isr-expander--stack > .is-active::after {
    transform: rotate(0deg);
}

body .elementor .isr-expander--stack > * {
    cursor: pointer;
    transition: border-color .3s ease, background-color .3s ease;
}

body .elementor .isr-expander--stack .isr-expander-reveal {
    max-height: 0;
    opacity: 0;
    overflow: hidden;
    margin-block-start: 0;
    transition: max-height .45s cubic-bezier(.22,.61,.36,1),
                opacity .3s ease,
                margin-block-start .45s cubic-bezier(.22,.61,.36,1);
}

body .elementor .isr-expander--stack > .is-active .isr-expander-reveal {
    max-height: 14rem;
    opacity: 1;
    margin-block-start: var(--sm100);
}

body .elementor .isr-expander--stack > .is-active {
    border-block-start-color: var(--Kernel-Black);
}

@media (prefers-reduced-motion: reduce) {
    body .elementor .isr-expander--stack .isr-expander-reveal {
        transition: none;
    }
}


/* || ISR FAQ icon (plus / minus)

   The accordion renders as native <details>, so [open] drives the state with
   no script. The authored glyph is hidden and the mark is drawn from two
   bars: both visible is a plus, the vertical one rotating flat makes a minus. */

body .elementor .isr-faq-icon {
    position: relative;
    width: 1.25rem;
    height: 1.25rem;
    min-width: 1.25rem;
    flex: 0 0 auto;
    padding: 0;
    color: var(--Kernel-Black);
}

body .elementor .isr-faq-icon > * {
    opacity: 0;
}

body .elementor .isr-faq-icon::before,
body .elementor .isr-faq-icon::after {
    content: "";
    position: absolute;
    inset-inline-start: 0;
    inset-block-start: 50%;
    width: 100%;
    height: 0.125rem;
    border-radius: 0.0625rem;
    background-color: currentColor;
    transition: transform .3s cubic-bezier(.22,.61,.36,1);
}

body .elementor .isr-faq-icon::before {
    transform: translateY(-50%);
}

body .elementor .isr-faq-icon::after {
    transform: translateY(-50%) rotate(90deg);
}

/* Open: the upright bar lies flat onto the other one, leaving a minus. */
body .elementor details[open] .isr-faq-icon::after {
    transform: translateY(-50%) rotate(0deg);
}

/* Elementor rotates the icon slot itself when open; that would fight the bars. */
body .elementor details[open] .isr-faq-icon {
    transform: none;
}

@media (prefers-reduced-motion: reduce) {
    body .elementor .isr-faq-icon::before,
    body .elementor .isr-faq-icon::after {
        transition: none;
    }
}


/* || ISR Horizontal scroller

   A native scroll-snap rail rather than a carousel library: it gets touch
   swipe, trackpad, keyboard and RTL for free, and degrades to a plain
   scrollable row if the script never runs. Cards are a fixed width so the
   next one peeks in, signalling there is more to the side. */

body .elementor .isr-hscroll {
    display: flex;
    flex-direction: row;
    flex-wrap: nowrap;
    grid-template-columns: none;
    overflow-x: auto;
    overflow-y: hidden;
    gap: var(--sm300);
    padding-block-end: var(--sm300);
    scroll-snap-type: x mandatory;
    scroll-behavior: smooth;
    overscroll-behavior-x: contain;
    -webkit-overflow-scrolling: touch;
    cursor: grab;
}

/* While dragging, snapping and smooth-scroll would fight the pointer. */
body .elementor .isr-hscroll.is-dragging {
    cursor: grabbing;
    scroll-snap-type: none;
    scroll-behavior: auto;
    user-select: none;
}

body .elementor .isr-hscroll > * {
    flex: 0 0 clamp(15rem, 23vw, 19rem);
    min-width: 0;
    scroll-snap-align: start;
    height: auto;
    align-self: stretch;
}

body .elementor .isr-hscroll::-webkit-scrollbar {
    height: 0.25rem;
}

body .elementor .isr-hscroll::-webkit-scrollbar-track {
    background-color: var(--Grey-300);
    border-radius: 1rem;
}

body .elementor .isr-hscroll::-webkit-scrollbar-thumb {
    background-color: var(--Kernel-Black);
    border-radius: 1rem;
}

body .elementor .isr-hscroll { scrollbar-width: thin; }

/* Arrow controls, injected by script so they never exist without behaviour. */
.isr-hscroll-nav {
    display: flex;
    flex-direction: row;
    gap: var(--sm100);
    margin-block-start: var(--sm200);
}

.isr-hscroll-nav button {
    width: 2.75rem;
    height: 2.75rem;
    padding: 0;
    border-radius: 50%;
    border: 1px solid var(--Grey-400);
    background-color: transparent;
    color: var(--Kernel-Black);
    cursor: pointer;
    font-size: 1rem;
    line-height: 1;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    transition: background-color .2s ease, border-color .2s ease, color .2s ease, opacity .2s ease;
}

.isr-hscroll-nav button:hover:not(:disabled),
.isr-hscroll-nav button:focus-visible:not(:disabled) {
    background-color: var(--Kernel-Black);
    border-color: var(--Kernel-Black);
    color: var(--Blank-Canvas-White);
}

.isr-hscroll-nav button:disabled {
    opacity: 0.3;
    cursor: default;
}

@media (prefers-reduced-motion: reduce) {
    body .elementor .isr-hscroll { scroll-behavior: auto; }
}


/* || ISR link arrow

   The inherited treatment parks an arrow on the inline-START and slides it in
   on hover. Here it belongs on the inline-END — the left, in RTL — and must
   be invisible until the row is hovered. scaleX(-1) points the glyph the way
   the text reads. */

body .elementor .isr-link-wrapper::before {
    content: none;
}

body .elementor .isr-link-wrapper::after {
    content: "";
    display: inline-block;
    width: 1.05em;
    height: 1.05em;
    margin-inline-start: 0;
    background-color: currentColor;
    mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3E%3Cpath fill='%23000' fill-rule='evenodd' d='M2.25 10.071a.75.75 0 0 1 .75-.75h12.332l-4.629-4.628a.75.75 0 0 1 1.06-1.06l5.91 5.908a.75.75 0 0 1 0 1.06l-5.91 5.909a.75.75 0 1 1-1.06-1.06l4.629-4.629H3a.75.75 0 0 1-.75-.75Z' clip-rule='evenodd'/%3E%3C/svg%3E") no-repeat center / contain;
    -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3E%3Cpath fill='%23000' fill-rule='evenodd' d='M2.25 10.071a.75.75 0 0 1 .75-.75h12.332l-4.629-4.628a.75.75 0 0 1 1.06-1.06l5.91 5.908a.75.75 0 0 1 0 1.06l-5.91 5.909a.75.75 0 1 1-1.06-1.06l4.629-4.629H3a.75.75 0 0 1-.75-.75Z' clip-rule='evenodd'/%3E%3C/svg%3E") no-repeat center / contain;
    transform: scaleX(-1);
    opacity: 0;
    transition: opacity .25s ease, margin-inline-start .25s cubic-bezier(.22,.61,.36,1);
    pointer-events: none;
    vertical-align: -0.15em;
}

/* Revealed by hovering the link itself, or by the panel it sits in opening. */
body .elementor .isr-link-wrapper:hover::after,
body .elementor .isr-link-wrapper:focus-visible::after,
body .elementor .isr-expander--flex > *:hover .isr-link-wrapper::after,
body .elementor .isr-expander--flex > .is-active .isr-link-wrapper::after {
    opacity: 1;
    margin-inline-start: 0.45em;
}

@media (prefers-reduced-motion: reduce) {
    body .elementor .isr-link-wrapper::after { transition: none; }
}


/* The selected tab keeps its inverted fill on hover — otherwise Elementor's
   kit-default button hover (Grey-700) would grey it out. */
body .elementor .isr-tab-title[aria-selected="true"]:hover,
body .elementor .isr-tab-title[aria-selected="true"]:focus-visible {
    background-color: var(--Kernel-Black);
    border-color: var(--Kernel-Black);
}

body .elementor .isr-tab-title[aria-selected="true"]:hover *,
body .elementor .isr-tab-title[aria-selected="true"]:focus-visible * {
    color: var(--Blank-Canvas-White);
}


/* || ISR Steps Stack  (the DSM "From brief to launch" card animation)

   Ported from the DSM Interactive Sections page. There is no JavaScript in
   the original and none here: the whole effect is sticky positioning inside
   a tall single-column grid. Each card pins at the same offset, so scrolling
   makes them pile up on one another, and a per-card place-self staggers them
   so each successive card sits narrower and further along the inline axis.

   Below the tablet breakpoint the cards go static and it becomes a plain
   vertical list, exactly as the source does. */

body .elementor .isr-steps-stack {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    grid-template-rows: none;
    align-items: start;
    row-gap: var(--md100);
    column-gap: var(--sm300);
    width: 100%;
}

body .elementor .isr-steps-stack > * {
    position: static;
}

@media (min-width: 1025px) {
    body .elementor .isr-steps-stack {
        /* The extra height is the scroll distance the pile-up plays out over. */
        min-height: 130vh;
    }

    body .elementor .isr-steps-stack > * {
        position: sticky;
        inset-block-start: 9rem;
    }

    /* Each card narrower and further along than the one before it. */
    body .elementor .isr-steps-stack > *:nth-child(1) { place-self: start stretch; }
    body .elementor .isr-steps-stack > *:nth-child(2) { place-self: start center; width: 86%; }
    body .elementor .isr-steps-stack > *:nth-child(3) { place-self: start end;    width: 72%; }
    body .elementor .isr-steps-stack > *:nth-child(4) { place-self: start end;    width: 62%; }
}

@media (prefers-reduced-motion: reduce) {
    body .elementor .isr-steps-stack > * {
        position: static;
        width: 100%;
    }
    body .elementor .isr-steps-stack { min-height: 0; }
}


/* Scroller controls above the rail, right-aligned in the reading direction. */
.isr-hscroll-nav--top {
    margin-block-start: 0;
    margin-block-end: var(--sm300);
    justify-content: flex-end;
}


/* || ISR Button hover — one rule for every solid button

   The inherited hover swapped the fill to a fixed Grey-700. That can only
   ever work on one background: on a light section it produced grey text on
   grey, and inside .dark-mode it collided with the inverted palette. Solid
   buttons now keep their fill and simply dim, which holds contrast in both
   contexts because the pair moves together.

   The colour is pinned here too: .isr-button-* also sets a colour, and which
   of the two wins depends on the order the kit happens to emit them in. */

body .elementor .isr-btn-wrapper,
body .elementor .isr-btn-wrapper *,
body .elementor .e-form-submit-button-base,
body .elementor .e-form-submit-button-base * {
    color: var(--Blank-Canvas-White);
}

body .elementor .isr-btn-wrapper,
body .elementor .e-form-submit-button-base {
    background-color: var(--Kernel-Black);
    transition: opacity .2s ease, background-color .2s ease, border-color .2s ease;
}

body .elementor .isr-btn-wrapper:hover,
body .elementor .isr-btn-wrapper:focus-visible,
body .elementor .e-form-submit-button-base:hover,
body .elementor .e-form-submit-button-base:focus-visible {
    background-color: var(--Kernel-Black);
    opacity: 0.82;
}

/* The outline button inverts instead of dimming: it has no fill to dim. */
body .elementor .isr-btn-outline {
    background-color: transparent;
    color: var(--Kernel-Black);
    border-color: var(--Kernel-Black);
    opacity: 1;
}

body .elementor .isr-btn-outline *,
body .elementor .isr-btn-outline:hover *,
body .elementor .isr-btn-outline:focus-visible * {
    color: inherit;
}

body .elementor .isr-btn-outline:hover,
body .elementor .isr-btn-outline:focus-visible {
    background-color: var(--Kernel-Black);
    color: var(--Blank-Canvas-White);
    border-color: var(--Kernel-Black);
    opacity: 1;
}


/* hello-elementor's reset.css also sets a:hover { color:#333 }. The base
   colour was already neutralised; the hover state needs the same treatment
   or a solid button's label turns dark grey on its own dark fill. */
body .elementor .isr-btn-wrapper:hover,
body .elementor .isr-btn-wrapper:hover *,
body .elementor .isr-btn-wrapper:focus-visible,
body .elementor .isr-btn-wrapper:focus-visible *,
body .elementor .e-form-submit-button-base:hover,
body .elementor .e-form-submit-button-base:hover * {
    color: var(--Blank-Canvas-White);
}

/* The hero's play/pause sit on video, not on a section background, so they
   keep their own translucent treatment instead of the shared button hover. */
body .elementor .isr-hero-video .e-background-video__play,
body .elementor .isr-hero-video .e-background-video__pause {
    background-color: rgba(0,0,0,0.35);
    opacity: 1;
}

body .elementor .isr-hero-video .e-background-video__play:hover,
body .elementor .isr-hero-video .e-background-video__pause:hover,
body .elementor .isr-hero-video .e-background-video__play:focus-visible,
body .elementor .isr-hero-video .e-background-video__pause:focus-visible {
    background-color: rgba(0,0,0,0.65);
    border-color: rgba(255,255,255,0.9);
    opacity: 1;
}

body .elementor .isr-hero-video .e-background-video__play *,
body .elementor .isr-hero-video .e-background-video__pause * {
    color: #FFFFFF;
}


/* The disabled arrow needs to outrank the shared button rules. */
body .elementor .isr-hscroll-nav button:disabled,
.isr-hscroll-nav button:disabled {
    opacity: 0.28;
    cursor: default;
    background-color: transparent;
    border-color: var(--Grey-400);
}

body .elementor .isr-hscroll-nav button,
.isr-hscroll-nav button {
    background-color: transparent;
    color: var(--Kernel-Black);
}

body .elementor .isr-hscroll-nav button:hover:not(:disabled),
.isr-hscroll-nav button:hover:not(:disabled) {
    background-color: var(--Kernel-Black);
    color: var(--Blank-Canvas-White);
    border-color: var(--Kernel-Black);
    opacity: 1;
}


/* 30 / 70 split — outranks the base .isr-split ratio. */
body .elementor .isr-split.isr-split--30-70 {
    grid-template-columns: 3fr 7fr;
}

@media (max-width: 1024px) {
    body .elementor .isr-split.isr-split--30-70 {
        grid-template-columns: 1fr;
    }
}

/* A rail whose controls were injected into a grid/flex parent: the parent gets
   an explicit third row so the nav sits above the rail in the same column
   rather than being placed as a sibling track item. */
body .elementor .isr-split.isr-hscroll-host {
    grid-template-rows: auto 1fr;
}

body .elementor .isr-split.isr-hscroll-host > .isr-hscroll-nav {
    grid-column: 2;
    grid-row: 1;
}

body .elementor .isr-split.isr-hscroll-host > .isr-hscroll {
    grid-column: 2;
    grid-row: 2;
}

body .elementor .isr-split.isr-hscroll-host > *:not(.isr-hscroll):not(.isr-hscroll-nav) {
    grid-column: 1;
    grid-row: 1 / span 2;
}

@media (max-width: 1024px) {
    body .elementor .isr-split.isr-hscroll-host > * {
        grid-column: 1 !important;
        grid-row: auto !important;
    }
}


/* || ISR Mark — the arrow glyph that heads each result item
   Replaces the plain rule with the same arrow used elsewhere in the system,
   mirrored so it points the way the text reads. */

body .elementor .isr-mark {
    width: 1.75rem;
    height: 1.75rem;
    min-width: 1.75rem;
    padding: 0;
    background-color: var(--Kernel-Black);
    mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3E%3Cpath fill='%23000' fill-rule='evenodd' d='M2.25 10.071a.75.75 0 0 1 .75-.75h12.332l-4.629-4.628a.75.75 0 0 1 1.06-1.06l5.91 5.908a.75.75 0 0 1 0 1.06l-5.91 5.909a.75.75 0 1 1-1.06-1.06l4.629-4.629H3a.75.75 0 0 1-.75-.75Z' clip-rule='evenodd'/%3E%3C/svg%3E") no-repeat center / contain;
    -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3E%3Cpath fill='%23000' fill-rule='evenodd' d='M2.25 10.071a.75.75 0 0 1 .75-.75h12.332l-4.629-4.628a.75.75 0 0 1 1.06-1.06l5.91 5.908a.75.75 0 0 1 0 1.06l-5.91 5.909a.75.75 0 1 1-1.06-1.06l4.629-4.629H3a.75.75 0 0 1-.75-.75Z' clip-rule='evenodd'/%3E%3C/svg%3E") no-repeat center / contain;
    transform: scaleX(-1);
    border-radius: 0;
}


/* || ISR FAQ list — same visual language as the pains list
   Rules instead of boxes, with a closing rule under the last item. The
   accordion stays native <details>, so it is click-driven with no script. */

body .elementor #faq details:last-of-type {
    border-block-end-width: 1px;
    border-block-end-style: solid;
    border-block-end-color: var(--Grey-400);
}

body .elementor #faq summary {
    list-style: none;
    cursor: pointer;
}

body .elementor #faq summary::-webkit-details-marker {
    display: none;
}

/* Mirror the pains rows: the open item's top rule goes solid black. */
body .elementor #faq details[open] {
    border-block-start-color: var(--Kernel-Black);
}


/* || Header CTA

   Several layered rules (.isr-btn-outline, .isr-btn-wrapper, .isr-button-md,
   the kit default and the element's own local style) all set a colour on this
   button through the palette, so the two states are pinned here with literal
   values scoped to the header. These carry an id in the body.elementor-page-957, which is why
   editing the element's own style could not shift them.

   Inverted for the white header: dark outline on white, filling black on
   hover. Was white-on-transparent for the old dark bar. */

body .elementor #top a.isr-btn-outline,
body .elementor #top a.isr-btn-outline * {
    color: #000000;
    background-color: transparent;
}

body .elementor #top a.isr-btn-outline {
    border-color: rgba(0,0,0,0.55);
}

body .elementor #top a.isr-btn-outline:hover,
body .elementor #top a.isr-btn-outline:focus-visible {
    background-color: #000000;
    border-color: #000000;
    opacity: 1;
}

body .elementor #top a.isr-btn-outline:hover,
body .elementor #top a.isr-btn-outline:hover *,
body .elementor #top a.isr-btn-outline:focus-visible,
body .elementor #top a.isr-btn-outline:focus-visible * {
    color: #FFFFFF !important;
    background-color: transparent;
}

body .elementor #top a.isr-btn-outline:hover,
body .elementor #top a.isr-btn-outline:focus-visible {
    background-color: #000000;
}


/* A rail that breaks out of the centred container to full viewport width,
   keeping the page gutter so the first card still lines up with the grid. */
body .elementor .isr-hscroll--bleed {
    width: 100vw;
    max-width: 100vw;
    margin-inline: calc(50% - 50vw);
    padding-inline: var(--sm500);
    scroll-padding-inline: var(--sm500);
}

.isr-hscroll-nav-slot {
    display: flex;
    align-items: center;
    justify-content: flex-end;
}

.isr-hscroll-nav-slot .isr-hscroll-nav {
    margin: 0;
}

/* 50 / 50 split — section header with the title on one side, controls the other. */
body .elementor .isr-split.isr-split--50-50 {
    grid-template-columns: 1fr 1fr;
    align-items: center;
}

@media (max-width: 1024px) {
    body .elementor .isr-split.isr-split--50-50 {
        grid-template-columns: 1fr;
    }
}

/* A full-bleed rail gets larger cards, so the row still overruns the viewport
   and the next one peeks — otherwise three cards simply fit and the controls
   would have nothing to do. */
body .elementor .isr-hscroll--bleed > * {
    flex: 0 0 clamp(18rem, 34vw, 32rem);
}



/* || ISR WhatsApp — floating action button

   Was a full-width bar pinned under the footer; now a circular button fixed to
   the viewport so it stays reachable at any scroll position. The label is kept
   in the DOM and only visually hidden, so the control still announces itself. */

body .elementor .isr-wa {
    position: fixed;
    inset-block-end: var(--sm400);
    inset-inline-start: var(--sm400);
    z-index: 90;
    width: 3.5rem;
    height: 3.5rem;
    min-width: 3.5rem;
    padding: 0;
    border-radius: 50%;
    background-color: var(--Kernel-Black);
    box-shadow: 0 0.5rem 1.5rem rgba(0,0,0,0.28);
    display: flex;
    align-items: center;
    justify-content: center;
    text-align: center;
    transition: transform .2s ease, background-color .2s ease;
}

body .elementor .isr-wa:hover,
body .elementor .isr-wa:focus-within {
    transform: translateY(-0.125rem) scale(1.04);
    background-color: var(--Grey-800);
}

/* The text stays for assistive tech but is taken out of the visual box. */
body .elementor .isr-wa span,
body .elementor .isr-wa p {
    position: absolute;
    width: 1px;
    height: 1px;
    margin: -1px;
    padding: 0;
    overflow: hidden;
    white-space: nowrap;
    clip-path: inset(50%);
    border: 0;
}

body .elementor .isr-wa::after {
    content: "";
    width: 1.75rem;
    height: 1.75rem;
    background-color: var(--Blank-Canvas-White);
    mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23000' d='M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347m-5.421 7.403h-.004a9.87 9.87 0 01-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 01-1.51-5.26c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 012.893 6.994c-.003 5.45-4.437 9.884-9.885 9.884m8.413-18.297A11.815 11.815 0 0012.05 0C5.495 0 .16 5.335.157 11.892c0 2.096.547 4.142 1.588 5.945L.057 24l6.305-1.654a11.882 11.882 0 005.683 1.448h.005c6.554 0 11.89-5.335 11.893-11.893A11.821 11.821 0 0020.465 3.488'/%3E%3C/svg%3E") no-repeat center / contain;
    -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23000' d='M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347m-5.421 7.403h-.004a9.87 9.87 0 01-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 01-1.51-5.26c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 012.893 6.994c-.003 5.45-4.437 9.884-9.885 9.884m8.413-18.297A11.815 11.815 0 0012.05 0C5.495 0 .16 5.335.157 11.892c0 2.096.547 4.142 1.588 5.945L.057 24l6.305-1.654a11.882 11.882 0 005.683 1.448h.005c6.554 0 11.89-5.335 11.893-11.893A11.821 11.821 0 0020.465 3.488'/%3E%3C/svg%3E") no-repeat center / contain;
    pointer-events: none;
}

@media (max-width: 767px) {
    body .elementor .isr-wa {
        width: 3.25rem;
        height: 3.25rem;
        min-width: 3.25rem;
        inset-block-end: var(--sm300);
        inset-inline-start: var(--sm300);
    }
}

@media (prefers-reduced-motion: reduce) {
    body .elementor .isr-wa,
    body .elementor .isr-wa:hover { transition: none; transform: none; }
}


/* || ISR Wave backdrop

   A faint wave mark bled off the left edge of a section. Drawn on a pseudo
   element rather than as a background-image on the section itself, because
   only a pseudo element can carry its own opacity without fading the content
   sitting on top of it. */

body .elementor .isr-wave-bg {
    position: relative;
    overflow: hidden;
    isolation: isolate;
}

body .elementor .isr-wave-bg::before {
    content: "";
    position: absolute;
    left: -6rem;
    top: var(--isr-wave-top, 2rem);
    width: 34rem;
    height: 34rem;
    max-width: 46%;
    background: var(--isr-wave-image,
        url("/wp-content/uploads/2026/09/mernstein-mark-large.png"))
        no-repeat center / contain;
    opacity: 0.06;
    pointer-events: none;
    z-index: 0;
}

/* Keep the section's own content above the mark. */
body .elementor .isr-wave-bg > * {
    position: relative;
    z-index: 1;
}

@media (max-width: 1024px) {
    body .elementor .isr-wave-bg::before {
        width: 22rem;
        height: 22rem;
        left: -8rem;
        opacity: 0.045;
    }
}

/* Transitions are suppressed while the stack measures its tallest state, so
   the probe reads final values and nothing animates on screen. */
body .elementor .isr-expander--stack.isr-measuring,
body .elementor .isr-expander--stack.isr-measuring * {
    transition: none !important;
}


/* || ISR Tabs — mobile

   The inherited rule pulls the tab strip full-bleed with a negative inline
   margin but never restores the gutter, so the pills ran to the screen edge
   and wrapped onto a ragged second row. Here the gutter is put back as
   padding and the strip scrolls sideways instead of wrapping — the pills stay
   on one line and the next one peeks, showing there is more. */

@media (max-width: 767px) {
    body .elementor .isr-tabs-top {
        margin-inline: calc(var(--sm500) * -1);
        padding-inline: var(--sm500);
        flex-wrap: nowrap;
        justify-content: flex-start;
        overflow-x: auto;
        overflow-y: hidden;
        scroll-snap-type: x proximity;
        scroll-padding-inline: var(--sm500);
        -webkit-overflow-scrolling: touch;
        overscroll-behavior-x: contain;
    }

    body .elementor .isr-tabs-top > * {
        flex: 0 0 auto;
        scroll-snap-align: start;
    }

    /* No visible scrollbar under the pills. */
    body .elementor .isr-tabs-top {
        scrollbar-width: none;
    }

    body .elementor .isr-tabs-top::-webkit-scrollbar {
        display: none;
    }
}


/* The revealed copy is pinned to the width it has when its panel is open.
   Left fluid, the paragraph re-wraps on every frame as the panel grows —
   184px to 478px worth of reflow — which is what made the expansion stutter.
   Fixed, only the panel box animates; the overflow is clipped while collapsed
   and the text is transparent there anyway. */

@media (min-width: 1025px) {
    body .elementor .isr-expander--flex .isr-expander-reveal {
        width: 29rem;
        max-width: none;
        flex: 0 0 auto;
    }
}


/* || ISR fixes — 2026-09-07

   1. CTA link underline hugged to its text.
      The reveal inside a flex expander is pinned to width:29rem so the body
      copy cannot rewrap while the panel animates. The CTA carries both
      .isr-expander-reveal and .isr-link-wrapper, so it inherited that fixed
      width and its border-block-end drew a rule the full width of the card.
      Exempting only the link keeps the body copy's reserve intact. */

@media (min-width: 1025px) {
    body .elementor .isr-expander--flex .isr-expander-reveal.isr-link-wrapper {
        width: fit-content;
    }
}

body .elementor .isr-link-wrapper {
    width: fit-content;
    align-self: flex-start;
}

/* 2. The panel growth animates again.
      Each card authors its own transition in the page (border-color and
      background-color only), which outranked the row rule above and dropped
      flex-grow from the transition list, so panels snapped between widths
      instead of growing. Restated here at a higher specificity. */

@media (min-width: 1025px) {
    body .elementor .isr-expander--flex > * {
        transition: flex-grow .55s cubic-bezier(.33, 1, .68, 1),
                    border-color .3s ease,
                    background-color .3s ease;
    }
}


/* || ISR results row (.isr-results)

   Four outcome cells under the method quote. Each cell is numbered from a CSS
   counter rather than authored text, so the numerals stay in order if a cell
   is added or moved. The authored arrow marks are hidden — they read as
   decoration and carried no meaning — and a shared min-height with a hairline
   top edge keeps all four cells the same height however long the label wraps.
   This mirrors the 01-04 language already used by the pains section. */

body .elementor .isr-results {
    counter-reset: isr-result;
    align-items: stretch;
}

body .elementor .isr-results > * {
    counter-increment: isr-result;
    border-block-start-width: 1px;
    border-block-start-style: solid;
    border-block-start-color: var(--Kernel-Black);
    padding-block-start: var(--sm300);
    min-height: 7rem;
    gap: var(--sm100);
}

/* Labels are authored with a newline at the intended break, so every cell
   runs to two lines and the row reads as an even band. pre-line honours that
   newline while still collapsing the surrounding indentation. */
body .elementor .isr-results .isr-title-sm {
    white-space: pre-line;
}

body .elementor .isr-results > *::before {
    content: counter(isr-result, decimal-leading-zero);
    /* Elementor uses ::before on its containers as an absolutely positioned
       background-overlay layer, so the numeral inherited position:absolute and
       inset:0 — it floated over the cell taking no height, which collapsed the
       gap under the rule. Put it back in flow so it is a real flex item. */
    position: static;
    inset: auto;
    width: auto;
    height: auto;
    background: none;
    flex: 0 0 auto;
    font-family: var(--Google-Sans);
    font-weight: 500;
    font-size: 0.8125rem;
    line-height: 1;
    letter-spacing: 0.1em;
    color: var(--Grey-700);
}

body .elementor .isr-results .isr-mark {
    display: none;
}

@media (max-width: 767px) {
    body .elementor .isr-results > * {
        min-height: 0;
    }
}


/* || ISR hero title

   Scoped to the hero's background-video wrapper, which holds the only display
   heading in that block, so the page's own per-element sizing is overridden
   without touching the document. Sizes are restated at each breakpoint
   because the authored rule declares its own tablet and mobile values.

   Bigger, and tracked tighter than the display default (-0.01em): at this size
   the default reads loose, and the line is set nowrap on desktop so the extra
   negative tracking also buys back width.

   The scroll-grow runs on a scroll-driven timeline — no script, and it simply
   does not animate where the feature or motion preference says no, leaving the
   heading at its base size. Growth is capped at 1.12: measured at 1440px the
   line is 788px inside a 1360px container, so the enlarged line plus this
   scale still clears the container. */

body .elementor .isr-hero-video .isr-heading-display {
    /* Noto Sans Hebrew, loaded with the other webfonts by the mu-plugin — a
       Hebrew-first variable face. The weight is stated here to override the
       element's authored 900; 700 is a real instance, not a synthesised bold.
       The fallbacks carry Hebrew too, so a slow load still renders correctly. */
    font-family: "Noto Sans Hebrew", "Noto Sans", Arial, Helvetica, sans-serif;
    font-weight: 700;
    font-size: clamp(2.25rem, 7.6vw, 7rem);
    letter-spacing: -0.03em;
    /* Slightly translucent so the swell reads through the glyphs. 0.86 chosen
       against the BRIGHTEST footage behind the line (0.839 measured), not its
       mean: over bright foam opaque white is already 2.92:1, so 3:1 is not
       reachable there at any alpha, and 0.86 costs only 2.92 -> 2.65:1 while
       staying 3.35:1 across the average frame. Dial with --isr-title-alpha. */
    color: rgb(255 255 255 / var(--isr-title-alpha, 0.86));
}

@media (max-width: 1024px) {
    body .elementor .isr-hero-video .isr-heading-display {
        font-size: 4rem;
        letter-spacing: -0.03em;
    }
}

@media (max-width: 767px) {
    body .elementor .isr-hero-video .isr-heading-display {
        font-size: 3.25rem;
        letter-spacing: -0.028em;
    }
}

@keyframes isr-hero-title-grow {
    from { transform: scale(1); }
    to   { transform: scale(1.12); }
}

/* Held to >=768px: on a phone the line already fills the column edge to edge
   (measured 372px inside a 372px container at 420px wide), so scaling it would
   push the text past the viewport rather than read as growth. */

@supports (animation-timeline: scroll()) {
    @media (min-width: 768px) and (prefers-reduced-motion: no-preference) {
        body .elementor .isr-hero-video .isr-heading-display {
            transform-origin: center center;
            will-change: transform;
            animation: isr-hero-title-grow linear both;
            animation-timeline: scroll(root block);
            animation-range: 0 60vh;
        }
    }
}


/* || ISR header — solid variant (.isr-header--solid)

   The default header is transparent until .is-scrolled and carries the light
   logo, which reads over the hero video but disappears on a white page. The
   subpage header opts out of the transparent state and stays solid from the
   top, so the light logo always has something dark behind it. Stated at the
   same specificity as the base rule so it wins regardless of source order. */

body .elementor .isr-header.isr-header--solid,
body .elementor .isr-header.isr-header--solid.is-scrolled {
    background-color: #FFFFFF;
    backdrop-filter: none;
    border-block-end-color: var(--Grey-300);
}

/* No hero behind it, so the glyph shadow that lifts the nav off video is noise. */
body .elementor .isr-header.isr-header--solid:not(.is-scrolled) {
    text-shadow: none;
}


/* --- production overrides (this site's asset paths) --- */
body .elementor .isr-wave-bg {
    --isr-wave-image: url('/wp-content/uploads/2026/09/mernstein-mark-large-1.png');
}/* End custom CSS */