.elementor-23715 .elementor-element.elementor-element-ca7d621{--display:flex;--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;--align-items:stretch;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-23715 .elementor-element.elementor-element-ca7d621:not(.elementor-motion-effects-element-type-background), .elementor-23715 .elementor-element.elementor-element-ca7d621 > .elementor-motion-effects-container > .elementor-motion-effects-layer{background-color:var( --e-global-color-cream );}.elementor-23715 .elementor-element.elementor-element-ca7d621.e-con{--flex-grow:0;--flex-shrink:0;}.elementor-widget-heading .elementor-heading-title{font-family:var( --e-global-typography-primary-font-family ), Sans-serif;font-weight:var( --e-global-typography-primary-font-weight );line-height:var( --e-global-typography-primary-line-height );color:var( --e-global-color-primary );}.elementor-23715 .elementor-element.elementor-element-8c14de9{text-align:start;}.elementor-23715 .elementor-element.elementor-element-8c14de9 .elementor-heading-title{font-family:"Archivo", Sans-serif;font-size:76px;font-weight:300;line-height:1.06em;letter-spacing:-2.3px;color:var( --e-global-color-primary );}.elementor-widget-text-editor{font-family:var( --e-global-typography-text-font-family ), Sans-serif;font-weight:var( --e-global-typography-text-font-weight );line-height:var( --e-global-typography-text-line-height );color:var( --e-global-color-text );}.elementor-widget-text-editor.elementor-drop-cap-view-stacked .elementor-drop-cap{background-color:var( --e-global-color-primary );}.elementor-widget-text-editor.elementor-drop-cap-view-framed .elementor-drop-cap, .elementor-widget-text-editor.elementor-drop-cap-view-default .elementor-drop-cap{color:var( --e-global-color-primary );border-color:var( --e-global-color-primary );}.elementor-23715 .elementor-element.elementor-element-5b2259b{padding:20px 0px 0px 0px;text-align:start;font-family:"Raleway", Sans-serif;font-size:18px;font-weight:400;line-height:1.6em;color:var( --e-global-color-text );}.elementor-23715 .elementor-element.elementor-element-a2632ad{--display:flex;--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;--align-items:stretch;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-23715 .elementor-element.elementor-element-a2632ad:not(.elementor-motion-effects-element-type-background), .elementor-23715 .elementor-element.elementor-element-a2632ad > .elementor-motion-effects-container > .elementor-motion-effects-layer{background-color:var( --e-global-color-cream );}.elementor-23715 .elementor-element.elementor-element-a2632ad.e-con{--flex-grow:0;--flex-shrink:0;}.elementor-widget-eael-filterable-gallery .fg-caption-head .fg-item-price{font-family:var( --e-global-typography-text-font-family ), Sans-serif;font-weight:var( --e-global-typography-text-font-weight );line-height:var( --e-global-typography-text-line-height );}.elementor-widget-eael-filterable-gallery .fg-caption-head .fg-item-ratings{font-family:var( --e-global-typography-text-font-family ), Sans-serif;font-weight:var( --e-global-typography-text-font-weight );line-height:var( --e-global-typography-text-line-height );}.elementor-widget-eael-filterable-gallery .fg-item-category span{font-family:var( --e-global-typography-text-font-family ), Sans-serif;font-weight:var( --e-global-typography-text-font-weight );line-height:var( --e-global-typography-text-line-height );}.elementor-widget-eael-filterable-gallery .fg-filter-trigger > span{font-family:var( --e-global-typography-text-font-family ), Sans-serif;font-weight:var( --e-global-typography-text-font-weight );line-height:var( --e-global-typography-text-line-height );}.elementor-widget-eael-filterable-gallery .fg-layout-3-filter-controls li.control{font-family:var( --e-global-typography-text-font-family ), Sans-serif;font-weight:var( --e-global-typography-text-font-weight );line-height:var( --e-global-typography-text-line-height );}.elementor-widget-eael-filterable-gallery .eael-gallery-load-more .eael-filterable-gallery-load-more-text{font-family:var( --e-global-typography-text-font-family ), Sans-serif;font-weight:var( --e-global-typography-text-font-weight );line-height:var( --e-global-typography-text-line-height );}.elementor-23715 .elementor-element.elementor-element-5a3c352 .eael-filterable-gallery-item-wrap .eael-gallery-grid-item .gallery-item-thumbnail-wrap, 
                    .elementor-23715 .elementor-element.elementor-element-5a3c352 .eael-filterable-gallery-item-wrap .eael-grid-fg-box .eael-grid-fg-img,
                    .elementor-23715 .elementor-element.elementor-element-5a3c352 .eael-filterable-gallery-item-wrap .eael-hg-grid__cell-img .grid__cell-img-inner{height:300px;}.elementor-23715 .elementor-element.elementor-element-5a3c352 .eael-filter-gallery-wrapper{background-color:var(--e-global-color-cream);border-radius:0px;}.elementor-23715 .elementor-element.elementor-element-5a3c352 .eael-filter-gallery-control ul li.control{color:#444;}.elementor-23715 .elementor-element.elementor-element-5a3c352 .eael-filter-gallery-control ul > li.control{border-radius:0px;}.elementor-23715 .elementor-element.elementor-element-5a3c352 .eael-filter-gallery-control ul li.active{color:var(--e-global-color-primary);}.elementor-23715 .elementor-element.elementor-element-5a3c352 .eael-filter-gallery-control ul li.control.active{background:rgba(0,0,0,0);border-radius:0px;}.elementor-23715 .elementor-element.elementor-element-5a3c352 .eael-filterable-gallery-item-wrap .eael-gallery-grid-item, 
                    .elementor-23715 .elementor-element.elementor-element-5a3c352 .eael-filterable-gallery-item-wrap .eael-grid-fg-box,
                    .elementor-23715 .elementor-element.elementor-element-5a3c352 .eael-filterable-gallery-item-wrap .eael-hg-grid__cell-img{border-radius:0px;}.elementor-23715 .elementor-element.elementor-element-5a3c352 .gallery-item-caption-wrap.card-hover-bg{background-color:rgba(0,0,0,0.7);}.elementor-23715 .elementor-element.elementor-element-5a3c352 .video-popup-bg{background-color:rgba(0, 0, 0, .7);}.elementor-23715 .elementor-element.elementor-element-5a3c352 .video-popup:hover > img{transform:scale(1.1);}.elementor-23715 .elementor-element.elementor-element-5a3c352 .eael-filterable-gallery-item-wrap .gallery-item-caption-wrap.caption-style-card{background-color:rgba(0,0,0,0);}.elementor-23715 .elementor-element.elementor-element-5a3c352 .fg-layout-3-item-content{background-color:rgba(0,0,0,0);}.elementor-23715 .elementor-element.elementor-element-5a3c352 .gallery-item-caption-wrap.caption-style-card .fg-item-title{color:var(--e-global-color-primary);}.elementor-23715 .elementor-element.elementor-element-5a3c352 .gallery-item-caption-wrap.caption-style-card .fg-item-content{color:#444;}.elementor-23715 .elementor-element.elementor-element-5a3c352 .gallery-item-caption-wrap .gallery-item-buttons > a span{background:#ff622a;color:#fff;height:50px;line-height:50px;width:50px;font-size:18px;border-radius:100px;transition:300ms;}.elementor-23715 .elementor-element.elementor-element-5a3c352 .gallery-item-caption-wrap .gallery-item-buttons > a span img{height:18px;width:18px;}.elementor-23715 .elementor-element.elementor-element-5a3c352 .gallery-item-caption-wrap .gallery-item-buttons > a span:hover{background:#ff622a;color:#fff;border-radius:100px;}.elementor-23715 .elementor-element.elementor-element-5a3c352 #eael-fg-no-items-found{text-align:center;color:#858e9a;border-radius:0px;}.elementor-23715 .elementor-element.elementor-element-95ee04b{--display:flex;--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;--align-items:center;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-23715 .elementor-element.elementor-element-95ee04b:not(.elementor-motion-effects-element-type-background), .elementor-23715 .elementor-element.elementor-element-95ee04b > .elementor-motion-effects-container > .elementor-motion-effects-layer{background-color:var( --e-global-color-primary );}.elementor-23715 .elementor-element.elementor-element-ccb1645{text-align:center;}.elementor-23715 .elementor-element.elementor-element-ccb1645 .elementor-heading-title{font-family:"Archivo", Sans-serif;font-size:48px;font-weight:300;line-height:1.06em;letter-spacing:-1.35px;color:var( --e-global-color-cream );}.elementor-23715 .elementor-element.elementor-element-0af0a3c{text-align:center;font-family:"Raleway", Sans-serif;font-size:17px;font-weight:400;line-height:1.6em;color:var( --e-global-color-footerputty );}.elementor-widget-button .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 );letter-spacing:var( --e-global-typography-accent-letter-spacing );}.elementor-23715 .elementor-element.elementor-element-0c56bf6 .elementor-button{background-color:var( --e-global-color-oxblood );font-family:"Archivo", Sans-serif;font-size:11.5px;font-weight:500;text-transform:uppercase;letter-spacing:2px;fill:#FAFAF8;color:#FAFAF8;border-radius:0px 0px 0px 0px;padding:17px 30px 17px 30px;}:root{--page-title-display:none;}@media(max-width:1024px){.elementor-widget-heading .elementor-heading-title{line-height:var( --e-global-typography-primary-line-height );}.elementor-23715 .elementor-element.elementor-element-8c14de9 .elementor-heading-title{font-size:56px;}.elementor-widget-text-editor{line-height:var( --e-global-typography-text-line-height );}.elementor-widget-eael-filterable-gallery .fg-caption-head .fg-item-price{line-height:var( --e-global-typography-text-line-height );}.elementor-widget-eael-filterable-gallery .fg-caption-head .fg-item-ratings{line-height:var( --e-global-typography-text-line-height );}.elementor-widget-eael-filterable-gallery .fg-item-category span{line-height:var( --e-global-typography-text-line-height );}.elementor-widget-eael-filterable-gallery .fg-filter-trigger > span{line-height:var( --e-global-typography-text-line-height );}.elementor-widget-eael-filterable-gallery .fg-layout-3-filter-controls li.control{line-height:var( --e-global-typography-text-line-height );}.elementor-widget-eael-filterable-gallery .eael-gallery-load-more .eael-filterable-gallery-load-more-text{line-height:var( --e-global-typography-text-line-height );}.elementor-widget-button .elementor-button{letter-spacing:var( --e-global-typography-accent-letter-spacing );}}@media(max-width:1024px) and (min-width:768px){.elementor-23715 .elementor-element.elementor-element-ca7d621{--width:883px;}.elementor-23715 .elementor-element.elementor-element-a2632ad{--width:883px;}}@media(max-width:767px){.elementor-23715 .elementor-element.elementor-element-ca7d621{--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-widget-heading .elementor-heading-title{line-height:var( --e-global-typography-primary-line-height );}.elementor-23715 .elementor-element.elementor-element-8c14de9 .elementor-heading-title{font-size:40px;letter-spacing:-1.2px;}.elementor-widget-text-editor{line-height:var( --e-global-typography-text-line-height );}.elementor-23715 .elementor-element.elementor-element-5b2259b{font-size:16px;}.elementor-23715 .elementor-element.elementor-element-a2632ad{--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-widget-eael-filterable-gallery .fg-caption-head .fg-item-price{line-height:var( --e-global-typography-text-line-height );}.elementor-widget-eael-filterable-gallery .fg-caption-head .fg-item-ratings{line-height:var( --e-global-typography-text-line-height );}.elementor-widget-eael-filterable-gallery .fg-item-category span{line-height:var( --e-global-typography-text-line-height );}.elementor-widget-eael-filterable-gallery .fg-filter-trigger > span{line-height:var( --e-global-typography-text-line-height );}.elementor-widget-eael-filterable-gallery .fg-layout-3-filter-controls li.control{line-height:var( --e-global-typography-text-line-height );}.elementor-widget-eael-filterable-gallery .eael-gallery-load-more .eael-filterable-gallery-load-more-text{line-height:var( --e-global-typography-text-line-height );}.elementor-23715 .elementor-element.elementor-element-95ee04b{--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-23715 .elementor-element.elementor-element-ccb1645 .elementor-heading-title{font-size:36px;letter-spacing:-0.85px;}.elementor-23715 .elementor-element.elementor-element-0af0a3c{font-size:16px;}.elementor-widget-button .elementor-button{letter-spacing:var( --e-global-typography-accent-letter-spacing );}}/* Start custom CSS for eael-filterable-gallery, class: .elementor-element-5a3c352 *//* ===== PROJECTS GALLERY: TILE WITH NO PHOTOGRAPH YET. 2026-08-21. =====
   A gallery item whose eael_fg_gallery_img is the explicit-empty {"url":"","id":""} form still
   renders an <img src="">, and the browser draws its BROKEN-IMAGE ICON in the top-left corner.
   Measured: naturalWidth 0, rect 359x300, wrapper background Limestone. So the plate itself is
   correct and only the failure glyph is wrong.

   visibility:hidden, NOT display:none - the img is what gives the plate its 300px height, so
   hiding it with display:none collapses the frame and the tile loses its picture area entirely.

   ⚠ SELF-CANCELLING: the moment a real photograph is set on the item, src is no longer empty,
   the rule stops matching and the image shows normally. Nobody has to come back and remove it.
   ⚠ Both forms are needed: img[src=""] for the rendered markup, img:not([src]) in case the
   attribute is dropped rather than emptied. Note LiteSpeed/lazysizes rewrites src on images that
   DO have one, which is why this cannot be written as a broader [src*=...] match - see the
   inert #hifi-hero-plate img[src*="placeholder"] rule on post 235 for what that mistake looks like.
   🔜 This exists only while the AVM and Sonus Faber tile is awaiting the owner's photography. */
.elementor-23715 .elementor-element.elementor-element-5a3c352 .eael-gallery-grid-item img[src=""],
.elementor-23715 .elementor-element.elementor-element-5a3c352 .eael-gallery-grid-item img:not([src]) {
  visibility: hidden;
}/* End custom CSS */
/* Start custom CSS *//* ABSOLUTE SOUND - Projects (post 23715). Gallery system, built 2026-08-05. */

/* ---------- 1. Section shells ---------- */
/* Grounds run full bleed; content caps to the Kit 1140 and centres, the same
   way Home Theater does it. Elementor's default 10px container padding is
   zeroed on the elements themselves. */
#prj-header,
#prj-band,
#prj-cta{
  padding-left:max(62px, calc((100% - 1140px) / 2));
  padding-right:max(62px, calc((100% - 1140px) / 2));
}
#prj-header{ padding-top:100px; padding-bottom:44px; }
#prj-band{ padding-top:0; padding-bottom:100px; }
#prj-cta{ padding-top:104px; padding-bottom:104px; }
#prj-header > .e-con-inner,
#prj-band > .e-con-inner,
#prj-cta > .e-con-inner{ padding:0; max-width:none; }

/* ---------- 2. Ranged left ---------- */
/* Elementor containers centre their children by default. */
#prj-header, #prj-band{ align-items:flex-start; }
#prj-header > *, #prj-band > *{ width:100%; max-width:100%; margin-left:0; margin-right:0; }
#prj-h1, #prj-h1 .elementor-heading-title, #prj-lede{ text-align:left; }
/* px, not ch: on the widget wrapper ch resolves against the inherited 16px
   body size, not the display size, which collapsed this to ~190px. Wide enough
   to keep the three-word headline on one line at 76px. */
#prj-h1{ max-width:900px; }
#prj-lede p{ margin:0; }

/* ---------- 3. Filter rail ---------- */
/* EA ships the control as display:flex + justify-content:center, which
   shrink-wrapped the list and parked it mid-page. */
#prj-band .eael-filter-gallery-control{ width:100%; margin:0; display:block; }
#prj-band .eael-filter-gallery-control ul{
  width:100%;
  display:flex; flex-wrap:wrap; gap:0 34px;
  justify-content:flex-start; align-items:stretch;
  margin:0; padding:0; list-style:none;
  border-top:1px solid var(--e-global-color-footerputty);
  border-bottom:1px solid var(--e-global-color-footerputty);
}
#prj-band .eael-filter-gallery-control ul li.control{
  margin:0; padding:15px 0; border:0; background:transparent;
  min-height:48px; display:inline-flex; align-items:center;
  line-height:1.2; transition:color .25s ease;
}
#prj-band .eael-filter-gallery-control ul li.control.active{
  box-shadow:inset 0 -1px 0 0 var(--e-global-color-oxblood);
}

