Incorporating mind-body practices into mental wellness routines is a powerful way to balance emotions and enhance overall well-being. These practices focus on both the physical aspects of health and on connecting the body and mind, allowing for a holistic approach to mental wellness. In a bustling city like New York, where life can be quite fast-paced, integrating these practices can provide a much-needed pause for individuals seeking mental clarity and calm.

Mind-body practices are becoming increasingly popular as more people recognize their benefits for mental health. Engaging in activities that promote the connection between your mind and body helps in reducing stress and improving the quality of life. Whether it’s through yoga, meditation, or simple breathing exercises, these practices can fit seamlessly into daily routines. They are more than just occasional activities; they cultivate a lifestyle that nurtures mental health. Let’s explore more about what these practices involve and how they can be effectively integrated into everyday life for a healthier state of mind.

Understanding Mind-Body Practices

Mind-body practices are activities that emphasize the link between physical health and mental well-being. These practices encourage an awareness of the present moment, promoting a deeper understanding of oneself. They include activities like yoga, meditation, tai chi, and breathing exercises, each offering unique benefits for mental and physical health.

– Yoga: This practice combines physical postures, breathing exercises, and meditation to enhance mental and physical well-being. It’s known for reducing stress and increasing mental clarity.

– Meditation: There are many types of meditation, ranging from mindfulness meditation to loving-kindness meditation. Each type offers a unique way to engage with your thoughts, often leading to reduced anxiety and improved concentration.

– Tai Chi: Often described as “meditation in motion,” tai chi involves a series of gentle, flowing movements accompanied by deep breathing. It’s ideal for relaxation and stress relief.

– Breathing Exercises: Simple techniques like deep breathing or alternate nostril breathing can be practiced daily to calm the mind and reduce stress levels.

These practices aim to foster relaxation and encourage reflection, offering a soothing way to manage life’s stresses. They help in creating a sense of inner peace, making them highly beneficial in maintaining mental stability, especially in a lively city like New York. By engaging in mind-body practices, you open the door to improved mood, better sleep, and an overall uplifted state of mind, contributing positively to NYC mental health.

How to Incorporate Mind-Body Practices into Your Routine

Finding space for mind-body practices in your daily routine can offer a tranquil escape from the busy life in New York. Here are some tips on how you can seamlessly fit these activities into your schedule:

1. Make Time Every Day:

– Begin with just 10-15 minutes a day and gradually increase the time as you get comfortable.

– Look for pockets of time in your day, like early morning or just before bed.

2. Create a Peaceful Environment:

– Dedicate a quiet corner in your home for these practices. Maybe it’s a mat in your bedroom or a comfy chair for meditation.

– Use calming music or nature sounds to enhance the atmosphere.

3. Get Family Involved:

– Invite family members to join you. Practicing together can be motivating and builds support.

– Make it a fun family event once a week to bond and relax together.

In NYC, where days are packed and time feels scarce, these strategies can make it easier to commit to mental wellness practices. Starting with small, manageable steps can help bring these practices into your life without feeling overwhelming.

Seasonal Relevance and NYC Focus

The springtime in New York is perfect for initiating new mental wellness routines. As nature begins to bloom, it brings revitalized energy that can inspire fresh starts. The pleasant weather makes it inviting to practice outside, whether in a quiet park or your backyard.

In New York, there are plenty of places to boost your wellness journey:

– Central Park: Join an outdoor yoga class and enjoy nature’s beauty.

– Participate in Tai Chi sessions: Many community centers offer these classes, allowing you to destress mid-city rush.

– Breathing Retreats: Several wellness centers conduct sessions focusing on breathing techniques. This could be a great way to meet others who are on the same journey.

These activities offer the chance to connect with others while improving mental health. The change in season mirrors the change you are pursuing in your mental wellness journey.

Finding Support in New York

Living in the fast-paced environment of New York can sometimes feel overwhelming. Thankfully, there are resources available that cater to mental health support. Activities designed to integrate mind-body practices into daily life can alleviate stress and promote better mental health.

Local support groups, wellness centers, and specialized therapy services are within reach in the city. Taking the first step to seek guidance can open up a path to greater emotional and mental strength. Engaging with these resources can make a significant difference, as they provide personalized strategies to support your journey to mental wellness. Whether through community classes or private sessions, New York offers a wealth of options for fostering a healthier mindset.

Ready to enhance your well-being and build healthier habits? NYC Counseling can help you incorporate mind-body practices into your everyday life through personalized support and therapeutic approaches. To take the next step toward improved balance and emotional strength, explore how we can assist with NYC mental health.

