.faq {
	position: relative;
	scroll-margin-top: 96px;
	padding-block: clamp(88px, 12vw, 176px);
	overflow: clip;
	background: var(--color-ivory);
}

.faq::before {
	position: absolute;
	bottom: -150px;
	left: -130px;
	width: 330px;
	height: 330px;
	border: 1px solid rgb(var(--color-brand-900-rgb) / 0.08);
	border-radius: 50%;
	content: "";
	pointer-events: none;
}

.faq__inner {
	position: relative;
	z-index: 1;
	display: grid;
	gap: clamp(52px, 8vw, 104px);
}

.faq__header {
	position: relative;
	display: grid;
	gap: 38px;
}

.faq__label {
	display: grid;
	grid-template-columns: 38px auto;
	align-items: center;
	gap: 3px 12px;
	margin: 0;
	color: var(--color-brand-700);
}

.faq__label-line {
	grid-row: 1 / 3;
	width: 38px;
	height: 1px;
	background: var(--color-accent);
}

.faq__label-en {
	font-family: var(--font-latin);
	font-size: var(--font-size-label);
	font-weight: 700;
	line-height: 1.4;
	letter-spacing: 0.2em;
}

.faq__label-ja {
	color: var(--color-muted);
	font-size: var(--font-size-label);
	font-weight: 600;
	line-height: 1.4;
	letter-spacing: 0.08em;
}

.faq__title {
	margin: 0;
	color: var(--color-ink);
	font-family: var(--font-serif);
	font-size: clamp(2rem, 7vw, 3.6rem);
	font-weight: 600;
	line-height: 1.6;
	letter-spacing: 0.045em;
}

.faq__title span {
	color: var(--color-brand-700);
}

.faq__lead {
	max-width: 38rem;
	margin: 24px 0 0;
	font-size: var(--font-size-body);
	line-height: 2.15;
}

.faq__decoration {
	display: none;
	margin: 0;
	color: rgb(var(--color-brand-900-rgb) / 0.045);
	font-family: var(--font-latin);
	font-size: clamp(5rem, 11vw, 10rem);
	font-weight: 700;
	line-height: 1;
	letter-spacing: -0.04em;
	pointer-events: none;
}

.faq__content {
	min-width: 0;
}

.faq__list {
	border-top: 1px solid var(--color-walnut);
}

.faq-item {
	border-bottom: 1px solid rgb(var(--color-brand-900-rgb) / 0.13);
}

.faq-item__question {
	display: grid;
	grid-template-columns: 46px minmax(0, 1fr) 40px;
	align-items: center;
	gap: 12px;
	min-height: 96px;
	padding-block: 18px;
	cursor: pointer;
	list-style: none;
}

.faq-item__question::-webkit-details-marker {
	display: none;
}

.faq-item__number {
	color: var(--color-brand-700);
	font-family: var(--font-latin);
	font-size: var(--font-size-label);
	font-weight: 700;
	letter-spacing: 0.08em;
}

.faq-item__question-text {
	color: var(--color-ink);
	font-family: var(--font-serif);
	font-size: clamp(1rem, 3.7vw, 1.2rem);
	font-weight: 600;
	line-height: 1.8;
	letter-spacing: 0.035em;
	transition: color var(--transition);
}

.faq-item__question:hover .faq-item__question-text,
.faq-item[open] .faq-item__question-text {
	color: var(--color-brand-700);
}

.faq-item__toggle {
	position: relative;
	display: grid;
	place-items: center;
	width: 38px;
	height: 38px;
	border: 1px solid var(--color-walnut);
	border-radius: 50%;
	transition: background-color var(--transition), border-color var(--transition), transform var(--transition);
}

.faq-item__toggle::before,
.faq-item__toggle::after {
	position: absolute;
	width: 13px;
	height: 1px;
	background: var(--color-brand-700);
	content: "";
	transition: background-color var(--transition), transform var(--transition);
}

.faq-item__toggle::after {
	transform: rotate(90deg);
}

.faq-item[open] .faq-item__toggle {
	border-color: var(--color-brand-700);
	background: var(--color-brand-700);
	transform: rotate(180deg);
}

.faq-item[open] .faq-item__toggle::before,
.faq-item[open] .faq-item__toggle::after {
	background: var(--color-white);
}

.faq-item[open] .faq-item__toggle::after {
	transform: rotate(0deg);
}

.faq-item__answer {
	padding: 0 0 30px 58px;
}

.faq-item__answer-inner {
	padding: 22px 24px;
	border-radius: var(--radius-small);
	background: var(--color-cream);
}

.faq-item[open] .faq-item__answer-inner {
	animation: faq-answer-in 360ms ease both;
}

.faq-item__category {
	display: inline-flex;
	align-items: center;
	min-height: 24px;
	margin: 0 0 12px;
	padding-inline: 9px;
	border-radius: 999px;
	background: var(--color-paper);
	color: var(--color-brand-700);
	font-size: var(--font-size-label);
	font-weight: 700;
	line-height: 1;
}

.faq-item__answer-text {
	font-size: 1rem;
	line-height: 2;
}

.faq-item__answer-text > :first-child {
	margin-top: 0;
}

.faq-item__answer-text > :last-child {
	margin-bottom: 0;
}

.faq__empty {
	padding: clamp(38px, 7vw, 70px);
	border: 1px dashed var(--color-walnut);
	border-radius: var(--radius-medium);
	background: var(--color-cream);
	text-align: center;
}

.faq__empty-en {
	margin: 0 0 10px;
	color: var(--color-brand-700);
	font-family: var(--font-latin);
	font-size: var(--font-size-label);
	font-weight: 700;
	letter-spacing: 0.17em;
}

.faq__empty h3 {
	margin: 0;
	color: var(--color-ink);
	font-family: var(--font-serif);
	font-size: clamp(1.15rem, 4vw, 1.55rem);
	font-weight: 600;
	line-height: 1.7;
}

.faq__empty > p:last-child {
	margin: 12px 0 0;
	font-size: var(--font-size-body);
}

@keyframes faq-answer-in {
	from {
		opacity: 0;
		transform: translateY(-5px);
	}

	to {
		opacity: 1;
		transform: translateY(0);
	}
}

@media (min-width: 960px) {
	.faq__inner {
		grid-template-columns: minmax(310px, 0.72fr) minmax(0, 1.28fr);
		align-items: start;
	}

	.faq__header {
		position: sticky;
		top: 118px;
	}

	.faq__decoration {
		display: block;
		margin-top: 26px;
	}

	.faq-item__question {
		grid-template-columns: 58px minmax(0, 1fr) 46px;
		gap: 18px;
		min-height: 112px;
	}

	.faq-item__answer {
		padding: 0 0 36px 76px;
	}
}

@media (max-width: 479px) {
	.faq-item__question {
		grid-template-columns: 38px minmax(0, 1fr) 34px;
		gap: 9px;
	}

	.faq-item__toggle {
		width: 32px;
		height: 32px;
	}

	.faq-item__answer {
		padding-left: 0;
	}
}

@media (prefers-reduced-motion: reduce) {
	.faq-item[open] .faq-item__answer-inner {
		animation: none;
	}
}