/* ---------- 4. Grid gutters ---------- */
/* EA puts `margin:0 10px 20px` on every grid item, which insets the first
   column 10px from the section heading and leaves only 20px between cells.
   Gutters move onto the item wrap instead (isotope measures the wrap's outer
   box, so padding there is safe), and the container is widened by one gutter
   so the trailing one falls outside the 1140 column. */
#prj-band .eael-filter-gallery-container{ margin:56px -32px 0 0; }
#prj-band .eael-filterable-gallery-item-wrap{ padding:0 32px 56px 0; }
#prj-band .eael-gallery-grid-item{
  position:relative; background:transparent;
  border:0; box-shadow:none;
  margin:0 !important; width:100%;
}
/* ratio on the CONTAINER, never on the img */
#prj-band .gallery-item-thumbnail-wrap{
  position:relative; overflow:hidden; width:100%;
  aspect-ratio:4 / 3;
  background:var(--e-global-color-footerputty);
}
#prj-band img.gallery-item-thumbnail{
  width:100%; height:100%; object-fit:cover; display:block;
  aspect-ratio:auto;
  margin:0;
  transition:transform .3s cubic-bezier(.16,1,.3,1);
}

/* ---------- 5. The whole plate is the link ---------- */
/* EA ships the project link as a small icon inside a hover scrim. The scrim is
   a retired pattern, so it goes transparent and the anchor is stretched to fill
   the plate. The lightbox icon is removed so each tile has one destination. */
