.slide {
  --img-size: min(850px, 85vw);  /* 元800px 85vw ←900pxだど拡大時画像過大・500pxだと過小/85vwとはビューポートの横幅の85%の意 */
  --aspect-ratio: 1.3; /* 元1.5  画像(サムネイル含)アスペクト比は 850/630=1.3 程度が適(一部横長・縦長を除く)*/
  position: relative;
  display: flex;
  align-items: flex-end;
  justify-content: center;
  gap: 8px;
  inline-size: var(--img-size);
  aspect-ratio: var(--aspect-ratio);
  border: 1px solid #ccc;
  box-sizing: content-box;
  margin: auto;
  padding: 0;
  background-color: #ccc;
  text-align: center;
}
.slide li {
  list-style: none;
  width: 18px;
  aspect-ratio: 1;
  user-select: none;
}
.slide input {
  translate: 0 50px;
  width: 100%;
  height: 100%;
  border-radius: 100%;
  background-color: #eee;
  cursor: pointer;
}
.slide input:checked {
  background-color: #bbb;
}
.slide img {
  --opacity: 0;
  position: absolute;
  top: 0;
  left: 0;
  inline-size: var(--img-size);
  aspect-ratio: var(--aspect-ratio);
  opacity: var(--opacity);
  transition: opacity 0.2s 0s ease-out;
  pointer-events: none;
}
[for^="slide"]:has(:checked) + img {
  --opacity: 1;
}
[for^="slide"]:before,
[for^="slide"]:after {
  --btn-size: calc(var(--img-size) / 13);
  position: absolute;
  top: calc(50% - (var(--btn-size) / 2));
  inline-size: var(--btn-size);
  aspect-ratio: 1;
  background: #ffffffaa url(data:image/svg+xml;charset=utf8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%3Cpath%20d%3D%22M16.67%200l2.83%202.829-9.339%209.175%209.339%209.167-2.83%202.829-12.17-11.996z%22%2F%3E%3C%2Fsvg%3E) no-repeat 50% 50% / calc(var(--btn-size) * 0.4);
  border: 1px solid #eee;
  border-radius: 100%;
  color: #fff;
  cursor: pointer;
  z-index: 1;
}
[for^="slide"]:before {
  left: calc(var(--btn-size) / 2 * -1);
}
[for^="slide"]:after {
  left: calc(var(--img-size) - var(--btn-size) / 2);
  rotate: 180deg;
}
/* 大事なのはここ */
li:has(:checked) + li [for^="slide"]:after,
li:not(li:has(:checked), li:has(:checked) ~ li) [for^="slide"]:before {
  content: "";
}