.soxgal{
  --soxgap: 10px;
  --soxradius: 14px;
  --soxcols-desktop: 4;
  --soxcols-tablet: 3;
  --soxcols-mobile: 2;
  position: relative;
}

.soxgal-track{
  width: 100%;
}

.soxgal-item{
  margin: 0;
  border-radius: var(--soxradius);
  overflow: hidden;
  background: rgba(0,0,0,0.02);
}

.soxgal-link{ display:block; text-decoration:none; color: inherit; }
.soxgal-img{ width:100%; height: auto; display:block; }

.soxgal-cap{
  font-size: 13px;
  line-height: 1.3;
  padding: 10px 12px;
  background: rgba(0,0,0,0.04);
}

/* GRID */
.soxgal-layout-grid .soxgal-track{
  display:grid;
  grid-template-columns: repeat(var(--soxcols-desktop), minmax(0, 1fr));
  gap: var(--soxgap);
}

@media (max-width: 1024px){
  .soxgal-layout-grid .soxgal-track{ grid-template-columns: repeat(var(--soxcols-tablet), minmax(0, 1fr)); }
}

@media (max-width: 640px){
  .soxgal-layout-grid .soxgal-track{ grid-template-columns: repeat(var(--soxcols-mobile), minmax(0, 1fr)); }
}

/* MASONRY (CSS columns, ultra ligero) */
.soxgal-layout-masonry .soxgal-track{
  column-count: var(--soxcols-desktop);
  column-gap: var(--soxgap);
}

.soxgal-layout-masonry .soxgal-item{
  display: inline-block;
  width: 100%;
  margin: 0 0 var(--soxgap) 0;
  break-inside: avoid;
}

@media (max-width: 1024px){
  .soxgal-layout-masonry .soxgal-track{ column-count: var(--soxcols-tablet); }
}

@media (max-width: 640px){
  .soxgal-layout-masonry .soxgal-track{ column-count: var(--soxcols-mobile); }
}

/* CAROUSEL */
.soxgal-layout-carousel .soxgal-track{
  display:flex;
  gap: var(--soxgap);
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  padding-bottom: 8px;
}

.soxgal-layout-carousel .soxgal-item{
  flex: 0 0 auto;
  width: min(360px, 78vw);
  scroll-snap-align: start;
}

/* Load more */
.soxgal-more{
  margin-top: 14px;
  padding: 10px 14px;
  border-radius: 12px;
  border: 1px solid rgba(0,0,0,0.18);
  background: #fff;
  cursor:pointer;
}

/* Lightbox */
.soxgal-lightbox{
  position: fixed;
  inset: 0;
  display: none;
  align-items: center;
  justify-content: center;
  background: rgba(0,0,0,0.86);
  padding: 22px;
  z-index: 999999;
}

.soxgal-lightbox.is-open{ display:flex; }

.soxgal-lightbox-inner{
  max-width: 96vw;
  max-height: 90vh;
  display:flex;
  flex-direction: column;
  gap: 10px;
  align-items: center;
}

.soxgal-lightbox-img{
  max-width: 96vw;
  max-height: 82vh;
  border-radius: 16px;
}

.soxgal-lightbox-cap{
  color: rgba(255,255,255,0.9);
  font-size: 14px;
  text-align: center;
  max-width: 82vw;
}

.soxgal-lightbox-btn{
  position:absolute;
  top: 14px;
  right: 14px;
  width: 42px;
  height: 42px;
  border-radius: 999px;
  border: 1px solid rgba(255,255,255,0.18);
  background: rgba(0,0,0,0.35);
  color:#fff;
  cursor:pointer;
}

.soxgal-lightbox-prev,
.soxgal-lightbox-next{
  position:absolute;
  top: 50%;
  transform: translateY(-50%);
  width: 46px;
  height: 46px;
  border-radius: 999px;
  border: 1px solid rgba(255,255,255,0.18);
  background: rgba(0,0,0,0.35);
  color:#fff;
  cursor:pointer;
}

.soxgal-lightbox-prev{ left: 14px; }
.soxgal-lightbox-next{ right: 14px; }


/* MOSAIC (patrones aleatorios, CSS Grid) */
.soxgal-layout-mosaic .soxgal-track{
  display:grid;
  grid-template-columns: repeat(var(--soxcols-desktop), minmax(0, 1fr));
  gap: var(--soxgap);
  grid-auto-rows: 120px;
  grid-auto-flow: dense;
}

.soxgal-layout-mosaic .soxgal-item{
  height: 100%;
}

.soxgal-layout-mosaic .soxgal-link{
  height: 100%;
}

.soxgal-layout-mosaic .soxgal-img{
  height: 100%;
}

