/* Therapy page template — scoped under .tpt */
.tpt{--tpt-blue:var(--bs-primary-hex,#0072bc);--tpt-blue-dark:#005b96;--tpt-navy:var(--bs-heading-color-hex,#1e2d3b);--tpt-ink:#212124;--tpt-muted:#495356;--tpt-light:var(--bs-light-hex,#f2f8fc);--tpt-border:var(--bs-secondary-border-hex,#e7e7e7);--tpt-border-2:#cfd8de;--tpt-yellow:var(--bs-warning-hex,#ffd240);--tpt-yellow-pale:#fff5d6;--tpt-sky:#80b7e3;--tpt-sky-pale:#e6f1f9;--tpt-radius:var(--bs-border-radius,10px);--tpt-heading:'Catamaran',sans-serif;--tpt-body:'Nunito Sans',system-ui,sans-serif;--tpt-ease:cubic-bezier(.2,.7,.3,1);
  font-family:var(--tpt-body);color:var(--tpt-ink);background:#fff;max-width:100%;overflow-x:hidden;-webkit-font-smoothing:antialiased}
.tpt *,.tpt *::before,.tpt *::after{box-sizing:border-box}
.tpt a:not([class]){color:var(--tpt-navy)}.tpt a:not([class]):hover{color:var(--tpt-blue)}
.tpt img{display:block;max-width:100%}
.tpt h1,.tpt h2,.tpt h3{font-family:var(--tpt-heading);color:inherit;margin:0}
.tpt ul,.tpt ol{margin:0;padding:0;list-style:none}
.tpt-wrap{max-width:1180px;margin:0 auto;padding-left:24px;padding-right:24px}
.tpt-eyebrow{font-family:var(--tpt-heading);font-weight:700;font-size:13px;letter-spacing:.14em;text-transform:uppercase;color:var(--tpt-blue);margin:0 0 10px}
.tpt-eyebrow--sky{color:var(--tpt-sky)}
.tpt-h2{font-weight:800;font-size:clamp(28px,3.6vw,40px);line-height:1.1;letter-spacing:-.015em;color:var(--tpt-navy)}
.tpt-h2--sm{font-size:clamp(24px,2.8vw,32px);line-height:1.12;max-width:16ch}
.tpt-lead{font-size:18px;line-height:1.55;color:var(--tpt-muted);margin:0 0 14px;max-width:48ch}
.tpt-btn{display:inline-flex;align-items:center;justify-content:center;font-weight:700;font-size:17px;padding:15px 26px;border-radius:var(--tpt-radius);text-decoration:none;border:2px solid transparent;white-space:nowrap;transition:background .2s,border-color .2s,color .2s,transform .2s}
.tpt .tpt-btn-primary{background:var(--tpt-blue);color:#fff;border-color:var(--tpt-blue);box-shadow:0 6px 18px rgba(0,114,188,.28)}.tpt .tpt-btn-primary:hover{background:var(--tpt-blue-dark);border-color:var(--tpt-blue-dark);color:#fff;transform:translateY(-2px)}
.tpt .tpt-btn-outline-muted{background:transparent;color:var(--tpt-navy);border-color:var(--tpt-border-2);padding:15px 22px}.tpt .tpt-btn-outline-muted:hover{border-color:var(--tpt-blue);color:var(--tpt-blue)}

/* Scroll reveal (js/therapy.js toggles .is-in) */
.tpt [data-reveal]{opacity:0;transform:translateY(26px);transition:opacity .7s var(--tpt-ease),transform .7s var(--tpt-ease)}
.tpt [data-reveal].is-in{opacity:1;transform:none}
.tpt [data-stagger]>*{opacity:0;transform:translateY(22px);transition:opacity .6s var(--tpt-ease),transform .6s var(--tpt-ease);transition-delay:calc(var(--i,0)*90ms)}
.tpt [data-stagger].is-in>*{opacity:1;transform:none}
@keyframes tptHeroIn{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}
@keyframes tptKen{from{transform:scale(1.06) translateY(6px)}to{transform:none}}
@keyframes tptPulse{0%,100%{box-shadow:0 0 0 2px var(--tpt-yellow),0 0 0 0 rgba(255,210,64,.5)}50%{box-shadow:0 0 0 2px var(--tpt-yellow),0 0 0 10px rgba(255,210,64,0)}}
@keyframes tptDraw{from{transform:scaleX(0)}to{transform:scaleX(1)}}

/* 1. Hero */
.tpt-hero{background:var(--tpt-light);border-bottom:1px solid var(--tpt-border)}
.tpt-hero__grid{padding-top:56px;display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:36px 56px;align-items:end}
.tpt-hero__copy{padding-bottom:56px}
.tpt-crumb{display:flex;flex-wrap:wrap;align-items:center;gap:8px;font-family:var(--tpt-heading);font-weight:700;font-size:13px;letter-spacing:.14em;text-transform:uppercase;color:var(--tpt-blue);margin-bottom:16px;animation:tptHeroIn .6s var(--tpt-ease) both}
.tpt-crumb a{color:var(--tpt-blue);text-decoration:none}.tpt-crumb a:hover{text-decoration:underline}.tpt-crumb span:last-child{color:var(--tpt-muted)}
.tpt-hero h1{font-weight:800;font-size:clamp(36px,5vw,58px);line-height:1.04;letter-spacing:-.02em;margin:0 0 18px;color:var(--tpt-navy);max-width:16ch;text-wrap:balance;animation:tptHeroIn .7s var(--tpt-ease) .08s both}
.tpt-hero__lede{font-size:clamp(17px,2vw,20px);line-height:1.55;color:var(--tpt-muted);max-width:50ch;margin:0 0 28px;animation:tptHeroIn .7s var(--tpt-ease) .16s both}
.tpt-hero__actions{display:flex;flex-wrap:wrap;gap:12px;animation:tptHeroIn .7s var(--tpt-ease) .24s both}
.tpt-hero__proof{display:flex;flex-wrap:wrap;gap:8px 22px;margin-top:28px;font-size:15px;color:var(--tpt-muted);animation:tptHeroIn .7s var(--tpt-ease) .32s both}
.tpt-hero__proof li{display:inline-flex;align-items:center;gap:8px}
.tpt-hero__proof li::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--tpt-yellow);flex:none}
.tpt-hero__media{position:relative;align-self:stretch;min-height:340px}
.tpt-hero__media img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;border-radius:var(--tpt-radius) var(--tpt-radius) 0 0;animation:tptKen 1.6s var(--tpt-ease) both}