#prj-band .gallery-item-caption-wrap.caption-style-hoverer{
  position:absolute; inset:0;
  background:transparent !important;
  opacity:1 !important; transform:none !important;
}
#prj-band .gallery-item-buttons{
  position:absolute; inset:0; display:block;
  margin:0; padding:0; transform:none !important;
}
#prj-band .gallery-item-buttons a[aria-label="eael-item-maybe-link"]{
  position:absolute; inset:0; display:block; z-index:3;
  border:0; background:transparent;
}
#prj-band .gallery-item-buttons .fg-item-icon-inner{ display:none !important; }
#prj-band .eael-magnific-link{ display:none !important; }

/* ---------- 6. Caption sits below the plate ---------- */
/* row gap comes from the item wrap's padding-bottom, not from here */
#prj-band .gallery-item-caption-wrap.caption-style-card{
  background:transparent !important;
  border:0; padding:16px 0 0; text-align:left;
}
#prj-band .gallery-item-caption-over{ padding:0; }
#prj-band .fg-item-content p{ margin:0; }

/* ---------- 6b. Caption and filter type ---------- */
/* The widget's own title_typography_* / desc_color / filter_color controls do
   NOT reach this layout preset: EA kept emitting the system stack at 500/18px
   for the title and #444 for both the description and the filter. Setting them
   here instead, where an ID body.elementor-page-23715 reliably outranks EA's class chain. */