.soxgal-span-c2{ grid-column: span 2; }
.soxgal-span-c3{ grid-column: span 3; }
.soxgal-span-r2{ grid-row: span 2; }
.soxgal-span-r3{ grid-row: span 3; }

@media (max-width: 1024px){
  .soxgal-layout-mosaic .soxgal-track{
    grid-template-columns: repeat(var(--soxcols-tablet), minmax(0, 1fr));
    grid-auto-rows: 110px;
  }
}

@media (max-width: 640px){
  .soxgal-layout-mosaic .soxgal-track{
    grid-template-columns: repeat(var(--soxcols-mobile), minmax(0, 1fr));
    grid-auto-rows: 100px;
  }
}

/* HERO (1 grande + grid) */
.soxgal-layout-hero .soxgal-track{
  display:grid;
  grid-template-columns: repeat(var(--soxcols-desktop), minmax(0, 1fr));
  gap: var(--soxgap);
  grid-auto-rows: 160px;
}

.soxgal-layout-hero .soxgal-item{
  height: 100%;
}

.soxgal-layout-hero .soxgal-link{
  height: 100%;
}

.soxgal-layout-hero .soxgal-img{
  height: 100%;
}

.soxgal-layout-hero .soxgal-item:first-child{
  grid-column: 1 / -1;
  grid-row: span 2;
}

@media (max-width: 1024px){
  .soxgal-layout-hero .soxgal-track{ grid-template-columns: repeat(var(--soxcols-tablet), minmax(0, 1fr)); grid-auto-rows: 150px; }
}

@media (max-width: 640px){
  .soxgal-layout-hero .soxgal-track{ grid-template-columns: repeat(var(--soxcols-mobile), minmax(0, 1fr)); grid-auto-rows: 140px; }
}

/* POLAROID (tarjetas inclinadas) */
.soxgal-layout-polaroid .soxgal-track{
  display:grid;
  grid-template-columns: repeat(var(--soxcols-desktop), minmax(0, 1fr));
  gap: calc(var(--soxgap) + 6px);
}

.soxgal-layout-polaroid .soxgal-item{
  --soxrot: 0deg;
  background: #fff;
  padding: 10px;
  border-radius: calc(var(--soxradius) + 6px);
  box-shadow: 0 10px 26px rgba(0,0,0,0.14);
  overflow: visible;
  transform: rotate(var(--soxrot));
  transition: transform 160ms ease;
}

.soxgal-layout-polaroid .soxgal-link{
  border-radius: var(--soxradius);
  overflow: hidden;
}

.soxgal-layout-polaroid .soxgal-img{
  border-radius: var(--soxradius);
}

.soxgal-layout-polaroid .soxgal-item:hover{
  transform: rotate(var(--soxrot)) translateY(-2px) scale(1.01);
}

.soxgal-rot-n3{ --soxrot: -3deg; }
.soxgal-rot-n2{ --soxrot: -2deg; }
.soxgal-rot-n1{ --soxrot: -1deg; }
.soxgal-rot-z0{ --soxrot: 0deg; }
.soxgal-rot-p1{ --soxrot: 1deg; }
.soxgal-rot-p2{ --soxrot: 2deg; }
.soxgal-rot-p3{ --soxrot: 3deg; }

@media (max-width: 1024px){
  .soxgal-layout-polaroid .soxgal-track{ grid-template-columns: repeat(var(--soxcols-tablet), minmax(0, 1fr)); }
}

@media (max-width: 640px){
  .soxgal-layout-polaroid .soxgal-track{ grid-template-columns: repeat(var(--soxcols-mobile), minmax(0, 1fr)); }
}

/* RP Manager (landing /rpm-lugar/{slug}/) */
.soxgal-rpm-wrap{
  margin: 22px auto 0;
  max-width: 1200px;
  padding: 0 16px 26px;
}

.soxgal-rpm-recap{
  font-size: 14px;
  line-height: 1.55;
  margin: 0 0 14px;
  opacity: 0.92;
}

.soxgal-rpm-recap p{ margin: 0 0 8px; }
.soxgal-rpm-recap p:last-child{ margin-bottom: 0; }

/* Insert debajo del CTA de compra/reserva */
.soxgal-rpm-insert{
  margin-top: 12px;
}

.soxgal-rpm-details{
  border: 1px solid rgba(15,23,42,0.14);
  border-radius: 16px;
  overflow: hidden;
  background: rgba(255,255,255,0.02);
}

.soxgal-rpm-summary{
  list-style: none;
  cursor: pointer;
  user-select: none;
}

.soxgal-rpm-summary::-webkit-details-marker{ display: none; }

.soxgal-rpm-content{
  padding: 12px;
}

.soxgal-rpm-details[open] .soxgal-rpm-summary{
  border-bottom: 1px solid rgba(15,23,42,0.10);
  border-bottom-left-radius: 0;
  border-bottom-right-radius: 0;
}
