/*
 * TherapyBuilt homepage surface roles and optional section imagery.
 * Colors are resolved through the active TherapyBuilt palette.
 */
.tb-section {
	transition: background-color .2s, background-image .2s;
}

.tb-section.tb-section--surface-base,
.tb-section.tb-section--odd {
	background-color: var(--tb-home-base, var(--tb-bg, #faf9f6));
	background-image: none;
}

.tb-section.tb-section--surface-soft,
.tb-section.tb-section--even {
	background-color: var(--tb-home-soft, var(--tb-surface, #f6f0ec));
	background-image: none;
}

.tb-section.tb-section--surface-wash {
	background-color: var(--tb-primary-light, #d4e5d6);
	background-image: var(--tb-home-wash);
	color: var(--tb-on-wash, var(--tb-text, #2c3e35));
}

.tb-section.tb-section--surface-emphasis,
.tb-section.tb-section--highlight {
	background-color: var(--tb-emphasis-start, var(--tb-primary-dark, #3f5941));
	background-image: var(--tb-home-emphasis);
	color: var(--tb-on-emphasis, #ffffff);
}

/* Warm Alternating: familiar white + neutral rhythm. */
.tb-home-scheme--warm-alternating {
	--tb-home-base: var(--tb-bg, #faf9f6);
	--tb-home-soft: var(--tb-surface, #f6f0ec);
	--tb-home-wash: linear-gradient(125deg, color-mix(in srgb, var(--tb-primary-light, #d4e5d6) 42%, var(--tb-bg, #faf9f6)), var(--tb-bg, #faf9f6) 82%);
	--tb-home-emphasis: linear-gradient(135deg, var(--tb-emphasis-start, var(--tb-primary-dark, #3f5941)), var(--tb-emphasis-mid, var(--tb-primary, #5a7a5e)));
}

/* Soft Brand Wash: recommended balanced system. */
.tb-home-scheme--soft-brand-wash {
	--tb-home-base: var(--tb-bg, #faf9f6);
	--tb-home-soft: var(--tb-surface, #f6f0ec);
	--tb-home-wash: linear-gradient(125deg, color-mix(in srgb, var(--tb-primary-light, #d4e5d6) 58%, var(--tb-bg, #faf9f6)), color-mix(in srgb, var(--tb-accent-light, #f0ddd3) 22%, var(--tb-bg, #faf9f6)) 68%, var(--tb-bg, #faf9f6));
	--tb-home-emphasis: linear-gradient(135deg, var(--tb-emphasis-start, var(--tb-primary-dark, #3f5941)), color-mix(in srgb, var(--tb-emphasis-mid, var(--tb-primary, #5a7a5e)) 88%, var(--tb-emphasis-end, var(--tb-accent-dark, #8a5438))));
}

/* Clean & Minimal: near-white surfaces and fine separators. */
.tb-home-scheme--clean-minimal {
	--tb-home-base: var(--tb-bg, #faf9f6);
	--tb-home-soft: var(--tb-bg, #faf9f6);
	--tb-home-wash: linear-gradient(125deg, color-mix(in srgb, var(--tb-primary-light, #d4e5d6) 24%, var(--tb-bg, #faf9f6)), var(--tb-bg, #faf9f6) 72%);
	--tb-home-emphasis: linear-gradient(135deg, var(--tb-emphasis-start, var(--tb-primary-dark, #3f5941)), var(--tb-emphasis-mid, var(--tb-primary, #5a7a5e)));
}
.tb-home-scheme--clean-minimal .tb-section:not(.tb-section--surface-emphasis) {
	border-top: 1px solid color-mix(in srgb, var(--tb-border, #d8d4cc) 58%, transparent);
}

/* Bold Branded: stronger palette presence without hard-coded colors. */
.tb-home-scheme--bold-branded {
	--tb-home-base: var(--tb-bg, #faf9f6);
	--tb-home-soft: var(--tb-surface, #f6f0ec);
	--tb-home-wash: linear-gradient(120deg, color-mix(in srgb, var(--tb-primary-light, #d4e5d6) 82%, var(--tb-bg, #faf9f6)), color-mix(in srgb, var(--tb-accent-light, #f0ddd3) 50%, var(--tb-bg, #faf9f6)));
	--tb-home-emphasis: linear-gradient(135deg, var(--tb-emphasis-start, var(--tb-primary-dark, #3f5941)), color-mix(in srgb, var(--tb-emphasis-start, var(--tb-primary-dark, #3f5941)) 72%, var(--tb-emphasis-end, var(--tb-accent-dark, #8a5438))));
}

/* Ensure text elements inside emphasis sections inherit the contrast-safe foreground. */
.tb-section--highlight h1,
.tb-section--highlight h2,
.tb-section--highlight h3,
.tb-section--highlight p,
.tb-section--highlight li,
.tb-section--highlight label,
.tb-section--highlight address {
	color: inherit;
}

/* Secondary labels use a contrast-safe emphasis foreground. */
.tb-section--highlight .tb-contact__eyebrow,
.tb-section--highlight .tb-testimonials__eyebrow {
	color: var(--tb-muted-on-emphasis, var(--tb-on-emphasis, #ffffff));
}

/* Links inside highlight sections */
.tb-section--highlight a:not(.tb-admin-btn):not(.tb-cta-btn):not(.tb-btn) {
	color: var(--tb-on-emphasis, #ffffff);
	text-decoration: underline;
}

/* Section header alignment -- centered by default, about stays left */
.tb-contact__eyebrow,
.tb-contact__headline,
.tb-contact__subheadline,
.tb-fees-section__eyebrow,
.tb-fees-section__headline,
.tb-fees-section__subheadline,
.tb-faq-section__eyebrow,
.tb-faq-section__headline,
.tb-faq-section__subheadline {
	text-align: center;
}
.tb-contact__header,
.tb-fees-section__header,
.tb-faq-section__header {
	max-width: 720px;
	margin-left: auto;
	margin-right: auto;
	margin-bottom: clamp(40px, 5vw, 64px);
}

/* Light cards inside emphasis sections reset to palette-safe card text. */
.tb-section--highlight .tb-testimonial-card,
.tb-section--highlight .tb-testimonial-card p,
.tb-section--highlight .tb-testimonial-card span,
.tb-section--highlight .tb-testimonial-card address {
	color: var(--tb-on-bg, var(--tb-text, #2c3e35));
}
.tb-section--highlight .tb-testimonial-card__meta,
.tb-section--highlight .tb-testimonial-card__dot {
	color: var(--tb-muted-on-bg, var(--tb-text-muted, #5a6a5e));
}
.tb-section--highlight .tb-testimonial-card__quote::before,
.tb-section--highlight .tb-testimonial-card__quote::after,
.tb-section--highlight .tb-testimonial-card__rating {
	color: var(--tb-brand-on-bg, var(--tb-primary, #5a7a5e));
}

/* Start Here uses light cards inside a dark highlight section.
 * Reset the inherited white section text so the card remains readable. */
.tb-section--highlight .tb-client-start-card {
	color: var(--tb-on-bg, var(--tb-text, #2c3e35));
	background: var(--tb-bg, #faf9f6);
	border-color: color-mix(in srgb, var(--tb-border-dark, #b8b4ac) 72%, transparent);
}
.tb-section--highlight .tb-client-start-card h3 {
	color: var(--tb-heading-on-bg, var(--tb-heading, #24372d));
}
.tb-section--highlight .tb-client-start-card > p:not(.tb-client-start-card__eyebrow) {
	color: var(--tb-muted-on-bg, var(--tb-text-muted, #53645b));
}
.tb-section--highlight .tb-client-start-card__eyebrow {
	color: var(--tb-brand-on-bg, var(--tb-primary, #376846));
}
.tb-section--highlight .tb-client-start-card__icon {
	color: var(--tb-brand-hover-on-bg, var(--tb-primary-dark, #285338));
	background: color-mix(in srgb, var(--tb-primary, #5a7a5e) 13%, var(--tb-bg, #faf9f6));
}

/* Optional universal section imagery. Images are intentionally rendered at
 * restrained opacity over the existing palette surface, preserving contrast. */
.tb-section--visual-accent,
.tb-section--visual-backdrop {
	position: relative;
	isolation: isolate;
	overflow: hidden;
}
.tb-section--visual-accent::before,
.tb-section--visual-backdrop::before {
	content: "";
	position: absolute;
	pointer-events: none;
	z-index: 0;
	background-image: var(--tb-section-visual-image);
	background-repeat: no-repeat;
	background-position: var(--tb-section-visual-position, right top);
}
.tb-section--visual-accent > *,
.tb-section--visual-backdrop > * {
	position: relative;
	z-index: 1;
}
.tb-section--visual-accent::before {
	inset: clamp(14px, 2.6vw, 42px);
	background-size: min(44vw, 680px) auto;
	opacity: var(--tb-section-visual-accent-opacity, .07);
	filter: saturate(.88) contrast(.96);
}
.tb-section--visual-backdrop::before {
	inset: 0;
	background-size: cover;
	opacity: var(--tb-section-visual-backdrop-opacity, .08);
	filter: saturate(.78) contrast(.9);
}
.tb-section--visual-strength-subtle { --tb-section-visual-accent-opacity: .07; --tb-section-visual-backdrop-opacity: .08; }
.tb-section--visual-strength-balanced { --tb-section-visual-accent-opacity: .12; --tb-section-visual-backdrop-opacity: .14; }
.tb-section--visual-strength-strong { --tb-section-visual-accent-opacity: .18; --tb-section-visual-backdrop-opacity: .22; }
.tb-section--visual-position-top-left { --tb-section-visual-position: left top; }
.tb-section--visual-position-top-center { --tb-section-visual-position: center top; }
.tb-section--visual-position-top-right { --tb-section-visual-position: right top; }
.tb-section--visual-position-middle-left { --tb-section-visual-position: left center; }
.tb-section--visual-position-middle-center { --tb-section-visual-position: center center; }
.tb-section--visual-position-middle-right { --tb-section-visual-position: right center; }
.tb-section--visual-position-bottom-left { --tb-section-visual-position: left bottom; }
.tb-section--visual-position-bottom-center { --tb-section-visual-position: center bottom; }
.tb-section--visual-position-bottom-right { --tb-section-visual-position: right bottom; }
@media (max-width: 767px) {
	.tb-section--visual-accent::before { background-size: min(78vw, 520px) auto; }
	.tb-section--visual-hide-mobile::before { display: none; }
}
