.elementor-690 .elementor-element.elementor-element-303b63d{--display:flex;}/* Start custom CSS *//* translate3d (not translateX) keeps these on the GPU compositor instead of the
   main thread. With 26 animations running at once the marquee was dropping
   frames, which reads as a jump. will-change pins the layer up front. */
@keyframes wv{from{transform:translate3d(0,0,0)}to{transform:translate3d(-1440px,0,0)}}
@keyframes wv2{from{transform:translate3d(-1440px,0,0)}to{transform:translate3d(0,0,0)}}
@keyframes caust{0%{background-position:0 0,0 0}100%{background-position:600px -300px,-500px 400px}}
@keyframes swell{0%,100%{transform:translate3d(0,0,0)}50%{transform:translate3d(0,-15px,0)}}
@keyframes swell2{0%,100%{transform:translate3d(0,-8px,0)}50%{transform:translate3d(0,6px,0)}}
@keyframes marq{from{transform:translate3d(0,0,0)}to{transform:translate3d(-50%,0,0)}}

@keyframes rise{0%{transform:translate3d(0,0,0) scale(.6);opacity:0}7%{opacity:1}86%{opacity:.5}100%{transform:translate3d(0,-820px,0) scale(1.24);opacity:0}}
@keyframes rise2{0%{transform:translate3d(0,0,0) scale(.55);opacity:0}6%{opacity:1}88%{opacity:.45}100%{transform:translate3d(0,-980px,0) scale(1.3);opacity:0}}
@keyframes rise3{0%{transform:translate3d(0,0,0) scale(.65);opacity:0}8%{opacity:1}85%{opacity:.5}100%{transform:translate3d(0,-1050px,0) scale(1.2);opacity:0}}
@keyframes rise4{0%{transform:translate3d(0,0,0) scale(.58);opacity:0}7%{opacity:1}87%{opacity:.48}100%{transform:translate3d(0,-900px,0) scale(1.26);opacity:0}}

.elementor-element-390fa1,.elementor-element-5b8d864c,.elementor-element-70709b11,
.elementor-element-7f9f9c12,.elementor-element-475b012d,.elementor-element-5fd9da8f,
.elementor-element-1508e012,.elementor-element-7f6d0854,.elementor-element-2d3f1899,
.elementor-element-47351d7a,.elementor-element-63529c4d,.elementor-element-46ae7571,
.elementor-element-1541f6c2,.elementor-element-77c29d42{
  will-change:transform;backface-visibility:hidden}

/* hero waves */
.elementor-element-390fa1{animation:swell 9s ease-in-out infinite}
.elementor-element-5b8d864c{animation:wv2 41s linear infinite}
.elementor-element-70709b11{animation:wv 29s linear infinite}
.elementor-element-7f9f9c12{animation:wv2 19s linear infinite}
.elementor-element-475b012d{animation:wv 13s linear infinite}

/* section 2 bubbles — they live in their own clipping layer fb500eb so the
   section itself can stay overflow:visible (see the scroll-reveal note below) */
.elementor-element-47c6dee0{animation:rise 15s ease-in -2s infinite normal backwards}
.elementor-element-6b9b6a75{animation:rise4 20s ease-in -11s infinite normal backwards}
.elementor-element-940b815{animation:rise2 19s ease-in -5s infinite normal backwards}
.elementor-element-19cb8446{animation:rise 21s ease-in -14s infinite normal backwards}
.elementor-element-5b188168{animation:rise3 26s ease-in -8s infinite normal backwards}
.elementor-element-528271a7{animation:rise4 18s ease-in -13s infinite normal backwards}
.elementor-element-4cf740b2{animation:rise2 24s ease-in -3s infinite normal backwards}
.elementor-element-56e216{animation:rise 16s ease-in -9s infinite normal backwards}
.elementor-element-2528d78e{animation:rise4 17s ease-in -6s infinite normal backwards}
.elementor-element-69bc8c08{animation:rise3 23s ease-in -17s infinite normal backwards}

/* circle on ::before so its pop never fights the rise translate; ::after is an
   invisible 26px collar that widens the hover target */
.elementor-element-47c6dee0::before,.elementor-element-6b9b6a75::before,
.elementor-element-940b815::before,.elementor-element-19cb8446::before,
.elementor-element-5b188168::before,.elementor-element-528271a7::before,
.elementor-element-4cf740b2::before,.elementor-element-56e216::before,
.elementor-element-2528d78e::before,.elementor-element-69bc8c08::before{
  content:'';position:absolute;inset:0;border-radius:50%}

