/* ============================================================
   Center for Personal Growth — full stylesheet (below the fold)
   Critical above-fold rules live in client-critical.css (inlined).
   ============================================================ */

/* ===== snapshot photo device — white frame, soft shadow ===== */
.snapshot{background:#fff; border-radius:22px; overflow:hidden; box-shadow:0 22px 44px rgba(0,0,0,.22); display:inline-block; margin:0;}
.snapshot img{width:100%; height:auto; display:block;}
.snapshot figcaption{font-family:var(--font-heading); font-style:italic; font-size:13px; color:#555; text-align:center; margin:0; padding:12px 18px 15px;}

.panel-kicker{font-family:var(--font-heading); font-style:italic; font-size:15px; color:var(--color-pine-dark); margin-bottom:12px; display:block;}

/* ===== shared material section edge — every full-width band gets the same tactile seam ===== */
.material-section{position:relative; overflow:hidden;
  box-shadow:
    inset 0 1.5px 1px rgba(255,255,255,.2),
    inset 0 26px 36px -26px rgba(0,0,0,.22),
    inset 0 -26px 36px -26px rgba(0,0,0,.18);
}
.material-section::before{content:""; position:absolute; inset:0; z-index:0; pointer-events:none; mix-blend-mode:overlay; opacity:.32; background-image:var(--noise); background-size:180px 180px;}
.material-section > .container{position:relative; z-index:1;}

/* ===== PAIN CARDS — big rounded color blocks, plain inset photo, bare mark riding beside ===== */
.pain-cards{padding:104px 0; background:var(--color-primary);}
.pain-card-row{display:flex; align-items:center; gap:46px; margin-bottom:48px;}
.pain-card-row:last-child{margin-bottom:0;}
.pain-card-row.reverse{flex-direction:row-reverse;}
.pain-card{position:relative; overflow:hidden; flex:0 0 auto; width:min(840px,82%); border-radius:38px; padding:46px 50px; display:grid; grid-template-columns:1fr 1.05fr; gap:36px; align-items:center;
  box-shadow:
    inset 0 1.5px 1px rgba(255,255,255,.35),
    inset 0 -22px 34px rgba(0,0,0,.14),
    inset 22px 0 30px -26px rgba(255,255,255,.25),
    0 26px 46px rgba(20,26,20,.22);
}
.pain-card::before, .service-card-body::before, .faq-card::before, .svc-callout::before, .blog-card::before{content:""; position:absolute; inset:0; z-index:0; pointer-events:none;
  background-image:linear-gradient(155deg, rgba(255,255,255,.16) 0%, rgba(255,255,255,0) 32%, rgba(0,0,0,.05) 100%), var(--noise);
  background-size:cover, 180px 180px;
  mix-blend-mode:overlay;
  opacity:.5;
}
.pain-card-row.reverse .pain-card{grid-template-columns:1.1fr .85fr;}
.pain-card-row.reverse .pain-card .pain-card-photo{order:2;}
.pain-card-row.reverse .pain-card .pain-card-text{order:1;}
.pain-card-photo{position:relative; z-index:1; border-radius:20px; overflow:hidden; box-shadow:0 10px 22px rgba(0,0,0,.18);}
.pain-card-photo img{width:100%; height:auto; aspect-ratio:4/3.6; object-fit:cover; display:block;}
.pain-card-text{position:relative; z-index:1;}
.pain-card h2{font-size:clamp(1.4rem, 2.2vw, 1.85rem); margin:0 0 14px;}
.pain-card p{margin:0 0 12px; font-size:15.5px; opacity:.88; max-width:420px;}
.pain-card--tan{background-color:var(--color-secondary); color:var(--color-ink);}
.pain-card--dark{background-color:var(--color-pine-dark); color:#fff;}
.pain-card--accent{background-color:var(--color-accent); color:#fff;}
.pain-aside{flex:1; max-width:220px; display:flex;}
.pain-card-row.reverse .pain-aside{justify-content:flex-end; margin-left:auto;}
.pain-aside-mark{width:58px; height:58px; border-radius:50%; display:flex; align-items:center; justify-content:center; flex:none; background:var(--color-secondary); color:var(--color-pine-dark);
  box-shadow:
    inset 0 1.5px 1px rgba(255,255,255,.5),
    inset 0 -9px 15px rgba(0,0,0,.14),
    0 12px 22px rgba(0,0,0,.16);
}
.pain-aside-mark svg{width:28px; height:28px;}

/* ===== BRIDGE ===== */
.bridge{background:var(--color-accent); color:#fff; padding:92px 0;}
.bridge-grid{display:grid; grid-template-columns:1fr .9fr; gap:56px; align-items:center;}
.bridge h2{font-style:italic; font-weight:500; color:#fff; font-size:clamp(1.8rem, 3vw, 2.5rem);}
.bridge p{color:rgba(255,255,255,.92); margin:0 0 15px; font-size:16.5px; max-width:520px;}
.bridge-grid{grid-template-columns:1fr 1fr;}
.bridge .snapshot{width:100%;}

/* ===== BIO ===== */
.bio{padding:96px 0; background:var(--color-primary);}
.bio-grid{display:grid; grid-template-columns:.8fr 1.2fr; gap:64px; align-items:start;}
.bio .snapshot{width:100%; max-width:400px;}
.bio-text .panel-kicker{color:var(--color-pine-dark);}
.bio-text h2{font-style:italic; font-weight:500; font-size:clamp(1.8rem, 2.8vw, 2.3rem);}
.bio-text p{margin:0 0 15px; opacity:.87; font-size:16.5px; max-width:560px;}

/* ===== SERVICES — material image cards, same tactile surface as the pain cards ===== */
.services{padding:92px 0 100px; background:#E3E8DD; box-shadow:none;}
.services::before{display:none;}
.services-head{max-width:600px; margin-bottom:44px;}
.services-head .panel-kicker{color:var(--color-pine-dark);}
.services-head h2{font-size:clamp(1.7rem, 2.8vw, 2.2rem);}
.service-cards{display:grid; grid-template-columns:repeat(3, 1fr); gap:36px;}
/* Hover lift runs on the compositor only: transform + opacity. Animating box-shadow
   (and dragging the mix-blend noise layer along with it) repaints the whole card
   every frame, which is what made the lift stutter. The deeper hover shadow lives
   on ::after and just fades in. Corners are rounded per child so the card itself
   needs no overflow:hidden (which would clip that shadow). */
.service-card{position:relative; display:block; text-decoration:none; color:inherit; border-radius:28px; box-shadow:0 22px 42px rgba(20,26,20,.2); transform:translateZ(0); will-change:transform; transition:transform .5s cubic-bezier(.22,1,.36,1);}
.service-card::after{content:""; position:absolute; inset:0; border-radius:inherit; box-shadow:0 34px 60px rgba(20,26,20,.3); opacity:0; pointer-events:none; transition:opacity .5s cubic-bezier(.22,1,.36,1);}
.service-card-photo{border-radius:28px 28px 0 0; overflow:hidden; transform:translateZ(0);}
.service-card-photo img{width:100%; height:auto; aspect-ratio:4/3.6; object-fit:cover; display:block; transition:transform .7s cubic-bezier(.22,1,.36,1);}
@media (hover:hover) and (pointer:fine){
  .service-card:hover{transform:translate3d(0,-6px,0);}
  .service-card:hover::after{opacity:1;}
  .service-card:hover .service-card-photo img{transform:scale(1.03);}
}
@media (prefers-reduced-motion:reduce){
  .service-card, .service-card::after, .service-card-photo img{transition:none;}
}
.service-card-body{position:relative; overflow:hidden; border-radius:0 0 28px 28px; isolation:isolate; padding:26px 24px 30px;
  box-shadow:
    inset 0 1.5px 1px rgba(255,255,255,.35),
    inset 0 -18px 28px rgba(0,0,0,.14);
}
.service-card:nth-child(1) .service-card-body{background-color:var(--color-secondary); color:var(--color-ink);}
.service-card:nth-child(2) .service-card-body{background-color:var(--color-pine-dark); color:#fff;}
.service-card:nth-child(3) .service-card-body{background-color:var(--color-accent); color:#fff;}
.service-card h3{position:relative; z-index:1; font-style:italic; font-weight:500; font-size:1.25rem; margin:0 0 8px;}
.service-card p{position:relative; z-index:1; margin:0; opacity:.88; font-size:14.5px;}

/* ===== FINAL CTA — copy left, contact block + form right ===== */
.final-cta{background:var(--color-accent); padding:96px 0; color:#fff;}
.final-cta h2{color:#fff; font-weight:500;}
.final-cta-grid{display:grid; grid-template-columns:1.05fr .95fr; gap:50px; align-items:start; text-align:left;}
.final-cta-grid h2{font-style:normal; font-size:clamp(1.6rem, 2.6vw, 2.2rem);}
.final-cta-grid p{max-width:480px; margin:0 0 14px;}
.final-cta-copy h3{font-size:1rem; margin-top:16px; font-style:italic; font-weight:500; color:#fff;}
.final-cta-copy ul{list-style:none; margin:14px 0; padding:0; display:flex; flex-direction:column; gap:6px;}
.final-cta-copy ul li{font-size:15px; color:rgba(255,255,255,.9); margin-bottom:8px;}
.final-cta-copy ul li::before{content:"\2014\00a0"; opacity:.6;}
.final-cta-copy a{color:#fff;}
.contact-block{background:rgba(255,255,255,.07); border:1px solid rgba(255,255,255,.2); border-radius:2px 2px 2px 30px; padding:34px 30px;}
.contact-info{display:flex; justify-content:center; gap:24px; flex-wrap:wrap; margin-bottom:22px; font-size:14.5px;}
.contact-info a{text-decoration:none; font-weight:700; display:flex; align-items:center; gap:7px;}
form.mock-form{display:flex; flex-direction:column; gap:13px; text-align:left;}
form.mock-form label{font-size:12.5px; font-weight:700; letter-spacing:.03em; margin-bottom:4px; display:block; color:rgba(255,255,255,.9);}
form.mock-form input, form.mock-form textarea{width:100%; background:rgba(255,255,255,.09); border:1px solid rgba(255,255,255,.32); border-radius:4px; padding:10px 13px; color:#fff; font-family:var(--font-body); font-size:14.5px;}
form.mock-form input::placeholder, form.mock-form textarea::placeholder{color:rgba(255,255,255,.5);}
form.mock-form textarea{min-height:76px; resize:vertical;}
form.mock-form .btn-primary{background:#fff; color:var(--color-accent-dark); align-self:flex-start; margin-top:2px; border:0; cursor:pointer; font-family:var(--font-body);}
form.mock-form .btn-primary:hover{background:var(--color-cream-card);}

/* WPForms inside the final CTA / contact block — restyled to match the mockup form.
   WPForms' modern theme loads after client.css, so every override needs !important
   plus a doubled selector. */
.cta-form .wpforms-container.wpforms-container{margin:0 !important;}
.cta-form .wpforms-form .wpforms-field-container{display:flex; flex-direction:column; gap:13px;}
.cta-form .wpforms-form .wpforms-field.wpforms-field{padding:0 !important; margin:0 !important;}
.cta-form .wpforms-form .wpforms-field-label.wpforms-field-label{text-transform:none !important; line-height:1.4 !important; font-family:var(--font-body) !important; font-size:12.5px !important; font-weight:700 !important; letter-spacing:.03em !important; margin:0 0 4px !important; color:rgba(255,255,255,.9) !important;}
.cta-form .wpforms-form .wpforms-required-label{color:rgba(255,255,255,.7) !important;}
.cta-form .wpforms-form input[type=text].wpforms-field-large,
.cta-form .wpforms-form input[type=email].wpforms-field-large,
.cta-form .wpforms-form input[type=tel].wpforms-field-large,
.cta-form .wpforms-form input.wpforms-field-large,
.cta-form .wpforms-form textarea.wpforms-field-large,
.cta-form .wpforms-form input[type=text],
.cta-form .wpforms-form input[type=email],
.cta-form .wpforms-form textarea{width:100% !important; max-width:100% !important; background:rgba(255,255,255,.09) !important; border:1px solid rgba(255,255,255,.32) !important; border-radius:4px !important; padding:10px 13px !important; color:#fff !important; font-family:var(--font-body) !important; font-size:14.5px !important; height:auto !important; box-shadow:none !important;}
.cta-form .wpforms-form textarea{min-height:76px !important; height:76px !important; resize:vertical;}
.cta-form .wpforms-form .wpforms-field-container > .wpforms-field + .wpforms-field{margin-top:0 !important;}
.cta-form .wpforms-container .wpforms-form *{box-sizing:border-box;}
.cta-form .wpforms-form input::placeholder, .cta-form .wpforms-form textarea::placeholder{color:rgba(255,255,255,.5) !important; opacity:1 !important;}
.cta-form .wpforms-form input:focus, .cta-form .wpforms-form textarea:focus{border-color:#fff !important; outline:2px solid rgba(255,255,255,.35) !important; outline-offset:1px;}
.cta-form .wpforms-form .wpforms-submit-container{padding:13px 0 0 !important; margin:0 !important;}
.cta-form .wpforms-form button.wpforms-submit.wpforms-submit,
.cta-form .wpforms-form .wpforms-submit{width:auto !important; text-transform:none !important; letter-spacing:normal !important; background:#fff !important; color:var(--color-accent-dark) !important; font-family:var(--font-body) !important; font-weight:600 !important; font-size:14.5px !important; padding:14px 28px !important; border:0 !important; border-radius:2px 2px 2px 16px !important; height:auto !important; box-shadow:inset 0 1.5px 1px rgba(255,255,255,.4), inset 0 -6px 10px rgba(0,0,0,.08), 0 10px 20px rgba(20,26,20,.2) !important; cursor:pointer; transition:background .15s ease !important;}
.cta-form .wpforms-form button.wpforms-submit.wpforms-submit:hover{background:var(--color-cream-card) !important;}
.cta-form .wpforms-form label.wpforms-error, .cta-form .wpforms-form em.wpforms-error{color:#FBF6E7 !important; font-size:13px !important;}
.cta-form .wpforms-confirmation-container-full,
.cta-form .wpforms-confirmation-container,
.final-cta .wpforms-confirmation-container-full,
.final-cta .wpforms-confirmation-container{background:rgba(255,255,255,.12) !important; border:1px solid rgba(255,255,255,.3) !important; color:#fff !important; border-radius:2px 2px 2px 20px !important; padding:22px 24px !important;}
.cta-form .wpforms-confirmation-container-full p,
.cta-form .wpforms-confirmation-container p{color:#fff !important; margin:0 !important;}

/* ===== Contact page (reuses the final-cta grid) ===== */
.contact-page{padding:96px 0;}
.contact-page .final-cta-copy h2{font-style:italic;}
.contact-lines{list-style:none; margin:26px 0 0; padding:0; display:flex; flex-direction:column; gap:14px;}
.contact-page .contact-lines li::before{content:none;}
.contact-lines li{display:flex; flex-direction:column; gap:2px; font-size:16px;}
.contact-lines .contact-label{font-family:var(--font-heading); font-style:italic; font-size:14px; opacity:.8;}
.contact-lines a{font-weight:700; text-decoration:none; color:#fff;}
.contact-form-heading{font-style:italic; font-size:1.35rem !important; margin:0 0 18px;}

/* ===== FOOTER ===== */
footer.site-footer{background:var(--color-footer-bg); color:var(--color-footer-text); padding:42px 0 24px;}
.footer-inner{display:flex; flex-direction:column; align-items:center; gap:15px; text-align:center;}
.footer-brand{display:flex; align-items:center; gap:10px; opacity:.95;}
.footer-brand img{height:24px; width:auto; filter:brightness(0) invert(1) opacity(.9);}
.footer-brand span{font-family:var(--font-heading); font-size:14.5px;}
.footer-socials{display:flex; gap:14px;}
.footer-socials a{opacity:.75;}
.footer-legal{display:flex; gap:16px; font-size:12px; flex-wrap:wrap; justify-content:center;}
.footer-legal a{text-decoration:none; opacity:.85;}
.footer-legal a:hover{opacity:1; text-decoration:underline;}
.pt-badge{display:inline-block; opacity:.92; transition:opacity .15s ease;}
.pt-badge:hover{opacity:1;}
.pt-badge img{width:140px; height:auto;}
.copyright{font-size:11.5px; opacity:.6;}

a[href^="tel:"], a[href^="mailto:"]{text-decoration:none;}

/* ============================================================
   INNER PAGES (About, Services, Specialties, legal)
   ============================================================ */
.inner-content{padding:96px 0 104px; background:var(--color-primary);}
.service-body{max-width:var(--service-body-max, 1080px); margin:0 auto;}
.service-body > *:first-child{margin-top:0;}
.service-body h2{font-family:var(--font-heading); font-style:italic; font-weight:500; font-size:clamp(1.7rem, 3vw, 2.3rem); line-height:1.18; color:var(--color-ink); margin:0 0 18px;}
.service-body h3{font-family:var(--font-heading); font-weight:600; font-size:1.3rem; margin:28px 0 10px; color:var(--color-pine-dark);}
.service-body p{font-size:16.5px; line-height:1.78; margin:0 0 15px; color:rgba(43,51,46,.9);}
.service-body ul, .service-body ol{margin:0 0 18px; padding-left:22px; font-size:16.5px; color:rgba(43,51,46,.9);}
.service-body li{margin-bottom:6px;}
.service-body a{color:var(--color-accent-dark);}
.service-body strong{color:var(--color-ink);}
.service-body .panel-kicker{margin-bottom:8px;}

/* Uniform section rhythm: one top margin per top-level section, zero bottoms */
.svc-img-section{margin:0;}
.service-body > h2,
.service-body > .svc-img-section,
.service-body > .svc-text-block,
.service-body > .svc-callout,
.service-body > .inner-lead{margin-top:clamp(46px, 7vw, 84px);}
.service-body > .inner-lead:first-child,
.service-body > .svc-img-section:first-child{margin-top:0;}
.inner-lead{margin:0; text-align:left;}
.inner-lead h2{font-family:var(--font-heading); font-style:italic; font-weight:500; font-size:clamp(1.7rem, 3vw, 2.3rem); line-height:1.18; color:var(--color-ink);}

/* Image-beside-text (Rule #7): heading lives inside .svc-text-col */
.svc-img-section{display:grid; grid-template-columns:1fr 1fr; gap:56px; align-items:stretch;}
.svc-img-section--reverse .svc-img-col{order:-1;}
.svc-text-col{align-self:center;}
.svc-img-col{position:relative; border-radius:28px; overflow:hidden; min-height:320px; box-shadow:0 22px 44px rgba(20,26,20,.2);}
.svc-img-col img{position:absolute; inset:0; width:100%; height:100%; object-fit:cover; display:block;}
.svc-img-col--portrait{align-self:start; justify-self:center; width:100%; max-width:340px; min-height:0; border:10px solid #fff; border-radius:22px;}
.svc-img-col--portrait img{position:static; height:auto;}

/* Full-width text section on a tan material card, for rhythm between image sections */
.svc-text-block{max-width:820px;}
.service-body > .svc-box{margin-top:clamp(46px, 7vw, 84px);}
.svc-box{background:var(--color-cream-card); border-radius:2px 2px 2px 38px; padding:clamp(28px, 4vw, 52px); box-shadow:inset 0 1.5px 1px rgba(255,255,255,.6), 0 22px 44px rgba(20,26,20,.12); border:1px solid rgba(43,51,46,.08);}
.svc-box > .svc-text-block{margin-top:clamp(34px, 5vw, 56px);}
.svc-box .svc-credentials li{background:var(--color-primary);}
.svc-credentials{list-style:none !important; padding:0 !important; margin:18px 0 0 !important; display:grid; grid-template-columns:repeat(auto-fit, minmax(240px, 1fr)); gap:14px;}
.svc-credentials li{background:var(--color-cream-card); border-radius:2px 2px 2px 18px; padding:16px 20px; margin:0; box-shadow:0 10px 22px rgba(20,26,20,.08);}
.svc-credentials strong{display:block; font-family:var(--font-heading); font-size:1.05rem;}
.svc-credentials span{font-size:15px; color:rgba(43,51,46,.8);}

/* Closing call-out — material pine card */
.svc-callout{position:relative; overflow:hidden; background:var(--color-pine-dark); color:#fff; border-radius:38px; padding:44px 50px; text-align:center;
  box-shadow:inset 0 1.5px 1px rgba(255,255,255,.35), inset 0 -22px 34px rgba(0,0,0,.14), 0 26px 46px rgba(20,26,20,.22);
}
.svc-callout > *{position:relative; z-index:1;}
.service-body .svc-callout p{color:#fff; font-size:clamp(1.15rem, 2vw, 1.4rem); font-family:var(--font-heading); font-style:italic; line-height:1.45; max-width:680px; margin:0 auto;}
.service-body .svc-callout strong{color:#fff; font-weight:500;}
.svc-callout .btn{margin-top:24px;}
.service-body .svc-callout a.btn-primary{color:#fff;}

/* Pull quote used for client-language headings (About) */
.service-body h2 em, .inner-lead h2 em{font-style:italic;}

/* Legal pages: long text, readable column */
.inner-body{max-width:820px;}
.inner-body h2{font-size:clamp(1.4rem, 2.4vw, 1.8rem); margin-top:36px;}
.inner-body h3{font-size:1.15rem;}

/* ===== FAQ — "Field Card Deck" ===== */
.faq-section{padding:96px 0 110px;}
.faq-intro{max-width:760px; margin:0 auto 56px; text-align:center;}
.faq-intro h2{font-style:italic; font-weight:500; font-size:clamp(1.7rem, 3vw, 2.3rem);}
.faq-intro p{font-size:16.5px; color:rgba(43,51,46,.88); margin:0 0 14px;}
.faq-deck{max-width:900px; margin:0 auto; display:flex; flex-direction:column; gap:22px;}
.faq-card{position:relative; overflow:hidden; border-radius:30px; transition:transform .35s cubic-bezier(.22,1,.36,1), box-shadow .35s cubic-bezier(.22,1,.36,1);
  box-shadow:inset 0 1.5px 1px rgba(255,255,255,.35), inset 0 -18px 30px rgba(0,0,0,.12), 0 16px 32px rgba(20,26,20,.14);
}
.faq-card:nth-child(even){margin-left:clamp(0px, 5vw, 60px);}
.faq-card:nth-child(odd){margin-right:clamp(0px, 5vw, 60px);}
.faq-card--tan{background-color:var(--color-secondary); color:var(--color-ink);}
.faq-card--dark{background-color:var(--color-pine-dark); color:#fff;}
.faq-card--accent{background-color:var(--color-accent); color:#fff;}
.faq-card:hover{transform:translateY(-2px);}
.faq-card.open{transform:translateY(-4px); box-shadow:inset 0 1.5px 1px rgba(255,255,255,.35), inset 0 -18px 30px rgba(0,0,0,.12), 0 30px 54px rgba(20,26,20,.24);}
.faq-question{position:relative; z-index:1; width:100%; display:flex; align-items:center; gap:18px; background:none; border:0; color:inherit; text-align:left; cursor:pointer; padding:26px 30px; font:inherit;}
.faq-num{font-family:var(--font-heading); font-style:italic; font-size:15px; opacity:.6; flex:none; min-width:24px;}
.faq-q-text{flex:1; font-family:var(--font-heading); font-weight:600; font-size:clamp(1.2rem, 2vw, 1.4rem); line-height:1.3;}
.faq-toggle{flex:none; width:44px; height:44px; border-radius:50%; display:flex; align-items:center; justify-content:center; background:rgba(255,255,255,.16); transition:transform .4s cubic-bezier(.22,1,.36,1), background .3s ease;
  box-shadow:inset 0 1.5px 1px rgba(255,255,255,.35), inset 0 -6px 10px rgba(0,0,0,.1);
}
.faq-card--tan .faq-toggle{background:rgba(255,255,255,.45); color:var(--color-pine-dark);}
.faq-toggle svg{width:18px; height:18px; transition:transform .4s cubic-bezier(.22,1,.36,1);}
.faq-card.open .faq-toggle svg{transform:rotate(180deg);}
.faq-answer{position:relative; z-index:1; display:grid; grid-template-rows:0fr; transition:grid-template-rows .42s cubic-bezier(.22,1,.36,1);}
.faq-card.open .faq-answer{grid-template-rows:1fr;}
.faq-answer-inner{overflow:hidden; padding:0 30px;}
.faq-card.open .faq-answer-inner{padding-bottom:28px;}
.faq-answer-inner p{font-size:1.08rem; line-height:1.8; margin:0 0 12px; opacity:.92;}
.faq-answer-inner p:last-child{margin-bottom:0;}
@media (prefers-reduced-motion: reduce){
  .faq-card, .faq-answer, .faq-toggle svg{transition:none;}
}

/* ===== BLOG ===== */
.blog-section{padding:96px 0 104px;}
.blog-lede{max-width:720px; margin:0 auto 48px; text-align:center;}
.blog-list{display:grid; grid-template-columns:repeat(3, 1fr); gap:30px;}
.blog-card{position:relative; overflow:hidden; border-radius:30px; padding:34px 30px 32px; display:flex; flex-direction:column;
  box-shadow:inset 0 1.5px 1px rgba(255,255,255,.35), inset 0 -18px 30px rgba(0,0,0,.12), 0 20px 40px rgba(20,26,20,.18);
}
.blog-card > *{position:relative; z-index:1;}
.blog-card--tan{background-color:var(--color-secondary); color:var(--color-ink);}
.blog-card--dark{background-color:var(--color-pine-dark); color:#fff;}
.blog-card--accent{background-color:var(--color-accent); color:#fff;}
.blog-card-date{font-family:var(--font-heading); font-style:italic; font-size:15px; opacity:.75;}
.blog-card__title{font-style:italic; font-weight:500; font-size:1.45rem; margin:10px 0 12px;}
.blog-card__title a{text-decoration:none;}
.blog-card-excerpt p{font-size:15.5px; opacity:.88; margin:0 0 18px;}
.blog-card-more{margin-top:auto; font-weight:600; font-size:14.5px; text-decoration:none;}
.blog-card-more:hover{text-decoration:underline;}
.blog-pagination ul{list-style:none; display:flex; gap:8px; justify-content:center; padding:0; margin:40px 0 0;}
.blog-pagination a, .blog-pagination span{display:inline-flex; min-width:40px; height:40px; align-items:center; justify-content:center; border-radius:50%; text-decoration:none;}
.blog-pagination .current{background:var(--color-accent); color:#fff;}

.single-post{padding:150px 0 96px; background:var(--color-primary);}
.single-post-wrap{max-width:700px; margin:0 auto;}
.single-post-back{font-size:14.5px; font-weight:600; text-decoration:none; color:var(--color-accent-dark);}
.single-post-meta{margin-top:26px; font-family:var(--font-heading); font-style:italic; font-size:15px; color:var(--color-pine-dark);}
.single-post-title{font-style:italic; font-weight:500; font-size:clamp(2.1rem, 4.4vw, 3.2rem); margin:8px 0 0;}
.single-post-divider span{background:rgba(43,51,46,.25);}
.single-post-divider .hero-divider-mark{background:var(--color-secondary); color:var(--color-pine-dark);}
.single-post-body{font-family:var(--font-heading); font-size:20px; line-height:1.8;}
.single-post-body > p:first-of-type::first-letter{float:left; font-size:3.6em; line-height:.9; padding:6px 10px 0 0; color:var(--color-accent-dark); font-weight:600;}
.single-post-body h2{font-style:italic; font-weight:500; font-size:1.8rem; margin:40px 0 14px;}
.single-post-body h3{font-size:1.35rem; margin:30px 0 10px;}
.single-post-body blockquote{margin:34px 0; padding:6px 0 6px 26px; border-left:3px solid var(--color-accent); font-style:italic; font-size:1.4rem; color:var(--color-pine-dark);}
.single-post-body blockquote p{margin:0;}

/* ===== RESPONSIVE ===== */
@media (max-width:1024px){
  .bridge-grid, .bio-grid{grid-template-columns:1fr; gap:32px;}
  .bridge-grid .snapshot{margin:0 auto; max-width:460px;}
  .bridge-grid > figure{order:-1;}
  .final-cta-grid{grid-template-columns:1fr; gap:30px;}
  .svc-img-section{gap:36px;}
  .blog-list{grid-template-columns:repeat(2, 1fr);}
}

@media (max-width:768px),
       (hover:none) and (pointer:coarse) and (max-height:500px){
  .pain-card-row, .pain-card-row.reverse{flex-direction:column; gap:16px;}
  .pain-card, .pain-card-row.reverse .pain-card{width:100%; grid-template-columns:1fr; padding:28px 26px; border-radius:26px;}
  .pain-card-row.reverse .pain-card .pain-card-photo, .pain-card-row.reverse .pain-card .pain-card-text{order:initial;}
  .pain-aside{max-width:none;}
  .pain-card-row.reverse .pain-aside{text-align:left; margin-left:0;}
  .service-cards{grid-template-columns:1fr; gap:22px;}
  .contact-info{flex-direction:column; gap:12px;}
  .footer-legal, .copyright{font-size:13.5px;}
  .inner-content, .faq-section, .blog-section, .contact-page{padding:72px 0;}

  .svc-img-section, .svc-img-section--reverse{grid-template-columns:1fr; gap:26px;}
  .svc-img-section--reverse .svc-img-col{order:initial;}
  .svc-img-col{min-height:0; aspect-ratio:4/3;}
  .svc-img-col--portrait{aspect-ratio:auto;}
  .svc-callout{padding:32px 24px; border-radius:26px;}

  .faq-card:nth-child(even), .faq-card:nth-child(odd){margin-left:0; margin-right:0;}
  .faq-question{padding:20px 20px; gap:12px;}
  .faq-answer-inner{padding:0 20px 0 20px;}
  .faq-card.open .faq-answer-inner{padding-bottom:22px;}
  .blog-list{grid-template-columns:1fr;}
  .single-post{padding:120px 0 64px;}
  .single-post-body{font-size:18px;}
}

@media (max-width:480px){
  .contact-block{padding:26px 20px;}
  .pain-card, .pain-card-row.reverse .pain-card{padding:24px 20px;}
}

/* ========== MOBILE RESPONSIVE INVARIANTS — DO NOT REMOVE ========== */
html, body { overflow-x: clip; }

@media (max-width: 768px) {
  .brand { min-width: 0; flex: 1 1 auto; }
  .brand-text, .brand-text small { white-space: normal; min-width: 0; }
  .hamburger { flex-shrink: 0; margin-left: auto; }
  .nav-links > li { white-space: normal; }
  .dropdown-menu,
  .dropdown-menu li,
  .dropdown-menu a { white-space: normal; }
}

/* ========== DESKTOP NAV — REQUIRED PATTERNS ========== */
@media (min-width: 769px) and (hover: hover) {
  .nav-links .dropdown > a {
    cursor: default;
    pointer-events: none;
  }
}
.dropdown-menu,
.dropdown-menu li {
  list-style: none;
  margin: 0;
}

/* ========== MOBILE DRAWER SUBMENU — DUAL-SELECTOR REQUIRED ========== */
.nav-links .sub-menu,
.nav-links .dropdown-menu { list-style: none !important; }
.nav-links .sub-menu li,
.nav-links .dropdown-menu li { list-style: none !important; }
@media (max-width:768px),
       (hover:none) and (pointer:coarse) and (max-height:500px){
  .nav-links .sub-menu,
  .nav-links .dropdown-menu {
    padding: 0 0 0 14px;
    margin: 4px 0 8px 0;
    border-left: 2px solid var(--accent);
  }
  .nav-links .sub-menu li a,
  .nav-links .dropdown-menu li a {
    font-size: 1rem;
    padding: 10px 0 10px 12px;
    border-bottom: 1px solid color-mix(in srgb, var(--accent) 30%, transparent);
    border-radius: 0;
  }
  .nav-links .sub-menu li:last-child a,
  .nav-links .dropdown-menu li:last-child a { border-bottom: none; }
  .nav-links .dropdown-menu a:hover { background: transparent; color: var(--color-accent-dark); }
  nav.primary-nav .dropdown > a::after { content: ""; display:inline-block; width:7px; height:7px; margin-left:10px; border-right:2px solid currentColor; border-bottom:2px solid currentColor; transform:rotate(45deg) translateY(-3px); opacity:.55; transition:transform .25s ease; }
  nav.primary-nav .dropdown.open > a::after { transform:rotate(-135deg) translateY(-1px); }
}

/* ========== TOUCH-DEVICE ACCESSIBILITY — DO NOT REMOVE ========== */
@media (hover: none) and (pointer: coarse) {
  .brand-text .practice-name { font-size: 15.5px !important; }
  .brand-text .therapist-name { font-size: 14px !important; line-height: 1.3 !important; }
  .brand { min-height: 44px; }

  nav.primary-nav .nav-links > li > a {
    font-size: 15px !important;
    min-height: 44px;
    min-width: 44px;
    padding: 12px 1px !important;
    box-sizing: border-box;
    display: inline-flex;
    align-items: center;
  }
  .nav-links .dropdown-menu a {
    font-size: 14px !important;
    min-height: 44px;
    box-sizing: border-box;
    display: flex;
    align-items: center;
  }

  button,
  .nav-cta,
  .nav-phone,
  .btn,
  .blog-card-more,
  .single-post-back {
    font-size: 14px !important;
    min-height: 44px;
    box-sizing: border-box;
    display: inline-flex;
    align-items: center;
    justify-content: center;
  }

  .hero-location,
  .credential-list span,
  .panel-kicker,
  .snapshot figcaption,
  .service-card p,
  .faq-num,
  .contact-lines .contact-label,
  .blog-card-date {
    font-size: 14px !important;
  }

  .hamburger { min-width: 44px; min-height: 44px; align-items: center; justify-content: center; }
  .hamburger span { flex-shrink: 0; height: 2px; min-height: 2px; }

  .footer-legal, .copyright, .footer-brand span { font-size: 14px !important; }
  .footer-legal a,
  .footer-socials a,
  .pt-badge {
    min-height: 44px;
    padding: 8px 0;
    display: inline-flex;
    align-items: center;
    box-sizing: border-box;
  }
  .footer-socials a { min-width: 44px; justify-content: center; }

  a[href^="tel:"],
  a[href^="mailto:"] {
    min-height: 44px;
    box-sizing: border-box;
    display: inline-flex;
    align-items: center;
  }

  .wpforms-form .wpforms-submit,
  button[type="submit"].wpforms-submit {
    min-height: 44px !important;
    box-sizing: border-box !important;
  }
  .wpforms-container .wpforms-field-label,
  .wpforms-container .wpforms-field-label.wpforms-field-label,
  .cta-form .wpforms-container .wpforms-field-label.wpforms-field-label,
  .final-cta .wpforms-container .wpforms-field-label.wpforms-field-label,
  .lp-form-wrap .wpforms-container .wpforms-field-label.wpforms-field-label,
  form.mock-form label {
    font-size: 14px !important;
    line-height: 1.4 !important;
  }

  body.page-privacy-policy .inner-body a,
  body.page-terms-and-conditions .inner-body a,
  body.page-terms-conditions .inner-body a {
    display: inline-block;
    min-height: 44px;
    padding: 11px 0;
    line-height: 1.4;
    box-sizing: border-box;
  }

  .service-card:hover, .faq-card:hover { transform: none; }
}

/* ========== SHORT LANDSCAPE PHONES: HERO MUST CLEAR THE NAV ========== */
@media (max-height: 500px) and (orientation: landscape) {
  .hero-card { min-height: 0; height: auto; }
  .hero-card-content { padding: 96px 28px 32px; width: 100%; margin-right: 0; }
  .inner-hero { min-height: 0; }
  .inner-hero-content { padding-top: 96px; padding-bottom: 32px; }
}

/* ========== LEGAL PAGES: NEVER FADE IN ========== */
body.page-terms-and-conditions .fade-in,
body.page-terms-conditions .fade-in,
body.page-privacy-policy .fade-in {
  opacity: 1 !important;
  transform: none !important;
  animation: none !important;
  transition: none !important;
}

/* ========== forceVisible safety net ==========
   Inner-page containers have no scroll animation; they only need to be
   visible if JS fails. 0.01s (not 0s) so Lighthouse treats it as composited. */
@keyframes forceVisible {
  to { opacity: 1; transform: none; }
}
.inner-content,
.contact-page {
  animation: forceVisible 0.01s 8s forwards;
}
.fade-in.visible {
  opacity: 1;
  transform: translateY(0);
  animation: none;
}
