vendor: 1,166 bytes, line 1
1(function(){const s=document.createElement("link").relList;if(s&&s.supports&&s.supports("modulepreload"))return;for(const p of document.querySelectorAll('link[rel="modulepreload"]'))d(p);new MutationObserver(p=>{for(const h of p)if(h.type==="childList")for(const f of h.addedNodes)f.tagName==="LINK"&&f.rel==="modulepreload"&&d(f)}).observe(document,{childList:!0,subtree:!0});function l(p){const h={};return p.integrity&&(h.integrity=p.integrity),p.referrerPolicy&&(h.referrerPolicy=p.referrerPolicy),p.crossOrigin==="use-credentials"?h.credentials="include":p.crossOrigin==="anonymous"?h.credentials="omit":h.credentials="same-origin",h}function d(p){if(p.ep)return;p.ep=!0;const h=l(p);fetch(p.href,h)}})();const Bf=`<!doctype html><html lang="en"><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><meta name="robots" content="noindex"><meta http-equiv="Content-Security-Policy" content="default-src 'self' data: https://vibe.filesafe.space; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline'; connect-src 'none'; form-action 'none'"><title>Evidence MD | New Patient Lead Campaign | Review v2</title><style>
1@font-face{font-family:F;src:url(https://vibe.filesafe.space/1788673117057487405/assets/202d580b-d31f-4226-9a07-e94b365d8889.ttf)}@font-face{font-family:N;src:url(https://vibe.filesafe.space/1788673117057487405/assets/63b781f3-c521-4515-aa6a-1248f5b55f00.ttf)}@font-face{font-family:M;src:url(https://vibe.filesafe.space/1788673117057487405/assets/325651c6-cfea-4474-98e6-425318514a53.ttf)}:root{--ink:#193377;--paper:#F3EDE1;--bond:#FBF8F1;--line:#c8cdd6}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font:21px/1.48 N,Georgia,serif}a{color:inherit;text-underline-offset:5px}button,.button{cursor:pointer;display:inline-block;background:var(--ink);color:var(--bond);border:1px solid var(--ink);padding:14px 23px;font:13px/1.5 M,monospace;text-decoration:none}button:hover,.button:hover{background:#304c8d}button:focus-visible,a:focus-visible,input:focus-visible{outline:3px solid #607dcc;outline-offset:4px}h1,h2,h3,p{margin-top:0}h1,h2,h3{font-family:F,Georgia,serif;font-weight:500;line-height:1.1}h1{font-size:clamp(46px,6vw,88px)}h2{font-size:clamp(34px,4vw,60px)}h3{font-size:30px}.mono,.eyebrow{font:12px/1.6 M,monospace;letter-spacing:.08em;text-transform:uppercase}.wrap{max-width:1360px;margin:auto;padding:36px 44px}.top{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--ink);gap:20px;padding-bottom:23px}.top img{width:200px;height:auto}.nav{display:flex;gap:24px;flex-wrap:wrap;font:12px M,monospace}.hero{display:grid;grid-template-columns:1.15fr 1fr;align-items:center;gap:50px;padding:68px 0}.hero p{max-width:560px}.hero-art{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;overflow:hidden}.hero-art img{width:100%;height:370px;object-fit:cover;object-position:center;filter:none}.pill{padding:8px 12px;border:1px solid var(--ink);font:11px M;display:inline-block}.journey{display:grid;grid-template-columns:repeat(4,1fr);border:1px solid var(--ink)}.journey div{padding:24px;border-right:1px solid var(--ink)}.journey div:last-child{border:0}.journey strong{display:block;
1font-family:F;font-size:24px;margin:7px 0}.section{padding:74px 0;border-bottom:1px solid var(--ink);scroll-margin-top:20px}.concept-top{display:grid;grid-template-columns:1fr 1fr;gap:40px}.video-grid{display:grid;grid-template-columns:1.35fr 1fr;gap:28px;align-items:start;margin:25px 0 42px}.player{background:var(--ink);padding:14px;color:var(--bond)}video{display:block;width:100%;max-height:620px;background:var(--ink);object-fit:contain}.player footer{display:flex;justify-content:space-between;gap:12px;padding:16px 6px 4px;font:12px M}.cards{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;gap:14px;padding-bottom:18px}.cards figure{min-width:265px;width:265px;margin:0;scroll-snap-align:start}.cards img{width:100%;display:block}.cards figcaption{font:12px M;padding-top:10px}details{border:1px solid var(--line);background:var(--bond);margin:20px 0}summary{cursor:pointer;padding:20px;font:15px M}.copy-grid{display:grid;grid-template-columns:2fr 1fr 1fr;gap:24px;padding:0 24px 24px}.copy-grid li{margin-bottom:18px;font-size:18px}.copy-grid h4{font:13px M}.copy-grid ol{padding-left:22px}.note{font:15px/1.6 M;color:#41508A}.two{display:grid;grid-template-columns:1fr 1fr;gap:34px}.box{border:1px solid var(--ink);padding:30px;background:var(--bond)}.offer-number{font:96px/1 F}.foot{padding:40px 0;font:13px/1.8 M}.phone{max-width:450px;margin:auto;background:white;color:#1c2734;border:1px solid #b7bfca;font:16px/1.5 system-ui;border-radius:0;overflow:hidden}.phone header{padding:18px;border-bottom:1px solid #ddd;font-weight:600}.phone .body{padding:25px}.phone h2{font:30px/1.15 system-ui;font-weight:700}.phone h3{font:22px system-ui}.phone .blue{background:#0866ff;color:white;border:0;font:16px system-ui;width:100%;border-radius:5px}.phone label{display:block;margin:16px 0 7px}.phone input:not([type=checkbox]){width:100%;font:16px system-ui;padding:13px;border:1px solid #abb4c0;border-radius:4px;background:#f6f7fa;color:#536172}.phone input[type=checkbox]{width:20px;height:20px;margin:0 10px 0 0;flex-shrink:0}.phone .consent{display:flex;align-items:start;font:13px/1.5 system-ui}.phone .fine{font:13px/1.55 system-ui}.steps{display:flex;gap:5px;margin:24px 0}.steps button{padding:10px;font-size:11px;flex:1}.hidden{display:none!important}.thumb{width:100%;display:block}.small{font-size:16px}.statics{display:flex;gap:15px;flex-wrap:wrap}.statics a{font:13px M}.support-hero{display:grid;grid-template-columns:1fr 1fr;gap:35px;align-items:center;padding:65px 0}.support-hero img{width:100%}.treatments{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}.treatments img{width:100%;aspect-ratio:1.33;object-fit:cover}.treatments h3{font-size:27px;margin:20px 0 10px}.team-pair{display:grid;grid-template-columns:1fr 1fr;gap:20px}.team-pair img{width:100%;aspect-ratio:1;object-fit:cover}dialog{max-width:560px;padding:32px;border:1px solid var(--ink);color:var(--ink);background:var(--bond)}dialog::backdrop{background:#19337788} @media(max-width:750px){.wrap{padding:24px 20px}.top{align-items:flex-start}.top img{width:155px}.nav{font-size:10px;gap:13px}.hero,.support-hero,.two,.concept-top,.video-grid{grid-template-columns:1fr;gap:25px}.hero{padding:43px 0}.hero-art img{height:230px}.journey{grid-template-columns:1fr 1fr}.journey div{padding:18px;border-bottom:1px solid var(--ink)}.journey div:nth-child(2){border-right:0}.section{padding:45px 0}.copy-grid{grid-template-columns:1fr}.cards figure{min-width:285px;width:285px}video{max-height:610px}.box{padding:23px}.treatments{grid-template-columns:1fr}.offer-number{font-size:80px}.phone .body{padding:20px}.team-pair{gap:12px}} 2.phone{background:var(--paper);color:var(--ink);border:1px solid var(--ink);font:18px/1.45 N,Georgia,serif}.phone header{background:var(--ink);padding:27px 25px 23px;border:0}.phone header img{width:240px;max-width:100%;display:block}
2.phone header span{display:block;margin-top:22px;font:10px/1.5 M;letter-spacing:.07em;color:var(--bond)}.phone h2{font:36px/1.08 F,Georgia,serif;font-weight:500}.phone h3{font:32px/1.1 F,Georgia,serif}.phone .blue{background:var(--ink);color:var(--bond);border:1px solid var(--ink);border-radius:0;font:13px/1.5 M;letter-spacing:.03em;min-height:50px}.phone label:not(.consent){font:12px/1.6 M;margin-top:22px}.phone input:not([type=checkbox]){border:1px solid #627397;border-radius:0;background:var(--bond);color:#41508A;font:16px/1.5 N}.phone input[type=checkbox]{accent-color:var(--ink)}.phone .fine,.phone .consent{font:14px/1.55 N,Georgia,serif}.phone .consent{margin-top:23px}.phone .saved-code{border-top:1px solid var(--ink);border-bottom:1px solid var(--ink);padding:20px 0;margin:24px 0}.phone .saved-code h3{font:28px/1.3 M;margin:8px 0 0}.steps button[aria-pressed=true]{background:var(--paper);color:var(--ink);box-shadow:inset 0 -3px var(--ink)}.offer-options{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px}.offer-options figure{margin:0}.offer-options img{width:100%;display:block}.offer-options figcaption{padding-top:19px;font:12px/1.6 M}.offer-options h3{font-size:25px}.formstep{scroll-margin-top:25px}@media(max-width:750px){.offer-options{grid-template-columns:1fr}.phone h2{font-size:32px}.phone header{padding:24px 20px}.nav{max-width:155px}.top{gap:12px}.steps button{padding:10px 5px;font-size:10px}}.phone:has(.formstep:first-child:not(.hidden)) header{display:none}.phone .formstep:first-child .thumb{width:calc(100% + 50px);max-width:none;margin:-25px -25px 24px}@media(max-width:750px){.phone .formstep:first-child .thumb{width:calc(100% + 40px);margin:-20px -20px 24px}} 3.section[id]{scroll-margin-top:110px}@media(max-width:1024px){.section[id]{scroll-margin-top:90px}}</style><body><div class="wrap"><header class="top"><img src="https://vibe.filesafe.space/1788673117057487405/assets/4976daa8-d696-4410-aa25-8e014e32c873.png" alt="Evidence MD Medicine & Aesthetics"><nav class="nav"><a href="#films">FILMS</a><a href="#04-the-evidence-introduction">COMBINED FILM</a><a href="#offers">OFFER DESIGNS</a><a href="#lead">LEAD FORM</a><a href="#release">QA & RELEASE</a></nav></header><section class="hero"><div><span class="pill">REVIEW DRAFT · 14 SEPTEMBER 2026 · v2</span><p class="eyebrow" style="margin-top:25px">NEW PATIENT · META LEADS</p><h1>Meet Evidence.<br>Make an introduction.</h1><p>Three faster films, a new combined introduction, matching carousels and three fresh offer designs.</p><p><strong>25% off the first treatment.</strong> EVIDENCE25. New patients. Once per customer. Valid 30 days from original signup.</p><a class="button" href="#films">WATCH THE FILMS â</a></div><div class="hero-art"><img src="https://vibe.filesafe.space/1788673117057487405/assets/6e3b7d64-9c0c-40dd-84e9-14e25b3224ff.png" alt="Illustrated Evidence face"><img src="https://vibe.filesafe.space/1788673117057487405/assets/fd97bdd1-964d-4c05-bf73-e7440cbe7094.jpg" alt="IPL treatment illustration"><img src="https://vibe.filesafe.space/1788673117057487405/assets/668389a9-8f8a-437d-a545-87cdc5d6af51.jpg" alt="Dr. Aloysius Fobi"></div></section><div class="journey"><div><span class="eyebrow">01</span><strong>See the ad</strong><span>Film or carousel.</span></div><div><span class="eyebrow">02</span><strong>Get offer</strong><span>Meta Instant Form.</span></div><div><span class="eyebrow">03</span><strong>Save the code</strong><span>Clear offer details.</span></div><div><span class="eyebrow">04</span><strong>Explore Evidence</strong><span>Supporting page preview.</span></div></div><p class="note">Public campaign review. Eight silent MP4 masters. Nothing is installed, published or spending in Meta. The form is an Evidence-branded design preview. Meta controls its installed interface and supported customization.</p><section class="section" id="films"><div class="concept-top"><div><p class="eyebrow">CONCEPT 01 · 15 SECONDS</p><h2>Meet Evidence</h2></div><div><p>Five illustrated faces become a moving introduction. A portrait triptych, rotating focal portrait and five-face lineup move quickly into a clear five-second offer card.</p><p class="note">Silent by design. All message beats are on screen. No patient results or testimonials are represented.</p></div></div><div class="video-grid"><div class="player"><video controls playsinline preload="metadata" poster="https://vibe.filesafe.space/1788673117057487405/assets/d3e6d0ea-f8bc-41dc-af16-6a7b9b418e36.jpg" aria-label="Meet Evidence 4:5 FEED"><source src="https://vibe.filesafe.space/1788673117057487405/assets/76b015fd-f0de-4f30-a153-fb007c14064
3c.mp4" type="video/mp4"></video><footer><span>4:5 FEED · 1080 à 1350</span><a href="https://vibe.filesafe.space/1788673117057487405/assets/76b015fd-f0de-4f30-a153-fb007c14064c.mp4" download>Download MP4</a></footer></div><div class="player"><video controls playsinline preload="metadata" poster="https://vibe.filesafe.space/1788673117057487405/assets/ad000a53-3177-416b-b326-a5909a975a5b.jpg" aria-label="Meet Evidence 9:16 REELS / STORIES"><source src="https://vibe.filesafe.space/1788673117057487405/assets/363d108e-a2e6-4ae7-ae9e-abef9e300a82.mp4" type="video/mp4"></video><footer><span>9:16 REELS / STORIES · 1080 à 1920</span><a href="https://vibe.filesafe.space/1788673117057487405/assets/363d108e-a2e6-4ae7-ae9e-abef9e300a82.mp4" download>Download MP4</a></footer></div></div><h3>The matching carousel</h3><p class="note">Six square cards · 1080 à 1080 PNG · swipe in this order. Use the final terms card in every carousel.</p><div class="cards"><figure><a href="https://vibe.filesafe.space/1788673117057487405/assets/f67e0562-b6ff-4917-a53e-d3c7b07854c0.png" target="_blank"><img src="https://vibe.filesafe.space/1788673117057487405/assets/f67e0562-b6ff-4917-a53e-d3c7b07854c0.png" alt="Card 1: A new patient welcome" loading="lazy"></a><figcaption>01 · A new patient welcome</figcaption></figure><figure><a href="https://vibe.filesafe.space/1788673117057487405/assets/4b85257c-6688-4bce-8c9c-105f55d63aa5.png" target="_blank"><img src="https://vibe.filesafe.space/1788673117057487405/assets/4b85257c-6688-4bce-8c9c-105f55d63aa5.png" alt="Card 2: Based in science" loading="lazy"></a><figcaption>02 · Based in science</figcaption></figure><figure><a href="https://vibe.filesafe.space/1788673117057487405/assets/b8fd6da8-8f8b-4710-b7e3-c54b3e681649.png" target="_blank"><img src="https://vibe.filesafe.space/1788673117057487405/assets/b8fd6da8-8f8b-4710-b7e3-c54b3e681649.png" alt="Card 3: Inspired by innovation" loading="lazy"></a><figcaption>03 · Inspired by innovation</figcaption></figure><figure><a href="https://vibe.filesafe.space/1788673117057487405/assets/8595d635-8ee9-4389-b257-f64832470926.png" target="_blank"><img src="https://vibe.filesafe.space/1788673117057487405/assets/8595d635-8ee9-4389-b257-f64832470926.png" alt="Card 4: Medicine & aesthetics" loading="lazy"></a><figcaption>04 · Medicine & aesthetics</figcaption></figure><figure><a href="https://vibe.filesafe.space/1788673117057487405/assets/385ba094-dd6a-4a89-8d50-3283248072fb.png" target="_blank"><img src="https://vibe.filesafe.space/1788673117057487405/assets/385ba094-dd6a-4a89-8d50-3283248072fb.png" alt="Card 5: Get to know Evidence MD" loading="lazy"></a><figcaption>05 · Get to know Evidence MD</figcaption></figure><figure><a href="https://vibe.filesafe.space/1788673117057487405/assets/c3883c58-d65d-48dc-bd52-0cad83bec552.png" target="_blank"><img src="https://vibe.filesafe.space/1788673117057487405/assets/c3883c58-d65d-48dc-bd52-0cad83bec552.png" alt="Card 6: Offer & terms" loading="lazy"></a><figcaption>06 · Offer & terms</figcaption></figure></div><div class="statics"><a href="https://vibe.filesafe.space/1788673117057487405/assets/5f4862b1-d10a-47bd-9ec1-56e2a57b594b.png" download>Download feed offer still</a><a href="https://vibe.filesafe.space/1788673117057487405/assets/895226a3-1111-4cb1-9fa9-bb7d19933491.png" download>Download vertical offer still</a></div><details><summary>Ad copy: 5 primary texts · 5 headlines · 5 descriptions</summary><div class="copy-grid"><div><h4>PRIMARY</h4><ol><li>Meet Evidence MD Medicine & Aesthetics in Portland. Get 25% off your first treatment. Open the form to get the offer. New patients only. Once per customer. Valid for 30 days from the original signup. EVIDENCE25.</li><li>A new patient welcome from Evidence MD. Get to know our physician-owned Portland clinic and get 25% off your first treatment. New patients only. Once per customer. Valid for 30 days from the original signup. EVIDENCE25.</li><li>Based in science, inspired by innovation. Discover Evidence MD Medicine & Aesthetics in Portland, with 25% off your first treatment. New patients only. Once per customer. Valid for 30 days from the original signup. EVIDENCE25.<
3/li><li>Medicine and aesthetics, with an Evidence MD welcome. New patients can get 25% off their first treatment. Get the offer in this short form. New patients only. Once per customer. Valid for 30 days from the original signup. EVIDENCE25.</li><li>Portland, meet Evidence MD. Our new patient welcome is 25% off the first treatment. Open the form for the offer details. New patients only. Once per customer. Valid for 30 days from the original signup. EVIDENCE25.</li></ol></div><div><h4>HEADLINES</h4><ol><li>25% off your first treatment</li><li>A welcome from Evidence MD</li><li>Meet Evidence MD in Portland</li><li>Get the new patient offer</li><li>New patients: get 25% off</li></ol></div><div><h4>DESCRIPTIONS</h4><ol><li>New patients. Valid for 30 days.</li><li>Once per customer. EVIDENCE25.</li><li>Medicine & aesthetics in Portland.</li><li>Offer details in this short form.</li><li>30 days from original signup.</li></ol></div></div></details></section><section class="section" id="02-treatment-atlas"><div class="concept-top"><div><p class="eyebrow">CONCEPT 02 · 16 SECONDS</p><h2>The Treatment Atlas</h2></div><div><p>An illustrated triptych opens a numbered treatment atlas: IPL Photofacial, Carbon Laser Facial and Laser Hair Removal. Two-second treatment beats and a stronger offer band keep this introduction moving.</p><p class="note">Silent by design. All message beats are on screen. No patient results or testimonials are represented.</p></div></div><div class="video-grid"><div class="player"><video controls playsinline preload="metadata" poster="https://vibe.filesafe.space/1788673117057487405/assets/328ab808-01a5-421d-a28d-adde81990745.jpg" aria-label="The Treatment Atlas 4:5 FEED"><source src="https://vibe.filesafe.space/1788673117057487405/assets/6e4fb085-8076-4982-af9d-9fe2a1cfafb1.mp4" type="video/mp4"></video><footer><span>4:5 FEED · 1080 à 1350</span><a href="https://vibe.filesafe.space/1788673117057487405/assets/6e4fb085-8076-4982-af9d-9fe2a1cfafb1.mp4" download>Download MP4</a></footer></div><div class="player"><video controls playsinline preload="metadata" poster="https://vibe.filesafe.space/1788673117057487405/assets/432c9a90-668b-4cc0-80e0-6ce3d6baf054.jpg" aria-label="The Treatment Atlas 9:16 REELS / STORIES"><source src="https://vibe.filesafe.space/1788673117057487405/assets/ee8fa4ac-ad1f-400c-b192-a92b37bff11c.mp4" type="video/mp4"></video><footer><span>9:16 REELS / STORIES · 1080 à 1920</span><a href="https://vibe.filesafe.space/1788673117057487405/assets/ee8fa4ac-ad1f-400c-b192-a92b37bff11c.mp4" download>Download MP4</a></footer></div></div><h3>The matching carousel</h3><p class="note">Six square cards · 1080 à 1080 PNG · swipe in this order. Use the final terms card in every carousel.</p><div class="cards"><figure><a href="https://vibe.filesafe.space/1788673117057487405/assets/08d42793-1fd7-4520-93f2-7c45ccdf77e5.png" target="_blank"><img src="https://vibe.filesafe.space/1788673117057487405/assets/08d42793-1fd7-4520-93f2-7c45ccdf77e5.png" alt="Card 1: The treatment atlas" loading="lazy"></a><figcaption>01 · The treatment atlas</figcaption></figure><figure><a href="https://vibe.filesafe.space/1788673117057487405/assets/82a5ed0d-c3ff-4037-9328-c4b9fe2cf3ce.png" target="_blank"><img src="https://vibe.filesafe.space/1788673117057487405/assets/82a5ed0d-c3ff-4037-9328-c4b9fe2cf3ce.png" alt="Card 2: IPL Photofacial" loading="lazy"></a><figcaption>02 · IPL Photofacial</figcaption></figure><figure><a href="https://vibe.filesafe.space/1788673117057487405/assets/b5688637-0f2b-40a7-8802-5f4bf9378cad.png" target="_blank"><img src="https://vibe.filesafe.space/1788673117057487405/assets/b5688637-0f2b-40a7-8802-5f4bf9378cad.png" alt="Card 3: Carbon Laser Facial" loading="lazy"></a><figcaption>03 · Carbon Laser Facial</figcaption></figure><figure><a href="https://vibe.filesafe.space/1788673117057487405/assets/6710c31a-8c39-4bfc-8570-ef20308c40d0.png" target="_blank"><img src="https://vibe.filesafe.space/1788673117057487405/assets/6710c31a-8c39-4bfc-8570-ef20308c40d0.png" alt="Card 4: Laser Hair Removal" loading="lazy"></a><figcaption>04 · Laser Hair Removal</figcaption></figure><figure><a href="https://vibe.filesafe.space/1788673117057487405/assets/bc59d9c7-cd1a-4195-8724-9cc7ada81f07.png" target="_blank"><img src="https://vibe.filesafe.space/1788673117057487405/assets/bc59d9c7-cd1a-4195-8724-9cc7ada81f07.png" alt="Card 5: Start with a consultation" loading="lazy"></a><figcaption>05 · Start with a consultation</figcaption></figure><figure><a href="https://vibe.filesafe.space/1788673117057487405/assets/f6c087e2-8c2a-4c9f-bbce-281575bcdd1c.png" target="_blank"><img src="https://vibe.filesafe.space/1788673117057487405/assets/f6c087e2-8c2a-4c9f-bbce-281575bcdd1c.png" alt="Card 6: Offer & terms" loading="lazy"></a><figcaption>06 · Offer & terms</figcaption></figure></div><div class="statics"><a href="https://vibe.filesafe.space/1788673117057487405/assets/e20df3cc-4
3078-4bac-b863-8d8b81b77ef4.png" download>Download feed offer still</a><a href="https://vibe.filesafe.space/1788673117057487405/assets/a284cb62-5b79-40d7-893d-6e9745f8eee2.png" download>Download vertical offer still</a></div><details><summary>Ad copy: 5 primary texts · 5 headlines · 5 descriptions</summary><div class="copy-grid"><div><h4>PRIMARY</h4><ol><li>Explore skin and laser at Evidence MD: IPL Photofacial, Carbon Laser Facial and Laser Hair Removal. New patients get 25% off their first treatment. New patients only. Once per customer. Valid for 30 days from the original signup. EVIDENCE25.</li><li>Get to know the treatment options at Evidence MD Medicine & Aesthetics. Our Portland clinic welcomes new patients with 25% off the first treatment. New patients only. Once per customer. Valid for 30 days from the original signup. EVIDENCE25.</li><li>An introduction to skin and laser at Evidence MD. Explore the options with the clinic and get the 25% first-treatment offer through this short form. New patients only. Once per customer. Valid for 30 days from the original signup. EVIDENCE25.</li><li>IPL Photofacial. Carbon Laser Facial. Laser Hair Removal. Discover Evidence MD in Portland, with 25% off the first treatment for new patients. New patients only. Once per customer. Valid for 30 days from the original signup. EVIDENCE25.</li><li>The treatment atlas, from Evidence MD. Browse a few of our skin and laser services, then get the details of our 25% new patient welcome. New patients only. Once per customer. Valid for 30 days from the original signup. EVIDENCE25.</li></ol></div><div><h4>HEADLINES</h4><ol><li>25% off your first treatment</li><li>Explore skin & laser at Evidence</li><li>Get the new patient offer</li><li>Meet the Evidence treatment atlas</li><li>A 25% welcome to Evidence MD</li></ol></div><div><h4>DESCRIPTIONS</h4><ol><li>New patients. Once per customer.</li><li>Valid 30 days from signup.</li><li>Treatment plan confirmed at consult.</li><li>Offer details inside the form.</li><li>Portland, Oregon. EVIDENCE25.</li></ol></div></div></details></section><section class="section" id="03-people-of-evidence"><div class="concept-top"><div><p class="eyebrow">CONCEPT 03 · 11 SECONDS</p><h2>The People Behind Evidence</h2></div><div><p>Seven team portraits make a quick introduction, with brief physician features and a clinical-team lineup. The sequence ends with a four-second offer hold.</p><p class="note">Silent by design. All message beats are on screen. No patient results or testimonials are represented.</p></div></div><div class="video-grid"><div class="player"><video controls playsinline preload="metadata" poster="https://vibe.filesafe.space/1788673117057487405/assets/00a0fe5f-4522-4916-bfb5-eecc30ccfa62.jpg" aria-label="The People Behind Evidence 4:5 FEED"><source src="https://vibe.filesafe.space/1788673117057487405/assets/9baf910a-aa5d-4229-ac60-b1c73e5c1ef4.mp4" type="video/mp4"></video><footer><span>4:5 FEED · 1080 à 1350</span><a href="https://vibe.filesafe.space/1788673117057487405/assets/9baf910a-aa5d-4229-ac60-b1c73e5c1ef4.mp4" download>Download MP4</a></footer></div><div class="player"><video controls playsinline preload="metadata" poster="https://vibe.filesafe.space/1788673117057487405/assets/c18c26d1-af14-4714-8ec0-6682555a92e1.jpg" aria-label="The People Behind Evidence 9:16 REELS / STORIES"><source src="https://vibe.filesafe.space/1788673117057487405/assets/4ebee110-b2dc-448d-b493-b6686cd3971f.mp4" type="video/mp4"></video><footer><span>9:16 REELS / STORIES · 1080 à 1920</span><a href="https://vibe.filesafe.space/1788673117057487405/assets/4ebee110-b2dc-448d-b493-b6686cd3971f.mp4" download>Download MP4</a></footer></div></div><h3>The matching carousel</h3><p class="note">Six square cards · 1080 à 1080 PNG · swipe in this order. Use the final terms card in every carousel.</p><div class="cards"><figure><a href="https://vibe.filesafe.space/1788673117057487405/assets/bde8acd2-194c-432b-96e9-cfa182ded656.png" target="_blank"><img src="https://vibe.filesafe.space/1788673117057487405/assets/bde8acd2-194c-432b-96e9-cfa182ded656.png" alt="Card 1: The people behind Evidence" loading="lazy"></a><figcaption>01 · The people behind Evidence</figcaption></figure><figure><a href="https://vibe.filesafe.space/1788673117057487405/assets/a74d59f7-980b-4192-95e6-1e1b72bdc0f0.png" target="_blank"><img src="https://vibe.filesafe.space/1788673117057487405/assets/a74d59f7-980b-4192-95e6-1e1b72bdc0f0.png" alt="Card 2: Dr. Aloysius Fobi" loading="lazy"></a><figcaption>02 · Dr. Aloysius Fobi</figcaption></figure><figure><a href="https://vibe.filesafe.space/1788673117057487405/assets/7f7ef9a3-4ab6-44ce-bda4-4c708fcf50c6.png" target="_blank"><img src="https://vibe.filesafe.space/1788673117057487405/assets/7f7ef9a3-4ab6-44ce-bda4-4c708fcf50c6.png" alt="Card 3: Dr. Zareth Irwin" loading="lazy"></a><figcaption>03 · Dr. Zareth Irwin</figcaption></figure><figure><a href="https://vibe.filesafe.space/1788673117057487405/assets/f784709b-3616-4971-9f2c-c41bee765777.png" target="_blank"><img src="https://vibe.filesafe.space/1788673117057487405/assets/f784709b-3616-4971-9f2c-c41bee765777.png" alt="Card 4: Hannah, Leslie & Becky" loading="lazy"></a><figcaption>04 · Hannah, Leslie & Becky</figcaption></figure><figure><a href="https://vibe.filesafe.space/1788673117057487405/assets/fff736e5-3c38-48db-9718-7f07de1d853b.png" target="_blank"><img src="https://vibe.filesafe.space/1788673117057487405/assets/fff736e5-3c38-48db-9718-7f07de1d853b.png" alt="Card 5: Vanessa & Phaedra" loading="lazy"></a><figcaption>05 · Vanessa & Phaedra</figcaption></figure><figure><a href="https://vibe.filesafe.space/1788673117057487405/assets/5e94a2a9-3790-43b4-be02-7bc1a92d53be.png" target="_blank"><img src="https://vibe.filesafe.space/1788673117057487405/assets/5e94a2a9-3790-43b4-be02-7bc1a92d53be.png" alt="Card 6: Offer & terms" loading="lazy"></a><figcaption>06 · Offer & terms</figcaption></figure></div><div class="statics"><a href="https://vibe.filesafe.space/1788673117057487405/assets/45f5c261-0d99-447c-ad10-f06edbcc0109.png" download>Download feed offer still</a><a href="https://vibe.filesafe.space/1788673117057487405/assets/91375f21-4a7d-425d-8afe-9fa335a97cb7.png" download>Download vertical offer still</a></div><details><summary>Ad copy: 5 primary texts · 5 headlines · 5 descriptions</summary><div class="copy-grid"><div><h4>PRIMARY</h4><ol><li>Meet the people behind Evidence MD Medicine & Aesthetics. Our physician-owned Portland clinic welcomes new patients with 25% off the first treatment. New patients only. Once per customer. Valid for 30 days from the original signup. EVIDENCE25.<
3/li><li>Dr. Aloysius Fobi and Dr. Zareth Irwin lead Evidence MD in Portland. Get to know the team and get 25% off your first treatment as a new patient. New patients only. Once per customer. Valid for 30 days from the original signup. EVIDENCE25.</li><li>Based in science. Human in practice. Meet the Evidence MD team and get the details of our 25% first-treatment welcome for new patients. New patients only. Once per customer. Valid for 30 days from the original signup. EVIDENCE25.</li><li>A new patient welcome from the team at Evidence MD. Get 25% off your first treatment and explore a physician-owned clinic in Portland. New patients only. Once per customer. Valid for 30 days from the original signup. EVIDENCE25.</li><li>The people make the introduction. The offer makes a welcome: 25% off the first treatment for new patients at Evidence MD Medicine & Aesthetics. New patients only. Once per customer. Valid for 30 days from the original signup. EVIDENCE25.</li></ol></div><div><h4>HEADLINES</h4><ol><li>Meet the team. Get 25% off.</li><li>25% off your first treatment</li><li>A welcome from the Evidence team</li><li>Physician-owned in Portland</li><li>Get the new patient offer</li></ol></div><div><h4>DESCRIPTIONS</h4><ol><li>New patients. Once per customer.</li><li>EVIDENCE25. Valid for 30 days.</li><li>30 days from original signup.</li><li>Meet Evidence MD in Portland.</li><li>Offer details in this short form.</li></ol></div></div></details></section><section class="section" id="04-the-evidence-introduction"><div class="concept-top"><div><p class="eyebrow">CONCEPT 04 · 24 SECONDS</p><h2>The Evidence Introduction</h2></div><div><p>One complete introduction: the illustrated welcome, skin and laser treatments, then the people behind Evidence. A single five-second offer card closes the film.</p><p class="note">Silent by design. All message beats are on screen. No patient results or testimonials are represented.</p></div></div><div class="video-grid"><div class="player"><video controls playsinline preload="metadata" poster="https://vibe.filesafe.space/1788673117057487405/assets/4a05fbe8-c7c1-47fc-8692-4ce6774f1539.jpg" aria-label="The Evidence Introduction 4:5 FEED"><source src="https://vibe.filesafe.space/1788673117057487405/assets/878125f4-35e1-4905-977e-fe5218896409.mp4" type="video/mp4"></video><footer><span>4:5 FEED · 1080 à 1350</span><a href="https://vibe.filesafe.space/1788673117057487405/assets/878125f4-35e1-4905-977e-fe5218896409.mp4" download>Download MP4</a></footer></div><div class="player"><video controls playsinline preload="metadata" poster="https://vibe.filesafe.space/1788673117057487405/assets/4d00c5f9-0f54-411f-a809-0204e7f59292.jpg" aria-label="The Evidence Introduction 9:16 REELS / STORIES"><source src="https://vibe.filesafe.space/1788673117057487405/assets/782b0407-e236-43b6-87dc-8ce2095723a0.mp4" type="video/mp4"></video><footer><span>9:16 REELS / STORIES · 1080 à 1920</span><a href="https://vibe.filesafe.space/1788673117057487405/assets/782b0407-e236-43b6-87dc-8ce2095723a0.mp4" download>Download MP4</a></footer></div></div><details><summary>Ad copy: 5 primary texts · 5 headlines · 5 descriptions</summary><div class="copy-grid"><div><h4>PRIMARY</h4><ol><li>Meet Evidence MD in Portland. Get to know the clinic, explore skin and laser, and meet the people behind the care. Get 25% off your first treatment. New patients only. Once per customer. Valid for 30 days from the original signup. EVIDENCE25.</li><li>A welcome from Evidence MD: medicine, aesthetics and the people behind both. New patients can get 25% off their first treatment. New patients only. Once per customer. Valid for 30 days from the original signup. EVIDENCE25.</li><li>Based in science, inspired by innovation. Explore Evidence MD Medicine & Aesthetics in Portland and get the 25% first-treatment offer. New patients only. Once per customer. Valid for 30 days from the original signup. EVIDENCE25.</li><li>An introduction to Evidence MD. Discover the clinic, its skin and laser services, and its physician-owned team. Open the form for 25% off your first treatment. New patients only. Once per customer. Valid for 30 days from the original signup. EVIDENCE25.<
3/li><li>Portland, get to know Evidence MD. Our new patient welcome is 25% off the first treatment. The clinic, treatments and team are all here. New patients only. Once per customer. Valid for 30 days from the original signup. EVIDENCE25.</li></ol></div><div><h4>HEADLINES</h4><ol><li>Meet Evidence. Get 25% off.</li><li>25% off your first treatment</li><li>Your introduction to Evidence MD</li><li>A welcome to our Portland clinic</li><li>Get the new patient offer</li></ol></div><div><h4>DESCRIPTIONS</h4><ol><li>New patients. Once per customer.</li><li>EVIDENCE25. Valid for 30 days.</li><li>30 days from original signup.</li><li>Clinic, treatments and people.</li><li>Offer details inside the form.</li></ol></div></div></details></section><section id="lead" class="section"><div class="two"><div><p class="eyebrow">CONFIRMED LEAD DESTINATION</p><h2>A short form.<br>A clear next step.</h2><p>Keep capture inside Facebook or Instagram. Request name and email. Offer texts separately, with an optional phone number and an unchecked choice.</p><p>The code appears on the completion screen, so the visitor can save it without relying on an unverified automated delivery.</p><p class="note">This is a fully Evidence-branded design preview using the clinicâs logo, Ink/Paper colors, type and imagery. Native Meta controls may look different; custom fonts and layout shown here are not promised native options. Email-only submission must remain available. If native optional SMS consent cannot be implemented correctly, the form stays email-only and texts are offered on the clinic-owned consent surface.</p><a class="button" target="_top" href="/review-assets/evidence-md/september-2026/lead-configuration.json">EXACT CONFIGURATION</a><p style="margin-top:20px"><a target="_top" href="/review-assets/evidence-md/september-2026/supporting-page.html">Open the supporting-page preview â</a></p><p class="note">Existing Website Popup workflows are source-specific. A Meta lead does not automatically enter those flows. Routing, original signup date and consent mapping remain a separate setup step.</p></div><div><div class="steps"><button onclick="step(0)">1 INTRO</button><button onclick="step(1)">2 CONTACT</button><button onclick="step(2)">3 REVIEW</button><button onclick="step(3)">4 COMPLETE</button></div><div class="phone"><header><img src="https://vibe.filesafe.space/1788673117057487405/assets/5c8013da-53a0-42ef-96a6-bbc28b9eae5f.png" alt="Evidence MD Medicine & Aesthetics"><span>NEW PATIENT OFFER · PORTLAND</span></header><div class="body"><section class="formstep"><img class="thumb" src="https://vibe.filesafe.space/1788673117057487405/assets/f0118b61-2346-49b4-a15e-ed316ef75ad0.jpg" alt="Evidence welcome artwork"><h2 style="margin-top:23px">25% off your first treatment</h2><p>A new patient welcome from Evidence MD Medicine & Aesthetics in Portland.</p><p>Get the offer details and a short series of reminders by email. Texts are optional.</p><p class="fine">New patients only. Once per customer. Valid for 30 days from the original signup. EVIDENCE25.</p><button class="blue" onclick="step(1)">Continue</button></section><section class="formstep hidden"><h2>Where should we send the details?</h2><p class="fine">Evidence MD will use your contact details to provide this offer and its email reminders. Our service providers help us manage these communications on our behalf. Contact [email protected] with questions about your information.</p><label for="n">Full name</label><input id="n" disabled placeholder="Your name · Meta prefill"><label for="e">Email</label><input id="e" disabled placeholder="Your email · Meta prefill"><label for="p">Mobile number (optional)</label><input id="p" disabled placeholder="Only if you would like texts"><label class="consent"><input id="sms" type="checkbox"><span>I agree to receive recurring automated promotional text messages from Evidence MD at the mobile number I provide. Consent is optional and is not a condition of purchase. Message frequency varies. Message and data rates may apply.</span></label><p class="fine"><a href="#privacy" onclick="privacyDialog.showModal();return false">Privacy Policy</a> · <a href="#terms" onclick="termsDialog.showModal();return false">Terms & Conditions</a></p><button class="blue" onclick="step(2)">Continue to review</button><p class="fine">Preview fields do not collect or send information.</p></section><section class="formstep hidden"><h2>Review your request</h2><p>Receive the new patient offer and its email reminders from Evidence MD.</p>
3<p id="consent-readback">Text messages: not selected.</p><p class="fine">New patients only. Once per customer. Valid 30 days from original signup. Resubmitting does not restart the offer window. Treatment suitability, pricing and any consultation/deposit requirements are confirmed by the clinic.</p><button class="blue" onclick="step(3)">Preview completion</button><p class="fine">This preview does not submit a lead.</p></section><section class="formstep hidden"><p class="fine">COMPLETION SCREEN PREVIEW</p><h2>Your Evidence welcome</h2><div class="saved-code"><span class="eyebrow">YOUR WELCOME CODE</span><h3>EVIDENCE25</h3></div><p>25% off your first treatment.</p><p>New patients only, once per customer, valid for 30 days from your original signup.</p><p>A consultation confirms treatment suitability and pricing. This form does not book an appointment.</p><a class="button" target="_top" href="/review-assets/evidence-md/september-2026/supporting-page.html">View treatment options</a></section></div></div></div></div></section><section id="offers" class="section"><p class="eyebrow">THREE OFFER DESIGNS</p><h2>25% off.<br>A clear welcome.</h2><p>Three new layouts based on the video end card. The botanical reference has been removed from this review.</p><div class="offer-options"><figure><a href="https://vibe.filesafe.space/1788673117057487405/assets/fdac5908-150e-4e05-b341-3c8e14b8bfe8.png" target="_blank"><img src="https://vibe.filesafe.space/1788673117057487405/assets/fdac5908-150e-4e05-b341-3c8e14b8bfe8.png" alt="Ink offer design â 25% off your first treatment"></a><figcaption><h3>01 · Ink</h3><a href="https://vibe.filesafe.space/1788673117057487405/assets/fdac5908-150e-4e05-b341-3c8e14b8bfe8.png" download>Download feed</a> · <a href="https://vibe.filesafe.space/1788673117057487405/assets/333c985a-3246-477e-86e8-ad4373895306.png" download>Download vertical</a></figcaption></figure><figure><a href="https://vibe.filesafe.space/1788673117057487405/assets/8023e21a-520c-41ab-819e-236cae40c54b.png" target="_blank"><img src="https://vibe.filesafe.space/1788673117057487405/assets/8023e21a-520c-41ab-819e-236cae40c54b.png" alt="Paper offer design â 25% off your first treatment"></a><figcaption><h3>02 · Paper</h3><a href="https://vibe.filesafe.space/1788673117057487405/assets/8023e21a-520c-41ab-819e-236cae40c54b.png" download>Download feed</a> · <a href="https://vibe.filesafe.space/1788673117057487405/assets/b7a6e111-16b9-4822-9386-f06d30eb7783.png" download>Download vertical</a></figcaption></figure><figure><a href="https://vibe.filesafe.space/1788673117057487405/assets/7e248732-ba1b-4cf7-994e-04c0fc06034b.png" target="_blank"><img src="https://vibe.filesafe.space/1788673117057487405/assets/7e248732-ba1b-4cf7-994e-04c0fc06034b.png" alt="Portrait offer design â 25% off your first treatment"></a><figcaption><h3>03 · Portrait</h3><a href="https://vibe.filesafe.space/1788673117057487405/assets/7e248732-ba1b-4cf7-994e-04c0fc06034b.png" download>Download feed</a> · <a href="https://vibe.filesafe.space/1788673117057487405/assets/f5b87c3d-0cc7-4cf8-9ae5-9f3004a47ba6.png" download>Download vertical</a></figcaption></figure></div></section><section class="section" id="release"><p class="eyebrow">VERSION & RELEASE</p><h2>Campaign drafts.<br>Ready for review.</h2><div class="two"><div class="box"><h3>What this review covers</h3><p>Four video concepts, each in feed and vertical format. Three matching six-card carousels. Three new offer designs in feed and vertical. Five primary texts, headlines and descriptions per video concept. Instant Form copy/configuration and a responsive supporting-page preview.</p><p><a target="_top" href="/review-assets/evidence-md/september-2026/ad-copy.md">All ad copy</a></p></div><div class="box"><h3>Before a release</h3><p>Package approval, media rights, budget and targeting, native form/consent controls, lead routing and the public completion destination still need release-stage confirmation. The earlier read-only Facebook check found a warning and an Evidence page-access discrepancy. That account state was not rechecked during this creative revision. Exact identity and lead access need confirmation at setup.</p><p>Welcome publication and booking cutover remain with their existing owners. No new account or workflow work is implied.</p></div></div></section><footer class="foot">Evidence MD · EVIDENCE25-LEADS-20260914-v2<br>Public review link · September 14, 2026 · America/Los_Angeles</footer></div><dialog id="privacyDialog"><h3>Privacy Policy</h3><p>The current public policy is available at:</p><a href="https://evidencemdaesthetics.com/legal/privacy-policy" target="_blank" rel="noopener">Evidence MD Privacy Policy</a><p class="small">This review preview sends no information. The native form must display the applicable collection notice and policy link.</p><button onclick="privacyDialog.close()">Close</button></dialog><dialog id="termsDialog"><h3>Terms & Conditions</h3><p><a href="https://evidencemdaesthetics.com/legal/terms-and-conditions" target="_blank" rel="noopener">Evidence MD Terms & Conditions</a></p><button onclick="termsDialog.close()">Close</button></dialog><script>function step(n){document.querySelectorAll('.steps button').forEach((b,i)=>b.setAttribute('aria-pressed',i===n?'true':'false'));document.querySelectorAll('.formstep').forEach((s,i)=>s.classList.toggle('hidden',i!==n));document.getElementById('consent-readback').textContent=document.getElementById('sms').checked?'Text messages: optional consent selected in this preview. A valid mobile number would also be required.':'Text messages: not selected.'}document.querySelectorAll('video').forEach(v=>v.addEventListener('play',()=>document.querySelectorAll('video').forEach(o=>{if(o!==v)o.pause()})));<\/script></body></html>`;function Hf({runtime:i}){const{createElement:s,useRef:l,useEffect:d}=i,p=l(null),h=l(null);d(()=>()=>{var g;return(g=h.current)==null?void 0:g.call(h)},[]);function f(){var C,A;(C=h.current)==null||C.call(h);const g=p.current,b=g==null?void 0:g.contentDocument;if(!(b!=null&&b.body))return;const u=new AbortController,N=()=>{const z=Math.ceil(b.body.getBoundingClientRect().height);z>0&&(g.style.height=z+"px")},v=new ResizeObserver(N);v.observe(b.body),N(),(A=b.fonts)==null||A.ready.then(N),b.querySelectorAll('a[href^="#"]').forEach(z=>{const S=z.getAttribute("href").slice(1),R=b.getElementById(S);R&&z.addEventListener("click",j=>{j.preventDefault(),R.scrollIntoView({behavior:"smooth",block:"start"})},{signal:u.signal})});const w=decodeURIComponent(window.location.hash.slice(1));w&&requestAnimationFrame(()=>{var z;return(z=b.getElementById(w))==null?void 0:z.scrollIntoView({block:"start"})}),h.current=()=>{v.disconnect(),u.abort()}}return s("iframe",{ref:p,title:"Evidence MD campaign review",className:"evidence-review-embed",srcDoc:Bf,onLoad:f,scrolling:"no",style:{display:"block",width:"100%",height:900,border:0,background:"#F3EDE1"}})}const Yf=`<!doctype html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><meta name="robots" content="noindex,nofollow"><title>Evidence MD | Carbon Laser Facial campaign review</title><style>
3@font-face{font-family:F;src:url(https://vibe.filesafe.space/1788673117057487405/assets/202d580b-d31f-4226-9a07-e94b365d8889.ttf)}@font-face{font-family:N;src:url(https://vibe.filesafe.space/1788673117057487405/assets/63b781f3-c521-4515-aa6a-1248f5b55f00.ttf)}@font-face{font-family:M;src:url(https://vibe.filesafe.space/1788673117057487405/assets/325651c6-cfea-4474-98e6-425318514a53.ttf)}:root{--ink:#193377;--paper:#F3EDE1;--bond:#FBF8F1;--line:#c8cdd6}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font:21px/1.48 N,Georgia,serif}a{color:inherit;text-underline-offset:5px}button,.button{cursor:pointer;display:inline-block;background:var(--ink);color:var(--bond);border:1px solid var(--ink);padding:14px 23px;font:13px/1.5 M,monospace;text-decoration:none}button:hover,.button:hover{background:#304c8d}button:focus-visible,a:focus-visible,input:focus-visible{outline:3px solid #607dcc;outline-offset:4px}h1,h2,h3,p{margin-top:0}h1,h2,h3{font-family:F,Georgia,serif;font-weight:500;line-height:1.1}h1{font-size:clamp(46px,6vw,88px)}h2{font-size:clamp(34px,4vw,60px)}h3{font-size:30px}.mono,.eyebrow{font:12px/1.6 M,monospace;letter-spacing:.08em;text-transform:uppercase}.wrap{max-width:1360px;margin:auto;padding:36px 44px}.top{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--ink);gap:20px;padding-bottom:23px}.top img{width:200px;height:auto}.nav{display:flex;gap:24px;flex-wrap:wrap;font:12px M,monospace}.hero{display:grid;grid-template-columns:1.15fr 1fr;align-items:center;gap:50px;padding:68px 0}.hero p{max-width:560px}.hero-art{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;overflow:hidden}.hero-art img{width:100%;height:370px;object-fit:cover;object-position:center;filter:none}.pill{padding:8px 12px;border:1px solid var(--ink);font:11px M;display:inline-block}.journey{display:grid;grid-template-columns:repeat(4,1fr);border:1px solid var(--ink)}.journey div{padding:24px;border-right:1px solid var(--ink)}.journey div:last-child{border:0}.journey strong{display:block;
3font-family:F;font-size:24px;margin:7px 0}.section{padding:74px 0;border-bottom:1px solid var(--ink);scroll-margin-top:20px}.concept-top{display:grid;grid-template-columns:1fr 1fr;gap:40px}.video-grid{display:grid;grid-template-columns:1.35fr 1fr;gap:28px;align-items:start;margin:25px 0 42px}.player{background:var(--ink);padding:14px;color:var(--bond)}video{display:block;width:100%;max-height:620px;background:var(--ink);object-fit:contain}.player footer{display:flex;justify-content:space-between;gap:12px;padding:16px 6px 4px;font:12px M}.cards{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;gap:14px;padding-bottom:18px}.cards figure{min-width:265px;width:265px;margin:0;scroll-snap-align:start}.cards img{width:100%;display:block}.cards figcaption{font:12px M;padding-top:10px}details{border:1px solid var(--line);background:var(--bond);margin:20px 0}summary{cursor:pointer;padding:20px;font:15px M}.copy-grid{display:grid;grid-template-columns:2fr 1fr 1fr;gap:24px;padding:0 24px 24px}.copy-grid li{margin-bottom:18px;font-size:18px}.copy-grid h4{font:13px M}.copy-grid ol{padding-left:22px}.note{font:15px/1.6 M;color:#41508A}.two{display:grid;grid-template-columns:1fr 1fr;gap:34px}.box{border:1px solid var(--ink);padding:30px;background:var(--bond)}.offer-number{font:96px/1 F}.foot{padding:40px 0;font:13px/1.8 M}.phone{max-width:450px;margin:auto;background:white;color:#1c2734;border:1px solid #b7bfca;font:16px/1.5 system-ui;border-radius:0;overflow:hidden}.phone header{padding:18px;border-bottom:1px solid #ddd;font-weight:600}.phone .body{padding:25px}.phone h2{font:30px/1.15 system-ui;font-weight:700}.phone h3{font:22px system-ui}.phone .blue{background:#0866ff;color:white;border:0;font:16px system-ui;width:100%;border-radius:5px}.phone label{display:block;margin:16px 0 7px}.phone input:not([type=checkbox]){width:100%;font:16px system-ui;padding:13px;border:1px solid #abb4c0;border-radius:4px;background:#f6f7fa;color:#536172}.phone input[type=checkbox]{width:20px;height:20px;margin:0 10px 0 0;flex-shrink:0}.phone .consent{display:flex;align-items:start;font:13px/1.5 system-ui}.phone .fine{font:13px/1.55 system-ui}.steps{display:flex;gap:5px;margin:24px 0}.steps button{padding:10px;font-size:11px;flex:1}.hidden{display:none!important}.thumb{width:100%;display:block}.small{font-size:16px}.statics{display:flex;gap:15px;flex-wrap:wrap}.statics a{font:13px M}.support-hero{display:grid;grid-template-columns:1fr 1fr;gap:35px;align-items:center;padding:65px 0}.support-hero img{width:100%}.treatments{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}.treatments img{width:100%;aspect-ratio:1.33;object-fit:cover}.treatments h3{font-size:27px;margin:20px 0 10px}.team-pair{display:grid;grid-template-columns:1fr 1fr;gap:20px}.team-pair img{width:100%;aspect-ratio:1;object-fit:cover}dialog{max-width:560px;padding:32px;border:1px solid var(--ink);color:var(--ink);background:var(--bond)}dialog::backdrop{background:#19337788} @media(max-width:750px){.wrap{padding:24px 20px}.top{align-items:flex-start}.top img{width:155px}.nav{font-size:10px;gap:13px}.hero,.support-hero,.two,.concept-top,.video-grid{grid-template-columns:1fr;gap:25px}.hero{padding:43px 0}.hero-art img{height:230px}.journey{grid-template-columns:1fr 1fr}.journey div{padding:18px;border-bottom:1px solid var(--ink)}.journey div:nth-child(2){border-right:0}.section{padding:45px 0}.copy-grid{grid-template-columns:1fr}.cards figure{min-width:285px;width:285px}video{max-height:610px}.box{padding:23px}.treatments{grid-template-columns:1fr}.offer-number{font-size:80px}.phone .body{padding:20px}.team-pair{gap:12px}} 4.phone{background:var(--paper);color:var(--ink);border:1px solid var(--ink);font:18px/1.45 N,Georgia,serif}.phone header{background:var(--ink);padding:27px 25px 23px;border:0}.phone header img{width:240px;max-width:100%;display:block}
4.phone header span{display:block;margin-top:22px;font:10px/1.5 M;letter-spacing:.07em;color:var(--bond)}.phone h2{font:36px/1.08 F,Georgia,serif;font-weight:500}.phone h3{font:32px/1.1 F,Georgia,serif}.phone .blue{background:var(--ink);color:var(--bond);border:1px solid var(--ink);border-radius:0;font:13px/1.5 M;letter-spacing:.03em;min-height:50px}.phone label:not(.consent){font:12px/1.6 M;margin-top:22px}.phone input:not([type=checkbox]){border:1px solid #627397;border-radius:0;background:var(--bond);color:#41508A;font:16px/1.5 N}.phone input[type=checkbox]{accent-color:var(--ink)}.phone .fine,.phone .consent{font:14px/1.55 N,Georgia,serif}.phone .consent{margin-top:23px}.phone .saved-code{border-top:1px solid var(--ink);border-bottom:1px solid var(--ink);padding:20px 0;margin:24px 0}.phone .saved-code h3{font:28px/1.3 M;margin:8px 0 0}.steps button[aria-pressed=true]{background:var(--paper);color:var(--ink);box-shadow:inset 0 -3px var(--ink)}.offer-options{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px}.offer-options figure{margin:0}.offer-options img{width:100%;display:block}.offer-options figcaption{padding-top:19px;font:12px/1.6 M}.offer-options h3{font-size:25px}.formstep{scroll-margin-top:25px}@media(max-width:750px){.offer-options{grid-template-columns:1fr}.phone h2{font-size:32px}.phone header{padding:24px 20px}.nav{max-width:155px}.top{gap:12px}.steps button{padding:10px 5px;font-size:10px}}.phone:has(.formstep:first-child:not(.hidden)) header{display:none}.phone .formstep:first-child .thumb{width:calc(100% + 50px);max-width:none;margin:-25px -25px 24px}@media(max-width:750px){.phone .formstep:first-child .thumb{width:calc(100% + 40px);margin:-20px -20px 24px}} 5.carbon-hero{grid-template-columns:1.25fr .75fr}.carbon-hero .hero-art{display:block}.carbon-hero .hero-art img{height:490px;width:100%;object-fit:cover}.review-status{padding:23px 28px;border-left:3px solid var(--ink);background:var(--bond);margin:0 0 25px}.review-status p{margin:0;font-size:18px}.offer-facts{display:flex;gap:28px;flex-wrap:wrap;padding:24px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.offer-facts span{font-size:18px}.offer-facts strong{font:34px F;display:block}.ad-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:35px 24px}.ad-grid figure{margin:0}.ad-grid img{width:100%;height:auto;display:block}.ad-grid figcaption{padding-top:16px}.ad-grid h3{font-size:26px;margin:10px 0}.ad-grid .asset-link{font:12px M}.section-intro{max-width:760px}.video-grid{grid-template-columns:1fr 1fr}.player h3{font-size:25px;padding:8px 6px;margin:0 0 15px;color:var(--bond)}.player video{max-height:560px}.copy-grid .copy-id{font:10px M;color:#41508A;display:block;margin-bottom:5px}.page-previews{display:grid;grid-template-columns:1fr 230px;gap:28px;margin:30px 0}.page-previews figure{margin:0}.page-previews img{width:100%;height:460px;object-fit:cover;object-position:top;border:1px solid var(--line);display:block}.page-previews figcaption{font:12px M;padding-top:14px}.calendar-note{margin:30px 0;border:1px solid var(--ink);padding:28px;background:var(--bond)}.calendar-note h3{font-size:28px;margin-bottom:15px}.calendar-note p{margin:0;max-width:800px}.review-checks{padding-left:25px}.review-checks li{margin:18px 0}
5.review-checks strong{font-family:F;font-size:25px}.review-footer p{font-size:16px}.cta-row{display:flex;gap:18px;align-items:center;flex-wrap:wrap;margin:25px 0}.small-link{font-size:17px}.video-caption{font-size:17px;margin-top:18px}.hero h1{font-size:clamp(44px,5.6vw,78px)}@media(max-width:750px){.carbon-hero,.video-grid,.page-previews{grid-template-columns:1fr}.carbon-hero .hero-art img{height:330px}.ad-grid{grid-template-columns:1fr}.page-previews figure:last-child{max-width:270px;margin:auto}.page-previews img{height:360px}.offer-facts{gap:18px}.offer-facts span{flex:1 1 40%;font-size:16px}.offer-facts strong{font-size:30px}.review-status,.calendar-note{padding:22px}.top img{width:145px}.nav{max-width:160px}.player footer{font-size:10px}.hero-art{max-height:420px}.review-status p{font-size:17px}} 6</style></head><body><div class="wrap"><header class="top"><img src="https://assets.cdn.filesafe.space/5HQ8GjJPsW1oPtfkzdyj/media/6aa878d24c0f71e6c6d1b276.png" alt="Evidence MD Medicine & Aesthetics"><nav class="nav" aria-label="Review sections"><a href="#ads">STATIC ADS</a><a href="#films">VIDEOS</a><a href="#landing">LANDING PAGE</a><a href="#review">REVIEW NOTES</a></nav></header><main><section class="hero carbon-hero"><div><span class="pill">FOR REVIEW · SEPTEMBER 14, 2026</span><p class="eyebrow" style="margin-top:25px">CARBON LASER FACIAL · EVIDENCE MD</p><h1>The Carbon offer.<br>Ready for your review.</h1><p>Review the $100 offer, six static ad options, four short video versions and the landing page.</p><div class="cta-row"><a class="button" href="#ads">SEE THE ADS â</a><a class="small-link" href="#landing">Review the landing page</a></div></div><div class="hero-art"><img src="https://assets.cdn.filesafe.space/5HQ8GjJPsW1oPtfkzdyj/media/6aa878d149f830e49b294f01.jpg" alt="Campaign portrait with a dark facial mask"></div></section><div class="review-status"><p><strong>Campaign review.</strong> The landing page is live for review. The ads are not running. Calendar integration is planned before campaign launch.</p></div><div class="offer-facts"><span><strong>$100</strong>One face session</span><span><strong>$200</strong>Regular price</span><span><strong>50%</strong>Savings</span><span><strong>$50 + $50</strong>Deposit + treatment balance</span></div><section class="section" id="ads"><p class="eyebrow">SIX VISUAL DIRECTIONS</p><h2>The static ad options.</h2><p class="section-intro">Each design presents the same Carbon Laser Facial offer. Choose the visual directions you prefer; the numbers below match the copy choices.</p><div class="ad-grid"><figure><a href="https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6aa88eb14c0f71e6c6d33bbd.png" target="_blank" rel="noopener"><img src="https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6aa88eb14c0f71e6c6d33bbd.png" width="1080" height="1350" loading="lazy" alt="The treatment, enlarged: $100 Carbon Laser Facial static ad"></a><figcaption><span class="mono">STATIC 01 · FEED 4:5</span><h3>The treatment, enlarged</h3><a class="asset-link" href="https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6aa88eb14c0f71e6c6d33bbd.png" download>Download PNG</a></figcaption></figure><figure><a href="https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6aa88eb1908c778faa527066.png" target="_blank" rel="noopener"><img src="https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6aa88eb1908c778faa527066.png" width="1080" height="1350" loading="lazy" alt="Carbon meets laser: $100 Carbon Laser Facial static ad"></a><figcaption><span class="mono">STATIC 02 · FEED 4:5</span><h3>Carbon meets laser</h3><a class="asset-link" href="https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6aa88eb1908c778faa527066.png" download>Download PNG</a></figcaption></figure><figure><a href="https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6aa88eb19be8d982010fab49.png" target="_blank" rel="noopener"><img src="https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6aa88eb19be8d982010fab49.png" width="1080" height="1350" loading="lazy" alt="The offer, in focus: $100 Carbon Laser Facial static ad"></a><figcaption><span class="mono">STATIC 03 · FEED 4:5</span><h3>The offer, in focus</h3><a class="asset-link" href="https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6aa88eb19be8d982010fab49.png" download>Download PNG</a></figcaption></figure><figure><a href="https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6aa88eb203687f733ebfafa4.png" target="_blank" rel="noopener"><img src="https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6aa88eb203687f733ebfafa4.png" width="1080" height="1350" loading="lazy" alt="The carbon layer: $100 Carbon Laser Facial static ad"></a><figcaption><span class="mono">STATIC 05 · FEED 4:5</span><h3>The carbon layer</h3><a class="asset-link" href="https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6aa88eb203687f733ebfafa4.png" download>Download PNG</a></figcaption></figure><figure><a href="https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6aa88eb2908c778faa52708a.png" target="_blank" rel="noopener"><img src="https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6aa88eb2908c778faa52708a.png" width="1080" height="1350" loading="lazy" alt="Mask portrait: $100 Carbon Laser Facial static ad"></a><figcaption><span class="mono">STATIC 06 · FEED 4:5</span><h3>Mask portrait</h3><a class="asset-link" href="https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6aa88eb2908c778faa52708a.png" download>Download PNG</a></figcaption></figure><figure><a href="https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6aa88eb34c0f71e6c6d33c02.png" target="_blank" rel="noopener"><img src="https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6aa88eb34c0f71e6c6d33c02.png" width="1080" height="1350" loading="lazy" alt="Surface concept: $100 Carbon Laser Facial static ad"></a><figcaption><span class="mono">STATIC 07 · FEED 4:5</span><h3>Surface concept</h3><a class="asset-link" href="https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6aa88eb34c0f71e6c6d33c02.png" download>Download PNG</a></figcaption></figure></div></section><section class="section" id="films"><p class="eyebrow">CONCEPT 04 · TREATMENT FILM</p><h2>
6The video ad options.</h2><p class="section-intro">A close look at the treatment, followed by the offer. The 12-second and shorter 9-second versions are available for both feed and full-screen placements.</p><p class="note">All four videos are silent, with the message on screen. Play each version below.</p><div class="video-grid"><article class="player"><h3>12 seconds · Feed · 4:5</h3><video id="carbon-ad-12-1350" controls playsinline preload="none" poster="https://assets.cdn.filesafe.space/5HQ8GjJPsW1oPtfkzdyj/media/6aa878d29f5a41333a618367.jpg" aria-label="12-second Carbon Laser Facial Feed · 4:5 ad, silent"><source src="https://assets.cdn.filesafe.space/5HQ8GjJPsW1oPtfkzdyj/media/6aa878d18228b95da39183c5.mp4" type="video/mp4"></video><footer><span>1080 à 1350 · SILENT</span><a href="https://assets.cdn.filesafe.space/5HQ8GjJPsW1oPtfkzdyj/media/6aa878d18228b95da39183c5.mp4" download>Download MP4</a></footer></article><article class="player"><h3>12 seconds · Reels / Stories · 9:16</h3><video id="carbon-ad-12-1920" controls playsinline preload="none" poster="https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6aa88eb349f830e49b2ad9fc.jpg" aria-label="12-second Carbon Laser Facial Reels / Stories · 9:16 ad, silent"><source src="https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6aa88eb14c0f71e6c6d33bb3.mp4" type="video/mp4"></video><footer><span>1080 à 1920 · SILENT</span><a href="https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6aa88eb14c0f71e6c6d33bb3.mp4" download>Download MP4</a></footer></article></div><div class="video-grid"><article class="player"><h3>9 seconds · Feed · 4:5</h3><video id="carbon-ad-9-1350" controls playsinline preload="none" poster="https://assets.cdn.filesafe.space/5HQ8GjJPsW1oPtfkzdyj/media/6aa878d29f5a41333a618367.jpg" aria-label="9-second Carbon Laser Facial Feed · 4:5 ad, silent"><source src="https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6aa88eb19f8b31b6ab12c3a6.mp4" type="video/mp4"></video><footer><span>1080 à 1350 · SILENT</span><a href="https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6aa88eb19f8b31b6ab12c3a6.mp4" download>Download MP4</a></footer></article><article class="player"><h3>9 seconds · Reels / Stories · 9:16</h3><video id="carbon-ad-9-1920" controls playsinline preload="none" poster="https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6aa88eb349f830e49b2ad9fc.jpg" aria-label="9-second Carbon Laser Facial Reels / Stories · 9:16 ad, silent"><source src="https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6aa88eb19f8b31b6ab12c3b1.mp4" type="video/mp4"></video><footer><span>1080 à 1920 · SILENT</span><a href="https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6aa88eb19f8b31b6ab12c3b1.mp4" download>Download MP4</a></footer></article></div></section><section class="section" id="landing"><p class="eyebrow">FROM THE AD TO THE TREATMENT DETAILS</p><h2>The landing page.</h2><p class="section-intro">The page explains what Carbon Laser Facial is, how it helps and how it differs from a traditional facial. Treatment videos, clear pricing and FAQs help visitors understand the offer.</p><div class="calendar-note"><p class="eyebrow">PLANNED BOOKING UPDATE</p><h3>A calendar, directly on the page.</h3><p>The booking calendar will be embedded directly on the landing page before the campaign launches. It is not connected yet; the page currently directs visitors to call the clinic.</p></div><div class="page-previews"><figure><a href="https://evidencemdaesthetics.com/offers/carbon-laser-facial" target="_top"><img src="https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6aa88eb38228b95da3931568.png" alt="Current desktop Carbon Laser Facial landing page" loading="lazy"></a><figcaption>DESKTOP PAGE</figcaption></figure><figure><a href="https://evidencemdaesthetics.com/offers/carbon-laser-facial" target="_top"><img src="https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6aa88eb38228b95da393157c.png" alt="Current mobile Carbon Laser Facial landing page" loading="lazy"></a><figcaption>MOBILE PAGE</figcaption></figure></div><a class="button" href="https://evidencemdaesthetics.com/offers/carbon-laser-facial" target="_top">OPEN THE LIVE LANDING PAGE â</a></section><section class="section" id="copy"><p class="eyebrow">PRIMARY TEXT · HEADLINE · DESCRIPTION</p><h2>The ad-copy choices.</h2><p class="section-intro">Expand a concept to review its copy. Each has five primary texts, five headlines and five descriptions. The starting combination is P1 / H1 / D1. Ad button: Learn More.</p>
6<details><summary>01 · The treatment, enlarged</summary><div class="copy-grid"><div><h4>Primary text</h4><ol><li><span class="copy-id">C01-P1</span>$100 Carbon Laser Facial. Regularly $200âsave 50%. See the treatment up close. One face session. $50 deposit toward the $100 total; $50 remaining. Provider assessment. Results vary.</li><li><span class="copy-id">C01-P2</span>Half the regular price: a $100 Carbon Laser Facial at Evidence MD in Portland. Explore what a visit involves. One face session. $50 deposit toward the $100 total; $50 remaining. Provider assessment. Results vary.</li><li><span class="copy-id">C01-P3</span>Save $100 on a Carbon Laser Facial, regularly $200. A closer look at the mask and laser. One face session. $50 deposit toward the $100 total; $50 remaining. Provider assessment. Results vary.</li><li><span class="copy-id">C01-P4</span>A Carbon Laser Facial for $100, regularly $200. The process and price, explained. One face session. $50 deposit toward the $100 total; $50 remaining. Provider assessment. Results vary.</li><li><span class="copy-id">C01-P5</span>$100 for one Carbon Laser Facial. Regularly $200. See the Carbon offer at Evidence MD. One face session. $50 deposit toward the $100 total; $50 remaining. Provider assessment. Results vary.</li></ol></div><div><h4>Headlines</h4><ol><li><span class="copy-id">C01-H1</span>$100 Carbon Laser Facial</li><li><span class="copy-id">C01-H2</span>50% Off. See the Treatment.</li><li><span class="copy-id">C01-H3</span>$100 Carbon Facial, Up Close</li><li><span class="copy-id">C01-H4</span>Save $100 on a Carbon Facial</li><li><span class="copy-id">C01-H5</span>$100. Explore the Carbon Offer.</li></ol></div><div><h4>Descriptions</h4><ol><li><span class="copy-id">C01-D1</span>Regularly $200. Save 50%.</li><li><span class="copy-id">C01-D2</span>$50 deposit counts toward the total.</li><li><span class="copy-id">C01-D3</span>See the mask and laser explained.</li><li><span class="copy-id">C01-D4</span>Evidence MD · Portland, Oregon.</li><li><span class="copy-id">C01-D5</span>One face session. Results vary.</li></ol></div></div></details><details><summary>02 · Carbon meets laser</summary><div class="copy-grid"><div><h4>Primary text</h4><ol><li><span class="copy-id">C02-P1</span>$100 Carbon Laser Facial, regularly $200. Explore the carbon-mask and laser process. One face session. $50 deposit toward the $100 total; $50 remaining. Provider assessment. Results vary.</li><li><span class="copy-id">C02-P2</span>Save 50% on a Carbon Laser Facial. The offer total is $100, regularly $200. See how the process is described. One face session. $50 deposit toward the $100 total; $50 remaining. Provider assessment. Results vary.</li><li><span class="copy-id">C02-P3</span>Carbon meets laser. The offer is $100, regularly $200. Explore the treatment in plain language. One face session. $50 deposit toward the $100 total; $50 remaining. Provider assessment. Results vary.</li><li><span class="copy-id">C02-P4</span>$100 for a Carbon Laser Facial at Evidence MD. Regularly $200. A simple introduction to the mask and laser. One face session. $50 deposit toward the $100 total; $50 remaining. Provider assessment. Results vary.</li><li><span class="copy-id">C02-P5</span>Half the regular $200 price. A Carbon Laser Facial is $100. Read the process, limits, and offer details. One face session. $50 deposit toward the $100 total; $50 remaining. Provider assessment. Results vary.</li></ol></div><div><h4>Headlines</h4><ol><li><span class="copy-id">C02-H1</span>$100 Carbon Facial, Explained</li><li><span class="copy-id">C02-H2</span>50% Off. See How It Works.</li><li><span class="copy-id">C02-H3</span>$100: Carbon Meets Laser</li><li><span class="copy-id">C02-H4</span>Save $100. Explore the Process.</li><li><span class="copy-id">C02-H5</span>$100 Carbon Laser Facial</li></ol></div><div><h4>Descriptions</h4><ol><li><span class="copy-id">C02-D1</span>See the carbon-mask and laser process.</li><li><span class="copy-id">C02-D2</span>Regularly $200. Save 50%.</li><li><span class="copy-id">C02-D3</span>$50 deposit toward the $100 total.</li><li><span class="copy-id">C02-D4</span>Explore the process and its limits.</li><li><span class="copy-id">C02-D5</span>Provider assessment. Results vary.</li></ol></div></div></details>
6<details><summary>03 · The offer, in focus</summary><div class="copy-grid"><div><h4>Primary text</h4><ol><li><span class="copy-id">C03-P1</span>$100 total for a Carbon Laser Facial, regularly $200. Save 50%. One face session. $50 deposit toward the $100 total; $50 remaining. Provider assessment. Results vary.</li><li><span class="copy-id">C03-P2</span>Save 50% on a Carbon Laser Facial: $100, regularly $200. The deposit is part of the treatment price. One face session. $50 deposit toward the $100 total; $50 remaining. Provider assessment. Results vary.</li><li><span class="copy-id">C03-P3</span>The Carbon offer: $100, regularly $200. Explore one face session at Evidence MD in Portland. One face session. $50 deposit toward the $100 total; $50 remaining. Provider assessment. Results vary.</li><li><span class="copy-id">C03-P4</span>Half the regular price. One Carbon Laser Facial is $100 instead of $200. See the offer details. One face session. $50 deposit toward the $100 total; $50 remaining. Provider assessment. Results vary.</li><li><span class="copy-id">C03-P5</span>$100 for the treatment. Clear from the start. Regularly $200, a Carbon Laser Facial is now 50% off. One face session. $50 deposit toward the $100 total; $50 remaining. Provider assessment. Results vary.</li></ol></div><div><h4>Headlines</h4><ol><li><span class="copy-id">C03-H1</span>$100 Total. Save 50%.</li><li><span class="copy-id">C03-H2</span>$100 Carbon Laser Facial</li><li><span class="copy-id">C03-H3</span>50% Off the Regular $200 Price</li><li><span class="copy-id">C03-H4</span>$100 Total. $50 Deposit.</li><li><span class="copy-id">C03-H5</span>Save $100 on One Face Session</li></ol></div><div><h4>Descriptions</h4><ol><li><span class="copy-id">C03-D1</span>$50 deposit + $50 treatment balance.</li><li><span class="copy-id">C03-D2</span>The deposit is part of the $100 total.</li><li><span class="copy-id">C03-D3</span>One face session, regularly $200.</li><li><span class="copy-id">C03-D4</span>Evidence MD · Portland, Oregon.</li><li><span class="copy-id">C03-D5</span>The treatment and price, explained.</li></ol></div></div></details><details><summary>04 · The revised treatment film</summary><div class="copy-grid"><div><h4>Primary text</h4><ol><li><span class="copy-id">C04-P1</span>$100 Carbon Laser Facial, regularly $200. Watch the mask and laser pass, then explore the offer. One face session. $50 deposit toward the $100 total; $50 remaining. Provider assessment. Results vary.</li><li><span class="copy-id">C04-P2</span>50% off a Carbon Laser Facial. The $100 offer, regularly $200, is shown in this short treatment film. One face session. $50 deposit toward the $100 total; $50 remaining. Provider assessment. Results vary.</li><li><span class="copy-id">C04-P3</span>Save $100 on a Carbon Laser Facial for the face. See the mask, laser, and offer details. Regularly $200; offer $100. One face session. $50 deposit toward the $100 total; $50 remaining. Provider assessment. Results vary.</li><li><span class="copy-id">C04-P4</span>Carbon Laser Facial for $100, regularly $200. A short, captioned look at the treatment. One face session. $50 deposit toward the $100 total; $50 remaining. Provider assessment. Results vary.</li><li><span class="copy-id">C04-P5</span>Half the regular price: $100 for a Carbon Laser Facial. Watch the treatment process, then read the details. Regularly $200. One face session. $50 deposit toward the $100 total; $50 remaining. Provider assessment. Results vary.</li></ol></div><div><h4>Headlines</h4><ol><li><span class="copy-id">C04-H1</span>$100 Carbon Facial. Watch the Film.</li><li><span class="copy-id">C04-H2</span>50% Off. See the Laser Pass.</li><li><span class="copy-id">C04-H3</span>$100 Carbon Laser Facial</li><li><span class="copy-id">C04-H4</span>Save $100. See the Process.</li><li><span class="copy-id">C04-H5</span>$100 Offer, Shown Up Close</li></ol></div><div><h4>Descriptions</h4><ol><li><span class="copy-id">C04-D1</span>Captioned treatment film · no audio.</li><li><span class="copy-id">C04-D2</span>Regularly $200. One face session.</li><li><span class="copy-id">
6C04-D3</span>$50 deposit toward the $100 total.</li><li><span class="copy-id">C04-D4</span>See the process and offer details.</li><li><span class="copy-id">C04-D5</span>Provider assessment. Results vary.</li></ol></div></div></details><details><summary>05 · The carbon layer</summary><div class="copy-grid"><div><h4>Primary text</h4><ol><li><span class="copy-id">C05-P1</span>$100 Carbon Laser Facial. Regularly $200âsave 50%. Explore the mask, laser, and treatment details. One face session. $50 deposit toward the $100 total; $50 remaining. Provider assessment. Results vary.</li><li><span class="copy-id">C05-P2</span>Save 50% on a Carbon Laser Facial at Evidence MD. Offer total $100, regularly $200. Learn what the visit involves. One face session. $50 deposit toward the $100 total; $50 remaining. Provider assessment. Results vary.</li><li><span class="copy-id">C05-P3</span>A Carbon Laser Facial for $100, regularly $200. See the treatment and price in plain language. One face session. $50 deposit toward the $100 total; $50 remaining. Provider assessment. Results vary.</li><li><span class="copy-id">C05-P4</span>Half the regular $200 price. Explore the $100 Carbon Laser Facial offer. One face session. $50 deposit toward the $100 total; $50 remaining. Provider assessment. Results vary.</li><li><span class="copy-id">C05-P5</span>$100 Carbon Laser Facial at Evidence MD in Portland. Regularly $200. Read the process, expectations, and offer details. One face session. $50 deposit toward the $100 total; $50 remaining. Provider assessment. Results vary.</li></ol></div><div><h4>Headlines</h4><ol><li><span class="copy-id">C05-H1</span>$100 Carbon Laser Facial</li><li><span class="copy-id">C05-H2</span>50% Off. Explore the Carbon Offer.</li><li><span class="copy-id">C05-H3</span>$100. Mask Meets Laser.</li><li><span class="copy-id">C05-H4</span>Save $100 on a Carbon Facial</li><li><span class="copy-id">C05-H5</span>$100 for One Face Session</li></ol></div><div><h4>Descriptions</h4><ol><li><span class="copy-id">C05-D1</span>Explore the carbon-mask treatment.</li><li><span class="copy-id">C05-D2</span>Regularly $200. Save 50%.</li><li><span class="copy-id">C05-D3</span>$50 deposit toward the $100 total.</li><li><span class="copy-id">C05-D4</span>Explore the treatment in Portland.</li><li><span class="copy-id">C05-D5</span>One face session. Results vary.</li></ol></div></div></details><details><summary>06 · Mask portrait</summary><div class="copy-grid"><div><h4>Primary text</h4><ol><li><span class="copy-id">C06-P1</span>$100 Carbon Laser Facial, regularly $200. Explore the treatment behind the maskâand the 50% offer. One face session. $50 deposit toward the $100 total; $50 remaining. Provider assessment. Results vary.</li><li><span class="copy-id">C06-P2</span>Half the regular price: $100 for a Carbon Laser Facial. See what a visit involves at Evidence MD. Regularly $200. One face session. $50 deposit toward the $100 total; $50 remaining. Provider assessment. Results vary.</li><li><span class="copy-id">C06-P3</span>Save $100 on a Carbon Laser Facial, regularly $200. The offer total is $100. Explore the process and expectations. One face session. $50 deposit toward the $100 total; $50 remaining. Provider assessment. Results vary.</li><li><span class="copy-id">C06-P4</span>Carbon Laser Facial. $100. Regularly $200, save 50%. Learn about the mask, laser, and what a visit involves. One face session. $50 deposit toward the $100 total; $50 remaining. Provider assessment. Results vary.</li><li><span class="copy-id">C06-P5</span>A $100 Carbon Laser Facial at Evidence MD in Portland, regularly $200. The offer and treatment, clearly explained. One face session. $50 deposit toward the $100 total; $50 remaining. Provider assessment. Results vary.</li></ol></div><div><h4>Headlines</h4><ol><li><span class="copy-id">C06-H1</span>$100 Carbon Laser Facial</li><li><span class="copy-id">C06-H2</span>50% Off. Explore the Treatment.</li><li><span class="copy-id">C06-H3</span>$100. The Carbon Offer.</li><li><span class="copy-id">C06-H4</span>Save $100 on a Carbon Facial</li><li><span class="copy-id">C06-H5</span>$100 for One Face Session</li></ol></div><div><h4>Descriptions</h4><ol><li><span class="copy-id">C06-D1</span>Explore the treatment and offer details.</li><li><span class="copy-id">C06-D2</span>Regularly $200. Save 50%.</li><li><span class="copy-id">C06-D3</span>$50 deposit counts toward treatment.</li><li><span class="copy-id">C06-D4</span>Provider assessment. Results vary.</li><li><span class="copy-id">C06-D5</span>Evidence MD · Portland, Oregon.</li></ol></div></div></details>
6<details><summary>07 · Surface concept</summary><div class="copy-grid"><div><h4>Primary text</h4><ol><li><span class="copy-id">C07-P1</span>$100 Carbon Laser Facial, regularly $200. Explore a different kind of facial and the 50% offer. One face session. $50 deposit toward the $100 total; $50 remaining. Provider assessment. Results vary.</li><li><span class="copy-id">C07-P2</span>Save 50% on a Carbon Laser Facial at Evidence MD. $100, regularly $200. See the carbon-mask and laser process. One face session. $50 deposit toward the $100 total; $50 remaining. Provider assessment. Results vary.</li><li><span class="copy-id">C07-P3</span>Half the regular $200 price. A $100 Carbon Laser Facial, explained with the process and limits in view. One face session. $50 deposit toward the $100 total; $50 remaining. Provider assessment. Results vary.</li><li><span class="copy-id">C07-P4</span>A Carbon Laser Facial for $100. Regularly $200. Learn about the mask, laser pass, and individual assessment. One face session. $50 deposit toward the $100 total; $50 remaining. Provider assessment. Results vary.</li><li><span class="copy-id">C07-P5</span>$100 Carbon Laser Facial in Portland. Regularly $200. Explore the treatment with clear expectations. One face session. $50 deposit toward the $100 total; $50 remaining. Provider assessment. Results vary.</li></ol></div><div><h4>Headlines</h4><ol><li><span class="copy-id">C07-H1</span>$100 Carbon Laser Facial</li><li><span class="copy-id">C07-H2</span>50% Off. Explore the Process.</li><li><span class="copy-id">C07-H3</span>$100: A Different Kind of Facial</li><li><span class="copy-id">C07-H4</span>Save $100. See the Carbon Offer.</li><li><span class="copy-id">C07-H5</span>$100 for One Face Session</li></ol></div><div><h4>Descriptions</h4><ol><li><span class="copy-id">C07-D1</span>See the carbon-mask and laser process.</li><li><span class="copy-id">C07-D2</span>Regularly $200. Save 50%.</li><li><span class="copy-id">C07-D3</span>$50 deposit toward the $100 total.</li><li><span class="copy-id">C07-D4</span>Process, expectations, and price.</li><li><span class="copy-id">C07-D5</span>One face session. Results vary.</li></ol></div></div></details></section><section class="section" id="review"><p class="eyebrow">FOR FOBI & THE EVIDENCE TEAM</p><h2>What to review.</h2><ul class="review-checks"><li><strong>Creative preferences.</strong> Let us know which static options and video versions you prefer.</li><li><strong>Treatment wording.</strong> Review the description, benefits and facial comparison, and flag any clinical changes.</li><li><strong>The offer.</strong> Confirm one face session for $100, regularly $200, with a $50 deposit applied toward the total and a $50 treatment balance.</li></ul><p>The calendar will be connected before campaign launch. This review does not activate ads or booking.</p><div class="cta-row"><a class="button" href="#ads">BACK TO THE ADS â</a><a class="small-link" href="#landing">Landing page & calendar note</a></div></section></main><footer class="foot review-footer"><p>Evidence MD · Carbon Laser Facial campaign review · September 14, 2026</p><p>Prepared for review. Individual treatment results vary.</p></footer></div></body></html>`;function Kf({runtime:i}){const{createElement:s,useRef:l,useEffect:d}=i,p=l(null),h=l(null);d(()=>()=>{var g;return(g=h.current)==null?void 0:g.call(h)},[]);function f(){var C,A;(C=h.current)==null||C.call(h);const g=p.current,b=g==null?void 0:g.contentDocument;if(!g||!(b!=null&&b.body))return;const u=new AbortController,N=()=>{const z=Math.ceil(b.body.getBoundingClientRect().height);z>0&&(g.style.height=z+"px")},v=new ResizeObserver(N);v.observe(b.body),N(),(A=b.fonts)==null||A.ready.then(N),b.querySelectorAll('a[href^="#"]').forEach(z=>{const S=(z.getAttribute("href")||"").slice(1),R=b.getElementById(S);R&&z.addEventListener("click",j=>{j.preventDefault(),R.scrollIntoView({behavior:"smooth",block:"start"})},{signal:u.signal})});const w=decodeURIComponent(window.location.hash.slice(1));w&&requestAnimationFrame(()=>{var z;return(z=b.getElementById(w))==null?void 0:z.scrollIntoView({block:"start"})}),h.current=()=>{v.disconnect(),u.abort()}}return s("iframe",{ref:p,title:"Evidence MD Carbon Laser Facial campaign review",className:"evidence-review-embed",srcDoc:Yf,onLoad:f,scrolling:"no",style:{display:"block",width:"100%",height:900,border:0,background:"#F3EDE1"}})}var $f=Object.create,bm=Object.defineProperty,Gf=Object.getOwnPropertyDescriptor,Qf=Object.getOwnPropertyNames,Zf=Object.getPrototypeOf,Jf=Object.prototype.hasOwnProperty,di=(i,s)=>()=>(s||i((s={exports:{}}
vendor: 12,944 bytes, lines 6-30
6).exports,s),s.exports),Xf=(i,s,l,d)=>{if(s&&typeof s=="object"||typeof s=="function")for(let p of Qf(s))!Jf.call(i,p)&&p!==l&&bm(i,p,{get:()=>s[p],enumerable:!(d=Gf(s,p))||d.enumerable});return i},xe=(i,s,l)=>(l=i!=null?$f(Zf(i)):{},Xf(!i||!i.__esModule?bm(l,"default",{value:i,enumerable:!0}):l,i)),eg=di(i=>{/** 7 * @license React 8 * react.production.min.js 9 * 10 * Copyright (c) Facebook, Inc. and its affiliates. 11 * 12 * This source code is licensed under the MIT license found in the 13 * LICENSE file in the root directory of this source tree. 14 */var s=Symbol.for("react.element"),l=Symbol.for("react.portal"),d=Symbol.for("react.fragment"),p=Symbol.for("react.strict_mode"),h=Symbol.for("react.profiler"),f=Symbol.for("react.provider"),g=Symbol.for("react.context"),b=Symbol.for("react.forward_ref"),u=Symbol.for("react.suspense"),N=Symbol.for("react.memo"),v=Symbol.for("react.lazy"),w=Symbol.iterator;function C(M){return M===null||typeof M!="object"?null:(M=w&&M[w]||M["@@iterator"],typeof M=="function"?M:null)}var A={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},z=Object.assign,S={};function R(M,U,fe){this.props=M,this.context=U,this.refs=S,this.updater=fe||A}R.prototype.isReactComponent={},R.prototype.setState=function(M,U){if(typeof M!="object"&&typeof M!="function"&&M!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,M,U,"setState")},R.prototype.forceUpdate=function(M){this.updater.enqueueForceUpdate(this,M,"forceUpdate")};function j(){}j.prototype=R.prototype;function $(M,U,fe){this.props=M,this.context=U,this.refs=S,this.updater=fe||A}var V=$.prototype=new j;V.constructor=$,z(V,R.prototype),V.isPureReactComponent=!0;var D=Array.isArray,L=Object.prototype.hasOwnProperty,B={current:null},ne={key:!0,ref:!0,__self:!0,__source:!0};function G(M,U,fe){var ve,se={},be=null,Ve=null;if(U!=null)for(ve in U.ref!==void 0&&(Ve=U.ref),U.key!==void 0&&(be=""+U.key),U)L.call(U,ve)&&!ne.hasOwnProperty(ve)&&(se[ve]=U[ve]);var Se=arguments.length-2;if(Se===1)se.children=fe;else if(1<Se){for(var je=Array(Se),gt=0;gt<Se;gt++)je[gt]=arguments[gt+2];se.children=je}if(M&&M.defaultProps)for(ve in Se=M.defaultProps,Se)se[ve]===void 0&&(se[ve]=Se[ve]);return{$$typeof:s,type:M,key:be,ref:Ve,props:se,_owner:B.current}}function ue(M,U){return{$$typeof:s,type:M.type,key:U,ref:M.ref,props:M.props,_owner:M._owner}}function ye(M){return typeof M=="object"&&M!==null&&M.$$typeof===s}function Bt(M){var U={"=":"=0",":":"=2"};return"$"+M.replace(/[=:]/g,function(fe){return U[fe]})}var ct=/\/+/g;function dt(M,U){return typeof M=="object"&&M!==null&&M.key!=null?Bt(""+M.key):U.toString(36)}function K(M,U,fe,ve,se){var be=typeof M;(be==="undefined"||be==="boolean")&&(M=null);var Ve=!1;if(M===null)Ve=!0;else switch(be){case"string":case"number":Ve=!0;break;case"object":switch(M.$$typeof){case s:case l:Ve=!0}}if(Ve)return Ve=M,se=se(Ve),M=ve===""?"."+dt(Ve,0):ve,D(se)?(fe="",M!=null&&(fe=M.replace(ct,"$&/")+"/"),K(se,U,fe,"",function(gt){return gt})):se!=null&&(ye(se)&&(se=ue(se,fe+(!se.key||Ve&&Ve.key===se.key?"":(""+se.key).replace(ct,"$&/")+"/")+M)),U.push(se)),1;if(Ve=0,ve=ve===""?".":ve+":",D(M))for(var Se=0;Se<M.length;Se++){be=M[Se];var je=ve+dt(be,Se);Ve+=K(be,U,fe,je,se)}else if(je=C(M),typeof je=="function")for(M=je.call(M),Se=0;!(be=M.next()).done;)be=be.value,je=ve+dt(be,Se++),Ve+=K(be,U,fe,je,se);else if(be==="object")throw U=String(M),Error("Objects are not valid as a React child (found: "+(U==="[object Object]"?"object with keys {"+Object.keys(M).join(", ")+"}":U)+"). If you meant to render a collection of children, use an array instead.");return Ve}function he(M,U,fe){if(M==null)return M;var ve=[],se=0;return K(M,ve,"","",function(be){return U.call(fe,be,se++)}),ve}function Le(M){if(M._status===-1){var U=M._result;U=U(),U.then(function(fe){(M._status===0||M._status===-1)&&(M._status=1,M._result=fe)},function(fe){(M._status===0||M._status===-1)&&(M._status=2,M._result=fe)}),M._status===-1&&(M._status=0,M._result=U)}if(M._status===1)return M._result.default;throw M._result}var F={current:null},Z={transition:null},re={ReactCurrentDispatcher:F,ReactCurrentBatchConfig:Z,ReactCurrentOwner:B};function oe(){throw Error("act(...) is not supported in production builds of React.")}i.Children={map:he,forEach:function(M,U,fe){he(M,function(){U.apply(this,arguments)},fe)},count:function(M){var U=0;return he(M,function(){U++}),U},toArray:function(M){return he(M,function(U){return U})||[]},only:function(M){if(!ye(M))throw Error("React.Children.only expected to receive a single React element child.");return M}},i.Component=R,i.Fragment=d,i.Profiler=h,i.PureComponent=$,i.StrictMode=p,i.Suspense=u,i.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=re,i.act=oe,i.cloneElement=function(M,U,fe){if(M==null)throw Error("React.cloneElement(...): The argument must be a React element, but you passed "+M+".");var ve=z({},M.props),se=M.key,be=M.ref,Ve=M._owner;if(U!=null){if(U.ref!==void 0&&(be=U.ref,Ve=B.current),U.key!==void 0&&(se=""+U.key),M.type&&M.type.defaultProps)var Se=M.type.defaultProps;for(je in U)L.call(U,je)&&!ne.hasOwnProperty(je)&&(ve[je]=U[je]===void 0&&Se!==void 0?Se[je]:U[je])}var je=arguments.length-2;if(je===1)ve.children=fe;else if(1<je){Se=Array(je);for(var gt=0;gt<je;gt++)Se[gt]=arguments[gt+2];ve.children=Se}return{$$typeof:s,type:M.type,key:se,ref:be,props:ve,_owner:Ve}},i.createContext=function(M){return M={$$typeof:g,_currentValue:M,_currentValue2:M,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null},M.Provider={$$typeof:f,_context:M},M.Consumer=M},i.createElement=G,i.createFactory=function(M){var U=G.bind(null,M);return U.type=M,U},i.createRef=function(){return{current:null}},i.forwardRef=function(M){return{$$typeof:b,render:M}},i.isValidElement=ye,i.lazy=function(M){return{$$typeof:v,_payload:{_status:-1,_result:M},_init:Le}},i.memo=function(M,U){return{$$typeof:N,type:M,compare:U===void 0?null:U}},i.startTransition=function(M){var U=Z.transition;Z.transition={};try{M()}finally{Z.transition=U}},i.unstable_act=oe,i.useCallback=function(M,U){return F.current.useCallback(M,U)},i.useContext=function(M){return F.current.useContext(M)},i.useDebugValue=function(){},i.useDeferredValue=function(M){return F.current.useDeferredValue(M)},i.useEffect=function(M,U){return F.current.useEffect(M,U)},i.useId=function(){return F.current.useId()},i.useImperativeHandle=function(M,U,fe){return F.current.useImperativeHandle(M,U,fe)},i.useInsertionEffect=function(M,U){return F.current.useInsertionEffect(M,U)},i.useLayoutEffect=function(M,U){return F.current.useLayoutEffect(M,U)},i.useMemo=function(M,U){return F.current.useMemo(M,U)},i.useReducer=function(M,U,fe){return F.current.useReducer(M,U,fe)},i.useRef=function(M){return F.current.useRef(M)},i.useState=function(M){return F.current.useState(M)},i.useSyncExternalStore=function(M,U,fe){return F.current.useSyncExternalStore(M,U,fe)},i.useTransition=function(){return F.current.useTransition()},i.version="18.3.1"}),Me=di((i,s)=>{s.exports=eg()}),tg=di(i=>{/** 15 * @license React 16 * scheduler.production.min.js 17 * 18 * Copyright (c) Facebook, Inc. and its affiliates. 19 * 20 * This source code is licensed under the MIT license found in the 21 * LICENSE file in the root directory of this source tree. 22 */function s(F,Z){var re=F.length;F.push(Z);e:for(;0<re;){var oe=re-1>>>1,M=F[oe];if(0<p(M,Z))F[oe]=Z,F[re]=M,re=oe;else break e}}function l(F){return F.length===0?null:F[0]}function d(F){if(F.length===0)return null;var Z=F[0],re=F.pop();if(re!==Z){F[0]=re;e:for(var oe=0,M=F.length,U=M>>>1;oe<U;){var fe=2*(oe+1)-1,ve=F[fe],se=fe+1,be=F[se];if(0>p(ve,re))se<M&&0>p(be,ve)?(F[oe]=be,F[se]=re,oe=se):(F[oe]=ve,F[fe]=re,oe=fe);else if(se<M&&0>p(be,re))F[oe]=be,F[se]=re,oe=se;else break e}}return Z}function p(F,Z){var re=F.sortIndex-Z.sortIndex;return re!==0?re:F.id-Z.id}typeof performance=="object"&&typeof performance.now=="function"?(h=performance,i.unstable_now=function(){return h.now()}):(f=Date,g=f.now(),i.unstable_now=function(){return f.now()-g});var h,f,g,b=[],u=[],N=1,v=null,w=3,C=!1,A=!1,z=!1,S=typeof setTimeout=="function"?setTimeout:null,R=typeof clearTimeout=="function"?clearTimeout:null,j=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function $(F){for(var Z=l(u);Z!==null;){if(Z.callback===null)d(u);else if(Z.startTime<=F)d(u),Z.sortIndex=Z.expirationTime,s(b,Z);else break;Z=l(u)}}function V(F){if(z=!1,$(F),!A)if(l(b)!==null)A=!0,he(D);else{var Z=l(u);Z!==null&&Le(V,Z.startTime-F)}}function D(F,Z){A=!1,z&&(z=!1,R(ne),ne=-1),C=!0;var re=w;try{for($(Z),v=l(b);v!==null&&(!(v.expirationTime>Z)||F&&!ye());){var oe=v.callback;if(typeof oe=="function"){v.callback=null,w=v.priorityLevel;var M=oe(v.expirationTime<=Z);Z=i.unstable_now(),typeof M=="function"?v.callback=M:v===l(b)&&d(b),$(Z)}else d(b);v=l(b)}if(v!==null)var U=!0;else{var fe=l(u);fe!==null&&Le(V,fe.startTime-Z),U=!1}return U}finally{v=null,w=re,C=!1}}var L=!1,B=null,ne=-1,G=5,ue=-1;function ye(){return!(i.unstable_now()-ue<G)}function Bt(){if(B!==null){var F=i.unstable_now();ue=F;var Z=!0;try{Z=B(!0,F)}finally{Z?ct():(L=!1,B=null)}}else L=!1}var ct;typeof j=="function"?ct=function(){j(Bt)}:typeof MessageChannel<"u"?(dt=new MessageChannel,K=dt.port2,dt.port1.onmessage=Bt,ct=function(){K.postMessage(null)}):ct=function(){S(Bt,0)};var dt,K;function he(F){B=F,L||(L=!0,ct())}function Le(F,Z){ne=S(function(){F(i.unstable_now())},Z)}i.unstable_IdlePriority=5,i.unstable_ImmediatePriority=1,i.unstable_LowPriority=4,i.unstable_NormalPriority=3,i.unstable_Profiling=null,i.unstable_UserBlockingPriority=2,i.unstable_cancelCallback=function(F){F.callback=null},i.unstable_continueExecution=function(){A||C||(A=!0,he(D))},i.unstable_forceFrameRate=function(F){0>F||125<F?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):G=0<F?Math.floor(1e3/F):5},i.unstable_getCurrentPriorityLevel=function(){return w},i.unstable_getFirstCallbackNode=function(){return l(b)},i.unstable_next=function(F){switch(w){case 1:case 2:case 3:var Z=3;break;default:Z=w}var re=w;w=Z;try{return F()}finally{w=re}},i.unstable_pauseExecution=function(){},i.unstable_requestPaint=function(){},i.unstable_runWithPriority=function(F,Z){switch(F){case 1:case 2:case 3:case 4:case 5:break;default:F=3}var re=w;w=F;try{return Z()}finally{w=re}},i.unstable_scheduleCallback=function(F,Z,re){var oe=i.unstable_now();switch(typeof re=="object"&&re!==null?(re=re.delay,re=typeof re=="number"&&0<re?oe+re:oe):re=oe,F){case 1:var M=-1;break;case 2:M=250;break;case 5:M=1073741823;break;case 4:M=1e4;break;default:M=5e3}return M=re+M,F={id:N++,callback:Z,priorityLevel:F,startTime:re,expirationTime:M,sortIndex:-1},re>oe?(F.sortIndex=re,s(u,F),l(b)===null&&F===l(u)&&(z?(R(ne),ne=-1):z=!0,Le(V,re-oe))):(F.sortIndex=M,s(b,F),A||C||(A=!0,he(D))),F},i.unstable_shouldYield=ye,i.unstable_wrapCallback=function(F){var Z=w;return function(){var re=w;w=Z;try{return F.apply(this,arguments)}finally{w=re}}}}),ag=di((i,s)=>{s.exports=tg()}),ng=di(i=>{/** 23 * @license React 24 * react-dom.production.min.js 25 * 26 * Copyright (c) Facebook, Inc. and its affiliates. 27 * 28 * This source code is licensed under the MIT license found in the 29 * LICENSE file in the root directory of this source tree. 30 */var s=Me(),l=ag();function d(t){for(var a="https://reactjs.org/docs/error-decoder.html?invariant="+t,n=1;n<arguments.length;n++)a+="&args[]="+encodeURIComponent(arguments[n]);return"Minified React error #"+t+"; visit "+a+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var p=new Set,h={};function f(t,a){g(t,a),g(t+"Capture",a)}function g(t,a){for(h[t]=a,t=0;t<a.length;t++)p.add(a[t])}var b=!(typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),u=Object.prototype.hasOwnProperty,N=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,v={},w={};function C(t){return u.call(w,t)?!0:u.call(v,t)?!1:N.test(t)?w[t]=!0:(v[t]=!0,!1)}function A(t,a,n,r){if(n!==null&&n.type===0)return!1;switch(typeof a){case"function":case"symbol":return!0;case"boolean":return r?!1:n!==null?!n.acceptsBooleans:(t=t.toLowerCase().slice(0,5),t!=="data-"&&t!=="aria-");default:return!1}}function z(t,a,n,r){if(a===null||typeof a>"u"||A(t,a,n,r))return!0;
vendor: 4,714 bytes, lines 30-31
30if(r)return!1;if(n!==null)switch(n.type){case 3:return!a;case 4:return a===!1;case 5:return isNaN(a);case 6:return isNaN(a)||1>a}return!1}function S(t,a,n,r,o,c,m){this.acceptsBooleans=a===2||a===3||a===4,this.attributeName=r,this.attributeNamespace=o,this.mustUseProperty=n,this.propertyName=t,this.type=a,this.sanitizeURL=c,this.removeEmptyString=m}var R={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(t){R[t]=new S(t,0,!1,t,null,!1,!1)}),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(t){var a=t[0];R[a]=new S(a,1,!1,t[1],null,!1,!1)}),["contentEditable","draggable","spellCheck","value"].forEach(function(t){R[t]=new S(t,2,!1,t.toLowerCase(),null,!1,!1)}),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(t){R[t]=new S(t,2,!1,t,null,!1,!1)}),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(t){R[t]=new S(t,3,!1,t.toLowerCase(),null,!1,!1)}),["checked","multiple","muted","selected"].forEach(function(t){R[t]=new S(t,3,!0,t,null,!1,!1)}),["capture","download"].forEach(function(t){R[t]=new S(t,4,!1,t,null,!1,!1)}),["cols","rows","size","span"].forEach(function(t){R[t]=new S(t,6,!1,t,null,!1,!1)}),["rowSpan","start"].forEach(function(t){R[t]=new S(t,5,!1,t.toLowerCase(),null,!1,!1)});var j=/[\-:]([a-z])/g;function $(t){return t[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(t){var a=t.replace(j,$);R[a]=new S(a,1,!1,t,null,!1,!1)}),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(t){var a=t.replace(j,$);R[a]=new S(a,1,!1,t,"http://www.w3.org/1999/xlink",!1,!1)}),["xml:base","xml:lang","xml:space"].forEach(function(t){var a=t.replace(j,$);R[a]=new S(a,1,!1,t,"http://www.w3.org/XML/1998/namespace",!1,!1)}),["tabIndex","crossOrigin"].forEach(function(t){R[t]=new S(t,1,!1,t.toLowerCase(),null,!1,!1)}),R.xlinkHref=new S("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach(function(t){R[t]=new S(t,1,!1,t.toLowerCase(),null,!0,!0)});function V(t,a,n,r){var o=R.hasOwnProperty(a)?R[a]:null;(o!==null?o.type!==0:r||!(2<a.length)||a[0]!=="o"&&a[0]!=="O"||a[1]!=="n"&&a[1]!=="N")&&(z(a,n,o,r)&&(n=null),r||o===null?C(a)&&(n===null?t.removeAttribute(a):t.setAttribute(a,""+n)):o.mustUseProperty?t[o.propertyName]=n===null?o.type===3?!1:"":n:(a=o.attributeName,r=o.attributeNamespace,n===null?t.removeAttribute(a):(o=o.type,n=o===3||o===4&&n===!0?"":""+n,r?t.setAttributeNS(r,a,n):t.setAttribute(a,n))))}var D=s.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,L=Symbol.for("react.element"),B=Symbol.for("react.portal"),ne=Symbol.for("react.fragment"),G=Symbol.for("react.strict_mode"),ue=Symbol.for("react.profiler"),ye=Symbol.for("react.provider"),Bt=Symbol.for("react.context"),ct=Symbol.for("react.forward_ref"),dt=Symbol.for("react.suspense"),K=Symbol.for("react.suspense_list"),he=Symbol.for("react.memo"),Le=Symbol.for("react.lazy"),F=Symbol.for("react.offscreen"),Z=Symbol.iterator;function re(t){return t===null||typeof t!="object"?null:(t=Z&&t[Z]||t["@@iterator"],typeof t=="function"?t:null)}var oe=Object.assign,M;function U(t){if(M===void 0)try{throw Error()}catch(n){var a=n.stack.trim().match(/\n( *(at )?)/);M=a&&a[1]||""}return` 31`+M+t}var fe=!1;
vendor: 7,901 bytes, lines 31-34
31function ve(t,a){if(!t||fe)return"";fe=!0;var n=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(a)if(a=function(){throw Error()},Object.defineProperty(a.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(a,[])}catch(I){var r=I}Reflect.construct(t,[],a)}else{try{a.call()}catch(I){r=I}t.call(a.prototype)}else{try{throw Error()}catch(I){r=I}t()}}catch(I){if(I&&r&&typeof I.stack=="string"){for(var o=I.stack.split(` 32`),c=r.stack.split(` 33`),m=o.length-1,y=c.length-1;1<=m&&0<=y&&o[m]!==c[y];)y--;for(;1<=m&&0<=y;m--,y--)if(o[m]!==c[y]){if(m!==1||y!==1)do if(m--,y--,0>y||o[m]!==c[y]){var k=` 34`+o[m].replace(" at new "," at ");return t.displayName&&k.includes("<anonymous>")&&(k=k.replace("<anonymous>",t.displayName)),k}while(1<=m&&0<=y);break}}}finally{fe=!1,Error.prepareStackTrace=n}return(t=t?t.displayName||t.name:"")?U(t):""}function se(t){switch(t.tag){case 5:return U(t.type);case 16:return U("Lazy");case 13:return U("Suspense");case 19:return U("SuspenseList");case 0:case 2:case 15:return t=ve(t.type,!1),t;case 11:return t=ve(t.type.render,!1),t;case 1:return t=ve(t.type,!0),t;default:return""}}function be(t){if(t==null)return null;if(typeof t=="function")return t.displayName||t.name||null;if(typeof t=="string")return t;switch(t){case ne:return"Fragment";case B:return"Portal";case ue:return"Profiler";case G:return"StrictMode";case dt:return"Suspense";case K:return"SuspenseList"}if(typeof t=="object")switch(t.$$typeof){case Bt:return(t.displayName||"Context")+".Consumer";case ye:return(t._context.displayName||"Context")+".Provider";case ct:var a=t.render;return t=t.displayName,t||(t=a.displayName||a.name||"",t=t!==""?"ForwardRef("+t+")":"ForwardRef"),t;case he:return a=t.displayName||null,a!==null?a:be(t.type)||"Memo";case Le:a=t._payload,t=t._init;try{return be(t(a))}catch{}}return null}function Ve(t){var a=t.type;switch(t.tag){case 24:return"Cache";case 9:return(a.displayName||"Context")+".Consumer";case 10:return(a._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return t=a.render,t=t.displayName||t.name||"",a.displayName||(t!==""?"ForwardRef("+t+")":"ForwardRef");case 7:return"Fragment";case 5:return a;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return be(a);case 8:return a===G?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof a=="function")return a.displayName||a.name||null;if(typeof a=="string")return a}return null}function Se(t){switch(typeof t){case"boolean":case"number":case"string":case"undefined":return t;case"object":return t;default:return""}}function je(t){var a=t.type;return(t=t.nodeName)&&t.toLowerCase()==="input"&&(a==="checkbox"||a==="radio")}function gt(t){var a=je(t)?"checked":"value",n=Object.getOwnPropertyDescriptor(t.constructor.prototype,a),r=""+t[a];if(!t.hasOwnProperty(a)&&typeof n<"u"&&typeof n.get=="function"&&typeof n.set=="function"){var o=n.get,c=n.set;return Object.defineProperty(t,a,{configurable:!0,get:function(){return o.call(this)},set:function(m){r=""+m,c.call(this,m)}}),Object.defineProperty(t,a,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(m){r=""+m},stopTracking:function(){t._valueTracker=null,delete t[a]}}}}function ui(t){t._valueTracker||(t._valueTracker=gt(t))}function we(t){if(!t)return!1;var a=t._valueTracker;if(!a)return!0;var n=a.getValue(),r="";return t&&(r=je(t)?t.checked?"true":"false":t.value),t=r,t!==n?(a.setValue(t),!0):!1}function Pe(t){if(t=t||(typeof document<"u"?document:void 0),typeof t>"u")return null;try{return t.activeElement||t.body}catch{return t.body}}function tt(t,a){var n=a.checked;return oe({},a,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n??t._wrapperState.initialChecked})}function Ht(t,a){var n=a.defaultValue==null?"":a.defaultValue,r=a.checked!=null?a.checked:a.defaultChecked;n=Se(a.value!=null?a.value:n),t._wrapperState={initialChecked:r,initialValue:n,controlled:a.type==="checkbox"||a.type==="radio"?a.checked!=null:a.value!=null}}function pt(t,a){a=a.checked,a!=null&&V(t,"checked",a,!1)}function Xa(t,a){pt(t,a);var n=Se(a.value),r=a.type;if(n!=null)r==="number"?(n===0&&t.value===""||t.value!=n)&&(t.value=""+n):t.value!==""+n&&(t.value=""+n);else if(r==="submit"||r==="reset"){t.removeAttribute("value");return}a.hasOwnProperty("value")?Ln(t,a.type,n):a.hasOwnProperty("defaultValue")&&Ln(t,a.type,Se(a.defaultValue)),a.checked==null&&a.defaultChecked!=null&&(t.defaultChecked=!!a.defaultChecked)}function _e(t,a,n){if(a.hasOwnProperty("value")||a.hasOwnProperty("defaultValue")){var r=a.type;if(!(r!=="submit"&&r!=="reset"||a.value!==void 0&&a.value!==null))return;a=""+t._wrapperState.initialValue,n||a===t.value||(t.value=a),t.defaultValue=a}n=t.name,n!==""&&(t.name=""),t.defaultChecked=!!t._wrapperState.initialChecked,n!==""&&(t.name=n)}function Ln(t,a,n){(a!=="number"||Pe(t.ownerDocument)!==t)&&(n==null?t.defaultValue=""+t._wrapperState.initialValue:t.defaultValue!==""+n&&(t.defaultValue=""+n))}var Yt=Array.isArray;function Na(t,a,n,r){if(t=t.options,a){a={};for(var o=0;o<n.length;o++)a["$"+n[o]]=!0;for(n=0;n<t.length;n++)o=a.hasOwnProperty("$"+t[n].value),t[n].selected!==o&&(t[n].selected=o),o&&r&&(t[n].defaultSelected=!0)}else{for(n=""+Se(n),a=null,o=0;o<t.length;o++){if(t[o].value===n){t[o].selected=!0,r&&(t[o].defaultSelected=!0);return}a!==null||t[o].disabled||(a=t[o])}a!==null&&(a.selected=!0)}}function en(t,a){if(a.dangerouslySetInnerHTML!=null)throw Error(d(91));return oe({},a,{value:void 0,defaultValue:void 0,children:""+t._wrapperState.initialValue})}function Qi(t,a){var n=a.value;if(n==null){if(n=a.children,a=a.defaultValue,n!=null){if(a!=null)throw Error(d(92));if(Yt(n)){if(1<n.length)throw Error(d(93));n=n[0]}a=n}a==null&&(a=""),n=a}t._wrapperState={initialValue:Se(n)}}function jn(t,a){var n=Se(a.value),r=Se(a.defaultValue);n!=null&&(n=""+n,n!==t.value&&(t.value=n),a.defaultValue==null&&t.defaultValue!==n&&(t.defaultValue=n)),r!=null&&(t.defaultValue=""+r)}function Zi(t){var a=t.textContent;a===t._wrapperState.initialValue&&a!==""&&a!==null&&(t.value=a)}function Gr(t){switch(t){case"svg":return"http://www.w3.org/2000/svg";case"math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function mi(t,a){return t==null||t==="http://www.w3.org/1999/xhtml"?Gr(a):t==="http://www.w3.org/2000/svg"&&a==="foreignObject"?"http://www.w3.org/1999/xhtml":t}var Ma,Ji=function(t){return typeof MSApp<"u"&&MSApp.execUnsafeLocalFunction?function(a,n,r,o){MSApp.execUnsafeLocalFunction(function(){return t(a,n,r,o)})}:t}(function(t,a){if(t.namespaceURI!=="http://www.w3.org/2000/svg"||"innerHTML"in t)t.innerHTML=a;else{for(Ma=Ma||document.createElement("div"),Ma.innerHTML="<svg>"+a.valueOf().toString()+"</svg>",a=Ma.firstChild;t.firstChild;)t.removeChild(t.firstChild);for(;a.firstChild;)t.appendChild(a.firstChild)}});function ma(t,a){if(a){var n=t.firstChild;if(n&&n===t.lastChild&&n.nodeType===3){n.nodeValue=a;return}}t.textContent=a}var tn={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},Dn=["Webkit","ms","Moz","O"];
vendor: 5,638 bytes, line 34
34Object.keys(tn).forEach(function(t){Dn.forEach(function(a){a=a+t.charAt(0).toUpperCase()+t.substring(1),tn[a]=tn[t]})});function ja(t,a,n){return a==null||typeof a=="boolean"||a===""?"":n||typeof a!="number"||a===0||tn.hasOwnProperty(t)&&tn[t]?(""+a).trim():a+"px"}function Pn(t,a){t=t.style;for(var n in a)if(a.hasOwnProperty(n)){var r=n.indexOf("--")===0,o=ja(n,a[n],r);n==="float"&&(n="cssFloat"),r?t.setProperty(n,o):t[n]=o}}var hi=oe({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function an(t,a){if(a){if(hi[t]&&(a.children!=null||a.dangerouslySetInnerHTML!=null))throw Error(d(137,t));if(a.dangerouslySetInnerHTML!=null){if(a.children!=null)throw Error(d(60));if(typeof a.dangerouslySetInnerHTML!="object"||!("__html"in a.dangerouslySetInnerHTML))throw Error(d(61))}if(a.style!=null&&typeof a.style!="object")throw Error(d(62))}}function On(t,a){if(t.indexOf("-")===-1)return typeof a.is=="string";switch(t){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var nn=null;function Fn(t){return t=t.target||t.srcElement||window,t.correspondingUseElement&&(t=t.correspondingUseElement),t.nodeType===3?t.parentNode:t}var fi=null,Da=null,Pa=null;function Xi(t){if(t=wr(t)){if(typeof fi!="function")throw Error(d(280));var a=t.stateNode;a&&(a=Ao(a),fi(t.stateNode,t.type,a))}}function ha(t){Da?Pa?Pa.push(t):Pa=[t]:Da=t}function er(){if(Da){var t=Da,a=Pa;if(Pa=Da=null,Xi(t),a)for(t=0;t<a.length;t++)Xi(a[t])}}function Oa(t,a){return t(a)}function _n(){}var Un=!1;function rn(t,a,n){if(Un)return t(a,n);Un=!0;try{return Oa(t,a,n)}finally{Un=!1,(Da!==null||Pa!==null)&&(_n(),er())}}function on(t,a){var n=t.stateNode;if(n===null)return null;var r=Ao(n);if(r===null)return null;n=r[a];e:switch(a){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":case"onMouseEnter":(r=!r.disabled)||(t=t.type,r=!(t==="button"||t==="input"||t==="select"||t==="textarea")),t=!r;break e;default:t=!1}if(t)return null;if(n&&typeof n!="function")throw Error(d(231,a,typeof n));return n}var gi=!1;if(b)try{pe={},Object.defineProperty(pe,"passive",{get:function(){gi=!0}}),window.addEventListener("test",pe,pe),window.removeEventListener("test",pe,pe)}catch{gi=!1}var pe;function Mt(t,a,n,r,o,c,m,y,k){var I=Array.prototype.slice.call(arguments,3);try{a.apply(n,I)}catch(O){this.onError(O)}}var Sa=!1,Kt=null,fa=!1,qn=null,tr={onError:function(t){Sa=!0,Kt=t}};function Fa(t,a,n,r,o,c,m,y,k){Sa=!1,Kt=null,Mt.apply(tr,arguments)}function zt(t,a,n,r,o,c,m,y,k){if(Fa.apply(this,arguments),Sa){if(Sa){var I=Kt;Sa=!1,Kt=null}else throw Error(d(198));fa||(fa=!0,qn=I)}}function bt(t){var a=t,n=t;if(t.alternate)for(;a.return;)a=a.return;else{t=a;do a=t,a.flags&4098&&(n=a.return),t=a.return;while(t)}return a.tag===3?n:null}function Wn(t){if(t.tag===13){var a=t.memoizedState;if(a===null&&(t=t.alternate,t!==null&&(a=t.memoizedState)),a!==null)return a.dehydrated}return null}function sn(t){if(bt(t)!==t)throw Error(d(188))}function Vn(t){var a=t.alternate;if(!a){if(a=bt(t),a===null)throw Error(d(188));return a!==t?null:t}for(var n=t,r=a;;){var o=n.return;if(o===null)break;var c=o.alternate;if(c===null){if(r=o.return,r!==null){n=r;continue}break}if(o.child===c.child){for(c=o.child;c;){if(c===n)return sn(o),t;if(c===r)return sn(o),a;c=c.sibling}throw Error(d(188))}if(n.return!==r.return)n=o,r=c;else{for(var m=!1,y=o.child;y;){if(y===n){m=!0,n=o,r=c;break}if(y===r){m=!0,r=o,n=c;break}y=y.sibling}if(!m){for(y=c.child;y;){if(y===n){m=!0,n=c,r=o;break}if(y===r){m=!0,r=c,n=o;break}y=y.sibling}if(!m)throw Error(d(189))}}if(n.alternate!==r)throw Error(d(190))}if(n.tag!==3)throw Error(d(188));return n.stateNode.current===n?t:a}function Qr(t){return t=Vn(t),t!==null?Zr(t):null}function Zr(t){if(t.tag===5||t.tag===6)return t;for(t=t.child;t!==null;){var a=Zr(t);if(a!==null)return a;t=t.sibling}return null}var Ea=l.unstable_scheduleCallback,Jr=l.unstable_cancelCallback,bi=l.unstable_shouldYield,q=l.unstable_requestPaint,ee=l.unstable_now,ge=l.unstable_getCurrentPriorityLevel,Te=l.unstable_ImmediatePriority,Ye=l.unstable_UserBlockingPriority,ut=l.unstable_NormalPriority,Bn=l.unstable_LowPriority,it=l.unstable_IdlePriority,Hn=null,$t=null;function Xr(t){if($t&&typeof $t.onCommitFiberRoot=="function")try{$t.onCommitFiberRoot(Hn,t,void 0,(t.current.flags&128)===128)}catch{}}var Lt=Math.clz32?Math.clz32:ch,sh=Math.log,lh=Math.LN2;function ch(t){return t>>>=0,t===0?32:31-(sh(t)/lh|0)|0}var eo=64,to=4194304;function ar(t){switch(t&-t){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return t&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return t}}function ao(t,a){var n=t.pendingLanes;if(n===0)return 0;var r=0,o=t.suspendedLanes,c=t.pingedLanes,m=n&268435455;if(m!==0){var y=m&~o;y!==0?r=ar(y):(c&=m,c!==0&&(r=ar(c)))}else m=n&~o,m!==0?r=ar(m):c!==0&&(r=ar(c));if(r===0)return 0;if(a!==0&&a!==r&&!(a&o)&&(o=r&-r,c=a&-a,o>=c||o===16&&(c&4194240)!==0))return a;
vendor: 5,041 bytes, line 34
34if(r&4&&(r|=n&16),a=t.entangledLanes,a!==0)for(t=t.entanglements,a&=r;0<a;)n=31-Lt(a),o=1<<n,r|=t[n],a&=~o;return r}function dh(t,a){switch(t){case 1:case 2:case 4:return a+250;case 8:case 16:case 32:case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a+5e3;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return-1;case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function ph(t,a){for(var n=t.suspendedLanes,r=t.pingedLanes,o=t.expirationTimes,c=t.pendingLanes;0<c;){var m=31-Lt(c),y=1<<m,k=o[m];k===-1?(!(y&n)||y&r)&&(o[m]=dh(y,a)):k<=a&&(t.expiredLanes|=y),c&=~y}}function Cs(t){return t=t.pendingLanes&-1073741825,t!==0?t:t&1073741824?1073741824:0}function _c(){var t=eo;return eo<<=1,!(eo&4194240)&&(eo=64),t}function Ts(t){for(var a=[],n=0;31>n;n++)a.push(t);return a}function nr(t,a,n){t.pendingLanes|=a,a!==536870912&&(t.suspendedLanes=0,t.pingedLanes=0),t=t.eventTimes,a=31-Lt(a),t[a]=n}function uh(t,a){var n=t.pendingLanes&~a;t.pendingLanes=a,t.suspendedLanes=0,t.pingedLanes=0,t.expiredLanes&=a,t.mutableReadLanes&=a,t.entangledLanes&=a,a=t.entanglements;var r=t.eventTimes;for(t=t.expirationTimes;0<n;){var o=31-Lt(n),c=1<<o;a[o]=0,r[o]=-1,t[o]=-1,n&=~c}}function Is(t,a){var n=t.entangledLanes|=a;for(t=t.entanglements;n;){var r=31-Lt(n),o=1<<r;o&a|t[r]&a&&(t[r]|=a),n&=~o}}var Ie=0;function Uc(t){return t&=-t,1<t?4<t?t&268435455?16:536870912:4:1}var qc,Rs,Wc,Vc,Bc,zs=!1,no=[],ln=null,cn=null,dn=null,ir=new Map,rr=new Map,pn=[],mh="mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit".split(" ");function Hc(t,a){switch(t){case"focusin":case"focusout":ln=null;break;case"dragenter":case"dragleave":cn=null;break;case"mouseover":case"mouseout":dn=null;break;case"pointerover":case"pointerout":ir.delete(a.pointerId);break;case"gotpointercapture":case"lostpointercapture":rr.delete(a.pointerId)}}function or(t,a,n,r,o,c){return t===null||t.nativeEvent!==c?(t={blockedOn:a,domEventName:n,eventSystemFlags:r,nativeEvent:c,targetContainers:[o]},a!==null&&(a=wr(a),a!==null&&Rs(a)),t):(t.eventSystemFlags|=r,a=t.targetContainers,o!==null&&a.indexOf(o)===-1&&a.push(o),t)}function hh(t,a,n,r,o){switch(a){case"focusin":return ln=or(ln,t,a,n,r,o),!0;case"dragenter":return cn=or(cn,t,a,n,r,o),!0;case"mouseover":return dn=or(dn,t,a,n,r,o),!0;case"pointerover":var c=o.pointerId;return ir.set(c,or(ir.get(c)||null,t,a,n,r,o)),!0;case"gotpointercapture":return c=o.pointerId,rr.set(c,or(rr.get(c)||null,t,a,n,r,o)),!0}return!1}function Yc(t){var a=Yn(t.target);if(a!==null){var n=bt(a);if(n!==null){if(a=n.tag,a===13){if(a=Wn(n),a!==null){t.blockedOn=a,Bc(t.priority,function(){Wc(n)});return}}else if(a===3&&n.stateNode.current.memoizedState.isDehydrated){t.blockedOn=n.tag===3?n.stateNode.containerInfo:null;return}}}t.blockedOn=null}function io(t){if(t.blockedOn!==null)return!1;for(var a=t.targetContainers;0<a.length;){var n=js(t.domEventName,t.eventSystemFlags,a[0],t.nativeEvent);if(n===null){n=t.nativeEvent;var r=new n.constructor(n.type,n);nn=r,n.target.dispatchEvent(r),nn=null}else return a=wr(n),a!==null&&Rs(a),t.blockedOn=n,!1;a.shift()}return!0}function Kc(t,a,n){io(t)&&n.delete(a)}function fh(){zs=!1,ln!==null&&io(ln)&&(ln=null),cn!==null&&io(cn)&&(cn=null),dn!==null&&io(dn)&&(dn=null),ir.forEach(Kc),rr.forEach(Kc)}function sr(t,a){t.blockedOn===a&&(t.blockedOn=null,zs||(zs=!0,l.unstable_scheduleCallback(l.unstable_NormalPriority,fh)))}function lr(t){function a(o){return sr(o,t)}if(0<no.length){sr(no[0],t);for(var n=1;n<no.length;n++){var r=no[n];r.blockedOn===t&&(r.blockedOn=null)}}for(ln!==null&&sr(ln,t),cn!==null&&sr(cn,t),dn!==null&&sr(dn,t),ir.forEach(a),rr.forEach(a),n=0;n<pn.length;n++)r=pn[n],r.blockedOn===t&&(r.blockedOn=null);for(;0<pn.length&&(n=pn[0],n.blockedOn===null);)Yc(n),n.blockedOn===null&&pn.shift()}var yi=D.ReactCurrentBatchConfig,ro=!0;function gh(t,a,n,r){var o=Ie,c=yi.transition;yi.transition=null;try{Ie=1,Ls(t,a,n,r)}finally{Ie=o,yi.transition=c}}function bh(t,a,n,r){var o=Ie,c=yi.transition;yi.transition=null;try{Ie=4,Ls(t,a,n,r)}finally{Ie=o,yi.transition=c}}function Ls(t,a,n,r){if(ro){var o=js(t,a,n,r);if(o===null)Gs(t,a,r,oo,n),Hc(t,r);else if(hh(o,t,a,n,r))r.stopPropagation();else if(Hc(t,r),a&4&&-1<mh.indexOf(t)){for(;o!==null;){var c=wr(o);if(c!==null&&qc(c),c=js(t,a,n,r),c===null&&Gs(t,a,r,oo,n),c===o)break;o=c}o!==null&&r.stopPropagation()}else Gs(t,a,r,null,n)}}var oo=null;function js(t,a,n,r){if(oo=null,t=Fn(r),t=Yn(t),t!==null)if(a=bt(t),a===null)t=null;else if(n=a.tag,n===13){if(t=Wn(a),t!==null)return t;t=null}else if(n===3){if(a.stateNode.current.memoizedState.isDehydrated)return a.tag===3?a.stateNode.containerInfo:null;t=null}else a!==t&&(t=null);return oo=t,null}
vendor: 4,373 bytes, line 34
34function $c(t){switch(t){case"cancel":case"click":case"close":case"contextmenu":case"copy":case"cut":case"auxclick":case"dblclick":case"dragend":case"dragstart":case"drop":case"focusin":case"focusout":case"input":case"invalid":case"keydown":case"keypress":case"keyup":case"mousedown":case"mouseup":case"paste":case"pause":case"play":case"pointercancel":case"pointerdown":case"pointerup":case"ratechange":case"reset":case"resize":case"seeked":case"submit":case"touchcancel":case"touchend":case"touchstart":case"volumechange":case"change":case"selectionchange":case"textInput":case"compositionstart":case"compositionend":case"compositionupdate":case"beforeblur":case"afterblur":case"beforeinput":case"blur":case"fullscreenchange":case"focus":case"hashchange":case"popstate":case"select":case"selectstart":return 1;case"drag":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"mousemove":case"mouseout":case"mouseover":case"pointermove":case"pointerout":case"pointerover":case"scroll":case"toggle":case"touchmove":case"wheel":case"mouseenter":case"mouseleave":case"pointerenter":case"pointerleave":return 4;case"message":switch(ge()){case Te:return 1;case Ye:return 4;case ut:case Bn:return 16;case it:return 536870912;default:return 16}default:return 16}}var un=null,Ds=null,so=null;function Gc(){if(so)return so;var t,a=Ds,n=a.length,r,o="value"in un?un.value:un.textContent,c=o.length;for(t=0;t<n&&a[t]===o[t];t++);var m=n-t;for(r=1;r<=m&&a[n-r]===o[c-r];r++);return so=o.slice(t,1<r?1-r:void 0)}function lo(t){var a=t.keyCode;return"charCode"in t?(t=t.charCode,t===0&&a===13&&(t=13)):t=a,t===10&&(t=13),32<=t||t===13?t:0}function co(){return!0}function Qc(){return!1}function Gt(t){function a(n,r,o,c,m){this._reactName=n,this._targetInst=o,this.type=r,this.nativeEvent=c,this.target=m,this.currentTarget=null;for(var y in t)t.hasOwnProperty(y)&&(n=t[y],this[y]=n?n(c):c[y]);return this.isDefaultPrevented=(c.defaultPrevented!=null?c.defaultPrevented:c.returnValue===!1)?co:Qc,this.isPropagationStopped=Qc,this}return oe(a.prototype,{preventDefault:function(){this.defaultPrevented=!0;var n=this.nativeEvent;n&&(n.preventDefault?n.preventDefault():typeof n.returnValue!="unknown"&&(n.returnValue=!1),this.isDefaultPrevented=co)},stopPropagation:function(){var n=this.nativeEvent;n&&(n.stopPropagation?n.stopPropagation():typeof n.cancelBubble!="unknown"&&(n.cancelBubble=!0),this.isPropagationStopped=co)},persist:function(){},isPersistent:co}),a}var vi={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(t){return t.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},Ps=Gt(vi),cr=oe({},vi,{view:0,detail:0}),yh=Gt(cr),Os,Fs,dr,po=oe({},cr,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:Us,button:0,buttons:0,relatedTarget:function(t){return t.relatedTarget===void 0?t.fromElement===t.srcElement?t.toElement:t.fromElement:t.relatedTarget},movementX:function(t){return"movementX"in t?t.movementX:(t!==dr&&(dr&&t.type==="mousemove"?(Os=t.screenX-dr.screenX,Fs=t.screenY-dr.screenY):Fs=Os=0,dr=t),Os)},movementY:function(t){return"movementY"in t?t.movementY:Fs}}),Zc=Gt(po),vh=oe({},po,{dataTransfer:0}),wh=Gt(vh),kh=oe({},cr,{relatedTarget:0}),_s=Gt(kh),Ah=oe({},vi,{animationName:0,elapsedTime:0,pseudoElement:0}),xh=Gt(Ah),Nh=oe({},vi,{clipboardData:function(t){return"clipboardData"in t?t.clipboardData:window.clipboardData}}),Mh=Gt(Nh),Sh=oe({},vi,{data:0}),Jc=Gt(Sh),Eh={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},Ch={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"},Th={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function Ih(t){var a=this.nativeEvent;return a.getModifierState?a.getModifierState(t):(t=Th[t])?!!a[t]:!1}function Us(){return Ih}var Rh=oe({},cr,{key:function(t){if(t.key){var a=Eh[t.key]||t.key;if(a!=="Unidentified")return a}
vendor: 6,008 bytes, line 34
34return t.type==="keypress"?(t=lo(t),t===13?"Enter":String.fromCharCode(t)):t.type==="keydown"||t.type==="keyup"?Ch[t.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:Us,charCode:function(t){return t.type==="keypress"?lo(t):0},keyCode:function(t){return t.type==="keydown"||t.type==="keyup"?t.keyCode:0},which:function(t){return t.type==="keypress"?lo(t):t.type==="keydown"||t.type==="keyup"?t.keyCode:0}}),zh=Gt(Rh),Lh=oe({},po,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),Xc=Gt(Lh),jh=oe({},cr,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:Us}),Dh=Gt(jh),Ph=oe({},vi,{propertyName:0,elapsedTime:0,pseudoElement:0}),Oh=Gt(Ph),Fh=oe({},po,{deltaX:function(t){return"deltaX"in t?t.deltaX:"wheelDeltaX"in t?-t.wheelDeltaX:0},deltaY:function(t){return"deltaY"in t?t.deltaY:"wheelDeltaY"in t?-t.wheelDeltaY:"wheelDelta"in t?-t.wheelDelta:0},deltaZ:0,deltaMode:0}),_h=Gt(Fh),Uh=[9,13,27,32],qs=b&&"CompositionEvent"in window,pr=null;b&&"documentMode"in document&&(pr=document.documentMode);var qh=b&&"TextEvent"in window&&!pr,ed=b&&(!qs||pr&&8<pr&&11>=pr),td=" ",ad=!1;function nd(t,a){switch(t){case"keyup":return Uh.indexOf(a.keyCode)!==-1;case"keydown":return a.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function id(t){return t=t.detail,typeof t=="object"&&"data"in t?t.data:null}var wi=!1;function Wh(t,a){switch(t){case"compositionend":return id(a);case"keypress":return a.which!==32?null:(ad=!0,td);case"textInput":return t=a.data,t===td&&ad?null:t;default:return null}}function Vh(t,a){if(wi)return t==="compositionend"||!qs&&nd(t,a)?(t=Gc(),so=Ds=un=null,wi=!1,t):null;switch(t){case"paste":return null;case"keypress":if(!(a.ctrlKey||a.altKey||a.metaKey)||a.ctrlKey&&a.altKey){if(a.char&&1<a.char.length)return a.char;if(a.which)return String.fromCharCode(a.which)}return null;case"compositionend":return ed&&a.locale!=="ko"?null:a.data;default:return null}}var Bh={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function rd(t){var a=t&&t.nodeName&&t.nodeName.toLowerCase();return a==="input"?!!Bh[t.type]:a==="textarea"}function od(t,a,n,r){ha(r),a=vo(a,"onChange"),0<a.length&&(n=new Ps("onChange","change",null,n,r),t.push({event:n,listeners:a}))}var ur=null,mr=null;function Hh(t){Md(t,0)}function uo(t){var a=Mi(t);if(we(a))return t}function Yh(t,a){if(t==="change")return a}var sd=!1;b&&(b?(mo="oninput"in document,mo||(Vs=document.createElement("div"),Vs.setAttribute("oninput","return;"),mo=typeof Vs.oninput=="function"),Ws=mo):Ws=!1,sd=Ws&&(!document.documentMode||9<document.documentMode));var Ws,mo,Vs;function ld(){ur&&(ur.detachEvent("onpropertychange",cd),mr=ur=null)}function cd(t){if(t.propertyName==="value"&&uo(mr)){var a=[];od(a,mr,t,Fn(t)),rn(Hh,a)}}function Kh(t,a,n){t==="focusin"?(ld(),ur=a,mr=n,ur.attachEvent("onpropertychange",cd)):t==="focusout"&&ld()}function $h(t){if(t==="selectionchange"||t==="keyup"||t==="keydown")return uo(mr)}function Gh(t,a){if(t==="click")return uo(a)}function Qh(t,a){if(t==="input"||t==="change")return uo(a)}function Zh(t,a){return t===a&&(t!==0||1/t===1/a)||t!==t&&a!==a}var ga=typeof Object.is=="function"?Object.is:Zh;function hr(t,a){if(ga(t,a))return!0;if(typeof t!="object"||t===null||typeof a!="object"||a===null)return!1;var n=Object.keys(t),r=Object.keys(a);if(n.length!==r.length)return!1;for(r=0;r<n.length;r++){var o=n[r];if(!u.call(a,o)||!ga(t[o],a[o]))return!1}return!0}function dd(t){for(;t&&t.firstChild;)t=t.firstChild;return t}function pd(t,a){var n=dd(t);t=0;for(var r;n;){if(n.nodeType===3){if(r=t+n.textContent.length,t<=a&&r>=a)return{node:n,offset:a-t};t=r}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=dd(n)}}function ud(t,a){return t&&a?t===a?!0:t&&t.nodeType===3?!1:a&&a.nodeType===3?ud(t,a.parentNode):"contains"in t?t.contains(a):t.compareDocumentPosition?!!(t.compareDocumentPosition(a)&16):!1:!1}function md(){for(var t=window,a=Pe();a instanceof t.HTMLIFrameElement;){try{var n=typeof a.contentWindow.location.href=="string"}catch{n=!1}if(n)t=a.contentWindow;else break;a=Pe(t.document)}return a}function Bs(t){var a=t&&t.nodeName&&t.nodeName.toLowerCase();return a&&(a==="input"&&(t.type==="text"||t.type==="search"||t.type==="tel"||t.type==="url"||t.type==="password")||a==="textarea"||t.contentEditable==="true")}function Jh(t){var a=md(),n=t.focusedElem,r=t.selectionRange;if(a!==n&&n&&n.ownerDocument&&ud(n.ownerDocument.documentElement,n)){if(r!==null&&Bs(n)){if(a=r.start,t=r.end,t===void 0&&(t=a),"selectionStart"in n)n.selectionStart=a,n.selectionEnd=Math.min(t,n.value.length);else if(t=(a=n.ownerDocument||document)&&a.defaultView||window,t.getSelection){t=t.getSelection();var o=n.textContent.length,c=Math.min(r.start,o);r=r.end===void 0?c:Math.min(r.end,o),!t.extend&&c>r&&(o=r,r=c,c=o),o=pd(n,c);var m=pd(n,r);o&&m&&(t.rangeCount!==1||t.anchorNode!==o.node||t.anchorOffset!==o.offset||t.focusNode!==m.node||t.focusOffset!==m.offset)&&(a=a.createRange(),a.setStart(o.node,o.offset),t.removeAllRanges(),c>r?(t.addRange(a),t.extend(m.node,m.offset)):(a.setEnd(m.node,m.offset),t.addRange(a)))}}for(a=[],t=n;t=t.parentNode;)t.nodeType===1&&a.push({element:t,left:t.scrollLeft,top:t.scrollTop});for(typeof n.focus=="function"&&n.focus(),n=0;n<a.length;n++)t=a[n],t.element.scrollLeft=t.left,t.element.scrollTop=t.top}}var Xh=b&&"documentMode"in document&&11>=document.documentMode,ki=null,Hs=null,fr=null,Ys=!1;function hd(t,a,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;Ys||ki==null||ki!==Pe(r)||(r=ki,"selectionStart"in r&&Bs(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focu
vendor: 7,085 bytes, line 34
34sNode:r.focusNode,focusOffset:r.focusOffset}),fr&&hr(fr,r)||(fr=r,r=vo(Hs,"onSelect"),0<r.length&&(a=new Ps("onSelect","select",null,a,n),t.push({event:a,listeners:r}),a.target=ki)))}function ho(t,a){var n={};return n[t.toLowerCase()]=a.toLowerCase(),n["Webkit"+t]="webkit"+a,n["Moz"+t]="moz"+a,n}var Ai={animationend:ho("Animation","AnimationEnd"),animationiteration:ho("Animation","AnimationIteration"),animationstart:ho("Animation","AnimationStart"),transitionend:ho("Transition","TransitionEnd")},Ks={},fd={};b&&(fd=document.createElement("div").style,"AnimationEvent"in window||(delete Ai.animationend.animation,delete Ai.animationiteration.animation,delete Ai.animationstart.animation),"TransitionEvent"in window||delete Ai.transitionend.transition);function fo(t){if(Ks[t])return Ks[t];if(!Ai[t])return t;var a=Ai[t],n;for(n in a)if(a.hasOwnProperty(n)&&n in fd)return Ks[t]=a[n];return t}var gd=fo("animationend"),bd=fo("animationiteration"),yd=fo("animationstart"),vd=fo("transitionend"),wd=new Map,kd="abort auxClick cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel".split(" ");function mn(t,a){wd.set(t,a),f(a,[t])}for(bo=0;bo<kd.length;bo++)go=kd[bo],Ad=go.toLowerCase(),xd=go[0].toUpperCase()+go.slice(1),mn(Ad,"on"+xd);var go,Ad,xd,bo;mn(gd,"onAnimationEnd"),mn(bd,"onAnimationIteration"),mn(yd,"onAnimationStart"),mn("dblclick","onDoubleClick"),mn("focusin","onFocus"),mn("focusout","onBlur"),mn(vd,"onTransitionEnd"),g("onMouseEnter",["mouseout","mouseover"]),g("onMouseLeave",["mouseout","mouseover"]),g("onPointerEnter",["pointerout","pointerover"]),g("onPointerLeave",["pointerout","pointerover"]),f("onChange","change click focusin focusout input keydown keyup selectionchange".split(" ")),f("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" ")),f("onBeforeInput",["compositionend","keypress","textInput","paste"]),f("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" ")),f("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" ")),f("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var gr="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),ef=new Set("cancel close invalid load scroll toggle".split(" ").concat(gr));function Nd(t,a,n){var r=t.type||"unknown-event";t.currentTarget=n,zt(r,a,void 0,t),t.currentTarget=null}function Md(t,a){a=(a&4)!==0;for(var n=0;n<t.length;n++){var r=t[n],o=r.event;r=r.listeners;e:{var c=void 0;if(a)for(var m=r.length-1;0<=m;m--){var y=r[m],k=y.instance,I=y.currentTarget;if(y=y.listener,k!==c&&o.isPropagationStopped())break e;Nd(o,y,I),c=k}else for(m=0;m<r.length;m++){if(y=r[m],k=y.instance,I=y.currentTarget,y=y.listener,k!==c&&o.isPropagationStopped())break e;Nd(o,y,I),c=k}}}if(fa)throw t=qn,fa=!1,qn=null,t}function Ue(t,a){var n=a[tl];n===void 0&&(n=a[tl]=new Set);var r=t+"__bubble";n.has(r)||(Sd(a,t,2,!1),n.add(r))}function $s(t,a,n){var r=0;a&&(r|=4),Sd(n,t,r,a)}var yo="_reactListening"+Math.random().toString(36).slice(2);function br(t){if(!t[yo]){t[yo]=!0,p.forEach(function(n){n!=="selectionchange"&&(ef.has(n)||$s(n,!1,t),$s(n,!0,t))});var a=t.nodeType===9?t:t.ownerDocument;a===null||a[yo]||(a[yo]=!0,$s("selectionchange",!1,a))}}function Sd(t,a,n,r){switch($c(a)){case 1:var o=gh;break;case 4:o=bh;break;default:o=Ls}n=o.bind(null,a,n,t),o=void 0,!gi||a!=="touchstart"&&a!=="touchmove"&&a!=="wheel"||(o=!0),r?o!==void 0?t.addEventListener(a,n,{capture:!0,passive:o}):t.addEventListener(a,n,!0):o!==void 0?t.addEventListener(a,n,{passive:o}):t.addEventListener(a,n,!1)}function Gs(t,a,n,r,o){var c=r;if(!(a&1)&&!(a&2)&&r!==null)e:for(;;){if(r===null)return;var m=r.tag;if(m===3||m===4){var y=r.stateNode.containerInfo;if(y===o||y.nodeType===8&&y.parentNode===o)break;if(m===4)for(m=r.return;m!==null;){var k=m.tag;if((k===3||k===4)&&(k=m.stateNode.containerInfo,k===o||k.nodeType===8&&k.parentNode===o))return;m=m.return}for(;y!==null;){if(m=Yn(y),m===null)return;if(k=m.tag,k===5||k===6){r=c=m;continue e}y=y.parentNode}}r=r.return}rn(function(){var I=c,O=Fn(n),_=[];e:{var P=wd.get(t);if(P!==void 0){var Q=Ps,te=t;switch(t){case"keypress":if(lo(n)===0)break e;case"keydown":case"keyup":Q=zh;break;case"focusin":te="focus",Q=_s;break;case"focusout":te="blur",Q=_s;break;case"beforeblur":case"afterblur":Q=_s;break;case"click":if(n.button===2)break e;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":Q=Zc;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":Q=wh;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":Q=Dh;break;case gd:case bd:case yd:Q=xh;break;case vd:Q=Oh;break;case"scroll":Q=yh;break;case"wheel":Q=_h;break;case"copy":case"cut":case"paste":Q=Mh;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":Q=Xc}var ae=(a&4)!==0,Xe=!ae&&t==="scroll",E=ae?P!==null?P+"Capture":null:P;ae=[];for(var x=I,T;x!==null;){T=x;var W=T.stateNode;if(T.tag===5&&W!==null&&(T=W,E!==null&&(W=on(x,E),W!=null&&ae.push(yr(x,W,T)))),Xe)break;x=x.return}0<ae.length&&(P=new Q(P,te,null,n,O),_.push({event:P,listeners:ae}))}}if(!(a&7)){e:{if(P=t==="mouseover"||t==="pointerover",Q=t==="mouseout"||t==="pointerout",P&&n!==nn&&(te=n.relatedTarget||n.fromElement)&&(Yn(te)||te[_a]))break e;if((Q||P)&&(P=O.window===O?O:(P=O.ownerDocument)?P.defaultView||P.parentWindow:window,Q?(te=n.relatedTarget||n.toElement,Q=I,te=te?Yn(te):null,te!==null&&(Xe=bt(te),te!==Xe||te.tag!==5&&te.tag!==6)&&(te=null)):(Q=null,te=I),Q!==te)){if(ae=Zc,W="onMouseLeave",E="onMouseEnter",x="mouse",(t==="pointerout"||t==="pointerover")&&(ae=Xc,W="onPointerLeave",E="onPointerEnter",x="pointer"),Xe=Q==null?P:Mi(Q),T=te==null?P:Mi(te),P=new ae(W,x+"leave",Q,n,O),P.target=Xe,P.relatedTarget=T,W=null,Yn(O)===I&&(ae=new ae(E,x+"enter",te,n,O),ae.target=T,ae.relatedTarget=Xe,W=ae),Xe=W,Q&&te)t:{for(ae=Q,E=te,x=0,T=ae;T;T=xi(T))x++;for(T=0,W=E;W;W=xi(W))T++;for(;0<x-T;)ae=xi(ae),x--;for(;0<T-x;)E=xi(E),T--;for(;x--;){if(ae===E||E!==null&&ae===E.alternate)break t;ae=xi(ae),E=xi(E)}ae=null}else ae=null;Q!==null&&Ed(_,P,Q,ae,!1),te!==null&&Xe!==null&&Ed(_,Xe,te,ae,!0)}}
vendor: 5,965 bytes, lines 34-35
34e:{if(P=I?Mi(I):window,Q=P.nodeName&&P.nodeName.toLowerCase(),Q==="select"||Q==="input"&&P.type==="file")var ie=Yh;else if(rd(P))if(sd)ie=Qh;else{ie=$h;var ce=Kh}else(Q=P.nodeName)&&Q.toLowerCase()==="input"&&(P.type==="checkbox"||P.type==="radio")&&(ie=Gh);if(ie&&(ie=ie(t,I))){od(_,ie,n,O);break e}ce&&ce(t,P,I),t==="focusout"&&(ce=P._wrapperState)&&ce.controlled&&P.type==="number"&&Ln(P,"number",P.value)}switch(ce=I?Mi(I):window,t){case"focusin":(rd(ce)||ce.contentEditable==="true")&&(ki=ce,Hs=I,fr=null);break;case"focusout":fr=Hs=ki=null;break;case"mousedown":Ys=!0;break;case"contextmenu":case"mouseup":case"dragend":Ys=!1,hd(_,n,O);break;case"selectionchange":if(Xh)break;case"keydown":case"keyup":hd(_,n,O)}var de;if(qs)e:{switch(t){case"compositionstart":var me="onCompositionStart";break e;case"compositionend":me="onCompositionEnd";break e;case"compositionupdate":me="onCompositionUpdate";break e}me=void 0}else wi?nd(t,n)&&(me="onCompositionEnd"):t==="keydown"&&n.keyCode===229&&(me="onCompositionStart");me&&(ed&&n.locale!=="ko"&&(wi||me!=="onCompositionStart"?me==="onCompositionEnd"&&wi&&(de=Gc()):(un=O,Ds="value"in un?un.value:un.textContent,wi=!0)),ce=vo(I,me),0<ce.length&&(me=new Jc(me,t,null,n,O),_.push({event:me,listeners:ce}),de?me.data=de:(de=id(n),de!==null&&(me.data=de)))),(de=qh?Wh(t,n):Vh(t,n))&&(I=vo(I,"onBeforeInput"),0<I.length&&(O=new Jc("onBeforeInput","beforeinput",null,n,O),_.push({event:O,listeners:I}),O.data=de))}Md(_,a)})}function yr(t,a,n){return{instance:t,listener:a,currentTarget:n}}function vo(t,a){for(var n=a+"Capture",r=[];t!==null;){var o=t,c=o.stateNode;o.tag===5&&c!==null&&(o=c,c=on(t,n),c!=null&&r.unshift(yr(t,c,o)),c=on(t,a),c!=null&&r.push(yr(t,c,o))),t=t.return}return r}function xi(t){if(t===null)return null;do t=t.return;while(t&&t.tag!==5);return t||null}function Ed(t,a,n,r,o){for(var c=a._reactName,m=[];n!==null&&n!==r;){var y=n,k=y.alternate,I=y.stateNode;if(k!==null&&k===r)break;y.tag===5&&I!==null&&(y=I,o?(k=on(n,c),k!=null&&m.unshift(yr(n,k,y))):o||(k=on(n,c),k!=null&&m.push(yr(n,k,y)))),n=n.return}m.length!==0&&t.push({event:a,listeners:m})}var tf=/\r\n?/g,af=/\u0000|\uFFFD/g;function Cd(t){return(typeof t=="string"?t:""+t).replace(tf,` 35`).replace(af,"")}function wo(t,a,n){if(a=Cd(a),Cd(t)!==a&&n)throw Error(d(425))}function ko(){}var Qs=null,Zs=null;function Js(t,a){return t==="textarea"||t==="noscript"||typeof a.children=="string"||typeof a.children=="number"||typeof a.dangerouslySetInnerHTML=="object"&&a.dangerouslySetInnerHTML!==null&&a.dangerouslySetInnerHTML.__html!=null}var Xs=typeof setTimeout=="function"?setTimeout:void 0,nf=typeof clearTimeout=="function"?clearTimeout:void 0,Td=typeof Promise=="function"?Promise:void 0,rf=typeof queueMicrotask=="function"?queueMicrotask:typeof Td<"u"?function(t){return Td.resolve(null).then(t).catch(of)}:Xs;function of(t){setTimeout(function(){throw t})}function el(t,a){var n=a,r=0;do{var o=n.nextSibling;if(t.removeChild(n),o&&o.nodeType===8)if(n=o.data,n==="/$"){if(r===0){t.removeChild(o),lr(a);return}r--}else n!=="$"&&n!=="$?"&&n!=="$!"||r++;n=o}while(n);lr(a)}function hn(t){for(;t!=null;t=t.nextSibling){var a=t.nodeType;if(a===1||a===3)break;if(a===8){if(a=t.data,a==="$"||a==="$!"||a==="$?")break;if(a==="/$")return null}}return t}function Id(t){t=t.previousSibling;for(var a=0;t;){if(t.nodeType===8){var n=t.data;if(n==="$"||n==="$!"||n==="$?"){if(a===0)return t;a--}else n==="/$"&&a++}t=t.previousSibling}return null}var Ni=Math.random().toString(36).slice(2),Ca="__reactFiber$"+Ni,vr="__reactProps$"+Ni,_a="__reactContainer$"+Ni,tl="__reactEvents$"+Ni,sf="__reactListeners$"+Ni,lf="__reactHandles$"+Ni;function Yn(t){var a=t[Ca];if(a)return a;for(var n=t.parentNode;n;){if(a=n[_a]||n[Ca]){if(n=a.alternate,a.child!==null||n!==null&&n.child!==null)for(t=Id(t);t!==null;){if(n=t[Ca])return n;t=Id(t)}return a}t=n,n=t.parentNode}return null}function wr(t){return t=t[Ca]||t[_a],!t||t.tag!==5&&t.tag!==6&&t.tag!==13&&t.tag!==3?null:t}function Mi(t){if(t.tag===5||t.tag===6)return t.stateNode;throw Error(d(33))}function Ao(t){return t[vr]||null}var al=[],Si=-1;function fn(t){return{current:t}}function qe(t){0>Si||(t.current=al[Si],al[Si]=null,Si--)}function Oe(t,a){Si++,al[Si]=t.current,t.current=a}var gn={},yt=fn(gn),jt=fn(!1),Kn=gn;function Ei(t,a){var n=t.type.contextTypes;if(!n)return gn;var r=t.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===a)return r.__reactInternalMemoizedMaskedChildContext;var o={},c;for(c in n)o[c]=a[c];return r&&(t=t.stateNode,t.__reactInternalMemoizedUnmaskedChildContext=a,t.__reactInternalMemoizedMaskedChildContext=o),o}function Dt(t){return t=t.childContextTypes,t!=null}function xo(){qe(jt),qe(yt)}function Rd(t,a,n){if(yt.current!==gn)throw Error(d(168));Oe(yt,a),Oe(jt,n)}function zd(t,a,n){var r=t.stateNode;if(a=a.childContextTypes,typeof r.getChildContext!="function")return n;r=r.getChildContext();for(var o in r)if(!(o in a))throw Error(d(108,Ve(t)||"Unknown",o));return oe({},n,r)}function No(t){return t=(t=t.stateNode)&&t.__reactInternalMemoizedMergedChildContext||gn,Kn=yt.current,Oe(yt,t),Oe(jt,jt.current),!0}function Ld(t,a,n){var r=t.stateNode;if(!r)throw Error(d(169));n?(t=zd(t,a,Kn),r.__reactInternalMemoizedMergedChildContext=t,qe(jt),qe(yt),Oe(yt,t)):qe(jt),Oe(jt,n)}var Ua=null,Mo=!1,nl=!1;function jd(t){Ua===null?Ua=[t]:Ua.push(t)}function cf(t){Mo=!0,jd(t)}function bn(){if(!nl&&Ua!==null){nl=!0;var t=0,a=Ie;try{var n=Ua;for(Ie=1;t<n.length;t++){var r=n[t];do r=r(!0);while(r!==null)}Ua=null,Mo=!1}catch(o){throw Ua!==null&&(Ua=Ua.slice(t+1)),Ea(Te,bn),o}finally{Ie=a,nl=!1}}return null}var Ci=[],Ti=0,So=null,Eo=0,aa=[],na=0,$n=null,qa=1,Wa="";function Gn(t,a){Ci[Ti++]=Eo,Ci[Ti++]=So,So=t,Eo=a}function Dd(t,a,n){aa[na++]=qa,aa[na++]=Wa,aa[na++]=$n,$n=t;var r=qa;t=Wa;var o=32-Lt(r)-1;r&=~(1<<o),n+=1;var c=32-Lt(a)+o;if(30<c){var m=o-o%5;c=(r&(1<<m)-1).toString(32),r>>=m,o-=m,qa=1<<32-Lt(a)+o|n<<o|r,Wa=c+t}else qa=1<<c|n<<o|r,Wa=t}
vendor: 14,882 bytes, line 35
35function il(t){t.return!==null&&(Gn(t,1),Dd(t,1,0))}function rl(t){for(;t===So;)So=Ci[--Ti],Ci[Ti]=null,Eo=Ci[--Ti],Ci[Ti]=null;for(;t===$n;)$n=aa[--na],aa[na]=null,Wa=aa[--na],aa[na]=null,qa=aa[--na],aa[na]=null}var Qt=null,Zt=null,Be=!1,ba=null;function Pd(t,a){var n=sa(5,null,null,0);n.elementType="DELETED",n.stateNode=a,n.return=t,a=t.deletions,a===null?(t.deletions=[n],t.flags|=16):a.push(n)}function Od(t,a){switch(t.tag){case 5:var n=t.type;return a=a.nodeType!==1||n.toLowerCase()!==a.nodeName.toLowerCase()?null:a,a!==null?(t.stateNode=a,Qt=t,Zt=hn(a.firstChild),!0):!1;case 6:return a=t.pendingProps===""||a.nodeType!==3?null:a,a!==null?(t.stateNode=a,Qt=t,Zt=null,!0):!1;case 13:return a=a.nodeType!==8?null:a,a!==null?(n=$n!==null?{id:qa,overflow:Wa}:null,t.memoizedState={dehydrated:a,treeContext:n,retryLane:1073741824},n=sa(18,null,null,0),n.stateNode=a,n.return=t,t.child=n,Qt=t,Zt=null,!0):!1;default:return!1}}function ol(t){return(t.mode&1)!==0&&(t.flags&128)===0}function sl(t){if(Be){var a=Zt;if(a){var n=a;if(!Od(t,a)){if(ol(t))throw Error(d(418));a=hn(n.nextSibling);var r=Qt;a&&Od(t,a)?Pd(r,n):(t.flags=t.flags&-4097|2,Be=!1,Qt=t)}}else{if(ol(t))throw Error(d(418));t.flags=t.flags&-4097|2,Be=!1,Qt=t}}}function Fd(t){for(t=t.return;t!==null&&t.tag!==5&&t.tag!==3&&t.tag!==13;)t=t.return;Qt=t}function Co(t){if(t!==Qt)return!1;if(!Be)return Fd(t),Be=!0,!1;var a;if((a=t.tag!==3)&&!(a=t.tag!==5)&&(a=t.type,a=a!=="head"&&a!=="body"&&!Js(t.type,t.memoizedProps)),a&&(a=Zt)){if(ol(t))throw _d(),Error(d(418));for(;a;)Pd(t,a),a=hn(a.nextSibling)}if(Fd(t),t.tag===13){if(t=t.memoizedState,t=t!==null?t.dehydrated:null,!t)throw Error(d(317));e:{for(t=t.nextSibling,a=0;t;){if(t.nodeType===8){var n=t.data;if(n==="/$"){if(a===0){Zt=hn(t.nextSibling);break e}a--}else n!=="$"&&n!=="$!"&&n!=="$?"||a++}t=t.nextSibling}Zt=null}}else Zt=Qt?hn(t.stateNode.nextSibling):null;return!0}function _d(){for(var t=Zt;t;)t=hn(t.nextSibling)}function Ii(){Zt=Qt=null,Be=!1}function ll(t){ba===null?ba=[t]:ba.push(t)}var df=D.ReactCurrentBatchConfig;function kr(t,a,n){if(t=n.ref,t!==null&&typeof t!="function"&&typeof t!="object"){if(n._owner){if(n=n._owner,n){if(n.tag!==1)throw Error(d(309));var r=n.stateNode}if(!r)throw Error(d(147,t));var o=r,c=""+t;return a!==null&&a.ref!==null&&typeof a.ref=="function"&&a.ref._stringRef===c?a.ref:(a=function(m){var y=o.refs;m===null?delete y[c]:y[c]=m},a._stringRef=c,a)}if(typeof t!="string")throw Error(d(284));if(!n._owner)throw Error(d(290,t))}return t}function To(t,a){throw t=Object.prototype.toString.call(a),Error(d(31,t==="[object Object]"?"object with keys {"+Object.keys(a).join(", ")+"}":t))}function Ud(t){var a=t._init;return a(t._payload)}function qd(t){function a(E,x){if(t){var T=E.deletions;T===null?(E.deletions=[x],E.flags|=16):T.push(x)}}function n(E,x){if(!t)return null;for(;x!==null;)a(E,x),x=x.sibling;return null}function r(E,x){for(E=new Map;x!==null;)x.key!==null?E.set(x.key,x):E.set(x.index,x),x=x.sibling;return E}function o(E,x){return E=Mn(E,x),E.index=0,E.sibling=null,E}function c(E,x,T){return E.index=T,t?(T=E.alternate,T!==null?(T=T.index,T<x?(E.flags|=2,x):T):(E.flags|=2,x)):(E.flags|=1048576,x)}function m(E){return t&&E.alternate===null&&(E.flags|=2),E}function y(E,x,T,W){return x===null||x.tag!==6?(x=Jl(T,E.mode,W),x.return=E,x):(x=o(x,T),x.return=E,x)}function k(E,x,T,W){var ie=T.type;return ie===ne?O(E,x,T.props.children,W,T.key):x!==null&&(x.elementType===ie||typeof ie=="object"&&ie!==null&&ie.$$typeof===Le&&Ud(ie)===x.type)?(W=o(x,T.props),W.ref=kr(E,x,T),W.return=E,W):(W=Xo(T.type,T.key,T.props,null,E.mode,W),W.ref=kr(E,x,T),W.return=E,W)}function I(E,x,T,W){return x===null||x.tag!==4||x.stateNode.containerInfo!==T.containerInfo||x.stateNode.implementation!==T.implementation?(x=Xl(T,E.mode,W),x.return=E,x):(x=o(x,T.children||[]),x.return=E,x)}function O(E,x,T,W,ie){return x===null||x.tag!==7?(x=ni(T,E.mode,W,ie),x.return=E,x):(x=o(x,T),x.return=E,x)}function _(E,x,T){if(typeof x=="string"&&x!==""||typeof x=="number")return x=Jl(""+x,E.mode,T),x.return=E,x;if(typeof x=="object"&&x!==null){switch(x.$$typeof){case L:return T=Xo(x.type,x.key,x.props,null,E.mode,T),T.ref=kr(E,null,x),T.return=E,T;case B:return x=Xl(x,E.mode,T),x.return=E,x;case Le:var W=x._init;return _(E,W(x._payload),T)}if(Yt(x)||re(x))return x=ni(x,E.mode,T,null),x.return=E,x;To(E,x)}return null}function P(E,x,T,W){var ie=x!==null?x.key:null;if(typeof T=="string"&&T!==""||typeof T=="number")return ie!==null?null:y(E,x,""+T,W);if(typeof T=="object"&&T!==null){switch(T.$$typeof){case L:return T.key===ie?k(E,x,T,W):null;case B:return T.key===ie?I(E,x,T,W):null;case Le:return ie=T._init,P(E,x,ie(T._payload),W)}if(Yt(T)||re(T))return ie!==null?null:O(E,x,T,W,null);To(E,T)}return null}function Q(E,x,T,W,ie){if(typeof W=="string"&&W!==""||typeof W=="number")return E=E.get(T)||null,y(x,E,""+W,ie);if(typeof W=="object"&&W!==null){switch(W.$$typeof){case L:return E=E.get(W.key===null?T:W.key)||null,k(x,E,W,ie);case B:return E=E.get(W.key===null?T:W.key)||null,I(x,E,W,ie);case Le:var ce=W._init;return Q(E,x,T,ce(W._payload),ie)}if(Yt(W)||re(W))return E=E.get(T)||null,O(x,E,W,ie,null);To(x,W)}return null}function te(E,x,T,W){for(var ie=null,ce=null,de=x,me=x=0,st=null;de!==null&&me<T.length;me++){de.index>me?(st=de,de=null):st=de.sibling;var Ne=P(E,de,T[me],W);if(Ne===null){de===null&&(de=st);break}t&&de&&Ne.alternate===null&&a(E,de),x=c(Ne,x,me),ce===null?ie=Ne:ce.sibling=Ne,ce=Ne,de=st}if(me===T.length)return n(E,de),Be&&Gn(E,me),ie;if(de===null){for(;me<T.length;me++)de=_(E,T[me],W),de!==null&&(x=c(de,x,me),ce===null?ie=de:ce.sibling=de,ce=de);return Be&&Gn(E,me),ie}for(de=r(E,de);me<T.length;me++)st=Q(de,E,me,T[me],W),st!==null&&(t&&st.alternate!==null&&de.delete(st.key===null?me:st.key),x=c(st,x,me),ce===null?ie=st:ce.sibling=st,ce=st);return t&&de.forEach(function(Sn){return a(E,Sn)}),Be&&Gn(E,me),ie}function ae(E,x,T,W){var ie=re(T);if(typeof ie!="function")throw Error(d(150));if(T=ie.call(T),T==null)throw Error(d(151));for(var ce=ie=null,de=x,me=x=0,st=null,Ne=T.next();de!==null&&!Ne.done;me++,Ne=T.next()){de.index>me?(st=de,de=null):st=de.sibling;var Sn=P(E,de,Ne.value,W);if(Sn===null){de===null&&(de=st);break}t&&de&&Sn.alternate===null&&a(E,de),x=c(Sn,x,me),ce===null?ie=Sn:ce.sibling=Sn,ce=Sn,de=st}if(Ne.done)return n(E,de),Be&&Gn(E,me),ie;if(de===null){for(;!Ne.done;me++,Ne=T.next())Ne=_(E,Ne.value,W),Ne!==null&&(x=c(Ne,x,me),ce===null?ie=Ne:ce.sibling=Ne,ce=Ne);return Be&&Gn(E,me),ie}for(de=r(E,de);!Ne.done;me++,Ne=T.next())Ne=Q(de,E,me,Ne.value,W),Ne!==null&&(t&&Ne.alternate!==null&&de.delete(Ne.key===null?me:Ne.key),x=c(Ne,x,me),ce===null?ie=Ne:ce.sibling=Ne,ce=Ne);return t&&de.forEach(function(Vf){return a(E,Vf)}),Be&&Gn(E,me),ie}function Xe(E,x,T,W){if(typeof T=="object"&&T!==null&&T.type===ne&&T.key===null&&(T=T.props.children),typeof T=="object"&&T!==null){switch(T.$$typeof){case L:e:{for(var ie=T.key,ce=x;ce!==null;){if(ce.key===ie){if(ie=T.type,ie===ne){if(ce.tag===7){n(E,ce.sibling),x=o(ce,T.props.children),x.return=E,E=x;break e}}else if(ce.elementType===ie||typeof ie=="object"&&ie!==null&&ie.$$typeof===Le&&Ud(ie)===ce.type){n(E,ce.sibling),x=o(ce,T.props),x.ref=kr(E,ce,T),x.return=E,E=x;break e}n(E,ce);break}else a(E,ce);ce=ce.sibling}T.type===ne?(x=ni(T.props.children,E.mode,W,T.key),x.return=E,E=x):(W=Xo(T.type,T.key,T.props,null,E.mode,W),W.ref=kr(E,x,T),W.return=E,E=W)}return m(E);case B:e:{for(ce=T.key;x!==null;){if(x.key===ce)if(x.tag===4&&x.stateNode.containerInfo===T.containerInfo&&x.stateNode.implementation===T.implementation){n(E,x.sibling),x=o(x,T.children||[]),x.return=E,E=x;break e}else{n(E,x);break}else a(E,x);x=x.sibling}x=Xl(T,E.mode,W),x.return=E,E=x}return m(E);case Le:return ce=T._init,Xe(E,x,ce(T._payload),W)}if(Yt(T))return te(E,x,T,W);if(re(T))return ae(E,x,T,W);To(E,T)}return typeof T=="string"&&T!==""||typeof T=="number"?(T=""+T,x!==null&&x.tag===6?(n(E,x.sibling),x=o(x,T),x.return=E,E=x):(n(E,x),x=Jl(T,E.mode,W),x.return=E,E=x),m(E)):n(E,x)}return Xe}var Ri=qd(!0),Wd=qd(!1),Io=fn(null),Ro=null,zi=null,cl=null;function dl(){cl=zi=Ro=null}function pl(t){var a=Io.current;qe(Io),t._currentValue=a}function ul(t,a,n){for(;t!==null;){var r=t.alternate;if((t.childLanes&a)!==a?(t.childLanes|=a,r!==null&&(r.childLanes|=a)):r!==null&&(r.childLanes&a)!==a&&(r.childLanes|=a),t===n)break;t=t.return}}function Li(t,a){Ro=t,cl=zi=null,t=t.dependencies,t!==null&&t.firstContext!==null&&(t.lanes&a&&(Pt=!0),t.firstContext=null)}function ia(t){var a=t._currentValue;if(cl!==t)if(t={context:t,memoizedValue:a,next:null},zi===null){if(Ro===null)throw Error(d(308));zi=t,Ro.dependencies={lanes:0,firstContext:t}}else zi=zi.next=t;return a}var Qn=null;function ml(t){Qn===null?Qn=[t]:Qn.push(t)}function Vd(t,a,n,r){var o=a.interleaved;return o===null?(n.next=n,ml(a)):(n.next=o.next,o.next=n),a.interleaved=n,Va(t,r)}function Va(t,a){t.lanes|=a;var n=t.alternate;for(n!==null&&(n.lanes|=a),n=t,t=t.return;t!==null;)t.childLanes|=a,n=t.alternate,n!==null&&(n.childLanes|=a),n=t,t=t.return;return n.tag===3?n.stateNode:null}var yn=!1;function hl(t){t.updateQueue={baseState:t.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function Bd(t,a){t=t.updateQueue,a.updateQueue===t&&(a.updateQueue={baseState:t.baseState,firstBaseUpdate:t.firstBaseUpdate,lastBaseUpdate:t.lastBaseUpdate,shared:t.shared,effects:t.effects})}function Ba(t,a){return{eventTime:t,lane:a,tag:0,payload:null,callback:null,next:null}}function vn(t,a,n){var r=t.updateQueue;if(r===null)return null;if(r=r.shared,ke&2){var o=r.pending;return o===null?a.next=a:(a.next=o.next,o.next=a),r.pending=a,Va(t,n)}return o=r.interleaved,o===null?(a.next=a,ml(r)):(a.next=o.next,o.next=a),r.interleaved=a,Va(t,n)}function zo(t,a,n){if(a=a.updateQueue,a!==null&&(a=a.shared,(n&4194240)!==0)){var r=a.lanes;r&=t.pendingLanes,n|=r,a.lanes=n,Is(t,n)}}function Hd(t,a){var n=t.updateQueue,r=t.alternate;if(r!==null&&(r=r.updateQueue,n===r)){var o=null,c=null;if(n=n.firstBaseUpdate,n!==null){do{var m={eventTime:n.eventTime,lane:n.lane,tag:n.tag,payload:n.payload,callback:n.callback,next:null};c===null?o=c=m:c=c.next=m,n=n.next}while(n!==null);c===null?o=c=a:c=c.next=a}else o=c=a;n={baseState:r.baseState,firstBaseUpdate:o,lastBaseUpdate:c,shared:r.shared,effects:r.effects},t.updateQueue=n;return}t=n.lastBaseUpdate,t===null?n.firstBaseUpdate=a:t.next=a,n.lastBaseUpdate=a}function Lo(t,a,n,r){var o=t.updateQueue;yn=!1;var c=o.firstBaseUpdate,m=o.lastBaseUpdate,y=o.shared.pending;if(y!==null){o.shared.pending=null;var k=y,I=k.next;k.next=null,m===null?c=I:m.next=I,m=k;var O=t.alternate;O!==null&&(O=O.updateQueue,y=O.lastBaseUpdate,y!==m&&(y===null?O.firstBaseUpdate=I:y.next=I,O.lastBaseUpdate=k))}if(c!==null){var _=o.baseState;m=0,O=I=k=null,y=c;do{var P=y.lane,Q=y.eventTime;if((r&P)===P){O!==null&&(O=O.next={eventTime:Q,lane:0,tag:y.tag,payload:y.payload,callback:y.callback,next:null});e:{var te=t,ae=y;switch(P=a,Q=n,ae.tag){case 1:if(te=ae.payload,typeof te=="function"){_=te.call(Q,_,P);break e}_=te;break e;case 3:te.flags=te.flags&-65537|128;case 0:if(te=ae.payload,P=typeof te=="function"?te.call(Q,_,P):te,P==null)break e;_=oe({},_,P);break e;case 2:yn=!0}}y.callback!==null&&y.lane!==0&&(t.flags|=64,P=o.effects,P===null?o.effects=[y]:P.push(y))}else Q={eventTime:Q,lane:P,tag:y.tag,payload:y.payload,callback:y.callback,next:null},O===null?(I=O=Q,k=_):O=O.next=Q,m|=P;if(y=y.next,y===null){if(y=o.shared.pending,y===null)break;P=y,y=P.next,P.next=null,o.lastBaseUpdate=P,o.shared.pending=null}}while(!0);if(O===null&&(k=_),o.baseState=k,o.firstBaseUpdate=I,o.lastBaseUpdate=O,a=o.shared.interleaved,a!==null){o=a;do m|=o.lane,o=o.next;while(o!==a)}else c===null&&(o.shared.lanes=0);Xn|=m,t.lanes=m,t.memoizedState=_}}function Yd(t,a,n){if(t=a.effects,a.effects=null,t!==null)for(a=0;a<t.length;a++){var r=t[a],o=r.callback;if(o!==null){if(r.callback=null,r=n,typeof o!="function")throw Error(d(191,o));o.call(r)}}}var Ar={},Ta=fn(Ar),xr=fn(Ar),Nr=fn(Ar);function Zn(t){if(t===Ar)throw Error(d(174));return t}function fl(t,a){switch(Oe(Nr,a),Oe(xr,t),Oe(Ta,Ar),t=a.nodeType,t){case 9:case 11:a=(a=a.documentElement)?a.namespaceURI:mi(null,"");break;default:t=t===8?a.parentNode:a,a=t.namespaceURI||null,t=t.tagName,a=mi(a,t)}qe(Ta),Oe(Ta,a)}function ji(){qe(Ta),qe(xr),qe(Nr)}function Kd(t){Zn(Nr.current);var a=Zn(Ta.current),n=mi(a,t.type);a!==n&&(Oe(xr,t),Oe(Ta,n))}function gl(t){xr.current===t&&(qe(Ta),qe(xr))}var Ke=fn(0);function jo(t){for(var a=t;a!==null;){if(a.tag===13){var n=a.memoizedState;if(n!==null&&(n=n.dehydrated,n===null||n.data==="$?"||n.data==="$!"))return a}else if(a.tag===19&&a.memoizedProps.revealOrder!==void 0){if(a.flags&128)return a}else if(a.child!==null){a.child.return=a,a=a.child;continue}if(a===t)break;for(;a.sibling===null;){if(a.return===null||a.return===t)return null;a=a.return}a.sibling.return=a.return,a=a.sibling}return null}var bl=[];function yl(){for(var t=0;t<bl.length;t++)bl[t]._workInProgressVersionPrimary=null;bl.length=0}var Do=D.ReactCurrentDispatcher,vl=D.ReactCurrentBatchConfig,Jn=0,$e=null,at=null,rt=null,Po=!1,Mr=!1,Sr=0,pf=0;function vt(){throw Error(d(321))}function wl(t,a){if(a===null)return!1;for(var n=0;n<a.length&&n<t.length;n++)if(!ga(t[n],a[n]))return!1;return!0}function kl(t,a,n,r,o,c){if(Jn=c,$e=a,a.memoizedState=null,a.updateQueue=null,a.lanes=0,Do.current=t===null||t.memoizedState===null?ff:gf,t=n(r,o),Mr){c=0;do{if(Mr=!1,Sr=0,25<=c)throw Error(d(301));c+=1,rt=at=null,a.updateQueue=null,Do.current=bf,t=n(r,o)}while(Mr)}if(Do.current=_o,a=at!==null&&at.next!==null,Jn=0,rt=at=$e=null,Po=!1,a)throw Error(d(300));return t}function Al(){var t=Sr!==0;return Sr=0,t}function Ia(){var t={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return rt===null?$e.memoizedState=rt=t:rt=rt.next=t,rt}function ra(){if(at===null){var t=$e.alternate;t=t!==null?t.memoizedState:null}else t=at.next;var a=rt===null?$e.memoizedState:rt.next;if(a!==null)rt=a,at=t;else{if(t===null)throw Error(d(310));at=t,t={memoizedState:at.memoizedState,baseState:at.baseState,baseQueue:at.baseQueue,queue:at.queue,next:null},rt===null?$e.memoizedState=rt=t:rt=rt.next=t}return rt}function Er(t,a){return typeof a=="function"?a(t):a}function xl(t){var a=ra(),n=a.queue;if(n===null)throw Error(d(311));n.lastRenderedReducer=t;var r=at,o=r.baseQueue,c=n.pending;if(c!==null){if(o!==null){var m=o.next;o.next=c.next,c.next=m}r.baseQueue=o=c,n.pending=null}if(o!==null){c=o.next,r=r.baseState;var y=m=null,k=null,I=c;do{var O=I.lane;if((Jn&O)===O)k!==null&&(k=k.next={lane:0,action:I.action,hasEagerState:I.hasEagerState,eagerState:I.eagerState,next:null}),r=I.hasEagerState?I.eagerState:t(r,I.action);else{var _={lane:O,action:I.action,hasEagerState:I.hasEagerState,eagerState:I.eagerState,next:null};
vendor: 5,215 bytes, line 35
35k===null?(y=k=_,m=r):k=k.next=_,$e.lanes|=O,Xn|=O}I=I.next}while(I!==null&&I!==c);k===null?m=r:k.next=y,ga(r,a.memoizedState)||(Pt=!0),a.memoizedState=r,a.baseState=m,a.baseQueue=k,n.lastRenderedState=r}if(t=n.interleaved,t!==null){o=t;do c=o.lane,$e.lanes|=c,Xn|=c,o=o.next;while(o!==t)}else o===null&&(n.lanes=0);return[a.memoizedState,n.dispatch]}function Nl(t){var a=ra(),n=a.queue;if(n===null)throw Error(d(311));n.lastRenderedReducer=t;var r=n.dispatch,o=n.pending,c=a.memoizedState;if(o!==null){n.pending=null;var m=o=o.next;do c=t(c,m.action),m=m.next;while(m!==o);ga(c,a.memoizedState)||(Pt=!0),a.memoizedState=c,a.baseQueue===null&&(a.baseState=c),n.lastRenderedState=c}return[c,r]}function $d(){}function Gd(t,a){var n=$e,r=ra(),o=a(),c=!ga(r.memoizedState,o);if(c&&(r.memoizedState=o,Pt=!0),r=r.queue,Ml(Jd.bind(null,n,r,t),[t]),r.getSnapshot!==a||c||rt!==null&&rt.memoizedState.tag&1){if(n.flags|=2048,Cr(9,Zd.bind(null,n,r,o,a),void 0,null),ot===null)throw Error(d(349));Jn&30||Qd(n,a,o)}return o}function Qd(t,a,n){t.flags|=16384,t={getSnapshot:a,value:n},a=$e.updateQueue,a===null?(a={lastEffect:null,stores:null},$e.updateQueue=a,a.stores=[t]):(n=a.stores,n===null?a.stores=[t]:n.push(t))}function Zd(t,a,n,r){a.value=n,a.getSnapshot=r,Xd(a)&&ep(t)}function Jd(t,a,n){return n(function(){Xd(a)&&ep(t)})}function Xd(t){var a=t.getSnapshot;t=t.value;try{var n=a();return!ga(t,n)}catch{return!0}}function ep(t){var a=Va(t,1);a!==null&&ka(a,t,1,-1)}function tp(t){var a=Ia();return typeof t=="function"&&(t=t()),a.memoizedState=a.baseState=t,t={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:Er,lastRenderedState:t},a.queue=t,t=t.dispatch=hf.bind(null,$e,t),[a.memoizedState,t]}function Cr(t,a,n,r){return t={tag:t,create:a,destroy:n,deps:r,next:null},a=$e.updateQueue,a===null?(a={lastEffect:null,stores:null},$e.updateQueue=a,a.lastEffect=t.next=t):(n=a.lastEffect,n===null?a.lastEffect=t.next=t:(r=n.next,n.next=t,t.next=r,a.lastEffect=t)),t}function ap(){return ra().memoizedState}function Oo(t,a,n,r){var o=Ia();$e.flags|=t,o.memoizedState=Cr(1|a,n,void 0,r===void 0?null:r)}function Fo(t,a,n,r){var o=ra();r=r===void 0?null:r;var c=void 0;if(at!==null){var m=at.memoizedState;if(c=m.destroy,r!==null&&wl(r,m.deps)){o.memoizedState=Cr(a,n,c,r);return}}$e.flags|=t,o.memoizedState=Cr(1|a,n,c,r)}function np(t,a){return Oo(8390656,8,t,a)}function Ml(t,a){return Fo(2048,8,t,a)}function ip(t,a){return Fo(4,2,t,a)}function rp(t,a){return Fo(4,4,t,a)}function op(t,a){if(typeof a=="function")return t=t(),a(t),function(){a(null)};if(a!=null)return t=t(),a.current=t,function(){a.current=null}}function sp(t,a,n){return n=n!=null?n.concat([t]):null,Fo(4,4,op.bind(null,a,t),n)}function Sl(){}function lp(t,a){var n=ra();a=a===void 0?null:a;var r=n.memoizedState;return r!==null&&a!==null&&wl(a,r[1])?r[0]:(n.memoizedState=[t,a],t)}function cp(t,a){var n=ra();a=a===void 0?null:a;var r=n.memoizedState;return r!==null&&a!==null&&wl(a,r[1])?r[0]:(t=t(),n.memoizedState=[t,a],t)}function dp(t,a,n){return Jn&21?(ga(n,a)||(n=_c(),$e.lanes|=n,Xn|=n,t.baseState=!0),a):(t.baseState&&(t.baseState=!1,Pt=!0),t.memoizedState=n)}function uf(t,a){var n=Ie;Ie=n!==0&&4>n?n:4,t(!0);var r=vl.transition;vl.transition={};try{t(!1),a()}finally{Ie=n,vl.transition=r}}function pp(){return ra().memoizedState}function mf(t,a,n){var r=xn(t);if(n={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null},up(t))mp(a,n);else if(n=Vd(t,a,n,r),n!==null){var o=Et();ka(n,t,r,o),hp(n,a,r)}}function hf(t,a,n){var r=xn(t),o={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null};if(up(t))mp(a,o);else{var c=t.alternate;if(t.lanes===0&&(c===null||c.lanes===0)&&(c=a.lastRenderedReducer,c!==null))try{var m=a.lastRenderedState,y=c(m,n);if(o.hasEagerState=!0,o.eagerState=y,ga(y,m)){var k=a.interleaved;k===null?(o.next=o,ml(a)):(o.next=k.next,k.next=o),a.interleaved=o;return}}catch{}finally{}n=Vd(t,a,o,r),n!==null&&(o=Et(),ka(n,t,r,o),hp(n,a,r))}}function up(t){var a=t.alternate;return t===$e||a!==null&&a===$e}function mp(t,a){Mr=Po=!0;var n=t.pending;n===null?a.next=a:(a.next=n.next,n.next=a),t.pending=a}function hp(t,a,n){if(n&4194240){var r=a.lanes;r&=t.pendingLanes,n|=r,a.lanes=n,Is(t,n)}}var _o={readContext:ia,useCallback:vt,useContext:vt,useEffect:vt,useImperativeHandle:vt,useInsertionEffect:vt,useLayoutEffect:vt,useMemo:vt,useReducer:vt,useRef:vt,useState:vt,useDebugValue:vt,useDeferredValue:vt,useTransition:vt,useMutableSource:vt,useSyncExternalStore:vt,useId:vt,unstable_isNewReconciler:!1},ff={readContext:ia,useCallback:function(t,a){return Ia().memoizedState=[t,a===void 0?null:a],t},useContext:ia,useEffect:np,useImperativeHandle:function(t,a,n){return n=n!=null?n.concat([t]):null,Oo(4194308,4,op.bind(null,a,t),n)},useLayoutEffect:function(t,a){return Oo(4194308,4,t,a)},useInsertionEffect:function(t,a){return Oo(4,2,t,a)},useMemo:function(t,a){var n=Ia();return a=a===void 0?null:a,t=t(),n.memoizedState=[t,a],t},useReducer:function(t,a,n){var r=Ia();return a=n!==void 0?n(a):a,r.memoizedState=r.baseState=a,t={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:t,lastRenderedState:a},r.queue=t,t=t.dispatch=mf.bind(null,$e,t),[r.memoizedState,t]}
vendor: 7,430 bytes, lines 35-37
35,useRef:function(t){var a=Ia();return t={current:t},a.memoizedState=t},useState:tp,useDebugValue:Sl,useDeferredValue:function(t){return Ia().memoizedState=t},useTransition:function(){var t=tp(!1),a=t[0];return t=uf.bind(null,t[1]),Ia().memoizedState=t,[a,t]},useMutableSource:function(){},useSyncExternalStore:function(t,a,n){var r=$e,o=Ia();if(Be){if(n===void 0)throw Error(d(407));n=n()}else{if(n=a(),ot===null)throw Error(d(349));Jn&30||Qd(r,a,n)}o.memoizedState=n;var c={value:n,getSnapshot:a};return o.queue=c,np(Jd.bind(null,r,c,t),[t]),r.flags|=2048,Cr(9,Zd.bind(null,r,c,n,a),void 0,null),n},useId:function(){var t=Ia(),a=ot.identifierPrefix;if(Be){var n=Wa,r=qa;n=(r&~(1<<32-Lt(r)-1)).toString(32)+n,a=":"+a+"R"+n,n=Sr++,0<n&&(a+="H"+n.toString(32)),a+=":"}else n=pf++,a=":"+a+"r"+n.toString(32)+":";return t.memoizedState=a},unstable_isNewReconciler:!1},gf={readContext:ia,useCallback:lp,useContext:ia,useEffect:Ml,useImperativeHandle:sp,useInsertionEffect:ip,useLayoutEffect:rp,useMemo:cp,useReducer:xl,useRef:ap,useState:function(){return xl(Er)},useDebugValue:Sl,useDeferredValue:function(t){var a=ra();return dp(a,at.memoizedState,t)},useTransition:function(){var t=xl(Er)[0],a=ra().memoizedState;return[t,a]},useMutableSource:$d,useSyncExternalStore:Gd,useId:pp,unstable_isNewReconciler:!1},bf={readContext:ia,useCallback:lp,useContext:ia,useEffect:Ml,useImperativeHandle:sp,useInsertionEffect:ip,useLayoutEffect:rp,useMemo:cp,useReducer:Nl,useRef:ap,useState:function(){return Nl(Er)},useDebugValue:Sl,useDeferredValue:function(t){var a=ra();return at===null?a.memoizedState=t:dp(a,at.memoizedState,t)},useTransition:function(){var t=Nl(Er)[0],a=ra().memoizedState;return[t,a]},useMutableSource:$d,useSyncExternalStore:Gd,useId:pp,unstable_isNewReconciler:!1};function ya(t,a){if(t&&t.defaultProps){a=oe({},a),t=t.defaultProps;for(var n in t)a[n]===void 0&&(a[n]=t[n]);return a}return a}function El(t,a,n,r){a=t.memoizedState,n=n(r,a),n=n==null?a:oe({},a,n),t.memoizedState=n,t.lanes===0&&(t.updateQueue.baseState=n)}var Uo={isMounted:function(t){return(t=t._reactInternals)?bt(t)===t:!1},enqueueSetState:function(t,a,n){t=t._reactInternals;var r=Et(),o=xn(t),c=Ba(r,o);c.payload=a,n!=null&&(c.callback=n),a=vn(t,c,o),a!==null&&(ka(a,t,o,r),zo(a,t,o))},enqueueReplaceState:function(t,a,n){t=t._reactInternals;var r=Et(),o=xn(t),c=Ba(r,o);c.tag=1,c.payload=a,n!=null&&(c.callback=n),a=vn(t,c,o),a!==null&&(ka(a,t,o,r),zo(a,t,o))},enqueueForceUpdate:function(t,a){t=t._reactInternals;var n=Et(),r=xn(t),o=Ba(n,r);o.tag=2,a!=null&&(o.callback=a),a=vn(t,o,r),a!==null&&(ka(a,t,r,n),zo(a,t,r))}};function fp(t,a,n,r,o,c,m){return t=t.stateNode,typeof t.shouldComponentUpdate=="function"?t.shouldComponentUpdate(r,c,m):a.prototype&&a.prototype.isPureReactComponent?!hr(n,r)||!hr(o,c):!0}function gp(t,a,n){var r=!1,o=gn,c=a.contextType;return typeof c=="object"&&c!==null?c=ia(c):(o=Dt(a)?Kn:yt.current,r=a.contextTypes,c=(r=r!=null)?Ei(t,o):gn),a=new a(n,c),t.memoizedState=a.state!==null&&a.state!==void 0?a.state:null,a.updater=Uo,t.stateNode=a,a._reactInternals=t,r&&(t=t.stateNode,t.__reactInternalMemoizedUnmaskedChildContext=o,t.__reactInternalMemoizedMaskedChildContext=c),a}function bp(t,a,n,r){t=a.state,typeof a.componentWillReceiveProps=="function"&&a.componentWillReceiveProps(n,r),typeof a.UNSAFE_componentWillReceiveProps=="function"&&a.UNSAFE_componentWillReceiveProps(n,r),a.state!==t&&Uo.enqueueReplaceState(a,a.state,null)}function Cl(t,a,n,r){var o=t.stateNode;o.props=n,o.state=t.memoizedState,o.refs={},hl(t);var c=a.contextType;typeof c=="object"&&c!==null?o.context=ia(c):(c=Dt(a)?Kn:yt.current,o.context=Ei(t,c)),o.state=t.memoizedState,c=a.getDerivedStateFromProps,typeof c=="function"&&(El(t,a,c,n),o.state=t.memoizedState),typeof a.getDerivedStateFromProps=="function"||typeof o.getSnapshotBeforeUpdate=="function"||typeof o.UNSAFE_componentWillMount!="function"&&typeof o.componentWillMount!="function"||(a=o.state,typeof o.componentWillMount=="function"&&o.componentWillMount(),typeof o.UNSAFE_componentWillMount=="function"&&o.UNSAFE_componentWillMount(),a!==o.state&&Uo.enqueueReplaceState(o,o.state,null),Lo(t,n,o,r),o.state=t.memoizedState),typeof o.componentDidMount=="function"&&(t.flags|=4194308)}function Di(t,a){try{var n="",r=a;do n+=se(r),r=r.return;while(r);var o=n}catch(c){o=` 36Error generating stack: `+c.message+` 37`+c.stack}return{value:t,source:a,stack:o,digest:null}}function Tl(t,a,n){return{value:t,source:null,stack:n??null,digest:a??null}}function Il(t,a){try{console.error(a.value)}catch(n){setTimeout(function(){throw n})}}var yf=typeof WeakMap=="function"?WeakMap:Map;function yp(t,a,n){n=Ba(-1,n),n.tag=3,n.payload={element:null};var r=a.value;return n.callback=function(){Ko||(Ko=!0,Bl=r),Il(t,a)},n}function vp(t,a,n){n=Ba(-1,n),n.tag=3;var r=t.type.getDerivedStateFromError;if(typeof r=="function"){var o=a.value;n.payload=function(){return r(o)},n.callback=function(){Il(t,a)}}var c=t.stateNode;return c!==null&&typeof c.componentDidCatch=="function"&&(n.callback=function(){Il(t,a),typeof r!="function"&&(kn===null?kn=new Set([this]):kn.add(this));var m=a.stack;this.componentDidCatch(a.value,{componentStack:m!==null?m:""})}),n}function wp(t,a,n){var r=t.pingCache;if(r===null){r=t.pingCache=new yf;var o=new Set;r.set(a,o)}else o=r.get(a),o===void 0&&(o=new Set,r.set(a,o));o.has(n)||(o.add(n),t=zf.bind(null,t,a,n),a.then(t,t))}function kp(t){do{var a;if((a=t.tag===13)&&(a=t.memoizedState,a=a!==null?a.dehydrated!==null:!0),a)return t;t=t.return}while(t!==null);return null}function Ap(t,a,n,r,o){return t.mode&1?(t.flags|=65536,t.lanes=o,t):(t===a?t.flags|=65536:(t.flags|=128,n.flags|=131072,n.flags&=-52805,n.tag===1&&(n.alternate===null?n.tag=17:(a=Ba(-1,1),a.tag=2,vn(n,a,1))),n.lanes|=1),t)}var vf=D.ReactCurrentOwner,Pt=!1;function St(t,a,n,r){a.child=t===null?Wd(a,null,n,r):Ri(a,t.child,n,r)}function xp(t,a,n,r,o){n=n.render;var c=a.ref;return Li(a,o),r=kl(t,a,n,r,c,o),n=Al(),t!==null&&!Pt?(a.updateQueue=t.updateQueue,a.flags&=-2053,t.lanes&=~o,Ha(t,a,o)):(Be&&n&&il(a),a.flags|=1,St(t,a,r,o),a.child)}function Np(t,a,n,r,o){if(t===null){var c=n.type;return typeof c=="function"&&!Zl(c)&&c.defaultProps===void 0&&n.compare===null&&n.defaultProps===void 0?(a.tag=15,a.type=c,Mp(t,a,c,r,o)):(t=Xo(n.type,null,r,a,a.mode,o),t.ref=a.ref,t.return=a,a.child=t)}if(c=t.child,!(t.lanes&o)){var m=c.memoizedProps;if(n=n.compare,n=n!==null?n:hr,n(m,r)&&t.ref===a.ref)return Ha(t,a,o)}return a.flags|=1,t=Mn(c,r),t.ref=a.ref,t.return=a,a.child=t}function Mp(t,a,n,r,o){if(t!==null){var c=t.memoizedProps;if(hr(c,r)&&t.ref===a.ref)if(Pt=!1,a.pendingProps=r=c,(t.lanes&o)!==0)t.flags&131072&&(Pt=!0);else return a.lanes=t.lanes,Ha(t,a,o)}return Rl(t,a,n,r,o)}function Sp(t,a,n){var r=a.pendingProps,o=r.children,c=t!==null?t.memoizedState:null;if(r.mode==="hidden")if(!(a.mode&1))a.memoizedState={baseLanes:0,cachePool:null,transitions:null},Oe(Oi,Jt),Jt|=n;else{if(!(n&1073741824))return t=c!==null?c.baseLanes|n:n,a.lanes=a.childLanes=1073741824,a.memoizedState={baseLanes:t,cachePool:null,transitions:null},a.updateQueue=null,Oe(Oi,Jt),Jt|=t,null;a.memoizedState={baseLanes:0,cachePool:null,transitions:null},r=c!==null?c.baseLanes:n,Oe(Oi,Jt),Jt|=r}else c!==null?(r=c.baseLanes|n,a.memoizedState=null):r=n,Oe(Oi,Jt),Jt|=r;return St(t,a,o,n),a.child}function Ep(t,a){var n=a.ref;(t===null&&n!==null||t!==null&&t.ref!==n)&&(a.flags|=512,a.flags|=2097152)}
vendor: 4,995 bytes, line 37
37function Rl(t,a,n,r,o){var c=Dt(n)?Kn:yt.current;return c=Ei(a,c),Li(a,o),n=kl(t,a,n,r,c,o),r=Al(),t!==null&&!Pt?(a.updateQueue=t.updateQueue,a.flags&=-2053,t.lanes&=~o,Ha(t,a,o)):(Be&&r&&il(a),a.flags|=1,St(t,a,n,o),a.child)}function Cp(t,a,n,r,o){if(Dt(n)){var c=!0;No(a)}else c=!1;if(Li(a,o),a.stateNode===null)Wo(t,a),gp(a,n,r),Cl(a,n,r,o),r=!0;else if(t===null){var m=a.stateNode,y=a.memoizedProps;m.props=y;var k=m.context,I=n.contextType;typeof I=="object"&&I!==null?I=ia(I):(I=Dt(n)?Kn:yt.current,I=Ei(a,I));var O=n.getDerivedStateFromProps,_=typeof O=="function"||typeof m.getSnapshotBeforeUpdate=="function";_||typeof m.UNSAFE_componentWillReceiveProps!="function"&&typeof m.componentWillReceiveProps!="function"||(y!==r||k!==I)&&bp(a,m,r,I),yn=!1;var P=a.memoizedState;m.state=P,Lo(a,r,m,o),k=a.memoizedState,y!==r||P!==k||jt.current||yn?(typeof O=="function"&&(El(a,n,O,r),k=a.memoizedState),(y=yn||fp(a,n,y,r,P,k,I))?(_||typeof m.UNSAFE_componentWillMount!="function"&&typeof m.componentWillMount!="function"||(typeof m.componentWillMount=="function"&&m.componentWillMount(),typeof m.UNSAFE_componentWillMount=="function"&&m.UNSAFE_componentWillMount()),typeof m.componentDidMount=="function"&&(a.flags|=4194308)):(typeof m.componentDidMount=="function"&&(a.flags|=4194308),a.memoizedProps=r,a.memoizedState=k),m.props=r,m.state=k,m.context=I,r=y):(typeof m.componentDidMount=="function"&&(a.flags|=4194308),r=!1)}else{m=a.stateNode,Bd(t,a),y=a.memoizedProps,I=a.type===a.elementType?y:ya(a.type,y),m.props=I,_=a.pendingProps,P=m.context,k=n.contextType,typeof k=="object"&&k!==null?k=ia(k):(k=Dt(n)?Kn:yt.current,k=Ei(a,k));var Q=n.getDerivedStateFromProps;(O=typeof Q=="function"||typeof m.getSnapshotBeforeUpdate=="function")||typeof m.UNSAFE_componentWillReceiveProps!="function"&&typeof m.componentWillReceiveProps!="function"||(y!==_||P!==k)&&bp(a,m,r,k),yn=!1,P=a.memoizedState,m.state=P,Lo(a,r,m,o);var te=a.memoizedState;y!==_||P!==te||jt.current||yn?(typeof Q=="function"&&(El(a,n,Q,r),te=a.memoizedState),(I=yn||fp(a,n,I,r,P,te,k)||!1)?(O||typeof m.UNSAFE_componentWillUpdate!="function"&&typeof m.componentWillUpdate!="function"||(typeof m.componentWillUpdate=="function"&&m.componentWillUpdate(r,te,k),typeof m.UNSAFE_componentWillUpdate=="function"&&m.UNSAFE_componentWillUpdate(r,te,k)),typeof m.componentDidUpdate=="function"&&(a.flags|=4),typeof m.getSnapshotBeforeUpdate=="function"&&(a.flags|=1024)):(typeof m.componentDidUpdate!="function"||y===t.memoizedProps&&P===t.memoizedState||(a.flags|=4),typeof m.getSnapshotBeforeUpdate!="function"||y===t.memoizedProps&&P===t.memoizedState||(a.flags|=1024),a.memoizedProps=r,a.memoizedState=te),m.props=r,m.state=te,m.context=k,r=I):(typeof m.componentDidUpdate!="function"||y===t.memoizedProps&&P===t.memoizedState||(a.flags|=4),typeof m.getSnapshotBeforeUpdate!="function"||y===t.memoizedProps&&P===t.memoizedState||(a.flags|=1024),r=!1)}return zl(t,a,n,r,c,o)}function zl(t,a,n,r,o,c){Ep(t,a);var m=(a.flags&128)!==0;if(!r&&!m)return o&&Ld(a,n,!1),Ha(t,a,c);r=a.stateNode,vf.current=a;var y=m&&typeof n.getDerivedStateFromError!="function"?null:r.render();return a.flags|=1,t!==null&&m?(a.child=Ri(a,t.child,null,c),a.child=Ri(a,null,y,c)):St(t,a,y,c),a.memoizedState=r.state,o&&Ld(a,n,!0),a.child}function Tp(t){var a=t.stateNode;a.pendingContext?Rd(t,a.pendingContext,a.pendingContext!==a.context):a.context&&Rd(t,a.context,!1),fl(t,a.containerInfo)}function Ip(t,a,n,r,o){return Ii(),ll(o),a.flags|=256,St(t,a,n,r),a.child}var Ll={dehydrated:null,treeContext:null,retryLane:0};function jl(t){return{baseLanes:t,cachePool:null,transitions:null}}function Rp(t,a,n){var r=a.pendingProps,o=Ke.current,c=!1,m=(a.flags&128)!==0,y;if((y=m)||(y=t!==null&&t.memoizedState===null?!1:(o&2)!==0),y?(c=!0,a.flags&=-129):(t===null||t.memoizedState!==null)&&(o|=1),Oe(Ke,o&1),t===null)return sl(a),t=a.memoizedState,t!==null&&(t=t.dehydrated,t!==null)?(a.mode&1?t.data==="$!"?a.lanes=8:a.lanes=1073741824:a.lanes=1,null):(m=r.children,t=r.fallback,c?(r=a.mode,c=a.child,m={mode:"hidden",children:m},!(r&1)&&c!==null?(c.childLanes=0,c.pendingProps=m):c=es(m,r,0,null),t=ni(t,r,n,null),c.return=a,t.return=a,c.sibling=t,a.child=c,a.child.memoizedState=jl(n),a.memoizedState=Ll,t):Dl(a,m));if(o=t.memoizedState,o!==null&&(y=o.dehydrated,y!==null))return wf(t,a,m,r,y,o,n);if(c){c=r.fallback,m=a.mode,o=t.child,y=o.sibling;var k={mode:"hidden",children:r.children};return!(m&1)&&a.child!==o?(r=a.child,r.childLanes=0,r.pendingProps=k,a.deletions=null):(r=Mn(o,k),r.subtreeFlags=o.subtreeFlags&14680064),y!==null?c=Mn(y,c):(c=ni(c,m,n,null),c.flags|=2),c.return=a,r.return=a,r.sibling=c,a.child=r,r=c,c=a.child,m=t.child.memoizedState,m=m===null?jl(n):{baseLanes:m.baseLanes|n,cachePool:null,transitions:m.transitions},c.memoizedState=m,c.childLanes=t.childLanes&~n,a.memoizedState=Ll,r}return c=t.child,t=c.sibling,r=Mn(c,{mode:"visible",children:r.children}),!(a.mode&1)&&(r.lanes=n),r.return=a,r.sibling=null,t!==null&&(n=a.deleti
vendor: 7,067 bytes, line 37
37ons,n===null?(a.deletions=[t],a.flags|=16):n.push(t)),a.child=r,a.memoizedState=null,r}function Dl(t,a){return a=es({mode:"visible",children:a},t.mode,0,null),a.return=t,t.child=a}function qo(t,a,n,r){return r!==null&&ll(r),Ri(a,t.child,null,n),t=Dl(a,a.pendingProps.children),t.flags|=2,a.memoizedState=null,t}function wf(t,a,n,r,o,c,m){if(n)return a.flags&256?(a.flags&=-257,r=Tl(Error(d(422))),qo(t,a,m,r)):a.memoizedState!==null?(a.child=t.child,a.flags|=128,null):(c=r.fallback,o=a.mode,r=es({mode:"visible",children:r.children},o,0,null),c=ni(c,o,m,null),c.flags|=2,r.return=a,c.return=a,r.sibling=c,a.child=r,a.mode&1&&Ri(a,t.child,null,m),a.child.memoizedState=jl(m),a.memoizedState=Ll,c);if(!(a.mode&1))return qo(t,a,m,null);if(o.data==="$!"){if(r=o.nextSibling&&o.nextSibling.dataset,r)var y=r.dgst;return r=y,c=Error(d(419)),r=Tl(c,r,void 0),qo(t,a,m,r)}if(y=(m&t.childLanes)!==0,Pt||y){if(r=ot,r!==null){switch(m&-m){case 4:o=2;break;case 16:o=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:o=32;break;case 536870912:o=268435456;break;default:o=0}o=o&(r.suspendedLanes|m)?0:o,o!==0&&o!==c.retryLane&&(c.retryLane=o,Va(t,o),ka(r,t,o,-1))}return Ql(),r=Tl(Error(d(421))),qo(t,a,m,r)}return o.data==="$?"?(a.flags|=128,a.child=t.child,a=Lf.bind(null,t),o._reactRetry=a,null):(t=c.treeContext,Zt=hn(o.nextSibling),Qt=a,Be=!0,ba=null,t!==null&&(aa[na++]=qa,aa[na++]=Wa,aa[na++]=$n,qa=t.id,Wa=t.overflow,$n=a),a=Dl(a,r.children),a.flags|=4096,a)}function zp(t,a,n){t.lanes|=a;var r=t.alternate;r!==null&&(r.lanes|=a),ul(t.return,a,n)}function Pl(t,a,n,r,o){var c=t.memoizedState;c===null?t.memoizedState={isBackwards:a,rendering:null,renderingStartTime:0,last:r,tail:n,tailMode:o}:(c.isBackwards=a,c.rendering=null,c.renderingStartTime=0,c.last=r,c.tail=n,c.tailMode=o)}function Lp(t,a,n){var r=a.pendingProps,o=r.revealOrder,c=r.tail;if(St(t,a,r.children,n),r=Ke.current,r&2)r=r&1|2,a.flags|=128;else{if(t!==null&&t.flags&128)e:for(t=a.child;t!==null;){if(t.tag===13)t.memoizedState!==null&&zp(t,n,a);else if(t.tag===19)zp(t,n,a);else if(t.child!==null){t.child.return=t,t=t.child;continue}if(t===a)break e;for(;t.sibling===null;){if(t.return===null||t.return===a)break e;t=t.return}t.sibling.return=t.return,t=t.sibling}r&=1}if(Oe(Ke,r),!(a.mode&1))a.memoizedState=null;else switch(o){case"forwards":for(n=a.child,o=null;n!==null;)t=n.alternate,t!==null&&jo(t)===null&&(o=n),n=n.sibling;n=o,n===null?(o=a.child,a.child=null):(o=n.sibling,n.sibling=null),Pl(a,!1,o,n,c);break;case"backwards":for(n=null,o=a.child,a.child=null;o!==null;){if(t=o.alternate,t!==null&&jo(t)===null){a.child=o;break}t=o.sibling,o.sibling=n,n=o,o=t}Pl(a,!0,n,null,c);break;case"together":Pl(a,!1,null,null,void 0);break;default:a.memoizedState=null}return a.child}function Wo(t,a){!(a.mode&1)&&t!==null&&(t.alternate=null,a.alternate=null,a.flags|=2)}function Ha(t,a,n){if(t!==null&&(a.dependencies=t.dependencies),Xn|=a.lanes,!(n&a.childLanes))return null;if(t!==null&&a.child!==t.child)throw Error(d(153));if(a.child!==null){for(t=a.child,n=Mn(t,t.pendingProps),a.child=n,n.return=a;t.sibling!==null;)t=t.sibling,n=n.sibling=Mn(t,t.pendingProps),n.return=a;n.sibling=null}return a.child}function kf(t,a,n){switch(a.tag){case 3:Tp(a),Ii();break;case 5:Kd(a);break;case 1:Dt(a.type)&&No(a);break;case 4:fl(a,a.stateNode.containerInfo);break;case 10:var r=a.type._context,o=a.memoizedProps.value;Oe(Io,r._currentValue),r._currentValue=o;break;case 13:if(r=a.memoizedState,r!==null)return r.dehydrated!==null?(Oe(Ke,Ke.current&1),a.flags|=128,null):n&a.child.childLanes?Rp(t,a,n):(Oe(Ke,Ke.current&1),t=Ha(t,a,n),t!==null?t.sibling:null);Oe(Ke,Ke.current&1);break;case 19:if(r=(n&a.childLanes)!==0,t.flags&128){if(r)return Lp(t,a,n);a.flags|=128}if(o=a.memoizedState,o!==null&&(o.rendering=null,o.tail=null,o.lastEffect=null),Oe(Ke,Ke.current),r)break;return null;case 22:case 23:return a.lanes=0,Sp(t,a,n)}return Ha(t,a,n)}var jp,Ol,Dp,Pp;jp=function(t,a){for(var n=a.child;n!==null;){if(n.tag===5||n.tag===6)t.appendChild(n.stateNode);else if(n.tag!==4&&n.child!==null){n.child.return=n,n=n.child;continue}if(n===a)break;for(;n.sibling===null;){if(n.return===null||n.return===a)return;n=n.return}n.sibling.return=n.return,n=n.sibling}},Ol=function(){},Dp=function(t,a,n,r){var o=t.memoizedProps;if(o!==r){t=a.stateNode,Zn(Ta.current);var c=null;switch(n){case"input":o=tt(t,o),r=tt(t,r),c=[];break;case"select":o=oe({},o,{value:void 0}),r=oe({},r,{value:void 0}),c=[];break;case"textarea":o=en(t,o),r=en(t,r),c=[];break;default:typeof o.onClick!="function"&&typeof r.onClick=="function"&&(t.onclick=ko)}an(n,r);var m;n=null;for(I in o)if(!r.hasOwnProperty(I)&&o.hasOwnProperty(I)&&o[I]!=null)if(I==="style"){var y=o[I];for(m in y)y.hasOwnProperty(m)&&(n||(n={}),n[m]="")}else I!=="dangerouslySetInnerHTML"&&I!=="children"&&I!=="suppressContentEditableWarning"&&I!=="suppressHydrationWarning"&&I!=="autoFocus"&&(h.hasOwnProperty(I)?c||(c=[]):(c=c||[]).push(I,null));for(I in r){var k=r[I];if(y=o==null?void 0:o[I],r.hasOwnProperty(I)&&k!==y&&(k!=null||y!=null))if(I==="style")if(y){for(m in y)!y.hasOwnProperty(m)||k&&k.hasOwnProperty(m)||(n||(n={}),n[m]="");for(m in k)k.hasOwnProperty(m)&&y[m]!==k[m]&&(n||(n={}),n[m]=k[m])}else n||(c||(c=[]),c.push(I,n)),n=k;else I==="dangerouslySetInnerHTML"?(k=k?k.__html:void 0,y=y?y.__html:void 0,k!=null&&y!==k&&(c=c||[]).push(I,k)):I==="children"?typeof k!="string"&&typeof k!="number"||(c=c||[]).push(I,""+k):I!=="suppressContentEditableWarning"&&I!=="suppressHydrationWarning"&&(h.hasOwnProperty(I)?(k!=null&&I==="onScroll"&&Ue("scroll",t),c||y===k||(c=[])):(c=c||[]).push(I,k))}n&&(c=c||[]).push("style",n);var I=c;(a.updateQueue=I)&&(a.flags|=4)}},Pp=function(t,a,n,r){n!==r&&(a.flags|=4)};function Tr(t,a){if(!Be)switch(t.tailMode){case"hidden":a=t.tail;for(var n=null;a!==null;)a.alternate!==null&&(n=a),a=a.sibling;n===null?t.tail=null:n.sibling=null;break;case"collapsed":n=t.tail;for(var r=null;n!==null;)n.alternate!==null&&(r=n),n=n.sibling;r===null?a||t.tail===null?t.tail=null:t.tail.sibling=null:r.sibling=null}}function wt(t){var a=t.alternate!==null&&t.alternate.child===t.child,n=0,r=0;if(a)for(var o=t.child;o!==null;)n|=o.lanes|o.childLanes,r|=o.subtreeFlags&14680064,r|=o.flags&14680064,o.return=t,o=o.sibling;else for(o=t.child;o!==null;)n|=o.lanes|o.childLanes,r|=o.subtreeFlags,r|=o.flags,o.return=t,o=o.sibling;return t.subtreeFlags|=r,t.childLanes=n,a}function Af(t,a,n){var r=a.pendingProps;switch(rl(a),a.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return wt(a),null;case 1:return Dt(a.type)&&xo(),wt(a),null;case 3:return r=a.stateNode,ji(),qe(jt),qe(yt),yl(),r.pendingContext&&(r.context=r.pendingContext,r.pendingContext=null),(t===null||t.child===null)&&(Co(a)?a.flags|=4:t===null||t.memoizedState.isDehydrated&&!(a.flags&256)||(a.flags|=1024,ba!==null&&(Kl(ba),ba=null))),Ol
vendor: 19,807 bytes, line 37
37(t,a),wt(a),null;case 5:gl(a);var o=Zn(Nr.current);if(n=a.type,t!==null&&a.stateNode!=null)Dp(t,a,n,r,o),t.ref!==a.ref&&(a.flags|=512,a.flags|=2097152);else{if(!r){if(a.stateNode===null)throw Error(d(166));return wt(a),null}if(t=Zn(Ta.current),Co(a)){r=a.stateNode,n=a.type;var c=a.memoizedProps;switch(r[Ca]=a,r[vr]=c,t=(a.mode&1)!==0,n){case"dialog":Ue("cancel",r),Ue("close",r);break;case"iframe":case"object":case"embed":Ue("load",r);break;case"video":case"audio":for(o=0;o<gr.length;o++)Ue(gr[o],r);break;case"source":Ue("error",r);break;case"img":case"image":case"link":Ue("error",r),Ue("load",r);break;case"details":Ue("toggle",r);break;case"input":Ht(r,c),Ue("invalid",r);break;case"select":r._wrapperState={wasMultiple:!!c.multiple},Ue("invalid",r);break;case"textarea":Qi(r,c),Ue("invalid",r)}an(n,c),o=null;for(var m in c)if(c.hasOwnProperty(m)){var y=c[m];m==="children"?typeof y=="string"?r.textContent!==y&&(c.suppressHydrationWarning!==!0&&wo(r.textContent,y,t),o=["children",y]):typeof y=="number"&&r.textContent!==""+y&&(c.suppressHydrationWarning!==!0&&wo(r.textContent,y,t),o=["children",""+y]):h.hasOwnProperty(m)&&y!=null&&m==="onScroll"&&Ue("scroll",r)}switch(n){case"input":ui(r),_e(r,c,!0);break;case"textarea":ui(r),Zi(r);break;case"select":case"option":break;default:typeof c.onClick=="function"&&(r.onclick=ko)}r=o,a.updateQueue=r,r!==null&&(a.flags|=4)}else{m=o.nodeType===9?o:o.ownerDocument,t==="http://www.w3.org/1999/xhtml"&&(t=Gr(n)),t==="http://www.w3.org/1999/xhtml"?n==="script"?(t=m.createElement("div"),t.innerHTML="<script><\/script>",t=t.removeChild(t.firstChild)):typeof r.is=="string"?t=m.createElement(n,{is:r.is}):(t=m.createElement(n),n==="select"&&(m=t,r.multiple?m.multiple=!0:r.size&&(m.size=r.size))):t=m.createElementNS(t,n),t[Ca]=a,t[vr]=r,jp(t,a,!1,!1),a.stateNode=t;e:{switch(m=On(n,r),n){case"dialog":Ue("cancel",t),Ue("close",t),o=r;break;case"iframe":case"object":case"embed":Ue("load",t),o=r;break;case"video":case"audio":for(o=0;o<gr.length;o++)Ue(gr[o],t);o=r;break;case"source":Ue("error",t),o=r;break;case"img":case"image":case"link":Ue("error",t),Ue("load",t),o=r;break;case"details":Ue("toggle",t),o=r;break;case"input":Ht(t,r),o=tt(t,r),Ue("invalid",t);break;case"option":o=r;break;case"select":t._wrapperState={wasMultiple:!!r.multiple},o=oe({},r,{value:void 0}),Ue("invalid",t);break;case"textarea":Qi(t,r),o=en(t,r),Ue("invalid",t);break;default:o=r}an(n,o),y=o;for(c in y)if(y.hasOwnProperty(c)){var k=y[c];c==="style"?Pn(t,k):c==="dangerouslySetInnerHTML"?(k=k?k.__html:void 0,k!=null&&Ji(t,k)):c==="children"?typeof k=="string"?(n!=="textarea"||k!=="")&&ma(t,k):typeof k=="number"&&ma(t,""+k):c!=="suppressContentEditableWarning"&&c!=="suppressHydrationWarning"&&c!=="autoFocus"&&(h.hasOwnProperty(c)?k!=null&&c==="onScroll"&&Ue("scroll",t):k!=null&&V(t,c,k,m))}switch(n){case"input":ui(t),_e(t,r,!1);break;case"textarea":ui(t),Zi(t);break;case"option":r.value!=null&&t.setAttribute("value",""+Se(r.value));break;case"select":t.multiple=!!r.multiple,c=r.value,c!=null?Na(t,!!r.multiple,c,!1):r.defaultValue!=null&&Na(t,!!r.multiple,r.defaultValue,!0);break;default:typeof o.onClick=="function"&&(t.onclick=ko)}switch(n){case"button":case"input":case"select":case"textarea":r=!!r.autoFocus;break e;case"img":r=!0;break e;default:r=!1}}r&&(a.flags|=4)}a.ref!==null&&(a.flags|=512,a.flags|=2097152)}return wt(a),null;case 6:if(t&&a.stateNode!=null)Pp(t,a,t.memoizedProps,r);else{if(typeof r!="string"&&a.stateNode===null)throw Error(d(166));if(n=Zn(Nr.current),Zn(Ta.current),Co(a)){if(r=a.stateNode,n=a.memoizedProps,r[Ca]=a,(c=r.nodeValue!==n)&&(t=Qt,t!==null))switch(t.tag){case 3:wo(r.nodeValue,n,(t.mode&1)!==0);break;case 5:t.memoizedProps.suppressHydrationWarning!==!0&&wo(r.nodeValue,n,(t.mode&1)!==0)}c&&(a.flags|=4)}else r=(n.nodeType===9?n:n.ownerDocument).createTextNode(r),r[Ca]=a,a.stateNode=r}return wt(a),null;case 13:if(qe(Ke),r=a.memoizedState,t===null||t.memoizedState!==null&&t.memoizedState.dehydrated!==null){if(Be&&Zt!==null&&a.mode&1&&!(a.flags&128))_d(),Ii(),a.flags|=98560,c=!1;else if(c=Co(a),r!==null&&r.dehydrated!==null){if(t===null){if(!c)throw Error(d(318));if(c=a.memoizedState,c=c!==null?c.dehydrated:null,!c)throw Error(d(317));c[Ca]=a}else Ii(),!(a.flags&128)&&(a.memoizedState=null),a.flags|=4;wt(a),c=!1}else ba!==null&&(Kl(ba),ba=null),c=!0;if(!c)return a.flags&65536?a:null}return a.flags&128?(a.lanes=n,a):(r=r!==null,r!==(t!==null&&t.memoizedState!==null)&&r&&(a.child.flags|=8192,a.mode&1&&(t===null||Ke.current&1?nt===0&&(nt=3):Ql())),a.updateQueue!==null&&(a.flags|=4),wt(a),null);case 4:return ji(),Ol(t,a),t===null&&br(a.stateNode.containerInfo),wt(a),null;case 10:return pl(a.type._context),wt(a),null;case 17:return Dt(a.type)&&xo(),wt(a),null;case 19:if(qe(Ke),c=a.memoizedState,c===null)return wt(a),null;if(r=(a.flags&128)!==0,m=c.rendering,m===null)if(r)Tr(c,!1);else{if(nt!==0||t!==null&&t.flags&128)for(t=a.child;t!==null;){if(m=jo(t),m!==null){for(a.flags|=128,Tr(c,!1),r=m.updateQueue,r!==null&&(a.updateQueue=r,a.flags|=4),a.subtreeFlags=0,r=n,n=a.child;n!==null;)c=n,t=r,c.flags&=14680066,m=c.alternate,m===null?(c.childLanes=0,c.lanes=t,c.child=null,c.subtreeFlags=0,c.memoizedProps=null,c.memoizedState=null,c.updateQueue=null,c.dependencies=null,c.stateNode=null):(c.childLanes=m.childLanes,c.lanes=m.lanes,c.child=m.child,c.subtreeFlags=0,c.deletions=null,c.memoizedProps=m.memoizedProps,c.memoizedState=m.memoizedState,c.updateQueue=m.updateQueue,c.type=m.type,t=m.dependencies,c.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext}),n=n.sibling;return Oe(Ke,Ke.current&1|2),a.child}t=t.sibling}c.tail!==null&&ee()>Fi&&(a.flags|=128,r=!0,Tr(c,!1),a.lanes=4194304)}else{if(!r)if(t=jo(m),t!==null){if(a.flags|=128,r=!0,n=t.updateQueue,n!==null&&(a.updateQueue=n,a.flags|=4),Tr(c,!0),c.tail===null&&c.tailMode==="hidden"&&!m.alternate&&!Be)return wt(a),null}else 2*ee()-c.renderingStartTime>Fi&&n!==1073741824&&(a.flags|=128,r=!0,Tr(c,!1),a.lanes=4194304);c.isBackwards?(m.sibling=a.child,a.child=m):(n=c.last,n!==null?n.sibling=m:a.child=m,c.last=m)}return c.tail!==null?(a=c.tail,c.rendering=a,c.tail=a.sibling,c.renderingStartTime=ee(),a.sibling=null,n=Ke.current,Oe(Ke,r?n&1|2:n&1),a):(wt(a),null);case 22:case 23:return Gl(),r=a.memoizedState!==null,t!==null&&t.memoizedState!==null!==r&&(a.flags|=8192),r&&a.mode&1?Jt&1073741824&&(wt(a),a.subtreeFlags&6&&(a.flags|=8192)):wt(a),null;case 24:return null;case 25:return null}throw Error(d(156,a.tag))}function xf(t,a){switch(rl(a),a.tag){case 1:return Dt(a.type)&&xo(),t=a.flags,t&65536?(a.flags=t&-65537|128,a):null;case 3:return ji(),qe(jt),qe(yt),yl(),t=a.flags,t&65536&&!(t&128)?(a.flags=t&-65537|128,a):null;case 5:return gl(a),null;case 13:if(qe(Ke),t=a.memoizedState,t!==null&&t.dehydrated!==null){if(a.alternate===null)throw Error(d(340));Ii()}return t=a.flags,t&65536?(a.flags=t&-65537|128,a):null;case 19:return qe(Ke),null;case 4:return ji(),null;case 10:return pl(a.type._context),null;case 22:case 23:return Gl(),null;case 24:return null;default:return null}}var Vo=!1,kt=!1,Nf=typeof WeakSet=="function"?WeakSet:Set,X=null;function Pi(t,a){var n=t.ref;if(n!==null)if(typeof n=="function")try{n(null)}catch(r){Ze(t,a,r)}else n.current=null}function Op(t,a,n){try{n()}catch(r){Ze(t,a,r)}}var Fp=!1;function Mf(t,a){if(Qs=ro,t=md(),Bs(t)){if("selectionStart"in t)var n={start:t.selectionStart,end:t.selectionEnd};else e:{n=(n=t.ownerDocument)&&n.defaultView||window;var r=n.getSelection&&n.getSelection();if(r&&r.rangeCount!==0){n=r.anchorNode;var o=r.anchorOffset,c=r.focusNode;r=r.focusOffset;try{n.nodeType,c.nodeType}catch{n=null;break e}var m=0,y=-1,k=-1,I=0,O=0,_=t,P=null;t:for(;;){for(var Q;_!==n||o!==0&&_.nodeType!==3||(y=m+o),_!==c||r!==0&&_.nodeType!==3||(k=m+r),_.nodeType===3&&(m+=_.nodeValue.length),(Q=_.firstChild)!==null;)P=_,_=Q;for(;;){if(_===t)break t;if(P===n&&++I===o&&(y=m),P===c&&++O===r&&(k=m),(Q=_.nextSibling)!==null)break;_=P,P=_.parentNode}_=Q}n=y===-1||k===-1?null:{start:y,end:k}}else n=null}n=n||{start:0,end:0}}else n=null;for(Zs={focusedElem:t,selectionRange:n},ro=!1,X=a;X!==null;)if(a=X,t=a.child,(a.subtreeFlags&1028)!==0&&t!==null)t.return=a,X=t;else for(;X!==null;){a=X;try{var te=a.alternate;if(a.flags&1024)switch(a.tag){case 0:case 11:case 15:break;case 1:if(te!==null){var ae=te.memoizedProps,Xe=te.memoizedState,E=a.stateNode,x=E.getSnapshotBeforeUpdate(a.elementType===a.type?ae:ya(a.type,ae),Xe);E.__reactInternalSnapshotBeforeUpdate=x}break;case 3:var T=a.stateNode.containerInfo;T.nodeType===1?T.textContent="":T.nodeType===9&&T.documentElement&&T.removeChild(T.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(d(163))}}catch(W){Ze(a,a.return,W)}if(t=a.sibling,t!==null){t.return=a.return,X=t;break}X=a.return}return te=Fp,Fp=!1,te}function Ir(t,a,n){var r=a.updateQueue;if(r=r!==null?r.lastEffect:null,r!==null){var o=r=r.next;do{if((o.tag&t)===t){var c=o.destroy;o.destroy=void 0,c!==void 0&&Op(a,n,c)}o=o.next}while(o!==r)}}function Bo(t,a){if(a=a.updateQueue,a=a!==null?a.lastEffect:null,a!==null){var n=a=a.next;do{if((n.tag&t)===t){var r=n.create;n.destroy=r()}n=n.next}while(n!==a)}}function Fl(t){var a=t.ref;if(a!==null){var n=t.stateNode;switch(t.tag){case 5:t=n;break;default:t=n}typeof a=="function"?a(t):a.current=t}}function _p(t){var a=t.alternate;a!==null&&(t.alternate=null,_p(a)),t.child=null,t.deletions=null,t.sibling=null,t.tag===5&&(a=t.stateNode,a!==null&&(delete a[Ca],delete a[vr],delete a[tl],delete a[sf],delete a[lf])),t.stateNode=null,t.return=null,t.dependencies=null,t.memoizedProps=null,t.memoizedState=null,t.pendingProps=null,t.stateNode=null,t.updateQueue=null}function Up(t){return t.tag===5||t.tag===3||t.tag===4}function qp(t){e:for(;;){for(;t.sibling===null;){if(t.return===null||Up(t.return))return null;t=t.return}for(t.sibling.return=t.return,t=t.sibling;t.tag!==5&&t.tag!==6&&t.tag!==18;){if(t.flags&2||t.child===null||t.tag===4)continue e;t.child.return=t,t=t.child}if(!(t.flags&2))return t.stateNode}}function _l(t,a,n){var r=t.tag;if(r===5||r===6)t=t.stateNode,a?n.nodeType===8?n.parentNode.insertBefore(t,a):n.insertBefore(t,a):(n.nodeType===8?(a=n.parentNode,a.insertBefore(t,n)):(a=n,a.appendChild(t)),n=n._reactRootContainer,n!=null||a.onclick!==null||(a.onclick=ko));else if(r!==4&&(t=t.child,t!==null))for(_l(t,a,n),t=t.sibling;t!==null;)_l(t,a,n),t=t.sibling}function Ul(t,a,n){var r=t.tag;if(r===5||r===6)t=t.stateNode,a?n.insertBefore(t,a):n.appendChild(t);else if(r!==4&&(t=t.child,t!==null))for(Ul(t,a,n),t=t.sibling;t!==null;)Ul(t,a,n),t=t.sibling}var mt=null,va=!1;function wn(t,a,n){for(n=n.child;n!==null;)Wp(t,a,n),n=n.sibling}function Wp(t,a,n){if($t&&typeof $t.onCommitFiberUnmount=="function")try{$t.onCommitFiberUnmount(Hn,n)}catch{}switch(n.tag){case 5:kt||Pi(n,a);case 6:var r=mt,o=va;mt=null,wn(t,a,n),mt=r,va=o,mt!==null&&(va?(t=mt,n=n.stateNode,t.nodeType===8?t.parentNode.removeChild(n):t.removeChild(n)):mt.removeChild(n.stateNode));break;case 18:mt!==null&&(va?(t=mt,n=n.stateNode,t.nodeType===8?el(t.parentNode,n):t.nodeType===1&&el(t,n),lr(t)):el(mt,n.stateNode));break;case 4:r=mt,o=va,mt=n.stateNode.containerInfo,va=!0,wn(t,a,n),mt=r,va=o;break;case 0:case 11:case 14:case 15:if(!kt&&(r=n.updateQueue,r!==null&&(r=r.lastEffect,r!==null))){o=r=r.next;do{var c=o,m=c.destroy;c=c.tag,m!==void 0&&(c&2||c&4)&&Op(n,a,m),o=o.next}while(o!==r)}wn(t,a,n);break;case 1:if(!kt&&(Pi(n,a),r=n.stateNode,typeof r.componentWillUnmount=="function"))try{r.props=n.memoizedProps,r.state=n.memoizedState,r.componentWillUnmount()}catch(y){Ze(n,a,y)}wn(t,a,n);break;case 21:wn(t,a,n);break;case 22:n.mode&1?(kt=(r=kt)||n.memoizedState!==null,wn(t,a,n),kt=r):wn(t,a,n);break;default:wn(t,a,n)}}function Vp(t){var a=t.updateQueue;if(a!==null){t.updateQueue=null;var n=t.stateNode;n===null&&(n=t.stateNode=new Nf),a.forEach(function(r){var o=jf.bind(null,t,r);n.has(r)||(n.add(r),r.then(o,o))})}}function wa(t,a){var n=a.deletions;if(n!==null)for(var r=0;r<n.length;r++){var o=n[r];try{var c=t,m=a,y=m;e:for(;y!==null;){switch(y.tag){case 5:mt=y.stateNode,va=!1;break e;case 3:mt=y.stateNode.containerInfo,va=!0;break e;case 4:mt=y.stateNode.containerInfo,va=!0;break e}y=y.return}if(mt===null)throw Error(d(160));Wp(c,m,o),mt=null,va=!1;var k=o.alternate;k!==null&&(k.return=null),o.return=null}catch(I){Ze(o,a,I)}}if(a.subtreeFlags&12854)for(a=a.child;a!==null;)Bp(a,t),a=a.sibling}function Bp(t,a){var n=t.alternate,r=t.flags;switch(t.tag){case 0:case 11:case 14:case 15:if(wa(a,t),Ra(t),r&4){try{Ir(3,t,t.return),Bo(3,t)}catch(ae){Ze(t,t.return,ae)}try{Ir(5,t,t.return)}catch(ae){Ze(t,t.return,ae)}}break;case 1:wa(a,t),Ra(t),r&512&&n!==null&&Pi(n,n.return);break;case 5:if(wa(a,t),Ra(t),r&512&&n!==null&&Pi(n,n.return),t.flags&32){var o=t.stateNode;try{ma(o,"")}catch(ae){Ze(t,t.return,ae)}}if(r&4&&(o=t.stateNode,o!=null)){var c=t.memoizedProps,m=n!==null?n.memoizedProps:c,y=t.type,k=t.updateQueue;if(t.updateQueue=null,k!==null)try{y==="input"&&c.type==="radio"&&c.name!=null&&pt(o,c),On(y,m);var I=On(y,c);for(m=0;m<k.length;m+=2){var O=k[m],_=k[m+1];O==="style"?Pn(o,_):O==="dangerouslySetInnerHTML"?Ji(o,_):O==="children"?ma(o,_):V(o,O,_,I)}switch(y){case"input":Xa(o,c);break;case"textarea":jn(o,c);break;case"select":var P=o._wrapperState.wasMultiple;o._wrapperState.wasMultiple=!!c.multiple;var Q=c.value;Q!=null?Na(o,!!c.multiple,Q,!1):P!==!!c.multiple&&(c.defaultValue!=null?Na(o,!!c.multiple,c.defaultValue,!0):Na(o,!!c.multiple,c.multiple?[]:"",!1))}o[vr]=c}catch(ae){Ze(t,t.return,ae)}}break;case 6:if(wa(a,t),Ra(t),r&4){if(t.stateNode===null)throw Error(d(162));o=t.stateNode,c=t.memoizedProps;try{o.nodeValue=c}catch(ae){Ze(t,t.return,ae)}}break;case 3:if(wa(a,t),Ra(t),r&4&&n!==null&&n.memoizedState.isDehydrated)try{lr(a.containerInfo)}catch(ae){Ze(t,t.return,ae)}break;case 4:wa(a,t),Ra(t);break;case 13:wa(a,t),Ra(t),o=t.child,o.flags&8192&&(c=o.memoizedState!==null,o.stateNode.isHidden=c,!c||o.alternate!==null&&o.alternate.memoizedState!==null||(Vl=ee())),r&4&&Vp(t);break;case 22:if(O=n!==null&&n.memoizedState!==null,t.mode&1?(kt=(I=kt)||O,wa(a,t),kt=I):wa(a,t),Ra(t),r&8192){if(I=t.memoizedState!==null,(t.stateNode.isHidden=I)&&!O&&t.mode&1)for(X=t,O=t.child;O!==null;){for(_=X=O;X!==null;){switch(P=X,Q=P.child,P.tag){case 0:case 11:case 14:case 15:Ir(4,P,P.return);break;case 1:Pi(P,P.return);var te=P.stateNode;if(typeof te.componentWillUnmount=="function"){r=P,n=P.return;try{a=r,te.props=a.memoizedProps,te.state=a.memoizedState,te.componentWillUnmount()}catch(ae){Ze(r,n,ae)}}break;case 5:Pi(P,P.return);break;case 22:if(P.memoizedState!==null){Kp(_);continue}}Q!==null?(Q.return=P,X=Q):Kp(_)}O=O.sibling}e:for(O=null,_=t;;){if(_.tag===5){if(O===null){O=_;try{o=_.stateNode,I?(c=o.style,typeof c.setProperty=="function"?c.setProperty("display","none","important"):c.display="none"):(y=_.stateNode,k=_.memoizedProps.style,m=k!=null&&k.hasOwnProperty("display")?k.display:null,y.style.display=ja("display",m))}catch(ae){Ze(t,t.return,ae)}}}else if(_.tag===6){if(O===null)try{_.stateNode.nodeValue=I?"":_.memoizedProps}catch(ae){Ze(t,t.return,ae)}}else if((_.tag!==22&&_.tag!==23||_.memoizedState===null||_===t)&&_.child!==null){_.child.return=_,_=_.child;continue}if(_===t)break e;for(;_.sibling===null;){if(_.return===null||_.return===t)break e;O===_&&(O=null),_=_.return}O===_&&(O=null),_.sibling.return=_.return,_=_.sibling}}break;case 19:wa(a,t),Ra(t),r&4&&Vp(t);break;case 21:break;default:wa(a,t),Ra(t)}}function Ra(t){var a=t.flags;if(a&2){try{e:{for(var n=t.return;n!==null;){if(Up(n)){var r=n;break e}n=n.return}throw Error(d(160))}switch(r.tag){case 5:var o=r.stateNode;r.flags&32&&(ma(o,""),r.flags&=-33);var c=qp(t);Ul(t,c,o);break;case 3:case 4:var m=r.stateNode.containerInfo,y=qp(t);_l(t,y,m);break;default:throw Error(d(161))}}catch(k){Ze(t,t.return,k)}t.flags&=-3}a&4096&&(t.flags&=-4097)}function Sf(t,a,n){X=t,Hp(t)}function Hp(t,a,n){for(var r=(t.mode&1)!==0;X!==null;){var o=X,c=o.child;if(o.tag===22&&r){var m=o.memoizedState!==null||Vo;if(!m){var y=o.alternate,k=y!==null&&y.memoizedState!==null||kt;y=Vo;var I=kt;if(Vo=m,(kt=k)&&!I)for(X=o;X!==null;)m=X,k=m.child,m.tag===22&&m.memoizedState!==null?$p(o):k!==null?(k.return=m,X=k):$p(o);for(;c!==null;)X=c,Hp(c),c=c.sibling;X=o,Vo=y,kt=I}Yp(t)}else o.subtreeFlags&8772&&c!==null?(c.return=o,X=c):Yp(t)}}function Yp(t){for(;X!==null;){var a=X;if(a.flags&8772){var n=a.alternate;try{if(a.flags&8772)switch(a.tag){case 0:case 11:case 15:kt||Bo(5,a);break;case 1:var r=a.stateNode;if(a.flags&4&&!kt)if(n===null)r.componentDidMount();else{var o=a.elementType===a.type?n.memoizedProps:ya(a.type,n.memoizedProps);r.componentDidUpdate(o,n.memoizedState,r.__reactInternalSnapshotBeforeUpdate)}var c=a.updateQueue;c!==null&&Yd(a,c,r);break;case 3:var m=a.updateQueue;if(m!==null){if(n=null,a.child!==null)switch(a.child.tag){case 5:n=a.child.stateNode;break;case 1:n=a.child.stateNode}Yd(a,m,n)}break;case 5:var y=a.stateNode;if(n===null&&a.flags&4){n=y;var k=a.memoizedProps;switch(a.type){case"button":case"input":case"select":case"textarea":k.autoFocus&&n.focus();break;case"img":k.src&&(n.src=k.src)}}break;case 6:break;case 4:break;case 12:break;case 13:if(a.memoizedState===null){var I=a.alternate;if(I!==null){var O=I.memoizedState;if(O!==null){var _=O.dehydrated;_!==null&&lr(_)}}}break;case 19:case 17:case 21:case 22:case 23:case 25:break;default:throw Error(d(163))}kt||a.flags&512&&Fl(a)}catch(P){Ze(a,a.return,P)}}if(a===t){X=null;break}if(n=a.sibling,n!==null){n.return=a.return,X=n;break}X=a.return}}function Kp(t){for(;X!==null;){var a=X;if(a===t){X=null;break}var n=a.sibling;if(n!==null){n.return=a.return,X=n;break}X=a.return}}function $p(t){for(;X!==null;){var a=X;try{switch(a.tag){case 0:case 11:case 15:var n=a.return;try{Bo(4,a)}catch(k){Ze(a,n,k)}break;case 1:var r=a.stateNode;if(typeof r.componentDidMount=="function"){var o=a.return;try{r.componentDidMount()}catch(k){Ze(a,o,k)}}var c=a.return;try{Fl(a)}catch(k){Ze(a,c,k)}break;case 5:var m=a.return;try{Fl(a)}catch(k){Ze(a,m,k)}}}catch(k){Ze(a,a.return,k)}if(a===t){X=null;break}var y=a.sibling;if(y!==null){y.return=a.return,X=y;break}X=a.return}}var Ef=Math.ceil,Ho=D.ReactCurrentDispatcher,ql=D.ReactCurrentOwner,oa=D.ReactCurrentBatchConfig,ke=0,ot=null,et=null,ht=0,Jt=0,Oi=fn(0),nt=0,Rr=null,Xn=0,Yo=0,Wl=0,zr=null,Ot=null,Vl=0,Fi=1/0,Ya=null,Ko=!1,Bl=null,kn=null,$o=!1,An=null,Go=0,Lr=0,Hl=null,Qo=-1,Zo=0;function Et(){return ke&6?ee():Qo!==-1?Qo:Qo=ee()}function xn(t){return t.mode&1?ke&2&&ht!==0?ht&-ht:df.transition!==null?(Zo===0&&(Zo=_c()),Zo):(t=Ie,t!==0||(t=window.event,t=t===void 0?16:$c(t.type)),t):1}function ka(t,a,n,r){if(50<Lr)throw Lr=0,Hl=null,Error(d(185));nr(t,n,r),(!(ke&2)||t!==ot)&&(t===ot&&(!(ke&2)&&(Yo|=n),nt===4&&Nn(t,ht)),Ft(t,r),n===1&&ke===0&&!(a.mode&1)&&(Fi=ee()+500,Mo&&bn()))}function Ft(t,a){var n=t.callbackNode;ph(t,a);var r=ao(t,t===ot?ht:0);if(r===0)n!==null&&Jr(n),t.callbackNode=null,t.callbackPriority=0;else if(a=r&-r,t.callbackPriority!==a){if(n!=null&&Jr(n),a===1)t.tag===0?cf(Qp.bind(null,t)):jd(Qp.bind(null,t)),rf(function(){!(ke&6)&&bn()}),n=null;else{switch(Uc(r)){case 1:n=Te;break;case 4:n=Ye;break;case 16:n=ut;break;case 536870912:n=it;break;default:n=ut}n=iu(n,Gp.bind(null,t))}t.callbackPriority=a,t.callbackNode=n}}function Gp(t,a){if(Qo=-1,Zo=0,ke&6)throw Error(d(327));var n=t.callbackNode;if(_i()&&t.callbackNode!==n)return null;var r=ao(t,t===ot?ht:0);if(r===0)return null;if(r&30||r&t.expiredLanes||a)a=Jo(t,r);else{a=r;var o=ke;ke|=2;var c=Jp();(ot!==t||ht!==a)&&(Ya=null,Fi=ee()+500,ti(t,a));do try{If();break}catch(y){Zp(t,y)}while(!0);dl(),Ho.current=c,ke=o,et!==null?a=0:(ot=null,ht=0,a=nt)}if(a!==0){if(a===2&&(o=Cs(t),o!==0&&(r=o,a=Yl(t,o))),a===1)throw n=Rr,ti(t,0),Nn(t,r),Ft(t,ee()),n;if(a===6)Nn(t,r);
vendor: 2,596 bytes, line 37
37else{if(o=t.current.alternate,!(r&30)&&!Cf(o)&&(a=Jo(t,r),a===2&&(c=Cs(t),c!==0&&(r=c,a=Yl(t,c))),a===1))throw n=Rr,ti(t,0),Nn(t,r),Ft(t,ee()),n;switch(t.finishedWork=o,t.finishedLanes=r,a){case 0:case 1:throw Error(d(345));case 2:ai(t,Ot,Ya);break;case 3:if(Nn(t,r),(r&130023424)===r&&(a=Vl+500-ee(),10<a)){if(ao(t,0)!==0)break;if(o=t.suspendedLanes,(o&r)!==r){Et(),t.pingedLanes|=t.suspendedLanes&o;break}t.timeoutHandle=Xs(ai.bind(null,t,Ot,Ya),a);break}ai(t,Ot,Ya);break;case 4:if(Nn(t,r),(r&4194240)===r)break;for(a=t.eventTimes,o=-1;0<r;){var m=31-Lt(r);c=1<<m,m=a[m],m>o&&(o=m),r&=~c}if(r=o,r=ee()-r,r=(120>r?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*Ef(r/1960))-r,10<r){t.timeoutHandle=Xs(ai.bind(null,t,Ot,Ya),r);break}ai(t,Ot,Ya);break;case 5:ai(t,Ot,Ya);break;default:throw Error(d(329))}}}return Ft(t,ee()),t.callbackNode===n?Gp.bind(null,t):null}function Yl(t,a){var n=zr;return t.current.memoizedState.isDehydrated&&(ti(t,a).flags|=256),t=Jo(t,a),t!==2&&(a=Ot,Ot=n,a!==null&&Kl(a)),t}function Kl(t){Ot===null?Ot=t:Ot.push.apply(Ot,t)}function Cf(t){for(var a=t;;){if(a.flags&16384){var n=a.updateQueue;if(n!==null&&(n=n.stores,n!==null))for(var r=0;r<n.length;r++){var o=n[r],c=o.getSnapshot;o=o.value;try{if(!ga(c(),o))return!1}catch{return!1}}}if(n=a.child,a.subtreeFlags&16384&&n!==null)n.return=a,a=n;else{if(a===t)break;for(;a.sibling===null;){if(a.return===null||a.return===t)return!0;a=a.return}a.sibling.return=a.return,a=a.sibling}}return!0}function Nn(t,a){for(a&=~Wl,a&=~Yo,t.suspendedLanes|=a,t.pingedLanes&=~a,t=t.expirationTimes;0<a;){var n=31-Lt(a),r=1<<n;t[n]=-1,a&=~r}}function Qp(t){if(ke&6)throw Error(d(327));_i();var a=ao(t,0);if(!(a&1))return Ft(t,ee()),null;var n=Jo(t,a);if(t.tag!==0&&n===2){var r=Cs(t);r!==0&&(a=r,n=Yl(t,r))}if(n===1)throw n=Rr,ti(t,0),Nn(t,a),Ft(t,ee()),n;if(n===6)throw Error(d(345));return t.finishedWork=t.current.alternate,t.finishedLanes=a,ai(t,Ot,Ya),Ft(t,ee()),null}function $l(t,a){var n=ke;ke|=1;try{return t(a)}finally{ke=n,ke===0&&(Fi=ee()+500,Mo&&bn())}}function ei(t){An!==null&&An.tag===0&&!(ke&6)&&_i();var a=ke;ke|=1;var n=oa.transition,r=Ie;try{if(oa.transition=null,Ie=1,t)return t()}finally{Ie=r,oa.transition=n,ke=a,!(ke&6)&&bn()}}function Gl(){Jt=Oi.current,qe(Oi)}function ti(t,a){t.finishedWork=null,t.finishedLanes=0;var n=t.timeoutHandle;if(n!==-1&&(t.timeoutHandle=-1,nf(n)),et!==null)for(n=et.return;n!==null;){var r=n;switch(rl(r),r.tag){case 1:r=r.type.childContextTypes,r!=null&&xo();break;case 3:ji(),qe(jt),qe(yt),yl();break;case 5:gl(r);break;case 4:ji();break;case 13:qe(Ke);break;
vendor: 16,493 bytes, line 37
37case 19:qe(Ke);break;case 10:pl(r.type._context);break;case 22:case 23:Gl()}n=n.return}if(ot=t,et=t=Mn(t.current,null),ht=Jt=a,nt=0,Rr=null,Wl=Yo=Xn=0,Ot=zr=null,Qn!==null){for(a=0;a<Qn.length;a++)if(n=Qn[a],r=n.interleaved,r!==null){n.interleaved=null;var o=r.next,c=n.pending;if(c!==null){var m=c.next;c.next=o,r.next=m}n.pending=r}Qn=null}return t}function Zp(t,a){do{var n=et;try{if(dl(),Do.current=_o,Po){for(var r=$e.memoizedState;r!==null;){var o=r.queue;o!==null&&(o.pending=null),r=r.next}Po=!1}if(Jn=0,rt=at=$e=null,Mr=!1,Sr=0,ql.current=null,n===null||n.return===null){nt=1,Rr=a,et=null;break}e:{var c=t,m=n.return,y=n,k=a;if(a=ht,y.flags|=32768,k!==null&&typeof k=="object"&&typeof k.then=="function"){var I=k,O=y,_=O.tag;if(!(O.mode&1)&&(_===0||_===11||_===15)){var P=O.alternate;P?(O.updateQueue=P.updateQueue,O.memoizedState=P.memoizedState,O.lanes=P.lanes):(O.updateQueue=null,O.memoizedState=null)}var Q=kp(m);if(Q!==null){Q.flags&=-257,Ap(Q,m,y,c,a),Q.mode&1&&wp(c,I,a),a=Q,k=I;var te=a.updateQueue;if(te===null){var ae=new Set;ae.add(k),a.updateQueue=ae}else te.add(k);break e}else{if(!(a&1)){wp(c,I,a),Ql();break e}k=Error(d(426))}}else if(Be&&y.mode&1){var Xe=kp(m);if(Xe!==null){!(Xe.flags&65536)&&(Xe.flags|=256),Ap(Xe,m,y,c,a),ll(Di(k,y));break e}}c=k=Di(k,y),nt!==4&&(nt=2),zr===null?zr=[c]:zr.push(c),c=m;do{switch(c.tag){case 3:c.flags|=65536,a&=-a,c.lanes|=a;var E=yp(c,k,a);Hd(c,E);break e;case 1:y=k;var x=c.type,T=c.stateNode;if(!(c.flags&128)&&(typeof x.getDerivedStateFromError=="function"||T!==null&&typeof T.componentDidCatch=="function"&&(kn===null||!kn.has(T)))){c.flags|=65536,a&=-a,c.lanes|=a;var W=vp(c,y,a);Hd(c,W);break e}}c=c.return}while(c!==null)}eu(n)}catch(ie){a=ie,et===n&&n!==null&&(et=n=n.return);continue}break}while(!0)}function Jp(){var t=Ho.current;return Ho.current=_o,t===null?_o:t}function Ql(){(nt===0||nt===3||nt===2)&&(nt=4),ot===null||!(Xn&268435455)&&!(Yo&268435455)||Nn(ot,ht)}function Jo(t,a){var n=ke;ke|=2;var r=Jp();(ot!==t||ht!==a)&&(Ya=null,ti(t,a));do try{Tf();break}catch(o){Zp(t,o)}while(!0);if(dl(),ke=n,Ho.current=r,et!==null)throw Error(d(261));return ot=null,ht=0,nt}function Tf(){for(;et!==null;)Xp(et)}function If(){for(;et!==null&&!bi();)Xp(et)}function Xp(t){var a=nu(t.alternate,t,Jt);t.memoizedProps=t.pendingProps,a===null?eu(t):et=a,ql.current=null}function eu(t){var a=t;do{var n=a.alternate;if(t=a.return,a.flags&32768){if(n=xf(n,a),n!==null){n.flags&=32767,et=n;return}if(t!==null)t.flags|=32768,t.subtreeFlags=0,t.deletions=null;else{nt=6,et=null;return}}else if(n=Af(n,a,Jt),n!==null){et=n;return}if(a=a.sibling,a!==null){et=a;return}et=a=t}while(a!==null);nt===0&&(nt=5)}function ai(t,a,n){var r=Ie,o=oa.transition;try{oa.transition=null,Ie=1,Rf(t,a,n,r)}finally{oa.transition=o,Ie=r}return null}function Rf(t,a,n,r){do _i();while(An!==null);if(ke&6)throw Error(d(327));n=t.finishedWork;var o=t.finishedLanes;if(n===null)return null;if(t.finishedWork=null,t.finishedLanes=0,n===t.current)throw Error(d(177));t.callbackNode=null,t.callbackPriority=0;var c=n.lanes|n.childLanes;if(uh(t,c),t===ot&&(et=ot=null,ht=0),!(n.subtreeFlags&2064)&&!(n.flags&2064)||$o||($o=!0,iu(ut,function(){return _i(),null})),c=(n.flags&15990)!==0,n.subtreeFlags&15990||c){c=oa.transition,oa.transition=null;var m=Ie;Ie=1;var y=ke;ke|=4,ql.current=null,Mf(t,n),Bp(n,t),Jh(Zs),ro=!!Qs,Zs=Qs=null,t.current=n,Sf(n),q(),ke=y,Ie=m,oa.transition=c}else t.current=n;if($o&&($o=!1,An=t,Go=o),c=t.pendingLanes,c===0&&(kn=null),Xr(n.stateNode),Ft(t,ee()),a!==null)for(r=t.onRecoverableError,n=0;n<a.length;n++)o=a[n],r(o.value,{componentStack:o.stack,digest:o.digest});if(Ko)throw Ko=!1,t=Bl,Bl=null,t;return Go&1&&t.tag!==0&&_i(),c=t.pendingLanes,c&1?t===Hl?Lr++:(Lr=0,Hl=t):Lr=0,bn(),null}function _i(){if(An!==null){var t=Uc(Go),a=oa.transition,n=Ie;try{if(oa.transition=null,Ie=16>t?16:t,An===null)var r=!1;else{if(t=An,An=null,Go=0,ke&6)throw Error(d(331));var o=ke;for(ke|=4,X=t.current;X!==null;){var c=X,m=c.child;if(X.flags&16){var y=c.deletions;if(y!==null){for(var k=0;k<y.length;k++){var I=y[k];for(X=I;X!==null;){var O=X;switch(O.tag){case 0:case 11:case 15:Ir(8,O,c)}var _=O.child;if(_!==null)_.return=O,X=_;else for(;X!==null;){O=X;var P=O.sibling,Q=O.return;if(_p(O),O===I){X=null;break}if(P!==null){P.return=Q,X=P;break}X=Q}}}var te=c.alternate;if(te!==null){var ae=te.child;if(ae!==null){te.child=null;do{var Xe=ae.sibling;ae.sibling=null,ae=Xe}while(ae!==null)}}X=c}}if(c.subtreeFlags&2064&&m!==null)m.return=c,X=m;else e:for(;X!==null;){if(c=X,c.flags&2048)switch(c.tag){case 0:case 11:case 15:Ir(9,c,c.return)}var E=c.sibling;if(E!==null){E.return=c.return,X=E;break e}X=c.return}}var x=t.current;for(X=x;X!==null;){m=X;var T=m.child;if(m.subtreeFlags&2064&&T!==null)T.return=m,X=T;else e:for(m=x;X!==null;){if(y=X,y.flags&2048)try{switch(y.tag){case 0:case 11:case 15:Bo(9,y)}}catch(ie){Ze(y,y.return,ie)}if(y===m){X=null;break e}var W=y.sibling;if(W!==null){W.return=y.return,X=W;break e}X=y.return}}if(ke=o,bn(),$t&&typeof $t.onPostCommitFiberRoot=="function")try{$t.onPostCommitFiberRoot(Hn,t)}catch{}r=!0}return r}finally{Ie=n,oa.transition=a}}return!1}function tu(t,a,n){a=Di(n,a),a=yp(t,a,1),t=vn(t,a,1),a=Et(),t!==null&&(nr(t,1,a),Ft(t,a))}function Ze(t,a,n){if(t.tag===3)tu(t,t,n);else for(;a!==null;){if(a.tag===3){tu(a,t,n);break}else if(a.tag===1){var r=a.stateNode;if(typeof a.type.getDerivedStateFromError=="function"||typeof r.componentDidCatch=="function"&&(kn===null||!kn.has(r))){t=Di(n,t),t=vp(a,t,1),a=vn(a,t,1),t=Et(),a!==null&&(nr(a,1,t),Ft(a,t));break}}a=a.return}}function zf(t,a,n){var r=t.pingCache;r!==null&&r.delete(a),a=Et(),t.pingedLanes|=t.suspendedLanes&n,ot===t&&(ht&n)===n&&(nt===4||nt===3&&(ht&130023424)===ht&&500>ee()-Vl?ti(t,0):Wl|=n),Ft(t,a)}function au(t,a){a===0&&(t.mode&1?(a=to,to<<=1,!(to&130023424)&&(to=4194304)):a=1);var n=Et();t=Va(t,a),t!==null&&(nr(t,a,n),Ft(t,n))}function Lf(t){var a=t.memoizedState,n=0;a!==null&&(n=a.retryLane),au(t,n)}function jf(t,a){var n=0;switch(t.tag){case 13:var r=t.stateNode,o=t.memoizedState;o!==null&&(n=o.retryLane);break;case 19:r=t.stateNode;break;default:throw Error(d(314))}r!==null&&r.delete(a),au(t,n)}var nu;nu=function(t,a,n){if(t!==null)if(t.memoizedProps!==a.pendingProps||jt.current)Pt=!0;else{if(!(t.lanes&n)&&!(a.flags&128))return Pt=!1,kf(t,a,n);Pt=!!(t.flags&131072)}else Pt=!1,Be&&a.flags&1048576&&Dd(a,Eo,a.index);switch(a.lanes=0,a.tag){case 2:var r=a.type;Wo(t,a),t=a.pendingProps;var o=Ei(a,yt.current);Li(a,n),o=kl(null,a,r,t,o,n);var c=Al();return a.flags|=1,typeof o=="object"&&o!==null&&typeof o.render=="function"&&o.$$typeof===void 0?(a.tag=1,a.memoizedState=null,a.updateQueue=null,Dt(r)?(c=!0,No(a)):c=!1,a.memoizedState=o.state!==null&&o.state!==void 0?o.state:null,hl(a),o.updater=Uo,a.stateNode=o,o._reactInternals=a,Cl(a,r,t,n),a=zl(null,a,r,!0,c,n)):(a.tag=0,Be&&c&&il(a),St(null,a,o,n),a=a.child),a;case 16:r=a.elementType;e:{switch(Wo(t,a),t=a.pendingProps,o=r._init,r=o(r._payload),a.type=r,o=a.tag=Pf(r),t=ya(r,t),o){case 0:a=Rl(null,a,r,t,n);break e;case 1:a=Cp(null,a,r,t,n);break e;case 11:a=xp(null,a,r,t,n);break e;case 14:a=Np(null,a,r,ya(r.type,t),n);break e}throw Error(d(306,r,""))}return a;case 0:return r=a.type,o=a.pendingProps,o=a.elementType===r?o:ya(r,o),Rl(t,a,r,o,n);case 1:return r=a.type,o=a.pendingProps,o=a.elementType===r?o:ya(r,o),Cp(t,a,r,o,n);case 3:e:{if(Tp(a),t===null)throw Error(d(387));r=a.pendingProps,c=a.memoizedState,o=c.element,Bd(t,a),Lo(a,r,null,n);var m=a.memoizedState;if(r=m.element,c.isDehydrated)if(c={element:r,isDehydrated:!1,cache:m.cache,pendingSuspenseBoundaries:m.pendingSuspenseBoundaries,transitions:m.transitions},a.updateQueue.baseState=c,a.memoizedState=c,a.flags&256){o=Di(Error(d(423)),a),a=Ip(t,a,r,n,o);break e}else if(r!==o){o=Di(Error(d(424)),a),a=Ip(t,a,r,n,o);break e}else for(Zt=hn(a.stateNode.containerInfo.firstChild),Qt=a,Be=!0,ba=null,n=Wd(a,null,r,n),a.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling;else{if(Ii(),r===o){a=Ha(t,a,n);break e}St(t,a,r,n)}a=a.child}return a;case 5:return Kd(a),t===null&&sl(a),r=a.type,o=a.pendingProps,c=t!==null?t.memoizedProps:null,m=o.children,Js(r,o)?m=null:c!==null&&Js(r,c)&&(a.flags|=32),Ep(t,a),St(t,a,m,n),a.child;case 6:return t===null&&sl(a),null;case 13:return Rp(t,a,n);case 4:return fl(a,a.stateNode.containerInfo),r=a.pendingProps,t===null?a.child=Ri(a,null,r,n):St(t,a,r,n),a.child;case 11:return r=a.type,o=a.pendingProps,o=a.elementType===r?o:ya(r,o),xp(t,a,r,o,n);case 7:return St(t,a,a.pendingProps,n),a.child;case 8:return St(t,a,a.pendingProps.children,n),a.child;case 12:return St(t,a,a.pendingProps.children,n),a.child;case 10:e:{if(r=a.type._context,o=a.pendingProps,c=a.memoizedProps,m=o.value,Oe(Io,r._currentValue),r._currentValue=m,c!==null)if(ga(c.value,m)){if(c.children===o.children&&!jt.current){a=Ha(t,a,n);break e}}else for(c=a.child,c!==null&&(c.return=a);c!==null;){var y=c.dependencies;if(y!==null){m=c.child;for(var k=y.firstContext;k!==null;){if(k.context===r){if(c.tag===1){k=Ba(-1,n&-n),k.tag=2;var I=c.updateQueue;if(I!==null){I=I.shared;var O=I.pending;O===null?k.next=k:(k.next=O.next,O.next=k),I.pending=k}}c.lanes|=n,k=c.alternate,k!==null&&(k.lanes|=n),ul(c.return,n,a),y.lanes|=n;break}k=k.next}}else if(c.tag===10)m=c.type===a.type?null:c.child;else if(c.tag===18){if(m=c.return,m===null)throw Error(d(341));m.lanes|=n,y=m.alternate,y!==null&&(y.lanes|=n),ul(m,n,a),m=c.sibling}else m=c.child;if(m!==null)m.return=c;else for(m=c;m!==null;){if(m===a){m=null;break}if(c=m.sibling,c!==null){c.return=m.return,m=c;break}m=m.return}c=m}St(t,a,o.children,n),a=a.child}return a;case 9:return o=a.type,r=a.pendingProps.children,Li(a,n),o=ia(o),r=r(o),a.flags|=1,St(t,a,r,n),a.child;case 14:return r=a.type,o=ya(r,a.pendingProps),o=ya(r.type,o),Np(t,a,r,o,n);case 15:return Mp(t,a,a.type,a.pendingProps,n);case 17:return r=a.type,o=a.pendingProps,o=a.elementType===r?o:ya(r,o),Wo(t,a),a.tag=1,Dt(r)?(t=!0,No(a)):t=!1,Li(a,n),gp(a,r,o),Cl(a,r,o,n),zl(null,a,r,!0,t,n);case 19:return Lp(t,a,n);case 22:return Sp(t,a,n)}throw Error(d(156,a.tag))};function iu(t,a){return Ea(t,a)}function Df(t,a,n,r){this.tag=t,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=a,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function sa(t,a,n,r){return new Df(t,a,n,r)}function Zl(t){return t=t.prototype,!(!t||!t.isReactComponent)}function Pf(t){if(typeof t=="function")return Zl(t)?1:0;if(t!=null){if(t=t.$$typeof,t===ct)return 11;if(t===he)return 14}return 2}function Mn(t,a){var n=t.alternate;return n===null?(n=sa(t.tag,a,t.key,t.mode),n.elementType=t.elementType,n.type=t.type,n.stateNode=t.stateNode,n.alternate=t,t.alternate=n):(n.pendingProps=a,n.type=t.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=t.flags&14680064,n.childLanes=t.childLanes,n.lanes=t.lanes,n.child=t.child,n.memoizedProps=t.memoizedProps,n.memoizedState=t.memoizedState,n.updateQueue=t.updateQueue,a=t.dependencies,n.dependencies=a===null?null:{lanes:a.lanes,firstContext:a.firstContext},n.sibling=t.sibling,n.index=t.index,n.ref=t.ref,n}function Xo(t,a,n,r,o,c){var m=2;if(r=t,typeof t=="function")Zl(t)&&(m=1);else if(typeof t=="string")m=5;else e:switch(t){case ne:return ni(n.children,o,c,a);case G:m=8,o|=8;break;case ue:return t=sa(12,n,a,o|2),t.elementType=ue,t.lanes=c,t;case dt:return t=sa(13,n,a,o),t.elementType=dt,t.lanes=c,t;case K:return t=sa(19,n,a,o),t.elementType=K,t.lanes=c,t;case F:return es(n,o,c,a);default:if(typeof t=="object"&&t!==null)switch(t.$$typeof){case ye:m=10;break e;case Bt:m=9;break e;case ct:m=11;break e;case he:m=14;break e;case Le:m=16,r=null;break e}throw Error(d(130,t==null?t:typeof t,""))}return a=sa(m,n,a,o),a.elementType=t,a.type=r,a.lanes=c,a}function ni(t,a,n,r){return t=sa(7,t,r,a),t.lanes=n,t}function es(t,a,n,r){return t=sa(22,t,r,a),t.elementType=F,t.lanes=n,t.stateNode={isHidden:!1},t}function Jl(t,a,n){return t=sa(6,t,null,a),t.lanes=n,t}function Xl(t,a,n){return a=sa(4,t.children!==null?t.children:[],t.key,a),a.lanes=n,a.stateNode={containerInfo:t.containerInfo,pendingChildren:null,implementation:t.implementation},a}function Of(t,a,n,r,o){this.tag=a,this.containerInfo=t,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=Ts(0),this.expirationTimes=Ts(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Ts(0),this.identifierPrefix=r,this.onRecoverableError=o,this.mutableSourceEagerHydrationData=null}function ec(t,a,n,r,o,c,m,y,k){return t=new Of(t,a,n,y,k),a===1?(a=1,c===!0&&(a|=8)):a=0,c=sa(3,null,null,a),t.current=c,c.stateNode=t,c.memoizedState={element:r,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},hl(c),t}function Ff(t,a,n){var r=3<arguments.length&&arguments[3]!==void 0?arguments[3]:null;return{$$typeof:B,key:r==null?null:""+r,children:t,containerInfo:a,implementation:n}}function ru(t){if(!t)return gn;t=t._reactInternals;e:{if(bt(t)!==t||t.tag!==1)throw Error(d(170));var a=t;do{switch(a.tag){case 3:a=a.stateNode.context;break e;case 1:if(Dt(a.type)){a=a.stateNode.__reactInternalMemoizedMergedChildContext;break e}}a=a.return}while(a!==null);throw Error(d(171))}if(t.tag===1){var n=t.type;if(Dt(n))return zd(t,n,a)}return a}function ou(t,a,n,r,o,c,m,y,k){return t=ec(n,r,!0,t,o,c,m,y,k),t.context=ru(null),n=t.current,r=Et(),o=xn(n),c=Ba(r,o),c.callback=a??null,vn(n,c,o),t.current.lanes=o,nr(t,o,r),Ft(t,r),t}function ts(t,a,n,r){var o=a.current,c=Et(),m=xn(o);return n=ru(n),a.context===null?a.context=n:a.pendingContext=n,a=Ba(c,m),a.payload={element:t},r=r===void 0?null:r,r!==null&&(a.callback=r),t=vn(o,a,m),t!==null&&(ka(t,o,m,c),zo(t,o,m)),m}function as(t){if(t=t.current,!t.child)return null;switch(t.child.tag){case 5:return t.child.stateNode;default:return t.child.stateNode}}function su(t,a){if(t=t.memoizedState,t!==null&&t.dehydrated!==null){var n=t.retryLane;t.retryLane=n!==0&&n<a?n:a}}function tc(t,a){su(t,a),(t=t.alternate)&&su(t,a)}function _f(){return null}var lu=typeof reportError=="function"?reportError:function(t){console.error(t)};function ac(t){this._internalRoot=t}ns.prototype.render=ac.prototype.render=function(t){var a=this._internalRoot;if(a===null)throw Error(d(409));ts(t,a,null,null)},ns.prototype.unmount=ac.prototype.unmount=function(){var t=this._internalRoot;if(t!==null){this._internalRoot=null;var a=t.containerInfo;ei(function(){ts(null,t,null,null)}),a[_a]=null}};function ns(t){this._internalRoot=t}ns.prototype.unstable_scheduleHydration=function(t){if(t){var a=Vc();t={blockedOn:null,target:t,priority:a};for(var n=0;n<pn.length&&a!==0&&a<pn[n].priority;n++);pn.splice(n,0,t),n===0&&Yc(t)}};function nc(t){return!(!t||t.nodeType!==1&&t.nodeType!==9&&t.nodeType!==11)}function is(t){return!(!t||t.nodeType!==1&&t.nodeType!==9&&t.nodeType!==11&&(t.nodeType!==8||t.nodeValue!==" react-mount-point-unstable "))}function cu(){}function Uf(t,a,n,r,o){if(o){if(typeof r=="function"){var c=r;r=function(){var I=as(m);c.call(I)}}var m=ou(a,r,t,0,null,!1,!1,"",cu);return t._reactRootContainer=m,t[_a]=m.current,br(t.nodeType===8?t.parentNode:t),ei(),m}for(;o=t.lastChild;)t.removeChild(o);if(typeof r=="function"){var y=r;r=function(){var I=as(k);y.call(I)}}var k=ec(t,0,!1,null,null,!1,!1,"",cu);return t._reactRootContainer=k,t[_a]=k.current,br(t.nodeType===8?t.parentNode:t),ei(function(){ts(a,k,n,r)}),k}function rs(t,a,n,r,o){var c=n._reactRootContainer;if(c){var m=c;if(typeof o=="function"){var y=o;o=function(){var k=as(m);y.call(k)}}ts(a,m,t,o)}else m=Uf(n,a,t,o,r);return as(m)}qc=function(t){switch(t.tag){case 3:var a=t.stateNode;if(a.current.memoizedState.isDehydrated){var n=ar(a.pendingLanes);n!==0&&(Is(a,n|1),Ft(a,ee()),!(ke&6)&&(Fi=ee()+500,bn()))}break;case 13:ei(function(){var r=Va(t,1);if(r!==null){var o=Et();ka(r,t,1,o)}}),tc(t,1)}},Rs=function(t){if(t.tag===13){var a=Va(t,134217728);if(a!==null){var n=Et();ka(a,t,134217728,n)}tc(t,134217728)}},Wc=function(t){if(t.tag===13){var a=xn(t),n=Va(t,a);if(n!==null){var r=Et();ka(n,t,a,r)}tc(t,a)}},Vc=function(){return Ie},Bc=function(t,a){var n=Ie;try{return Ie=t,a()}finally{Ie=n}}
37,fi=function(t,a,n){switch(a){case"input":if(Xa(t,n),a=n.name,n.type==="radio"&&a!=null){for(n=t;n.parentNode;)n=n.parentNode;for(n=n.querySelectorAll("input[name="+JSON.stringify(""+a)+'][type="radio"]'),a=0;a<n.length;a++){var r=n[a];if(r!==t&&r.form===t.form){var o=Ao(r);if(!o)throw Error(d(90));we(r),Xa(r,o)}}}break;case"textarea":jn(t,n);break;case"select":a=n.value,a!=null&&Na(t,!!n.multiple,a,!1)}},Oa=$l,_n=ei;var qf={usingClientEntryPoint:!1,Events:[wr,Mi,Ao,ha,er,$l]},jr={findFiberByHostInstance:Yn,bundleType:0,version:"18.3.1",rendererPackageName:"react-dom"},Wf={bundleType:jr.bundleType,version:jr.version,rendererPackageName:jr.rendererPackageName,rendererConfig:jr.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:D.ReactCurrentDispatcher,findHostInstanceByFiber:function(t){return t=Qr(t),t===null?null:t.stateNode},findFiberByHostInstance:jr.findFiberByHostInstance||_f,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:"18.3.1-next-f1338f8080-20240426"};if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"&&(Dr=__REACT_DEVTOOLS_GLOBAL_HOOK__,!Dr.isDisabled&&Dr.supportsFiber))try{Hn=Dr.inject(Wf),$t=Dr}catch{}var Dr;i.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=qf,i.createPortal=function(t,a){var n=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null;if(!nc(a))throw Error(d(200));return Ff(t,a,null,n)},i.createRoot=function(t,a){if(!nc(t))throw Error(d(299));var n=!1,r="",o=lu;return a!=null&&(a.unstable_strictMode===!0&&(n=!0),a.identifierPrefix!==void 0&&(r=a.identifierPrefix),a.onRecoverableError!==void 0&&(o=a.onRecoverableError)),a=ec(t,1,!1,null,null,n,!1,r,o),t[_a]=a.current,br(t.nodeType===8?t.parentNode:t),new ac(a)},i.findDOMNode=function(t){if(t==null)return null;if(t.nodeType===1)return t;var a=t._reactInternals;if(a===void 0)throw typeof t.render=="function"?Error(d(188)):(t=Object.keys(t).join(","),Error(d(268,t)));return t=Qr(a),t=t===null?null:t.stateNode,t},i.flushSync=function(t){return ei(t)},i.hydrate=function(t,a,n){if(!is(a))throw Error(d(200));return rs(null,t,a,!0,n)},i.hydrateRoot=function(t,a,n){if(!nc(t))throw Error(d(405));var r=n!=null&&n.hydratedSources||null,o=!1,c="",m=lu;if(n!=null&&(n.unstable_strictMode===!0&&(o=!0),n.identifierPrefix!==void 0&&(c=n.identifierPrefix),n.onRecoverableError!==void 0&&(m=n.onRecoverableError)),a=ou(a,null,t,1,n??null,o,!1,c,m),t[_a]=a.current,br(t),r)for(t=0;t<r.length;t++)n=r[t],o=n._getVersion,o=o(n._source),a.mutableSourceEagerHydrationData==null?a.mutableSourceEagerHydrationData=[n,o]:a.mutableSourceEagerHydrationData.push(n,o);return new ns(a)},i.render=function(t,a,n){if(!is(a))throw Error(d(200));return rs(null,t,a,!1,n)},i.unmountComponentAtNode=function(t){if(!is(t))throw Error(d(40));return t._reactRootContainer?(ei(function(){rs(null,null,t,!1,function(){t._reactRootContainer=null,t[_a]=null})}),!0):!1},i.unstable_batchedUpdates=$l,i.unstable_renderSubtreeIntoContainer=function(t,a,n,r){if(!is(n))throw Error(d(200));if(t==null||t._reactInternals===void 0)throw Error(d(38));return rs(t,a,n,!1,r)},i.version="18.3.1-next-f1338f8080-20240426"}),ym=di((i,s)=>{function l(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(l)}catch(d){console.error(d)}}l(),s.exports=ng()}),ig=di(i=>{var s=ym();i.createRoot=s.createRoot,i.hydrateRoot=s.hydrateRoot}),Y=xe(Me()),du=xe(Me()),pu=xe(ig()),ft=xe(Me()),ca=xe(Me()),rg=xe(ym()),Ee=xe(Me());/** 38 * @remix-run/router v1.23.0 39 * 40 * Copyright (c) Remix Software Inc. 41 * 42 * This source code is licensed under the MIT license found in the 43 * LICENSE.md file in the root directory of this source tree. 44 * 45 * @license MIT 46 */function _r(){return _r=Object.assign?Object.assign.bind():function(i){for(var s=1;s<arguments.length;s++){var l=arguments[s];for(var d in l)Object.prototype.hasOwnProperty.call(l,d)&&(i[d]=l[d])}return i},_r.apply(this,arguments)}var oi;(function(i){i.Pop="POP",i.Push="PUSH",i.Replace="REPLACE"})(oi||(oi={}));var uu="popstate";function og(i){i===void 0&&(i={});function s(d,p){let{pathname:h,search:f,hash:g}=d.location;return gc("",{pathname:h,search:f,hash:g},p.state&&p.state.usr||null,p.state&&p.state.key||"default")}function l(d,p){return typeof p=="string"?p:vs(p)}return lg(s,l,null,i)}function pa(i,s){if(i===!1||i===null||typeof i>"u")throw new Error(s)}function sg(){return Math.random().toString(36).substr(2,8)}function mu(i,s){return{usr:i.state,key:i.key,idx:s}}function gc(i,s,l,d){return l===void 0&&(l=null),_r({pathname:typeof i=="string"?i:i.pathname,search:"",hash:""},typeof s=="string"?ks(s):s,{state:l,key:s&&s.key||d||sg()})}function vs(i){let{pathname:s="/",search:l="",hash:d=""}=i;return l&&l!=="?"&&(s+=l.charAt(0)==="?"?l:"?"+l),d&&d!=="#"&&(s+=d.charAt(0)==="#"?d:"#"+d),s}function ks(i){let s={};if(i){let l=i.indexOf("#");l>=0&&(s.hash=i.substr(l),i=i.substr(0,l));let d=i.indexOf("?");d>=0&&(s.search=i.substr(d),i=i.substr(0,d)),i&&(s.pathname=i)}return s}function lg(i,s,l,d){d===void 0&&(d={});let{window:p=document.defaultView,v5Compat:h=!1}=d,f=p.history,g=oi.Pop,b=null,u=N();u==null&&(u=0,f.replaceState(_r({},f.state,{idx:u}),""));function N(){return(f.state||{idx:null}).idx}function v(){g=oi.Pop;let S=N(),R=S==null?null:S-u;u=S,b&&b({action:g,location:z.location,delta:R})}function w(S,R){g=oi.Push;let j=gc(z.location,S,R);u=N()+1;let $=mu(j,u),V=z.createHref(j);try{f.pushState($,"",V)}catch(D){if(D instanceof DOMException&&D.name==="DataCloneError")throw D;p.location.assign(V)}h&&b&&b({action:g,location:z.location,delta:1})}function C(S,R){g=oi.Replace;let j=gc(z.location,S,R);u=N();let $=mu(j,u),V=z.createHref(j);f.replaceState($,"",V),h&&b&&b({action:g,location:z.location,delta:0})}function A(S){let R=p.location.origin!=="null"?p.location.origin:p.location.href,j=typeof S=="string"?S:vs(S);return j=j.replace(/ $/,"%20"),pa(R,"No window.location.(origin|href) available to create URL for href: "+j),new URL(j,R)}let z={get action(){return g},get location(){return i(p,f)},listen(S){if(b)throw new Error("A history only accepts one active listener");return p.addEventListener(uu,v),b=S,()=>{p.removeEventListener(uu,v),b=null}},createHref(S){return s(p,S)},createURL:A,encodeLocation(S){let R=A(S);return{pathname:R.pathname,search:R.search,hash:R.hash}},push:w,replace:C,go(S){return f.go(S)}};return z}var hu;(function(i){i.data="data",i.deferred="deferred",i.redirect="redirect",i.error="error"})(hu||(hu={}));
vendor: 2,997 bytes, lines 46-55
46function vm(i,s){if(s==="/")return i;if(!i.toLowerCase().startsWith(s.toLowerCase()))return null;let l=s.endsWith("/")?s.length-1:s.length,d=i.charAt(l);return d&&d!=="/"?null:i.slice(l)||"/"}function cg(i,s){s===void 0&&(s="/");let{pathname:l,search:d="",hash:p=""}=typeof i=="string"?ks(i):i;return{pathname:l?l.startsWith("/")?l:dg(l,s):s,search:ug(d),hash:mg(p)}}function dg(i,s){let l=s.replace(/\/+$/,"").split("/");return i.split("/").forEach(d=>{d===".."?l.length>1&&l.pop():d!=="."&&l.push(d)}),l.length>1?l.join("/"):"/"}function ic(i,s,l,d){return"Cannot include a '"+i+"' character in a manually specified "+("`to."+s+"` field ["+JSON.stringify(d)+"]. Please separate it out to the ")+("`to."+l+"` field. Alternatively you may provide the full path as ")+'a string in <Link to="..."> and the router will parse it for you.'}function pg(i){return i.filter((s,l)=>l===0||s.route.path&&s.route.path.length>0)}function Ac(i,s){let l=pg(i);return s?l.map((d,p)=>p===l.length-1?d.pathname:d.pathnameBase):l.map(d=>d.pathnameBase)}function xc(i,s,l,d){d===void 0&&(d=!1);let p;typeof i=="string"?p=ks(i):(p=_r({},i),pa(!p.pathname||!p.pathname.includes("?"),ic("?","pathname","search",p)),pa(!p.pathname||!p.pathname.includes("#"),ic("#","pathname","hash",p)),pa(!p.search||!p.search.includes("#"),ic("#","search","hash",p)));let h=i===""||p.pathname==="",f=h?"/":p.pathname,g;if(f==null)g=l;else{let v=s.length-1;if(!d&&f.startsWith("..")){let w=f.split("/");for(;w[0]==="..";)w.shift(),v-=1;p.pathname=w.join("/")}g=v>=0?s[v]:"/"}let b=cg(p,g),u=f&&f!=="/"&&f.endsWith("/"),N=(h||f===".")&&l.endsWith("/");return!b.pathname.endsWith("/")&&(u||N)&&(b.pathname+="/"),b}var wm=i=>i.join("/").replace(/\/\/+/g,"/"),ug=i=>!i||i==="?"?"":i.startsWith("?")?i:"?"+i,mg=i=>!i||i==="#"?"":i.startsWith("#")?i:"#"+i,km=["post","put","patch","delete"];new Set(km);var hg=["get",...km];new Set(hg);/** 47 * React Router v6.30.1 48 * 49 * Copyright (c) Remix Software Inc. 50 * 51 * This source code is licensed under the MIT license found in the 52 * LICENSE.md file in the root directory of this source tree. 53 * 54 * @license MIT 55 */function ws(){return ws=Object.assign?Object.assign.bind():function(i){for(var s=1;s<arguments.length;s++){var l=arguments[s];for(var d in l)Object.prototype.hasOwnProperty.call(l,d)&&(i[d]=l[d])}return i},ws.apply(this,arguments)}var Am=Ee.createContext(null),pi=Ee.createContext(null),Nc=Ee.createContext(null),Br=Ee.createContext({outlet:null,matches:[],isDataRoute:!1});function fg(i,s){let{relative:l}=s===void 0?{}:s;Hr()||pa(!1);let{basename:d,navigator:p}=Ee.useContext(pi),{hash:h,pathname:f,search:g}=Nm(i,{relative:l}),b=f;return d!=="/"&&(b=f==="/"?d:wm([d,f])),p.createHref({pathname:b,search:g,hash:h})}function Hr(){return Ee.useContext(Nc)!=null}function xa(){return Hr()||pa(!1),Ee.useContext(Nc).location}function xm(i){Ee.useContext(pi).static||Ee.useLayoutEffect(i)}function Mc(){let{isDataRoute:i}=Ee.useContext(Br);return i?wg():gg()}function gg(){Hr()||pa(!1);
55let i=Ee.useContext(Am),{basename:s,future:l,navigator:d}=Ee.useContext(pi),{matches:p}=Ee.useContext(Br),{pathname:h}=xa(),f=JSON.stringify(Ac(p,l.v7_relativeSplatPath)),g=Ee.useRef(!1);return xm(()=>{g.current=!0}),Ee.useCallback(function(b,u){if(u===void 0&&(u={}),!g.current)return;if(typeof b=="number"){d.go(b);return}let N=xc(b,JSON.parse(f),h,u.relative==="path");i==null&&s!=="/"&&(N.pathname=N.pathname==="/"?s:wm([s,N.pathname])),(u.replace?d.replace:d.push)(N,u.state,u)},[s,d,f,h,i])}function Nm(i,s){let{relative:l}=s===void 0?{}:s,{future:d}=Ee.useContext(pi),{matches:p}=Ee.useContext(Br),{pathname:h}=xa(),f=JSON.stringify(Ac(p,d.v7_relativeSplatPath));return Ee.useMemo(()=>xc(i,JSON.parse(f),h,l==="path"),[i,f,h,l])}var Mm=function(i){return i.UseBlocker="useBlocker",i.UseRevalidator="useRevalidator",i.UseNavigateStable="useNavigate",i}(Mm||{}),Sm=function(i){return i.UseBlocker="useBlocker",i.UseLoaderData="useLoaderData",i.UseActionData="useActionData",i.UseRouteError="useRouteError",i.UseNavigation="useNavigation",i.UseRouteLoaderData="useRouteLoaderData",i.UseMatches="useMatches",i.UseRevalidator="useRevalidator",i.UseNavigateStable="useNavigate",i.UseRouteId="useRouteId",i}(Sm||{});function bg(i){let s=Ee.useContext(Am);return s||pa(!1),s}function yg(i){let s=Ee.useContext(Br);return s||pa(!1),s}function vg(i){let s=yg(),l=s.matches[s.matches.length-1];return l.route.id||pa(!1),l.route.id}function wg(){let{router:i}=bg(Mm.UseNavigateStable),s=vg(Sm.UseNavigateStable),l=Ee.useRef(!1);return xm(()=>{l.current=!0}),Ee.useCallback(function(d,p){p===void 0&&(p={}),l.current&&(typeof d=="number"?i.navigate(d):i.navigate(d,ws({fromRouteId:s},p)))},[i,s])}var fu=(i,s,l)=>{};function kg(i,s){(i==null?void 0:i.v7_startTransition)===void 0&&fu(),(i==null?void 0:i.v7_relativeSplatPath)===void 0&&fu()}var Ag="startTransition";Ee[Ag];function xg(i){let{to:s,replace:l,state:d,relative:p}=i;Hr()||pa(!1);let{future:h,static:f}=Ee.useContext(pi),{matches:g}=Ee.useContext(Br),{pathname:b}=xa(),u=Mc(),N=xc(s,Ac(g,h.v7_relativeSplatPath),b,p==="path"),v=JSON.stringify(N);return Ee.useEffect(()=>u(JSON.parse(v),{replace:l,state:d,relative:p}),[u,v,p,l,d]),null}function Ng(i){let{basename:s="/",children:l=null,location:d,navigationType:p=oi.Pop,navigator:h,static:f=!1,future:g}=i;Hr()&&pa(!1);let b=s.replace(/^\/*/,"/"),u=Ee.useMemo(()=>({basename:b,navigator:h,static:f,future:ws({v7_relativeSplatPath:!1},g)}),[b,g,h,f]);typeof d=="string"&&(d=ks(d));let{pathname:N="/",search:v="",hash:w="",state:C=null,key:A="default"}=d,z=Ee.useMemo(()=>{let S=vm(N,b);return S==null?null:{location:{pathname:S,search:v,hash:w,state:C,key:A},navigationType:p}},[b,N,v,w,C,A,p]);return z==null?null:Ee.createElement(pi.Provider,{value:u},Ee.createElement(Nc.Provider,{children:l,value:z}))}new Promise(()=>{});/** 56 * React Router DOM v6.30.1 57 * 58 * Copyright (c) Remix Software Inc. 59 * 60 * This source code is licensed under the MIT license found in the 61 * LICENSE.md file in the root directory of this source tree. 62 * 63 * @license MIT 64 */function bc(){return bc=Object.assign?Object.assign.bind():function(i){for(var s=1;s<arguments.length;s++){var l=arguments[s];for(var d in l)Object.prototype.hasOwnProperty.call(l,d)&&(i[d]=l[d])}return i},bc.apply(this,arguments)}function Mg(i,s){if(i==null)return{};var l={},d=Object.keys(i),p,h;for(h=0;h<d.length;h++)p=d[h],!(s.indexOf(p)>=0)&&(l[p]=i[p]);return l}function Sg(i){return!!(i.metaKey||i.altKey||i.ctrlKey||i.shiftKey)}function Eg(i,s){return i.button===0&&(!s||s==="_self")&&!Sg(i)}var Cg=["onClick","relative","reloadDocument","replace","state","target","to","preventScrollReset","viewTransition"],Tg="6";try{window.__reactRouterVersion=Tg}catch{}var Ig="startTransition",gu=ca[Ig],Rg="flushSync";rg[Rg];var zg="useId";ca[zg];function Lg(i){let{basename:s,children:l,future:d,window:p}=i,h=ca.useRef();h.current==null&&(h.current=og({window:p,v5Compat:!0}));let f=h.current,[g,b]=ca.useState({action:f.action,location:f.location}),{v7_startTransition:u}=d||{},N=ca.useCallback(v=>{u&&gu?gu(()=>b(v)):b(v)},[b,u]);return ca.useLayoutEffect(()=>f.listen(N),[f,N]),ca.useEffect(()=>kg(d),[d]),ca.createElement(Ng,{basename:s,children:l,location:g.location,navigationType:g.action,navigator:f,future:d})}var jg=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u",Dg=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,H=ca.forwardRef(function(i,s){let{onClick:l,relative:d,reloadDocument:p,replace:h,state:f,target:g,to:b,preventScrollReset:u,viewTransition:N}
vendor: 4,634 bytes, line 64
64=i,v=Mg(i,Cg),{basename:w}=ca.useContext(pi),C,A=!1;if(typeof b=="string"&&Dg.test(b)&&(C=b,jg))try{let j=new URL(window.location.href),$=b.startsWith("//")?new URL(j.protocol+b):new URL(b),V=vm($.pathname,w);$.origin===j.origin&&V!=null?b=V+$.search+$.hash:A=!0}catch{}let z=fg(b,{relative:d}),S=Pg(b,{replace:h,state:f,target:g,preventScrollReset:u,relative:d,viewTransition:N});function R(j){l&&l(j),j.defaultPrevented||S(j)}return ca.createElement("a",bc({},v,{href:C||z,onClick:A||p?l:R,ref:s,target:g}))}),bu;(function(i){i.UseScrollRestoration="useScrollRestoration",i.UseSubmit="useSubmit",i.UseSubmitFetcher="useSubmitFetcher",i.UseFetcher="useFetcher",i.useViewTransitionState="useViewTransitionState"})(bu||(bu={}));var yu;(function(i){i.UseFetcher="useFetcher",i.UseFetchers="useFetchers",i.UseScrollRestoration="useScrollRestoration"})(yu||(yu={}));function Pg(i,s){let{target:l,replace:d,state:p,preventScrollReset:h,relative:f,viewTransition:g}=s===void 0?{}:s,b=Mc(),u=xa(),N=Nm(i,{relative:f});return ca.useCallback(v=>{if(Eg(v,l)){v.preventDefault();let w=d!==void 0?d:vs(u)===vs(N);b(i,{replace:w,state:p,preventScrollReset:h,relative:f,viewTransition:g})}},[u,b,N,d,p,l,i,h,f,g])}var os=xe(Me()),vu=xe(Me()),lt=xe(Me()),le=xe(Me()),ps=xe(Me()),Wt=xe(Me()),wu=xe(Me()),_t=xe(Me()),rc=xe(Me()),oc=xe(Me()),Ur=xe(Me()),ku=xe(Me()),Au=xe(Me()),Pr=xe(Me()),Je=xe(Me()),Og=xe(Me()),Ut=xe(Me()),Fg=xe(Me()),Tt=xe(Me()),$a=xe(Me()),_g=xe(Me()),qt=xe(Me()),qi=xe(Me()),sc=xe(Me()),Ug=xe(Me()),ss=xe(Me()),qg={"/assets/testimonials/jessica.mp4":"https://framerusercontent.com/assets/AeqnQaYJSJFCM4jgXJ0HpCHaj0.mp4","/assets/testimonials/jessica-cover.jpg":"https://framerusercontent.com/images/rrslgkj4rVVwSrWvn5jfEG7nHVk.jpg?width=1080&height=1080","/assets/testimonials/mary.mp4":"https://framerusercontent.com/assets/oNDfjhvEc1W4IFrntMjWduL9a8.mp4","/assets/testimonials/dr-mary-cover.jpg":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9f3d911543e1ae08b5ab92.jpg","/assets/brand-v12/crystal.png":"https://framerusercontent.com/images/xnRzJ4xYaDwZIwqkQUZ9MQBxqFU.png?scale-down-to=512&width=996&height=996","/assets/brand-v12/cube.png":"https://framerusercontent.com/images/t6CLBd0oN0gR78Go8KYs2vuwoW8.png?scale-down-to=512&width=860&height=860","/assets/brand-v12/natural-original.png":"https://assets.cdn.filesafe.space/nTdw7XYyssZmD8ttqiwj/media/69d8465e9bcdf086d1f4acf3.png","/assets/brand-v12/system-base.png":"https://framerusercontent.com/images/UJ6V0ZvUY9Z1f2fh8gwoKhBWXZA.png?width=700&height=700","/assets/brand-v12/system-mark.png":"https://framerusercontent.com/images/pRsviX1rJBrDRuPzoAN6Ua87fo.png?width=1024&height=1024","/assets/brand-v13/hipaa-mark.avif":"data:image/avif;base64,AAAAHGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZgAAAXBtZXRhAAAAAAAAACFoZGxyAAAAAAAAAABwaWN0AAAAAAAAAAAAAAAAAAAAAA5waXRtAAAAAAABAAAANGlsb2MAAAAAREAAAgABAAAAAAGUAAEAAAAAAAALywACAAAAAA1fAAEAAAAAAAACrAAAADhpaW5mAAAAAAACAAAAFWluZmUCAAAAAAEAAGF2MDEAAAAAFWluZmUCAAAAAAIAAGF2MDEAAAAAr2lwcnAAAACKaXBjbwAAAAxhdjFDgSACAAAAABRpc3BlAAAAAAAAALQAAAC0AAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQAcAAAAAA5waXhpAAAAAAEIAAAAOGF1eEMAAAAAdXJuOm1wZWc6bXBlZ0I6Y2ljcDpzeXN0ZW1zOmF1eGlsaWFyeTphbHBoYQAAAAAdaXBtYQAAAAAAAAACAAEDgQIDAAIEhAIFhgAAABppcmVmAAAAAAAAAA5hdXhsAAIAAQABAAAOf21kYXQSAAoJOB3s7NhAQ0GkMrsXEgADTSyBQNf/L/vEo6gNkzn+tjENH8qPtrryO6mWnF8y/hvm5qM0nEy3I0pLqKrqS5HoWiWExfw6hbXOep9XGZRNNFTqqOt6n3l5tmX2aLaEwLdp967wu/HIZa+638ZUWXRg//tXk6hehQOrJPyYOa0KBBgksznAyrCFQGBaAcIXv0Nh66l3mjBKGI2CG0vL9H8hL8g7G27HqXR4tyG5CA96M4W3NmQijIf0tmuosph2NAZQheDhMj7HEm900lnxHBXz/EC3oGSpxfAyyhXC+kbSiaPF1wynEnaGvr/O/CMzTlA7WaEoX/zxqPbN6I27ea1MxqqHL3v+0qpewdCNIO4oI7ZBYMEAb6eo4kxXlXJ5dz3Bx0agMjraI13zrLTmCGeBNQmmasWwNNymp+9pUzb4n23GaDILlNuOleSqWEwVURxCNk2ebiWhs6OnA3ryCcMhGltkFCwgPcIFqeaFlTgLnlZwB5I6b7iKiMaD+UhZa7qCo6x8pC4jVRJLApa1eqrKotcWF+fxMHbUjr0CeLjEku56Cv7oyHBIuU/C3RviGA4yYmy7Q0ur0C19s6Hb+v8Lvzh3WmKs8UqwF2Hpz5cNEG2K5UsWR0C7Uo3trG47URFY6tFVGIzEqc+TVaIY1yzadJnOJfRf+SDKuok0MbGkAq+2tFMXgxQ46AthHorCAEup79QT18KKQMkjRNGBTslOsjGtyUQhsSBii5I92KFbwVEhUklEg0rChCtHPVXVxkMcVKTfsM/7MpOG9QEQsfGtyNfxtrEx2rNIe3GP5b28GBRyPAD+nCDs/vVNrjlXr+YwpftXKc76tKbpRzoPrnMhNNsSZ7i55Sa8ikAQr4uqVpnhymITwTEvDcrfPrNQuX5Hgb8jmfo4iu/pRRv90tsKM+GMQ8hqO1PaadOJe+TmGtOEdY1JYgxx+4cKq0hU5T/PBObKXtpBtYZb4cfRsG4A4dFOeJbo/HIechF/MdHcWla5qlUnrXDWylj4QtgM9pQ/jLEqRWFG26TMrbyF136vo+FwbLRmoq6NPw/KtUCopcobFOnfpEeBaCgGBO9Fo/3CklNAKIUSRRLcjQxNBYCvbqifJrlQRm7ITN+OysDRIfgzgTGWJO2iFSW4tQw/pvr6J33fMUXDnWqGuNk1LAsC15THeOrRPER2ebDNp+fOG7wi1jyB9zGuEdta2Tm8qi2ErsfgRRYyOv4KldgJC7o/9lpRysiL7yP8KvXMKKMDG1IRAtdMc2rbGzmAIEyLwlu/XqhTXVOb/3bXLqkSeh4Ea4XfU2LIypDVwFqfXIKWNt56lgVSARNE1XFUYUtW/luQ4bvU07Es3uOBcaa9D59S
64o6qX7rc/z2KNu9Cd8I+7KU7PBwpWcpr/tXk98qSn67W82gYA/nh6+NjNnHjPK6TgYm7B7EuKJ2dGUTPnS9zaO3phSjrD2kuGsfl8MNSUPrjodpBMUC4I8urcTtkHLLjdRrNCRwj5iSi6DUrDMw3J5yEvn9NBjZpYsryvjZNP3yVBXgHX498yAliGJDNzJO7CkBIKPL09lc+x1mglMvoy7orv/fAjpIuJIGPoCiivMQLrpFEAKp2L2vcOOggp63cxa4CGLorPbIKMu06lKFVbN2Z4AzEV0zavIQ5sqcpjK/cZFxbskltsieB5hWjb7iAwUGZHRKHioe2WK0+y095nNc5q05aFnO6IK+yxjlzKRPp4Lkv/QtLW9slftsZVUjYY9nd0lviigj1LgBkIqU7cT7iONjjRXKgzQJlMakYRnrJxmv90R6ub1z890AMA67vTtIVXdazStcDxaRtFzP9hFoQIsUUsxmib9EfM8elL9TaDxWG1muyNVsapP7FWyP68cUeyar+Ys67/XJEEnqWHpWlL9EPAds+YKkgqTTKkY1DesgyBpwfnLCIAdE24LCoYvcTUevayN5UWVaL9hIYPWBrl4CWjUqQ/JP3ek/Gz2GDv4xISXFa8EUFK3/V7cAayQTjq9T6T8z3MhHGaLMoDXRKSY9dVmU6MmVtzNsYrJy2CaUm1M4MeWgeF8jXbUHPYpso4hPa0v+VqBUzUM6cS/58MQU2bs64/Ob9lMke6zRcT10lFc0fmeEDb0ABqwQiIp9rz7qfXrBC76U9WUej88c5bTJgrQkrnv8tr2ZW2Uerd0BVO9VMtd24mATJjaEKey136lemPDo/mIi+5Wt1nGQfilVfxqEk9HNExqLBgVQGQhggWQKQrOjtyZEdFS7bNmxdAfWYaJ8Gin8LXsPxG50lCp3nKFOG0VozMQyz4wUK3Vd1/rFtBnrpXF2rIxroPqiOdH0T5gX/5pdIXBugCLTiIcakyt+PAVh6DNgqvGZ2T35OsmTjrFcV9RZ5AdpwX57oyR3YgJvNdEEyMFAg4fCOreXH1rLV+SRBVGo9QFnEvQ6JX1gzP1GD2l+t8KdAYRRDhpaSPz/5K0q60s92jZqsf/Osl2V6TDu2GLECVYU2/2sTdEqMjOljRtoZAEyMaJn4M7mYQmQ5HGyWtypvUcVJTTg5Y5GyXCVekGgOZfJMB6is6s/bTsjTyGK0L+pZgiTvlAUc9ITKWob7H8zgfmsEfFYtFbzX8RZPBRuOvX7YXWuBOTPDvUwn0hguX4K6TmnuzM4QxRh5ZqDPdeXxl1NlEHq+RfpRD5G0zyov5h5dsIsplI+OUMLLSQ+jV8gU4lHw/s8yZ/m7yk4Y4cCcTW3Wvtk0yQy/sTjFg/PEdggaSabyEIxoj4U8MBBVt1PZKJ++v3uWldzjCS4Unsz32Z1RsBZLOE30MmcOS9qtGkoYlLHgO0GUhxq/5j7mhXPGQqM/RutDbtn2EONJWWJ0dnanrc36xZi6BZQ1zqz0QmIFdtUpPuDKT7zIswMTKmnrWF+keerJt9nhI/fLmep/TiBQp3r9vB9tk6v6rlZPfdgHIyVuZEHWmcj0WxjHDeMCTiZvS7QaQ4ClEpYZIMNLc6R4XVCEGKKB5ZkwVxEGaAvoZMV+9mP2oWWPrQP6OSj29y5BW2oYNVSmu6P6AG6P/k0x49dglv6mwe8jJulhlWlkOIYH+gr5rVvDX+xpDH3F/eYcW0dqOCeES4HoA0YTu/9KeAT2CukX+upljxhqnkb2b0qtcrkQeTRJRr3OzhK3uxHRiERtGo+vKqcBfrIuiHDrNA3nVvycWvCqghLQsO2S/qrLdBnOb6yyyPqp2hFhiGRA8mzQSzNLi56jsrLL/G6SnK8gbMk2tku+uLEMfoUAW4BBqnID1wArQ/2pTrunDa6GTVcFWQfPqjsQ5P6XiOTACec/oQgqd2nmagAD1Ksz9k868aU0NACYH+hNBM/0p6CFrFulcihkLe73pl2BzbyNFv2NSr3jAjbh3b+9LJfoHq0vcKmYKW0WXc5QK0RBUPt2i4nJDVpAwS2lR73FVSOEoVYWww5XN2uEu3JQ7noPJwoNmus9zgPhGHmyZu62H4Du9UBqyvLXGC4UgLLkfTuaC3zALQTmDA28a3VV85KBcdQ8fm+amPVCRrBDSvaDlCnx4haE8SOqFW7+/LQStl4sVoCYI0eWhfITwM92duibyFHPLgTqQVhpcygFapdyujdUY6YPH/zzgch50pK3iz8eiA+JysjLw/oHP5WBBX0mqaah0RkUDj6XgMVIN6w8MHYNv8/Ds7u1SiohVKjysYjb6vYvO03d975qUvZ7DqAB0Uh5xv0KtlDeax/9PDyiWv/m9Po3eXsQVaj8+ZrC/Ayq6MQyRreNzci/ljkfwoLzlXj1lAWpfhlpP4kS2yQQMBFOd6UNoDIz1MUvSXCwAr45fsZUOBAEin3kpPfCNJMIRjIxIpXBArLaTEthnKrqGLge3uQ7bwXNlnhex01jDSNwnk/Je6Iq3MsUCa9br9/vS3Gfb6x0QJUVgOccZ5HbcNFEKWZgUNIX94KMf5K82TKo0D/+sgaSc7Q++ndWvhTbVE1kczSPay9GoEPuYn8pNP22dZb7TZojx8S+YUCmFV7MDk/qmFnRAEgAKBhgd7OzYVDKfBRIAEEBQ2ALC8owMGqZJzn0r9iHidwX6SjZpBL2OqAAnUEnCj3sYXL/Lun2QLBzNzraTMc7lSApV7662UIXs3K/9Hcg8i08LI9OY/eG45LycbW9YN6420LrKNQObG6nuA1iGEEYIV/GkOtQlv1xUHJYAsxv29ooTIn2d8naelSxfCLcaczA6SHhUcF3BnqKWgIKs8Fm5uOJHYXhaYuayEdQq6P1mglmEOjRSJNryF77aDj6AoSh721rMaZQnptJIp0BJ/GVPHLTDOv/4fwFCgYg4dJ9sEtw8RNLS7Pb60UBKfcJEE/ZVS2LktmtQ9dYGIU5ZSfjZ0lg5xvk/A6KTlI4i7B+741FU94XxzCLnrtWc6VxVnP0WwyyMUIPQdi51JNeR8LOvA5ph0LF/CQGCdoc01UKL37CrPtHgFgb4D0lVfLdiTHLXQtpr2+lQmLyZMVfhSSUI8cBB5N7r8ylNzhaccpcJUcDq2Pp5+gVmhSiUwGc4vcNi4cbNDempF8BUHuNtV5vZY1xvqMi6UMVFvjIfxIdbFMZpWnW8apzTemXoOCvjFljAh82HPRiihtssPSnDakTVcRVzA3OfgK06IVNPvxoJbTpyJRIvZsKiNmWatzUpP0t+Qq+93uT+Fg+Wl4MREl5YlNE32Gt5m94qIQf0Cosmil1nhgTNWo3BEuqM3Ii3GAN/RJsaT0+XXRf1sIc3ym3C9TEPwtW1tWFQPQb5cqgrEwXoi71gpzmHTFYi3AlY1PQEFTCFrkCIPLmMfUBJT/D8cGadb4U9g8E00/yLwGwbSY0rrVluOucEBeHEqemefmBkI2wPLiANvL7gYgr4MIrG/yBlY/AZp21gki07s0jrLNgXtf1gbh9Trl4V8b+Q4VmTty9wAPNRZWLQ","/assets/brand-v8/dr-mary-transparent.png":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9f90aa355bf4eb55eb17e8.png","/assets/brand-v8/hero-clinic-owner.png":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9f90aa355bf4eb55eb17f2.png","/assets/brand-v8/natural-full-wordmark.png":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9f90aa355bf4eb55eb17fa.png","/assets/brand-v9/evidence-md-original-transparent.png":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9f9895bcef8b5f2c38b91b.png","/assets/brand-v9/kc-aesthetics-original-transparent.png":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9f9895a4ea811589f74b94.png","/assets/brand/msmai-logo.svg":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNzE4IiBoZWlnaHQ9IjE4NyIgdmlld0JveD0iMCAwIDcxOCAxODciIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGQ9Ik0yMCAxMjQuNDZWMTBMMjguMzYgMTguMzZWMTI0LjQ2SDIwWk0xMTMuODYgMzAuNzJWNDIuNTVMNzcuMjEgNzkuMkw0MC41NiA0Mi41NVYzMC43M0w3Ny4yMSA2Ny4zOEwxMTMuODYgMzAuNzJaTTEyNi4wNiAxMjQuNDZWMTguMzZMMTM0LjQyIDEwVjEyNC40NkgxMjYuMDZaIiBmaWxsPSJibGFjayIvPgo8cGF0aCBkPSJNMjE3LjE4IDYzLjEyMDFIMTUxLjQ1VjcxLjUyMDFIMjE3LjE4VjYzLjEyMDFaIiBmaWxsPSJibGFjayIvPgo8cGF0aCBkPSJNMjE3LjE4IDEwLjE1OTlIMTUxLjQ1VjE4LjU1OTlIMjE3LjE4VjEwLjE1OTlaIiBmaWxsPSJibGFjayIvPgo8cGF0aCBkPSJNMjE3LjE4IDExNi4wNkgxNTEuNDVWMTI0LjQ2SDIxNy4xOFYxMTYuMDZaIiBmaWxsPSJibGFjayIvPgo8cGF0aCBkPSJNMjg1LjQyIDEwLjI1TDI0Ni43NyAxMC4xNlYxMC4xN0wyMzguNDEgMTBWNzEuNDlIMjQ2Ljc3VjE4LjU0SDI4MS4zOEwyODIuMzYgMTguNTVDMjgyLjg2IDE4LjU0IDI4My4xOCAxOC41NCAyODMuNTkgMTguNTRDMzEwLjUzIDE4LjU0IDMzMi4zNyA0MC4zOCAzMzIuMzcgNjcuMzJDMzMyLjM3IDk0LjI2IDMxMC41MyAxMTYuMSAyODMuNTkgMTE2LjFIMjM4LjRWMTI0LjQ2SDI4My41OEMzMTUuMTQgMTI0LjQ3IDM0MC43NCA5OC45MSAzNDAuNzggNjcuMzRDMzQxLjA3IDM2LjM2IDMxNi4zOSAxMC45MSAyODUuNDIgMTAuMjVaIiBmaWxsPSJibGFjayIvPgo8cGF0aCBkPSJNNDc0LjA0IDcxLjQ3OTlDNDgzLjM3IDg0LjEyOTkgNDgzLjk2IDEwMS4yMiA0NzUuNTIgMTE0LjQ5QzQ3MS4yNiAxMjAuODMgNDY0LjA2IDEyNC41OCA0NTYuNDIgMTI0LjQ1SDM4NC4yNFYxMTYuMDlINDU2LjQyQzQ2MS4zNCAxMTYuMjEgNDY1Ljk3IDExMy43OCA0NjguNjkgMTA5LjY4QzQ3MS42O
64SAxMDUuMDIgNDczLjIzIDk5LjU2OTggNDczLjExIDk0LjAyOThDNDczLjExIDgzLjE2OTggNDY3Ljg5IDcxLjQ4OTkgNDU2LjQyIDcxLjQ4OTlINDUzLjIzTDQ2MS4xMSA2My42MDk5QzQ2Ni4yIDY0LjYzOTkgNDcwLjc4IDY3LjQyOTkgNDc0LjA0IDcxLjQ3OTlaIiBmaWxsPSJibGFjayIvPgo8cGF0aCBkPSJNNDEzLjQ2IDcxLjQ4QzQwNi42MSA3MS41NiA0MDAuMTEgNjguNDggMzk1LjgzIDYzLjEyQzM4Ni41IDUwLjQ2IDM4NS45MSAzMy4zNyAzOTQuMzYgMjAuMTFDMzk4LjYyIDEzLjc3IDQwNS44MSAxMC4wMiA0MTMuNDYgMTAuMTVINTUwLjkzTDU0Mi41NyAxOC41MUg0MTMuNDZDNDA4LjU1IDE4LjM5IDQwMy45MSAyMC44MiA0MDEuMiAyNC45MkMzOTguMiAyOS41OCAzOTYuNjUgMzUuMDMgMzk2Ljc4IDQwLjU3QzM5Ni43OCA1MS40MyA0MDIgNjMuMTEgNDEzLjQ3IDYzLjExSDQ0MS44NUw0MzMuNDkgNzEuNDdINDEzLjQ2VjcxLjQ4WiIgZmlsbD0iYmxhY2siLz4KPHBhdGggZD0iTTQ5My4yNyA2My40NFYxMjQuNDNINTAxLjYyVjYzLjQ0SDQ5My4yN1pNNTc0LjQ2IDEyLjJMNTY3LjM4IDE5LjMxOTlDNTc5LjA5IDIwLjMxOTkgNTg3Ljk4IDMwLjM0OTkgNTg3LjUzIDQyLjA5OTlDNTg3LjEyIDUzLjg0OTkgNTc3LjU5IDYzLjIgNTY1Ljg0IDYzLjM4QzU2NS43IDYzLjM4IDU2NS42MSA2My40MyA1NjUuNDggNjMuNDNINDkzLjI4VjcxLjcyOTlDNDkzLjQ3IDcxLjcyOTkgNDkzLjY3IDcxLjcyOTkgNDkzLjg2IDcxLjcyOTlDNDk0LjQxIDcxLjcyOTkgNDk0Ljk2IDcxLjcyOTkgNDk1LjUxIDcxLjcyOTlDNDk2LjM4IDcxLjcyOTkgNDk3LjI0IDcxLjcyOTkgNDk4LjExIDcxLjcyOTlDNDk5LjI1IDcxLjcyOTkgNTAwLjM5IDcxLjcyOTkgNTAxLjUzIDcxLjcyOTlDNTAyLjkgNzEuNzI5OSA1MDQuMjcgNzEuNzI5OSA1MDUuNjQgNzEuNzI5OUM1MDcuMiA3MS43Mjk5IDUwOC43NiA3MS43Mjk5IDUxMC4zMiA3MS43Mjk5QzUxMi4wMyA3MS43Mjk5IDUxMy43MyA3MS43Mjk5IDUxNS40NCA3MS43Mjk5QzUxNy4yNSA3MS43Mjk5IDUxOS4wNiA3MS43Mjk5IDUyMC44NyA3MS43Mjk5QzUyMi43NCA3MS43Mjk5IDUyNC42MiA3MS43Mjk5IDUyNi40OSA3MS43Mjk5QzUyOC4zOCA3MS43Mjk5IDUzMC4yOCA3MS43Mjk5IDUzMi4xNyA3MS43Mjk5QzUzNC4wNCA3MS43Mjk5IDUzNS45MSA3MS43Mjk5IDUzNy43OCA3MS43Mjk5QzUzOS41OSA3MS43Mjk5IDU0MS4zOSA3MS43Mjk5IDU0My4yIDcxLjcyOTlDNTQ0LjkgNzEuNzI5OSA1NDYuNiA3MS43Mjk5IDU0OC4zIDcxLjcyOTlDNTQ5Ljg1IDcxLjcyOTkgNTUxLjQgNzEuNzI5OSA1NTIuOTUgNzEuNzI5OUM1NTQuMzEgNzEuNzI5OSA1NTUuNjYgNzEuNzI5OSA1NTcuMDIgNzEuNzI5OUM1NTguMTQgNzEuNzI5OSA1NTkuMjcgNzEuNzI5OSA1NjAuMzkgNzEuNzI5OUM1NjEuMjQgNzEuNzI5OSA1NjIuMDggNzEuNzI5OSA1NjIuOTMgNzEuNzI5OUM1NjMuNDYgNzEuNzI5OSA1NjMuOTkgNzEuNzI5OSA1NjQuNTIgNzEuNzI5OUM1NjYuMDcgNzEuNzI5OSA1NjcuNTkgNzEuNzQgNTY5LjEzIDcxLjU2QzU3MC40MSA3MS40MSA1NzEuNjkgNzEuMTY5OSA1NzIuOTQgNzAuODQ5OUM1NzUuNCA3MC4yMjk5IDU3Ny43NyA2OS4zIDU4MCA2OC4wOEM1ODIuMiA2Ni44OCA1ODQuMjUgNjUuNDEgNTg2LjA5IDYzLjcxQzU4Ny45NCA2Mi4wMSA1ODkuNTcgNjAuMDc5OSA1OTAuOTUgNTcuOTc5OUM1OTIuMzUgNTUuODQ5OSA1OTMuNDcgNTMuNTQgNTk0LjMgNTEuMTNDNTk0LjkgNDkuMzYgNTk1LjM1IDQ3LjUzIDU5NS42MiA0NS42OEM1OTcuNzQgMzAuODUgNTg4LjggMTYuNjUgNTc0LjQ2IDEyLjJaIiBmaWxsPSJibGFjayIvPgo8cGF0aCBkPSJNNjMxLjk2IDI5LjE5OTlMNjM2LjYzIDM4LjcyOTlMNjIwLjQ2IDcxLjgxOTlINjUwLjk0TDY1NS4xMiA4MC4xNzk5SDYxNi4zN0w1OTQuNzMgMTI0LjVINTg1LjQyTDYzMS45NiAyOS4xOTk5Wk02NDEuMjcgMjkuMTk5OUw2MzYuNjEgMTkuNjY5OUw2NDEuMjcgMTAuMTI5OUw2OTcuMTIgMTI0LjVINjg3LjgxTDY0MS4yNyAyOS4xOTk5WiIgZmlsbD0iYmxhY2siLz4KPHBhdGggZD0iTTIwIDE3Ni4wOUwyMC4xOSAxNDguMTNIMzAuMDJMMzguMDUgMTcwLjU3TDQ2LjQyIDE0OC4xM0g1Ni4yNVYxNzYuMDlINTAuMUw1MC40OSAxNTMuMDJINTAuMDNMNDEuNzcgMTc2LjA5SDM0LjI4TDI2LjQxIDE1My4wMkgyNS45NVYxNzYuMDlIMjBaIiBmaWxsPSIjNzNDQkREIi8+CjxwYXRoIGQ9Ik04OC43NTk4IDE3Ni4wOUwxMDEuMTMgMTQ4LjEzSDExMC42MkwxMjIuOTkgMTc2LjA5SDExNi4zTDExMy42OSAxNzAuMTlIOTguMDQ5OEw5NS40Mzk4IDE3Ni4wOUg4OC43NTk4Wk0xMDAuMjggMTY1LjFIMTExLjQ2TDEwNi4xMiAxNTMuMDJIMTA1LjYyTDEwMC4yOCAxNjUuMVoiIGZpbGw9IiM3M0NCREQiLz4KPHBhdGggZD0iTTE1NS40OCAxNzYuMDlWMTQ4LjEzSDE3OC40OUMxODEuMzMgMTQ4LjEzIDE4My41NCAxNDguODYgMTg1LjEyIDE1MC4zMkMxODYuNyAxNTEuNzggMTg3LjQ4IDE1NCAxODcuNDggMTU2Ljk3QzE4Ny40OCAxNTkuNSAxODYuOSAxNjEuNDggMTg1Ljc1IDE2Mi45MkMxODQuNiAxNjQuMzUgMTgyLjk2IDE2NS4yNSAxODAuODMgMTY1LjYyTDE4Ny4xNyAxNzYuMUgxODAuMThMMTc0LjMgMTY1LjgySDE2MS42MlYxNzYuMUgxNTUuNDhWMTc2LjA5Wk0xNzcuNzYgMTUzLjIxSDE2MS42M1YxNjAuNjhMMTc3Ljc2IDE2MC43MkMxNzguODkgMTYwLjcyIDE3OS43NSAxNjAuNDMgMTgwLjM1IDE1OS44NkMxODAuOTUgMTU5LjI5IDE4MS4yNSAxNTguMzIgMTgxLjI1IDE1Ni45NkMxODEuMjUgMTU1LjU4IDE4MC45NSAxNTQuNjEgMTgwLjM1IDE1NC4wNUMxNzkuNzUgMTUzLjQ5IDE3OC44OSAxNTMuMjEgMTc3Ljc2IDE1My4yMVoiIGZpbGw9IiM3M0NCREQiLz4KPHBhdGggZD0iTTIyMS41MSAxNzYuMDlWMTQ4LjIxSDIyNy42NlYxNTkuNTlIMjM2LjhMMjQ1LjgzIDE0OC4yMUgyNTMuNDdMMjQyLjE4IDE2Mi4xM0wyNTMuNDcgMTc2LjA5SDI0NS44M0wyMzYuNzYgMTY0LjY3SDIyNy42NlYxNzYuMDlIMjIxLjUxWiIgZmlsbD0iIzczQ0JERCIvPgo8cGF0aCBkPSJNMjg1Ljk2IDE3Ni4wOVYxNDguMTNIMzE2LjA3VjE1My4yMUgyOTIuMVYxNTkuMzlIMzEzLjg0VjE2NC40N0gyOTIuMVYxNzFIMzE2LjA3VjE3Ni4wOEgyODUuOTZWMTc2LjA5WiIgZmlsbD0iIzczQ0JERCIvPgo8cGF0aCBkPSJNMzYxLjgzIDE3Ni4wOVYxNTMuMjJIMzQ4Ljc3VjE0OC4xNEgzODEuMDNWMTUzLjIySDM2Ny45N1YxNzYuMDlIMzYxLjgzWiIgZmlsbD0iIzczQ0JERCIvPgo8cGF0aCBkPSJNNDE0Ljg3IDE3Ni4wOVYxNDguMTNINDIxLjAyVjE3Ni4wOUg0MTQuODdaIiBmaWxsPSIjNzNDQkREIi8+CjxwYXRoIGQ9Ik00NTUuODIgMTc2LjA5VjE0OC4xM0g0NjIuMDRMNDgxLjQ4IDE2OC4yM1YxNDguMTNINDg3LjYyVjE3Ni4wOUg0ODEuNEw0NjEuOTYgMTU1Ljk1VjE3Ni4wOUg0NTUuODJaIiBmaWxsPSIjNzNDQkREIi8+CjxwYXRoIGQ9Ik01MzUuNzkgMTc2LjI4QzUzMS4xMSAxNzYuMjggNTI3LjQ1IDE3NS4wOSA1MjQuODIgMTcyLjdDNTIyLjIgMTcwLjMyIDUyMC44OCAxNjYuNzggNTIwLjg4IDE2Mi4wOUM1MjAuODggMTU3LjQyIDUyMi4yMiAxNTMuOSA1MjQuODkgMTUxLjUxQzUyNy41NiAxNDkuMTIgNTMxLjQ1IDE0Ny45MyA1MzYuNTUgMTQ3LjkzSDU1MS4xNVYxNTMuMDFINTM2Ljk4QzUzMy42MiAxNTMuMDEgNTMxLjE1IDE1My43MyA1MjkuNTUgMTU1LjE2QzUyNy45NSAxNTYuNTkgNTI3LjE1IDE1OC45IDUyNy4xNSAxNjIuMDhDNTI3LjE1IDE2NS4yNiA1MjcuOTIgMTY3LjU3IDUyOS40OCAxNjkuMDJDNTMxLjAzIDE3MC40NyA1MzMuMzEgMTcxLjE5IDUzNi4zMyAxNzEuMTlINTQ2LjUxVjE2NS4zNkg1MzkuMzNWMTYwLjI4SDU1Mi42NlYxNzYuMjd
64INTM1Ljc5VjE3Ni4yOFoiIGZpbGw9IiM3M0NCREQiLz4KPHBhdGggZD0iTTU4NS45MiAxNzYuMDlWMTcwLjVINTkyLjA2VjE3Ni4wOUg1ODUuOTJaIiBmaWxsPSIjNzNDQkREIi8+CjxwYXRoIGQ9Ik02MjQuMjYgMTc2LjA5TDYzNi42MyAxNDguMTNINjQ2LjEyTDY1OC40OSAxNzYuMDlINjUxLjgxTDY0OS4xOSAxNzAuMTlINjMzLjU2TDYzMC45NSAxNzYuMDlINjI0LjI2Wk02MzUuNzggMTY1LjFINjQ2Ljk2TDY0MS42MiAxNTMuMDJINjQxLjEyTDYzNS43OCAxNjUuMVoiIGZpbGw9IiM3M0NCREQiLz4KPHBhdGggZD0iTTY5MC45OCAxNzYuMDlWMTQ4LjEzSDY5Ny4xM1YxNzYuMDlINjkwLjk4WiIgZmlsbD0iIzczQ0JERCIvPgo8L3N2Zz4K","/assets/campaigns/dr-mary-emsella-confidence.jpg":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6aa33aaef88eb22e725c5fda.jpg","/assets/campaigns/dr-mary-emsella-consultation.jpg":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6aa33aae240171435ef389f3.jpg","/assets/campaigns/kc-consultation-conversation-v9-23.png":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9f90aa968770b81c5ababd.png","/assets/campaigns/kc-consultation-creative.png":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9f309d968770b81c52a293.png","/assets/campaigns/kc-consultation-questions-v9-03.png":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9f90aa551b2e2c30eb6e90.png","/assets/campaigns/natural-rejuvenation-forma-intro.png":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6aa33aae881e2bfc63d6fa5c.png","/assets/client-logos/kc-aesthetics-ink.png":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9f3d91bbc6015019c71f82.webp","/assets/client-logos/natural-rejuvenation.png":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9f3d911543e1ae08b5ab9b.webp","/assets/client-logos/revitalize.png":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9f808ba4ea811589f4a2a5.png","/assets/client-logos/skin-bar.png":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9f3d91a4ea811589ef2eee.webp","/assets/client-work/sunshine-branded-confirmation.jpg":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9f36c5968770b81c5314f6.jpg","/assets/evidence-v5/email/sunshine-reminder-sample.jpg":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9f5300355bf4eb55e543a9.jpg","/assets/evidence-v5/email/sunshine-winback-sample.jpg":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9f5300355bf4eb55e543b3.jpg","/assets/evidence-v5/product/calendar-sync.png":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9f52ffa4ea811589f08299.webp","/assets/evidence-v5/product/contact-record.png":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9f52ff4793a2d512b9827a.webp","/assets/evidence-v5/website/evidence-desktop-approved.png":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9f52ff730969fc0fc0610e.webp","/assets/evidence-v5/website/evidence-desktop-native.png":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9f52ffbbc6015019c87cc2.webp","/assets/evidence-v5/website/evidence-mobile-approved.png":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9f52ff355bf4eb55e5437f.webp","/assets/evidence-v5/website/evidence-mobile-native.png":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9f52ff730969fc0fc06105.webp","/assets/evidence-v5/website/sunshine-desktop-approved.png":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9f5300db940b68053e8076.webp","/assets/evidence-v5/website/sunshine-desktop-native.png":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9f53001543e1ae08b7041e.webp","/assets/evidence-v5/website/sunshine-mobile-approved.png":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9f5300968770b81c54dda4.webp","/assets/evidence-v5/website/sunshine-mobile-native.png":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9f5300bbc6015019c87cf3.webp","/assets/partners-v7/us-medical-directors.png":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9f7cfebcef8b5f2c35a8ba.png","/assets/patient-acquisition/native-calendar-september.png":"data:image/png;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCAGcAZMDASIAAhEBAxEB/8QAHAABAAEFAQEAAAAAAAAAAAAAAAQCAwUGBwEI/8QAPRAAAgICAQMBBQYEBAUEAwAAAAECAwQRBQYSITEHE0FRgRQiMmFxkRUjUqEkQrHRFjNDYsE1cqLwc7Lx/8QAGQEBAQEBAQEAAAAAAAAAAAAAAAECAwUE/8QAIhEBAAMAAgICAgMAAAAAAAAAAAECEQMSBCETMTJBIlFh/9oADAMBAAIRAxEAPwD6pAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKZzUF5/YCoEaV8n6aR4rp/Pf0LialAtV3KXiXhl0igAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWa8vHsy7cWu+uWRSoysqUk5QT9Nr4b0YPrvmMvheD9/g1r3llkaZZE05QxlLx7ySW20v09Wv0crpfhsTiOP/wALa8q3I1ddmSfdLIk/Pc38vPhf/wBLnrUZgAEUAAHkpRgtzkor5t6PTkvtT6Yz+T6uxOWjw2L1XxePh+4s4W7L9zOmbm37+tP7rbj48+fC1+WFt65x+J6O6Z43oyXJ8dHOzcjEm8vFszsnj1SnKypVeXKSbSS8pL8l4111Nd0Bwe7rvrGPTMaqr5x5GPUGLx+PyObxksaOXRdvTnVNLWmmm468Lxr1PetuV6u47j+sumeQ6jWRlY/CrmMbkqMONNnuu+ULKZRi9Rb14kvKXnyOpru4OG8p1X1Bw9XS3Tf8ey/td/F/xHK5Wnh3l3Si2owhGmCaWt+ZPfovi/NeJ1h1nzNfRXH15X8H5LkcvOxMq+/jte9hTX3QujVYk4tx8pend6+PA6mu3hNPemno4JV1b1zjcNkc1mc7hXUcJzv8EysWGBGP26KujXK1y3uEn3rSjpePzGP/AMVY/L+0/k+m+Zw8DH43PnlPHtxFc8qcaIycZSb+5HtikmvO2/PgdTXewcP6h9pXLcpyfC4XEZeVwtWVwlPL23Y3Ez5Gxzt/DV2JPtivO5fH0WivD6r636lu6JwMfKj05ncph5k8/wB/gKcoSpnFKcIT002vKTetT+OkOsmu2nkZRlvtaenp6foyFyfHvkuFyOPuy8ml30uqeRjS93atrTlF/wCV/wChyLo/jOPo645HP9nuEsTguIwLsTJyK5Nw5LL8OMUn4n2ae5/OWvKJEaO1dy7nHa7l50HKKkk2k36LfqfOtPFYuD7Kemut8GVj6uyMvFus5D3snbkztuUbK5edOLUmu308Gx+1/p3hZ5l1OLjX8r1zzsow433l8u7BUdfzYNf8quGnLfxl8/Or1NdnlKMVuTSXzbPTg3WvG8z1J7Tf+Hpcdgc7XxvDU3QjyuROrGVkpNTtcYJuVktKK+C0zovsezsfO9n/ABzxcfIxVjysxp42Re75UzrnKMoKb8yimvH5aXwJMZBrdAARXkn2xbfwIcpOUm2SMl/y/wBWRiwkrGZl4+FQ7sy+uilNRc7JKK23peX+bL5Hz8PHz8O3FzaoXY9se2cJLw0ap0dl5GHzuf07G6XI4GFBSqy/WVG3r3Fj9G18NfBfRbiNhzm3W0RP7bmScefdHT9URi5jv+avzMy3CUADLQAAAAAAAAAAAAAAAAAAAAAAAAAAKba4W1zrthGdc04yjJbUk/VNGH6c4OXBTyqMfKnPjJyU8fGmtvHb33RUt+Y+ml8P9c0BoAAAAANQ6m6ExOb5yHM43K8vw3Ke4+zWZHG3qt3VJtqM1KMk9NvT1v8AZEd+zPg4dO4HFYt3I4tmDkSzKOQqyP8AFRvlvvsc2mpOW3tNafy9DdwXZMcp619nF+R05xvGYWTyvLTu57GzeQycrMXvlUm1OUX91R7Y+igk/kmzYOM9nHFYuPzkeQzOT5fJ5jH+yZWVn3qdvudNKEXGKUUtt+F6+TdgNlMaLZ7N8R4fExr5znauR4uE6cbkoXwWR7qX/Sk+ztlHwtbjvx6k3A6D43CyOnb1mcnffwk8i2mzIv8AeSundBxnK1tbfq2u3tSf5eDbQNlcabd7O+Jt4TleLlkZyx+R5V8vbJTh3RudsbO2L7dKG4rw03rfn4mN5X2T8VyHIczlLmOexYczb7zkMfHyowqyI6S9212eI+H6Pf3mt61rogGymNQ5voHj8/Lwczjs3kuDzcPFWDXfxlsYSeOvKqkpRknFeq8bTL/G9Ecbx/IcFmU5GfO7h8a7Gp99d7z3kbWnKVjknJy3HxppLfp6G0AbK4x/UHFw5rhM3jLcnKxa8qp1SuxZqFsE/D7W09P6GsdF+zunpGeHHj+ouob8HFjKFeBk31PH00/WMa4v1e/X1N3A0aBx/sq4LC5TFyK8jk58fiZTzcXibMhPDx7m2++FetrTbaW9JtlPIey/Fyuq+Q6ho6l6lweRzUoWPFyaoqMF6Qj3VNqPjetnQQNlMabz3s/xOWycDNhy/NYHLYuKsN8hhZEa78ir+mxuLUvO5b0tN7Rnul+BwOmeCxeJ4muVeJjpqPfJylJttylJv1bbbf6mUA1QAEFF63W/y8kQnEW6txe1+H/QsJLG83i5Wbxl2PgZjwr7NRV6h3OC3515XnW9P4HnCcTicLx1eFgV9lUPLb8ynJ+spP4t/Mng1vrGOsboXcZbnv5FuMXJ6SJdcFCOiS1CoAGWgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABRKmD+Gv0KVRD82XQB5GKitJaPQAAAAAAAAAAAAAAAAAAB5ZJxhKSi5NJtRXq/yA9BzXoDr7kuqcuNkq+Djjam78KrLms/B1vStrlFb8rT1rz6bM7jdfcTkYHTmXCrMVfO1W24qcI7iq6pWy7/veH2xetb8lyTW2g0npP2kcR1LyGBiYuHyuJLPxXl4lmZje7ryIx13qD29uO1v4fFNrTN2JMYAAAA0H2odeX9FZ/T6hh1ZGFm22fbJyk1KmmHZ3Tjr10pN6fwRTzHX9mL7UeI6Ww8Wm7Evj/jMqUnumcqrLIRj8N9tW3v4SRclNdAB
64pnBe0fhua5LHxMejkaYZkbZYOVkYzhTmqtbl7qW/PhN+UtpbRZ6T9pvDdS5/GYuJh8tjLk6Z3Yd2Xi+7rv7FucIy29yj538PHhsZJreQARQAwPWWXzWBxFmXwFfHWTohO26ObKaTjGLf3e1evj4gZ4Gg9G9Zclm1dOy6jx8KqXUdKv4+OC5y7EqXbNWuetPt0l2787JeR7ROKroi6MPk8vLszcnAqw8ahTutnRJqyUV3a7Fr1bXqvmXJTW5gxnTXOYXUfC4/KcbKbxrtpKyDhOEotxlGUX6SUk0180ZMigAAA5HyftYy+P6Uws6zjabOUjyWThZ+NCUu2mvG73dYvj4hGLSfxmjO5ntGowupOawrcW3IxMKeLiY6xIO27LyroSsdcFvWowSbfhLb2/BesprfwaTP2k8OuFozq8Xk7cq7Mlx8eNrxt5ayIpuVbhvSaittt61p78kn2c9XPrDE5nJ+yyxq8LkrMGELIOFmoQg/vxfpJObTX5DJXW2gAgAHOMvqHraHW0OnqcXptztw7M+u2dl+lXCyMNPx+L76fy9SxGjo4OcYntRxaub5LA5bj86uvH5h8XHMox5Tx4NqHu/ez34cpSa8b143raM7Prni4cfk5jqy/dUcsuGklCO/f+9Ve1978HdJefXXwGSa2oAEAAAAaB1v1lyHDdXYHC4FnBYscjCsy5ZHLXyqhuM4x7E18X3b+jJFXXddXLYPB5GJfncxfiVZk7eMq97iRrnKUVZ3tpqC7fLfwa1v4XDW7gwPQfNW9RdHcRy+Qq1bmY8bpKuLjHb+SbbX7szxAAAAHlknGEpKLk0m1Fer/I5x7PevOS6szoSdfBxxpd/v8KrLms7B1tJW1yit+Vp61r4bLg6QDQrPadgReRBcNz0bFj35GJG7D939uVP41Um97+OpJePK2Z7oTqN9WdK4HMvjsnjvtVasVF7Temk9xa/FF78PSbXwQyTWfABAAAAAACi+E7KLIVWOqyUWo2JJuL14en4eisAcuxejOpuR6m4DkOpXwCs4mcp2cngxmsvOTrlBRku1RhFqW5JOS2vGkY/hPZ71XjPpbDz8vhZ8b0/DLpqnTKxW3wtosrhKScdRa7o7Sb+L34SfYQXtKY5/wXRfIcfP2eu67Ef/AA9gW4uV2Sk++U6YQTr+75W4v1140dAAJM6oAANQ606Sl1Lz3B3XOh8bjU5tGXXNvvnG+n3a7VrXz3tr6modLey7lOOo6flyudiZebj51+RyF8Zz3bW8WWNUoNx8tQUN71p92m/j14F2Uxy7p3ofqKi7pnC5jK4qXE9NxsWJZjOfvspuqVVbsi0lDUZNvTltkvp7obkuOxvZ1Xffhyl05C6OX2Tk1Y50SrXu9xW/Mk/OvB0YDZMAARQh81izzuHz8SpxVl9FlUXL0TlFpb/LyTABzi7o3ncTgugnxN3Gz5jpqmFNleTOaouTx/c2akouS+afb+pruR7KeVux+NzM3+EcjyeHyOflTx7LrqKLoZMu7anFOUJR0vGpLy1t+GdpBe0pjXuguCl050vi8dbRgUXRc52V4KmqYylJvUe9uT9fV629vS3o2EAigAA5lV7NLJ+0HqTlcy/HnwfJYl1dOKtudd18KoXza1ryqV8fizA4Xsj5OHQ/G43I38dnc/jcm+RvVltscfJ+57pQc4pTj9xQafb4a9GmdrBrtKY5Rhez7luLw+Jz+HxuBw+awOSvzliVzueNZC2p1SjKyW5Ofbr7/altfh+Js/s26f5XgMXnZc9dhW5nJ8rbyH+DcuyCnCtdv3kn4cX9NM3AEmdMAARQ1q7gcqftIxeoFZT9iq4q3BlBt+8c5XVzTS1rt1B/He9eDZQBzfO6E5PI6f6lwYX4Su5PqCvlaW5y7Y1Rsok1L7viWqpeFteV5+WOz+g+p5ZWbhYeVw/8Ev6gr5xTtdiv172Fk6tKPavMW1Lb36aW9rrIL2lMAARQAAafzPR9fL+0HC5nkcbAzOMo4y3EdGRWrJe9lbCSkouLWtRkt735L2H0zbidb5/K0LFq463iaOPppr3FwlXOyX4UtKOpxS0/g/BtQLo172e8Jk9OdEcLw+dOmzKwsaNNkqW3BtfJtJ6+iNhAIAAAovhOyiyFVjqslFqNiSbi9eHp+Ho5hjdG9Uch1LwPIdRT4CF/EznOXKYMJLLzd1yglKLiowi+7cknJbXjSOpAsTg4v0x7MOdxeoeJzuWs42UsSjKoys2OXffk5jtrcVY1ZHUdb/Cnpbfn0Oi+zzi+S4Po/jOI5j7I8jApjiwnizlKNlcIqMZPuimpNLyvKXzZsYEzqYAAigAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI2dnY2DWp5Vqgn6eG2/ovJJXlbAAAAAAABDu5PEpvdVlrUotKTUW4xb9NvWl9QJgAAAAAAAAIdHJ4l90aq7W5S32txajLXybWn9CYAAAAAAACxRmUX5N9FVndbTpTST8b/ADAvgAAAAABYzMunDhGd8mlKXZHti5Nv11pfowL4LOLk15VbnV39qevvwcX+zReAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMd1DFfwbMlpdyqaT+JkI/hX6HlkIWQlCyMZwktOMltMqAAAAAABh+Qsry758dTKEIN92VZtLS/pX/c/7IzBGs4/CsnKdmJjznJ7cpVRbf8AYCStaWvQBJJJJaS9EgAAAA8m1GLcvRLb8bPQBgcm6Nudx2TVkwvxp2pV0JacW467vm9efD9NmeLNeJj13O2uiqFr9Zxgk39S8AAAAAAReUuuowrJYtcrLvSKit638dfkYjg5wr5a+ivHyYL3ME5Ww15Tk23+rf8AqbCUquCslNRipySTlry0vTyBUAAAAAGP5eui2WJG/Jsx5e83XKHjctPxvXjxsyBRdVXdW4XVwsg/WMltAQOGtnN5dUrnkV029kLXptrSem166b0ZIpqqrprUKoRhBekYrSRUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAU2WQqrlOySjCK25N6SRHxOQxsuxwpm+9Lu7ZQcW181teURupFN8Nf2PTTjJvW9JSTbLWHN1crCmGXLLrnS5yc2pOD2tNNfB79PyAzAAAAAAWMrKqxYxdvvNSel2Vyn/omXyxn5McPEsvkt9q8RX+Z/BfVgeYebRme89xKTdb1JSg4tP6okETisaWLiJWvd9jdlsvnN+v8At9CWAAAAAARsvOx8WcYXSl3yW1GEHJ6+ekn4L1NsLqo2VSU65LakvRow2erLealGjKjh2Qx1uxpSc02/Gn40tev5kzp+SnxGP2xUUk4+HtPTa2v19fqBkAAAAAAhW8piV3uqdupRfbJ9rcYv5OWtImmr8hKdeHyVGNkY7pnZNOMk/eqcn+FL47foxA2gFNMXCmEZeqikyoAAABGzs7Gwa1PKtUE/Tw239F5JJjuoYr+DZktLuVTSfxAv5Wfj4soxum+6S7lGMXJ6+bSXhEiqyFtcbK5KUJLakvRoxdNtePzOW75xh301yg5PSaXdv/7+Zd6fTXE0vTSk5zin/S5Nr+zQGRAAAAAR83Nx8GpWZVqhF+njbf6JeSmXIYscmrHdq99Z+GKTfw35+X1LfORT4jMk0u5Uz09engj5kUrOJaSTdy29ev8ALkBlgAAAAAjV5+NZlzxoWqV0E5SST0tevn0+JJMZbGEeepTUVD7NY38vxR2BfxuSxci5V1WNyltx3FpT1/S2tP6Eww+JZDkM6u+EoRxMfcaIp6c5a05a+SW0jMAAAAAAAAAAAAaTTTW0y1j41GOpLHprqUvL7IqO/wBi6AAAAAAAU2VwsUfeQjPtaku5b016P9SoAAAAAAAAAWsjGoye37RTVb2+nfFS1+5cjFRioxSUV4SXwPQAAAAAAC1LGoler5U1O5eljiu5fUugAAAAAAFNkIWQlCyMZwktOMltMqD9ALV+PReoq+muxR8rvinr9y6kktLwjC9OcdnYDyvt+T7/AN5JOH3m/nt+fTfj9jNFn0kTsbIACKAADycI2QlCyKlCS04yW00eSrhLs7oRfY9x2vwv8vkVAAAAAAAFE6q5y7p1wlLtcdtJvT9V+hWAI1WBh1WKdWJjwnH0lGuKa+uiSAAAAAAAAAAAAAAAAAAAAAEfPzcXj8aeRnZFWPRD8VlslFL6s0fkPa10xiWOFVmXl68bop8f/JxNVpa31DF+SlPynHQAc/4/2tdMZdihbZl4m/G76fH/AMXI3jAzcXkMaGRg5FWRRP8ADZVJST+qFqWr9wU5KX/GdSAAZbADyUlFbk9AegtO+H5s9jdB/HX6g1cAAAAAAUynGP4mUe/h+YF0FEbYS9H5/MrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI2Rn42PkVUW2pXWNKMUm358L09PqUW8niVXuqdrUotRk1FuMX8nLWkBMAAAxXVHO4vTnC38jnNuuvxGC9bJP0iv1/3ZlTg/t95ieRz2JxUJfyMWpWzXzsl/tFL92dOKne2OPkcvxUmzR+q+puR6n5GWTyNz7E/5VEX9ypfJL/z6swZ7GLlJRittvSRsnUvR2f07xmJmZ1+JNX2Op102d8q5peYyaWtr0em/J6HquQ8OYtfbfbWjOdKdTcj0xyMcnjrn2N/zaJP7lq+TX/n1Rfp6R5Czo3I6klKqvBqmoxhNvvsTkod0VrWtvXr8Ga4PVvR/LjmJ+n1v0vzuL1HwtHI4Lars8Sg/WuS9Yv9P9mZU4P7AuYnj89l8VOX8jKqdsF8rI/7
64xb/ZHeDz+WnS2Pc8fl+WkWUWz7I/m/Qiybk9t7ZVdLusf5eCLm5VWFiW5ORJxpqi5SaTb1+i8szEOkyvg1mjrHCt4Hk+VljZtNPH2Oq2q2tRs7ko+i3/ANy9dGQ4fl7eRunXZxPI4KjHuU8qEFGXn0WpPyamswxHJWfpmarHB/OPyJae1tehBJGNLcWvkYl0heLV1nb4j6/6F1+FshSfdJt/EQS8fn1Bjed5ejhcL7RkV32tvthVRW5zm9N6S/RN7el4IVnVGHHhuP5CNOVbLPS+zY1cFK6xtb0lvXheW96RqKzLE3rE5Ms+XqbdPtl6GH4TlYcrVbL7Ll4l1UuyynJr7JRf900/mmZIkwsTvuE4FFMu6tP4+hWZbACxm5lGFV7zJsUIfD4t/okBfBDu5LHqcVL3r7oqScaZyWn+aRfxcirLx4X0S7qp+YvTW/3AugAAAAAI12fjU5VePZaldY9Rgk2/r8vqUW8niVXuqdrUotRk+1uMW/g5a0gJgAAAAAARYZ+LPLnjQujK6EXKSXokvXz6fECUCHjcniZFyrqtblLfbuLSnr5NrT+hMAAAAAAAAAAADG81FJYbSW3lVbfz8kPnboXYV8qcqtV0yauolHXvGn+Hfqt/l6mcnXCzt74Rl2tSW1vTXxLc8THnerp0VSuXpNwTkvqBdg+6KbTW1vT+B6AAPmr2zQnD2ick571ONUo/p7uK/wBUz6VON+37p+c1ic9RBuMIrHyNfBb3CX7tr9jv49su+TzaTbi9fpxc6FfDGs9m3ScM+2VWHLkrFfZFbcId33ml58pbOeg+21dx5FL9d/127ksjguY6W6qlhc+v4bCjEprrjhWRjiQhN9kUn5n3S2t/D1fg4iASlOjXLy/Jk5jd/YzCc/aJxrhvUI2yl+nu5L/Vo+lTjfsC6fnBZfPXwajOLx8ffxW9zl+6S/c7IfH5Ftu9XwqTXi9/tCn+J/qeFzIjqe/gy2cn0udUwxbOD60jyGNk5OJ/FpuyvG/5jS929rz8Nbf5Jl7o6WE+rr10zfkXcK8PuyO6c51q/uXbpz89zjvZv5
6456eh07+nGOLJif6el7F9ZFklUR7YefVnOXaFc/wS/QhE4h2R7JtEhZQuW/9KzP/wAM/wD9WcxysWqXTfQmbyE76+Kx65V5VlLknBTgktuPlRbWm/k/zOsg6Vt1ceTj7tN9nkk7eZjx9l9vBRvgsGdrlL/L99RcvLipehuQC8slp2dapXrGJON/y/qXSmuPbBIqObqEPmIp8XmNpNqizT16fdZMPJxjOEozipRktNNbTQGJyrZ/wzDxaHq/JhGuLX+WOvvS+i/8GUoqhRTCqpdsIRUYr8kFVWpxkq4KUY9sX2raXyX5FYAAAAABjOYilbx7SSby4bevX7sjD5ndKjk7lkV10Rvffiv/AKna1vb9V3a+BtM64T7e+EZdr7o7W9P5otzxMadyunj1StXpNwTkvqUXYPuhF6a2t6fwPQCAAABiM2uuXLKuS7a5Ydql2r4OUdmXKXXB2Kxwj7xLtUteUvlsDW65X3WcRV9oxra4WKUPdJ90oqL+9JP8Pjxr5s2YtU41FNkp001Vzl+KUYpN/qXQAAAAAAAAAAAAAAAABZzMWjNxLcbLqjbj2xcJwktqSfwLwA+euuvZhyPD325PC1WZ3Gt9yjBd1tS+TXxX5r6nOZRcZOMk1JPTT9Uz7LIOdxHG8hLuz+Ow8mXzuojN/wB0fTTyZiMtDz+TwItO0nHyFGLlJRim5N6SXq2dG6F9mHI8xfVk81VZg8an3OM1222r5JfBfm/od3weI43j5d2Bx2HjS+dNEYP+yJwv5MzGVg4/Ais7edWcPFowsSrGxKo1Y9UVCEIrSil8C8AfM9B5OKlHTIs6pQ+G18yWBqYghJv0JrjF+sV+x6kl6JIumLFVPnc/2L4BFCmyCmvz+DKgBDnCUPVfUpJx52R/pX7F1MQ0nJ6S2SKau3zL1/0LqWvQDTAAEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABDu5PEpvdVlrUotKTUW4xb9NvWl9SvLz8fFnGF02ptb7Yxcnr5tJeEQOQsry758dTKEIN92VZtLS/pX/c/7Irqtqx+bzHdOMFOmuUHJ6Tiu7ev/AL8SjJ1WQtrjZXJShJbUl6NFRjun01xNL00pOc4p/wBLk2v7NGRIAAAEPI5LEx7nVba1KOu5qLahv07mlpfUmGH5K2GRfPjqJQh3+cmzwu2L+H/ua/sBPsz8avLrxpWr38/wxSb/AD8/L6kkxnIwhDJ4zsSSeQvT4/ckZMAAABTbZCquVlklGEVtyfokVFvIlVCicsjtVUVuXd6aAs4mfj5U5QpnLvS7u2cHF6+a2vKKaOTxL7lVVa3KW+1uLSlr102tP6EbjpfbMqWda4xi4OFNba2ob25P834/RFGNbXyObVZXKEcPGk1Uk0veT1raXyXnRRmAAQAABZysmrFrU75dsW+1aTbb+SS8stwz8aeNPIVqVUHqbkmnF/Jp+dnnJZVOHQrroqUk9Vx+MpP0SI2I68PEtyc62t2W2Kdso+Yxb0kv0XhbAl4mdRlSlGmUu+K24zg4vXz016Ekw2B3w522Nt8cqU6O5WRSXu4qX4dLx53vZmQAAAEbLzsfElGN0pd7W+2EHJ6+ekn4JJjuUy1RZGjH7Ptty1GUtfcj/U/yXy+LAnQurnQrozi6nHuU9+NfMow8qnMx4340u+qW9PTXo9fExOZX7jEw8Kmq+/E1/NnVHuckvh9X6l3pm73uBNKq2tRtn+OOt7k34/T0Ay4AAAACHkcliY9zqttalHXc1FtQ36dzS0vqe5PI42NcqrJTdjj36hXKfj034T+RC5K2GRfPjqJQh3+cmzwu2L+H/ua/sU5lOM8y6UOQtxroUx8RaSUVvT8ryvUozFc1ZXGcd9skmtrT/ZlRF4q6zI47GuuWrJwUpEogAAAQ6uTxLb1VXa3KTai+1qMmvVKWtMmGGqsr5DNq91KEMLFn9xJpe8s9PC+S39WBNt5PEqvdVlupJqMn2txi38HLWkTDVIuzHwsy77bKN9WRPWP47ZNy9HHW3vfqbWvReNAAAAAAAAAAABGs4/CsnKdmJjznJ7cpVRbf9i5djUXRirqarFH8KlFPX6F0AEklpeEAAAAAEa3j8O2xztxMec5eXKVcW39dEkAUOqtqG64P3fmHhfd+Hj5FYAAAACm2uFtbhbCM4S9YyW0/oVACPVg4lMnKnFork1puNaT18jyvj8KucZ14mPCcXtSjVFNf2JIAAAAAALWRj0ZEVHIprtSe0pxUtfueVYmPTCcKsemuE/xRjBJS/UvAC1j41GMmsemupP1UIqO/2LoAAAACxfhYuRPvvxqbZ613TrUnr6l8AU1VV01qumEa4L0jFaS+grrhXHtrjGEdt6iteX6lQAAAAAAI1vH4dtjnbiY85y8uUq4tv66K7cTGuUFbj1TUPw90E+39C8AAAAAAA/K8kWHHYVc4zhh40Zxe1JVRTT/YlACzLFx5Xq6VFTuXpNwXcvqXgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAImTyWLjWuu6xqSSctQclFP+ppePqMjkMfHmoWe9ba3uFUpLX6paAlgtYuRVl48L6Jd1U/MXprf7l0AAAABDq5PEtvVVdrcpNqL7Woya9Upa0wJgIdvJ4lV7qna1KLUZPtbjFv4OWtImAAAAAKbbIVVysskowituT9EgKgRcXkMbJlKNU2pRXc1OLg9fPyl4Kcbk8TIuVdVrcpb7dxaU9fJtaf0AmAAAAAALOVk04tanfPtTfakk22/kkvLKK8/GsxrL1alXX4m5Jxcf1T8oCSCNiZ2PlylGmbc4rb
64jKLi9fPTXoSQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADEcndG66fH48oQstW8izwuyD8fWTXhF3lJuGLTh4j1ZkfyoNf5Y6+9L6L/wSbcDDusdluJjzm/WUq02/rovRpqjKEo1wUoR7ItRX3V8l+QCiqFFMKql2whFRivyRWAAAAAw1VlfIZtXupQhhYs/uJNL3lnp4XyW/qzMvyvJFhx2FXOM4YeNGcXtSVUU0/2A17M7pUcncsiuuiN778V/9Tta3t+q7tfA2qD7oRemtren8C1PExp3K6ePVK1ek3BOS+peAAAAW8iVUKJyyO1VRW5d3pouFNtcLa3C2EZwl6xktp/QDD4/byDyMzIl21zplVVWnuSrfrJr5v5EOuV91nEVfaMa2uFilD3SfdKKi/vST/D48a+bM/RhYtE++jGoqnrXdCtRf9iqnGopslOmmqucvxSjFJv9Si6ACAAAI+ZfVUoQstVVlrcK5uO0pa/Y1+fdDHz1bYsh1ZNVlt0V+OO1taXppI2W6qu6twurhZB+sZLaZ5VRVVV7uqqEK/6YxSX7AY/3kL+fpdElNV48u9xe15cdL+zZlC3Rj048WqKq6k3tqEUt/sXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//Z","/assets/portfolio-v10/dr-mary-desktop.jpg":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9fa3b7968770b81c5cbe18.jpg","/assets/portfolio-v10/dr-mary-mobile.jpg":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9fa3b7bcef8b5f2c39d197.jpg","/assets/portfolio-v10/evidence-md-desktop.jpg":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9fa3b7bcef8b5f2c39d189.jpg","/assets/portfolio-v10/evidence-md-mobile.jpg":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9fa3b7355bf4eb55ed131d.jpg","/assets/portfolio-v10/kc-aesthetics-desktop.jpg":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9fa3b7bcef8b5f2c39d19b.jpg","/assets/portfolio-v10/kc-aesthetics-mobile.jpg":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9fa3b7355bf4eb55ed1319.jpg","/assets/portfolio-v10/natural-rejuvenation-desktop.jpg":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6abd944811d7faddd411225d.jpg","/assets/portfolio-v10/natural-rejuvenation-mobile.jpg":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6abd94486c64b8e488bef20e.jpg","/assets/portfolio-v10/sombra-soul-desktop.jpg":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6abd944910a2b7bc2b4d62f6.jpg","/assets/portfolio-v10/sombra-soul-mobile.jpg":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6abd9449b0ce0b5a4449a0cb.jpg","/assets/portfolio-v10/revitalize-desktop.jpg":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9fa3b9968770b81c5cbe60.jpg","/assets/portfolio-v10/revitalize-mobile.jpg":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9fa3b9968770b81c5cbe6a.jpg","/assets/portfolio-v10/skin-bar-desktop.jpg":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9fa3b9968770b81c5cbe74.jpg","/assets/portfolio-v10/skin-bar-mobile.jpg":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9fa3b9968770b81c5cbe7e.jpg","/assets/portfolio-v10/sunshine-desktop.jpg":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9fa3ba968770b81c5cbe94.jpg","/assets/portfolio-v10/sunshine-mobile.jpg":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9fa3ba968770b81c5cbe9e.jpg","/assets/portfolio-v7/dr-mary-desktop.jpg":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9f7cfe355bf4eb55e8fa9d.jpg","/assets/portfolio-v7/dr-mary-mobile.jpg":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9f8338355bf4eb55e9b02d.jpg","/assets/portfolio-v7/evidence-md-desktop.jpg":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9f8338a4ea811589f4eb10.jpg","/assets/portfolio-v7/evidence-md-mobile-3x.jpg":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6aa01968dd867dc12dd62155.jpg","/assets/portfolio-v7/evidence-md-mobile.jpg":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9f8338551b2e2c30ea040e.jpg","/assets/portfolio-v7/kc-aesthetics-desktop.jpg":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9f8338a4ea811589f4eb1c.jpg","/assets/portfolio-v7/kc-aesthetics-mobile.jpg":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9f8338a4ea811589f4eb18.jpg","/assets/portfolio-v7/natural-rejuvenation-desktop.jpg":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9f7d00551b2e2c30e94a34.jpg","/assets/portfolio-v7/natural-rejuvenation-mobile.jpg":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9f7d00551b2e2c30e94a41.jpg","/assets/portfolio-v7/revitalize-desktop.jpg":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9f7d01551b2e2c30e94a4c.jpg","/assets/portfolio-v7/revitalize-mobile.jpg":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9f8338968770b81c5949c4.jpg","/assets/portfolio-v7/skin-bar-desktop.jpg":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9f7d02a4ea811589f432fa.jpg","/assets/portfolio-v7/skin-bar-mobile.jpg":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9f7d02355bf4eb55e8fb48.jpg","/assets/portfolio-v7/sunshine-desktop.jpg":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9f7d02355bf4eb55e8fb51.jpg","/assets/portfolio-v7/sunshine-mobile.jpg":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9f7d03355bf4eb55e8fb79.jpg","/assets/product-v7/in-room-desktop.jpg":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9f7d03bcef8b5f2c35a90c.jpg","/assets/product-v7/in-room-mobile.jpg":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9f7d03a4ea811589f43332.jpg","/assets/product-v7/in-room-tablet.jpg":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9f7d03968770b81c58932f.jpg","/assets/product-v8/ask-ai-priorities.jpg":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9f90aaa4ea811589f6601d.jpg","/assets/product-v8/ask-ai-refined-draft.jpg":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9f90ab551b2e2c30eb6eb2.jpg","/assets/product/booking-v2-calendar.png":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9f3d8e2032992f5a644f39.webp","/assets/product/booking-v2-cart.png":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9f3d8edb940b68053d22c4.webp","/assets/product/booking-v2-checkout.png":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9f3d8ebbc6015019c71f1e.webp","/assets/product/booking-v2-menu.png":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9f3d8e4793a2d512b82fde.webp","/assets/product/booking-v2-staff.png":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9f3d8e355bf4eb55e3e664.webp","/assets/product/email-stats.png":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9f3d8e730969fc0fbf07bc.webp","/assets/product/emr-body-map-marked.png":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9f3d8fa4ea811589ef2eca.webp","/assets/product/emr-body-map.png":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9f3d8fbbc6015019c71f67.webp","/assets/product/emr-calendar.png":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9f3d8f968770b81c5388d3.webp","/assets/product/emr-dashboard.png":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9f3d8f355bf4eb55e3e692.webp","/assets/product/emr-inventory.png":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9f3d8fbbc6015019c71f6b.webp","/assets/product/emr-notes-list.png":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9f3d8f968770b81c5388dc.webp","/assets/product/emr-patients.png":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9f3d901543e1ae08b5ab5b.webp","/assets/product/emr-payments.png":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9f3d90db940b68053d2310.webp","/assets/product/emr-reports.png":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9f3d90a4ea811589ef2ee4.webp","/assets/product/emr-treatment-note.png":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9f3d904793a2d512b83004.webp","/assets/product/inbox.png":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9f3d902032992f5a644f77.webp","/assets/product/owner-dashboard.png":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9f3d90730969fc0fbf07dd.webp","/assets/product/social-planner.png":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9f3d911543e1ae08b5ab89.webp","/assets/seo-v15/dr-mary-320.webp":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9ff726360a619b9fc5ab77.webp","/assets/seo-v15/evidence-md-600.webp":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9ff726360a619b9fc5ab7f.webp","/assets/seo-v15/hero-clinic-owner-1280.webp":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9ff726641597c752aab7d2.webp","/assets/seo-v15/hero-clinic-owner-1920.webp":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9ff84e16ed327815a4e7f8.webp","/assets/seo-v15/hero-clinic-owner-640.webp":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9ff7269ce7949849d198f3.webp","/assets/seo-v15/hero-clinic-owner-960.webp":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9ff726d63e08439cc27dc5.webp","/assets/seo-v15/kc-aesthetics-480.webp":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9ff726a08d19d9274c6d26.webp","/assets/team-v6/rob-upland.png":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9f6b08bcef8b5f2c339338.png","/assets/team-v7/adrienne.jpg":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9f7d04355bf4eb55e8fb94.jpg","/assets/team-v7/andrew.png":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9f7d04a4ea811589f43355.png","/assets/testimonials-mobile-v16/gisell-testimonial-mobile720.mp4":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6aa01a26360a619b9fc8892e.mp4","/assets/testimonials-mobile-v16/jessica-testimonial-mobile720.mp4":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6aa01a26641597c752ad9cdf.mp4","/assets/testimonials-mobile-v16/mary-testimonial-mobile720.mp4":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6aa01a26bfc1456f8c63c31d.mp4","/assets/testimonials-mobile-v16/noemi-testimonial-mobile720.mp4":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6aa01a268de363112b518c50.mp4","/assets/testimonials-v6/gisell-poster.jpg":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9f6b072032992f5a673eb3.jpg","/assets/testimonials-v6/gisell-testimonial-web.mp4":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a14dcea7c135509c88b5d29.mp4","/assets/testimonials-v6/jessica-poster.jpg":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6aa01968bfc1456f8c63b149.jpg","/assets/testimonials-v6/jessica-testimonial-web.mp4":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9f6b072032992f5a673ebc.mp4","/assets/testimonials-v6/mary-poster.jpg":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9f3d911543e1ae08b5ab92.jpg","/assets/testimonials-v6/mary-testimonial-web.mp4":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9f6b079b0dc785f58d39d0.mp4","/assets/testimonials-v6/msmai-video-marker.png":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9f6b07a4ea811589f21b0c.png","/assets/testimonials-v6/noemi-poster.jpg":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9f6b07730969fc0fc20603.jpg","/assets/testimonials-v6/noemi-testimonial-web.mp4":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9f6b07db940b68054029a9.mp4","/assets/videos-v7/gisell-square-poster.jpg":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9f7cfe355bf4eb55e8fa94.jpg","/assets/videos-v7/gisell-testimonial-square.mp4":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9f7cfe968770b81c589255.mp4","/assets/videos-v7/noemi-square-poster.jpg":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9f7cfe355bf4eb55e8faa6.jpg","/assets/videos-v7/noemi-testimonial-square.mp4":"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9f7cfe968770b81c58925e.mp4"};function Sc(i){return typeof i=="string"?qg[i]??i:i}function Wg(i){return typeof i=="string"?i.split(",").map(s=>{let l=s.trim().split(/\s+/);return l[0]=Sc(l[0]),l.join(" ")}).join(", "):i}function e(i,s,...l){if(typeof i=="string"&&s){s={...s};for(let d of["src","href","poster"])d in s&&(s[d]=Sc(s[d]));"srcSet"in s&&(s.srcSet=Wg(s.srcSet))}return(0,Y.createElement)(i,s,...l)}var Vg={ArrowRight:"M4 12h16M14 6l6 6-6 6",ArrowUpRight:"M5 19 19 5M5 5h14v14",ChevronDown:"m6 9 6 6 6-6",Menu:"M4 6h16M4 12h16M4 18h16",X:"m6 6 12 12M6 18 18 6",Check:"m5 12 4 4L19 6",Play:"m8 5 11 7-11 7Z",CalendarDays:"M8 2v4M16 2v4M3 10h18M5 4h14a2 2 0 0 1 2 2v14H3V6a2 2 0 0 1 2-2ZM7 14h2M15 14h2M7 18h2",MessageSquare:"M21 15a3 3 0 0 1-3 3H8l-5 4V5a3 3 0 0 1 3-3h12a3 3 0 0 1 3 3ZM7 7h10M7 12h7",CreditCard:"M3 8h18M5 3h14a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2ZM6 16h4",ClipboardList:"M9 3H6a2 2 0 0 0-2 2v15a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V5a2 2 0 0 0-2-2h-3M9 2h6v4H9ZM8 11h8M8 16h8",Package:"m3 6 9-4 9 4-9 5ZM3 6v12l9 4 9-4V6M12 11v11M7 4l10 5",Sparkles:"m12 3 2.5 6.5L21 12l-6.5 2.5L12 21l-2.5-6.5L3 12l6.5-2.5ZM2
641 2v4M19 4h4",ShieldCheck:"M12 2 3 6v6c0 5 5 8 9 10 4-2 9-5 9-10V6ZM8 12l3 3 5-6",Search:"m16 16 5 5M18 10a8 8 0 1 1-16 0 8 8 0 0 1 16 0",Users:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2M13 7a4 4 0 1 1-8 0 4 4 0 0 1 8 0M22 21v-2a4 4 0 0 0-3-3.87M16 3.13a4 4 0 0 1 0 7.75",Bell:"M18 8a6 6 0 0 0-12 0c0 7-3 7-3 9h18c0-2-3-2-3-9M10 21h4",RotateCcw:"M3 10a9 9 0 1 1 2.6 8.4M3 3v7h7",Gift:"M3 8h18v4H3ZM5 12v9h14v-9M12 8v13M12 8H7.5A2.5 2.5 0 1 1 10 5.5ZM12 8h4.5A2.5 2.5 0 1 0 14 5.5Z",Heart:"M20.8 4.6a5.5 5.5 0 0 0-7.8 0l-1 1-1-1a5.5 5.5 0 0 0-7.8 7.8L12 21l8.8-8.6a5.5 5.5 0 0 0 0-7.8Z",Megaphone:"M3 10h4l12-5v14L7 14H3ZM7 14l2 7h4l-3-6M22 9v6",BarChart:"M3 3v18h18M8 17V9M13 17V5M18 17v-5",Camera:"M9 4h6l2 3h3a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V9a2 2 0 0 1 2-2h3ZM16 13a4 4 0 1 1-8 0 4 4 0 0 1 8 0",FileText:"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8ZM14 2v6h6M8 12h8M8 16h8",Layers:"m12 2 10 5-10 5L2 7ZM2 12l10 5 10-5M2 17l10 5 10-5",MapPin:"M20 10c0 6-8 12-8 12S4 16 4 10a8 8 0 0 1 16 0ZM15 10a3 3 0 1 1-6 0 3 3 0 0 1 6 0",Share2:"M8.7 10.5l6.6-4M8.7 13.5l6.6 4M9 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0M21 5a3 3 0 1 1-6 0 3 3 0 0 1 6 0M21 19a3 3 0 1 1-6 0 3 3 0 0 1 6 0",FileCheck:"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8ZM14 2v6h6M8 15l3 3 5-6"};function ze(i){return function({size:s=24,strokeWidth:l=2,...d}){return e("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",width:s,height:s,fill:"none",stroke:"currentColor",strokeWidth:l,strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",focusable:"false",...d},e("path",{d:Vg[i]}))}}var J=ze("ArrowRight"),Ae=ze("ArrowUpRight"),As=ze("ChevronDown"),Bg=ze("Menu"),Ec=ze("X"),De=ze("Check"),Ja=ze("Play"),He=ze("CalendarDays"),We=ze("MessageSquare"),It=ze("CreditCard"),da=ze("ClipboardList"),si=ze("Package"),In=ze("Sparkles"),Hg=ze("ShieldCheck"),xs=ze("Search"),Ge=ze("Users"),En=ze("Bell"),Qa=ze("RotateCcw"),Vi=ze("Gift"),Bi=ze("Heart"),Em=ze("Megaphone"),ii=ze("BarChart"),Rn=ze("Camera"),At=ze("FileText"),xt=ze("Layers"),us=ze("MapPin"),Cm=ze("Share2"),Qe=ze("FileCheck"),Tm=[{path:"/guides/med-spa-crm-vs-emr",title:"Med spa CRM vs. EMR: what belongs where?",category:"Buyer guide",dateLabel:"September 30, 2026",byLabel:"By",author:"Med Spa Marketing AI",metadata:{title:"Med spa CRM vs. EMR: what belongs where? | Med Spa Marketing AI",canonical:"https://medspamarketing.ai/guides/med-spa-crm-vs-emr",tags:{description:"Understand the roles of a med spa CRM and EMR, the handoffs to review, and the questions to ask before choosing connected software.","og:type":"article","og:title":"Med spa CRM vs. EMR: what belongs where?","og:description":"Understand the roles of a med spa CRM and EMR, the handoffs to review, and the questions to ask before choosing connected software.","og:url":"https://medspamarketing.ai/guides/med-spa-crm-vs-emr","twitter:card":"summary","twitter:title":"Med spa CRM vs. EMR: what belongs where?","twitter:description":"Understand the roles of a med spa CRM and EMR, the handoffs to review, and the questions to ask before choosing connected software.",robots:"max-image-preview:large"}},hero:{src:"/assets/product/inbox.png",alt:"Illustrative team inbox with fictional contacts and a sample conversation.",width:2176,height:1561},body:[{tag:"p",children:["Illustration above uses sample data. It does not show a patient record."]},{tag:"p",children:["A new inquiry, a booked appointment and a treatment note are different parts of the same patient journey. A useful software demo should show who handles each step, where the information belongs and how the team moves to the next task."]},{tag:"p",children:["At Med Spa Marketing AI, the Marketing System supports the website, booking, communication and follow-up. EMRMedSpa supports the clinical workspace. The Launch program includes both, configured around the practice. Looking at them together is useful; understanding their different jobs is just as important."]},{tag:"h2",children:["The CRM: organize the conversation and next step"]},{tag:"p",children:["The marketing workspace helps the team understand an inquiry and keep the next action visible. That can include a contact record, a message thread, a pipeline stage, a booking link and the follow-up associated with an appointment or approved campaign."]},{tag:"ul",children:[{tag:"li",children:["Website and booking: give visitors a clear route from a service page to an appointment."]},{tag:"li",children:["Contacts and conversations: keep the inquiry and the communication history available to the team."]},{tag:"li",children:["Reminders and follow-up: configure the approved messages and the events that should trigger them."]},{tag:"li",children:["Retention: organize approved review requests, rebooking and win-back activity around the clinicâs services."]}]},{tag:"h2",children:["The EMR: support the clinical teamâs work"]},{tag:"p",children:["EMRMedSpa provides the workspace for treatment documentation, consent review, p
64hotos and inventory. Clinical decisions stay with the responsible clinicians. A marketing message, paid deposit or completed booking does not by itself establish readiness for treatment."]},{tag:"p",children:["Ask to see the specific work your team needs to perform: opening the relevant record, reviewing the available consent information, documenting the visit and finding the information afterward. A list of features is less useful than a walkthrough of your actual responsibilities."]},{tag:"h2",children:["Review the handoffs between them"]},{tag:"p",children:["Start with one example journey: a person asks about a service, books a visit, receives the approved pre-visit information, attends the appointment and receives the appropriate follow-up. For each step, identify the system, the staff member responsible and the evidence that the step occurred."]},{tag:"ol",children:[{tag:"li",children:["Which information appears in each system, and when is it updated?"]},{tag:"li",children:["Which booking, form or appointment event starts a message?"]},{tag:"li",children:["Where does the team check whether a message was delivered or a form returned?"]},{tag:"li",children:["What happens if a person reschedules, cancels or needs help?"]},{tag:"li",children:["Who reviews the clinical information before care and approves the follow-up content?"]}]},{tag:"p",children:["Connected tools still need clear configuration and verification. Ask for the current supported connection and any limits that matter to your clinic, rather than assuming every field updates instantly in both directions."]},{tag:"h2",children:["Choose the setup around the practice"]},{tag:"p",children:["A new clinic may need the website, booking, communication and clinical setup together. An established practice may already have systems it wants to keep. List those systems before the demo so the discussion can cover what stays, what changes and which connections or transfers need to be scoped."]},{tag:"p",children:["Bring your services, team roles and current software list. We can walk through the Marketing System and EMRMedSpa using examples, then identify the setup that belongs in your written scope."]}],promoteSectionHeadings:!1,relatedTitle:"Explore the next step",related:[{title:"Explore the Marketing System",href:"/marketing-system",originalHref:"/marketing-system",originalUrl:"https://medspamarketing.ai/marketing-system"}
64,{title:"Explore EMRMedSpa",href:"/emr",originalHref:"/emr",originalUrl:"https://medspamarketing.ai/emr"},{title:"Review the available connections",href:"/integrations",originalHref:"/integrations",originalUrl:"https://medspamarketing.ai/integrations"},{title:"Book a demo",href:"/discovery-call",originalHref:"/discovery-call",originalUrl:"https://medspamarketing.ai/discovery-call"}],source:{file:"MSMAI original buyer guide, September 30, 2026",htmlSha256:"899c713d74602b803e8f6dd238c57a9539731c4d59974654b29c1e548dafe70a",bodyHtmlSha256:"899c713d74602b803e8f6dd238c57a9539731c4d59974654b29c1e548dafe70a",bodyTextSha256:"5cec06f4dd04c718b12fce7b5e18fe411b219cf0be580e7873d4ed7d7a07dfc5",bodyCharacters:3304,capturedAt:"2026-09-30T09:01:06.593762+00:00"}},{path:"/guides/med-spa-software-migration-checklist",title:"A practical checklist for changing med spa software",category:"Buyer guide",dateLabel:"September 30, 2026",byLabel:"By",author:"Med Spa Marketing AI",metadata:{title:"A practical checklist for changing med spa software | Med Spa Marketing AI",canonical:"https://medspamarketing.ai/guides/med-spa-software-migration-checklist",tags:{description:"Plan a med spa software change around your current systems, records, booking links, team responsibilities and launch checks.","og:type":"article","og:title":"A practical checklist for changing med spa software","og:description":"Plan a med spa software change around your current systems, records, booking links, team responsibilities and launch checks.","og:url":"https://medspamarketing.ai/guides/med-spa-software-migration-checklist","twitter:card":"summary","twitter:title":"A practical checklist for changing med spa software","twitter:description":"Plan a med spa software change around your current systems, records, booking links, team responsibilities and launch checks.",robots:"max-image-preview:large"}},hero:{src:"/assets/product/booking-v2-menu.png",alt:"Illustrative booking menu with sample services and appointment choices.",width:2196,height:1903},body:[{tag:"p",children:["Illustration above uses sample services and prices."]},{tag:"p",children:["Changing software starts with a clear picture of the practice you already run. Before agreeing a migration, identify what must keep working, what you want to improve and which records or services are actually included in the move."]},{tag:"p",children:["The goal of this checklist is a concrete scope and a reviewable transition. It is not a promise that every system, file type or record can be imported."]},{tag:"h2",children:["1. Inventory the systems you use today"]},{tag:"ul",children:[{tag:"li",children:["Your website, domain and the people who can grant the required access."]},{tag:"li",children:["Booking tools, service menus, staff calendars and current public booking links."]},{tag:"li",children:["CRM, inboxes, forms and the messages already associated with appointments."]},{tag:"li",children:["Clinical software and the records or documents you want to discuss transferring."]},{tag:"li",children:["Payment tools, packages or subscriptions that must be considered in the plan."]},{tag:"li",children:["Advertising accounts and the destinations currently used by your campaigns."]}]},{tag:"p",children:["For each system, write down the owner, the task it performs and whether you intend to keep it. The answer may be to connect an existing tool, replace one part of the workflow or scope a broader change."]},{tag:"h2",children:["2. Agree exactly what the transfer includes"]},{tag:"p",children:["Separate contact details, appointment information, communication history and clinical records when discussing the move. Ask which information the current provider can export and which information the destination can accept. Agree the format, responsibility, secure transfer method and any costs before beginning."]},{tag:"p",children:["Your applicable written agreement determines the access, export and return arrangements. Discuss the relevant BAA and safeguards before bringing patient information into the setup. Use the agreed secure process for records; a software demo only needs your system list and business requirements."]},{tag:"h2",children:["3. Map the experience people already rely on"]},{tag:"p",children:["Follow the links a patient or staff member actually uses. A service page, an advertisement, a reminder and a saved email may point to different booking destinations. Record the relevant links and the intended destination after the change."]},{tag:"p",children:["Agree how existing appointments and active follow-up will be handled. Identify the event that should start each message, the person responsible for replies and how a cancellation or reschedule should be handled. Preserve the information needed to reconcile the transition."]},{tag:"h2",children:["4. Review a configured example before launch"]},{tag:"ol",children:[{tag:"li",children:["Check the service name, price, duration and intended provider or calendar."]},{tag:"li",children:["Open the actual booking destination from the relevant website or campaign link."]},{tag:"li",children:["Review the approved messages, form delivery and follow-up content."]},{tag:"li",children:["Have the appropriate clinical staff review the clinical setup and access needs."]},{tag:"li",children:["Compare the agreed transferred information with the source and record unresolved differences."]}
64,{tag:"li",children:["Confirm who can approve the launch and who will handle an issue after the change."]}]},{tag:"p",children:["A saved configuration is one checkpoint. The next is checking the experience people will use. The scope should identify which checks are needed and what evidence confirms them; a preview alone does not prove a payment, delivered message or completed transfer."]},{tag:"h2",children:["5. Set the handover and timing"]},{tag:"p",children:["Confirm the schedule after required access, materials and approvals have been reviewed. Account recovery, outside providers and clinical decisions can affect the sequence. Name the people responsible for the final review and ongoing support, and record any work that remains separate."]},{tag:"p",children:["Bring this inventory to the demo. We can review the systems you want to keep, discuss the change you need and define the work before you commit."]}],promoteSectionHeadings:!1,relatedTitle:"Explore the next step",related:[{title:"Review supported connections",href:"/integrations",originalHref:"/integrations",originalUrl:"https://medspamarketing.ai/integrations"},{title:"See how setup works",href:"/how-it-works",originalHref:"/how-it-works",originalUrl:"https://medspamarketing.ai/how-it-works"},{title:"Discuss records and the BAA",href:"/security",originalHref:"/security",originalUrl:"https://medspamarketing.ai/security"},{title:"Book a demo",href:"/discovery-call",originalHref:"/discovery-call",originalUrl:"https://medspamarketing.ai/discovery-call"}],source:{file:"MSMAI original buyer guide, September 30, 2026",htmlSha256:"24159ab647e1b6e4ab06a22278ed5e86abec803a80bd720cea6a55990e8001df",bodyHtmlSha256:"24159ab647e1b6e4ab06a22278ed5e86abec803a80bd720cea6a55990e8001df",bodyTextSha256:"5bd1dfbd61fddc3930e27a357a988b2b8fda922a4b6e3f743f4927d3365e56dd",bodyCharacters:3579,capturedAt:"2026-09-30T09:01:06.594534+00:00"}},{path:"/guides/med-spa-marketing-bookings-and-collected-revenue",title:"Measure med spa marketing from inquiries to collected revenue",category:"Buyer guide",dateLabel:"September 30, 2026",byLabel:"By",author:"Med Spa Marketing AI",metadata:{title:"Measure med spa marketing from inquiries to collected revenue | Med Spa Marketing AI",canonical:"https://medspamarketing.ai/guides/med-spa-marketing-bookings-and-collected-revenue",tags:{description:"Separate inquiries, booked visits, attendance and collected payments so your med spa can review marketing with clearer evidence.","og:type":"article","og:title":"Measure med spa marketing from inquiries to collected revenue","og:description":"Separate inquiries, booked visits, attendance and collected payments so your med spa can review marketing with clearer evidence.","og:url":"https://medspamarketing.ai/guides/med-spa-marketing-bookings-and-collected-revenue","twitter:card":"summary","twitter:title":"Measure med spa marketing from inquiries to collected revenue","twitter:description":"Separate inquiries, booked visits, attendance and collected payments so your med spa can review marketing with clearer evidence.",robots:"max-image-preview:large"}},hero:{src:"/assets/product/owner-dashboard.png",alt:"Illustrative appointment dashboard; totals and statuses are fictional, not client results.",width:2056,height:1591},body:[{tag:"p",children:["Illustration above uses fictional numbers. It is not a client result."]},{tag:"p",children:["A campaign can generate inquiries while the appointment book, attendance and payments tell different stories. A useful review keeps those stages separate so the team can see what happened and choose the next thing to inspect."]},{tag:"p",children:["Start with a few clearly defined measures and the records that support them. Do not use an opportunity amount, a booked service value or a payment notification as a substitute for verified collected cash."]},{tag:"h2",children:["Keep each stage distinct"]},{tag:"p",children:[{tag:"strong",children:["Inquiry: "]},"A person has submitted a request or started a relevant conversation. Record the source where it is available and the next action the team needs to take."]},{tag:"p",children:[{tag:"strong",children:["Booked visit: "]},"An appointment exists for the person and service. State whether your count includes rescheduled, cancelled or duplicate appointments."]},{tag:"p",children:[{tag:"strong",children:["Attended or completed visit: "]},"The practice has verified the relevant attendance or treatment event. A booked appointment is not evidence that the visit occurred."]},{tag:"p",children:[{tag:"strong",children:["Collected payment: "]},"A successful positive payment transaction was recorded. Keep pen
64ding and failed payments out of collected cash, and show refunds separately or state clearly how they are deducted."]},{tag:"p",children:[{tag:"strong",children:["Repeat visit: "]},"The patient returns for another verified visit. Agree the time window and the event you count before comparing periods."]},{tag:"h2",children:["Use one reporting window and explain the dates"]},{tag:"p",children:["Choose a reporting period and keep its boundaries consistent. Be clear whether you are counting inquiries received during that period, appointments booked during it, visits scheduled for it or payments collected during it. These are different views and should not be silently combined."]},{tag:"p",children:["For example, a person may inquire in one month, attend in the next and pay a balance later. Review the journey together, but retain each eventâs date. If source matching is incomplete, label it incomplete rather than assigning every payment to the latest campaign."]},{tag:"h2",children:["Separate collected cash from the promise of future value"]},{tag:"p",children:["A deposit may be money collected before treatment. A package purchase may cover multiple future visits. An appointment value describes scheduled work, while an opportunity value describes a sales record. Report each for its own purpose instead of adding them together as if they were separate payments."]},{tag:"p",children:["When discussing marketing returns, say which payments are connected to the campaign and how that connection was established. If the records only support a booking or inquiry count, report that result. Do not turn it into a revenue claim."]},{tag:"h2",children:["Find the next question in the journey"]},{tag:"ul",children:[{tag:"li",children:["Inquiries arriving but few appointments: review the offer, response process and route to booking."]},{tag:"li",children:["Appointments booked but attendance uncertain: check attendance evidence and the relevant confirmation, reschedule and reminder process."]},{tag:"li",children:["Visits occurring but payment totals unclear: reconcile successful payments, deposits, outstanding amounts and refunds."]},{tag:"li",children:["Strong first-visit activity but unclear return activity: agree the repeat-visit window and review the relevant follow-up and appointment records."]}]},{tag:"p",children:["These are starting points for investigation, not explanations proved by the numbers alone. Check the actual records and recent changes before deciding what caused a result."]},{tag:"h2",children:["Make the review useful to the owner"]},{tag:"p",children:["Keep a short scorecard with the reporting dates, source, definition and unresolved gap for each measure. Compare like-for-like periods and preserve the original records when a definition changes. A sent message, configured workflow or attractive dashboard should not stand in for the business event you are trying to measure."]},{tag:"p",children:["For Growth, bring the reports you already use and the decision you want them to help you make. We can discuss acquisition, follow-up and the ownerâs view of the practice, then agree the reporting work within your engagement."]}],promoteSectionHeadings:!1,relatedTitle:"Explore the next step",related:[{title:"Explore the appointment dashboard",href:"/features/dashboard",originalHref:"/features/dashboard",originalUrl:"https://medspamarketing.ai/features/dashboard"},{title:"See the payment workspace",href:"/features/payments",originalHref:"/features/payments",originalUrl:"https://medspamarketing.ai/features/payments"},{title:"Explore Growth",href:"/programs/growth",originalHref:"/programs/growth",originalUrl:"https://medspamarketing.ai/programs/growth"},{title:"Book a demo",href:"/discovery-call",originalHref:"/discovery-call",originalUrl:"https://medspamarketing.ai/discovery-call"}],source:{file:"MSMAI original buyer guide, September 30, 2026",htmlSha256:"d5ae2cddb858f8be5e98264f0e4dd3137b9970571e7893f7315d36e8e6d12173",bodyHtmlSha256:"d5ae2cddb858f8be5e98264f0e4dd3137b9970571e7893f7315d36e8e6d12173",bodyTextSha256:"8fd9b4ad5bf86d2203f357a195166aabaafccdfabb5ce605635207e3dfa10711",bodyCharacters:3819,capturedAt:"2026-09-30T09:01:06.594582+00:00"}}],Yg=Tm.map(i=>
64({path:i.path,title:i.metadata.title,description:i.metadata.tags.description,sectionIds:["legacy-article-content"]}));function Cc(i){let s=i.replace(/\/+$/,"")||"/";return Tm.find(l=>l.path===s)}function Kg(i,s){let l=Cc(i);return l?{...l.metadata,tags:{...l.metadata.tags,robots:s?l.metadata.tags.robots:"noindex,follow"}}:null}var Fr=[{id:"marketing-system",title:"Med Spa Marketing AI",href:"/marketing-system",description:"Your website, booking, patient communication and treatment-specific retention, configured for your clinic."},{id:"emr",title:"EMRMedSpa",href:"/emr",description:"Clinical notes, consent records, photos and inventory for the treatment side of your practice."}],$g=[{label:"Platform",links:[{label:"Overview",href:"/platform"},{label:"Med Spa Marketing AI",href:"/marketing-system"},{label:"EMRMedSpa",href:"/emr"}]},{label:"Programs",links:[{label:"Launch · New med spas",href:"/programs/launch"},{label:"Growth · Existing med spas",href:"/programs/growth"}]},{label:"Why MSMAI",links:[{label:"Done for you",href:"/how-it-works"},{label:"Customer stories",href:"/customer-stories"},{label:"About",href:"/about"}]}],Gg=[{label:"Pricing",href:"/pricing"}],za=[{id:"website",title:"Custom website",area:"marketing-system",description:"Your clinicâs branding and treatment pages, built around a clear booking path.",href:"/features/website"},{id:"appointment-reminders",title:"Appointment reminders",area:"marketing-system",description:"Automated confirmations and reminders with the visit details patients need.",href:"/features/appointment-reminders"},{id:"intake-consent-automation",title:"Automated intake & consent",area:"marketing-system",description:"Send the right pre-visit forms for the booked treatment, with reminders for outstanding paperwork.",href:"/features/intake-consent-automation"},{id:"gfe-coordination",title:"Good Faith Exam coordination",area:"emr",description:"Coordinate required exams through Qualiphy requests or your clinicâs own clinician-performed process.",href:"/features/gfe-coordination"},{id:"booking",title:"Online booking",area:"marketing-system",description:"Service menus and appointment selection configured around your clinic.",href:"/features/booking",surfaceId:"booking"},{id:"calendars",title:"Staff calendars & availability",area:"marketing-system",description:"Set staff hours and service availability, then review the clinicâs appointment schedule.",href:"/features/calendars",surfaceId:"booking"},{id:"deposits-reminders",title:"Deposits & booking policies",area:"marketing-system",description:"Set the deposit and booking rules patients see before confirming an appointment.",href:"/features/deposits-reminders",surfaceId:"booking"},{id:"contacts-pipeline",title:"Contacts & lead pipeline",area:"marketing-system",description:"Keep contact details and lead progress organized for your team.",href:"/features/contacts-pipeline",surfaceId:"conversations"},{id:"conversations",title:"CRM & conversations",area:"marketing-system",description:"Email, SMS and connected Facebook and Instagram messages in one team inbox.",href:"/features/conversations",surfaceId:"conversations"},{id:"retention",title:"Treatment-specific retention",area:"marketing-system",description:"Automated rebooking and reactivation shaped around the treatment the patient received.",href:"/features/retention",surfaceId:"conversations"},{id:"reviews",title:"Reviews & Reviews AI",area:"marketing-system",description:"Automate review requests and use AI-assisted or configured automatic replies.",href:"/features/reviews"},{id:"appointment-recovery",title:"Cancellation & no-show recovery",area:"marketing-system",description:"Configured follow-up helps your team keep the next booking in view after a missed or canceled visit.",href:"/features/appointment-recovery"},{id:"birthday-winback",title:"Birthdays & patient reactivation",area:"marketing-system",description:"Bring birthday and returning-patient follow-up into your configured retention workflows.",href:"/features/birthday-winback"},{id:"aftercare-rebook",title:"Automated aftercare",area:"marketing-system",description:"Send the post-care instructions approved for the completed treatment, with a clear clinic contact.",href:"/features/aftercare-rebook"},{id:"email-marketing",title:"Branded email",area:"marketing-system",description:"Clinic-branded email content with campaign and delivery reporting.",href:"/features/email-marketing",surfaceId:"marketing"},{id:"social-planner",title:"Social Planner",area:"marketing-system",description:"Create and refine posts with AI, then review and schedule them for connected social accounts.",scopeNote:"Connected accounts, publishing permissions and applicable AI usage are configured during setup. Ongoing social management is separately scoped.",href:"/features/social-planner"},{id:"advertising",title:"Patient acquisition",area:"marketing-system",description:"Generate leads with Meta ads, then connect AI follow-up and staff call notifications to booking.",scopeNote:"Launch includes first Meta creative and campaign launch. Ad spend is separate; ongoing management is client-run or separately scoped.",href:"/features/advertising"},{id:"dashboard",title:"Dashboard & reporting",area:"marketing-system",description:"Review appointment activity by date, status and calendar.",href:"/features/dashboard",surfaceId:"dashboard"},{id:"clinical-notes",title:"Clinical notes",area:"emr",description:"Procedure information, vitals and structured treatment notes in the clinical workspace.",href:"/features/clinical-notes",surfaceId:"emr"},{id:"patient-workspace",title:"Patient records",area:"emr",description:"Find patients by name, email or phone and open demographics, medical history and treatment notes.",href:"/features/patient-workspace",surfaceId:"emr"},{id:"templates",title:"Templates & smart phrases",area:"emr",description:"Document treatment with SOAP notes, treatment-specific templates and smart phrases.",href:"/features/templates",surfaceId:"emr"},{id:"consents",title:"Consents",area:"emr",description:"Send the clinicâs approved consent forms and review the displayed consent status.",scopeNote:"Your clinical team reviews the record and remains responsible for care and consent.",href:"/features/consents",surfaceId:"emr"},{id:"photos",title:"Photos & before/after",area:"emr",description:"Capture treatment photos, organize before and after images and compare the selected views.",href:"/features/photos",surfaceId:"emr"},{id:"body-mapping",title:"Treatment-area body mapping",area:"emr",description:"Mark named treatment areas in the clinical note.",href:"/features/body-mapping",surfaceId:"emr"},{id:"inventory",title:"Inventory",area:"emr",description:"Product quantities, stock status, batches and alerts in the inventory workspace.",href:"/features/inventory",surfaceId:"inventory"}
64,{id:"protocols",title:"Treatment protocols",area:"emr",description:"Search clinical protocols by name, modality or indication, then open or print the guidance.",scopeNote:"Protocols are for the clinicâs licensed providers. Medical direction services are separate from software access.",href:"/features/protocols"},{id:"payments",title:"Payments & Tap to Pay",area:"emr",description:"Review payment records and collect contactless payments through the supported mobile setup.",scopeNote:"Tap to Pay depends on the processor, device and app. Processing and usage charges are separate.",href:"/features/payments",surfaceId:"payments"},{id:"ask-ai",title:"Ask AI",area:"marketing-system",description:"Find CRM leads, summarize a contact and draft replies, email or social content.",scopeNote:"User access and applicable AI usage are reviewed during setup.",href:"/features/ask-ai"},{id:"in-room",title:"In-Room",area:"emr",description:"Select a patient and reach photo capture, a GFE request or checkout from the treatment-room workspace.",href:"/features/in-room",surfaceId:"emr"},{id:"packages",title:"Treatment packages",area:"marketing-system",description:"Define eligible treatment packages and automate session tracking around qualifying completed visits.",href:"/features/packages"},{id:"subscriptions",title:"Membership subscriptions",area:"marketing-system",description:"Set up recurring membership billing and review the subscription and payment records.",scopeNote:"Billing terms and membership benefits are configured for your clinic.",href:"/features/subscriptions"},{id:"gift-cards",title:"Gift cards",area:"marketing-system",description:"Create clinic-branded gift cards, share a purchase link and track remaining value.",scopeNote:"Redemption depends on your checkout and payment provider.",href:"/features/gift-cards"}],Qg=[{path:"/",title:"All-in-one med spa software, done for you | MSMAI",description:"A marketing system and custom EMR, configured around your med spa.",sectionIds:["platform","product-tour","done-for-you","programs","customer-stories"]},{path:"/platform",title:"The med spa platform | MSMAI",description:"Explore the Marketing System and Custom EMR, two workspaces within the MSMAI platform.",sectionIds:["marketing-system","emr","product-tour"]},{path:"/marketing-system",title:"Med Spa Marketing AI | Marketing software",description:"Booking, CRM, follow-up, branded email and marketing tools for your med spa.",sectionIds:["booking","conversations","retention","email-marketing","advertising","dashboard"]},{path:"/emr",title:"Custom EMR for med spas | MSMAI",description:"Explore clinical notes, consents, photos, inventory and payment records.",sectionIds:["clinical-notes","consents","photos","inventory","payments"]},{path:"/features",title:"Med spa software features: Booking, CRM & EMR | MSMAI",description:"Explore med spa booking, CRM, reminders, email, retention and clinical tools, with a walkthrough of each feature and the setup for your clinic.",sectionIds:["feature-directory",...za.map(i=>i.id)]},{path:"/programs/launch",title:"Launch for new med spas | MSMAI",description:"The med spa OS and done-for-you setup for a new practice.",sectionIds:["included","setup","pricing"]},{path:"/programs/growth",title:"Growth for established med spas | MSMAI",description:"Growth for established med spas: $1,250/week for campaign strategy, Meta management, booking paths, follow-up, website updates and reporting. Ad spend is separate.",sectionIds:["fit","included","monthly-plan","scope"]},{path:"/how-it-works",title:"Done-for-you med spa software setup | MSMAI",description:"See how we configure your website, booking, CRM and EMRMedSpa around your clinic, review the patient journey and help launch your first campaign.",sectionIds:["discovery","configuration","review","launch"]},{path:"/customer-stories",title:"Med spa customer stories & client work | MSMAI",description:"Watch original videos from med spa owners and independent providers, and see examples of MSMAI website, booking, marketing and follow-up work.",sectionIds:["stories"]},{path:"/pricing",title:"Med spa software pricing: Launch & Growth | MSMAI",description:"Launch: $497/month + $1,000 onboarding, with ad spend and usage separate. Growth: $1,250/week for ongoing marketing work. See separate costs.",sectionIds:["launch","growth","separate-costs","initial-and-ongoing","choose-your-start"]},{path:"/about",title:"About Med Spa Marketing AI | Our team",description:"Meet Rob Upland and the MSMAI team behind your med spa website, marketing system and EMRMedSpa, with hands-on configuration around your clinic.",sectionIds:["company"]},{path:"/faq",title:"Med spa software & setup FAQs | MSMAI",description:"Answers about MSMAI's marketing system, EMRMedSpa, Launch and Growth programs, setup, first campaigns and separately priced services.",sectionIds:["questions"]},{path:"/contact",title:"Book a med spa software demo | MSMAI",description:"Book a demo with Rob Upland to explore booking, patient follow-up and EMRMedSpa, then discuss your clinic's setup, program fit and separate costs.",sectionIds:["request-demo"]},{path:"/security",title:"Security & clinical responsibility | MSMAI",description:"Review clinical onboarding, BAA requirements, staff access, ownership of clinic records and agreed transfer responsibilities.",sectionIds:["data","records-and-transfer","clinical-responsibility"]},{path:"/integrations",title:"Med spa software integrations & connected tools | MSMAI",description:"Explore supported connections for messaging, social accounts, staff calendars, payments and Good Faith Exam requests, with setup reviewed for your clinic.",sectionIds:["built-in","connected-accounts","clinical-connections","connection-setup"]},{path:"/legal/privacy-policy",title:"Privacy Policy | Med Spa Marketing AI",description:"Privacy Policy for 1SoftwareSolution LLC, doing business as Med Spa Marketing AI.",sectionIds:["legal-content"]},{path:"/legal/terms-and-conditions",title:"Terms and Conditions | Med Spa Marketing AI",description:"Terms and Conditions for using the Med Spa Marketing AI website and services.",sectionIds:["legal-content"]},...za.map(i=>({path:i.href,title:`${i.title} for med spas | MSMAI`,description:i.description,sectionIds:i.id==="advertising"?["acquisition-process","acquisition-creative","acquisition-responsibilities","acquisition-measurement","acquisition-scope"]:["feature-overview","feature-setup","related-features"]})),...Yg],xu=[{id:"meta",name:"Facebook & Instagram",category:"account",purpose:"Bring connected messages into Conversations and plan posts in Social Planner. Link an eligible ad account for campaign setup.",setup:"Messaging, publishing and ads each need the right account permissions.",featureHref:"/features/conversations",label:"Explore the inbox"},{id:"google-calendar",name:"Google Calendar",category:"account",purpose:"Use staff calendar events to block busy time and write assigned bookings to the selected linked calendar.",setup:"Each staff member connects their account and chooses linked and conflict calendars.",featureHref:"/features/calendars",label:"Explore staff calendars"},{id:"outlook",name:"Outlook / Office 365",category:"account",purpose:"Connect the calendar your staff already use to the availability and booking setup.",setup:"Calendar access, write permissions and sync choices are reviewed per user.",featureHref:"/features/calendars",label:"Explore staff calendars"},{id:"google-business",name:"Google Business Profile",category:"account",purpose:"Manage supported business-profile posts in Social Planner and bring Google reviews into the review workflow.",setup:"Connect the right business profile with an authorized Google account.",featureHref:"/features/reviews",label:"Explore reviews"},{id:"stripe",name:"Stripe",category:"account",purpose:"Connect payment collection to supported booking, checkout and recurring-billing flows.",setup:"A connected merchant account and supported checkout are required. Processing fees are separate.",featureHref:"/features/payments",label:"Explore payments"},{id:"square",name:"Square",category:"account",purpose:"Use Square for supported payment collection and recurring billing, with eligible mobile payment options.",setup:"Compatibility depends on the checkout, device and app. We confirm your collection path during setup.",featureHref:"/features/payments",label:"Explore payments"},{id:"qualiphy",name:"Qualiphy",category:"clinical",purpose:"Request a required Good Faith Exam through the clinicâs configured Qualiphy connection.",setup:"Exam selection, clinic connection and provider availability are confirmed for your setup. The provider performs the exam; exam fees are separate.",featureHref:"/features/gfe-coordination",label:"Explore GFE coordination"}],Zg={website:["websites","web pages"],booking:["book appointments","patient scheduling"],calendars:["staff scheduling","provider schedules"],"appointment-reminders":["SMS text reminders","appointment confirmations"],"intake-consent-automation":["intake forms","SMS text form reminders","consent paperwork"],"gfe-coordination":["GFE","good faith exams"],"contacts-pipeline":["CRM contacts","lead follow up"],conversations:["text messages","direct messages","DM","shared inbox"],retention:["treatment rebooking","patient reactivation","follow up"],"birthday-winback":["win back","patient reactivation"],"aftercare-rebook":["post treatment care","after care instructions"],"clinical-notes":["charting","clinical charts","SOAP notes"],"patient-workspace":["patient charts","medical records"],templates:["note templates","smart phrases"],photos:["before and after photos","photographs"],"body-mapping":["body maps","treatment areas"],payments:["contactless payments","tap to pay","invoices"],subscriptions:["memberships","recurring billing"],"gift-cards":["gift certificates"]},Jg={appointments:"appointment",memberships:"membership",subscriptions:"subscription",reminders:"reminder",confirmations:"confirmation",calendars:"calendar",sc
64hedules:"schedule",providers:"provider",patients:"patient",treatments:"treatment",services:"service",websites:"website",pages:"page",policies:"policy",deposits:"deposit",contacts:"contact",leads:"lead",messages:"message",emails:"email",texts:"text",sms:"text",dms:"dm",forms:"form",consents:"consent",exams:"exam",notes:"note",charts:"chart",records:"record",templates:"template",phrases:"phrase",photos:"photo",photographs:"photograph",maps:"map",areas:"area",protocols:"protocol",products:"product",quantities:"quantity",batches:"batch",alerts:"alert",payments:"payment",invoices:"invoice",packages:"package",sessions:"session",cards:"card",certificates:"certificate",reviews:"review",birthdays:"birthday"};function Nu(i){return(i.toLocaleLowerCase().normalize("NFKD").replace(/[\u0300-\u036f]/g,"").match(/[\p{L}\p{N}]+/gu)??[]).map(s=>Jg[s]??s)}function Xg(i,s,l="all"){let d=Nu(s);return i.filter(p=>{var g;if(l!=="all"&&p.area!==l)return!1;let h=((g=Fr.find(b=>b.id===p.area))==null?void 0:g.title)??"",f=Nu([p.id,p.title,p.description,h,...Zg[p.id]??[]].join(" "));return d.every(b=>f.some(u=>u.startsWith(b)))})}var Im={website:At,"appointment-reminders":En,"intake-consent-automation":Qe,"gfe-coordination":da,booking:He,calendars:He,"deposits-reminders":It,"contacts-pipeline":Ge,conversations:We,retention:Qa,reviews:We,"appointment-recovery":He,"birthday-winback":Vi,"aftercare-rebook":Bi,"email-marketing":We,"social-planner":Cm,advertising:Em,dashboard:ii,"clinical-notes":da,"patient-workspace":Ge,templates:xt,consents:Qe,photos:Rn,"body-mapping":us,inventory:si,protocols:At,payments:It,"ask-ai":In,"in-room":da,packages:si,subscriptions:It,"gift-cards":Vi},eb=[{id:"reach-book",title:"Reach & book",description:"Help a new patient find the clinic and choose an appointment.",features:["website","advertising","ask-ai","social-planner","contacts-pipeline","booking","calendars","deposits-reminders"]},{id:"prepare",title:"Prepare for the visit",description:"Give the patient the next steps before treatment.",features:["appointment-reminders","intake-consent-automation","gfe-coordination"]},{id:"document-care",title:"Document care",description:"Keep the clinical record in view during the visit.",features:["patient-workspace","in-room","clinical-notes","templates","consents","photos","body-mapping","protocols"]},{id:"follow-up",title:"Follow up",description:"Carry the conversation and treatment-specific follow-up into the next visit.",features:["conversations","retention","aftercare-rebook","reviews","appointment-recovery","birthday-winback","email-marketing"]},{id:"practice",title:"Run the practice",description:"Review activity, payments, treatment packages, membership billing and stock.",features:["dashboard","payments","packages","subscriptions","gift-cards","inventory"]}];function tb(){let[i,s]=(0,os.useState)(""),[l,d]=(0,os.useState)("all"),p=(0,os.useRef)(null),h=(0,os.useId)(),f=Xg(za,i,l),g=eb.map(v=>({...v,matches:v.features.flatMap(w=>f.filter(C=>C.id===w))})),b=!!(i||l!=="all"),u=l==="all"?"both systems":Fr.find(v=>v.id===l).title;function N(){var v;s(""),d("all"),(v=p.current)==null||v.focus()}return e("section",{className:"section feature-finder",id:"feature-directory","aria-label":"Find a platform feature"},e("div",{className:"feature-finder__controls"},e("label",{className:"feature-finder__search",htmlFor:`${h}-search`},e(xs,{size:21}),e("span",{className:"sr-only"},"Search platform features"),e("input",{id:`${h}-search`,ref:p,type:"search",value:i,onChange:v=>s(v.target.value),placeholder:"Search booking, consent, aftercareâ¦",autoComplete:"off"})),e("div",{className:"feature-finder__systems",role:"group","aria-label":"Filter by system"},e("button",{type:"button","aria-pressed":l==="all",onClick:()=>d("all")},"Both systems"),Fr.map(v=>e("button",{key:v.id,type:"button","aria-pressed":l===v.id,onClick:()=>d(v.id)},v.title)))),e("div",{className:"feature-finder__summary"},e("p",{role:"status","aria-live":"polite","aria-atomic":"true"},f.length," ",f.length===1?"feature":"features",b?` in ${u}`:" across the patient journey"),b&&e("button",{type:"button",onClick:N},"Reset filters")),e("div",{className:"feature-finder__layout"},e("nav",{className:"feature-finder__journeys","aria-label":"Browse by patient task"},e("p",null,"Browse by patient task"),e("ol",null,g.map((v,w)=>e("li",{key:v.id},v.matches.length?e(H,{to:`#journey-${v.id}`},e("span",{"aria-hidden":"true"},"0",w+1),e("span",null,v.title),e("span",{className:"feature-finder__count","aria-label":`${v.matches.length} ${v.matches.length===1?"feature":"features"}`},v.matches.length)):e("span",{className:"feature-finder__inactive"},e("span",{"aria-hidden":"true"},"0",w+1),e("span",null,v.title),e("span",{className:"feature-finder__count"},"0"))))),e("p",{className:"feature-finder__identity"},"Each feature is labeled with the system it belongs to.")),e("div",{className:"feature-finder__results"},g.filter(v=>v.matches.length).map(v=>e("section",{className:"feature-finder__group",key:v.id,"aria-labelledby":`${h}-${v.id}`},e("header",null,e("h2",{id:`journey-${v.id}`,tabIndex:-1},e("span",{id:`${h}-${v.id}`},v.title)),e("p",null,v.description)),e("ul",null,v.matches.map(w=>{let C=Im[w.id]??da,A=Fr.find(z=>z.id===w.area);return e("li",{key:w.id,id:w.id,tabIndex:-1},e(H,{to:w.href,"aria-labelledby":`${h}-${w.id}-title`},e("div",{className:"feature-finder__title"},e(C,{size:21,strokeWidth:1.6}),e("h3",{id:`${h}-${w.id}-title`},w.title),e(J,{size:18})),e("p",null,w.description),e("span",{className:`feature-finder__system feature-finder__system--${w.area}`}
64,A.title)),w.scopeNote&&e("p",{className:"feature-finder__scope"},w.scopeNote))})))),!f.length&&e("div",{className:"feature-finder__empty"},e("h2",null,"No features match this search."),e("p",null,"Try a task such as booking, consents, payments or email, or reset the filters to see everything."),e("button",{type:"button",onClick:N},"Show all ",za.length," features ",e(J,{size:18}))))))}function Rm({area:i,featureIds:s,headingLevel:l=2,mode:d="full",className:p=""}){let h=`h${l}`,f=`h${l+1}`,{pathname:g}=xa(),b=za.filter(u=>(!i||u.area===i)&&(!s||s.includes(u.id)));return e("div",{className:`feature-directory feature-directory--${d} ${p}`.trim()},Fr.filter(u=>!i||u.id===i).map(u=>{let N=b.filter(v=>v.area===u.id);return N.length?e("section",{className:"feature-directory__group",key:u.id},e("div",{className:"feature-directory__intro"},e("span",{className:"eyebrow"},u.id==="emr"?"CLINICAL + PRACTICE TOOLS":"BOOKING + MARKETING"),e(h,null,u.title),e("p",null,u.description),e(H,{to:g===u.href?"/features":u.href},g===u.href?"Browse all features":`Explore ${u.title}`," ",e(J,{size:16}))),e("ul",{className:"feature-directory__list"},N.map(v=>{let w=Im[v.id]??da;return e("li",{key:v.id,id:d==="full"?v.id:void 0,tabIndex:d==="full"?-1:void 0,className:"feature-directory__item"},e(H,{to:v.href,className:"feature-directory__page-link","aria-labelledby":`${d}-${v.id}-title`},e("div",{className:"feature-directory__title"},e(w,{size:21,strokeWidth:1.6}),e(f,{id:`${d}-${v.id}-title`},v.title),e(J,{size:18})),e("p",null,v.description),e("span",{className:"feature-directory__read"},"Explore feature")),v.scopeNote&&e("p",{className:"feature-directory__scope"},v.scopeNote))}))):null}))}var Aa="Product interface illustration · sample data.",lc="Illustrated workflow. Messages and timing are configured for your clinic.",Mu={"gift-cards":{eyebrow:"Marketing System · Gift cards",title:"Make your clinic easy to give as a gift.",intro:"Create clinic-branded gift cards, share a purchase link and track the value available for a future visit.",overviewTitle:"A gift with a clear value and record.",overviewBody:"Customers choose a gift-card amount and recipient through the configured checkout. The recipient receives the card, then uses its code at a supported checkout. The gift-card record keeps the issued value, remaining balance and delivery details together.",bullets:["Set the design, available amounts and gift-card terms.","Sell through a dedicated link and deliver to the chosen recipient.","Track the remaining value as the card is redeemed at supported checkouts."],workflowSteps:[{title:"Create the card",body:"Choose the clinic branding, amounts and terms for the gift-card product."},{title:"Share the purchase path",body:"Give customers a dedicated link to choose the card and recipient."},{title:"Redeem and track",body:"Apply the gift-card code at a supported checkout and review the value used and balance remaining."}],setup:{title:"Match gift cards to your checkout.",body:"We review your payment provider, booking setup and gift-card terms. Redemption depends on checkout support; gift-card value stays separate from package sessions and membership benefits."},relatedIds:["payments","packages","booking"],visual:{kind:"workflow",recommendedAsset:null,title:"Give a visit, track the value",description:"A clinic-branded gift card moves from purchase to recipient delivery and redemption.",caption:"Illustrated gift-card workflow. The sample card and balance are fictional."}},"ask-ai":{eyebrow:"Marketing System · Ask AI",title:"Know the context. Write the next message.",intro:"Find leads, summarize a contactâs activity and draft the reply, email or social post your team needs next.",overviewTitle:"From a contact record to a useful follow-up.",overviewBody:"Ask AI helps with CRM searches, selected-contact summaries and marketing drafts. Review the leadâs context, ask for a booking reply or turn a clinic update into email and social copy. You review the response and confirm supported record changes before they run.",bullets:["Find contacts or opportunities using tags, dates and pipeline stages.","Summarize a selected contactâs recent activity and outstanding tasks.","Draft booking replies, email copy and social posts in your clinicâs tone."],workflowSteps:[{title:"Find the right leads",body:"Describe the contacts or open opportunities you want to review, including the relevant tag, date range or stage."},{title:"Get the context",body:"Choose a contact and ask for a summary of their recent activity, appointments and next tasks."},{title:"Draft the next message",body:"Ask for a short booking reply, refine the wording and review the details before using it."}],setup:{title:"Make Ask AI useful for your team.",body:"We configure the appropriate user access and explain applicable AI usage. Bring your clinicâs tone, offer and booking information to the conversation."},relatedIds:["contacts-pipeline","conversations","email-marketing"],visual:{kind:"workflow",recommendedAsset:null,title:"Find, summarize, draft",description:"A contact search leads to a selected lead summary and a booking-message draft.",caption:"Illustrative Ask AI example with fictional records. Review the response before acting."}},"in-room":{eyebrow:"EMRMedSpa · In-Room",title:"Keep the next visit task close to the patient.",intro:"The In-Room workspace starts with patient search, then puts photo capture, a GFE request and checkout within reach.",overviewTitle:"Fewer steps between the patient and the task.",overviewBody:"Select the patient once in the room workspace, then open photo capture, a required GFE request or checkout. The main visit actions stay together so staff can find the next task without searching separate menus.",bullets:["Find the patient before opening a visit action.","Access Capture Photo and GFE Request from the room workspace.","Open Check Out for the next payment step."],workflowSteps:[{title:"Select the patient",body:"Search for the patient and confirm that you have the right record."}
64,{title:"Choose the visit task",body:"Open photo capture or request the required GFE through the clinicâs process."},{title:"Move to checkout",body:"Use Check Out when the team is ready to handle the visitâs payment task."}],setup:{title:"Fit the workspace to your visit process.",body:"We review staff access and the clinicâs photo, GFE and checkout process. Your team handles clinical review and confirms the outcome of each action."},relatedIds:["patient-workspace","photos","gfe-coordination"],visual:{kind:"workflow",recommendedAsset:null,title:"From the patient to the next task",description:"Patient selection leads to photo capture, a required GFE request or checkout.",caption:"Illustrated In-Room workflow based on the observed actions. No patient record, completed exam or payment is shown."}},packages:{eyebrow:"Marketing System · Treatment packages",title:"Let completed visits update the treatment series.",intro:"Set up a prepaid treatment package with eligible services and automatic session tracking around the clinicâs completion rules.",overviewTitle:"A defined series. A balance that follows the visits.",overviewBody:"Agree which services count, how many sessions the patient receives and what marks an eligible visit as completed. The configured workflow deducts a session when those rules are met, keeping the remaining visits separate from the payment record.",bullets:["Define the price, starting session count and eligible services.","Automate session deduction for qualifying completed visits.","Review remaining visits and handle corrections through the agreed process."],workflowSteps:[{title:"Define the package",body:"Approve the services, session quantity, price and package terms."},{title:"Confirm the starting balance",body:"Record the patientâs package and reconcile any existing sessions before automation begins."},{title:"Track eligible visits",body:"A qualifying completed appointment deducts the agreed session. Staff review exceptions and corrections."}],setup:{title:"We configure and test your package rules.",body:"We map the eligible services, starting balances, completion event and exception process. Package sessions remain distinct from subscription benefits and gift-card value."},relatedIds:["booking","payments","subscriptions"],visual:{kind:"workflow",recommendedAsset:null,title:"Package balance follows eligible visits",description:"A treatment package starts with an agreed session count and deducts a session after a qualifying completed appointment.",caption:"Illustrated package automation. Services and redemption rules are configured for your clinic."}},subscriptions:{eyebrow:"Marketing System · Membership subscriptions",title:"Give your membership a recurring billing plan.",intro:"Set up recurring membership payments in the Marketing System, with the price, billing interval and terms your clinic approves.",overviewTitle:"Keep billing and benefits clear.",overviewBody:"The subscription handles recurring billing. Your clinic defines the benefits patients receive and how staff apply them. Review the subscription alongside its payment history, while staff follow the clinicâs benefit rules.",bullets:["Configure the recurring membership product and billing interval.","Review subscription status and the associated payment records.","Define how staff apply the clinicâs membership benefits."],workflowSteps:[{title:"Define the membership",body:"Agree the recurring price, billing interval, patient terms and benefits."},{title:"Set up recurring billing",body:"Configure the subscription through the clinicâs connected payment setup."},{title:"Review the account",body:"Check the subscription and payment state, then follow the clinicâs separate process for benefits."}],setup:{title:"Start with the billing and benefit rules.",body:"We review the recurring product, payment connection and membership terms with you. Any benefit tracking is defined separately from the recurring charge."},relatedIds:["packages","payments","contacts-pipeline"],visual:{kind:"workflow",recommendedAsset:null,title:"Recurring billing, clearly defined benefits",description:"The membership terms lead to recurring billing, with a separate step for the clinic to apply benefits.",caption:"Illustrated membership subscription. No automatic credit wallet or member discount is depicted."}},website:{eyebrow:"Marketing System · Custom website",title:"Let patients understand the treatment, then book it.",intro:"Your website introduces the clinic, explains its services and gives patients a clear path into the booking experience.",overviewTitle:"The beginning of the patient journey.",overviewBody:"We build your website around your brand, treatment menu and clinic details. Service pages answer the questions that come before an appointment, with booking links that carry the patient into the next step.",bullets:["Clinic branding, service descriptions and useful practice information.","Treatment pages, clear booking links and foundational SEO setup.","Ongoing website changes and optimizations when needed in the Operating System."],workflowSteps:[{title:"Find the clinic",body:"Patients arrive at a website that presents your practice and its services."},{title:"Explore a treatment",body:"The service page explains the appointment and the details a patient needs before booking."}
64,{title:"Choose an appointment",body:"A clear booking link leads into the service menu or the relevant appointment."}],setup:{title:"Your website is part of Launch.",body:"We use your branding, service information and approved content to build the site and connect its booking paths. Website changes and optimizations remain included when needed."},relatedIds:["booking","advertising","appointment-reminders"],visual:{kind:"workflow",recommendedAsset:null,title:"Website to appointment",description:"The clinic website leads to a treatment page and then the relevant appointment choice.",caption:"Illustrated website and booking journey. Content is built around your clinic."}},"appointment-reminders":{eyebrow:"Marketing System · Appointment reminders",title:"Keep patients informed before the appointment.",intro:"Automated confirmations and reminders give patients their appointment details and the clinic-approved instructions they need before the visit.",overviewTitle:"The booking starts the pre-visit follow-up.",overviewBody:"Once an appointment is confirmed, the configured workflow sends the confirmation and upcoming reminders. The service, date, time and arrival details stay central to the message, with timing set for your clinic.",bullets:["Automated confirmation email and SMS for the booked appointment.","Reminders before the visit, with the relevant service and appointment details.","Clinic directions or approved arrival instructions for a mobile practice."],workflowSteps:[{title:"Confirm the booking",body:"The appointment confirmation starts the message sequence."},{title:"Send the visit details",body:"Patients receive a branded confirmation with the information they need."},{title:"Remind before the visit",body:"Follow-up messages arrive at the reminder points configured for your clinic."}],setup:{title:"We build the reminder sequence.",body:"We configure the appointment triggers, branded messages, reminder timing and clinic details. You approve the visit instructions and the way patients should contact the team."},relatedIds:["booking","intake-consent-automation","gfe-coordination"],visual:{kind:"workflow",recommendedAsset:null,title:"Confirmed, informed, reminded",description:"A confirmed appointment leads to a branded confirmation and reminders before the visit.",caption:lc}},"intake-consent-automation":{eyebrow:"Marketing System · Automated intake and consent",title:"Send the right paperwork for the booked treatment.",intro:"Automated intake and consent delivery puts your clinicâs approved forms into the pre-visit journey, with follow-up for outstanding paperwork.",overviewTitle:"The treatment determines what the patient receives.",overviewBody:"We map the appointment to the intake and consent forms it needs. The workflow sends the approved form links and checks the recorded completion state before sending the configured reminder.",bullets:["Deliver clinic-approved intake and treatment consent forms automatically.","Match the request to the booked service.","Remind patients about outstanding forms using the configured completion checks."],workflowSteps:[{title:"Book the treatment",body:"The appointment identifies the forms that belong in this patientâs pre-visit journey."},{title:"Send the approved forms",body:"Branded messages direct the patient to the relevant intake and consent documents."},{title:"Follow up on what is outstanding",body:"The workflow checks the recorded completion state before sending the agreed reminder; the clinical team reviews consent before care."}],setup:{title:"We connect the forms to the appointment.",body:"Your clinic supplies or approves its forms. We configure the treatment mapping, delivery, completion checks and reminder sequence as part of the bundled setup."},relatedIds:["appointment-reminders","consents","gfe-coordination"],visual:{kind:"workflow",recommendedAsset:null,title:"Appointment to approved paperwork",description:"A booked treatment leads to its approved forms and follow-up for paperwork still outstanding.",caption:"Illustrated form-delivery workflow. The clinic approves the forms and reviews consent before care."}},"gfe-coordination":{eyebrow:"EMRMedSpa · Good Faith Exam coordination",title:"Connect the required exam to the treatment journey.",intro:"Automate the next-step messages, request an exam through Qualiphy, or follow your own clinician-performed GFE process.",overviewTitle:"Three parts of one exam process.",overviewBody:"The pre-visit workflow tells patients what to do when their treatment requires a Good Faith Exam. The Qualiphy connection supports an exam request; the clinical workspace also supports a clinic-performed exam process. A qualified clinician performs the exam and makes the clinical decision.",bullets:["Send the next-step message for treatments that require an exam.","Use the connected Qualiphy request route or your clinicâs own qualified clinician.","Keep exam documentation and treatment review with the clinical team."],workflowSteps:[{title:"Identify the requirement",body:"Use the booked treatment and the clinicâs requirements to decide which exam process applies."},{title:"Coordinate the exam",body:"Direct the patient to the configured process. Use Qualiphy for an external request or the clinic-performed workflow for your own clinician."},{title:"Review before treatment",body:"The evaluating clinician performs the exam. Your clinical team reviews the documentation and decides whether care can proceed."}
64],setup:{title:"Choose the right exam route for your clinic.",body:"We confirm the exam provider, treatment mapping and connection. Availability depends on the provider and patientâs state; exam fees are separate. Your own qualified clinician can perform the exam through the clinicâs process."},relatedIds:["intake-consent-automation","in-room","clinical-notes"],visual:{kind:"workflow",recommendedAsset:null,title:"Coordination, exam, clinical review",description:"A required exam branches to a provider request or the clinicâs own clinician before clinical review.",caption:"Illustrated exam process. A request is not a completed exam or treatment approval."}},booking:{eyebrow:"Marketing System · Online booking",title:"Give patients a clear path to an appointment.",intro:"A service menu explains the choices before a patient selects a provider, date and time.",overviewTitle:"The service details come first.",overviewBody:"Patients can browse categories and see the description, duration and price for an appointment. We build the menu around the services your clinic offers and the booking rules you approve.",bullets:["Organize services into useful categories.","Show appointment details before the patient chooses.","Carry the selection through staff, availability and checkout."],workflowSteps:[{title:"Choose a service",body:"Browse the menu and review what the appointment includes."},{title:"Find an appointment",body:"Select from the staff and times your clinic makes available."},{title:"Review the booking",body:"Check the appointment details and any configured deposit before completing the booking."}],setup:{title:"Your menu, built for your clinic.",body:"You provide the services, prices, durations, staff and booking policies. We configure the menu and review the patient journey with you."},relatedIds:["calendars","deposits-reminders","appointment-reminders"],visual:{kind:"product",recommendedAsset:"/assets/product/booking-v2-menu.png",title:"The patientâs starting point",description:"A service menu with categories, appointment descriptions and selection controls.",caption:`${Aa} Services and prices are illustrative.`}},calendars:{eyebrow:"Marketing System · Staff calendars and availability",title:"Build the schedule your team can work from.",intro:"Staff calendars organize the clinicâs working hours and appointments. Online booking uses the service and availability choices you make for patients.",overviewTitle:"The staff schedule behind online booking.",overviewBody:"Set who provides each service, how long the appointment takes and when that person is available. Staff use the calendar to review the working day; patients use the separate online booking flow to choose an available appointment.",bullets:["Match services and appointment durations to the staff who provide them.","Set staff hours and the availability offered for booking.","Review appointments and their status in the clinicâs schedule."],workflowSteps:[{title:"Define the appointments",body:"Identify each service, its duration and the staff who can provide it."},{title:"Set availability",body:"Agree which dates and times should be available to book."},{title:"Review the schedule",body:"Walk through the calendar and confirm that the booking choices match the clinicâs plan."}],setup:{title:"Start with your actual schedule.",body:"We map staff, services and working hours, then connect authorized Google or Outlook calendars where needed. Each providerâs linked and conflict calendars are reviewed with their booking rules."},relatedIds:["booking","deposits-reminders","dashboard"],visual:{kind:"product",recommendedAsset:"/assets/product/emr-calendar.png",title:"The teamâs appointment schedule",description:"An EMRMedSpa provider schedule with appointment blocks and confirmed, unconfirmed and canceled status labels.",caption:`${Aa} EMRMedSpa staff schedule shown; booking availability is configured in the Marketing System.`}},"deposits-reminders":{eyebrow:"Marketing System · Deposits and booking policies",title:"Put your booking policies into the appointment flow.",intro:"Configured deposits and clear appointment policies help patients understand the commitment before they complete a booking.",overviewTitle:"Put your appointment policies into the setup.",overviewBody:"Your clinic decides which appointments require a deposit and what patients should know about changes or cancellations. We connect the payment setup and configure the agreed amounts around those services. The policy explains how the deposit applies to the visit.",bullets:["Set the deposit required for the agreed appointment types.","Explain the clinicâs booking, change and cancellation policies.","Review the appointment and deposit details before launch."],workflowSteps:[{title:"Set the policy",body:"Confirm which appointments need a deposit and what patients should know before booking."},{title:"Configure the booking",body:"Apply the agreed deposit and policy details to the relevant appointment choices."},{title:"Review before booking",body:"Patients see the appointment details and configured payment step before completing the booking."}],setup:{title:"Your policies guide the configuration.",body:"You approve deposit amounts, cancellation terms and how deposits apply to the visit. We review the payment connection and configure the booking step. Any cancellation charge or refund process is agreed separately."},relatedIds:["booking","appointment-reminders","appointment-recovery"],visual:{kind:"product",recommendedAsset:"/assets/product/booking-v2-checkout.png",title:"Reviewing the appointment",description:"Booking checkout with appointment details and configured payment fields.",caption:`${Aa} This booking example does not show a reminder message or a completed payment.`}},"contacts-pipeline":{eyebrow:"Marketing System · Contacts and lead pipeline",title:"Keep the next follow-up attached to the lead.",intro:"Organized contact details and pipeline stages help your team see who needs attention and where the conversation stands.",overviewTitle:"Give each inquiry a place in the process.",overviewBody:"Your team needs more than a list of names. Contact fields, tags and lead stages provide a working structure for inquiries, so staff can review the details before deciding what comes next.",bullets:["Keep useful contact details in the CRM.","Organize leads with fields, tags and agreed pipeline stages.","Use the leadâs current stage to guide the teamâs next action."],workflowSteps:[{title:"Record the inquiry",body:"Keep the contact details your team needs for follow-up."},{title:"Place the lead",body:"Use the pipeline stage that reflects the current conversation."},{title:"Take the next step",body:"Review the record, then reply or help the person find an appointment."}],setup:{title:"A pipeline that uses your teamâs language.",body:"We agree the stages and contact information your clinic needs, then configure the CRM around that process."},relatedIds:["conversations","booking","retention"],visual:{kind:"workflow",recommendedAsset:null,title:"From inquiry to next action",description:"Three steps connect the inquiry, its pipeline stage and the teamâs next action.",caption:"Illustrated lead workflow. Pipeline stages are configured for your clinic."}},conversations:{eyebrow:"Marketing System · CRM and conversations",title:"Keep the conversation in one team inbox.",intro:"Review email, SMS and connected Facebook and Instagram messages beside the contact your team is helping.",overviewTitle:"See the thread before you reply.",overviewBody:"A new inquiry may arrive by text, email or social message. C
64onversations brings supported channels into the team inbox, with contact details and the message history in view. Staff can pick up the thread and guide the next step toward booking.",bullets:["Work from email, SMS and connected Facebook and Instagram threads.","Find unread conversations and review the contactâs context.","Reply through the available channel or plan the clinicâs call."],workflowSteps:[{title:"Open the inquiry",body:"Find the conversation and confirm which contact and channel you are viewing."},{title:"Read the context",body:"Review the message history, contact details and next task before replying."},{title:"Give a clear next step",body:"Answer the question, share the approved booking path or arrange the teamâs call."}],setup:{title:"Connect the channels your patients use.",body:"We configure your email and SMS setup, plus authorized Facebook and Instagram accounts. Available channels depend on the connection and permissions; messaging usage is separate."},relatedIds:["contacts-pipeline","ask-ai","booking"],visual:{kind:"product",recommendedAsset:"/assets/product/inbox.png",title:"The thread beside the contact",description:"A team inbox with a sample message thread beside the conversation list.",caption:"Product interface illustration · sample data. This example shows one thread, not every connected channel."}},retention:{eyebrow:"Marketing System · Treatment-specific retention",title:"Give every treatment a plan for the next visit.",intro:"Bring patients back with rebooking and reactivation messages shaped around the treatment they received.",overviewTitle:"The next invitation should fit the last visit.",overviewBody:"A completed treatment starts its own return-visit plan. Rebooking messages use the interval your clinic approves for that service. If the patient has not returned, a later invitation helps them reconnect with your team.",bullets:["Match the rebooking message and destination to the treatment received.","Use clinic-approved return intervals for each service.","Reconnect with past patients through a separate reactivation sequence."],workflowSteps:[{title:"Record the treatment",body:"The completed visit identifies the service and the relevant return-visit plan."},{title:"Invite the next visit",body:"Send the service-specific booking invitation at the interval your clinic approves."},{title:"Reconnect when needed",body:"Use the configured reactivation path for patients who have not returned, and update the follow-up when they book."}],setup:{title:"We build the return-visit plan for each service.",body:"Your clinic approves the intervals, wording and booking destinations. We configure rebooking and reactivation rules around accurate visit history."},relatedIds:["booking","birthday-winback","appointment-recovery"],visual:{kind:"workflow",recommendedAsset:null,title:"Last treatment, next invitation",description:"A completed service leads to its rebooking invitation and a later reactivation path.",caption:"Illustrated retention workflow. Timing and messages are configured for your clinic."}},reviews:{eyebrow:"Marketing System · Review requests and Reviews AI",title:"Ask for feedback. Make replies easier.",intro:"Send a review request after the visit, then use Reviews AI to help your clinic respond to the feedback it receives.",overviewTitle:"A complete path from request to reply.",overviewBody:"Automated requests point patients to your clinicâs review page. Reviews AI can suggest a reply for your team to review, or respond automatically under the policy you configure.",bullets:["Send a clinic-branded request with the correct review link.","Generate a suggested reply that your team can review and edit.","Configure automated replies by source, rating and wait time."],workflowSteps:[{title:"Send the request",body:"The agreed visit event starts the review request with your clinicâs wording and destination."},{title:"Receive the feedback",body:"The patient chooses whether to leave a review. Your team can see the review in the reputation workspace."},{title:"Choose how to reply",body:"Review an AI-assisted draft or use the configured automatic reply policy. Keep patient and treatment details out of public responses."}],setup:{title:"Set the request and reply policy together.",body:"We confirm the review connection, message timing, response mode and applicable AI usage. Your clinic decides when a reply needs personal attention."},relatedIds:["aftercare-rebook","conversations","ask-ai"],visual:{kind:"workflow",recommendedAsset:null,title:"Request, feedback, reply",description:"A review request leads to patient feedback and an AI-assisted reply for the clinic to review.",caption:"Illustrated review workflow. Reviews and replies are fictional examples."}},"appointment-recovery":{eyebrow:"Marketing System · Cancellation and no-show recovery",t
64itle:"Keep the next booking in view after plans change.",intro:"Follow-up after a canceled or missed appointment gives the patient a practical way to reconnect with your clinic.",overviewTitle:"A different message for a different situation.",overviewBody:"A cancellation and a no-show need their own wording and timing. We configure the response around the appointment status and your clinicâs policies, with a useful next step for the patient.",bullets:["Distinguish canceled appointments from no-shows.","Use the relevant clinic-approved recovery message.","Provide a booking option or a way to speak with the team."],workflowSteps:[{title:"Record the appointment status",body:"The clinic keeps the canceled or missed visit accurately recorded."},{title:"Start the relevant follow-up",body:"The configured workflow uses the message and timing agreed for that situation."},{title:"Offer a next step",body:"Help the patient choose another appointment or contact the clinic."}],setup:{title:"Follow-up that respects your booking policies.",body:"We review the cancellation and no-show rules, message timing and rebooking destination before configuring the workflow."},relatedIds:["calendars","booking","retention"],visual:{kind:"workflow",recommendedAsset:null,title:"When an appointment changes",description:"Canceled and no-show appointments lead to an approved follow-up message and a rebooking choice.",caption:lc}},"birthday-winback":{eyebrow:"Marketing System · Birthday and patient reactivation",title:"Reconnect with patients beyond the last visit.",intro:"Automated birthday messages and win-back invitations keep your clinic in touch with past patients and give them a clear way to return.",overviewTitle:"Two occasions, with their own message.",overviewBody:"Birthday greetings follow the patientâs birthday. Reactivation messages follow the approved interval since treatment. We configure each audience and message around past patients, with an invitation that fits your clinic.",bullets:["Prepare a birthday message in the clinicâs voice.","Define when a returning-patient invitation is appropriate.","Include an offer or booking link only when your clinic approves it."],workflowSteps:[{title:"Define the occasion",body:"Choose the birthday date or return interval that fits the workflow."},{title:"Prepare the invitation",body:"Write the greeting or return message and confirm any approved offer."},{title:"Give a clear next step",body:"Let the patient reply or explore the relevant appointment options."}],setup:{title:"A return journey suited to your practice.",body:"We review the available contact information, timing and message content. Your clinic approves the audience and any promotional offer."},relatedIds:["retention","email-marketing","booking"],visual:{kind:"workflow",recommendedAsset:null,title:"A planned invitation to return",description:"An occasion leads to a clinic-approved invitation and a reply or booking choice.",caption:lc}},"aftercare-rebook":{eyebrow:"Marketing System · Automated aftercare",title:"Send the care instructions that belong to the visit.",intro:"After treatment, send the post-care information your clinicians approve for the service the patient received.",overviewTitle:"Useful guidance after the patient leaves.",overviewBody:"The recorded completed visit selects the serviceâs aftercare message. Patients receive the approved instructions and a clear way to contact the clinic with questions. Return-visit marketing belongs to the separate retention plan.",bullets:["Map the completed service to the correct aftercare content.","Send clinician-approved post-care messages at the agreed time.","Include the clinicâs contact details for questions about the instructions."],workflowSteps:[{title:"Complete the visit",body:"The recorded treatment identifies the relevant aftercare instructions."},{title:"Send the approved guidance",body:"The workflow sends the serviceâs post-care content using the clinicâs agreed timing."},{title:"Keep the clinic within reach",body:"Patients can use the contact details in the message when they need help from your team."}],setup:{title:"Your clinical guidance, delivered consistently.",body:"Your clinicians provide or approve the instructions. We configure the service mapping, message format, timing and clinic contact details."},relatedIds:["clinical-notes","conversations","retention"],visual:{kind:"workflow",recommendedAsset:null,title:"Treatment, approved guidance, clinic contact",description:"A completed treatment leads to its approved aftercare message and the clinicâs contact information.",caption:"Illustrated aftercare delivery. The clinic supplies the clinical guidance."}},"email-marketing":{eyebrow:"Marketing System · Branded email",title:"Make follow-up look like it came from your clinic.",intro:"Your branding carries into appointment messages and email campaigns, with reporting to review delivery and engagement.",overviewTitle:"Recognizable messages, from booking onward.",overviewBody:"The logo, colors and voice patients see on your website can carry into their inbox. We prepare branded emails around your clinic and the purpose of each message.",bullets:["Use clinic branding in confirmations and follow-up.","Prepare email content around an appointment or campaign.","Review campaign delivery, opens, clicks and unsubscribe activity."],workflowSteps:[{title:"Cho
64ose the message",body:"Identify the appointment update or campaign you want the email to support."},{title:"Apply the clinicâs brand",body:"Review the design, wording and destination with your team."},{title:"Review campaign activity",body:"Use the reporting view to inspect delivery and engagement for the selected period."}],setup:{title:"Branded emails are part of the setup.",body:"We use your logo, brand materials and approved content to prepare the templates and configured follow-up messages."},relatedIds:["retention","deposits-reminders","dashboard"],visual:{kind:"product",recommendedAsset:"/assets/client-work/sunshine-branded-confirmation.jpg",title:"An appointment email for Sunshine Mobile Wellness",description:"An actual client email design shows the clinicâs branding around the appointment details.",caption:"Sunshine Mobile Wellness email design. Appointment and contact details were replaced with fictional examples."}},"social-planner":{eyebrow:"Marketing System · Social Planner",title:"Turn an idea into a post youâre ready to share.",intro:"Create social content with AI, refine the wording and schedule approved posts across your connected accounts.",overviewTitle:"An idea, a useful draft and a place on the schedule.",overviewBody:"Give Content AI the topic, audience and tone. Refine the draft with Ask AI, adjust it for the selected social account and preview the post before saving or scheduling it.",bullets:["Draft post copy from your clinicâs topic and tone.","Shorten, rewrite or add a call to action with AI.","Review the account, media and timing before scheduling."],workflowSteps:[{title:"Start with an idea",body:"Describe the service, clinic update or booking invitation you want to share."},{title:"Refine the draft",body:"Ask AI to adjust the tone or length, then check the details and choose the media."},{title:"Review and schedule",body:"Preview the post for the selected account. Save it as a draft, request approval or schedule publication."}],setup:{title:"Connect the profiles your clinic uses.",body:"We review account access, publishing permissions and applicable AI usage. Your team approves the content; ongoing social management is separately scoped."},relatedIds:["ask-ai","email-marketing","advertising"],visual:{kind:"product",recommendedAsset:"/assets/product/social-planner.png",title:"The social planning workspace",description:"Social Planner list with post captions, publication statuses, dates and social account icons.",caption:"Product interface illustration · sample data. Posts and account details are illustrative."}},advertising:{eyebrow:"Marketing System · Patient acquisition",title:"New leads. Real conversations. More bookings.",intro:"We create Meta ads that generate local leads, then connect each inquiry to AI follow-up, staff call notifications and a clear path to booking.",overviewTitle:"From a Meta lead to a conversation with your clinic.",overviewBody:"Your Facebook and Instagram ads introduce an approved offer to a local audience. When someone submits the lead form, their inquiry enters your CRM. Configured SMS and Conversation AI follow up, while a call notification prompts your team to make personal contact and help the lead book.",bullets:["Custom Meta ad creative and lead forms built around your clinic and offer.","AI follow-up and staff call notifications connected to the same lead.","A clear next step from the conversation to online booking."],workflowSteps:[{title:"Generate the lead",body:"Launch approved Meta creative to a local audience, with a lead form that brings the inquiry into your CRM."},{title:"Start the conversation",body:"Configured SMS and Conversation AI follow up with the lead. Your team receives a notification to call."},{title:"Help them book",body:"AI follow-up and your team guide interested leads to the appropriate booking option. The clinic handles personal questions and the call."}],setup:{title:"Your first Meta campaign, connected to follow-up.",body:"Launch includes your first Meta ad creative and campaign launch. Ad spend is separate; ongoing campaign management is client-run or separately scoped. Before launch, we review the offer, audience, budget, lead form, call notifications, reply hours, AI access and booking setup."},relatedIds:["contacts-pipeline","conversations","booking"],visual:{kind:"product",recommendedAsset:"/assets/campaigns/kc-consultation-creative.png",title:"Custom creative for KC Aesthetics",description:"Black and gold KC Aesthetics consultation campaign artwork.",caption:"Custom campaign creative for KC Aesthetics. This is creative work, not a campaign result."}},dashboard:{eyebrow:"Marketing System · Dashboard and reporting",title:"See how the appointment book is taking shape.",intro:"Review appointment activity by date, status and calendar, then use that c
64ontext to decide where the team should look next.",overviewTitle:"Start with a period and a practical question.",overviewBody:"The dashboard shows appointment totals and status breakdowns for a selected date range. It gives the team a view of booking activity across the calendars being reviewed.",bullets:["Select the reporting period.","Review confirmation, attendance and no-show counts.","Compare appointment activity by calendar."],workflowSteps:[{title:"Choose a date range",body:"Set the period that matches the question you are reviewing."},{title:"Inspect the appointment mix",body:"Look at the displayed totals and status breakdowns."},{title:"Choose where to follow up",body:"Use the calendar and status view to guide the teamâs next review."}],setup:{title:"Know what the view is counting.",body:"We walk through the configured dashboard and calendar structure with your team so the displayed appointment activity has a clear context."},relatedIds:["calendars","appointment-recovery","email-marketing"],visual:{kind:"product",recommendedAsset:"/assets/product/owner-dashboard.png",title:"Ap
64pointment activity at a glance",description:"A dashboard showing appointment totals, status breakdowns and calendars for the selected period.",caption:`${Aa} Numbers are illustrative, not client results.`}},"clinical-notes":{eyebrow:"EMRMedSpa · Clinical notes",title:"Document the treatment with the visit in view.",intro:"Procedure details, vitals and structured notes sit in the clinical workspace your team uses to document care.",overviewTitle:"A place for the details of this visit.",overviewBody:"The treatment note brings procedure information and SOAP sections into a structured record. Clinicians can document the visit, review the displayed consent status and use the treatment-area tools in context.",bullets:["Record procedure details and vitals.","Document the visit with structured SOAP sections.","Keep treatment-area documentation and photo controls within the note."],workflowSteps:[{title:"Open the visit",body:"Review the patient and treatment context before documenting care."},{title:"Write the note",body:"Enter the visit details in the relevant procedure and SOAP sections."},{title:"Review the record",body:"The clinical team checks the note and consent information as part of its care workflow."}],setup:{title:"Configure the workspace around your clinical content.",body:"Your clinical team supplies or approves treatment templates and forms. We prepare the agreed configuration and walk through the documentation workflow."},relatedIds:["templates","consents","retention"],visual:{kind:"product",recommendedAsset:"/assets/product/emr-treatment-note.png",title:"Inside a treatment note",description:"A draft note with procedure details, vitals, SOAP sections, a body map and displayed consent status.",caption:`${Aa} Clinical details are fictional; consent is shown as unsigned.`}},"patient-workspace":{eyebrow:"EMRMedSpa · Patient records",title:"Know which record you are working in.",intro:"Find a patient by name, email or phone, then open the chart for their contact details, medical history and treatment notes.",overviewTitle:"The patientâs clinical starting point.",overviewBody:"The patient list supports search and active or inactive filters. Open the chart to review demographics, emergency contact information, medical history and treatment documentation before continuing the visit.",bullets:["Search by name, email or phone and filter the patient list.","Review demographics, emergency contact details and recorded medical history.","Open treatment notes, consent tools and the patientâs GFE information."],workflowSteps:[{title:"Find the patient",body:"Search the list and confirm the identifying details before opening the chart."},{title:"Review the context",body:"Check the contact information, medical history and existing notes recorded for the patient."},{title:"Continue the visit",body:"Open the treatment note, consent tools or GFE information needed for the next task."}],setup:{title:"Review your records before planning a move.",body:"We discuss the people, existing clinical system and records involved in setup. Any record transfer or connection work is agreed before changing the clinicâs systems."},relatedIds:["clinical-notes","in-room","consents"],visual:{kind:"product",recommendedAsset:"/assets/product/emr-patients.png",title:"Finding a patient",description:"A patient list in the clinical workspace with fictional patient records.",caption:`${Aa} Patient identities are fictional.`}},templates:{eyebrow:"EMRMedSpa · Templates and smart phrases",title:"Give clinicians a useful starting point for the note.",intro:"Treatment templates and smart phrases provide structure for documentation while the clinician records the details of the actual visit.",overviewTitle:"Repeat the structure. Review the content.",overviewBody:"A treatment-specific template can organize the note before the clinician begins. Smart phrases support commonly used wording, with the clinical team responsible for reviewing and adapting the record.",bullets:["Use structured SOAP sections for treatment documentation.","Work from treatment-specific note templates.","Adapt smart phrases to the visit being documented."],workflowSteps:[{title:"Cho
64ose the starting point",body:"Open the template appropriate to the treatment."},{title:"Document this visit",body:"Add the patient-specific observations and procedure details."},{title:"Review the wording",body:"Check the completed note, including any reused phrases, for this patient and visit."}],setup:{title:"Clinical templates need clinical approval.",body:"Your team supplies or approves the templates and reusable wording. We configure the agreed content in the clinical workspace."},relatedIds:["clinical-notes","protocols","patient-workspace"],visual:{kind:"product",recommendedAsset:"/assets/product/emr-treatment-note.png",title:"A structured treatment note",description:"A draft treatment note with procedure fields and structured SOAP sections.",caption:`${Aa} Fictional treatment note; the smart-phrase editor is not pictured.`}},consents:{eyebrow:"EMRMedSpa · Consents",title:"Keep approved forms and consent review in the clinical workflow.",intro:"Review the clinicâs consent information alongside treatment documentation, with automated form delivery supporting the pre-visit process.",overviewTitle:"The form and the care decision both need attention.",overviewBody:"The bundled workflow sends the clinicâs approved forms before the appointment. In the clinical workspace, staff review the displayed consent status alongside the treatment record. Clinicians remain responsible for consent and the decision to proceed with care.",bullets:["Use consent forms approved by your clinic.","Send the relevant form from the clinical workflow.","Review the displayed status and clinical record before care."],workflowSteps:[{title:"Select the approved form",body:"Use the document appropriate to the clinic and treatment."},{title:"Send it for completion",body:"Follow the clinicâs agreed process for providing the form to the patient."},{title:"Review before treatment",body:"The clinical team checks the consent information and decides whether care can proceed."}],setup:{title:"Your forms, with a defined review process.",body:"Your clinical team supplies or approves the forms. We review the form setup and the teamâs consent workflow with you."},relatedIds:["intake-consent-automation","gfe-coordination","clinical-notes"],visual:{kind:"product",recommendedAsset:"/assets/product/emr-notes-list.png",title:"Consent status beside the clinical note",description:"Clinical notes list with consent and GFE statuses beside draft and signed note records.",caption:`${Aa} Consent, GFE and note statuses are fictional.`}},photos:{eyebrow:"EMRMedSpa · Photos and before/after",title:"Bring treatment photos into the clinical record.",intro:"Capture treatment photos, organize before and after images and compare selected views in the clinical workspace.",overviewTitle:"Keep the image connected to the treatment.",overviewBody:"The treatment note includes photo attachment controls, with a photo workspace for organizing and comparing images. Your clinic defines how its team captures, reviews and uses clinical photography.",bullets:["Add or capture a photo from the treatment note controls.","Organize before, after and clinical-finding images with patient and type filters.","Select the relevant images for comparison during clinical review."],workflowSteps:[{title:"Open the clinical context",body:"Start with the correct patient and treatment record."},{title:"Add the treatment image",body:"Use the photo tools according to the clinicâs photography and authorization process."},{title:"Organize and review",body:"Categorize the images and use the comparison view as part of the clinical review."}],setup:{title:"Agree how your clinic handles photography.",body:"We discuss the photo workflow and configuration. Your clinical team approves image capture, patient authorization and the use of treatment photos."},relatedIds:["clinical-notes","body-mapping","patient-workspace"],visual:{kind:"product",recommendedAsset:"/assets/product/emr-treatment-note.png",title:"Photo controls in the treatment note",description:"Photos section of a treatment note with an Add / Capture Photo control; no stored photo is shown.",caption:`${Aa} Photo attachment controls are shown; no patient photos are displayed.`}},"body-mapping":{eyebrow:"EMRMedSpa · Treatment-area body mapping",title:"Mark the area alongside the treatment note.",intro:"Named treatment areas provide visual context for the clinical documentation your team is recording.",overviewTitle:"Give the note a visual reference.",overviewBody:"The body map lets clinicians mark treatment areas within the note. It supports the written record with a visual reference to the area involved in the visit.",bullets:["Choose the relevant named treatment areas.","Keep the map beside the treatment documentation.","Review marked areas with the written clinical note."],workflowSteps:[{title:"Open the treatment note",body:"Start with the clinical record for the visit."},{title:"Mark the area",body:"Select the named region relevant to the treatment."},{title:"Review in context",body:"Check the visual reference alongside the procedure details and written note."}],setup:{title:"Walk through the map with the clinical team.",body:"We demonstrate the treatment-area workflow during the agreed clinical setup. Your clinicians determine what needs to be documented."},relatedIds:["clinical-notes","photos","templates"],visual:{kind:"product",recommendedAsset:"/assets/product/emr-body-map-marked.png",title:"Named treatment areas",de
64scription:"A marked treatment-area map illustrates the visual reference used within the clinical note.",caption:`${Aa} Markings are fictional and do not represent an injection plan.`}},inventory:{eyebrow:"EMRMedSpa · Inventory",title:"Keep stock details close to the clinical work.",intro:"Review product quantities, batches and stock alerts in the inventory workspace.",overviewTitle:"Know which stock records need attention.",overviewBody:"The inventory view brings product quantities, stock status and configured thresholds into one place. Your team can inspect the list and move into batch and alert views for a closer look.",bullets:["Search the product list and review recorded quantities.","Inspect stock status and low-stock indicators.","Move between stock, batches and alerts."],workflowSteps:[{title:"Find the product",body:"Locate the stock record your team needs to review."},{title:"Check the detail",body:"Inspect the recorded quantity, stock status and relevant batch information."},{title:"Review the alerts",body:"Use the configured thresholds and alert views to identify records needing attention."}],setup:{title:"Begin with the clinicâs product information.",body:"We review the agreed inventory setup with your team. The clinic provides the product details, opening quantities and thresholds it wants to maintain."},relatedIds:["clinical-notes","payments","protocols"],visual:{kind:"product",recommendedAsset:"/assets/product/emr-inventory.png",title:"Products, quantities and stock status",description:"An inventory list showing stock values, status and configured thresholds.",caption:`${Aa} Quantities and costs are illustrative.`}},protocols:{eyebrow:"EMRMedSpa · Treatment protocols",title:"Find the protocol for the treatment in front of you.",intro:"Search the clinical protocol library by name, modality or indication, then open or print the guidance your team needs.",overviewTitle:"Clinical guidance in the working day.",overviewBody:"Protocol cards organize the guidance by treatment and modality. Licensed providers can find the relevant document without working through unrelated files. The clinic decides which guidance applies to its care and review process.",bullets:["Search protocols by name, modality or indication.","Filter by modality and open the relevant protocol.","Print guidance for provider use and keep it within the clinical workflow."],workflowSteps:[{title:"Find the treatment",body:"Search for the protocol or narrow the library by modality."},{title:"Open the guidance",body:"Review the relevant protocol and print it when needed for provider use."},{title:"Apply clinical judgment",body:"The licensed provider follows the clinicâs approved process for the actual patient and visit."}],setup:{title:"Software for your oversight process.",body:"We discuss protocol content and access needs during clinical setup. Your clinic provides the clinical oversight; access to the software does not include medical direction services."},relatedIds:["templates","consents","clinical-notes"],visual:{kind:"workflow",recommendedAsset:null,title:"Find, open and review the protocol",description:"A treatment search leads to its clinical protocol and review by the licensed provider.",caption:"Illustrated protocol workflow. Guidance is for licensed providers, not patient distribution."}},payments:{eyebrow:"Platform · Payments and Tap to Pay",title:"Collect the payment. Keep the record in view.",intro:"Review clinical payment records and use the connected mobile payment setup for contactless collection.",overviewTitle:"From the amount due to the recorded payment.",overviewBody:"The clinical workspace shows orders, invoices and payment statuses. For in-person collection, Tap to Pay in the supported mobile app accepts compatible contactless cards and digital wallets through the connected payment provider.",bullets:["Review order, invoice and payment details in the clinical workspace.","Collect contactless payments with an eligible phone and supported provider setup.","Check the payment confirmation and transaction record before closing the task."],workflowSteps:[{title:"Review the amount",body:"Confirm the patient, items and amount before collecting payment."}
64,{title:"Choose the payment route",body:"Use the connected checkout or supported mobile Tap to Pay setup for the transaction."},{title:"Confirm the result",body:"Check the completed payment and its record. A pending payment still needs attention."}],setup:{title:"We check the payment connection and mobile requirements.",body:"Tap to Pay depends on the processor, device, country and mobile app. We review compatibility during setup. Payment processing and usage charges remain separate."},relatedIds:["deposits-reminders","packages","gift-cards"],visual:{kind:"product",recommendedAsset:"/assets/product/emr-payments.png",title:"Payment records in the clinical workspace",description:"The payments view shows order records and displayed payment statuses.",caption:"Product interface illustration · sample data. This view shows records, not the mobile Tap to Pay screen."}}};function Yr(i){return Object.prototype.hasOwnProperty.call(Mu,i)?Mu[i]:void 0}var Ui=` 65:host{display:block;box-sizing:border-box;color:#202023}.email-document{margin:0!important;padding:0!important;width:100%!important;min-width:0!important;background:transparent!important;overflow:visible!important}.email-document>*{max-width:100%!important;width:100%!important}.email-document table{max-width:100%!important}.email-document table[width="600"]{width:100%!important}.email-document td{overflow-wrap:anywhere}.email-document img{max-width:100%;height:auto}.email-document .pad{padding:26px 24px!important}.email-document [data-inert-email-action]{cursor:default;max-width:100%;box-sizing:border-box}.email-document [data-small-type]{font-size:12px!important;line-height:1.6!important}.email-document h1,.email-document .h1{font-size:32px!important;line-height:1.16!important}.email-document p{overflow-wrap:anywhere}@media(max-width:620px){.email-document .pad{padding:22px 18px!important}}`,Xt=["@media(max-width:620px){.shell{width:100%!important;max-width:100%!important}.shell td,.shell div,.shell p,.shell h1{overflow-wrap:anywhere;word-break:break-word}.pad{padding:26px 20px!important}.h1{font-size:32px!important;line-height:1.15!important}.logo{width:100px!important}}"+Ui,` 66@import url('https://fonts.googleapis.com/css2?family=Fraunces:opsz,[email protected],400;9..144,600&family=Newsreader:[email protected]&family=IBM+Plex+Mono:wght@500&display=swap'); 67.email-document,table,td,a{-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;} 68table,td{mso-table-lspace:0pt;mso-table-rspace:0pt;} 69.email-document{margin:0;padding:0;width:100%!important;background:#F3EDE1;} 70a{color:#193377;} 71@media screen and (max-width:600px){ 72 .ev-container{width:100%!important;max-width:100%!important;} 73 .ev-pad{padding-left:22px!important;padding-right:22px!important;} 74 .ev-div{padding-left:22px!important;padding-right:22px!important;} 75 .ev-logo{padding-top:22px!important;} 76 .ev-btn{display:block!important;width:100%!important;text-align:center!important;} 77 h1,h2,h3{line-height:1.25!important;} 78} 79`+Ui,` 80@import url('https://fonts.googleapis.com/css2?family=Cormorant+Garamond:wght@500;600&family=Jost:wght@300;400;500&display=swap'); 81:root { color-scheme: light only; supported-color-schemes: light only; } 82:host, .email-document { margin:0 !important; padding:0 !important; background-color:#F1EBE0; } 83.email-document { width:100% !important; } 84.email-document, table, td, a { -webkit-text-size-adjust:100%; -ms-text-size-adjust:100%; } 85table, td { mso-table-lspace:0pt; mso-table-rspace:0pt; border-collapse:collapse; } 86img { -ms-interpolation-mode:bicubic; border:0; height:auto; line-height:100%; outline:none; text-decoration:none; display:block; } 87a { text-decoration:none; } 88[data-ogsc] .lock-ivory { background-color:#FAF7F2 !important; } 89[data-ogsc] .lock-ink { background-color:#0B0B0B !important; } 90[data-ogsc] .lock-sand { background-color:#F1EBE0 !important; } 91[data-ogsc] .t-ink { color:#161616 !important; } 92[data-ogsc] .t-ivory { color:#FAF7F2 !important; } 93[data-ogsc] .t-gold { color:#C6A35A !important; } 94[data-ogsc] .t-goldink { color:#7E6228 !important; } 95[data-ogsc] .t-taupe { color:#6B635A !important; } 96[data-ogsc] .t-footmute { color:#8A8177 !important; } 97@media only screen and (max-width:480px) { 98 .email-wrap { width:100% !important; max-width:100% !important; } 99 .email-col { display:block !important; width:100% !important; max-width:100% !important; padding:0 0 18px 0 !important; box-sizing:border-box !important; } 100 .email-pad { padding-left:22px !important; padding-right:22px !important; } 101 .email-h1 { font-size:28px !important; line-height:34px !important; } 102 .email-btn { width:100% !important; } 103 .email-stackrow { display:block !important; width:100% !important; padding:0 0 10px 0 !important; } 104} 105`+Ui,` 106@import url('https://fonts.googleapis.com/css2?family=Cormorant+Garamond:wght@500;600&family=Jost:wght@300;400;500&display=swap'); 107:root { color-scheme: light only; supported-color-schemes: light only; } 108:host, .email-document { margin:0 !important; padding:0 !important; background-color:#F1EBE0; } 109.email-document { width:100% !important; } 110.email-document, table, td, a { -webkit-text-size-adjust:100%; -ms-text-size-adjust:100%; } 111table, td { mso-table-lspace:0pt; mso-table-rspace:0pt; border-collapse:collapse; } 112img { -ms-interpolation-mode:bicubic; border:0; height:auto; line-height:100%; outline:none; text-decoration:none; display:block; } 113a { text-decoration:none; } 114[data-ogsc] .lock-ivory { background-color:#FAF7F2 !important; } 115[data-ogsc] .lock-ink { background-color:#0B0B0B !important; } 116[data-ogsc] .lock-sand { background-color:#F1EBE0 !important; } 117[data-ogsc] .t-ink { color:#161616 !important; } 118[data-ogsc] .t-ivory { color:#FAF7F2 !important; } 119[data-ogsc] .t-gold { color:#C6A35A !important; } 120[data-ogsc] .t-goldink { color:#7E6228 !important; } 121[data-ogsc] .t-taupe { color:#6B635A !important; } 122[data-ogsc] .t-footmute { color:#8A8177 !important; } 123@media only screen and (max-width:480px) { 124 .email-wrap { width:100% !important; max-width:100% !important; } 125 .email-col { display:block !important; width:100% !important; max-width:100% !important; padding:0 0 18px 0 !important; box-sizing:border-box !important; } 126 .email-pad { padding-left:22px !important; padding-right:22px !important; } 127 .email-h1 { font-size:26px !important; line-height:32px !important; } 128 .email-btn { width:100% !important; } 129 .email-stackrow { display:block !important; width:100% !important; padding:0 0 10px 0 !important; } 130} 131`+Ui,"@import url('https://fonts.googleapis.com/css2?family=Cormorant+Garamond:wght@300;400;500;600&family=Jost:wght@300;400;500&display=swap');"+Ui,` 132 133 134 135 136 137*{box-sizing:border-box;margin:0;padding:0} 138.email-document{background:transparent;font-family:'IT';color:#141414;-webkit-font-smoothing:antialiased} 139.card{background:#fff;border:1px solid #E7EBEF;border-radius:18px;overflow:hidden; 140 box-shadow:0 1px 2px rgba(16,32,42,.04),0 12px 24px rgba(16,32,42,.06),0 40px 72px rgba(16,32,42,.10)} 141.pad{padding:22px 24px} 142.hd{display:flex;align-items:center;justify-content:space-between;gap:12px; 143 padding:18px 24px;border-bottom:1px solid #F1F4F6} 144.t{font-family:'ID';font-weight:600;font-size:19px;letter-spacing:-.012em} 145.sub{font-size:13px;color:#515A66;margin-top:3px} 146.lbl{font-family:'IT';font-weight:600;font-size:10.5px;letter-spacing:.11em;text-transform:uppercase;color:#515A66} 147.chip{font-size:11.5px;font-weight:600;padding:5px 10px;border-radius:999px;white-space:nowrap} 148.chip.g{background:#E7F7F1;color:#0B7A55} 149.chip.t{background:#EAF7FB;color:#1F7286} 150.chip.a{background:#FEF3E2;color:#B45309} 151.chip.n{background:#F1F4F6;color:#475467} 152.row{display:flex;align-items:center;gap:12px} 153.av{width:34px;height:34px;border-radius:50%;background:#EAF7FB;color:#1F7286; 154 font-weight:600;font-size:13px;display:flex;align-items:center;justify-content:center;flex:none} 155.rule{height:1px;background:#F1F4F6} 156.btn{background:#141414;color:#fff;font-weight:600;font-size:14px;padding:13px 18px; 157 border-radius:11px;text-align:center} 158.btn.t{background:#1F7286} 159.email-document{width:640px;padding:34px} 160@font-face { 161 font-family: 'IT'; 162 font-style: normal; 163 font-weight: 400; 164 font-display: swap;
165 src: url(https://fonts.gstatic.com/s/inter/v20/UcCO3FwrK3iLTeHuS_nVMrMxCp50SjIw2boKoduKmMEVuLyfMZg.ttf) format('truetype'); 166} 167@font-face { 168 font-family: 'IT'; 169 font-style: normal; 170 font-weight: 500; 171 font-display: swap; 172 src: url(https://fonts.gstatic.com/s/inter/v20/UcCO3FwrK3iLTeHuS_nVMrMxCp50SjIw2boKoduKmMEVuI6fMZg.ttf) format('truetype'); 173} 174@font-face { 175 font-family: 'IT'; 176 font-style: normal; 177 font-weight: 600; 178 font-display: swap; 179 src: url(https://fonts.gstatic.com/s/inter/v20/UcCO3FwrK3iLTeHuS_nVMrMxCp50SjIw2boKoduKmMEVuGKYMZg.ttf) format('truetype'); 180} 181 182@font-face { 183 font-family: 'ID'; 184 font-style: normal; 185 font-weight: 400; 186 font-display: swap; 187 src: url(https://fonts.gstatic.com/s/inter/v20/UcCO3FwrK3iLTeHuS_nVMrMxCp50SjIw2boKoduKmMEVuLyfMZg.ttf) format('truetype'); 188} 189@font-face { 190 font-family: 'ID'; 191 font-style: normal; 192 font-weight: 500; 193 font-display: swap; 194 src: url(https://fonts.gstatic.com/s/inter/v20/UcCO3FwrK3iLTeHuS_nVMrMxCp50SjIw2boKoduKmMEVuI6fMZg.ttf) format('truetype'); 195} 196@font-face { 197 font-family: 'ID'; 198 font-style: normal; 199 font-weight: 600; 200 font-display: swap; 201 src: url(https://fonts.gstatic.com/s/inter/v20/UcCO3FwrK3iLTeHuS_nVMrMxCp50SjIw2boKoduKmMEVuGKYMZg.ttf) format('truetype'); 202} 203`+Ui],li={confirmation:{brand:"Sunshine Mobile Wellness",title:"Your Sunshine visit is confirmed",html:`<table role="presentation" class="shell" width="600" cellspacing="0" cellpadding="0" style="width:600px;max-width:600px;background:#fbf7ef;border-radius:22px;overflow:hidden;box-shadow:0 16px 42px rgba(26,46,53,.12);"> 204<tbody><tr><td align="center" style="padding:24px 24px 18px;border-bottom:1px solid #d8e7e4;"><img class="logo" src="https://assets.cdn.filesafe.space/I4MguH1KxfjLUrrcWbmh/media/f971ba45-1ebc-40e2-b8ed-4733b98e027b.png" width="108" alt="Sunshine Mobile Wellness" style="display:block;width:108px;height:auto;border:0;"></td></tr> 205<tr><td class="pad" style="padding:42px 48px 34px;"> 206<div style="font:600 11px/1.4 Arial,sans-serif;letter-spacing:.17em;text-transform:uppercase;color:#1c5563;" data-small-type="">Appointment confirmed</div> 207<h1 class="h1" style="margin:12px 0 16px;font:500 38px/1.15 Georgia,'Times New Roman',serif;color:#1a2e35;">Your visit is on the calendar.</h1> 208<p style="margin:0;font:400 16px/1.7 Arial,sans-serif;color:#324a50;">Hi Jordan, your Sunshine Mobile Wellness appointment is confirmed. We are a mobile practice, and Dotty will confirm the service location connected with your booking.</p> 209 210 <table role="presentation" width="100%" cellspacing="0" cellpadding="0" style="margin:24px 0;background:#eaf3f2;border:1px solid #c9dedc;border-radius:16px;"> 211 <tbody><tr><td style="padding:22px 24px;"> 212 <div style="font:600 11px/1.4 Arial,sans-serif;letter-spacing:.16em;text-transform:uppercase;color:#1c5563;" data-small-type="">Your visit</div> 213 <div style="padding-top:7px;font:500 24px/1.25 Georgia,'Times New Roman',serif;color:#1a2e35;">Consultation</div> 214 <table role="presentation" width="100%" cellspacing="0" cellpadding="0" style="margin-top:16px;"> 215 <tbody><tr> 216 <td width="50%" style="padding-right:10px;font:600 11px/1.4 Arial,sans-serif;letter-spacing:.12em;text-transform:uppercase;color:#1c5563;" data-small-type="">Date<br><span style="font:500 17px/1.5 Georgia,'Times New Roman',serif;letter-spacing:0;text-transform:none;color:#1a2e35;">Tuesday, October 20</span></td> 217 <td width="50%" style="padding-left:10px;font:600 11px/1.4 Arial,sans-serif;letter-spacing:.12em;text-transform:uppercase;color:#1c5563;" data-small-type="">Time<br><span style="font:500 17px/1.5 Georgia,'Times New Roman',serif;letter-spacing:0;text-transform:none;color:#1a2e35;">10:30am</span></td> 218 </tr> 219 </tbody></table> 220 </td></tr> 221 </tbody></table> 222 223<p style="margin:24px 0 0;font:400 15px/1.65 Arial,sans-serif;color:#425c62;">Please keep an eye on your email and phone for any required forms or location coordination. Do not send medical history or other health details by ordinary text or email.</p> 224<table role="presentation" width="100%" cellspacing="0" cellpadding="0" style="margin-top:30px;border-top:1px solid #d8e7e4;"><tbody><tr><td style="padding-top:22px;"> 225<div style="font:500 18px/1.4 Georgia,'Times New Roman',serif;
225color:#1a2e35;">Dotty Sunshine, RN, BSN, CHC, CYT</div> 226<div style="padding-top:4px;font:600 11px/1.5 Arial,sans-serif;letter-spacing:.13em;text-transform:uppercase;color:#1c5563;" data-small-type="">Revive ⢠Renew ⢠Align</div> 227<div style="padding-top:8px;font:400 14px/1.6 Arial,sans-serif;color:#526b70;">Personalized. Elevated. Delivered.<br>Mobile concierge service along the Orange County coast.</div> 228<div style="padding-top:12px;font:400 14px/1.6 Arial,sans-serif;"><span style="color:#1c5563;text-decoration:underline;" data-inert-email-action="">(949) 569-5338</span> · <span style="color:#1c5563;text-decoration:underline;" data-inert-email-action="">sunshinemobilewellness.com</span></div> 229</td></tr></tbody></table> 230</td></tr> 231<tr><td align="center" style="padding:20px 24px;background:#f1e7d6;font:400 12px/1.6 Arial,sans-serif;color:#5d7479;"> 232© 2026 Sunshine Mobile Wellness. <span style="color:#5d7479;text-decoration:underline;" data-inert-email-action="">Privacy and terms</span> 233</td></tr> 234</tbody></table>`,css:Xt[0],caption:"Original clinic email design · fictional sample details.",kind:"authored-email-template"},reminder:{brand:"Sunshine Mobile Wellness",title:"A reminder for your Sunshine visit tomorrow",html:`<table role="presentation" class="shell" width="600" cellspacing="0" cellpadding="0" style="width:600px;max-width:600px;background:#fbf7ef;border-radius:22px;overflow:hidden;box-shadow:0 16px 42px rgba(26,46,53,.12);"> 235<tbody><tr><td align="center" style="padding:24px 24px 18px;border-bottom:1px solid #d8e7e4;"><img class="logo" src="https://assets.cdn.filesafe.space/I4MguH1KxfjLUrrcWbmh/media/f971ba45-1ebc-40e2-b8ed-4733b98e027b.png" width="108" alt="Sunshine Mobile Wellness" style="display:block;width:108px;height:auto;border:0;"></td></tr> 236<tr><td class="pad" style="padding:42px 48px 34px;"> 237<div style="font:600 11px/1.4 Arial,sans-serif;letter-spacing:.17em;text-transform:uppercase;color:#1c5563;" data-small-type="">A calm reminder</div> 238<h1 class="h1" style="margin:12px 0 16px;font:500 38px/1.15 Georgia,'Times New Roman',serif;color:#1a2e35;">Weâll see you tomorrow.</h1> 239<p style="margin:0;font:400 16px/1.7 Arial,sans-serif;color:#324a50;">Hi Jordan, this is a reminder that your Sunshine Mobile Wellness visit is scheduled for tomorrow.</p> 240 241 <table role="presentation" width="100%" cellspacing="0" cellpadding="0" style="margin:24px 0;background:#eaf3f2;border:1px solid #c9dedc;border-radius:16px;"> 242 <tbody><tr><td style="padding:22px 24px;"> 243 <div style="font:600 11px/1.4 Arial,sans-serif;letter-spacing:.16em;text-transform:uppercase;color:#1c5563;" data-small-type="">Your visit</div> 244 <div style="padding-top:7px;font:500 24px/1.25 Georgia,'Times New Roman',serif;color:#1a2e35;">Consultation</div> 245 <table role="presentation" width="100%" cellspacing="0" cellpadding="0" style="margin-top:16px;"> 246 <tbody><tr> 247 <td width="50%" style="padding-right:10px;font:600 11px/1.4 Arial,sans-serif;letter-spacing:.12em;text-transform:uppercase;color:#1c5563;" data-small-type="">Date<br><span style="font:500 17px/1.5 Georgia,'Times New Roman',serif;letter-spacing:0;text-transform:none;color:#1a2e35;">Tuesday, October 20</span></td> 248 <td width="50%" style="padding-left:10px;font:600 11px/1.4 Arial,sans-serif;letter-spacing:.12em;text-transform:uppercase;color:#1c5563;" data-small-type="">Time<br><span style="font:500 17px/1.5 Georgia,'Times New Roman',serif;letter-spacing:0;text-transform:none;color:#1a2e35;">10:30am</span></td> 249 </tr> 250 </tbody></table> 251 </td></tr> 252 </tbody></table> 253 254<p style="margin:24px 0 0;font:400 15px/1.65 Arial,sans-serif;color:#425c62;">Because Sunshine comes to you, please make sure the agreed service location is accessible and that Dotty can reach you at the mobile number on your booking.</p> 255<table role="presentation" width="100%" cellspacing="0" cellpadding="0" style="margin-top:30px;border-top:1px solid #d8e7e4;"><tbody><tr><td style="padding-top:22px;"> 256<div style="font:500 18px/1.4 Georgia,'Times New Roman',serif;
256color:#1a2e35;">Dotty Sunshine, RN, BSN, CHC, CYT</div> 257<div style="padding-top:4px;font:600 11px/1.5 Arial,sans-serif;letter-spacing:.13em;text-transform:uppercase;color:#1c5563;" data-small-type="">Revive ⢠Renew ⢠Align</div> 258<div style="padding-top:8px;font:400 14px/1.6 Arial,sans-serif;color:#526b70;">Personalized. Elevated. Delivered.<br>Mobile concierge service along the Orange County coast.</div> 259<div style="padding-top:12px;font:400 14px/1.6 Arial,sans-serif;"><span style="color:#1c5563;text-decoration:underline;" data-inert-email-action="">(949) 569-5338</span> · <span style="color:#1c5563;text-decoration:underline;" data-inert-email-action="">sunshinemobilewellness.com</span></div> 260</td></tr></tbody></table> 261</td></tr> 262<tr><td align="center" style="padding:20px 24px;background:#f1e7d6;font:400 12px/1.6 Arial,sans-serif;color:#5d7479;"> 263© 2026 Sunshine Mobile Wellness. <span style="color:#5d7479;text-decoration:underline;" data-inert-email-action="">Privacy and terms</span> 264</td></tr> 265</tbody></table>`,css:Xt[0],caption:"Original clinic email design · fictional sample details.",kind:"authored-email-template"},"sunshine-birthday":{brand:"Sunshine Mobile Wellness",title:"A birthday wish from Sunshine",html:`<table role="presentation" class="shell" width="600" cellspacing="0" cellpadding="0" style="width:600px;max-width:600px;background:#fbf7ef;border-radius:22px;overflow:hidden;box-shadow:0 16px 42px rgba(26,46,53,.12);"> 266<tbody><tr><td align="center" style="padding:24px 24px 18px;border-bottom:1px solid #d8e7e4;"><img class="logo" src="https://assets.cdn.filesafe.space/I4MguH1KxfjLUrrcWbmh/media/f971ba45-1ebc-40e2-b8ed-4733b98e027b.png" width="108" alt="Sunshine Mobile Wellness" style="display:block;width:108px;height:auto;border:0;"></td></tr> 267<tr><td class="pad" style="padding:42px 48px 34px;"> 268<div style="font:600 11px/1.4 Arial,sans-serif;letter-spacing:.17em;text-transform:uppercase;color:#1c5563;" data-small-type="">A note from Sunshine</div> 269<h1 class="h1" style="margin:12px 0 16px;font:500 38px/1.15 Georgia,'Times New Roman',serif;color:#1a2e35;">Happy birthday, Jordan.</h1> 270<p style="margin:0;font:400 16px/1.7 Arial,sans-serif;color:#324a50;">Wishing you a year with more room to restore, reconnect, and come back to yourself. When you are ready for your next visit, the current Sunshine booking menu is here.</p> 271 272<table role="presentation" cellspacing="0" cellpadding="0" style="margin:26px 0 6px;"><tbody><tr><td bgcolor="#1c5563" style="border-radius:999px;"><span style="display:inline-block;padding:14px 24px;font:600 12px/1 Arial,sans-serif;letter-spacing:.12em;text-transform:uppercase;text-decoration:none;color:#fbf7ef;" data-inert-email-action="">Explore available visits</span></td></tr></tbody></table> 273<p style="margin:24px 0 0;font:400 15px/1.65 Arial,sans-serif;color:#425c62;">Every service is personalized by Dotty Sunshine, RN, BSN, CHC, CYT, and delivered through a mobile concierge experience along the Orange County coast.</p> 274<table role="presentation" width="100%" cellspacing="0" cellpadding="0" style="margin-top:30px;border-top:1px solid #d8e7e4;"><tbody><tr><td style="padding-top:22px;"> 275<div style="font:500 18px/1.4 Georgia,'Times New Roman',serif;color:#1a2e35;">Dotty Sunshine, RN, BSN, CHC, CYT</div> 276<div style="padding-top:4px;font:600 11px/1.5 Arial,sans-serif;letter-spacing:.13em;text-transform:uppercase;color:#1c5563;" data-small-type="">Revive ⢠Renew ⢠Align</div> 277<div style="padding-top:8px;font:400 14px/1.6 Arial,sans-serif;color:#526b70;">Personalized. Elevated. Delivered.<br>Mobile concierge service along the Orange County coast.</div> 278<div style="padding-top:12px;font:400 14px/1.6 Arial,sans-serif;"><span style="color:#1c5563;text-decoration:underline;" data-inert-email-action="">(949) 569-5338</span> · <span style="color:#1c5563;text-decoration:underline;" data-inert-email-action="">sunshinemobilewellness.com</span></div> 279</td></tr></tbody></table> 280</td></tr> 281<tr><td align="center" style="padding:20px 24px;background:#f1e7d6;font:400 12px/1.6 Arial,sans-serif;color:#5d7479;"> 282© 2026 Sunshine Mobile Wellness. <span style="color:#5d7479;text-decoration:underline;" data-inert-email-action="">Privacy and terms</span><br><span style="color:#5d7479;text-decoration:underline;" data-inert-email-action="">Unsubscribe</span> 283</td></tr> 284</tbody></table>`,css:Xt[0],caption:"Original clinic email design · fictional sample details.",kind:"authored-email-template"},"sunshine-rebook":{brand:"Sunshine Mobile Wellness",title:"Your next Sunshine visit, whenever you are ready",html:`<table role="presentation" class="shell" width="600" cellspacing="0" cellpadding="0" style="width:600px;max-width:600px;background:#fbf7ef;border-radius:22px;overflow:hidden;box-shadow:0 16px 42px rgba(26,46,53,.12);"> 285<tbody><tr><td align="center" style="padding:24px 24px 18px;border-bottom:1px solid #d8e7e4;"><img class="logo" src="https://assets.cdn.filesafe.space/I4MguH1KxfjLUrrcWbmh/media/f971ba45-1ebc-40e2-b8ed-4733b98e027b.png" width="108" alt="Sunshine Mobile Wellness" style="display:block;width:108px;height:auto;border:0;"></td></tr> 286<tr><td class="pad" style="padding:42px 48px 34px;"> 287<div style="font:600 11px/1.4 Arial,sans-serif;letter-spacing:.17em;text-transform:uppercase;color:#1c5563;" data-small-type="">Revive ⢠Renew ⢠Align</div> 288<h1 class="h1" style="margin:12px 0 16px;font:500 38px/1.15 Georgia,'Times New Roman',serif;
288color:#1a2e35;">Keep your Sunshine rhythm going.</h1> 289<p style="margin:0;font:400 16px/1.7 Arial,sans-serif;color:#324a50;">Hi Jordan, thank you again for choosing Sunshine Mobile Wellness. When another visit fits your schedule, the current IV booking menu is ready for you.</p> 290 291<table role="presentation" cellspacing="0" cellpadding="0" style="margin:26px 0 6px;"><tbody><tr><td bgcolor="#1c5563" style="border-radius:999px;"><span style="display:inline-block;padding:14px 24px;font:600 12px/1 Arial,sans-serif;letter-spacing:.12em;text-transform:uppercase;text-decoration:none;color:#fbf7ef;" data-inert-email-action="">Choose your next visit</span></td></tr></tbody></table> 292<p style="margin:24px 0 0;font:400 15px/1.65 Arial,sans-serif;color:#425c62;">Each visit remains personalized by Dotty Sunshine, RN, BSN, CHC, CYT. If you are unsure which calendar to choose, call or text (949) 569-5338 without sending health details by ordinary text.</p> 293<table role="presentation" width="100%" cellspacing="0" cellpadding="0" style="margin-top:30px;border-top:1px solid #d8e7e4;"><tbody><tr><td style="padding-top:22px;"> 294<div style="font:500 18px/1.4 Georgia,'Times New Roman',serif;color:#1a2e35;">Dotty Sunshine, RN, BSN, CHC, CYT</div> 295<div style="padding-top:4px;font:600 11px/1.5 Arial,sans-serif;letter-spacing:.13em;text-transform:uppercase;color:#1c5563;" data-small-type="">Revive ⢠Renew ⢠Align</div> 296<div style="padding-top:8px;font:400 14px/1.6 Arial,sans-serif;color:#526b70;">Personalized. Elevated. Delivered.<br>Mobile concierge service along the Orange County coast.</div> 297<div style="padding-top:12px;font:400 14px/1.6 Arial,sans-serif;"><span style="color:#1c5563;text-decoration:underline;" data-inert-email-action="">(949) 569-5338</span> · <span style="color:#1c5563;text-decoration:underline;" data-inert-email-action="">sunshinemobilewellness.com</span></div> 298</td></tr></tbody></table> 299</td></tr> 300<tr><td align="center" style="padding:20px 24px;background:#f1e7d6;font:400 12px/1.6 Arial,sans-serif;color:#5d7479;"> 301© 2026 Sunshine Mobile Wellness. <span style="color:#5d7479;text-decoration:underline;" data-inert-email-action="">Privacy and terms</span><br><span style="color:#5d7479;text-decoration:underline;" data-inert-email-action="">Unsubscribe</span> 302</td></tr> 303</tbody></table>`,css:Xt[0],caption:"Original clinic email design · fictional sample details.",kind:"authored-email-template"},winback:{brand:"Sunshine Mobile Wellness",title:"Ready when you are",html:`<table role="presentation" class="shell" width="600" cellspacing="0" cellpadding="0" style="width:600px;max-width:600px;background:#fbf7ef;border-radius:22px;overflow:hidden;box-shadow:0 16px 42px rgba(26,46,53,.12);"> 304<tbody><tr><td align="center" style="padding:24px 24px 18px;border-bottom:1px solid #d8e7e4;"><img class="logo" src="https://assets.cdn.filesafe.space/I4MguH1KxfjLUrrcWbmh/media/f971ba45-1ebc-40e2-b8ed-4733b98e027b.png" width="108" alt="Sunshine Mobile Wellness" style="display:block;width:108px;height:auto;border:0;"></td></tr> 305<tr><td class="pad" style="padding:42px 48px 34px;"> 306<div style="font:600 11px/1.4 Arial,sans-serif;letter-spacing:.17em;text-transform:uppercase;color:#1c5563;" data-small-type="">Revive ⢠Renew ⢠Align</div> 307<h1 class="h1" style="margin:12px 0 16px;font:500 38px/1.15 Georgia,'Times New Roman',serif;color:#1a2e35;">A little space for yourself.</h1> 308<p style="margin:0;font:400 16px/1.7 Arial,sans-serif;color:#324a50;">Hi Jordan, it has been a while since your last Sunshine visit. This is simply a gentle reminder that your mobile wellness routine is here when it fits your life again.</p> 309 310<table role="presentation" cellspacing="0" cellpadding="0" style="margin:26px 0 6px;"><tbody><tr><td bgcolor="#1c5563" style="border-radius:999px;"><span style="display:inline-block;padding:14px 24px;font:600 12px/1 Arial,sans-serif;letter-spacing:.12em;text-transform:uppercase;text-decoration:none;color:#fbf7ef;" data-inert-email-action="">View the booking menu</span></td></tr></tbody></table> 311<p style="margin:24px 0 0;font:400 15px/1.65 Arial,sans-serif;color:#425c62;">If you are unsure which named service to book, call or text (949) 569-5338 and Dotty will help route you without discussing clinical details by ordinary text.</p> 312<table role="presentation" width="100%" cellspacing="0" cellpadding="0" style="margin-top:30px;border-top:1px solid #d8e7e4;"><tbody><tr><td style="padding-top:22px;"> 313<div style="font:500 18px/1.4 Georgia,'Times New Roman',serif;
313color:#1a2e35;">Dotty Sunshine, RN, BSN, CHC, CYT</div> 314<div style="padding-top:4px;font:600 11px/1.5 Arial,sans-serif;letter-spacing:.13em;text-transform:uppercase;color:#1c5563;" data-small-type="">Revive ⢠Renew ⢠Align</div> 315<div style="padding-top:8px;font:400 14px/1.6 Arial,sans-serif;color:#526b70;">Personalized. Elevated. Delivered.<br>Mobile concierge service along the Orange County coast.</div> 316<div style="padding-top:12px;font:400 14px/1.6 Arial,sans-serif;"><span style="color:#1c5563;text-decoration:underline;" data-inert-email-action="">(949) 569-5338</span> · <span style="color:#1c5563;text-decoration:underline;" data-inert-email-action="">sunshinemobilewellness.com</span></div> 317</td></tr></tbody></table> 318</td></tr> 319<tr><td align="center" style="padding:20px 24px;background:#f1e7d6;font:400 12px/1.6 Arial,sans-serif;color:#5d7479;"> 320© 2026 Sunshine Mobile Wellness. <span style="color:#5d7479;text-decoration:underline;" data-inert-email-action="">Privacy and terms</span><br><span style="color:#5d7479;text-decoration:underline;" data-inert-email-action="">Unsubscribe</span> 321</td></tr> 322</tbody></table>`,css:Xt[0],caption:"Original clinic email design · fictional sample details.",kind:"authored-email-template"},"evidence-rebook":{brand:"Evidence MD",title:"Your skin is due for a little upkeep",html:`<table role="presentation" class="ev-container" width="600" cellpadding="0" cellspacing="0" border="0" style="width:600px;max-width:600px;background:#FBF8F1;border-top:3px solid #193377;"> 323<tbody><tr><td align="center" class="ev-logo" style="padding:28px 0 4px 0;"><img src="https://assets.cdn.filesafe.space/5HQ8GjJPsW1oPtfkzdyj/media/c059e9d4-7b69-4574-a670-e6e365f1cc06.png" alt="Evidence MD | Medicine & Aesthetics" width="180" style="display:block;width:180px;max-width:55%;height:auto;margin:0 auto;border:0;outline:none;text-decoration:none;"></td></tr> 324<tr><td class="ev-pad" style="padding:30px 40px 16px 40px;"> 325<div style="font-family:'IBM Plex Mono', 'Courier New', Courier, monospace;font-size:11px;letter-spacing:0.18em;text-transform:uppercase;color:#41508A;" data-small-type="">Portland, Oregon</div> 326<div style="font-family:'Fraunces', Georgia, 'Times New Roman', serif;font-size:23px;font-weight:600;color:#193377;padding-top:7px;">Evidence MD</div> 327</td></tr> 328<tr><td class="ev-div" style="padding:0 40px;"><div style="border-top:1px solid #7C89B8;font-size:0;line-height:0;"> </div></td></tr> 329<tr><td class="ev-pad" style="padding:26px 40px 6px 40px;"> 330 <p style="margin:0 0 16px;font-family:'Newsreader', Georgia, 'Times New Roman', serif;font-size:17px;line-height:1.62;color:#193377;">Hi Jordan,</p> 331 <p style="margin:0 0 16px;font-family:'Newsreader', Georgia, 'Times New Roman', serif;font-size:17px;line-height:1.62;color:#193377;">Skin treatments tend to work best on a steady rhythm. The results from your last visit build and then gradually level off, and a maintenance visit around now helps hold the progress you have already made rather than losing ground between sessions.</p> 332 <p style="margin:0 0 16px;font-family:'Newsreader', Georgia, 'Times New Roman', serif;font-size:17px;line-height:1.62;color:#193377;">If it is a good time, you can reserve a spot below. If you would like to space things differently, your provider is glad to help you find the right interval.</p> 333 <table role="presentation" cellpadding="0" cellspacing="0" border="0" style="margin:6px 0 18px;"><tbody><tr><td bgcolor="#193377" align="center" style="background:#193377;padding:14px 30px;mso-padding-alt:14px 30px;"><span style="display:inline-block;line-height:1;font-family:'IBM Plex Mono', 'Courier New', Courier, monospace;font-size:13px;letter-spacing:0.06em;color:#FBF8F1;text-decoration:none;text-transform:uppercase;" data-inert-email-action="">Book your maintenance visit</span></td></tr></tbody></table> 334 <p style="margin:0 0 16px;font-family:'Newsreader', Georgia, 'Times New Roman', serif;font-size:17px;line-height:1.62;color:#193377;">Warmly,<br>Evidence MD</p> 335</td></tr> 336<tr><td class="ev-div" style="padding:10px 40px 0 40px;"><div style="border-top:1px solid #7C89B8;font-size:0;line-height:0;"> </div></td></tr> 337<tr><td class="ev-pad" style="padding:18px 40px 32px 40px;
337font-family:'IBM Plex Mono', 'Courier New', Courier, monospace;font-size:11px;line-height:1.75;color:#565D74;" data-small-type=""> 338Evidence MD<br> 3394310 N Interstate Ave, Suite 100, Portland, OR 97217<br> 340[email protected]<br><br> 341You are receiving this because you are a patient of Evidence MD.<br> 342Unsubscribe 343</td></tr> 344</tbody></table>`,css:Xt[1],caption:"Original clinic email design · fictional sample details.",kind:"authored-email-template"},"kc-birthday":{brand:"KC Aesthetics",title:"Happy birthday from KC Aesthetics",html:`<table role="presentation" class="email-wrap lock-ivory" width="620" cellpadding="0" cellspacing="0" border="0" bgcolor="#FAF7F2" style="width:620px;max-width:620px;background-color:#FAF7F2;border:1px solid #E2D9C8;"> 345 346 347 348 <tbody><tr> 349 <td align="center" class="lock-ink" bgcolor="#0B0B0B" style="background-color:#0B0B0B;padding:18px 20px 16px 20px;"> 350 <img src="https://assets.cdn.filesafe.space/GDWTEWJjsqeKuUKlB9Ku/media/d22c4aac-1c09-49fe-a403-c3372a1f61f9.png" width="112" alt="KC Aesthetics" style="display:block;width:112px;max-width:112px;height:auto;border:0;outline:none;text-decoration:none;margin:0 auto;"> 351 <div class="t-gold" style="font-family:'Jost','Helvetica Neue',Arial,sans-serif;font-weight:400;font-size:9px;line-height:13px;color:#C6A35A;letter-spacing:0.22em;text-transform:uppercase;padding-top:7px;" data-small-type="">Because you deserve the best</div> 352 </td> 353 </tr> 354 355 356 <tr> 357 <td class="email-pad" align="center" style="padding:44px 36px 0 36px;"> 358 <div class="t-goldink" style="font-family:'Jost','Helvetica Neue',Arial,sans-serif;font-weight:500;font-size:11px;line-height:16px;color:#7E6228;letter-spacing:0.3em;text-transform:uppercase;" data-small-type="">A note from Kenia</div> 359 <div class="email-h1 t-ink" style="font-family:'Cormorant Garamond',Georgia,'Times New Roman',serif;font-weight:500;font-size:36px;line-height:44px;color:#161616;padding-top:16px;">Happy birthday, Jordan.</div> 360 </td> 361 </tr> 362 363 364 <tr> 365 <td class="email-pad" align="center" style="padding:22px 36px 0 36px;"> 366 <table role="presentation" cellpadding="0" cellspacing="0" border="0" style="margin:0 auto;"> 367 <tbody><tr> 368 <td width="60" height="1" style="width:60px;height:1px;font-size:1px;line-height:1px;border-top:1px solid #7E6228;" data-small-type=""> </td> 369 <td style="padding:0 10px;font-family:Georgia,'Times New Roman',serif;font-size:13px;line-height:13px;color:#7E6228;">â</td> 370 <td width="60" height="1" style="width:60px;height:1px;font-size:1px;line-height:1px;border-top:1px solid #7E6228;" data-small-type=""> </td> 371 </tr> 372 </tbody></table> 373 </td> 374 </tr> 375 376 377 <tr> 378 <td class="email-pad t-taupe" align="center" style="padding:26px 46px 0 46px;font-family:'Jost','Helvetica Neue',Arial,sans-serif;font-weight:300;font-size:17px;line-height:29px;color:#6B635A;"> 379 There is no offer attached to this email. Kenia simply wanted to say she hopes today treats you well, and that she is glad you are one of her clients. 380 </td> 381 </tr> 382 383 384 <tr> 385 <td class="email-pad" style="padding:32px 36px 0 36px;"> 386 <table role="presentation" width="100%" cellpadding="0" cellspacing="0" border="0" bgcolor="#F1EBE0" class="lock-sand" style="background-color:#F1EBE0;border-left:3px solid #C6A35A;"> 387 <tbody><tr> 388 <td style="padding:24px 26px 24px 23px;"> 389 <div class="t-goldink" style="font-family:'Jost','Helvetica Neue',Arial,sans-serif;font-weight:500;font-size:10px;line-height:14px;color:#7E6228;letter-spacing:0.26em;text-transform:uppercase;" data-small-type="">In her words</div> 390 <div class="t-ink" style="font-family:'Cormorant Garamond',Georgia,'Times New Roman',serif;font-weight:500;font-size:23px;line-height:34px;color:#161616;padding-top:12px;"> 391 Looking after yourself is not vanity. It is one of the ways you tell yourself you matter. Because you deserve the best. 392 </div> 393 <div class="t-taupe" style="font-family:'Jost','Helvetica Neue',Arial,sans-serif;font-weight:400;font-size:11px;line-height:16px;color:#6B635A;letter-spacing:0.24em;text-transform:uppercase;padding-top:16px;" data-small-type=""> 394 Kenia Carvalho, Aesthetic RN 395 </div> 396 </td> 397 </tr> 398 </tbody></table> 399 </td> 400 </tr> 401 402 403 <tr> 404 <td class="email-pad" style="padding:30px 36px 0 36px;"> 405 <table role="presentation" width="100%" cellpadding="0" cellspacing="0" border="0"> 406 <tbody><tr><td height="1" style="height:1px;font-size:1px;line-height:1px;border-top:1px dashed #CFC3AC;" data-small-type=""> </td></tr> 407 </tbody></table> 408 </td> 409 </tr> 410 411 412 <tr> 413 <td class="email-pad t-taupe" align="center" style="padding:26px 46px 0 46px;font-family:'Jost','Helvetica Neue',Arial,sans-serif;font-weight:300;font-size:16px;line-height:26px;color:#6B635A;"> 414 If you have been meaning to book something in for yourself, the calendar is below whenever you want it. And if you would rather just have the birthday
414wish, that is perfect too. 415 </td> 416 </tr> 417 418 419 <tr> 420 <td class="email-pad" align="center" style="padding:28px 36px 0 36px;"> 421 422 423 <table role="presentation" cellpadding="0" cellspacing="0" border="0" class="email-btn" style="margin:0 auto;"> 424 <tbody><tr> 425 <td align="center" bgcolor="#C6A35A" style="background-color:#C6A35A;border-radius:999px;"> 426 <span style="display:inline-block;padding:15px 38px;font-family:'Jost','Helvetica Neue',Arial,sans-serif;font-weight:500;font-size:12px;line-height:18px;letter-spacing:0.2em;text-transform:uppercase;color:#0B0B0B;text-decoration:none;border-radius:999px;" data-inert-email-action="">Book an Appointment</span> 427 </td> 428 </tr> 429 </tbody></table> 430 431 </td> 432 </tr> 433 434 435 <tr> 436 <td class="email-pad" align="center" style="padding:22px 36px 40px 36px;"> 437 <table role="presentation" cellpadding="0" cellspacing="0" border="0" style="margin:0 auto;"> 438 <tbody><tr> 439 <td class="email-stackrow" align="center" style="font-family:'Jost','Helvetica Neue',Arial,sans-serif;font-size:11px;line-height:20px;letter-spacing:0.18em;text-transform:uppercase;color:#6B635A;" data-small-type=""> 440 <span style="color:#7E6228;text-decoration:none;font-family:'Jost','Helvetica Neue',Arial,sans-serif;font-size:11px;letter-spacing:0.18em;text-transform:uppercase;" data-inert-email-action="" data-small-type="">Botox</span> 441 <span class="t-taupe" style="color:#6B635A;"> | </span> 442 <span style="color:#7E6228;text-decoration:none;font-family:'Jost','Helvetica Neue',Arial,sans-serif;font-size:11px;letter-spacing:0.18em;text-transform:uppercase;" data-inert-email-action="" data-small-type="">Dermal Filler</span> 443 <span class="t-taupe" style="color:#6B635A;"> | </span> 444 <span style="color:#7E6228;text-decoration:none;font-family:'Jost','Helvetica Neue',Arial,sans-serif;font-size:11px;letter-spacing:0.18em;text-transform:uppercase;" data-inert-email-action="" data-small-type="">Radiesse</span> 445 <span class="t-taupe" style="color:#6B635A;"> | </span> 446 <span style="color:#7E6228;text-decoration:none;font-family:'Jost','Helvetica Neue',Arial,sans-serif;font-size:11px;letter-spacing:0.18em;text-transform:uppercase;" data-inert-email-action="" data-small-type="">Sculptra</span> 447 </td> 448 </tr> 449 </tbody></table> 450 </td> 451 </tr> 452 453 454 <tr> 455 <td class="lock-ink" bgcolor="#0B0B0B" align="center" style="background-color:#0B0B0B;padding:28px 30px 26px 30px;"> 456 <div class="t-gold" style="font-family:'Jost','Helvetica Neue',Arial,sans-serif;font-weight:400;font-size:10px;line-height:18px;color:#C6A35A;letter-spacing:0.24em;text-transform:uppercase;" data-small-type=""> 457 112 Jabez St, Newark, NJ 07105 458 </div> 459 <div class="t-footmute" style="font-family:'Jost','Helvetica Neue',Arial,sans-serif;font-weight:300;font-size:13px;line-height:22px;color:#8A8177;padding-top:10px;"> 460 <span style="color:#C6A35A;text-decoration:none;" data-inert-email-action="">(973) 604-4667</span> 461 <span style="color:#8A8177;"> · </span> 462 <span style="color:#C6A35A;text-decoration:none;" data-inert-email-action="">kcaestheticsrn.com</span> 463 </div> 464 <div class="t-footmute" style="font-family:'Jost','Helvetica Neue',Arial,sans-serif;font-weight:300;font-size:12px;line-height:20px;color:#8A8177;padding-top:12px;"> 465 Mon 9 to 8, Tue to Fri 9 to 6, Sat 9 to 4, Sunday closed 466 </div> 467 <div class="t-footmute" style="font-family:'Jost','Helvetica Neue',Arial,sans-serif;font-weight:300;font-size:11px;line-height:18px;color:#8A8177;padding-top:16px;" data-small-type=""> 468 © 2026 KC Aesthetics. All rights reserved. 469 </div> 470 471 <div class="t-footmute" style="font-family:'Jost','Helvetica Neue',Arial,sans-serif;font-weight:300;font-size:11px;line-height:18px;color:#8A8177;padding-top:8px;" data-small-type="">
472 <span style="color:#8A8177;text-decoration:underline;" data-inert-email-action="">Unsubscribe</span> 473 </div> 474 </td> 475 </tr> 476 477</tbody></table>`,css:Xt[2],caption:"Original clinic email design · fictional sample details.",kind:"authored-email-template"},"kc-review":{brand:"KC Aesthetics",title:"How did everything settle? | KC Aesthetics",html:`<table role="presentation" class="email-wrap lock-ivory" width="620" cellpadding="0" cellspacing="0" border="0" bgcolor="#FAF7F2" style="width:620px;max-width:620px;background-color:#FAF7F2;border:1px solid #E2D9C8;"> 478 479 480 481 <tbody><tr> 482 <td align="center" class="lock-ink" bgcolor="#0B0B0B" style="background-color:#0B0B0B;padding:18px 20px 16px 20px;"> 483 <img src="https://assets.cdn.filesafe.space/GDWTEWJjsqeKuUKlB9Ku/media/d22c4aac-1c09-49fe-a403-c3372a1f61f9.png" width="112" alt="KC Aesthetics" style="display:block;width:112px;max-width:112px;height:auto;border:0;outline:none;text-decoration:none;margin:0 auto;"> 484 <div class="t-gold" style="font-family:'Jost','Helvetica Neue',Arial,sans-serif;font-weight:400;font-size:9px;line-height:13px;color:#C6A35A;letter-spacing:0.22em;text-transform:uppercase;padding-top:7px;" data-small-type="">Because you deserve the best</div> 485 </td> 486 </tr> 487 488 489 <tr> 490 <td class="email-pad" style="padding:38px 36px 0 36px;"> 491 <div class="t-goldink" style="font-family:'Jost','Helvetica Neue',Arial,sans-serif;font-weight:500;font-size:11px;line-height:16px;color:#7E6228;letter-spacing:0.3em;text-transform:uppercase;" data-small-type="">A small favor</div> 492 <div class="email-h1 t-ink" style="font-family:'Cormorant Garamond',Georgia,'Times New Roman',serif;font-weight:500;font-size:33px;line-height:40px;color:#161616;padding-top:14px;">How did everything settle?</div> 493 </td> 494 </tr> 495 496 497 <tr> 498 <td class="email-pad t-taupe" style="padding:16px 36px 0 36px;font-family:'Jost','Helvetica Neue',Arial,sans-serif;font-weight:300;font-size:16px;line-height:26px;color:#6B635A;"> 499 Hi Jordan, it has been a little while since your visit. 500 <br><br> 501 Would you consider leaving a short, honest review about your experience with KC Aesthetics? KC Aesthetics is a small practice and Kenia does every treatment herself, so a few honest words from you carry more weight than any advertisement she could run. 502 <br><br> 503 It takes about a minute, and you can write as little as you like. 504 </td> 505 </tr> 506 507 508 <tr> 509 <td class="email-pad" style="padding:26px 36px 0 36px;"> 510 <table role="presentation" width="100%" cellpadding="0" cellspacing="0" border="0"> 511 <tbody><tr><td height="1" style="height:1px;font-size:1px;line-height:1px;border-top:1px dashed #CFC3AC;" data-small-type=""> </td></tr> 512 </tbody></table> 513 </td> 514 </tr> 515 516 517 <tr> 518 <td class="email-pad" style="padding:26px 36px 0 36px;"> 519 <table role="presentation" width="100%" cellpadding="0" cellspacing="0" border="0" bgcolor="#F1EBE0" class="lock-sand" style="background-color:#F1EBE0;border-left:3px solid #C6A35A;"> 520 <tbody><tr> 521 <td style="padding:22px 24px 22px 21px;"> 522 <div class="t-goldink" style="font-family:'Jost','Helvetica Neue',Arial,sans-serif;font-weight:500;font-size:10px;line-height:14px;color:#7E6228;letter-spacing:0.26em;text-transform:uppercase;" data-small-type="">If you are not sure what to write</div> 523 <div class="t-taupe" style="font-family:'Jost','Helvetica Neue',Arial,sans-serif;font-weight:300;font-size:15px;line-height:25px;color:#6B635A;padding-top:12px;"> 524 What brought you in, how the appointment felt, and whether you would come back. That is more than enough. 525 </div> 526 </td> 527 </tr> 528 </tbody></table> 529 </td> 530 </tr> 531 532 533 534 <tr> 535 <td class="email-pad" align="center" style="padding:30px 36px 8px 36px;"> 536 537 538 <table role="presentation" cellpadding="0" cellspacing="0" border="0" class="email-btn" style="margin:0 auto;"> 539 <tbody><tr> 540 <td align="center" bgcolor="#C6A35A" style="background-color:#C6A35A;border-radius:999px;">
541 <span style="display:inline-block;padding:15px 38px;font-family:'Jost','Helvetica Neue',Arial,sans-serif;font-weight:500;font-size:12px;line-height:18px;letter-spacing:0.2em;text-transform:uppercase;color:#0B0B0B;text-decoration:none;border-radius:999px;" data-inert-email-action="">Leave a Review</span> 542 </td> 543 </tr> 544 </tbody></table> 545 546 </td> 547 </tr> 548 549 550 <tr> 551 <td class="email-pad" style="padding:26px 36px 0 36px;"> 552 <table role="presentation" width="100%" cellpadding="0" cellspacing="0" border="0"> 553 <tbody><tr><td height="1" style="height:1px;font-size:1px;line-height:1px;border-top:1px dashed #CFC3AC;" data-small-type=""> </td></tr> 554 </tbody></table> 555 </td> 556 </tr> 557 <tr> 558 <td class="email-pad" style="padding:22px 36px 0 36px;"> 559 <div class="t-goldink" style="font-family:'Jost','Helvetica Neue',Arial,sans-serif;font-weight:500;font-size:11px;line-height:16px;color:#7E6228;letter-spacing:0.3em;text-transform:uppercase;" data-small-type="">Need help with anything from your visit?</div> 560 <div class="t-taupe" style="font-family:'Jost','Helvetica Neue',Arial,sans-serif;font-weight:300;font-size:16px;line-height:26px;color:#6B635A;padding-top:12px;"> 561 Reply to this email or call 562 <span style="color:#7E6228;text-decoration:none;" data-inert-email-action="">(973) 604-4667</span>. 563 Your care matters, and Kenia wants to hear directly from you if you have a question or concern. 564 </div> 565 </td> 566 </tr> 567 568 569 <tr> 570 <td class="email-pad" align="left" style="padding:26px 36px 40px 36px;"> 571 <div class="t-goldink" style="font-family:'Jost','Helvetica Neue',Arial,sans-serif;font-weight:500;font-size:11px;line-height:16px;color:#7E6228;letter-spacing:0.3em;text-transform:uppercase;padding-bottom:12px;" data-small-type="">Ready for your next visit</div> 572 <table role="presentation" cellpadding="0" cellspacing="0" border="0"> 573 <tbody><tr> 574 <td class="email-stackrow" style="font-family:'Jost','Helvetica Neue',Arial,sans-serif;font-size:11px;line-height:20px;letter-spacing:0.18em;text-transform:uppercase;color:#6B635A;" data-small-type=""> 575 <span style="color:#7E6228;text-decoration:none;font-family:'Jost','Helvetica Neue',Arial,sans-serif;font-size:11px;letter-spacing:0.18em;text-transform:uppercase;" data-inert-email-action="" data-small-type="">Botox</span> 576 <span class="t-taupe" style="color:#6B635A;"> | </span> 577 <span style="color:#7E6228;text-decoration:none;font-family:'Jost','Helvetica Neue',Arial,sans-serif;font-size:11px;letter-spacing:0.18em;text-transform:uppercase;" data-inert-email-action="" data-small-type="">Dermal Filler</span> 578 <span class="t-taupe" style="color:#6B635A;"> | </span> 579 <span style="color:#7E6228;text-decoration:none;font-family:'Jost','Helvetica Neue',Arial,sans-serif;font-size:11px;letter-spacing:0.18em;text-transform:uppercase;" data-inert-email-action="" data-small-type="">Consultation</span> 580 </td> 581 </tr> 582 </tbody></table> 583 </td> 584 </tr> 585 586 587 <tr> 588 <td class="lock-ink" bgcolor="#0B0B0B" align="center" style="background-color:#0B0B0B;padding:28px 30px 26px 30px;"> 589 <div class="t-gold" style="font-family:'Jost','Helvetica Neue',Arial,sans-serif;font-weight:400;font-size:10px;line-height:18px;color:#C6A35A;letter-spacing:0.24em;text-transform:uppercase;" data-small-type=""> 590 112 Jabez St, Newark, NJ 07105 591 </div> 592 <div class="t-footmute" style="font-family:'Jost','Helvetica Neue',Arial,sans-serif;font-weight:300;font-size:13px;line-height:22px;color:#8A8177;padding-top:10px;"> 593 <span style="color:#C6A35A;text-decoration:none;" data-inert-email-action="">(973) 604-4667</span> 594 <span style="color:#8A8177;"> · </span> 595 <span style="color:#C6A35A;text-decoration:none;" data-inert-email-action="">kcaestheticsrn.com</span> 596 </div> 597 <div class="t-footmute" style="font-family:'Jost','Helvetica Neue',Arial,sans-serif;font-weight:300;font-size:12px;line-height:20px;color:#8A8177;padding-top:12px;"> 598 Mon 9 to 8, Tue to Fri 9 to 6, Sat 9 to 4, Sunday closed 599 </div> 600 <div class="t-footmute" style="font-family:'Jost','Helvetica Neue',Arial,sans-serif;font-weight:300;font-size:11px;line-height:18px;color:#8A8177;padding-top:16px;" data-small-type=""> 601 © 2026 KC Aesthetics. All rights reserved. 602 </div> 603 604 <div class="t-footmute" style="font-family:'Jost','Helvetica Neue',Arial,sans-serif;font-weight:300;font-size:11px;line-height:18px;color:#8A8177;padding-top:8px;" data-small-type="">
605 <span style="color:#8A8177;text-decoration:underline;" data-inert-email-action="">Unsubscribe</span> 606 </div> 607 </td> 608 </tr> 609 610</tbody></table>`,css:Xt[3],caption:"Original clinic email design · fictional sample details.",kind:"authored-email-template"},"skin-bar-reminder":{brand:"Skin Bar New York",title:"Your appointment reminder",html:`<table role="presentation" width="100%" cellpadding="0" cellspacing="0" border="0" style="max-width:600px; background-color:#FFFFFF; border:1px solid #E8E3D9;"> 611 612 <tbody><tr><td align="center" style="padding:30px 16px 22px;"> 613 <span style="text-decoration:none;" data-inert-email-action=""> 614 <img src="https://assets.cdn.filesafe.space/POnul1pSY8Zli8AXm1GP/media/677f88b6db11b1b7c895b7ed.png" width="150" alt="Skin Bar New York" style="display:block; border:0; outline:none; text-decoration:none; width:150px; height:auto; margin:0 auto;"> 615 </span> 616 <table role="presentation" cellpadding="0" cellspacing="0" border="0" style="margin:18px auto 0;"><tbody><tr><td width="44" style="border-top:1px solid #CBB99A; font-size:0; line-height:0;"> </td></tr></tbody></table> 617 </td></tr> 618 619 <tr><td style="padding:12px 30px 34px; font-family:'Jost',-apple-system,BlinkMacSystemFont,'Segoe UI',Arial,sans-serif; color:#171717;"> 620 <div style="font-family:'Cormorant Garamond',Georgia,serif; font-size:30px; font-weight:300; margin:0 0 14px;">Hi Jordan,</div> 621 <div style="font-size:15px; line-height:1.75; color:#3A362F; margin:0 0 28px;">This is a friendly reminder that your appointment with <strong style="font-weight:500;">Skin Bar New York</strong> is coming up <strong style="font-weight:500;">tomorrow</strong>.</div> 622 623 <table role="presentation" width="100%" cellpadding="0" cellspacing="0" border="0"> 624 <tbody><tr> 625 <td width="30%" valign="top" style="padding:12px 0; font-size:12px; letter-spacing:1px; text-transform:uppercase; color:#9A8B6E;">Service</td> 626 <td style="padding:12px 0; font-size:17px; color:#171717; line-height:1.5;">Consultation</td> 627 </tr> 628 <tr><td colspan="2" style="border-top:1px solid #EFEAE0; font-size:0; line-height:0;"> </td></tr> 629 <tr> 630 <td valign="top" style="padding:12px 0; font-size:12px; letter-spacing:1px; text-transform:uppercase; color:#9A8B6E;">Date & Time</td> 631 <td style="padding:12px 0; font-size:19px; color:#171717; line-height:1.45; font-weight:500;">Tuesday, October 20 at 10:30am</td> 632 </tr> 633 <tr><td colspan="2" style="border-top:1px solid #EFEAE0; font-size:0; line-height:0;"> </td></tr> 634 <tr> 635 <td valign="top" style="padding:12px 0; font-size:12px; letter-spacing:1px; text-transform:uppercase; color:#9A8B6E;">Location</td> 636 <td style="padding:12px 0; font-size:17px; color:#171717; line-height:1.55;">Skin Bar New York<br>Salons by JC, Suite 1<br>683 Old Country Road<br>Dix Hills, NY 11746<br><span style="font-size:15px; color:#3A362F;">(631) 621-3949</span></td> 637 </tr> 638 </tbody></table> 639 640 <div style="text-align:center; margin:26px 0 4px;"> 641 <span style="display:inline-block; background-color:#E0DBD1; color:#171717; text-decoration:none; font-size:13px; letter-spacing:.5px; padding:13px 32px; border-radius:9999px;" data-inert-email-action="">Add to Calendar</span> 642 </div> 643 <div style="text-align:center; font-size:13px; line-height:1.9; margin:0 0 26px;"> 644 <span style="color:#7E6A4A; text-decoration:underline;" data-inert-email-action="">Add to Outlook</span> 645 <span style="color:#C9C2B4;"> | </span> 646 <span style="color:#7E6A4A; text-decoration:underline;" data-inert-email-action="">Cancel</span> 647 <span style="color:#C9C2B4;"> | </span> 648 <span style="color:#7E6A4A; text-decoration:underline;" data-inert-email-action="">Reschedule</span> 649 </div> 650 651 <div style="font-size:14px; line-height:1.7; color:#3A362F; text-align:center; margin:0 0 8px;">See you soon â¨</div> 652 <div style="font-size:11px; line-height:1.65; color:#A6A196; text-align:center;" data-small-type="">Same-day cancellations or no-shows are subject to a $100 fee.</div> 653 </td></tr> 654 655 <tr><td align="center" style="border-top:1px solid #E8E3D9; padding:20px 18px; font-family:'Jost',-apple-system,BlinkMacSystemFont,'Segoe UI',Arial,sans-serif; color:#9A9488;"> 656 <div style="font-size:11.5px; line-height:1.7; margin:0 0 5px; color:#6B665C;" data-small-type="">Skin Bar New York · Salons by JC, Suite 1</div> 657 <div style="font-size:11px; line-height:1.7;" data-small-type="">683 Old Country Road, Dix Hills, NY 11746<br> 658 Copyright © 2026 Skin Bar New York. All rights reserved.<br> 659 You received this email because you scheduled an appointment with us.
660 <span style="color:#7E6A4A; text-decoration:underline;" data-inert-email-action="">Unsubscribe</span>. 661 </div> 662 </td></tr> 663 664 </tbody></table>`,css:Xt[4],caption:"Original clinic email design · fictional sample details.",kind:"authored-email-template"},"mary-reminder":{brand:"Medical Esthetics & Wellness",title:"Your appointment reminder",html:`<div style="width:516px;background:#1E1128;border-radius:6px;overflow:hidden;font-family:'IT', -apple-system, 'Segoe UI', Roboto, sans-serif;box-shadow:0 1px 3px rgba(16,32,42,.10)"> 665 <div style="padding:22px"> 666 <div style="background:#F7F3FC;border-radius:16px;padding:28px"> 667 <table cellpadding="0" cellspacing="0"><tbody><tr> 668 <td style="vertical-align:middle;padding-right:13px"><img src="https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9f3d91bcef8b5f2c30a586.webp" style="height:44px;width:auto;display:inline-block;vertical-align:middle" alt="Medical Esthetics & Wellness"></td> 669 <td style="vertical-align:middle;font-family:'ID', 'IT', -apple-system, sans-serif;font-size:12.5px; 670 color:#241634;letter-spacing:.14em;line-height:1.2">MEDICAL ESTHETICS<br>& WELLNESS</td></tr></tbody></table> 671 <div style="margin-top:22px;background:#3B1F63;border-radius:12px; 672 padding:22px 20px"> 673 <div style="font-size:10.5px;letter-spacing:.22em;text-transform:uppercase; 674 color:#C9B6E4;font-weight:600" data-small-type="">Wednesday, August 26</div> 675 <div style="font-family:'ID', 'IT', -apple-system, sans-serif;font-size:27px;color:#FFFFFF; 676 margin-top:9px;letter-spacing:-.012em">9:30 AM</div> 677 <div style="font-size:12.5px;color:#C9B6E4;margin-top:9px; 678 line-height:1.5">Oyster Bay, NY · 60 minutes</div> 679 </div> 680 <div style="font-size:14px;line-height:1.75;color:#57545A;margin-top:20px">Confirmed and on the schedule. Please come with clean skin and no makeup, and your deposit is applied to the treatment total.</div> 681 <div style="margin-top:16px"><table cellpadding="0" cellspacing="0" style="width:100%"><tbody><tr><td style="padding:11px 0;width:40%;vertical-align:top"><div style="font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:#57545A;font-weight:600" data-small-type="">Treatment</div></td><td style="padding:11px 0;text-align:right;font-size:14px;color:#241634;line-height:1.5">Exion RF microneedling</td></tr><tr><td style="padding:11px 0;border-top:1px solid #E6DDF2;width:40%;vertical-align:top"><div style="font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:#57545A;font-weight:600" data-small-type="">With</div></td><td style="padding:11px 0;border-top:1px solid #E6DDF2;text-align:right;font-size:14px;color:#241634;line-height:1.5">The clinical team</td></tr></tbody></table></div> 682 <div style="margin-top:24px"> 683 <div style="background:#3B1F63;color:#FFFFFF;border-radius:999px; 684 padding:14px 18px;font-size:13.5px;font-weight:600;text-align:center"> 685 Reschedule this appointment</div></div> 686 </div> 687 <div style="padding:20px 8px 4px"><div style="text-align:center;margin-top:0px"><div style="font-size:11.5px;line-height:1.7;color:#C6BAD6;letter-spacing:.04em" data-small-type="">Medical Esthetics & Wellness · Oyster Bay, NY</div><div style="font-size:11px;color:#C6BAD6;margin-top:6px" data-small-type="">Manage your reminders</div></div></div> 688 </div></div>`,css:Xt[5],caption:"Original clinic design specimen · fictional appointment.",kind:"authored-design-specimen"},"skin-bar-rebook":{brand:"Skin Bar New York",title:"A return invitation from Skin Bar New York",html:`<table role="presentation" width="100%" cellpadding="0" cellspacing="0" border="0" style="max-width:600px; background-color:#FFFFFF; border:1px solid #E8E3D9;"> 689 690 <tbody><tr><td align="center" style="padding:30px 16px 22px;"> 691 <span style="text-decoration:none;" data-inert-email-action=""> 692 <img src="https://assets.cdn.filesafe.space/POnul1pSY8Zli8AXm1GP/media/677f88b6db11b1b7c895b7ed.png" width="150" alt="Skin Bar New York" style="display:block; border:0; outline:none; text-decoration:none; width:150px; height:auto; margin:0 auto;"> 693 </span> 694 <table role="presentation" cellpadding="0" cellspacing="0" border="0" style="margin:18px auto 0;"><tbody><tr><td width="44" style="border-top:1px solid #CBB99A; font-size:0; line-height:0;"> </td></tr></tbody></table> 695 </td></tr> 696 697 <tr><td style="padding:12px 30px 34px; font-family:'Jost',-apple-system,BlinkMacSystemFont,'Segoe UI',Arial,sans-serif; color:#171717;"> 698 <div style="font-family:'Cormorant Garamond',Georgia,serif; font-size:30px; font-weight:300; margin:0 0 14px;">Hi Jordan,</div> 699 <div style="font-size:15px;line-height:1.75;color:#3A362F;margin:0 0 24px;">Thank you for spending time with us at <strong style="font-weight:500;">Skin Bar New York</strong>. When you are ready to plan your next visit, we would love to welcome you back.</div> 700 <div style="background:#F5F1E9;border:1px solid #E8E3D9;padding:24px 22px;margin:0 0 24px;"> 701 <div style="font-size:12px;letter-spacing:1px;text-transform:uppercase;color:#7E6A4A;">A little time for you</div> 702 <div style="font-family:'Cormorant Garamond',Georgia,serif;font-size:28px;font-weight:300;line-height:1.2;margin-top:10px;">Your next Skin Bar visit.</div> 703 <div style="font-size:15px;line-height:1.75;color:#3A362F;margin-top:14px;">Choose a time that works for you, or reply if you would like help planning the next step.</div> 704 </div> 705 <div style="text-align:center;margin:26px 0 24px;"><span style="display:inline-block;background-color:#E0DBD1;color:#171717;text-decoration:none;font-size:13px;letter-spacing:.5px;padding:13px 32px;border-radius:9999px;" data-inert-email-action="">Plan your next visit</span></div> 706 <div style="font-size:14px;line-height:1.7;color:#3A362F;margin:0 0 8px;">Warmly,<br>The Skin Bar New York team</div> 707 </td></tr> 708 709 <tr><td align="center" style="border-top:1px solid #E8E3D9; padding:20px 18px; font-family:'Jost',-apple-system,BlinkMacSystemFont,'Segoe UI',Arial,sans-serif; color:#9A9488;"> 710 <div style="font-size:11.5px; line-height:1.7; margin:0 0 5px; color:#6B665C;" data-small-type="">Skin Bar New York · Salons by JC, Suite 1</div> 711 <div style="font-size:11px; line-height:1.7;" data-small-type="">683 Old Country Road, Dix Hills, NY 11746<br> 712 Copyright © 2026 Skin Bar New York. All rights reserved.<br> 713 You received this email because you scheduled an appointment with us.
714 <span style="color:#7E6A4A; text-decoration:underline;" data-inert-email-action="">Unsubscribe</span>. 715 </div> 716 </td></tr> 717 718 </tbody></table>`,css:Xt[4],caption:"Rebooking design specimen · fictional recipient.",kind:"authored-design-specimen"},"mary-rebook":{brand:"Medical Esthetics & Wellness",title:"A return invitation from Medical Esthetics & Wellness",html:`<div style="width:516px;background:#1E1128;border-radius:6px;overflow:hidden;font-family:'IT', -apple-system, 'Segoe UI', Roboto, sans-serif;box-shadow:0 1px 3px rgba(16,32,42,.10)"> 719 <div style="padding:22px"> 720 <div style="background:#F7F3FC;border-radius:16px;padding:28px"> 721 <table cellpadding="0" cellspacing="0"><tbody><tr> 722 <td style="vertical-align:middle;padding-right:13px"><img src="https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6a9f3d91bcef8b5f2c30a586.webp" style="height:44px;width:auto;display:inline-block;vertical-align:middle" alt="Medical Esthetics & Wellness"></td> 723 <td style="vertical-align:middle;font-family:'ID', 'IT', -apple-system, sans-serif;font-size:12.5px; 724 color:#241634;letter-spacing:.14em;line-height:1.2">MEDICAL ESTHETICS<br>& WELLNESS</td></tr></tbody></table> 725 <div style="margin-top:22px;background:#3B1F63;border-radius:12px;padding:22px 20px;"> 726 <div style="font-size:12px;letter-spacing:.17em;text-transform:uppercase;color:#C9B6E4;font-weight:600;">An invitation to return</div> 727 <div style="font-family:'ID','IT',-apple-system,sans-serif;font-size:27px;line-height:1.2;color:#FFFFFF;margin-top:10px;letter-spacing:-.012em;">A little time for you.</div> 728 <div style="font-size:13px;color:#C9B6E4;margin-top:12px;line-height:1.5;">Your next visit, when you are ready.</div> 729 </div> 730 <div style="font-size:15px;line-height:1.75;color:#57545A;margin-top:20px;">Hi Jordan, thank you for choosing Medical Esthetics & Wellness. Ready to plan your next visit? Our team can help you choose an appointment that fits your plans.</div> 731 <div style="font-size:14px;line-height:1.75;color:#57545A;margin-top:16px;">Use the booking link to choose a time, or reply if you would like help with the next step.</div> 732 <div style="margin-top:24px;"><div style="background:#3B1F63;color:#FFFFFF;border-radius:999px;padding:14px 18px;font-size:13.5px;font-weight:600;text-align:center;" data-inert-email-action="">Plan your next visit</div></div> 733 <div style="font-size:14px;line-height:1.7;color:#57545A;margin-top:22px;">Warmly,<br>The Medical Esthetics & Wellness team</div> 734 </div> 735 <div style="padding:20px 8px 4px"><div style="text-align:center;margin-top:0px"><div style="font-size:11.5px;line-height:1.7;color:#C6BAD6;letter-spacing:.04em" data-small-type="">Medical Esthetics & Wellness · Oyster Bay, NY</div><div style="font-size:11px;color:#C6BAD6;margin-top:6px" data-small-type="">Manage your reminders</div></div></div> 736 </div></div>`,css:Xt[5],caption:"Rebooking design specimen · fictional recipient.",kind:"authored-design-specimen"},"kc-reminder":{brand:"KC Aesthetics",title:"Tomorrow at KC Aesthetics â shortened reminder preview",html:`<article class="kc-preview"> 737<header class="kc-preview-brand"><img src="https://assets.cdn.filesafe.space/GDWTEWJjsqeKuUKlB9Ku/media/d22c4aac-1c09-49fe-a403-c3372a1f61f9.png" width="84" height="84" alt="KC Aesthetics"><p>Because you deserve the best</p></header> 738<div class="kc-preview-body"> 739<div><p class="kc-preview-eyebrow">Appointment reminder</p><h3 class="kc-preview-title">Weâll see you tomorrow.</h3><p>Hi Jordan, a quick reminder of your appointment with Kenia.</p></div> 740<div class="kc-preview-details"><div><span>Treatment</span><strong>Consultation</strong></div><div class="kc-preview-date"><div><span>Date</span><strong>Tuesday, October 20</strong></div><div><span>Time</span><strong>10:30am</strong></div></div><div><span>Where</span><strong class="kc-preview-address">112 Jabez St, Newark, NJ 07105</strong></div></div> 741<p>Please arrive 10 minutes early and bring a photo ID. Parking is available on site. Your $40 deposit is applied to your treatment.</p> 742<div class="kc-preview-actions"><span data-inert-email-action>Add to calendar</span><span aria-hidden="true">·</span><span data-inert-email-action>Reschedule</span><span aria-hidden="true">·</span><span data-inert-email-action>Cancel</span></div> 743<p class="kc-preview-signoff">See you soon,<br><strong>Kenia</strong></p> 744</div> 745<footer class="kc-preview-footer"><p><span data-inert-email-action>(973) 604-4667</span><span aria-hidden="true"> · </span><span data-inert-email-action>kcaestheticsrn.com</span></p><p>© 2026 KC Aesthetics</p></footer> 746</article>`,css:Xt[3]+` 747.kc-preview{box-sizing:border-box;min-height:760px;margin:0;display:flex;flex-direction:column;background:#FAF7F2;color:#6B635A;font-family:Jost,"Helvetica Neue",Arial,sans-serif;font-size:16px;line-height:1.5} 748.kc-preview p{margin:0} 749.kc-preview-brand{background:#0B0B0B;text-align:center;padding:14px 24px 13px} 750.kc-preview-brand img{width:84px;height:84px;margin:0 auto;object-fit:contain} 751.kc-preview-brand p{margin-top:7px;color:#C6A35A;font-size:9px;line-height:13px;letter-spacing:.2em;text-transform:uppercase} 752.kc-preview-body{padding:24px 32px;display:flex;flex-direction:column;gap:19px} 753.kc-preview-eyebrow{font-size:10px;line-height:15px;font-weight:500;letter-spacing:.25em;text-transform:uppercase;color:#7E6228} 754.email-document .kc-preview-title{font-family:"Cormorant Garamond",Georgia,serif;font-size:34px!important;line-height:39px!important;font-weight:500;color:#161616;margin:7px 0 11px} 755.kc-preview-details{padding:17px 20px;background:#F1EBE0;border-left:3px solid #C6A35A;display:grid;gap:12px}
756.kc-preview-details span{display:block;color:#7E6228;font-size:9px;line-height:13px;font-weight:500;letter-spacing:.2em;text-transform:uppercase} 757.kc-preview-details strong{display:block;font-family:"Cormorant Garamond",Georgia,serif;font-size:23px;line-height:27px;font-weight:500;color:#161616} 758.kc-preview-date{display:grid;grid-template-columns:1.6fr 1fr;gap:16px} 759.kc-preview-details .kc-preview-address{font-size:20px;line-height:25px} 760.kc-preview-actions{display:flex;align-items:center;gap:13px;color:#7E6228;font-size:11px;line-height:17px;font-weight:500;letter-spacing:.09em;text-transform:uppercase;border-top:1px dashed #CFC3AC;padding-top:17px} 761.kc-preview-signoff{font-size:14px;line-height:20px} 762.kc-preview-signoff strong{font-family:"Cormorant Garamond",Georgia,serif;color:#161616;font-weight:500;font-size:23px;line-height:27px} 763.kc-preview-footer{margin-top:auto;padding:17px 24px;background:#0B0B0B;color:#C6A35A;text-align:center;font-size:11px;line-height:17px;letter-spacing:.05em} 764.kc-preview-footer p+p{margin-top:5px;color:#8A8177;font-size:10px;line-height:15px} 765`,caption:"Shortened clinic email preview · fictional details.",kind:"shortened-email-preview"}},zm={reminder:{label:"Appointment messages",steps:[{label:"Confirmation",title:"A place in their day.",context:"Appointment booked",message:"Hi Jordan, your appointment at Your Clinic is booked for Tuesday at 10:30am. We look forward to seeing you. Reply here if you have a question.",note:"Use the appointmentâs service, time and clinic details."},{label:"Reminder",title:"The visit stays in view.",context:"Before the appointment",message:"Hi Jordan, a reminder about your Tuesday 10:30am appointment at Your Clinic. Please review the visit instructions shared by our team. Has anything changed? Reply here and we can help.",note:"Your clinic sets the reminder timing and preparation instructions."},{label:"Form reminder",title:"One less thing on arrival.",context:"Before the appointment",condition:"Only while the required forms are recorded as outstanding",message:"Hi Jordan, a quick reminder to complete the forms Your Clinic sent for your upcoming visit. Use your secure form link, or reply if you need help.",note:"The clinic checks recorded completion before sending another form reminder."}]},forms:{label:"Pre-visit paperwork",steps:[{label:"Forms link",title:"The forms fit the treatment.",context:"Booked treatment â approved forms",message:"Hi Jordan, please complete the intake and consent forms for your upcoming treatment using the link from Your Clinic. Our clinical team will review your information before care.",note:"The clinic approves the forms mapped to each treatment."},{label:"Outstanding",title:"A reminder only when it is needed.",context:"Recorded paperwork check",condition:"Only while the paperwork is recorded as outstanding",message:"Hi Jordan, the paperwork for your upcoming visit is still showing as outstanding. Please use your form link, or reply if you need help completing it.",note:"Recorded completion is checked before another reminder."},{label:"Clinical review",title:"The team reviews the record.",context:"Clinical responsibility",message:"Your Clinicâs care team will review the information provided for your treatment. Please contact us if anything has changed before the visit.",note:"A message or status does not make a clinical decision."}]},gfe:{label:"Good Faith Exam coordination",steps:[{label:"When required",title:"Make the required exam step clear.",context:"Treatment requirement",condition:"For treatments that require an exam",message:"Hi Jordan, your appointment requires a Good Faith Exam. Please use the clinicâs instructions to arrange it before your visit.",note:"The clinic identifies which treatments require an exam."},{label:"Next steps",title:"Help the patient reach the next step.",context:"Exam coordination",condition:"Only while the required exam is recorded as outstanding",message:"Hi Jordan, please follow the exam instructions shared by Your Clinic. Reply here if you need help with the next step.",response:"Thank y
765ou. I will follow the instructions from the clinic.",note:"The patient completes the exam through the clinicâs configured process."},{label:"Clinical review",title:"The care decision stays clinical.",context:"Qualified clinical review",condition:"Before treatment",message:"Your clinical team will review the required exam information before deciding whether treatment can proceed. Please contact Your Clinic with any questions.",note:"No automatic clearance is represented by this illustration."}]},review:{label:"Post-visit review request",steps:[{label:"Completed visit",title:"Begin with the visit that happened.",context:"Completed appointment",message:"Thank you for visiting Your Clinic, Jordan. We appreciate the time you spent with our team.",note:"The request follows the clinicâs configured appointment event."},{label:"Review invitation",title:"An invitation in the clinicâs voice.",context:"Clinic-approved review request",message:"Jordan, would you like to share your experience at Your Clinic? You can use our review link to leave your feedback. Thank you for taking the time.",note:"The patient chooses whether to leave a review. No rating is assumed."}]},recovery:{label:"Appointment recovery",steps:[{label:"Canceled",title:"Make a new appointment easier to discuss.",context:"Canceled appointment",message:"Hi Jordan, we have your appointment marked as canceled. If you would like help finding another time, reply here and our team can help.",note:"The message and next step match the recorded cancellation."},{label:"Missed visit",title:"Use words that fit a missed visit.",context:"No-show appointment",message:"Hi Jordan, we missed you at Your Clinic. If you would like to arrange another appointment or have a question, please reply to our team.",note:"No-show recovery has its own clinic-approved message and timing."}]},conversation:{label:"A team conversation",steps:[{label:"Patient question",title:"Keep the question in context.",context:"New inquiry",message:"Hello Your Clinic. I am interested in booking a consultation. How do I choose the right appointment?",note:"A fictional inquiry, shown as a message example."},{label:"Team reply",title:"Give the conversation a useful next step.",context:"Clinic team reply",message:"Hello Your Clinic. I am interested in booking a consultation.",response:"Hi Jordan, we can help you choose the next step. Tell us what you would like to discuss, or use the consultation booking path shared by our team.",note:"This illustrates a team reply, not an autonomous clinical recommendation."}]}},Lm=Y.createContext(!1);function Ce(){var i=(0,le.useContext)(Lm),s=(0,le.useState)(!1);return(0,le.useEffect)(function(){if(typeof window.matchMedia=="function"){var l=window.matchMedia("(max-width: 800px)"),d=function(){s[1](l.matches)};return d(),l.addEventListener?l.addEventListener("change",d):l.addListener(d),function(){l.removeEventListener?l.removeEventListener("change",d):l.removeListener(d)}}},[]),s[0]&&!i}function Re({label:i,caption:s,children:l,renderFull:d,className:p=""}){var h=(0,le.useId)().replace(/:/g,""),f=(0,le.useRef)(null),g=(0,le.useRef)(null),b=(0,le.useRef)(null),u=(0,le.useState)(!1),N=u[0],v=u[1];return(0,le.useEffect)(function(){if(!(!N||!f.current)){var w=f.current,C=document.documentElement,A=C.style.overflow,z=window.scrollX,S=window.scrollY;return C.style.overflow="hidden",w.open||w.showModal(),b.current&&b.current.focus({preventScroll:!0}),function(){w.open&&w.close(),C.style.overflow=A;var R=C.style.scrollBehavior;C.style.scrollBehavior="auto",g.current&&g.current.isConnected&&g.current.focus({preventScroll:!0}),(window.scrollX!==z||window.scrollY!==S)&&window.scrollTo(z,S),C.style.scrollBehavior=R}}},[N]),e("section",{className:"mobile-graphic-frame"+(p?" "+p:""),"aria-label":i},e("div",{className:"mgf-art"},i?e("div",{className:"mgf-label"},i):null,e("div",{className:"mgf-preview"},l),s?e("p",{className:"mgf-caption",id:h+"-caption"},s):null),e("button",{className:"mgf-expand",type:"button",ref:g,onClick:function(){v(!0)},"aria-haspopup":"dialog","aria-controls":h+"-dialog"},"View full example",e(J,{size:17,"aria-hidden":"true"})),e("dialog",{className:"mobile-graphic-dialog",ref:f,id:h+"-dialog","aria-labelledby":h+"-title",onCancel:function(w){
765w.target===w.currentTarget&&(w.preventDefault(),v(!1))},onClose:function(w){w.target===w.currentTarget&&v(!1)},onClick:function(w){if(w.target===w.currentTarget){var C=w.currentTarget.getBoundingClientRect();(w.clientX<C.left||w.clientX>C.right||w.clientY<C.top||w.clientY>C.bottom)&&v(!1)}}},N?e(Y.Fragment,null,e("header",{className:"mgf-dialog-header"},e("h2",{id:h+"-title"},i),e("button",{type:"button",ref:b,onClick:function(){v(!1)}},"Close preview",e("span",{"aria-hidden":"true"},"Ã"))),e("div",{className:"mgf-full-scene"},e(Lm.Provider,{value:!0},typeof d=="function"?d():l))):null))}function ea({rows:i,kind:s="timeline"}){var l=["timeline","parallel","branches"].includes(s)?s:"timeline";return e("ol",{className:"mgf-steps mgf-steps--"+l},i.map(function(d,p){return e("li",{key:d.id||p,className:"mgf-step"+(d.conditional?" mgf-step--conditional":"")},e("span",{className:"mgf-step-marker","aria-hidden":"true"},String(p+1).padStart(2,"0")),e("div",{className:"mgf-step-copy"},e("strong",null,d.title),d.body?e("span",{className:"mgf-step-body"},d.body):null))}))}function Za({title:i,rows:s}){return e("div",{className:"mgf-record"},i?e("strong",{className:"mgf-record-title"},i):null,e("dl",null,s.map(function(l,d){return e("div",{className:"mgf-record-row",key:l.id||d},e("dt",null,l.label),e("dd",null,l.value))})))}function Ns({src:i,alt:s,caption:l,label:d,renderFull:p,preview:h,className:f=""}){var g=(0,le.useState)(!1);(0,le.useEffect)(function(){g[1](!1)},[i]);var b=function(){return e("figure",{className:"mgf-image-full"},e("div",{className:"mgf-image-original",tabIndex:0,role:"region","aria-label":"Full-size image. Scroll to inspect. "+s},e("img",{src:i,alt:s,decoding:"async"})),l?e("figcaption",null,l):null)};return e(Re,{label:d||s,caption:l,className:"mgf-image-frame"+(f?" "+f:""),renderFull:p||b},h??(g[0]?e("p",{className:"mgf-image-error",role:"status"},"This image could not load. ",s):e("div",{className:"mgf-image-fit"},e("img",{src:i,alt:s,loading:"lazy",decoding:"async",onError:function(){g[1](!0)}}))))}function Tc(i,s=0,l=!0){let[d,p]=(0,le.useState)(Math.min(s,i-1)),[h,f]=(0,le.useState)(!1),[g,b]=(0,le.useState)(()=>{var j;return typeof window<"u"&&!!((j=window.matchMedia)!=null&&j.call(window,"(prefers-reduced-motion: reduce)").matches)}),[u,N]=(0,le.useState)(!0),[v,w]=(0,le.useState)(()=>typeof document>"u"||!document.hidden),C=(0,le.useRef)(null);(0,le.useEffect)(()=>{var V;if(!l)return;let j=(V=window.matchMedia)==null?void 0:V.call(window,"(prefers-reduced-motion: reduce)");if(!j)return;let $=()=>{b(j.matches),j.matches&&f(!1)};return $(),j.addEventListener("change",$),()=>j.removeEventListener("change",$)},[l]),(0,le.useEffect)(()=>{if(!l||typeof IntersectionObserver>"u")return;let j=new IntersectionObserver(([$])=>{N($.isIntersecting),$.isIntersecting||f(!1)},{threshold:.15});return C.current&&j.observe(C.current),()=>j.disconnect()},[l]),(0,le.useEffect)(()=>{if(!l)return;let j=()=>{w(!document.hidden),document.hidden&&f(!1)};return j(),document.addEventListener("visibilitychange",j),()=>document.removeEventListener("visibilitychange",j)},[l]);let A=l&&h&&u&&v&&!g;(0,le.useEffect)(()=>{if(!A)return;if(d===i-1){f(!1);return}let j=window.setTimeout(()=>p($=>$+1),3600);return()=>window.clearTimeout(j)},[A,d,i]);function z(j){f(!1),p(j)}function S(){h?f(!1):(d===i-1&&p(0),f(!0))}function R(){p(0),f(!g)}return{index:d,playing:h,running:A,reduced:g,ref:C,choose:z,toggle:S,replay:R}}function qr({message:i,response:s,subject:l="Your Clinic",firstSender:d="clinic"}){return e("div",{className:"journey-phone"},e("div",{className:"journey-phone-speaker","aria-hidden":"true"}),e("div",{className:"journey-phone-header"},e("span",{className:"journey-clinic-mark","aria-hidden":"true"},"YC"),e("div",null,e("strong",null,l),e("span",null,"Example SMS conversation")),e(We,{size:19})),e("div",{className:"journey-thread"},e("p",{className:"journey-thread-date"},"Fictional patient: Jordan"),e("div",{className:`journey-message ${d==="clinic"?"journey-message--clinic":"journey-message--reply"}`},e("span",{className:"journey-message-sender"},d==="clinic"?l:"Jordan"),e("p",null,i)),s&&e("div",{className:`journey-message ${d==="clinic"?"journey-message--reply":"journey-message--clinic"}`},e("span",{className:"journey-message-sender"},d==="clinic"?"Jordan":l),e("p",null,s)),e("div",{className:"journey-compose","aria-hidden":"true"},e("span",null,"Message your clinic"),e(J,{size:16}))))}function Hi({name:i,compact:s=!1}){let l=li[i],d=s&&i==="kc-reminder",p=(0,le.useRef)(null),h=(0,le.useRef)(null);return(0,le.useLayoutEffect)(()=>{var R;let f=p.current,g=h.current;if(!f||!g)return;let b=g.shadowRoot??g.attachShadow({mode:"open"}),u=document.createElement("style");u.textContent=l.css.replace(/(^|[\s,>+~])h1(?=[\s,.#\[:>+~{]|$)/g,"$1h3");let N=document.createElement("div");N.className="email-document",N.innerHTML=l.html,N.querySelectorAll("h1").forEach(j=>{let $=document.createElement("h3");
765[...j.attributes].forEach(V=>$.setAttribute(V.name,V.value)),$.removeAttribute("aria-level"),$.replaceChildren(...j.childNodes),j.replaceWith($)}),N.querySelectorAll("h2").forEach(j=>j.setAttribute("aria-level","3"));let v=[...N.querySelectorAll("img")];v.forEach(j=>{j.loading="lazy",j.decoding="async"}),b.replaceChildren(u,N);let w=0,C=!1,A=()=>{if(C||!f.clientWidth)return;let j=f.clientWidth;g.style.width="520px";let $=Math.max(N.scrollHeight,N.offsetHeight,1),V=Number.parseFloat(getComputedStyle(f).getPropertyValue("--email-fit-height"))||820,D=d?j/520:Math.min(1,j/520,V/$);g.style.transform=`scale(${D})`,g.style.left=d?"0px":`${Math.max(0,(j-g.offsetWidth*D)/2)}px`,f.style.height=`${Math.ceil($*D)}px`,f.dataset.fitScale=D.toFixed(4),f.dataset.documentHeight=String($),g.style.visibility="visible"},z=()=>{cancelAnimationFrame(w),w=requestAnimationFrame(A)},S=typeof ResizeObserver<"u"?new ResizeObserver(z):void 0;return S==null||S.observe(f),S==null||S.observe(N),v.forEach(j=>{j.addEventListener("load",z),j.addEventListener("error",z)}),window.addEventListener("resize",z),(R=document.fonts)==null||R.ready.then(()=>{C||z()}),A(),z(),()=>{C=!0,cancelAnimationFrame(w),S==null||S.disconnect(),window.removeEventListener("resize",z),v.forEach(j=>{j.removeEventListener("load",z),j.removeEventListener("error",z)})}},[l,s,d]),e("figure",{className:`journey-email-excerpt journey-email-excerpt--complete ${s?"journey-email-excerpt--compact":""}`},e("div",{className:"journey-email-top"},e("span",null,"Email"),e("strong",null,l.brand)),e("div",{className:"journey-email-viewport",ref:p,role:"group","aria-label":`${l.t
765itle}. Complete design with fictional sample details; email actions are inactive.`},e("div",{className:"journey-email-canvas",ref:h})),e("figcaption",null,l.caption))}function Ic({channel:i,setChannel:s,controls:l}){return e("div",{className:"journey-channel-picker",role:"group","aria-label":"Preview message channel"},e("button",{type:"button","aria-pressed":i==="email","aria-controls":l,onClick:()=>s("email")},"Email"),e("button",{type:"button","aria-pressed":i==="text","aria-controls":l,onClick:()=>s("text")},"SMS"))}function ab({kind:i}){let[s,l]=(0,le.useState)(!1),d=(0,le.useRef)(null),p=(0,le.useRef)(null),h=(0,le.useRef)(null),f=(0,le.useRef)(null),g=(0,le.useId)(),b=i==="forms"?"Your pre-visit forms":i==="gfe"?"Your Good Faith Exam":"Your aftercare";return(0,le.useEffect)(()=>{var v;if(!s)return;let u=d.current;if(!u)return;let N=document.documentElement.style.overflow;return document.documentElement.style.overflow="hidden",u.showModal(),(v=h.current)==null||v.focus(),()=>{var w;u.open&&u.close(),document.documentElement.style.overflow=N,(w=p.current)!=null&&w.isConnected&&p.current.focus({preventScroll:!0})}},[s]),e(Y.Fragment,null,e("button",{className:"journey-document-link",ref:p,type:"button",onClick:()=>l(!0)},e(Qe,{size:20}),e("span",null,i==="forms"?"Preview form cover":i==="gfe"?"Preview exam next steps":"Preview aftercare cover"),e(J,{size:17})),e("dialog",{className:"journey-document-dialog",ref:d,"aria-labelledby":`${g}-title`,onCancel:u=>{u.preventDefault(),l(!1)},onClose:()=>l(!1),onClick:u=>{u.target===u.currentTarget&&l(!1)},onKeyDown:u=>{var N,v;u.key==="Tab"&&(u.shiftKey&&document.activeElement===h.current?(u.preventDefault(),(N=f.current)==null||N.focus()):!u.shiftKey&&document.activeElement===f.current&&(u.preventDefault(),(v=h.current)==null||v.focus()))}},s&&e(Y.Fragment,null,e("header",null,e("h2",{id:`${g}-title`},b),e("button",{ref:h,type:"button",onClick:()=>l(!1)},"Close preview",e(Ec,{size:17}))),e("div",{className:"journey-document-paper",ref:f,tabIndex:0,role:"region","aria-label":`${b} illustrated cover`},e("span",{className:"journey-paper-brand"},e(Bi,{size:21}),"Your Clinic"),e("span",{className:"journey-paper-type"},i==="forms"?"Before your visit":i==="gfe"?"When required for your treatment":"After your completed treatment"),e("h3",null,b),e("p",null,i==="forms"?"Please review and complete the forms your clinic has sent before your visit.":i==="gfe"?"Your visit requires a Good Faith Exam. Follow the clinicâs instructions to connect with the evaluating clinician.":"Follow the care instructions approved by your clinical team for your treatment."),e("ol",{className:"journey-paper-progress"},(i==="forms"?["Open your clinicâs form link","Review and complete the documents","Your clinical team reviews the record"]:i==="gfe"?["Follow the clinicâs exam instructions","Complete the exam with a qualified provider","The clinical team reviews the care decision"]:["Read your clinical teamâs instructions","Contact the clinic with questions"]).map((u,N)=>e("li",{key:u},e("span",{"aria-hidden":"true"},N+1),u))),e("dl",null,e("div",null,e("dt",null,"Patient"),e("dd",null,"Jordan · fictional example")),e("div",null,e("dt",null,i==="aftercare"?"Treatment":"Visit"),e("dd",null,"Selected treatment")),e("div",null,e("dt",null,"Questions"),e("dd",null,"Contact your clinic"))),e("p",{className:"journey-paper-note"},"Illustrated cover. ",i==="forms"?"Your clinic supplies the forms; this preview collects no information.":i==="gfe"?"The patient completes the exam. Qualified clinicians decide whether care can proceed.":"Your clinic supplies the treatment instructions. No clinical instructions are reproduced here.")))))}function jm({kind:i,step:s}){let l=i==="forms"?"A little preparation.":i==="gfe"?"Your exam, before your visit.":i==="aftercare"?"Your care continues at home.":"Thank you for visiting.";return e("figure",{className:"journey-clinic-email"},e("div",{className:"journey-email-top"},e("span",null,"Email illustration"),e("strong",null,"Your Clinic")),e("div",{className:"journey-clinic-letter"},e("span",{className:"journey-paper-brand"},e(Bi,{size:23}),"Your Clinic"),e("span",{className:"journey-paper-type"},s.context),e("h3",null,l),e("p",null,"Hi Jordan,"),e("p",null,s.message.replace(/^Hi Jordan, /,"")),i!=="review"&&e("div",{className:"journey-request-art"},e("span",{className:"journey-request-icon","aria-hidden":"true"},i==="gfe"?e(Ge,{size:27}):e(Qe,{size:27})),e("div",null,e("strong",null,i==="forms"?"Your visit forms":i==="gfe"?"Connect with the evaluating clinician":"Your treatment aftercare"),e("span",null,i==="forms"?"Review and complete the clinicâs documents":i==="gfe"?"Follow the clinicâs configured exam process":"Instructions supplied by your clinical team")),e(ab,{kind:i})),e("p",{className:"journey-letter-signoff"},"Your clinic team"),e("div",{className:"journey-letter-footer"},"Fictional example · no information is collected")),e("figcaption",null,"Complete message illustration. ",i==="gfe"?"A qualified clinician makes the care decision.":"Your clinic approves the content and timing."))}const nb="Dr. Mary · Recorded booking screens.",Ka=[{label:"Service",src:"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6abb72d3df795f5ccc79ac3e.jpg",width:500,height:800,windows:[{x:0,y:0,width:500,height:582,alt:"Dr. Mary actual booking interface: clinic header, service search and three complete service cards."}]},{label:"Provider",src:"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6abb72d460c7466bcf68645c.jpg",width:500,height:570,windows:[{x:0,y:0,width:500,height:570,alt:"Dr. Mary actual booking interface: Choose staff, treatment summary and all three staff choices."}]},{label:"Time",src:"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6abb72d3b5e520ac175261ab.jpg",width:500,height:510,windows:[{x:0,y:0,width:500,height:510,alt:"Dr. Mary actual booking interface: clinic header, date and all five captured time slots."}]},{label:"Information",src:"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6abb72d3b5e520ac175261a1.jpg",width:500,height:1400,windows:[{x:0,y:0,width:500,height:158,alt:"Dr. Mary actual booking interface: clinic header and Enter your information heading."},{x:0,y:181,width:500,height:83,alt:"Blank First name field."},{x:0,y:321,width:500,height:83,alt:"Blank Last name field."},{x:0,y:462,width:500,height:83,alt:"Blank Phone field."},{x:0,y:602,width:500,height:84,alt:"Blank Email field."}]},{label:"Payment",src:"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6abb72d3c13d4373c2f9e5d0.jpg",width:500,height:1400,windows:[{x:0,y:0,width:500,height:64,alt:"Dr. Mary actual booking interface: clinic header."},{x:0,y:686,width:500,height:163,alt:"Payment information heading and actual Pay deposit or Pay in full choices."},{x:0,y:953,width:500,height:240,alt:"Blank card number, expiration, security code, country and ZIP fields."},{x:0,y:1340,width:500,height:60,alt:"Actual Book Appointment button."}]}];function ms(i){return typeof i=="number"&&Number.isFinite(i)?Math.max(0,Math.min(Ka.length-1,Math.trunc(i))):0}function ib({stage:i}){const[s,l]=le.useState(!1),d=i.windows.reduce((h,f)=>h+358*f.height/f.width,0)+(i.windows.length-1)*8;let p=0;return s?e("p",{className:"real-booking-error",role:"status"},"This booking screen could not load. ",i.label):e("svg",{className:"evidence-booking-panel-group"+(i.windows.length>1?" evidence-booking-panel-group--payment":""),viewBox:`0 0 358 ${d}`,preserveAspectRatio:"xMidYMid meet",role:"img","aria-label":i.windows.map(h=>h.alt).join(" ")},i.windows.map((h,f)=>{const g=358*h.height/h.width,b=p;return p+=g+8,e("svg",{key:f,className:"evidence-booking-panel",x:0,y:b,width:358,height:g,viewBox:`${h.x} ${h.y} ${h.width} ${h.height}`,preserveAspectRatio:"xMidYMid meet","aria-hidden":!0},e("image",{href:i.src,x:0,y:0,width:i.width,height:i.height,preserveAspectRatio:"none",onError:()=>l(!0)}))}))}function Su({step:i,onStep:s,full:l=!1}={}){const[d,p]=le.useState(0),h=ms(i===void 0?d:i),f=Ka[h],g=le.useRef(null),b=le.useRef(null),u=v=>{const w=ms(v);i===void 0&&p(w),s&&s(w)},N=v=>{const w=ms(v),C=g.current;if(!C){u(w);return}const A=w*C.clientWidth;if(Math.abs(C.scrollLeft-A)<2){u(w);return}C.scrollTo({left:A,behavior:window.matchMedia("(prefers-reduced-motion: reduce)").matches?"auto":"smooth"})};return le.useEffect(()=>()=>{b.current!==null&&clearTimeout(b.current)},[]),le.useLayoutEffect(()=>{const v=g.current;if(!v)return;const w=()=>v.scrollTo({left:h*v.clientWidth,behavior:"auto"});Math.round(v.scrollLeft/Math.max(1,v.clientWidth))!==h&&w();const C=v.children[h],A=document.activeElement;C&&A&&A!==v&&v.contains(A)&&!C.contains(A)&&C.focus({preventScroll:!0});const z=typeof ResizeObserver=="function"?new ResizeObserver(w):null;return z==null||z.observe(v),()=>z==null?void 0:z.disconnect()},[h,l]),e("div",{className:"real-booking-screens evidence-booking-swipe evidence-booking-fit"+(l?" real-booking-screens--full":""),"data-booking-step":h},e("div",{className:"evidence-booking-rail",ref:g,tabIndex:0,role:"region","aria-roledescription":"carousel","aria-label":"Dr. Mary booking screens. Swipe left or right, or use the arrow keys.",onKeyDown:v=>{let w=h;if(v.key==="ArrowRight")w=Math.min(Ka.length-1,h+1);else if(v.key==="ArrowLeft")w=Math.max(0,h-1);else if(v.key==="Home")w=0;else if(v.key==="End")w=Ka.length-1;else return;v.preventDefault(),N(w)},onScroll:v=>{const w=v.currentTarget;b.current!==null&&clearTimeout(b.current),b.current=setTimeout(()=>u(Math.round(w.scrollLeft/Math.max(1,w.clientWidth))),140)}},Ka.map((v,w)=>e("div",{key:v.label,className:"evidence-booking-slide",tabIndex:h===w?0:-1,role:"group","aria-roledescription":"slide","aria-label":`${w+1} of ${Ka.length}: ${v.label}`,"aria-hidden":h!==w},e(ib,{stage:v}
765)))),e("div",{className:"evidence-booking-controls"},e("span",{className:"evidence-booking-position","aria-live":"polite","aria-atomic":"true"},`${h+1} / ${Ka.length}`,e("span",{className:"booking-stage-label"},` · ${f.label}`)),e("div",{className:"evidence-booking-dots",role:"group","aria-label":"Choose a booking screen"},Ka.map((v,w)=>e("button",{key:v.label,type:"button","aria-label":`Show ${v.label} (${w+1} of ${Ka.length})`,"aria-pressed":h===w,onClick:()=>N(w)},e("span",{"aria-hidden":!0}))))))}function Kr({initialStep:i=0,label:s="Online booking"}={}){const[l,d]=le.useState(()=>ms(i));return e(Re,{label:s,caption:nb,className:"real-booking-frame evidence-booking-frame",renderFull:()=>e(Su,{step:l,onStep:d,full:!0})},e(Su,{step:l,onStep:d}))}function Yi(i){const s=String(i||"").split("/").pop().replace(/\.[a-z]+$/,""),l={"booking-v2-menu":0,"booking-v2-cart":0,"booking-v2-staff":1,"booking-v2-calendar":2,"booking-v2-checkout":4}[s];return typeof l=="number"?l:null}function rb(){return e("div",{className:"mjs-preview mjs-preview--portal"},e("div",{className:"mjs-portal-brand"},e("span",{className:"mjs-portal-mark","aria-hidden":"true"},"+"),e("strong",null,"Your clinic")),e("h3",{className:"mjs-portal-heading"},"Get ready for your visit."),e("div",{className:"mjs-portal-tasks"},e("div",{className:"mjs-portal-task"},e("span",{className:"mjs-portal-icon","aria-hidden":"true"}),e("div",{className:"mjs-portal-task-copy"},e("strong",null,"Medical review (GFE)"),e("small",null,"When required"))),e("div",{className:"mjs-portal-task"},e("span",{className:"mjs-portal-icon","aria-hidden":"true"}),e("div",{className:"mjs-portal-task-copy"},e("strong",null,"Health information"),e("small",null,"Intake forms"))),e("div",{className:"mjs-portal-task"},e("span",{className:"mjs-portal-icon","aria-hidden":"true"}),e("div",{className:"mjs-portal-task-copy"},e("strong",null,"Treatment consents"),e("small",null,"Read and sign")))))}function ob(){return e("div",{className:"mjs-preview mjs-preview--retention"},e("ol",{className:"mjs-retention-timeline"},e("li",null,e("span",{className:"mjs-retention-marker","aria-hidden":"true"},"01"),e("div",{className:"mjs-retention-copy"},e("strong",null,"Completed visit"),e("small",null,"Treatment recorded"))),e("li",null,e("span",{className:"mjs-retention-marker","aria-hidden":"true"},"02"),e("div",{className:"mjs-retention-copy"},e("strong",null,"Aftercare & review requests"),e("small",null,"Clinic-approved instructions"))),e("li",null,e("span",{className:"mjs-retention-marker","aria-hidden":"true"},"03"),e("div",{className:"mjs-retention-copy"},e("strong",null,"Invite the next visit"),e("small",null,"Timing fits the treatment"))),e("li",null,e("span",{className:"mjs-retention-marker","aria-hidden":"true"},"04"),e("div",{className:"mjs-retention-copy"},e("strong",null,"Patient reactivation"),e("small",null,"If the patient has not returned")))))}function Dm(i){if(!Ce())return e(cc,i);const l=zm[i.kind];if(!l)return e(cc,i);const d=i.kind,p=d==="review"?"The patient chooses whether to leave a review. No rating is assumed.":d==="gfe"?"No automatic clearance is represented by this illustration.":"Message illustration · fictional details. Matching SMS is an illustration; timing is configured for your clinic.";let h;return d==="reminder"?h=e(Za,{title:"Appointment messages",rows:[{label:"Confirmation",value:"Appointment booked"},{label:"Reminder",value:"Before the appointment"},{label:"Form reminder",value:"Only while the required forms are recorded as outstanding"}]}):d==="review"?h=e("div",{className:"mgc-message-preview"},e("span",{className:"mgc-message-label"},l.steps[1].context),e("p",null,l.steps[1].message),e(ea,{rows:l.steps.map(f=>({title:f.label})),kind:"timeline"})):d==="recovery"?h=e(ea,{kind:"parallel",rows:l.steps.map(f=>({title:f.label,body:f.note}))}):d==="conversation"?h=e("div",{className:"mgc-message-preview"},e("span",{className:"mgc-message-label"},l.steps[0].label),e("p",null,l.steps[0].message),e(Za,{rows:[{label:l.steps[1].label,value:l.steps[1].title}]})):h=e(ea,{rows:l.steps.map(f=>({title:f.label,body:f.condition||f.context,conditional:f.label==="Outstanding"})),kind:"timeline"}),e(Re,{label:l.label,caption:p,renderFull:()=>e(cc,i),className:"mgc-core mgc-core--"+d},h)}function Pm(i){return Ce()?e(Re,{label:"Treatment-specific return visits",caption:"Illustrative retention journey · timing configured for the treatment.",renderFull:()=>e(Eu,i),className:"mgc-core mgc-core--retention"},e(ob)):e(Eu,i)}
765function sb(i){return Ce()?e(Re,{label:"Aftercare, in the clinicâs voice",caption:"Email and SMS illustrations with a fictional recipient. The cover preview contains no treatment instructions.",renderFull:()=>e(Cu,i),className:"mgc-core mgc-core--aftercare"},e("div",{className:"mgc-document-preview"},e("span",{className:"mgc-document-mark","aria-hidden":"true"},e(Qe,{size:28})),e("h3",null,"Your aftercare"),e("p",null,"Instructions supplied by your clinical team"),e(Za,{rows:[{label:"After the completed treatment",value:"Your clinic supplies and approves the treatment-specific instructions."}]}))):e(Cu,i)}function lb(i){return Ce()?e(Re,{label:"A personal occasion",caption:"Original email designs and matching SMS illustrations. No discount or treatment offer is assumed.",renderFull:()=>e(Tu,i),className:"mgc-core mgc-core--birthday"},e(ea,{kind:"parallel",rows:[{title:"Sunshine birthday",body:li["sunshine-birthday"].title},{title:"Welcome back",body:li.winback.title}]})):e(Tu,i)}function Om(i){return Ce()?e("div",{className:"mgc-email-gallery"},!i.compact&&e("h3",{className:"mgc-heading"},"A voice of their own."),e(Re,{label:"Selected branded email designs",caption:"Shortened clinic email preview · fictional details. Complete clinic designs with fictional sample values. Preview actions are inactive.",renderFull:()=>e(Ru,i),className:"mgc-core mgc-core--email"},e("div",{className:"mgc-letter-preview"},e("span",{className:"mgc-letter-brand"},li.reminder.brand),e("span",{className:"mgc-message-label"},"Appointment reminder"),e("h3",null,"Weâll see you tomorrow."),e(Za,{rows:[{label:"Your visit",value:"Consultation"},{label:"Date",value:"Tuesday, October 20"},{label:"Time",value:"10:30am"}]})))):e(Ru,i)}function cb(i){return Ce()?e(Re,{label:"A value with a clear path.",caption:"Gift-card workflow illustration. Checkout support and clinic terms are reviewed separately.",renderFull:()=>e(Iu,i),className:"mgc-core mgc-core--gift"},e("div",{className:"mgc-gift-preview"},e("div",{className:"mgc-gift-card"},e(Vi,{size:24}),e("span",null,"Your Clinic"),e("strong",null,"A little time for yourself.")),e(ea,{rows:[{title:"Choose the gift",body:"Card design, value and recipient."},{title:"Share with the recipient",body:"The configured delivery details."},{title:"Redeem where supported",body:"Review the used and remaining value."}]}))):e(Iu,i)}function db(i){if(!Ce())return e(dc,i);const l=_m[i.kind];if(!l)return e(dc,i);let d;return i.kind==="packages"?d=e(Za,{title:"A series of 3 visits.",rows:[{label:"Eligible service",value:"Selected treatment"},{label:"Starting sessions",value:"3"},{label:"Deduction rule",value:"Qualifying completed visit"}]}):i.kind==="subscriptions"?d=e(ea,{kind:"parallel",rows:[{title:"Billing",body:"Define the recurring terms."},{title:"Benefits",body:"Define what members receive."}]}):d=e(ea,{rows:l.steps.map(p=>({title:p}))}),e(Re,{label:l.label,caption:l.caption,renderFull:()=>e(dc,i),className:"mgc-core mgc-core--"+i.kind},d)}function pb(i){return Ce()?e(Re,{label:"Pre-visit preparation",caption:"Patient portal preview · illustrative design.",renderFull:()=>e(rm,i),className:"mgc-core mgc-core--preparation"},e(rb)):e(rm,i)}function ub(i){return Ce()?e("div",{className:"workflow-motion mgc-workflow"},e("div",{className:"workflow-motion-heading"},e("div",null,e("span",{className:"eyebrow"},"AUTOMATED FOLLOW-UP FOR EACH TREATMENT"),e("h2",null,"See the follow-up take shape."))),e(Re,{label:"Automated follow-up for each treatment",caption:"Illustrated sequence. Messages, timing and clinical steps are configured for your clinic.",renderFull:()=>e(om,i),className:"mgc-core mgc-core--workflow"},e(ea,{rows:[{title:"A patient books"},{title:"Forms & reminders"},{title:"Your team treats"},{title:"Aftercare & reviews"},{title:"A reason to return",conditional:!0}]}))):e(om,i)}function Fm(i){return Ce()?e("section",{className:"section booking-walkthrough",id:"booking"},e("div",{className:"section-heading centered"},e(Fe,null,"ONLINE BOOKING"),e("h2",null,"This is what booking",e("br",null),"looks like for your patients."),e("p",null,"A service-led booking experience, configured with your treatments, staff and availability.")),e(Kr,{label:"Online booking"})):e(Py,i)}function mb(i){return Ce()?e(Re,{label:"Your Sunshine visit is confirmed",caption:"Branded appointment email created for Sunshine Mobile Wellness. Sample preview.",renderFull:()=>e(mm,i),className:"mgc-core mgc-core--confirmation"},e("div",{className:"mgc-letter-preview"},e("span",{className:"mgc-letter-brand"},"Sunshine Mobile Wellness"),e("span",{className:"mgc-message-label"},"Appointment confirmed"),e("h3",null,"Your visit is on the calendar."),e(Za,{rows:[{label:"Your visit",value:"Consultation"},{label:"Date",value:"Tuesday, October 20"},{label:"Time",value:"10:30am"}]}))):e(mm,i)}function cc({kind:i,compact:s=!1,compactReminder:l="reminder"}){let d=zm[i],p=Tc(d.steps.length,i==="reminder"||i==="review"?1:0,!1),h=(0,le.useId)(),f=d.steps[p.index],[g,b]=(0,le.useState)("email"),[u,N]=(0,le.useState)("reminder"),v=["reminder","forms","gfe","review"].includes(i),w=i==="reminder"&&p.index===2,C=i==="reminder"&&!w?p.index===0?"confirmation":s?l:u:i==="review"&&p.index===1?"kc-review":void 0,A=C?li[C].brand:"Your Clinic",z=f.message.replace(/Your Clinic/g,A).replace(C==="mary-reminder"?"Tuesday 10:30am":"__no_sample_match__","Wednesday 9:30am"),S=C?e(Hi,{name:C,compact:s}):e(jm,{kind:w?"forms":i,step:f});return e("div",{className:`patient-message-scene patient-message-scene--${i} ${s?"patient-message-scene--compact journey-single-example":""} ${v?"patient-message-scene--multichannel":""}`,ref:p.ref,"data-channel":s?"email":g},e("div",{className:"journey-visual-toolbar"},e("p",null,s?"Email + SMS":d.label),v&&!s&&e(Ic,{channel:g,setChannel:b,controls:`${h}-scene`})),!s&&e("div",{className:"journey-state-picker",role:"group","aria-label":d.label},d.steps.map((R,j)=>e("button",{type:"button",key:R.label,"aria-pressed":p.index===j,"aria-controls":`${h}-scene`,onClick:()=>p.choose(j)},R.label))),!s&&i==="reminder"&&p.index===1&&e("label",{className:"journey-treatment-choice"},"Clinic design",e("select",{value:u,onChange:R=>N(R.target.value)},e("option",{value:"reminder"},"Sunshine Mobile Wellness"),e("option",{value:"skin-bar-reminder"},"Skin Bar New York"),e("option",{value:"mary-reminder"},"Medical Esthetics & Wellness · design specimen"))),f.condition&&e("p",{className:"journey-condition"},e(Qe,{size:17}),f.condition),e("div",{className:"patient-message-body",id:`${h}-scene`,"aria-live":"off"},v?e("div",{className:"journey-email-stage"},S):e("div",{className:"journey-message-context"},e("span",{className:"journey-context-label"},f.context),e("h3",null,f.title),e("p",null,f.note)),e("div",{className:"journey-phone-stage",key:`phone-${p.index}`},e(qr,{message:z,response:f.response,subject:A,firstSender:i==="conversation"?"patient":"clinic"}))),e("p",{className:"journey-visual-caption"},v?f.note:"Message illustration · fictional details.",v&&!s?" Matching SMS is an illustration; timing is configured for your clinic.":""))}var hb=["Email invitation","Wait & check","Text follow-up"];function Eu({compact:i=!1}){let s=Tc(3,0,!i),l=(0,le.useId)(),d={"evidence-rebook":{label:"Evidence MD · skin visit",message:"Hi Jordan, ready to plan your next skin visit at Evidence MD? Choose a time using our booking link, or reply if you would like help with the next step."},"sunshine-rebook":{label:"Sunshine Mobile Wellness · wellness visit",message:"Hi Jordan, ready to plan your next wellness visit with Sunshine Mobile Wellness? Choose a time using our booking link, or reply if you would like help choosing a visit."},"skin-bar-rebook":{label:"Skin Bar New York · rebooking design specimen",message:"Hi Jordan, ready to plan your next visit at Skin Bar New York? Choose a time that works for you using our booking link, or reply if you would like help planning the next step."},"mary-rebook":{label:"Dr. Mary · rebooking design specimen",message:"Hi Jordan, ready to plan your next visit at Medical Esthetics & Wellness? Use our booking link to choose a time, or reply if you would like help with the next step."}},[p,h]=(0,le.useState)("evidence-rebook");return i?e("div",{className:"treatment-return-journey treatment-return-journey--compact journey-single-example"},e("div",{className:"journey-message-pair"},e("div",{className:"journey-email-stage"},e(Hi,{name:"sunshine-rebook",compact:!0})),e("div",{className:"journey-phone-stage"},e(qr,{subject:"Sunshine Mobile Wellness",message:"Hi Jordan, ready to plan your next wellness visit? Reply if you would like help choosing a time."}))),e("p",{className:"journey-visual-caption"},"A return invitation after a completed visit. Timing is configured for the treatment.")):e("div",{className:`treatment-return-journey treatment-return-journey--v7 ${i?"treatment-return-journey--compact":""} ${s.running?"is-playing":""}`,ref:s.ref},e("div",{className:"journey-visual-toolbar"},e("p",null,"Treatment-specific return visits"),e("div",null,!s.reduced&&e("button",{type:"button",onClick:s.toggle},s.playing?e("span",{className:"journey-pause","aria-hidden":"true"}):e(Ja,{size:14})," ",s.playing?"Pause":"Play"),e("button",{type:"button",onClick:s.replay},e(Qa,{size:14}),s.reduced?"Start over":"Replay"))),e("label",{className:"journey-treatment-choice"},"Email example",e("select",{value:p,onChange:f=>{h(f.target.value),s.choose(0)}},Object.entries(d).map(([f,g])=>e("option",{key:f,value:f},g.label)))),e("ol",{className:"return-journey-steps"},hb.map((f,g)=>e("li",{key:f},e("button",{type:"button","aria-pressed":s.index===g,"aria-controls":`${l}-visual`,onClick:()=>s.choose(g)},e("span",{"aria-hidden":"true"},"0",g+1),f,e("i",{"aria-hidden":"true"}))))),e("div",{className:`return-journey-stage return-journey-stage--${s.index}`,id:`${l}-visual`,"aria-live":"off"},e("div",{className:"return-path-rail"},e("span",{className:"journey-context-label"},"After the completed treatment"),e("h3",null,s.index===0?"A reason to return.":s.index===1?"Give it the right interval.":"Keep the next step simple."),e("ol",null,e("li",{"data-active":s.index===0},e("span",null,"Email"),e("strong",null,"Relevant return invitation")),e("li",{"data-active":s.index===1},e("span",null,"Wait"),e("strong",null,"Clinic-approved interval")),e("li",{"data-active":s.index===2},e("span",null,"Check"),e("strong",null,"Has the patient booked again?")))),s.index===0?e(Hi,{name:p}):s.index===1?e("div",{className:"return-wait-board"},e("span",{className:"journey-paper-type"},"Configured for this treatment"),e(He,{size:36}),e("h4",null,"Wait, then check."),e("div",{className:"return-conditional-branch"}
765,e("p",null,"New appointment?"),e("span",null,"Yes â leave this reminder path"),e("span",null,"No â the agreed follow-up")),e("p",{className:"journey-visual-caption"},"The clinic approves the interval and exit rules. No fixed medical cadence is shown.")):e(qr,{subject:li[p].brand,message:d[p].message})),e("p",{className:"journey-visual-caption"},"Workflow illustration with branded email designs and fictional samples. Rebooking and later reactivation are configured for the treatment."))}function Cu({compact:i=!1}){let[s,l]=(0,le.useState)("email"),d=(0,le.useId)(),p={label:"Aftercare",title:"Your aftercare",context:"After the completed treatment",message:"Hi Jordan, thank you for your visit. Please use the aftercare information shared by Your Clinic and follow the instructions from your clinical team. Reply here if you need help finding your document.",note:"Your clinic supplies and approves the treatment-specific instructions."};return e("div",{className:`aftercare-visual aftercare-visual--channels ${i?"journey-single-example":""}`,"data-channel":s},e("div",{className:"journey-visual-toolbar"},e("p",null,"Aftercare, in the clinicâs voice"),!i&&e(Ic,{channel:s,setChannel:l,controls:d})),e("div",{id:d,className:"journey-message-pair"},e("div",{className:"journey-email-stage"},e(jm,{kind:"aftercare",step:p})),!i&&e("div",{className:"journey-phone-stage"},e(qr,{message:p.message}))),e("p",{className:"journey-visual-caption"},"Email and SMS illustrations with a fictional recipient. The cover preview contains no treatment instructions."))}function Tu({compact:i=!1}){let[s,l]=(0,le.useState)("sunshine-birthday"),[d,p]=(0,le.useState)("email"),h=(0,le.useId)(),f=i?"sunshine-birthday":s,g=li[f].brand;return e("div",{className:`birthday-visual birthday-visual--email ${i?"journey-single-example":""}`,"data-channel":d},!i&&e(Y.Fragment,null,e("div",{className:"journey-visual-toolbar"},e("p",null,"A personal occasion"),e(Ic,{channel:d,setChannel:p,controls:h})),e("div",{className:"journey-state-picker",role:"group","aria-label":"Branded greetings and reactivation"},e("button",{type:"button","aria-pressed":s==="sunshine-birthday","aria-controls":h,onClick:()=>l("sunshine-birthday")},"Sunshine birthday"),e("button",{type:"button","aria-pressed":s==="kc-birthday","aria-controls":h,onClick:()=>l("kc-birthday")},"KC birthday"),e("button",{type:"button","aria-pressed":s==="winback","aria-controls":h,onClick:()=>l("winback")},"Welcome back"))),e("div",{className:"birthday-visual-body journey-message-pair",id:h,"aria-live":"off"},e("div",{className:"journey-email-stage"},e(Hi,{name:f,compact:i})),!i&&e("div",{className:"journey-phone-stage"},e(qr,{subject:g,message:s==="winback"?`Hi Jordan, we would be happy to welcome you back to ${g}. Reply if you would like help with your next appointment.`:`Happy birthday, Jordan! Wishing you a lovely day from everyone at ${g}.`}))),e("p",{className:"journey-visual-caption"},i?"A complete original birthday design with fictional sample details.":"Original email designs and matching SMS illustrations. No discount or treatment offer is assumed."))}function fb(){let[i,s]=(0,le.useState)(!0),l=(0,le.useId)();return e("div",{className:"package-example"},e("div",{className:"package-series-card"},e(si,{size:28}),e("span",null,"Fictional package example"),e("h3",null,"A series of 3 visits."),e("dl",null,e("div",null,e("dt",null,"Eligible service"),e("dd",null,"Selected treatment")),e("div",null,e("dt",null,"Starting sessions"),e("dd",null,"3")),e("div",null,e("dt",null,"Deduction rule"),e("dd",null,"Qualifying completed visit")))),e("div",{className:"package-example-ledger"},e("h3",null,"Which visit changes the balance?"),e("div",{className:"journey-state-picker",role:"group","aria-label":"Example package visit"},e("button",{type:"button","aria-pressed":i,"aria-controls":l,onClick:()=>s(!0)},"Eligible completed visit"),e("button",{type:"button","aria-pressed":!i,"aria-controls":l,onClick:()=>s(!1)},"Canceled appointment")),e("div",{id:l,"aria-live":"off"},e("table",null,e("caption",null,"Illustrated session calculation"),e("tbody",null,e
765("tr",null,e("th",{scope:"row"},"Starting sessions"),e("td",null,"3")),e("tr",null,e("th",{scope:"row"},i?"Qualifying visit":"Canceled appointment"),e("td",null,i?"â1":"0")),e("tr",null,e("th",{scope:"row"},"Sessions remaining"),e("td",null,i?"2":"3")))),e("p",null,i?"The configured qualifying-visit rule deducts a session.":"A canceled appointment does not meet this exampleâs completed-visit rule.")),e("span",{className:"journey-sample-stamp"},"Fictional arithmetic · clinic-defined quantity and eligibility.")))}function Iu(){return e("div",{className:"gift-card-visual"},e("div",{className:"gift-card-art"},e("span",null,"Your Clinic"),e(Vi,{size:34}),e("h3",null,"A little time",e("br",null),"for yourself."),e("span",null,"Gift-card design illustration")),e("div",{className:"gift-card-steps"},e("h3",null,"A value with a clear path."),e("ol",null,e("li",null,e("span",null,"01"),e("div",null,e("strong",null,"Choose the gift"),e("p",null,"Card design, value and recipient."))),e("li",null,e("span",null,"02"),e("div",null,e("strong",null,"Share with the recipient"),e("p",null,"The configured delivery details."))),e("li",null,e("span",null,"03"),e("div",null,e("strong",null,"Redeem where supported"),e("p",null,"Review the used and remaining value.")))),e("p",{className:"journey-visual-caption"},"Gift-card workflow illustration. Checkout support and clinic terms are reviewed separately.")))}function Ru({compact:i=!1}){let[s,l]=(0,le.useState)("reminder"),d=(0,le.useId)(),p=[["reminder","Sunshine Mobile Wellness","Appointment reminder"],["skin-bar-reminder","Skin Bar New York","Appointment reminder"],["mary-reminder","Medical Esthetics & Wellness","Reminder design specimen"],["evidence-rebook","Evidence MD","Treatment return invitation"],["kc-birthday","KC Aesthetics","Birthday greeting"],["kc-review","KC Aesthetics","Review invitation"]];return i?e("div",{className:"email-design-gallery email-design-gallery--compact journey-single-example"},e(Hi,{name:"reminder",compact:!0})):e("div",{className:"email-design-gallery"},e("div",{className:"email-design-index"},e("h3",null,"A voice of their own."),e("div",{role:"group","aria-label":"Selected branded email designs"},p.map(([h,f,g])=>
765e("button",{type:"button",key:h,"aria-pressed":s===h,"aria-controls":d,onClick:()=>l(h)},e("span",null,f),e("strong",null,g),e(J,{size:17})))),e("p",{className:"journey-visual-caption"},"Complete clinic designs with fictional sample values. Preview actions are inactive.")),e("div",{id:d,"aria-live":"off"},e(Hi,{name:s})))}var _m={"ask-ai":{label:"A working conversation",steps:["Compose","Continue","Review"],caption:"Ask AI workflow illustration · fictional marketing task. Responses need human review; no live business or patient data is shown."},"in-room":{label:"Choose a visit task",steps:["Capture Photo","GFE Request","Check Out"],caption:"In-Room action illustration · fictional patient. These observed action names do not represent a saved photo, completed exam or payment."},packages:{label:"The treatment series",steps:["Package terms","Eligible visit","Session record"],caption:"Package-tracking illustration. Services, quantities and completion rules are configured for your clinic; no patient balance is shown."},subscriptions:{label:"Billing and benefits",steps:["Membership terms","Recurring billing","Benefit rules"],caption:"Membership illustration. Recurring billing and benefits are separate; no automatic credit wallet or member discount is shown."}};function dc({kind:i}){let s=_m[i],l=Tc(3),d=(0,le.useId)();return i==="packages"?e("div",{className:"feature-operations-visual feature-operations-visual--packages"},e(fb,null),e("p",{className:"journey-visual-caption"},"Package workflow illustration · fictional example. Starting balances and qualifying-visit rules are approved for each clinic.")):e("div",{className:`feature-operations-visual feature-operations-visual--${i} ${l.running?"is-playing":""}`,ref:l.ref},e("div",{className:"journey-visual-toolbar"},e("p",null,s.label),e("div",null,!l.reduced&&e("button",{type:"button",onClick:l.toggle},l.playing?e("span",{className:"journey-pause","aria-hidden":"true"}):e(Ja,{size:14})," ",l.playing?"Pause":"Play"),e("button",{type:"button",onClick:l.replay},e(Qa,{size:14}),l.reduced?"Start over":"Replay"))),e("div",{className:"journey-state-picker",role:"group","aria-label":s.label},s.steps.map((p,h)=>e("button",{type:"button",key:p,"aria-pressed":l.index===h,"aria-controls":`${d}-scene`,onClick:()=>l.choose(h)},p))),e("div",{className:"operations-scene",id:`${d}-scene`,"aria-live":"off"},i==="ask-ai"&&e("div",{className:"ai-working-story"},e("div",{className:"ai-conversation-index"},e(xs,{size:19}),e("span",null,"Return to a conversation"),e("p",null,"Example marketing task"),e("strong",null,"Rebooking message"),e("span",null,"Use the context you provide.")),e("div",{className:"ai-working-sheet",key:l.index},e("span",{className:"operations-label"},e(In,{size:18}),"Illustrated working conversation"),l.index===0?e(Y.Fragment,null,e("h3",null,"Start with a clear brief."),e("div",{className:"ai-example-prompt"},e("span",null,"Example prompt"),e("p",null,"Help me draft a short invitation for a patient to contact our team about their next appointment.")),e("p",{className:"operations-note"},"Add the clinicâs approved context. This example supplies no patient record.")):l.index===1?e(Y.Fragment,null,e("h3",null,"Refine it in the same thread."),e("div",{className:"ai-example-prompt"},e("span",null,"Follow-up prompt"),e("p",null,"Make it warmer, keep it concise, and invite a reply without promising a result.")),e("div",{className:"ai-draft"},e("span",null,"Illustrative draft"),e("p",null,"âWe would be happy to see you again. Reply if you would like help choosing your next appointment.â"))):e(Y.Fragment,null,e("h3",null,"Your team makes the final call."),e("ul",{className:"operations-checklist"},e("li",null,e(De,{size:17}),"Check the clinicâs tone."),e("li",null,e(De,{size:17}),"Verify the appointment path."),e("li",null,e(De,{size:17}),"Approve the wording before use.")),e("p",{className:"operations-note"},"The draft stays a starting point. No message is sent by this illustration.")))),i==="in-room"&&e("div",{className:"inroom-task-story"},e("div",{className:"inroom-patient"},e(Ge,{size:28}),e("div",null,e("span",null,"Selected patient · fictional"),e("strong",null,"Jordan")),e("p",null,"Confirm the right record before opening a task.")),e("div",{className:"inroom-action-path","aria-hidden":"true"},e("i",null),e(J,{size:22})),e("div",{className:"inroom-action-sheet",key:l.index},e("span",{className:"inroom-action-icon"},l.index===0?e(Rn,{size:36}):l.index===1?e(Qe,{size:36}):e(It,{size:36})),e("span",{className:"operations-label"},"Visit action"),e("h3",null,s.steps[l.index]),e("p",null,l.index===0?"Open photo capture for the selected patient. The team confirms the image and its destination.":l.index===1?"Request the exam through the clinicâs process when required for the treatment. Clinical review still determines whether care can proceed.":"Open the next payment task when the team is ready to conclude the visit. Review the payment outcome separately."),e("span",{className:"operations-handled-by"},l.index===0?"Photo review stays with the clinic":l.index===1?"When required · no automatic clearance":"Checkout action · no charge shown"))),i==="subscriptions"&&e("div",{className:"subscription-story"},e("div",{className:"subscription-terms"},e(xt,{size:26}),e("span",null,"Membership agreement"),e("strong",null,"One membership.",e("br",null),"Two sets of rules.")),e("div",{className:"subscription-lanes"},e("div",{className:`subscription-lane ${l.index===1?"is-current":""}`}
765,e("span",null,e(It,{size:23}),"Billing"),e("h3",null,l.index===0?"Define the recurring terms.":l.index===1?"Review subscription and payment state.":"Keep the billing record in view."),e("p",null,l.index===0?"Price, interval and patient terms are approved by the clinic.":l.index===1?"The connected payment setup handles the configured recurring subscription. Staff review the records.":"A billing record does not by itself define which benefits staff should apply."),e("span",{className:"subscription-lane-footer"},"Recurring subscription")),e("div",{className:`subscription-lane subscription-lane--benefits ${l.index===2?"is-current":""}`},e("span",null,e(Bi,{size:23}),"Benefits"),e("h3",null,l.index===2?"Apply the clinicâs benefit rules.":"Define what members receive."),e("p",null,l.index===2?"Staff follow the separate benefit process agreed for the membership.":"The clinic specifies the benefits, eligibility and how its team applies them."),e("span",{className:"subscription-lane-footer"},"Separately defined process"))))),e("p",{className:"journey-visual-caption"},s.caption))}function Um(i){let[s,l]=(0,Wt.useState)(0),[d,p]=(0,Wt.useState)(!1),[h,f]=(0,Wt.useState)(!0),[g,b]=(0,Wt.useState)(!1),[u,N]=(0,Wt.useState)(!0),v=(0,Wt.useRef)(null);return(0,Wt.useEffect)(()=>{let w=matchMedia("(prefers-reduced-motion: reduce)"),C=()=>{f(w.matches),w.matches&&p(!1)};C(),w.addEventListener("change",C);let A=()=>{N(!document.hidden),document.hidden&&p(!1)};document.addEventListener("visibilitychange",A);let z=new IntersectionObserver(([S])=>b(S.isIntersecting),{threshold:.15});return v.current&&z.observe(v.current),()=>{w.removeEventListener("change",C),document.removeEventListener("visibilitychange",A),z.disconnect()}},[]),(0,Wt.useEffect)(()=>{if(!d||h||!g||!u)return;let w=setTimeout(()=>{s===i-1?p(!1):l(s+1)},3200);return()=>clearTimeout(w)},[s,d,h,g,u,i]),{ref:v,active:s,playing:d&&g&&u&&!h,reduced:h,choose:w=>{l(w),p(!1)},toggle:()=>{d?p(!1):(s===i-1&&l(0),p(!0))}}}var hs=[{label:"Book",title:"The next appointment is right here.",body:"Open appointment booking from the selected patient.",icon:He,rect:[14,169,189,190]},{label:"Check in",title:"Move from arrival to the visit.",body:"Keep arrival actions beside the patientâs clinical workspace.",icon:Ge,rect:[215,169,189,190]},{label:"GFE",title:"Find the required exam step.",body:"The GFE Request control starts the clinicâs configured exam process.",icon:Qe,rect:[416,169,189,190]},{label:"Forms",title:"Reach the approved consent form.",body:"The selected patient stays in context when your team opens form delivery.",icon:Qe,rect:[617,169,189,190]},{label:"Photo",title:"Capture the visit visually.",body:"A dedicated Capture Photo action sits alongside the visit tools.",icon:Rn,rect:[818,169,190,190]},{label:"Contact",title:"Keep the person in view.",body:"Open contact details without starting again from a separate patient search.",icon:Ge,rect:[215,370,189,190]},{label:"Charge",title:"Checkout stays within reach.",body:"Open the charge action for the selected patient, using your configured payment setup.",icon:It,rect:[14,571,994,61]}];function zu(){let i=Um(hs.length),s=(0,Wt.useId)(),l=hs[i.active],d=l.icon;return e("div",{className:"clinical-motion inroom-action-tour",ref:i.ref,"data-playing":i.playing},e("header",null,e("div",null,e("p",{className:"eyebrow"},"ONE PATIENT. THE NEXT ACTION WITHIN REACH."),e("h2",null,"A simpler way through the visit.")),!i.reduced&&e("button",{type:"button",className:"clinical-motion-play",onClick:i.toggle},i.playing?e("span",{"aria-hidden":"true"},"â
¡"):e(Ja,{size:16})," ",i.playing?"Pause tour":"Play the tour")),e("div",{className:"inroom-action-layout"},e("div",null,e("div",{className:"inroom-action-native"},e("img",{src:"/assets/product-v7/in-room-desktop.jpg",width:"1680",height:"896",alt:"Native In-Room workspace with its visit actions, using an existing demonstration patient.",loading:"lazy"}),e("span",{className:"inroom-action-highlight","aria-hidden":"true",style:{left:`${l.rect[0]/1020*100}%`,top:`${l.rect[1]/650*100}%`,width:`${l.rect[2]/1020*100}%`,height:`${l.rect[3]/650*100}%`}})),e("p",{className:"clinical-source"},"Native interface · guided highlights · demonstration record")),e("div",{className:"inroom-task-detail",id:s},e("span",{className:"clinical-task-icon"},e(d,{size:25})),e("p",{className:"eyebrow"},String(i.active+1).padStart(2,"0")," / 07"),e("h3",null,l.title),e("p",null,l.body))),e("div",{className:"inroom-task-choices",role:"group","aria-label":"Explore In-Room actions"},hs.map((p,h)=>e("button",{key:p.label,type:"button","aria-pressed":i.active===h,"aria-controls":s,onClick:()=>i.choose(h)},e(p.icon,{size:18}),p.label))))}var gb=[["forehead","Forehead"],["cheeks","Cheeks"],["jaw","Jawline"]],bb=[["arms","Upper arms"],["abdomen","Abdomen"],["thighs","Thighs"]];function Lu(){let[i,s]=(0,Wt.useState)(!1),[l,d]=(0,Wt.useState)(!1),[p,h]=(0,Wt.useState)([]),f=Um(3),g=(0,Wt.useId)(),b=i?bb:gb;(0,Wt.useEffect)(()=>{f.playing&&h(b.slice(0,f.active+1).map(N=>N[0]))},[f.playing,f.active,i]);let u=N=>{f.choose(f.active),h(v=>v.includes(N)?v.filter(w=>w!==N):[...v,N])};return e("div",{className:"clinical-motion treatment-area-explorer",ref:f.ref,"data-playing":f.playing},e("header",null,e("div",null,e("p",{className:"eyebrow"},"VISUAL TREATMENT DOCUMENTATION"),e("h2",null,"Point to the area.",e("br",null),"Keep the detail with the note.")),!f.reduced&&e("button",{type:"button",className:"clinical-motion-play",onClick:()=>
765{f.playing||h([]),f.toggle()}},f.playing?e("span",{"aria-hidden":"true"},"â
¡"):e(Ja,{size:16})," ",f.playing?"Pause map":"Play the example")),e("div",{className:"treatment-explorer-layout"},e("div",{className:"treatment-map-surface"},e("div",{className:"map-switches"},e("div",{role:"group","aria-label":"Anatomy reference"},e("button",{type:"button","aria-pressed":!l,onClick:()=>d(!1)},"Female"),e("button",{type:"button","aria-pressed":l,onClick:()=>d(!0)},"Male")),e("div",{role:"group","aria-label":"Map view"},e("button",{type:"button","aria-pressed":!i,onClick:()=>{s(!1),h([]),f.choose(0)}},"Face"),e("button",{type:"button","aria-pressed":i,onClick:()=>{s(!0),h([]),f.choose(0)}},"Body"))),e("svg",{viewBox:"0 0 320 410",role:"img","aria-label":`${l?"Male":"Female"} ${i?"body":"face"} reference with ${p.length} selected areas.`},i?e(Y.Fragment,null,e("path",{className:"map-outline",d:l?"M140 70 C117 57 118 25 135 16 Q160 3 185 16 C202 25 203 57 180 70 L181 84 L229 105 L255 219 L237 225 L208 150 L207 222 L190 386 L168 386 L160 252 L152 386 L130 386 L113 222 L112 150 L83 225 L65 219 L91 105 L139 84 Z":"M140 70 C117 57 118 25 135 16 Q160 3 185 16 C202 25 203 57 180 70 L180 84 L215 105 L244 218 L228 225 L200 151 L188 182 Q212 214 207 245 L187 386 L167 386 L160 269 L153 386 L133 386 L113 245 Q108 214 132 182 L120 151 L92 225 L76 218 L105 105 L140 84 Z"}),e("g",{className:p.includes("arms")?"map-zone is-selected":"map-zone"},e("ellipse",{cx:l?226:219,cy:"156",rx:"12",ry:"38",transform:`rotate(-15 ${l?226:219} 156)`}),e("ellipse",{cx:l?94:101,cy:"156",rx:"12",ry:"38",transform:`rotate(15 ${l?94:101} 156)`})),e("ellipse",{className:p.includes("abdomen")?"map-zone is-selected":"map-zone",cx:"160",cy:"195",rx:"30",ry:"30"}),e("g",{className:p.includes("thighs")?"map-zone is-selected":"map-zone"},e("ellipse",{cx:"140",cy:"290",rx:"12",ry:"37"}),e("ellipse",{cx:"180",cy:"290",rx:"12",ry:"37"}))):e(Y.Fragment,null,e("path",{className:"map-outline",d:l?"M88 170 C65 34 249 20 233 170 L230 246 L204 290 L179 307 L177 335 L220 367 M88 170 L91 246 L117 290 L141 307 L143 335 L101 367":"M91 174 C65 36 247 28 229 174 L226 238 Q216 287 178 309 L176 338 L216 367 M91 174 L94 238 Q104 287 142 309 L144 338 L104 367"}),e("path",{className:"map-detail",d:"M103 186 Q122 171 141 185 M179 185 Q198 171 217 186 M154 199 L146 239 Q161 249 174 239 L166 199 M138 266 Q159 254 182 266 Q161 286 138 266 M137 285 Q160 296 183 285"}),e("path",{className:p.includes("forehead")?"map-zone is-selected":"map-zone",d:"M103 135 Q108 88 160 87 Q212 88 219 135 L216 162 Q160 151 106 162 Z"}),e("g",{className:p.includes("cheeks")?"map-zone is-selected":"map-zone"},e("ellipse",{cx:"117",cy:"221",rx:"19",ry:"22"}),e("ellipse",{cx:"203",cy:"221",rx:"19",ry:"22"})),e("path",{className:p.includes("jaw")?"map-zone is-selected":"map-zone",d:"M100 244 Q117 294 160 307 Q203 294 220 244 L208 245 Q192 282 160 292 Q128 282 112 245 Z"}))),e("p",{className:"clinical-source"},"Interactive illustration of treatment-area documentation")),e("div",{className:"map-context",id:g},e("span",{className:"clinical-task-icon"},e(Qe,{size:25})),e("h3",null,"The selection has a name."),e("p",null,"Choose an area to see it appear beside the visual reference."),e("div",{role:"group","aria-label":"Example treatment areas"},b.map(([N,v])=>e("button",{type:"button",key:N,"aria-pressed":p.includes(N),onClick:()=>u(N)},e("span",{"aria-hidden":"true"},p.includes(N)?"â":"+"),v))),e("div",{className:"map-note"},e("span",null,"EXAMPLE NOTE CONTEXT"),e("strong",null,p.length?b.filter(N=>p.includes(N[0])).map(N=>N[1]).join(" · "):"No areas selected"),e("p",null,"The clinician adds visit-specific details and reviews the record.")),e("small",null,"Illustrative markings, not treatment guidance or an injection plan."))))}var ju=[{id:"desktop",label:"Desktop",src:"/assets/product-v7/in-room-desktop.jpg",width:1680,height:896,alt:"EMRMedSpa In-Room desktop workspace with a demonstration record selected and visit actions arranged in a grid."},{id:"tablet",label:"Tablet",src:"/assets/product-v7/in-room-tablet.jpg",width:692,height:922,alt:"EMRMedSpa In-Room tablet workspace with a demonstration record selected above the treatment note and visit action controls."},{id:"mobile",label:"Phone",src:"/assets/product-v7/in-room-mobile.jpg",width:390,height:842,alt:"EMRMedSpa In-Room phone workspace showing a demonstration record, treatment note control and visible visit actions in two columns."}];function yb({device:i,onRetry:s}){let[l,d]=(0,ps.useState)(!1);return l?e("div",{className:"inroom-device-error",role:"status"},e("p",null,"The ",i.label.toLowerCase()," view could not load."),e("button",{type:"button",onClick:()=>{d(!1),s()}},"Try image again")):e("img",{src:i.src,width:i.width,height:i.height,alt:i.alt,loading:"lazy",decoding:"async",onError:()=>d(!0)})}function Du(){let[i,s]=(0,ps.useState)("desktop"),l=(0,ps.useId)(),d=(0,ps.useRef)(null),p=ju.find(h=>h.id===i);return e("section",{className:"section feature-deep-dive inroom-device-gallery","data-feature":"in-room","aria-labelledby":`${l}-title`},e(oh,null),e("header",{className:"inroom-device-heading"},e("div",null,e("h2",{id:`${l}-title`},"The workspace, wherever you need it."),e("p",null,"Keep the selected patient and visit actions together in EMRMedSpa.")),e("div",{className:"inroom-device-switch",ref:d,role:"group","aria-label":"In-Room device views"},ju.map(h=>e("button",{key:h.id,type:"button","aria-pressed":i===h.id,"aria-controls":`${l}-view`,onClick:()=>s(h.id)},h.label)))),e("figure",{id:`${l}-view`,className:`inroom-device-figure inroom-device-figure--${i}`,"aria-live":"off"},e("div",{className:"inroom-device-stage"},e(yb,{key:i,device:p,onRetry:()=>{var h,f;return(f=(h=d.current)==null?void 0:h.querySelector('[aria-pressed="true"]'))==null?void 0:f.focus({preventScroll:!0})}})),e("figcaption",null,"EMRMedSpa In-Room · demonstration record")))}function Pu(){let[i,s]=(0,wu.useState)(!1),l=(0,wu.useId)();return e("section",{className:"tap-pay-visual","aria-labelledby":`${l}-title`},e("div",{className:"tap-pay-copy"},e("p",{className:"tap-pay-system"},"Med Spa Marketing AI · Mobile collection"),e("h3",{id:`${l}-title`}
765,"A phone.",e("br",null),"A contactless payment."),e("p",null,"Tap to Pay brings compatible cards and digital wallets to the mobile payment step."),e("div",{className:"tap-pay-controls",role:"group","aria-label":"Contactless payment illustration"},e("button",{type:"button","aria-pressed":!i,"aria-controls":`${l}-scene`,onClick:()=>s(!1)},"Before tap"),e("button",{type:"button","aria-pressed":i,"aria-controls":`${l}-scene`,onClick:()=>s(!0)},"Show a tap")),e("p",{className:"tap-pay-condition"},"Requires a compatible device, mobile app and provider. Availability varies by country.")),e("figure",{className:`tap-pay-demo ${i?"tap-pay-demo--tapped":""}`,id:`${l}-scene`,"aria-live":"off"},e("div",{className:"tap-pay-stage"},e("div",{className:"tap-pay-phone"},e("span",{className:"tap-pay-speaker","aria-hidden":"true"}),e("span",{className:"tap-pay-screen-label"},"Tap to Pay illustration"),e("span",{className:"tap-pay-amount-label"},"Example amount"),e("strong",{className:"tap-pay-amount"},"$125.00"),e("div",{className:"tap-pay-reader","aria-hidden":"true"},e("svg",{viewBox:"0 0 60 60",fill:"none"},e("path",{d:"M22 23c5 4 5 10 0 14M29 17c9 7 9 19 0 26M36 11c14 10 14 28 0 38",stroke:"currentColor",strokeWidth:"3",strokeLinecap:"round"}))),e("p",{className:"tap-pay-screen-status"},i?"Tap illustrated":"Hold the card near the phone"),e("span",{className:"tap-pay-screen-note"}
765,i?"Review the actual payment result separately.":"Compatible contactless card or wallet")),e("div",{className:"tap-pay-card","aria-hidden":"true"},e(It,{size:21}),e("span",null,"CARD"),e("i",null),e("strong",null,"â¢â¢â¢â¢ â¢â¢â¢â¢"))),e("figcaption",null,"Manual illustration · sample amount. No payment is processed.")))}var Ou="Hey Jordan, still thinking about pricing? Happy to answer any questions â no pressure at all. Want me to send over some details?",Fu="Hey Jordan! Just circling back on your question about pricing. Happy to walk you through everything â no pressure at all. We have a few spots open [AVAILABILITY PLACEHOLDER]. Want me to grab one for you?",pc=["Prioritize the leads","Shape the message","Review the draft"],_u=[{name:"Jordan",signal:"Pricing question · 4 days ago",reason:"The longest gap. Start with a helpful answer.",badge:"1st"},{name:"Avery",signal:"Asked for times · yesterday",reason:"A recent consultation request to respond to next.",badge:"2nd"},{name:"Casey",signal:"Already booked · today",reason:"Move into visit preparation, rather than a sales follow-up.",badge:"Hold"}];function vb({step:i,choose:s,steps:l,ranks:d,firstDraft:p,finalDraft:h,scene:f}){const g=In,b=De,u=We,N=["Who should I follow up with first?","Draft a friendly follow-up for Jordan.","Keep it friendly. End with a simple question."],v=["Jordan asked about pricing, Avery requested times, and Casey has already booked.","The initial draft, before refining the wording.","A draft your team can review before using."];return e("div",{className:"ai-mobile-example"},e("div",{className:"ai-mobile-toolbar"},e("span",null,e(g,{size:17})," Ask AI"),e("span",null,"Actual answer · sample leads")),e("div",{className:"ai-mobile-tabs",role:"group","aria-label":"Ask AI example steps"},l.map((w,C)=>e("button",{key:w,type:"button",className:C===i?"is-active":"","aria-pressed":C===i,"aria-controls":`${f}-${C}`,onClick:()=>s(C)},e("span",null,"0",C+1),w))),e("div",{className:"ai-mobile-panels"},l.map((w,C)=>e("div",{className:`ai-mobile-panel ${C===i?"is-active":""}`,key:w,id:`${f}-${C}`,role:"region","aria-label":w,"aria-hidden":C!==i},e("div",{className:"ai-mobile-question"},e("span",null,"YOUR QUESTION"),e("h3",null,N[C]),e("p",null,v[C])),e("div",{className:"ai-mobile-content"},C===0&&e("div",{className:"ai-priority-list"},d.map(A=>e("article",{key:A.name},e("span",{className:"ai-priority-rank"},A.badge),e("div",null,e("h3",null,A.name),e("p",null,A.signal),e("small",null,A.reason))))),C===1&&e("article",{className:"ai-draft-iteration"},e("div",{className:"ai-story__surface-label"},e(g,{size:16})," The first draft gives you a starting point"),e("blockquote",null,p),e("div",{className:"ai-revision-note"},e(u,{size:18}),e("p",null,e("strong",null,"Refine the answer.")," Ask for fewer words and remove details you have not confirmed."))),C===2&&e("div",{className:"ai-mobile-refined"},e("div",{className:"ai-story__surface-label"},e(b,{size:16})," The refined answer"),e("h3",null,"A helpful question.",e("br",null),"Room for a reply."),e("p",null,"Ask AI keeps the message focused, with no invented appointment time."),e("aside",{className:"ai-mobile-message","aria-label":"Mobile-sized preview of the actual generated draft"},e("strong",null,"Jordan"),e("small",null,"Draft preview"),e("p",null,h),e("span",null,e(u,{size:14})," Review before use"))))))),e("p",{className:"ai-mobile-caption"},"Real answer, summarized for this walkthrough. Sample people; no messages sent. Results depend on the context you provide."))}function qm({expanded:i=!1}){const s=Ce(),[l,d]=_t.useState(!1);_t.useEffect(()=>{const D=window.matchMedia("(max-width:800px)"),L=()=>{d(D.matches),D.matches&&g(!1)};return L(),D.addEventListener("change",L),()=>D.removeEventListener("change",L)},[]);let[p,h]=(0,_t.useState)(0),[f,g]=(0,_t.useState)(!1),[b,u]=(0,_t.useState)(!0),[N,v]=(0,_t.useState)(!1),[w,C]=(0,_t.useState)(!0),[A,z]=(0,_t.useState)(0),S=(0,_t.useRef)(null),R=(0,_t.useId)(),j=(0,_t.useId)();(0,_t.useEffect)(()=>{let D=window.matchMedia("(prefers-reduced-motion: reduce)"),L=()=>{u(D.matches),D.matches&&g(!1)};
765return L(),D.addEventListener("change",L),()=>D.removeEventListener("change",L)},[]),(0,_t.useEffect)(()=>{let D=()=>{C(!document.hidden),document.hidden&&g(!1)};D(),document.addEventListener("visibilitychange",D);let L=new IntersectionObserver(([B])=>v(B.isIntersecting),{threshold:.15});return S.current&&L.observe(S.current),()=>{L.disconnect(),document.removeEventListener("visibilitychange",D)}},[]),(0,_t.useEffect)(()=>{if(l||!f||b||!N||!w)return;let D=window.setTimeout(()=>{p===2?g(!1):h(p+1)},3800);return()=>window.clearTimeout(D)},[p,f,b,N,w,l]);let $=D=>{h(D),g(!1)},V=()=>{f?g(!1):(p===2&&h(0),g(!0))};return e("section",{ref:S,className:`section ai-story ai-story--v8 ${i?"ai-story--expanded":""} ${f&&N&&w&&!b?"ai-story--playing":""}`,"aria-labelledby":R,onFocusCapture:D=>{D.target.closest("[data-ai-play]")||g(!1)}},e("div",{className:"ai-story__intro"},e("p",{className:"eyebrow"},"ASK AI, INSIDE YOUR MARKETING SYSTEM"),e("h2",{id:R},"A clearer priority.",e("br",null),"A better first reply."),e("p",null,"Give Ask AI the context. Work through who needs attention, what to say and how to make the message sound like your clinic."),!i&&e(H,{className:"text-link",to:"/features/ask-ai"},"See the real example ",e(J,{size:17})),e("p",{className:"ai-story__note"},"This walkthrough follows a real Ask AI conversation using three fictional leads.")),l?e(vb,{step:p,choose:$,steps:pc,ranks:_u,firstDraft:Fu,finalDraft:Ou,scene:j}):e("div",{className:"ai-story__example"},e("div",{className:"ai-story__toolbar"},e("span",null,e(In,{size:18})," Ask AI"),e("span",null,"Actual answer · sample leads")),e("div",{className:"ai-story__request"},e("span",null,"YOUR QUESTION"),e("p",null,p===0?"Who should I follow up with first?":p===1?"Draft a friendly follow-up for Jordan.":"Keep it friendly. End with a simple question."),e("small",null,p===0?"Jordan asked about pricing, Avery requested times, and Casey has already booked.":p===1?"The initial draft, before refining the wording.":"A draft your team can review before using.")),e("div",{id:j,className:"ai-story__scene",role:"region","aria-label":pc[p]},e("div",{className:"ai-story__scene-content",key:p},p===0&&e("div",{className:"ai-priority-list"},_u.map(D=>e("article",{key:D.name},e("span",{className:"ai-priority-rank"},D.badge),e("div",null,e("h3",null,D.name),e("p",null,D.signal),e("small",null,D.reason))))),p===1&&e("article",{className:"ai-story__draft"},e("div",{className:"ai-story__surface-label"},e(In,{size:16})," The first draft gives you a starting point"),e("blockquote",null,Fu),e("div",{className:"ai-revision-note"},e(We,{size:18}),e("p",null,e("strong",null,"Refine the answer.")," Ask for fewer words and remove details you have not confirmed."))),p===2&&e("div",{className:"ai-story__handoff"},e("article",{className:"ai-story__next-step"},e("div",{className:"ai-story__surface-label"},e(De,{size:16})," The refined answer"),e("h3",null,"A helpful question.",e("br",null),"Room for a reply."),e("p",null,"Ask AI keeps the message focused, with no invented appointment time.")),e("aside",{className:"ai-story__phone ai-story__phone--reply","aria-label":"Mobile-sized preview of the actual generated draft"},e("div",{className:"ai-story__phone-top","aria-hidden":"true"},e("span",null)),e("div",{className:"ai-story__phone-recipient"},e("span",{className:"ai-story__avatar","aria-hidden":"true"},"J"),e("span",null,"Jordan",e("strong",null,"Draft preview"))),e("p",{className:"ai-story__message"},Ou),e("div",{className:"ai-story__draft-label"},e(We,{size:14}),e("span",null,"Review before use")))))),e("div",{className:"ai-story__controls"},e("div",{role:"group","aria-label":"Ask AI example steps"},pc.map((D,L)=>e("button",{key:D,type:"button","aria-pressed":L===p,"aria-controls":j,onClick:()=>$(L)},e("span",null,"0",L+1),D))),!b&&e("button",{type:"button",className:"ai-story__play","data-ai-play":!0,onClick:V,"aria-label":f?"Pause Ask AI example":"Play Ask AI example"},f?e("span",{"aria-hidden":"true"},"â
¡"):e(Ja,{size:16})," ",f?"Pause example":p===2?"Replay example":"Play example")),e("p",{className:"ai-story__caption"},"Real answer, summarized for this walkthrough. Sample people;
765 no messages sent. Results depend on the context you provide.")),i&&(s?e("div",{className:"ai-native-proof"},e("div",{className:"ai-native-proof__heading"},e("div",null,e("p",{className:"eyebrow"},"INSIDE THE ACTUAL PRODUCT"),e("h3",null,"From the question to the next draft."))),e(Re,{label:"Actual Ask AI screenshots",caption:"Native product capture · fictional demonstration data · September 2026",renderFull:()=>e("div",{className:"ai-native-proof"},e("div",{className:"ai-native-proof__heading"},e("div",null,e("p",{className:"eyebrow"},"INSIDE THE ACTUAL PRODUCT"),e("h3",null,"From the question to the next draft.")),e("div",{role:"group","aria-label":"Actual Ask AI screenshots"},e("button",{type:"button","aria-pressed":A===0,onClick:()=>z(0)},"Priority & first draft"),e("button",{type:"button","aria-pressed":A===1,onClick:()=>z(1)},"Refine the wording"))),e("figure",null,e("div",{className:`ai-native-crop ai-native-crop--${A}`},e("img",{src:`/assets/product-v8/${A===0?"ask-ai-priorities":"ask-ai-refined-draft"}.jpg`,width:"2016",height:"1075",alt:A===0?"Actual Ask AI response ranking three fictional leads and drafting messages.":"Actual Ask AI conversation refining the fictional lead message into a shorter draft.",loading:"lazy"})),e("figcaption",null,"Native product capture · fictional demonstration data · September 2026")))},e(Za,{title:"From the question to the next draft.",rows:[{label:"01",value:"Priority & first draft"},{label:"02",value:"Refine the wording"}]}))):e("div",{className:"ai-native-proof"},e("div",{className:"ai-native-proof__heading"},e("div",null,e("p",{className:"eyebrow"},"INSIDE THE ACTUAL PRODUCT"),e("h3",null,"From the question to the next draft.")),e("div",{role:"group","aria-label":"Actual Ask AI screenshots"},e("button",{type:"button","aria-pressed":A===0,onClick:()=>z(0)},"Priority & first draft"),e("button",{type:"button","aria-pressed":A===1,onClick:()=>z(1)},"Refine the wording"))),e("figure",null,e("div",{className:`ai-native-crop ai-native-crop--${A}`},e("img",{src:`/assets/product-v8/${A===0?"ask-ai-priorities":"ask-ai-refined-draft"}.jpg`,width:"2016",height:"1075",alt:A===0?"Actual Ask AI response ranking three fictional leads and drafting messages.":"Actual Ask AI conversation refining the fictional lead message into a shorter draft.",loading:"lazy"})),e("figcaption",null,"Native product capture · fictional demonstration data · September 2026")))))}var yc=[{label:"Start with an idea",title:"Tell AI what the post needs to do.",body:"Include the topic, tone and next step. Keep treatment claims and clinic details specific to what you have approved.",prompt:"Write a warm Instagram post inviting people to book a skin consultation. Keep it under 50 words. Donât promise a treatment result."},{label:"Refine with AI",title:"Make the draft sound like your clinic.",body:"Ask for a shorter version, a different tone or a clearer invitation. You choose the wording you want to keep.",prompt:"Make it shorter and more conversational. Keep the invitation to book a consultation."},{label:"Review and schedule",title:"Give the approved post its place.",body:"Check the profile, wording, media, link and time zone. Then save a draft, request approval or schedule the post in Social Planner.",prompt:"Final review: clinic details, approved media, booking destination and publishing time."}],wb="A little time to talk about your skin. A consultation is a chance to share your goals and explore the next step with our team. Book a visit through the link in our profile.",kb="Letâs talk about your skin. Share your goals, ask your questions and explore the next step with our team. Book a consultation through the link in our profile.";function Uu({compact:i=!1}){let[s,l]=(0,rc.useState)(0),d=(0,rc.useId)(),p=(0,rc.useId)(),h=yc[s];return e("section",{className:`social-planner-story${i?" social-planner-story--compact":""}`,"aria-labelledby":d},e("div",{className:"social-planner-story__heading"},e("div",null,e("p",{className:"eyebrow"},"SOCIAL PLANNER + AI"),e("h2",{id:d},"From a blank page to your next post.")),e("p",null,"Generate, refine and schedule.",e("br",null),"Your team has the final word.")),e("div",{className:"social-planner-story__stages",role:"group","aria-label":"Explore the social-post workflow"},yc.map((f,g)=>e("button",{key:f.label,type:"button","aria-pressed":s===g,"aria-controls":p,onClick:()=>l(g)},e("span",{"aria-hidden":"true"},"0",g+1),f.label))),e("div",{className:"social-planner-story__scene",id:p},e("div",{className:"social-planner-story__instruction","aria-live":"polite","aria-atomic":"true"},e("p",{className:"social-planner-story__step"},"STEP 0",s+1),e("h3",null,h.title),e("p",null,h.body),e("div",{className:"social-planner-story__prompt"},e(In,{size:19}),e("div",null,e("span",null,s===2?"Before publication":"Example instruction"),e("p",null,h.prompt))),s===2&&e("ul",{className:"social-planner-story__checks"}
765,e("li",null,e(De,{size:16}),"Correct profile and booking path"),e("li",null,e(De,{size:16}),"Approved content and media"),e("li",null,e(De,{size:16}),"Date, time and time zone reviewed"))),e("figure",{className:"social-planner-story__post"},e("div",{className:"social-planner-story__post-head"},e("span",{className:"social-planner-story__avatar","aria-hidden":"true"},"S"),e("div",null,e("strong",null,"Sample clinic"),e("span",null,"Illustrative Instagram post")),e(We,{size:19})),e("div",{className:"social-planner-story__art","aria-label":"Original illustrative consultation artwork"},e("span",null,"LETâS TALK ABOUT YOUR SKIN"),e("strong",null,"A little time.",e("br",null),"A clearer plan."),e("p",null,"A consultation starts",e("br",null),"with your questions."),e("span",{className:"social-planner-story__art-circle","aria-hidden":"true"})),e("p",{className:"social-planner-story__post-copy"},s===0?wb:kb),e("figcaption",null,e("span",null,s===0?"First draft":s===1?"Refined draft":"Ready for your review"),s===2?e(Y.Fragment,null,e(He,{size:15}),"Choose the publishing time in Social Planner"):"Original sample copy · no post is published here"))),!i&&e("div",{className:"social-planner-story__footer"},e("p",null,"Content AI creates the draft. Ask AI helps refine it. Connected profiles and publishing permissions determine where you can post."),e(H,{to:"/integrations"},"See connected tools",e(J,{size:16}))))}var fs={email:{label:"Email",source:"Website inquiry",address:"Your Clinic",subject:"Consultation availability",question:"Hi, Iâm interested in a consultation. Do you have any evening appointments?",reply:"Hi Avery, thank you for getting in touch. Our team can check evening availability for a consultation. You can also view current appointment times on our booking page. Let us know what works for you."},sms:{label:"SMS",source:"Incoming text",address:"Your Clinic",question:"Hi! Iâd like to book a consultation. Are there evening appointments?",reply:"Hi Avery! We can help you plan a consultation. Our team can check evening availability, or you can view current times on our booking page."},facebook:{label:"Facebook DM",source:"Facebook Page inquiry",address:"Your Clinic · Facebook",question:"Hello! I found your Page and wanted to ask about evening consultation times.",reply:"Hi Avery, thanks for reaching out here. Our team can check evening consultation availability. You can also view current times on our booking page."},instagram:{label:"Instagram DM",source:"Instagram inquiry",address:"Your Clinic · Instagram",question:"Hi, I saw your post and Iâm interested in a consultation. Do you offer evening times?",reply:"Hi Avery! Thanks for your message. We can help you plan a consultation and check evening availability. Our booking page also shows current times."}};function qu({compact:i=!1,initialChannel:s="sms"}){let[l,d]=(0,oc.useState)(s),[p,h]=(0,oc.useState)(!1),f=(0,oc.useId)(),g=fs[l];function b(u){d(u),h(!1)}return e("section",{className:`contact-communication ${i?"contact-communication--compact":""}`,"aria-labelledby":`${f}-title`},e("header",{className:"contact-communication__heading"},e("div",null,e("span",null,"Fictional channel examples"),e("h2",{id:`${f}-title`},"Context for the next reply.")),e("span",{className:"contact-communication__sample"},"Avery Sample")),e("div",{className:"contact-communication__channels",role:"group","aria-label":"Choose a fictional message channel"},Object.keys(fs).map(u=>e("button",{key:u,type:"button","aria-pressed":l===u,"aria-controls":`${f}-context ${f}-conversation`,onClick:()=>b(u)},fs[u].label))),e("div",{className:"contact-communication__layout"},e("div",{className:"contact-communication__context",id:`${f}-context`},e("div",{className:"contact-communication__identity"},e("span",{"aria-hidden":"true"},"AS"),e("div",null,e("h3",null,"Avery Sample"),e("p",null,"Consultation inquiry"))),e("dl",{className:"contact-communication__facts"},e("div",null,e("dt",null,"Where the inquiry began"),e("dd",null,g.source)),e("div",null,e("dt",null,"Latest question"),e("dd",null,"Evening consultation availability")),e("div",null,e("dt",null,"Assigned to"),e("dd",{className:"contact-communication__assigned"}
765,e("span",null,e(Ge,{size:16}),"Front desk"),e("p",null,"The team member responsible for the next reply.")))),e("div",{className:"contact-communication__next-task"},e("span",null,"Next task"),e("strong",null,"Check availability.",e("br",null),"Help Avery choose a time."),e("p",null,"Review the appointment options before replying.")),e("div",{className:"contact-communication__labels"},e("span",null,"Helpful labels"),e("div",null,e("span",null,"Consultation lead"),e("span",null,"Awaiting reply")),e("p",null,"Labels help the team organize contacts and follow-up work."))),e("div",{className:"contact-communication__conversation",id:`${f}-conversation`},e("div",{className:`contact-communication__phone contact-communication__phone--${l}`},e("div",{className:"contact-communication__speaker","aria-hidden":"true"}),e("header",null,e("span",{className:"contact-communication__channel-icon","aria-hidden":"true"},l==="email"?e("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.8"},e("rect",{x:"3",y:"5",width:"18",height:"14",rx:"2"}),e("path",{d:"m3 6 9 7 9-7"})):e(We,{size:20})),e("div",null,e("strong",null,g.address),e("span",null,g.label," preview"))),e("div",{className:"contact-communication__thread"},g.subject&&e("div",{className:"contact-communication__email-subject"},e("span",null,"Subject"),e("strong",null,g.subject)),e("div",{className:"contact-communication__incoming"},e("span",null,"Avery Sample"),e("p",null,g.question)),e("div",{className:"contact-communication__reply",id:`${f}-reply`,hidden:!p},e("span",null,e(De,{size:14}),"Reviewed reply preview"),e("p",null,g.reply),e("span",{className:"contact-communication__booking-label"},"Clinic booking link ",e(J,{size:13}))),!p&&e("p",{className:"contact-communication__draft-note"},"Check the contact context, then preview a reply."))),e("button",{className:"contact-communication__reply-control",type:"button","aria-expanded":p,"aria-controls":`${f}-reply`,onClick:()=>h(u=>!u)},p?"Hide reply preview":"Preview a reviewed reply",e(J,{size:16})),e("p",{className:"contact-communication__delivery-note"},"This preview sends nothing."))),e("p",{className:"contact-communication__boundary"},"Each channel shows a separate fictional example. Available channels depend on the connected accounts and messaging permissions."),e("span",{className:"contact-communication__status",role:"status"},g.label," example selected. ",p?"Reviewed reply preview is visible.":"Reply preview is hidden."))}function Wu({focus:i="both"}){let s=(0,Ur.useId)();return e("section",{className:`clinical-benefits clinical-benefits--${i}`,"aria-labelledby":`${s}-title`},e("header",{className:"clinical-support-heading"},e("div",null,e("p",{className:"eyebrow"},"PACKAGE + MEMBERSHIP EXAMPLE"),e("h2",{id:`${s}-title`},"Know what the patient has available.")),e("p",null,"Sessions, recurring billing and benefits",e("br",null),"each answer a different question.")),e("div",{className:"clinical-benefits__cards"},e("article",{className:"clinical-benefits__card clinical-benefits__card--package"},e("div",{className:"clinical-benefits__label"},e(si,{size:21}),e("span",null,"Treatment package")),e("h3",null,"Three-visit skin series"),e("p",{className:"clinical-benefits__amount"},"$450",e("span",null,"one-time package price")),e("div",{className:"clinical-benefits__sessions","aria-label":"Example session balance: one of three sessions used, two remaining"},e("span",{className:"clinical-benefits__session--used"},e(De,{size:17}),e("small",null,"Used")),e("span",null,"2",e("small",null,"Available")),e("span",null,"3",e("small",null,"Available"))),e("div",{className:"clinical-benefits__balance"},e("strong",null,"2 sessions"),e("span",null,"remaining of 3")),e("p",{className:"clinical-benefits__rule"},"One qualifying completed visit uses one session. A canceled visit does not.")),e("article",{className:"clinical-benefits__card clinical-benefits__card--membership"},e("div",{className:"clinical-benefits__label"},e(Qa,{size:21}),e("span",null,"Membership subscription")),e("h3",null,"Monthly clinic membership"),e("p",{className:"clinical-benefits__amount"},"$79",e("span",null,"per month")),e("dl",{className:"clinical-benefits__membership"}
765,e("div",null,e("dt",null,"Example benefit"),e("dd",null,"10% off selected services")),e("div",null,e("dt",null,"Example renewal"),e("dd",null,"October 1, 2026")),e("div",null,e("dt",null,"Staff review"),e("dd",null,"Check eligible services and membership status"))),e("p",{className:"clinical-benefits__rule"},"The subscription handles the recurring charge. Benefits follow the clinicâs agreed terms."))),e("p",{className:"clinical-support-caption"},"Illustrative package and membership. Prices, sessions and benefits are examples."))}var Vu=[{title:"Capture on the phone",body:"Start from the correct patient and use the clinicâs photo-capture process.",Icon:Rn},{title:"Review the image",body:"Check the image and treatment context before adding it to the record.",Icon:De},{title:"Attach to the note",body:"Keep the selected image with the relevant treatment documentation.",Icon:Qe}];function Bu(){let i=(0,Ur.useId)(),[s,l]=(0,Ur.useState)(!1);return e("section",{className:"clinical-photo-path","aria-labelledby":`${i}-title`},e("header",{className:"clinical-support-heading"},e("div",null,e("p",{className:"eyebrow"},"PHOTOS IN THE VISIT"),e("h2",{id:`${i}-title`},"Start with the patient.",e("br",null),"Keep the photo with the treatment."))),e("div",{className:"clinical-photo-path__layout"},e("figure",{className:"clinical-photo-path__native"},e("div",{className:"clinical-photo-path__phone-label"},e(Rn,{size:19}),e("span",null,"In-Room on a phone")),s?e("div",{className:"clinical-photo-path__fallback",role:"status"},e(Rn,{size:32}),e("p",null,"The In-Room image could not load."),e("button",{type:"button",onClick:()=>l(!1)},"Try image again")):e("div",{className:"clinical-photo-path__viewport"},e("img",{src:"/assets/product-v7/in-room-mobile.jpg",width:"390",height:"842",alt:"Detail of the actual In-Room phone workspace showing Capture Photo and Check Out controls for a demonstration record.",loading:"lazy",decoding:"async",onError:()=>l(!0)})),e("figcaption",null,"Actual In-Room controls · demonstration record")),e("ol",{className:"clinical-photo-path__steps"},Vu.map(({title:d,body:p,Icon:h},f)=>e("li",{key:d},e("span",{className:"clinical-photo-path__step-icon"},e(h,{size:23,strokeWidth:1.6})),e("div",null,e("p",{className:"clinical-photo-path__number"},"0",f+1),e("h3",null,d),e("p",null,p)),f<Vu.length-1&&e(J,{className:"clinical-photo-path__arrow",size:17}))))),e("p",{className:"clinical-support-caption"},"EMRMedSpa capture control, with an illustrated photo-to-note workflow."))}var Hu=[{id:"available",label:"Stock available",quantity:24,threshold:10,batch:"SKM-2609-A",expiry:"September 30, 2027",status:"Above the stock threshold",title:"Enough on hand for the current threshold.",body:"Review the quantity and batch before the team uses the product.",action:"Check the batch you plan to use.",tone:"healthy"},{id:"low",label:"Low stock",quantity:6,threshold:10,batch:"SKM-2609-B",expiry:"September 30, 2027",status:"4 below the stock threshold",title:"The remaining quantity needs attention.",body:"The stock count is below the configured threshold. Your team decides what to order.",action:"Review the reorder quantity with the team.",tone:"low"},{id:"expiry",label:"Expiry review",quantity:18,threshold:10,batch:"SKM-2509-C",expiry:"September 30, 2026",status:"Review the upcoming expiry",title:"Stock quantity is only part of the picture.",body:"This batch is above threshold, but its expiry is approaching in the sample review period.",action:"Check the expiry before selecting this batch.",tone:"expiry"}];function Yu(){let[i,s]=(0,Ur.useState)(0),l=(0,Ur.useId)(),d=Hu[i];return e("section",{className:"clinical-inventory","aria-labelledby":`${l}-title`},e("header",{className:"clinical-support-heading"},e("div",null,e("p",{className:"eyebrow"},"A PRACTICAL STOCK CHECK"),e("h2",{id:`${l}-title`},"Quantity. Threshold. Expiry.")),e("p",null,"Review the stock condition",e("br",null),"before choosing the next step.")),e("div",{className:"clinical-inventory__switch",role:"group","aria-label":"Explore sample stock conditions"},Hu.map((p,h)=>e("button",{key:p.id,type:"button","aria-pressed":h===i,"aria-controls":`${l}-view`,onClick:()=>s(h)},p.label))),e("div",{className:`clinical-inventory__view clinical-inventory__view--${d.tone}`,id:`${l}-view`},e("article",{className:"clinical-inventory__stock"},e("div",{className:"clinical-inventory__product"}
765,e("span",null,e(si,{size:30,strokeWidth:1.4})),e("div",null,e("p",null,"SAMPLE PRODUCT"),e("h3",null,"Disposable skin markers"),e("span",null,"Unit count · batch ",d.batch))),e("div",{className:"clinical-inventory__quantity"},e("strong",null,d.quantity),e("span",null,"units on hand")),e("div",{className:"clinical-inventory__bar",role:"img","aria-label":`${d.quantity} units on hand; configured low-stock threshold is ${d.threshold} units. Display scale zero to thirty units.`},e("span",{style:{width:`${d.quantity/30*100}%`}}),e("i",{style:{left:`${d.threshold/30*100}%`}})),e("div",{className:"clinical-inventory__scale","aria-hidden":"true"},e("span",null,"0"),e("span",null,"Threshold ",d.threshold),e("span",null,"30 units")),e("dl",{className:"clinical-inventory__facts"},e("div",null,e("dt",null,e(En,{size:16}),"Stock threshold"),e("dd",null,d.threshold," units")),e("div",null,e("dt",null,e(He,{size:16}),"Batch expiry"),e("dd",null,d.expiry)))),e("div",{className:"clinical-inventory__review","aria-live":"polite","aria-atomic":"true"},e("p",{className:"clinical-inventory__status"},d.status),e("h3",null,d.title),e("p",null,d.body),e("div",{className:"clinical-inventory__next"},e(J,{size:20}),e("span",null,d.action)))),e("p",{className:"clinical-support-caption"},"Fictional inventory example reviewed as of September 7, 2026. Quantities, thresholds, batches and dates are sample values. This illustration does not place an order or change stock."))}var ri=[{id:"mary-confidence",src:"/assets/campaigns/dr-mary-emsella-confidence.jpg",client:"Dr. Mary · Medical Esthetics & Wellness",label:"Dr. Mary · Confidence",width:640,height:640,alt:"Dr. Mary Emsella image ad in lavender with the headline Confidence is quiet."},{id:"natural-forma",src:"/assets/campaigns/natural-rejuvenation-forma-intro.png",client:"Natural Rejuvenation MedSpa",label:"Natural Rejuvenation · Forma",width:1080,height:1350,alt:"Natural Rejuvenation Forma introductory-offer ad with an illustrative treatment scene, ivory headline and gold call to action."},{id:"questions",src:"/assets/campaigns/kc-consultation-questions-v9-03.png",client:"KC Aesthetics",label:"KC · Your questions",width:1440,height:1800,alt:"KC Aesthetics consultation creative with Keniaâs portrait and the headline Your questions deserve time."},{id:"mary-consultation",src:"/assets/campaigns/dr-mary-emsella-consultation.jpg",client:"Dr. Mary · Medical Esthetics & Wellness",label:"Dr. Mary · Emsella",width:1080,height:1350,alt:"Dr. Mary Emsella image ad with the headline Still thinking about Emsella?"},{id:"newark",src:"/assets/campaigns/kc-consultation-creative.png",client:"KC Aesthetics",label:"KC · Local introduction",width:1440,height:1800,alt:"KC Aesthetics black-and-gold consultation creative with Keniaâs portrait and the headline Consultations in Newark."},{id:"conversation",src:"/assets/campaigns/kc-consultation-conversation-v9-23.png",client:"KC Aesthetics",label:"KC · Meet the practitioner",width:1440,height:1800,alt:"KC Aesthetics consultation creative introducing Kenia Carvalho, RN, with the headline Start with a conversation."}];function uc({compact:i=!1,showCostExample:s=!i,creativeOnly:l=!1}){let[d,p]=(0,ku.useState)(0),h=(0,ku.useId)(),f=ri[d];function g(b){p(u=>(u+b+ri.length)%ri.length)}return e("section",{className:`ads-launch-showcase ${i?"ads-launch-showcase--compact":""}`,"aria-labelledby":`${h}-title`},e("header",{className:"ads-launch__heading"},e("span",null,"Meta ads + patient acquisition"),e("h2",{id:`${h}-title`},"Different clinics.",e("br",null),"Distinct creative."),e("p",null,l?"Real ad variations for Dr. Mary, Natural Rejuvenation and KC Aesthetics. Each starts with the clinicâs own brand and offer.":"Explore creative variations built around each clinicâs brand and offer. Meta ads generate the lead; AI follow-up and a staff call help turn that interest into a booking.")),e("div",{className:"ads-launch__creative-layout"},e("div",{className:"ads-launch__gallery"},e("figure",{id:`${h}-creative`},e("img",{key:f.id,src:f.src,alt:f.alt,width:f.width,height:f.height,loading:"lazy",decoding:"async"}),e("figcaption",null,f.client," · Campaign creative")),e("div",{className:"ads-launch__gallery-controls"},e("button",{type:"button",onClick:()=>g(-1),"aria-label":"Previous campaign creative","aria-controls":`${h}-creative`},e(J,{size:19})),e("p",null,d+1," of ",ri.length,e("span",null,f.label)),e("button",{type:"button",onClick:()=>g(1),"aria-label":"Next campaign creative","aria-controls":`${h}-creative`},e(J,{size:19}))),e("div",{className:"ads-launch__thumbnails",role:"group","aria-label":"Choose campaign creative"},ri.map((b,u)=>e("button",{key:b.id,type:"button","aria-pressed":d===u,"aria-controls":`${h}-creative`,onClick:()=>p(u)}
765,e("img",{src:b.src,alt:"",width:b.width,height:b.height,loading:"lazy"}),e("span",null,b.label)))),e("a",{className:"ads-launch__full-art",href:f.src,target:"_blank",rel:"noreferrer noopener"},"View full-size artwork ",e(Ae,{size:15})),e("span",{className:"ads-launch__status",role:"status"},"Creative ",d+1," of ",ri.length,": ",f.label,".")),e("div",{className:"ads-launch__plan"},e("h3",null,l?e(Y.Fragment,null,"Three decisions",e("br",null),"before launch."):e(Y.Fragment,null,"From the first ad",e("br",null),"to the first conversation.")),e("ol",null,e("li",null,e("span",{"aria-hidden":"true"},"1"),e("div",null,e("h4",null,l?"The offer.":"Agree on the treatment and message."),e("p",null,l?"Choose the service and message. Your clinic approves the creative.":"Review the service, consultation path and creative together. The clinic approves the offer and wording."))),e("li",null,e("span",{"aria-hidden":"true"},"2"),e("div",null,e("h4",null,l?"The audience.":"Choose the local reach."),e("p",null,l?"Agree on the local area y
765ou want to reach.":"Around ten miles can be a starting point. We agree on the geography after reviewing the treatment, market and budget."))),e("li",null,e("span",{"aria-hidden":"true"},"3"),e("div",null,e("h4",null,l?"The budget.":"Approve the budget, then launch."),e("p",null,l?"Approve the Meta spend. We connect the form and follow-up, then launch.":"Confirm the Meta ad budget, lead form, AI follow-up and staff call notification before the first campaign goes live.")))),!l&&e("div",{className:"ads-launch__scope"},e(De,{size:19}),e("p",null,"Launch includes first creative and campaign launch. Later management is client-run or separately scoped. Ad spend is separate.")),e("p",{className:"ads-launch__small"},"Selected client creative. Offers shown reflect the original campaigns; individual image results are not claimed."))),!l&&e("div",{className:"ads-launch__followup"},e("div",{className:"ads-launch__followup-heading"},e("span",null,"After an inquiry"),e("h3",null,"Give your team",e("br",null),"a reason to call."),e("p",null,"AI starts the text conversation. Your team gets a notification to call, answer questions and help the lead book.")),e("div",{className:"ads-launch__followup-pair"},e("div",{className:"ads-launch__notification"},e("div",{className:"ads-launch__notification-top"},e(En,{size:23}),e("span",null,"Staff notification illustration")),e("h4",null,"New consultation inquiry"),e("strong",null,"Jamie Sample"),e("dl",null,e("div",null,e("dt",null,"Source"),e("dd",null,"Meta lead form")),e("div",null,e("dt",null,"Notify"),e("dd",null,"Front desk"))),e("div",{className:"ads-launch__call-task"},e("span",null,"Clinicâs next step"),e("p",null,"Call Jamie to discuss the consultation and help choose a time."))),e("div",{className:"ads-launch__sms"},e("div",{className:"ads-launch__sms-header"},e(We,{size:21}),e("div",null,e("strong",null,"Your Clinic"),e("span",null,"AI follow-up illustration"))),e("div",{className:"ads-launch__message"},e("span",null,"Your Clinic"),e("p",null,"Hi Jamie, thanks for reaching out about a consultation. Our team will be in touch. What day usually works best for you?")),e("p",{className:"ads-launch__sms-note"},"AI helps with questions and booking.",e("br",null),"Your team handles the personal call."))),e("p",{className:"ads-launch__small"},"Fictional lead and messages. Notification recipients, SMS timing and messaging permissions are configured for your clinic. Campaign results vary.")),s&&e("section",{className:"ads-launch__cost","aria-labelledby":`${h}-cost-title`},e("div",null,e("span",null,"Meta management and ad spend"),e("h3",{id:`${h}-cost-title`},"Management and media spend are separate."),e("p",null,"Review the program scope and advertising budget together.")),e("div",null,e("dl",null,e("div",null,e("dt",null,"MSMAI Growth"),e("dd",null,"Ongoing Meta management")),e("div",null,e("dt",null,"Ad spend"),e("dd",null,"Separate · paid to Meta")),e("div",null,e("dt",null,"MSMAI Launch"),e("dd",null,"First creative + campaign launch included"))),e("p",null,"Launch includes your first creative and campaign launch. Growth includes ongoing Meta management within the agreed engagement. Ad spend is separate."),e("a",{href:"/pricing"},"Compare programs and costs",e(Ae,{size:15})),e("span",{className:"ads-launch__source-date"},"See current program pricing and separate costs."))))}function Ku(){let[i,s]=(0,Au.useState)(!0),l=(0,Au.useId)();return e("section",{className:"gfe-paths","aria-labelledby":`${l}-title`},e("header",null,e("p",{className:"eyebrow"},"THE EXAM ROUTE YOUR CLINIC USES"),e("h2",{id:`${l}-title`},"Coordinate the step.",e("br",null),"Keep the clinical decision with the clinician.")),e("div",{className:"gfe-paths-layout"},e("figure",null,e("div",{className:"gfe-native-control"},e("img",{src:"/assets/product-v7/in-room-desktop.jpg",width:"1680",height:"896",alt:"The actual GFE Request control in the EMRMedSpa In-Room workspace.",loading:"lazy"})),e("figcaption",null,"GFE Request in EMRMedSpa")),e("div",null,e("div",{className:"gfe-route-choice",role:"group","aria-label":"GFE coordination route"},e("button",{type:"button","aria-pressed":i,onClick:()=>s(!0)},"Through Qualiphy"),e("button",{type:"button","aria-pressed":!i,onClick:()=>s(!1)},"Your own clinician")),e("div",{className:"gfe-route-detail","aria-live":"polite"},e("span",{className:"gfe-provider"},i?"QUALIPHY INTEGRATION":"CLINIC-PERFORMED EXAM"),e("h3",null,i?"Request an exam through your connected provider.":"Use the clinicâs qualified clinician."),e("p",null,i?"The connected Qualiphy route helps your team request the required exam and guide the patient to the next step.":"Your qualified clinician performs and documents the exam through the clinicâs own clinical process."),e("ol",null,e("li",null,e
765(Ge,{size:19}),e("span",null,i?"Request the required exam":"Identify the qualified clinician")),e("li",null,e(J,{size:19}),e("span",null,i?"Guide the patient to the exam":"Perform and document the exam")),e("li",null,e(Qe,{size:19}),e("span",null,"Review the clinical record before treatment")))))),e("p",{className:"clinical-source"},"Availability and exam requirements depend on your clinicâs setup. An exam request does not establish clinical clearance."))}var Ab={protocols:["Find","Open","Review & print"],templates:["Choose","Add wording","Review"]},xb=["Name","Modality","Indication"],Nb=["Subjective","Objective","Assessment","Plan"];function Mb({inserted:i,review:s=!1}){return e("div",{className:"guidance-note"},e("div",{className:"guidance-note__heading"},e(At,{size:20}),e("strong",null,"SOAP structure"),e("span",null,"Example only")),e("ol",null,Nb.map((l,d)=>e("li",{key:l},e("span",{className:"guidance-note__initial","aria-hidden":"true"},l[0]),e("div",null,e("strong",null,l),d===0&&i?e("p",{className:"guidance-note__inserted"},"Example wording for review."):e("span",{className:"guidance-note__line","aria-hidden":"true"}))))),s&&e("p",{className:"guidance-note__review"},e(Qe,{size:18}),"The clinician adapts the wording to the actual visit."))}function $u({kind:i}){let[s,l]=(0,Pr.useState)(0),[d,p]=(0,Pr.useState)("Name"),[h,f]=(0,Pr.useState)(!1),g=(0,Pr.useId)(),b=(0,Pr.useRef)([]),u=i==="protocols";function N(w,C=!1){var A;l(w),C&&((A=b.current[w])==null||A.focus())}function v(w,C){let A=w.key==="ArrowRight"?(C+1)%3:w.key==="ArrowLeft"?(C+2)%3:w.key==="Home"?0:w.key==="End"?2:null;A!==null&&(w.preventDefault(),N(A,!0))}return e("section",{className:`section clinical-guidance clinical-guidance--${i}`,"data-feature":i,"aria-labelledby":`${g}-title`},e("header",{className:"clinical-guidance__heading"},e("div",null,e("p",{className:"eyebrow"},u?"A useful path to guidance":"A starting point, then clinical judgment"),e("h2",{id:`${g}-title`},u?"Find the document. Review the guidance.":"Choose the structure. Make the note your own.")),e("p",null,u?"Search the protocol library, open the relevant guidance and bring it into the providerâs review.":"A treatment template organizes the note. Reusable wording still needs the clinicianâs review for this visit.")),e("div",{className:"clinical-guidance__example"},e("div",{className:"clinical-guidance__label"},e("span",null,"Workflow illustration")),e("div",{className:"clinical-guidance__tabs",role:"tablist","aria-label":u?"Explore protocol lookup":"Explore templates and smart phrases"},Ab[i].map((w,C)=>e("button",{type:"button",key:w,role:"tab",id:`${g}-tab-${C}`,"aria-selected":s===C,"aria-controls":`${g}-panel`,tabIndex:s===C?0:-1,ref:A=>{b.current[C]=A},onClick:()=>N(C),onKeyDown:A=>v(A,C)},e("span",{"aria-hidden":"true"},"0",C+1),w))),e("div",{className:"clinical-guidance__panel",id:`${g}-panel`,role:"tabpanel","aria-labelledby":`${g}-tab-${s}`,tabIndex:0},u?e(Y.Fragment,null,e("div",{className:"clinical-guidance__explanation"},e("span",{className:"clinical-guidance__position"},"Step ",s+1," of 3"),e("h3",null,["Start with what you know.","Open the relevant guidance.","Review it for the care in front of you."][s]),e("p",null,["Look up a protocol by name, modality or indication. A modality filter can narrow the library.","Choose the relevant protocol and open the clinic-approved document for review.","The licensed provider decides how the guidance applies. Print it when needed for provider use."][s])),e("div",{className:"guidance-library"},s===0?e(Y.Fragment,null,e("div",{className:"guidance-library__heading"},e(xs,{size:22}),e("strong",null,"Ways to find a protocol")),e("div",{className:"guidance-library__criteria",role:"group","aria-label":"Choose an illustrated lookup method"},xb.map(w=>e("button",{type:"button",key:w,"aria-pressed":d===w,onClick:()=>p(w)},w))),e("div",{className:"guidance-library__lookup","aria-live":"polite"},e("span",null,d),e("strong",null,d==="Name"?"The protocol title":d==="Modality"?"The treatment category":"The reason for the lookup")),e("div",{className:"guidance-library__result"},e(At,{size:32}),e("div",null,e("strong",null,"The relevant protocol"),e("p",null,"Find the guidance your team needs.")))
765):e("div",{className:"guidance-document"},e("div",{className:"guidance-document__icon"},e(At,{size:35})),e("span",{className:"guidance-document__eyebrow"},s===1?"Open the document":"Provider review"),e("h4",null,"Clinic-approved guidance"),e("div",{className:"guidance-document__lines","aria-hidden":"true"},e("span",null),e("span",null),e("span",null)),s===2&&e("div",{className:"guidance-document__review"},e(Qe,{size:20}),e("span",null,"Review in context",e("br",null),e("strong",null,"Print for provider use when needed")))))):e(Y.Fragment,null,e("div",{className:"clinical-guidance__explanation"},e("span",{className:"clinical-guidance__position"},"Step ",s+1," of 3"),e("h3",null,["Choose a clinic-approved starting point.","Bring reusable wording into the note.","Keep the structure. Review every word."][s]),e("p",null,["Begin with the treatment-specific template your clinic uses. The SOAP sections provide a consistent structure.","Smart phrases support commonly used wording. Try the fictional example to see how a phrase can sit within the note.","The clinician adds the observations and details of this visit, then checks any reused wording before completing the note."][s]),s===0&&e("button",{type:"button",className:"guidance-action",onClick:()=>N(1,!0)},e(xt,{size:18}),"Use example template ",e(J,{size:17})),s===1&&e("div",{className:"guidance-phrase"},e("span",null,"Fictional phrase example"),e("code",null,".example"),e("p",null,"Example wording for review."),e("button",{type:"button",className:"guidance-action","aria-pressed":h,onClick:()=>f(w=>!w)},h?"Remove example phrase":"Insert example phrase",e(J,{size:17})),e("span",{className:"guidance-phrase__status",role:"status"},h?"Example phrase added to Subjective.":"Example phrase is not inserted."))),e("div",{className:"guidance-template"},s===0&&e("div",{className:"guidance-template__source"},e(xt,{size:20}),e("span",null,"Clinic-approved template"),e(J,{size:18})),e(Mb,{inserted:h,review:s===2})))),e("p",{className:"clinical-guidance__caption"},"See this workflow in a guided demo.")))}var ta="Product interface illustration · fictional sample data.",ua=(i,s,l,d,p,h=ta,f)=>({src:`/assets/product/${i}.png`,width:s,height:l,title:d,alt:p,caption:h,crop:f}),mc=ua("booking-v2-cart",2196,1360,"Review the appointment","Booking review with the selected service and appointment details.",`${ta} Services and prices are illustrative.`),Gu=ua("booking-v2-staff",2196,1410,"Choose a provider","Provider selection in the patient booking experience.",`${ta} Staff and availability are illustrative.`),Sb=ua("inbox",2176,1561,"The conversation","Team inbox with a sample message thread and conversation list.",`${ta} Messages and people are fictional.`),Qu={src:"/assets/evidence-v5/product/contact-record.png",width:872,height:1729,crop:[68,50,684,585],title:"The contact context",alt:"Focused contact details with owner, tags and field controls; all example details are fictional.",caption:"Contact details, shown with fictional sample data. A displayed tag is not proof of clinical consent."},Eb={src:"/assets/evidence-v5/product/calendar-sync.png",width:1936,height:1224,title:"Review calendar connections",alt:"Calendar connection settings with sample connected accounts.",caption:"Calendar connections, shown with sample accounts."},Zu=ua("emr-body-map-marked",1376,1538,"Treatment-area reference","Body map with fictional named treatment areas highlighted.",`${ta} Markings do not represent an injection plan.`),Ju=ua("emr-notes-list",2136,1500,"Review the clinical records","Clinical note records with note, consent and GFE statuses.",`${ta} Displayed statuses are examples, not clinical clearance.`,[495,150,1525,1110]),hc=ua("emr-treatment-note",2496,2988,"Describe the treatment","Focused procedure detail fields in a fictional treatment note.",`${ta} Clinical text is an example, not care instructions.`,[850,1120,750,500]),Cb=ua("emr-treatment-note",2496,2988,"A structured note section","Focused Subjective section of a fictional SOAP note.",`${ta} The smart-phrase or template editor is not pictured.`,[1610,325,780,675]),Xu=ua("emr-treatment-note",2496,2988,"The displayed consent status","Consent-not-signed status and Send consent link control in a fictional clinical note.",`${ta} Consent is shown as unsigned.`,[1128,245,506,64]),Tb=ua("emr-inventory",2176,1401,"Quantities beside status","Focused inventory rows showing products, available quantities, thresholds and stock statuses.",`${ta} Quantities, thresholds and costs are illustrative.`,[530,425,1530,730]),Ib=ua("emr-payments",2256,1350,"Individual payment records","Focused order records with paid, partially paid and overdue example statuses.",`${ta} Amounts and people are fictional, not client results.`,[530,585,1610,515]),Rb=ua("owner-dashboard",2056,1591,"Appointments by calendar","Focused appointment-by-calendar chart with a sample breakdown.",`${ta} Numbers and comparisons are illustrative, not client results.`,[1150,900,750,450]),zb=ua("emr-calendar",2376,1328,"The clinical schedule","Clinical calendar showing sample appointments.",`${ta} Appointments and people are fictional.`),ls=(i,s,l,d)=>({title:i,body:s,owner:l,context:d}),Lb={"gift-cards":{layout:"gift-card",title:"A gift with a useful next step.",intro:"The recipient, available value and supported checkout stay part of the same gift-card process."},"ask-ai":{layout:"operations",kind:"ask-ai",title:"A place to work through the wording.",intro:"Start with a brief,
765continue the same conversation and bring the draft back to the team for review."},"in-room":{layout:"operations",kind:"in-room",title:"From the right patient to the right task.",intro:"In-Room puts photo capture, a required GFE request and checkout within reach of the selected patient."},packages:{layout:"operations",kind:"packages",title:"A treatment series needs more than a payment.",intro:"The package terms define the eligible services and session quantity. The configured completion rules keep visit tracking tied to that agreement."},subscriptions:{layout:"operations",kind:"subscriptions",title:"See how the membership works.",intro:"The membership brings together an agreed billing plan and a separate set of benefit rules for staff to follow."},website:{layout:"website-path",title:"One clear path to the appointment.",intro:"The treatment page, booking menu and calendar are planned together."},booking:{layout:"pair",title:"Keep the choices in a useful order.",intro:"Patients choose from the available providers and review the appointment details before they continue.",views:[Gu,mc]},calendars:{layout:"pair",title:"Connect the setup to the choices patients see.",intro:"Calendar accounts and available providers are reviewed as part of the clinicâs scheduling setup.",views:[Eb,Gu],note:"Related configuration and booking examples; calendar connection details are agreed for the clinic."},"deposits-reminders":{layout:"record",title:"Put the policy beside the appointment.",intro:"The booking review is where the appointment and its configured commitment come together.",view:mc,notes:[{title:"Which appointments?",body:"Identify the services that require a deposit."},{title:"What amount?",body:"Use the amount your clinic approves for that appointment."},{title:"What happens if plans change?",body:"Keep the clinicâs change and cancellation terms clear before booking."}]},"contacts-pipeline":{layout:"pair",title:"An inquiry needs both a conversation and context.",intro:"Staff can review the exchange alongside the contact details used to organize the next follow-up.",views:[Sb,Qu],note:"The contact view shows details and tags; it is not a conversation-history or clinical-consent record."},conversations:{layout:"message",kind:"conversation",title:"Keep the reply connected to the person.",intro:"A team reply helps the patient move forward. The separate contact record provides the owner, tags and fields that help staff organize the follow-up.",specimen:Qu},retention:{layout:"return",title:"A different treatment deserves its own path back.",intro:"A relevant invitation, a clinic-approved wait and a useful way to book again."},reviews:{layout:"message",kind:"review",title:"Make the invitation feel like your clinic.",intro:"A review request follows the visit and gives the patient a clear choice about sharing their experience."},"appointment-recovery":{layout:"message",kind:"recovery",title:"Changed plans need a useful next step.",intro:"A cancellation and a missed visit use different messages. Both make it easy to contact the team about another appointment."},"birthday-winback":{layout:"birthday",title:"A birthday note. A reason to return.",intro:"A personal occasion and treatment-based reactivation each get their own clinic-approved message and timing."},"aftercare-rebook":{layout:"aftercare",title:"The right care information after the visit.",intro:"Automated aftercare delivers the clinical teamâs approved information for the completed treatment."},"email-marketing":{layout:"emails",title:"The brand carries into the inbox.",intro:"Reminders, greetings and return invitations share a purpose while keeping each clinicâs own design and voice."},"social-planner":{layout:"flow",title:"Give each planned post a clear brief.",intro:"Content, destination and schedule are different decisions. This planning illustration keeps them explicit.",caption:"Illustrated content-planning process. Ongoing content creation and posting are separately scoped.",steps:[ls("Connected account","Choose the social profile available in the clinicâs configured setup.","Clinic setup","The intended destination"),ls("Approved content","Prepare the words and media for that account.","Clinic approves","A specific post"),ls("Planned schedule","Choose when the approved post is intended to appear.","Content plan","A date and time"),ls("Review the plan","Check the content, account and timing together in the planner.","Clinic team","No publication assumed")]},advertising:{layout:"record",title:"Review the destination behind the creative.",intro:"Before the first campaign launches, the offer and booking path need to agree.",view:mc,notes:[{title:"The service",body:"Confirm the appointment the campaign introduces."},{title:"The destination",body:"Review the landing and booking links the patient will follow."},{title:"The launch",body:"Approve the creative, access and budget before launching together."}]},dashboard:{layout:"record",title:"Read the calendar mix, not only the total.",intro:"A focused breakdown adds context to the appointment activity for the selected period.",view:Rb,notes:[{title:"Period",body:"Start with the date range being reviewed."},{title:"Calendar",body:"See how the displayed appointments are distributed across calendars."}
765,{title:"Follow-up",body:"Use that context to decide where the team should look next."}]},"clinical-notes":{layout:"pair",title:"Give the written note a visual reference.",intro:"Procedure details describe the treatment. Named areas add context beside that documentation.",views:[hc,Zu]},"patient-workspace":{layout:"record",title:"Find the visit you need to review.",intro:"The note list provides a view of the treatment documentation and its displayed statuses.",view:Ju,notes:[{title:"The treatment",body:"Identify the visit and procedure recorded in the list."},{title:"The note",body:"Distinguish the displayed draft and signed note states."},{title:"The clinical review",body:"Qualified staff review the information before making care decisions."}]},templates:{layout:"record",title:"Structure helps the clinician start with the right context.",intro:"The note still needs the clinicianâs observations and judgment for this visit.",view:Cb,notes:[{title:"A useful starting point",body:"Use the clinicâs approved treatment structure."},{title:"Visit-specific detail",body:"Document what the clinician observes for this patient and treatment."},{title:"Review before completion",body:"Check the record rather than treating a template as a finished note."}]},consents:{layout:"record",title:"The status is visible. The review remains clinical.",intro:"This detail shows an unsigned consent state and the control for sending the approved form link.",view:Xu,notes:[{title:"Send the approved form",body:"Use the clinicâs consent document for the treatment."},{title:"Review the record",body:"A delivery action or displayed status is not a substitute for reviewing consent."},{title:"Decide before care",body:"The clinical team remains responsible for consent and treatment decisions."}]},photos:{layout:"pair",title:"Keep photo context tied to the visit.",intro:"The procedure details and treatment-area reference help describe the work documented in the note.",views:[hc,Zu],note:"Related documentation views are shown. No stored patient photograph or comparison result is displayed."},"body-mapping":{layout:"record",title:"The map and the written detail belong together.",intro:"Named areas provide a visual reference. The procedure fields describe the treatment recorded by the clinician.",view:hc,notes:[{title:"Area treated",body:"Describe the treatment area in the procedure detail."},{title:"Clinical context",body:"Record the information needed for this visit."},{title:"Review",body:"The map is a documentation aid, not an injection plan or a clinical decision."}]},inventory:{layout:"record",title:"Read the quantity beside its threshold.",intro:"The focused stock list keeps the product, available amount and displayed status together.",view:Tb,notes:[{title:"Product",body:"Identify the item and its category."},{title:"Available quantity",body:"Review the stock figure and configured threshold."},{title:"Follow-up review",body:"Use stock, batch and alert information to guide the teamâs next inventory check."}]},protocols:{layout:"pair",title:"Bring the scheduled visit into the clinical review.",intro:"The schedule identifies upcoming work. The documented record provides context for the qualified teamâs review.",views:[zb,Ju],note:"Related clinical views. The protocol editor is not shown; protocols and care decisions belong to the clinicâs clinical team."},payments:{layout:"record",title:"Go from a total to the individual record.",intro:"The displayed status matters when reviewing an order or payment record.",view:Ib,notes:[{title:"The record",body:"Identify the order or payment being reviewed."},{title:"The amount",body:"Read the amount in the context of that record."},{title:"The status",body:"Distinguish the displayed paid, partially paid and overdue states."}]},"appointment-reminders":{layout:"message",kind:"reminder",title:"Keep the visit in view, from confirmation to reply.",intro:"Appointment messages carry the clinicâs voice into the patientâs day, with the relevant details and a way to reach the team."},"intake-consent-automation":{layout:"message",kind:"forms",title:"The right forms, with a reminder only when needed.",intro:"The booked treatment identifies the approved forms. Recorded completion informs the reminder, while the clinical team reviews the information before care.",specimen:Xu},"gfe-coordination":{layout:"message",kind:"gfe",title:"Make the required exam step easier to follow.",intro:"When the treatment requires a GFE, a clear message connects the patient to the clinicâs process. The clinical decision stays with qualified staff."}};function Wi({view:i}){let[s,l]=(0,lt.useState)(!1);if((0,lt.useEffect)(()=>l(!1),[i.src]),i.mobile)return e("div",{className:"deep-responsive-image"},e("div",{className:"deep-desktop-view"},e(Wi,{view:{...i,mobile:void 0}})),e("div",{className:"deep-mobile-view"},e(Wi,{view:i.mobile})));if(s)return e("div",{className:"deep-image-error",role:"status"},"The image could not load. ",i.alt);let[d,p,h,f]=i.crop??[0,0,i.width,i.height],g=i.crop?{width:`${i.width/h*100}%`,left:`${-d/h*100}%`,top:`${-p/f*100}%`}:void 0;return e("div",{className:i.crop?"deep-image-crop":"deep-image-fit",style:i.crop?{aspectRatio:`${h} / ${f}`,maxWidth:h}:void 0},e("img",{src:i.src,width:i.width,height:i.height,alt:i.alt,loading:"lazy",decoding:"async",style:g,onError:()=>l(!0)}))}function em({scene:i,id:s,showView:l}){let[d,p]=(0,lt.useState)(0),[h,f]=(0,lt.useState)(!1),[g,b]=(0,lt.useState)(!1),u=(0,lt.useId)(),N=(0,lt.useRef)(null),[v,w]=(0,lt.useState)(!0);(0,lt.useEffect)(()=>
765{if(typeof IntersectionObserver>"u")return;let S=new IntersectionObserver(([R])=>w(R.isIntersecting),{threshold:.15});return N.current&&S.observe(N.current),()=>S.disconnect()},[]),(0,lt.useEffect)(()=>{var j;let S=(j=window.matchMedia)==null?void 0:j.call(window,"(prefers-reduced-motion: reduce)");if(!S)return;let R=()=>{b(S.matches),S.matches&&f(!1)};return R(),S.addEventListener("change",R),()=>S.removeEventListener("change",R)},[]),(0,lt.useEffect)(()=>{if(!h||g||!v)return;if(d>=i.steps.length-1){f(!1);return}let S=window.setTimeout(()=>p(R=>R+1),2800);return()=>window.clearTimeout(S)},[h,g,v,d,i.steps.length]),(0,lt.useEffect)(()=>{let S=()=>{document.hidden&&f(!1)};return document.addEventListener("visibilitychange",S),()=>document.removeEventListener("visibilitychange",S)},[]);let C=i.steps[d],A=d===i.steps.length-1;function z(){A&&p(0),f(!0)}return e("div",{className:"deep-sequence",ref:N,"data-playing":h,"data-reduced":g},e("div",{className:"deep-sequence-toolbar"},e("p",null,"Workflow illustration"),e("div",null,g?e("button",{type:"button",onClick:()=>p(S=>(S+1)%i.steps.length)},"Next step ",e(J,{size:16})):e("button",{type:"button",onClick:()=>h?f(!1):z()},h?e("span",{className:"deep-pause-icon","aria-hidden":"true"}):e(Ja,{size:15})," ",h?"Pause sequence":A?"Play again":"Play sequence"),e("button",{type:"button",onClick:()=>{p(0),f(!g)}},e(Qa,{size:15}),"Replay"))),g&&e("p",{className:"deep-motion-note"},"Motion is reduced. Choose a step to explore the sequence."),e("ol",{className:"deep-sequence-rail",style:{"--deep-progress":d/(i.steps.length-1)}},i.steps.map((S,R)=>e("li",{key:S.title,"data-completed":R<d||void 0},e("button",{type:"button","aria-pressed":R===d,"aria-controls":`${u}-step`,onClick:()=>{f(!1),p(R)}},e("span",{className:"deep-step-dot","aria-hidden":"true"},R+1),e("span",null,S.title))))),e("div",{className:"deep-sequence-detail",id:`${u}-step`,"aria-live":"off","aria-atomic":"true"},e("div",{className:"deep-step-explanation",key:`${s}-${d}`},e("span",{className:"deep-step-position"},"Step ",d+1," of ",i.steps.length),e("h3",null,C.title),e("p",null,C.body),e("dl",null,e("div",null,e("dt",null,"What drives this step"),e("dd",null,C.owner)),e("div",null,e("dt",null,"Relevant context"),e("dd",null,C.context)))),e("div",{className:"deep-sequence-context","aria-hidden":"true"},e("span",{className:"deep-context-rule"}),e("span",null,i.steps[0].context),e(J,{size:28}),e("strong",null,C.context),e("span",{className:"deep-context-rule"}))),i.specimen&&e("figure",{className:"deep-inline-specimen"},e("h3",null,i.specimen.title),e(Wi,{view:i.specimen}),e("figcaption",null,i.specimen.caption),e("button",{className:"deep-fullsize",type:"button",onClick:S=>l(i.specimen,S.currentTarget)},"View this detail ",e(Ae,{size:16}))),e("p",{className:"deep-source-note"},i.caption))}function jb({id:i,scene:s}){var C;const l=Ce();let d=(0,lt.useId)(),[p,h]=(0,lt.useState)(null),f=(0,lt.useRef)(null),g=(0,lt.useRef)(null),b=(0,lt.useRef)(null);(0,lt.useEffect)(()=>{var S;if(!p)return;let A=f.current;if(!A)return;let z=document.documentElement.style.overflow;return document.documentElement.style.overflow="hidden",A.open||A.showModal(),(S=g.current)==null||S.focus(),()=>{var R;A.open&&A.close(),document.documentElement.style.overflow=z,(R=b.current)!=null&&R.isConnected&&b.current.focus({preventScroll:!0})}},[p]);function u(A,z){b.current=z,h(A)}function N(){h(null)}function v(A){if(A.key!=="Tab")return;let z=[...A.currentTarget.querySelectorAll('button,[tabindex="0"]')],S=z[0],R=z[z.length-1];A.shiftKey&&document.activeElement===S?(A.preventDefault(),R==null||R.focus()):!A.shiftKey&&document.activeElement===R&&(A.preventDefault(),S==null||S.focus())}function w(A){return l&&Yi(A.src)!==null?e(Kr,{key:A.src,initialStep:Yi(A.src),label:"Online booking"}):l?e(Ns,{key:A.src+"-"+A.title,label:A.title,caption:A.caption,src:A.src,alt:A.alt,preview:Ki[A.src.split("/").pop().replace(/\.[a-z]+$/,"")]?e(Es,{file:A.src.split("/").pop().replace(/\.[a-z]+$/,"")}):void 0,renderFull:()=>{var z;return e("figure",{className:"deep-figure"},e("h3",null,A.title),e("div",{className:"mgf-image-original",tabIndex:0,role:"region","aria-label":"Full-size approved detail. Scroll to inspect the image."},e("div",{style:{width:((z=A.crop)==null?void 0:z[2])??A.width}},e(Wi,{view:{...A,mobile:void 0}}))),e("figcaption",null,A.caption))}}):e("figure",{className:"deep-figure",key:`${A.src}
765-${A.title}`},e("h3",null,A.title),e(Wi,{view:A}),e("figcaption",null,A.caption),A.crop?e("button",{className:"deep-fullsize",type:"button",onClick:z=>u(A,z.currentTarget)},"View this detail ",e(Ae,{size:16})):null)}return e("section",{className:`section feature-deep-dive feature-deep-dive--${s.layout}`,"aria-labelledby":`${d}-title`,"data-feature":i},e("header",{className:"deep-heading"},e("h2",{id:`${d}-title`},s.title),e("p",null,s.intro)),i==="gfe-coordination"&&e(hv,null),s.layout==="pair"&&e(Y.Fragment,null,e("div",{className:"deep-pair"},s.views.map(w)),s.note&&e("p",{className:"deep-source-note"},s.note)),s.layout==="record"&&e("div",{className:"deep-record"},e("div",null,w(s.view)),e("dl",{className:"deep-annotation-rail"},s.notes.map(A=>e("div",{key:A.title},e("dt",null,A.title),e("dd",null,A.body))))),i==="payments"&&e(bv,null),i==="clinical-notes"&&e(rh,null),i==="patient-workspace"&&e(fc,null),i==="packages"&&e(fc,{focus:"packages"}),i==="subscriptions"&&e(fc,{focus:"membership"}),i==="inventory"&&e(mv,null),s.layout==="flow"&&e(yv,{scene:s,id:i,showView:u}),s.layout==="message"&&e(Y.Fragment,null,e(Dm,{kind:s.kind}),s.specimen&&e("div",{className:"deep-supporting-record"},w(s.specimen))),s.layout==="return"&&e(Pm,null),s.layout==="birthday"&&e(lb,null),s.layout==="aftercare"&&e(sb,null),s.layout==="emails"&&e(Om,null),s.layout==="gift-card"&&e(cb,null),s.layout==="website-path"&&e("div",{className:"deep-website-path"},e("div",null,e("span",null,"01 · The treatment page"),e("h3",null,"Introduce the visit."),e("p",null,"Your service, your clinic and the reason to book.")),e(J,{size:23}),e("div",null,e("span",null,"02 · Online booking"),e("h3",null,"Make the choice clear."),e("p",null,"The service, provider and appointment options.")),e(J,{size:23}),e("div",null,e("span",null,"03 · The calendar"),e("h3",null,"Choose a time."),e("p",null,"The available appointments and visit details."))),s.layout==="operations"&&e(db,{kind:s.kind}),e("dialog",{className:"deep-image-dialog",ref:f,"aria-labelledby":`${d}-detail-title`,onCancel:A=>{A.preventDefault(),N()},onClose:()=>h(null),onKeyDown:v,onClick:A=>{A.target===A.currentTarget&&N()}},p&&e(Y.Fragment,null,e("div",{className:"deep-dialog-header"},e("h2",{id:`${d}-detail-title`},p.title),e("button",{type:"button",ref:g,onClick:N},"Close detail ",e(Ec,{size:17}))),e("p",null,p.caption),e("div",{className:"deep-native-viewport",tabIndex:0,role:"region","aria-label":"Full-size approved detail. Scroll to inspect the image."},e("div",{style:{width:((C=p.crop)==null?void 0:C[2])??p.width}},e(Wi,{view:{...p,mobile:void 0}}))))))}function Wm({id:i}){if(!Yr(i))return null;if(i==="protocols"||i==="templates")return e(fv,{key:i,kind:i});if(i==="in-room")return e(gv,null);if(i==="advertising")return e("section",{className:"section"},e(Fc,null));if(i==="photos")return e("section",{className:"section"},e(uv,null));if(i==="contacts-pipeline"||i==="conversations")return e("section",{className:"section"},e(dv,null));if(i==="body-mapping")return e("section",{className:"section"},e(rh,null));if(i==="ask-ai")return e(qm,{expanded:!0});if(i==="social-planner")return e(pv,null);let s=Lb[i];return s?e(jb,{key:i,id:i,scene:s}):null}var gs=[{id:"natural-rejuvenation",name:"Natural Rejuvenation",location:"Bellevue, Washington",url:"https://naturalrejuvenationmedspa.com",tone:"Warm, refined and grounded in the clinicâs approach."},{id:"evidence-md",name:"Evidence MD",location:"Portland, Oregon",url:"https://evidencemdaesthetics.com",tone:"Clinical precision with an unmistakable visual identity."},{id:"sunshine",name:"Sunshine Mobile Wellness",location:"Coastal South Orange County",url:"https://sunshinemobilewellness.com",tone:"A coastal, concierge experience from the first visit."},{id:"kc-aesthetics",name:"KC Aesthetics",location:"Newark, New Jersey",url:"https://kcaestheticsrn.com",tone:"Personal, focused and built around the provider."},{id:"skin-bar",name:"Skin Bar New York",location:"Huntington, New York",url:"https://skinbarnewyork.com",tone:"A polished introduction to a distinctive studio."},{id:"dr-mary",name:"Medical Esthetics & Wellness",location:"Dr. Mary Infantino",url:"https://drmarynp.com",tone:"A familiar face at the center of the practice."},{id:"revitalize",name:"Revitalize Trim Spa",location:"Westland, Michigan",url:"https://revitalizetrimspa.com",tone:"A welcoming path into weight loss and wellness."},{id:"sombra-soul",name:"Sombra & Soul",location:"Lodi, California",url:"https://sombraandsoul.com",tone:"A calming introduction to facial massage and somatic care."}],tm=3e4,Db=600,Pb={};function am(){let[i,s]=(0,Je.useState)(0),[l,d]=(0,Je.useState)("mobile"),[p,h]=(0,Je.useState)(!1),[f,g]=(0,Je.useState)(0),[b,u]=(0,Je.useState)(()=>{var K;return!!((K=window.matchMedia)!=null&&K.call(window,"(prefers-reduced-motion: reduce)").matches)}),[N,v]=(0,Je.useState)(!0),[w,C]=(0,Je.useState)(()=>!document.hidden),[A,z]=(0,Je.useState)({desktop:!1,mobile:!1}),[S,R]=(0,Je.useState)(!1),j=(0,Je.useRef)(0),$=(0,Je.useRef)(0),V=(0,Je.useRef)(null),D=(0,Je.useRef)(null),L=(0,Je.useId)(),B=gs[i],ne=(0,Je.useCallback)(()=>{var Le;let K=[];(Le=D.current)==null||Le.querySelectorAll(".portfolio-gallery__crop").forEach(F=>{let Z=F.querySelector("img"),re=(Z==null?void 0:Z.getBoundingClientRect().height)??0,oe=Z!=null&&Z.naturalHeight?Number(Z.dataset.captureEndInset??0)*re/Z.naturalHeight:0,M=Math.max(0,re-oe-F.clientHeight);F.style.setProperty("--portfolio-overflow",`${M}px`),F.clientWidth>0&&F.clientHeight>0&&K.push(!!(Z!=null&&Z.complete&&Z.naturalHeight>0))});let he=K.length>0&&K.every(Boolean);R(he),he||h(!1)},[]);(0,Je.useLayoutEffect)(()=>{var Le;let K=(Le=D.current)==null?void 0:Le.querySelectorAll(".portfolio-gallery__crop,.portfolio-gallery__crop img"),he=typeof ResizeObserver>"u"?void 0:new ResizeObserver(ne);
765return K==null||K.forEach(F=>he==null?void 0:he.observe(F)),window.addEventListener("resize",ne),ne(),()=>{he==null||he.disconnect(),window.removeEventListener("resize",ne)}},[i,l,A.desktop,A.mobile,ne]),(0,Je.useEffect)(()=>{var Le;let K=(Le=window.matchMedia)==null?void 0:Le.call(window,"(prefers-reduced-motion: reduce)");if(!K)return;let he=()=>{u(K.matches),K.matches&&h(!1)};return K.addEventListener("change",he),()=>K.removeEventListener("change",he)},[]),(0,Je.useEffect)(()=>{let K=()=>{C(!document.hidden),document.hidden&&h(!1)};return document.addEventListener("visibilitychange",K),()=>document.removeEventListener("visibilitychange",K)},[]),(0,Je.useEffect)(()=>{if(typeof IntersectionObserver>"u")return;let K=new IntersectionObserver(([he])=>{v(he.isIntersecting),he.isIntersecting||h(!1)},{threshold:.12});return V.current&&K.observe(V.current),()=>K.disconnect()},[]),(0,Je.useEffect)(()=>{if(!p||!S||b||!N||!w)return;let K=0,he,Le=$.current,F=Z=>{var M,U;he===void 0&&(he=Z);let re=Le+(Z-he);if(re>=tm+Db){$.current=0,j.current=0,(M=D.current)==null||M.style.setProperty("--portfolio-pan","0"),g(0),h(!1);return}$.current=re;let oe=Math.min(1,re/tm);j.current=oe,(U=D.current)==null||U.style.setProperty("--portfolio-pan",String(oe)),K=requestAnimationFrame(F)};return K=requestAnimationFrame(F),()=>cancelAnimationFrame(K)},[p,S,b,N,w]),(0,Je.useEffect)(()=>{p||g(j.current)},[p]);function G(K){var he;h(!1),$.current=0,j.current=K,(he=D.current)==null||he.style.setProperty("--portfolio-pan",String(K)),g(K)}function ue(K){K!==i&&R(!1),s(K),z({desktop:!1,mobile:!1}),G(0)}function ye(K){d(K),G(0)}function Bt(){var K;if(p){h(!1);return}j.current>=1&&$.current===0&&(j.current=0,(K=D.current)==null||K.style.setProperty("--portfolio-pan","0"),g(0)),h(!0)}let ct={"--portfolio-pan":f},dt=K=>A[K]?e("p",{className:"portfolio-gallery__error"},"This ",K," capture could not load. You can visit the website below."):e("img",{key:`${B.id}-${K}`,src:`/assets/portfolio-v10/${B.id}-${K}.jpg`,width:K==="desktop"?1440:390,"data-capture-end-inset":Pb[`${B.id}-${K}`]??0,alt:`${B.name} live website, full ${K} page capture`,loading:"lazy",decoding:"async",onLoad:ne,onError:()=>{z(he=>({...he,[K]:!0})),h(!1)}});return e("section",{className:`section portfolio-gallery portfolio-gallery--v8${p?" is-playing":""}`,ref:V,"aria-labelledby":`${L}-title`},e("div",{className:"portfolio-gallery__heading"},e("div",null,e("p",{className:"eyebrow"},"WEBSITES WEâVE BUILT"),e("h2",{id:`${L}-title`},"Your clinic should",e("br",null),"look like your clinic.")),e("p",null,"Explore real client websites. Different brands, services and peopleâeach with its own patient experience.")),e("label",{className:"portfolio-gallery__select"},"Choose a client website",e("select",{value:i,onChange:K=>ue(Number(K.target.value))},gs.map((K,he)=>e("option",{key:K.id,value:he},K.name)))),e("div",{className:"portfolio-gallery__choices",role:"group","aria-label":"Choose a client website"},gs.map((K,he)=>e("button",{type:"button",key:K.id,"aria-pressed":i===he,"aria-controls":`${L}-preview`,onClick:()=>ue(he)},K.name))),e("div",{className:"portfolio-gallery__toolbar"},e("div",{className:"portfolio-gallery__view-controls",role:"group","aria-label":"Choose a website preview size"},e("button",{type:"button","aria-pressed":l==="desktop","aria-controls":`${L}-preview`,onClick:()=>ye("desktop")},"Desktop"),e("button",{type:"button","aria-pressed":l==="mobile","aria-controls":`${L}-preview`,onClick:()=>ye("mobile")},"Phone")),e("div",{className:"portfolio-gallery__pan-controls",role:"group","aria-label":"Scroll the full website capture"},!b&&e("button",{type:"button",className:"portfolio-gallery__play",onClick:Bt,disabled:!S||A.desktop||A.mobile,"aria-controls":`${L}-preview`,"aria-pressed":p},p?e("span",{className:"portfolio-gallery__pause","aria-hidden":"true"},"â
¡"):e(Ja,{size:15})," ",p?"Pause":"Play"),e("button",{type:"button",onClick:()=>G(0),"aria-controls":`${L}-preview`,"aria-pressed":!p&&f===0},"Top"))),b&&e("label",{className:"portfolio-gallery__position"},e("span",null,"Preview position ",e("span",{"aria-hidden":"true"},Math.round(f*100),"%")),e("input",{type:"range",min:"0",max:"100",step:"1",value:Math.round(f*100),"aria-controls":`${L}-preview`,"aria-valuetext":f===0?"Top of preview":f===1?"Footer of preview":`${Math.round(f*100)}% through preview`,disabled:!S||A.desktop||A.mobile,onChange:K=>G(Number(K.target.value)/100)})),e("div",{id:`${L}-preview`,ref:D,className:"portfolio-gallery__stage","data-mobile-view":l,style:ct,"aria-busy":!S&&!A.desktop&&!A.mobile},e("div",{className:"portfolio-gallery__desktop"},e("div",{className:"portfolio-gallery__browser"},e("span",null,B.url.replace("https://","")),e("span",null,"Desktop")),e("div",{className:"portfolio-gallery__crop portfolio-gallery__crop--desktop"},dt("desktop"))),e("figure",{className:"portfolio-gallery__mobile"},e("div",{className:"portfolio-gallery__crop portfolio-gallery__crop--mobile"},dt("mobile")),e("figcaption",null,"Phone"))),e("div",{className:"portfolio-gallery__caption","aria-live":"polite"},e("div",null,e("h3",null,B.name),e("p",null,B.tone)),e("a",{className:"text-link",href:B.url,target:"_blank",rel:"noreferrer","aria-label":`Visit ${B.name} website (new tab)`},"Visit website ",e(Ae,{size:18}))),e("p",{className:"portfolio-gallery__note"}
765,"Full website captures · September 2026. ",b?"Use Preview position to inspect the full page.":"Play scrolls to the footer, then returns to the top."))}var Ob=[["Where will my ads run?","We create Meta campaigns for Facebook and Instagram. The ad invites someone to submit a lead form, which connects their inquiry to your CRM and follow-up."],["Does my team still need to call leads?","Yes. AI supports the text conversation; your team makes the personal call, answers individual questions and helps interested leads choose an appointment. We agree on who receives those notifications before launch."],["What if a lead does not reply?","A first inquiry does not always become a conversation immediately. We configure follow-up timing for your clinic, while your team can see who still needs a call. Messaging respects the contactâs permissions and opt-out choices."],["What acquisition work is included with Launch?","Launch includes your first Meta ad creative and campaign launch, connected to your lead follow-up and booking setup. Later campaigns and ongoing management are handled by your team or scoped separately with MSMAI."],["Is ad spend included?","Ad spend is separate and paid to Meta. We agree on the campaign budget before launch. If you want ongoing management, its scope and monthly fee are agreed separately."],["Does a new lead mean a booked patient?","A lead is someone who has submitted an inquiry. A booked appointment and an attended visit are later outcomes. Follow-up helps people take the next step, but we do not promise a fixed number of bookings."]];function Fb(){return e("ol",{className:"acq-flow","aria-label":"From Meta ad to booking"},e("li",{className:"acq-flow-stage"},e("div",{className:"acq-flow-label"},e("span",null,"01"),e("h3",null,"Meta ad")),e("p",null,"Someone sees your clinicâs offer on Facebook or Instagram."),e("div",{className:"acq-flow-art"},e("img",{src:"/assets/campaigns/dr-mary-emsella-confidence.jpg",width:640,height:640,alt:"Original Dr. Mary Emsella ad: Confidence is quiet."}),e("span",null,"Real client creative")),e(J,{className:"acq-flow-arrow",size:22,"aria-hidden":"true"})),e("li",{className:"acq-flow-stage"},e("div",{className:"acq-flow-label"},e("span",null,"02"),e("h3",null,"New lead")),e("p",null,"They submit the Meta form. Their details go into your CRM."),e("div",{className:"acq-flow-lead"},e(Ge,{size:23}),e("strong",null,"New consultation inquiry"),e("span",null,"Jamie Sample"),e("div",null,e(De,{size:15}),"Contact details captured"),e("div",null,e(De,{size:15}),"Saved in your CRM")),e(J,{className:"acq-flow-arrow",size:22,"aria-hidden":"true"})),e("li",{className:"acq-flow-stage acq-flow-stage--followup"},e("div",{className:"acq-flow-label"},e("span",null,"03"),e("h3",null,"AI + your team")),e("p",null,"One new lead starts two follow-up actions."),e("div",{className:"acq-flow-parallel"},e("div",null,e(We,{size:21}),e("strong",null,"AI sends a text"),e("p",null,"âHi Jamie, thanks for reaching out. How can we help?â")),e("span",{className:"acq-flow-and"},"AND"),e("div",null,e(En,{size:21}),e("strong",null,"Your team gets a call alert"),e("p",null,"Call Jamie to answer questions and help choose a time."))),e(J,{className:"acq-flow-arrow",size:22,"aria-hidden":"true"})),e("li",{className:"acq-flow-stage"},e("div",{className:"acq-flow-label"},e("span",null,"04"),e("h3",null,"Booking")),e("p",null,"AI and your team help interested leads choose an appointment."),e("div",{className:"acq-flow-booking"},e("span",null,e(De,{size:25})),e("strong",null,"Appointment booked"),e("p",null,"Visit reminders follow."),e(H,{to:"/features/booking"},"See online booking ",e(J,{size:15})))))}function _b(){let i=(0,Og.useId)();return e("div",{className:"acq-page"},e("nav",{className:"feature-breadcrumbs","aria-label":"Breadcrumb"},e(H,{to:"/features"},"Features"),e("span",{"aria-hidden":"true"},"/"),e(H,{to:"/marketing-system"},"Med Spa Marketing AI"),e("span",{"aria-hidden":"true"},"/"),e("span",{"aria-current":"page"},"Patient acquisition")),e("section",{className:"section acq-hero"},e("p",{className:"acq-kicker"},"Patient acquisition with Meta"),e("h1",null,"New leads.",e("br",null),"Real conversations.",e("br",null),"More bookings."),e("div",null,e("p",null,"We create your Meta ads. AI texts new leads, and
765your team gets notified to call and help them book."),e(H,{className:"button",to:"/discovery-call"},"Plan acquisition for your clinic ",e(J,{size:17})))),e("nav",{className:"section acq-nav","aria-label":"Explore patient acquisition"},e("a",{href:"#acquisition-process"},"How it works"),e("a",{href:"#acquisition-creative"},"Client creative"),e("a",{href:"#acquisition-responsibilities"},"Your teamâs role"),e("a",{href:"#acquisition-measurement"},"What to measure"),e("a",{href:"#acquisition-scope"},"Whatâs included")),e("section",{className:"section acq-process",id:"acquisition-process","aria-labelledby":`${i}-process-title`},e("header",{className:"acq-heading"},e("h2",{id:`${i}-process-title`},"From Meta ad to",e("br",null),"booked appointment."),e("p",null,"We generate the lead. AI starts the conversation. Your team makes the personal call.")),e(Fb,null),e("p",{className:"acq-page-caption"},"Example journey with a fictional lead. Follow-up and reminders are configured for your clinic; an inquiry does not guarantee a booking.")),e("section",{className:"section acq-creative",id:"acquisition-creative"},e(Fc,{creativeOnly:!0,showCostExample:!1})),e("section",{className:"section acq-responsibilities",id:"acquisition-responsibilities","aria-labelledby":`${i}-roles`},e("header",{className:"acq-heading"},e("h2",{id:`${i}-roles`},"AI starts the text.",e("br",null),"Your team makes the call."),e("p",null,"Before launch, we agree on what AI can say and who on your team receives the call alerts.")),e("div",{className:"acq-roles"},e("article",null,e(We,{size:27}),e("h3",null,"AI + automation"),e("ul",null,e("li",null,"Captures the lead and starts the text."),e("li",null,"Helps with approved questions and booking."),e("li",null,"Alerts your team to make the call."))),e("article",null,e(Ge,{size:27}),e("h3",null,"Your clinic team"),e("ul",null,e("li",null,"Calls the lead and answers personal questions."),e("li",null,"Handles clinical questions and suitability."),e("li",null,"Helps them book and records the outcome.")))),e("p",{className:"acq-role-note"},"AI supports the conversation. Clinical advice and treatment suitability stay with your qualified team.")),e("section",{className:"section acq-measurement",id:"acquisition-measurement","aria-labelledby":`${i}-measure`},e("div",null,e("h2",{id:`${i}-measure`},"See what happens",e("br",null),"after the lead."),e("p",null,"Follow inquiries through conversations, bookings and attended visits."),e("p",{className:"acq-page-caption"},"Review Meta spend alongside CRM, appointment and payment records. Count collected revenue only where a payment can be connected to the lead.")),e("dl",null,e("div",null,e("dt",null,"Ad spend & inquiries"),e("dd",null,"What did Meta spend, and how many leads did the ads generate?")),e("div",null,e("dt",null,"Conversations"),e("dd",null,"Which leads replied, and which still need a call?")),e("div",null,e("dt",null,"Booked appointments"),e("dd",null,"How many interested leads chose an appointment?")),e("div",null,e("dt",null,"Attended visits"),e("dd",null,"Who came in, and who needs another next step?")),e("div",null,e("dt",null,"Collected revenue"),e("dd",null,"What was actually paid, where the payment can be connected to the lead?")))),e("section",{className:"section acq-scope",id:"acquisition-scope","aria-labelledby":`${i}-scope`},e("header",{className:"acq-heading"},e("h2",{id:`${i}-scope`},"Your first campaign.",e("br",null),"What comes next."),e("p",null,"Launch gets your first campaign live. Growth supports ongoing campaign management within the agreed engagement.")),e("div",{className:"acq-scope-columns"},e("article",null,e("span",null,"Included with Launch"),e("h3",null,"The first campaign"),e("p",null,"First ad creative and campaign launch, with your lead form, AI follow-up and staff alerts connected. You approve the offer and budget."),e(H,{className:"text-link",to:"/programs/launch"},"Explore Launch ",e(J,{size:17}))),e("article",null,e("span",null,"Included with Growth"),e("h3",null,"Ongoing management"),e("p",null,"Growth brings campaign strategy, creative, Meta acquisition and retargeting, booking paths and follow-up together, with ongoing website work and monthly reporting."),e(H,{className:"text-link",to:"/programs/growth"},"Explore Growth ",e(J,{size:17})))),e("aside",{className:"acq-budget"},e("strong",null,"Ad spend is separate."),e("p",null,"Your media budget is paid separately to Meta. Compare Launch setup and ongoing Growth support, then agree the advertising budget and any additional services."),e("a",{href:"/pricing"},"Compare programs and costs"),e("span",null,"Program fees and advertising spend are separate."))),e("section",{className:"section acq-faq","aria-labelledby":`${i}-faq`},e("h2",{id:`${i}-faq`},"A few common",e("br",null),"questions."),e("div",null,Ob.map(([s,l])=>e("details",{key:s},e("summary",null,s,e("span",{"aria-hidden":"true"},"+")),e("p",null,l))))),e("section",{className:"section acq-closing"},e("h2",null,"Build the path around",e("br",null),"your clinic."),e("p",null,"Bring your treatment priorities, appointment capacity and questions. Weâll walk through the campaign, follow-up and team responsibilities together."),e(H,{className:"button",to:"/discovery-call"},"Plan acquisition for your clinic ",e(J,{size:17}))))}var Ub={"booking-v2-menu":[2196,1903],"booking-v2-cart":[2196,1360],"booking-v2-staff":[2196,1410],"booking-v2-calendar":[2196,1432],"booking-v2-checkout":[2196,1652],"owner-dashboard":[2056,1591],inbox:[2176,1561],"email-stats":[2016,1626],"social-planner":[2136,1938],"emr-treatment-note":[2496,2988],"emr-notes-list":[2136,1500],"emr-inventory":[2176,1401],"emr-payments":[2256,1350],"emr-calendar":[2376,1328],"emr-body-map-marked":[1376,1538],"emr-patients":[2296,1564],"emr-dashboard":[2296,2020],"emr-reports":[2296,1513],"sunshine-branded-confirmation":[720,1e3],"kc-consultation-creative":[1440,1800]},nm={website:[xt,He,us],booking:[He,Ge,It],calendars:[He,Ge,xt],"deposits-reminders":[It,He,At],"contacts-pipeline":[Ge,We,xt],conversations:[We,Ge,En],retention:[Qa,He,We],reviews:[We,In,Ge],"appointment-recovery":[He,Qa,We],"birthday-winback":[Vi,Bi,We],"aftercare-rebook":[Bi,At,We],"email-marketing":[We,xt,ii],"social-planner":[He,xt,We],advertising:[Em,Ge,ii],dashboard:[ii,He,Ge],"clinical-notes":[At,us,Qe],"patient-workspace":[Ge,da,At],templates:[xt,At,Qe],consents:[Qe,At,Hg],photos:[Rn,xt,Ge],"body-mapping":[us,At,Qe],inventory:[si,xt,En],protocols:[da,Ge,Qe],payments:[It,At,ii],"appointment-reminders":[En,He,We],"intake-consent-automation":[At,En,Qe],"gfe-coordination":[da,Ge,Qe],"ask-ai":[In,xs,We],"in-room":[Ge,Rn,da],packages:[si,He,ii],subscriptions:[Qa,It,At],"gift-cards":[Vi,It,ii]};function qb(i,s){return["payments","packages","subscriptions","gift-cards","dashboard","inventory"].includes(i)?"practice":s?"clinical":["website","booking","calendars","deposits-reminders","advertising","contacts-pipeline"].includes(i)?"booking":"followup"}var Wb={practice:"Keep the practice moving.",clinical:"Alongside the clinical record.",booking:"Keep the path to booking clear.",followup:"Keep the conversation moving."};function Vb({id:i,bookingWalkthrough:s}){var $;const l=Ce();let d=za.find(V=>V.id===i),p=Yr(i),h=p==null?void 0:p.visual.recommendedAsset,[f,g]=(0,vu.useState)(!1);if((0,vu.useEffect)(()=>
765g(!1),[h]),!d||!p)return null;if(i==="advertising")return e(_b,null);let b=d.area==="emr",u=b?"EMRMedSpa":"Med Spa Marketing AI",N=p.relatedIds.flatMap(V=>za.find(D=>D.id===V)??[]),v=(($=h==null?void 0:h.split("/").pop())==null?void 0:$.replace(/\.[a-z]+$/,""))??"",[w,C]=Ub[v]??[1600,1200],A=i==="photos"&&v==="emr-treatment-note",z=i==="website",S=p.visual.kind==="product"&&!!h&&!["booking","advertising","email-marketing","templates"].includes(i),R=qb(i,b),j=nm[i]??[xt,At,Ge];return e("div",{className:`feature-page feature-page--compact feature-page--v8 feature-page--${b?"emr":"marketing"} feature-page--${R}`,key:i},e("nav",{className:"feature-breadcrumbs","aria-label":"Breadcrumb"},e(H,{to:"/features"},"Features"),e("span",{"aria-hidden":"true"},"/"),e(H,{to:b?"/emr":"/marketing-system"},u),e("span",{"aria-hidden":"true"},"/"),e("span",{"aria-current":"page"},d.title)),e("section",{className:`feature-page-hero${z?" feature-page-hero--portfolio":""}${S?"":" feature-page-hero--copy"}`},e("div",{className:"feature-page-lead"},e("p",{className:"eyebrow"},p.eyebrow.replace(/^(Marketing System|EMRMedSpa|Platform)\s*[·:]\s*/i,"")),e("h1",null,p.title),e("p",{className:"feature-page-intro"},p.intro),e(H,{className:"button",to:"/discovery-call"},"See it in a demo ",e(J,{size:17}))),S?l?Yi(h)!==null?e(Kr,{initialStep:Yi(h),label:"Online booking"}):e(Ns,{label:p.visual.title,caption:p.visual.caption,src:h,alt:p.visual.description,preview:e(Es,{featureId:i})}):e("figure",{className:`feature-page-visual ${A?"feature-page-visual--photo":""}`},f?e("p",{className:"screen-error"},"This image could not load. ",p.visual.description):e("div",{className:A?"photo-control-viewport":"feature-page-image-frame"},e("img",{key:h,src:h,width:w,height:C,alt:p.visual.description,loading:"eager",decoding:"async",onError:()=>g(!0)})),e("figcaption",null,p.visual.caption)):null),z?e(ih,null):i!=="booking"&&e(Wm,{id:i}),i==="booking"&&s,e("section",{className:"section feature-points",id:"feature-overview","aria-labelledby":`${i}-points-title`},e("h2",{id:`${i}-points-title`},p.overviewTitle),e("ul",null,p.bullets.map((V,D)=>{let L=j[D%j.length];return e("li",{key:V},e("span",{className:"feature-point-icon"},e(L,{size:25,strokeWidth:1.5})),e("p",null,V))}))),e("section",{className:"section feature-setup feature-setup--v8",id:"feature-setup"},e("div",null,e("h2",null,p.setup.title),e("p",null,p.setup.body)),e("nav",{className:"feature-program-links","aria-label":"Explore programs"},e(H,{className:"text-link",to:"/programs/launch"},"Launch for new practices ",e(J,{size:17})),e(H,{className:"text-link",to:"/programs/growth"},"Growth for existing practices ",e(J,{size:17})))),e("section",{className:"section feature-related feature-related--v8",id:"related-features"},e("div",{className:"section-heading"},e("h2",null,Wb[R]),e(H,{className:"text-link",to:"/features"},"All features ",e(J,{size:17}))),e("ul",null,N.map(V=>{var L;let D=((L=nm[V.id])==null?void 0:L[0])??xt;return e("li",{key:V.id},e(H,{to:V.href},e(D,{className:"feature-related-icon",size:24,strokeWidth:1.5}),e("div",null,e("span",null,V.area==="emr"?"EMRMedSpa":"Med Spa Marketing AI"),e("h3",null,V.title)),e(J,{className:"feature-related-arrow",size:18})))}))))}var Ct={label:"Book a demo",href:"/discovery-call"},im={label:"Explore the platform",href:"/platform"},Bb=[{name:"Rob Upland",role:"Founder"},{name:"Andrew",role:"CTO"},{name:"Adrienne",role:"Onboarding Specialist"},{name:"Alex",role:"Technical Specialist"}],Hb=[{title:"Your website",body:"Patients discover your clinic and explore treatment pages built around your brand and services.",href:"/features/website",linkLabel:"Explore websites"},{title:"Patient acquisition",body:"Your first Meta lead ads generate inquiries. AI follows up, while your team receives a notification to call and help turn interest into a booked appointment.",href:"/features/advertising",linkLabel:"Explore patient acquisition"},{title:"Online booking",body:"They choose a service, provider and appointment, with your booking policies and deposits configured.",href:"/features/booking",linkLabel:"Explore booking"}
765,{title:"Appointment reminders",body:"Automated confirmations and reminders provide the visit details and approved arrival instructions.",href:"/features/appointment-reminders",linkLabel:"Explore reminders"},{title:"Intake, consent and GFE",body:"The pre-visit workflow sends the approved forms and coordinates any required Good Faith Exam. Your clinical team reviews readiness for care.",href:"/features/intake-consent-automation",linkLabel:"Explore automated forms"},{title:"The treatment visit",body:"EMRMedSpa gives the team the clinical workspace for treatment notes, consent review, photos and inventory.",href:"/features/clinical-notes",linkLabel:"Explore clinical notes"},{title:"Aftercare, then the next visit",body:"Approved aftercare explains what to do after treatment. A separate retention plan invites the next booking and reconnects with patients who have not returned.",href:"/features/retention",linkLabel:"Explore treatment retention"}],La={"/":{path:"/",eyebrow:"Med Spa Marketing AI",title:"All-in-one med spa software. Done for you.",intro:"Your Marketing System and EMRMedSpa, configured for your clinic. From the website and booking to pre-visit paperwork, treatment and automated follow-up, the patient journey is built in.",metaDescription:"Explore an all-in-one med spa platform with a marketing system and custom EMR, plus done-for-you setup and your first campaign launch.",primaryAction:Ct,secondaryAction:im,sections:[{id:"product-tour",eyebrow:"See the software",title:"Start with the work you do every day.",body:"Choose a view to explore booking, conversations, marketing, clinical notes, payments or inventory."},{id:"platform",eyebrow:"Two product areas",title:"The business side. The clinical side.",body:"The Operating System includes the Marketing System and EMRMedSpa. Together, they support the journey from the website and booking to clinical preparation, treatment and the next visit.",cards:[{title:"Med Spa Marketing AI",body:"Your website, booking, CRM, branded messages and ad manager, with automated reminders, form delivery and treatment-specific retention.",href:"/marketing-system",linkLabel:"Explore Med Spa Marketing AI"},{title:"EMRMedSpa",body:"Document treatment with clinical notes, templates and photos. Review consent status, protocols and inventory in the clinical workspace.",href:"/emr",linkLabel:"Explore E
765MRMedSpa"}]},{id:"done-for-you",eyebrow:"Configured for your clinic",title:"We put the platform to work.",body:"We build your website and booking experience, customize the CRM, create branded follow-up and prepare your first ads. Then we launch the first campaign with you.",bullets:["Your services, booking rules and clinic branding.","Your approved messages, aftercare and rebooking cadence.","Your custom ad creative and first campaign launch."],action:{label:"See what we set up",href:"/how-it-works"}},{id:"customer-stories",eyebrow:"From med spa owners",title:"Meet the people behind the practices.",body:"Watch the original owner videos from Dr. Mary at Medical Esthetics and Wellness and Jessica at Skin Bar New York.",action:{label:"Watch the customer stories",href:"/customer-stories"}},{id:"programs",eyebrow:"Choose your starting point",title:"A new practice. Or the next chapter.",body:"Launch and Growth are separate programs for different stages of a med spa business.",cards:[{title:"Launch a med spa",body:"The Operating System and done-for-you setup for a new practice, including the custom EMR and first campaign launch.",href:"/programs/launch",linkLabel:"Explore Launch"},{title:"Grow an existing med spa",body:"A separate engagement for an established practice. Start with your current systems and priorities, then agree the scope of work.",href:"/programs/growth",linkLabel:"Explore Growth"}]}],faqs:[{question:"What does done for you include?",answer:"We build your website and configure booking, reminders, intake and consent delivery, GFE coordination, the clinical workspace and treatment-specific follow-up. The Marketing System and EMRMedSpa are included, and we launch the first campaign with you."},{question:"Is the custom EMR included?",answer:"Yes. EMRMedSpa is included in the Operating System. It is the clinical product area of the platform."},{question:"What if my med spa is already open?",answer:"Explore Growth, our separate program for established practices. We start with what you already use and agree the work around your priorities.",action:{label:"Explore Growth",href:"/programs/growth"}},{question:"How are staff calendars different from online booking?",answer:"Staff calendars organize your teamâs hours and appointments. Online booking is the patient-facing journey for choosing a service, provider and available time. We configure both around your clinic.",action:{label:"Explore staff calendars",href:"/features/calendars"}},{question:"Can we manage treatment packages and memberships?",answer:"Yes. We configure treatment packages so qualifying completed visits update the remaining sessions. Membership subscriptions handle recurring billing, with the benefits and package rules defined for your clinic.",action:{label:"Explore treatment packages",href:"/features/packages"}},{question:"How can Ask AI help us follow up?",answer:"Find contacts in the CRM, ask for a summary of a selected leadâs recent activity, then draft a reply that points toward booking. Your team reviews the context and message. We configure user access and explain applicable AI usage.",action:{label:"Explore Ask AI",href:"/features/ask-ai"}}],closing:{title:"See the platform with your clinic in mind.",body:"Tell us where you are starting. We will walk through the software and the setup that fits.",action:Ct}},"/platform":{path:"/platform",eyebrow:"The MSMAI platform",title:"Software for running and growing a med spa.",intro:"Two systems, combined in the Operating System: the Marketing System handles the website, booking and automated follow-up; EMRMedSpa supports clinical preparation and treatment documentation.",metaDescription:"Tour the MSMAI Marketing System and EMRMedSpa. Explore booking, CRM, retention, branded email, clinical notes, photos and inventory.",primaryAction:Ct,secondaryAction:{label:"Browse all features",href:"/features"},sections:[{id:"product-tour",title:"Look inside the workspace.",body:"Move through the software views to see the details behind each task."},{id:"marketing-system",eyebrow:"Med Spa Marketing AI",title:"From the first inquiry to the next visit.",body:"Give patients a clear booking path and give your team the context to follow up. Keep contacts, conversations, branded email and retention workflows in the marketing workspace.",bullets:["A service menu and appointment booking experience.","Contacts, lead progress and SMS/email conversations.","Reminders, aftercare, Reviews AI, rebooking and patient reactivation.","Local ads, custom creative and first-campaign lead follow-up."],action:{label:"Explore Med Spa Marketing AI",href:"/marketing-system"}},{id:"emr",eyebrow:"EMRMedSpa",title:"The tools for the treatment visit.",body:"Document care with treatment notes, templates and photos. Review consent status, keep protocols accessible and check stock and batches.",bullets:["Patient and chart workspace.","SOAP notes, smart phrases and treatment-area mapping.","Clinical photos, consent tools and protocols.","Inventory and payment-record views."],action:{label:"Explore E
765MRMedSpa",href:"/emr"}}],closing:{title:"Bring your everyday workflow to the demo.",body:"We can walk through booking, follow-up and clinical documentation in the context of your practice.",action:Ct}},"/marketing-system":{path:"/marketing-system",eyebrow:"Med Spa Marketing AI",title:"Turn inquiries into a clear next step.",intro:"Your website, booking, CRM and ad manager, with automated reminders, intake and consent delivery, branded email and treatment-specific retention.",metaDescription:"Explore med spa booking, CRM conversations, branded email, retention automations and first-campaign setup in the MSMAI Marketing System.",primaryAction:Ct,secondaryAction:{label:"See the Operating System program",href:"/programs/launch"},sections:[{id:"booking",eyebrow:"Online booking",title:"Help patients choose an appointment.",body:"We organize your services into a booking experience that makes the important details easy to find: what the appointment is, how long it takes and what the patient pays.",bullets:["Browse services by category.","See the description, duration and price before choosing.","Continue to the available appointment options.","Apply the booking and deposit rules agreed for your clinic."],cards:[{title:"Your services",body:"Use the treatments, descriptions and prices you have approved for launch."},{title:"Your appointment rules",body:"Configure the staff, availability and deposit requirements for the booking setup."}]},{id:"conversations",eyebrow:"CRM and team inbox",title:"Reply with the conversation in view.",body:"Bring email, SMS and connected Facebook and Instagram messages into one team inbox. Read the contactâs context, reply through the available channel or plan the clinicâs call.",bullets:["Find unread email, SMS and connected social messages.","Review contact details, tags and lead progress.","Follow up with the relevant booking or next-step information."],cards:[{title:"A place for each lead",body:"Use a pipeline that reflects the steps your team actually takes, from inquiry through follow-up."},{title:"A useful lead summary",body:"Ask AI can summarize a selected contactâs activity and help draft the next booking reply.",href:"/features/ask-ai",linkLabel:"Explore Ask AI"}]},{id:"retention",eyebrow:"Treatment-specific retention",title:"Make the next visit part of the plan.",body:"Invite the next booking at the interval your clinic approves for that service. Use a separate reactivation sequence when a patient has not returned.",cards:[{title:"The next appointment",body:"A completed treatment starts its own return-visit plan.",bullets:["The right invitation for that service.","The clinic-approved interval and booking link."]},{title:"When a patient has not returned",body:"A later message gives past patients a straightforward way to reconnect.",bullets:["Treatment-relevant reactivation.","A way to book or speak with the team."]},{title:"Aftercare has its own job",body:"Post-care messages provide the instructions your clinicians approve. Review requests and Reviews AI help your team manage feedback.",bullets:["Approved care information after treatment.","Review requests and AI-assisted replies."]}]},{id:"email-marketing",eyebrow:"Branded email",title:"Follow-up that looks like your clinic.",body:"Your clinic identity carries into the email experience. We prepare branded messages for the configured workflows, and the marketing workspace lets you review campaign activity.",bullets:["Clinic-branded email content.","Messages shaped around the appointment and next step.","Delivery, open and click activity for the selected campaign."]},{id:"advertising",eyebrow:"Ad manager and campaign setup",title:"Launch with ads made for your practice.",body:"We create the first ads and launch with you. Start with a local audience around a 10-mile radius, adjusted to your market, and connect each inquiry to the clinicâs call and message follow-up.",cards:[{title:"A local audience",body:"Choose the treatment, offer, audience radius and booking destination before launch."},{title:"Custom creative",body:"We create your first ads around the practice and offer you approve."},{title:"A plan for the lead",body:"Lead alerts prompt your clinicâs call. Automated SMS and configured Conversation AI help continue the conversation."}],action:{label:"See what Launch includes",href:"/programs/launch"}},{id:"dashboard",eyebrow:"Activity and reporting",title:"Review bookings and campaign activity.",body:"Choose a reporting period and look at the appointment and email activity available in your workspace. Use that information to guide the next conversation with your team.",bullets:["Appointment totals and status breakdowns.","Activity by calendar.","Email delivery and engagement."]}],closing:{title:"See a booking and follow-up workflow.",body:"Bring one service and one follow-up challenge. We can use them to guide the platform demo.",action:Ct}},"/emr":{path:"/emr",eyebrow:"EMRMedSpa · Custom EMR",title:"The clinical side of your platform.",intro:"The clinical workspace included in the Operating System: treatment notes, consent review, Good Faith Exam coordination, photos, protocols and inventory.",metaDescription:"Meet EMRMedSpa, the custom EMR included in the MSMAI Operating System. Explore clinical notes, consent tools, photos, inventory and records.",primaryAction:Ct,secondaryAction:{label:"Browse clinical features",href:"/features/clinical-notes"},sections:[{id:"clinical-notes",eyebrow:"Patient charts and treatment notes",title:"Keep the treatment details with the visit.",body:"Open the patient workspace and document the procedure, vitals and SOAP note. Treatment templates and smart phrases support the record your clinician
765writes.",bullets:["Record procedure details and vitals.","Write Subjective, Objective, Assessment and Plan notes.","Use treatment-specific templates and smart phrases.","Save a draft or export a note."],cards:[{title:"Patient records",body:"Search by name, email or phone, then open the patientâs demographics, medical history and treatment notes.",href:"/features/patient-workspace",linkLabel:"Explore patient records"},{title:"Treatment-area mapping",body:"Mark named face and body areas in the clinical note."},{title:"Protocols close to the work",body:"Search by name, modality or indication, then open or print the protocol for provider use.",href:"/features/protocols",linkLabel:"Explore treatment protocols"},{title:"In-Room actions",body:"Select the patient and open photo capture, a required GFE request or checkout from the treatment-room workspace.",href:"/features/in-room",linkLabel:"Explore In-Room"}]},{id:"consents",eyebrow:"Consent tools",title:"Put consent review in the clinical workflow.",body:"Send your clinicâs approved consent forms and review the consent status shown in the workspace. Your clinical team remains responsible for reviewing the record and deciding whether care can proceed.",cards:[{title:"Approved forms",body:"Work from the consent content your clinic has selected and approved."},{title:"A visible status",body:"Review the status alongside the clinical work and follow up on what needs attention."},{title:"The required exam route",body:"Use the Qualiphy request connection or your own clinician-performed GFE process. Your clinical team reviews the exam before care.",href:"/features/gfe-coordination",linkLabel:"Explore GFE coordination"}]},{id:"photos",eyebrow:"Clinical photos",title:"Document what you need to compare.",body:"Organize treatment photos by category and use the comparison view to review them. Attach visit photos while documenting the clinical note.",bullets:["Organize before, after and clinical-finding photos.","Find the photos relevant to the patient and treatment.","Use the comparison view during review."]},{id:"inventory",eyebrow:"Stock and batches",title:"Review what is on the shelf.",body:"Keep product quantities and stock status easy to inspect. Move between the stock list, batches and alerts when you need more detail.",bullets:["Search the product list.","Review quantities and configured stock thresholds.","Inspect batch and expiry information.","Check the alerts that need a closer look."]},{id:"payments",eyebrow:"Schedule and payment context",title:"Keep the rest of the visit in view.",body:"Use the clinical schedule to review appointments and the payments area to inspect the order and payment records available in the workspace.",cards:[{title:"Appointment view",body:"Review the dayâs appointments and the statuses shown in the clinical calendar."},{title:"Payment records",body:"Inspect order and payment status here. The connected mobile payment setup also supports Tap to Pay on eligible devices."}],action:{label:"See the full platform",href:"/platform"}}],closing:{title:"Walk through a treatment visit.",body:"See the patient workspace, a clinical note, consent tools, photos and inventory in a guided demo.",action:Ct}},"/features":{path:"/features",eyebrow:"Platform features",title:"Find the tools for the task.",intro:"Explore booking, marketing and clinical tools. Each feature has its own walkthrough.",metaDescription:"Browse MSMAI platform features for med spa booking, conversations, retention, branded email, clinical notes, consents, photos and inventory.",primaryAction:{label:"Browse features",href:"#feature-directory"},secondaryAction:{label:"See the platform overview",href:"/platform"},sections:[],closing:{title:"Have a particular workflow in mind?",body:"Tell us what you need to do. We can show the relevant tools and discuss the setup.",action:Ct}},"/programs/launch":{path:"/programs/launch",eyebrow:"Launch · For new med spas",title:"Launch with the patient journey built in.",intro:"The Marketing System and EMRMedSpa come together in one Operating System for your new med spa. We build the website, configure the journey from booking to treatment-specific follow-up, and launch the first campaign with you.",metaDescription:"Launch a new med spa with the MSMAI Operating System: $497/month plus $1,000 onboarding, including custom EMR and done-for-you setup.",primaryAction:{label:"Book a demo",href:"/discovery-call"}
765,secondaryAction:{label:"Explore the software",href:"/platform"},programPrice:{label:"$497/month + $1,000 onboarding",amount:497,period:"month",onboarding:1e3,disclosures:["One location. No trial.","Ad spend, usage charges, applicable taxes and optional add-ons are separate."]},sections:[{id:"included",eyebrow:"The Operating System",title:"One journey. Both systems included.",body:"The Marketing System handles the patient-facing steps and automated follow-up. EMRMedSpa supports the clinical work. We configure them around the services your clinic provides.",cards:[{title:"Your website",body:"Patients discover your clinic and explore treatment pages built around your brand and services.",href:"/features/website",linkLabel:"Explore websites"},{title:"Patient acquisition",body:"Your first Meta lead ads generate inquiries. AI follows up, while your team receives a notification to call and help turn interest into a booked appointment.",href:"/features/advertising",linkLabel:"Explore patient acquisition"},{title:"Online booking",body:"They choose a service, provider and appointment, with your booking policies and deposits configured.",href:"/features/booking",linkLabel:"Explore booking"},{title:"Appointment reminders",body:"Automated confirmations and reminders provide the visit details and approved arrival instructions.",href:"/features/appointment-reminders",linkLabel:"Explore reminders"},{title:"Intake, consent and GFE",body:"The pre-visit workflow sends the approved forms and coordinates any required Good Faith Exam. Your clinical team reviews readiness for care.",href:"/features/intake-consent-automation",linkLabel:"Explore automated forms"},{title:"The treatment visit",body:"EMRMedSpa gives the team the clinical workspace for treatment notes, consent review, photos and inventory.",href:"/features/clinical-notes",linkLabel:"Explore clinical notes"},{title:"Aftercare, then the next visit",body:"Approved aftercare explains what to do after treatment. A separate retention plan invites the next booking and reconnects with patients who have not returned.",href:"/features/retention",linkLabel:"Explore treatment retention"}]},{id:"setup",eyebrow:"Your one-time onboarding",title:"We configure the journey around your clinic.",body:"Your $1,000 onboarding covers the clinic-specific setup: website, CRM, booking, branded messages and clinical workflow. Your team provides the practice details and approves care-related content.",bullets:["Your branding, services, prices, staff and booking policies.","Your approved intake and consent forms, and the required GFE process.","Aftercare and return intervals for each treatment.","The account access and staff workflow needed for setup."],action:{label:"Follow the setup process",href:"/how-it-works"}},{id:"first-campaign",eyebrow:"Your first campaign",title:"Bring the first ads into the same booking journey.",body:"We prepare your offer and custom creative, plan a local audience around a 10-mile radius adjusted to your market, and launch the first campaign with you. Lead alerts prompt your team to call, while configured SMS and Conversation AI support booking follow-up.",action:{label:"Explore the first campaign",href:"/features/advertising"}},{id:"pricing",eyebrow:"Your ongoing platform and support",title:"Keep the platform working as your practice develops.",body:"Your $497 monthly program keeps the Marketing System and EMRMedSpa available, with the configured booking and follow-up tools. Ongoing website changes and optimizations are included when needed.",bullets:["Bring website changes and optimization requests to the MSMAI team.","Launch includes the first campaign launch; later campaign management is client-run or separately scoped.","An AI receptionist is an optional paid add-on. Ad spend and applicable usage remain separate.","Your clinical team continues to approve treatment, consent and care instructions."],action:{label:"Review pricing and separate costs",href:"/pricing"}}],closing:{title:"Walk through your clinicâs patient journey.",body:"See how the website, booking, clinical preparation, treatment and automated follow-up come together in Launch.",action:{label:"Book a demo",href:"/discovery-call"}},faqs:[{question:"What happens after Launch setup?",answer:"You continue using the Marketing System and EMRMedSpa, including the configured booking and follow-up tools. Ongoing website changes and optimizations are included when needed. Later campaign management and optional services are scoped separately."},{question:"When do charges begin, and is there a minimum term?",answer:"Your order or signed agreement confirms the billing start, payment schedule and any minimum term. Review those details with the program scope before committing. Launch has a one-time onboarding fee; Growth is billed weekly.",action:{label:"Review service terms",href:"/legal/terms-and-conditions"}},{question:"How do cancellation and transfer work?",answer:"Review the notice and cancellation conditions in your order or signed agreement. Your data and supplied materials remain yours. Website, domain, account and deliverable rights follow the applicable written agreement and third-party terms. Required lawful access and return obligations continue after termination.",action:{label:"Review service terms",href:"/legal/terms-and-conditions"}}]},"/programs/growth":{path:"/programs/growth",eyebrow:"Growth · For established med spas",title:"Growth for your established med spa.",intro:"Campaign strategy, managed Meta ads, booking paths and follow-up for an established practiceâwith ongoing website work and monthly reporting.",metaDescription:"Growth for established med spas: $1,250/week for campaign strategy, Meta management, landing pages, follow-up, website updates and reporting. Ad spend is separate.",primaryAction:{label:"Book a demo",href:"/discovery-call"},secondaryAction:{label:"Compare the programs",href:"/pricing"},programPrice:{label:"$1,250/week",amount:1250,period:"week",disclosures:["Billed weekly. For established med spas.","Advert
765ising spend, applicable usage and taxes are separate. SEO, social management and other add-ons are scoped separately.","We confirm the work, platform access, responsibilities and budget in your engagement agreement."]},sections:[{id:"fit",eyebrow:"Start with the practice you have",title:"Connect the campaign to the next appointment.",body:"Start with your current services, patients, team and software. Choose the priority that matters now, then connect the offer, campaign, booking and follow-up around it.",cards:[{title:"Attract the right inquiries",body:"Prepare a treatment offer and acquisition campaign around the audience you want to reach."},{title:"Help people take the next step",body:"Give inquiries a clear booking path, relevant follow-up and a team response."},{title:"See what needs attention",body:"Review campaign and appointment activity together so the next decision has context."}]},{id:"included",eyebrow:"The Growth engagement",title:"Ongoing work across the patient journey.",body:"The engagement brings these workstreams together. Your written scope confirms the campaign priorities, platform access and any additional requirements.",cards:[{title:"Monthly strategy and offers",body:"Plan the campaign around your services, audience and current priorities. Prepare the offer and creative for clinic approval."},{title:"Meta ads and the booking path",body:"Manage acquisition and retargeting campaigns. Build or update the landing page, booking path and agreed deposit steps."},{title:"SMS and email follow-up",body:"Prepare campaign messages and follow-up around the approved offer and the patient journey."},{title:"Website updates",body:"Update core pages, visuals and campaign content as the agreed work develops."},{title:"Monthly reporting",body:"Review campaign activity, appointments, advertising and follow-up. Review tracked revenue where the source data supports it."}]},{id:"monthly-plan",eyebrow:"An example monthly plan",title:"One approved offer. A connected campaign.",body:"For a clinic promoting an existing treatment, the work can move from offer approval to a landing and booking path, Meta acquisition and retargeting, SMS/email follow-up, website updates and a monthly results review.",bullets:["The clinic approves the offer, pricing, treatment claims, creative and advertising budget.","MSMAI prepares and manages the campaign work agreed in the scope.","Your team responds to inquiries and manages patient care and appointment capacity.","The review separates inquiries and appointments from collected revenue; tracked revenue is included when the source supports it."],action:{label:"See client stories",href:"/customer-stories"}},{id:"scope",eyebrow:"Agree the details before work begins",title:"Clear responsibilities and separate costs.",body:"Bring the tools you already use. We confirm what stays, what changes and the access needed before starting.",bullets:["Confirm included platform access, integrations and any record migration separately in the engagement.","Advertising spend and applicable usage charges are additional to the weekly program price.","SEO, ongoing social management and other optional services require a separate scope.","Billing timing, term and cancellation conditions are set by your order or signed agreement."],action:{label:"Compare both programs",href:"/pricing"}}],closing:{title:"Plan the next campaign for your practice.",body:"Bring your current tools and the priority you want to work on. We will walk through the scope, weekly program and separate costs.",action:{label:"Book a demo",href:"/discovery-call"}},faqs:[{question:"Does Growth include ongoing Meta management?",answer:"Yes. Managed Meta acquisition and retargeting are part of the Growth work described here. The advertising budget is separate and agreed with your clinic."},{question:"Do we have to replace our current software?",answer:"We start with the systems you already use. Platform access, connections and any migration are confirmed in the engagement; replacement is not assumed."},{question:"Are results guaranteed?",answer:"No. The engagement defines the work and review process. Results depen
765d on factors including the offer, market, media budget, team follow-up and appointment capacity."},{question:"When do charges begin, and is there a minimum term?",answer:"Your order or signed agreement confirms the billing start, payment schedule and any minimum term. Review those details with the program scope before committing. Launch has a one-time onboarding fee; Growth is billed weekly.",action:{label:"Review service terms",href:"/legal/terms-and-conditions"}},{question:"How do cancellation and transfer work?",answer:"Review the notice and cancellation conditions in your order or signed agreement. Your data and supplied materials remain yours. Website, domain, account and deliverable rights follow the applicable written agreement and third-party terms. Required lawful access and return obligations continue after termination.",action:{label:"Review service terms",href:"/legal/terms-and-conditions"}}]},"/how-it-works":{path:"/how-it-works",eyebrow:"Done for you",title:"Your clinic supplies the decisions. We build the setup.",intro:"The platform is configured around your services, brand and approved policies. Here is how that work moves from the first conversation to launch.",metaDescription:"See how MSMAI configures the platform: clinic priorities, website and booking, branded follow-up, custom EMR, campaign creative and launch.",primaryAction:Ct,secondaryAction:{label:"See the Launch program",href:"/programs/launch"},sections:[{id:"discovery",eyebrow:"01 · Understand the practice",title:"Start with what the clinic needs to do.",body:"We review the services, staff, branding and systems involved. You provide the business details and the clinical decisions that shape the build.",bullets:["Services, prices, durations and launch priorities.","Brand assets, approved copy and clinic policies.","The accounts and people needed for setup."]},{id:"configuration",eyebrow:"02 · Configure the platform",title:"Put the details into the software.",body:"The work is grouped by the patient experience and the tools your team will use.",cards:[{title:"Website and booking",body:"Clinic branding, service content, booking options and the agreed appointment and deposit rules."},{title:"CRM and branded follow-up",body:"Contact organization, pipeline stages, branded email, automated reminders, intake and consent delivery, and treatment-specific retention."},{title:"Clinical setup",body:"EMRMedSpa, approved clinical forms, GFE coordination and a review of the clinicâs access and documentation needs."},{title:"First campaign",body:"The agreed offer, local audience, custom creative, booking destination, lead alerts and configured SMS/AI follow-up."}]},{id:"review",eyebrow:"03 · Review it together",title:"Check the experience your team and patients will use.",body:"Walk through the website, booking, reminders, form delivery, GFE process, treatment workspace and follow-up. Review the campaign creative and clinical requirements with the right people.",bullets:["Confirm services, prices and appointment details.","Read the branded messages and follow-up content.","Review the clinical setup with the appropriate staff.","Agree the changes needed before launch."]},{id:"launch",eyebrow:"04 · Launch and hand over",title:"Launch the first campaign with us.",body:"Once the setup and required approvals are ready, we help launch the first campaign and walk through the configured workflow. The schedule is confirmed for your clinic after access and materials have been reviewed.",cards:[{title:"After launch",body:"Ongoing website changes and optimizations are included when needed in the Operating System program."},{title:"Future campaigns",body:"Run later campaigns yourself or scope additional ad work with us."}]}],closing:{title:"Walk through the setup for your clinic.",body:"Bring your services, staff and current tools. We will show how those details shape the platform.",action:Ct}},"/customer-stories":{path:"/customer-stories",eyebrow:"Customer stories",title:"Hear from the owners themselves.",intro:"Hear from the med spa owners and independent providers we work with.",metaDescription:"Watch original customer videos from Jessica at Skin Bar New York and Dr. Mary at Medical Esthetics & Wellness.",primaryAction:Ct,secondaryAction:im,sections:[{id:"stories",eyebrow:"Original owner videos",title:"Two practices. Two owner perspectives.",body:"Choose a video to hear the ownerâs own account.",cards:[{title:"Jessica Bianculli",body:"Skin Bar New York · Dix Hills, New York."},{title:"Dr. Mary",body:"Medical Esthetics & Wellness · Oyster Bay, New York."}]}],closing:{title:"Explore what the platform could look like for you.",body:"We can walk through the softw
765are and discuss your clinicâs starting point.",action:Ct}},"/pricing":{path:"/pricing",eyebrow:"Programs and pricing",title:"Choose the program for your stage.",intro:"Launch configures the platform for a new med spa. Growth provides ongoing campaign and website support for an established practice.",metaDescription:"Launch: $497/month plus $1,000 onboarding. Growth: $1,250/week for ongoing marketing work. Compare scope, billing frequency and separate costs.",primaryAction:{label:"Book a demo",href:"/discovery-call"},sections:[{id:"launch",eyebrow:"Launch · New med spas",title:"Operating System",body:"$497/month + $1,000 onboarding.",bullets:["Marketing System and custom EMR.","Customized CRM, branded email and treatment-specific retention automations.","Website and booking setup.","Automated reminders, intake and consent delivery, and GFE coordination.","Ad manager, custom ad creation and first campaign launch with you.","Ongoing website changes and optimizations when needed.","One location. No trial."],action:{label:"Explore Launch",href:"/programs/launch"}},{id:"growth",eyebrow:"Growth · Established med spas",title:"Ongoing marketing work, connected to booking.",body:"$1,250/week, billed weekly. Campaign strategy, managed Meta ads, booking paths and follow-up for an established practice.",bullets:["Monthly campaign strategy, offers and creative.","Meta acquisition and retargeting management.","Landing pages, booking/deposit paths, and SMS/email follow-up.","Ongoing core website updates and monthly reporting.","Platform access and responsibilities confirmed in your scope.","Ad spend, usage, SEO and social-management add-ons are separate."],action:{label:"Explore Growth",href:"/programs/growth"}},{id:"separate-costs",eyebrow:"What to account for",title:"Understand the full setup and operating costs.",body:"Keep program fees, advertising budget, applicable usage and optional services separate when reviewing the total cost.",cards:[{title:"Advertising budget",body:"Ad spend is paid separately. Launch includes first creative and campaign launch; Growth includes ongoing Meta management within the agreed scope."},{title:"Usage and taxes",body:"Phone, email and other applicable tool usage charges depend on use. Applicable taxes are separate."},{title:"Optional services",body:"An AI receptionist, SEO, ongoing social management and other additions are separately scoped and priced."},{title:"Billing frequency",body:"Launch is $497 per month plus $1,000 one-time onboarding. Growth is $1,250 per week; weekly billing is not a fixed four-week monthly charge."}]},{id:"initial-and-ongoing",eyebrow:"Launch: setup and ongoing use",title:"Know what the two charges cover.",body:"Launch combines a one-time configuration project with ongoing platform access and website support.",cards:[{title:"$1,000 one-time onboarding",body:"We configure the website, CRM, booking, branded messages and clinical workflow around your approved clinic information."},{title:"$497 per month",body:"Use the Marketing System and EMRMedSpa, including configured booking and follow-up tools, plus ongoing website changes and optimizations when needed."}],action:{label:"Explore the Launch setup",href:"/programs/launch"}},{id:"choose-your-start",eyebrow:"Start with your situation",title:"Find the right first conversation.",body:"Your practiceâs stage and existing tools shape the work.",cards:[{title:"Opening a new med spa",body:"Explore Launch for the website, booking, marketing and clinical setup.",href:"/programs/launch",linkLabel:"Explore Launch"},{title:"Already treating patients",body:"Explore Growth for an ongoing campaign, acquisition, follow-up and website engagement.",href:"/programs/growth",linkLabel:"Explore Growth"},{title:"Reviewing clinical software",body:"Explore EMRMedSpa and bring your current systems and record-transfer requirements to the demo.",href:"/emr",linkLabel:"Explore E
765MRMedSpa"}]}],faqs:[{question:"Is EMRMedSpa a second required purchase?",answer:"No. The custom EMR is included in the Operating System."},{question:"Does Launch include ongoing ad management?",answer:"Launch includes custom ad creation and the first campaign launched with you. You can run later campaigns yourself or pay MSMAI for additional ad work."},{question:"When is the setup timeline confirmed?",answer:"We confirm the timeline after reviewing the access, materials and approvals your clinic needs. Account recovery, outside providers and clinical decisions can affect the schedule."},{question:"What happens after Launch setup?",answer:"You continue using the Marketing System and EMRMedSpa, including the configured booking and follow-up tools. Ongoing website changes and optimizations are included when needed. Later campaign management and optional services are scoped separately."},{question:"When do charges begin, and is there a minimum term?",answer:"Your order or signed agreement confirms the billing start, payment schedule and any minimum term. Review those details with the program scope before committing. Launch has a one-time onboarding fee; Growth is billed weekly.",action:{label:"Review service terms",href:"/legal/terms-and-conditions"}},{question:"How do cancellation and transfer work?",answer:"Review the notice and cancellation conditions in your order or signed agreement. Your data and supplied materials remain yours. Website, domain, account and deliverable rights follow the applicable written agreement and third-party terms. Required lawful access and return obligations continue after termination.",action:{label:"Review service terms",href:"/legal/terms-and-conditions"}}],closing:{title:"Review the fit before choosing a program.",body:"Tell us whether you are opening or already operating, and we will talk through the relevant software and scope.",action:{label:"Book a demo",href:"/discovery-call"}}},"/about":{path:"/about",eyebrow:"About Med Spa Marketing AI",title:"Meet the people behind your platform.",intro:"Rob, Andrew, Adrienne and Alex are the people behind Med Spa Marketing AI: software for your clinic, with hands-on setup to help you put it to work.",metaDescription:"Meet Rob Upland, founder of Med Spa Marketing AI, Andrew, CTO, and the team behind the done-for-you med spa software platform.",primaryAction:Ct,secondaryAction:{label:"See how setup works",href:"/how-it-works"},sections:[{id:"company",eyebrow:"The people behind the platform",title:"A team you can get to know.",body:"Rob Upland founded Med Spa Marketing AI. Andrew is our CTO, with Adrienne leading onboarding and Alex supporting the technical setup. We build your website, configure the platform and walk through how your clinic will use itâfrom the first booking to the follow-up after treatment.",action:{label:"Explore the platform",href:"/platform"}}],closing:{title:"Bring us the way your clinic works.",body:"Meet with Rob to explore the platform and talk through the setup your practice needs.",action:Ct}},"/faq":{path:"/faq",eyebrow:"Frequently asked questions",title:"The details behind the platform.",intro:"Direct answers about the software, setup, campaign work and the two programs.",metaDescription:"Find answers about the MSMAI platform, custom EMR, done-for-you setup, Launch and Growth programs, first campaigns and optional services.",primaryAction:{label:"Book a demo",href:"/discovery-call"},sections:[{id:"questions",title:"What would you like to know?",body:""}],faqs:[{question:"What is Med Spa Marketing AI?",answer:"An all-in-one, done-for-you software platform for med spas. The Operating System includes the Marketing System and EMRMedSpa, with configuration around the clinicâs services, brand and approved workflows."},{question:"How are Launch and Growth different?",answer:"Launch configures the Operating System for a new med spa at $497/month plus $1,000 onboarding. Growth is $1,250/week for ongoing campaign strategy, managed Meta ads, booking paths, follow-up, website updates and monthly reporting. Separate costs and scope are reviewed before you commit.",action:{label:"Compare programs and pricing",href:"/pricing"}},{question:"Is the custom EMR included in the Operating System?",answer:"Yes. EMRMedSpa is included. It provides the clinical workspace for treatment notes, consent tools, photos, protocols and inventory."},{question:"What do you set up for us?",answer:"We build the website and configure the patient journey: booking, automated reminders, intake and consent delivery, GFE coordination, treatment documentation and service-specific retention. We also customize the CRM and branded email, create the first ads and launch the first campaign with you.",action:{label:"See the setup process",href:"/how-it-works"}},{question:"How do the Marketing System and EMRMedSpa work together?",answer:"They are both included in the Operating System. The Marketing System handles the website, booking, automated messages and form delivery. EMRMedSpa provides the clinical workspace for the visit. We configure the GFE coordination and treatment-specific follow-up around that journey.",action:{label:"Explore Launch",href:"/programs/launch"}},{question:"Are consent and Good Faith Exams completed automatically?",answer:"The workflow sends forms, reminders and the next step for any required exam. Qualiphy provides a connected exam-request route, or your clinic can use its own qualified clinician. Patients complete the forms, a clinician performs the exam, and the clinical team reviews whether care can proceed.",action:{label:"Explore GFE coordination",href:"/features/gfe-coordination"}},{question:"What does our clinic need to provide?",answer:"Your services, prices, booking rules, brand materials and the required account access. Your clinical team supplies or approves clinical forms, care instructions and treatment decisions."},{question:"Do you manage all our future ads?",answer:"Launch includes custom ad creation and the first campaign launch; later management is client-run or separately scoped. Growth includes ongoing Meta acquisition and retargeting management within the agreed engagement. Ad spend is separate."}
765,{question:"Are website changes included?",answer:"Yes. Ongoing website changes and optimizations are included when needed in the Operating System program."},{question:"Is an AI receptionist included?",answer:"An AI receptionist is available as an optional paid add-on. We discuss its setup and costs separately."},{question:"Do we need to replace our existing systems?",answer:"We first review your current systems. Before changing anything, we agree which tools to keep and which integrations or records can be moved."},{question:"How long does setup take?",answer:"We confirm the launch schedule after reviewing required access, materials and approvals. Account recovery, outside providers and clinical decisions can affect the timing."},{question:"How are clinical responsibilities handled?",answer:"Your clinical team approves clinical content and decides whether care can proceed. Before authorized PHI processing begins, the applicable written BAA, required data-protection terms and safeguards must be in place. Each party retains its own applicable responsibilities.",action:{label:"Read about clinical setup",href:"/security"}},{question:"Where can we review price and additional costs?",answer:"The pricing page separates onboarding, monthly or weekly program fees, advertising spend, applicable usage, taxes and optional services. Your order or signed agreement confirms the engagement and billing details.",action:{label:"Review pricing",href:"/pricing"}},{question:"What happens after Launch setup?",answer:"You continue using the Marketing System and EMRMedSpa, including the configured booking and follow-up tools. Ongoing website changes and optimizations are included when needed. Later campaign management and optional services are scoped separately."},{question:"When do charges begin, and is there a minimum term?",answer:"Your order or signed agreement confirms the billing start, payment schedule and any minimum term. Review those details with the program scope before committing. Launch has a one-time onboarding fee; Growth is billed weekly.",action:{label:"Review service terms",href:"/legal/terms-and-conditions"}},{question:"How do cancellation and transfer work?",answer:"Review the notice and cancellation conditions in your order or signed agreement. Your data and supplied materials remain yours. Website, domain, account and deliverable rights follow the applicable written agreement and third-party terms. Required lawful access and return obligations continue after termination.",action:{label:"Review service terms",href:"/legal/terms-and-conditions"}}],closing:{title:"Have a question specific to your clinic?",body:"Bring your current tools, services or workflow to the conversation. We can work through the relevant details.",action:{label:"Book a demo",href:"/discovery-call"}}},"/contact":{path:"/contact",eyebrow:"Book a demo",title:"Letâs look at the platform for your practice.",intro:"Tell us whether you are opening a med spa or already running one, and what you would most like to see.",metaDescription:"Request a guided MSMAI platform demo for a new or established med spa. Explore booking, follow-up, clinical tools and program fit.",primaryAction:{label:"Cho
765ose a demo time",href:"#request-demo"},secondaryAction:{label:"Explore the platform",href:"/platform"},sections:[{id:"request-demo",eyebrow:"Your practice",title:"Give the conversation a starting point.",body:"Share your clinic name, your stage of business and the workflow you want to discuss. Business details are enough; leave patient information out of the request.",cards:[{title:"Opening a med spa",body:"Tell us about your launch plans and the software or setup you still need."},{title:"Running an existing practice",body:"Tell us what you use today and which booking, follow-up or operational issue you want to address."},{title:"Exploring the clinical tools",body:"Choose the EMR workflow you would like to see, such as treatment notes, consent tools, photos or inventory."}]}],closing:{title:"Start with the workflow that matters to you.",body:"A guided demo can focus on the tools and setup most relevant to your clinic.",action:{label:"Choose a demo time",href:"#request-demo"}}},"/integrations":{path:"/integrations",eyebrow:"Integrations and connected tools",title:"Bring your daily tools into the workflow.",intro:"Your Marketing System and EMRMedSpa are part of the platform. Connect the accounts your clinic uses for messages, social posts, calendars, payments and required exams.",metaDescription:"Explore MSMAI connections for Facebook and Instagram, Google and Outlook calendars, Stripe, Square and Qualiphy Good Faith Exam requests.",primaryAction:{label:"Discuss your setup",href:"/discovery-call"},secondaryAction:{label:"Explore the platform",href:"/platform"},sections:[{id:"built-in",eyebrow:"Part of the platform",title:"Two systems. One done-for-you setup.",body:"The Marketing System handles the booking and communication journey. EMRMedSpa gives your team the clinical workspace. We configure both around your practice.",cards:[{title:"Med Spa Marketing AI",body:"Website, booking, inbox, follow-up and marketing tools.",href:"/marketing-system",linkLabel:"Explore marketing"},{title:"EMRMedSpa",body:"Patient records, treatment notes, photos and clinical workflows.",href:"/emr",linkLabel:"Explore E
765MRMedSpa"}]},{id:"connected-accounts",eyebrow:"Connect your accounts",title:"Keep the tools your team already uses.",body:"Choose the accounts that belong in your clinicâs setup. Each connection has a job, from bringing a message into the inbox to checking a providerâs calendar."},{id:"clinical-connections",eyebrow:"Clinic-specific setup",title:"The right route for a required exam.",body:"Qualiphy supports an external exam request. Your own qualified clinician can instead perform the exam through the clinicâs process. The exam and treatment decision stay with the clinical team."},{id:"connection-setup",eyebrow:"We handle the setup with you",title:"Connect it. Walk through it. Know the next step.",body:"We confirm the accounts, permissions and workflow with your team before you begin using the connection.",cards:[{title:"Choose the account",body:"Confirm the clinic, staff calendar, social profile or merchant account to use."},{title:"Set the rules",body:"Agree the booking, reply, publishing or payment choices that apply."},{title:"Review the workflow",body:"Walk through the configured path with your team and clarify who handles each step."}]}],closing:{title:"Bring the tools you already use.",body:"We can show where they fit and what your clinic needs to connect.",action:{label:"Discuss your setup",href:"/discovery-call"}}},"/security":{path:"/security",eyebrow:"Clinical setup and responsibility",title:"Clinical setup, access and the BAA.",intro:"Review the agreement, staff access, records and clinical responsibilities before your clinic begins using the clinical workspace.",metaDescription:"Review MSMAI clinical onboarding, BAA requirements, staff access, ownership of clinic records and agreed transfer responsibilities.",primaryAction:{label:"Book a demo",href:"/discovery-call"}
765,secondaryAction:{label:"Explore EMRMedSpa",href:"/emr"},sections:[{id:"data",eyebrow:"Before clinical data is processed",title:"Start with the agreement and the intended use.",body:"The applicable written BAA and required data-protection terms must be in place before authorized PHI processing begins. Relevant features, configurations and subcontractors must have the required safeguards and agreements.",cards:[{title:"Request the BAA",body:"Ask Rob for the agreement applicable to your proposed setup. A website visit or general Terms acceptance does not replace an executed BAA.",href:"/contact",linkLabel:"Contact Rob"},{title:"Review staff access",body:"Identify the people who need access and the work each person needs to perform. Review access requirements during setup."},{title:"Scope records and connections",body:"Review existing systems and record-transfer needs before changing tools. Available connections and migration requirements are confirmed for the proposed setup."}]},{id:"records-and-transfer",eyebrow:"Your records and materials",title:"Ownership and access remain clear.",body:"Your data, patient records and materials you supply remain yours. Rights in websites, domains, accounts and other deliverables follow the applicable written agreement and third-party terms.",bullets:["Review any planned transfer and its requirements before implementation.","Applicable access, preservation, return and lawful-disposition obligations continue after termination.","Payment disputes do not justify withholding access or return that we are required to provide."],action:{label:"Review service terms",href:"/legal/terms-and-conditions"}},{id:"clinical-responsibility",eyebrow:"Each partyâs responsibilities",title:"Clinical decisions stay with the clinical team.",body:"EMRMedSpa supports documentation and review. Your clinicians approve clinical content, review consent information and decide whether care can proceed. MSMAI retains its own applicable security, reporting and other legal responsibilities.",bullets:["Use the forms, protocols and care instructions approved for your clinic.","Review the record and displayed status as part of the clinical workflow.","Confirm specific access, data and agreement requirements before implementation."],action:{label:"Read the privacy policy",href:"/legal/privacy-policy"}}],closing:{title:"Bring your clinical setup questions.",body:"We can discuss the agreement and workflow details your practice needs to review.",action:{label:"Book a demo",href:"/discovery-call"}}}},Yb={calendars:"Staff calendars","aftercare-rebook":"Aftercare","birthday-winback":"Birthdays & reactivation",advertising:"Patient acquisition","intake-consent-automation":"Intake & consent","gfe-coordination":"GFE coordination","clinical-notes":"Treatment notes",subscriptions:"Membership subscriptions"},Kb=[{id:"booking",title:"Website & booking",description:"From first impression to appointment.",Icon:He,choices:[["website"],["advertising"],["booking"],["appointment-reminders","deposits-reminders"],["calendars"],["contacts-pipeline"],["ask-ai"],["gift-cards"]]},{id:"retention",title:"Follow-up & retention",description:"Keep the next visit in view.",Icon:Qa,choices:[["retention"],["aftercare-rebook"],["birthday-winback"],["conversations"],["email-marketing"],["reviews"],["packages"],["subscriptions"]]},{id:"clinical",title:"Clinical & practice",description:"The work around every treatment.",Icon:da,choices:[["intake-consent-automation","consents"],["gfe-coordination","patient-workspace"],["in-room"],["clinical-notes"],["photos"],["inventory"],["payments"]]}];function $b({open:i,onOpenChange:s,onNavigate:l,className:d=""}){let[p,h]=(0,Ut.useState)(!1),f=i??p,g=(0,Ut.useRef)(null),b=(0,Ut.useRef)(null),u=(0,Ut.useRef)(null),N=(0,Ut.useRef)(null),v=(0,Ut.useRef)(0),w=(0,Ut.useId)(),C=`${w}-platform-panel`,A=xa(),z=(0,Ut.useRef)(`${A.key}|${A.pathname}|${A.search}|${A.hash}`),S=(0,Ut.useCallback)(L=>{i===void 0&&h(L),s==null||s(L)},[i,s]),R=(0,Ut.useCallback)(L=>{var ne;let B=(ne=u.current)==null?void 0:ne.querySelectorAll("a[href]");B!=null&&B.length&&B[L==="first"?0:B.length-1].focus()},[]);(0,Ut.useEffect)(()=>{f&&N.current&&(R(N.current),N.current=null)},[f,R]),(0,Ut.useEffect)(()=>()=>cancelAnimationFrame(v.current),[]),(0,Ut.useEffect)(()=>{let L=`${A.key}|${A.pathname}|${A.search}|${A.hash}`;z.current!==L&&(z.current=L,N.current=null,S(!1))},[A.key,A.pathname,A.search,A.hash,S]),(0,Ut.useEffect)(()=>
765{if(!f)return;let L=B=>{var ne,G;B.target instanceof Node&&!((ne=g.current)!=null&&ne.contains(B.target))&&(N.current=null,B.type==="pointerdown"&&((G=u.current)!=null&&G.contains(document.activeElement))&&(cancelAnimationFrame(v.current),v.current=requestAnimationFrame(()=>{var ue,ye;v.current=0,(document.activeElement===document.body||(ue=u.current)!=null&&ue.contains(document.activeElement))&&((ye=b.current)==null||ye.focus({preventScroll:!0}))})),S(!1))};return document.addEventListener("pointerdown",L),document.addEventListener("focusin",L),()=>{document.removeEventListener("pointerdown",L),document.removeEventListener("focusin",L)}},[f,S]);function j(L){var B;L.key!=="Escape"||!f||(L.preventDefault(),L.stopPropagation(),N.current=null,S(!1),(B=b.current)==null||B.focus({preventScroll:!0}))}function $(L){if(L.key==="ArrowDown"||L.key==="ArrowUp"){L.preventDefault();let B=L.key==="ArrowDown"?"first":"last";f?R(B):(N.current=B,S(!0))}}function V(L){var ue;if(L.altKey||L.ctrlKey||L.metaKey||!["ArrowDown","ArrowUp","Home","End"].includes(L.key))return;let B=[...L.currentTarget.querySelectorAll("a[href]")],ne=B.indexOf(document.activeElement);if(ne<0)return;L.preventDefault();let G=L.key==="Home"?0:L.key==="End"?B.length-1:L.key==="ArrowDown"?Math.min(ne+1,B.length-1):Math.max(ne-1,0);(ue=B[G])==null||ue.focus()}function D(){N.current=null,S(!1),l==null||l()}return e("div",{className:`platform-menu ${d}`.trim(),ref:g,"data-open":f,onKeyDown:j},e("button",{className:"platform-menu__trigger nav-trigger","data-nav":"Platform",type:"button",ref:b,"aria-expanded":f,"aria-controls":C,onClick:()=>S(!f),onKeyDown:$},"Platform ",e(As,{size:14})),e("div",{className:"platform-menu__panel",id:C,ref:u,hidden:!f,onKeyDown:V},e("div",{className:"platform-menu__overview-row"},e(H,{className:"platform-menu__overview",to:"/platform",onClick:D,"aria-current":A.pathname==="/platform"?"page":void 0},e("span",{className:"platform-menu__overview-icon"},e(xt,{size:25,strokeWidth:1.6})),e("span",null,e("span",{className:"platform-menu__eyebrow"},"THE ALL-IN-ONE PLATFORM"),e("strong",null,"One platform. Two systems.")),e(J,{size:22})),e("div",{className:"platform-menu__systems","aria-label":"Systems and integrations",role:"group"},e(H,{to:"/marketing-system",onClick:D,"aria-current":A.pathname==="/marketing-system"?"page":void 0},"Med Spa Marketing AI ",e(J,{size:15})),e(H,{to:"/emr",onClick:D,"aria-current":A.pathname==="/emr"?"page":void 0},"EMRMedSpa ",e(J,{size:15})),e(H,{to:"/integrations",onClick:D,"aria-current":A.pathname==="/integrations"?"page":void 0},"Integrations ",e(J,{size:15})))),e("div",{className:"platform-menu__columns"},Kb.map(({id:L,title:B,Icon:ne,choices:G})=>e("div",{className:"platform-menu__column",key:L,role:"group","aria-labelledby":`${w}-${L}-label`},e("div",{className:"platform-menu__column-heading"},e(ne,{size:21,strokeWidth:1.6}),e("p",{id:`${w}-${L}-label`},B)),e("ul",null,G.flatMap(ue=>{let ye=ue.map(Bt=>za.find(ct=>ct.id===Bt)).find(Boolean);return ye?e("li",{key:ye.id},e(H,{to:ye.href,onClick:D,"aria-current":A.pathname===ye.href?"page":void 0},e("span",null,Yb[ye.id]??ye.title),e(J,{size:16}))):[]}))))),e("div",{className:"platform-menu__footer"},e(H,{className:"platform-menu__all-features",to:"/features",onClick:D,"aria-current":A.pathname==="/features"?"page":void 0},"Explore all features ",e(J,{size:18})),e("div",{className:"platform-menu__launch"},e("span",null,"Opening a new med spa?"),e(H,{to:"/programs/launch",onClick:D,"aria-current":A.pathname==="/programs/launch"?"page":void 0},"Explore Launch ",e(J,{size:16}))))))}function Vm({logos:i}){const{useEffect:s,useId:l,useRef:d,useState:p}=Fg,h=d(null),f=l(),[g,b]=p(()=>typeof window<"u"&&window.matchMedia("(max-width:800px)").matches),[u,N]=p(()=>typeof window<"u"&&window.matchMedia("(prefers-reduced-motion: reduce)").matches),[v,w]=p(!1),[C,A]=p(()=>typeof document>"u"||!document.hidden),[z,S]=p(!1);s(()=>{const V=window.matchMedia("(max-width:800px)"),D=window.matchMedia("(prefers-reduced-motion: reduce)"),L=()=>b(V.matches),B=()=>{N(D.matches),D.matches&&S(!0)};return L(),B(),V.addEventListener("change",L),D.addEventListener("change",B),()=>{V.removeEventListener("change",L),D.removeEventListener("change",B)}},[]),s(()=>{const V=()=>A(!document.hidden);return V(),document.addEventListener("visibilitychange",V),()=>document.removeEventListener("visibilitychange",V)},[]),s(()=>
765{if(typeof IntersectionObserver>"u"){w(!0);return}const V=new IntersectionObserver(([D])=>w(D.isIntersecting),{threshold:0});return h.current&&V.observe(h.current),()=>V.disconnect()},[]);const R=g&&!u&&i.length>1,j=R&&v&&C&&!z,$=V=>i.map(D=>e("span",{className:"client-strip-item",key:D.name},e("span",{className:`client-logo ${D.className??""}`},e("img",{src:D.src,width:D.width,height:D.height,alt:V?"":D.name,loading:"lazy",decoding:"async"}),D.className==="client-strip__natural"&&e("img",{className:"client-logo__dark-text",src:D.src,width:D.width,height:D.height,alt:"","aria-hidden":"true",loading:"lazy",decoding:"async"}))));return e("section",{className:"client-strip client-strip--v9 client-strip--marquee","aria-label":"Selected client work","data-motion":j?"running":"paused","data-reduced":u},e("p",null,"Built around real med spa owners."),e("div",{className:"client-strip-viewport",ref:h,id:f,role:R?"button":"group","aria-label":R?`${z?"Resume client logo animation":"Pause client logo animation"}. ${i.map(V=>V.name).join(", ")}`:"Client logos","aria-pressed":R?z:void 0,tabIndex:R?0:void 0,onClick:()=>{R&&S(V=>!V)},onKeyDown:V=>{R&&(V.key==="Enter"||V.key===" ")&&(V.preventDefault(),S(D=>!D))},onFocus:V=>{R&&V.currentTarget.matches(":focus-visible")&&S(!0)},onPointerEnter:V=>{R&&V.pointerType==="mouse"&&S(!0)}},e("div",{className:"client-strip-track"},e("div",{className:"client-strip-group"},$(!1)),R&&e("div",{className:"client-strip-group client-strip-group--duplicate","aria-hidden":"true"},$(!0)))),e("span",null,"Selected clients across our platform and service work."))}function Gb(){let[i,s]=(0,Tt.useState)(()=>typeof window<"u"&&typeof window.matchMedia=="function"?window.matchMedia("(prefers-reduced-motion: reduce)").matches:!1);return(0,Tt.useEffect)(()=>{if(typeof window.matchMedia!="function")return;let l=window.matchMedia("(prefers-reduced-motion: reduce)"),d=()=>s(l.matches);return d(),l.addEventListener("change",d),()=>l.removeEventListener("change",d)},[]),i}function Qb({file:i,alt:s,className:l="",priority:d=!1}){let[p,h]=(0,Tt.useState)(!1);(0,Tt.useEffect)(()=>h(!1),[i]);let f={"booking-v2-menu":[2196,1903],"booking-v2-calendar":[2196,1432],"booking-v2-checkout":[2196,1652],"emr-notes-list":[2136,1500],"emr-calendar":[2376,1328],"emr-body-map-marked":[1376,1538],"emr-inventory":[2176,1401],"emr-payments":[2256,1350],inbox:[2176,1561],"owner-dashboard":[2056,1591]},[g,b]=f[i]??[1600,1200];return p?e("p",{className:"evidence-load-error"},"The image could not load. ",s):e("img",{className:l,src:`/assets/product/${i}.png`,width:g,height:b,alt:s,loading:d?"eager":"lazy",decoding:"async",onError:()=>h(!0)})}function rm(){let[i,s]=(0,Tt.useState)("forms");return e("div",{className:"preparation-sms-visual preparation-multichannel-visual"},e("div",{className:"journey-state-picker",role:"group","aria-label":"Pre-visit preparation"},e("button",{type:"button","aria-pressed":i==="forms",onClick:()=>s("forms")},"Intake & consent"),e("button",{type:"button","aria-pressed":i==="gfe",onClick:()=>s("gfe")},"GFE · when required")),e(Dm,{kind:i,compact:!0,key:i}))}function Bm({compact:i=!1}){return e(Pm,{compact:i})}var Zb=(()=>{var i=Object.defineProperty,s=Object.getOwnPropertyDescriptor,l=Object.getOwnPropertyNames,d=Object.prototype.hasOwnProperty,p=(we,Pe)=>{for(var tt in Pe)i(we,tt,{get:Pe[tt],enumerable:!0})},h=(we,Pe,tt,Ht)=>{if(Pe&&typeof Pe=="object"||typeof Pe=="function")for(let pt of l(Pe))!d.call(we,pt)&&pt!==tt&&i(we,pt,{get:()=>Pe[pt],enumerable:!(Ht=s(Pe,pt))||Ht.enumerable});return we},f=we=>h(i({},"__esModule",{value:!0}),we),g={};p(g,{PlatformExperience:()=>gt,default:()=>ui});var b=Tt,u=b,{createElement:N,Fragment:v,useState:w,useEffect:C,useLayoutEffect:A,useCallback:z,useMemo:S,useRef:R,useId:j,useReducer:$,useContext:V,useImperativeHandle:D,useDebugValue:L,useSyncExternalStore:B,useTransition:ne,useDeferredValue:G,startTransition:ue,memo:ye,forwardRef:Bt,createContext:ct}=b,dt=H,K={frames:[{id:"acquisition-ad",stage:"acquisition",label:"The ad",title:"A patient sees the ad.",body:"The campaign leads to the information form.",asset:"acquisition-ad",source:"Evidence MD $100 Carbon Laser Facial campaign creative",alt:"Evidence MD Carbon Laser Facial ad showing a woman with a carbon face mask, the $100 offer and Get offer.",group:"acquisition",url:"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6abe2b2617f6f30939abe49a.png",width:1080,height:1350}
765,{id:"acquisition-form",stage:"acquisition",label:"Collect information",title:"Collect the patientâs information.",body:"One complete lead form captures the details needed for follow-up.",asset:"acquisition-form",source:"Evidence MD lead-form example",alt:"Evidence MD ad contact form with first name, last name, email, phone number and Continue.",group:"acquisition",url:"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6abde889612cffc49a18c24e.png"},{id:"acquisition-ai",stage:"acquisition",label:"AI follow-up",title:"AI helps the patient find a time.",body:"The conversation answers their interest and moves toward an appointment.",asset:"acquisition-ai",source:"Illustrative AI conversation · example availability",alt:"Three-message Evidence MD AI conversation offering treatment information and help choosing an appointment time.",group:"acquisition",url:"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6abde673612cffc49a188e4e.png"},{id:"website",stage:"website",label:"Clinic website",title:"Explore the clinic, then book.",body:"The Evidence MD website provides a clear route to online booking.",asset:"website",source:"Evidence MD · desktop and mobile website captures · October 1, 2026",alt:"Evidence MD website shown together on desktop and mobile.",group:"website",url:"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6abe2b26612cffc49a1ed9b7.jpg",width:1497,height:762,kind:"composition"},{id:"booking-menu",stage:"booking",label:"Service menu",title:"Choose a treatment.",body:"The complete service menu appears in one view.",asset:"booking-menu",source:"Recorded service cards · complete 15-service menu overview",alt:"Entire Evidence MD service menu in one complete artboard.",group:"booking",url:"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6abe2b2717f6f30939abe4bf.png",crop:[48,64,2304,1872]},{id:"booking-service",stage:"booking",label:"Individual service",title:"Open the individual service.",body:"Review the selected treatment before continuing.",asset:"booking-service",source:"Evidence MD booking capture",alt:"Complete Evidence MD Carbon Laser individual service page.",group:"booking",url:"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6abde6792cc4aa198bb2334b.png",crop:[48,504,2304,992]},{id:"booking-provider",stage:"booking",label:"Provider",title:"Choose a provider.",body:"All provider choices stay together in one view.",asset:"booking-provider",source:"Evidence MD booking capture",alt:"Complete Evidence MD provider selection, including all choices and the continuation control.",group:"booking",url:"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6abde6782cc4aa198bb23333.png",crop:[48,404,2304,1192]},{id:"booking-date-time",stage:"booking",label:"Date & time",title:"Choose a date and time.",body:"The patient selects an available appointment time.",asset:"booking-time",source:"Recorded date and time selection · sample availability",alt:"Complete Evidence MD appointment time selection.",group:"booking",url:"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6abde6791670d0abe8093092.png",crop:[48,296,2304,1408]},{id:"booking-form",stage:"booking",label:"Book appointment",title:"Complete the form and book.",body:"Contact details, payment and Book Appointment stay in one complete view.",asset:"booking-form",source:"Recorded checkout · $200 before the offer code · blank example fields",alt:"One complete Evidence MD booking form, including contact information, payment fields and Book Appointment.",group:"booking",url:"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6abe2b25612cffc49a1ed997.png",crop:[123,48,2154,1904]},{id:"booking-confirmation",stage:"reminders",label:"Appointment details",title:"The appointment details arrive.",body:"The appointment email and matching text appear together.",asset:"booking-confirmation",source:"Evidence MD confirmation template · example appointment",alt:"Whole Evidence MD appointment confirmation email and SMS in the same frame.",group:"reminders",url:"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6abde6732cc4aa198bb23206.png",crop:[92,67,2216,1864]}
765,{id:"reminder",stage:"reminders",label:"Visit reminders",title:"Keep the appointment details close.",body:"The full reminder email and text arrive before the visit.",asset:"reminder",source:"Evidence MD reminder templates · example appointment",alt:"Whole Evidence MD appointment reminder email and SMS in the same frame.",group:"reminders",url:"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6abde67c10ee4f1556096eb7.png"},{id:"portal",stage:"prepare",label:"Patient portal",title:"Get ready for the visit.",body:"Medical intake, any required GFE and treatment consents stay together.",asset:"portal",source:"Patient-portal design preview · clinical review remains required",alt:"Patient portal composition showing medical intake, conditional GFE and treatment consents with preparation statuses.",group:"prepare",url:"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6abde679612cffc49a188f90.png"},{id:"visit",stage:"visit",label:"In-Room",title:"The visit tools, in one place.",body:"Use the In-Room workspace for check-in, notes, visit tools and payment.",asset:"visit",source:"EMRMedSpa native workspace · demonstration record",alt:"Complete In-Room workspace, including check-in, treatment notes, appointment, GFE and charge controls.",group:"visit",url:"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6abde67c10ee4f1556096ecb.png"},{id:"aftercare",stage:"aftercare",label:"Aftercare",title:"Your aftercare, easy to find.",body:"A concise message points patients to their treatment-specific instructions.",asset:"aftercare",source:"Condensed aftercare email + text example · full clinical guide remains separate",alt:"Short Evidence MD aftercare email and matching text example.",group:"return",url:"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6abde6732cc4aa198bb231fb.png",kind:"composition"},{id:"review",stage:"review",label:"Google review",title:"Invite the patient to share their experience.",body:"A separate review request provides the next step.",asset:"review",source:"Evidence MD review-request template · example patient",alt:"Whole Evidence MD Google review-request message in one complete frame.",group:"return",url:"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6abde67c2cc4aa198bb233b9.png"},{id:"retention",stage:"retention",label:"Retention / rebook",title:"Make the next appointment easy.",body:"Treatment-specific follow-up continues after aftercare and the review request.",asset:"retention",source:"Illustrative email â text follow-up â rebooking sequence",alt:"Treatment follow-up email, matching text conversation and a clear route to book the next visit.",group:"return",url:"https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6abde67b10ee4f1556096eab.png",crop:[376,48,1648,1904],kind:"composition"}],groups:[{id:"acquisition",label:"Patient acquisition",system:"Med Spa Marketing AI",title:`New leads. 766Real conversations. 767A clear next step.`,body:"A patient sees your ad, shares their information, and gets a helpful follow-up that moves the conversation toward an appointment.",href:"/features/advertising",link:"Explore patient acquisition"},{id:"website",label:"Your website",system:"Med Spa Marketing AI",title:`Your brand. Your 768treatments. 769Your website.`,body:"We build your clinicâs website and treatment pages around one clear next step: booking an appointment.",href:"/features/website",link:"Explore custom websites"},{id:"booking",label:"Online booking",system:"Med Spa Marketing AI",title:`From choosing a 770treatment to 771choosing a time.`,body:"Patients choose their service, provider and appointment, then complete their details and payment in one booking flow.",href:"/features/booking",link:"Explore online booking"},{id:"reminders",label:"Visit reminders",system:"Med Spa Marketing AI",title:`The details arrive 772before the visit.`,body:"Branded confirmations and automatic reminders keep the appointment, location and next steps easy to find.",href:"/features/appointment-reminders",link:"Explore appointment reminders"},{id:"prepare",label:"Forms & GFE",system:"Med Spa Marketing AI + EMRMedSpa",title:`Ready for the 773booked treatment.`,body:"Medical intake, treatment consents and any required GFE stay together. Your clinical team reviews readiness before the visit.",href:"/features/intake-consent-automation",link:"Explore intake and consent"},{id:"visit",label:"Treatment room",system:"EMRMedSpa",title:`Your visit tools. 774One workspace.`,body:"Check in the patient, review their record, document treatment and manage payment from the In-Room workspace.",href:"/features/in-room",link:"Explore In-Room"},{id:"return",label:"Aftercare & retention",system:"Med Spa Marketing AI + EMRMedSpa",title:`The follow-up fits 775the treatment.`,body:"Aftercare, a review request and treatment-specific follow-up each have a clear place after the visit.",href:"/features/retention",link:"Explore treatment retention"}]},he={aftercare:{title:`Aftercare. 776Clear and simple.`,body:"A short email and matching text make the next step clear, with the full aftercare guide easy to find."},review:{title:`Make it easy to 777share their experience.`,body:"A separate review request gives patients a direct way to leave feedback after their visit."},retention:{title:`Bring patients back. 778Treatment by treatment.`,body:"A connected email and text sequence follows up after treatment and leads patients back to booking their next visit."}},Le=["website","acquisition","booking","reminders","prepare","visit","return"];function F(we){const Pe=we===void 0?"acquisition":Le[we]||"acquisition";return Math.max(0,K.frames.findIndex(tt=>tt.group===Pe))}var Z="https://assets.cdn.filesafe.space/5HQ8GjJPsW1oPtfkzdyj/media/c059e9d4-7b69-4574-a670-e6e365f1cc06.png",re="https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6abe2b26612cffc49a1ed9b7.jpg",oe="https://assets.cdn.filesafe.space/VKlUMf4y6woZA58eR1bV/media/6abe2b262cc4aa198bb87d12.jpg";function M({kicker:we,title:Pe,body:tt,action:Ht}){return u.createElement("div",{className:"ejr6-email-surround"},u.createElement("article",{className:"ejr6-native-email"},u.createElement("img",{className:"ejr6-native-email-logo",src:Z,alt:"Evidence MD"}),u.createElement("div",{className:"ejr6-native-email-body"},u.createElement("p",{className:"ejr6-native-kicker"},we),u.createElement("h2",null,Pe),u.createElement("p",null,"Hi Example patient,"),u.createElement("p",null,tt),u.createElement("span",{className:"ejr6-native-email-action"},Ht," ",u.createElement("span",{"aria-hidden":"true"},"â")),u.createElement("p",{className:"ejr6-native-signature"},"Warmly,",u.createElement("br",null),u.createElement("strong",null,"Evidence MD"),u.createElement("br",null),u.createElement("small",null,"Medicine & Aesthetics")))))}function U({children:we}){return u.createElement("article",{className:"ejr6-message-card"},u.createElement("h2",null,"Evidence MD"),u.createElement("p",{className:"ejr6-text-label"},"TEXT MESSAGE"),we)}function fe(we){return we==="website"||we==="aftercare"||we==="retention"}function ve({id:we,priority:Pe=!1}){return we==="website"?u.createElement("div",{className:"ejr6-website-composition"},u.createElement("div",{className:"ejr6-desktop-device"},u.createElement("span",{className:"ejr6-device-label"},"DESKTOP"),u.createElement("div",{className:"ejr6-device-screen"},u.createElement("img",{src:re,width:"1425",height:"891",fetchPriority:Pe?"high":"auto",alt:"Current Evidence MD desktop homepage, including its navigation, Grounded in science headline, face visual and booking links."}))),u.createElement("div",{className:"ejr6-mobile-device"},u.createElement("span",{className:"ejr6-device-label"},"MOBILE"),u.createElement("div",{className:"ejr6-device-screen"},u.createElement("img",{src:oe,width:"375",height:"865",alt:"Current Evidence MD mobile homepage with its matching headline, booking call to action and face visual."})))):we==="aftercare"?u.createElement("div",{className:"ejr6-aftercare-composition"},u.createElement("div",{className:"ejr6-email-column"},u.createElement("p",{className:"ejr6-composition-label"}
778,"AFTERCARE EMAIL"),u.createElement(M,{kicker:"CARBON LASER FACIAL",title:"Your aftercare guide is ready.",body:"Follow your clinical teamâs instructions in your aftercare guide. Contact our team with any questions.",action:"View aftercare guide"})),u.createElement("div",{className:"ejr6-text-column"},u.createElement(U,null,u.createElement("p",{className:"ejr6-message-bubble"},"Hi Example patient, itâs Evidence MD. Your Carbon Laser aftercare guide is in your email. Reply here if you need help finding it.")))):we==="retention"?u.createElement("div",{className:"ejr6-retention-composition"},u.createElement("ol",{className:"ejr6-sequence-rail","aria-label":"Retention sequence"},u.createElement("li",null,u.createElement("span",null,"01")," Email"),u.createElement("li",{"aria-hidden":"true"},"â"),u.createElement("li",null,u.createElement("span",null,"02")," Text follow-up"),u.createElement("li",{"aria-hidden":"true"},"â"),u.createElement("li",null,u.createElement("span",null,"03")," Rebook")),u.createElement("div",{className:"ejr6-email-column"},u.createElement(M,{kicker:"TREATMENT FOLLOW-UP",title:"Ready for your next visit?",body:"When youâre ready, book your next visit or contact our team to plan your follow-up.",action:"Book your next visit"})),u.createElement("div",{className:"ejr6-text-column"},u.createElement(U,null,u.createElement("p",{className:"ejr6-message-bubble"},"Hi Example patient, itâs Evidence MD. Ready to plan your next Carbon Laser visit?"),u.createElement("p",{className:"ejr6-message-bubble ejr6-message-reply"},"Yes, Iâd like to book."),u.createElement("p",{className:"ejr6-message-bubble"},"Of course. Choose a time that works for you:",u.createElement("br",null),u.createElement("span",{className:"ejr6-message-link"},"Book your next visit â"))),u.createElement("div",{className:"ejr6-rebook-connector","aria-hidden":"true"},"â"),u.createElement("div",{className:"ejr6-rebook-card"},u.createElement("span",{className:"ejr6-calendar-symbol","aria-hidden":"true"},"â¦"),u.createElement("div",null,u.createElement("p",null,"BACK TO ONLINE BOOKING"),u.createElement("h3",null,"Choose your next appointment."),u.createElement("span",{className:"ejr6-rebook-action"},"View available times ",u.createElement("span",{"aria-hidden":"true"},"â")))))):null}var{frames:se,groups:be}=K,Ve="This example could not load. Choose another step or reload the page.",Se=4500;function je(we,Pe){if(!we||!Pe)return;const tt=Pe.offsetLeft-we.offsetLeft,Ht=tt+Pe.offsetWidth;tt<we.scrollLeft?we.scrollLeft=tt:Ht>we.scrollLeft+we.clientWidth&&(we.scrollLeft=Ht-we.clientWidth)}function gt({initialStep:we,compact:Pe=!1,initialMediaPriority:tt=!0,externalLinks:Ht=!1}){const pt="ejr6-"+j().replace(/:/g,""),Xa=R(F(we)),[_e,Ln]=w(Xa.current),[Yt,Na]=w(!1),[en,Qi]=w(!1),[jn,Zi]=w({id:se[Xa.current].id,status:"loading"}),[Gr,mi]=w(""),[Ma,Ji]=w(!1),[ma,tn]=w(!1),Dn=R(null),ja=R(null),Pn=R(null),hi=R(null),an=R(null),On=R(null),nn=R(null),Fn=R(null),fi=R(null),Da=R(null),Pa=R(null),Xi=R(null),ha=R(null),er=R(null),Oa=R(null),_n=R(null),Un=R(null),rn=R(null),on=R(-1),gi=R(0),pe=se[_e],Mt=be.find(q=>q.id===pe.group),Sa=he[pe.id]||Mt,Kt=fe(pe.id),fa=jn.id===pe.id&&jn.status==="failed",qn=jn.id===pe.id&&jn.status==="ready",tr=se.map((q,ee)=>({frame:q,index:ee})).filter(q=>q.frame.group===Mt.id),Fa=z(()=>{rn.current!==null&&clearTimeout(rn.current),rn.current=null},[]),zt=z(()=>{Fa(),Na(!1)},[Fa]),bt=z(q=>{zt();const ee=Math.max(0,Math.min(se.length-1,q));Ln(ee);const ge=se[ee],Te=be.find(Ye=>Ye.id===ge.group);mi(Te.label+": "+ge.label)},[zt]),Wn=z(()=>{if(!Pn.current)return;const q=Pn.current.getBoundingClientRect();if(Kt){hi.current&&(hi.current.style.transform=`scale(${q.width/1280})`);return}const ee=pe.crop?pe.crop[2]/pe.crop[3]:(pe.width||2400)/(pe.height||2e3),ge=Math.min(q.width,q.height*ee);an.current&&(an.current.style.width=ge+"px",an.current.style.height=ge/ee+"px")},[Kt,pe]),sn=z(()=>{if(!Ma||!Kt||!Oa.current||!_n.current||!Un.current)return;const q=ma?1280:Oa.current.clientWidth;_n.current.style.width=q+"px",_n.current.style.height=q*13/16+"px",Un.current.style.transform=`scale(${q/1280})`},[Ma,Kt,ma]),Vn=z((q=!1)=>
778{if(!ja.current||!Dn.current)return;const ee=ja.current.getBoundingClientRect().width;if(!ee||!q&&Math.abs(ee-on.current)<.1)return;on.current=ee;const ge=ja.current.cloneNode(!0);ge.removeAttribute("id"),ge.setAttribute("aria-hidden","true"),ge.inert=!0,ge.querySelectorAll("[id]").forEach(Ye=>Ye.removeAttribute("id")),ge.style.cssText=`position:fixed;left:-10000px;top:0;visibility:hidden;pointer-events:none;min-height:0;height:auto;max-width:none;width:${ee}px`,Dn.current.appendChild(ge);let Te=0;for(const Ye of se){const ut=be.find(it=>it.id===Ye.group),Bn=he[Ye.id]||ut;ge.querySelector(".ejr6-system").textContent=ut.system,ge.querySelector(".ejr6-title").textContent=Bn.title,ge.querySelector(".ejr6-body").textContent=Bn.body,ge.querySelector(".ejr6-feature span").textContent=ut.link,Te=Math.max(Te,ge.getBoundingClientRect().height)}ge.remove(),ja.current.style.setProperty("--ejr6-story-height",Math.ceil(Te)+"px")},[]);A(()=>{var q,ee;Wn(),Vn(),je(nn.current,((q=nn.current)==null?void 0:q.querySelector('[aria-selected="true"]'))||null),je(Fn.current,((ee=Fn.current)==null?void 0:ee.querySelector('[aria-current="step"]'))||null)},[_e,Wn,Vn]),C(()=>{var Bn;const q=++gi.current;Zi({id:pe.id,status:"loading"});let ee=!1;const ge=it=>{ee||gi.current!==q||(Zi({id:pe.id,status:it}),it==="failed"&&(zt(),mi(Ve)))},Te=Kt?Array.from(((Bn=hi.current)==null?void 0:Bn.querySelectorAll("img"))||[]):On.current?[On.current]:[],Ye=[];Promise.all(Te.map(it=>new Promise((Hn,$t)=>{if(it.complete){it.naturalWidth?Hn():$t();return}const Xr=()=>Hn(),Lt=()=>$t();it.addEventListener("load",Xr),it.addEventListener("error",Lt),Ye.push(()=>{it.removeEventListener("load",Xr),it.removeEventListener("error",Lt)})}))).then(()=>ge("ready"),()=>ge("failed"));const ut=se[_e+1];if(ut&&!fe(ut.id)){const it=new Image;it.src=ut.url}return()=>{ee=!0,Ye.forEach(it=>it())}},[_e,pe,Kt,zt]),C(()=>{if(Fa(),!(!Yt||!qn||fa||en||document.hidden))return rn.current=setTimeout(()=>{if(rn.current=null,_e===se.length-1){Na(!1);return}Ln(q=>q+1)},Se),Fa},[_e,Yt,qn,fa,en,Fa]),C(()=>{const q=window.matchMedia("(prefers-reduced-motion: reduce)");Qi(q.matches);const ee=()=>{Qi(q.matches),zt()},ge=()=>{document.hidden&&zt()};q.addEventListener("change",ee),document.addEventListener("visibilitychange",ge);const Te=typeof IntersectionObserver>"u"?null:new IntersectionObserver(Ye=>{Ye[0].isIntersecting||zt()},{threshold:0});return Dn.current&&(Te==null||Te.observe(Dn.current)),()=>{q.removeEventListener("change",ee),document.removeEventListener("visibilitychange",ge),Te==null||Te.disconnect(),Fa()}},[zt,Fa]),A(()=>{var Te;const q=()=>{Wn(),Vn(),sn()},ee=typeof ResizeObserver>"u"?null:new ResizeObserver(q);[Pn.current,ja.current,Oa.current].forEach(Ye=>{Ye&&(ee==null||ee.observe(Ye))}),window.addEventListener("resize",q),q();let ge=!0;return(Te=document.fonts)==null||Te.ready.then(()=>{ge&&Vn(!0)}),()=>{ge=!1,ee==null||ee.disconnect(),window.removeEventListener("resize",q)}},[Wn,Vn,sn]),A(()=>{var q,ee;if(!(!Ma||!ha.current))return ha.current.open||ha.current.showModal(),sn(),(q=Oa.current)==null||q.scrollTo(0,0),(ee=er.current)==null||ee.focus(),()=>{var ge;(ge=ha.current)!=null&&ge.open&&ha.current.close()}},[Ma]),A(()=>{var q;sn(),(q=Oa.current)==null||q.scrollTo(0,0)},[sn]);const Qr=()=>{var q;Ji(!1),(q=Da.current)==null||q.focus({preventScroll:!0})},Zr=Yt?"Pause":_e===se.length-1?"Replay journey":"Play journey",Ea={width:pe.width||2400,height:pe.height||2e3},Jr=pe.crop?{position:"absolute",width:Ea.width/pe.crop[2]*100+"%",height:Ea.height/pe.crop[3]*100+"%",left:-pe.crop[0]/pe.crop[2]*100+"%",top:-pe.crop[1]/pe.crop[3]*100+"%",objectFit:"fill"}:{},bi=u.createElement(u.Fragment,null,u.createElement("span",null,Mt.link),u.createElement("span",{"aria-hidden":"true"},"â"));return u.createElement("section",{className:`ejr6${Pe?" ejr6-compact":""}`,ref:Dn,"aria-label":"Your patient journey, connected",onFocusCapture:q=>{q.target!==fi.current&&zt()}},u.createElement("div",{className:"ejr6-journey"},u.createElement("header",{className:"ejr6-topline"},u.createElement("select",{className:"ejr6-mobile-stage","aria-label":"Patient journey stage",value:Mt.id,onChange:q=>bt(se.findIndex(ee=>ee.group===q.target.value))},be.map((q,ee)=>u.createElement("option",{key:q.id,value:q.id},String(ee+1).padStart(2,"0")," ",q.label))),u.createElement("span",null,u.createElement("i",null),"Your patient journey, connected"),u.createElement("button",{ref:fi,className:"ejr6-play",type:"button",disabled:en||fa,"aria-label":Yt?"Pause patient journey":_e===se.length-1?"Replay patient journey":"Play patient journey",onClick:()=>
778{if(Yt){zt();return}en||fa||(_e===se.length-1&&Ln(0),Na(!0))}},u.createElement("svg",{viewBox:"0 0 24 24","aria-hidden":"true",focusable:"false"},Yt?u.createElement(u.Fragment,null,u.createElement("rect",{x:"6",y:"5",width:"4",height:"14"}),u.createElement("rect",{x:"14",y:"5",width:"4",height:"14"})):u.createElement("path",{d:"M8 5l11 7-11 7z"})),u.createElement("span",{className:"ejr6-play-label"},Zr),u.createElement("span",{className:"ejr6-play-label-mobile"},Yt?"Pause":_e===se.length-1?"Replay":"Play"))),u.createElement("nav",{className:"ejr6-tabs",ref:nn,role:"tablist","aria-label":"Patient journey stages"},be.map((q,ee)=>u.createElement("button",{type:"button",key:q.id,id:`${pt}-tab-${q.id}`,role:"tab","aria-controls":`${pt}-scene`,"aria-selected":q.id===Mt.id,tabIndex:q.id===Mt.id?0:-1,onClick:()=>bt(se.findIndex(ge=>ge.group===q.id)),onKeyDown:ge=>{var Ye;if(!["ArrowLeft","ArrowRight","Home","End"].includes(ge.key))return;ge.preventDefault();const Te=ge.key==="Home"?0:ge.key==="End"?be.length-1:(ee+(ge.key==="ArrowRight"?1:-1)+be.length)%be.length;(Ye=nn.current)==null||Ye.querySelectorAll("button")[Te].focus({preventScroll:!0}),bt(se.findIndex(ut=>ut.group===be[Te].id))}},u.createElement("span",null,String(ee+1).padStart(2,"0")),q.label))),u.createElement("div",{id:`${pt}-scene`,className:"ejr6-scene","data-frame":pe.id,"data-group":pe.group,role:"tabpanel",tabIndex:0,"aria-labelledby":`${pt}-tab-${Mt.id}`,onKeyDown:q=>{q.target.closest("button,a,select,summary")||!["ArrowLeft","ArrowRight"].includes(q.key)||(q.preventDefault(),bt(_e+(q.key==="ArrowRight"?1:-1)))}},u.createElement("div",{className:"ejr6-story",ref:ja},u.createElement("p",{className:"ejr6-system"},Mt.system),u.createElement("h2",{className:"ejr6-title"},Sa.title),u.createElement("p",{className:"ejr6-body"},Sa.body),Ht?u.createElement("a",{className:"ejr6-feature",href:"https://medspamarketing.ai"+Mt.href},bi):u.createElement(dt,{className:"ejr6-feature",to:Mt.href},bi)),u.createElement("figure",{className:"ejr6-visual"},u.createElement("div",{className:"ejr6-substeps",ref:Fn,"aria-label":"Steps within this stage"},tr.length>1?tr.map(q=>u.createElement("button",{type:"button",key:q.frame.id,"aria-current":q.index===_e?"step":void 0,onClick:()=>bt(q.index)},q.frame.label)):u.createElement("span",{className:"ejr6-stage-context"},pe.id==="website"?"Desktop + mobile":pe.id==="reminder"?"Email + text message":pe.label)),u.createElement("div",{className:"ejr6-window"},u.createElement("div",{className:"ejr6-window-bar"},u.createElement("span",{className:"ejr6-dots","aria-hidden":"true"},"â â â"),u.createElement("span",null,pe.label),u.createElement("select",{className:"ejr6-mobile-frame","aria-label":"Step within this stage",value:_e,onChange:q=>bt(Number(q.target.value))},tr.map(q=>u.createElement("option",{key:q.frame.id,value:q.index},q.frame.label))),u.createElement("button",{type:"button",ref:Da,disabled:fa,"aria-label":"View larger artwork",onClick:()=>{zt(),tn(!1),Ji(!0)}},"View larger ",u.createElement("span",{"aria-hidden":"true"},"â"))),u.createElement("div",{className:"ejr6-artboard",ref:Pn},Kt?u.createElement("div",{className:"ejr6-custom-scene"},u.createElement("div",{className:"ejr6-scene-canvas",ref:hi,key:pe.id},u.createElement(ve,{id:pe.id,priority:tt&&_e===Xa.current}))):u.createElement("div",{className:"ejr6-image-viewport",ref:an},u.createElement("img",{key:pe.id,ref:On,className:"ejr6-art",src:pe.url,alt:pe.alt,width:Ea.width,height:Ea.height,decoding:"async",fetchPriority:tt&&_e===Xa.current?"high":"auto",style:{...Jr,visibility:qn?"visible":"hidden"}})),u.createElement("p",{className:"ejr6-image-error",hidden:!fa},Ve))),u.createElement("figcaption",null,u.createElement("span",{className:"ejr6-frame-note"},pe.title),u.createElement("span",{className:"ejr6-source"},pe.source))),u.createElement("details",{className:"ejr6-mobile-info",key:pe.id},u.createElement("summary",{onClick:zt},"About this step",u.createElement("span",{"aria-hidden":"true"},"+")),u.createElement("div",{className:"ejr6-mobile-copy"},u.createElement("p",{className:"ejr6-system"},Mt.system),u.createElement("h2",null,Sa.title),u.createElement("p",null,Sa.body),Ht?u.createElement("a",{className:"ejr6-feature",href:"https://medspamarketing.ai"+Mt.href},bi):u.createElement(dt,{className:"ejr6-feature",to:Mt.href},bi),u.createElement("p",{className:"ejr6-frame-note"},pe.title),u.createElement("p",{className:"ejr6-source"},pe.source)))),u.createElement("footer",{className:"ejr6-controls"},u.createElement("span",{className:"ejr6-example"},"Example patient journey · Evidence MD"),u.createElement("div",{className:"ejr6-trans
778port"},u.createElement("button",{ref:Pa,type:"button",disabled:_e===0,"aria-label":"Previous frame",onClick:()=>{var q;bt(_e-1),_e===1&&((q=Xi.current)==null||q.focus({preventScroll:!0}))}},"â"),u.createElement("span",{className:"ejr6-counter","aria-live":"off"},_e+1," / ",se.length),u.createElement("button",{ref:Xi,type:"button",disabled:_e===se.length-1,"aria-label":"Next frame",onClick:()=>{var q;bt(_e+1),_e===se.length-2&&((q=Pa.current)==null||q.focus({preventScroll:!0}))}},"â"))),u.createElement("p",{className:"ejr6-sr-only",role:"status"},Gr)),u.createElement("dialog",{ref:ha,className:"ejr6-dialog","aria-labelledby":`${pt}-large-title`,"aria-describedby":`${pt}-large-source`,onClose:Qr,onKeyDown:q=>{var Ye;if(q.key!=="Tab")return;const ee=Array.from(((Ye=ha.current)==null?void 0:Ye.querySelectorAll('button:not([disabled]),[tabindex="0"]'))||[]).filter(ut=>ut.getClientRects().length&&!ut.closest("[hidden]")),ge=ee[0],Te=ee[ee.length-1];q.shiftKey&&document.activeElement===ge?(q.preventDefault(),Te==null||Te.focus()):!q.shiftKey&&document.activeElement===Te&&(q.preventDefault(),ge==null||ge.focus())}},u.createElement("div",{className:"ejr6-dialog-bar"},u.createElement("strong",{id:`${pt}-large-title`},pe.label),u.createElement("div",{className:"ejr6-dialog-actions"},u.createElement("button",{type:"button","aria-pressed":ma,onClick:()=>tn(q=>!q)},ma?"Fit to window":"Zoom in"),u.createElement("button",{ref:er,type:"button",onClick:()=>{var q;return(q=ha.current)==null?void 0:q.close()}},"Close ",u.createElement("span",{"aria-hidden":"true"},"Ã")))),u.createElement("div",{className:`ejr6-large-scroll${ma?" ejr6-zoomed":""}`,ref:Oa,tabIndex:0,"aria-label":"Artwork; scroll to explore when zoomed"},Ma&&(Kt?u.createElement("div",{className:"ejr6-large-custom",ref:_n},u.createElement("div",{className:"ejr6-scene-canvas",ref:Un},u.createElement(ve,{id:pe.id}))):u.createElement("img",{className:"ejr6-large-art",src:pe.url,alt:pe.alt,width:Ea.width,height:Ea.height,style:{"--ejr6-detail-width":Ea.width+"px"}}))),u.createElement("p",{id:`${pt}-large-source`},pe.source)))}var ui=gt;return f(g)})();function $r(i){return e(Zb.PlatformExperience,i)}function om(){let[i,s]=(0,Tt.useState)(-1),[l,d]=(0,Tt.useState)(!1),p=Gb(),h=(0,Tt.useRef)(null),[f,g]=(0,Tt.useState)(!0),[b,u]=(0,Tt.useState)(!0),N=[["A patient books","The selected service starts the right path."],["Forms & reminders","Clinic-approved preparation arrives before the visit."],["Your team treats","The clinical team completes and reviews the record."],["Aftercare & reviews","The completed visit starts the approved follow-up."],["A reason to return","Rebooking and win-back follow the treatment plan."]];return(0,Tt.useEffect)(()=>{if(typeof IntersectionObserver>"u")return;let v=new IntersectionObserver(([w])=>g(w.isIntersecting),{threshold:.15});return h.current&&v.observe(h.current),()=>v.disconnect()},[]),(0,Tt.useEffect)(()=>{let v=()=>u(!document.hidden);return document.addEventListener("visibilitychange",v),()=>document.removeEventListener("visibilitychange",v)},[]),(0,Tt.useEffect)(()=>{p&&d(!1)},[p]),(0,Tt.useEffect)(()=>{if(!l||!f||!b||p)return;let v=window.setTimeout(()=>{if(i>=N.length-1){d(!1);return}s(i+1)},1800);return()=>window.clearTimeout(v)},[i,l,f,b,p]),e("div",{className:`workflow-motion ${l&&f&&b&&!p?"is-playing":""}`,ref:h},e("div",{className:"workflow-motion-heading"},e("div",null,e("span",{className:"eyebrow"},"AUTOMATED FOLLOW-UP FOR EACH TREATMENT"),e("h2",null,"See the follow-up take shape.")),!p&&e("button",{className:"text-link",onClick:()=>{l?d(!1):((i===N.length-1||i<0)&&s(0),d(!0))}},l?"Pause sequence":i===N.length-1?"Replay sequence":"Play sequence",l?e("span",{"aria-hidden":"true"},"â
¡"):e(Ja,{size:16}))),e("ol",{className:"workflow-motion-nodes"},N.map(([v,w],C)=>e("li",{key:v,className:i===C?"is-current":i>C?"is-complete":""},e("button",{"aria-pressed":i===C,onClick:()=>{d(!1),s(C)}},e("span",{className:"workflow-motion-number"},i>C?e(De,{size:20}):String(C+1).padStart(2,"0")),e("strong",null,v),e("span",null,w)),C<N.length-1&&e("div",{className:"workflow-motion-connection","aria-hidden":"true"},e("i",null))))),e("p",{className:"visual-source-note"},"Illustrated sequence. Messages, timing and clinical steps are configured for your clinic."))}function Jb(){return e("section",{className:"section branded-followup-gallery"},e("div",{className:"section-heading"},e("div",null,e("p",{className:"eyebrow"},"YOUR BRAND, BEYOND THE WEBSITE"),e("h2",null,"The message feels",e("br",null),"like your clinic.")),e("p",null,"Branded emails for the appointment, the follow-up and the next visit.")),e(Om,null))}var vc="https://links.medspamarketing.ai/reputation/widgets/review_widget/VKlUMf4y6woZA58eR1bV?widgetId=69c602edaed9e9b138858323",Xb="https://links.medspamarketing.ai/reputation/assets/review-widget.js",ey="https://services.leadconnectorhq.com/reputation/widgets/data?locationId=VKlUMf4y6woZA58eR1bV&widgetId=69c602edaed9e9b138858323&status=saved&projection=reviews&page=1&size=9",ty="https://storage.googleapis.com/revex-reputation-production/assets/google-icon.svg",sm="(max-width:760px)";function ay(i){if(!i||typeof i!="object"||!("reviews"in i)||!Array.isArray(i.reviews))return[];let s=new Set;return i.reviews.slice(0,9).flatMap(l=>{if(!l||typeof l!="object")return[];let d=l,{id:p,reviewerName:h,starRating:f,comment:g,dateAdded:b,source:u}=d;return typeof p!="string"||!/^[a-zA-Z0-9_-]{1,120}
778$/.test(p)||s.has(p)||typeof h!="string"||!h.trim()||h.length>200||typeof g!="string"||!g.trim()||g.length>12e3||typeof f!="number"||!Number.isInteger(f)||f<1||f>5||typeof b!="string"||b.length>64||!Number.isFinite(Date.parse(b))||u!==247?[]:(s.add(p),[{id:p,reviewerName:h,starRating:f,comment:g,dateAdded:b}])})}function ny(){let i=(0,$a.useRef)(null),s=(0,$a.useRef)(null),[l,d]=(0,$a.useState)([]),[p,h]=(0,$a.useState)("loading"),[f,g]=(0,$a.useState)(null);(0,$a.useEffect)(()=>{let u=new AbortController,N=!0,v=!1,w,C=async()=>{if(!v){v=!0,w=setTimeout(()=>u.abort(),8e3);try{let z=await fetch(ey,{signal:u.signal,credentials:"omit"});if(!z.ok)throw new Error("Reviews unavailable");let S=await z.text();if(S.length>15e4)throw new Error("Review response too large");let R=ay(JSON.parse(S));if(!R.length)throw new Error("No reviews available");N&&(d(R),h("ready"))}catch{N&&h("error")}finally{w&&clearTimeout(w)}}},A=typeof IntersectionObserver>"u"?null:new IntersectionObserver(z=>{z.some(S=>S.isIntersecting)&&(A==null||A.disconnect(),C())},{rootMargin:"400px 0px"});return A&&i.current?A.observe(i.current):C(),()=>{N=!1,A==null||A.disconnect(),u.abort(),w&&clearTimeout(w)}},[]);let b=u=>{let N=s.current,v=N==null?void 0:N.querySelector(".mobile-review-card");N&&v&&N.scrollBy({left:u*(v.offsetWidth+14),behavior:"auto"})};return e("div",{className:"mobile-reviews",ref:i},p==="ready"?e(Y.Fragment,null,e("div",{className:"mobile-reviews-toolbar"},e("p",null,"Swipe through client reviews"),e("div",null,e("button",{type:"button",onClick:()=>b(-1),"aria-label":"Previous client review"},e(J,{size:18})),e("button",{type:"button",onClick:()=>b(1),"aria-label":"Next client review"},e(J,{size:18})))),e("div",{className:"mobile-reviews-track",ref:s,role:"region","aria-label":"Google client reviews. Use left and right arrow keys to explore.",tabIndex:0,onKeyDown:u=>{u.target===u.currentTarget&&((u.key==="ArrowLeft"||u.key==="ArrowRight")&&(u.preventDefault(),b(u.key==="ArrowLeft"?-1:1)),(u.key==="Home"||u.key==="End")&&(u.preventDefault(),u.currentTarget.scrollTo({left:u.key==="Home"?0:u.currentTarget.scrollWidth,behavior:"auto"})))}},l.map(u=>e("article",{className:"mobile-review-card",key:u.id},e("div",{className:"mobile-review-rating"},e("span",{"aria-label":`${u.starRating} out of 5 stars`},"â
".repeat(u.starRating)),e("span",null,e("img",{src:ty,alt:"",width:"16",height:"16",loading:"lazy"}),"Google review")),e("p",{className:`mobile-review-comment${f===u.id?" is-expanded":""}`,id:`mobile-review-${u.id}`},u.comment),e("button",{className:"mobile-review-expand",type:"button","aria-expanded":f===u.id,"aria-controls":`mobile-review-${u.id}`,onClick:()=>g(f===u.id?null:u.id)},f===u.id?"Show less":"Read full review"),e("footer",null,e("strong",null,u.reviewerName),e("time",{dateTime:u.dateAdded},new Intl.DateTimeFormat("en-US",{month:"short",day:"numeric",year:"numeric",timeZone:"UTC"}).format(new Date(u.dateAdded)))))))):e("div",{className:"mobile-reviews-status",role:"status"},e("p",null,p==="loading"?"Loading client reviewsâ¦":"Client reviews are available in the full review page."),e("a",{href:vc,target:"_blank",rel:"noreferrer"},"Open client reviews ",e(Ae,{size:16}))))}function Rc(){let[i,s]=(0,$a.useState)(()=>typeof window<"u"&&window.matchMedia(sm).matches);return(0,$a.useEffect)(()=>{let l=window.matchMedia(sm),d=()=>s(l.matches);return l.addEventListener("change",d),d(),()=>l.removeEventListener("change",d)},[]),(0,$a.useEffect)(()=>{if(i||document.querySelector("script[data-msmai-reviews]"))return;let l=document.createElement("script");l.src=Xb,l.async=!0,l.dataset.msmaiReviews="true",document.body.appendChild(l)},[i]),e("section",{className:"section review-widget-section",id:"client-reviews"},e("div",{className:"review-widget-heading"},e("div",null,e("p",{className:"eyebrow"},"IN OUR CLIENTSâ WORDS"),e("h2",null,"The work, from",e("br",null),"their side of the table.")),e("p",null,"What our clients say about our platform and service work.")),i?e(ny,null):e("div",{className:"review-widget-frame"},e("iframe",{className:"lc_reviews_widget",src:vc,title:"Med Spa Marketing AI Google reviews",loading:"lazy",scrolling:"yes",style:{width:"100%",minWidth:"100%",border:0,minHeight:620}})),e("a",{className:"text-link",href:vc,target:"_blank",rel:"noreferrer"},"Open client reviews ",e(Ae,{size:16})))}var lm={Andrew:"/assets/team-v7/andrew.png",Adrienne:"/assets/team-v7/adrienne.jpg","Rob Upland":"/assets/team-v6/rob-upland.png"},iy=[{id:"marketing",title:"Med Spa Marketing AI",links:[["Custom websites","/features/website"],["Patient acquisition","/features/advertising"],["Online booking","/features/booking"],["Appointment reminders","/features/appointment-reminders"],["Patient retention","/features/retention"],["Ask AI","/features/ask-ai"],["Social Planner","/features/social-planner"],["Integrations","/integrations"],["Treatment packages","/features/packages"],["Subscriptions","/features/subscriptions"],["Gift cards","/features/gift-cards"]]},{id:"emr",title:"EMRMedSpa",links:[["In-Room","/features/in-room"],["Patient records","/features/patient-workspace"],["Forms & consent","/features/consents"],["Clinical photos","/features/photos"],["Inventory","/features/inventory"],["Payments","/features/payments"]]},{id:"programs",title:"Work with us",links:[["Launch a new med spa","/programs/launch"],["Grow an existing practice","/programs/growth"],["Programs & pricing","/pricing"],["How setup works","/how-it-works"],["Book a demo","/discovery-call"]]},{id:"company",title:"Get to know us",links:[["Our team","/about"],["Client stories","/customer-stories"],["FAQs","/faq"],["USMD partnership","/about#usmd"],["All platform features","/features"]]}];function ry(){return e("footer",{className:"company-footer"},e("div",{className:"company-footer__intro"},e("div",{className:"company-footer__brand-copy"},e(H,{to:"/",className:"brand","aria-label":"Med Spa Marketing AI home"},e("img",{src:"/assets/brand/msmai-logo.svg",width:"420",height:"112",alt:"Med Spa Marketing AI"})),e("p",null,"Your website. Your marketing. Your clinical workspace.",e("br",null),"One platform, configured around your clinic.")),e("nav",{className:"company-footer__logins","aria-label":"Platform logins"},e("a",{href:"https://app.medspamarketing.ai/",target:"_blank",rel:"noreferrer"},"Marketing login ",e(Ae,{size:16,"aria-hidden":"true"})),e("a",{href:"https://app.emrmedspa.com/",target:"_blank",rel:"noreferrer"},"EMR login ",e(Ae,{size:16,"aria-hidden":"true"}
778)))),e("nav",{className:"company-footer__columns","aria-label":"Footer navigation"},iy.map(i=>e("div",{className:`company-footer__group company-footer__group--${i.id}`,key:i.id},e("h2",null,i.title),e("ul",null,i.links.map(([s,l])=>e("li",{key:l},e(H,{to:l},s))))))),e("div",{className:"company-footer__bottom"},e("p",null,"© ",new Date().getFullYear()," 1SoftwareSolution LLC, DBA Med Spa Marketing AI."),e("nav",{"aria-label":"Legal and HIPAA information"},e(H,{className:"company-footer__hipaa",to:"/security","aria-label":"HIPAA information"},e("img",{src:"/assets/brand-v13/hipaa-mark.avif",width:"180",height:"180",alt:"HIPAA",loading:"lazy",decoding:"async"})),e("div",{className:"company-footer__legal-links"},e("a",{href:"https://medspamarketing.ai/legal/privacy-policy"},"Privacy policy"),e("a",{href:"https://medspamarketing.ai/legal/terms-and-conditions"},"Terms and conditions")))))}function oy({portrait:i}){return e(Y.Fragment,null,e("section",{className:"section company-story",id:"company"},e("div",{className:"company-story__portrait"},i?e("img",{src:i,width:"1024",height:"1024",alt:"Rob Upland, founder of Med Spa Marketing AI",loading:"lazy"}):e("div",{className:"company-story__wordmark"},e("img",{src:"/assets/brand/msmai-logo.svg",alt:"Med Spa Marketing AI",width:"420",height:"112"}),e("p",null,"Built around the work",e("br",null),"of running a med spa.")),e("div",{className:"company-story__signature"},e("strong",null,"Rob Upland"),e("span",null,"Founder, Med Spa Marketing AI"))),e("div",{className:"company-story__copy"},e("p",{className:"eyebrow"},"THE PEOPLE BEHIND THE PLATFORM"),e("h2",null,"Software is one part.",e("br",null),"The people matter, too."),e("p",null,"Rob Upland is the founder of Med Spa Marketing AI. Our work brings the website, marketing system and clinical workspace into a clearer patient journey."),e("p",null,"Our work is practical: learn how your clinic operates, configure the tools around it, and help your team understand the setup. Andrew leads technology as CTO, working alongside the broader platform team."),e(H,{className:"text-link",to:"/how-it-works"},"See how we work with you ",e(J,{size:17})))),e("section",{className:"section company-team","aria-labelledby":"company-team-title"},e("div",{className:"section-heading"},e("p",{className:"eyebrow"},"YOUR PLATFORM TEAM"),e("h2",{id:"company-team-title"},"A team you can",e("br",null),"get to know."),e("p",null,"The people behind your website, platform and clinic setup.")),e("div",{className:"company-team__names"},Bb.map(s=>e("div",{key:s.name},e("div",{className:"company-team__avatar"},lm[s.name]?e("img",{src:lm[s.name],width:"512",height:"512",alt:s.name,loading:"lazy"}):e("span",{"aria-hidden":"true"},s.name.slice(0,1))),e("h3",null,s.name),s.role&&e("p",null,s.role))))),e("section",{className:"section company-partner",id:"usmd"},e("div",{className:"company-partner__mark"},e("a",{href:"https://usmedicaldirectors.com/",target:"_blank",rel:"noreferrer","aria-label":"Visit US Medical Directors (new tab)"},e("img",{src:"/assets/partners-v7/us-medical-directors.png",width:"271",height:"82",alt:"US Medical Directors",loading:"lazy"}))),e("div",null,e("p",{className:"eyebrow"},"WORKING WITH US MEDICAL DIRECTORS"),e("h2",null,"A partnership around",e("br",null),"the business of care."),e("p",null,"Med Spa Marketing AI is an Official Partner of US Medical Directors. We work together on marketing infrastructure and education. We bring the platform and marketing systems; clinical oversight remains with the clinic and its clinical partners."),e(H,{className:"text-link",to:"/us-medical-directors/discovery-call"},"Talk with us about your practice ",e(J,{size:17})))))}function sy(){return e("section",{className:"section client-work-stories","aria-labelledby":"client-work-title"},e("div",{className:"section-heading"},e("p",{className:"eyebrow"},"DIFFERENT CLINICS. SPECIFIC WORK."),e("h2",{id:"client-work-title"},"The work behind",e("br",null),"the relationship."),e("p",null,"Our client work spans websites, booking, marketing and follow-up. Each practice starts from a different place.")),e("div",{className:"client-work-stories__rows"},e("article",null,e("div",null,e("span",null,"Natural Rejuvenation MedSpa"),e("h3",null,"Reconnect with",e("br",null),"existing patients.")),e("p",null,"Noemiâs client feedback describes support with reactivation campaigns, follow-up and reporting. Explore how the platform helps a clinic plan the next patient conversation."),e(H,{className:"text-link",to:"/features/retention"},"Explore retention ",e(Ae,{size:17}))),e("article",null,e("div",null,e("span",null,"Skin Bar New York"),e("h3",null,"Give patients a",e("br",null),"clear booking path.")),e("p",null,"Website and booking work helps a practice carry its services into the patientâs next step. See the booking flow, from service selection to appointment details."),e(H,{className:"text-link",to:"/features/booking"},"Explore online booking ",e(Ae,{size:17})))),e("p",{className:"client-work-stories__note"},"Selected examples of platform and service work. Each clientâs scope and results are individual."))}var ly={"/legal/privacy-policy":{title:"Privacy Policy",updatedLabel:"Last updated: ",updated:"September 30, 2026",dateTime:"2026-09-30",intro:e(Y.Fragment,null,e
778("p",null,"At ",e("strong",null,"1SoftwareSolution LLC, doing business as Med Spa Marketing AI")," (âMed Spa Marketing AI,â âwe,â âus,â or âourâ), we respect your privacy and are committed to protecting your personal information. This Privacy Policy explains how we collect, use, disclose, and safeguard information when you visit our website or use our services, including any marketing services, software-enabled services, or tools we provide (collectively, the âServicesâ).")),sections:[{id:"privacy-section-1",title:"1. Information We Collect",content:e(Y.Fragment,null,e("h3",null,"A. Personal Information You Provide"),e("p",null,"We may collect personal information that you voluntarily submit, including but not limited to:"),e("ul",null,e("li",null,"Name"),e("li",null,"Email address"),e("li",null,"Phone number"),e("li",null,"Business name"),e("li",null,"Any information submitted through forms, scheduling tools, or inquiries")),e("h3",null,"B. Client & End-Customer Data (Service Data)"),e("p",null,"When providing services to our clients, we may process personal information on their behalf, which may include:"),e("ul",null,e("li",null,"Contact information (name, email, phone number)"),e("li",null,"Appointment or scheduling data"),e("li",null,"Communication history (email, SMS, call logs)"),e("li",null,"Marketing interaction data")),e("p",null,"This information is processed solely to deliver contracted services and remains the property of the client."),e("h3",null,"C. Usage & Technical Information"),e("p",null,"We automatically collect certain technical information, including:"),e("ul",null,e("li",null,"IP address"),e("li",null,"Browser type and device information"),e("li",null,"Pages viewed and actions taken"),e("li",null,"Referring URLs"),e("li",null,"Date and time of visits")),e("p",null,"This data is collected using cookies, analytics tools, and similar technologies."))},{id:"privacy-section-2",title:"2. How We Use Your Information",content:e(Y.Fragment,null,e("p",null,"We use collected information to:"),e("ul",null,e("li",null,"Provide, operate, and improve our Services"),e("li",null,"Communicate with you and respond to inquiries"),e("li",null,"Deliver marketing, transactional, and informational communications"),e("li",null,"Configure and manage marketing systems and automations"),e("li",null,"Analyze website and campaign performance"),e("li",null,"Maintain security, prevent fraud, and enforce our agreements")))},{id:"privacy-section-3",title:"3. Use of Software Platforms & Role as a Service Provider",content:e(Y.Fragment,null,e("p",null,"Med Spa Marketing AI provides marketing and operational services that may include the configuration and use of third-party software platforms, including customer relationship management (CRM), email, SMS, automation, analytics, scheduling, and payment tools."),e("p",null,"When acting on behalf of clients:"),e("ul",null,e("li",null,"We process personal information as a service provider or data processor"),e("li",null,"We do not own client or end-customer data"),e("li",null,"We process data only according to client instructions and contractual obligations")),e("p",null,"Clients remain responsible for the lawful collection and use of their data."))},{id:"privacy-section-4",title:"4. SMS, Email & Communications Consent",content:e(Y.Fragment,null,e("p",null,"By submitting your information or opting into communications, you consent to receive emails, SMS messages, and other communications related to our Services, including transactional communications and, if separately opted into, marketing communications."),e("ul",null,e("li",null,"Message frequency may vary"),e("li",null,"Message and data rates may apply"),e("li",null,"You may opt out of SMS communications at any time by replying ",e("strong",null,"STOP")),e("li",null,"For assistance, reply ",e("strong",null,"HELP")," or contact us at ",e("strong",null,"[email protected]"))),e("p",null,"Consent for SMS communications is collected in accordance with applicable laws and is not a condition of purchase."),e("p",null,"Additional SMS terms are described
778in our ",e("a",{href:"/legal/terms-and-conditions"},e("strong",null,"Terms of Service")),"."))},{id:"privacy-section-5",title:"5. HIPAA & Healthcare Data Disclaimer",content:e(Y.Fragment,null,e("p",null,"Med Spa Marketing AI is not a healthcare provider and does not provide medical advice or treatment."),e("p",null,"Before authorized processing of Protected Health Information (âPHIâ) begins, the parties must have the applicable written Business Associate Agreement (âBAAâ) and any other required data-protection terms in place, and the relevant features, configurations and subcontractors must have the required safeguards and agreements. This Privacy Policy alone does not authorize PHI processing, establish either party's HIPAA status, or certify that a feature or use is compliant."),e("p",null,"You are responsible for identifying your intended use and providing the information and lawful permissions necessary to determine the applicable relationship. Each party remains responsible for obligations imposed directly on it by applicable law. We do not transfer our own security, reporting or other legal responsibilities to you."),e("p",null,"An applicable BAA or other written data-protection agreement governs the information and processing within its scope and controls over conflicting provisions of this Privacy Policy concerning protection of that information. Information received outside an authorized feature or purpose remains subject to applicable protective, incident-response and lawful-disposition obligations; receipt does not authorize additional processing."))},{id:"privacy-section-6",title:"6. Cookies, Analytics & Tracking Technologies",content:e(Y.Fragment,null,e("p",null,"We use cookies and analytics tools (such as Google Analytics) to understand how users interact with our website and Services."),e("p",null,"You may disable cookies through your browser settings; however, some features may not function properly as a result."))},{id:"privacy-section-7",title:"7. Sharing of Information ",content:e(Y.Fragment,null,e("p",null,"We do not sell personal information."),e("p",null,e("strong",null,"No mobile information will be shared with third parties/affiliates for marketing/promotional purposes. Information sharing to subcontractors in support services, such as customer service, is permitted. All other use case categories exclude text messaging originator opt-in data and consent; this information will not be shared with any third parties.")))},{id:"privacy-section-8",title:"8. Data Security",content:e(Y.Fragment,null,e("p",null,"We implement reasonable administrative, technical, and organizational safeguards to protect personal information."),e("p",null,"However, no method of transmission or storage is 100% secure, and we cannot guarantee absolute security."))},{id:"privacy-section-9",title:"9. Your Rights & Choices",content:e(Y.Fragment,null,e("p",null,"Depending on your location, you may have the right to:"),e("ul",null,e("li",null,"Request access to your personal information"),e("li",null,"Request correction or deletion of your data"),e("li",null,"Opt out of marketing communications")),e("p",null,"To exercise these rights, contact us at:",e("br",null),"ð§ ",e("strong",null,"[email protected]")))},{id:"privacy-section-10",title:"10. Third-Party Links",content:e(Y.Fragment,null,e("p",null,"Our Services may contain links to third-party websites or tools. We are not responsible for the privacy practices or content of those third parties. We encourage you to review their privacy policies independently."))},{id:"privacy-section-11",title:"11. Changes to This Privacy Policy",content:e(Y.Fragment,null,e("p",null,"We may update this Privacy Policy from time to time. Updates will be posted on this page with a revised âLast Updatedâ date."))},{id:"privacy-section-12",title:"12. Contact Us",content:e(Y.Fragment,null,e("p",null,"If you have questions about this Privacy Policy or how information is handled, please contact:"),e("p",null,e("strong",null,"Med Spa Marketing AI"),e("br",null),"ð§ ",e("strong",null,"[email protected]")))}]},"/legal/terms-and-conditions":{title:"Terms and Conditions",updatedLabel:"Last updated: ",updated:"September 10, 2026",dateTime:"2026-09-10",intro:e(Y.Fragment,null,e
778("p",null,"Version: MSMAI-TERMS-2026-09-10-R1"),e("p",null,"Welcome to Med Spa Marketing AI (âCompany,â âwe,â âus,â or âourâ), operated by 1SoftwareSolution LLC, doing business as Med Spa Marketing AI."),e("p",null,"These Terms and Conditions (âTermsâ) govern your access to and use of our website, services, platforms, tools, and any related software-enabled services we provide (collectively, the âServicesâ). For business Services, âyouâ means the legal person or entity identified in the applicable order or other written service agreement. An individual accepting these Terms for a business represents that the individual is authorized to bind that business."),e("p",null,"We will make the applicable version available for review and retention before requesting your acceptance for business Services. Your applicable order or other written service agreement identifies the purchased Services and pricing. These Terms do not order additional Services or change separately agreed pricing. If you do not agree to the applicable Terms, do not accept them or purchase the affected Services. Merely viewing these Terms does not execute a Business Associate Agreement (âBAAâ).")),sections:[{id:"terms-section-1",title:"1. Business Identity & Messaging Overview",content:e(Y.Fragment,null,e("p",null,"1SoftwareSolution LLC, doing business as Med Spa Marketing AI, provides marketing strategy, implementation, and system configuration services for businesses, including CRM setup, email and SMS automation, analytics, and related services."),e("p",null,"If you opt in to receive SMS communications, messages you may receive include responses to inquiries, service-related notifications, account communications, and, if separately consented to, marketing or informational messages related to our Services."),e("p",null,"Our Services may include:"),e("ul",null,e("li",null,"CRM setup and management"),e("li",null,"Email and SMS marketing automation"),e("li",null,"Funnel and website configuration"),e("li",null,"Analytics, reporting, and optimization")),e("p",null,"Where included in the applicable order or other written service agreement, Services may also include electronic medical-record software and related administrative workflow support, subject to Section 6. Listing a service does not establish that it is included in your purchase or authorized to process patient information."),e("p",null,"We do not provide medical care, diagnosis, treatment, prescribing or legal advice. Clinical decisions and patient care remain with you and the responsible licensed professionals."))},{id:"terms-section-2",title:"2. Eligibility & Use of Services",content:e(Y.Fragment,null,e("p",null,"You must be at least 18 years old to use our Services."),e("p",null,"You agree to use the Services only for lawful business purposes and in compliance with all applicable local, state, and federal laws, including marketing, privacy, and communications regulations."),e("p",null,"You may not use our Services to:"),e("ul",null,e("li",null,"Send unlawful, deceptive, or misleading communications"),e("li",null,"Violate privacy, healthcare, or consumer protection laws"),e("li",null,"Engage in spam, abuse, or fraudulent activity")))},{id:"terms-section-3",title:"3. Client Data & Responsibilities",content:e(Y.Fragment,null,e("p",null,"You retain ownership of all data you provide or upload into any system we manage on your behalf, subject to applicable law and the rights of patients and other rights holders."),e("p",null,"You are responsible for:"),e("ul",null,e("li",null,"The lawfulness of the data, materials and instructions you provide"),e("li",null,"Obtaining notices, consents and authorizations required for your collection of data and the communications or processing you instruct us to perform"),e("li",null,"The users, devices and access permissions under your control"),e("li",null,"Compliance with laws applicable to your own activities, including TCPA, CAN-SPAM, state privacy laws and HIPAA where applicable")),e("p",null,"We remain responsible for our own activities and the Services, systems, configurations, personnel and subcontractors under our control, as required by applicable law and our applicable written agreements. Your instructions do not excuse our own legal duties, and neither party's responsibilities transfer the other party's duties."),e("p",null,"Access, preservation, export, return and destruction of information governed by a BAA or other written data-protection agreement are governed by that agreement and applicable law. Section 7 does not give us ownership of your patient records or other client data."))},{id:"terms-section-4",title:"4. SMS/MMS Messaging Terms",content:e(Y.Fragment,null,e
778("h3",null,"Opt-Out & Support"),e("p",null,"You can cancel the SMS service at any time. Just text âSTOPâ to the phone number from which you received the message. After you send the SMS message âSTOPâ to us, we will send you an SMS message to confirm that you have been unsubscribed. After this, you will no longer receive SMS messages from us. If you want to join again, just sign up as you did the first time and we will start sending SMS messages to you again. If you are experiencing issues with the messaging program you can reply with the keyword HELP for more assistance, or you can get help directly at [email protected]."),e("h3",null,"Carrier Disclaimer"),e("p",null,"Carriers are not liable for delayed or undelivered messages."),e("h3",null,"Message Frequency & Rates"),e("p",null,"As always, message and data rates may apply for any messages sent to you from us and to us from you. Message frequency may vary. If you have any questions about your text plan or data plan, it is best to contact your wireless provider."))},{id:"terms-section-5",title:"5. Privacy Policy",content:e(Y.Fragment,null,e("p",null,"If you have any questions regarding privacy, please read our Privacy Policy: ð ",e("a",{href:"https://medspamarketing.ai/legal/privacy-policy"},"https://medspamarketing.ai/legal/privacy-policy")),e("p",null,"Your participation in our SMS program and use of the Services are governed by that Privacy Policy."))},{id:"terms-section-6",title:"6. HIPAA & Healthcare Responsibilities",content:e(Y.Fragment,null,e("p",null,"Med Spa Marketing AI is not a healthcare provider and does not provide medical advice or treatment."),e("p",null,"Before authorized processing of Protected Health Information (âPHIâ) begins, the parties must have the applicable written BAA and any other required data-protection terms in place, and the relevant features, configurations and subcontractors must have the required safeguards and agreements. These Terms alone do not authorize PHI processing, establish either party's HIPAA status, or certify that a feature or use is compliant."),e("p",null,"You are responsible for identifying your intended use and providing the information and lawful permissions necessary to determine the applicable relationship. Each party remains responsible for obligations imposed directly on it by applicable law. We do not transfer our own security, reporting or other legal responsibilities to you."),e("p",null,"An applicable BAA or other written data-protection agreement governs the information and processing within its scope and controls over conflicting provisions of these Terms concerning protection of that information. Information received outside an authorized feature or purpose remains subject to applicable protective, incident-response and lawful-disposition obligations; receipt does not authorize additional processing. Sections 9 and 10 explain when their financial provisions apply to BAA claims."))},{id:"terms-section-7",title:"7. Intellectual Property",content:e(Y.Fragment,null,e("p",null,"Except for your data, patient records, materials you supply, and assets or deliverables assigned to you under an applicable written agreement, content, materials, systems, workflows, templates, designs and software configurations created by Med Spa Marketing AI remain our intellectual property unless otherwise agreed in writing. We retain our pre-existing and reusable software, templates, methods and know-how, subject to any rights expressly granted in an applicable written agreement."),e("p",null,"You may not reproduce, resell, sublicense, or distribute our proprietary materials without prior written consent."),e("p",null,"An applicable written client-specific agreement concerning ownership, permitted use or transfer of a website, domain, telephone number, advertising account or other deliverable controls over a conflicting general provision in these Terms. This section does not revoke rights already granted under that agreement or transfer ownership of your records or supplied materials to us. Rights in third-party platforms remain subject to the applicable third-party terms."))},{id:"terms-section-8",title:"8. No Guarantee of Results",content:e(Y.Fragment,null,e
778("p",null,"Marketing results vary."),e("p",null,"We do not guarantee revenue outcomes, lead volume, conversion rates, or advertising performance. Any examples or projections are illustrative only and do not constitute guarantees."))},{id:"terms-section-9",title:"9. Limitation of Liability",content:e(Y.Fragment,null,e("p",null,"To the maximum extent permitted by applicable law and subject to the qualifications below, the Company shall not be liable for indirect, incidental, consequential or special damages arising from the Services or these Terms. Loss of revenue, profits, data or business opportunities is excluded under this paragraph only to the extent it constitutes one of those excluded categories; this paragraph does not classify every such loss as indirect or consequential."),e("p",null,"To the maximum extent permitted by applicable law and subject to the qualifications below, our total liability, if any, shall not exceed the amount paid by you to us in the three (3) months preceding the claim."),e("p",null,"The exclusions and limitation in this section are subject to any applicable BAA or other written agreement between the parties. For claims arising under a BAA, Sections 9 and 10 apply only if the parties have expressly agreed in writing that the particular provisions cover those claims, in accordance with that BAA's own requirements. Merely accepting these Terms, receiving a link to them, or continuing to use the Services does not satisfy a BAA's requirement for that specific agreement or amend a separately negotiated BAA. An express incorporation in a newly executed BAA or a properly executed amendment may establish the agreed scope."),e("p",null,"Nothing in these Terms excludes or limits liability that cannot lawfully be excluded or limited, restricts a regulator's authority or any nonwaivable statutory right, or excuses required safeguards, reporting, mitigation, access, preservation, accounting, return or destruction of information. A financial limit, where applicable, does not authorize a party to stop performing those duties. These Terms do not reduce an express cost-reimbursement or other financial obligation in an applicable BAA unless a valid written amendment to that BAA expressly does so."))},{id:"terms-section-10",title:"10. Indemnification",content:e(Y.Fragment,null,e("p",null,"To the extent permitted by applicable law, you agree to indemnify and hold harmless the Company against third-party claims and resulting damages, liabilities and reasonable expenses to the extent caused by your breach of these Terms, unlawful data practices or marketing instructions, or violation of applicable law or third-party rights. This obligation does not require you to reimburse losses to the extent caused by our own breach, negligence or willful misconduct."),e("p",null,"We will promptly notify you of a claim for which we seek indemnification and provide reasonable cooperation. A delay in notice reduces your obligation only to the extent the delay materially prejudices your ability to address the claim. Neither party may settle a claim in a way that admits fault, imposes a payment or nonmonetary obligation on, or binds the other party without that party's prior written consent. This section does not create a separate duty to assume the other party's defense."),e("p",null,"This section provides client-to-Company indemnification; it does not create a Company obligation to indemnify you against third-party claims. It does not eliminate liability or obligations imposed by applicable law or an applicable BAA or other written agreement. Its application to BAA claims is subject to Section 9 and the BAA's own requirements."))},{id:"terms-section-11",title:"11. Suspension & Termination",content:e(Y.Fragment,null,e("p",null,"We may suspend or terminate your access to the Services at any time if:"),e("ul",null,e("li",null,"You violate these Terms"),e("li",null,"Your use poses legal or compliance risk"),e("li",null,"Suspension is required by law or platform providers")),e("p",null,"Termination does not relieve you of payment obligations incurred prior to termination."),e("p",null,"Suspension and termination remain subject to an applicable BAA or other written agreement, including its notice, cure and lawful-access requirements. They do not end either party's surviving information-protection, access, preservation, return or lawful-disposition obligations. Payment disputes will not be used to withhold access or return that we are required to provide. A platform restriction does not, by itself, excuse our own duties under the applicable agreement or law."))},{id:"terms-section-12",title:"12. Modifications to Terms",content:e(Y.Fragment,null,e
778("p",null,"We may update these Terms prospectively and will identify the revised version and its effective date. For material changes affecting existing customers, we will provide notice before the proposed effective date and obtain any acceptance required by applicable law or the parties' existing agreement. Posting an update alone does not retroactively alter accrued rights or existing disputes."),e("p",null,"A website update, continued use, purchase or generic onboarding acceptance does not amend an existing BAA or another agreement requiring a specific written amendment. Changes to those agreements must follow their own amendment and signature requirements. A separately executed individualized BAA remains controlling for its stated scope unless the parties validly amend or replace it as that agreement requires. We will retain prior Terms versions and the applicable business-service acceptance records."))},{id:"terms-section-13",title:"13. Governing Law",content:e(Y.Fragment,null,e("p",null,"These Terms are governed by the laws of the State of Nevada, without regard to conflict-of-law principles, except as provided below."),e("p",null,"A governing-law, venue or dispute-resolution provision expressly applicable under a BAA or other written agreement controls for disputes within its stated scope. These Terms do not replace or amend that provision. Mandatory laws applicable to the actual processing or claim are not displaced by this general choice of law."))},{id:"terms-section-14",title:"14. Contact Information",content:e(Y.Fragment,null,e("p",null,"If you have questions about these Terms, please contact:"),e("p",null,"Med Spa Marketing AI ð§ [email protected]"))}]}};function cy({path:i}){let s=ly[i];return e("article",{className:"legal-page",id:"legal-content","aria-labelledby":"legal-title"},e("header",{className:"legal-page__header"},e("h1",{id:"legal-title"},s.title),e("p",{className:"legal-page__updated"},s.updatedLabel,e("time",{dateTime:s.dateTime},s.updated))),e("div",{className:"legal-page__intro"},s.intro),s.sections.map(l=>e("section",{className:"legal-page__section",id:l.id,key:l.id,"aria-labelledby":l.id+"-title"},e("h2",{id:l.id+"-title"},l.title),l.content)))}function bs(i,s,l){if(typeof i=="string")return i;let d=l&&i.tag==="h3"?"h2":i.tag;return d==="br"?e("br",{key:s}):(0,_g.createElement)(d,{key:s},i.children.map((p,h)=>bs(p,h,l)))}function dy({path:i}){var d,p;let s=Cc(i);const l=s&&["/guides/med-spa-crm-vs-emr","/guides/med-spa-software-migration-checklist","/guides/med-spa-marketing-bookings-and-collected-revenue"].includes(s.path)&&typeof s.body[0]!="str
778ing"&&((d=s.body[0])==null?void 0:d.tag)==="p"&&typeof s.body[1]!="string"&&((p=s.body[1])==null?void 0:p.tag)==="p";return s?e("article",{className:l?"legacy-article legacy-article--buyer-guide":"legacy-article","aria-labelledby":"legacy-article-title"},e("header",{className:"legacy-article__header"},e("p",{className:"legacy-article__category"},s.category),e("h1",{id:"legacy-article-title"},s.title),e("p",{className:"legacy-article__byline"},e("span",null,s.dateLabel),e("span",null,s.byLabel," ",s.author))),l&&e("div",{className:"legacy-article__lead"},bs(s.body[1],1,s.promoteSectionHeadings)),e("figure",{className:"legacy-article__hero"},e("img",{src:s.hero.src,alt:s.hero.alt,width:s.hero.width,height:s.hero.height,loading:"eager",decoding:"async"}),l&&e("figcaption",{className:"legacy-article__caption"},bs(s.body[0],0,s.promoteSectionHeadings))),e("div",{id:"legacy-article-content",className:"legacy-article__body"},(l?s.body.slice(2):s.body).map((h,f)=>bs(h,f,s.promoteSectionHeadings))),e("nav",{className:"legacy-article__related","aria-labelledby":"legacy-related-title"},e("h2",{id:"legacy-related-title"},s.relatedTitle),e("ul",null,s.related.map(h=>e("li",{key:h.href},e("a",{href:h.href},h.title)))))):null}var la=[{id:"jessica",takeaway:"A strategy built around the brand and ideal client.",transcript:"My name is Jessica and I am the owner of Skin Bar New York and I have to say that I'm completely blown away by Rob Upland's ability to take my business to a marketing level that I've only dreamed of. I've been disappointed by so many agencies in the past promising, making these grand promises, nothing ever pulling through, and always looking to discount the services and lower the value of what it is that my business offers in order to generate leads. And what's great is that Rob does none of that. He really does take the time to put together a strategic plan for you and to directly align you with your ideal client. And he also takes the time to really understand your brand and even take your branding up to another level that again, I only dreamed of. So if you really are looking for somebody who's a total expert, complete professional in the branding and marketing industry, Rob is definitely your guy. I couldn't recommend him any more.",name:"Jessica Bianculli",clinic:"Skin Bar New York",src:"/assets/testimonials-v6/jessica-testimonial-web.mp4",mobileSrc:"/assets/testimonials-mobile-v16/jessica-testimonial-mobile720.mp4",poster:"/assets/testimonials-v6/jessica-poster.jpg",width:1080,height:1080,duration:"0:59",bakedCaptions:!0,captionsVtt:`WEBVTT 779 7801 78100:00:00.000 --> 00:00:01.640 line:88% position:50% align:center size:90% 782My name is Jessica and I am 783 7842 78500:00:01.640 --> 00:00:03.040 line:88% position:50% align:center size:90% 786the owner of Skin Bar New York 787 7883 78900:00:03.040 --> 00:00:04.460 line:88% position:50% align:center size:90% 790and I have to say that I'm 791 7924 79300:00:04.460 --> 00:00:05.120 line:88% position:50% align:center size:90% 794completely 795 7965 79700:00:05.660 --> 00:00:08.740 line:88% position:50% align:center size:90% 798blown away by Rob 799Upland's ability to 800 8016 80200:00:08.740 --> 00:00:10.800 line:88% position:50% align:center size:90% 803take my business to 804a marketing level 805 8067 80700:00:10.800 --> 00:00:12.260 line:88% position:50% align:center size:90% 808that I've only dreamed of. 809 8108 81100:00:12.420 --> 00:00:14.440 line:88% position:50% align:center size:90% 812I've been disappointed 813by so many agencies 814 8159 81600:00:14.440 --> 00:00:17.400 line:88% position:50% align:center size:90% 817in the past promising, 818making these grand 819 82010 82100:00:17.400 --> 00:00:20.520 line:88% position:50% align:center size:90% 822promises, nothing ever 823pulling through, and always 824 82511 82600:00:20.520 --> 00:00:23.100 line:88% position:50% align:center size:90% 827looking to discount 828the services and lower 829 83012 83100:00:23.100 --> 00:00:24.640 line:88% position:50% align:center size:90% 832the value of what it is that 833 83413 83500:00:24.640 --> 00:00:27.140 line:88% position:50% align:center size:90% 836my business offers 837in order to generate 838 83914 84000:00:27.140 --> 00:00:29.120 line:88% position:50% align:center size:90% 841leads. And what's 842great is that Rob 843 84415 84500:00:29.120 --> 00:00:30.520 line:88% position:50% align:center size:90% 846does none of that. 847 84816 84900:00:30.920 --> 00:00:32.740 line:88% position:50% align:center size:90% 850He really does take the time to 851 85217 85300:00:32.740 --> 00:00:35.280 line:88% position:50% align:center size:90% 854put together a 855strategic plan for you 856 85718 85800:00:35.280 --> 00:00:37.780 line:88% position:50% align:center size:90% 859and to directly 860align you with your 861 86219 86300:00:37.780 --> 00:00:39.220 line:88% position:50% align:center size:90% 864ideal client. 865 86620 86700:00:39.940 --> 00:00:41.320 line:88% position:50% align:center size:90% 868And he also takes the time to 869 87021 87100:00:41.320 --> 00:00:43.800 line:88% position:50% align:center size:90% 872really understand your 873brand and even take 874 87522 87600:00:43.800 --> 00:00:46.180 line:88% position:50% align:center size:90% 877your branding up to 878another level that 879 88023 88100:00:46.180 --> 00:00:47.820 line:88% position:50% align:center size:90% 882again, I only dreamed of. 883 88424 88500:00:47.920 --> 00:00:49.340 line:88% position:50% align:center size:90% 886So if you really are looking for 887 88825 88900:00:49.340 --> 00:00:52.840 line:88% position:50% align:center size:90% 890somebody who's a total 891expert, complete professional 892 89326 89400:00:52.840 --> 00:00:55.420 line:88% position:50% align:center size:90% 895in the branding and 896marketing industry, Rob 897 89827 89900:00:55.420 --> 00:00:56.640 line:88% position:50% align:center size:90% 900is definitely your guy. 901 90228 90300:00:56.740 --> 00:00:58.560 line:88% position:50% align:center size:90% 904I couldn't recommend him any more. 905`},{id:"mary",takeaway:"Meta ads, SMS and email support for an established practice.",transcriptNote:"Revenue examples are Dr. Maryâs account of her experience, not a promise of similar results.",caseStudy:{anchor:"mary-case-study",title:"Campaign and booking support for an established practice.",startingPoint:"Medical Esthetics & Wellness is an established practice in Oyster Bay, New York. Its marketing spans paid advertising, direct outreach and online booking.",work:"Meta campaigns, SMS and email marketing, treatment-specific campaign pages, website and booking improvements, and campaign reporting.",quote:"I just wanted to say that their work has exceeded my expectations.",outcome:"Dr. Mary describes the marketing support and why she recommends working with Rob and the team."},transcript:"This is Dr. Mary from Medical Esthetics and Wellness in Oyster Bay, New York. I've been working with Rob Upland and MedSpa Marketing AI for this past year. And I just wanted to say that their work has exceeded my expectations. He has been working with us on all sorts of marketing campaigns, including meta ads, SMS, email marketing campaigns. And we have increased our revenue tremendously with his help, including our biggest month ever, including one day that exceeded over $15,000 in revenue. So I would recommend that if you are already in a MedSpa practice or thinking about a MedSpa practice, that Rob and the MedSpa Marketing AI team are the people to work with for sure. Five stars, 100%.",name:"Dr. Mary Infantino",clinic:"Medical Esthetics & Wellness",src:"/assets/testimonials-v6/mary-testimonial-web.mp4",mobileSrc:"/assets/testimonials-mobile-v16/mary-testimonial-mobile720.mp4",poster:"/assets/testimonials-v6/mary-poster.jpg",width:1080,height:1080,duration:"0:56",bakedCaptions:!0,captionsVtt:`WEBVTT 906 9071 90800:00:00.000 --> 00:00:02.540 line:88% position:50% align:center size:90% 909This is Dr. Mary from 910Medical Esthetics 911 9122 91300:00:02.540 --> 00:00:05.400 line:88% position:50% align:center size:90% 914and Wellness in 915Oyster Bay, New York. 916 9173 91800:00:06.040 --> 00:00:09.040 line:88% position:50% align:center size:90% 919I've been working 920with Rob Upland and 921 9224 92300:00:09.040 --> 00:00:12.000 line:88% position:50% align:center size:90% 924MedSpa Marketing AI 925for this past year. 926 9275 92800:00:12.540 --> 00:00:14.440 line:88% position:50% align:center size:90% 929And I just wanted to say that 930 9316 93200:00:14.440 --> 00:00:18.160 line:88% position:50% align:center size:90% 933their work has exceeded 934my expectations. 935 9367 93700:00:19.120 --> 00:00:21.740 line:88% position:50% align:center size:90% 938He has been working with us on 939 9408 94100:00:21.740 --> 00:00:24.720 line:88% position:50% align:center size:90% 942all sorts of marketing 943campaigns, including meta 944 9459 94600:00:24.720 --> 00:00:28.460 line:88% position:50% align:center size:90% 947ads, SMS, email 948marketing campaigns. 949 95010 95100:00:28.720 --> 00:00:31.660 line:88% position:50% align:center size:90% 952And we have increased 953our revenue tremendously 954 95511 95600:00:32.380 --> 00:00:35.500 line:88% position:50% align:center size:90% 957with his help, including 958our biggest month 959 96012 96100:00:35.500 --> 00:00:36.120 line:88% position:50% align:center size:90% 962ever, 963 96413 96500:00:36.940 --> 00:00:39.320 line:88% position:50% align:center size:90% 966including one day 967that exceeded over 968 96914 97000:00:39.320 --> 00:00:42.580 line:88% position:50% align:center size:90%
971$15,000 in revenue. So 972I would recommend 973 97415 97500:00:42.580 --> 00:00:44.380 line:88% position:50% align:center size:90% 976that if you are already in a 977 97816 97900:00:44.380 --> 00:00:47.380 line:88% position:50% align:center size:90% 980MedSpa practice or 981thinking about a MedSpa 982 98317 98400:00:47.380 --> 00:00:51.060 line:88% position:50% align:center size:90% 985practice, that Rob and 986the MedSpa Marketing 987 98818 98900:00:51.060 --> 00:00:52.800 line:88% position:50% align:center size:90% 990AI team are the people to work 991 99219 99300:00:52.800 --> 00:00:56.260 line:88% position:50% align:center size:90% 994with for sure. Five stars, 100%. 995`},{id:"gisell",takeaway:"Hands-on guidance and responsive support.",transcript:"Ever since working with Rob, every single aspect of our business has improved immensely. I mean, we are so happy, but our clients are also super happy. And there is absolutely not a single day that goes by that Rob isn't ready and willing and able to assist you with anything that you need, anything that can better your business, he's there to do. Anything that you need, that you just don't have an awareness about, that you don't have an idea on what to do, he will guide you in every step of the way. And his patience, his gratitude, his intelligence behind everything that he does just really displays in every single aspect of the way that he works with you. And we couldn't be any happier. So there is absolutely the best, the best, the best decision that we could have ever done with working with Rob.",name:"Gisell Perez",clinic:"Individual esthetician",src:"/assets/videos-v7/gisell-testimonial-square.mp4",mobileSrc:"/assets/testimonials-mobile-v16/gisell-testimonial-mobile720.mp4",poster:"/assets/videos-v7/gisell-square-poster.jpg",width:1080,height:1080,duration:"0:48",bakedCaptions:!0,captionsVtt:`WEBVTT 996 9971 99800:00:00.690 --> 00:00:02.890 line:88% position:50% align:center size:90% 999EVER SINCE WORKING 1000WITH ROB, EVERY SINGLE 1001 10022 100300:00:02.890 --> 00:00:05.970 line:88% position:50% align:center size:90% 1004ASPECT OF OUR BUSINESS 1005HAS IMPROVED IMMENSELY. 1006 10073 100800:00:06.290 --> 00:00:07.950 line:88% position:50% align:center size:90% 1009I MEAN, WE ARE SO HAPPY, BUT 1010 10114 101200:00:07.950 --> 00:00:09.590 line:88% position:50% align:center size:90% 1013OUR CLIENTS ARE 1014ALSO SUPER HAPPY. 1015 10165 101700:00:10.010 --> 00:00:12.270 line:88% position:50% align:center size:90% 1018AND THERE IS ABSOLUTELY 1019NOT A SINGLE 1020 10216 102200:00:12.270 --> 00:00:13.690 line:88% position:50% align:center size:90% 1023DAY THAT GOES 1024BY THAT ROB ISN'T 1025 10267 102700:00:13.690 --> 00:00:15.910 line:88% position:50% align:center size:90% 1028READY AND WILLING 1029AND ABLE TO ASSIST 1030 10318 103200:00:15.910 --> 00:00:17.590 line:88% position:50% align:center size:90% 1033YOU WITH ANYTHING THAT 1034YOU NEED, ANYTHING 1035 10369 103700:00:17.590 --> 00:00:19.710 line:88% position:50% align:center size:90% 1038THAT CAN BETTER YOUR 1039BUSINESS, HE'S THERE 1040 104110 104200:00:19.710 --> 00:00:22.510 line:88% position:50% align:center size:90% 1043TO DO. ANYTHING 1044THAT YOU NEED, THAT 1045 104611 104700:00:22.510 --> 00:00:24.430 line:88% position:50% align:center size:90% 1048YOU JUST DON'T HAVE 1049AN AWARENESS ABOUT, 1050 105112 105200:00:24.430 --> 00:00:25.330 line:88% position:50% align:center size:90% 1053THAT YOU DON'T 1054HAVE AN IDEA ON 1055 105613 105700:00:25.330 --> 00:00:26.670 line:88% position:50% align:center size:90% 1058WHAT TO DO, HE 1059WILL GUIDE YOU 1060 106114 106200:00:26.670 --> 00:00:28.030 line:88% position:50% align:center size:90% 1063IN EVERY STEP OF THE WAY. 1064 106515 106600:00:28.030 --> 00:00:30.810 line:88% position:50% align:center size:90% 1067AND HIS PATIENCE, 1068HIS GRATITUDE, 1069 107016 107100:00:31.370 --> 00:00:33.330 line:88% position:50% align:center size:90% 1072HIS INTELLIGENCE BEHIND 1073EVERYTHING THAT HE DOES 1074 107517 107600:00:33.330 --> 00:00:35.910 line:88% position:50% align:center size:90% 1077JUST REALLY DISPLAYS 1078IN EVERY SINGLE ASPECT 1079 108018 108100:00:35.910 --> 00:00:37.650 line:88% position:50% align:center size:90% 1082OF THE WAY THAT 1083HE WORKS WITH 1084 108519 108600:00:37.650 --> 00:00:40.030 line:88% position:50% align:center size:90% 1087YOU. AND WE COULDN'T 1088BE ANY HAPPIER. 1089 109020 109100:00:40.190 --> 00:00:43.530 line:88% position:50% align:center size:90% 1092SO THERE IS ABSOLUTELY 1093THE BEST, THE 1094 109521 109600:00:43.530 --> 00:00:45.370 line:88% position:50% align:center size:90% 1097BEST, THE BEST DECISION 1098THAT WE COULD 1099 110022 110100:00:45.370 --> 00:00:47.270 line:88% position:50% align:center size:90% 1102HAVE EVER DONE WITH 1103WORKING WITH ROB. 1104`},{id:"noemi",takeaway:"Reactivating existing patients and organizing follow-up.",transcriptNote:"The tracked revenue mentioned in this testimonial included collected and booked amounts. It is not a collected-cash total.",caseStudy:{anchor:"noemi-case-study",title:"Reactivating existing patients and organizing follow-up.",startingPoint:"Natural Rejuvenation MedSpa is an established Bellevue practice. The work focused on reconnecting with its existing patient database and organizing campaign follow-up.",work:"Campaign offers, dedicated landing pages, booking paths, SMS and email follow-up, Meta campaigns, website improvements and campaign reporting. Boulevard remained the clinicâs booking system.",quote:"They helped us reactivate existing patients, improve our follow-up and create a much more organized marketing system.",outcome:"Noemi describes a more organized marketing system and support for reactivating existing patients."},transcript:"Hi this is Noemi Erickson, founder of Natural Rejuvenation Med Spa. We've been working with Med Spa Marketing AI and in our first campaign they helped us generate nearly 30,000 in tracked revenue during our first month with them. They helped us reactivate existing patients, improve our follow-up and create a much more organized marketing system. I would recommend Med Spa Marketing AI to other Med Spa owners who want help generating revenue from their existing patient database and improving their marketing systems.",name:"Noemi Erickson",clinic:"Natural Rejuvenation MedSpa",src:"/assets/videos-v7/noemi-testimonial-square.mp4",mobileSrc:"/assets/testimonials-mobile-v16/noemi-testimonial-mobile720.mp4",poster:"/assets/videos-v7/noemi-square-poster.jpg",width:1080,height:1080,duration:"0:35",bakedCaptions:!0,captionsVtt:`WEBVTT 1105 11061 110700:00:00.370 --> 00:00:03.310 line:88% position:50% align:center size:90% 1108HI THIS IS NOEMI 1109ERICKSON, FOUNDER OF 1110 11112 111200:00:03.310 --> 00:00:05.170 line:88% position:50% align:center size:90% 1113NATURAL REJUVENATION 1114MED SPA. 1115 11163 111700:00:05.690 --> 00:00:07.590 line:88% position:50% align:center size:90% 1118WE'VE BEEN WORKING 1119WITH MED SPA MARKETING 1120 11214 112200:00:07.590 --> 00:00:10.250 line:88% position:50% align:center size:90% 1123AI AND IN OUR FIRST 1124CAMPAIGN THEY 1125 11265 112700:00:10.250 --> 00:00:12.470 line:88% position:50% align:center size:90% 1128HELPED US GENERATE 1129NEARLY 30,000 IN 1130 11316 113200:00:12.470 --> 00:00:14.630 line:88% position:50% align:center size:90% 1133TRACKED REVENUE DURING 1134OUR FIRST MONTH WITH 1135 11367 113700:00:14.630 --> 00:00:17.610 line:88% position:50% align:center size:90% 1138THEM. THEY HELPED US 1139REACTIVATE EXISTING PATIENTS, 1140 11418 114200:00:17.890 --> 00:00:19.870 line:88% position:50% align:center size:90% 1143IMPROVE OUR FOLLOW-UP 1144AND CREATE A 1145 11469 114700:00:19.870 --> 00:00:21.970 line:88% position:50% align:center size:90% 1148MUCH MORE ORGANIZED 1149MARKETING SYSTEM. 1150 115110 115200:00:22.350 --> 00:00:24.490 line:88% position:50% align:center size:90% 1153I WOULD RECOMMEND 1154MED SPA MARKETING AI 1155 115611 115700:00:24.490 --> 00:00:26.410 line:88% position:50% align:center size:90% 1158TO OTHER MED SPA 1159OWNERS WHO WANT 1160 116112 116200:00:26.410 --> 00:00:29.550 line:88% position:50% align:center size:90% 1163HELP GENERATING REVENUE 1164FROM THEIR EXISTING PATIENT 1165 116613 116700:00:29.550 --> 00:00:32.430 line:88% position:50% align:center size:90% 1168DATABASE AND IMPROVING 1169THEIR MARKETING SYSTEMS. 1170`}];function py(i){return"data:text/vtt;charset=utf-8,"+encodeURIComponent(i.captionsVtt)}function uy({onSelect:i}){return e("section",{className:"section client-case-studies","aria-labelledby":"
1170client-case-studies-heading"},e("div",{className:"client-case-studies__intro"},e("p",{className:"eyebrow"},"THE WORK BEHIND THE STORIES"),e("h2",{id:"client-case-studies-heading"},"Two practices.",e("br",null),"Their own experiences."),e("p",null,"Different practices need different support. Here is the work behind two of our clientsâ stories.")),e("div",{className:"client-case-studies__grid"},["noemi","mary"].map(s=>{const l=la.findIndex(h=>h.id===s),d=la[l],p=d.caseStudy;return p?e("article",{key:d.id,id:p.anchor,className:"client-case-studies__case"},e("p",{className:"eyebrow"},d.clinic),e("h3",null,p.title),e("dl",null,e("div",null,e("dt",null,"Starting point"),e("dd",null,p.startingPoint)),e("div",null,e("dt",null,"What we worked on"),e("dd",null,p.work)),e("div",null,e("dt",null,"In their words"),e("dd",null,e("blockquote",null,e("p",null,"â",p.quote,"â"),e("cite",null,d.name)))),e("div",null,e("dt",null,"The clientâs experience"),e("dd",null,p.outcome))),e("a",{className:"text-link",href:"#stories",onClick:()=>i(l)},"Watch ",d.name,"âs story ",e(Ae,{size:17}))):null})),e("p",{className:"client-case-studies__note"},"Each story reflects that clientâs experience. Your scope and results depend on your practice."))}function Hm({full:i=!1}){const[s,l]=qt.useState(0),[d,p]=qt.useState(!1),[h,f]=qt.useState(""),[g,b]=qt.useState(""),u=qt.useRef(null),N=qt.useRef(0),v=qt.useRef(0),w=qt.useRef(!1),C=qt.useRef({urls:[],index:0}),A=qt.useId(),z=qt.useId(),S=la[s];function R(L){var ne;return(((ne=window.matchMedia)==null?void 0:ne.call(window,"(max-width:760px)").matches)?[L.mobileSrc,L.src]:[L.src,L.mobileSrc]).map(G=>new URL(Sc(G),document.baseURI).href)}const j=qt.useCallback(L=>{u.current=L,L&&!L.getAttribute("src")&&(C.current={urls:R(la[N.current]),index:0},L.src=C.current.urls[0])},[]);qt.useEffect(()=>{var ye;const L=u.current,B=()=>{v.current++,w.current=!1,L==null||L.pause()},ne=()=>{document.hidden&&B()},G=(ye=window.matchMedia)==null?void 0:ye.call(window,"(prefers-reduced-motion: reduce)"),ue=()=>{G!=null&&G.matches&&B()};return document.addEventListener("visibilitychange",ne),G==null||G.addEventListener("change",ue),()=>{B(),document.removeEventListener("visibilitychange",ne),G==null||G.removeEventListener("change",ue)}},[]);function $(L){var G;const B=++v.current,ne=()=>{v.current===B&&u.current===L&&!L.error&&b("Tap the videoâs play button to start this story.")};try{(G=L.play())==null||G.then(()=>{v.current===B&&b("")}).catch(ne)}catch{ne()}}function V(L){const B=(L+la.length)%la.length,ne=u.current,G=B!==N.current;N.current=B,v.current++,l(B),p(!1),b(""),f(`${B+1} of ${la.length}: ${la[B].name}.`),ne&&((G||ne.error||!ne.getAttribute("src"))&&(ne.pause(),C.current={urls:R(la[B]),index:0},ne.src=C.current.urls[0],ne.load()),w.current=!0,$(ne))}function D(L){const B=L.currentTarget;if(L.target!==B||!B.error)return;const ne=C.current;if(ne.index+1<ne.urls.length){ne.index++,B.src=ne.urls[ne.index],B.load(),w.current&&!document.hidden&&$(B);return}w.current=!1,v.current++,p(!0),b("")}return e(qt.Fragment,null,e("section",{className:`section client-stories${i?" client-stories--full":""}`,id:i?"stories":"customer-stories","aria-labelledby":A,"aria-roledescription":"carousel"},e("div",{className:"client-stories__intro"},e("p",{className:"eyebrow"},"IN OUR CLIENTSâ WORDS"),e("h2",{id:A},"The people",e("br",null),"behind the practices."),!i&&e("p",null,"Hear directly from the people we work with, in their own words."),e("div",{className:"client-stories__choices",role:"group","aria-label":"Choose a client story"},la.map((L,B)=>e("button",{className:"client-stories__choice",type:"button",key:L.id,"aria-pressed":s===B,"aria-controls":z,onClick:()=>V(B)},e("span",{className:"client-stories__number","aria-hidden":"true"},"0",B+1),e("span",null,e("strong",null,L.name),e("span",null,L.clinic),e("small",{className:"client-stories__takeaway"},L.takeaway)),e(Ja,{size:17})))),!i&&e(H,{className:"text-link",to:"/customer-stories"},"More about our client work ",e(Ae,{size:17}))),e("div",{className:"client-stories__presentation"},e("figure",{id:z,className:"client-stories__story",role:"group","aria-roledescription":"slide","aria-label":`${s+1} of ${la.length}: ${S.name}`},e("div",{className:"client-stories__media",style:{aspectRatio:`${S.width} / ${S.height}`}}
1170,e("video",{ref:j,controls:!0,playsInline:!0,preload:"none",poster:S.poster,width:S.width,height:S.height,style:d?{display:"none"}:void 0,"aria-label":`${S.name}, ${S.clinic}: client testimonial`,onError:D,onPlay:()=>{w.current=!0,b("")},onPause:()=>{var L;(L=u.current)!=null&&L.paused&&!u.current.error&&(w.current=!1)}},e("track",{key:S.id,kind:"captions",srcLang:"en",label:"English",default:!S.bakedCaptions,src:py(S),onLoad:L=>{S.bakedCaptions&&(L.currentTarget.track.mode="disabled")}}),e("p",null,"Your browser does not support this video. ",e("a",{href:S.src},"Open ",S.name,"âs video"),".")),d&&e("div",{className:"client-stories__error",role:"status"},e("p",null,"This video could not load."),e("button",{className:"text-link",type:"button",onClick:()=>V(s)},"Retry video"),e("a",{className:"text-link",href:S.src,target:"_blank",rel:"noreferrer"},"Open ",S.name,"âs video ",e(Ae,{size:16})))),e("figcaption",{className:"client-stories__nameplate"},e("div",null,e("h3",null,S.name),e("p",null,S.clinic)),e("span",null,"Client story ",e("span",null,e("span",{className:"sr-only"},"Video duration "),S.duration)))),e("details",{key:S.id,id:`story-${S.id}`,className:"client-stories__transcript"},e("summary",null,"Read ",S.name,"âs transcript"),e("p",null,S.transcript),S.transcriptNote&&e("p",{className:"client-stories__transcript-note"},S.transcriptNote)),g&&e("p",{className:"client-stories__play-hint",role:"status"},g),e("div",{className:"client-stories__controls",role:"group","aria-label":"Client story controls"},e("button",{type:"button",onClick:()=>V(s-1),"aria-label":"Previous client story"},e(J,{className:"client-stories__previous",size:20})),e("span",null,String(s+1).padStart(2,"0")," ",e("span",{"aria-hidden":"true"},"/"),e("span",{className:"sr-only"},"of")," ",String(la.length).padStart(2,"0")),e("button",{type:"button",onClick:()=>V(s+1),"aria-label":"Next client story"},e(J,{size:20})))),e("p",{className:"sr-only",role:"status","aria-live":"polite","aria-atomic":"true"},h)),i&&e(uy,{onSelect:V}))}var my={meta:Cm,"google-calendar":He,outlook:He,"google-business":We,stripe:It,square:It,qualiphy:Qe};function cm({connection:i}){let s=my[i.id]??xt;return e("article",{className:`integrations-page__card integrations-page__card--${i.id}`},e("div",{className:"integrations-page__card-heading"},e("span",{className:"integrations-page__icon"},e(s,{size:24,strokeWidth:1.6})),e("h3",null,i.name)),e("p",null,i.purpose),e("p",{className:"integrations-page__setup-note"},i.setup),e(H,{to:i.featureHref},i.label,e(J,{size:16})))}function hy(){var h,f;let i=La["/integrations"],s=i.sections[0],l=i.sections[1],d=i.sections[2],p=i.sections[3];return e("div",{className:"integrations-page"},e("header",{className:"integrations-page__hero"},e("div",null,e("p",{className:"eyebrow"},i.eyebrow),e("h1",null,i.title),e("p",{className:"integrations-page__intro"},i.intro),e("div",{className:"integrations-page__actions"},e(H,{className:"button",to:i.primaryAction.href},i.primaryAction.label,e(J,{size:17})),e(H,{className:"text-link",to:i.secondaryAction.href},i.secondaryAction.label,e(J,{size:17})))),e("div",{className:"integrations-page__map",role:"group","aria-label":"The platform connects clinic communication, calendars, payments and exam requests"},e("p",{className:"integrations-page__map-label"},"YOUR CLINICâS WORKFLOW"),e("div",{className:"integrations-page__core"},e("strong",null,"MSMAI"),e("span",null,"Med Spa Marketing AI + EMRMedSpa")),e("div",{className:"integrations-page__map-links"},e("span",null,e(We,{size:21}),"Messages"),e("span",null,e(He,{size:21}),"Calendars"),e("span",null,e(It,{size:21}),"Payments"),e("span",null,e(Qe,{size:21}),"Exam requests")),e("p",{className:"integrations-page__map-note"},"Connections configured for your practice."))),e("section",{id:"built-in",className:"integrations-page__section integrations-page__built-in","aria-labelledby":"integrations-built-in-title"},e("div",{className:"integrations-page__section-heading"},e("p",{className:"eyebrow"},s.eyebrow),e("h2",{id:"integrations-built-in-title"},s.title),e("p",null,s.body)),e("div",{className:"integrations-page__systems"},(h=s.cards)==null?void 0:h.map((g,b)=>e(H,{to:g.href,key:g.href,className:`integrations-page__system integrations-page__system--${b}`},e("span",{className:"integrations-page__system-number"},"0",b+1),e("div",null,e("h3",null,g.title),e("p",null,g.body),e("span",null,g.linkLabel,e(J,{size:17}))))))),e("section",{id:"connected-accounts",className:"integrations-page__section","aria-labelledby":"integrations-accounts-title"},e("div",{className:"integrations-page__section-heading"},e("p",{className:"eyebrow"},l.eyebrow),e("h2",{id:"integrations-accounts-title"},l.title),e("p",null,l.body)),e("div",{className:"integrations-page__grid"},xu.filter(g=>g.category==="account").map(g=>e(cm,{key:g.id,connection:g}
1170)))),e("section",{id:"clinical-connections",className:"integrations-page__section integrations-page__clinical","aria-labelledby":"integrations-clinical-title"},e("div",{className:"integrations-page__section-heading"},e("p",{className:"eyebrow"},d.eyebrow),e("h2",{id:"integrations-clinical-title"},d.title),e("p",null,d.body)),xu.filter(g=>g.category==="clinical").map(g=>e(cm,{key:g.id,connection:g}))),e("section",{id:"connection-setup",className:"integrations-page__section","aria-labelledby":"integrations-setup-title"},e("div",{className:"integrations-page__section-heading"},e("p",{className:"eyebrow"},p.eyebrow),e("h2",{id:"integrations-setup-title"},p.title),e("p",null,p.body)),e("ol",{className:"integrations-page__steps"},(f=p.cards)==null?void 0:f.map((g,b)=>e("li",{key:g.title},e("span",{"aria-hidden":"true"},"0",b+1),e("h3",null,g.title),e("p",null,g.body))))),e("section",{className:"integrations-page__closing"},e("div",null,e("h2",null,i.closing.title),e("p",null,i.closing.body)),e(H,{className:"button",to:i.closing.action.href},i.closing.action.label,e(J,{size:17}))))}function fy(i){let s=(0,qi.useRef)(null),[l,d]=(0,qi.useState)(!1);return(0,qi.useEffect)(()=>{let p=s.current;if(!p||typeof IntersectionObserver>"u"||typeof matchMedia!="function")return;let h=matchMedia("(prefers-reduced-motion: reduce)");if(h.matches||document.hidden)return;let f=0,g=!1,b=!1,u=()=>{b=!0,window.clearTimeout(f),N.disconnect(),g||d(!1)},N=new IntersectionObserver(C=>{g||b||!C.some(A=>A.isIntersecting)||(b=!0,N.disconnect(),!(h.matches||document.hidden)&&(d(!0),f=window.setTimeout(u,i)))},{threshold:.25}),v=()=>{h.matches&&u()},w=()=>{document.hidden&&u()};return N.observe(p),h.addEventListener("change",v),document.addEventListener("visibilitychange",w),()=>{g=!0,window.clearTimeout(f),N.disconnect(),h.removeEventListener("change",v),document.removeEventListener("visibilitychange",w)}},[i]),{ref:s,playing:l}}function gy(i){let s=(0,qi.useRef)(null),[l,d]=(0,qi.useState)(!1);return(0,qi.useEffect)(()=>{let p=s.current,h=(i==null?void 0:i.current)??p;if(!p||!h)return;let f=Array.from(h.querySelectorAll("[data-system-card]")),g=new Map(f.map(G=>[G,{visible:!1,consumed:!1,timer:0}])),b=new Set,u=null,N=!1,v=!1,w=!1,C=!1,A=!1,z=(G,ue)=>{G.dataset.systemActivation=ue},S=(G,ue)=>{let ye=window.setTimeout(()=>{b.delete(ye),!N&&!v&&G()},ue);return b.add(ye),ye},R=G=>{let ue=g.get(G);window.clearTimeout(ue.timer),b.delete(ue.timer),ue.consumed=!0,z(G,"complete"),u==null||u.unobserve(G)},j=()=>{N||v||(v=!0,b.forEach(G=>window.clearTimeout(G)),b.clear(),u==null||u.disconnect(),f.forEach(G=>{g.get(G).consumed=!0,z(G,"complete")}),d(!1))};f.forEach(G=>z(G,"waiting"));let $=typeof window.matchMedia=="function"?window.matchMedia("(prefers-reduced-motion: reduce)"):null;if(!$||typeof IntersectionObserver>"u"||$.matches||document.hidden||h.contains(document.activeElement))return j(),()=>{N=!0,f.forEach(G=>delete G.dataset.systemActivation)};let V=G=>{let ue=g.get(G);!A||!ue.visible||ue.consumed||v||N||(ue.consumed=!0,z(G,"playing"),ue.timer=S(()=>R(G),1600))},D=()=>{A=!0,f.forEach(V)},L=()=>{w||v||N||(w=!0,d(!0),S(D,1400),S(()=>{d(!1),u==null||u.unobserve(p)},3200))};u=new IntersectionObserver(G=>{if(!(v||N)){if($.matches||document.hidden||h.contains(document.activeElement)){j();return}G.forEach(ue=>{let ye=ue.isIntersecting&&ue.intersectionRatio>=.2;ue.target===p?C=ye:g.has(ue.target)&&(g.get(ue.target).visible=ye)}),!w&&C&&L(),w&&!C&&(d(!1),D(),u==null||u.unobserve(p)),f.forEach(ue=>{let ye=g.get(ue);ye.consumed&&!ye.visible&&ue.dataset.systemActivation==="playing"?R(ue):V(ue)})}},{threshold:.2});let B=()=>{$.matches&&j()},ne=()=>{document.hidden&&j()};return u.observe(p),f.forEach(G=>u.observe(G)),h.addEventListener("focusin",j),$.addEventListener("change",B),document.addEventListener("visibilitychange",ne),()=>{N=!0,b.forEach(G=>window.clearTimeout(G)),b.clear(),u==null||u.disconnect(),h.removeEventListener("focusin",j),$.removeEventListener("change",B),document.removeEventListener("visibilitychange",ne),f.forEach(G=>delete G.dataset.systemActivation)}},[i]),{ref:s,playing:l}}function by({scopeRef:i}){let{ref:s,playing:l}=gy(i);return e("div",{ref:s,className:"brand-v12-system","data-brand-motion":l?"playing":"rest","aria-hidden":"true"},e("svg",{className:"brand-v12-circuit",viewBox:"0 0 320 200",fill:"none"},e("g",{stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"},e("path",{d:"M6 84h50l25 24h38M6 118h112M6 151h50l25-24h38M314 84h-50l-25 24h-38M314 118H202M314 151h-50l-25-24h-38"})),e("g",{fill:"currentColor"},e("circle",{cx:"6",cy:"84",r:"3"}),e("circle",{cx:"6",cy:"118",r:"3"}),e("circle",{cx:"6",cy:"151",r:"3"}),e("circle",{cx:"314",cy:"84",r:"3"}),e("circle",{cx:"314",cy:"118",r:"3"}),e("circle",{cx:"314",cy:"151",r:"3"}))),e("img",{className:"brand-v12-base",src:"/assets/brand-v12/system-base.png",width:"700",height:"700",alt:"",loading:"lazy",decoding:"async"}),e("img",{className:"brand-v12-mark",src:"/assets/brand-v12/system-mark.png",width:"1024",height:"1024",alt:"",loading:"lazy",decoding:"async"}))}function yy(){let{ref:i,playing:s}=fy(4500);return e("div",{ref:i,className:"brand-v12-closing-art","data-brand-motion":s?"playing":"rest","aria-hidden":"true"},e("img",{className:"brand-v12-crystal",src:"/assets/brand-v12/crystal.png",width:"512",height:"512",alt:"",loading:"lazy",decoding:"async"}),e("img",{className:"brand-v12-cube",src:"/assets/brand-v12/cube.png",width:"512",height:"512",alt:"",loading:"lazy",decoding:"async"}))}function zn({children:i,kind:s="rise",className:l="",entrance:d="arrival"}){let p=(0,sc.useRef)(null),[h,f]=(0,sc.useState)(!1);return(0,sc.useEffect)(()=>{let g=p.current;
1170if(f(!1),!g||typeof window.matchMedia!="function")return;let b=window.matchMedia("(prefers-reduced-motion: reduce)");if(b.matches||document.hidden||g.contains(document.activeElement))return;if(d==="arrival"){if(typeof IntersectionObserver>"u")return;let R=g.getBoundingClientRect();if(R.top<window.innerHeight&&R.bottom>0)return}let u=0,N=!1,v=!1,w=null,C=()=>{v||(N=!0,window.clearTimeout(u),f(!1),w==null||w.disconnect())},A=()=>{N||v||(N=!0,w==null||w.disconnect(),!(b.matches||document.hidden||g.contains(document.activeElement))&&(f(!0),u=window.setTimeout(C,d==="mount"?1e3:650)))},z=()=>{b.matches&&C()},S=()=>{document.hidden&&C()};return g.addEventListener("focusin",C),b.addEventListener("change",z),document.addEventListener("visibilitychange",S),d==="mount"?A():(w=new IntersectionObserver(R=>{R.some(j=>j.isIntersecting)&&A()},{rootMargin:"0px 0px -36px 0px",threshold:0}),w.observe(g)),()=>{v=!0,window.clearTimeout(u),w==null||w.disconnect(),g.removeEventListener("focusin",C),b.removeEventListener("change",z),document.removeEventListener("visibilitychange",S)}},[d]),e("div",{ref:p,className:`flow-stage flow-stage--${s} ${l}`,"data-flow-entrance":d,"data-flow-state":h?"entering":"visible"},i)}function zc({path:i,items:s,label:l}){return e("nav",{className:"flow-nav","aria-label":l},e("p",{className:"flow-nav-label"},"Explore at your own pace ",e(As,{size:15,"aria-hidden":"true"})),e("ol",null,s.map((d,p)=>e("li",{key:d.id},e(H,{to:`${i}#${d.id}`},e("span",{className:"flow-nav-number","aria-hidden":"true"},String(p+1).padStart(2,"0")),e("span",null,e("strong",null,d.label),e("small",null,d.detail)),e(J,{size:16,"aria-hidden":"true"}))))))}function Cn({id:i,label:s,number:l,tinted:d=!1,children:p}){return e("section",{id:i,className:`flow-chapter ${d?"flow-chapter--tinted":""}`,"aria-label":s},e(zn,{kind:"line",className:"flow-chapter-heading"},e("p",null,e("span",{"aria-hidden":"true"},l),s),e("span",{className:"flow-chapter-rule","aria-hidden":"true"})),p)}function Ym({children:i,id:s}){return e("div",{className:"flow-journey-bridge",id:s},e(zn,{kind:"line",className:"flow-bridge-caption"},e("span",{className:"flow-bridge-line","aria-hidden":"true"}),e("p",null,"See how the pieces work together"),e(As,{size:17,"aria-hidden":"true"})),i)}var Km=[{path:"/discovery-call",reviewLabel:"Discovery Call · Main site",eyebrow:"LETâS TALK ABOUT YOUR PRACTICE",title:"Book your demo",description:"See the platform, discuss your practice, and choose the right next step.",image:"rob",meeting:{id:"main-discovery",name:"Med Spa Marketing AI Discovery Call",host:"Rob Upland",duration:"30 minutes",agenda:["Discuss your practice and goals","Explore marketing and EMRMedSpa together","Choose next steps for your practice"],preparation:["Bring your biggest questions about growing and managing your practice. When booking, use the optional âAdditional informationâ field to tell us whether youâre opening or growing a practice and your top priority."],calendarId:"RBcMoRf4301Sl6mTJA4W",isActive:!0,currentCalendarName:"Med Spa Marketing AI Discovery Call",currentOwner:"Rob Upland",currentDuration:"30 minutes",verificationNote:"New replacement calendar readback verifies this ID, service name, Rob ownership, 30-minute duration and isActive:true. Keep this main-site source separate from US Medical Directors. The calendar is enabled for the requested unpublished embed preview; conferencing and reminder delivery are still release checks.",transitionNote:"Preserved legacy main-site calendar: i1QBuUq0FtIXrtefB3ga, Medspa Operating System with Rob Upland. It is not a booking fallback."}},{path:"/us-medical-directors/discovery-call",reviewLabel:"Discovery Call · US Medical Directors",eyebrow:"US MEDICAL DIRECTORS",title:"Med Spa Marketing AI Discovery Call",description:"See how our done-for-you system helps you attract patients, manage bookings and run your practice with Med Spa Marketing AI and EMRMedSpa.",image:"usmd",meeting:{id:"usmd-discovery",name:"Med Spa Marketing AI Discovery Call",host:"Rob Upland",duration:"30 minutes",agenda:["Discuss your practice and goals","Explore marketing and EMRMedSpa together","Choose next steps for your practice"],preparation:["Bring your questions from your conversation with US Medical Directors."],calendarId:"3IMGA5gPFl8xePA4fQJk",isActive:!0,currentCalendarName:"Med Spa Marketing AI Discovery Call",currentOwner:"Rob Upland",currentDuration:"30 minutes",verificationNote:"New replacement calendar readback verifies this ID, service name, Rob ownership, 30-minute duration and isActive:true in US Medical Directors. Main-site and partner attribution remain separate. No paid Audit or Accelerator meeting is exposed on this page.",transitionNote:"Preserved legacy US Medical Directors Discovery: B8x6AJLD0rC3nSp936hj, slug med-spa-growth-consultation. It is not a booking fallback."}},{path:"/us-medical-directors/accelerator-onboarding",reviewLabel:"Accelerator Onboarding",eyebrow:"INCLUDED WITH YOUR USMD ACCELERATOR PROGRAM",title:"Your Done-for-You Med Spa System",description:"We build your website, booking and follow-up, configure EMRMedSpa, and launch your first Meta campaign around your practice.",image:"usmd",meeting:{id:"accelerator-onboarding",name:"System Setup Call with Rob",host:"Rob Upland",duration:"45 minutes",agenda:["Review your practice and priorities","Walk through what weâre setting up","Confirm your next steps with Adrienne"],preparation:["Bring your practice details and setup questions."],systemCalendar:!0,calendarId:"F3n3G5541wXMrizSDrRh",isActive:!0,currentCalendarName:"System Setup Call with Rob",currentOwner:"Rob Upland",currentDuration:"45 minutes",verificationNote:"Dedicated system setup calendar readback verifies this ID, Rob Upland ownership, 45-minute duration and active state in US Medical Directors. User confirmed the build and first month are included through USMD. Reminder delivery and generated meeting links have not been tested by booking.",transitionNote:"Adrienneâs Accelerator Onboarding calendar AWcakrsHSjheFIwdTP7v remains unchanged for the second connections session. Existing calendar objects and appointments are preserved."}},{path:"/client-onboarding",reviewLabel:"Client Onboarding",eyebrow:"LETâS GET YOU SET UP",title:"Client Onboarding",description:"Meet with Adrienne to connect your business accounts, review your practice needs and start setting up Med Spa Marketing AI and EMRMedSpa.",image:"adrienne",meeting:{id:"client-onboarding",name:"Client Onboarding",host:"Adrienne",duration:"60 minutes",agenda:["Review your practice and setup needs","Connect your key business accounts","Plan your setup and next steps"],preparation:["Join from a computer with access to your business accounts."],calendarId:"RImmYn8Tw4LkrAqQSexG",isActive:!0,currentCalendarName:"Client Onboarding",currentOwner:"Adrienne George",currentDuration:"60 minutes",verificationNote:"New replacement calendar readback verifies this ID, Client Onboarding name, Adrienne George ownership, 60-minute duration and isActive:true. This page offers one first working session only. Adrienne external/conflict calendars, conferencing and the appointment lifecycle require verification before release.",transitionNote:"Preserved private Foundation reference: IY7Gd6VBkfcvvCOrT0Cc, Med Spa Marketing AI â 90-Minute Foundation, historically Rob-owned. It is not a booking fallback. No launch-review calendar is offered."}},{path:"/client-support",reviewLabel:"Client Support",eyebrow:"FOR EXISTING CLIENTS",t
1170itle:"Client Support",description:"Get help from Adrienne with a specific question about your account, a setup issue or something youâre trying to do.",image:"adrienne",meeting:{id:"client-support",name:"Client Support",host:"Adrienne",duration:"15 minutes",agenda:["Explain the issue or question","Work through the relevant steps","Confirm what to do next"],preparation:["Bring one question and a relevant example without patient information."],calendarId:"ruHx34WYILvUV4WAmPrQ",isActive:!0,currentCalendarName:"Client Support",currentOwner:"Adrienne George",currentDuration:"15 minutes",verificationNote:"New replacement calendar readback verifies this ID, exact Client Support name, Adrienne George ownership, 15-minute duration and isActive:true. Host and duration appear as supporting details. Scheduling dependencies and the appointment lifecycle require verification before release.",transitionNote:"Preserved legacy 15-minute support reference: fY8ccXYaRlBZeWK1IlaK, 1:1 Support Call, historically Rob-owned. It is not a booking fallback."}},{path:"/time-with-rob",reviewLabel:"Time with Rob",eyebrow:"STRATEGY, PLANNING & NEXT STEPS",title:"Time with Rob",description:"Meet with Rob to talk through your business goals, work through a decision and agree on what to do next.",image:"rob",meeting:{id:"time-with-rob",name:"Time with Rob",host:"Rob Upland",duration:"30 minutes",agenda:["Review your goals and priorities","Work through an open decision","Agree on practical next steps"],preparation:["Bring the main question or decision you want to discuss."],calendarId:"5P7B9o0T9ZRwatqAdgPK",isActive:!0,currentCalendarName:"Time with Rob",currentOwner:"Rob Upland",currentDuration:"30 minutes",verificationNote:"New replacement calendar readback verifies this ID, exact Time with Rob name, Rob ownership, 30-minute duration and isActive:true. The page has only this one calendar mapping. Scheduling dependencies and the appointment lifecycle require verification before release.",transitionNote:"Preserved Strategy & Planning reference: AkhDGWj2ndCAkAcvjAOM. Separate Rob support 1wA9wS4eQBht93eeDO1E stays legacy/private. Neither old object is a booking fallback."}}],dm={"/demo":"/discovery-call","/discovery":"/discovery-call","/usmd":"/us-medical-directors/discovery-call","/accelerator":"/us-medical-directors/accelerator-onboarding","/onboarding":"/client-onboarding","/support":"/client-support","/rob":"/time-with-rob","/usmd/discovery-call":"/us-medical-directors/discovery-call","/usmd/accelerator-onboarding":"/us-medical-directors/accelerator-onboarding"},Wr=i=>Km.find(s=>s.path===i),wc="Med Spa Marketing AI",Ga="https://medspamarketing.ai",Lc=["medspamarketing.ai","www.medspamarketing.ai"],pm="https://vibe.filesafe.space/meta/1788673117057487405/og_image.jpg",um="Med Spa Marketing AI";function ci(i){return i==="/"?"/":i.replace(/\/+$/,"")||i}var kc="msmai-structured-data";function vy(i,s){if(!Lc.includes(s.toLowerCase()))return null;let l=ci(i);if(l==="/")return{"@context":"https://schema.org","@type":"Organization","@id":`${Ga}/#organization`,name:wc,alternateName:"MSMAI",legalName:"1SoftwareSolution LLC",url:`${Ga}/`,description:"Med spa software with hands-on setup for websites, booking, marketing and clinical workflows.",email:"[email protected]"};let d=za.find(h=>h.href===l);if(!d)return null;let p=d.area==="emr";return{"@context":"https://schema.org","@type":"BreadcrumbList","@id":`${Ga}${d.href}#breadcrumb`,itemListElement:[{"@type":"ListItem",position:1,name:"Features",item:`${Ga}/features`},{"@type":"ListItem",position:2,name:p?"EMRMedSpa":wc,item:`${Ga}${p?"/emr":"/marketing-system"}`},{"@type":"ListItem",position:3,name:d.title,item:`${Ga}${d.href}`}]}}function $m(i){i.querySelectorAll(`script[id="${kc}"]`).forEach(s=>s.remove())}function wy(i,s,l){let d=vy(s,l);if(!d){$m(i);return}let p=Array.from(i.querySelectorAll(`script[id="${kc}"]`)),h=p.shift()??i.createElement("script");p.forEach(f=>f.remove()),h.id=kc,h.type="application/ld+json",h.textContent=JSON.stringify(d).replace(/</g,"\\u003c"),h.parentNode!==i.head&&i.head.append(h)}function ky(i,s){let l=ci(i);if(l==="/calendars"||l==="/calendars/sales"||l==="/calendars/onboarding"||l==="/calendars/client-support")return{path:l,legacy:null,title:l==="/calendars"?"Calendars | Med Spa Marketing AI":l==="/calendars/sales"?"Sales Calendars | Med Spa Marketing AI":l==="/calendars/onboarding"?"Onboarding Calendars | Med Spa Marketing AI":"Client Support Calendars | Med Spa Marketing AI",description:"Choose the right meeting and share the right link. Med Spa Marketing AI booking directory.",canonical:null,robots:"noindex,nofollow"};if(l==="/client-reviews"||l==="/client-reviews/evidence-md/september-2026"||l==="/client-reviews/evidence-md/carbon-laser-facial-september-2026")return{path:l,legacy:null,title:l==="/client-reviews"?"Client Review Library | Med Spa Marketing AI":l==="/client-reviews/evidence-md/carbon-laser-facial-september-2026"?"Evidence MD Carbon Laser Facial Review | Med Spa Marketing AI":"Evidence MD Review | Med Spa Marketing AI",description:"Unlisted client review. Not for public indexing.",canonical:null,robots:"noindex,nofollow"};if(l==="/us-medical-directors/accelerator-confirmation")return{path:l,legacy:null,title:"Your System Setup Call | Med Spa Marketing AI",description:"Prepare for your System Setup Call with Rob and the next steps for your included USMD Accelerator system.",canonical:`${Ga}${l}`,robots:"noindex,nofollow"};let d=Wr(l);if(d){let g=s==="127.0.0.1"||s==="localhost";return{path:l,legacy:null,title:g?`${d.title} | Local review`:`${d.title} | Med Spa Marketing AI`,description:d.description,canonical:g?null:`${Ga}${l}`,robots:"noindex,nofollow"}}let p=Qg.find(g=>g.path===l),h=Lc.some(g=>g===s.toLowerCase()),f=Kg(l,h);return{path:l,legacy:f,title:(f==null?void 0:f.title)??(p==null?void 0:p.title)??"Page not found | MSMAI",description:(f==null?void 0:f.tags.description)??(p==null?void 0:p.description)??"",canonical:(f==null?void 0:f.canonical)??(p?`${Ga}${l}`:null),robots:(f==null?void 0:f.tags.robots)??(p?h?"index,follow":"noindex,follow":"noindex,nofollow")}}function cs(i,s,l,d="name"){let p=Array.from(i.querySelectorAll(`meta[name="${s}" i],meta[property="${s}" i]`));if(l===null){p.forEach(f=>f.remove());return}let h=p.shift()??i.ownerDocument.createElement("meta");p.forEach(f=>f.remove()),h.removeAttribute(d==="name"?"property":"name"),h.setAttribute(d,s),h.setAttribute("content",l),h.isConnected||i.append(h)}function Ay(i,s,l){var b;let d=ky(s,l);
1170Array.from(i.head.querySelectorAll("title")).slice(1).forEach(u=>u.remove()),i.title=d.title,cs(i.head,"description",d.description),cs(i.head,"robots",d.robots);let p=Array.from(i.head.querySelectorAll('link[rel~="canonical" i]'));if(d.canonical===null)p.forEach(u=>u.remove());else{let u=p.shift()??i.createElement("link");p.forEach(N=>N.remove()),u.setAttribute("rel","canonical"),u.setAttribute("href",d.canonical),u.isConnected||i.head.append(u)}let h=(b=d.legacy)==null?void 0:b.tags,f={"og:title":d.title,"og:description":d.description,"og:url":d.canonical,"og:type":"website","og:site_name":wc,"og:image":pm,"og:image:alt":um};for(let u of Object.keys(f))h&&(f[u]=h[u]??null);for(let[u,N]of Object.entries(f))cs(i.head,u,N,"property");let g={"twitter:card":"summary_large_image","twitter:title":d.title,"twitter:description":d.description,"twitter:image":pm,"twitter:image:alt":um};for(let u of Object.keys(g))h&&(g[u]=h[u]??null);for(let[u,N]of Object.entries(g))cs(i.head,u,N);wy(i,s,l)}function xy({pathname:i}){return(0,Ug.useEffect)(()=>(Ay(document,i,window.location.hostname),()=>$m(document)),[i]),null}var Gm=new Set(["RBcMoRf4301Sl6mTJA4W","3IMGA5gPFl8xePA4fQJk","AWcakrsHSjheFIwdTP7v","F3n3G5541wXMrizSDrRh","RImmYn8Tw4LkrAqQSexG","ruHx34WYILvUV4WAmPrQ","5P7B9o0T9ZRwatqAdgPK"]);function Qm({meeting:i}){let s=(0,ss.useRef)(null),[l,d]=(0,ss.useState)(300),[p,h]=(0,ss.useState)(!1),f=`msmai-review-${i.calendarId}`,g=`https://links.medspamarketing.ai/widget/booking/${i.calendarId}`,b=new URL(g).origin;function u(v){var C;let w=((C=s.current)==null?void 0:C.clientWidth)??0;return Number.isFinite(v)&&v<=w+2&&v>=w-20}function N(){var v,w;(w=(v=s.current)==null?void 0:v.contentWindow)==null||w.postMessage(`[iFrameSizer]${f}:8:false:false:32:true:true:0px:offset:null:null:0`,b)}return(0,ss.useEffect)(()=>{let v,w=C=>{var D;if(C.origin!==b||C.source!==((D=s.current)==null?void 0:D.contentWindow)||typeof C.data!="string")return;let A=`[iFrameSizer]${f}:`;if(!C.data.startsWith(A))return;let[z,S,R]=C.data.slice(A.length).split(":");if(!["init","resize","size","reset","interval","mutationObserver","trigger","transitionstart","imageLoad"].includes(R))return;let j=Number(S);if(!u(j))return;let $=Number(z);if(!Number.isFinite($)||$<300||$>1e4)return;let V=Math.ceil($)+8;clearTimeout(v),d(L=>Math.max(L,V)),v=setTimeout(()=>{u(j)&&d(V)},450)};return window.addEventListener("message",w),()=>{clearTimeout(v),window.removeEventListener("message",w)}},[f,b,i.systemCalendar]),!i.calendarId||i.isActive!==!0||!Gm.has(i.calendarId)||i.heldReason?null:e("section",{className:"booking-calendar-zone",id:"meeting-calendar",tabIndex:i.systemCalendar?-1:void 0,"data-calendar-slot":"embedded","data-calendar-id":i.calendarId,"data-calendar-active":i.isActive,"data-calendar-layout":i.systemCalendar?"system":void 0,"aria-labelledby":"current-calendar-title"},e("div",{className:"booking-calendar-zone__heading"},i.systemCalendar?e(Y.Fragment,null,e("p",{className:"system-booking-eyebrow"},"YOUR FIRST STEP"),e("h2",{id:"current-calendar-title"},"System Setup with Rob"),e("div",{className:"system-founder"},e("img",{src:"/assets/team-v6/rob-upland.png",alt:"Rob Upland",width:"56",height:"56"}),e("div",null,e("p",null,"Founder of Med Spa Marketing AI",e("br",null),"and EMRMedSpa"),e("span",null,i.duration," · Video call")))):e(Y.Fragment,null,e("h2",{id:"current-calendar-title"},"Choose a time"),e("p",null,i.duration," with ",i.host))),e("div",{className:"booking-calendar-fallback"},e("span",null,"Check the timezone before choosing a time."),e("a",{href:g,target:"_blank",rel:"noreferrer"},"Open calendar in a new tab â"),e("a",{href:"mailto:[email protected]"},"Need another time? Email Rob")),e("div",{className:"booking-calendar-full",role:void 0,"aria-label":void 0,tabIndex:void 0},!p&&e("p",{className:"booking-calendar-loading",role:"status"},"Loading the calendarâ¦"),e("iframe",{ref:s,id:f,title:`${i.name} booking calendar`,src:g,style:{height:l},onLoad:()=>{h(!0),N()}})))}function Ny(){return e("header",{className:"booking-header"},e(H,{to:"/","aria-label":"Med Spa Marketing AI home"},e("img",{src:"/assets/brand/msmai-logo.svg",alt:"Med Spa Marketing AI",width:"204",he
1170ight:"56"})),e(H,{className:"booking-back",to:"/"},"Back to website ",e("span",{"aria-hidden":"true"},"â")))}function My(){return e("footer",{className:"booking-footer"},e("p",null,"© ",new Date().getFullYear()," Med Spa Marketing AI"),e("nav",{"aria-label":"Legal"},e(H,{to:"/legal/privacy-policy"},"Privacy policy"),e(H,{to:"/legal/terms-and-conditions"},"Terms & conditions")))}function Sy({page:i}){let s=i.meeting,l=Mc(),d=["127.0.0.1","localhost"].includes(window.location.hostname)&&new URLSearchParams(window.location.search).get("review")==="1",p=!!s.calendarId&&s.isActive===!0&&Gm.has(s.calendarId)&&!s.heldReason,h=s.host==="Rob Upland";const f=i.path==="/discovery-call";return s.systemCalendar?e(Ey,{page:i}):e("div",{className:`business-booking${f?" business-booking--main-discovery":""}${i.path==="/discovery-call"||i.path==="/us-medical-directors/discovery-call"?" business-booking--discovery":""}${s.systemCalendar?" business-booking--accelerator":""}`},d&&e("aside",{className:"booking-review-bar","aria-label":"Internal page review"},e("span",null,"Internal preview · ",p?"real calendar embedded":"booking held"),e("label",null,e("span",{className:"sr-only"},"Review a standalone meeting page"),e("select",{value:i.path,onChange:g=>l(`${g.target.value}?review=1`)},Km.map(g=>e("option",{value:g.path,key:g.path},g.reviewLabel))))),e("article",{className:"booking-single-meeting","data-meeting-id":s.id,"aria-labelledby":"meeting-page-title"},e("div",{className:"booking-copy-column"},e("section",{className:"booking-intro"},e("p",{className:"eyebrow"},i.eyebrow),e("h1",{id:"meeting-page-title"},i.title),!f&&p&&e("a",{className:"button booking-jump",href:"#meeting-calendar"},"Choose a time"),e("p",{className:"booking-intro__description"},i.description),e("div",{className:"booking-host"},e("img",{src:h?"/assets/team-v6/rob-upland.png":"/assets/team-v7/adrienne.jpg",alt:h?"Rob Upland":"Adrienne",width:"56",height:"56"}),e("div",null,e("strong",null,"With ",s.host),e("span",null,s.duration," · Video call"))),f&&p&&e("a",{className:"button booking-jump booking-jump--primary",href:"#meeting-calendar"},"Choose a time")),e("section",{className:f?"booking-meeting-summary booking-meeting-summary--desktop":"booking-meeting-summary",id:"meeting-detail","aria-labelledby":"meeting-detail-title"},e("h2",{id:"meeting-detail-title"},"What weâll cover"),e("ul",{className:"booking-agenda"},s.agenda.map(g=>e("li",{key:g},e(De,{size:16,"aria-hidden":"true"}),e("span",null,g)))),e("p",{className:"booking-prep"},e("strong",null,"Before we meet"),s.preparation.join(" "))),f&&e("details",{className:"booking-meeting-summary--mobile"},e("summary",null,"About your demo"),e("div",{className:"booking-meeting-details__body"},e("h2",null,"What weâll cover"),e("ul",{className:"booking-agenda"},s.agenda.map(g=>e("li",{key:g},e(De,{size:16,"aria-hidden":"true"}),e("span",null,g)))),e("p",{className:"booking-prep"},e("strong",null,"Before we meet"),s.preparation.join(" ")))),i.image==="usmd"&&e("aside",{className:"booking-partner","aria-label":"Official partnership"},e("p",null,"Official Partner of US Medical Directors"),e("div",{className:"booking-partner-logos"},e("img",{src:"/assets/brand/msmai-logo.svg",alt:"Med Spa Marketing AI",width:"204",height:"56"}),e("span",{"aria-hidden":"true"},"+"),e("img",{src:"/assets/partners-v7/us-medical-directors.png",alt:"US Medical Directors",width:"271",height:"82"})))),e("div",{className:"booking-schedule-column"},p?e(Qm,{key:s.calendarId,meeting:s}):e("section",{className:"booking-calendar-zone booking-calendar-zone--held","data-calendar-slot":"held","data-calendar-id":s.calendarId,"data-calendar-active":s.isActive,id:"meeting-calendar","aria-labelledby":"held-calendar-title"},e("div",{className:"booking-calendar-zone__heading"},e("h2",{id:"held-calendar-title"},"Choose a time"),e("p",null,s.duration," with ",s.host)),e("div",{className:"booking-held"},e(He,{size:32,strokeWidth:1.5,"aria-hidden":"true"}),e("h3",null,"Booking opens soon"),e("p",null,"Online scheduling is not available yet."),e("button",{type:"button",disabled:!0},"Booking unavailable"))),e("p",{className:"booking-change-note"},"Already booked? Use the reschedule or cancel link in your confirmation.")),(i.path==="/discovery-call"||i.path==="/us-medical-directors/discovery-call")&&e("section",{className:"system-tour",id:"patient-journey",tabIndex:-1,"aria-label":"Your patient journey, connected"},e("p",{className:"eyebrow"},"EXPLORE WHATâS INCLUDED"),e("div",{"data-system-tour":"true"},e($r,{initialMediaPriority:!1,externalLinks:!0})))),d&&e("aside",{className:"booking-audit-notes","aria-label":"Internal
1170calendar review notes"},e("details",{className:"booking-review-detail"},e("summary",null,"Internal calendar details"),e("p",null,s.verificationNote),e("dl",null,e("div",null,e("dt",null,"Calendar"),e("dd",null,s.calendarId)),e("div",null,e("dt",null,"Owner"),e("dd",null,s.currentOwner)),e("div",null,e("dt",null,"Active"),e("dd",null,String(s.isActive)))),e("p",null,s.transitionNote))))}function Ey({page:i}){let s=i.meeting;return e("div",{className:"business-booking business-booking--accelerator"},e("article",{className:"booking-single-meeting system-page","data-meeting-id":s.id,"aria-labelledby":"meeting-page-title"},e("div",{className:"system-hero"},e("section",{className:"booking-intro"},e("p",{className:"eyebrow"},"US MEDICAL DIRECTORS ACCELERATOR"),e("h1",{id:"meeting-page-title"},i.title),e("p",{className:"booking-intro__description"},i.description),e("p",{className:"system-inclusion"},"Your system build and first month are included."),e("div",{className:"system-hero-actions"},e("a",{className:"system-booking-cta",href:"#meeting-calendar"},"Book Your Setup Call ",e("span",{"aria-hidden":"true"},"â")),e("a",{className:"system-explore-link",href:"#system-included"},"Explore whatâs included ",e("span",{"aria-hidden":"true"},"â"))),e("aside",{className:"system-partner","aria-label":"Official partnership"},e("img",{src:"/assets/partners-v7/us-medical-directors.png",alt:"US Medical Directors",width:"271",height:"82"}),e("p",null,"Official Partner of",e("br",null),e("strong",null,"US Medical Directors")))),e("div",{className:"system-booking-panel"},e(Qm,{key:s.calendarId,meeting:s}),e("p",{className:"booking-change-note"},"Already booked? Use the reschedule or cancel link in your confirmation."))),e("section",{className:"system-next-steps",id:"meeting-detail","aria-label":"From your setup call to onboarding"},e("div",{className:"system-next-step"},e("span",{"aria-hidden":"true"},"01"),e("div",null,e("h2",null,"Your Setup Plan"),e("p",null,"Review your practice and priorities with Rob, and map the next steps for your system."))),e("div",{className:"system-next-step"},e("span",{"aria-hidden":"true"},"02"),e("div",null,e("h2",null,"Your Onboarding Call"),e("p",null,"Connect your accounts with our team. Then we build your system and train your team.")))),e("section",{className:"system-tour",id:"system-included",tabIndex:-1,"aria-label":"Your included patient journey, connected"},e("p",{className:"eyebrow"},"EXPLORE WHATâS INCLUDED"),e("div",{"data-system-tour":"true"},e($r,{initialMediaPriority:!1,externalLinks:!0}))),e("section",{className:"system-closing","aria-labelledby":"system-closing-title"},e("div",null,e("h2",{id:"system-closing-title"},"Letâs Get Your System Started."),e("p",null,"Choose a time with Rob to plan your setup.")),e("a",{className:"system-booking-cta",href:"#meeting-calendar"},"Book Your Setup Call ",e("span",{"aria-hidden":"true"},"â")))))}var jc="/us-medical-directors/accelerator-confirmation";function Cy(){return e("article",{className:"accelerator-confirmation","aria-labelledby":"confirmation-title"},e("p",{className:"eyebrow"},"US MEDICAL DIRECTORS ACCELERATOR"),e("div",{className:"confirmation-icon","aria-hidden":"true"},e(He,{size:32,strokeWidth:1.5})),e("h1",{id:"confirmation-title"},"Weâre looking forward to your System Setup Call."),e("p",{className:"confirmation-intro"},"Letâs get you started with your Med Spa Marketing AI + EMRMedSpa system, included with your USMD Accelerator program."),e("p",null,"On the call, weâll review your practice and priorities with Rob, then outline onboarding with our team."),e("section",{"aria-labelledby":"confirmation-next"},e("h2",{id:"confirmation-next"},"Before we meet"),e("ol",null,e("li",null,e("strong",null,"Keep your appointment details handy.")," Check the date, time and timezone you selected. Use the meeting link in your appointment details to join."),e("li",null,e("strong",null,"Bring your priorities and questions.")," Think about your services, launch timeline and the areas where you need the most help."),e("li",null,e("strong",null,"Weâll plan onboarding together.")," Our team will guide you through connecting your accounts and preparing your system."))),e("p",{className:"confirmation-help"},"Need help finding or changing your appointment? ",e("a",{href:"mailto:[email protected]"},"Contact Rob"),"."),e("nav",{className:"confirmation-links","aria-label":"Next steps"},e(H,{className:"system-booking-cta",to:"/"},"Visit our homepage ",e("span",{"aria-hidden":"true"},"â")),e(H,{className:"text-link",to:"/us-medical-directors/accelerator-onboarding#system-included"}
1170,"Explore your included system")),e("p",{className:"confirmation-unscheduled"},"Havenât finished scheduling? ",e(H,{to:"/us-medical-directors/accelerator-onboarding#meeting-calendar"},"Choose a time for your setup call"),"."))}var Nt="/assets/",Zm="Product interface illustration · sample data.",Jm=[{src:Nt+"seo-v15/evidence-md-600.webp",name:"Evidence MD",width:3568,height:2092,className:"client-strip__evidence"},{src:Nt+"client-logos/skin-bar.png",name:"Skin Bar New York",width:405,height:207},{src:Nt+"seo-v15/kc-aesthetics-480.webp",name:"KC Aesthetics",width:2400,height:2400,className:"client-strip__kc"},{src:Nt+"brand-v12/natural-original.png",name:"Natural Rejuvenation MedSpa",width:704,height:301,className:"client-strip__natural"},{src:Nt+"seo-v15/dr-mary-320.webp",name:"Medical Esthetics & Wellness",width:800,height:800,className:"client-strip__mary"}];function Rt({children:i,to:s="/discovery-call",secondary:l=!1,current:d=!1}){return e(H,{className:`button ${l?"button--secondary":""}`,to:s,"aria-current":d?"page":void 0},i,e(J,{size:17,"aria-hidden":"true"}))}function Fe({children:i}){return e("p",{className:"eyebrow"},i)}function Ty(){let[i,s]=(0,ft.useState)(null),[l,d]=(0,ft.useState)(!1),p=(0,ft.useRef)(null),h=xa(),f=ci(h.pathname);(0,ft.useEffect)(()=>{s(null),d(!1)},[h.pathname,h.hash,h.key]),(0,ft.useEffect)(()=>{var b,u;l&&((u=(b=p.current)==null?void 0:b.querySelector("#main-navigation button, #main-navigation a"))==null||u.focus())},[l]);let g=b=>{b instanceof Element&&b.closest("a")&&(s(null),d(!1))};return(0,ft.useEffect)(()=>{function b(u){var N;(N=p.current)!=null&&N.contains(u.target)||(s(null),d(!1))}return document.addEventListener("pointerdown",b),()=>document.removeEventListener("pointerdown",b)},[]),Wr(f)||f===jc?e(Ny,null):e("header",{className:"site-header",ref:p,onClick:b=>g(b.target),onKeyDown:b=>{var u,N;b.key==="Escape"&&(s(null),d(!1),(N=(u=p.current)==null?void 0:u.querySelector(l?".mobile-toggle":`button[data-nav="${i}"]`))==null||N.focus())}},e("div",{className:"nav-wrap"},e(H,{className:"brand",to:"/","aria-label":"Med Spa Marketing AI home","aria-current":f==="/"?"page":void 0},e("img",{src:Nt+"brand/msmai-logo.svg",alt:"Med Spa Marketing AI",width:"204",height:"56"})),e("nav",{id:"main-navigation",className:`main-nav ${l?"is-open":""}`,"aria-label":"Main navigation"},e($b,{open:i==="Platform",onOpenChange:b=>s(b?"Platform":null),onNavigate:()=>d(!1)}),$g.filter(b=>b.label!=="Platform").map(b=>e("div",{className:"nav-group",key:b.label},e("button",{"data-nav":b.label,className:"nav-trigger","aria-expanded":i===b.label,"aria-controls":`nav-${b.label.replace(/ /g,"-")}`,onClick:()=>s(i===b.label?null:b.label)},b.label,e(As,{size:14,"aria-hidden":"true"})),e("div",{className:"nav-dropdown",id:`nav-${b.label.replace(/ /g,"-")}`,hidden:i!==b.label},b.links.map(u=>e(H,{to:u.href,key:u.href,"aria-current":f===u.href?"page":void 0},u.label,e(Ae,{size:15,"aria-hidden":"true"})))))),Gg.map(b=>e(H,{className:"nav-pricing",to:b.href,key:b.href,"aria-current":f===b.href||f.startsWith(b.href+"/")?"page":void 0},b.label)),e(H,{className:"nav-mobile-demo button",to:"/discovery-call","aria-current":f==="/discovery-call"?"page":void 0},"Book a demo ",e(Ae,{size:17}))),e("div",{className:"nav-actions"},e(Rt,{current:f==="/discovery-call"},"Book a demo"),e("button",{className:"mobile-toggle","aria-label":l?"Close navigation":"Open navigation","aria-expanded":l,"aria-controls":"main-navigation",onClick:()=>d(!l)},e(l?Ec:Bg,null)))))}function Iy(){let i=xa();return Wr(ci(i.pathname))||ci(i.pathname)===jc?e(My,null):e(ry,null)}function Ry(){let i=xa();return(0,ft.useEffect)(()=>{let s,l=requestAnimationFrame(()=>{var h;let d=i.hash.slice(1);try{d=decodeURIComponent(d)}catch{}let p=d?document.getElementById(d):null;if(p){if(!p.hasAttribute("tabindex")&&!p.matches("a[href],button,input,select,textarea")){p.setAttribute("tabindex","-1");let f=()=>{p.removeAttribute("tabindex"),p.removeEventListener("blur",f)};s=f,p.addEventListener("blur",f,{once:!0})}p.scrollIntoView({block:"start"}),p.focus({preventScroll:!0})}else window.scrollTo({top:0,behavior:"instant"}),(h=document.getElementById("main"))==null||h.focus({preventScroll:!0})});return()=>{cancelAnimationFrame(l),s==null||s()}},[i.pathname,i.hash,i.key]),e(xy,{pathname:i.pathname})}var zy={"booking-v2-menu":[2196,1903],"booking-v2-cart":[2196,1360],"booking-v2-staff":[2196,1410],"booking-v2-calendar":[2196,1432],"booking-v2-checkout":[2196,1652],"owner-dashboard":[2056,1591],"emr-treatment-note":[2496,2988],"emr-notes-list":[2136,1500],"emr-inventory":[2176,1401],"emr-payments":[2256,1350],"emr-calendar":[2376,1328],inbox:[2176,1561],"email-stats":[2016,1626],"emr-body-map-marked":[1376,1538]};function Ly({file:i,alt:s,caption:l=Zm,className:d="",viewportClassName:p}){let[h,f]=(0,ft.useState)(!1),[g,b]=zy[i],u=Nt+"product/"+i+".png";(0,ft.useEffect)(()=>f(!1),[u]);let N=h?e("div",{className:"screen-error",role:"status"},e("p",null,"The image could not load. ",s,"."),e("p",null,"Try opening the full-size image below.")):e("img",{src:u,alt:s,loading:"lazy",width:g,height:b,style:{aspectRatio:`${g} / ${b}`},onError:()=>f(!0)});
1170return e("figure",{className:`software-screen ${d}`},p&&!h?e("div",{className:p},N):N,e("figcaption",null,l),h&&e("a",{className:"text-link",href:u,target:"_blank",rel:"noreferrer"},"Open image ",e(Ae,{size:15})))}function Xm(){let i=(0,ft.useRef)(null);return e("section",{ref:i,className:"section system-activation-v12",id:"platform"},e("div",{className:"brand-v12-platform-intro"},e(by,{scopeRef:i}),e(zn,{className:"section-heading centered"},e(Fe,null,"THE TWO PARTS OF YOUR PLATFORM"),e("h2",null,"Med Spa Marketing AI ",e("span",null,"+ EMRMedSpa.")),e("p",null,"Two workspaces within one platform. Each handles a different part of your practice."))),e("div",{className:"product-areas product-areas--v8"},e(H,{className:"product-area marketing-area","data-system-card":"marketing","aria-labelledby":"marketing-area-title",id:"marketing-system",to:"/marketing-system"},e("div",{className:"product-area-copy"},e("span",{className:"area-index"},"BOOKING + MARKETING"),e("h3",{id:"marketing-area-title"},"Med Spa Marketing AI"),e("span",{className:"area-purpose"},"Attract, book and bring patients back."),e("p",null,"Your website, booking, reminders, branded email and treatment-specific retention."),e("span",{className:"text-link"},"Explore Med Spa Marketing AI ",e(Ae,{size:18}))),e("div",{className:"product-area-frame"},e("img",{src:Nt+"portfolio-v7/evidence-md-desktop.jpg",alt:"Evidence MD live client website capture",width:"1425",height:"990",loading:"lazy"})),e("span",{className:"product-area-caption"},"Evidence MD · Live client website capture")),e(H,{className:"product-area clinical-area","data-system-card":"emr","aria-labelledby":"clinical-area-title",id:"emr",to:"/emr"},e("div",{className:"product-area-copy"},e("span",{className:"area-index"},"CLINICAL + PRACTICE TOOLS"),e("h3",{id:"clinical-area-title"},"EMRMedSpa"),e("span",{className:"area-purpose"},"Your custom electronic medical record workspace."),e("p",null,"Clinical notes, consent status, treatment photos, inventory and payment records."),e("span",{className:"text-link"},"Explore EMRMedSpa ",e(Ae,{size:18}))),e("div",{className:"product-area-frame"},e("img",{src:Nt+"product/emr-notes-list.png",alt:"EMR clinical notes list with sample records and consent statuses",loading:"lazy",width:"2136",height:"1500"})),e("span",{className:"product-area-caption"},"Clinical notes · Product interface illustration"))),e("p",{className:"asset-note"},"Product views use fictional sample data. Clinical and marketing workspaces have their own login and access controls."))}function eh(){let[i,s]=(0,ft.useState)(!1);return e("div",{className:"hero-v8-artwork"},e("div",{className:"hero-v8-portrait"},e("span",{className:"hero-v8-brand-plane"},e("img",{src:"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0NDgiIGhlaWdodD0iNDI4IiBmaWxsPSJub25lIj48cGF0aCBmaWxsPSIjNzNDQkREIiBkPSJNMjIzLjk2IDQxNy45MmMxMTIuNjQ0IDAgMjAzLjk2LTkxLjMxNiAyMDMuOTYtMjAzLjk2UzMzNi42MDQgMTAgMjIzLjk2IDEwIDIwIDEwMS4zMTYgMjAgMjEzLjk2czkxLjMxNiAyMDMuOTYgMjAzLjk2IDIwMy45NiIvPjxwYXRoIGZpbGw9IiNmZmYiIGQ9Ik0xMjYuMzYgMzExLjU5VjExNi4zMmwxNC4yNyAxNC4yN1YzMTEuNmgtMTQuMjd6bTE2MC4xMy0xNTkuOTF2MjAuMThsLTYyLjUzIDYyLjUzLTYyLjUzLTYyLjUzdi0yMC4xN2w2Mi41MyA2Mi41MnptMjAuODEgMTU5Ljkxdi0xODFsMTQuMjctMTQuMjd2MTk1LjI3eiIvPjwvc3ZnPg==",width:"448",height:"428",alt:""}),e("span",{className:"hero-v16-system-label"},e("span",null,"All-in-One"),e("strong",null,"System"))),i?e("p",{className:"hero-v8-image-error"},"The clinic image could not load."):e("img",{src:Nt+"seo-v15/hero-clinic-owner-1920.webp",srcSet:`${Nt}seo-v15/hero-clinic-owner-640.webp 640w, ${Nt}seo-v15/hero-clinic-owner-960.webp 960w, ${Nt}seo-v15/hero-clinic-owner-1280.webp 1280w, ${Nt}seo-v15/hero-clinic-owner-1920.webp 1920w`,sizes:"(max-width: 600px) min(calc(145vw - 58px), 566px), (max-width: 960px) min(calc(138vw - 77.28px), 690px), (max-width: 1100px) calc(66.67vw - 58.67px), (max-width: 1400px) calc(66.67vw - 84px), 850px",width:"3072",height:"2048",alt:"Smiling woman in a white clinic coat",loading:"eager",fetchpriority:"high",decoding:"async",onError:()=>s(!0)})),e("p",{className:"hero-v12-tagline"}
1170,e("span",null,e(De,{size:18,"aria-hidden":"true"})),"Done For You"))}function th({prices:i=!1}){let s=i?"h2":"h3",l=La["/pricing"].sections.filter(d=>d.id==="launch"||d.id==="growth");return e("section",{className:`section programs-section ${i?"programs-section--pricing":""}`,id:"programs"},!i&&e("div",{className:"section-heading centered"},e(Fe,null,"THE TWO WAYS TO WORK WITH US"),e("h2",null,i?"Launch and Growth.":"Choose the program for your stage."),e("p",null,"Launch sets up the platform for a new clinic. Growth is a separate engagement for an established practice.")),e("div",{className:`program-cards program-cards--distinct ${i?"program-cards--pricing":""}`},l.map(d=>{let p=d.id==="launch",h=La[p?"/programs/launch":"/programs/growth"].programPrice,f=i?d.bullets??[]:p?["Med Spa Marketing AI + EMRMedSpa","Done-for-you setup, branding and follow-up","Custom creative and your first campaign launch"]:["For an established practice and patient base","Monthly campaign strategy, Meta ads and patient follow-up","Ongoing website work and reporting; ad spend separate"];return e("article",{className:p?"program-card--launch":"program-card--growth",key:d.id,id:i?d.id:void 0},e("div",{className:"program-kind"},p?"PLATFORM + LAUNCH SETUP":"ONGOING GROWTH PROGRAM"),e("div",{className:"program-card-content"},e("span",{className:"program-tag"},p?"FOR NEW MED SPAS":"FOR EXISTING MED SPAS"),e(s,null,p?"Launch":"Growth"),e("p",{className:"program-summary"},p?"The Operating System, configured and launched around your clinic.":"Managed campaigns, follow-up and ongoing website optimization."),i&&e("div",{className:"program-price"}
1170,"$",h.amount.toLocaleString("en-US"),e("span",null,"/ ",h.period),h.onboarding!==void 0?e("small",null,"+ $",h.onboarding.toLocaleString("en-US")," one-time onboarding"):e("small",null,"Scope agreed for your practice")),e("ul",null,f.map(g=>e("li",{key:g},e(De,{size:17}),e("span",null,g)))),e(Rt,{to:p?"/programs/launch":"/programs/growth",secondary:!p},p?"Explore Launch":"Explore Growth")))})),!i&&e(H,{className:"text-link programs-compare",to:"/pricing"},"Compare programs and pricing ",e(J,{size:18})))}function Dc({items:i=La["/"].faqs??[],title:s="Clear answers, before you decide.",intro:l,showAllLink:d=!0}){return e("section",{className:"section faq-section",id:"questions"},e("div",{className:"section-heading"},e(Fe,null,"A FEW THINGS TO KNOW"),e("h2",null,s),l&&e("p",null,l),d&&e(H,{className:"text-link",to:"/faq"},"All questions ",e(Ae,{size:18}))),e("div",{className:"faqs"},i.map(p=>e("details",{key:p.question},e("summary",null,p.question,e("span",{"aria-hidden":"true"},"+")),e("p",null,p.answer),p.action&&e(H,{className:"text-link",to:p.action.href},p.action.label,e(Ae,{size:16,"aria-hidden":"true"}))))))}function $i(){var l;let i=ci(xa().pathname),s=(l=La[i])==null?void 0:l.closing;return e("div",{className:"flow-closer"},e(yy,null),e(zn,{kind:"rise"},e("section",{className:"closing"},e(Fe,null,"SEE IT FOR YOUR PRACTICE"),e("h2",null,(s==null?void 0:s.title)??"See your clinic in the platform."),e("p",null,(s==null?void 0:s.body)??"Walk through the tools and talk through the setup with us."),e(Rt,{to:(s==null?void 0:s.action.href)??"/discovery-call"},(s==null?void 0:s.action.label)??"Book a demo"))))}function jy(){return e("section",{className:"hero home-hero hero-v8"},e(zn,{className:"hero-v8-copy",entrance:"mount"},e(Fe,null,"DONE-FOR-YOU MED SPA SOFTWARE"),e("h1",null,"From your first patient.",e("br",null),e("span",null,"To their next visit.")),e("p",null,"We give you one connected system for the whole patient journey. We handle the setup, so you can focus on your practice."),e("ul",{className:"hero-v12-benefits"},["A branded website with online booking.","Clinical records, forms and treatment photos.","Attract new patients. Automate follow-up. Bring them back."].map(i=>e("li",{key:i},e(De,{size:18,"aria-hidden":"true"}),e("span",null,i)))),e("div",{className:"hero-actions"},e(Rt,{to:"/programs/launch"},"Explore Launch"),e(Rt,{to:"/platform",secondary:!0},"See the whole platform"))),e(eh,null))}function Dy({shellOnly:i=!1}){return e(Y.Fragment,null,e(jy,null),!i&&e(Y.Fragment,null,e(Ym,null,e($r,{initialMediaPriority:!1})),e(Vm,{logos:Jm}),e(Xm,null),e(zn,null,e(qm,null)),e(Hm,null),e(zn,null,e(th,null)),e(Rc,null),e(Dc,null),e($i,null)))}var Or=[{key:"menu",title:"Choose a service",body:"Patients browse your services with a clear description, duration and price."},{key:"cart",title:"Review the booking",body:"Selected services stay in view before the patient moves on."},{key:"staff",title:"Choose a provider",body:"The booking flow shows the provider choices configured for your practice."},{key:"calendar",title:"Pick a time",body:"Patients select from the dates and times your clinic makes available."},{key:"checkout",title:"Complete the details",body:"Patients add their contact details and complete the payment step you configure for the selected service."}];function Py(){let[i,s]=(0,ft.useState)(0);return e("section",{className:"section booking-walkthrough",id:"booking"},e("div",{className:"section-heading centered"},e(Fe,null,"ONLINE BOOKING"),e("h2",null,"This is what booking",e("br",null),"looks like for your patients."),e("p",null,"A service-led booking experience, configured with your treatments, staff and availability.")),e("div",{className:"booking-steps",role:"group","aria-label":"Booking walkthrough steps"},Or.map((l,d)=>e("button",{key:l.key,className:d===i?"selected":"","aria-pressed":d===i,onClick:()=>s(d)},e("span",null,"0",d+1),l.title))),e("div",{className:"booking-screen"},e(Tn,{file:"booking-v2-"+Or[i].key,alt:`Services V2: ${Or[i].title}. Fictional sample data.`,caption:"Services V2 booking example · sample services, dates and prices."}),e("div",{className:"booking-caption"},e("span",null,"0",i+1," / 05"),e("h3",null,Or[i].title),e("p",null,Or[i].body),i===4&&e("div",{className:"booking-payment-detail"},e("strong",null,"The payment step, explained."),e("dl",null,e("div",null,e("dt",null,"Patient details"),e("dd",null,"Name, email & phone")),e("div",null,e("dt",null,"Payment"),e("dd",null,"Configured card checkout")),e("div",null,e("dt",null,"Amount due"),e("dd",null,"Your service or deposit rule"))),e("p",null,"Payment c
1170ollection depends on the connected provider and your booking configuration. The values shown are examples.")))))}function Gi({path:i}){let s=La[i];if(!s)return null;let l=i==="/programs/launch",d=e(Y.Fragment,null,e(Fe,null,s.eyebrow),e("h1",null,s.title),e("p",null,s.intro),(s.primaryAction||s.secondaryAction)&&e("div",{className:"hero-actions"},s.primaryAction&&e(Rt,{to:s.primaryAction.href},s.primaryAction.label),s.secondaryAction&&e(Rt,{to:s.secondaryAction.href,secondary:!0},s.secondaryAction.label)));return e("section",{className:`hero page-hero ${i==="/emr"?"emr-hero":""} ${l?"hero-v8 hero-v8--launch":""}`},l?e(Y.Fragment,null,e(zn,{className:"hero-v8-copy",entrance:"mount"},d),e(eh,null)):d)}function ah({path:i,omit:s=[]}){let l=La[i];return l?e(Y.Fragment,null,l.sections.filter(d=>!s.includes(d.id)).map((d,p)=>e("section",{id:d.id,key:d.id,className:`section copy-section copy-section--${p%3}`},e("div",{className:"section-heading"},d.eyebrow&&e(Fe,null,d.eyebrow),e("h2",null,d.title),e("p",null,d.body)),d.bullets&&e("ul",{className:"checklist"},d.bullets.map(h=>e("li",{key:h},e(De,{size:18}),e("span",null,h)))),d.cards&&e("div",{className:"copy-cards"},d.cards.map(h=>e("article",{key:h.title},e("h3",null,h.title),e("p",null,h.body),h.bullets&&e("ul",null,h.bullets.map(f=>e("li",{key:f},f))),h.href&&e(H,{className:"text-link",to:h.href},h.linkLabel??"Explore"," ",e(Ae,{size:16}))))),d.action&&e(Rt,{to:d.action.href,secondary:!0},d.action.label)))):null}function mm(){let[i,s]=(0,ft.useState)(!1),l=Nt+"client-work/sunshine-branded-confirmation.jpg",d="Sunshine Mobile Wellness appointment confirmation email with a fictional sample visitor, consultation date and appointment time.";return e("figure",{className:"software-screen"},i?e("div",{className:"screen-error",role:"status"},e("p",null,"The image could not load. ",d),e("p",null,"Try opening the full-size image below.")):e("img",{src:l,width:"720",height:"1000",style:{aspectRatio:"720 / 1000"},loading:"lazy",alt:d,onError:()=>s(!0)}),e("figcaption",null,"Branded appointment email created for Sunshine Mobile Wellness. Sample preview."))}function ys({clinical:i=!1,ids:s}){return e("div",{className:"feature-rows"},(i?[["clinical-notes","Clinical notes","The treatment record,<br/>in one workspace.","Procedure details, vitals, SOAP notes and treatment-area documentation are part of the clinical workflow.","emr-treatment-note","Draft clinical treatment note with fictional sample data"],["consents","Forms & consents","Keep consent status<br/>in view.","Send your clinic-approved forms and review the consent status shown beside clinical notes. Your team reviews the patient record before treatment.","emr-notes-list","Clinical notes list showing sample consent and GFE statuses"],["inventory","Inventory","Know what is<br/>on the shelf.","Review products, available quantities, batches and low-stock indicators in the inventory workspace.","emr-inventory","EMR inventory listing with fictional products and quantities"],["payments","Payment records","The financial side<br/>of the clinical record.","Review orders, invoices and payment statuses from the payments area of the EMR.","emr-payments","EMR payment records with fictional amounts"]]:[["conversations","CRM & conversations","The conversation<br/>stays with your team.","Review the thread, find recent messages and follow up with context from one team inbox.","inbox","Team inbox with sample conversations"],["email-marketing","Branded email","Follow-up that looks<br/>like your clinic.","Your branding carries into appointment confirmations and follow-up. We prepare the messages around your clinic.","email-stats","Email marketing statistics with fictional campaign data"],["dashboard","Dashboard","A clearer view<br/>of the appointment book.","Review appointments by status and calendar, and choose a date range for the numbers you need.","owner-dashboard","Appointment dashboard with sample metrics"]]).filter(l=>!s||s.includes(l[0])).map(([l,d,p,h,f,g],b)=>e("section",{className:`section feature-row ${b%2?"reversed":""}`,id:l,key:l},e("div",{className:"feature-row-copy"},e(Fe,null,d),e("h2",null,p.split("<br/>").map((u,N)=>e("span",{key:u},N>0&&e("br",null),u))),e("p",null,h),e(H,{className:"text-link",to:"/features/"+l},"Explore the feature ",e(Ae,{size:18}))),l==="email-marketing"?e(mb,null):e(Tn,{file:f,alt:g,className:f==="emr-treatment-note"?"clinical-note-screen":""}))))}
1170function Oy(){return e(Y.Fragment,null,e(Gi,{path:"/platform"}),e("div",{id:"product-tour"},e($r,null)),e(Xm,null),e("section",{className:"section"},e("div",{className:"section-heading centered"},e(Fe,null,"BUILT AROUND THE PATIENT JOURNEY"),e("h2",null,"Every step has",e("br",null),"the right tools behind it.")),e(Rm,{mode:"compact",featureIds:["website","booking","appointment-reminders","intake-consent-automation","retention","advertising","clinical-notes","gfe-coordination","inventory","payments"]}),e(Rt,{to:"/features",secondary:!0},"See all features")),e("section",{className:"section platform-setup-link"},e("div",null,e(Fe,null,"DONE FOR YOU"),e("h2",null,"Both systems. One clinic-specific setup."),e("p",null,"Launch brings the website, Marketing System and EMRMedSpa together around your clinic.")),e(Rt,{to:"/programs/launch",secondary:!0},"See what Launch includes")),e($i,null))}function nh(){return e("section",{className:"section",id:"advertising"},e(Fc,{compact:!0}))}var Fy=[{id:"reach-and-book",label:"Reach & book",detail:"Website, booking & first ads"},{id:"prepare-visits",label:"Prepare for visits",detail:"Reminders, forms & GFE"},{id:"bring-patients-back",label:"Bring patients back",detail:"Follow-up & branded messages"},{id:"manage-the-day",label:"Manage the day",detail:"Inbox, email & dashboard"}];function _y(){return e(Y.Fragment,null,e(Gi,{path:"/marketing-system"}),e(zc,{path:"/marketing-system",items:Fy,label:"Explore Med Spa Marketing AI"}),e(Cn,{id:"reach-and-book",label:"Reach & book",number:"01"},e(ih,null),e(Fm,null),e(nh,null)),e(Cn,{id:"prepare-visits",label:"Prepare for visits",number:"02",tinted:!0},e("section",{className:"section marketing-automation",id:"pre-visit"},e("div",null,e(Fe,null,"PREPARED BEFORE THEY ARRIVE"),e("h2",null,"Reminders, forms",e("br",null),"and the next step.",e("br",null),"Already in place."),e("p",null,"Appointment messages, treatment-specific forms and outstanding-paperwork reminders follow the booking. Good Faith Exam coordination is included where your treatment requires it."),e(H,{className:"text-link",to:"/features/intake-consent-automation"},"Explore pre-visit automation ",e(J,{size:17}))),e(pb,null))),e(Cn,{id:"bring-patients-back",label:"Bring patients back",number:"03"},e("section",{className:"section"},e(ub,null)),e("section",{className:"section launch-retention",id:"retention"},e("div",null,e(Fe,null,"RETENTION FOR EACH TREATMENT"),e("h2",null,"The visit ends.",e("br",null),"The relationship",e("br",null),"keeps going."),e("p",null,"Return-visit invitations, reviews, birthdays and win-back follow your clinicâs services. Approved aftercare runs separately with post-treatment instructions."),e(H,{className:"text-link",to:"/features/retention"},"Explore treatment retention ",e(J,{size:17}))),e(Bm,null)),e(Jb,null)),e(Cn,{id:"manage-the-day",label:"Manage the day",number:"04",tinted:!0},e(ys,null)),e($i,null))}function Uy(){var s;let i=La["/emr"].sections.find(l=>l.id==="photos");return e("section",{className:"section emr-photos",id:"photos"},e("div",{className:"section-heading"},e(Fe,null,i.eyebrow),e("h2",null,i.title),e("p",null,i.body)),e("div",{className:"photo-workflow-grid"},e("div",null,e(Tn,{file:"emr-treatment-note",className:"photo-control-screen",viewportClassName:"photo-control-viewport",alt:"Photos section in a clinical note with an Add / Capture Photo control and the line Photos attach to this note",caption:"Clinical-note photo attachment control · interface illustration."}),e("ul",{className:"checklist"},(s=i.bullets)==null?void 0:s.map(l=>e("li",{key:l},e(De,{size:18,"aria-hidden":"true"}),e("span",null,l))))),e(Tn,{file:"emr-body-map-marked",alt:"Clinical treatment-area mapping controls with fictional selected face areas",caption:"Treatment-area mapping · interface illustration with sample markings."})))}var qy=[{id:"prepare-care",label:"Prepare for care",detail:"Schedule, forms & exams"},{id:"document-care",label:"Document the visit",detail:"Notes, photos & treatment areas"},{id:"practice-operations",label:"Run the practice",detail:"Inventory, payments & tools"}
1170,{id:"clinical-access",label:"Set up access",detail:"Privacy, roles & BAA"}];function Wy(){return e(Y.Fragment,null,e(Gi,{path:"/emr"}),e(zc,{path:"/emr",items:qy,label:"Explore EMRMedSpa"}),e(Cn,{id:"prepare-care",label:"Prepare for care",number:"01"},e("section",{className:"emr-opening"},e("div",{className:"emr-wordmark"},e(da,{size:22}),e("strong",null,"EMRMedSpa"),e("span",null,"The clinical workspace within your Operating System.")),e(Tn,{file:"emr-calendar",alt:"EMR calendar with fictional providers and appointment records"})),e(ys,{clinical:!0,ids:["consents"]}),e(Wm,{id:"gfe-coordination"})),e(Cn,{id:"document-care",label:"Document the visit",number:"02",tinted:!0},e(ys,{clinical:!0,ids:["clinical-notes"]}),e(Uy,null)),e(Cn,{id:"practice-operations",label:"Run the practice",number:"03"},e(ys,{clinical:!0,ids:["inventory","payments"]}),e("section",{className:"section clinical-more"},e("div",{className:"section-heading"},e(Fe,null,"THE CLINICAL DETAILS"),e("h2",null,"More than",e("br",null),"an appointment record.")),e(Rm,{area:"emr",mode:"compact",featureIds:["in-room","patient-workspace","protocols","templates","photos","inventory"]}))),e(Cn,{id:"clinical-access",label:"Set up access",number:"04",tinted:!0},e("section",{className:"section security-callout"},e(da,{size:30,strokeWidth:1.5}),e("div",null,e("h2",null,"Talk through HIPAA, access and clinical data."),e("p",null,"Discuss the Business Associate Agreement (BAA), staff access and clinical responsibilities before setup.")),e(Rt,{to:"/security",secondary:!0},"HIPAA & security"))),e($i,null))}function Vy(){return e(Y.Fragment,null,e(Gi,{path:"/contact"}),e("section",{className:"section contact-panel",id:"request-demo"},e("div",null,e(Fe,null,"A WALKTHROUGH FOR YOUR PRACTICE"),e("h2",null,"See the tools.",e("br",null),"Talk through your clinic."),e("p",null,"Explore the marketing system and EMR, discuss the setup, and understand the difference between Launch and Growth."),e("ul",{className:"checklist"},e("li",null,e(De,{size:18}),"Booking, follow-up and campaign setup"),e("li",null,e(De,{size:18}),"Clinical notes, consent status and inventory"),e("li",null,e(De,{size:18}),"Program fit, onboarding and separate costs"))),e("div",{className:"contact-card"},e(He,{size:35,strokeWidth:1.3}),e("h3",null,"Platform demo",e("br",null),"with Rob Upland"),e("p",null,"Choose a time to walk through booking, follow-up and EMRMedSpa."),e(H,{className:"button",to:"/discovery-call"},"Choose a time ",e(Ae,{size:17})),e("span",null,"Opens the Med Spa Marketing AI Discovery Call page."),e("a",{className:"text-link",href:"mailto:[email protected]"},"Email Rob ",e(Ae,{size:15})))))}function By({path:i}){let s=i==="/programs/launch";return e("section",{className:`section program-scene program-scene--${s?"launch":"growth"}`},e("div",{className:"section-heading"},e(Fe,null,s?"PREPARE FOR THE FIRST APPOINTMENT":"START WITH THE PRACTICE YOU HAVE"),e("h2",null,s?"Booking and clinical work, ready to review.":"A clearer view of the work ahead."),e("p",null,s?"Explore the patient-facing booking experience and the clinical workspace we configure around your clinic.":"Use the demo to examine appointment activity and discuss which tools and support belong in your Growth engagement.")),s?e("div",{className:"product-areas program-scene-grid"},e(Tn,{file:"booking-v2-menu",alt:"Services V2 booking menu with fictional sample services"}),e(Tn,{file:"emr-notes-list",alt:"EMR clinical notes list with fictional sample records and consent statuses"})):e(Tn,{file:"owner-dashboard",alt:"Appointment dashboard with fictional sample activity",caption:"Platform example with fictional data. Growth platform access and services are agreed within the engagement scope."}))}var Hy=[{id:"launch-tour",label:"See the journey",detail:"The platform in practice"},{id:"included",label:"Explore the setup",detail:"Your brand & both systems"},{id:"launch-patient-flow",label:"Reach & retain",detail:"Retention & first campaigns"},{id:"launch-pricing",label:"Plan your launch",detail:"Price, scope & questions"}];function Yy(){var l;let i=La["/programs/launch"],s=i.programPrice;
1170return e(Y.Fragment,null,e(Gi,{path:"/programs/launch"}),e(zc,{path:"/programs/launch",items:Hy,label:"Explore the Launch program"}),e(Ym,{id:"launch-tour"},e($r,{compact:!0})),e("section",{className:"section launch-included",id:"included"},e("div",null,e(Fe,null,"THE COMPLETE LAUNCH SETUP"),e("h2",null,"We build the whole journey around your clinic."),e("p",null,"Your website, Marketing System and EMRMedSpa are included in Launch. We handle the setup around your brand, services and clinical teamâs decisions."),e(Rt,{to:"/discovery-call",secondary:!0},"Book a demo")),e("ol",null,Hb.map((d,p)=>e("li",{key:d.title},e("span",null,"0",p+1),e("h3",null,d.title),e("p",null,d.body))))),e("section",{className:"section"},e("div",{className:"section-heading centered"},e(Fe,null,"TWO SYSTEMS. ONE LAUNCH."),e("h2",null,"The patient-facing work.",e("br",null),"The clinical work.",e("br",null),"Both are included."),e("p",null,"We configure both workspaces around your clinic, so your team knows where each part of the day happens.")),e("div",{className:"launch-two-parts"},e("article",null,e(Fe,null,"MED SPA MARKETING AI"),e("h3",null,"From website to return visit."),e("p",null,"Your website, booking, conversations, appointment messages, branded emails and treatment-specific retention."),e(H,{className:"text-link",to:"/marketing-system"},"Explore Med Spa Marketing AI ",e(J,{size:17})),e(gm,{file:"inbox",alt:"Team inbox illustration with fictional sample messages."}),e("p",{className:"visual-source-note"},"Product interface illustration · fictional sample messages.")),e("article",null,e(Fe,null,"EMRMEDSPA"),e("h3",null,"The record behind the visit."),e("p",null,"Clinical notes, consent and GFE status, photos, treatment mapping, inventory and payment records."),e(H,{className:"text-link",to:"/emr"},"Explore EMRMedSpa ",e(J,{size:17})),e(gm,{file:"emr-notes-list",alt:"Clinical notes list with fictional treatment, consent and GFE records."}),e("p",{className:"visual-source-note"},"Product interface illustration · fictional sample records.")))),e("section",{className:"section launch-retention",id:"launch-patient-flow"},e("div",null,e(Fe,null,"BUILT TO BRING PATIENTS BACK"),e("h2",null,"Retention is",e("br",null),"part of the setup."),e("p",null,"We configure return-visit invitations for each treatment and reactivation for patients who have not returned. Approved aftercare is a separate sequence for post-treatment instructions."),e(H,{className:"text-link",to:"/features/retention"},"See treatment-specific retention ",e(J,{size:17}))),e(Bm,null)),e(nh,null),e(ah,{path:"/programs/launch",omit:["included","first-campaign","questions"]}),e("section",{className:"section launch-price-wrap",id:"launch-pricing"},e("div",{className:"section-heading"},e(Fe,null,"ONE PLATFORM. ONE LAUNCH PROGRAM."),e("h2",null,"The software and the setup,",e("br",null),"with a clear monthly price.")),e("div",{className:"program-price-banner"},e("div",null,e("span",null,"LAUNCH · FOR NEW MED SPAS"),e("strong",null,"$",s.amount.toLocaleString("en-US"),e("small",null,"/ ",s.period)),e("p",null,"+ $",(l=s.onboarding)==null?void 0:l.toLocaleString("en-US")," one-time onboarding"),e("ul",{className:"program-price-disclosures"},s.disclosures.map(d=>e("li",{key:d},d)))),e(Rt,null,"Book a demo"))),e(Rc,null),i.faqs&&e(Dc,{items:i.faqs,showAllLink:!0}),e($i,null))}function Ky({path:i}){let s=La[i];if(!s)return e("section",{className:"section not-found"},e(Fe,null,"PAGE NOT FOUND"),e("h1",null,"Letâs get you",e("br",null),"back to the platform."),e(Rt,{to:"/"},"Go to the homepage"));let l=i.startsWith("/programs/"),d=s.sections.find(p=>p.id==="questions");return e(Y.Fragment,null,e(Gi,{path:i}),i==="/programs/growth"&&e("aside",{className:"section program-proof-links","aria-label":"Client experiences"},e("p",null,"See how the work looks in established practices."),e(H,{to:"/customer-stories#noemi-case-study"},"Natural Rejuvenation: patient reactivation and follow-up"),e(H,{to:"/customer-stories#mary-case-study"},"Dr. Mary: campaigns and booking support")),i==="/faq"&&e($y,null),i==="/pricing"&&e(th,{prices:!0}),s.programPrice&&e("section",{className:"program-price-banner","aria-label":"Program price"},e("div",null,e("span",null,s.eyebrow),e("strong",null,"$",s.programPrice.amount.toLocaleStr
1170ing("en-US"),e("small",null,"/ ",s.programPrice.period)),s.programPrice.onboarding!==void 0&&e("p",null,"+ $",s.programPrice.onboarding.toLocaleString("en-US")," one-time onboarding"),e("ul",{className:"program-price-disclosures"},s.programPrice.disclosures.map(p=>e("li",{key:p},p)))),e(Rt,null,"Book a demo")),l&&e(By,{path:i}),i==="/customer-stories"&&e(Y.Fragment,null,e(Hm,{full:!0}),e(sy,null),e(Vm,{logos:Jm}),e(Rc,null)),i==="/features"&&e(tb,null),i==="/about"&&e(oy,{portrait:"/assets/team-v6/rob-upland.png"}),e(ah,{path:i,omit:i==="/pricing"?["launch","growth"]:i==="/customer-stories"?["stories"]:i==="/about"?["company"]:s.faqs?["questions"]:[]}),s.faqs&&e(Dc,{items:s.faqs,title:d==null?void 0:d.title,intro:d==null?void 0:d.body,showAllLink:i!=="/faq"}),i!=="/contact"&&e($i,null))}function $y(){return e("section",{className:"section buyer-guides","aria-labelledby":"buyer-guides-title"},e("div",{className:"section-heading"},e(Fe,null,"BEFORE YOU CHOOSE"),e("h2",{id:"buyer-guides-title"},"Make an informed next step."),e("p",null,"Practical guides for planning your systems, migration and marketing measurement.")),e("div",{className:"buyer-guide-links"},e(H,{to:"/guides/med-spa-crm-vs-emr"},"CRM and EMR: what each system does",e(J,{size:18,"aria-hidden":!0})),e(H,{to:"/guides/med-spa-software-migration-checklist"},"A practical clinic migration checklist",e(J,{size:18,"aria-hidden":!0})),e(H,{to:"/guides/med-spa-marketing-bookings-and-collected-revenue"},"Booked appointments and collected revenue",e(J,{size:18,"aria-hidden":!0}))))}function Gy(){return e("section",{className:"section client-review-library"},e("p",{className:"eyebrow"},"CLIENT REVIEW LIBRARY"),e("h1",null,"Client reviews"),e("p",{className:"section-intro"},"Selected campaign reviews prepared for client review. Unlisted links only."),e("ul",{className:"client-review-list",role:"list"},e("li",null,e("article",{className:"client-review-card"},e("div",{className:"client-review-card__head"},e("h2",null,"Evidence MD"),e("p",{className:"client-review-card__date"},"September 2026")),e("dl",{className:"client-review-card__meta"},e("div",null,e("dt",null,"Campaign"),e("dd",null,"Carbon Laser Facial campaign")),e("div",null,e("dt",null,"Date"),e("dd",null,"September 14, 2026")),e("div",null,e("dt",null,"Version"),e("dd",null,"1")),e("div",null,e("dt",null,"Scope"),e("dd",null,"6 static ads / 4 videos / landing page"))),e(H,{className:"button",to:"/client-reviews/evidence-md/carbon-laser-facial-september-2026"},"Open review",e(Ae,{size:17})))),e("li",null,e("article",{className:"client-review-card"},e("div",{className:"client-review-card__head"},e("h2",null,"Evidence MD"),e("p",{className:"client-review-card__date"},"September 2026")),e("dl",{className:"client-review-card__meta"},e("div",null,e("dt",null,"Campaign"),e("dd",null,"New patient campaign")),e("div",null,e("dt",null,"Date"),e("dd",null,"September 14, 2026")),e("div",null,e("dt",null,"Version"),e("dd",null,"2")),e("div",null,e("dt",null,"Scope"),e("dd",null,"4 concepts / 8 videos"))),e(H,{className:"button",to:"/client-reviews/evidence-md/september-2026"},"Open review",e(Ae,{size:17}))))))}function Qy(){return e("section",{className:"client-review-view",style:{width:"100%",maxWidth:"none",margin:0,padding:0}},e("div",{className:"client-review-actions",style:{maxWidth:1360,margin:"0 auto",padding:"24px clamp(20px,3vw,44px)",boxSizing:"border-box"}},e(H,{className:"text-link",to:"/client-reviews"},e(Ae,{size:17}),"Back to client library")),e(Hf,{runtime:ft}))}function Zy(){return e("section",{className:"client-review-view",style:{width:"100%",maxWidth:"none",margin:0,padding:0}},e("div",{className:"client-review-actions",style:{maxWidth:1360,margin:"0 auto",padding:"24px clamp(20px,3vw,44px)",boxSizing:"border-box"}},e(H,{className:"text-link",to:"/client-reviews"},e(Ae,{size:17}),"Back to client library")),e(Kf,{runtime:ft}))}var Pc={sales:{items:[{name:"Main Discovery",duration:"30 minutes",purpose:"A first conversation about your practice, goals and fit.",href:"https://medspamarketing.ai/discovery-call"},{name:"USMD Discovery",duration:"30 minutes",purpose:"A first conversation for prospects introduced through US Medical Directors.",href:"https://medspamarketing.ai/us-medical-directors/discovery-call"},{name:"Time with Rob",duration:"30 minutes",purpose:"Continue the conversation, review a re
1170commendation or work through a decision.",href:"https://medspamarketing.ai/time-with-rob"}]},onboarding:{items:[{name:"System Setup",duration:"45 minutes",purpose:"For enrolled USMD Accelerator clients to plan their system setup with Rob.",href:"https://medspamarketing.ai/us-medical-directors/accelerator-onboarding"},{name:"Client Onboarding",duration:"60 minutes",purpose:"Connect the accounts and access needed for your onboarding.",href:"https://medspamarketing.ai/client-onboarding"}]},"client-support":{items:[{name:"Client Support",duration:"15 minutes",purpose:"Help with an existing account or a specific setup question.",href:"https://medspamarketing.ai/client-support"}]}};function Ms(i){return e("nav",{className:"cal-breadcrumbs","aria-label":"Breadcrumb"},e("ol",null,i.map(function(s,l){var d=l===i.length-1;return e("li",{key:s.label},d?e("span",{"aria-current":"page"},s.label):e(H,{to:s.to},s.label),l<i.length-1?e("span",{"aria-hidden":"true",className:"cal-crumb-sep"},"/"):null)})))}function Ss(i,s,l){return e("header",{className:"cal-intro"},e("p",{className:"cal-eyebrow"},i),e("h1",{id:"cal-title",className:"cal-title"},s),e("p",{className:"cal-lede"},l))}function Oc(i){var s="cal-item-"+i.name.toLowerCase().replace(/[^a-z0-9]+/g,"-");return e("li",{className:"cal-item",key:i.name},e(H,{className:"cal-item-link",to:i.href,"aria-labelledby":s},e("div",{className:"cal-item-top"},e("h2",{id:s},i.name),e(Ae,{size:22,className:"cal-item-arrow","aria-hidden":"true"})),e("p",{className:"cal-purpose"},i.purpose),e("p",{className:"cal-duration"},i.duration,e("span",{className:"cal-duration-sep","aria-hidden":"true"},"·"),"Video call")))}function Jy(){var i=[{key:"sales",label:"Sales",href:"/calendars/sales",description:"First conversations about your practice, goals and fit.",count:3},{key:"onboarding",label:"Onboarding",href:"/calendars/onboarding",description:"Set up your system and connect the access you need.",count:2},{key:"client-support",label:"Client Support",href:"/calendars/client-support",description:"Help with an existing account or a specific setup question.",count:1}];return e("section",{className:"cal-page","aria-labelledby":"cal-title"},e("div",{className:"cal-shell"},Ms([{label:"Calendars",to:"/calendars"}]),Ss("BOOK A MEETING","Calendars","Choose the right meeting."),e("ul",{className:"cal-categories"},i.map(function(s){return e("li",{className:"cal-category",key:s.key},e(H,{className:"cal-category-link",to:s.href,"aria-labelledby":"cal-cat-"+s.key},e("div",{className:"cal-category-top"},e("h2",{id:"cal-cat-"+s.key},s.label),e(Ae,{size:22,className:"cal-category-arrow","aria-hidden":"true"})),e("p",{className:"cal-category-desc"},s.description),e("p",{className:"cal-category-count"},s.count+(s.count===1?" calendar":" calendars"))))}))))}function Xy(){var i=Pc.sales;return e("section",{className:"cal-page","aria-labelledby":"cal-title"},e("div",{className:"cal-shell"},Ms([{label:"Calendars",to:"/calendars"},{label:"Sales",to:"/calendars/sales"}]),Ss("SALES","Sales","First conversations about your practice, goals and fit."),e("ul",{className:"cal-list"},i.items.map(Oc))))}function ev(){var i=Pc.onboarding;return e("section",{className:"cal-page","aria-labelledby":"cal-title"},e("div",{className:"cal-shell"},Ms([{label:"Calendars",to:"/calendars"},{label:"Onboarding",to:"/calendars/onboarding"}]),Ss("ONBOARDING","Onboarding","Set up your system and connect the access you need."),e("ul",{className:"cal-list"},i.items.map(Oc))))}function tv(){var i=Pc["client-support"];return e("section",{className:"cal-page","aria-labelledby":"cal-title"},e("div",{className:"cal-shell"},Ms([{label:"Calendars",to:"/calendars"},{label:"Client Support",to:"/calendars/client-support"}]),Ss("CLIENT SUPPORT","Client Support","Help with an existing account or a specific setup question."),e("ul",{className:"cal-list"},i.items.map(Oc))))}function av({initialHomeShell:i=!1}){let s=xa(),l=ci(s.pathname),[d,p]=(0,ft.useState)(!i);(0,ft.useEffect)(()=>{if(d)return;if(l!=="/"){p(!0);return}let f=0,g=requestAnimationFrame(()=>{f=requestAnimationFrame(()=>p(!0))});return()=>{cancelAnimationFrame(g),cancelAnimationFrame(f)}},[d,l]);let h=l==="/"&&!d;
1170return e(Y.Fragment,null,e("a",{className:"skip-link",href:"#main"},"Skip to content"),e(Ty,null),e(Ry,null),e("main",{id:"main",tabIndex:-1},dm[l]?e(xg,{to:{pathname:dm[l],search:s.search,hash:s.hash},replace:!0}):l===jc?e(Cy,null):Wr(l)?e(Sy,{key:l,page:Wr(l)}):l==="/"?e(Dy,{shellOnly:h}):l==="/platform"?e(Oy,null):l==="/marketing-system"?e(_y,null):l==="/emr"?e(Wy,null):l==="/programs/launch"?e(Yy,null):l==="/client-reviews"?e(Gy,null):l==="/client-reviews/evidence-md/september-2026"?e(Qy,null):l==="/client-reviews/evidence-md/carbon-laser-facial-september-2026"?e(Zy,null):l==="/calendars"?e(Jy,null):l==="/calendars/sales"?e(Xy,null):l==="/calendars/onboarding"?e(ev,null):l==="/calendars/client-support"?e(tv,null):l==="/contact"?e(Vy,null):l==="/legal/privacy-policy"||l==="/legal/terms-and-conditions"?e(cy,{path:l}):l==="/integrations"?e(hy,null):l.startsWith("/features/")&&za.some(f=>f.href===l)?e(Vb,{key:l,id:l.split("/")[2],bookingWalkthrough:e(Fm,null)}):Cc(l)?e(dy,{path:l}):e(Ky,{path:l})),!h&&e(Iy,null))}function hm({initialHomeShell:i=!1}){return e(Lg,null,e(av,{initialHomeShell:i}))}var nv=[{id:"msmai-meta-pixel",code:`!function(f,b,e,v,n,t,s) 1171{if(f.fbq)return;n=f.fbq=function(){n.callMethod? 1172n.callMethod.apply(n,arguments):n.queue.push(arguments)}; 1173if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0'; 1174n.queue=[]}(window, document,'script', 1175'https://connect.facebook.net/en_US/fbevents.js'); 1176fbq('init', '1899497044291043'); 1177fbq('track', 'PageView');`},{id:"msmai-google-analytics-config",code:`
vendor: 127 bytes, lines 1177-1180
1177window.dataLayer = window.dataLayer || []; 1178function gtag(){dataLayer.push(arguments);} 1179gtag('js', new Date()); 1180gtag('config', '
1180G-91Z3HWBN0R
vendor: 3 bytes, line 1180
1180');
1180`}];function ds(i,s,l={}){if(document.getElementById(i))return;let d=document.createElement("script");d.id=i,d.src=s,d.async=!0;for(let[p,h]of Object.entries(l))d.setAttribute(p,h);document.body.appendChild(d)}function iv(i){let s=!1,l,d,p=()=>{s||(s=!0,l==null||l.disconnect(),d!==void 0&&window.clearTimeout(d),window.removeEventListener("pagehide",p),window.removeEventListener("pointerdown",p,!0),window.removeEventListener("keydown",p,!0),i())};if(document.visibilityState==="hidden"){p();return}window.addEventListener("pagehide",p,{once:!0}),window.addEventListener("pointerdown",p,{once:!0,capture:!0,passive:!0}),window.addEventListener("keydown",p,{once:!0,capture:!0}),d=window.setTimeout(p,5e3);try{l=new PerformanceObserver(h=>{h.getEntries().some(f=>f.name==="first-contentful-paint")&&p()}),l.observe({type:"paint",buffered:!0})}catch{window.requestAnimationFrame(()=>window.requestAnimationFrame(p))}}const fm=["medspamarketing.ai","www.medspamarketing.ai"],rv={"/discovery-call":"demo","/us-medical-directors/discovery-call":"partner_demo","/programs/launch":"launch","/programs/growth":"growth","/guides/med-spa-crm-vs-emr":"guide_crm_emr","/guides/med-spa-software-migration-checklist":"guide_migration","/guides/med-spa-marketing-bookings-and-collected-revenue":"guide_measurement"},ov=new Set(["/","/about","/contact","/customer-stories","/discovery-call","/emr","/faq","/features","/features/advertising","/features/aftercare-rebook","/features/appointment-recovery","/features/appointment-reminders","/features/ask-ai","/features/birthday-winback","/features/body-mapping","/features/booking","/features/calendars","/features/clinical-notes","/features/consents","/features/contacts-pipeline","/features/conversations","/features/dashboard","/features/deposits-reminders","/features/email-marketing","/features/gfe-coordination","/features/gift-cards","/features/in-room","/features/intake-consent-automation","/features/inventory","/features/packages","/features/patient-workspace","/features/payments","/features/photos","/features/protocols","/features/retention","/features/reviews","/features/social-planner","/features/subscriptions","/features/templates","/features/website","/guides/med-spa-crm-vs-emr","/guides/med-spa-marketing-bookings-and-collected-revenue","/guides/med-spa-software-migration-checklist","/how-it-works","/integrations","/legal/privacy-policy","/legal/terms-and-conditions","/marketing-system","/platform","/pricing","/programs/growth","/programs/launch","/security","/us-medical-directors/discovery-call"]);function sv(){if(!fm.includes(window.location.hostname.toLowerCase())||document.documentElement.dataset.msmaiCtaMeasurement==="ready")return()=>{};const i=window,s=navigator,l=b=>b==="/"?"/":b.replace(/\/+$/,""),d=()=>{if(typeof i.gtag!="function"||i["ga-disable-G-91Z3HWBN0R"]||s.globalPrivacyControl===!0||s.doNotTrack==="1")return!1;const b=i.dataLayer;if(Array.isArray(b))for(let u=b.length-1;u>=0;u--){const N=b[u];if(!N||N[0]!=="consent"||!["default","update"].includes(String(N[1])))continue;const v=N[2];if((v==null?void 0:v.analytics_storage)==="denied")return!1;if((v==null?void 0:v.analytics_storage)==="granted")break}return!0},p=b=>{var S;if(!b.isTrusted||b.button!==0||b.defaultPrevented||!d())return;const u=l(window.location.pathname);if(!ov.has(u))return;const N=b.target instanceof Element?b.target.closest("a[href]"):null;if(!N||N.hasAttribute("download"))return;let v;try{v=new URL(N.getAttribute("href")||"",window.location.origin+u)}catch{return}if(v.protocol!=="https:"||v.port||v.username||v.password||!fm.includes(v.hostname.toLowerCase()))return;const w=l(v.pathname),C=w===u&&v.hash==="#meeting-calendar"&&["/discovery-call","/us-medical-directors/discovery-call"].includes(u),A=C?"calendar_jump":rv[w];if(!A||!C&&w===u)return;const z=N.closest("nav")?"navigation":N.closest("footer")?"footer":N.closest("header")?"header":"content";try{(S=i.gtag)==null||S.call(i,"event","msmai_cta_click",{send_to:"G-91Z3HWBN0R",cta_target:A,source_page:u,placement:z,page_location:"https://medspamarketing.ai"+u,page_referrer:"",page_title:"Med Spa Marketing AI"})}catch{}};let h=!0;const f=()=>{h&&(h=!1,document.removeEventListener("click",p,!0),window.removeEventListener("pagehide",g),delete document.documentElement.dataset.msmaiCtaMeasurement)},g=b=>{b.persisted||f()};return document.documentElement.dataset.msmaiCtaMeasurement="ready",document.addEventListener("click",p,{capture:!0,passive:!0}),window.addEventListener("pagehide",g),f}function lv(){if(!Lc.includes(window.location.hostname.toLowerCase())||document.documentElement.dataset.msmaiIntegrations==="loaded")return;document.documentElement.dataset.msmaiIntegrations="loaded";let i=!window.fbq;
1180for(let s of nv){if(document.getElementById(s.id))continue;let l=document.createElement("script");l.id=s.id,l.textContent=s.code,document.head.appendChild(l)}sv(),iv(()=>{i&&ds("msmai-meta-sdk","https://connect.facebook.net/en_US/fbevents.js"),ds("msmai-google-analytics","https://www.googletagmanager.com/gtag/js?id=G-91Z3HWBN0R"),ds("msmai-ghl-analytics","https://links.medspamarketing.ai/js/external-tracking.js",{"data-tracking-id":"tk_ad7b109aea114e81a5f48cbbd5037ace"}),ds("msmai-chat-widget","https://beta.leadconnectorhq.com/loader.js",{"data-resources-url":"https://beta.leadconnectorhq.com/chat-widget/loader.js","data-widget-id":"69616f9d2fb2fb72f0af849c"})})}function Vt({eyebrow:i,title:s,intro:l,level:d="h2"}){return e("header",{className:"mg-special-heading"},i&&e("p",{className:"eyebrow"},i),e(d,null,s),l&&e("p",null,l))}function cv({labels:i}){return e("ol",{className:"mg-special-steps-short"},i.map((s,l)=>e("li",{key:s},e("span",{"aria-hidden":!0},l+1),s)))}function dv(i={}){if(!Ce())return e(qu,i);const l=fs[i.initialChannel||"sms"];return e("section",{className:"mg-special-section","data-mobile-graphic-origin":"contact-communication"},e(Vt,{eyebrow:"Fictional channel examples",title:"Context for the next reply."}),e(Re,{label:"Avery Sample",caption:"Fictional channel examples",renderFull:()=>e(qu,i)},e("div",null,e("div",{className:"mg-special-channel-list"},["Email","SMS","Facebook DM","Instagram DM"].map(d=>e("span",{key:d},d))),e("div",{className:"mg-special-bubble"},e("strong",null,"Avery Sample"),l.question),e("div",{className:"mg-special-mini-card",style:{marginTop:12}},e("span",null,"Assigned to · Front desk"),e("strong",null,"Check availability."),e("small",null,"Help Avery choose a time.")))))}function pv(i={}){return Ce()?e("section",{className:"mg-special-section","data-mobile-graphic-origin":"social-planner"},e(Vt,{eyebrow:"SOCIAL PLANNER + AI",title:"From a blank page to your next post.",intro:e(Y.Fragment,null,"Generate, refine and schedule.",e("br"),"Your team has the final word.")}),e(Re,{label:"Social Planner + AI",caption:"Original sample copy · no post is published here",renderFull:()=>e(Uu,i)},e(ea,{rows:yc.map(l=>({title:l.label,body:l.title}))})),!i.compact&&e("div",{className:"social-planner-story__footer"},e("p",null,"Content AI creates the draft. Ask AI helps refine it. Connected profiles and publishing permissions determine where you can post."),e(H,{to:"/integrations"},"See connected tools",e(Ae,{size:16})))):e(Uu,i)}function ih(i={}){if(!Ce())return e(am,i);const l=gs[0];return e("section",{className:"section mg-special-section","data-mobile-graphic-origin":"portfolio"},e(Vt,{eyebrow:"WEBSITES WEâVE BUILT",title:e(Y.Fragment,null,"Your clinic should",e("br"),"look like your clinic."),intro:"Explore real client websites. Different brands, services and peopleâeach with its own patient experience."}),e(Re,{label:"Your clinicâs website",caption:"Live client website capture",renderFull:()=>e(am,i)},e("div",{className:"mg-special-media"},e("strong",null,l.name),e("div",{className:"mg-special-site-crop"},e("img",{src:"/assets/portfolio-v10/"+l.id+"-mobile.jpg",alt:l.name+" live client website capture â first screen.",loading:"lazy"})),e("span",null,l.location))))}function Fc(i={}){const s=Ce(),l=(0,Je.useId)();if(!s)return e(uc,i);const d=!!i.creativeOnly,p=i.showCostExample===void 0?!i.compact:i.showCostExample,h=ri[0];return e("section",{className:"mg-special-section","data-mobile-graphic-origin":"ads-launch"},e(Vt,{eyebrow:"Meta ads + patient acquisition",title:e(Y.Fragment,null,"Different clinics.",e("br"),"Distinct creative."),intro:d?"Real ad variations for Dr. Mary, Natural Rejuvenation and KC Aesthetics. Each starts with the clinicâs own brand and offer.":"Explore creative variations built around each clinicâs brand and offer. Meta ads generate the lead; AI follow-up and a staff call help turn that interest into a booking."}),e(Re,{label:"Campaign creative",caption:h.client+" · Campaign creative",renderFull:()=>e(uc,i)},e("div",{className:"mg-special-media"},e("img",{src:h.src,alt:h.alt,width:h.width,height:h.height,loading:"lazy"}),e("strong",null,h.label))),e("div",{className:"mg-special-ads-plan"},e("div",{className:"ads-launch__plan"},e("h3",null,d?e(Y.Fragment,null,"Three decisions",e("br",null),"before launch."):e(Y.Fragment,null,"From the first ad",e("br",null),"to the first conversation.")),e("ol",null,e("li",null,e
1180("span",{"aria-hidden":"true"},"1"),e("div",null,e("h4",null,d?"The offer.":"Agree on the treatment and message."),e("p",null,d?"Choose the service and message. Your clinic approves the creative.":"Review the service, consultation path and creative together. The clinic approves the offer and wording."))),e("li",null,e("span",{"aria-hidden":"true"},"2"),e("div",null,e("h4",null,d?"The audience.":"Choose the local reach."),e("p",null,d?"Agree on the local area you want to reach.":"Around ten miles can be a starting point. We agree on the geography after reviewing the treatment, market and budget."))),e("li",null,e("span",{"aria-hidden":"true"},"3"),e("div",null,e("h4",null,d?"The budget.":"Approve the budget, then launch."),e("p",null,d?"Approve the Meta spend. We connect the form and follow-up, then launch.":"Confirm the Meta ad budget, lead form, AI follow-up and staff call notification before the first campaign goes live.")))),!d&&e("div",{className:"ads-launch__scope"},e(De,{size:19}),e("p",null,"Launch includes first creative and campaign launch. Later management is client-run or separately scoped. Ad spend is separate.")),e("p",{className:"ads-launch__small"},"Selected client creative. Offers shown reflect the original campaigns; individual image results are not claimed."))),!d&&e(Y.Fragment,null,e(Vt,{eyebrow:"After an inquiry",level:"h3",title:e(Y.Fragment,null,"Give your team",e("br"),"a reason to call."),intro:"AI starts the text conversation. Your team gets a notification to call, answer questions and help the lead book."}),e(Re,{label:"After an inquiry",caption:"Fictional lead and messages.",renderFull:()=>e(uc,i)},e(ea,{kind:"parallel",rows:[{title:"Your team gets a notification",body:"Call Jamie to discuss the consultation and help choose a time."},{title:"AI follow-up illustration",body:"AI helps with questions and booking. Your team handles the personal call."}]})),e("p",{className:"mg-special-caption"},"Fictional lead and messages. Notification recipients, SMS timing and messaging permissions are configured for your clinic. Campaign results vary.")),p&&e("section",{className:"ads-launch__cost","aria-labelledby":`${l}-cost-title`},e("div",null,e("span",null,"Meta management and ad spend"),e("h3",{id:`${l}-cost-title`},"Management and media spend are separate."),e("p",null,"Review the program scope and advertising budget together.")),e("div",null,e("dl",null,e("div",null,e("dt",null,"MSMAI Growth"),e("dd",null,"Ongoing Meta management")),e("div",null,e("dt",null,"Ad spend"),e("dd",null,"Separate · paid to Meta")),e("div",null,e("dt",null,"MSMAI Launch"),e("dd",null,"First creative + campaign launch included"))),e("p",null,"Launch includes your first creative and campaign launch. Growth includes ongoing Meta management within the agreed engagement. Ad spend is separate."),e("a",{href:"/pricing"},"Compare programs and costs",e(Ae,{size:15})),e("span",{className:"ads-launch__source-date"},"See current program pricing and separate costs."))))}function rh(i={}){return Ce()?e("div",{className:"mg-special-section","data-mobile-graphic-origin":"treatment-area"},e(Vt,{eyebrow:"VISUAL TREATMENT DOCUMENTATION",title:e(Y.Fragment,null,"Point to the area.",e("br"),"Keep the detail with the note.")}),e(Re,{label:"Treatment-area reference",caption:"Illustrative markings, not treatment guidance or an injection plan.",renderFull:()=>e(Lu,i)},e("div",{className:"mg-special-media"},e("img",{src:"/assets/product/emr-body-map-marked.png",alt:"Treatment-area mapping with fictional selected facial areas.",loading:"lazy",style:{height:166}}),e("strong",null,"The selection has a name."),e("span",null,"Forehead · Cheeks · Jawline")))):e(Lu,i)}function fc(i={}){return Ce()?e("section",{className:"mg-special-section","data-mobile-graphic-origin":"patient-benefits"},e(Vt,{eyebrow:"PACKAGE + MEMBERSHIP EXAMPLE",title:"Know what the patient has available.",intro:e(Y.Fragment,null,"Sessions, recurring billing and benefits",e("br"),"each answer a different question.")}),e(Re,{label:"Package + membership example",caption:"Illustrative package and membership. Prices, sessions and benefits are examples.",renderFull:()=>e(Wu,i)},e("div",null,e("div",{className:"mg-special-mini-card"},e("span",null,"Treatment package · Three-visit skin series"),e("strong",null,"2 sessions"),e("small",null,"remaining of 3 · $450 one-time package price")),e("div",{className:"mg-special-mini-card"},e("span",null,"Membership subscription"),e("strong",null,"$79 per month"),e("small",null,"10% off selected services"),e("p",null,"Check eligible services and membership status"))))):e(Wu,i)}function uv(i={}){return Ce()?e("section",{className:"mg-special-section","data-mobile-graphic-origin":"photo-capture"},e(Vt,{eyebrow:"PHOTOS IN THE VISIT",title:e(Y.Fragment,null,"Start with the patient.",e("br"),"Keep the photo with the treatment.")}),e(Re,{label:"In-Room on a phone",caption:"Actual In-Room controls · demonstration record",renderFull:()=>e(Bu,i)},e("div",null,e("div",{className:"mg-special-photo-crop"},e("img",{src:"/assets/product-v7/in-room-mobile.jpg",width:390,height:842,alt:"Detail of the actual In-Room phone workspace showing Capture Photo and Check Out controls for a demonstration record.",loading:"lazy"})),e(cv,{labels:["Capture on the phone","Review the image","Attach to the note"]})))):e(Bu,i)}function mv(i={}){return Ce()?e("section",{className:"mg-special-section","data-mobile-graphic-origin":"inventory-review"},e(Vt,{eyebrow:"A PRACTICAL STOCK CHECK",title:"Quantity. Threshold. Expiry.",intro:e(Y.Fragment,null,"Review the stock condition",e("br"),"before choosing the next step.")}),e(Re,{className:"mg-stock-preview",label:"Sample stock check",caption:"Fictional inventory example · quantities, thresholds, batches and dates are sample values.",renderFull:()=>e(Yu,i)},e("div",null,e("div",{className:"mg-special-mini-card"},e("span",null,"SAMPLE PRODUCT"),e("strong",null,"Disposable skin markers"),e("p",null,"24 units on hand"),e("div",{className:"mg-special-stockbar","aria-hidden":!0},e("span")),e("small",null,"Stock threshold · 10 units")),e(Za,{rows:[{label:"Stock condition",value:"Above the stock threshold"},{label:"Batch expiry",value:"September 30, 2027"}]})))):e(Yu,i)}function hv(i={}){return Ce()?e("section",{className:"mg-special-section","data-mobile-graphic-origin":"gfe-paths"},e(Vt,{eyebrow:"THE EXAM ROUTE YOUR CLINIC USES",title:e(Y.Fragment,null,"Coordinate the step.",e("br"),"Keep the clinical decision with the clinician.")}),e(Re,{label:"GFE coordination route",caption:"An exam request does not establish clinical clearance.",renderFull:()=>e(Ku,i)},e("div",null,e("div",{className:"mg-special-route-choices"},e("div",{className:"mg-special-route-card"},e("strong",null,"Through Qualiphy"),e("p",null,"Request an exam through your connected provider.")),e("span",{className:"mg-special-route-or"},"or"),e("div",{className:"mg-special-route-card"},e("strong",null,"Your own clinician"),e("p",null,"Use the clinicâs qualified clinician."))),e("div",{className:"mg-special-route-review"},"Review the clinical record before treatment"))),e("p",{className:"mg-special-caption"},"Availability and exam requirements depend on your clinicâs setup. An exam request does not establish clinical clearance.")):e(Ku,i)}function fv(i={}){if(!Ce())return e($u,i);const l=i.kind==="protocols";
1180return e("section",{className:"section mg-special-section","data-feature":i.kind,"data-mobile-graphic-origin":"clinical-guidance"},e(Vt,{eyebrow:l?"A useful path to guidance":"A starting point, then clinical judgment",title:l?"Find the document. Review the guidance.":"Choose the structure. Make the note your own.",intro:l?"Search the protocol library, open the relevant guidance and bring it into the providerâs review.":"A treatment template organizes the note. Reusable wording still needs the clinicianâs review for this visit."}),e(Re,{label:l?"Protocol lookup":"Templates & smart phrases",caption:"Workflow illustration",renderFull:()=>e($u,i)},e(ea,{rows:l?[{title:"Find",body:"Name · Modality · Indication"},{title:"Open",body:"Clinic-approved guidance"},{title:"Review & print",body:"Provider review"}]:[{title:"Choose",body:"SOAP structure"},{title:"Add wording",body:"Example wording for review."},{title:"Review",body:"The clinician adapts the wording to the actual visit."}]})),e("p",{className:"mg-special-caption"},"See this workflow in a guided demo."))}function oh(i={}){return Ce()?e("div",{className:"mg-special-section","data-mobile-graphic-origin":"inroom-actions"},e(Vt,{eyebrow:"ONE PATIENT. THE NEXT ACTION WITHIN REACH.",title:"A simpler way through the visit."}),e(Re,{label:"In-Room visit actions",caption:"Native interface · guided highlights · demonstration record",renderFull:()=>e(zu,i)},e(ea,{rows:hs.slice(0,4).map(l=>({title:l.title}))}))):e(zu,i)}function gv(i={}){return Ce()?e("section",{className:"section mg-special-section","data-feature":"in-room","data-mobile-graphic-origin":"inroom-gallery"},e(oh,null),e(Vt,{title:"The workspace, wherever you need it.",intro:"Keep the selected patient and visit actions together in EMRMedSpa."}),e(Re,{label:"EMRMedSpa In-Room",caption:"EMRMedSpa In-Room · demonstration record",renderFull:()=>e(Du,i)},e("div",{className:"mg-special-media"},e("img",{src:"/assets/product-v7/in-room-desktop.jpg",width:1680,height:896,alt:"EMRMedSpa In-Room desktop workspace with a demonstration record selected and visit actions arranged in a grid.",loading:"lazy"}),e("strong",null,"Desktop · Tablet · Phone"),e("span",null,"Keep the selected patient and visit actions together in EMRMedSpa.")))):e(Du,i)}function bv(i={}){return Ce()?e("section",{className:"mg-special-section","data-mobile-graphic-origin":"tap-to-pay"},e(Vt,{eyebrow:"Med Spa Marketing AI · Mobile collection",level:"h3",title:e(Y.Fragment,null,"A phone.",e("br"),"A contactless payment."),intro:"Tap to Pay brings compatible cards and digital wallets to the mobile payment step."}),e(Re,{label:"Tap to Pay illustration",caption:"Manual illustration · sample amount. No payment is processed.",renderFull:()=>e(Pu,i)},e("div",null,e("div",{className:"mg-special-mini-card",style:{textAlign:"center"}},e("span",null,"Example amount"),e("strong",{style:{fontSize:30}},"$125.00"),e("div",{className:"mg-special-pay-icon","aria-hidden":!0},e("svg",{viewBox:"0 0 60 60",fill:"none",width:36,height:36},e("path",{d:"M22 23c5 4 5 10 0 14M29 17c9 7 9 19 0 26M36 11c14 10 14 28 0 38",stroke:"currentColor",strokeWidth:3,strokeLinecap:"round"}))),e("p",null,"Hold the card near the phone"),e("small",null,"Compatible contactless card or wallet")))),e("p",{className:"mg-special-caption"},"Requires a compatible device, mobile app and provider. Availability varies by country.")):e(Pu,i)}const Ki={"booking-v2-menu":"booking","booking-v2-cart":"deposits-reminders","booking-v2-staff":"booking","booking-v2-calendar":"calendars","booking-v2-checkout":"booking","owner-dashboard":"dashboard",inbox:"conversations","contact-record":"conversations","calendar-sync":"calendars","email-stats":"email-marketing","social-planner":"social-planner","emr-treatment-note":"clinical-notes","emr-notes-list":"consents","emr-inventory":"inventory","emr-payments":"payments","emr-calendar":"calendars","emr-body-map-marked":"body-mapping","emr-patients":"patient-workspace","emr-dashboard":"patient-workspace","emr-reports":"dashboard"};function Es({file:i,featureId:s}){const l=s||Ki[i],d=l&&Yr(l);return d?l==="body-mapping"?e("div",{className:"mgf-map-overview"},e("img",{src:"/assets/product/emr-body-map-marked.png",alt:"Treatment-area mapping with fictional selected face areas.",loading:"lazy"}),e("strong",null,d.visual.title)):e("div",{className:"mgf-screen-summary"},e(Za,{title:d.visual.title,rows:d.workflowSteps.map((p,h)=>({label:"0"+(h+1),value:p.title}))})):null}function Tn(i){var p;if(!Ce())return e(Ly,i);const l=Yi(i.file);if(l!==null)return e(Kr,{initialStep:l,label:"Online booking"});const d=((p=Yr(Ki[i.file]))==null?void 0:p.visual.title)||"Platform example";return e(Ns,{label:d,caption:i.caption??Zm,src:Nt+"product/"+i.file+".png",alt:i.alt,preview:Ki[i.file]?e(Es,{file:i.file}):void 0})}function gm(i){var d;if(!Ce())return e(Qb,i);const l=Yi(i.file);return l!==null?e(Kr,{initialStep:l,label:"Online booking"}):e(Ns,{label:((d=Yr(Ki[i.file]))==null?void 0:d.visual.title)||"Platform example",caption:"Product interface illustration · sample data.",src:"/assets/product/"+i.file+".png",alt:i.alt,preview:Ki[i.file]?e(Es,{file:i.file}):void 0})}function yv(i){return Ce()?e(Re,{label:i.scene.title,caption:i.scene.caption,renderFull:()=>e(em,i)},e(ea,{rows:i.scene.steps.map(l=>({title:l.title,body:l.context}))})):e(em,i)}var Vr=document.getElementById("root");
1180if(!Vr)throw new Error("The preview root element is missing.");var vv=location.pathname==="/"&&!location.hash&&Vr.dataset.msmaiPrerender==="home-v1"&&Reflect.get(Vr,"__msmaiHomeShellReady")===!0;vv?(0,pu.hydrateRoot)(Vr,(0,du.createElement)(hm,{initialHomeShell:!0}),{identifierPrefix:"msmai-home-",onRecoverableError:i=>console.error("[MSMAI prerender] Hydration recovery",i)}):(0,pu.createRoot)(Vr).render((0,du.createElement)(hm));lv();
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.