.elementor-element-47c6dee0::after,.elementor-element-6b9b6a75::after,
.elementor-element-940b815::after,.elementor-element-19cb8446::after,
.elementor-element-5b188168::after,.elementor-element-528271a7::after,
.elementor-element-4cf740b2::after,.elementor-element-56e216::after,
.elementor-element-2528d78e::after,.elementor-element-69bc8c08::after{
  content:'';position:absolute;inset:-26px;border-radius:50%}

.elementor-element-47c6dee0:hover::before,.elementor-element-6b9b6a75:hover::before,
.elementor-element-940b815:hover::before,.elementor-element-19cb8446:hover::before,
.elementor-element-5b188168:hover::before,.elementor-element-528271a7:hover::before,
.elementor-element-4cf740b2:hover::before,.elementor-element-56e216:hover::before,
.elementor-element-2528d78e:hover::before,.elementor-element-69bc8c08:hover::before{
  transform:scale(2.9);opacity:0;
  transition:transform .3s cubic-bezier(.18,.74,.28,1),opacity .24s ease-out .05s}

.elementor-element-47c6dee0::before{background-color:rgba(190,230,230,.46);transition:transform 0s,opacity 2.4s ease-in 15s}
.elementor-element-940b815::before{background-color:rgba(190,230,230,.70);transition:transform 0s,opacity 2.4s ease-in 19s}
.elementor-element-69bc8c08::before{background-color:rgba(190,230,230,.40);transition:transform 0s,opacity 2.4s ease-in 23s}
.elementor-element-2528d78e::before{background-color:rgba(190,230,230,.60);transition:transform 0s,opacity 2.4s ease-in 17s}
.elementor-element-19cb8446::before{background-color:rgba(190,230,230,.52);transition:transform 0s,opacity 2.4s ease-in 21s}
.elementor-element-5b188168::before{background-color:rgba(190,230,230,.44);transition:transform 0s,opacity 2.4s ease-in 26s}
.elementor-element-528271a7::before{background-color:rgba(190,230,230,.66);transition:transform 0s,opacity 2.4s ease-in 18s}
.elementor-element-4cf740b2::before{background-color:rgba(190,230,230,.48);transition:transform 0s,opacity 2.4s ease-in 24s}
.elementor-element-56e216::before{background-color:rgba(190,230,230,.74);transition:transform 0s,opacity 2.4s ease-in 16s}
.elementor-element-6b9b6a75::before{background-color:rgba(190,230,230,.56);transition:transform 0s,opacity 2.4s ease-in 20s}

.elementor-element-6f55ac55{pointer-events:none}
.elementor-element-6f55ac55 a,.elementor-element-6f55ac55 button{pointer-events:auto}

/* ---- GALLERY TAB SWITCH ---------------------------------------------------
   MUST key off .e--selected, NOT :not([hidden]). Elementor renders [hidden] on
   inactive panels, but after a click the JS REMOVES [hidden] and switches to an
   inline display:none plus .e--selected. Only .e--selected is right in both.

   THE `opacity:0` BASE LINE FIXES THE RETURN-VISIT JUMP. On a return the tiles
   already exist fully painted, so a stray frame between display being restored
   and the restarted animation being sampled flashed them at full strength
   before snapping back to 0%. Pinning the un-animated base to 0 makes that
   frame paint nothing. First visits never had the bug because nothing had been
   painted — exactly the asymmetry Almog reported. Confirmed fixed.
   It lives inside the reduced-motion guard so nothing is forced to zero when
   the animation is not defined.

   THE GALLERY TILES HAVE NO SCROLL REVEAL, on purpose. Two variants were built
   and both rejected — a scale-only fade on the <img>, then the full revealPhoto
   on the tile. This tab entrance is the only animation the gallery gets. */
@media (prefers-reduced-motion:no-preference){
  @keyframes tabIn{
    0%{opacity:0;transform:translate3d(0,16px,0) scale(.99)}
    35%{opacity:.9}
    100%{opacity:1;transform:translate3d(0,0,0) scale(1)}}

  .elementor-690 .e-tab-content-base > * > *{opacity:0}

  .elementor-690 .e-tab-content-base.e--selected > * > *{
    animation:tabIn .32s ease-out both}
  .elementor-690 .e-tab-content-base.e--selected > * > *:nth-child(1){animation-delay:0s}
  .elementor-690 .e-tab-content-base.e--selected > * > *:nth-child(2){animation-delay:.04s}
  .elementor-690 .e-tab-content-base.e--selected > * > *:nth-child(3){animation-delay:.08s}
  .elementor-690 .e-tab-content-base.e--selected > * > *:nth-child(4){animation-delay:.12s}
}

