Lead #3503

Company
Ann Physiocare - Physiotherapy in Chelmsford
Website
https://annphysiocare.com
Best Contact
Email
()

Override

Captured Pages

Emails:
View text
.book-online-fixed { position: fixed; bottom: 20px; left: 50%; transform: translateX(-50%); background-color: #007bff; color: white; padding: 12px 20px; border-radius: 25px; font-weight: bold; z-index: 9999; text-align: center; box-shadow: 0 4px 8px rgba(0,0,0,0.2); text-decoration: none; } .content { transition: filter 0.3s ease; } .blurred { filter: blur(5px); } .popup { display: none; /* Hidden by default */ position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); padding: 20px; background-color: white; box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2); z-index: 1000; border-radius: 10px; } /* Dark overlay */ .overlay { display: none; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0,0,0,0.5); z-index: 999; } /* Close button */ .close-btn { float: right; cursor: pointer; font-weight: bold; font-size: 18px; } img.trigger { cursor: pointer; width: 150px; transition: transform 0.2s; } img.trigger:hover { transform: scale(1.05); } @media (min-width: 992px) { .book-online-fixed { display: none !important; } } Home About Us Who We Are Privacy Policy Policies and Procedures Locations Services Treatments Pricing FAQ Book Online Book Online Book Online × Referred by GP? Please book via online or ring us to arrange the appointment. Book Online Call Admin team Looking for self referral? Self-referral is particularly suitable for individuals with relatively straightforward musculoskeletal issues like back pain, joint pain, or recent strains/sprains. If you have more complex needs, such as movement problems related to stroke or MS, you may still need a referral from your GP. If you are based on the below mentioned areas use the self referral form. If you have any query please call us on 0330 124 2392 so we can assist you promptly. Berkshire Kent and Medway function openPopup() { document.getElementById("popup").style.display = "block"; document.getElementById("overlay").style.display = "block"; document.getElementById("pageContent").classList.add("blurred"); } function closePopup() { document.getElementById("popup").style.display = "none"; document.getElementById("overlay").style.display = "none"; document.getElementById("pageContent").classList.remove("blurred"); } Dear clients, To improve your web booking experience, we have updated our system. You will be able to book all future appointments using the following link: www.ann.jellypx.com .scroll-container { width: 100%; /* Full width */ max-height: 50px; /* Set a maximum height */ overflow: hidden; /* Hide overflow */ background-color: #f0f0f0; padding: 14px 14px; /* Padding for top/bottom and left/right */ border: 1px solid #ccc; position: relative; display: flex; /* Flexbox to center text */ align-items: center; /* Center text vertically */ } .scrolling-text { white-space: nowrap; /* Prevent text from wrapping */ position: absolute; /* Absolute positioning for scrolling */ animation: scroll 24s linear infinite; /* Animation for scrolling effect */ color: #000; font-size: 12px; /* Text size */ font-weight: bold; transform: translateX(100vw); } /* Stop scrolling on hover */ .scroll-container:hover .scrolling-text { animation-play-state: paused; /* Pause the animation */ } @keyframes scroll { 0% { transform: translateX(100vw); } 100% { transform: translateX(-100%); } } /* Responsive settings */ @media (max-width: 768px) { .scrolling-text { font-size: 12px; /* Smaller font size for mobile */ animation-duration: 16s; /* Fixed duration for mobile scrolling */ } }} } /* For larger screens */ @media (min-width: 769px) { .scrolling-text { animation-duration: 10s; /* Adjust for desktop */ } } Staff Home Staff My Jelly My Hr My Payroll My Forms APC Incident Staff Resources Still Have Questions? Call Us On 0330 124 2392 or Send us a direct message using the chat box in the bottom right hand corner of the screen and we will get back to you as quickly as possible! FAQ Book Online Cookie Consent with Switches .cookie-popup { position: fixed; bottom: 0; left: 0; right: 0; max-width: 100%; background-color: #f8f9fa; color: #fff; padding: 10px 15px; z-index: 9999; font-family: Arial, sans-serif; box-shadow: 0px -2px 10px rgba(0, 0, 0, 0.2); display: none; /* Hidden by default */ font-size: 14px; /* Reduced default font size */ } .cookie-popup h2 { font-size: 20px; /* Reduced font size */ margin-bottom: 8px; color: black; text-align: center; font-weight: bold; } .cookie-popup p { margin-bottom: 8px; font-size: 15px; /* Reduced font size */ color: black; } .cookie-content { display: flex; justify-content: space-between; align-items: flex-start; flex-wrap: wrap; gap: 8px; } .cookie-toggle { display: flex; flex-direction: row; margin-right: 10px; flex: 2; flex-wrap: wrap; } .cookie-toggle .switch { display: flex; color: black; margin-right: 20px; justify-content: flex-start; margin-bottom: 5px; } .cookie-toggle .switch input { display: none; } .cookie-toggle .switch .slider { position: relative; width: 40px; /* Reduced width */ height: 20px; /* Reduced height */ background-color: #ccc; border-radius: 34px; transition: 0.4s; margin-left: 8px; } .cookie-toggle .switch .slider:before { position: absolute; content: ""; height: 16px; /* Reduced size */ width: 16px; /* Reduced size */ left: 4px; bottom: 2px; background-color: white; border-radius: 50%; transition: 0.4s; } .cookie-toggle .switch input:checked + .slider { background-color: #2196F3; } .cookie-toggle .switch input:checked + .slider:before { transform: translateX(20px); /* Adjusted for reduced size */ } .cookie-actions { display: flex; flex-direction: column; align-items: flex-end; flex: 1; gap: 8px; } .cookie-actions button { background-color: #4CAF50; color: white; width: 200px; /* Reduced width */ border: none; padding: 6px 12px; /* Reduced padding */ cursor: pointer; border-radius: 5px; font-size: 14px; /* Reduced font size */ transition: background-color 0.3s; } .cookie-actions button:hover { background-color: #45a049; } .allow-btn { background-color: #008CBA; border: none; padding: 6px 12px; /* Reduced padding */ cursor: pointer; border-radius: 5px; font-size: 14px; /* Reduced font size */ transition: background-color 0.3s; margin-botton:10px; } .allow-selected-btn { background-color: #008CBA; border: none; padding: 6px 12px; /* Reduced padding */ cursor: pointer; border-radius: 5px; font-size: 14px; /* Reduced font size */ transition: background-color 0.3s; margin-botton:10px; } .deny-btn { background-color: red; margin-botton:10px; border: none; padding: 6px 12px; /* Reduced padding */ cursor: pointer; border-radius: 5px; font-size: 14px; /* Reduced font size */ transition: background-color 0.3s; } /* Responsiveness */ @media (max-width: 768px) { .cookie-popup { padding: 8px 10px; font-size: 12px; /* Further reduce font size for mobile */ } .cookie-popup h2 { font-size: 18px; /* Adjust heading size for mobile */ } .cookie-popup p { font-size: 12px; } .cookie-content { flex-direction: column; /* Stack elements vertically on smaller screens */ align-items: stretch; } .cookie-actions { width: 100%; align-items: center; } .cookie-actions button { width: 100%; /* Buttons take full width on mobile */ } } Ann Physiocare provides a range of physiotherapy services for individuals, businesses, and insurers. Registered in England and Wales. Company Registration Number: 07958438 This website uses cookies We use cookies to personalise content and ads, to provide social media features and to analyse our traffic. We also share information about your use of our site with our social media, advertising and analytics partners who may combine it with other information that you've provided to them or that they've collected from your use of their services. Necessary Preferences Statistics Marketing Allow All Allow Selected Deny // Function to check if cookie consent has been accepted function checkCookieConsent() { const cookieConsent = document.cookie.split('; ').find(row => row.startsWith('cookieConsent=')); if (!cookieConsent) { document.getElementById('cookieConsentPopup').style.display = 'block'; } } // Function to accept all cookies function acceptAllCookies() { document.cookie = "cookieConsent=all; max-age=" + (12 * 60 * 60) + "; path=/"; // Set max-age to 12 hours hidePopup(); } // Function to allow selected cookies based on user selection function allowSelectedCookies() { let consentValue = []; if (document.getElementById('preferences').checked) consentValue.push('preferences'); if (document.getElementById('statistics').checked) consentValue.push('statistics'); if (document.getElementById('marketing').checked) consentValue.push('marketing'); document.cookie = "cookieConsent=" + consentValue.join(',') + "; max-age=" + (12 * 60 * 60) + "; path=/"; // Set max-age to 12 hours hidePopup(); } // Function to deny cookies function denyCookies() { document.cookie = "cookieConsent=denied; max-age=" + (12 * 60 * 60) + "; path=/"; // Set max-age to 12 hours hidePopup(); } // Hide the popup function hidePopup() { document.getElementById('cookieConsentPopup').style.display = 'none'; } // Show the popup immediately when the page loads document.addEventListener('DOMContentLoaded', checkCookieConsent); // Event listeners for buttons document.getElementById('allowAllCookies').addEventListener('click', acceptAllCookies); document.getElementById('allowSelectedCookies').addEventListener('click', allowSelectedCookies); document.getElementById('denyCookies').addEventListener('click', denyCookies); Copyright © 2021 Ann Physiocare Ltd. All rights reserved . var Tawk_API = Tawk_API || {}; var Tawk_LoadStart = new Date(); (function () { var s1 = document.createElement("script"), s0 = document.getElementsByTagName("script")[0]; s1.async = true; s1.src = 'https://embed.tawk.to/5bc7132f08387933e5bb9fbe/default'; s1.charset = 'UTF-8'; s1.setAttribute('crossorigin', '*'); s0.parentNode.insertBefore(s1, s0); })();
View text

                    
View text

                    
Emails:
View text

                    
Emails:
View text
.book-online-fixed { position: fixed; bottom: 20px; left: 50%; transform: translateX(-50%); background-color: #007bff; color: white; padding: 12px 20px; border-radius: 25px; font-weight: bold; z-index: 9999; text-align: center; box-shadow: 0 4px 8px rgba(0,0,0,0.2); text-decoration: none; } .content { transition: filter 0.3s ease; } .blurred { filter: blur(5px); } .popup { display: none; /* Hidden by default */ position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); padding: 20px; background-color: white; box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2); z-index: 1000; border-radius: 10px; } /* Dark overlay */ .overlay { display: none; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0,0,0,0.5); z-index: 999; } /* Close button */ .close-btn { float: right; cursor: pointer; font-weight: bold; font-size: 18px; } img.trigger { cursor: pointer; width: 150px; transition: transform 0.2s; } img.trigger:hover { transform: scale(1.05); } @media (min-width: 992px) { .book-online-fixed { display: none !important; } } Home About Us Who We Are Privacy Policy Policies and Procedures Locations Services Treatments Pricing FAQ Book Online Book Online Book Online × Referred by GP? Please book via online or ring us to arrange the appointment. Book Online Call Admin team Looking for self referral? Self-referral is particularly suitable for individuals with relatively straightforward musculoskeletal issues like back pain, joint pain, or recent strains/sprains. If you have more complex needs, such as movement problems related to stroke or MS, you may still need a referral from your GP. If you are based on the below mentioned areas use the self referral form. If you have any query please call us on 0330 124 2392 so we can assist you promptly. Berkshire Kent and Medway function openPopup() { document.getElementById("popup").style.display = "block"; document.getElementById("overlay").style.display = "block"; document.getElementById("pageContent").classList.add("blurred"); } function closePopup() { document.getElementById("popup").style.display = "none"; document.getElementById("overlay").style.display = "none"; document.getElementById("pageContent").classList.remove("blurred"); } Dear clients, To improve your web booking experience, we have updated our system. You will be able to book all future appointments using the following link: www.ann.jellypx.com .scroll-container { width: 100%; /* Full width */ max-height: 50px; /* Set a maximum height */ overflow: hidden; /* Hide overflow */ background-color: #f0f0f0; padding: 14px 14px; /* Padding for top/bottom and left/right */ border: 1px solid #ccc; position: relative; display: flex; /* Flexbox to center text */ align-items: center; /* Center text vertically */ } .scrolling-text { white-space: nowrap; /* Prevent text from wrapping */ position: absolute; /* Absolute positioning for scrolling */ animation: scroll 24s linear infinite; /* Animation for scrolling effect */ color: #000; font-size: 12px; /* Text size */ font-weight: bold; transform: translateX(100vw); } /* Stop scrolling on hover */ .scroll-container:hover .scrolling-text { animation-play-state: paused; /* Pause the animation */ } @keyframes scroll { 0% { transform: translateX(100vw); } 100% { transform: translateX(-100%); } } /* Responsive settings */ @media (max-width: 768px) { .scrolling-text { font-size: 12px; /* Smaller font size for mobile */ animation-duration: 16s; /* Fixed duration for mobile scrolling */ } }} } /* For larger screens */ @media (min-width: 769px) { .scrolling-text { animation-duration: 10s; /* Adjust for desktop */ } } About Home About Know About Ann Physiocare “Great things never came from comfort zones” APC established - 2012 when Mani and friends decided to open a small, community-oriented physiotherapy clinic in his backyard. Now we’re a well-established service running clinics across England and Wales with over 60 branches, centralized administration, with great prices, friendly service and lots of different treatment options. Hundreds of patients have been treated in our clinics across the UK. We are proud members of the community that we serve. We are a community of Physiotherapist’s; Administrator’s and we’d like you to come and experience the service's we have. Whether you’re a private patient or referred through the NHS, we’re here to help and we’re different. Just like you. More About Us We have locations across the south of England and Wales With over 60 locations, we are able to treat hundreds of patients on a daily basis. Each of our clinics have: Highly skilled Physiotherapists who are HCPC & CSP registered and vastly experienced. A unique, forward thinking attitude that embodies all Ann Physiocare clinics. A holistic approach to treatment. Find Location Some Reasons To Choose Us Welcoming and approachable staff. Convenient appointment times, most of clinics are open from 8am till 7pm, Monday to Saturday Professional and friendly Physiotherapists with years of experience. Convenient Locations, most of our clinics are located close to local transport services and amenities. Treatment is tailored to the patient’s ailments; we try to resolve the cause and not just the pain. NHS We have a specialised body of knowledge and skills and can provide physiotherapy services across a range of settings, working either independently. Insurance Ann Physiocare is registered with all major Health Insurance providers, we always do our best to make your insurance process as smooth as possible. Pay As You Go Individuals We are able to assist individuals with a wide range of issues without the need for public or private funding. 00 + Years Experience 00 + Happy Clients 00 + Best Clinics 00 + Winning Awards Clients Testimonials My physio is excellent, provided me with good set of exercises which helped me with my pain. Very good handson skills. Highly recommeded. Hussain Sofiean Clients Testimonials I was referred to Ann Physiocare for neck and shoulder pain. I had the pleasure to be treated by Shyam. I can honestly say that he's amazing and gave great exercises to do at home which really helped. I would highly recommend and definitely choose Shyam at Ann Physiocare. Sharon McGoey Clients Testimonials Very good experience with Sam who was very helpful and advised further exercises which were good for my recovery Mehmet Gul Cookie Consent with Switches .cookie-popup { position: fixed; bottom: 0; left: 0; right: 0; max-width: 100%; background-color: #f8f9fa; color: #fff; padding: 10px 15px; z-index: 9999; font-family: Arial, sans-serif; box-shadow: 0px -2px 10px rgba(0, 0, 0, 0.2); display: none; /* Hidden by default */ font-size: 14px; /* Reduced default font size */ } .cookie-popup h2 { font-size: 20px; /* Reduced font size */ margin-bottom: 8px; color: black; text-align: center; font-weight: bold; } .cookie-popup p { margin-bottom: 8px; font-size: 15px; /* Reduced font size */ color: black; } .cookie-content { display: flex; justify-content: space-between; align-items: flex-start; flex-wrap: wrap; gap: 8px; } .cookie-toggle { display: flex; flex-direction: row; margin-right: 10px; flex: 2; flex-wrap: wrap; } .cookie-toggle .switch { display: flex; color: black; margin-right: 20px; justify-content: flex-start; margin-bottom: 5px; } .cookie-toggle .switch input { display: none; } .cookie-toggle .switch .slider { position: relative; width: 40px; /* Reduced width */ height: 20px; /* Reduced height */ background-color: #ccc; border-radius: 34px; transition: 0.4s; margin-left: 8px; } .cookie-toggle .switch .slider:before { position: absolute; content: ""; height: 16px; /* Reduced size */ width: 16px; /* Reduced size */ left: 4px; bottom: 2px; background-color: white; border-radius: 50%; transition: 0.4s; } .cookie-toggle .switch input:checked + .slider { background-color: #2196F3; } .cookie-toggle .switch input:checked + .slider:before { transform: translateX(20px); /* Adjusted for reduced size */ } .cookie-actions { display: flex; flex-direction: column; align-items: flex-end; flex: 1; gap: 8px; } .cookie-actions button { background-color: #4CAF50; color: white; width: 200px; /* Reduced width */ border: none; padding: 6px 12px; /* Reduced padding */ cursor: pointer; border-radius: 5px; font-size: 14px; /* Reduced font size */ transition: background-color 0.3s; } .cookie-actions button:hover { background-color: #45a049; } .allow-btn { background-color: #008CBA; border: none; padding: 6px 12px; /* Reduced padding */ cursor: pointer; border-radius: 5px; font-size: 14px; /* Reduced font size */ transition: background-color 0.3s; margin-botton:10px; } .allow-selected-btn { background-color: #008CBA; border: none; padding: 6px 12px; /* Reduced padding */ cursor: pointer; border-radius: 5px; font-size: 14px; /* Reduced font size */ transition: background-color 0.3s; margin-botton:10px; } .deny-btn { background-color: red; margin-botton:10px; border: none; padding: 6px 12px; /* Reduced padding */ cursor: pointer; border-radius: 5px; font-size: 14px; /* Reduced font size */ transition: background-color 0.3s; } /* Responsiveness */ @media (max-width: 768px) { .cookie-popup { padding: 8px 10px; font-size: 12px; /* Further reduce font size for mobile */ } .cookie-popup h2 { font-size: 18px; /* Adjust heading size for mobile */ } .cookie-popup p { font-size: 12px; } .cookie-content { flex-direction: column; /* Stack elements vertically on smaller screens */ align-items: stretch; } .cookie-actions { width: 100%; align-items: center; } .cookie-actions button { width: 100%; /* Buttons take full width on mobile */ } } Ann Physiocare provides a range of physiotherapy services for individuals, businesses, and insurers. Registered in England and Wales. Company Registration Number: 07958438 This website uses cookies We use cookies to personalise content and ads, to provide social media features and to analyse our traffic. We also share information about your use of our site with our social media, advertising and analytics partners who may combine it with other information that you've provided to them or that they've collected from your use of their services. Necessary Preferences Statistics Marketing Allow All Allow Selected Deny // Function to check if cookie consent has been accepted function checkCookieConsent() { const cookieConsent = document.cookie.split('; ').find(row => row.startsWith('cookieConsent=')); if (!cookieConsent) { document.getElementById('cookieConsentPopup').style.display = 'block'; } } // Function to accept all cookies function acceptAllCookies() { document.cookie = "cookieConsent=all; max-age=" + (12 * 60 * 60) + "; path=/"; // Set max-age to 12 hours hidePopup(); } // Function to allow selected cookies based on user selection function allowSelectedCookies() { let consentValue = []; if (document.getElementById('preferences').checked) consentValue.push('preferences'); if (document.getElementById('statistics').checked) consentValue.push('statistics'); if (document.getElementById('marketing').checked) consentValue.push('marketing'); document.cookie = "cookieConsent=" + consentValue.join(',') + "; max-age=" + (12 * 60 * 60) + "; path=/"; // Set max-age to 12 hours hidePopup(); } // Function to deny cookies function denyCookies() { document.cookie = "cookieConsent=denied; max-age=" + (12 * 60 * 60) + "; path=/"; // Set max-age to 12 hours hidePopup(); } // Hide the popup function hidePopup() { document.getElementById('cookieConsentPopup').style.display = 'none'; } // Show the popup immediately when the page loads document.addEventListener('DOMContentLoaded', checkCookieConsent); // Event listeners for buttons document.getElementById('allowAllCookies').addEventListener('click', acceptAllCookies); document.getElementById('allowSelectedCookies').addEventListener('click', allowSelectedCookies); document.getElementById('denyCookies').addEventListener('click', denyCookies); Copyright © 2022 Ann Physiocare Ltd. All rights reserved . var Tawk_API = Tawk_API || {}; var Tawk_LoadStart = new Date(); (function () { var s1 = document.createElement("script"), s0 = document.getElementsByTagName("script")[0]; s1.async = true; s1.src = 'https://embed.tawk.to/5bc7132f08387933e5bb9fbe/default'; s1.charset = 'UTF-8'; s1.setAttribute('crossorigin', '*'); s0.parentNode.insertBefore(s1, s0); })();
Emails: rehab@annphysiocare.com
View text
.book-online-fixed { position: fixed; bottom: 20px; left: 50%; transform: translateX(-50%); background-color: #007bff; color: white; padding: 12px 20px; border-radius: 25px; font-weight: bold; z-index: 9999; text-align: center; box-shadow: 0 4px 8px rgba(0,0,0,0.2); text-decoration: none; } .content { transition: filter 0.3s ease; } .blurred { filter: blur(5px); } .popup { display: none; /* Hidden by default */ position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); padding: 20px; background-color: white; box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2); z-index: 1000; border-radius: 10px; } /* Dark overlay */ .overlay { display: none; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0,0,0,0.5); z-index: 999; } /* Close button */ .close-btn { float: right; cursor: pointer; font-weight: bold; font-size: 18px; } img.trigger { cursor: pointer; width: 150px; transition: transform 0.2s; } img.trigger:hover { transform: scale(1.05); } @media (min-width: 992px) { .book-online-fixed { display: none !important; } } Home About Us Who We Are Privacy Policy Policies and Procedures Locations Services Treatments Pricing FAQ Book Online Book Online Book Online × Referred by GP? Please book via online or ring us to arrange the appointment. Book Online Call Admin team Looking for self referral? Self-referral is particularly suitable for individuals with relatively straightforward musculoskeletal issues like back pain, joint pain, or recent strains/sprains. If you have more complex needs, such as movement problems related to stroke or MS, you may still need a referral from your GP. If you are based on the below mentioned areas use the self referral form. If you have any query please call us on 0330 124 2392 so we can assist you promptly. Berkshire Kent and Medway function openPopup() { document.getElementById("popup").style.display = "block"; document.getElementById("overlay").style.display = "block"; document.getElementById("pageContent").classList.add("blurred"); } function closePopup() { document.getElementById("popup").style.display = "none"; document.getElementById("overlay").style.display = "none"; document.getElementById("pageContent").classList.remove("blurred"); } Dear clients, To improve your web booking experience, we have updated our system. You will be able to book all future appointments using the following link: www.ann.jellypx.com .scroll-container { width: 100%; /* Full width */ max-height: 50px; /* Set a maximum height */ overflow: hidden; /* Hide overflow */ background-color: #f0f0f0; padding: 14px 14px; /* Padding for top/bottom and left/right */ border: 1px solid #ccc; position: relative; display: flex; /* Flexbox to center text */ align-items: center; /* Center text vertically */ } .scrolling-text { white-space: nowrap; /* Prevent text from wrapping */ position: absolute; /* Absolute positioning for scrolling */ animation: scroll 24s linear infinite; /* Animation for scrolling effect */ color: #000; font-size: 12px; /* Text size */ font-weight: bold; transform: translateX(100vw); } /* Stop scrolling on hover */ .scroll-container:hover .scrolling-text { animation-play-state: paused; /* Pause the animation */ } @keyframes scroll { 0% { transform: translateX(100vw); } 100% { transform: translateX(-100%); } } /* Responsive settings */ @media (max-width: 768px) { .scrolling-text { font-size: 12px; /* Smaller font size for mobile */ animation-duration: 16s; /* Fixed duration for mobile scrolling */ } }} } /* For larger screens */ @media (min-width: 769px) { .scrolling-text { animation-duration: 10s; /* Adjust for desktop */ } } Contact Home Contact Customer Service Mon - Fri: 8:00 AM-6:00 PM Saturday: 8:00 AM-4:00 PM (GMT) Customer Service :- 0330 124 2392 &nbsp&nbsp Email Us rehab@annphysiocare.com Head Office Ann Physiocare Ltd, 37A, Clase Road, Morriston, Swansea, SA6 8DS Get In Touch I Accept All Terms & Conditions Send Message Still Have Questions? Call Us On 0330 124 2392 or Send us a direct message using the chat box in the bottom right hand corner of the screen and we will get back to you as quickly as possible! FAQ Book Online Cookie Consent with Switches .cookie-popup { position: fixed; bottom: 0; left: 0; right: 0; max-width: 100%; background-color: #f8f9fa; color: #fff; padding: 10px 15px; z-index: 9999; font-family: Arial, sans-serif; box-shadow: 0px -2px 10px rgba(0, 0, 0, 0.2); display: none; /* Hidden by default */ font-size: 14px; /* Reduced default font size */ } .cookie-popup h2 { font-size: 20px; /* Reduced font size */ margin-bottom: 8px; color: black; text-align: center; font-weight: bold; } .cookie-popup p { margin-bottom: 8px; font-size: 15px; /* Reduced font size */ color: black; } .cookie-content { display: flex; justify-content: space-between; align-items: flex-start; flex-wrap: wrap; gap: 8px; } .cookie-toggle { display: flex; flex-direction: row; margin-right: 10px; flex: 2; flex-wrap: wrap; } .cookie-toggle .switch { display: flex; color: black; margin-right: 20px; justify-content: flex-start; margin-bottom: 5px; } .cookie-toggle .switch input { display: none; } .cookie-toggle .switch .slider { position: relative; width: 40px; /* Reduced width */ height: 20px; /* Reduced height */ background-color: #ccc; border-radius: 34px; transition: 0.4s; margin-left: 8px; } .cookie-toggle .switch .slider:before { position: absolute; content: ""; height: 16px; /* Reduced size */ width: 16px; /* Reduced size */ left: 4px; bottom: 2px; background-color: white; border-radius: 50%; transition: 0.4s; } .cookie-toggle .switch input:checked + .slider { background-color: #2196F3; } .cookie-toggle .switch input:checked + .slider:before { transform: translateX(20px); /* Adjusted for reduced size */ } .cookie-actions { display: flex; flex-direction: column; align-items: flex-end; flex: 1; gap: 8px; } .cookie-actions button { background-color: #4CAF50; color: white; width: 200px; /* Reduced width */ border: none; padding: 6px 12px; /* Reduced padding */ cursor: pointer; border-radius: 5px; font-size: 14px; /* Reduced font size */ transition: background-color 0.3s; } .cookie-actions button:hover { background-color: #45a049; } .allow-btn { background-color: #008CBA; border: none; padding: 6px 12px; /* Reduced padding */ cursor: pointer; border-radius: 5px; font-size: 14px; /* Reduced font size */ transition: background-color 0.3s; margin-botton:10px; } .allow-selected-btn { background-color: #008CBA; border: none; padding: 6px 12px; /* Reduced padding */ cursor: pointer; border-radius: 5px; font-size: 14px; /* Reduced font size */ transition: background-color 0.3s; margin-botton:10px; } .deny-btn { background-color: red; margin-botton:10px; border: none; padding: 6px 12px; /* Reduced padding */ cursor: pointer; border-radius: 5px; font-size: 14px; /* Reduced font size */ transition: background-color 0.3s; } /* Responsiveness */ @media (max-width: 768px) { .cookie-popup { padding: 8px 10px; font-size: 12px; /* Further reduce font size for mobile */ } .cookie-popup h2 { font-size: 18px; /* Adjust heading size for mobile */ } .cookie-popup p { font-size: 12px; } .cookie-content { flex-direction: column; /* Stack elements vertically on smaller screens */ align-items: stretch; } .cookie-actions { width: 100%; align-items: center; } .cookie-actions button { width: 100%; /* Buttons take full width on mobile */ } } Ann Physiocare provides a range of physiotherapy services for individuals, businesses, and insurers. Registered in England and Wales. Company Registration Number: 07958438 This website uses cookies We use cookies to personalise content and ads, to provide social media features and to analyse our traffic. We also share information about your use of our site with our social media, advertising and analytics partners who may combine it with other information that you've provided to them or that they've collected from your use of their services. Necessary Preferences Statistics Marketing Allow All Allow Selected Deny // Function to check if cookie consent has been accepted function checkCookieConsent() { const cookieConsent = document.cookie.split('; ').find(row => row.startsWith('cookieConsent=')); if (!cookieConsent) { document.getElementById('cookieConsentPopup').style.display = 'block'; } } // Function to accept all cookies function acceptAllCookies() { document.cookie = "cookieConsent=all; max-age=" + (12 * 60 * 60) + "; path=/"; // Set max-age to 12 hours hidePopup(); } // Function to allow selected cookies based on user selection function allowSelectedCookies() { let consentValue = []; if (document.getElementById('preferences').checked) consentValue.push('preferences'); if (document.getElementById('statistics').checked) consentValue.push('statistics'); if (document.getElementById('marketing').checked) consentValue.push('marketing'); document.cookie = "cookieConsent=" + consentValue.join(',') + "; max-age=" + (12 * 60 * 60) + "; path=/"; // Set max-age to 12 hours hidePopup(); } // Function to deny cookies function denyCookies() { document.cookie = "cookieConsent=denied; max-age=" + (12 * 60 * 60) + "; path=/"; // Set max-age to 12 hours hidePopup(); } // Hide the popup function hidePopup() { document.getElementById('cookieConsentPopup').style.display = 'none'; } // Show the popup immediately when the page loads document.addEventListener('DOMContentLoaded', checkCookieConsent); // Event listeners for buttons document.getElementById('allowAllCookies').addEventListener('click', acceptAllCookies); document.getElementById('allowSelectedCookies').addEventListener('click', allowSelectedCookies); document.getElementById('denyCookies').addEventListener('click', denyCookies); Copyright © 2022 Ann Physiocare Ltd. All rights reserved . var Tawk_API = Tawk_API || {}; var Tawk_LoadStart = new Date(); (function () { var s1 = document.createElement("script"), s0 = document.getElementsByTagName("script")[0]; s1.async = true; s1.src = 'https://embed.tawk.to/5bc7132f08387933e5bb9fbe/default'; s1.charset = 'UTF-8'; s1.setAttribute('crossorigin', '*'); s0.parentNode.insertBefore(s1, s0); })();
Emails:
View text
Header Information 0330 124 2392 Careers Referral Form Staff Contact .book-online-fixed { position: fixed; bottom: 20px; left: 50%; transform: translateX(-50%); background-color: #007bff; color: white; padding: 12px 20px; border-radius: 25px; font-weight: bold; z-index: 9999; text-align: center; box-shadow: 0 4px 8px rgba(0,0,0,0.2); text-decoration: none; } .content { transition: filter 0.3s ease; } .blurred { filter: blur(5px); } .popup { display: none; /* Hidden by default */ position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); padding: 20px; background-color: white; box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2); z-index: 1000; border-radius: 10px; } /* Dark overlay */ .overlay { display: none; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0,0,0,0.5); z-index: 999; } /* Close button */ .close-btn { float: right; cursor: pointer; font-weight: bold; font-size: 18px; } img.trigger { cursor: pointer; width: 150px; transition: transform 0.2s; } img.trigger:hover { transform: scale(1.05); } @media (min-width: 992px) { .book-online-fixed { display: none !important; } } Home About Us Who We Are Privacy Policy Policies and Procedures Locations Services Treatments Pricing FAQ Book Online Book Online Book Online × Referred by GP? Please book via online or ring us to arrange the appointment. Book Online Call Admin team Looking for self referral? Self-referral is particularly suitable for individuals with relatively straightforward musculoskeletal issues like back pain, joint pain, or recent strains/sprains. If you have more complex needs, such as movement problems related to stroke or MS, you may still need a referral from your GP. If you are based on the below mentioned areas use the self referral form. If you have any query please call us on 0330 124 2392 so we can assist you promptly. Berkshire Kent and Medway function openPopup() { document.getElementById("popup").style.display = "block"; document.getElementById("overlay").style.display = "block"; document.getElementById("pageContent").classList.add("blurred"); } function closePopup() { document.getElementById("popup").style.display = "none"; document.getElementById("overlay").style.display = "none"; document.getElementById("pageContent").classList.remove("blurred"); } Dear clients, To improve your web booking experience, we have updated our system. You will be able to book all future appointments using the following link: www.ann.jellypx.com .scroll-container { width: 100%; /* Full width */ max-height: 50px; /* Set a maximum height */ overflow: hidden; /* Hide overflow */ background-color: #f0f0f0; padding: 14px 14px; /* Padding for top/bottom and left/right */ border: 1px solid #ccc; position: relative; display: flex; /* Flexbox to center text */ align-items: center; /* Center text vertically */ } .scrolling-text { white-space: nowrap; /* Prevent text from wrapping */ position: absolute; /* Absolute positioning for scrolling */ animation: scroll 24s linear infinite; /* Animation for scrolling effect */ color: #000; font-size: 12px; /* Text size */ font-weight: bold; transform: translateX(100vw); } /* Stop scrolling on hover */ .scroll-container:hover .scrolling-text { animation-play-state: paused; /* Pause the animation */ } @keyframes scroll { 0% { transform: translateX(100vw); } 100% { transform: translateX(-100%); } } /* Responsive settings */ @media (max-width: 768px) { .scrolling-text { font-size: 12px; /* Smaller font size for mobile */ animation-duration: 16s; /* Fixed duration for mobile scrolling */ } }} } /* For larger screens */ @media (min-width: 769px) { .scrolling-text { animation-duration: 10s; /* Adjust for desktop */ } } Trusted Physiotherapy Provider Trustpilot Find a Local Clinic Services Book Online × Referred by GP? Please book via online or ring us to arrange the appointment. Book Online Call Admin team Looking for self referral? Self-referral is particularly suitable for individuals with relatively straightforward musculoskeletal issues like back pain, joint pain, or recent strains/sprains. If you have more complex needs, such as movement problems related to stroke or MS, you may still need a referral from your GP. If you are based on the below mentioned areas use the self referral form. If you have any query please call us on 0330 124 2392 so we can assist you promptly. Berkshire Kent and Medway Trustpilot NHS We have a specialised body of knowledge and skills and can provide physiotherapy services across a range of settings, working either independently. Insurance Ann Physiocare is registered with all major Health Insurance providers, we always do our best to make your insurance process as smooth as possible. Pay As You Go Individuals We are able to assist individuals with a wide range of issues without the need for public or private funding. 00 + Years Experience 00 + Happy Clients 00 + Best Clinics 00 + Winning Awards Know About Ann Physiocare Ann Physiocare provides a range of physiotherapy services for individuals, businesses and insurers. Our emphasis is to provide our clients with the skills and motivation to self-manage their problems and to rapidly become independent from therapy. We follow a holistic approach to assessment, comprehensive treatment, functional rehabilitation and advice and education on injury prevention. Get the best physiotherapy near you in multiple locations. Our Physiotherapy clinics have a highly skilled and experienced team of physiotherapists with a proven record of success in the prevention and treatment of musculo-skeletal injuries. As the leading physiotherapy clinics in UK, we strongly believe that working together as a multi-disciplinary team in co-operation with our clients produces sustainable results for our long-term goals of minimizing injury and the associated costs as well as enhancing well-being. All our physio clinics are committed to a quality approach of continuous improvement. More About Us Services That We Offer Musculoskeletal Physiotherapy Musculoskeletal physiotherapy is the treatment of disease or injury relating the muscles, bones, tendons, ligaments and nerves. Treatment involves reducing pain, increasing movement and restoring function, to get you back to your daily or sporting activities as quick as possible. Read More Neurological Physiotherapy Neurological physiotherapy is the treatment of injury or disease relating to the central nervous system, which involves the brain, spinal cord and nerves. Examples of neurological disorders include stroke, Parkinson’s disease and MS (multiple sclerosis). Read More Occupational Health Physiotherapy When working at a computer, or carrying out any kind of manual labour, there is always a way to do it that is the least physically damaging. Our physiotherapists can show you how to work smarter and prevent work related headache or injury. Repeated stress injuries “Our philosophy is that RSI is primarily a structural problem that can be completely treated, even in advanced stages.” Read More Online Physiotherapy We are expert online physiotherapy consultants for the diagnosis, treatment and rehabilitation of back pain, knee pain, sports injury, post-op rehab & women's health. Read More Home physiotherapy Our Physiotherapists can visit you at your home and you will receive exactly the same high quality treatment that you would have if you were to come into the clinic! Read More Discover All Services What Treatments We Provide Our highly skilled and experienced physiotherapists have helped many reach their full potential through Exercise, Acupuncture, Electrotherapy and Massage. Acupuncture Electrotherapy Massage Exercise Programme Acupuncture Acupuncture is very effective for reducing pain and inflammation, and is an excellent way to ease discomfort. Acupuncture treatment involves using very fine needles in specific points on the body. This gentle needling triggers signals in the nervous system, causing increases in the brain’s production of natural painkillers called endorphins. These substances are morphine-like chemicals that influence the body’s perception of pain. The combination of modalities can accelerate a return to normal movement. In addition Acupuncture is a holistic treatment method and may improve mood, energy and sleep patterns. The benefits of Acupuncture for stress, insomnia, smoking cessation and reduction of pain are suitable for men or women. Read More Electrotherapy Electrotherapy or electro-physical agents are uses in the musculoskeletal clinics to deal with an underlying pathology and to change the patient’s perception of their pain and other disabling symptoms. Our experienced Physiotherapists at Annphysicoare use different types of electrotherapy including Interferential, Ultrasound, TENS Pilates, Massage, Pain Management, Orthotics. Read More Massage Physiotherapy We offer individualized massages that are customized to fit your specific needs. Our experienced professional massage therapist may use one or more of the following massage techniques based on your personal needs and preferences: Deep tissue massage to loosen knots, release chronic muscle tension, reduce inflammation, and help eliminate scar tissue. Sports-specific massage for athletes of every discipline and level, to promote flexibility, reduce fatigue, improve endurance, maximize performance, and prevent injuries. Therapeutic massage sessions offer many benefits. Read More Exercise Programme Exercise is essential to recovery from sports injuries, following surgery, after an acute trauma, in the management of acute and chronic low back pain, neck pain and headaches and in the treatment of arthritis and osteoporosis. Exercise prescription forms an integral part of most physiotherapy rehabilitation programmes. Exercise is essential to recovery from sports injuries, following surgery, after an acute trauma such as from a fall or fracture, in the management of acute and chronic low back pain, neck pain and headaches and in the treatment of long term conditions such as arthritis and osteoporosis. Read More We have locations across the south of England and Wales With over 60 locations, we are able to treat hundreds of patients on a daily basis. Each of our clinics have: Highly skilled Physiotherapists who are HCPC & CSP registered and vastly experienced. A unique, forward thinking attitude that embodies all Ann Physiocare clinics. A holistic approach to treatment. Find Location Clients Testimonials My physio is excellent, provided me with good set of exercises which helped me with my pain. Very good handson skills. Highly recommeded. Hussain Sofiean Clients Testimonials I was referred to Ann Physiocare for neck and shoulder pain. I had the pleasure to be treated by Shyam. I can honestly say that he's amazing and gave great exercises to do at home which really helped. I would highly recommend and definitely choose Shyam at Ann Physiocare. Sharon McGoey Clients Testimonials Very good experience with Sam who was very helpful and advised further exercises which were good for my recovery Mehmet Gul Still Have Questions? Call Us On 0330 124 2392 or Send us a direct message using the chat box in the bottom right hand corner of the screen and we will get back to you as quickly as possible! FAQ Book Online Cookie Consent with Switches .cookie-popup { position: fixed; bottom: 0; left: 0; right: 0; max-width: 100%; background-color: #f8f9fa; color: #fff; padding: 10px 15px; z-index: 9999; font-family: Arial, sans-serif; box-shadow: 0px -2px 10px rgba(0, 0, 0, 0.2); display: none; /* Hidden by default */ font-size: 14px; /* Reduced default font size */ } .cookie-popup h2 { font-size: 20px; /* Reduced font size */ margin-bottom: 8px; color: black; text-align: center; font-weight: bold; } .cookie-popup p { margin-bottom: 8px; font-size: 15px; /* Reduced font size */ color: black; } .cookie-content { display: flex; justify-content: space-between; align-items: flex-start; flex-wrap: wrap; gap: 8px; } .cookie-toggle { display: flex; flex-direction: row; margin-right: 10px; flex: 2; flex-wrap: wrap; } .cookie-toggle .switch { display: flex; color: black; margin-right: 20px; justify-content: flex-start; margin-bottom: 5px; } .cookie-toggle .switch input { display: none; } .cookie-toggle .switch .slider { position: relative; width: 40px; /* Reduced width */ height: 20px; /* Reduced height */ background-color: #ccc; border-radius: 34px; transition: 0.4s; margin-left: 8px; } .cookie-toggle .switch .slider:before { position: absolute; content: ""; height: 16px; /* Reduced size */ width: 16px; /* Reduced size */ left: 4px; bottom: 2px; background-color: white; border-radius: 50%; transition: 0.4s; } .cookie-toggle .switch input:checked + .slider { background-color: #2196F3; } .cookie-toggle .switch input:checked + .slider:before { transform: translateX(20px); /* Adjusted for reduced size */ } .cookie-actions { display: flex; flex-direction: column; align-items: flex-end; flex: 1; gap: 8px; } .cookie-actions button { background-color: #4CAF50; color: white; width: 200px; /* Reduced width */ border: none; padding: 6px 12px; /* Reduced padding */ cursor: pointer; border-radius: 5px; font-size: 14px; /* Reduced font size */ transition: background-color 0.3s; } .cookie-actions button:hover { background-color: #45a049; } .allow-btn { background-color: #008CBA; border: none; padding: 6px 12px; /* Reduced padding */ cursor: pointer; border-radius: 5px; font-size: 14px; /* Reduced font size */ transition: background-color 0.3s; margin-botton:10px; } .allow-selected-btn { background-color: #008CBA; border: none; padding: 6px 12px; /* Reduced padding */ cursor: pointer; border-radius: 5px; font-size: 14px; /* Reduced font size */ transition: background-color 0.3s; margin-botton:10px; } .deny-btn { background-color: red; margin-botton:10px; border: none; padding: 6px 12px; /* Reduced padding */ cursor: pointer; border-radius: 5px; font-size: 14px; /* Reduced font size */ transition: background-color 0.3s; } /* Responsiveness */ @media (max-width: 768px) { .cookie-popup { padding: 8px 10px; font-size: 12px; /* Further reduce font size for mobile */ } .cookie-popup h2 { font-size: 18px; /* Adjust heading size for mobile */ } .cookie-popup p { font-size: 12px; } .cookie-content { flex-direction: column; /* Stack elements vertically on smaller screens */ align-items: stretch; } .cookie-actions { width: 100%; align-items: center; } .cookie-actions button { width: 100%; /* Buttons take full width on mobile */ } } Ann Physiocare provides a range of physiotherapy services for individuals, businesses, and insurers. Registered in England and Wales. Company Registration Number: 07958438 This website uses cookies We use cookies to personalise content and ads, to provide social media features and to analyse our traffic. We also share information about your use of our site with our social media, advertising and analytics partners who may combine it with other information that you've provided to them or that they've collected from your use of their services. Necessary Preferences Statistics Marketing Allow All Allow Selected Deny // Function to check if cookie consent has been accepted function checkCookieConsent() { const cookieConsent = document.cookie.split('; ').find(row => row.startsWith('cookieConsent=')); if (!cookieConsent) { document.getElementById('cookieConsentPopup').style.display = 'block'; } } // Function to accept all cookies function acceptAllCookies() { document.cookie = "cookieConsent=all; max-age=" + (12 * 60 * 60) + "; path=/"; // Set max-age to 12 hours hidePopup(); } // Function to allow selected cookies based on user selection function allowSelectedCookies() { let consentValue = []; if (document.getElementById('preferences').checked) consentValue.push('preferences'); if (document.getElementById('statistics').checked) consentValue.push('statistics'); if (document.getElementById('marketing').checked) consentValue.push('marketing'); document.cookie = "cookieConsent=" + consentValue.join(',') + "; max-age=" + (12 * 60 * 60) + "; path=/"; // Set max-age to 12 hours hidePopup(); } // Function to deny cookies function denyCookies() { document.cookie = "cookieConsent=denied; max-age=" + (12 * 60 * 60) + "; path=/"; // Set max-age to 12 hours hidePopup(); } // Hide the popup function hidePopup() { document.getElementById('cookieConsentPopup').style.display = 'none'; } // Show the popup immediately when the page loads document.addEventListener('DOMContentLoaded', checkCookieConsent); // Event listeners for buttons document.getElementById('allowAllCookies').addEventListener('click', acceptAllCookies); document.getElementById('allowSelectedCookies').addEventListener('click', allowSelectedCookies); document.getElementById('denyCookies').addEventListener('click', denyCookies); Copyright © 2025 Ann Physiocare Ltd. All rights reserved . document.addEventListener('contextmenu', event => event.preventDefault()); document.addEventListener('keydown', event => { if (event.key === 'F12' || (event.ctrlKey && event.shiftKey && event.key === 'I')) { event.preventDefault(); } }); const snowContainer = document.getElementById('snow-container'); function createSnowflake() { const snowflake = document.createElement('div'); snowflake.classList.add('snowflake'); snowflake.textContent = '❄'; // Randomize size and position const size = Math.random() * 1.5 + 0.5 + 'rem'; snowflake.style.fontSize = size; snowflake.style.left = Math.random() * 100 + 'vw'; snowflake.style.animationDuration = Math.random() * 3 + 15 + 's'; // Speed of falling snowflake.style.animationDelay = Math.random() * 5 + 's'; // Delay before falling starts snowContainer.appendChild(snowflake); // Remove snowflake after animation ends setTimeout(() => { snowflake.remove(); }, 7000); } // Generate snowflakes at intervals setInterval(createSnowflake, 200); /* Beautiful Snowfall Canvas - Drop into any page - Exposes window.Snowfall with start/stop/toggle/destroy - Respects prefers-reduced-motion */ (function () { 'use strict'; // Default configuration const DEFAULTS = { maxFlakes: 200, spawnRate: 3, // flakes per frame (approx) wind: 0.2, // base horizontal velocity windVariance: 0.6, // wind fluctuation multiplier gravity: 0.03, // base vertical velocity increment (acceleration) minSize: 1.5, maxSize: 6.5, twinkle: true, twinkleChance: 0.01, maxOpacity: 0.95, useGradientFlake: true, mouseRepel: true, mouseRepelRadius: 120, zIndex: 9999, fpsLimit: 60 // cap rendering fps to be kinder on CPU }; // Utilities function clamp(v, a, b) { return Math.max(a, Math.min(b, v)); } function rand(min, max) { return Math.random() * (max - min) + min; } // Respect prefers-reduced-motion const prefersReducedMotion = (typeof window !== 'undefined') && window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches; // Snowfall class class SnowfallInstance { constructor(userCfg = {}) { this.cfg = Object.assign({}, DEFAULTS, userCfg); if (prefersReducedMotion) { this.cfg.maxFlakes = 0; this.cfg.spawnRate = 0; } this._createCanvas(); this._bindHandlers(); this.flakes = []; this.running = false; this._lastFrameTime = 0; this._frameInterval = 1000 / this.cfg.fpsLimit; // state for gentle wind noise this._windBase = this.cfg.wind; this._time = 0; } _createCanvas() { // create or reuse canvas this.canvas = document.createElement('canvas'); this.canvas.className = 'snowfall-canvas'; this.canvas.style.zIndex = String(this.cfg.zIndex); this.ctx = this.canvas.getContext('2d'); document.body.appendChild(this.canvas); this._resizeCanvas(); } _resizeCanvas() { // handle devicePixelRatio for crisp flakes const dpr = window.devicePixelRatio || 1; const width = window.innerWidth; const height = window.innerHeight; this.canvas.width = Math.round(width * dpr); this.canvas.height = Math.round(height * dpr); this.canvas.style.width = width + 'px'; this.canvas.style.height = height + 'px'; this.ctx.setTransform(dpr, 0, 0, dpr, 0, 0); this.width = width; this.height = height; } _bindHandlers() { this._onResize = () => this._resizeCanvas(); window.addEventListener('resize', this._onResize); this.mouse = { x: -9999, y: -9999 }; this._onMouseMove = (e) => { this.mouse.x = e.clientX; this.mouse.y = e.clientY; }; this._onMouseLeave = () => { this.mouse.x = -9999; this.mouse.y = -9999; }; window.addEventListener('mousemove', this._onMouseMove); window.addEventListener('mouseleave', this._onMouseLeave); } _unbindHandlers() { window.removeEventListener('resize', this._onResize); window.removeEventListener('mousemove', this._onMouseMove); window.removeEventListener('mouseleave', this._onMouseLeave); } // Create a single flake with random properties _createFlake() { const size = rand(this.cfg.minSize, this.cfg.maxSize); // depth: smaller flakes appear farther (move faster or slower based on style) const depth = (size - this.cfg.minSize) / (this.cfg.maxSize - this.cfg.minSize + 0.0001); // initial position (spawn slightly above the top) const x = rand(-50, this.width + 50); const y = rand(-30, -10); const vx = rand(-0.5, 0.5) * (1 - depth) + this._windBase * (rand(0.5, 1.5)); const vy = rand(0.4, 1.4) + depth * 1.8; // large = heavier = faster fall const opacity = rand(0.4, this.cfg.maxOpacity); const rotate = rand(0, Math.PI * 2); const angularVel = rand(-0.02, 0.02); const twinklePhase = Math.random(); return { x, y, vx, vy, size, opacity, rotate, angularVel, twinklePhase, depth, life: 0 }; } // Draw a flake. If useGradientFlake, draw a radial gradient for soft look. _drawFlake(f) { const ctx = this.ctx; ctx.save(); ctx.globalAlpha = f.opacity; ctx.translate(f.x, f.y); ctx.rotate(f.rotate); const s = f.size; if (this.cfg.useGradientFlake) { // soft circular flake using radial gradient const g = ctx.createRadialGradient(0, 0, 0, 0, 0, s); g.addColorStop(0, 'rgba(255,255,255,1)'); g.addColorStop(0.6, 'rgba(255,255,255,0.85)'); g.addColorStop(1, 'rgba(255,255,255,0)'); ctx.fillStyle = g; ctx.beginPath(); ctx.arc(0, 0, s, 0, Math.PI * 2); ctx.fill(); } else { // simple circle ctx.fillStyle = '#fff'; ctx.beginPath(); ctx.arc(0, 0, s, 0, Math.PI * 2); ctx.fill(); } ctx.restore(); } _updateFlake(f, dt) { // dt in seconds // subtle wind noise over time const timeFactor = this._time * 0.001; const windNoise = Math.sin(timeFactor + f.depth * 10) * this.cfg.windVariance * (1 - f.depth); f.vx += windNoise * 0.0005 * dt * 60; // gentle lateral f.vy += this.cfg.gravity * (0.9 + f.depth) * (dt * 60); // gravity scaled by depth // move f.x += f.vx * (dt * 60); f.y += f.vy * (dt * 60); // sway for a drifting effect f.x += Math.sin((f.life + this._time * 0.002) * (0.6 + f.depth)) * (0.3 + f.depth * 0.8); // rotation f.rotate += f.angularVel * (dt * 60); // twinkle if (this.cfg.twinkle && Math.random() < this.cfg.twinkleChance) { f.opacity = clamp(f.opacity + rand(-0.35, 0.35), 0.12, this.cfg.maxOpacity); } // mouse repel if (this.cfg.mouseRepel && this.mouse.x !== -9999) { const dx = f.x - this.mouse.x; const dy = f.y - this.mouse.y; const dist = Math.sqrt(dx * dx + dy * dy); if (dist < this.cfg.mouseRepelRadius) { const repel = (1 - dist / this.cfg.mouseRepelRadius) * 6; f.vx += (dx / (dist + 0.0001)) * repel * 0.05; f.vy += (dy / (dist + 0.0001)) * repel * 0.02; } } f.life++; // if below bottom, recycle or respawn above if (f.y - f.size > this.height + 50 || f.x < -100 || f.x > this.width + 100) { // respawn Object.assign(f, this._createFlake()); f.y = rand(-30, -10); } } _spawnFlakes() { // spawn a few each frame up to maxFlakes for (let i = 0; i < this.cfg.spawnRate; i++) { if (this.flakes.length >= this.cfg.maxFlakes) break; this.flakes.push(this._createFlake()); } } _clearCanvas() { this.ctx.clearRect(0, 0, this.width, this.height); } _renderFrame(now) { if (!this.running) return; if (!this._lastFrameTime) this._lastFrameTime = now; const elapsed = now - this._lastFrameTime; this._time += elapsed; if (elapsed < this._frameInterval) { requestAnimationFrame(this._boundRender); return; } const dt = Math.min(elapsed / 1000, 0.1); // seconds, clamp for large frame gaps this._lastFrameTime = now; // dynamic wind base oscillation this._windBase = this.cfg.wind + Math.sin(this._time * 0.0007) * (this.cfg.windVariance * 0.5); // spawn this._spawnFlakes(); // draw this._clearCanvas(); for (let i = 0; i < this.flakes.length; i++) { this._updateFlake(this.flakes[i], dt); this._drawFlake(this.flakes[i]); } requestAnimationFrame(this._boundRender); } start() { if (this.running) return; this.running = true; this._boundRender = this._renderFrame.bind(this); this._lastFrameTime = 0; requestAnimationFrame(this._boundRender); } stop() { this.running = false; } toggle() { this.running ? this.stop() : this.start(); } destroy() { this.stop(); this._unbindHandlers(); if (this.canvas && this.canvas.parentNode) this.canvas.parentNode.removeChild(this.canvas); this.flakes = []; } // convenience setter to change config at runtime setConfig(partial) { Object.assign(this.cfg, partial); // immedately apply z-index change if (this.canvas) this.canvas.style.zIndex = String(this.cfg.zIndex); } } // Expose a singleton-style helper on window const globalKey = 'Snowfall'; if (!window[globalKey]) { const inst = new SnowfallInstance(); window[globalKey] = { instance: inst, start: (cfg) => { if (cfg) inst.setConfig(cfg); inst.start(); return inst; }, stop: () => inst.stop(), toggle: () => inst.toggle(), destroy: () => inst.destroy(), setConfig: (c) => inst.setConfig(c) }; // auto-start unless user disabled autoStart explicitly if (!window.snowfallAutoStartDisabled) { window[globalKey].start(); } } else { console.warn('Snowfall already present on page.'); } })(); function openPopup() { document.getElementById("popup").style.display = "block"; document.getElementById("overlay").style.display = "block"; document.getElementById("pageContent").classList.add("blurred"); } function closePopup() { document.getElementById("popup").style.display = "none"; document.getElementById("overlay").style.display = "none"; document.getElementById("pageContent").classList.remove("blurred"); } // Example: start with heavier snow and more wind Snowfall.start({ maxFlakes: 350, spawnRate: 6, wind: 1.6, windVariance: 1.2, gravity: 0.045, maxSize: 9 });