#prj-band .fg-item-title{
  margin:0 0 7px; padding:0;
  font-family:"Archivo", sans-serif; font-weight:300;
  font-size:22px; line-height:1.16; letter-spacing:-0.4px;
  color:var(--e-global-color-primary);
  transition:color .25s ease;
}
#prj-band .fg-item-content,
#prj-band .fg-item-content p{
  font-family:"Raleway", sans-serif; font-weight:400;
  font-size:16px; line-height:1.55;
  color:var(--e-global-color-text);
}
#prj-band .eael-filter-gallery-control ul li.control{
  font-family:"Raleway", sans-serif; font-weight:500;
  font-size:11.5px; letter-spacing:2px; text-transform:uppercase;
  color:var(--e-global-color-text);
}
#prj-band .eael-filter-gallery-control ul li.control.active{
  color:var(--e-global-color-primary);
}

/* ---------- 7. Hover, gated so touch cannot stick it ---------- */
@media (hover:hover) and (pointer:fine){
  #prj-band .eael-gallery-grid-item:hover img.gallery-item-thumbnail{
    transform:scale(1.04);
    transition:transform .55s cubic-bezier(.16,1,.3,1);
  }
  #prj-band .eael-gallery-grid-item:hover .fg-item-title{
    color:var(--e-global-color-oxblood);
  }
  #prj-band .eael-filter-gallery-control ul li.control:hover{
    color:var(--e-global-color-primary);
  }
}

