/* Dental prices page — hero only in the first implementation pass. */
body.de-prices-page {
	color: var(--de-ink);
	font-family: "Roboto DE", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}

/* A few native elements, notably <summary>, use the browser's default serif
 * face unless they receive the site font directly. Apply Roboto throughout
 * the prices content while preserving the Georama rules for H1/H2 below. */
body.de-prices-page .de-prices-page__main,
body.de-prices-page .de-prices-page__main :is(
	h3,
	h4,
	h5,
	h6,
	p,
	a,
	span,
	strong,
	small,
	em,
	label,
	li,
	dt,
	dd,
	summary,
	button,
	input,
	select,
	option,
	textarea
) {
	font-family: var(--de-font);
}

/* The shared form-control reset targets the LP and homepage. Keep this page
 * on the same Roboto/Georama typography system instead of browser defaults. */
.de-prices-page button,
.de-prices-page input,
.de-prices-page select,
.de-prices-page textarea {
	font-family: inherit;
}

/* Match the LP contact form: its consent link must inherit the white text
 * color from the final purple form band, including after it was visited. */
.de-prices-page__main a:not(.de-button),
.de-prices-page__main a:not(.de-button):visited {
	color: inherit;
}

.de-prices-page h1,
.de-prices-page h2 {
	font-family: "Georama DE", "Roboto DE", ui-sans-serif, system-ui, sans-serif;
}

.de-prices-page__main {
	background: #f6f4fc;
}

.de-prices-page .de-testimonials {
	background: var(--de-white);
}

.de-prices-hero {
	align-items: center;
	display: flex;
	height: 100vh;
	isolation: isolate;
	min-height: 100vh;
	overflow: hidden;
	position: relative;
}

.de-prices-hero__background,
.de-prices-hero__overlay {
	inset: 0;
	position: absolute;
}

.de-prices-hero__background {
	height: 100%;
	object-fit: cover;
	object-position: center 56%;
	width: 100%;
	z-index: -2;
}

.de-prices-hero__overlay {
	z-index: -1;
}

.de-prices-hero__content {
	align-items: center;
	box-sizing: border-box;
	color: #fff;
	display: flex;
	flex-direction: column;
	justify-content: center;
	margin-inline: auto;
	max-width: 48rem;
	padding-block: 10rem 3.5rem;
	position: relative;
	text-align: center;
	width: 100%;
}

.de-prices-hero h1 {
	color: inherit;
	font-family: var(--de-heading);
	font-size: clamp(2.5rem, 4vw, 3.75rem);
	font-weight: 600;
	letter-spacing: var(--de-heading-letter-spacing);
	line-height: 1;
	margin: 0;
	max-width: 42rem;
}


.de-prices-hero__content > p {
	font-size: clamp(1.05rem, 1.65vw, 1.3rem);
	line-height: 1.4;
	margin: 1.45rem 0 0;
	max-width: 37rem;
}

.de-prices-hero__content > p + p {
	margin-top: 1.4rem;
	max-width: 31rem;
}

@media (max-width: 700px) {
	.de-prices-hero {
		height: 100vh;
		min-height: 100vh;
	}

	.de-prices-hero__background {
		object-position: 57% center;
	}

	.de-prices-hero__content {
		padding-block: 11rem 3.5rem;
	}

	.de-prices-hero h1 {
		font-size: 1.75rem;
		font-weight: 600;
		letter-spacing: var(--de-heading-letter-spacing);
		line-height: 2.5rem;
	}

	.de-prices-hero__content > p {
		font-size: clamp(1rem, 4.25vw, 1.18rem);
		line-height: 1.28;
		max-width: 30rem;
	}

	.de-prices-hero__cta {
		margin-top: 2.35rem;
	}
}

/* Editable price catalogue. The first viewport mirrors the 400px Figma
 * composition while the same single column has room to breathe on desktop. */
.de-prices-catalog {
	background: #fff;
	padding: calc(2 * var(--de-section-space)) 0 var(--de-section-space);
}

.de-prices-catalog__inner {
	max-width: 56.25rem;
}

.de-prices-catalog__primary-list,
.de-price-accordion__secondary-list {
	display: grid;
}

.de-prices-catalog__primary-list {
	gap: clamp(1.5rem, 3.4vw, 2.5rem);
}

.de-price-accordion {
	background: #f1eafb;
	border: 1px solid #d6ccf2;
	border-radius: 0.875rem;
	overflow: hidden;
}

.de-price-accordion > summary {
	align-items: center;
	background: #f1eafb;
	color: #5942cb;
	cursor: pointer;
	display: grid;
	font-family: var(--de-font);
	font-size: 1.125rem;
	font-weight: 800;
	gap: 1.9375rem;
	grid-template-columns: minmax(0, 1fr) 1.5625rem;
	line-height: 1.17;
	list-style: none;
	min-height: 4.5625rem;
	padding: 1.25rem;
	scroll-margin-top: calc(var(--de-admin-bar-offset, 0px) + 1rem);
}