/* ---- SCROLL REVEALS — stage 1 --------------------------------------------
   THREE THINGS LEARNED THE HARD WAY, do not undo them:

   1. RANGE MUST END AT "cover 50%". cover 50% is the one value that means the
      same thing on every screen: the element sits dead centre of the viewport.

   2. NEVER USE THE "entry" PHASE. It is only as long as the element is tall.

   3. view() BINDS TO THE NEAREST SCROLLABLE ANCESTOR. Any overflow:hidden box
      is a cage that locks progress at 1 forever. FOUR cages were dismantled:
        • 5bac005f (artists)   — clipping moved to the bubble layer fb500eb
        • 5ef246c1 (CTA)       — nothing overflowed, clipping removed
        • 24422035 (gallery)   — clipping removed
        • 68a2a59b (tab grid)  — clipping removed; 0 overflowing descendants
      Keep 5bac005f open — the artist portraits depend on it.

   ALMOG'S CHOICES, do not "improve" them back:
     • the CTA block 18cd6080 stays still — no reveal on the closing section
     • in section 2 the four card titles stay still; the reveal belongs to the
       two artist PHOTOS (2bf2645f = Almog, 78b963ce = Goldie)
     • those two photos share ONE identical range — they arrive together
     • the gallery gets NO scroll reveal at all: not the columns, not the tiles,
       not the images. Only the tab entrance. Three attempts, all rejected.

   SELECTORS: e-paragraph and e-heading do NOT get an .elementor-element-<id>
   class — only e-div-block does. Reach them through the parent with nth-child. */
@supports (animation-timeline:view()){
  @media (prefers-reduced-motion:no-preference){
    @keyframes reveal{
      from{opacity:0;transform:translate3d(0,56px,0)}
      to{opacity:1;transform:translate3d(0,0,0)}}

    @keyframes revealPhoto{
      from{opacity:0;transform:translate3d(0,44px,0) scale(1.05)}
      to{opacity:1;transform:translate3d(0,0,0) scale(1)}}

    .elementor-element-3f14c019,.elementor-element-5107aded,
    .elementor-element-4a9cbb3d,.elementor-element-2fde5f06,
    .elementor-element-6d5cc01e,
    .elementor-element-3788842b > *:nth-child(1){
      animation:reveal linear both;
      animation-timeline:view();
      animation-range:cover 12% cover 50%;
      will-change:transform,opacity}


    /* the two artist portraits, one range, arriving in sync */
    .elementor-element-2bf2645f,.elementor-element-78b963ce{
      animation:revealPhoto linear both;
      animation-timeline:view();
      animation-range:cover 12% cover 50%;
      will-change:transform,opacity}
  }
}

/* marquee + gallery caustics */
.elementor-element-5fd9da8f{animation:marq 30s linear infinite}
.elementor-element-42ecb77d{animation:caust 34s linear infinite}

/* inverted wave divider */
.elementor-element-1508e012{animation:swell2 11s ease-in-out infinite}
.elementor-element-7f6d0854{animation:wv 33s linear infinite}
.elementor-element-2d3f1899{animation:wv2 17s linear infinite}

/* visit waves */
.elementor-element-47351d7a{animation:swell 9s ease-in-out infinite}
.elementor-element-63529c4d{animation:wv2 41s linear infinite}
.elementor-element-46ae7571{animation:wv 29s linear infinite}
.elementor-element-1541f6c2{animation:wv2 19s linear infinite}
.elementor-element-77c29d42{animation:wv 13s linear infinite}

/* final CTA caustics */
.elementor-element-677ca216{animation:caust 28s linear infinite}

/* Google Maps (V3 widget) */
.elementor-690 .elementor-widget-google_maps{display:flex;height:100%;align-self:stretch}
.elementor-690 .elementor-widget-google_maps > .elementor-widget-container{flex:1;display:flex;height:100%}
.elementor-690 .elementor-widget-google_maps .elementor-custom-embed{flex:1;display:flex;height:100%;min-height:390px}
.elementor-690 .elementor-widget-google_maps iframe{width:100%;height:100%;min-height:390px;border:0;display:block}

/* old site kit swaps a typography preset on a:hover — makes the nav jump */
.elementor-690 a:hover,.elementor-690 a:focus{font-family:inherit !important;font-size:inherit !important;font-weight:inherit !important;line-height:inherit !important;letter-spacing:inherit !important;text-decoration:none !important;color:inherit !important}
.elementor-690 a{transition:opacity .2s ease}
.elementor-690 a:hover{opacity:.8}

