/*
Theme Name: Heart Centered Practices
Theme URI: https://heartcenteredpractices.com/
Author: Heart Centered Practices
Description: A warm, restorative-practices theme for Heart Centered Practices.
Version: 1.0.0
Text Domain: heart-centered-practices
*/

:root {
	--green: #327717;
	--green-dark: #26590f;
	--sage: #c1d28a;
	--sage-light: #eef3e0;
	--blush: #f3b2b2;
	--blush-light: #fcebeb;
	--cream: #fbf8f1;
	--charcoal: #2b2b2b;
	--white: #fff;
	--line: rgba(43, 43, 43, .13);
	--max: 1120px;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
	margin: 0;
	background: var(--cream);
	color: var(--charcoal);
	font-family: "Raleway", sans-serif;
	font-size: 16px;
	line-height: 1.6;
}
img { display: block; max-width: 100%; height: auto; }
a { color: inherit; }
button, input, select, textarea { font: inherit; }
:focus-visible { outline: 3px solid var(--blush); outline-offset: 3px; }
.screen-reader-text {
	clip: rect(1px, 1px, 1px, 1px);
	clip-path: inset(50%);
	height: 1px;
	width: 1px;
	overflow: hidden;
	position: absolute;
	white-space: nowrap;
}

h1, h2, h3, h4 {
	margin: 0 0 .5em;
	color: var(--green-dark);
	font-family: "Fraunces", Georgia, serif;
	font-weight: 560;
	letter-spacing: -.015em;
	line-height: 1.12;
}
h1 { font-size: clamp(2.25rem, 5vw, 3.4rem); }
h2 { font-size: clamp(1.8rem, 3.4vw, 2.35rem); }
h3 { font-size: 1.25rem; }
p { max-width: 62ch; margin: 0 0 1rem; }
ul { padding-left: 1.25rem; }
.wrap { max-width: var(--max); margin: 0 auto; padding-right: 24px; padding-left: 24px; }
.narrow { max-width: 760px; }
section { padding: 4rem 0; }
.two-column { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 22px; }
.three-column { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 22px; }
.section-heading { max-width: 640px; margin-bottom: 2.25rem; }
.section-heading h2 { margin-bottom: .35rem; }
.lede { color: #4a4a4a; font-size: 1.125rem; }

/* Header and navigation */
.site-header {
	position: sticky;
	top: 0;
	z-index: 20;
	border-bottom: 1px solid rgba(43, 43, 43, .08);
	background: rgba(251, 248, 241, .95);
	backdrop-filter: blur(7px);
}
.nav-row {
	display: flex;
	align-items: center;
	justify-content: space-between;
	max-width: var(--max);
	min-height: 68px;
	margin: 0 auto;
	padding: 14px 24px;
}
.site-brand { display: block; flex: 0 0 101px; width: 101px; height: 40px; overflow: hidden; }
/* The supplied PNG has a large transparent canvas; crop to the visible mark used in the prototype. */
.site-brand img { width: 132.5px; height: 78.75px; max-width: none; transform: translate(-14.5px, -20.7px); }
.primary-navigation .menu,
.footer-menu { display: flex; gap: 22px; padding: 0; margin: 0; list-style: none; }
.primary-navigation .menu { align-items: center; }
.primary-navigation a {
	display: block;
	padding: 6px 2px;
	color: var(--charcoal);
	font-size: 14.5px;
	font-weight: 600;
	text-decoration: none;
}
.primary-navigation .current-menu-item > a:not(.nav-cta),
.primary-navigation a:hover:not(.nav-cta) { color: var(--green); }
.primary-navigation .current-menu-item > a:not(.nav-cta)::after {
	content: "";
	display: block;
	height: 2px;
	margin-top: 2px;
	background: var(--blush);
}
.primary-navigation a.nav-cta,
.button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	border: 2px solid transparent;
	border-radius: 999px;
	padding: .68rem 1.15rem;
	font-size: .875rem;
	font-weight: 700;
	line-height: 1.25;
	text-align: center;
	text-decoration: none;
	transition: background-color .18s ease, color .18s ease, border-color .18s ease, transform .18s ease;
}
.primary-navigation a.nav-cta,
.button-primary { background: var(--green); color: var(--white); }
.primary-navigation a.nav-cta:hover,
.button-primary:hover { background: var(--green-dark); transform: translateY(-1px); }
.menu-toggle { display: none; border: 0; background: transparent; color: var(--green-dark); font-size: 26px; font-weight: 400; line-height: 1; cursor: pointer; }