.de-price-accordion > summary::-webkit-details-marker {
	display: none;
}

.de-price-accordion > summary::marker {
	content: "";
}

.de-price-accordion[open] > summary {
	background: #5942cb;
	border-radius: 0.8125rem 0.8125rem 0 0;
	color: #fff;
}

.de-price-accordion__icon {
	display: block;
	height: 1.5625rem;
	position: relative;
	width: 1.5625rem;
}

.de-price-accordion__icon img {
	display: block;
	height: 100%;
	width: 100%;
}

.de-price-accordion__icon--primary img {
	inset: 0;
	position: absolute;
	transform: rotate(0deg);
}

.de-price-accordion__icon--primary .de-price-accordion__icon--expanded {
	opacity: 0;
}

.de-price-accordion--primary[open] .de-price-accordion__icon--collapsed {
	opacity: 0;
}

.de-price-accordion--primary[open] .de-price-accordion__icon--expanded {
	opacity: 1;
}

.de-price-accordion--primary[open] .de-price-accordion__icon--primary img {
	transform: rotate(180deg);
}

.de-price-accordion__content {
	background: #f1eafb;
	display: grid;
	grid-template-rows: 0fr;
	overflow: hidden;
	padding: 0;
}

.de-price-accordion__content-inner {
	min-height: 0;
	overflow: hidden;
}

.de-price-accordion--primary > .de-price-accordion__content > .de-price-accordion__content-inner {
	padding-inline: clamp(0.75rem, 2vw, 1.5rem);
}

.de-price-accordion:not([open]) > .de-price-accordion__content {
	display: grid;
}

.de-price-accordion[open] > .de-price-accordion__content {
	grid-template-rows: 1fr;
}

.de-price-accordion--primary[open] > .de-price-accordion__content {
	padding-block: 1.875rem;
}

.de-price-accordion__secondary-list {
	gap: 1.125rem;
}

.de-price-accordion--secondary {
	background: #fff;
}

.de-price-accordion--secondary > summary {
	background: #fff;
	color: #5942cb;
	font-size: 1rem;
	font-weight: 700;
	min-height: 4.25rem;
	padding: 1.125rem;
}

.de-price-accordion--secondary[open] > summary {
	background: #fff;
	color: #5942cb;
}

.de-price-accordion__icon--secondary {
	height: 0.9375rem;
	justify-self: end;
	width: 0.75rem;
}

.de-price-accordion__icon--secondary img {
	transform: rotate(180deg);
}

.de-price-accordion--secondary[open] .de-price-accordion__icon--secondary img {
	transform: rotate(0deg);
}

.de-price-accordion--secondary > .de-price-accordion__content {
	background: #fff;
}

.de-price-accordion--secondary > .de-price-accordion__content > .de-price-accordion__content-inner {
	padding: 0;
}

.de-price-accordion--secondary[open] > .de-price-accordion__content {
	padding: 1.125rem;
}

.de-price-services {
	display: grid;
	gap: 1.25rem;
}

.de-price-service-card {
	background: #fff;
	border: 1px solid #d6ccf2;
	border-radius: 0.875rem;
	padding: 1.25rem 0.875rem 1.125rem;
}

.de-price-service-card h4 {
	border-bottom: 1px solid #d6ccf2;
	color: #372f4c;
	font-family: var(--de-font);
	font-size: 0.875rem;
	font-weight: 700;
	line-height: 1.3;
	margin: 0;
	padding: 0 0.0625rem 0.875rem;
}

.de-price-service-card__prices {
	display: grid;
	gap: 0;
	margin-top: 1.2rem;
}

.de-price-service-card__prices--1 {
	grid-template-columns: minmax(0, 10rem);
	justify-content: center;
}

.de-price-service-card__prices--2 {
	grid-template-columns: repeat(2, minmax(0, 1fr));
}

.de-price-service-card__prices--3 {
	grid-template-columns: repeat(3, minmax(0, 1fr));
}

.de-price-service-card__price {
	min-width: 0;
	padding-inline: 0.5rem;
	text-align: center;
}

.de-price-service-card__price + .de-price-service-card__price {
	border-left: 1px solid #d6ccf2;
}

.de-price-service-card__price p {
	align-items: baseline;
	color: #372f4c;
	display: flex;
	font-size: 0.875rem;
	font-weight: 500;
	gap: 0.18rem;
	justify-content: center;
	line-height: 1;
	margin: 0.28rem 0 0;
}

.de-price-service-card__price strong {
	font-weight: 500;
}

.de-price-service-card__price small,
.de-price-service-card__price span {
	color: #838299;
	font-size: 0.625rem;
	font-weight: 400;
}

.de-price-service-card__price span {
	display: block;
	line-height: 1.2;
}

.de-price-service-card__price--final_price p,
.de-price-service-card__price--final_price p strong,
.de-price-service-card__price--final_price p small {
	color: #5942cb;
}

