.elementor-3040 .elementor-element.elementor-element-803a629{--display:flex;--min-height:0px;--padding-top:25px;--padding-bottom:5px;--padding-left:25px;--padding-right:25px;--z-index:1;}.elementor-3040 .elementor-element.elementor-element-1b7b088{--display:flex;--min-height:80vh;--flex-direction:column;--container-widget-width:calc( ( 1 - var( --container-widget-flex-grow ) ) * 100% );--container-widget-height:initial;--container-widget-flex-grow:0;--container-widget-align-self:initial;--flex-wrap-mobile:wrap;--justify-content:center;--align-items:center;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;--z-index:3;}.elementor-3040 .elementor-element.elementor-element-9f640ba{width:100%;max-width:100%;margin:-20px 0px calc(var(--kit-widget-spacing, 0px) + 0px) 0px;}.elementor-3040 .elementor-element.elementor-element-9f640ba.elementor-element{--align-self:center;}.elementor-3040 .elementor-element.elementor-element-f773526{--display:flex;--min-height:0px;--padding-top:25px;--padding-bottom:5px;--padding-left:25px;--padding-right:25px;--z-index:1;}.elementor-3040 .elementor-element.elementor-element-dc4e20b{--display:flex;--min-height:80vh;--flex-direction:column;--container-widget-width:calc( ( 1 - var( --container-widget-flex-grow ) ) * 100% );--container-widget-height:initial;--container-widget-flex-grow:0;--container-widget-align-self:initial;--flex-wrap-mobile:wrap;--justify-content:center;--align-items:center;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;--z-index:3;}.elementor-3040 .elementor-element.elementor-element-c14b57d{width:100%;max-width:100%;margin:-20px 0px calc(var(--kit-widget-spacing, 0px) + 0px) 0px;}.elementor-3040 .elementor-element.elementor-element-c14b57d.elementor-element{--align-self:center;}.elementor-3040 .elementor-element.elementor-element-e682013{--display:flex;--flex-direction:row;--container-widget-width:calc( ( 1 - var( --container-widget-flex-grow ) ) * 100% );--container-widget-height:100%;--container-widget-flex-grow:1;--container-widget-align-self:stretch;--flex-wrap-mobile:wrap;--justify-content:center;--align-items:center;--padding-top:10px;--padding-bottom:0px;--padding-left:25px;--padding-right:25px;--z-index:999;}.elementor-3040 .elementor-element.elementor-element-e682013:not(.elementor-motion-effects-element-type-background), .elementor-3040 .elementor-element.elementor-element-e682013 > .elementor-motion-effects-container > .elementor-motion-effects-layer{background-color:#FFFFFF;}.elementor-3040 .elementor-element.elementor-element-6a0eb46{width:var( --container-widget-width, 37.029% );max-width:37.029%;padding:0px 0px 0px 0px;--container-widget-width:37.029%;--container-widget-flex-grow:0;}.elementor-3040 .elementor-element.elementor-element-6a0eb46.elementor-element{--flex-grow:0;--flex-shrink:0;}.elementor-3040 .elementor-element.elementor-element-fd37250{--display:flex;--padding-top:8px;--padding-bottom:025px;--padding-left:025px;--padding-right:025px;--z-index:1;}.elementor-widget-loop-grid .elementor-button{background-color:var( --e-global-color-accent );font-family:var( --e-global-typography-accent-font-family ), Sans-serif;font-weight:var( --e-global-typography-accent-font-weight );}.elementor-widget-loop-grid .elementor-pagination{font-family:var( --e-global-typography-secondary-font-family ), Sans-serif;font-weight:var( --e-global-typography-secondary-font-weight );}.elementor-widget-loop-grid .e-load-more-message{font-family:var( --e-global-typography-secondary-font-family ), Sans-serif;font-weight:var( --e-global-typography-secondary-font-weight );}.elementor-3040 .elementor-element.elementor-element-0aa411c{--grid-columns:3;--grid-row-gap:5px;--grid-column-gap:5px;}@media(max-width:1024px){.elementor-3040 .elementor-element.elementor-element-0aa411c{--grid-columns:2;}}@media(min-width:768px){.elementor-3040 .elementor-element.elementor-element-803a629{--content-width:100%;}.elementor-3040 .elementor-element.elementor-element-1b7b088{--width:100%;}.elementor-3040 .elementor-element.elementor-element-f773526{--content-width:100%;}.elementor-3040 .elementor-element.elementor-element-dc4e20b{--width:100%;}.elementor-3040 .elementor-element.elementor-element-e682013{--content-width:100%;}.elementor-3040 .elementor-element.elementor-element-fd37250{--content-width:100%;}}@media(max-width:767px){.elementor-3040 .elementor-element.elementor-element-803a629{--min-height:0px;--padding-top:05px;--padding-bottom:05px;--padding-left:05px;--padding-right:05px;--z-index:1;}.elementor-3040 .elementor-element.elementor-element-1b7b088{--z-index:1;}.elementor-3040 .elementor-element.elementor-element-9f640ba{width:var( --container-widget-width, 100% );max-width:100%;--container-widget-width:100%;--container-widget-flex-grow:0;}.elementor-3040 .elementor-element.elementor-element-f773526{--min-height:0px;}.elementor-3040 .elementor-element.elementor-element-e682013{--gap:0px 0px;--row-gap:0px;--column-gap:0px;--padding-top:15px;--padding-bottom:0px;--padding-left:05px;--padding-right:05px;--z-index:1;}.elementor-3040 .elementor-element.elementor-element-6a0eb46{width:100%;max-width:100%;z-index:100;}.elementor-3040 .elementor-element.elementor-element-fd37250{--align-items:center;--container-widget-width:calc( ( 1 - var( --container-widget-flex-grow ) ) * 100% );--gap:0px 0px;--row-gap:0px;--column-gap:0px;--padding-top:5px;--padding-bottom:150px;--padding-left:05px;--padding-right:05px;--z-index:1;}.elementor-3040 .elementor-element.elementor-element-0aa411c{--grid-columns:2;--grid-row-gap:3px;z-index:1;--grid-column-gap:3px;}.elementor-3040 .elementor-element.elementor-element-0aa411c > .elementor-widget-container{margin:0px 0px 0px 0px;padding:00px 00px 00px 00px;border-radius:0px 0px 0px 0px;}.elementor-3040 .elementor-element.elementor-element-0aa411c.elementor-element{--align-self:center;}}/* Start custom CSS for html, class: .elementor-element-9f640ba *//* EH widget: force mobile fit + -2px font size */
@media (max-width: 767px){
  .eh-widget .eh-mount{
    padding: 0 12px !important;      /* keep text off the edges */
    inset: 0 !important;
  }
  .eh-widget .eh-rotator{
    font-size: 16px !important;      /* 2px smaller (18 -> 16) */
    line-height: 1.25em !important;
    width: 100% !important;
    max-width: 100% !important;
    box-sizing: border-box !important;
    min-height: 2.6em !important;    /* reserve room for 2 lines */
    align-items: stretch !important; /* make child lines span full width */
  }
  .eh-widget .eh-line{
    white-space: normal !important;   /* allow wrapping */
    word-break: break-word !important;
    overflow-wrap: anywhere !important;
    hyphens: auto !important;
    display: block !important;
    text-align: center !important;    /* keep centered look */
  }
}/* End custom CSS */
/* Start custom CSS for container, class: .elementor-element-1b7b088 *//* Container → Advanced → Custom CSS */
.elementor-3040 .elementor-element.elementor-element-1b7b088{
  position: relative;
  overflow: hidden;          /* clip bg video edges */
  box-sizing: border-box;    /* Min Height includes padding */
}

/* Prevent headings/paragraph default margins from inflating height */
.elementor-3040 .elementor-element.elementor-element-1b7b088 h1, 
.elementor-3040 .elementor-element.elementor-element-1b7b088 h2, 
.elementor-3040 .elementor-element.elementor-element-1b7b088 h3, 
.elementor-3040 .elementor-element.elementor-element-1b7b088 p { 
  margin-block: 0; 
}

/* Background video wrappers: fill container without affecting its height */
.elementor-3040 .elementor-element.elementor-element-1b7b088 .elementor-background-video-container,
.elementor-3040 .elementor-element.elementor-element-1b7b088 .e-background-video-container{
  position: absolute !important;
  inset: 0 !important;
  overflow: hidden !important;
  z-index: 0;
  pointer-events: none !important;
}

/* Self-hosted video: true cover */
.elementor-3040 .elementor-element.elementor-element-1b7b088 .elementor-background-video-container > video,
.elementor-3040 .elementor-element.elementor-element-1b7b088 .e-background-video-container > video{
  position: absolute !important;
  inset: 0 !important;
  width: 100% !important;
  height: 100% !important;
  object-fit: cover !important;
  transform: none !important;
  max-width: none !important;
  max-height: none !important;
  pointer-events: none !important;
}

/* YouTube/Vimeo iframe: center + oversize to kill letterboxing */
.elementor-3040 .elementor-element.elementor-element-1b7b088 .elementor-background-video-embed,
.elementor-3040 .elementor-element.elementor-element-1b7b088 .elementor-background-video-container iframe,
.elementor-3040 .elementor-element.elementor-element-1b7b088 .e-background-video-container iframe{
  position: absolute !important;
  top: 50% !important;
  left: 50% !important;
  transform: translate(-50%, -50%) !important;
  width: 120% !important;
  height: 120% !important;
  min-width: 100% !important;
  min-height: 100% !important;
  pointer-events: none !important;
}

/* Make sure your foreground content stays above the video */
.elementor-3040 .elementor-element.elementor-element-1b7b088 > .elementor-container,
.elementor-3040 .elementor-element.elementor-element-1b7b088 .elementor-widget-wrap{
  position: relative;
  z-index: 1;
}/* End custom CSS */
/* Start custom CSS for container, class: .elementor-element-dc4e20b *//* Container → Advanced → Custom CSS */
.elementor-3040 .elementor-element.elementor-element-dc4e20b{
  position: relative;
  overflow: hidden;          /* clip bg video edges */
  box-sizing: border-box;    /* Min Height includes padding */
}

/* Prevent headings/paragraph default margins from inflating height */
.elementor-3040 .elementor-element.elementor-element-dc4e20b h1, 
.elementor-3040 .elementor-element.elementor-element-dc4e20b h2, 
.elementor-3040 .elementor-element.elementor-element-dc4e20b h3, 
.elementor-3040 .elementor-element.elementor-element-dc4e20b p { 
  margin-block: 0; 
}

/* Background video wrappers: fill container without affecting its height */
.elementor-3040 .elementor-element.elementor-element-dc4e20b .elementor-background-video-container,
.elementor-3040 .elementor-element.elementor-element-dc4e20b .e-background-video-container{
  position: absolute !important;
  inset: 0 !important;
  overflow: hidden !important;
  z-index: 0;
  pointer-events: none !important;
}

/* Self-hosted video: true cover */
.elementor-3040 .elementor-element.elementor-element-dc4e20b .elementor-background-video-container > video,
.elementor-3040 .elementor-element.elementor-element-dc4e20b .e-background-video-container > video{
  position: absolute !important;
  inset: 0 !important;
  width: 100% !important;
  height: 100% !important;
  object-fit: cover !important;
  transform: none !important;
  max-width: none !important;
  max-height: none !important;
  pointer-events: none !important;
}

/* YouTube/Vimeo iframe: center + oversize to kill letterboxing */
.elementor-3040 .elementor-element.elementor-element-dc4e20b .elementor-background-video-embed,
.elementor-3040 .elementor-element.elementor-element-dc4e20b .elementor-background-video-container iframe,
.elementor-3040 .elementor-element.elementor-element-dc4e20b .e-background-video-container iframe{
  position: absolute !important;
  top: 50% !important;
  left: 50% !important;
  transform: translate(-50%, -50%) !important;
  width: 120% !important;
  height: 120% !important;
  min-width: 100% !important;
  min-height: 100% !important;
  pointer-events: none !important;
}

/* Make sure your foreground content stays above the video */
.elementor-3040 .elementor-element.elementor-element-dc4e20b > .elementor-container,
.elementor-3040 .elementor-element.elementor-element-dc4e20b .elementor-widget-wrap{
  position: relative;
  z-index: 1;
}/* End custom CSS */
/* Start custom CSS for html, class: .elementor-element-6a0eb46 *//* --- Filters layout (centered; small spacing between lines) --- */
.ui-filters{ margin-bottom:18px; }
.ui-row.gap{
  display:flex; justify-content:center; align-items:center;
  gap:28px; flex-wrap:wrap;
}
#ui-level2{ margin-top:5px; }

/* --- Buttons: Inter, 14px, uppercase; BLACK always; no hover/active font change --- */
.ui-btn{
  background:transparent !important; border:0 !important; border-radius:0 !important;
  box-shadow:none !important; -webkit-appearance:none; appearance:none; -webkit-tap-highlight-color:transparent;
  padding:8px 0; cursor:pointer;

  font-family:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Arial,sans-serif;
  font-size:14px; text-transform:uppercase; letter-spacing:0.04em; line-height:1;
  color:#000 !important;

  font-weight:400;                 /* fixed weight so labels never move */
  transition: opacity .15s ease;
  position:relative;               /* for underline pseudo-element */
}

/* Thin underline — positioned VERY close to the text with no layout shift */
.ui-btn::after{
  content:"";
  position:absolute;
  left:50%;
  bottom:0;                        /* ← closer than before (was -3px) */
  transform:translateX(-50%);
  width:100%;
  height:1px;
  background:#000;
  opacity:0;
  transition: opacity .18s ease;
  pointer-events:none;
}
.ui-btn.active::after{ opacity:1; }

/* Child row fade when changing parent */
#ui-level2{
  opacity:1;
  transition: opacity .25s ease;
}
#ui-level2.is-fading-out{ opacity:0; }
#ui-level2.is-fading-in{ opacity:1; }

