/* Strive Widgets — Mosaic Gallery v1.6.0 */
/* Same mobile safeguard as the carousels: give the widget a definite width inside Elementor flex containers. */
.elementor-widget-strive_mosaic_gallery{width:100%;min-width:0}
.strive-mg{
  --mg-gap:20px;--mg-dir:row;--mg-pdir:row;--mg-zoom:1.05;--mg-hd:1000ms;
  --mg-ov:rgba(0,0,0,0);--mg-ov-h:rgba(0,0,0,.18);--mg-od:400ms;--mg-rv:28px;--mg-rd:900ms;
  display:flex;flex-direction:var(--mg-dir);gap:var(--mg-gap);width:100%;min-width:0;margin:0;padding:0}
/* 4 columns = two pairs side by side; "2 columns" stacks each pair (col 1 over col 2, col 3 over col 4) */
.strive-mg__pair{display:flex;flex-direction:var(--mg-pdir);gap:var(--mg-gap);flex:1 1 0;min-width:0}
.strive-mg__col{display:flex;flex-direction:column;gap:var(--mg-gap);flex:1 1 0;min-width:0}
.strive-mg__col:empty{display:none}

.strive-mg__item{position:relative;flex:none;width:100%;margin:0;padding:0;overflow:hidden;isolation:isolate;
  aspect-ratio:var(--mg-ro,var(--mg-r,3 / 2));background-color:#111;box-sizing:border-box;
  transition:border-color .3s ease,box-shadow .3s ease}
.strive-mg .strive-mg__inner{position:absolute;inset:0;display:block;color:inherit;text-decoration:none;outline:none}
.strive-mg a.strive-mg__inner:focus-visible{outline:1px solid var(--e-global-color-accent,#F15423);outline-offset:-3px}
.strive-mg a.strive-mg__inner{cursor:pointer}
.strive-mg .is-lightbox a.strive-mg__inner{cursor:zoom-in}

.strive-mg .strive-mg__img{position:absolute;inset:0;display:block;width:100%;height:100%;max-width:none;max-height:none;margin:0;
  border:0;border-radius:0;box-shadow:none;object-fit:cover;object-position:var(--mg-x,50%) var(--mg-y,50%);
  transform:scale(1);transition:transform var(--mg-hd) cubic-bezier(.2,.7,.2,1),filter .6s ease,opacity .6s ease}
.strive-mg .strive-mg__item:hover .strive-mg__img{transform:scale(var(--mg-zoom))}

.strive-mg__ov{position:absolute;inset:0;z-index:1;pointer-events:none;background:var(--mg-ov);transition:background-color var(--mg-od) ease}
.strive-mg__item:hover .strive-mg__ov{background:var(--mg-ov-h)}

.strive-mg__icon{position:absolute;left:50%;top:50%;z-index:2;display:inline-flex;font-size:28px;line-height:1;color:#fff;pointer-events:none;
  opacity:0;transform:translate(-50%,-50%) scale(.85);transition:opacity var(--mg-od) ease,transform var(--mg-od) ease}
.strive-mg__icon svg{width:1em;height:1em;fill:currentColor}
.strive-mg__item:hover .strive-mg__icon,.strive-mg__inner:focus-visible .strive-mg__icon{opacity:1;transform:translate(-50%,-50%) scale(1)}

.strive-mg__cap-wrap{position:absolute;inset:0;z-index:3;display:flex;flex-direction:column;justify-content:flex-end;align-items:flex-start;
  padding:20px;pointer-events:none;box-sizing:border-box}
.strive-mg__caption{display:inline-block;max-width:100%;color:#fff;font-size:12px;line-height:1.5;letter-spacing:3px;text-transform:uppercase;font-weight:300}
.strive-mg--cap-hover .strive-mg__caption{opacity:0;transform:translateY(8px);transition:opacity var(--mg-od) ease,transform var(--mg-od) ease}
.strive-mg--cap-hover .strive-mg__item:hover .strive-mg__caption,
.strive-mg--cap-hover .strive-mg__inner:focus-visible .strive-mg__caption{opacity:1;transform:none}

/* reveal on scroll — only "armed" by the script, so images always show without JS and in the editor */
.strive-mg--reveal.is-armed .strive-mg__item{opacity:0;transform:translateY(var(--mg-rv))}
.strive-mg--reveal.is-armed .strive-mg__item.is-in{opacity:1;transform:none;
  transition:opacity var(--mg-rd) ease var(--mg-dl,0ms),transform var(--mg-rd) cubic-bezier(.2,.7,.2,1) var(--mg-dl,0ms),border-color .3s ease,box-shadow .3s ease}

@media (hover:none){.strive-mg .strive-mg__item:hover .strive-mg__img{transform:none}}
@media (prefers-reduced-motion:reduce){
  .strive-mg .strive-mg__img,.strive-mg__ov,.strive-mg__icon,.strive-mg__caption{transition:none!important}
  .strive-mg--reveal.is-armed .strive-mg__item{opacity:1!important;transform:none!important}
}
