/* Curved case gallery (behaviour in case-gallery.js). The script sizes the cards and
   the stage from its width; the height below only holds space until it runs. */
.case-gallery {
  position: relative;
  height: 30vw;
  min-height: 300px;
  overflow: hidden;
  cursor: grab;
  touch-action: pan-y;
  -webkit-user-select: none;
  user-select: none;
  outline: none;
}
.case-gallery.is-dragging { cursor: grabbing; }
.case-gallery:focus-visible { outline: 1px dashed #d5c1ff80; outline-offset: -4px; }

/* Violet light behind the centre, where the scan line runs. */
.case-gallery__glow {
  position: absolute;
  inset: 0;
  pointer-events: none;
  background:
    radial-gradient(7% 40% at 50% 50%, #c6b3ff59, #c6b3ff00 70%),
    radial-gradient(26% 48% at 50% 52%, #835bff80, #835bff26 50%, #835bff00 76%);
}

.case-gallery__track {
  position: absolute;
  inset: 0;
  margin: 0;
  padding: 0;
  list-style: none;
  transform-style: preserve-3d;
  perspective-origin: 50% 50%;
}
.case-gallery__card {
  position: absolute;
  top: 50%;
  left: 50%;
  overflow: hidden;
  border-radius: 7% / 5.25%;
  background: #0c0b12;
  box-shadow: 0 30px 60px -34px #000;
}
.case-gallery__card::after {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: inherit;
  box-shadow: inset 0 0 0 1px #ffffff1a;
  pointer-events: none;
}
.case-gallery__card img {
  position: absolute;
  inset: 0;
  display: block;
  width: 100%;
  max-width: none;
  height: 100%;
  object-fit: cover;
  pointer-events: none;
  -webkit-user-drag: none;
}

/* Scan line: colour to its right, dot screen to its left. */
.case-gallery__scan {
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  width: 2px;
  margin-left: -1px;
  background: linear-gradient(180deg, #f1ebff, #c6b3ff 50%, #f1ebff);
  box-shadow: 0 0 6px 1px #b49cff, 0 0 22px 6px #835bffb3;
  opacity: 0;
  pointer-events: none;
}

html.w-mod-js .case-gallery { opacity: 0; transition: opacity 1.1s ease; }
html.w-mod-js .case-gallery.is-in { opacity: 1; }

@media (prefers-reduced-motion: reduce) {
  html.w-mod-js .case-gallery { opacity: 1; transition: none; }
}

/* 客户案例 module 1 with the gallery: title group, then the ring, then the scroll cue. */
.cases-showcase {
  position: relative;
  overflow: hidden;
  padding: 140px 0 128px;
  background: #030305;
}
.cases-showcase__content {
  position: relative;
  z-index: 1;
  width: min(1200px, calc(100% - 40px));
  margin-inline: auto;
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
}
.cases-showcase .case-gallery { margin-top: 32px; }
.cases-showcase .cases-hero__scroll { bottom: max(80px, calc(100% - 94vh)); }
html.w-mod-js .cases-showcase.is-revealed .cases-hero__scroll { opacity: 1; translate: 0 0; }

@media (max-width: 1259px) {
  .cases-showcase { padding: 130px 0 120px; }
}
@media (max-width: 767px) {
  .cases-showcase { padding: 108px 0 56px; }
  .cases-showcase .case-gallery { margin-top: 20px; }
}
