/*!
 * Themeasy — Gallery
 *
 * A portfolio gallery in three layouts over one markup tree: Grid (uniform
 * tiles on a CSS grid), Masonry (the same grid, packed by row spans the script
 * measures) and Justified (a wrapping flex row sized by each image's ratio).
 * Every tile frame carries an explicit aspect ratio, so no image moves the
 * layout when it loads.
 *
 * The tile chrome (text box, play button, overlay) is the shared
 * .tms-image-group component in components.min.css; this sheet only lays the
 * tiles out, so it loads after it and matches its specificity where it has to
 * replace a declaration.
 *
 * Without the script Masonry stays a top-aligned grid in reading order, and
 * the filter buttons do nothing: every image is visible.
 *
 * @author Themeasy
 * @link https://themeasy.co
 * @since 1.0.0
 */
.tms-gallery{--tms-gallery-columns-max:1;--tms-gallery-cols:min(var(--tms-gallery-columns,var(--tms-gallery-columns-base,4)), var(--tms-gallery-columns-max));--tms-gallery-gap-size:var(--tms-gallery-gap,var(--tms-gallery-gap-base,1.5rem))}@media (min-width:400px){.tms-gallery{--tms-gallery-columns-max:2}}@media (min-width:768px){.tms-gallery{--tms-gallery-columns-max:4}}@media (min-width:1025px){.tms-gallery{--tms-gallery-columns-max:12}}.tms-gallery .tms-gallery__grid{grid-template-columns:repeat(auto-fill, minmax(calc((100% - (var(--tms-gallery-cols) - 1) * var(--tms-gallery-gap-size)) / var(--tms-gallery-cols) - .1px), 1fr));align-content:start;gap:var(--tms-gallery-gap-size);display:grid;position:relative}.tms-gallery .tms-image-group .tms-gallery__item{min-width:0;color:inherit;text-decoration:none;display:block;container-type:inline-size}.tms-gallery .tms-image{aspect-ratio:var(--tms-gallery-item-ratio,1.5);border-radius:var(--tms-radius-md,.25rem)}.tms-gallery--grid .tms-image{aspect-ratio:var(--tms-gallery-ratio,3 / 2)}.tms-gallery .tms-gallery__item .tms-image .tms-image__img{border-radius:inherit;object-fit:cover;height:100%}.tms-gallery .tms-gallery__item:hover .tms-image .tms-image__img{transform:scale(var(--tms-gallery-hover-scale,1))}.tms-gallery .tms-gallery__item:focus-visible .tms-image .tms-image__img{transform:scale(var(--tms-gallery-hover-scale,1))}.tms-gallery a.tms-gallery__item:focus-visible{outline-offset:3px;outline:2px solid}@container (width<=280px){.tms-gallery .tms-image-group .tms-gallery__item .tms-image-group__text{width:calc(100% - 1rem);margin:.5rem;padding:.75rem .875rem .875rem}.tms-gallery .tms-image-group .tms-gallery__item .tms-image-group__text-inner{gap:.375rem}.tms-gallery .tms-image-group .tms-gallery__item .tms-image-group__title{font-size:100%}.tms-gallery .tms-image-group .tms-gallery__item .tms-image-group__description{font-size:85%}}.tms-gallery--masonry .tms-gallery__grid{align-items:start;transition:opacity .3s}.tms-gallery--masonry.tms-gallery--ready .tms-gallery__grid{grid-auto-flow:dense;grid-auto-rows:var(--tms-gallery-unit,1px);margin-bottom:calc(-1 * var(--tms-gallery-gap-size));row-gap:0}.tms-gallery .tms-gallery__gap-probe{width:var(--tms-gallery-gap-size);visibility:hidden;pointer-events:none;height:0;position:absolute;top:0;left:0}@media screen and (scripting:enabled){body:not(.tms-elementor-preview) .tms-gallery--pending .tms-gallery__grid{opacity:0;animation:1ms linear 3s forwards tms-gallery-failsafe}}@keyframes tms-gallery-failsafe{to{opacity:1}}.tms-gallery--justified .tms-gallery__grid{align-content:flex-start;align-items:flex-start;gap:0 var(--tms-gallery-gap-size);margin-bottom:calc(-1 * var(--tms-gallery-gap-size));flex-wrap:wrap;display:flex}.tms-gallery--justified .tms-gallery__grid:after{content:"";flex:1000000 1 0}.tms-gallery--justified .tms-image-group .tms-gallery__item{flex-grow:var(--tms-gallery-item-ratio,1.5);flex-shrink:1;flex-basis:calc(var(--tms-gallery-item-ratio,1.5) * var(--tms-gallery-row-height,280px));margin-bottom:var(--tms-gallery-gap-size)}.tms-gallery .tms-gallery__filter>.nav-tabs{justify-content:var(--tms-gallery-filter-align,center)}.tms-gallery .tms-gallery__filter-button{font-family:inherit;line-height:inherit;letter-spacing:inherit;text-transform:inherit;white-space:nowrap;-webkit-user-select:none;user-select:none}.tms-gallery .tms-gallery__filter-button:focus:not(:focus-visible){box-shadow:none}.tms-gallery .tms-gallery__filter-count{font-variant-numeric:tabular-nums;opacity:.6;margin-inline-start:6px;font-size:75%}@media (max-width:991px){.tms-gallery .tms-gallery__filter>.nav-tabs{justify-content:safe var(--tms-gallery-filter-align,center);overscroll-behavior-x:contain;box-shadow:inset 0 calc(-1 * var(--tms-gallery-filter-line-width,2px)) 0 var(--tms-gallery-filter-line-color,var(--tms-border-color));scrollbar-width:none;border-style:none;flex-wrap:nowrap;padding:8px 0 0;overflow-x:auto}.tms-gallery .tms-gallery__filter>.nav-tabs::-webkit-scrollbar{display:none}.tms-gallery .tms-gallery__filter>.nav-tabs>.nav-item{flex-shrink:0}.tms-gallery .tms-gallery__filter>.nav-tabs>*>.nav-link:before{top:auto;bottom:0}}.tms-gallery .tms-image-group .tms-gallery__item--hidden{display:none}.tms-gallery .tms-image-group .tms-gallery__item--leaving{z-index:0;pointer-events:none;margin:0;position:absolute}@media (prefers-reduced-motion:reduce){.tms-gallery--masonry .tms-gallery__grid,.tms-gallery .tms-gallery__item .tms-image .tms-image__img{transition:none}.tms-gallery .tms-gallery__item:hover .tms-image .tms-image__img{transform:none}.tms-gallery .tms-gallery__item:focus-visible .tms-image .tms-image__img{transform:none}}