, then give any button data-nycc-matcher (or the text "Book Appointment" / "Book a Consult") and it opens the matcher as an in-page pop-up. Also callable: NYCCMatcher.open(). Renders inside a Shadow DOM so its styles can't collide with the host site. See INTEGRATION.md. Clinician data + consult links + photos are in CLINICIANS below (snapshot of the live Roster) — swap for a live feed when ready. */ (function(){ "use strict"; var CONFIG = { triggerSelector: '[data-nycc-matcher]', triggerText: ['Book Appointment','Book a Consult','Book a Free Consult'], fontsHref: "https://fonts.googleapis.com/css2?family=Playfair+Display:wght@400;500;600&family=Lora:ital,wght@0,400;0,500;0,600;0,700;1,400&display=swap" }; if(!document.getElementById('nycc-matcher-fonts')){ var fl=document.createElement('link'); fl.id='nycc-matcher-fonts'; fl.rel='stylesheet'; fl.href=CONFIG.fontsHref; document.head.appendChild(fl); } var HOST=document.getElementById('nycc-matcher-host'); if(!HOST){ HOST=document.createElement('div'); HOST.id='nycc-matcher-host'; document.body.appendChild(HOST); } var SHADOW=HOST.shadowRoot||HOST.attachShadow({mode:'open'}); SHADOW.innerHTML='
'; var NYCC_MOUNT=SHADOW.getElementById('nycc-mount'); /* Generated from the live tracker Sheet Roster (1rddnkHRZLStDETWAu2WXhSFQTZav6g9GMSwkHQV5vmo), gid 1164034470, read 2026-08-20. Active therapists/interns only; Rachel Poses (no profile) and Lisa Poelle (parent coach) are excluded from the quiz, per the wireframe. Column names match Matching.gs. Re-run the export to refresh. */ var CLINICIANS = [ {"ID": "C01", "ConsultLink": "", "Photo": "https://nyccounseling.com/wp-content/uploads/2020/01/NYC-Therapists-justeana.jpg", "Clinician": "Justena Kavanagh", "License": "LCSW-R, QS, SiFi", "States": "NY,FL", "Network": "OON", "Modality": "Both", "Rate Standard": "600", "Rate Floor": "500", "Floor Needs Approval": "No", "Individual": "Yes", "Couples": "Yes", "Families": "Yes", "Kids/Teens": "No", "Languages": "Yes (language not specified)", "Exclusions": "", "Anxiety": "Yes", "Depression": "Yes", "Trauma": "Yes", "OCD": "Open to it", "LGBTQ+": "Yes", "Cultural Issues": "Yes", "Eating Disorders": "Open to it", "Grief": "Yes", "Substance Use": "Yes", "InOffice Mon": "", "InOffice Tue": "", "InOffice Wed": "", "InOffice Thu": "", "InOffice Fri": "", "InOffice Sat": "", "InOffice Sun": "", "Specialty Confidence": "High", "InOffice Notes": "In-office available per client request.", "Blurb": "Justena founded NYC Counseling and still keeps a caseload. The work covers adults, couples and families, with anxiety, depression, trauma and grief coming up most often. Licensed in both New York and Florida.", "Credential": "LCSW-R"}, {"ID": "C03", "ConsultLink": "", "Photo": "https://nyccounseling.com/wp-content/uploads/2020/02/Allyson-Galishoff-LCSW-NYC-Counseling.png", "Clinician": "Allyson Galishoff", "License": "LCSW", "States": "NY,FL", "Network": "OON", "Modality": "Virtual", "Rate Standard": "350", "Rate Floor": "250", "Floor Needs Approval": "No", "Individual": "Yes", "Couples": "Yes", "Families": "Open to it", "Kids/Teens": "No", "Languages": "", "Exclusions": "Actively suicidal clients; addiction (unless last resort); self-diagnosed borderline", "Anxiety": "Yes", "Depression": "Yes", "Trauma": "Yes", "OCD": "Open to it", "LGBTQ+": "Open to it", "Cultural Issues": "Yes", "Eating Disorders": "No", "Grief": "Specialty", "Substance Use": "No", "InOffice Mon": "", "InOffice Tue": "", "InOffice Wed": "", "InOffice Thu": "", "InOffice Fri": "", "InOffice Sat": "", "InOffice Sun": "", "Specialty Confidence": "High", "InOffice Notes": "Virtual only - does not see clients in office.", "Blurb": "Allyson sits with the things people often can't talk about anywhere else: serious and chronic illness, grief and bereavement, palliative care. Also good with big life transitions, divorce, and clients in high-pressure jobs. The approach mixes psychodynamic work with CBT. Virtual only, New York and Florida.", "Credential": "LCSW"}, {"ID": "C04", "ConsultLink": "https://nyccounseling.clientsecure.me/request/date?clinicianId=1463245¤tDate=2026-08-01¤tTimeZone=America%2FChicago&preselected=true&preselectedCptCodeIds=55276315&preselectedOfficeIds=26183478", "Photo": "https://nyccounseling.com/wp-content/uploads/2026/05/Sandra-Harris-LMSW-RCSW-NYC-Counseling-e1779289082534-1080x1080.png", "Clinician": "Sandra Harris", "License": "LCSW", "States": "NY,FL", "Network": "OON", "Modality": "Virtual", "Rate Standard": "350", "Rate Floor": "100", "Floor Needs Approval": "No", "Individual": "Yes", "Couples": "Yes", "Families": "Yes", "Kids/Teens": "No", "Languages": "", "Exclusions": "Adults only - no children", "Anxiety": "Yes", "Depression": "Yes", "Trauma": "Yes", "OCD": "Yes", "LGBTQ+": "Yes", "Cultural Issues": "Yes", "Eating Disorders": "Yes", "Grief": "Yes", "Substance Use": "Specialty", "InOffice Mon": "", "InOffice Tue": "", "InOffice Wed": "", "InOffice Thu": "", "InOffice Fri": "", "InOffice Sat": "", "InOffice Sun": "", "Specialty Confidence": "High", "InOffice Notes": "Virtual only - does not see clients in office.", "Blurb": "Sandra is the trauma specialist. Certified in EMDR and in suicide risk assessment, with inpatient experience behind that, so complex cases land well here. Substance use and active addiction are a particular strength. Adults only, virtual, New York and Florida.", "Credential": "LCSW"}, {"ID": "C05", "ConsultLink": "", "Photo": "https://nyccounseling.com/wp-content/uploads/2020/02/Meet-Christine-Morrison-LMHC-NYC-Counseling.png", "Clinician": "Christine Morrison", "License": "LMHC", "States": "NY", "Network": "OON", "Modality": "Virtual", "Rate Standard": "350", "Rate Floor": "250", "Floor Needs Approval": "No", "Individual": "Yes", "Couples": "Specialty", "Families": "Specialty", "Kids/Teens": "Open to it", "Languages": "Yes (language not specified)", "Exclusions": "", "Anxiety": "Yes", "Depression": "Yes", "Trauma": "Yes", "OCD": "Open to it", "LGBTQ+": "Yes", "Cultural Issues": "Specialty", "Eating Disorders": "Open to it", "Grief": "Yes", "Substance Use": "Open to it", "InOffice Mon": "", "InOffice Tue": "", "InOffice Wed": "", "InOffice Thu": "", "InOffice Fri": "", "InOffice Sat": "", "InOffice Sun": "", "Specialty Confidence": "High", "InOffice Notes": "Virtual only - does not see clients in office.", "Blurb": "Christine's niche is women in their 20s to 40s, especially around pregnancy, postpartum and early motherhood. Spent 10 years in tech beforehand, so high achievers and perfectionists are familiar ground. Also strong with expats and anyone struggling to settle into a new country. Virtual, New York.", "Credential": "LMHC"}, {"ID": "C06", "ConsultLink": "https://nyccounseling.clientsecure.me/request/date?clinicianId=1718103¤tDate=2026-08-01¤tTimeZone=America%2FChicago&preselected=true&preselectedCptCodeIds=55276313&preselectedOfficeIds=26183478", "Photo": "https://nyccounseling.com/wp-content/uploads/2024/12/Sabrina-Rothschild-NYC-Counseling-e1734461330914.jpeg", "Clinician": "Sabrina Rothschild", "License": "MFT", "States": "NY", "Network": "OON", "Modality": "Virtual", "Rate Standard": "350", "Rate Floor": "100", "Floor Needs Approval": "Yes", "Individual": "Yes", "Couples": "Yes", "Families": "Yes", "Kids/Teens": "Yes", "Languages": "", "Exclusions": "", "Anxiety": "Yes", "Depression": "Yes", "Trauma": "Yes", "OCD": "Yes", "LGBTQ+": "Yes", "Cultural Issues": "Open to it", "Eating Disorders": "Open to it", "Grief": "No", "Substance Use": "Specialty", "InOffice Mon": "", "InOffice Tue": "", "InOffice Wed": "", "InOffice Thu": "", "InOffice Fri": "", "InOffice Sat": "", "InOffice Sun": "", "Specialty Confidence": "High", "InOffice Notes": "Virtual only - does not see clients in office.", "Blurb": "Sabrina is a native New Yorker, direct, and funny with it. A certified peer recovery advocate, so addiction and recovery is the core of the work, including 12-step and moderation management. Also sees couples, including LGBTQ+ and non-monogamous couples, and works with adolescents.", "Credential": "MFT"}, {"ID": "C15", "ConsultLink": "https://nyccounseling.clientsecure.me/request/location?clinicianId=1952893&preselected=true&preselectedCptCodeIds=55276314&preselectedOfficeIds=26183478%2C27630733", "Photo": "https://nyccounseling.com/wp-content/uploads/2020/02/Meet-Samantha-Gellert-Therapist-NYC-Counseling-e1777052193630-559x551.jpg", "Clinician": "Samantha Gellert", "License": "LCSW", "States": "NY", "Network": "OON", "Modality": "Both", "Rate Standard": "350", "Rate Floor": "175", "Floor Needs Approval": "No", "Individual": "Yes", "Couples": "Yes", "Families": "Yes", "Kids/Teens": "Yes", "Languages": "", "Exclusions": "", "Anxiety": "Yes", "Depression": "Yes", "Trauma": "Specialty", "OCD": "Yes", "LGBTQ+": "Yes", "Cultural Issues": "Open to it", "Eating Disorders": "Open to it", "Grief": "Yes", "Substance Use": "Open to it", "InOffice Mon": "", "InOffice Tue": "", "InOffice Wed": "2-7", "InOffice Thu": "", "InOffice Fri": "", "InOffice Sat": "", "InOffice Sun": "", "Specialty Confidence": "High", "InOffice Notes": "In office Wednesdays.", "Blurb": "Samantha works with young adults and couples, and trauma is the specialty. Relationships, whether family or romantic, and neurodivergence support come up a lot. One of the few who sees clients in the office, on Wednesdays.", "Credential": "LCSW"}, {"ID": "C17", "ConsultLink": "https://nyccounseling.clientsecure.me/request/location?clinicianId=2041125&preselected=true&preselectedCptCodeIds=55811353&preselectedOfficeIds=26183478%2C27630733", "Photo": "https://nyccounseling.com/wp-content/uploads/2026/03/Valerie-Herman-MSW-I-NYC-Counseling.png", "Clinician": "Valerie Herman", "License": "MSW-I", "States": "NY,FL", "Network": "OON", "Modality": "Both", "Rate Standard": "350", "Rate Floor": "75", "Floor Needs Approval": "No", "Individual": "Yes", "Couples": "Yes", "Families": "Open to it", "Kids/Teens": "Yes", "Languages": "", "Exclusions": "", "Anxiety": "Yes", "Depression": "Yes", "Trauma": "Yes", "OCD": "Open to it", "LGBTQ+": "Open to it", "Cultural Issues": "Open to it", "Eating Disorders": "Yes", "Grief": "Open to it", "Substance Use": "Open to it", "InOffice Mon": "", "InOffice Tue": "", "InOffice Wed": "9-2", "InOffice Thu": "", "InOffice Fri": "", "InOffice Sat": "", "InOffice Sun": "", "Specialty Confidence": "High", "InOffice Notes": "In office Wednesdays.", "Blurb": "Valerie is the one for children, teens and young adults, and uses play-based work with the younger ones. Anxiety, self-esteem, and helping kids through a separation or divorce are the usual reasons families call. In the office on Wednesdays, licensed in New York and Florida.", "Credential": "MSW-I"}, ]; /* ═══════════════════════════════════════════════════════════════ 2. MATCHER — ported from Matching.gs (two-stage: gates → score) Same WEIGHTS, same reason/flag phrasing. Kept faithful so the web quiz and the Apps Script stay consistent. ═══════════════════════════════════════════════════════════════ */ // inOfficeMatch is deliberately heavy: when a client explicitly asks for an office, the one // clinician who offers it should surface even against a stronger virtual specialty match — the // card shows the specialty gap honestly, and the consult decides. Still a soft score, never a gate. var WEIGHTS = { specialtyMatch:10, networkMatch:8, modalityMatch:5, inOfficeMatch:9, capacityHeadroom:3, rateComfort:2 }; var DISPLAY_SIZE = 2; // the quiz shows "your two matches" function isYes(v){ if(v===true) return true; if(typeof v==='number') return v===1; var s=String(v||'').trim().toLowerCase(); return s==='true'||s==='yes'||s==='y'||s==='x'||s==='1'; } function splitList(v){ if(!v) return []; return String(v).split(/[,;/|]/).map(function(s){return s.trim().toLowerCase();}).filter(Boolean); } function listHas(list,item){ if(!item) return false; return list.indexOf(String(item).trim().toLowerCase())!==-1; } function parseRate(v){ if(v===''||v==null) return null; var n=parseFloat(String(v).replace(/[^0-9.\-]/g,'')); return isNaN(n)?null:n; } function confidenceMultiplier(v){ var s=String(v||'').trim().toLowerCase(); if(s==='high'||s==='h') return 1.0; if(s==='medium'||s==='med'||s==='m') return 0.6; if(s==='low'||s==='l') return 0.3; var n=parseFloat(s); if(!isNaN(n)) return n>1?Math.min(n/5,1):Math.max(0,Math.min(n,1)); return 0.6; } // The Roster grades each specialty/care column as Specialty > Yes > Open to it > No/blank. // Map that to a 0–1 strength used for scoring. (Matching.gs treated cells as boolean; the // live Sheet is richer, so the web scorer reads the grade.) function specialtyValue(v){ var s=String(v||'').trim().toLowerCase(); if(s==='specialty') return 1.0; if(s==='yes') return 0.75; if(s==='open to it') return 0.4; return 0; } // An in-office day cell holds a time range ("2-7"), a block token (ANY/AM/PM/EVE), or Yes when // the clinician is in the office that day; "-"/blank/UNKNOWN means not that day. function hasOfficeDay(v){ var s=String(v||'').trim().toLowerCase(); if(!s||s==='-'||s==='—'||s==='unknown'||s==='no') return false; return /\d/.test(s)||s==='any'||s==='am'||s==='pm'||s==='eve'||s==='yes'; } var OFFICE_DAYS=['InOffice Mon','InOffice Tue','InOffice Wed','InOffice Thu','InOffice Fri','InOffice Sat','InOffice Sun']; function offersOffice(c){ return OFFICE_DAYS.some(function(k){ return hasOfficeDay(c[k]); }); } function modeLabel(c){ var m=String(c['Modality']||'').trim().toLowerCase(); return m==='both'?'Virtual & in-office':m==='in-person'?'In-office':'Virtual'; } function prettyStates(s){ return splitList(s).map(function(x){return x.toUpperCase();}).join(' & '); } /* Stage 1 — hard gates. A failure disqualifies outright. CLINICIANS is already the eligible pool (active therapists with a real profile), so there is no Active/Ready gate here — those filters happen when the Roster is exported. */ function hardGateBlockers(inq,c){ var b=[]; var states=splitList(c['States']); if(inq.state && !listHas(states,inq.state)) b.push('not licensed in '+inq.state); // LEGAL — never softened // Care type: block only on an explicit "No". Yes / Specialty / Open to it all mean they see them. if(inq.careType && String(c[inq.careType]||'').trim().toLowerCase()==='no') b.push('does not see '+inq.careType.toLowerCase()); if(inq.language){ var langs=splitList(c['Languages']); // "Yes (language not specified)" and blank are treated as English-capable. var englishOnly = langs.length===0 || String(c['Languages']||'').toLowerCase().indexOf('not specified')>=0; if(englishOnly){ if(String(inq.language).trim().toLowerCase()!=='english') b.push('no '+inq.language+' listed'); } else if(!listHas(langs,inq.language)) b.push('no '+inq.language+' listed'); } var exclusions=splitList(c['Exclusions']); (inq.concerns||[]).forEach(function(k){ if(listHas(exclusions,k)) b.push('excludes '+k.toLowerCase()); }); var floor=parseRate(c['Rate Floor']); if(inq.affordableRate!=null && floor!=null && inq.affordableRate0){ score+=W.specialtyMatch*sv*conf; matched.push(k); } }); if(matched.length) reasons.push('specialties: '+matched.join(', ')); if(inq.network){ var net=splitList(c['Network']); if(listHas(net,inq.network)||listHas(net,'both')){ score+=W.networkMatch; reasons.push('network: '+inq.network); } } // Delivery modality (EMDR/CBT) isn't a structured Roster column, so there is no modality term. if(inq.wantsInOffice){ if(offersOffice(c)){ score+=W.inOfficeMatch; reasons.push('offers in-office'); if(String(c['InOffice Notes']||'').trim()) flags.push('in-office note: '+String(c['InOffice Notes']).trim()); } else flags.push('wants in-office, none available in '+(inq.state||'your state')); } var standard=parseRate(c['Rate Standard']); if(inq.affordableRate!=null && standard!=null){ if(inq.affordableRate>=standard){ score+=W.rateComfort; reasons.push('affords standard rate'); } else flags.push(isYes(c['Floor Needs Approval'])?'sliding scale — NEEDS APPROVAL':'sliding scale — within clinician discretion'); } score+=W.capacityHeadroom; return { score:score, reasons:reasons, flags:flags }; } function rankClinicians(inq,list){ var all=list||CLINICIANS, eligible=[], nearMisses=[]; all.forEach(function(c){ var b=hardGateBlockers(inq,c); if(b.length===0){ var s=softScore(inq,c); eligible.push({ id:c['ID'], name:c['Clinician'], credential:c['Credential'], states:c['States'], score:s.score, reasons:s.reasons, flags:s.flags, blurb:String(c['Blurb']||'').trim(), tags:concernTags(c), why:whyLine(inq,c,s), detail:c }); } else if(b.length===1){ nearMisses.push({ id:c['ID'], name:c['Clinician'], blockedBy:b[0] }); } }); eligible.sort(function(a,b){ return b.score!==a.score ? b.score-a.score : String(a.name).localeCompare(String(b.name)); }); // Does anyone in the eligible pool (not just the shown two) offer in-office? Drives the // "nobody sees you in an office in your state" banner, which must be true of the whole pool. var anyInOffice=eligible.some(function(c){ return offersOffice(c.detail); }); return { shortlist:eligible.slice(0,DISPLAY_SIZE), eligibleCount:eligible.length, consideredCount:all.length, nearMisses:nearMisses, anyInOffice:anyInOffice }; } /* Up to three concern tags for the card — the clinician's strongest specialties first (Specialty before Yes), drawn from the Roster's real specialty columns. */ function concernTags(c){ var pool=['Anxiety','Depression','Trauma','OCD','Grief','Substance Use','LGBTQ+','Cultural Issues','Eating Disorders']; var strong=pool.filter(function(k){ return specialtyValue(c[k])>=1.0; }); // Specialty var yes=pool.filter(function(k){ return specialtyValue(c[k])===0.75; }); // Yes return strong.concat(yes).slice(0,3); } /* A short, human "why" line for the card — client-facing, no jargon. */ function whyLine(inq,c,s){ // Keep concern names as the Roster spells them (Anxiety, OCD) — don't lowercase acronyms. var hits=(inq.concerns||[]).filter(function(k){ return specialtyValue(c[k])>0; }); var parts=[]; if(hits.length) parts.push(hits.join(' and ')+(hits.length>1?' are both':' is')+' core to '+first(c.Clinician)+"'s work"); if(inq.careType && String(c[inq.careType]||'').trim().toLowerCase()!=='no') parts.push('sees '+careWord(inq.careType)); if(inq.wantsInOffice && String(c['InOffice Notes']||'')) parts.push('and offers in-person sessions'); else if(inq.preferredTimes&&inq.preferredTimes.length&&inq.preferredTimes[0]!=='Any') parts.push('and has availability in the '+inq.preferredTimes.join(' and ').toLowerCase()); var line=parts.join(', '); return line.charAt(0).toUpperCase()+line.slice(1)+'.'; } function first(name){ return String(name).split(' ')[0]; } function careWord(ct){ return ({Individual:'adults one-to-one',Couples:'couples',Families:'families','Kids/Teens':'kids and teens'})[ct]||'clients'; } /* ═══════════════════════════════════════════════════════════════ 3. ANSWER → INQUIRY (maps quiz chips onto the Matching.gs shape) ═══════════════════════════════════════════════════════════════ */ var STATE_MAP={ 'New York':'NY','New Jersey':'NJ','Florida':'FL','South Carolina':'SC','Elsewhere':'' }; var CARE_MAP={ 'Just me':'Individual','Me & my partner':'Couples','Our family':'Families','My child or teen':'Kids/Teens' }; // NYCCMatcher concern label → Roster specialty column. Every quiz option now maps to one of the // Roster's 9 tracked specialties (vocabulary aligned 2026-08-20); only "Something else" / // "Skip this" are intentionally unmapped escape hatches. var CONCERN_MAP={ 'Anxiety':'Anxiety','Depression':'Depression','Trauma':'Trauma','OCD':'OCD', 'Grief & loss':'Grief','Substance use':'Substance Use','LGBTQ+':'LGBTQ+', 'Cultural identity':'Cultural Issues','Eating disorders':'Eating Disorders' }; function buildInquiry(a){ var concerns=[]; if(a.mainConcern && CONCERN_MAP[a.mainConcern]) concerns.push(CONCERN_MAP[a.mainConcern]); (a.secondary||[]).forEach(function(s){ if(CONCERN_MAP[s] && concerns.indexOf(CONCERN_MAP[s])===-1) concerns.push(CONCERN_MAP[s]); }); var pay=a.payment; return { careType: CARE_MAP[a.who]||null, state: STATE_MAP[a.state] !== undefined ? STATE_MAP[a.state] : null, language: a.language||'English', concerns: concerns, network: (pay==='Out of pocket'||pay==='Out-of-network benefits') ? 'OON' : null, modality: null, affordableRate: a.rate || null, wantsInOffice: (a.meet==='Manhattan office' || a.meet==='Miami Beach office'), preferredTimes: a.times||[], _raw:a }; } /* recap line under the results header */ function recapText(a){ var bits=[]; if(a.mainConcern) bits.push(a.mainConcern + ((a.secondary&&a.secondary.length&&a.secondary[0]!=='Skip this')?' + '+a.secondary.filter(function(s){return s!=='Skip this';}).join(' + '):'')); bits.push(({Individual:'adult',Couples:'couple',Families:'family','Kids/Teens':'child/teen'})[CARE_MAP[a.who]]||a.who); if(a.state) bits.push(a.state); if(a.meet) bits.push(a.meet==='Virtually'?'virtual':a.meet.toLowerCase()); if(a.times&&a.times.length) bits.push(a.times.join('/').toLowerCase()); if(a.payment) bits.push(a.payment.toLowerCase()); return bits.join(' · '); } /* ═══════════════════════════════════════════════════════════════ 4. QUIZ QUESTION MODEL ═══════════════════════════════════════════════════════════════ */ var STEPS=[ { key:1, eyebrow:'Step 1 of 3 · about you', h:['A little about ','you'], mut:'Nine short questions. This narrows us to the two people most likely to fit — the consult decides.', questions:[ { id:'who', label:'Who is the therapy for?', type:'single', required:true, options:['Just me','Me & my partner','Our family','My child or teen'] }, { id:'state', label:'Where will you be joining from?', type:'single', required:true, options:['New York','New Jersey','Florida','South Carolina','Elsewhere'] }, { id:'language', label:'Preferred language', type:'select', required:true, options:['English','Spanish','Other'] } ] }, { key:2, eyebrow:'Step 2 of 3 · what brings you here', h:['What would you like ','help with?'], questions:[ { id:'mainConcern', label:'The main thing', type:'single', required:true, options:['Anxiety','Depression','Trauma','OCD','Grief & loss','Substance use','LGBTQ+','Cultural identity','Eating disorders','Something else'] }, { id:'secondary', label:'Anything else on your mind?', opt:true, type:'multi', required:false, options:['Anxiety','Depression','Trauma','OCD','Grief & loss','Substance use','LGBTQ+','Cultural identity','Eating disorders','Skip this'] } ] }, { key:3, eyebrow:'Step 3 of 3 · logistics', h:['The ','practical bits'], questions:[ { id:'meet', label:'How would you like to meet?', type:'single', required:true, options:['Virtually','Manhattan office','Miami Beach office','Either'] }, { id:'times', label:'Days and times that work', type:'multi', required:false, options:['Mornings','Afternoons','Evenings','Any'] }, { id:'payment', label:'How are you planning to pay?', type:'single', required:true, options:['Out of pocket','Out-of-network benefits','Not sure yet'], note:"We're an out-of-network provider, so we don't bill insurance directly. Most clients use out-of-network benefits and some are reimbursed up to 60%." }, { id:'rate', label:'Comfortable per-session range', opt:true, type:'select', required:false, options:['$150','$200','$250','$300','$350+'] } ] } ]; /* ═══════════════════════════════════════════════════════════════ 5. QUIZ CONTROLLER + RENDER ═══════════════════════════════════════════════════════════════ */ var NYCCMatcher=(function(){ var root=NYCC_MOUNT; var state, stepIndex, view, result, activeCard, openPanel, resultsLayout; function open(){ state={ language:'English' }; stepIndex=0; view='quiz'; activeCard=null; openPanel={}; resultsLayout='stacked'; render(); document.body.style.overflow='hidden'; } function setLayout(l){ resultsLayout=l; render(); } function close(){ root.innerHTML=''; document.body.style.overflow=''; } function esc(s){ return String(s==null?'':s).replace(/[&<>"]/g,function(c){return{'&':'&','<':'<','>':'>','"':'"'}[c];}); } /* --- answer helpers --- */ function setSingle(id,val){ state[id]=val; render(); } function toggleMulti(id,val){ var arr=state[id]?state[id].slice():[]; if(val==='Skip this'||val==='Any'){ state[id]=(arr.length===1&&arr[0]===val)?[]:[val]; } else{ arr=arr.filter(function(x){return x!=='Skip this'&&x!=='Any';}); var i=arr.indexOf(val); if(i>=0) arr.splice(i,1); else arr.push(val); state[id]=arr; } render(); } function setSelect(id,val){ state[id]= id==='rate' ? (val?parseInt(val.replace(/[^0-9]/g,''),10):null) : val; render(); } function stepComplete(step){ return step.questions.every(function(q){ return !q.required || (q.type==='multi'?(state[q.id]&&state[q.id].length):state[q.id]); }); } /* --- navigation --- */ function next(){ var s=STEPS[stepIndex]; if(!stepComplete(s)) return; if(stepIndex0){ stepIndex--; render(); } } function editAnswers(){ stepIndex=0; view='quiz'; render(); } function finish(){ result=rankClinicians(buildInquiry(state)); view='results'; activeCard=null; openPanel={}; render(); } /* ─── renderers ─── */ function render(){ if(view==='quiz') return renderQuiz(); if(view==='results') return renderResults(); if(view==='handoff') return renderHandoff(); } function chip(id,val,pressed,multi){ return ''; } function questionHTML(q){ var h='