/* The estimate CTA follows the white, animated conversion treatment from the
 * approved price flow while the rest of the compact form stays shared with LP. */
#prices-consultation .de-form-field input {
	min-height: 2.5rem;
	padding-block: 0.5rem;
}

#prices-consultation .de-lead-form__submit.de-animated-cta {
	align-items: center;
	background: var(--de-white);
	border-color: var(--de-white);
	box-shadow: none;
	color: #5942cb;
	display: grid;
	font-weight: var(--de-button-font-weight);
	grid-column: 1 / -1;
	justify-items: center;
	justify-self: center;
	line-height: 1.1;
	min-height: 3.25rem;
	/* Reserve the right-hand icon column, then center the label in the
	 * remaining copy area rather than in the button's full width. */
	padding-left: 1rem;
	padding-right: 4.5rem;
	position: relative;
	width: min(100%, 18rem);
}

#prices-consultation .de-lead-form__submit.de-animated-cta > span {
	display: block;
	text-align: center;
}

#prices-consultation .de-lead-form__submit.de-animated-cta:hover,
#prices-consultation .de-lead-form__submit.de-animated-cta:focus-visible {
	background: #fbfaff;
	border-color: #fbfaff;
	color: #4a31c6;
}

#prices-consultation .de-animated-cta__arrow {
	height: 1.625rem;
	margin-left: 0;
	position: absolute;
	right: 1.75rem;
	width: 1.625rem;
}

/* The shared SVG is white-circle/purple-arrow. This white CTA needs the
 * inverse palette without replacing its existing SMIL animation. */
#prices-consultation .de-animated-cta__arrow path[fill="#fff"] {
	fill: #5942cb;
}

#prices-consultation .de-animated-cta__arrow path[fill="#5c41cc"] {
	fill: var(--de-white);
}

@media (prefers-reduced-motion: no-preference) {
	.de-price-accordion > summary,
	.de-price-accordion__icon img {
		transition: background-color 360ms cubic-bezier(0.22, 0.78, 0.24, 1), color 360ms cubic-bezier(0.22, 0.78, 0.24, 1), opacity 180ms linear, transform 420ms cubic-bezier(0.22, 0.78, 0.24, 1);
	}

	.de-price-accordion__content {
		transition: grid-template-rows 460ms cubic-bezier(0.22, 0.78, 0.24, 1), padding 460ms cubic-bezier(0.22, 0.78, 0.24, 1);
	}

	.de-price-accordion[open] > .de-price-accordion__content > .de-price-accordion__content-inner {
		animation: de-price-accordion-reveal 360ms cubic-bezier(0.22, 0.78, 0.24, 1) both;
	}
}

@keyframes de-price-accordion-reveal {
	from {
		opacity: 0;
		transform: translateY(-0.55rem);
	}

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

@media (min-width: 701px) {
	.de-price-accordion > summary {
		padding-inline: 1.5rem;
	}

	.de-price-service-card {
		padding: 1.35rem 1.25rem 1.2rem;
	}

	.de-price-service-card h4 {
		font-size: 0.95rem;
	}

	.de-price-service-card__price p {
		font-size: 1rem;
	}
}

@media (min-width: 450px) and (max-width: 899px) {
	.de-price-service-card__price p {
		font-size: 1.18rem;
		font-weight: 650;
	}

	.de-price-service-card__price strong {
		font-weight: 700;
	}

	.de-price-service-card__price small,
	.de-price-service-card__price span {
		font-size: 0.7rem;
	}
}

/* The desktop card has generous horizontal room: use it for the figures,
 * while retaining the compact mobile scale above. */
@media (min-width: 900px) {
	.de-price-service-card {
		padding: 1.5rem 1.35rem 1.35rem;
	}

	.de-price-service-card h4 {
		font-size: 1rem;
		padding-bottom: 1rem;
	}

	.de-price-service-card__prices {
		margin-top: 1.35rem;
	}

	.de-price-service-card__price p {
		font-size: 1.45rem;
		font-weight: 650;
	}

	.de-price-service-card__price strong {
		font-weight: 700;
	}

	.de-price-service-card__price small,
	.de-price-service-card__price span {
		font-size: 0.78rem;
	}
}

@media (max-width: 420px) {
	.de-prices-catalog__inner {
		padding-inline: 1rem;
	}

	.de-price-accordion > summary {
		gap: 1rem;
		padding-inline: 1rem;
	}

	.de-price-accordion__content-inner {
		padding-block: 1.25rem;
	}

	.de-price-accordion--primary > .de-price-accordion__content > .de-price-accordion__content-inner,
	.de-price-accordion--secondary > .de-price-accordion__content > .de-price-accordion__content-inner {
		padding-inline: 0.625rem;
	}

	.de-price-service-card {
		padding-inline: 0.625rem;
	}

	.de-price-service-card__price {
		padding-inline: 0.25rem;
	}

}
