:root{
  --ccsw-gap: 16px;
  --ccsw-peek: 5%;
  --ccsw-nav-size: 40px;
  --ccsw-dot-size: 10px;
}

/* 本体 */
.ccsw{
  --ccsw-cols: 1;
  position: relative;
  width: 100%;
  box-sizing: border-box;
}

.ccsw__viewport{
  width: 100%;
  overflow: hidden;
  box-sizing: border-box;
  touch-action: pan-y pinch-zoom;
}

.ccsw__track{
  display: flex;
  gap: var(--ccsw-gap);
  transform: translate3d(0, 0, 0);
  will-change: transform;
  touch-action: pan-y;
  user-select: none;
  -webkit-user-select: none;
}

.ccsw--dragging .ccsw__track{
  cursor: grabbing;
}

/* 
  左右に常に 5% ずつ見切れを出すため、
  表示可能幅から peek×2 を引いてから列数で割る
*/
.ccsw__slide{
  flex: 0 0 calc(
    (
      100% 
      - (var(--ccsw-gap) * (var(--ccsw-cols) - 1))
      - (var(--ccsw-peek) * 2)
    ) / var(--ccsw-cols)
  );
  min-width: 0;
  box-sizing: border-box;
}

.ccsw__slide > a{
  display: block;
  width: 100%;
  height: 100%;
  text-decoration: none;
  color: inherit;
  -webkit-tap-highlight-color: transparent;
}

.ccsw__slide img{
  display: block;
  width: 100%;
  height: auto;
  -webkit-user-drag: none;
  user-select: none;
  pointer-events: none;
}

.ccsw--dragging .ccsw__slide > a{
  /*
  pointer-events: none !important;
  */
}




/* 矢印 */
.ccsw__nav{
  position: absolute;
  top: 50%;
  width: var(--ccsw-nav-size);
  height: var(--ccsw-nav-size);
  transform: translateY(-50%);
  border: none;
  border-radius: 9999px;
  background: rgba(0,0,0,.75);
  cursor: pointer;
  z-index: 20;
}

.ccsw__nav--prev{
  left: 8px;
}

.ccsw__nav--next{
  right: 8px;
}

.ccsw__nav::before{
  content: "";
  position: absolute;
  top: 50%;
  left: 50%;
  width: 12px;
  height: 12px;
  border-top: 2px solid #fff;
  border-right: 2px solid #fff;
}

.ccsw__nav--prev::before{
  transform: translate(-30%, -50%) rotate(-135deg);
}

.ccsw__nav--next::before{
  transform: translate(-70%, -50%) rotate(45deg);
}

/* ドット */
.ccsw__dots{
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 10px;
  list-style: none;
  margin: 20px 0 0;
  padding: 0;
}

.ccsw__dots li{
  width: var(--ccsw-dot-size);
  height: var(--ccsw-dot-size);
  border-radius: 9999px;
  background: var(--color-999);
  cursor: pointer;
  transition: transform .25s ease, background .25s ease;
}

.ccsw__dots li.ccsw__dot--current{
  background: var(--color-1st);
  transform: scale(1.15);
}

/* スマホ */
@media (max-width: 768px){
  :root{
    --ccsw-gap: 12px;
    --ccsw-peek: 5%;
    --ccsw-nav-size: 28px;
  }
}