'+esc(q.label)+(q.opt?' Optional':'')+'

'; if(q.type==='single'){ h+='
'+q.options.map(function(o){return chip(q.id,o,state[q.id]===o,false);}).join('')+'
'; } else if(q.type==='multi'){ h+='
'+q.options.map(function(o){return chip(q.id,o,(state[q.id]||[]).indexOf(o)>=0,true);}).join('')+'
'; } else if(q.type==='select'){ var cur = q.id==='rate' ? (state.rate?('$'+state.rate):'') : (state[q.id]||''); h+='
'; } if(q.note) h+='

'+esc(q.note)+'

'; return h; } function renderQuiz(){ var s=STEPS[stepIndex], pct=Math.round(((stepIndex+1)/STEPS.length)*100), ready=stepComplete(s); root.innerHTML= '
'; } function bar(title){ return '
'+(title||'Find your therapist')+''+ '
'; } /* --- results --- */ function renderResults(){ var list=result.shortlist; if(list.length===0) return renderNoMatch(); var inq=buildInquiry(state); var weak = weakMatchNotes(inq); var side = resultsLayout==='side' && list.length>1; var cards = list.map(function(c,i){return cardHTML(c,i);}).join(''); var cardsWrap = side ? '
'+cards+'
' : cards; var toggle = list.length>1 ? layoutToggle() : ''; root.innerHTML= '
'+ bar('Your two matches')+ '
'+ '

