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

/* ================================
   Carousel Base
================================ */
.ccsw{
  --ccsw-cols: 1;
  width: 100%;
  position: relative;
  box-sizing: border-box;
  background: #fff;
}

.ccsw__viewport{
  width: 100%;
  overflow: hidden;
  box-sizing: border-box;
  touch-action: pan-y pinch-zoom;
  -webkit-user-select: none;
  user-select: none;
  margin-bottom: 10px;
}

.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;
  padding: 0 0 2%;
}

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

.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;
  display: flex;
  flex-direction: column;
  transition: border-color .4s ease;
  border-radius: 20px;
  overflow: hidden;
  box-shadow:0px 5px 15px rgba(0,0,0,0.2);
}

.ccsw__slide:hover{
  border-bottom-color: var(--color-2nd);
}

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

.ccsw--dragging .ccsw__slide > a,
.ccsw--dragging a{
  -webkit-touch-callout: none;
}

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

/* ================================
   Dots
================================ */
.ccsw__dots{
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 10px;
  list-style: none;
  padding: 0 0 30px;
  margin: 0;
}

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

.ccsw__dots li.ccsw__dot--current{
  background: #333;
  transform: scale(1.15);
}

/* ================================
   Navigation
================================ */
.ccsw__nav{
  position: absolute;
  top: 5%;
  transform: translateY(-50%);
  z-index: 20;
  width: var(--ccsw-nav-size);
  height: var(--ccsw-nav-size);
  border: none;
  border-radius: 9999px;
  background: rgba(0,0,0,0.8);
  cursor: pointer;
  transition: background .25s ease;
}

.ccsw__nav:hover{
  background: rgba(179,195,0,0.7);
}

.ccsw__nav--prev{
  left: 0.5%;
}

.ccsw__nav--next{
  right: 0.5%;
}

.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);
}

/* ================================
   Slide Design
================================ */
.ccsw__slide .slideimg{
  width: 100%;
  aspect-ratio: 4 / 3;
  display: block;
  overflow: hidden;
  position: relative;
  filter: drop-shadow(0 1px 4px rgba(0,0,0,.5));
  transition: filter .4s ease, margin .4s ease;
  margin: 0 0 20px;
}

.ccsw__slide > a:hover .slideimg{
  filter: drop-shadow(0 5px 10px rgba(0,0,0,.3));
  margin: 0 0 20px;
}

.ccsw__slide .slideimg_base{
  clip-path: polygon(0% 0%, 100% 0, 100% 50%, 100% 100%, 0% 100%);
  background: #fff;
  transition: clip-path .4s ease;
}

.ccsw__slide > a:hover .slideimg_base{
  clip-path: polygon(0% 0%, 90% 0, 100% 50%, 90% 100%, 0% 100%);
}

.ccsw__slide .slideimg img{
  filter: brightness(1);
  transition: filter .4s ease;
}

.ccsw__slide > a:hover .slideimg img{
  filter: brightness(1.5);
}

.ccsw__slide .slidecc{
  width: 100%;
  display: flex;
  flex-direction: column;
  padding: 20px 10px 30px;
  box-sizing: border-box;
}

.ccsw__slide .slidecc h3{
  font-size: clamp(10px, 1vw, 12px);
  font-weight: 400;
  line-height: 1.25em;
  color: var(--color-666);
  margin-bottom: .5em;
  transition: color .4s ease;
}

.ccsw__slide > a:hover .slidecc h3{
  color: var(--color-2nd);
}

.ccsw__slide .slidecc h4{
  min-height: 3em;
  font-size: clamp(14px, 1.1vw, 20px);
  font-weight: 600;
  line-height: 1.5em;
  color: var(--color-black);
  margin-bottom: .25em;
  transition: color .4s ease;
  overflow: hidden;
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 1;
  line-clamp: 1;
}

.ccsw__slide > a:hover .slidecc h4{
  color: var(--color-2nd);
}

.ccsw__slide .slidecc h5{
  font-size: clamp(12px, 1vw, 14px);
  font-weight: 400;
  line-height: 1.5em;
  color: var(--color-333);
  margin-bottom: .5em;
  transition: color .4s ease;
}

.ccsw__slide > a:hover .slidecc h5{
  color: var(--color-2nd);
}

.ccsw__slide .slidespec{
  width: 100%;
  display: flex;
  flex-wrap: wrap;
  column-gap: 2.5%;
  row-gap: 0;
  margin-bottom: 5px;
}

.ccsw__slide .slidespec dl{
  width: auto;
  max-width: 100%;
  display: inline-flex;
  align-items: baseline;
  flex: 0 0 auto;
  white-space: nowrap;
  margin: 0;
}

.ccsw__slide .slidespec dt,
.ccsw__slide .slidespec dd{
  font-size: clamp(10px, 1.2vw, 12px);
  font-weight: 400;
  line-height: 1.8em;
  margin: 0;
}

.ccsw__slide .slidespec dt{
  color: var(--color-666);
}

.ccsw__slide .slidespec dt::after{
  content: "：";
}

.ccsw__slide .slidespec dd{
  color: var(--color-black);
}

.ccsw__slide .slideprice{
  width: 100%;
  display: flex;
  justify-content: flex-end;
  align-items: baseline;
}

.ccsw__slide .slideprice h3,
.ccsw__slide .slideprice p{
  font-size: clamp(12px, 1vw, 16px);
  font-weight: 500;
  line-height: 1em;
  color: var(--color-black);
  letter-spacing: -.05em;
}

.ccsw__slide .slideprice h3::after{
  content: "：";
}

.ccsw__slide .slideprice p strong{
  font-size: clamp(16px, 2.5vw, 26px);
  font-weight: 500;
  line-height: 1.5em;
  color: var(--color-black);
  margin-right: .1em;
}

.ccsw__track {
  will-change: transform;
}

.ccsw--dragging a {
  pointer-events: none;
}

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

  .ccsw__nav{
    display: none;
  }

  .ccsw__slide .slideimg{
    margin: 5px 0 12px;
  }

  .ccsw__slide > a:hover .slideimg{
    margin: 5px 0 12px;
  }

  .ccsw__slide .slideimg_base,
  .ccsw__slide > a:hover .slideimg_base{
    clip-path: none;
  }

  .ccsw__slide > a:hover .slideimg img{
    filter: brightness(1);
  }
}