/* ---------- 8. Uncover ---------- */
/* Default state is lifted CLEAR, so no JS, no IntersectionObserver or reduced
   motion all leave the photograph simply visible. Never invert this. */
#prj-band .gallery-item-thumbnail-wrap::after{
  content:""; position:absolute; inset:0; z-index:2;
  background:var(--e-global-color-cream);
  transform:translateY(-101%);
  pointer-events:none;
}
body.prj-anim #prj-band .gallery-item-thumbnail-wrap::after{
  transform:translateY(0);
}
body.prj-anim #prj-band .eael-filterable-gallery-item-wrap.prj-seen .gallery-item-thumbnail-wrap::after{
  animation:prjUncover 1.4s cubic-bezier(.77,0,.175,1) both;
}
@keyframes prjUncover{
  from{ transform:translateY(0); }
  to{ transform:translateY(-101%); }
}
@media (min-width:768px){
  body.prj-anim #prj-band .eael-filterable-gallery-item-wrap.prj-seen .gallery-item-thumbnail-wrap::after{
    animation-delay:calc(var(--i, 0) * .12s);
  }
}

/* ---------- 9. Closing band, centred (the standard for every page) ---------- */
#prj-cta{ align-items:center; text-align:center; }
#prj-cta > *{ width:100%; max-width:1140px; margin-left:auto; margin-right:auto; }
#prj-cta-h2, #prj-cta-h2 .elementor-heading-title, #prj-cta-body, #prj-cta-btn{ text-align:center; }
#prj-cta-h2{ margin-bottom:18px; }
#prj-cta-body{ margin-bottom:26px; }
#prj-cta-body p{ margin:0 auto; max-width:52ch; }
#prj-cta-btn .elementor-button{
  min-height:48px; display:inline-flex; align-items:center; justify-content:center;
  transition:background-color .25s ease, transform .12s ease;
}
@media (hover:hover) and (pointer:fine){
  #prj-cta-btn .elementor-button:hover{ background-color:#5C1420; }
}
#prj-cta-btn .elementor-button:focus-visible{
  outline:2px solid var(--e-global-color-cream); outline-offset:3px;
}
#prj-cta-btn .elementor-button:active{ transform:scale(.97); }

