/**
 * カルーセル
*/
.carousel {
	position: relative;
	max-width: 100%;
	padding: 2em 0;

	--slide-spacing: 2rem;
	--slide-size-sm: 65%;
	--slide-border-color: #eee;
	--button-front-color: rgba(0, 134, 58, 1);
	--button-front-color-disabled: rgba(0, 134, 58, 0.3);
	--button-back-color: rgba(255, 255, 255, 0.55);
}

.carousel__viewport {
	width: fit-content;
	max-width: 100%;
	margin-inline: 0;
	overflow: hidden;
}

.carousel__container {
	display: flex;
	/* 1枚目と最後のマージンを相殺 */
	margin-inline: calc(var(--slide-spacing) * -0.5);
	touch-action: pan-y pinch-zoom;
}

.carousel__slide {
	display: flex;
	flex-basis: var(--slide-size-sm);
	flex-grow: 0;
	flex-shrink: 0;
	min-width: 0;
	margin-inline: calc(var(--slide-spacing) * 0.5);
	user-select: none;
}

.carousel__slide img {
	border: 3px solid var(--slide-border-color);
}

.carousel__prev,
.carousel__next {
	display: flex;
	position: absolute;
	z-index: 10;
	top: 50%;
	appearance: none;
	touch-action: manipulation;
	padding: 26px;
	transform: translateY(-50%);
	border: 0;
	border-radius: 999px;
	background-color: var(--button-back-color);
	cursor: pointer;

	-webkit-tap-highlight-color: transparent;
}

.carousel__prev::before,
.carousel__next::before {
	content: "";
	position: absolute;
	width: 1em;
	height: 1em;
	transform: translate(-50%, -50%) rotate(-135deg);
	border: 2px solid var(--button-front-color);
	border-bottom: 0;
	border-left: 0;
}

.carousel__prev::before {
	left: 28px;
}

.carousel__next::before {
	left: 23px;
	transform: translate(-50%, -50%) rotate(45deg);
}

.carousel__prev {
	left: 0;
}

.carousel__next {
	right: 0;
}

.carousel__prev:disabled,
.carousel__next:disabled {
	cursor: default;
}

.carousel__prev:disabled::before,
.carousel__next:disabled::before {
	border-color: var(--button-front-color-disabled);
}

.carousel__img {
	display: block;
	margin-inline: auto;
}

/* PC用 */
@media (min-width: 768px) {
	.carousel {
		padding: 5em 0;
	}

	.carousel__viewport {
		max-width: 98%;
		margin-inline: auto;
	}

	.carousel__slide {
		flex-basis: auto;
	}
}