The right fit for you

'+ '

'+esc(recapText(state))+'

'+ toggle+ (weak.length?bannerHTML(weak):'')+ cardsWrap+ '

Both consults are free and 15 minutes. Meet either — or both.

'+ ''+ '
'+ '
'; } // Feature (b): let the client flip between stacked and side-by-side results. function layoutToggle(){ function b(val,label){ return ''; } return '
'+ 'View'+b('stacked','Stacked')+b('side','Side by side')+'
'; } // Read-more tabs: only the two the Roster actually has data for. About = the clinician's // Blurb; Logistics = credential, mode, states, rate, in-office note. No fabricated tabs. function panelContent(c,tab){ var d=c.detail; if(tab==='logistics'){ var out=[c.credential, modeLabel(d), 'licensed in '+prettyStates(d.States)].join(' · ')+ '. Standard rate $'+(d['Rate Standard']||'—')+' per session.'; var note=String(d['InOffice Notes']||'').trim(); if(note && !/virtual only/i.test(note)) out+=' '+note; return out; } return d.Blurb||'—'; } function cardHTML(c,i){ var panelOpen=openPanel[c.id]; var tab=panelOpen||'about'; var live=String(c.detail.ConsultLink||'').trim(); var body= '
'+headshot(c.detail)+'
'+ '