/* ---------- 10. Radius 0 everywhere on this page ---------- */
#prj-header *, #prj-band *, #prj-cta *{ border-radius:0 !important; }

/* ---------- 11. Mobile ---------- */
@media (max-width:767px){
  #prj-header, #prj-band, #prj-cta{ padding-left:20px; padding-right:20px; }
  #prj-header{ padding-top:34px; padding-bottom:28px; }
  #prj-band{ padding-bottom:64px; }
  #prj-cta{ padding-top:64px; padding-bottom:64px; }
  #prj-h1{ max-width:none; }
  #prj-band .eael-filter-gallery-control ul{
    flex-wrap:nowrap; overflow-x:auto; gap:0 26px;
    -webkit-overflow-scrolling:touch; scrollbar-width:none;
  }
  #prj-band .eael-filter-gallery-control ul::-webkit-scrollbar{ display:none; }
  #prj-band .eael-filter-gallery-control ul li.control{ white-space:nowrap; }
  /* one column, so no side gutter and no negative pull on the container */
  #prj-band .eael-filter-gallery-container{ margin:34px 0 0 0; }
  #prj-band .eael-filterable-gallery-item-wrap{ padding:0 0 40px 0; }
  #prj-band .gallery-item-caption-wrap.caption-style-card{ padding:14px 0 0; }
  #prj-band .fg-item-title{ font-size:20px; letter-spacing:-0.34px; }
  #prj-cta-btn .elementor-button{ width:100%; }
}

/* ---------- 12. Reduced motion: gentler, not zero ---------- */
@media (prefers-reduced-motion:reduce){
  #prj-band .gallery-item-thumbnail-wrap::after{
    transform:translateY(-101%) !important; animation:none !important;
  }
  #prj-band img.gallery-item-thumbnail{ transition:none; }
  #prj-cta-btn .elementor-button:active{ transform:none; }
}/* End custom CSS */