/* ── TrueHeart brand typeface: Roboto (Apache 2.0, self-hosted) ───────────── */
@font-face{font-family:Roboto;font-style:normal;font-weight:300;font-display:swap;
  src:url("fonts/Roboto-Light.woff2") format("woff2")}
@font-face{font-family:Roboto;font-style:normal;font-weight:400;font-display:swap;
  src:url("fonts/Roboto-Regular.woff2") format("woff2")}
@font-face{font-family:Roboto;font-style:normal;font-weight:500;font-display:swap;
  src:url("fonts/Roboto-Medium.woff2") format("woff2")}
@font-face{font-family:Roboto;font-style:normal;font-weight:700;font-display:swap;
  src:url("fonts/Roboto-Bold.woff2") format("woff2")}
@font-face{font-family:Roboto;font-style:italic;font-weight:400;font-display:swap;
  src:url("fonts/Roboto-Italic.woff2") format("woff2")}

:root{
  --paper:#FEFCFD; --wash-pink:#FCF3F8; --wash-lilac:#F7F3FB;
  --line:#EFE3EE; --line-soft:#F5EBF3;
  --ink:#3A2E3D; --ink-soft:#6F6274; --ink-faint:#A296A8;
  --magenta:#D83491; --magenta-deep:#B12B77; --magenta-lt:#E79CC4;
  --pink:#E79CC4; --lilac:#9C69AC; --coral:#F6989A; --plum:#9C69AC;
  --serif:Roboto,-apple-system,BlinkMacSystemFont,"Segoe UI",system-ui,sans-serif;
  --sans:Roboto,-apple-system,BlinkMacSystemFont,"Segoe UI",system-ui,sans-serif;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:18px;line-height:1.65;-webkit-font-smoothing:antialiased}
img{max-width:100%;display:block}
h1,h2,h3{margin:0;font-family:var(--serif);font-weight:300;letter-spacing:-.5px}
p{margin:0}
a{color:var(--magenta);text-decoration:none}
a:hover{color:var(--magenta-deep)}
table{border-collapse:collapse}
.wrap{max-width:1180px;margin:0 auto;padding-inline:40px}
.narrow{max-width:820px;margin:0 auto;padding-inline:40px}
.eyebrow{font-size:13px;font-weight:600;letter-spacing:1.5px;text-transform:uppercase;color:var(--magenta);line-height:1.5}

