/* ==========================================================================
   Component: FAQ
   Mobile-first accordion section
   ========================================================================== */

.faq {
	padding-block: var(--space-8);
	background-color: var(--color-surface-primary);
}

/* --------------------------------------------------------------------------
   Header
   -------------------------------------------------------------------------- */

.faq__header {
	text-align: center;
	margin-block-end: var(--space-7);
}

.faq__headline {
	font-family: var(--font-family-heading);
	font-size: var(--font-size-3xl);
	font-weight: var(--font-weight-bold);
	line-height: var(--line-height-tight);
	color: var(--color-text-primary);
	margin-block-end: var(--space-4);
}

.faq__subheadline {
	font-family: var(--font-family-body);
	font-size: var(--font-size-lg);
	font-weight: var(--font-weight-normal);
	line-height: var(--line-height-normal);
	color: var(--color-text-secondary);
	max-width: 60ch;
	margin-inline: auto;
	margin-block-end: 0;
}

/* --------------------------------------------------------------------------
   List
   -------------------------------------------------------------------------- */

.faq__list {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: 0;
	border-block-start: 1px solid var(--color-border-default);
}

/* --------------------------------------------------------------------------
   Item
   -------------------------------------------------------------------------- */

.faq__item {
	border-block-end: 1px solid var(--color-border-default);
}

/* --------------------------------------------------------------------------
   Question / Toggle button
   -------------------------------------------------------------------------- */

.faq__question {
	margin: 0;
	padding: 0;
}

.faq__toggle {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--space-4);
	width: 100%;
	padding-block: var(--space-5);
	padding-inline: 0;
	background: none;
	border: none;
	cursor: pointer;
	text-align: start;
	color: var(--color-text-primary);
	font-family: var(--font-family-body);
	font-size: var(--font-size-base);
	font-weight: var(--font-weight-medium);
	line-height: var(--line-height-normal);
	transition: color var(--transition-fast);
}

.faq__toggle:hover {
	color: var(--color-brand-primary);
}

.faq__toggle:focus-visible {
	outline: 2px solid var(--color-brand-primary);
	outline-offset: 2px;
	border-radius: var(--radius-sm);
}

.faq__question-text {
	flex: 1;
}

/* --------------------------------------------------------------------------
   Icon (plus / minus)
   -------------------------------------------------------------------------- */

.faq__icon {
	flex-shrink: 0;
	display: grid;
	place-items: center;
	width: 1.25rem;
	height: 1.25rem;
	color: var(--color-brand-primary);
	transition: transform var(--transition-normal);
}

.faq__icon-plus,
.faq__icon-minus {
	grid-area: 1 / 1;
	transition: opacity var(--transition-fast);
}

/* Default state: show plus, hide minus */
.faq__icon-minus {
	opacity: 0;
}

/* Open state: hide plus, show minus */
.faq__item--open .faq__icon-plus {
	opacity: 0;
}

.faq__item--open .faq__icon-minus {
	opacity: 1;
}

.faq__item--open .faq__toggle {
	color: var(--color-brand-primary);
}

/* --------------------------------------------------------------------------
   Answer
   -------------------------------------------------------------------------- */

.faq__answer {
	margin: 0;
	padding: 0;
	overflow: hidden;
}

.faq__answer[hidden] {
	display: none;
}

.faq__answer-inner {
	padding-block-end: var(--space-5);
	padding-inline-end: var(--space-7);
	font-family: var(--font-family-body);
	font-size: var(--font-size-base);
	line-height: var(--line-height-normal);
	color: var(--color-text-secondary);
}

.faq__answer-inner > *:last-child {
	margin-block-end: 0;
}

.faq__answer-inner a {
	color: var(--color-brand-primary);
	text-decoration: underline;
	transition: filter var(--transition-fast);
}

.faq__answer-inner a:hover {
	filter: brightness(0.9);
}

/* --------------------------------------------------------------------------
   Responsive — tablet and up
   -------------------------------------------------------------------------- */

@media (min-width: 48rem) {
	.faq {
		padding-block: var(--space-8);
	}

	.faq__headline {
		font-size: var(--font-size-4xl);
	}

	.faq__toggle {
		font-size: var(--font-size-lg);
		padding-block: var(--space-6);
	}

	.faq__answer-inner {
		padding-block-end: var(--space-6);
		padding-inline-end: var(--space-8);
	}
}

/* --------------------------------------------------------------------------
   Responsive — desktop and up
   -------------------------------------------------------------------------- */

@media (min-width: 64rem) {
	.faq__header {
		margin-block-end: var(--space-8);
	}
}