'+esc(c.name)+'

'+ '

'+esc([c.credential,modeLabel(c.detail),prettyStates(c.states)].filter(Boolean).join(' · '))+'

'+ '
'; if(panelOpen){ body+='
'+ 'Inline panel — no new tab, no page change'+ '
'+['about','logistics'].map(function(t){ return ''; }).join('')+'
'+ '

'+esc(panelContent(c,tab))+'

'+ ''+ '
'; } else { body+='

'+esc(c.why)+'

'+ (c.tags.length?'
'+c.tags.map(function(t){return ''+esc(t)+'';}).join('')+'
':''); } body+= c.flags.filter(clientSafeFlag).map(function(f){return '

'+esc(prettyFlag(f))+'

';}).join(''); // Book: live clinicians go straight to their real SimplePractice consult page (new tab); // the four not yet set up route to a handoff screen that explains and offers call/text. var bookBtn = live ? '
Book a free consult with me' : ''; body+='
'+ (panelOpen?'':'')+ bookBtn+ '
'; if(!live) body+='

Online consult booking with '+esc(first(c.name))+' is being set up — you can still request one.

'; return '
'+body+'
'; } // Only surface flags a client should see; hide internal ops flags. function clientSafeFlag(f){ return /in-office note|no matching day|none available/.test(f); } function prettyFlag(f){ if(f.indexOf('in-office note:')===0) return f.replace('in-office note:','In person:').trim(); if(f.indexOf('none available')>=0||f.indexOf('no matching day')>=0) return 'Virtual only for your location.'; return f; } function headshot(c){ var photo=c&&String(c.Photo||'').trim(); return photo ? '' : ''; } /* weak-match banner: the two things worth saying before a price */ function weakMatchNotes(inq){ var notes=[]; if(inq.network==='OON' || inq._raw.payment==='Not sure yet'){ notes.push("We don't accept Medicaid, Medicare, or in-network benefits from any insurer. If your plan has out-of-network benefits we can help you use them — we partner with Thrizer for that billing."); } // True only when NOBODY in the eligible pool offers an office in the client's state. if(inq.wantsInOffice && !result.anyInOffice){ notes.push('Nobody on the team sees clients in an office in your state, so these two are virtual.'); } return notes; } function bannerHTML(notes){ return ''; } /* no eligible clinician — state not covered / everyone gated out */ function renderNoMatch(){ var st=state.state||'your area'; root.innerHTML= '
'; } /* --- handoff to SimplePractice --- */ function handoff(id){ activeCard=result.shortlist.filter(function(c){return c.id===id;})[0]; view='handoff'; render(); } // Only the four clinicians whose 15-min consult isn't live in SimplePractice yet reach this. // Live clinicians link straight out to their real booking page from the card. function renderHandoff(){ var c=activeCard; root.innerHTML= '
'; } function backToResults(){ view='results'; render(); } function tab(id,t){ if(t===null) delete openPanel[id]; else openPanel[id]=t; render(); } return { open:open, close:close, next:next, back:back, setSingle:setSingle, toggleMulti:toggleMulti, setSelect:setSelect, editAnswers:editAnswers, tab:tab, handoff:handoff, backToResults:backToResults, setLayout:setLayout }; })(); window.NYCCMatcher = NYCCMatcher; window.NYCCMatcher.clinicians = CLINICIANS; window.NYCCMatcher.rank = rankClinicians; function nyccBind(){ var els=[].slice.call(document.querySelectorAll(CONFIG.triggerSelector)); if(CONFIG.triggerText && CONFIG.triggerText.length){ [].forEach.call(document.querySelectorAll('a,button'),function(el){ if(CONFIG.triggerText.indexOf((el.textContent||'').trim())>=0) els.push(el); }); } els.forEach(function(el){ if(el.getAttribute('data-nycc-bound')) return; el.setAttribute('data-nycc-bound','1'); el.addEventListener('click',function(e){ e.preventDefault(); NYCCMatcher.open(); }); }); } if(document.readyState!=='loading') nyccBind(); else document.addEventListener('DOMContentLoaded',nyccBind); })();