/* Generic sections */
.tpt-section{background:#fff;border-bottom:1px solid var(--tpt-border)}
.tpt-section--light{background:var(--tpt-light)}
.tpt-two{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:40px;align-items:start}

/* 2. Conditions */
.tpt-conditions__grid{padding-top:44px;padding-bottom:44px;display:grid;grid-template-columns:minmax(200px,.55fr) minmax(0,1.45fr);gap:24px 48px;align-items:start}
@media (max-width:719px){.tpt-conditions__grid{grid-template-columns:1fr}}
.tpt-conditions__list{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:2px 28px}
.tpt-conditions__list li{display:flex;gap:12px;align-items:flex-start;padding:12px 0;border-bottom:1px solid var(--tpt-border);font-size:16px;line-height:1.4;transition:color .2s,padding-left .2s}
.tpt-conditions__list li:hover{color:var(--tpt-blue);padding-left:6px}
.tpt-conditions__list li::before{content:"✓";flex:none;width:18px;height:18px;border-radius:50%;background:var(--tpt-sky-pale);color:var(--tpt-blue);display:inline-flex;align-items:center;justify-content:center;font-size:11px;font-weight:800;margin-top:2px}

/* 3. Care path */
.tpt-path{background:var(--tpt-navy);color:#fff}
.tpt-path .tpt-wrap{padding-top:68px;padding-bottom:72px}
.tpt-path .tpt-h2{color:#fff}
.tpt-path__head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:16px 32px;margin-bottom:40px}
.tpt-path__head>div{max-width:60ch}
.tpt-path__note{font-size:16px;color:#dbe7f0;max-width:34ch;margin:0}
.tpt-path__steps{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:0 20px}
.tpt-path__steps li{position:relative;padding-top:30px;transition:transform .3s}
.tpt-path__steps li:hover{transform:translateY(-4px)}
.tpt-path__steps li::before{content:"";position:absolute;top:8px;left:0;right:-20px;height:2px;background:rgba(255,255,255,.18);transform-origin:left;animation:tptDraw 1.2s var(--tpt-ease) both}
.tpt-path__steps li::after{content:"";position:absolute;top:0;left:0;width:18px;height:18px;border-radius:50%;background:var(--tpt-yellow);border:4px solid var(--tpt-navy);box-shadow:0 0 0 2px var(--tpt-yellow);animation:tptPulse 2.4s ease-in-out infinite;animation-delay:calc(var(--i,0)*.4s)}
.tpt-path__when{display:block;font-family:var(--tpt-heading);font-weight:700;font-size:13px;letter-spacing:.12em;text-transform:uppercase;color:var(--tpt-sky);margin-bottom:6px}
.tpt-path__steps h3{font-weight:800;font-size:21px;line-height:1.2;margin-bottom:8px}
.tpt-path__steps p{font-size:16px;line-height:1.5;color:#dbe7f0;margin:0;padding-right:8px}

/* 4. First visit */
.tpt-visit .tpt-wrap{padding-top:56px;padding-bottom:56px}
.tpt-visit .tpt-h2{max-width:18ch;margin-bottom:14px}
.tpt-stat{display:inline-flex;align-items:baseline;gap:12px;margin-top:10px;padding:14px 18px;background:var(--tpt-light);border-radius:var(--tpt-radius)}
.tpt-stat strong{font-family:var(--tpt-heading);font-weight:800;font-size:28px;line-height:1;color:var(--tpt-blue)}
.tpt-stat span{font-size:15px;color:var(--tpt-muted)}
.tpt-visit__cards{display:grid;gap:14px}
.tpt-card{border-radius:var(--tpt-radius);padding:24px 26px;border:1px solid var(--tpt-border);transition:transform .3s,box-shadow .3s}
.tpt-card:hover{transform:translateY(-4px);box-shadow:0 14px 34px rgba(30,45,59,.1)}
.tpt-card--light{background:var(--tpt-light)}
.tpt-card--note{background:var(--tpt-yellow-pale);border-color:var(--tpt-yellow)}
.tpt-card--note:hover{box-shadow:0 14px 34px rgba(255,210,64,.3)}
.tpt-card h3{font-weight:800;font-size:19px;margin-bottom:12px;color:var(--tpt-navy)}
.tpt-list{display:flex;flex-direction:column;gap:9px}
.tpt-list li{display:flex;gap:10px;font-size:16px;line-height:1.45}
.tpt-list li::before{content:"";flex:none;width:6px;height:6px;border-radius:50%;margin-top:9px}
.tpt-list--blue li::before{background:var(--tpt-blue)}
.tpt-list--navy li::before{background:var(--tpt-navy)}

/* 5. Why ICA */
.tpt-why__grid{padding-top:56px;padding-bottom:56px;display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:36px 48px;align-items:stretch}
.tpt-why__media{position:relative;min-height:320px}
.tpt-why__media img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;border-radius:var(--tpt-radius)}
.tpt-why .tpt-h2{max-width:24ch;margin-bottom:30px}
.tpt-why__cards{display:grid;gap:12px}
.tpt-why__card{background:#fff;border:1px solid var(--tpt-border);border-left:4px solid var(--tpt-blue);border-radius:var(--tpt-radius);padding:26px 26px 28px;display:grid;grid-template-columns:auto minmax(0,1fr);gap:4px 18px;transition:transform .3s,box-shadow .3s}
.tpt-why__card:hover{transform:translateX(6px);box-shadow:0 18px 40px rgba(30,45,59,.12)}
.tpt-why__num{font-family:var(--tpt-heading);font-weight:800;font-size:30px;line-height:1;color:var(--tpt-blue);opacity:.35;grid-row:span 2}
.tpt-why__card h3{font-weight:800;font-size:20px;line-height:1.2;color:var(--tpt-navy)}
.tpt-why__card p{font-size:16px;line-height:1.55;color:var(--tpt-muted);margin:0}

/* 6. FAQ */
.tpt-faq{border-bottom:0;border-top:1px solid var(--tpt-border)}
.tpt-faq .tpt-wrap{padding-top:64px;padding-bottom:64px}
.tpt-faq__head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:12px 32px;margin-bottom:30px}
.tpt-faq__note{font-size:15px;color:var(--tpt-muted);margin:0}
.tpt-faq__grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:14px}
.tpt-faq__card{background:var(--tpt-light);border:1px solid var(--tpt-border);border-radius:var(--tpt-radius);padding:24px 26px;display:flex;flex-direction:column;gap:10px;transition:transform .3s,border-color .3s,box-shadow .3s,background .3s}
.tpt-faq__card:hover{transform:translateY(-4px);border-color:var(--tpt-blue);background:#fff;box-shadow:0 14px 34px rgba(30,45,59,.08)}
.tpt-faq__card h3{font-weight:800;font-size:19px;line-height:1.25;color:var(--tpt-navy)}
.tpt-faq__card p{font-size:16px;line-height:1.6;color:var(--tpt-muted);margin:0}

@media (prefers-reduced-motion:reduce){.tpt *{animation:none!important;transition:none!important}.tpt [data-reveal],.tpt [data-stagger]>*{opacity:1;transform:none}}
@media print{.tpt [data-reveal],.tpt [data-stagger]>*{opacity:1;transform:none}}

/* === therapy: MODX build additions (append-only) =========================== */
/* Theme token fix: --bs-heading-color-hex is the ink colour on this theme; navy is --bs-tertiary-hex. */
.tpt{--tpt-navy:var(--bs-tertiary-hex,#1e2d3b)}
/* Fail-open: reveal styles only apply once therapy.js has tagged the root, so content is never
   stuck invisible if the script does not run. */
.tpt:not(.tpt-js) [data-reveal],.tpt:not(.tpt-js) [data-stagger]>*{opacity:1;transform:none}
.tpt-freetext p{font-size:18px;line-height:1.55;color:var(--tpt-muted);margin:0 0 14px;max-width:48ch}
.tpt-why__cards{counter-reset:tpt-why}
.tpt-why__card{counter-increment:tpt-why}
.tpt-why__num::before{content:counter(tpt-why,decimal-leading-zero)}
.tpt-faq__a p{font-size:16px;line-height:1.6;color:var(--tpt-muted);margin:0 0 8px}
.tpt-faq__a p:last-child{margin:0}
.tpt .tpt-hero h1{color:var(--tpt-navy)}
.tpt .tpt-path .tpt-h2{color:#fff}
