{"id":1341,"date":"2026-03-08T22:46:28","date_gmt":"2026-03-08T22:46:28","guid":{"rendered":"https:\/\/accord-piano-montreal.com\/?page_id=1341"},"modified":"2026-03-09T06:24:25","modified_gmt":"2026-03-09T06:24:25","slug":"service-areas","status":"publish","type":"page","link":"https:\/\/accord-piano-montreal.com\/en\/service-areas\/","title":{"rendered":"SERVICE AREAS"},"content":{"rendered":"\n\n\t<!-- \n    PAGE : SERVICE AREAS (PATRICK BRENNAN)\n    Premium Magic Design : \n    - Deep blue moving header\n    - Google Maps integration in premium frame\n    - 4 region cards with color halos (Bento Grid)\n    - Emerald Box (Pulsating) for out-of-area mention\n    - Giant Neon CTA at the end\n-->\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Inter:wght@300;400;500;600;700;900&#038;display=swap\" rel=\"stylesheet\"\/>\n<style data-no-minify=\"1\">\n    \/* ========================================================= *\/\n    \/* GLOBAL STYLES & PREMIUM ANIMATIONS                        *\/\n    \/* ========================================================= *\/\n    .font-sans { font-family: 'Inter', sans-serif; }\n    .force-lh-title { line-height: 1.15 !important; }\n    .force-lh-text { line-height: 1.65 !important; }\n    .force-lh-list { line-height: 1.5 !important; }\n    \/* Moving deep blue background *\/\n    .bg-moving-light {\n        background: linear-gradient(-45deg, #0f172a, #1e3a8a, #2563eb, #1d4ed8);\n        background-size: 400% 400%;\n        animation: gradient-move 15s ease infinite; \n    }\n    @keyframes gradient-move {\n        0% { background-position: 0% 50%; }\n        50% { background-position: 100% 50%; }\n        100% { background-position: 0% 50%; }\n    }\n    \/* Luminous orbs *\/\n    .orb { position: absolute; border-radius: 50%; filter: blur(80px); opacity: 0.6; animation: float-orb 15s ease-in-out infinite alternate; pointer-events: none; }\n    .orb-1 { top: 5%; left: -10%; width: 300px; height: 300px; background: rgba(59, 130, 246, 0.4); animation-delay: 0s; }\n    .orb-2 { bottom: 5%; right: -10%; width: 350px; height: 350px; background: rgba(37, 99, 235, 0.3); animation-delay: -4s; animation-duration: 18s; }\n    @media (min-width: 768px) { .orb-1 { width: 500px; height: 500px; filter: blur(90px); } .orb-2 { width: 600px; height: 600px; filter: blur(100px); } }\n    @keyframes float-orb { 0% { transform: translate(0, 0) scale(1); } 100% { transform: translate(60px, 40px) scale(1.1); } }\n    \/* ========================================================= *\/\n    \/* PREMIUM IMAGE\/MAP FRAMES                                  *\/\n    \/* ========================================================= *\/\n    .img-premium-wrapper {\n        background-color: #ffffff; \n        padding: 10px; \n        border-radius: 2.5rem;\n        border: 1px solid rgba(226, 232, 240, 0.8);\n        box-shadow: 0 20px 40px -10px rgba(30, 58, 138, 0.15);\n        transition: transform 0.5s cubic-bezier(0.175, 0.885, 0.32, 1.275), box-shadow 0.5s ease;\n    }\n    @media (min-width: 768px) {\n        .img-premium-wrapper { padding: 14px; border-radius: 3rem; }\n    }\n    .img-premium-wrapper:hover {\n        transform: translateY(-8px) scale(1.02);\n        box-shadow: 0 35px 60px -15px rgba(30, 58, 138, 0.25);\n    }\n    .img-inner-container {\n        overflow: hidden; \n        border-radius: 2rem;\n        width: 100%;\n        height: 100%;\n        position: relative;\n        background-color: #f8fafc;\n    }\n    @media (min-width: 768px) {\n        .img-inner-container { border-radius: 2.3rem; }\n    }\n    \/* ========================================================= *\/\n    \/* REGION CARDS (BENTO)                                      *\/\n    \/* ========================================================= *\/\n    .region-card {\n        background: #ffffff;\n        border-radius: 2rem;\n        padding: 2rem;\n        border: 1px solid #f1f5f9;\n        box-shadow: 0 10px 30px -10px rgba(0,0,0,0.05);\n        transition: all 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275);\n        position: relative;\n        overflow: hidden;\n        height: 100%;\n    }\n    .region-card:hover {\n        transform: translateY(-10px);\n        border-color: #bfdbfe;\n        box-shadow: 0 20px 40px -10px rgba(59, 130, 246, 0.15);\n    }\n    .region-card::before {\n        content: ''; position: absolute; top: 0; left: 0; right: 0; height: 6px;\n    }\n    .rc-montreal::before { background: linear-gradient(90deg, #3b82f6, #60a5fa); }\n    .rc-laval::before { background: linear-gradient(90deg, #8b5cf6, #a78bfa); }\n    .rc-rivenord::before { background: linear-gradient(90deg, #10b981, #34d399); }\n    .rc-rivesud::before { background: linear-gradient(90deg, #f43f5e, #fb7185); }\n    \/* ========================================================= *\/\n    \/* GOLDEN SPARKLES AND NEON BUTTONS                          *\/\n    \/* ========================================================= *\/\n    .card-sparkle { position: absolute; background: #ffffff; border-radius: 50%; box-shadow: 0 0 10px 3px rgba(251, 191, 36, 0.9); z-index: 20; }\n    .cs-1 { top: -2px; left: 50%; width: 4px; height: 4px; animation: cs-pulse-x 2s infinite alternate; }\n    .cs-2 { bottom: -2px; left: 50%; width: 5px; height: 5px; animation: cs-pulse-x 2s infinite alternate 0.7s; }\n    .cs-3 { top: 50%; left: -2px; width: 3px; height: 3px; animation: cs-pulse-y 2s infinite alternate 1.3s; }\n    .cs-4 { top: 50%; right: -2px; width: 4px; height: 4px; animation: cs-pulse-y 2s infinite alternate 0.4s; }\n    @keyframes cs-pulse-x { 0% { transform: scale(0.8) translateX(-50%); opacity: 0.5; box-shadow: 0 0 5px 1px rgba(251, 191, 36, 0.5); } 100% { transform: scale(1.5) translateX(-50%); opacity: 1; box-shadow: 0 0 15px 4px rgba(251, 191, 36, 1); } }\n    @keyframes cs-pulse-y { 0% { transform: scale(0.8) translateY(-50%); opacity: 0.5; box-shadow: 0 0 5px 1px rgba(251, 191, 36, 0.5); } 100% { transform: scale(1.5) translateY(-50%); opacity: 1; box-shadow: 0 0 15px 4px rgba(251, 191, 36, 1); } }\n    \/* EXISTING NEONS *\/\n    .neon-btn-primary { background-color: rgba(37, 99, 235, 0.4) !important; color: #ffffff !important; border: 2px solid #93c5fd !important; box-shadow: 0 0 20px rgba(96, 165, 250, 0.8), inset 0 0 15px rgba(96, 165, 250, 0.4) !important; backdrop-filter: blur(8px) !important; animation: neon-pulse-strong 3s infinite alternate, button-breathe 4s infinite ease-in-out !important; transition: transform 0.3s ease, filter 0.3s ease !important; }\n    .neon-btn { background-color: rgba(30, 58, 138, 0.7) !important; color: #ffffff !important; border: 2px solid rgba(147, 197, 253, 0.6) !important; box-shadow: 0 0 15px rgba(59, 130, 246, 0.6), inset 0 0 15px rgba(59, 130, 246, 0.3) !important; backdrop-filter: blur(8px) !important; animation: neon-pulse 3s infinite alternate, button-breathe 4s infinite ease-in-out !important; transition: transform 0.3s ease, filter 0.3s ease !important; animation-delay: 0.5s !important; }\n    @keyframes button-breathe { 0%, 100% { transform: scale(1); } 50% { transform: scale(1.04); } }\n    @keyframes neon-pulse { 0%, 100% { box-shadow: 0 0 15px rgba(59, 130, 246, 0.6), inset 0 0 10px rgba(59, 130, 246, 0.3) !important; border-color: rgba(96, 165, 250, 0.7) !important; } 40% { box-shadow: 0 0 25px rgba(147, 197, 253, 0.9), inset 0 0 20px rgba(147, 197, 253, 0.6) !important; border-color: rgba(191, 219, 254, 1) !important; } 42% { box-shadow: 0 0 45px rgba(255, 255, 255, 1), inset 0 0 30px rgba(255, 255, 255, 0.9) !important; border-color: #ffffff !important; background-color: rgba(59, 130, 246, 0.8) !important; } 45% { box-shadow: 0 0 20px rgba(96, 165, 250, 0.7), inset 0 0 15px rgba(96, 165, 250, 0.4) !important; border-color: rgba(147, 197, 253, 0.8) !important; } }\n    @keyframes neon-pulse-strong { 0%, 100% { box-shadow: 0 0 20px rgba(96, 165, 250, 0.8), inset 0 0 15px rgba(96, 165, 250, 0.4) !important; border-color: #93c5fd !important; } 40% { box-shadow: 0 0 35px rgba(147, 197, 253, 1), inset 0 0 25px rgba(147, 197, 253, 0.7) !important; border-color: #ffffff !important; } 42% { box-shadow: 0 0 60px rgba(255, 255, 255, 1), inset 0 0 40px rgba(255, 255, 255, 1) !important; border-color: #ffffff !important; background-color: rgba(96, 165, 250, 1) !important; } 45% { box-shadow: 0 0 25px rgba(147, 197, 253, 0.9), inset 0 0 20px rgba(147, 197, 253, 0.5) !important; border-color: #bfdbfe !important; } }\n    .neon-btn:hover, .neon-btn-primary:hover { transform: translateY(-3px) scale(1.06) !important; filter: brightness(1.3); animation-play-state: paused !important; }\n    \/* ========================================================= *\/\n    \/* GREEN BOX (Always on)                                     *\/\n    \/* ========================================================= *\/\n    .neon-box-green {\n        background-color: #ecfdf5; \n        border: 2px solid #34d399; \n        animation: pulse-green-box 2.5s infinite alternate ease-in-out;\n    }\n    @keyframes pulse-green-box {\n        0% { box-shadow: 0 0 10px rgba(16, 185, 129, 0.2), inset 0 0 10px rgba(16, 185, 129, 0.1); border-color: #6ee7b7; }\n        100% { box-shadow: 0 0 30px rgba(16, 185, 129, 0.6), inset 0 0 20px rgba(16, 185, 129, 0.2); border-color: #10b981; }\n    }\n<\/style>\n    <!-- ======================================================= -->\n    <!-- 1. PAGE HEADER (HERO)                                   -->\n    <!-- ======================================================= -->\n        <!-- Lights -->\n            <h1>\n                Service Areas\n            <\/h1>\n            \n                <strong>Piano Tuner in Montreal and surrounding areas<\/strong>\n            \n        <!-- THICK GOLDEN LINE AT BOTTOM -->\n    <!-- ======================================================= -->\n    <!-- 2. INTRODUCTION & GOOGLE MAPS                           -->\n    <!-- ======================================================= -->\n            <!-- LEFT TEXT -->\n                <h2>\n                    Wherever the<br \/>music plays\n                <\/h2>\n                    \n                        I travel for piano tuning and maintenance throughout the <strong>Greater Montreal area<\/strong>.\n                    \n                    \n                        The areas below represent the most frequently serviced locations, but are not limited to these.\n                    \n                    <!-- GREEN BOX (Out of area) -->\n                                <h4>Don&#8217;t see your city?<\/h4>\n                                \n                                    If your area is not on this list, I may still be able to travel there. Please don&#8217;t hesitate to contact me to check availability based on your location.\n                                \n            <!-- RIGHT MAP -->\n                        <iframe \n                            src=\"https:\/\/www.google.com\/maps\/embed?pb=!1m18!1m12!1m3!1d357492.3807204192!2d-73.97446142710156!3d45.55835260173678!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x4cc91a541c64b70d%3A0x654e3138211fefef!2sMontr%C3%A9al%2C%20QC!5e0!3m2!1sfr!2sca!4v1700000000000!5m2!1sfr!2sca\" \n                            allowfullscreen=\"\" \n                            loading=\"lazy\" \n                            referrerpolicy=\"no-referrer-when-downgrade\">\n                        <\/iframe>\n    <!-- ======================================================= -->\n    <!-- 3. BENTO GRID : THE 4 REGIONS                           -->\n    <!-- ======================================================= -->\n                <h2>\n                    Main Service Areas\n                <\/h2>\n                <!-- MONTREAL CARD (Blue) -->\n                    <h3>Montreal<\/h3>\n                    <ul>\n                        <li>\n                            Montreal\n                        <\/li>\n                        <li>\n                            Montreal West\n                        <\/li>\n                        <li>\n                            Lachine\n                        <\/li>\n                        <li>\n                            Outremont\n                        <\/li>\n                        <li>\n                            Westmount\n                        <\/li>\n                        <li>\n                            Plateau-Mont-Royal\n                        <\/li>\n                        <li>\n                            Rosemont\n                        <\/li>\n                        <li>\n                            Verdun\n                        <\/li>\n                        <li>\n                            Ahuntsic\n                        <\/li>\n                        <li>\n                            C\u00f4te-des-Neiges\n                        <\/li>\n                        <li>\n                            Beaconsfield\n                        <\/li>\n                        <li>\n                            Kirkland\n                        <\/li>\n                    <\/ul>\n                <!-- LAVAL CARD (Purple) -->\n                    <h3>Laval<\/h3>\n                    <ul>\n                        <li>\n                            Laval\n                        <\/li>\n                        <li>\n                            Chomedey\n                        <\/li>\n                        <li>\n                            Sainte-Doroth\u00e9e\n                        <\/li>\n                        <li>\n                            Vimont\n                        <\/li>\n                        <li>\n                            Duvernay\n                        <\/li>\n                    <\/ul>\n                <!-- NORTH SHORE CARD (Emerald) -->\n                    <h3>North Shore<\/h3>\n                    <ul>\n                        <li>\n                            Terrebonne\n                        <\/li>\n                        <li>\n                            Mascouche\n                        <\/li>\n                        <li>\n                            Blainville\n                        <\/li>\n                        <li>\n                            Boisbriand\n                        <\/li>\n                        <li>\n                            Lavaltrie\n                        <\/li>\n                    <\/ul>\n                <!-- SOUTH SHORE CARD (Rose) -->\n                    <h3>South Shore<\/h3>\n                    <ul>\n                        <li>\n                            Longueuil\n                        <\/li>\n                        <li>\n                            Brossard\n                        <\/li>\n                        <li>\n                            Saint-Lambert\n                        <\/li>\n                        <li>\n                            Boucherville\n                        <\/li>\n                        <li>\n                            La Prairie\n                        <\/li>\n                    <\/ul>\n    <!-- ======================================================= -->\n    <!-- 4. FINAL CALL TO ACTION (PREMIUM NEON STYLE)            -->\n    <!-- ======================================================= -->\n            <h3>\n                Ready to schedule your appointment?\n            <\/h3>\n                <p><strong>I come directly to your home for your piano&#8217;s maintenance.<\/strong><\/p>\n                <p>Patrick Brennan &#8211; Piano Tuner<\/p>\n                        Check my availability today.\n            <!-- Action Buttons -->\n                <!-- Bouton qui d\u00e9clenche le Modal -->\n                <button onclick=\"openAvailabilityModal()\">\n                    Check Availability\n                <\/button>\n                <a href=\"tel:+15149694849\">\n                    Call\n                <\/a>\n                <a href=\"sms:+15149694849\">\n                    Text\n                <\/a>\n    <!-- ======================================================= -->\n    <!-- 5. POPUP MODAL (CHECK AVAILABILITY)                     -->\n    <!-- ======================================================= -->\n        <!-- Sur mobile: coll\u00e9 en bas avec coins arrondis en haut. Sur PC: centr\u00e9 -->\n            <!-- Poign\u00e9e de glissement (Mobile uniquement) -->\n            <!-- Modal Header -->\n                <h3>Check Availability<\/h3>\n                <button onclick=\"closeAvailabilityModal()\">\n                <\/button>\n            <!-- Shortcode Content (Zone d\u00e9filable) -->\n                <div class=\"fl-builder-content fl-builder-content-1369 fl-builder-template fl-builder-module-template fl-builder-global-templates-locked\" data-post-id=\"1369\"><div class=\"fl-module fl-module-contact-form fl-node-x6u5esqn47cw\" data-node=\"x6u5esqn47cw\">\n\t<div class=\"fl-module-content fl-node-content\">\n\t\t<form class=\"fl-contact-form\" >\t<input type=\"hidden\" id=\"fl-contact-form-nonce\" name=\"fl-contact-form-nonce\" value=\"ab1c1a6e95\" \/><input type=\"hidden\" name=\"_wp_http_referer\" value=\"\/en\/wp-json\/wp\/v2\/pages\/1341\" \/>\t<input type=\"hidden\" name=\"fl-layout-id\" value=\"1341\" \/>\n\t\t<div class=\"fl-input-group fl-name\">\n\t\t<label for=\"fl-name\" >Your name<\/label>\n\t\t<span class=\"fl-contact-error\" id=\"name-error\">Please enter your name.<\/span>\n\t\t<input type=\"text\" id=\"fl-name\" name=\"fl-name\" aria-describedby=\"name-error\" value=\"\" placeholder=\"Your name\" \/>\n\t<\/div>\n\t\t\t<div class=\"fl-input-group fl-subject\">\n\t\t<label for=\"fl-subject\" >Subject<\/label>\n\t\t<span class=\"fl-contact-error\" id=\"subject-error\">Please enter a subject.<\/span>\n\t\t<input type=\"text\" id=\"fl-subject\" aria-describedby=\"subject-error\" name=\"fl-subject\" value=\"\" placeholder=\"Subject\" \/>\n\t<\/div>\n\t\t\t<div class=\"fl-input-group fl-email\">\n\t\t<label for=\"fl-email\" >Your email<\/label>\n\t\t<span class=\"fl-contact-error\" id=\"email-error\">Please enter a valid email.<\/span>\n\t\t<input type=\"email\" id=\"fl-email\" aria-describedby=\"email-error\" name=\"fl-email\" value=\"\" placeholder=\"Your email\" \/>\n\t<\/div>\n\t\t\t<div class=\"fl-input-group fl-phone\">\n\t\t<label for=\"fl-phone\">Your phone<\/label>\n\t\t<span class=\"fl-contact-error\" id=\"phone-error\">Please enter a valid phone number.<\/span>\n\t\t<input type=\"tel\" id=\"fl-phone\" aria-describedby=\"phone-error\" name=\"fl-phone\" value=\"\" placeholder=\"Your phone\" \/>\n\t<\/div>\n\t\t<div class=\"fl-input-group fl-message\">\n\t\t<label for=\"fl-message\" >Your message<\/label>\n\t\t<span class=\"fl-contact-error\" id=\"message-error\">Please enter a message.<\/span>\n\t\t<textarea id=\"fl-message\" name=\"fl-message\" aria-describedby=\"message-error\" placeholder=\"Your message\"><\/textarea>\n\t<\/div>\n\t\n\t\t<div class=\"fl-input-group fl-recaptcha\">\n\t\t<span class=\"fl-contact-error\">Please check the captcha to verify you are not a robot.<\/span>\n\t\t<div id=\"x6u5esqn47cw-fl-grecaptcha\" class=\"fl-grecaptcha\" data-sitekey=\"6Lc47EksAAAAAEuRXMy_abGZobeJ9sCrsJFt6KAs\" data-validate=\"normal\" data-theme=\"light\"><\/div>\n\t<\/div>\n\t\t<div class=\"fl-button-wrap fl-button-width-auto fl-button-left\">\n\t\t\t<a href=\"#\" target=\"_self\" class=\"fl-button\">\n\t\t\t\t\t\t\t<span class=\"fl-button-text\">Send<\/span>\n\t\t\t\t\t<\/a>\n<\/div>\n\t\n\t<span class=\"fl-send-error\" style=\"display:none;\">Message failed. Please try again.<\/span>\n<\/form>\n\t<span class=\"fl-success-msg\" style=\"display:none;\"><p>Thanks for your message! Patrick We\u2019ll be in touch soon.<\/p><\/span>\n\t<\/div>\n<\/div>\n<\/div>\n            <!-- Footer avec bouton de fermeture -->\n                <button onclick=\"closeAvailabilityModal()\">\n                    Close \/ Fermer\n                <\/button>\n    <!-- Script de gestion du Modal & Tactile -->\n\n","protected":false},"excerpt":{"rendered":"<p>Service Areas Piano Tuner in Montreal and surrounding areas Wherever themusic plays I travel for piano tuning and maintenance throughout the Greater Montreal area. The areas below represent the most frequently serviced locations, but are not limited to these. Don&#8217;t see your city? If your area is not on this list, I may still be&hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"footnotes":""},"class_list":["post-1341","page","type-page","status-publish","hentry"],"acf":[],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/accord-piano-montreal.com\/en\/wp-json\/wp\/v2\/pages\/1341","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/accord-piano-montreal.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/accord-piano-montreal.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/accord-piano-montreal.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/accord-piano-montreal.com\/en\/wp-json\/wp\/v2\/comments?post=1341"}],"version-history":[{"count":4,"href":"https:\/\/accord-piano-montreal.com\/en\/wp-json\/wp\/v2\/pages\/1341\/revisions"}],"predecessor-version":[{"id":1386,"href":"https:\/\/accord-piano-montreal.com\/en\/wp-json\/wp\/v2\/pages\/1341\/revisions\/1386"}],"wp:attachment":[{"href":"https:\/\/accord-piano-montreal.com\/en\/wp-json\/wp\/v2\/media?parent=1341"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}