/* Grid fade (container) when swapping; per-image lazy reveal stays as you have it */
#ui-loop-grid{ transition: opacity .25s ease; will-change: opacity; }
#ui-loop-grid img.ui-lazy{
  opacity:0; transform: translateY(6px);
  transition: opacity .35s ease, transform .35s ease;
  will-change: opacity, transform;
}
#ui-loop-grid img.ui-lazy.is-visible{
  opacity:1; transform:none;
}

/* Respect reduced motion */
@media (prefers-reduced-motion: reduce){
  #ui-loop-grid, #ui-level2{ transition:none; }
  #ui-loop-grid img.ui-lazy{ transition:none; }
  .ui-btn{ transition:none; }
}

/* --- Your existing styles (kept as-is; they won’t conflict) --- */
.proj-filters{ display:flex; gap:1rem; align-items:center; margin-bottom:1rem; }
.proj-filters label{ display:flex; flex-direction:column; font-size:19rem; }
.proj-filters select{ min-width:220px; }/* End custom CSS */
/* Start custom CSS for loop-grid, class: .elementor-element-0aa411c *//* MOBILE ONLY: keep Elementor gutter controls; safe tweaks only */
@media (max-width: 767px){

  /* Widget wrapper — don’t touch Elementor gap vars */
  .elementor-3040 .elementor-element.elementor-element-0aa411c{
    margin:0 !important;
    padding:0 !important;
  }

  /* Items: don’t add phantom spacing */
  .elementor-3040 .elementor-element.elementor-element-0aa411c .elementor-loop-item,
  .elementor-3040 .elementor-element.elementor-element-0aa411c .elementor-grid-item{
    margin:0 !important;
    padding:0 !important;
    border:0 !important;
  }

  /* Only reset inner spacing inside the project card, not globally */
  .elementor-3040 .elementor-element.elementor-element-0aa411c .project-card .elementor-widget,
  .elementor-3040 .elementor-element.elementor-element-0aa411c .project-card .elementor-widget-container{
    margin:0 !important;
    padding:0 !important;
    border:0 !important;
  }

  /* Prevent baseline slivers; safe for masonry */
  .elementor-3040 .elementor-element.elementor-element-0aa411c figure,
  .elementor-3040 .elementor-element.elementor-element-0aa411c img{
    display:block !important;
    margin:0 !important;
    padding:0 !important;
    border:0 !important;
    line-height:0 !important;
  }

  /* Optional: disable image zoom on phones */
  .elementor-3040 .elementor-element.elementor-element-0aa411c .project-card:hover img{
    transform:none !important;
  }
}/* End custom CSS */