/* kill the old site kit's global button gradient on V4 atomic tabs */
.e-tab-base,.e-tab-base:hover,.e-tab-base:focus{background-image:none !important;box-shadow:none !important;text-shadow:none !important}
.e-tab-base{background-color:transparent !important;border-color:rgba(232,238,236,.22) !important}
.e-tab-base p,.e-tab-base span{color:rgba(232,238,236,.62) !important}
[data-id="41525c1e"] .e-tab-base.e--selected{background-color:#61a5ad !important;border-color:#61a5ad !important}
[data-id="6bcbd719"] .e-tab-base.e--selected{background-color:#9ecfc6 !important;border-color:#9ecfc6 !important}
.e-tab-base.e--selected p,.e-tab-base.e--selected span{color:#04080b !important}

/* ── במובייל סקשן 2 גבוה 1730px במקום 1090 (הכרטיסים נערמים), אז הבועות
   דהו באמצע הדרך ולא הגיעו לכרטיס העליון. אותן עקומות, מרחק גדול יותר.
   הגדרה חוזרת של @keyframes בתוך media query דורסת את הגלובלית כשהיא תואמת. */
@media (max-width:880px){
  @keyframes rise{0%{transform:translate3d(0,0,0) scale(.6);opacity:0}7%{opacity:1}86%{opacity:.5}100%{transform:translate3d(0,-1300px,0) scale(1.24);opacity:0}}
  @keyframes rise4{0%{transform:translate3d(0,0,0) scale(.58);opacity:0}7%{opacity:1}87%{opacity:.48}100%{transform:translate3d(0,-1430px,0) scale(1.26);opacity:0}}
  @keyframes rise2{0%{transform:translate3d(0,0,0) scale(.55);opacity:0}6%{opacity:1}88%{opacity:.45}100%{transform:translate3d(0,-1560px,0) scale(1.3);opacity:0}}
  @keyframes rise3{0%{transform:translate3d(0,0,0) scale(.65);opacity:0}8%{opacity:1}85%{opacity:.5}100%{transform:translate3d(0,-1670px,0) scale(1.2);opacity:0}}
}

/* ── אקורדיון: <details> נייטיבי נפתח מיידית, וזו ה"קפיצה".
   שתי שכבות — הפנימית עובדת בכל דפדפן, החיצונית מוסיפה גובה מונפש
   בדפדפנים שתומכים ב-::details-content (כרום 131+, ספארי 18.4+). */
@media (prefers-reduced-motion:no-preference){
  @keyframes accIn{from{opacity:0;transform:translate3d(0,-6px,0)}to{opacity:1;transform:none}}
  .elementor-690 .e-accordion-item-content-base > *{animation:accIn .28s ease-out both}
  @supports (interpolate-size:allow-keywords) and (body.elementor-page-690(::details-content)){
    .elementor-690 details{interpolate-size:allow-keywords}
    .elementor-690 details::details-content{
      block-size:0;overflow:hidden;
      transition:block-size .3s ease, content-visibility .3s allow-discrete;
      transition-behavior:allow-discrete}
    .elementor-690 details[open]::details-content{block-size:auto}
  }
}

/* ── כפתור הנגישות של tabnav.
   הכפתור עצמו הוא position:fixed בתוך Shadow DOM ולא ניתן לתפיסה מבחוץ —
   אבל transform/filter על אלמנט המארח הופכים אותו לבלוק־מכיל, וה-fixed
   מתמקם יחסית אליו. המארח 0x0 כדי שלא יחסום לחיצות.
   צבע ושקיפות חלים בכל הרוחבים; המיקום המיוחד רק במובייל.
   ברירת המחדל left:0;bottom:0 משחזרת בדיוק את הפינה השמאלית־תחתונה
   שהכפתור היה בה ממילא בדסקטופ. */
button-expand-panel-element{
  position:fixed;left:0;bottom:0;top:auto;right:auto;width:0;height:0;
  transform:translateZ(0);z-index:2147483647;
  /* #3f51b5 -> #2f6b74 (mogiz-deep-teal) — הערכים מחיפוש נומרי מול מטריצות W3C.
     שלוש הפעולות משמרות אפור, ולכן הלבן של האייקון נשאר לבן. */
  filter:hue-rotate(-53deg) saturate(.48) brightness(1.12);
  opacity:.75;transition:opacity .2s ease}
button-expand-panel-element:hover,
button-expand-panel-element:active,
button-expand-panel-element:focus-within{opacity:1}
@media (max-width:880px){
  button-expand-panel-element{
    left:auto;bottom:auto;right:88px;
    top:calc(178px + env(safe-area-inset-top,0px))}
}
}

/* מארח הסקריפט של טעינת הגלריה — לא תופס מקום */
.elementor-690 .elementor-element-303b63d{display:none}
.elementor-690 .elementor-element-bbce8b38{display:none}/* End custom CSS */