/* CSS Variables */
:root {
	/* Colors */
	--faq-border: #1px solid #e0e0e0;
	--faq-question-bg-hover: #f5f5f5;
	--faq-question-focus-outline: #005a9c;

	/* Typography */
	--faq-question-font-size: var(--wp--preset--font-size--medium, 2.1rem);
	--faq-question-font-weight: bold;
	--faq-answer-font-size: var(--wp--preset--font-size--medium, 2.1rem);
	--faq-answer-font-weight: normal;
	--faq-arrow-font-size: var(--wp--preset--font-size--medium, 2.1rem);

	/* Spacing */
	--faq-question-padding: 1rem;
	--faq-answer-padding: 1rem;
	--faq-border-radius: 4px;

	/* Transition */
	--faq-transition-duration: 0.4s;
	--faq-transition-easing: cubic-bezier(0.25, 0.1, 0.25, 1);
}

/* Basic Styles */
.faq-list .faq-item {
	border-bottom: var(--faq-border);
}

.faq-list .faq-question {
	box-sizing: content-box;
	padding: var(--faq-question-padding);
	cursor: pointer;
	font-size: var(--faq-question-font-size);
	font-weight: var(--faq-question-font-weight);
	margin: 0;
	position: relative;
	border-radius: var(--faq-border-radius);
	transition: background-color 0.2s ease-in-out;
}

.faq-list .faq-question:hover {
	background-color: var(--faq-question-bg-hover);
}

/* Accessibility */
.faq-list .faq-question:focus-visible {
	outline: 2px solid var(--faq-question-focus-outline);
	outline-offset: 2px;
}

/* Open and Close Button */
.faq-list .faq-question::after {
	content: "+";
	position: absolute;
	right: 1rem;
	top: 50%;
	transform: translateY(-50%);
	font-size: var(--faq-arrow-font-size);
	font-weight: bold;
	transition: transform 0.3s ease;
}

/* Answers */
.faq-list .faq-answer {
	box-sizing: content-box;
	overflow: hidden;
	max-height: 0;
	transition:
		max-height var(--faq-transition-duration) var(--faq-transition-easing),
		padding var(--faq-transition-duration) var(--faq-transition-easing);
	font-size: var(--faq-answer-font-size);
	font-weight: var(--faq-answer-font-weight);
	padding: var(--faq-answer-padding);
	padding-top: 0;
	padding-bottom: 0;
}
.faq-list .faq-answer > *:first-child {
	margin-top: 0;
}
.faq-list .faq-answer > *:last-child {
	margin-bottom: 0;
}

/* Open State */
.faq-list .faq-item.is-open .faq-question {
	box-sizing: content-box;
}

.faq-list .faq-item.is-open .faq-question::after {
	transform: translateY(-50%) rotate(45deg);
}

.faq-list .faq-item.is-open .faq-answer {
	padding: var(--faq-answer-padding);
}