/* Hero */
.hero { padding: 4rem 0 2.5rem; }
.hero-grid { display: grid; grid-template-columns: 1.1fr .9fr; align-items: center; gap: 3rem; }
.eyebrow-tag {
	display: inline-block;
	margin: 0 0 1rem;
	padding: .35rem .8rem;
	border-radius: 999px;
	background: var(--blush-light);
	color: var(--green-dark);
	font-size: .8125rem;
	font-weight: 700;
}
.hero h1 { max-width: 13ch; }
.hero-statement { margin-bottom: .55rem; color: var(--green-dark); font-family: "Fraunces", Georgia, serif; font-size: 1.18rem; font-weight: 600; }
.button-row { display: flex; flex-wrap: wrap; gap: .8rem; margin-top: 1.45rem; }
.button-outline { border-color: var(--green); color: var(--green-dark); }
.button-outline:hover { background: var(--sage-light); }
.button-blush { background: var(--blush); color: var(--green-dark); }
.button-blush:hover { background: #ed9d9d; transform: translateY(-1px); }
.hero-visual { display: flex; flex-direction: column; align-items: center; }
.arch-mark { width: min(100%, 300px); padding: 1.1rem 2rem 0; }
.arch-mark img { width: 100%; }
.hero-quote-card {
	max-width: 350px;
	margin: -1rem 0 0;
	padding: 1.25rem 1.45rem;
	border-radius: 1rem;
	background: var(--white);
	box-shadow: 0 8px 26px rgba(50, 119, 23, .14);
}
.hero-quote-card blockquote,
.testimonial blockquote { margin: 0 0 .7rem; color: var(--green-dark); font-family: "Fraunces", Georgia, serif; font-size: 1.18rem; font-style: italic; line-height: 1.35; }
.hero-quote-card figcaption,
.testimonial figcaption { color: #4a4a4a; font-size: .83rem; font-weight: 700; }

/* Content blocks */
.intro-columns { padding-top: 1rem; }
.band { padding: 4rem 0; }
.band-sage { background: var(--sage-light); }
.band-blush { background: var(--blush-light); }
.band-green { background: var(--green); color: var(--white); }
.band-green h2, .band-green h3 { color: var(--white); }
.values-list article { padding: 1.22rem 0; border-top: 1px solid var(--line); }
.values-list article:first-child { border-top: 0; }
.values-list h3 { margin-bottom: .25rem; font-size: 1.15rem; }
.values-list p { margin: 0; }
.founder-quote-section { padding: 3.15rem 0; }
.quote-block { max-width: 54ch; margin: 0; padding-left: 1.25rem; border-left: 4px solid var(--blush); color: var(--green-dark); font-family: "Fraunces", Georgia, serif; font-size: 1.25rem; font-style: italic; line-height: 1.4; }
.quote-block cite { display: block; margin-top: .55rem; font-family: "Raleway", sans-serif; font-size: .82rem; font-style: normal; font-weight: 700; }
.audience-grid { display: grid; grid-template-columns: repeat(3, 1fr); overflow: hidden; border-radius: 1.35rem; }
.audience-panel { display: flex; flex-direction: column; min-height: 230px; padding: 2rem 1.75rem; color: var(--charcoal); text-decoration: none; transition: filter .18s ease; }
.audience-panel:hover { filter: brightness(.96); }
.audience-panel h3 { margin-top: auto; font-size: 1.4rem; }
.audience-panel p { margin-bottom: .4rem; font-size: .94rem; }
.audience-panel span { font-family: "Fraunces", Georgia, serif; font-size: 1.8rem; }
.educators-panel { background: var(--green); color: var(--white); }
.educators-panel h3 { color: var(--white); }
.parenting-panel { background: var(--blush); }
.life-panel { background: var(--sage); }
.stat-row { display: flex; flex-wrap: wrap; gap: 2.5rem; }
.stat { min-width: 150px; max-width: 210px; }
.stat strong { display: block; color: var(--green); font-family: "Fraunces", Georgia, serif; font-size: 2.75rem; font-weight: 500; line-height: 1; }
.stat span { display: block; margin-top: .5rem; color: #555; font-size: .85rem; line-height: 1.4; }
.impact-copy { margin-top: 1.5rem; }
.impact-copy a { color: var(--green-dark); font-weight: 700; }

/* Carousel */
.testimonial-carousel { max-width: 700px; }
.testimonial-track { min-height: 145px; }
.testimonial { display: none; margin: 0; }
.testimonial.active { display: block; }
.testimonial blockquote { font-size: clamp(1.25rem, 2vw, 1.5rem); }
.testimonial-controls { display: flex; align-items: center; gap: .9rem; margin-top: 1.2rem; }
.carousel-arrow { width: 2.4rem; height: 2.4rem; border: 1.5px solid var(--green); border-radius: 50%; background: var(--white); color: var(--green-dark); cursor: pointer; font-size: 1rem; }
.carousel-arrow:hover { background: var(--green); color: var(--white); }
.testimonial-dots { display: flex; gap: .48rem; }
.testimonial-dots button { width: .6rem; height: .6rem; padding: 0; border: 0; border-radius: 50%; background: rgba(43, 43, 43, .25); cursor: pointer; }
.testimonial-dots button.active { background: var(--green); }
.cta-band { text-align: center; }
.cta-band h2 { max-width: 600px; margin-right: auto; margin-left: auto; }
.cta-band .full-width-cta { max-width: none; }

/* Page heroes match the full-width layout and type scale in the supplied prototype. */
.page-hero { padding: 4rem 0 1.25rem; }
.page-hero .narrow { max-width: var(--max); }
.page-hero .eyebrow-tag { margin-bottom: .85rem; }
.page-hero h1 { max-width: none; font-size: clamp(1.875rem, 4.4vw, 2.75rem); }
.card-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 22px; }
.offer-card, .resource-card, .notice-card {
	border: 1px solid var(--line);
	background: var(--white);
}
.offer-card { padding: 26px; border-radius: 16px; }
.resource-card { padding: 20px; border-radius: 14px; }
.notice-card { padding: 20px; border-radius: 14px; }
.offer-card h3, .resource-card h3 { font-size: 1.15rem; }
.offer-card p, .resource-card p { margin-bottom: 0; font-size: .92rem; }
.expand { padding: 1.1rem 1.35rem; border: 1px solid var(--line); border-radius: .85rem; background: var(--white); }
.expand summary { color: var(--green-dark); cursor: pointer; font-family: "Fraunces", Georgia, serif; font-size: 1.2rem; font-weight: 600; }
.expand p:first-of-type { margin-top: 1rem; }
.intro-quote { margin-bottom: 1.35rem; color: var(--green-dark); font-family: "Fraunces", Georgia, serif; font-size: 1.15rem; font-style: italic; }
.challenge-card { margin-bottom: 1.35rem; }
.supporting-text { color: #555; font-size: .84rem; }
.subsection-heading { margin-top: 2.25rem; font-size: 1.2rem; }
.impact-charts { margin-top: 1.7rem; align-items: start; }
.impact-charts h3 { font-size: 1.05rem; }
.feature-callout { display: flex; flex-wrap: wrap; gap: 1.25rem; align-items: center; margin-top: 1.75rem; padding: 1.3rem; border: 1px solid var(--line); border-radius: 1rem; background: var(--white); }
.feature-callout > img { width: min(100%, 300px); border-radius: .6rem; }
.feature-callout > div { flex: 1 1 250px; }
.feature-callout .quote-block { margin-bottom: .75rem; font-size: .95rem; }
.text-link { color: var(--green-dark); font-size: .88rem; font-weight: 700; }
.impact-card { padding: 0; overflow: hidden; }
.impact-card img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; background: var(--white); }
.impact-card p { margin: 0; padding: 12px; font-size: 13px; }
.feature-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 22px; }
.feature-grid .offer-card { height: 100%; }
.section-image { border-radius: 1rem; box-shadow: 0 8px 22px rgba(38, 89, 15, .12); }
.data-image { width: 100%; border-radius: .75rem; background: var(--white); }
.price-tag { display: inline-flex; gap: .45rem; align-items: baseline; margin: .25rem 0 1rem; padding: .75rem 1rem; border-radius: .85rem; background: var(--sage-light); }
.price-tag strong { color: var(--green-dark); font-family: "Fraunces", Georgia, serif; font-size: 1.85rem; line-height: 1; }
.price-tag span { font-size: .88rem; }
.data-table { width: 100%; border-collapse: collapse; margin: 1.3rem 0; font-size: .91rem; }
.data-table th, .data-table td { padding: .7rem .75rem; border-bottom: 1px solid var(--line); text-align: left; }
.data-table th { color: var(--green-dark); font-family: "Fraunces", Georgia, serif; font-weight: 600; }
.check-list, .cred-list { margin: 0; padding: 0; list-style: none; }
.check-list li, .cred-list li { padding: .7rem 0; border-bottom: 1px solid var(--line); }
.check-list li::before { margin-right: .55rem; color: var(--green); content: "✓"; font-weight: 700; }
.prototype-list { padding-left: 18px; font-size: 14.5px; }
.offer-card .process-label { margin: 0 0 14px; color: var(--green-dark); font-family: "Fraunces", Georgia, serif; font-size: 19px; font-weight: 700; }
.offer-card .process-step { margin: 0 0 8px; font-size: 14.5px; }
.offer-card .process-step:last-child { margin-bottom: 0; }
.resource-tag { color: var(--green); font-size: .75rem; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; }
.resource-card a { display: inline-block; margin-top: .9rem; color: var(--green-dark); font-size: .87rem; font-weight: 700; }
.resource-filters { display: flex; flex-wrap: wrap; gap: .6rem; margin-bottom: 1.6rem; }
.filter-button { border: 1.5px solid var(--green); border-radius: 99px; background: transparent; padding: .48rem .95rem; color: var(--green-dark); cursor: pointer; font-size: .85rem; font-weight: 700; }
.filter-button.active, .filter-button:hover { background: var(--green); color: var(--white); }
.image-panel { overflow: hidden; border-radius: 1rem; }
.book-cover { max-height: 490px; margin: auto; object-fit: contain; }
.book-spread { border-radius: .75rem; }
.profile-image { width: 180px; height: 180px; flex-shrink: 0; border: 4px solid var(--sage); border-radius: 50%; object-fit: cover; }
.profile-intro { display: flex; align-items: center; gap: 2rem; }
.profile-intro h1 { font-size: clamp(1.75rem, 4vw, 2.5rem); }

/* Contact form */
.hcp-form { display: grid; gap: .95rem; max-width: 520px; }
.hcp-form label { display: block; margin-bottom: .32rem; color: var(--green-dark); font-size: .84rem; font-weight: 700; }
.hcp-form input, .hcp-form select, .hcp-form textarea { width: 100%; border: 1.5px solid rgba(43, 43, 43, .22); border-radius: .6rem; background: var(--white); padding: .68rem .78rem; color: var(--charcoal); }
.hcp-form textarea { min-height: 140px; resize: vertical; }
.form-notice { max-width: 520px; margin-bottom: 1rem; padding: .85rem 1rem; border-radius: .6rem; background: var(--sage-light); color: var(--green-dark); font-weight: 700; }
.form-notice.error { background: var(--blush-light); color: #6a3535; }

/* Footer */
.site-footer { margin-top: 1.25rem; padding: 3rem 0 1.7rem; background: var(--green-dark); color: var(--sage-light); }
.footer-grid { display: grid; grid-template-columns: 1.3fr 1fr 1fr; gap: 2rem; }
.site-footer h2 { margin: 0 0 12px; color: var(--white); font-size: 1rem; }
.footer-brand { display: block; }
.footer-mark { display: block; width: 27px; height: 34px; margin-bottom: 26px; overflow: hidden; flex: 0 0 27px; }
.footer-mark img { width: 149px; max-width: none; transform: translate(-61px, -21px); }
.footer-intro p { max-width: 34ch; font-size: 13.5px; }
.footer-menu { display: block; }
.footer-menu li { margin-bottom: 0; }
.footer-menu a { display: block; padding: 4px 0; color: var(--sage-light); font-size: 14px; text-decoration: none; }
.footer-menu a:hover { color: var(--blush); }
.foot-bottom { margin-top: 1.8rem; padding-top: 1.1rem; border-top: 1px solid rgba(255, 255, 255, .15); color: rgba(255, 255, 255, .65); font-size: .77rem; text-align: center; }

@media (max-width: 880px) {
	section, .band { padding: 3.25rem 0; }
	.nav-row { min-height: 64px; }
	.site-brand { max-width: 101px; }
	.menu-toggle { display: inline-flex; align-items: center; justify-content: center; min-height: 40px; }
	.primary-navigation { display: none; position: absolute; top: 100%; right: 0; left: 0; padding: 14px 24px; border-bottom: 1px solid var(--line); background: var(--cream); }
	.primary-navigation.open { display: block; }
	.primary-navigation .menu { flex-direction: column; align-items: flex-start; gap: 14px; }
	.hero { padding-top: 3.25rem; }
	.hero-grid, .two-column, .profile-intro { grid-template-columns: 1fr; gap: 2rem; }
	.hero-grid { display: grid; }
	.hero h1 { max-width: 15ch; }
	.hero-visual { order: -1; }
	.arch-mark { width: 220px; }
	.hero-quote-card { margin-top: -.25rem; }
	.audience-grid, .feature-grid, .three-column { grid-template-columns: 1fr; }
	.audience-panel { min-height: 190px; }
	.card-grid { grid-template-columns: 1fr; }
	.footer-grid { grid-template-columns: 1fr; gap: 26px; }
	.profile-intro { display: flex; flex-wrap: wrap; }
}

@media (max-width: 560px) {
	.button-row { align-items: stretch; flex-direction: column; }
	.button-row .button { width: 100%; }
	.stat-row { gap: 1.6rem; }
	.stat { max-width: none; }
	.data-table { font-size: .78rem; }
	.data-table th, .data-table td { padding: .55rem .35rem; }
}
