/* Native touch scrolling keeps momentum and never snaps a card into place. */
[data-infinity-row].infinity-row{display:block;overflow-x:auto;overflow-y:hidden;scroll-snap-type:none;scroll-behavior:auto;touch-action:pan-x pan-y pinch-zoom;-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain;cursor:grab;scrollbar-width:none}
[data-infinity-row]::-webkit-scrollbar{display:none}
[data-infinity-row] .infinity-track{display:flex;width:100%;transform:none!important;will-change:auto;gap:24px}
[data-infinity-row] .infinity-track>*{scroll-snap-align:none;flex-shrink:0}
[data-infinity-row].is-dragging{cursor:grabbing;user-select:none}
[data-infinity-row] .infinity-track>*{touch-action:pan-x pan-y pinch-zoom}
/* Images previously inherited pan-y only, blocking native horizontal swipes. */
[data-infinity-row].infinity-row .infinity-track a,
[data-infinity-row].infinity-row .infinity-track img{touch-action:pan-x pan-y pinch-zoom;-webkit-user-drag:none;-webkit-touch-callout:none;user-select:none;-webkit-user-select:none}
.studio-collections-grid .infinity-track>*{flex-basis:calc((100% - 72px)/4)}
.home-services-row .infinity-track>*{flex-basis:calc((100% - 48px)/3);min-width:0}
@media(min-width:561px) and (max-width:900px){.home-services-row .infinity-track>*{flex-basis:calc((100% - 24px)/2)}}
@media(max-width:900px){.studio-collections-grid .infinity-track>*{flex-basis:calc((100% - 24px)/2)}}
@media(max-width:560px){[data-infinity-row] .infinity-track>*{flex-basis:85%}}
/* End gutters let the first and last mobile cards reach the same centre. */
@media(max-width:560px){
 [data-infinity-row] .infinity-track::before,[data-infinity-row] .infinity-track::after{content:"";flex:0 0 7.5%}
 [data-infinity-row] .infinity-track::before{margin-right:-24px}
 [data-infinity-row] .infinity-track::after{margin-left:-24px}
}
