:where(em) {
	font-style: normal;
}

/* 無限スクロールの max-content リストがグリッド幅を押し広げないようにする */
.exclude-header {
	min-width: 0;
	overflow-x: clip;
}

.exclude-header main {
	min-width: 0;
}

/* トップページ：効果実感・ソーシャルプルーフ */

.social-proof {
	--social-proof-bg: #f2f2f2;
	--social-proof-rate-color: var(--color-primary, #04aa3a);
	--social-proof-shape-color: #fff;
	--social-proof-shape-width: 320px;
	--social-proof-shape-height: 40px;
	--social-proof-shape-overlap: 40px;
	--social-proof-inner-padding-block: 32px 48px;
	--social-proof-content-padding-inline: clamp(16px, calc(16px + (100vw - 375px) * 8 / 393), 24px);
	--social-proof-tagline-size: clamp(14px, calc(14px + (100vw - 375px) * 4 / 393), 18px);
	--social-proof-lead-size: clamp(16px, calc(16px + (100vw - 375px) * 9 / 393), 25px);
	--social-proof-heading-size: clamp(20px, calc(20px + (100vw - 375px) * 20 / 393), 40px);
	--social-proof-rate-size: var(--social-proof-heading-size);
	--social-proof-emphasis-color: #ef2424;
	--social-proof-gallery-gap: 20px;
	--social-proof-image-width: 200px;
	--social-proof-marquee-duration: 26.04s;

	position: relative;
	padding-block-start: var(--social-proof-shape-overlap);
	background-color: var(--social-proof-bg);
	overflow-x: clip;
}

.social-proof__shape {
	position: absolute;
	top: 0;
	width: var(--social-proof-shape-width);
	height: var(--social-proof-shape-height);
	background-color: var(--social-proof-shape-color);
	clip-path: polygon(0 0, 100% 0, 50% 100%);
	left: 0;
	right: 0;
	margin-inline: auto;
}

.social-proof__inner {
	width: min(100%, 1216px);
	min-width: 0;
	margin-inline: auto;
	padding-block: var(--social-proof-inner-padding-block);
}

.social-proof__content {
	padding-inline: var(--social-proof-content-padding-inline);
	text-align: center;
}

.social-proof__tagline {
	font-size: var(--social-proof-tagline-size);
	font-weight: 700;
	line-height: 1.5;
}

.social-proof__lead {
	margin-block-start: 12px;
	font-size: var(--social-proof-lead-size);
	font-weight: 700;
	line-height: 1.5;
}

.social-proof__emphasis {
	font-weight: 700;
	color: var(--social-proof-emphasis-color);
}

.social-proof__heading {
	margin-block-start: 16px;
	font-size: var(--social-proof-heading-size);
	font-weight: 700;
	line-height: 1.5;
}

.social-proof__rate {
	font-size: var(--social-proof-rate-size);
	color: var(--social-proof-rate-color);
}

@keyframes social-proof-marquee {
	from {
		transform: translateX(0);
	}

	to {
		transform: translateX(-50%);
	}
}

/* flex gap 併用時は -50% だと1周分の移動量が gap/2 ずれるため、モバイルは明示的な距離でループ */
@keyframes social-proof-marquee-mobile {
	from {
		transform: translateX(0);
	}

	to {
		transform: translateX(calc(-4 * (var(--social-proof-image-width) + var(--social-proof-gallery-gap))));
	}
}

.social-proof__gallery {
	position: relative;
	min-width: 0;
	margin-block-start: 28px;
	margin-inline: var(--social-proof-content-padding-inline);
	overflow: hidden;
}

.social-proof__gallery:hover .social-proof__list {
	animation-play-state: paused;
}

.social-proof__gallery.is-interacting .social-proof__list {
	animation-play-state: paused;
}

.social-proof__nav {
	position: absolute;
	top: 50%;
	z-index: 1;
	display: grid;
	place-items: center;
	padding: 0;
	border: none;
	background: transparent;
	cursor: pointer;
	translate: 0 -50%;
}

.social-proof__nav--prev {
	left: 33px;
}

.social-proof__nav--next {
	right: 33px;
}

.social-proof__nav .material-symbols-rounded {
	--social-proof-arrow-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 23 39'%3E%3Cpath fill='%23000' d='M857.005,231.479L858.5,230l18.124,18-18.127,18-1.49-1.48L873.638,248Z' transform='translate(-855 -230)'/%3E%3C/svg%3E");

	display: block;
	width: 23px;
	height: 39px;
	font-size: 0;
	line-height: 0;
	background-color: #fff;
	filter: drop-shadow(0 1px 0.15px #b2b2b2);
	-webkit-mask: var(--social-proof-arrow-mask) center / contain no-repeat;
	mask: var(--social-proof-arrow-mask) center / contain no-repeat;
}

.social-proof__nav--prev .material-symbols-rounded {
	--social-proof-arrow-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 23 39'%3E%3Cg transform='translate(23 0) scale(-1 1)'%3E%3Cpath fill='%23000' d='M857.005,231.479L858.5,230l18.124,18-18.127,18-1.49-1.48L873.638,248Z' transform='translate(-855 -230)'/%3E%3C/g%3E%3C/svg%3E");
}

.social-proof__list {
	display: flex;
	gap: var(--social-proof-gallery-gap);
	width: max-content;
	margin: 0;
	padding: 0;
	list-style: none;
	animation: social-proof-marquee-mobile var(--social-proof-marquee-duration) linear infinite;
}

.social-proof__list--transitioning {
	transition: transform 0.4s ease;
}

.social-proof__item {
	flex-shrink: 0;
}

.social-proof__image {
	display: block;
	flex-shrink: 0;
	width: var(--social-proof-image-width);
	height: auto;
	aspect-ratio: 414 / 276;
	object-fit: cover;
}

@media (width >=768px) {
	.social-proof {
		--social-proof-inner-padding-block: 40px 56px;
		--social-proof-gallery-gap: 20px;
		--social-proof-image-width: 414px;
	}

	.social-proof__gallery {
		margin-block-start: 36px;
	}

	.social-proof__list {
		animation-name: social-proof-marquee;
	}

	.social-proof__image {
		width: 414px;
	}
}

/* トップページ：お客様の声 */

.reviews__heading {
	margin: 0 0 30px;
	padding-inline: 32px;
	color: #333;
	font-size: 20px;
	font-weight: 700;
	line-height: 1.5;
	text-align: center;
	word-break: break-word;
}

@media (width >=768px) {
	.reviews__heading {
		margin-bottom: 80px;
		padding-inline: 0;
		font-size: 32px;
	}
}

.reviews {
	--reviews-gallery-gap: 20px;
	--reviews-gallery-margin-block-end: 80px;
	--reviews-image-width: min(550px, calc(550 / 1440 * 100vw));
	/* 最も縦長の review-item-10 (741×597) に合わせてスロット高を統一 */
	--reviews-item-height: calc(var(--reviews-image-width) * 597 / 741);
	--reviews-marquee-duration: 128.1s;
	--reviews-quote-bg: #f0f9e7;
	--reviews-quote-emphasis-color: #349936;
	--reviews-quote-padding-inline: clamp(16px, calc(16px + (100vw - 375px) * 8 / 393), 24px);
	--reviews-quote-text-size: clamp(18px, calc(18px + (100vw - 375px) * 10 / 393), 28px);
	--reviews-quote-meta-size: clamp(14px, calc(14px + (100vw - 375px) * 4 / 393), 18px);
	--reviews-padding-block-end: 50px;
	--reviews-quote-margin-block-start: 30px;
	--reviews-story-margin-block-start: 30px;
	--reviews-story-gap: 40px;
	--reviews-story-visuals-gap: 40px;
	--reviews-story-text-max-width: 780px;
	--reviews-story-item-gap: 25px;
	--reviews-story-question-size: 18px;
	--reviews-story-answer-size: 16px;

	background-image: none;
	padding-block: 0 var(--reviews-padding-block-end);
	overflow-x: clip;
}

@keyframes reviews-marquee {
	from {
		transform: translateX(0);
	}

	to {
		transform: translateX(calc(-15 * (var(--reviews-image-width) + var(--reviews-gallery-gap))));
	}
}

.reviews__gallery {
	position: relative;
	width: 100vw;
	margin-inline: calc(50% - 50vw);
	margin-block-end: var(--reviews-gallery-margin-block-end);
	overflow: hidden;
}

.reviews__gallery:hover .reviews__list {
	animation-play-state: paused;
}

.reviews__gallery.is-interacting .reviews__list {
	animation-play-state: paused;
}

.reviews__nav {
	position: absolute;
	top: 50%;
	z-index: 1;
	display: grid;
	place-items: center;
	padding: 0;
	border: none;
	background: transparent;
	cursor: pointer;
	translate: 0 -50%;
}

.reviews__nav--prev {
	left: 33px;
}

.reviews__nav--next {
	right: 33px;
}

.reviews__nav-icon {
	display: block;
	width: 20px;
	height: 36px;
	object-fit: contain;
}

.reviews__nav--prev .reviews__nav-icon,
.reviews-viewer__nav--prev .reviews__nav-icon {
	transform: scaleX(-1);
}

.reviews__nav .reviews__nav-icon {
	filter: brightness(0) invert(1) drop-shadow(0 1px 0.15px #b2b2b2);
}

.reviews-viewer__nav .reviews__nav-icon {
	filter: drop-shadow(0 1px 0.15px #b2b2b2);
}

.reviews__list {
	display: flex;
	gap: var(--reviews-gallery-gap);
	width: max-content;
	margin: 0;
	padding: 0;
	list-style: none;
	animation: reviews-marquee var(--reviews-marquee-duration) linear infinite;
}

.reviews__list--transitioning {
	transition: transform 0.4s ease;
}

.reviews__item {
	display: flex;
	flex-shrink: 0;
	align-items: center;
	justify-content: center;
	width: var(--reviews-image-width);
	height: var(--reviews-item-height);
	position: relative;
	cursor: pointer;
}

.reviews__item:hover::before {
    content: "";
    display: block;
	background-color: rgb(228 228 228 / 30%);
    width: 100%;
    height: 100%;
    z-index: 1;
    position: absolute;
}

.reviews__image {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: contain;
	object-position: center;
}

.reviews__quote {
	margin-block: var(--reviews-quote-margin-block-start) 0;
	margin-inline: 0;
	padding-inline: var(--reviews-quote-padding-inline);
}

.reviews__quote-inner {
	width: min(100%, 980px);
	margin-inline: auto;
	padding: 10px 16px;
	border-radius: 8px;
	background-color: var(--reviews-quote-bg);
	text-align: center;
}

.reviews__quote-text {
	margin: 0;
	color: #333;
	font-size: var(--reviews-quote-text-size);
	font-weight: 400;
	line-height: 1.6;
	word-break: break-word;
}

.reviews__quote-emphasis {
	font-weight: 700;
	color: var(--reviews-quote-emphasis-color);
}

.reviews__quote-meta {
	margin: 10px 0 0;
	color: #333;
	font-size: var(--reviews-quote-meta-size);
	line-height: 1.8;
}

.reviews__quote-meta-emphasis {
	color: #ef2424;
}

.reviews__story {
	margin-block: var(--reviews-story-margin-block-start) 0;
	padding-inline: var(--reviews-quote-padding-inline);
}

.reviews__story + .reviews__story {
	margin-block-start: var(--reviews-story-margin-block-start);
}

.reviews__story-inner {
	display: flex;
	flex-direction: column;
	gap: var(--reviews-story-gap);
	width: min(100%, 1072px);
	margin-inline: auto;
}

.reviews__story-visuals {
	display: flex;
	flex-direction: column;
	gap: var(--reviews-story-visuals-gap);
}

.reviews__story-photo,
.reviews__story-form {
	margin: 0;
}

.reviews__story-photo {
	flex: 600 1 0;
}

.reviews__story-form {
	flex: 432 1 0;
}

.reviews__story-image {
	display: block;
	width: 100%;
	height: auto;
}

.reviews__story-text {
	display: flex;
	flex-direction: column;
	gap: var(--reviews-story-item-gap);
	width: min(100%, var(--reviews-story-text-max-width));
	margin-inline: auto;
}

.reviews__story-question,
.reviews__story-answer {
	margin: 0;
	color: #333;
	word-break: break-word;
}

.reviews__story-question {
	font-size: var(--reviews-story-question-size);
	font-weight: 700;
	line-height: 1.4;
}

.reviews__story-answer {
	margin-block-start: 14px;
	font-size: var(--reviews-story-answer-size);
	line-height: 1.8;
}

.reviews__interviews {
	margin-block: var(--reviews-story-margin-block-start) 0;
	padding-inline: var(--reviews-quote-padding-inline);
}

.reviews__interviews-inner {
	--reviews-interview-gap: 20px;
	--reviews-interview-width: 480px;

	display: flex;
	flex-direction: column;
	align-items: center;
	gap: var(--reviews-interview-gap);
	width: min(100%, 980px);
	margin-inline: auto;
}

.reviews__interview {
	flex-shrink: 0;
	width: min(100%, var(--reviews-interview-width));
}

.video-player {
	position: relative;
	display: block;
	width: 100%;
	aspect-ratio: 16 / 9;
	overflow: hidden;
	background-color: #000;
}

.video-player video {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	cursor: pointer;
}

.video-player__overlay {
	position: absolute;
	inset: 0;
	display: flex;
	align-items: center;
	justify-content: center;
	background-color: rgb(0 0 0 / 25%);
	color: #fff;
	cursor: pointer;
}

.video-player__play-icon {
	display: block;
}

.reviews-viewer {
	position: fixed;
	inset: 0;
	z-index: 9999;
	display: flex;
	flex-direction: column;
	background-color: #fff;
	opacity: 0;
	transition: opacity 0.4s ease;
}

.reviews-viewer[hidden] {
	display: none !important;
}

.reviews-viewer.is-open {
	opacity: 1;
}

.reviews-viewer__inner {
	display: flex;
	flex-direction: column;
	width: 100%;
	height: 100%;
	background-color: #fff;
}

.reviews-viewer__inner:fullscreen {
	background-color: #fff;
}

.reviews-viewer__toolbar {
	display: flex;
	flex-shrink: 0;
	align-items: center;
	justify-content: space-between;
	height: 74px;
	padding-block-start: 30px;
	padding-inline: clamp(16px, calc(16px + (100vw - 375px) * 8 / 393), 30px);
}

.reviews-viewer__fullscreen,
.reviews-viewer__close {
	place-items: center;
	width: 44px;
	height: 44px;
	padding: 0;
	border: none;
	background: transparent;
	cursor: pointer;
}

.reviews-viewer__close {
	display: grid;
}

.reviews-viewer__fullscreen {
	display: none;
}

.reviews-viewer__fullscreen img {
	display: block;
	width: 24px;
	height: 24px;
}

.reviews-viewer__close-icon {
	position: relative;
	display: block;
	width: 24px;
	height: 24px;
}

.reviews-viewer__close-icon::before,
.reviews-viewer__close-icon::after {
	content: "";
	position: absolute;
	top: 50%;
	left: 50%;
	width: 24px;
	height: 1px;
	background-color: #333;
}

.reviews-viewer__close-icon::before {
	transform: translate(-50%, -50%) rotate(45deg);
}

.reviews-viewer__close-icon::after {
	transform: translate(-50%, -50%) rotate(-45deg);
}

.reviews-viewer__stage {
	position: relative;
	display: flex;
	flex: 1;
	align-items: center;
	justify-content: center;
	min-height: 0;
	padding-inline: clamp(16px, calc(16px + (100vw - 375px) * 8 / 393), 90px);
}

.reviews-viewer__figure {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 100%;
	height: 100%;
	margin: 0;
}

.reviews-viewer__image {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: contain;
	object-position: center;
	opacity: 1;
	transition: opacity 0.4s ease;
}

.reviews-viewer__image.is-fading {
	opacity: 0;
}

.reviews-viewer__nav {
	width: 50px;
	height: 50px;
	opacity: 0.9;
}

.reviews-viewer__nav--prev {
	left: clamp(8px, calc(8px + (100vw - 375px) * 22 / 393), 30px);
}

.reviews-viewer__nav--next {
	right: clamp(8px, calc(8px + (100vw - 375px) * 22 / 393), 30px);
}

@media (width >=768px) {
	.reviews-viewer__fullscreen {
		display: grid;
	}

	.reviews {
		--reviews-padding-block-end: 100px;
		--reviews-quote-margin-block-start: 50px;
		--reviews-story-margin-block-start: 50px;
		--reviews-story-question-size: 20px;
		--reviews-story-answer-size: 18px;
	}

	.reviews__quote-inner {
		padding: 10px 24px;
	}

	.reviews__story-visuals {
		flex-direction: row;
		align-items: center;
	}

	.reviews__interviews-inner {
		flex-flow: row wrap;
		align-items: flex-start;
		justify-content: center;
	}

	.reviews__interview {
		width: var(--reviews-interview-width);
	}
}