
/* LBX Shopify Video Carousel 3.1 — "1 front + 4 behind" layered layout */
.lbx-svc{
  width:100%;
  box-sizing:border-box;
  padding:36px 20px 24px;
  background:#fff;
  overflow:hidden;
  font-family:Arial,Helvetica,sans-serif;
}
.lbx-svc *{box-sizing:border-box}
.lbx-svc__head{
  text-align:center;
  max-width:640px;
  margin:0 auto 18px;
}
.lbx-svc__head h2{
  margin:0 0 7px;
  font-family:var(--lbx-title-font,Arial);
  font-size:var(--lbx-title-d);
  font-weight:700;
  line-height:1.15;
  letter-spacing:-.02em;
  color:var(--lbx-title-color);
  text-align:center;
}
.lbx-svc__head p{
  margin:0 0 5px;
  font-family:var(--lbx-body-font,Arial);
  font-size:var(--lbx-body-d);
  line-height:1.45;
  color:var(--lbx-body-color);
  text-align:center;
}
.lbx-svc__head strong{
  display:block;
  font-size:12px;
  font-weight:700;
  line-height:1.3;
  color:#171717;
  text-align:center;
}
.lbx-svc__stage{
  position:relative !important;
  width:100%;
  max-width:1200px;
  height:calc(var(--lbx-dh) + 30px);
  margin:0 auto;
  display:flex;
  align-items:center;
  justify-content:center;
}
.lbx-svc__track{
  position:relative !important;
  width:100%;
  height:var(--lbx-dh);
  display:flex;
  align-items:center;
  justify-content:center;
  touch-action:pan-y;
}
.lbx-svc__card{
  position:absolute;
  left:50%;
  top:50%;
  width:var(--lbx-dw);
  height:var(--lbx-dh);
  margin-left:calc(var(--lbx-dw) / -2);
  margin-top:calc(var(--lbx-dh) / -2);
  border-radius:var(--lbx-radius) !important;
  overflow:hidden;
  background:#111;
  box-shadow:0 16px 45px rgba(0,0,0,.20) !important;
  border:0 !important;
  transition:
    transform var(--lbx-speed) cubic-bezier(.2,.75,.2,1),
    opacity var(--lbx-speed) ease,
    filter var(--lbx-speed) ease,
    box-shadow var(--lbx-speed) ease;
  will-change:transform,opacity;
  cursor:pointer;
}
.lbx-svc__video{
  position:absolute;
  inset:0;
  display:block;
  width:100%;
  height:100%;
  object-fit:cover;
  background:#111;
}
.lbx-svc__shade{
  position:absolute;
  inset:0;
  background:linear-gradient(to bottom,rgba(0,0,0,.02) 55%,rgba(0,0,0,.6));
  pointer-events:none;
}
.lbx-svc__card[data-pos="0"]{
  transform:translateX(0) scale(1);
  z-index:10;
  opacity:1;
  filter:none;
  box-shadow:0 22px 55px rgba(0,0,0,.28);
}
.lbx-svc__card[data-pos="1"]{
  transform:translateX(var(--lbx-offset)) scale(var(--lbx-scale));
  z-index:8;
  opacity:.9;
  filter:saturate(.8);
}
.lbx-svc__card[data-pos="-1"]{
  transform:translateX(calc(var(--lbx-offset) * -1)) scale(var(--lbx-scale));
  z-index:8;
  opacity:.9;
  filter:saturate(.8);
}
.lbx-svc__card[data-pos="2"]{
  transform:translateX(calc(var(--lbx-offset) * 2)) scale(calc(var(--lbx-scale) * .86));
  z-index:6;
  opacity:.62;
  filter:saturate(.65);
}
.lbx-svc__card[data-pos="-2"]{
  transform:translateX(calc(var(--lbx-offset) * -2)) scale(calc(var(--lbx-scale) * .86));
  z-index:6;
  opacity:.62;
  filter:saturate(.65);
}
.lbx-svc__card[data-pos="far"]{
  opacity:0;
  pointer-events:none;
  transform:translateX(0) scale(.55);
  z-index:0;
}
.lbx-svc__card-title{
  position:absolute;
  left:12px;
  right:12px;
  bottom:12px;
  color:#fff;
  font-size:13px;
  font-weight:700;
  z-index:2;
  text-shadow:0 1px 3px rgba(0,0,0,.5);
  pointer-events:none;
}
.lbx-svc__arrow{
  position:absolute !important;
  top:50%;
  transform:translateY(-50%);
  width:42px !important;
  height:42px !important;
  border:0 !important;
  border-radius:50% !important;
  background:#fff !important;
  color:#111111 !important;
  box-shadow:0 8px 22px rgba(0,0,0,.16) !important;
  font-size:30px;
  line-height:1;
  z-index:30;
  cursor:pointer;
  display:grid;
  place-items:center;
  outline:none;
  transition:transform .2s ease,box-shadow .2s ease;
}
.lbx-svc__arrow:hover{transform:translateY(-50%) scale(1.06)}
.lbx-svc__prev{left:4px}
.lbx-svc__next{right:4px}
.lbx-svc__dots{
  /* Sized and centered by JS once the real (theme-controlled) button size is
     known — see render() in lbx-svc.js. display:flex here is only a fallback
     for the brief instant before JS runs. */
  display:flex;
  justify-content:center;
  align-items:center;
  gap:2px;
  margin-top:4px;
  min-height:8px;
}
.lbx-svc__dot{
  /* The button's own box model (width/height/margin) is left alone on
     purpose — on this site a theme-level button lock was found to silently
     ignore even very specific !important overrides on those properties, no
     matter how they were written. The visible circle is a separate inner,
     non-button element (below) that the theme's rules don't touch, and the
     dots' spacing is handled by explicit position/left values set in JS
     (which the same theme lock does NOT block), not by this button's size. */
  display:inline-flex !important;
  align-items:center !important;
  justify-content:center !important;
  border:0 !important;
  background:transparent !important;
  padding:0;
  cursor:pointer;
  outline:none;
}
.lbx-svc__dot-visual{
  display:block;
  flex:none;
  width:7px;
  height:7px;
  border-radius:50%;
  background:#d4d4d4;
  transition:transform .2s ease,background .2s ease;
  pointer-events:none;
}
.lbx-svc__dot.is-active .lbx-svc__dot-visual{background:#171717;transform:scale(1.15)}
.lbx-svc__modal{
  display:none;
  position:fixed;
  inset:0;
  background:rgba(0,0,0,.94);
  z-index:999999;
  align-items:center;
  justify-content:center;
  padding:20px;
  box-sizing:border-box;
}
.lbx-svc__modal.is-open{display:flex}
.lbx-svc__modal-inner{
  width:min(100%,520px);
  max-height:96vh;
  position:relative;
  display:flex;
  flex-direction:column;
  align-items:center;
}
.lbx-svc__modal-video{
  width:100%;
  max-height:calc(96vh - 70px);
  aspect-ratio:9/16;
  object-fit:cover;
  background:#000;
  border-radius:12px !important;
  display:block;
}
.lbx-svc__close{
  position:absolute !important;
  right:-45px;
  top:-10px;
  border:0 !important;
  background:rgba(0,0,0,.45) !important;
  color:#fff !important;
  width:38px !important;
  height:38px !important;
  border-radius:50% !important;
  font-size:28px;
  line-height:1;
  cursor:pointer;
  outline:none;
  z-index:4;
}
.lbx-svc__controls{
  display:flex;
  align-items:center;
  justify-content:center;
  gap:7px;
  flex-wrap:wrap;
  margin-top:9px;
}
.lbx-svc__controls button{
  border:1px solid rgba(255,255,255,.25) !important;
  background:rgba(255,255,255,.10) !important;
  color:#fff !important;
  border-radius:999px !important;
  padding:8px 13px;
  font-size:12px;
  cursor:pointer;
  outline:none;
}
.lbx-svc__controls button:hover,.lbx-svc__controls button.is-liked{background:#fff;color:#111}
.lbx-svc__music{display:none}
.lbx-svc-lock{overflow:hidden}

@media(max-width:700px){
  .lbx-svc{padding:28px 12px 18px}
  .lbx-svc__head h2{font-size:var(--lbx-title-m)}
  .lbx-svc__head p{font-size:var(--lbx-body-m)}
  /* Was using --lbx-dh (the DESKTOP video height) here — on mobile that left
     the stage/track ~150-200px taller than the actual card, wasting vertical
     space around it. --lbx-mh is the mobile height setting and matches what
     .lbx-svc__card below actually renders at. */
  .lbx-svc__stage{height:calc(min(76vh, var(--lbx-mh)) + 20px)}
  .lbx-svc__track{height:min(76vh,var(--lbx-mh))}
  .lbx-svc__card{
    width:min(72vw,var(--lbx-mw));
    height:min(calc(72vw * 1.7778),var(--lbx-mh));
    /* Was min(-36vw, mw/-2) — a SEPARATE min() from the one used for width,
       so whenever mw (not 72vw) was the smaller/binding value for width,
       this one still picked -36vw instead of -mw/2, over-shifting the card
       left of center. Deriving the margin from the exact same expression
       used for width guarantees it always centers whichever value actually
       won. */
    margin-left:calc(min(72vw,var(--lbx-mw)) / -2);
    margin-top:calc(min(calc(72vw * 1.7778),var(--lbx-mh)) / -2);
  }
  /* Was using --lbx-gap here (12px in this site's settings — a spacing value,
     not a peek amount). That left the side cards shifted only a few px, so
     they sat almost fully hidden behind the front card instead of peeking
     out — the carousel looked like one flat video with no stack at all.
     --lbx-offset is the actual "how far to shift side cards" setting, same
     one the desktop layout already uses correctly. */
  .lbx-svc__card[data-pos="1"]{transform:translateX(var(--lbx-offset)) scale(var(--lbx-scale))}
  .lbx-svc__card[data-pos="-1"]{transform:translateX(calc(var(--lbx-offset) * -1)) scale(var(--lbx-scale))}
  /* Mobile shows only 3 cards (front + one on each side) instead of 5 — the
     two outer cards are still tracked by the JS (so swiping/dots still cycle
     through all videos correctly) but are hidden and taken out of the way
     here, rather than removed from the DOM. */
  .lbx-svc__card[data-pos="2"],
  .lbx-svc__card[data-pos="-2"]{
    opacity:0 !important;
    visibility:hidden !important;
    pointer-events:none !important;
    transform:translateX(0) scale(.55) !important;
    z-index:0 !important;
  }
  .lbx-svc__arrow{display:none !important}
  .lbx-svc__modal{padding:0}
  .lbx-svc__modal-inner{width:100%;height:100%;max-height:none}
  .lbx-svc__modal-video{width:100%;height:calc(100% - 58px);max-height:none;border-radius:0}
  .lbx-svc__controls{height:58px;margin:0;width:100%;background:#050505}
  .lbx-svc__close{right:10px;top:10px;background:rgba(0,0,0,.55)}
}
