---
site_name: Filipínské & Thajské masáže
site_description: Nejlepší filipínské a thajské masáže v Praze
site_url: https://edensgarden.cz
contact_email: reg@edensgarden.cz

title: Masáže pro dva 2025
url: https://edensgarden.cz/masaze/masaze-pro-dva-2025/
date: 2025-04-29
modified: 2025-05-19
type: page
---

[![Šedé logo Eden's Garden](https://edensgarden.cz/img/edens-garden-logonoclaim-wh.svg "Logo Eden's Garden")](https://edensgarden.cz/)

# Masáže pro dva 2025

Párové masáže

REZERVOVAT

CENÍK

## Účinky masáže pro dva

![edens garden list wh](https://edensgarden.cz/img/edens-garden-list-wh.svg "edens garden list wh")

Skvělý dárek pro každou příležitost.

![edens garden list wh](https://edensgarden.cz/img/edens-garden-list-wh.svg "edens garden list wh")

Podporuje vzájemné pouto a prohlubuje emocionální propojení.

![edens garden list wh](https://edensgarden.cz/img/edens-garden-list-wh.svg "edens garden list wh")

Skvělý pro páry i přátele.

![edens garden list wh](https://edensgarden.cz/img/edens-garden-list-wh.svg "edens garden list wh")

Harmonizuje energii obou partnerů a zlepšuje celkovou náladu.

![edens garden list wh](https://edensgarden.cz/img/edens-garden-list-wh.svg "edens garden list wh")

Užijte si hřejivý pocit společně.

![edens garden list wh](https://edensgarden.cz/img/edens-garden-list-wh.svg "edens garden list wh")

Navrací pružnost těla, ulevuje od napětí a bolesti svalů.

![edens garden list wh](https://edensgarden.cz/img/edens-garden-list-wh.svg "edens garden list wh")

Prohlubuje intimitu a důvěru, vytváří nezapomenutelný společný zážitek.

### Dopřejte si relax u nejlépe hodnocených masáží v Praze

[![Massage icon](https://edensgarden.cz/wp-content/uploads/2025/02/masaz-ico.png "Massage icon")](https://edensgarden.cz/masaze/)

### [Máme masáže a wellness pro každého](https://edensgarden.cz/masaze/)

Vyberte si z nejširší nabídky masáží, včetně naší jedinečné filipínské. Užijte si individuální masáž, párovou, těhotenskou nebo speciální masáže pro děti.

[![Benefits at Edens Garden](https://edensgarden.cz/wp-content/uploads/2023/05/benefity.png "Benefits at Edens Garden")](https://edensgarden.cz/zamestnanecke-benefity/)

### [Platba zaměstnaneckými benefity](https://edensgarden.cz/zamestnanecke-benefity/)

Masáže, dárkové poukazy i permanentky můžete zaplatit benefitními programy (FKSP, Edenred, Pluxee, Benefit Plus, Up, Benefity CZ).

[![Gift Cards Edens Garden](https://edensgarden.cz/wp-content/uploads/2023/11/karta-150x125-1.png "Gift Cards Edens Garden")](https://eshop.edensgarden.cz)

### [Poukazy a permanentky se slevou až 30 %](https://eshop.edensgarden.cz)

Darujte relaxaci. Pořiďte si dárkové poukazy nebo permanentky a užijte si výhodné ceny s 30% slevou.

[![Branches Edens Garden](https://edensgarden.cz/wp-content/uploads/2023/11/pobocky.png "Branches Edens Garden")](https://edensgarden.cz/kontakt/)

### [Relaxace na 4 pobočkách v Praze](https://edensgarden.cz/kontakt/)

Navštivte nás denně od 10 do 23 hodin a užijte si svojí masáž na vybrané pobočce. V prémiové pobočce Grandior můžete navíc zažít luxusní wellness, hammam rituál nebo pivní lázně.

[![Google reviews](https://edensgarden.cz/wp-content/uploads/2023/06/google-recenze49.png "Google reviews")](https://www.google.cz/maps/search/Edens+Garden/@50.0679908,14.4151775,14z/data=!3m1!4b1)

[Rezervovat masáž](https://edensgarden.cz/masaze/masaze-pro-dva-60min-rezervace/)

### Společné chvíle pohody a relaxace

Představte si to: tlumené světlo, uklidňující hudba a vůně aromatických olejů. Vedle vás člověk, kterého máte rádi – partner, kamarádka nebo třeba sestra. Masážní lehátka jsou připravená, atmosféra vybízí k úplnému uvolnění. Nezní to jako dokonalý recept, jak zapomenout na svět tam venku?

Párové masáže jsou víc než jen relaxační procedura. Jsou zážitkem, který vás přenese do jiné dimenze – plné klidu, sdílené harmonie a pocitu, že na chvíli nic jiného neexistuje. Co by mohlo být lepším dárkem k narozeninám, výročí nebo jen tak pro radost?

[![Dvě masérky provádějí Lomi Lomi masáž pro dvě ženy v masážním salonu.](https://edensgarden.cz/wp-content/uploads/2024/07/Masaz-Lomi-Lomi-masaz-pro-dva750_500.webp "Lomi Lomi masáž pro dva")](https://edensgarden.cz/wp-content/uploads/2024/07 / Masaz-Lomi-Lomi-masaz-pro-dva750_500.webp)

[![Dvě ženy leží na masážních stolech a užívají si hloubkovou masáž od dvou masérek v modrých uniformách.](https://edensgarden.cz/wp-content/uploads/2024/07/Hloubkova-masaz-pro-dva-750_500.webp "Hloubková masáž pro dva")](https://edensgarden.cz/wp-content/uploads/2024/07 / Hloubkova-masaz-pro-dva-750_500.webp)

[![Dvě ženy leží na masážních stolech a užívají si klasickou thajskou masáž od dvou masérek v modrých uniformách.](https://edensgarden.cz/wp-content/uploads/2024/07/Klasicka-thajska-masaz-pro-dva-neboli-parova-masaz_750_500-.webp "Klasická thajská masáž pro dva")](https://edensgarden.cz/wp-content/uploads/2024/07 / Klasicka-thajska-masaz-pro-dva-neboli-parova-masaz_750_500-.webp)

[![Dvě ženy leží na masážních stolech a užívají si sportovní masáž od dvou masérek v modrých uniformách.](https://edensgarden.cz/wp-content/uploads/2024/07/Sportovni-masaz-pro-dva-neboli-parova-masaz_750_500-.webp "Sportovní masáž pro dva")](https://edensgarden.cz/wp-content/uploads/2024/07 / Sportovni-masaz-pro-dva-neboli-parova-masaz_750_500-.webp)

### Ceník masáže

Masáž pro dva 60 min od

2598 Kč

Masáž pro dva 90 min od

3398 Kč

[Rezervovat ›](https://edensgarden.cz/masaze/masaze-pro-dva-60min-rezervace/)

Ceny platí pro pobočky Štěpánská, Na Poříčí a Vyskočilova, kde si vyberete ze široké nabídky masáží.

Všechny masáže včetně dárkových poukazů a permanentek můžete hradit platební kartou, FKSP i zaměstnaneckými benefity.

V případě zakoupení permanentky na masáže získáte navíc zvýhodněné ceny až o 30 %.

### Ceník masáže premium

Masáž pro dva 60 min od

3598 Kč

Masáž pro dva 90 min od

4998 Kč

[Rezervovat premium ›](https://edensgarden.cz/?page_id=18756)

Ceník platí pro pobočku Grandior Spa, kde ke každé masáži získáte 30 minut wellness zdarma.

Čekají tu na vás exkluzivní procedury, jako je hammam rituál, pivní lázně, jacuzzi nebo solné tepidárium.

### Najděte nejbližší pobočku:

Klikněte na pobočku a proveďte rezervaci:

Najít nejbližší pobočku

Štěpánská – Praha 1

Vyskočilova – Praha 4

Grandior Spa – Praha 1

Na Poříčí – Praha 1

**

Kliknutím aktivujete mapu

****Najít mou pozici

**Navigovat do místa

X

**Navigovat na pobočku**Najít mou pozici

****

**
 Zobrazit všechny pobočky

** Seznam poboček

 `;
}

 // Navigation and Find My Position buttons on the original map
 const navigate Button = document.get Element By Id('navigate-button');
 const find Position Button = document.get Element By Id('find-position-button');

 navigate Button.add Event Listener('click', function(event) {
 event.prevent Default();
 event.stop Propagation(); // Prevents event propagation
 if (current Branch && current Branch.url) {
 window.location.href = current Branch.url;
 } else {
 alert(branch Map Data.please Select Branch First);
 }
 });

 find Position Button.add Event Listener('click', function(event) {
 event.prevent Default();
 event.stop Propagation(); // Prevents event propagation
 if (navigator.geolocation) {
 navigator.geolocation.get Current Position(success Find Position Button, error Find Position Button, {
 enable High Accuracy: true,
 timeout: 5000,
 maximum Age: 0
 });
 } else {
 alert(branch Map Data.geolocation Not Supported);
 }
 });

 // Add functionality to open the large map
 document.get Element By Id('open-large-map').add Event Listener('click', function(event) {
 event.prevent Default();
 event.stop Propagation(); // Prevents event propagation
 document.get Element By Id('large-map-modal').style.display = 'block';
 document.body.style.overflow = 'hidden'; // Prevents background scrolling

 // Hide navigation button on the small map
 navigate Button.style.display = 'none';

 set Timeout(function() {
 initialize Large Map();

 // Update map dimensions after displaying the modal
 large Map.invalidate Size();

 if (current Branch) {
 // If a branch is selected, update the large map
 update Large Map With Current Branch();
 } else {
 // If no branch is selected, display all branches
 add All Branches To Large Map();
 }

 // Add user location marker back to the large map if it exists
 if (user Location Marker) {
 user Location Marker.add To(large Map);
 }
 }, 100); // Delay to ensure the map is visible

 // Populate branch list without user location
 populate Branch List(null);
 });

 document.get Element By Id('close-large-map').add Event Listener('click', function(event) {
 event.prevent Default();
 event.stop Propagation(); // Prevents event propagation
 document.get Element By Id('large-map-modal').style.display = 'none';
 document.body.style.overflow = ''; // Restores scrolling

 // Show navigation button on the small map if a branch is selected
 if (current Branch) {
 navigate Button.style.display = 'flex';
 } else {
 navigate Button.style.display = 'none';
 }

 // Remove user location marker from large map
 if (user Location Marker) {
 large Map.remove Layer(user Location Marker);
 }
 });

 let large Map Initialized = false;
 let large Map;

 function initialize Large Map() {
 if (!large Map Initialized) {
 large Map = L.map('large-map').set View([50.085, 14.420], 8);
 L.tile Layer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
 max Zoom: 18,
 attribution: '© Open Street Map'
 }).add To(large Map);

 large Map Initialized = true;

 // Add event listeners for custom zoom buttons
 document.get Element By Id('large-zoom-in').add Event Listener('click', function(event) {
 event.prevent Default();
 event.stop Propagation(); // Prevents event propagation
 large Map.zoom In();
 });

 document.get Element By Id('large-zoom-out').add Event Listener('click', function(event) {
 event.prevent Default();
 event.stop Propagation(); // Prevents event propagation
 large Map.zoom Out();
 });

 // Add event listener for navigation button on the large map
 const large Navigate Button = document.get Element By Id('large-navigate-button');
 large Navigate Button.add Event Listener('click', function(event) {
 event.prevent Default();
 event.stop Propagation(); // Prevents event propagation
 if (current Branch && current Branch.url) {
 window.location.href = current Branch.url;
 } else {
 alert(branch Map Data.please Select Branch First);
 }
 });

 // Add event listener for Find My Position button on the large map
 const large Find Position Button = document.get Element By Id('large-find-position-button');
 large Find Position Button.add Event Listener('click', function(event) {
 event.prevent Default();
 event.stop Propagation(); // Prevents event propagation
 if (navigator.geolocation) {
 navigator.geolocation.get Current Position(success Large Map, error Large Map, {
 enable High Accuracy: true,
 timeout: 5000,
 maximum Age: 0
 });
 } else {
 alert(branch Map Data.geolocation Not Supported);
 }
 });
 }
 }

 function update Large Map With Current Branch() {
 // Remove existing markers (except user Location Marker)
 large Map.each Layer(function (layer) {
 if (layer instanceof L.Marker && layer !== user Location Marker) {
 large Map.remove Layer(layer);
 }
 });

 // Choose icon based on the branch
 let icon = default Icon;
 if (current Branch.id === 'grandiorspa-latitude') {
 icon = spa Icon;
 }

 const large Marker = L.marker([current Branch.lat, current Branch.lng], { icon: icon })
 .bind Popup(get Popup Content(current Branch))
 .add To(large Map);

 large Map.set View([current Branch.lat, current Branch.lng], 16);

 // Open popup after the map is fully rendered
 large Map.when Ready(function() {
 open Popup And Center(large Marker, large Map);
 });

 document.get Element By Id('large-navigate-button').style.display = 'flex';
 document.get Element By Id('large-reset-control').style.display = 'block';

 // Hide navigation button on the small map when large map is open
 navigate Button.style.display = 'none';

 // Add user location marker back to the large map if it exists
 if (user Location Marker) {
 user Location Marker.add To(large Map);
 }
 }

 function add All Branches To Large Map() {
 // Remove existing markers (except user Location Marker)
 large Map.each Layer(function (layer) {
 if (layer instanceof L.Marker && layer !== user Location Marker) {
 large Map.remove Layer(layer);
 }
 });
 // Add all markers to the large map
 displayed Branches.for Each(branch => {
 // Choose icon based on the branch
 let icon = default Icon;
 if (branch.id === 'grandiorspa-latitude') {
 icon = spa Icon;
 }

 const marker = L.marker([branch.lat, branch.lng], { icon: icon })
 .bind Popup(get Popup Content(branch))
 .add To(large Map);
 });
 large Map.fit Bounds(branch Coordinates);
 // Hide reset button
 document.get Element By Id('large-reset-control').style.display = 'none';
 // Hide navigation button
 document.get Element By Id('large-navigate-button').style.display = 'none';
 current Branch = null;

 // Hide navigation button on the small map
 navigate Button.style.display = 'none';

 // Remove user location marker from large map
 if (user Location Marker) {
 large Map.remove Layer(user Location Marker);
 }
 }

 // Button to reset the map on the large map
 document.get Element By Id('large-reset-button').add Event Listener('click', function(event) {
 event.stop Propagation(); // Prevents event propagation
 // Reset large map to display all branches
 if (large Map Initialized) {
 add All Branches To Large Map();
 }
 });

 // Function to open popup and center it (adapted for both maps)
 function open Popup And Center(marker, target Map) {
 marker.open Popup();

 marker.once('popupopen', function() {
 const popup Element = this.get Popup().get Element();
 const popup Height = popup Element.offset Height;

 // Pan the map to center the popup
 target Map.pan By([0, -popup Height / 2], { animate: true });
 });
 }

 function find Branch Element(branch Id) {
 const id Variants = [branch Id, branch Id + '-m', branch Id + '-t'];
 for (const id of id Variants) {
 const element = document.get Element By Id(id);
 if (element) {
 return element;
 }
 }
 return null;
 }

 function attach Branch Event Listeners() {
 displayed Branches.for Each(branch => {
 const branch Element = find Branch Element(branch.id);
 if (branch Element && typeof branch Element.add Event Listener === 'function') {
 // Remove existing event listener before adding a new one
 branch Element.remove Event Listener('click', branch Element Click Handler);
 branch Element.add Event Listener('click', branch Element Click Handler);
 console.log(`${branch Map Data.attached Event Listener} ${branch Element.id}`);
 } else {
 console.log(`${branch Map Data.branch Element Not Found} ${branch.id}, ${branch.id}-m, or ${branch.id}-t`);
 }
 });
 }

 function branch Element Click Handler(event) {
 const branch Id With Suffix = event.current Target.id;
 const branch Id = branch Id With Suffix.replace(/-m$|-t$/, '');
 const branch = displayed Branches.find(b => b.id === branch Id);
 if (branch) {
 // Remove existing markers
 markers.for Each(({ marker }) => marker.remove());
 markers.length = 0; // Clear the markers array

 // Add the selected branch marker
 let icon = default Icon;
 if (branch.id === 'grandiorspa-latitude') {
 icon = spa Icon;
 }
 const marker = L.marker([branch.lat, branch.lng], { icon: icon })
 .bind Popup(get Popup Content(branch))
 .add To(map);
 markers.push({ marker, branch });

 map.set View([branch.lat, branch.lng], 16);
 open Popup And Center(marker, map);

 current Branch = branch;
 navigate Button.style.display = 'flex'; // Show navigation button on the original map

 // Hide navigation button on the large map if open
 document.get Element By Id('large-navigate-button').style.display = 'none';

 // Update large map if initialized
 if (large Map Initialized) {
 update Large Map With Current Branch();
 }

 // Update 'active' class to highlight selected branch
 document.query Selector All('.branch-section-branch').for Each(function(elem) {
 elem.class List.remove('active');
 });
 event.current Target.class List.add('active');
 } else {
 console.log(`${branch Map Data.branch Data Not Found} ${branch Id}`);
 }
 }

 // Attach event listeners
 attach Branch Event Listeners();

 // Re-attach event listeners on window resize
 window.add Event Listener('resize', function() {
 // Delay to adjust content
 set Timeout(attach Branch Event Listeners, 500);
 });

 // Observe DOM changes to re-attach event listeners
 const observer = new Mutation Observer(function(mutations) {
 attach Branch Event Listeners();
 });

 // Observe the entire document body
 observer.observe(document.body, { child List: true, subtree: true });

 // Function to calculate distance
 function calculate Distance(lat1, lon1, lat2, lon2) {
 const R = 6371; // Earth's radius in km
 const d Lat = (lat2 - lat1) * Math.PI / 180;
 const d Lon = (lon2 - lon1) * Math.PI / 180;
 const a = Math.sin(d Lat / 2) * Math.sin(d Lat / 2) +
 Math.cos(lat1 * Math.PI / 180) * Math.cos(lat2 * Math.PI / 180) *
 Math.sin(d Lon / 2) * Math.sin(d Lon / 2);
 return R * 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
 }

 // Function to populate the branch list on the large map
 function populate Branch List(user Location) {
 const branch List Div = document.get Element By Id('large-branch-list');
 branch List Div.inner HTML = ''; // Clear content

 let branches To Display = displayed Branches.slice(); // Use 'displayed Branches'

 if (user Location) {
 // Calculate distances and add them to branches
 branches To Display.for Each(branch => {
 branch.distance = calculate Distance(user Location.lat, user Location.lng, branch.lat, branch.lng).to Fixed(2);
 });

 // Sort branches by distance
 branches To Display.sort((a, b) => parse Float(a.distance) - parse Float(b.distance));
 } else {
 // If user location is unknown, sort branches alphabetically
 branches To Display.sort((a, b) => a.name.locale Compare(b.name));
 }

 branches To Display.for Each(branch => {
 let distance Text = '';
 if (user Location && branch.distance !== undefined) {
 distance Text = ` (${branch.distance} km)`;
 }
 const branch Item = document.create Element('div');
 branch Item.style.margin Bottom = '5px';
 branch Item.style.cursor = 'pointer';
 branch Item.style.color = 'blue';
 branch Item.style.text Decoration = 'underline';
 branch Item.inner HTML = `**${branch.name}**${distance Text}`;

 branch Item.add Event Listener('click', function(event) {
 event.stop Propagation(); // Prevents event propagation
 // Focus the map on this branch
 if (large Map Initialized) {
 large Map.each Layer(function (layer) {
 if (layer instanceof L.Marker && layer !== user Location Marker) {
 large Map.remove Layer(layer);
 }
 });
 // Choose icon based on the branch
 let icon = default Icon;
 if (branch.id === 'grandiorspa-latitude') {
 icon = spa Icon;
 }
 const marker = L.marker([branch.lat, branch.lng], { icon: icon })
 .bind Popup(get Popup Content(branch))
 .add To(large Map);
 large Map.set View([branch.lat, branch.lng], 16);
 open Popup And Center(marker, large Map);
 // Show reset button
 document.get Element By Id('large-reset-control').style.display = 'block';
 // Show navigation button
 document.get Element By Id('large-navigate-button').style.display = 'flex';
 current Branch = branch;

 // Hide navigation button on the small map when large map is open
 navigate Button.style.display = 'none';

 // Add user location marker back to the map if it exists
 if (user Location Marker) {
 user Location Marker.add To(large Map);
 }
 }
 });

 branch List Div.append Child(branch Item);
 });
 }

 function success Large Map(pos) {
 const crd = pos.coords;
 populate Branch List({ lat: crd.latitude, lng: crd.longitude });

 // Add user location marker to the large map
 if (large Map Initialized) {
 if (user Location Marker) {
 large Map.remove Layer(user Location Marker);
 }
 user Location Marker = L.marker([crd.latitude, crd.longitude], { icon: user Icon })
 .bind Popup(branch Map Data.your Location)
 .add To(large Map);

 // Adjust map view to include branches and user
 const all Coords = branch Coordinates.concat([[crd.latitude, crd.longitude]]);
 large Map.fit Bounds(all Coords, { padding: [50, 50] });
 }
 }

 function error Large Map(err) {
 console.warn(`ERROR(${err.code}): ${err.message}`);
 populate Branch List(null);
 }

 // Function called upon successful geolocation for "find-position-button"
 function success Find Position Button(position) {
 const user Lat = position.coords.latitude;
 const user Lng = position.coords.longitude;
 console.log(`Lat: ${user Lat}, Lng: ${user Lng}`);

 // Add user location marker to the small map
 if (user Location Marker) {
 map.remove Layer(user Location Marker);
 }
 user Location Marker = L.marker([user Lat, user Lng], { icon: user Icon })
 .bind Popup(branch Map Data.your Location)
 .add To(map);

 // Update branch distances
 displayed Branches.for Each(branch => {
 branch.distance = calculate Distance(user Lat, user Lng, branch.lat, branch.lng).to Fixed(2);
 });

 // Sort branches by distance
 displayed Branches.sort((a, b) => parse Float(a.distance) - parse Float(b.distance));

 // Remove existing markers
 markers.for Each(({ marker }) => marker.remove());
 markers.length = 0; // Clear the markers array

 // Add markers back to the map without opening tooltips
 markers = add Markers To Map(displayed Branches, map);

 // Adjust map view to include both user location and all branches
 const all Coords = displayed Branches.map(branch => [branch.lat, branch.lng]);
 all Coords.push([user Lat, user Lng]);
 map.fit Bounds(all Coords, { padding: [50, 50] });

 // Update the branch list with distances
 update Branch List With Distances(user Lat, user Lng);

 // Hide navigation button on the small map
 navigate Button.style.display = 'none';

 // Remove current Branch
 current Branch = null;
 }

 function error Find Position Button(err) {
 console.warn(`ERROR(${err.code}): ${err.message}`);
 alert(branch Map Data.geolocation Not Supported);
 }

 // Function called upon successful geolocation for "Findclosestbranchpage"
 function success(position) {
 const user Lat = position.coords.latitude;
 const user Lng = position.coords.longitude;
 console.log(`Lat: ${user Lat}, Lng: ${user Lng}`);

 // Add user location marker to the small map
 if (user Location Marker) {
 map.remove Layer(user Location Marker);
 }
 user Location Marker = L.marker([user Lat, user Lng], { icon: user Icon })
 .bind Popup(branch Map Data.your Location)
 .add To(map);

 // Optionally, find the nearest branch and highlight it
 const { nearest Branch } = find Nearest Branch(user Lat, user Lng);

 if (nearest Branch) {
 // Update 'active' class to highlight the nearest branch
 document.query Selector All('.branch-section-branch').for Each(function(elem) {
 elem.class List.remove('active');
 });
 const branch Element = find Branch Element(nearest Branch.id);
 if (branch Element) {
 branch Element.class List.add('active');
 }

 // Remove existing markers
 markers.for Each(({ marker }) => marker.remove());
 markers.length = 0; // Clear the markers array

 // Add only the nearest branch marker
 let icon = default Icon;
 if (nearest Branch.id === 'grandiorspa-latitude') {
 icon = spa Icon;
 }
 const marker = L.marker([nearest Branch.lat, nearest Branch.lng], { icon: icon })
 .bind Popup(get Popup Content(nearest Branch))
 .add To(map);
 markers.push({ marker, branch: nearest Branch });

 // Open popup of the nearest branch
 marker.open Popup();

 current Branch = nearest Branch; // Set the currently selected branch
 navigate Button.style.display = 'flex'; // Show navigation button on the original map

 // Adjust map view to include both user location and nearest branch
 const bounds = L.lat Lng Bounds([
 [user Lat, user Lng],
 [nearest Branch.lat, nearest Branch.lng]
 ]);
 map.fit Bounds(bounds, { padding: [50, 50] });

 // Ensure the popup is fully visible
 open Popup And Center(marker, map);
 }

 // Update the branch list with distances and sort them
 update Branch List With Distances(user Lat, user Lng);
 }

 // Function called upon geolocation error
 function error(err) {
 console.warn(`ERROR(${err.code}): ${err.message}`);
 alert(branch Map Data.geolocation Not Supported);
 }

 function find Nearest Branch(user Lat, user Lng) {
 let nearest Branch = null;
 let nearest Distance = Infinity;

 displayed Branches.for Each(branch => {
 const distance = calculate Distance(user Lat, user Lng, branch.lat, branch.lng);
 if (distance {
 branch.distance = calculate Distance(user Lat, user Lng, branch.lat, branch.lng).to Fixed(2);
 });

 // Sort branches by distance
 displayed Branches.sort((a, b) => parse Float(a.distance) - parse Float(b.distance));

 // Get the branch list container
 const branch List Container = document.get Element By Id('branch-list');

 // Remove existing branch elements
 while (branch List Container.first Child) {
 branch List Container.remove Child(branch List Container.first Child);
 }

 // Re-create branch elements in sorted order
 displayed Branches.for Each(branch => {
 const branch Element = document.create Element('div');
 branch Element.class Name = 'branch-section-branch';
 branch Element.id = branch.id;

 branch Element.inner HTML = `
 ${branch.name} ([${branch.distance} km](https://www.google.com/maps/dir/?api=1&destination=%24%7Bbranch.lat%7D,%24%7Bbranch.lng%7D))
 `;

 // Attach click event handler
 branch Element.add Event Listener('click', branch Element Click Handler);

 branch List Container.append Child(branch Element);
 });

 // Re-attach event listeners
 attach Branch Event Listeners();
 }

 // Add functionality to toggle branch list visibility
 const toggle Button = document.get Element By Id('toggle-branch-list');
 const branch List = document.get Element By Id('large-branch-list');
 const branch List Container = document.get Element By Id('large-branch-list-container');
 const toggle Icon = document.get Element By Id('toggle-icon');

 toggle Button.add Event Listener('click', function(event) {
 event.stop Propagation(); // Prevents event propagation
 if (branch List.style.display === 'none' || branch List.style.display === '') {
 branch List.style.display = 'block';
 branch List Container.class List.add('open');
 toggle Icon.class List.remove('fa-chevron-up');
 toggle Icon.class List.add('fa-chevron-down');
 } else {
 branch List.style.display = 'none';
 branch List Container.class List.remove('open');
 toggle Icon.class List.remove('fa-chevron-down');
 toggle Icon.class List.add('fa-chevron-up');
 }
 });

 // Find the button to find the nearest branch (if any)
 const find Btn = document.get Element By Id('Findclosestbranchpage');
 if (find Btn && typeof find Btn.add Event Listener === 'function') {
 find Btn.add Event Listener('click', function(event) {
 event.prevent Default();
 console.log(branch Map Data.find Nearest Branch Button Clicked);
 if (navigator.geolocation) {
 navigator.geolocation.get Current Position(success, error, {
 enable High Accuracy: true,
 timeout: 5000,
 maximum Age: 0
 });
 } else {
 alert(branch Map Data.geolocation Not Supported);
 }
 });
 } else {
 console.log(branch Map Data.element Not Found);
 }

});

![Voucher - sample](https://edensgarden.cz/wp-content/uploads/2025/03/voucher-sample-1.png "Voucher - sample")

### Poukaz nebo permanentka

Dopřejte sobě nebo svým blízkým dokonalý odpočinek s našimi poukazy a permanentkami na masáže. Nabízíme 60 nebo 90minutové dárkové poukazy pro jednotlivce i páry a permanentky až s 30% slevou, pokud se chcete pravidelně hýčkat.

Koupit dárkový poukaz ›

Koupit permanentku ›

[![Google reviews](https://edensgarden.cz/wp-content/uploads/2023/06/google-recenze49.png "Google reviews")](https://www.google.cz/maps/search/Edens+Garden/@50.0679908,14.4151775,14z/data=!3m1!4b1)

### Co říkají naši zákazníci

10/10 masáž, mohu absolutně doporučit! Dostali jsme masáž šíje a zad. Kathy a Juby se o nás skvěle staraly svýma jemnýma rukama a byly na nás neuvěřitelně milé!

Estefania

Recenze z Mapy Google

Chodíme sem s přítelem na hlubokotkáňovou masáž a jsme vždy velmi spokojeni 🙂 Paní Jane a Juvi jsou úžasné. Už se těšíme na příště.

Adéla Nová

Recenze z Mapy Google

### Jak masáže pro dva probíhají?

1. Nejprve se trochu poznáme

Při příchodu vás přivítá naše recepční a zjistí vaše přání a potřeby. Máte rádi jemnou masáž, nebo oceníte spíš pořádnou „hloubkovou práci“? Všechno s vámi předem probereme, aby bylo jasné, co očekáváte. Také můžete zmínit svá specifika, jako jsou kožní alergie nebo citlivá místa.

Pokud máte raději intimnější prostředí, připravíme pro vás samostatné místnosti. Pokud naopak chcete sdílet zážitek vedle sebe, můžeme vás uložit v párové místnosti – s vyhřívanými lehátky a dokonalou atmosférou.

1. Masážní magie začíná

Vstoupíte do místnosti, která je jako stvořená pro odpočinek – měkké světlo, hřejivá deka a jemné tóny relaxační hudby. Naše zkušené ruce se postarají o to, aby z vašeho těla zmizel každý gram stresu, ať už v ramenou, nebo na duši.

1. Po masáži: Klid, čaj a doznění zážitku

Až masáž skončí, nebude třeba nikam spěchat. Dopřejte si ještě pár minut klidu, abyste nechali své tělo vstřebat všechny ty pozitivní účinky. A co víc – k dokonalému zakončení vás pohostíme šálkem našeho speciálního čaje, který podpoří regeneraci a zanechá vás dokonale svěží.

### Proč právě masáž pro dva?

[Travelers Choice 2023 | Top Massage Experience in Prague Eden's Garden](https://www.youtube.com/embed/--QGzcjPhdM?feature=oembed)

[](https://edensgarden.cz/#)

Oproti klasickým dárkům, které často skončí zapomenuté na poličce, se zážitek v podobě masáže pro dva zapíše hluboko do paměti. Je to chvíle, kterou si užijete spolu – a to má hodnotu, která se nedá vyčíslit.

Tento druh relaxace není jen pro zamilované dvojice. Skvěle se hodí i pro kamarády, rodiče s dětmi nebo třeba sourozence. Je to příležitost, jak sdílet klid a pohodu.

### Filipínská masáž

##### **60 min | cena 1299 Kč**

Dopřejte si filipínskou masáž plnou hřejivých olejů a aromaterapie, která jemnými tahy zkušených terapeutů uvolní svalové napětí, nastartuje krevní i lymfatický oběh a obnoví vaši vnitřní rovnováhu. Rezervujte si termín ještě dnes a užijte si dokonalý zážitek regenerace.

Detail ›

Rezervovat ›

![Žena relaxující při filipínské masáži.](https://edensgarden.cz/wp-content/uploads/2024/08/Filipinska-masaz-750_500.webp "Filipínská masáž")

### Naše doporučení k filipínské masáži





### Doporučené oblečení pro filipínskou masáž

**Nejprve se trochu poznáme**

Při příchodu vás přivítá naše recepční a zjistí vaše přání a potřeby. Máte rádi jemnou masáž, nebo oceníte spíš pořádnou „hloubkovou práci“? Všechno s vámi předem probereme, aby bylo jasné, co očekáváte. Také můžete zmínit svá specifika, jako jsou kožní alergie nebo citlivá místa.

Pokud máte raději intimnější prostředí, připravíme pro vás samostatné místnosti. Pokud naopak chcete sdílet zážitek vedle sebe, můžeme vás uložit v párové místnosti – s vyhřívanými lehátky a dokonalou atmosférou.

**Masážní magie začíná**

Vstoupíte do místnosti, která je jako stvořená pro odpočinek – měkké světlo, hřejivá deka a jemné tóny relaxační hudby. Naše zkušené ruce se postarají o to, aby z vašeho těla zmizel každý gram stresu, ať už v ramenou, nebo na duši.

**Po masáži: Klid, čaj a doznění zážitku**

Až masáž skončí, nebude třeba nikam spěchat. Dopřejte si ještě pár minut klidu, abyste nechali své tělo vstřebat všechny ty pozitivní účinky. A co víc – k dokonalému zakončení vás pohostíme šálkem našeho speciálního čaje, který podpoří regeneraci a zanechá vás dokonale svěží.





### Jak si masáž zarezervovat?

Online rezervace je hračka. Stačí kliknout na „Rezervovat masáž pro dva“ a systém už se postará o zbytek. Pokud byste měli nějaké speciální přání, naše recepční vám ráda pomůže sestavit balíček na míru.

Tak co říkáte? Je čas vystoupit z každodenního shonu a vyrazit na cestu za klidem a pohodou – společně.





### Co si vzít na sebe? Záleží na typu masáže

Při výběru oblečení na párovou masáž nemusíte příliš tápat – vše se odvíjí od druhu masáže. Na[tradiční thajskou masáž](https://edensgarden.cz/masaze/tradicni-thajska-masaz/)budete potřebovat**volné tričko a kalhoty**, které vám rádi půjčíme přímo na místě.

Olejové masáže, například[thajská olejová masáž](https://edensgarden.cz/masaze/thajska-olejova-masaz/), probíhají ve**spodním prádle**. Na recepci máme připravené jednorázové spodní prádlo, které vám v případě přání zdarma poskytneme. Dámy, pro co nejpohodlnější zážitek doporučujeme odložit podprsenku – uvolnění bude o to větší.

Cílem je, abyste se cítili maximálně pohodlně a mohli si užít každou minutu relaxace naplno.





### Jak dlouho trvá dokonalá masáž pro dva?

Když už si dopřejete párovou masáž, vyplatí se jí věnovat dostatek času. Nejlepší volbou je**90 minut**– to je ideální délka pro hlubokou relaxaci a důkladnou péči o celé tělo. Tato doba umožňuje masérce věnovat se každému detailu a zároveň přizpůsobit masáž vašim individuálním potřebám.

Kratší masáž je sice příjemná, ale teprve s tou delší zažijete opravdový ráj na zemi.





### Síla doteku na míru vašim potřebám

Každý z nás má jiný práh citlivosti, takže se nebojte nám říct, co vám vyhovuje. Hned při příchodu můžete své preference ohledně intenzity masáže sdělit naší recepční. A nebojte se během masáže komunikovat – masérky ocení zpětnou vazbu, aby vám mohly vytvořit dokonalý zážitek.

Jde o vaši relaxaci, takže si řekněte, co je třeba – jemné pohlazení, nebo pořádná síla pro unavené svaly?





### Proč je párová masáž tím nejlepším dárkem?

Zapomeňte na krabici pralinek nebo kytici růží. Párová masáž je zážitek, který nekončí s posledním rozbaleným papírem – zůstává v mysli jako vzpomínka na společně strávený čas plný pohody.

Nejenže nabídne fyzické uvolnění a psychickou pohodu, ale zároveň posílí vztah a propojí vás s tím, na kom vám záleží. Od jemné[relaxační masáže](https://edensgarden.cz/masaze/relaxacni-masaz/)po terapeutickou[filipínskou masáž](https://edensgarden.cz/masaze/filipinska-masaz/)– vše přizpůsobíme podle toho, co a jak vám vyhovuje. Masáž pro dva si můžete dokonce užít i u[těhotenské masáže](https://edensgarden.cz/masaze/tehotenska-masaz/).

Masáž navíc podporuje zdraví a dlouhodobou pohodu, takže potěší každého, kdo si zaslouží odpočinek. Můžete si udělat rovnou[rezervaci](https://edensgarden.cz/rezervace/), anebo zakoupit některý z[dárkových poukazů](https://eshop.edensgarden.cz/).

[Zobrazit všechny masáže ›](https://edensgarden.cz/masaze/)