.btn{display:inline-flex;align-items:center;justify-content:center;gap:9px;min-height:56px;padding:0 30px;border-radius:40px;font-size:17px;font-weight:600;border:1px solid transparent;transition:.18s ease;cursor:pointer}
.btn-primary{background:var(--magenta);color:#fff}
.btn-primary:hover{background:var(--magenta-deep);color:#fff}
.btn-ghost{border-color:#E2D2E0;color:var(--ink);font-weight:500;background:#fff}
.btn-ghost:hover{border-color:var(--lilac)}
.btn-sm{min-height:46px;padding:0 22px;font-size:15px}

header{position:sticky;top:0;z-index:20;background:rgba(254,252,253,.94);backdrop-filter:blur(10px);border-bottom:1px solid var(--line-soft)}
.hdr{display:flex;align-items:center;justify-content:space-between;gap:32px;padding-block:14px}
.brand{display:flex;align-items:center;gap:11px}
.brand img{height:40px;width:auto}
.brand span{font-family:var(--serif);font-size:26px;color:var(--ink);letter-spacing:-.2px}
nav.main{display:flex;align-items:center;gap:28px;font-size:16px}
nav.main a{color:var(--ink-soft);padding-block:12px}
nav.main a:hover,nav.main a.on{color:var(--magenta)}
nav.main a.on{font-weight:500}
.hdr-cta{display:flex;align-items:center;gap:10px}
.burger{display:none;width:46px;height:46px;align-items:center;justify-content:center;color:var(--ink)}

.pagehead{background:linear-gradient(180deg,#FEFCFD 0%,#FBF2F8 100%);border-bottom:1px solid var(--line-soft);position:relative;overflow:hidden}
.pagehead .wrap{padding-block:64px 56px;position:relative;z-index:1}
.pagehead h1{font-size:clamp(32px,4.2vw,52px);line-height:1.12;text-wrap:pretty;max-width:900px}
.pagehead p.sub{margin-top:18px;font-size:20px;line-height:1.6;color:var(--ink-soft);max-width:720px;text-wrap:pretty}
.deco{position:absolute;right:-56px;top:-64px;width:260px;max-width:38%;height:auto;opacity:.26;z-index:0;pointer-events:none}
.motif{width:100%;max-width:420px;height:auto;margin-inline:auto}
.crumb{display:flex;gap:8px;align-items:center;font-size:14px;color:var(--ink-faint);margin-bottom:16px}
.crumb a{color:var(--ink-faint)}
.crumb a:hover{color:var(--magenta)}

.pad{padding-block:80px}
.pad-sm{padding-block:56px}
.prose{font-size:18px;line-height:1.8;color:var(--ink-soft)}
.prose p{margin-bottom:22px;text-wrap:pretty}
.prose p:last-child{margin-bottom:0}
.prose h2{font-size:clamp(26px,3vw,34px);line-height:1.18;color:var(--ink);margin:48px 0 18px}
.prose h3{font-size:22px;line-height:1.3;color:var(--ink);margin:36px 0 12px;font-family:var(--sans);font-weight:600;letter-spacing:0}
.prose ul{margin:0 0 22px;padding-left:0;list-style:none}
.prose ul li{position:relative;padding-left:30px;margin-bottom:14px;text-wrap:pretty}
.prose ul li:before{content:"";position:absolute;left:6px;top:12px;width:8px;height:8px;border-radius:50%;background:var(--pink)}
.prose strong{color:var(--ink);font-weight:600}
.prose-lg{font-size:19px}
.cols-2{columns:2;column-gap:64px}
.prose a{font-weight:500;overflow-wrap:anywhere}

.pullquote{background:var(--wash-lilac);border-radius:20px;padding:44px;text-align:center;margin:44px 0}
.pullquote p.q{font-family:var(--serif);font-size:clamp(22px,2.6vw,29px);line-height:1.42;font-style:italic;color:var(--ink);text-wrap:pretty}
.pullquote .attr{margin-top:18px;font-size:14px;font-weight:600;letter-spacing:1px;text-transform:uppercase;color:var(--ink-soft)}

.card{background:#fff;border:1px solid var(--line);border-radius:18px;padding:28px}
.card-soft{background:var(--wash-pink);border:1px solid var(--line);border-radius:18px;padding:28px}
.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:24px}
.grid-3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}
.grid-4{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}
.stack{display:flex;flex-direction:column;gap:18px}
.stack-sm{display:flex;flex-direction:column;gap:10px}

.loc{display:flex;flex-direction:column;gap:8px;padding:24px;background:#fff;border:1px solid var(--line);border-radius:16px;min-height:122px;transition:.18s ease}
.loc:hover{border-color:var(--pink);transform:translateY(-2px);box-shadow:0 8px 24px rgba(190,107,175,.10)}
.loc .name{font-family:var(--serif);font-size:23px;color:var(--ink);line-height:1.2}
.loc .when{font-size:15px;color:var(--ink-faint)}
.loc-online{background:linear-gradient(140deg,#FBE4F0 0%,#EFE4FA 100%);border-color:#E6CFE6}
.loc-online .when{color:var(--magenta);font-weight:500}

.contact-card{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:4px;background:var(--wash-pink);border:1px solid var(--line);border-radius:18px;overflow:hidden}
.contact-cell{padding:24px 26px;background:var(--wash-pink)}
.contact-cell .k{font-size:13px;font-weight:600;letter-spacing:1.2px;text-transform:uppercase;color:var(--ink-faint);margin-bottom:6px}
.contact-cell .v{font-size:19px;color:var(--ink);font-family:var(--serif)}

.sess{width:100%;border:1px solid var(--line);border-radius:18px;overflow:hidden;background:#fff}
.sess thead th{text-align:left;font-size:13px;font-weight:600;letter-spacing:1.2px;text-transform:uppercase;color:var(--ink-faint);padding:16px 24px;background:var(--wash-pink);border-bottom:1px solid var(--line)}
.sess td{padding:20px 24px;border-bottom:1px solid var(--line-soft);vertical-align:top;font-size:17px;line-height:1.55;color:var(--ink-soft)}
.sess tr:last-child td{border-bottom:none}
.sess td.day{font-family:var(--serif);font-size:20px;color:var(--ink);white-space:nowrap}
.sess td.time{color:var(--magenta);font-weight:500;white-space:nowrap}

.note{display:flex;gap:14px;align-items:flex-start;background:var(--wash-lilac);border:1px solid #E6DDF2;border-radius:14px;padding:20px 22px;font-size:16px;line-height:1.6;color:var(--ink-soft)}
.note svg{flex:0 0 auto;color:var(--plum);margin-top:2px}
.formbox{border:1px dashed #DCC9DA;border-radius:16px;padding:34px;text-align:center;color:var(--ink-faint);background:#fff;font-size:16px}

footer{border-top:1px solid var(--line);padding-block:66px 34px;background:var(--paper)}
.foot-grid{display:grid;grid-template-columns:1.5fr 1fr 1fr 1.2fr;gap:44px}
.foot-col{display:flex;flex-direction:column;gap:12px}
.foot-h{font-size:13px;font-weight:600;letter-spacing:1.2px;text-transform:uppercase;color:var(--ink-faint)}
.foot-col a{font-size:16px;color:var(--ink-soft)}
.foot-col a:hover{color:var(--magenta)}
.social{display:flex;gap:10px;margin-top:6px}
.social a{width:42px;height:42px;display:flex;align-items:center;justify-content:center;border:1px solid #E2D2E0;border-radius:40px;color:var(--ink-soft)}
.social a:hover{border-color:var(--pink);color:var(--magenta)}
.legal{display:flex;align-items:center;justify-content:space-between;gap:28px;flex-wrap:wrap;padding-top:26px;margin-top:48px;border-top:1px solid var(--line-soft)}
.legal p,.legal a{font-size:14px;color:var(--ink-faint);line-height:1.6}

@media (max-width:1020px){
  nav.main{display:none} .burger{display:flex}
  .grid-4{grid-template-columns:repeat(3,minmax(0,1fr))}
  .foot-grid{grid-template-columns:1fr 1fr;gap:36px}
}
@media (max-width:760px){
  body{font-size:17px}
  .wrap,.narrow{padding-inline:22px}
  .pad{padding-block:52px} .pad-sm{padding-block:40px}
  .pagehead .wrap{padding-block:40px 36px}
  .grid-2,.grid-3{grid-template-columns:1fr}
  .hero-grid{grid-template-columns:1fr!important;gap:34px!important}
  .two{grid-template-columns:1fr!important;gap:34px!important}
  .deco{display:none}
  .cols-2{columns:1}
  .grid-4{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
  .contact-card{grid-template-columns:1fr}
  .hdr-cta .btn-ghost{display:none}
  .brand span{font-size:22px} .brand img{height:32px;width:auto}
  .motif{max-width:280px}
  .sess thead{display:none}
  .sess td{display:block;border-bottom:none;padding:6px 20px}
  .sess tr{display:block;border-bottom:1px solid var(--line-soft);padding-block:14px}
  .sess tr:last-child{border-bottom:none}
  .pullquote{padding:28px 22px}
  .btn{width:100%}
  .hero-actions .btn{width:100%}
}

/* WordPress can emit empty <p> tags between blocks; never let one
   occupy a grid cell or add vertical space. */
.grid-2>p:empty,.grid-3>p:empty,.grid-4>p:empty,.wrap>p:empty,.narrow>p:empty,.prose>p:empty,.stack>p:empty{display:none}

/* Donate page currency panels. Hidden by default; assets/js/donate.js
   adds .is-on to the one matching the dropdown. Controlled here rather
   than by inline styles, which WordPress strips from page content. */
.cur-panel{display:none}
.cur-panel.is-on{display:block}

/* ── Plugin-created pages (Stripe checkout result) ──────────────────────────
   These have no layout markup of their own, so give them the same container
   and table treatment as the rest of the site. Scoped by body class so the
   rules cannot affect anything else. */
body[class*="th-page-stripe"] > section,
body[class*="th-page-stripe"] .entry-content{max-width:none}

body[class*="th-page-stripe"] #asp_checkout_result,
body[class*="th-page-stripe"] .asp_product_buy_button,
body[class*="th-page-stripe"] > p,
body[class*="th-page-stripe"] > h1,
body[class*="th-page-stripe"] > h2,
body[class*="th-page-stripe"] > div:not(header):not(footer),
body[class*="th-page-stripe"] > table{
  max-width:820px;margin-inline:auto;padding-inline:22px
}

body[class*="th-page-stripe"] h1,
body[class*="th-page-stripe"] h2{
  font-family:var(--serif);font-weight:300;letter-spacing:-.5px;
  font-size:clamp(28px,3.4vw,40px);line-height:1.15;
  margin:48px auto 20px;max-width:820px;padding-inline:22px
}

body[class*="th-page-stripe"] table{
  width:100%;max-width:820px;margin:0 auto 44px;
  border:1px solid var(--line);border-radius:18px;overflow:hidden;
  background:#fff;border-collapse:separate;border-spacing:0
}
body[class*="th-page-stripe"] table th,
body[class*="th-page-stripe"] table td{
  padding:16px 22px;border-bottom:1px solid var(--line-soft);
  font-size:16px;line-height:1.55;color:var(--ink-soft);text-align:left;
  vertical-align:top;word-break:break-word
}
body[class*="th-page-stripe"] table th{
  font-size:13px;font-weight:600;letter-spacing:1.2px;text-transform:uppercase;
  color:var(--ink-faint);background:var(--wash-pink);width:40%;white-space:nowrap
}
body[class*="th-page-stripe"] table tr:last-child th,
body[class*="th-page-stripe"] table tr:last-child td{border-bottom:none}

@media (max-width:620px){
  body[class*="th-page-stripe"] table th{width:auto;white-space:normal}
  body[class*="th-page-stripe"] table th,
  body[class*="th-page-stripe"] table td{padding:12px 16px;font-size:15px}
}

/* ── Contact Form 7 ─────────────────────────────────────────────────────────
   The plugin ships unstyled. These rules give its fields the same look as the
   rest of the site. Class names are Contact Form 7's own and are stable. */
.wpcf7{max-width:620px}
.wpcf7-form p{margin:0 0 20px}
.wpcf7-form label{display:block;font-size:15px;font-weight:600;color:var(--ink);margin-bottom:8px}

.wpcf7-form input[type=text],
.wpcf7-form input[type=email],
.wpcf7-form input[type=tel],
.wpcf7-form input[type=url],
.wpcf7-form input[type=number],
.wpcf7-form input[type=date],
.wpcf7-form select,
.wpcf7-form textarea{
  display:block;width:100%;margin-top:6px;
  font-family:var(--sans);font-size:17px;line-height:1.5;color:var(--ink);
  background:#fff;border:1px solid #E2D2E0;border-radius:12px;
  padding:13px 16px;transition:border-color .15s ease,box-shadow .15s ease
}
.wpcf7-form textarea{min-height:150px;resize:vertical}
.wpcf7-form input::placeholder,
.wpcf7-form textarea::placeholder{color:var(--ink-faint)}

.wpcf7-form input:focus,
.wpcf7-form select:focus,
.wpcf7-form textarea:focus{
  outline:none;border-color:var(--magenta);
  box-shadow:0 0 0 3px rgba(216,52,145,.14)
}

.wpcf7-form input[type=submit]{
  display:inline-flex;align-items:center;justify-content:center;
  min-height:56px;padding:0 34px;border:0;border-radius:40px;
  background:var(--magenta);color:#fff;
  font-family:var(--sans);font-size:17px;font-weight:600;
  cursor:pointer;transition:background .18s ease;width:auto
}
.wpcf7-form input[type=submit]:hover{background:var(--magenta-deep)}

/* validation and status messages */
.wpcf7-not-valid-tip{display:block;margin-top:7px;font-size:14px;color:#B3261E}
.wpcf7-form input.wpcf7-not-valid,
.wpcf7-form textarea.wpcf7-not-valid{border-color:#B3261E}
.wpcf7-response-output{
  margin:24px 0 0!important;padding:16px 20px!important;
  border-width:1px!important;border-radius:14px;font-size:16px;line-height:1.5
}
.wpcf7 form.sent .wpcf7-response-output{
  border-color:#CBB1D4!important;background:var(--wash-lilac);color:var(--ink)
}
.wpcf7 form.invalid .wpcf7-response-output,
.wpcf7 form.failed .wpcf7-response-output{
  border-color:#E8B4B0!important;background:#FDF3F2;color:#8A2F28
}
.wpcf7-spinner{margin-left:12px}

@media (max-width:620px){
  .wpcf7-form input[type=submit]{width:100%}
}

/* ── Accordions (Policies page) ─────────────────────────────────────────────
   Native <details>/<summary>. No JavaScript, works without it, and screen
   readers announce the expanded/collapsed state for free. */
.acc{display:flex;flex-direction:column;gap:12px}
.acc-item{border:1px solid var(--line);border-radius:16px;background:#fff;overflow:hidden}
.acc-item[open]{border-color:var(--pink)}

.acc-h{
  display:flex;align-items:center;gap:14px;cursor:pointer;list-style:none;
  padding:20px 24px;font-family:var(--serif);font-size:20px;line-height:1.3;
  color:var(--ink);transition:background .15s ease
}
.acc-h::-webkit-details-marker{display:none}
.acc-h:hover{background:var(--wash-pink)}
.acc-h:focus-visible{outline:2px solid var(--magenta);outline-offset:-2px}

.acc-n{
  margin-left:auto;flex:0 0 auto;font-family:var(--sans);font-size:13px;
  font-weight:600;letter-spacing:1px;text-transform:uppercase;color:var(--ink-faint)
}
.acc-i{flex:0 0 auto;color:var(--ink-faint);transition:transform .2s ease}
.acc-item[open] .acc-i{transform:rotate(180deg)}
.acc-item[open] .acc-h{border-bottom:1px solid var(--line-soft);background:var(--wash-pink)}

.acc-b{padding:24px;display:flex;flex-direction:column;gap:18px;background:var(--paper)}
.acc-b img{
  width:100%;height:auto;display:block;
  border:1px solid var(--line);border-radius:10px
}

@media (max-width:620px){
  .acc-h{padding:16px 18px;font-size:17px;gap:10px;flex-wrap:wrap}
  .acc-n{margin-left:0;width:100%;order:3}
  .acc-b{padding:14px}
}

/* ── Photo galleries ───────────────────────────────────────────────────────*/
.gal{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:14px}
.gal figure{margin:0}
.gal img{
  width:100%;height:100%;min-height:200px;object-fit:cover;display:block;
  border:1px solid var(--line);border-radius:14px;background:var(--wash-pink)
}
@media (max-width:620px){
  .gal{grid-template-columns:1fr;gap:12px}
  .gal img{min-height:0}
}

/* ── Single photos in content ──────────────────────────────────────────────*/
.ph{margin:36px 0 0}
/* Cap by height so portrait photos don't dominate; wide ones are unaffected. */
.ph img{max-height:720px;width:auto;max-width:100%;height:auto;display:block;
        margin-inline:auto;border:1px solid var(--line);border-radius:14px}
@media (max-width:620px){.ph img{max-height:520px}}
.ph figcaption{margin-top:10px;font-size:14px;color:var(--ink-faint);line-height:1.5}
