{"id":12270,"date":"2026-01-23T15:08:07","date_gmt":"2026-01-23T13:08:07","guid":{"rendered":"https:\/\/tastegreekwines.com\/wineries-near-me-2\/"},"modified":"2026-04-09T10:38:14","modified_gmt":"2026-04-09T07:38:14","slug":"wineries-near-me-2","status":"publish","type":"page","link":"https:\/\/tastegreekwines.com\/en\/wineries-near-me-2\/","title":{"rendered":"Wineries near me"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"12270\" class=\"elementor elementor-12270 elementor-11441\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-1b9c91a8 e-con-full e-flex e-con e-parent\" data-id=\"1b9c91a8\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t<div class=\"elementor-element elementor-element-21c47f3 e-con-full e-flex e-con e-child\" data-id=\"21c47f3\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-d0898f6 elementor-widget elementor-widget-shortcode\" data-id=\"d0898f6\" data-element_type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">    <div class=\"tgw-map-search\">\n        <div class=\"tgw-map-filter-group tgw-map-filter-group--address\">\n            <div class=\"tgw-map-filter-label\" data-tgw-map-label=\"address\"><\/div>\n            <input id=\"address-input\" type=\"text\" placeholder=\"Enter your city or address\">\n        <\/div>\n        <div class=\"tgw-map-filter-group tgw-map-filter-group--radius\">\n            <div class=\"tgw-map-filter-label\" data-tgw-map-label=\"radius\"><\/div>\n            <select id=\"radius-select\">\n                <option value=\"25\">25 km<\/option>\n                <option value=\"50\">50 km<\/option>\n                <option value=\"100\" selected>100 km<\/option>\n                <option value=\"200\">200 km<\/option>\n            <\/select>\n        <\/div>\n        <div class=\"tgw-map-filter-group tgw-map-filter-group--date\">\n            <div class=\"tgw-map-filter-label\" data-tgw-map-label=\"date\"><\/div>\n            <input id=\"date-select\" type=\"date\" aria-label=\"Visit date\">\n        <\/div>\n        <div class=\"tgw-map-filter-group tgw-map-filter-group--kind\">\n            <div class=\"tgw-map-filter-label\" data-tgw-map-label=\"kind\"><\/div>\n            <select id=\"kind-select\" aria-label=\"Entity type\">\n                <option value=\"all\">\u038c\u03bb\u03b1<\/option>\n                <option value=\"wineries\">\u039f\u03b9\u03bd\u03bf\u03c0\u03bf\u03b9\u03b5\u03af\u03bf<\/option>\n                <option value=\"winebars\">Winebar<\/option>\n            <\/select>\n        <\/div>\n        <div class=\"tgw-map-filter-group tgw-map-filter-group--available\">\n            <div class=\"tgw-map-filter-label\" data-tgw-map-label=\"available\"><\/div>\n            <label class=\"tgw-map-availability-toggle\" for=\"available-only\">\n                <input id=\"available-only\" type=\"checkbox\">\n                <span>Available only<\/span>\n            <\/label>\n        <\/div>\n        <button id=\"filter-btn\" type=\"button\">Filter<\/button>\n        <button id=\"reset-map-btn\" type=\"button\" class=\"map-reset-btn\" style=\"display:none;\">View all<\/button>\n    <\/div>\n    \n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1f831e6e elementor-widget elementor-widget-shortcode\" data-id=\"1f831e6e\" data-element_type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">        <div class=\"eva-map-status\" id=\"eva-map-status\"><\/div>\n\n    <div class=\"eva-map-layout\" id=\"eva-map-layout\">\n        <div id=\"eva-map\"><\/div>\n        <div class=\"eva-map-sidebar\" id=\"eva-map-list\" style=\"display:none;\"><\/div>\n    <\/div>\n\n    <style>\n        @supports not (color: var(--tgw-map-text)) {\n            .tgw-map-search,\n            #address-input,\n            #radius-select,\n            #filter-btn,\n            .eva-card,\n            .eva-side-card,\n            .eva-map-status {\n                font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;\n            }\n        }\n    <\/style>\n        <script>\n        const EVA_SELECTED_DATE = \"\";\n        const EVA_UNAVAILABLE_WINERY = \"\";\n        const EVA_KIND_FILTER = \"\";\n        const EVA_SHOW_FILTERS = false;\n        const TGW_MAP_DEBUG = false;\n        const MAP_LANG = 'en';\n        const EVA_PIN_ICONS = {\n            \/\/ Update these URLs so each post type gets its own marker icon.\n            wineries: 'https:\/\/tastegreekwines.com\/wp-content\/uploads\/2026\/02\/winery-2.png',\n            winebars: 'https:\/\/tastegreekwines.com\/wp-content\/uploads\/2026\/03\/xd.png',\n            default: 'https:\/\/tastegreekwines.com\/wp-content\/uploads\/2026\/01\/winepin.svg'\n        };\n        (function () {\n            const lang = MAP_LANG;\n\n            const i18n = {\n                el: {\n                    placeholder: '\u03a0\u03bb\u03b7\u03ba\u03c4\u03c1\u03bf\u03bb\u03bf\u03b3\u03ae\u03c3\u03c4\u03b5 \u03c0\u03cc\u03bb\u03b7 \u03ae \u03b4\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7',\n                    filter: '\u0391\u039d\u0391\u0396\u0397\u03a4\u0397\u03a3\u0397',\n                    currentLocation: '\u0397 \u03c4\u03bf\u03c0\u03bf\u03b8\u03b5\u03c3\u03af\u03b1 \u03bc\u03bf\u03c5',\n                    labelAddress: '\u03a0\u039f\u039b\u0397 \u0389 \u03a0\u0395\u03a1\u0399\u039f\u03a7\u0397',\n                    labelRadius: '\u0391\u039a\u03a4\u0399\u039d\u0391',\n                    labelDate: '\u0397\u039c\u0395\u03a1\u039f\u039c\u0397\u039d\u0399\u0391 \u0395\u03a0\u0399\u03a3\u039a\u0395\u03a8\u0397\u03a3',\n                    labelKind: '\u03a4\u03a5\u03a0\u039f\u03a3',\n                    labelAvailable: '\u0394\u0399\u0391\u0398\u0395\u03a3\u0399\u039c\u039f\u03a4\u0397\u03a4\u0391',\n                    view: '\u0394\u0395\u0399\u03a4\u0395 \u03a4\u039f WINERY',\n                    km: '\u03c7\u03bb\u03bc \u03bc\u03b1\u03ba\u03c1\u03b9\u03ac',\n                    empty: '\u0394\u03b5\u03bd \u03b2\u03c1\u03ad\u03b8\u03b7\u03ba\u03b1\u03bd \u03bf\u03b9\u03bd\u03bf\u03c0\u03bf\u03b9\u03b5\u03af\u03b1 \u03c3\u03c4\u03b7\u03bd \u03c0\u03b5\u03c1\u03b9\u03bf\u03c7\u03ae \u03b1\u03c5\u03c4\u03ae.',\n                    more: '\u0394\u03b5\u03af\u03c4\u03b5 \u03c0\u03b5\u03c1\u03b9\u03c3\u03c3\u03cc\u03c4\u03b5\u03c1\u03b1 \u03bf\u03b9\u03bd\u03bf\u03c0\u03bf\u03b9\u03b5\u03af\u03b1',\n                    experienceTitle: '\u039f\u03b9\u03bd\u03bf\u03c0\u03bf\u03b9\u03b5\u03af\u03b1 \u03bc\u03b5 \u03b4\u03b9\u03b1\u03b8\u03ad\u03c3\u03b9\u03bc\u03b5\u03c2 \u03b5\u03bc\u03c0\u03b5\u03b9\u03c1\u03af\u03b5\u03c2 \u03c3\u03c4\u03b9\u03c2 %s',\n                    experienceTitleWinebars: 'Winebars \u03bc\u03b5 \u03b4\u03b9\u03b1\u03b8\u03ad\u03c3\u03b9\u03bc\u03b5\u03c2 \u03b5\u03bc\u03c0\u03b5\u03b9\u03c1\u03af\u03b5\u03c2 \u03c3\u03c4\u03b9\u03c2 %s',\n                    experienceTitleAll: '\u039f\u03b9\u03bd\u03bf\u03c0\u03bf\u03b9\u03b5\u03af\u03b1 \u03ba\u03b1\u03b9 winebars \u03bc\u03b5 \u03b4\u03b9\u03b1\u03b8\u03ad\u03c3\u03b9\u03bc\u03b5\u03c2 \u03b5\u03bc\u03c0\u03b5\u03b9\u03c1\u03af\u03b5\u03c2 \u03c3\u03c4\u03b9\u03c2 %s',\n                    experienceEmpty: '\u0394\u03b5\u03bd \u03c5\u03c0\u03ac\u03c1\u03c7\u03bf\u03c5\u03bd \u03b4\u03b9\u03b1\u03b8\u03ad\u03c3\u03b9\u03bc\u03b5\u03c2 \u03b5\u03bc\u03c0\u03b5\u03b9\u03c1\u03af\u03b5\u03c2 \u03b3\u03b9\u03b1 \u03b1\u03c5\u03c4\u03ae \u03c4\u03b7\u03bd \u03b7\u03bc\u03b5\u03c1\u03bf\u03bc\u03b7\u03bd\u03af\u03b1 \u03c3\u03c4\u03b7\u03bd \u03c0\u03b5\u03c1\u03b9\u03bf\u03c7\u03ae.',\n                    experienceEmptyWinebars: '\u0394\u03b5\u03bd \u03c5\u03c0\u03ac\u03c1\u03c7\u03bf\u03c5\u03bd \u03b4\u03b9\u03b1\u03b8\u03ad\u03c3\u03b9\u03bc\u03b5\u03c2 \u03b5\u03bc\u03c0\u03b5\u03b9\u03c1\u03af\u03b5\u03c2 \u03b3\u03b9\u03b1 \u03b1\u03c5\u03c4\u03ae \u03c4\u03b7\u03bd \u03b7\u03bc\u03b5\u03c1\u03bf\u03bc\u03b7\u03bd\u03af\u03b1 \u03c3\u03c4\u03b1 winebars \u03c4\u03b7\u03c2 \u03c0\u03b5\u03c1\u03b9\u03bf\u03c7\u03ae\u03c2.',\n                    experienceEmptyAll: '\u0394\u03b5\u03bd \u03c5\u03c0\u03ac\u03c1\u03c7\u03bf\u03c5\u03bd \u03b4\u03b9\u03b1\u03b8\u03ad\u03c3\u03b9\u03bc\u03b5\u03c2 \u03b5\u03bc\u03c0\u03b5\u03b9\u03c1\u03af\u03b5\u03c2 \u03b3\u03b9\u03b1 \u03b1\u03c5\u03c4\u03ae \u03c4\u03b7\u03bd \u03b7\u03bc\u03b5\u03c1\u03bf\u03bc\u03b7\u03bd\u03af\u03b1 \u03c3\u03b5 \u03bf\u03b9\u03bd\u03bf\u03c0\u03bf\u03b9\u03b5\u03af\u03b1 \u03ba\u03b1\u03b9 winebars \u03c4\u03b7\u03c2 \u03c0\u03b5\u03c1\u03b9\u03bf\u03c7\u03ae\u03c2.',\n                    unavailableSpecific: '\u0394\u03b5\u03bd \u03c5\u03c0\u03ac\u03c1\u03c7\u03bf\u03c5\u03bd \u03b4\u03b9\u03b1\u03b8\u03ad\u03c3\u03b9\u03bc\u03b5\u03c2 \u03b5\u03bc\u03c0\u03b5\u03b9\u03c1\u03af\u03b5\u03c2 \u03c3\u03c4\u03bf %1$s \u03c3\u03c4\u03b9\u03c2 %2$s. \u0394\u03b5\u03c2 \u03c0\u03bf\u03b9\u03b1 \u03bf\u03b9\u03bd\u03bf\u03c0\u03bf\u03b9\u03b5\u03af\u03b1 \u03b5\u03af\u03bd\u03b1\u03b9 \u03b4\u03b9\u03b1\u03b8\u03ad\u03c3\u03b9\u03bc\u03b1 \u03c4\u03b7\u03bd \u03af\u03b4\u03b9\u03b1 \u03bc\u03ad\u03c1\u03b1.',\n                    availableLabel: '\u0394\u03b9\u03b1\u03b8\u03ad\u03c3\u03b9\u03bc\u03bf \u03c3\u03c4\u03b9\u03c2 %s',\n                    unavailableLabel: '\u039c\u03b7 \u03b4\u03b9\u03b1\u03b8\u03ad\u03c3\u03b9\u03bc\u03bf \u03c3\u03c4\u03b9\u03c2 %s',\n                    availableOnly: '\u039c\u03cc\u03bd\u03bf \u03b4\u03b9\u03b1\u03b8\u03ad\u03c3\u03b9\u03bc\u03b1',\n                    bookNow: '\u039a\u03c1\u03ac\u03c4\u03b7\u03c3\u03b7 \u03b5\u03bc\u03c0\u03b5\u03b9\u03c1\u03af\u03b1\u03c2',\n                    viewWinery: '\u0394\u03b5\u03c2 \u03c4\u03bf \u03bf\u03b9\u03bd\u03bf\u03c0\u03bf\u03b9\u03b5\u03af\u03bf',\n                    nearbyTitle: '\u039a\u03bf\u03bd\u03c4\u03ac \u03c3\u03bf\u03c5',\n                    allTitle: '\u038c\u03bb\u03b1 \u03c4\u03b1 \u03bf\u03b9\u03bd\u03bf\u03c0\u03bf\u03b9\u03b5\u03af\u03b1',\n                    reset: '\u0394\u03b5\u03c2 \u03cc\u03bb\u03b1 \u03c4\u03b1 \u03bf\u03b9\u03bd\u03bf\u03c0\u03bf\u03b9\u03b5\u03af\u03b1',\n                    allLabel: '\u038c\u03bb\u03b1',\n                    wineryLabel: '\u039f\u03b9\u03bd\u03bf\u03c0\u03bf\u03b9\u03b5\u03af\u03bf',\n                    winebarLabel: 'Winebar',\n                    typeAriaLabel: '\u03a4\u03cd\u03c0\u03bf\u03c2 \u03b5\u03c0\u03b9\u03c7\u03b5\u03af\u03c1\u03b7\u03c3\u03b7\u03c2'\n                },\n                en: {\n                    placeholder: 'Enter your city or address',\n                    filter: 'FILTER',\n                    currentLocation: 'My location',\n                    labelAddress: 'CITY OR AREA',\n                    labelRadius: 'RADIUS',\n                    labelDate: 'VISIT DATE',\n                    labelKind: 'TYPE',\n                    labelAvailable: 'AVAILABILITY',\n                    view: 'VIEW WINERY',\n                    km: 'km away',\n                    empty: 'No wineries found in this area.',\n                    more: 'See more wineries',\n                    experienceTitle: 'Wineries with available experiences on %s',\n                    experienceTitleWinebars: 'Winebars with available experiences on %s',\n                    experienceTitleAll: 'Wineries and winebars with available experiences on %s',\n                    experienceEmpty: 'No available experiences for that date in this area.',\n                    experienceEmptyWinebars: 'No available experiences for that date in winebars in this area.',\n                    experienceEmptyAll: 'No available experiences for that date in wineries and winebars in this area.',\n                    unavailableSpecific: 'No available experiences at %1$s on %2$s. See which wineries are available on the same day.',\n                    availableLabel: 'Available on %s',\n                    unavailableLabel: 'Unavailable on %s',\n                    availableOnly: 'Available only',\n                    bookNow: 'Book experience',\n                    viewWinery: 'View winery',\n                    nearbyTitle: 'Nearby',\n                    allTitle: 'All wineries',\n                    reset: 'View all wineries',\n                    allLabel: 'All',\n                    wineryLabel: 'Winery',\n                    winebarLabel: 'Winebar',\n                    typeAriaLabel: 'Entity type'\n                }\n            };\n\n            window.evaTranslations = lang === 'el' ? i18n.el : i18n.en;\n\n            document.addEventListener('DOMContentLoaded', () => {\n                const input = document.getElementById('address-input');\n                const btn = document.getElementById('filter-btn');\n                const reset = document.getElementById('reset-map-btn');\n                const dateInput = document.getElementById('date-select');\n                const availableOnly = document.getElementById('available-only');\n                const labels = {\n                    address: window.evaTranslations.labelAddress || 'CITY OR AREA',\n                    radius: window.evaTranslations.labelRadius || 'RADIUS',\n                    date: window.evaTranslations.labelDate || 'VISIT DATE',\n                    kind: window.evaTranslations.labelKind || 'TYPE',\n                    available: window.evaTranslations.labelAvailable || 'AVAILABILITY'\n                };\n\n                if (input) input.placeholder = window.evaTranslations.placeholder;\n                if (btn) btn.textContent = window.evaTranslations.filter;\n                if (reset) reset.textContent = window.evaTranslations.reset || window.evaTranslations.more || 'View all wineries';\n                if (dateInput) dateInput.setAttribute('aria-label', window.evaTranslations.labelDate || 'Visit date');\n                document.querySelectorAll('[data-tgw-map-label]').forEach(label => {\n                    const key = label.getAttribute('data-tgw-map-label');\n                    if (key && labels[key]) {\n                        label.textContent = labels[key];\n                    }\n                });\n                if (availableOnly) {\n                    const span = availableOnly.closest('label')?.querySelector('span');\n                    if (span) span.textContent = window.evaTranslations.availableOnly || 'Available only';\n                }\n            });\n        })();\n\n        const selectedDate = EVA_SELECTED_DATE;\n        const unavailableWinery = EVA_UNAVAILABLE_WINERY;\n\n        let map, markers = [], userMarker = null, radiusCircle = null, activeInfoWindow = null, activeInfoWindowMarker = null, mapOverlayView = null;\n        let allLocations = [{\"id\":\"23\",\"name\":\"Alpha Estate\",\"location_name\":\"Alpha Estate\",\"address\":\"\\u039a\\u03c4\\u03ae\\u03bc\\u03b1 \\u0386\\u03bb\\u03c6\\u03b1, \\u0386\\u03b3\\u03b9\\u03bf\\u03c2 \\u03a0\\u03b1\\u03bd\\u03c4\\u03b5\\u03bb\\u03b5\\u03ae\\u03bc\\u03c9\\u03bd, \\u0395\\u03bb\\u03bb\\u03ac\\u03b4\\u03b1\",\"lat\":\"40.694645\",\"lng\":\"21.706372\",\"link\":\"https:\\\/\\\/tastegreekwines.com\\\/en\\\/wineries\\\/alpha-estate-winery\\\/\",\"logo\":\"https:\\\/\\\/tastegreekwines.com\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/alpha-estate-logo-300x113.jpeg\",\"pic\":\"https:\\\/\\\/tastegreekwines.com\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/Alpha-Estate-8.jpg\",\"type\":\"wineries\",\"post_id\":8796,\"city\":\"\",\"available\":true},{\"id\":\"53\",\"name\":\"Ampeloeis\",\"location_name\":\"\\u039f\\u03b9\\u03bd\\u03bf\\u03c0\\u03bf\\u03b9\\u03b5\\u03af\\u03bf \\u0391\\u03bc\\u03c0\\u03b5\\u03bb\\u03cc\\u03b5\\u03b9\\u03c2\",\"address\":\"\\u0395\\u03bb\\u03b5\\u03c5\\u03b8\\u03ad\\u03c1\\u03b5\\u03c2 640 07, \\u0395\\u03bb\\u03bb\\u03ac\\u03b4\\u03b1\",\"lat\":\"40.756675\",\"lng\":\"24.160708\",\"link\":\"https:\\\/\\\/tastegreekwines.com\\\/en\\\/wineries\\\/ampeloeis\\\/\",\"logo\":\"https:\\\/\\\/tastegreekwines.com\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/logo-1.jpeg\",\"pic\":\"https:\\\/\\\/tastegreekwines.com\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/Ambeloeis-5-1024x576.jpg\",\"type\":\"wineries\",\"post_id\":12183,\"city\":\"\",\"available\":true},{\"id\":\"50\",\"name\":\"Argatia Winery\",\"location_name\":\"Argatia Winery\",\"address\":\"\\u039f\\u03b9\\u03bd\\u03bf\\u03c0\\u03bf\\u03b9\\u03b5\\u03af\\u03bf \\u0391\\u03c1\\u03b3\\u03b1\\u03c4\\u03af\\u03b1 \\u03a1\\u03bf\\u03b4\\u03bf\\u03c7\\u03ce\\u03c1\\u03b9 \\u039d\\u03ac\\u03bf\\u03c5\\u03c3\\u03b1, \\u03a1\\u03bf\\u03b4\\u03bf\\u03c7\\u03ce\\u03c1\\u03b9, \\u0395\\u03bb\\u03bb\\u03ac\\u03b4\\u03b1\",\"lat\":\"40.689952\",\"lng\":\"22.024197\",\"link\":\"https:\\\/\\\/tastegreekwines.com\\\/en\\\/wineries\\\/argatia-winery\\\/\",\"logo\":\"https:\\\/\\\/tastegreekwines.com\\\/wp-content\\\/uploads\\\/2026\\\/01\\\/logo-300x101.jpg\",\"pic\":\"https:\\\/\\\/tastegreekwines.com\\\/wp-content\\\/uploads\\\/2026\\\/01\\\/Argatia-2-683x1024.jpeg\",\"type\":\"wineries\",\"post_id\":11508,\"city\":\"\",\"available\":true},{\"id\":\"42\",\"name\":\"Averoff Winery\",\"location_name\":\"Averoff Winery\",\"address\":\"Katogi Averoff Hotel & Winery, \\u039c\\u03ad\\u03c4\\u03c3\\u03bf\\u03b2\\u03bf, \\u0395\\u03bb\\u03bb\\u03ac\\u03b4\\u03b1\",\"lat\":\"39.776817\",\"lng\":\"21.180013\",\"link\":\"https:\\\/\\\/tastegreekwines.com\\\/en\\\/wineries\\\/averoff-winery\\\/\",\"logo\":\"https:\\\/\\\/tastegreekwines.com\\\/wp-content\\\/uploads\\\/2025\\\/04\\\/KatogiAverof-300x188.png\",\"pic\":\"https:\\\/\\\/tastegreekwines.com\\\/wp-content\\\/uploads\\\/2025\\\/11\\\/Katogi-Averoff-Inside-2-1024x695.jpg\",\"type\":\"wineries\",\"post_id\":10748,\"city\":\"\",\"available\":true},{\"id\":\"43\",\"name\":\"Barafaka Winery\",\"location_name\":\"Barafakas Winery\",\"address\":\"Barafakas Winery, pindou, \\u039d\\u03b5\\u03bc\\u03ad\\u03b1, \\u0395\\u03bb\\u03bb\\u03ac\\u03b4\\u03b1\",\"lat\":\"37.826434\",\"lng\":\"22.661053\",\"link\":\"https:\\\/\\\/tastegreekwines.com\\\/en\\\/wineries\\\/barafaka-winery\\\/\",\"logo\":\"https:\\\/\\\/tastegreekwines.com\\\/wp-content\\\/uploads\\\/2025\\\/11\\\/logo.jpeg\",\"pic\":\"https:\\\/\\\/tastegreekwines.com\\\/wp-content\\\/uploads\\\/2025\\\/11\\\/Barafakas-7-1024x737.avif\",\"type\":\"wineries\",\"post_id\":10904,\"city\":\"\",\"available\":true},{\"id\":\"29\",\"name\":\"Ch\\u00e2teau \\u039dico Lazaridi\",\"location_name\":\"Ch\\u00e2teau \\u039dico Lazaridi Winery\",\"address\":\"NICO LAZARIDI, \\u039a\\u03bf\\u03b9\\u03bd\\u03cc\\u03c4\\u03b7\\u03c4\\u03b1 \\u0391\\u03b3\\u03bf\\u03c1\\u03ac\\u03c2, \\u0391\\u03b3\\u03bf\\u03c1\\u03ac, \\u0395\\u03bb\\u03bb\\u03ac\\u03b4\\u03b1\",\"lat\":\"41.129488\",\"lng\":\"24.279798\",\"link\":\"https:\\\/\\\/tastegreekwines.com\\\/en\\\/wineries\\\/chateau-nico-lazaridi\\\/\",\"logo\":\"https:\\\/\\\/tastegreekwines.com\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/cellar_Logo.png\",\"pic\":\"https:\\\/\\\/tastegreekwines.com\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/cellar_Nico1-1024x683.jpg\",\"type\":\"wineries\",\"post_id\":9645,\"city\":\"\",\"available\":true},{\"id\":\"54\",\"name\":\"Diamantakis winery\",\"location_name\":\"\\u039f\\u03b9\\u03bd\\u03bf\\u03c0\\u03bf\\u03b9\\u03b5\\u03af\\u03bf \\u0394\\u03b9\\u03b1\\u03bc\\u03b1\\u03bd\\u03c4\\u03ac\\u03ba\\u03b7\\u03c2\",\"address\":\"\\u039a\\u03ac\\u03c4\\u03c9 \\u0391\\u03c3\\u03af\\u03c4\\u03b5\\u03c2 700 13, \\u0395\\u03bb\\u03bb\\u03ac\\u03b4\\u03b1\",\"lat\":\"35.211947\",\"lng\":\"24.992775\",\"link\":\"https:\\\/\\\/tastegreekwines.com\\\/en\\\/wineries\\\/diamantakis-winery\\\/\",\"logo\":\"https:\\\/\\\/tastegreekwines.com\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/logo.png\",\"pic\":\"https:\\\/\\\/tastegreekwines.com\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/Diamantakis-8.jpg\",\"type\":\"wineries\",\"post_id\":12673,\"city\":\"\",\"available\":true},{\"id\":\"32\",\"name\":\"Domaine Chatzigeorgiou\",\"location_name\":\"Domaine Chatzigeorgiou\",\"address\":\"\\u039a\\u03c4\\u03ae\\u03bc\\u03b1 \\u03a7\\u03b1\\u03c4\\u03b6\\u03b7\\u03b3\\u03b5\\u03c9\\u03c1\\u03b3\\u03af\\u03bf\\u03c5, \\u0395\\u03c0\\u03b1\\u03c1\\u03c7\\u03b9\\u03b1\\u03ba\\u03ae \\u039f\\u03b4\\u03cc\\u03c2 \\u039b\\u03b9\\u03b2\\u03b1\\u03b4\\u03bf\\u03c7\\u03c9\\u03c1\\u03b9\\u03bf\\u03cd-\\u039a\\u03b1\\u03c1\\u03c0\\u03ac\\u03c3\\u03b9\\u03bf, \\u039a\\u03b1\\u03c1\\u03c0\\u03ac\\u03c3\\u03b9, \\u0395\\u03bb\\u03bb\\u03ac\\u03b4\\u03b1\",\"lat\":\"39.939228\",\"lng\":\"25.234769\",\"link\":\"https:\\\/\\\/tastegreekwines.com\\\/en\\\/wineries\\\/domaine-chatzigeorgiou\\\/\",\"logo\":\"https:\\\/\\\/tastegreekwines.com\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/logo-300x170.png\",\"pic\":\"https:\\\/\\\/tastegreekwines.com\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/ktima5.jpg\",\"type\":\"wineries\",\"post_id\":9930,\"city\":\"\",\"available\":true},{\"id\":\"20\",\"name\":\"Domaine Nerantzi\",\"location_name\":\"Domaine Nerantzi\",\"address\":\"Domaine Nerantzi Winery, \\u0395\\u03b8\\u03bd\\u03b9\\u03ba\\u03ae \\u039f\\u03b4\\u03cc\\u03c2 \\u03a3\\u03b5\\u03c1\\u03c1\\u03ce\\u03bd \\u0394\\u03c1\\u03ac\\u03bc\\u03b1\\u03c2, \\u03a0\\u03b5\\u03bd\\u03c4\\u03ac\\u03c0\\u03bf\\u03bb\\u03b7, \\u0395\\u03bb\\u03bb\\u03ac\\u03b4\\u03b1\",\"lat\":\"41.053394\",\"lng\":\"23.704381\",\"link\":\"https:\\\/\\\/tastegreekwines.com\\\/en\\\/wineries\\\/domaine-neranzti\\\/\",\"logo\":\"https:\\\/\\\/tastegreekwines.com\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/Nerantzi-Logo-300x300.jpg\",\"pic\":\"https:\\\/\\\/tastegreekwines.com\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/Nerantzi-View-7.jpg\",\"type\":\"wineries\",\"post_id\":7758,\"city\":\"\",\"available\":true},{\"id\":\"12\",\"name\":\"Domaine Paterianakis\",\"location_name\":\"Domaine Paterianakis\",\"address\":\"Domaine Paterianakis- \\u039a\\u03c4\\u03ae\\u03bc\\u03b1 \\u03a0\\u03b1\\u03c4\\u03b5\\u03c1\\u03b9\\u03b1\\u03bd\\u03ac\\u03ba\\u03b7, \\u039c\\u03b5\\u03bb\\u03ad\\u03c3\\u03b5\\u03c2, \\u0395\\u03bb\\u03bb\\u03ac\\u03b4\\u03b1\",\"lat\":\"35.181020\",\"lng\":\"25.196803\",\"link\":\"https:\\\/\\\/tastegreekwines.com\\\/en\\\/wineries\\\/domaine-paterianakis\\\/\",\"logo\":\"https:\\\/\\\/tastegreekwines.com\\\/wp-content\\\/uploads\\\/2025\\\/05\\\/domaine-paterianakis-Logo.png\",\"pic\":\"https:\\\/\\\/tastegreekwines.com\\\/wp-content\\\/uploads\\\/2025\\\/05\\\/Paterianakis-1024x409.png\",\"type\":\"wineries\",\"post_id\":7608,\"city\":\"\",\"available\":true},{\"id\":\"28\",\"name\":\"Domaine Skouras\",\"location_name\":\"Domaine Skouras\",\"address\":\"DOMAINE SKOURAS \\\/ \\u039a\\u03a4\\u0397\\u039c\\u0391 \\u03a3\\u039a\\u039f\\u03a5\\u03a1\\u0391 \\u039f.\\u0391.\\u0395., \\u0386\\u03c1\\u03b3\\u03bf\\u03c2, \\u0395\\u03bb\\u03bb\\u03ac\\u03b4\\u03b1\",\"lat\":\"37.689635\",\"lng\":\"22.654737\",\"link\":\"https:\\\/\\\/tastegreekwines.com\\\/en\\\/wineries\\\/ktima-skoura\\\/\",\"logo\":\"https:\\\/\\\/tastegreekwines.com\\\/wp-content\\\/uploads\\\/2025\\\/04\\\/DomaineSkouras-300x188.png\",\"pic\":\"https:\\\/\\\/tastegreekwines.com\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/Skouras_3-1024x768.jpg\",\"type\":\"wineries\",\"post_id\":9534,\"city\":\"\",\"available\":true},{\"id\":\"17\",\"name\":\"Domaine Zafeirakis\",\"location_name\":\"Domaine Zafeirakis\",\"address\":\"\\u039a\\u03a4\\u0397\\u039c\\u0391 \\u0396\\u0391\\u03a6\\u0395\\u0399\\u03a1\\u0391\\u039a\\u0397 - DOMAINE ZAFEIRAKIS, \\u0395\\u03c0\\u03b1\\u03c1\\u03c7\\u03b9\\u03b1\\u03ba\\u03ae \\u039f\\u03b4\\u03cc\\u03c2 \\u03a4\\u03cd\\u03c1\\u03bd\\u03b1\\u03b2\\u03bf\\u03c5-\\u0395\\u03bb\\u03b1\\u03c3\\u03c3\\u03cc\\u03bd\\u03b1\\u03c2, \\u03a4\\u03cd\\u03c1\\u03bd\\u03b1\\u03b2\\u03bf\\u03c2, \\u0395\\u03bb\\u03bb\\u03ac\\u03b4\\u03b1\",\"lat\":\"39.720679\",\"lng\":\"22.270211\",\"link\":\"https:\\\/\\\/tastegreekwines.com\\\/en\\\/wineries\\\/ktima-zafeiraki\\\/\",\"logo\":\"https:\\\/\\\/tastegreekwines.com\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/Winery-Zafeiraki-logo-300x154.jpg\",\"pic\":\"https:\\\/\\\/tastegreekwines.com\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/Zafeiraki-photo-1.avif\",\"type\":\"wineries\",\"post_id\":7458,\"city\":\"\",\"available\":true},{\"id\":\"9\",\"name\":\"Dougos Winery\",\"location_name\":\"Dougos Winery\",\"address\":\"Dougos Winery, \\u0399\\u03c4\\u03ad\\u03b1, \\u0395\\u03bb\\u03bb\\u03ac\\u03b4\\u03b1\",\"lat\":\"39.864804\",\"lng\":\"22.531800\",\"link\":\"https:\\\/\\\/tastegreekwines.com\\\/en\\\/wineries\\\/dougos-winery\\\/\",\"logo\":\"https:\\\/\\\/tastegreekwines.com\\\/wp-content\\\/uploads\\\/2025\\\/04\\\/Dougos-300x188.png\",\"pic\":\"https:\\\/\\\/tastegreekwines.com\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/thewinery_04-1024x683.jpg\",\"type\":\"wineries\",\"post_id\":7563,\"city\":\"\",\"available\":true},{\"id\":\"22\",\"name\":\"Douloufakis Winery\",\"location_name\":\"Douloufakis Winery\",\"address\":\"\\u039f\\u03b9\\u03bd\\u03bf\\u03c0\\u03bf\\u03b9\\u03b5\\u03af\\u03bf \\u0394\\u03bf\\u03c5\\u03bb\\u03bf\\u03c5\\u03c6\\u03ac\\u03ba\\u03b7, \\u0394\\u03b1\\u03c6\\u03bd\\u03ad\\u03c2, \\u0395\\u03bb\\u03bb\\u03ac\\u03b4\\u03b1\",\"lat\":\"35.217208\",\"lng\":\"25.052594\",\"link\":\"https:\\\/\\\/tastegreekwines.com\\\/en\\\/wineries\\\/oinopoieio-douloufaki\\\/\",\"logo\":\"https:\\\/\\\/tastegreekwines.com\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/Douloufakis-logo.png\",\"pic\":\"https:\\\/\\\/tastegreekwines.com\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/Douloufakis-Gallery-09-1024x768.jpg\",\"type\":\"wineries\",\"post_id\":8702,\"city\":\"\",\"available\":true},{\"id\":\"49\",\"name\":\"Dourakis Winery\",\"location_name\":\"Dourakis Winery\",\"address\":\"Dourakis Winery, Apokoronou, CHANIA, \\u0395\\u03bb\\u03bb\\u03ac\\u03b4\\u03b1\",\"lat\":\"35.349549\",\"lng\":\"24.203021\",\"link\":\"https:\\\/\\\/tastegreekwines.com\\\/en\\\/wineries\\\/oinopoieio-ntourakis\\\/\",\"logo\":\"https:\\\/\\\/tastegreekwines.com\\\/wp-content\\\/uploads\\\/2026\\\/01\\\/DOURAKIS_Logo-300x300.jpg\",\"pic\":\"https:\\\/\\\/tastegreekwines.com\\\/wp-content\\\/uploads\\\/2026\\\/01\\\/Douarkis-4.jpg\",\"type\":\"wineries\",\"post_id\":11380,\"city\":\"\",\"available\":true},{\"id\":\"26\",\"name\":\"Estate Constantin Gofas\",\"location_name\":\"Estate Constantin Gofas\",\"address\":\"\\u039a\\u03c4\\u03ae\\u03bc\\u03b1 \\u0393\\u03ba\\u03cc\\u03c6\\u03b1, \\u039a\\u03bf\\u03cd\\u03c4\\u03c3\\u03b9, \\u0395\\u03bb\\u03bb\\u03ac\\u03b4\\u03b1\",\"lat\":\"37.856915\",\"lng\":\"22.644691\",\"link\":\"https:\\\/\\\/tastegreekwines.com\\\/en\\\/wineries\\\/estate-constantin-gofas\\\/\",\"logo\":\"https:\\\/\\\/tastegreekwines.com\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/gofas-logo.jpg\",\"pic\":\"https:\\\/\\\/tastegreekwines.com\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/Gofas5-768x1024.jpg\",\"type\":\"wineries\",\"post_id\":9283,\"city\":\"\",\"available\":true},{\"id\":\"21\",\"name\":\"Estate Manolesakis\",\"location_name\":\"Estate Manolesakis\",\"address\":\"\\u039a\\u03c4\\u03ae\\u03bc\\u03b1 \\u039c\\u03b1\\u03bd\\u03c9\\u03bb\\u03b5\\u03c3\\u03ac\\u03ba\\u03b7 \\u0393\\u03ad\\u03bd\\u03bd\\u03b7\\u03bc\\u03b1 \\u03a8\\u03c5\\u03c7\\u03ae\\u03c2, \\u0391\\u03b4\\u03c1\\u03b9\\u03b1\\u03bd\\u03ae, \\u0395\\u03bb\\u03bb\\u03ac\\u03b4\\u03b1\",\"lat\":\"41.137786\",\"lng\":\"24.270110\",\"link\":\"https:\\\/\\\/tastegreekwines.com\\\/en\\\/wineries\\\/ktima-manolesaki\\\/\",\"logo\":\"https:\\\/\\\/tastegreekwines.com\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/MANOLESAKIS-logo-300x300.jpg\",\"pic\":\"https:\\\/\\\/tastegreekwines.com\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/manolesakis_1024x682-1024x682.jpg\",\"type\":\"wineries\",\"post_id\":8589,\"city\":\"\",\"available\":true},{\"id\":\"27\",\"name\":\"Estate Tarazas\",\"location_name\":\"Estate Winery Tarazas\",\"address\":\"\\u039a\\u03c4\\u03ae\\u03bc\\u03b1 \\u03a4\\u03b1\\u03c1\\u03b1\\u03b6\\u03ac\\u03c2 - \\u039f\\u03b9\\u03bd\\u03bf\\u03c0\\u03bf\\u03b9\\u03b5\\u03af\\u03bf \\u03a4\\u03b1\\u03c1\\u03b1\\u03b6\\u03ac\\u03c2 ( Ktima Tarazas - Oinopoieio Tarazas ), \\u03a7\\u03b1\\u03bb\\u03ba\\u03b9\\u03b4\\u03b9\\u03ba\\u03ae\\u03c2, \\u039c\\u03b5\\u03b3\\u03ac\\u03bb\\u03b7 \\u03a0\\u03b1\\u03bd\\u03b1\\u03b3\\u03af\\u03b1, \\u0395\\u03bb\\u03bb\\u03ac\\u03b4\\u03b1\",\"lat\":\"40.432438\",\"lng\":\"23.675125\",\"link\":\"https:\\\/\\\/tastegreekwines.com\\\/en\\\/wineries\\\/estate-winery-tarazas\\\/\",\"logo\":\"https:\\\/\\\/tastegreekwines.com\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/TARAZAS-logo-300x166.jpeg\",\"pic\":\"https:\\\/\\\/tastegreekwines.com\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/tarazas7-1024x683.jpg\",\"type\":\"wineries\",\"post_id\":9338,\"city\":\"\",\"available\":true},{\"id\":\"36\",\"name\":\"Estate Vourvoukelis\",\"location_name\":\"Estate Vourvoukelis\",\"address\":\"KTIMA VOURVOUKELI \\u039a\\u03a4\\u0397\\u039c\\u0391 \\u0392\\u039f\\u03a5\\u03a1\\u0392\\u039f\\u03a5\\u039a\\u0388\\u039b\\u0397, 20th km, \\u0386\\u03b2\\u03b4\\u03b7\\u03c1\\u03b1, \\u0395\\u03bb\\u03bb\\u03ac\\u03b4\\u03b1\",\"lat\":\"40.992388\",\"lng\":\"24.952872\",\"link\":\"https:\\\/\\\/tastegreekwines.com\\\/en\\\/wineries\\\/estate-vourvoukelis\\\/\",\"logo\":\"https:\\\/\\\/tastegreekwines.com\\\/wp-content\\\/uploads\\\/2025\\\/09\\\/logo-1-300x300.jpg\",\"pic\":\"https:\\\/\\\/tastegreekwines.com\\\/wp-content\\\/uploads\\\/2025\\\/09\\\/VourvoukeliEstateGal32-1024x724.jpg\",\"type\":\"wineries\",\"post_id\":10266,\"city\":\"\",\"available\":true},{\"id\":\"39\",\"name\":\"Estates Costa Lazaridi\",\"location_name\":\"Estates Costa Lazaridi\",\"address\":\"Estates Costa Lazaridi Drama, \\u0395\\u03c0\\u03b1\\u03c1\\u03c7\\u03b9\\u03b1\\u03ba\\u03ae \\u039f\\u03b4\\u03cc\\u03c2 \\u03a0\\u03bb\\u03b1\\u03c4\\u03b1\\u03bc\\u03ce\\u03bd\\u03b1 - \\u0391\\u03b4\\u03c1\\u03b9\\u03b1\\u03bd\\u03ae\\u03c2, \\u0391\\u03b4\\u03c1\\u03b9\\u03b1\\u03bd\\u03ae, \\u0395\\u03bb\\u03bb\\u03ac\\u03b4\\u03b1\",\"lat\":\"41.130863\",\"lng\":\"24.259961\",\"link\":\"https:\\\/\\\/tastegreekwines.com\\\/en\\\/wineries\\\/domain-costa-lazaridi\\\/\",\"logo\":\"https:\\\/\\\/tastegreekwines.com\\\/wp-content\\\/uploads\\\/2025\\\/11\\\/logo-267x300.png\",\"pic\":\"https:\\\/\\\/tastegreekwines.com\\\/wp-content\\\/uploads\\\/2025\\\/10\\\/Costa-Lazaridi-1-1024x498.jpg\",\"type\":\"wineries\",\"post_id\":10722,\"city\":\"\",\"available\":true},{\"id\":\"48\",\"name\":\"Fteri Vinum Winery\",\"location_name\":\"Fteri Vinum Winery\",\"address\":\"Fteri Vinum Winery, Unnamed Road, \\u03a4\\u03c1\\u03af\\u03c0\\u03bf\\u03bb\\u03b7, \\u0395\\u03bb\\u03bb\\u03ac\\u03b4\\u03b1\",\"lat\":\"37.574044\",\"lng\":\"22.393394\",\"link\":\"https:\\\/\\\/tastegreekwines.com\\\/en\\\/wineries\\\/fteri-vinum-winery\\\/\",\"logo\":\"https:\\\/\\\/tastegreekwines.com\\\/wp-content\\\/uploads\\\/2026\\\/01\\\/LOGO_TRASPARENT-04-300x300.png\",\"pic\":\"https:\\\/\\\/tastegreekwines.com\\\/wp-content\\\/uploads\\\/2026\\\/01\\\/Fteri-9-768x1024.jpg\",\"type\":\"wineries\",\"post_id\":11261,\"city\":\"\",\"available\":true},{\"id\":\"45\",\"name\":\"Ganis Vaios &#8211; Organic Wines\",\"location_name\":\"Ganis Vaios\",\"address\":\"VAIOS GANIS ORGANIC WINES, \\u0392\\u03b1\\u03c1\\u03b4\\u03b1\\u03bb\\u03ae, \\u0395\\u03bb\\u03bb\\u03ac\\u03b4\\u03b1\",\"lat\":\"39.201539\",\"lng\":\"22.315917\",\"link\":\"https:\\\/\\\/tastegreekwines.com\\\/en\\\/wineries\\\/ganis-vaios\\\/\",\"logo\":\"https:\\\/\\\/tastegreekwines.com\\\/wp-content\\\/uploads\\\/2025\\\/12\\\/Logo-1-300x164.png\",\"pic\":\"https:\\\/\\\/tastegreekwines.com\\\/wp-content\\\/uploads\\\/2025\\\/12\\\/PAP0694_MG_7305-1024x683.jpg\",\"type\":\"wineries\",\"post_id\":11076,\"city\":\"\",\"available\":true},{\"id\":\"19\",\"name\":\"Gikas Winery\",\"location_name\":\"Gikas Winery\",\"address\":\"GIKAS WINERY, \\u03a3\\u03c0\\u03ac\\u03c4\\u03b1, \\u0395\\u03bb\\u03bb\\u03ac\\u03b4\\u03b1\",\"lat\":\"37.966547\",\"lng\":\"23.928329\",\"link\":\"https:\\\/\\\/tastegreekwines.com\\\/en\\\/wineries\\\/gikas-winery\\\/\",\"logo\":\"https:\\\/\\\/tastegreekwines.com\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/gikas-logo-300x60.png\",\"pic\":\"https:\\\/\\\/tastegreekwines.com\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/winery-ampeli-1024x536.jpeg\",\"type\":\"wineries\",\"post_id\":7668,\"city\":\"\",\"available\":true},{\"id\":\"51\",\"name\":\"Heraklion Union Winery\",\"location_name\":\"\\u0388\\u03bd\\u03c9\\u03c3\\u03b7 \\u0397\\u03c1\\u03b1\\u03ba\\u03bb\\u03b5\\u03af\\u03bf\\u03c5\",\"address\":\"\\u03a0\\u03b1\\u03bb\\u03b9\\u03b1\\u03bd\\u03ae 700 11, \\u0395\\u03bb\\u03bb\\u03ac\\u03b4\\u03b1\",\"lat\":\"35.173897\",\"lng\":\"25.024499\",\"link\":\"https:\\\/\\\/tastegreekwines.com\\\/en\\\/wineries\\\/heraklion-union-winery\\\/\",\"logo\":\"https:\\\/\\\/tastegreekwines.com\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/heraklionwinery-logo.png\",\"pic\":\"https:\\\/\\\/tastegreekwines.com\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/heraklionwinery-1.jpg\",\"type\":\"wineries\",\"post_id\":12007,\"city\":\"\",\"available\":true},{\"id\":\"47\",\"name\":\"Idaia Winery\",\"location_name\":\"Idaia Winery\",\"address\":\"IDAIA WINERY, \\u0395\\u03c0\\u03b1\\u03c1\\u03c7\\u03b9\\u03b1\\u03ba\\u03ae \\u039f\\u03b4\\u03cc\\u03c2 \\u0392\\u03b5\\u03bd\\u03b5\\u03c1\\u03ac\\u03c4\\u03bf\\u03c5 - \\u039a\\u03c5\\u03c0\\u03ac\\u03c1\\u03b9\\u03c3\\u03c3\\u03bf\\u03c5, \\u0392\\u03b5\\u03bd\\u03b5\\u03c1\\u03ac\\u03c4\\u03bf, \\u0395\\u03bb\\u03bb\\u03ac\\u03b4\\u03b1\",\"lat\":\"35.195050\",\"lng\":\"25.034589\",\"link\":\"https:\\\/\\\/tastegreekwines.com\\\/en\\\/wineries\\\/idaia-winery\\\/\",\"logo\":\"https:\\\/\\\/tastegreekwines.com\\\/wp-content\\\/uploads\\\/2026\\\/01\\\/Logo.png\",\"pic\":\"https:\\\/\\\/tastegreekwines.com\\\/wp-content\\\/uploads\\\/2026\\\/01\\\/winery-idea-4.jpg\",\"type\":\"wineries\",\"post_id\":11194,\"city\":\"\",\"available\":true},{\"id\":\"24\",\"name\":\"Kechris Estate\",\"location_name\":\"Kechris Estate\",\"address\":\"KECHRIS Winery, \\u039f\\u03bb\\u03cd\\u03bc\\u03c0\\u03bf\\u03c5, \\u0394\\u03ad\\u03bb\\u03c4\\u03b1, \\u0395\\u03bb\\u03bb\\u03ac\\u03b4\\u03b1\",\"lat\":\"40.647623\",\"lng\":\"22.851518\",\"link\":\"\",\"logo\":\"\",\"pic\":\"\",\"type\":\"\",\"post_id\":0,\"city\":\"\",\"available\":true},{\"id\":\"34\",\"name\":\"Ktima Biblia Chora\",\"location_name\":\"Ktima Biblia Chora\",\"address\":\"Ktima Biblia Chora, \\u039a\\u03bf\\u03ba\\u03ba\\u03b9\\u03bd\\u03bf\\u03c7\\u03ce\\u03c1\\u03b9, \\u0395\\u03bb\\u03bb\\u03ac\\u03b4\\u03b1\",\"lat\":\"40.811791\",\"lng\":\"23.990792\",\"link\":\"https:\\\/\\\/tastegreekwines.com\\\/en\\\/wineries\\\/ktima-biblia-chora\\\/\",\"logo\":\"https:\\\/\\\/tastegreekwines.com\\\/wp-content\\\/uploads\\\/2025\\\/08\\\/Vivlia-Logo.png\",\"pic\":\"https:\\\/\\\/tastegreekwines.com\\\/wp-content\\\/uploads\\\/2025\\\/08\\\/Vivlia-\\u039f\\u0399\\u039d\\u039f\\u03a0\\u039f\\u0399\\u0395\\u0399\\u039f-\\u0392\\u03a1\\u0391\\u0394\\u03a5.jpg\",\"type\":\"wineries\",\"post_id\":10114,\"city\":\"\",\"available\":true},{\"id\":\"30\",\"name\":\"Ktima Gerovassiliou\",\"location_name\":\"Ktima Gerovassiliou\",\"address\":\"\\u039a\\u03c4\\u03ae\\u03bc\\u03b1 \\u0393\\u03b5\\u03c1\\u03bf\\u03b2\\u03b1\\u03c3\\u03b9\\u03bb\\u03b5\\u03af\\u03bf\\u03c5 | Ktima Gerovassiliou, ktima Gerovassiliou, \\u0395\\u03c0\\u03b1\\u03bd\\u03bf\\u03bc\\u03ae, \\u0395\\u03bb\\u03bb\\u03ac\\u03b4\\u03b1\",\"lat\":\"40.449387\",\"lng\":\"22.924742\",\"link\":\"https:\\\/\\\/tastegreekwines.com\\\/en\\\/wineries\\\/ktima-gerovassiliou\\\/\",\"logo\":\"https:\\\/\\\/tastegreekwines.com\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/Logo_KTIMA-300x146.jpg\",\"pic\":\"https:\\\/\\\/tastegreekwines.com\\\/wp-content\\\/uploads\\\/2025\\\/04\\\/Gerovasiliou07.jpg\",\"type\":\"wineries\",\"post_id\":9784,\"city\":\"\",\"available\":true},{\"id\":\"4\",\"name\":\"Ktima Pavlidis\",\"location_name\":\"Ktima Pavlidis\",\"address\":\"Ktima Pavlidis, \\u039a\\u03bf\\u03ba\\u03ba\\u03b9\\u03bd\\u03cc\\u03b3\\u03b5\\u03b9\\u03b1, Drama, Greece\",\"lat\":\"41.200975\",\"lng\":\"23.952466\",\"link\":\"https:\\\/\\\/tastegreekwines.com\\\/en\\\/wineries\\\/ktima-pavlidis\\\/\",\"logo\":\"https:\\\/\\\/tastegreekwines.com\\\/wp-content\\\/uploads\\\/2025\\\/04\\\/KtimaPavlidis-300x188.png\",\"pic\":\"https:\\\/\\\/tastegreekwines.com\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/Ktima-Pavlidi-photo-3-1024x768.jpg\",\"type\":\"wineries\",\"post_id\":7513,\"city\":\"\",\"available\":true},{\"id\":\"6\",\"name\":\"Lykos Winery\",\"location_name\":\"Lykos \\u039f\\u03b9\\u03bd\\u03bf\\u03c0\\u03bf\\u03b9\\u03b5\\u03af\\u03bf\",\"address\":\"\\u039f\\u0399\\u039d\\u039f\\u03a0\\u039f\\u0399\\u0395\\u0399\\u039f - \\u039b\\u03a5\\u039a\\u039f\\u03a3 - \\u0395\\u03a1\\u0395\\u03a4\\u03a1\\u0399\\u0391, \\u0395\\u03c1\\u03ad\\u03c4\\u03c1\\u03b9\\u03b1, \\u0395\\u03bb\\u03bb\\u03ac\\u03b4\\u03b1\",\"lat\":\"38.403291\",\"lng\":\"23.751290\",\"link\":\"https:\\\/\\\/tastegreekwines.com\\\/en\\\/wineries\\\/lykos-winery\\\/\",\"logo\":\"https:\\\/\\\/tastegreekwines.com\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/Logo-300x212.jpg\",\"pic\":\"https:\\\/\\\/tastegreekwines.com\\\/wp-content\\\/uploads\\\/2025\\\/04\\\/Lykos.jpg\",\"type\":\"wineries\",\"post_id\":8069,\"city\":\"\",\"available\":true},{\"id\":\"33\",\"name\":\"Mesimvria Winery\",\"location_name\":\"Mesimvria Winery\",\"address\":\"\\u039c\\u03b5\\u03c3\\u03b7\\u03bc\\u03b2\\u03c1\\u03af\\u03b1 \\u039f\\u03b9\\u03bd\\u03bf\\u03c0\\u03bf\\u03b9\\u03b7\\u03c4\\u03b9\\u03ba\\u03ae, \\u039d\\u03ad\\u03b1 \\u039c\\u03b5\\u03c3\\u03b7\\u03bc\\u03b2\\u03c1\\u03af\\u03b1, \\u0395\\u03bb\\u03bb\\u03ac\\u03b4\\u03b1\",\"lat\":\"40.731707\",\"lng\":\"22.778305\",\"link\":\"https:\\\/\\\/tastegreekwines.com\\\/en\\\/wineries\\\/mesimvria-winery\\\/\",\"logo\":\"https:\\\/\\\/tastegreekwines.com\\\/wp-content\\\/uploads\\\/2025\\\/08\\\/logo-300x114.png\",\"pic\":\"https:\\\/\\\/tastegreekwines.com\\\/wp-content\\\/uploads\\\/2025\\\/08\\\/Winery-1.jpg\",\"type\":\"wineries\",\"post_id\":10015,\"city\":\"\",\"available\":true},{\"id\":\"2\",\"name\":\"Methi Bistro and Wine Bar\",\"location_name\":\"Methi - Bistro and Wine Bar\",\"address\":\"Methi Bistro & Wine Bar, Eth. Antistaseos 65, Kalamaria 551 34, Greece\",\"lat\":\"40.584909\",\"lng\":\"22.963787\",\"link\":\"https:\\\/\\\/tastegreekwines.com\\\/en\\\/winebars\\\/methi-bistro-and-wine-bar\\\/\",\"logo\":\"https:\\\/\\\/tastegreekwines.com\\\/wp-content\\\/uploads\\\/2025\\\/04\\\/methi-300x300.jpg\",\"pic\":\"https:\\\/\\\/tastegreekwines.com\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/IMG_7138-1024x683.jpeg\",\"type\":\"winebars\",\"post_id\":8964,\"city\":\"\",\"available\":true},{\"id\":\"38\",\"name\":\"Monmarti Wine Bar\",\"location_name\":\"Monmarti Wine Bar\",\"address\":\"\\u039c\\u03bf\\u03bd\\u03bc\\u03ac\\u03c1\\u03c4\\u03b7 Wine Bar Restau, \\u0398\\u03b5\\u03bc\\u03b9\\u03c3\\u03c4\\u03bf\\u03ba\\u03bb\\u03ae \\u03a3\\u03bf\\u03c6\\u03bf\\u03cd\\u03bb\\u03b7, \\u039a\\u03b1\\u03bb\\u03b1\\u03bc\\u03b1\\u03c1\\u03b9\\u03ac, \\u0395\\u03bb\\u03bb\\u03ac\\u03b4\\u03b1\",\"lat\":\"40.589460\",\"lng\":\"22.945098\",\"link\":\"https:\\\/\\\/tastegreekwines.com\\\/en\\\/winebars\\\/monmarti-wine-bar\\\/\",\"logo\":\"https:\\\/\\\/tastegreekwines.com\\\/wp-content\\\/uploads\\\/2025\\\/10\\\/logo-3-300x300.jpg\",\"pic\":\"https:\\\/\\\/tastegreekwines.com\\\/wp-content\\\/uploads\\\/2025\\\/10\\\/Monmarti-8-2-683x1024.jpg\",\"type\":\"winebars\",\"post_id\":10458,\"city\":\"\",\"available\":true},{\"id\":\"46\",\"name\":\"Mylonas Winery\",\"location_name\":\"Mylonas Winery\",\"address\":\"MYLONAS WINERY, \\u0399\\u03c0\\u03c0\\u03bf\\u03ba\\u03c1\\u03ac\\u03c4\\u03bf\\u03c5\\u03c2, \\u039a\\u03b5\\u03c1\\u03b1\\u03c4\\u03ad\\u03b1, \\u0395\\u03bb\\u03bb\\u03ac\\u03b4\\u03b1\",\"lat\":\"37.810757\",\"lng\":\"23.975261\",\"link\":\"https:\\\/\\\/tastegreekwines.com\\\/en\\\/wineries\\\/mylonas-winery\\\/\",\"logo\":\"https:\\\/\\\/tastegreekwines.com\\\/wp-content\\\/uploads\\\/2025\\\/12\\\/logo-2.png\",\"pic\":\"https:\\\/\\\/tastegreekwines.com\\\/wp-content\\\/uploads\\\/2025\\\/12\\\/Mylonas-3-768x1024.jpg\",\"type\":\"wineries\",\"post_id\":11129,\"city\":\"\",\"available\":true},{\"id\":\"40\",\"name\":\"Nicolas Repanis Winery\",\"location_name\":\"Nicolas Repanis Winery\",\"address\":\"\\u039a\\u03c4\\u03ae\\u03bc\\u03b1 \\u03a1\\u03b5\\u03c0\\u03ac\\u03bd\\u03b7 , Domaine Repanis, \\u039e\\u03b5\\u03c1\\u03cc\\u03ba\\u03b1\\u03bc\\u03c0\\u03bf\\u03c2, \\u039d\\u03b5\\u03bc\\u03ad\\u03b1, \\u0395\\u03bb\\u03bb\\u03ac\\u03b4\\u03b1\",\"lat\":\"37.790145\",\"lng\":\"22.665309\",\"link\":\"https:\\\/\\\/tastegreekwines.com\\\/en\\\/wineries\\\/nicolas-repanis-winery\\\/\",\"logo\":\"https:\\\/\\\/tastegreekwines.com\\\/wp-content\\\/uploads\\\/2025\\\/10\\\/logo.jpeg\",\"pic\":\"https:\\\/\\\/tastegreekwines.com\\\/wp-content\\\/uploads\\\/2025\\\/10\\\/Repanis-8.jpg\",\"type\":\"wineries\",\"post_id\":10567,\"city\":\"\",\"available\":true},{\"id\":\"37\",\"name\":\"Oenops Wines\",\"location_name\":\"Oenops Wines\",\"address\":\"OENOPS WINES, 3\\u03bf \\u03c7\\u03bb\\u03bc \\u03b5\\u03c0\\u03b1\\u03c1\\u03c7\\u03b9\\u03b1\\u03ba\\u03ae\\u03c2 \\u03bf\\u03b4\\u03bf\\u03cd \\u03a0\\u03c1\\u03bf\\u03c3\\u03bf\\u03c4\\u03c3\\u03ac\\u03bd\\u03b7\\u03c2, \\u039a\\u03bf\\u03ba\\u03ba\\u03b9\\u03bd\\u03cc\\u03b3\\u03b5\\u03b9\\u03b1, \\u0395\\u03bb\\u03bb\\u03ac\\u03b4\\u03b1\",\"lat\":\"41.187154\",\"lng\":\"23.945127\",\"link\":\"https:\\\/\\\/tastegreekwines.com\\\/en\\\/wineries\\\/oenops-wines\\\/\",\"logo\":\"https:\\\/\\\/tastegreekwines.com\\\/wp-content\\\/uploads\\\/2025\\\/09\\\/oenops-logo-1.png\",\"pic\":\"https:\\\/\\\/tastegreekwines.com\\\/wp-content\\\/uploads\\\/2025\\\/09\\\/Oenops7-1024x768.jpg\",\"type\":\"wineries\",\"post_id\":10336,\"city\":\"\",\"available\":true},{\"id\":\"41\",\"name\":\"Oenotria Land\",\"location_name\":\"Oenotria Land\",\"address\":\"Estates Costa Lazaridi - Oenotria Land, \\u039a\\u03b1\\u03c0\\u03b1\\u03bd\\u03b4\\u03c1\\u03af\\u03c4\\u03b9, \\u0395\\u03bb\\u03bb\\u03ac\\u03b4\\u03b1\",\"lat\":\"38.231731\",\"lng\":\"23.870909\",\"link\":\"https:\\\/\\\/tastegreekwines.com\\\/en\\\/wineries\\\/oenotria-land\\\/\",\"logo\":\"https:\\\/\\\/tastegreekwines.com\\\/wp-content\\\/uploads\\\/2025\\\/10\\\/logo-2-300x164.png\",\"pic\":\"https:\\\/\\\/tastegreekwines.com\\\/wp-content\\\/uploads\\\/2025\\\/10\\\/Oinotria-Gi-10-1024x683.jpg\",\"type\":\"wineries\",\"post_id\":10678,\"city\":\"\",\"available\":true},{\"id\":\"52\",\"name\":\"Oinotropai Estate\",\"location_name\":\"\\u039f\\u03b9\\u03bd\\u03bf\\u03c4\\u03c1\\u03cc\\u03c0\\u03b1\\u03b9\",\"address\":\"\\u0396\\u03b5\\u03c5\\u03b3\\u03bf\\u03bb\\u03b1\\u03c4\\u03b5\\u03b9\\u03cc 240 02, \\u0395\\u03bb\\u03bb\\u03ac\\u03b4\\u03b1\",\"lat\":\"37.249816\",\"lng\":\"21.959018\",\"link\":\"https:\\\/\\\/tastegreekwines.com\\\/en\\\/wineries\\\/oinotropai-estate\\\/\",\"logo\":\"https:\\\/\\\/tastegreekwines.com\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/Logo.jpeg\",\"pic\":\"https:\\\/\\\/tastegreekwines.com\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/OINOTROPAI-10-1024x683.jpeg\",\"type\":\"wineries\",\"post_id\":12095,\"city\":\"\",\"available\":true},{\"id\":\"25\",\"name\":\"Papagiannakos Winery\",\"location_name\":\"Papagiannakos Winery\",\"address\":\"Papagiannakos Winery, \\u03a0\\u03c5\\u03b8\\u03b1\\u03b3\\u03cc\\u03c1\\u03b1, \\u039c\\u03b1\\u03c1\\u03ba\\u03cc\\u03c0\\u03bf\\u03c5\\u03bb\\u03bf \\u039c\\u03b5\\u03c3\\u03bf\\u03b3\\u03b1\\u03af\\u03b1\\u03c2, \\u0395\\u03bb\\u03bb\\u03ac\\u03b4\\u03b1\",\"lat\":\"37.904611\",\"lng\":\"23.983453\",\"link\":\"https:\\\/\\\/tastegreekwines.com\\\/en\\\/wineries\\\/papagiannakos-winery\\\/\",\"logo\":\"https:\\\/\\\/tastegreekwines.com\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/papagiannakos-logo-300x154.jpg\",\"pic\":\"https:\\\/\\\/tastegreekwines.com\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/papagiannakos9-1024x686.jpg\",\"type\":\"wineries\",\"post_id\":9017,\"city\":\"\",\"available\":true},{\"id\":\"16\",\"name\":\"Silva Daskalakis Winery\",\"location_name\":\"Silva Daskalaki Winery\",\"address\":\"Silva Daskalaki Winery, \\u03a3\\u03af\\u03b2\\u03b1, \\u0395\\u03bb\\u03bb\\u03ac\\u03b4\\u03b1\",\"lat\":\"35.208917\",\"lng\":\"25.036036\",\"link\":\"https:\\\/\\\/tastegreekwines.com\\\/en\\\/wineries\\\/silva-daskalaki-winery\\\/\",\"logo\":\"https:\\\/\\\/tastegreekwines.com\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/Silva-logo-300x95.jpg\",\"pic\":\"https:\\\/\\\/tastegreekwines.com\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/Winery-Daskalaki-Gallery-03.jpg\",\"type\":\"wineries\",\"post_id\":7534,\"city\":\"\",\"available\":true},{\"id\":\"13\",\"name\":\"Winery Monsieur Nicolas by G. Karamitros\",\"location_name\":\"Winery Monsieur Nicolas\",\"address\":\"Winery Monsieur Nicolas by G .Karamitros, Eparchiaki Odos Mersenikola - Filakti, \\u039b\\u03af\\u03bc\\u03bd\\u03b7 \\u03a0\\u03bb\\u03b1\\u03c3\\u03c4\\u03ae\\u03c1\\u03b1, \\u0395\\u03bb\\u03bb\\u03ac\\u03b4\\u03b1\",\"lat\":\"39.345304\",\"lng\":\"21.757677\",\"link\":\"https:\\\/\\\/tastegreekwines.com\\\/en\\\/wineries\\\/winery-monsieur-nicolas\\\/\",\"logo\":\"https:\\\/\\\/tastegreekwines.com\\\/wp-content\\\/uploads\\\/2025\\\/05\\\/Monsieur-Nicolas-Winery-Logo.png\",\"pic\":\"https:\\\/\\\/tastegreekwines.com\\\/wp-content\\\/uploads\\\/2025\\\/05\\\/Monsieur-Nicolas-Winery-31-1024x768.jpg\",\"type\":\"wineries\",\"post_id\":7116,\"city\":\"\",\"available\":true},{\"id\":\"44\",\"name\":\"Zervas Winery\",\"location_name\":\"Zervas Winery\",\"address\":\"Zervas Winery - \\u039f\\u03b9\\u03bd\\u03bf\\u03c0\\u03bf\\u03b9\\u03b5\\u03af\\u03b1 \\u0396\\u03ad\\u03c1\\u03b2\\u03b1, \\u03a0\\u03b1\\u03c1\\u03b1\\u03c0\\u03cc\\u03c4\\u03b1\\u03bc\\u03bf\\u03c2, \\u0395\\u03bb\\u03bb\\u03ac\\u03b4\\u03b1\",\"lat\":\"39.562297\",\"lng\":\"20.328502\",\"link\":\"https:\\\/\\\/tastegreekwines.com\\\/en\\\/wineries\\\/zervas-winery\\\/\",\"logo\":\"https:\\\/\\\/tastegreekwines.com\\\/wp-content\\\/uploads\\\/2025\\\/12\\\/logo.png\",\"pic\":\"https:\\\/\\\/tastegreekwines.com\\\/wp-content\\\/uploads\\\/2025\\\/12\\\/Zervas-2-1024x768.jpg\",\"type\":\"wineries\",\"post_id\":10997,\"city\":\"\",\"available\":true}];\n        let lastLocation = null;\n        let pendingInitialBrowserLocation = null;\n        let initialBrowserLocationRequested = false;\n        let initialBrowserLocationApplied = false;\n        let initialBrowserLocationWatchId = null;\n        let initialBrowserLocationRetryTimer = null;\n        let initialBrowserLocationRetryCount = 0;\n        const initialBrowserLocationMaxRetries = 2;\n        const statusEl = document.getElementById('eva-map-status');\n        const locale = MAP_LANG === 'el' ? 'el-GR' : 'en-US';\n        const isMobileViewport = () => window.matchMedia && window.matchMedia('(max-width: 768px)').matches;\n        let currentKindFilter = EVA_KIND_FILTER || '';\n        const getAddressInput = () => document.getElementById('address-input');\n        const getFilterButton = () => document.getElementById('filter-btn');\n        const getResetButton = () => document.getElementById('reset-map-btn');\n        const getSearchBar = () => document.querySelector('.tgw-map-search');\n        const getDateInput = () => document.getElementById('date-select');\n        const getKindSelect = () => document.getElementById('kind-select');\n        const getAvailableOnlyToggle = () => document.getElementById('available-only');\n        const getRadiusSelect = () => document.getElementById('radius-select');\n        const locationStateStorageKey = 'tgw-map-location-state';\n        const hasFilterControls = () => !!(getAddressInput() || getDateInput() || getKindSelect() || getRadiusSelect() || getFilterButton());\n\n        function tgwDebug(label, payload) {\n            return;\n        }\n\n        function getCurrentLocationLabel() {\n            return t.currentLocation || 'My location';\n        }\n\n        function normalizeCoordinateValue(value) {\n            const numericValue = typeof value === 'number' ? value : parseFloat(value);\n            return Number.isFinite(numericValue) ? numericValue : null;\n        }\n\n        function buildLocationState(location, label = '') {\n            if (!location) {\n                return null;\n            }\n\n            const lat = normalizeCoordinateValue(location.lat);\n            const lng = normalizeCoordinateValue(location.lng);\n\n            if (lat === null || lng === null) {\n                return null;\n            }\n\n            return {\n                lat,\n                lng,\n                label: typeof label === 'string' ? label.trim() : ''\n            };\n        }\n\n        function persistLocationState(locationState) {\n            if (!locationState || !window.sessionStorage) {\n                return;\n            }\n\n            try {\n                window.sessionStorage.setItem(locationStateStorageKey, JSON.stringify(locationState));\n            } catch (error) {\n                tgwDebug('persistLocationState failed', { error });\n            }\n        }\n\n        function clearPersistedLocationState() {\n            if (!window.sessionStorage) {\n                return;\n            }\n\n            try {\n                window.sessionStorage.removeItem(locationStateStorageKey);\n            } catch (error) {\n                tgwDebug('clearPersistedLocationState failed', { error });\n            }\n        }\n\n        function readPersistedLocationState() {\n            if (!window.sessionStorage) {\n                return null;\n            }\n\n            try {\n                const rawValue = window.sessionStorage.getItem(locationStateStorageKey);\n                if (!rawValue) {\n                    return null;\n                }\n\n                const parsedValue = JSON.parse(rawValue);\n                return buildLocationState(parsedValue, parsedValue && parsedValue.label ? parsedValue.label : '');\n            } catch (error) {\n                tgwDebug('readPersistedLocationState failed', { error });\n                return null;\n            }\n        }\n\n        function getPersistedLabelForCoordinates(lat, lng) {\n            const persistedState = readPersistedLocationState();\n            if (!persistedState) {\n                return '';\n            }\n\n            if (\n                Math.abs(persistedState.lat - lat) < 0.000001 &&\n                Math.abs(persistedState.lng - lng) < 0.000001\n            ) {\n                return persistedState.label || '';\n            }\n\n            return '';\n        }\n\n        function setAddressInputValue(value) {\n            const input = getAddressInput();\n            if (!input) {\n                return;\n            }\n\n            input.value = typeof value === 'string' ? value : '';\n        }\n\n        function syncLocationSearchParams(locationState) {\n            if (!locationState) {\n                return;\n            }\n\n            const url = new URL(window.location.href);\n            url.searchParams.set('lat', locationState.lat);\n            url.searchParams.set('lng', locationState.lng);\n            url.searchParams.delete('winery');\n            url.searchParams.delete('unavailable');\n\n            if (locationState.label) {\n                url.searchParams.set('location_label', locationState.label);\n            } else {\n                url.searchParams.delete('location_label');\n            }\n\n            window.history.replaceState({}, '', url.toString());\n        }\n\n        function clearLocationSearchParams() {\n            const url = new URL(window.location.href);\n            url.searchParams.delete('lat');\n            url.searchParams.delete('lng');\n            url.searchParams.delete('location_label');\n            url.searchParams.delete('winery');\n            url.searchParams.delete('unavailable');\n            window.history.replaceState({}, '', url.toString());\n        }\n\n        function applyResolvedLocationState(location, options = {}) {\n            const {\n                label = '',\n                syncUrl = false,\n                updateInput = true,\n                persist = true\n            } = options;\n\n            const locationState = buildLocationState(location, label);\n            if (!locationState) {\n                return null;\n            }\n\n            if (persist) {\n                persistLocationState(locationState);\n            }\n\n            if (updateInput) {\n                setAddressInputValue(locationState.label || getCurrentLocationLabel());\n            }\n\n            if (syncUrl) {\n                syncLocationSearchParams(locationState);\n            }\n\n            return locationState;\n        }\n\n        function getInitialLocationStateFromUrl() {\n            const params = new URLSearchParams(window.location.search);\n            const lat = normalizeCoordinateValue(params.get('lat'));\n            const lng = normalizeCoordinateValue(params.get('lng'));\n\n            if (lat === null || lng === null) {\n                return null;\n            }\n\n            const labelFromUrl = (params.get('location_label') || '').trim();\n            const persistedLabel = getPersistedLabelForCoordinates(lat, lng);\n            const resolvedLabel = labelFromUrl || persistedLabel || getCurrentLocationLabel();\n\n            return buildLocationState({ lat, lng }, resolvedLabel);\n        }\n\n        function clearInitialBrowserLocationWatch() {\n            if (initialBrowserLocationWatchId === null || !navigator.geolocation) {\n                return;\n            }\n\n            navigator.geolocation.clearWatch(initialBrowserLocationWatchId);\n            initialBrowserLocationWatchId = null;\n        }\n\n        function clearInitialBrowserLocationRetryTimer() {\n            if (!initialBrowserLocationRetryTimer) {\n                return;\n            }\n\n            window.clearTimeout(initialBrowserLocationRetryTimer);\n            initialBrowserLocationRetryTimer = null;\n        }\n\n        function canAutoLocateFromBrowser() {\n            return !!navigator.geolocation;\n        }\n\n        function handleResolvedInitialBrowserLocation(coords, meta = {}) {\n            const loc = applyResolvedLocationState({\n                lat: coords.latitude,\n                lng: coords.longitude\n            }, {\n                label: getCurrentLocationLabel(),\n                syncUrl: true\n            });\n\n            if (!loc) {\n                return;\n            }\n\n            pendingInitialBrowserLocation = loc;\n            clearInitialBrowserLocationRetryTimer();\n            clearInitialBrowserLocationWatch();\n            tgwDebug('initial browser geolocation success', {\n                coords: {\n                    latitude: coords.latitude,\n                    longitude: coords.longitude,\n                    accuracy: coords.accuracy\n                },\n                meta\n            });\n            applyPendingInitialBrowserLocation();\n        }\n\n        function scheduleInitialBrowserLocationRetry() {\n            if (\n                initialBrowserLocationApplied ||\n                !canAutoLocateFromBrowser() ||\n                initialBrowserLocationRetryCount >= initialBrowserLocationMaxRetries\n            ) {\n                return;\n            }\n\n            initialBrowserLocationRetryCount += 1;\n            clearInitialBrowserLocationRetryTimer();\n            initialBrowserLocationRetryTimer = window.setTimeout(() => {\n                requestInitialBrowserLocation({ forceFresh: true, allowRetry: true });\n            }, 1200 * initialBrowserLocationRetryCount);\n        }\n\n        function requestInitialBrowserLocation(options = {}) {\n            const {\n                forceFresh = false,\n                allowRetry = false\n            } = options;\n\n            if (!canAutoLocateFromBrowser()) {\n                return;\n            }\n\n            if (initialBrowserLocationRequested && !allowRetry) {\n                return;\n            }\n\n            initialBrowserLocationRequested = true;\n            tgwDebug('requesting initial browser geolocation', {\n                options: {\n                    enableHighAccuracy: false,\n                    timeout: forceFresh ? 20000 : 15000,\n                    maximumAge: forceFresh ? 0 : 300000\n                },\n                allowRetry,\n                retryCount: initialBrowserLocationRetryCount,\n                hasInitialSearchContext: hasInitialSearchContext()\n            });\n\n            navigator.geolocation.getCurrentPosition(pos => {\n                handleResolvedInitialBrowserLocation(pos.coords, {\n                    source: 'getCurrentPosition',\n                    timestamp: pos.timestamp\n                });\n            }, error => {\n                tgwDebug('initial browser geolocation error', {\n                    code: error && error.code,\n                    message: error && error.message,\n                    error,\n                    retryCount: initialBrowserLocationRetryCount\n                });\n\n                if (error && error.code === 1) {\n                    clearInitialBrowserLocationRetryTimer();\n                    clearInitialBrowserLocationWatch();\n                    return;\n                }\n\n                scheduleInitialBrowserLocationRetry();\n            }, {\n                enableHighAccuracy: false,\n                timeout: forceFresh ? 20000 : 15000,\n                maximumAge: forceFresh ? 0 : 300000\n            });\n\n            if (initialBrowserLocationWatchId === null) {\n                initialBrowserLocationWatchId = navigator.geolocation.watchPosition(pos => {\n                    handleResolvedInitialBrowserLocation(pos.coords, {\n                        source: 'watchPosition',\n                        timestamp: pos.timestamp\n                    });\n                }, error => {\n                    tgwDebug('initial browser watchPosition error', {\n                        code: error && error.code,\n                        message: error && error.message,\n                        error\n                    });\n\n                    if (error && error.code === 1) {\n                        clearInitialBrowserLocationWatch();\n                    }\n                }, {\n                    enableHighAccuracy: true,\n                    timeout: 20000,\n                    maximumAge: 0\n                });\n            }\n        }\n\n        function applyPendingInitialBrowserLocation() {\n            if (\n                initialBrowserLocationApplied ||\n                !pendingInitialBrowserLocation ||\n                !evaMapInitialized ||\n                !map\n            ) {\n                return;\n            }\n\n            initialBrowserLocationApplied = true;\n            clearInitialBrowserLocationRetryTimer();\n            clearInitialBrowserLocationWatch();\n            runSearchFromLocation(pendingInitialBrowserLocation);\n        }\n\n        if (!selectedDate && statusEl) {\n            statusEl.style.display = 'none';\n        }\n        const t = window.evaTranslations || {\n            placeholder: 'Enter your city or address',\n            filter: 'FILTER',\n            labelAddress: 'CITY OR AREA',\n            labelRadius: 'RADIUS',\n            labelDate: 'VISIT DATE',\n            labelKind: 'TYPE',\n            labelAvailable: 'AVAILABILITY',\n            view: 'VIEW WINERY',\n            km: 'km away',\n            empty: 'No wineries found in this area.',\n            more: 'See more wineries',\n            experienceTitle: 'Wineries with available experiences on %s',\n            experienceTitleWinebars: 'Winebars with available experiences on %s',\n            experienceTitleAll: 'Wineries and winebars with available experiences on %s',\n            experienceEmpty: 'No available experiences for that date in this area.',\n            experienceEmptyWinebars: 'No available experiences for that date in winebars in this area.',\n            experienceEmptyAll: 'No available experiences for that date in wineries and winebars in this area.',\n            unavailableSpecific: 'No available experiences at %1$s on %2$s. See which wineries are available on the same day.',\n            availableLabel: 'Available on %s',\n            unavailableLabel: 'Unavailable on %s',\n            bookNow: 'Book experience',\n            viewWinery: 'View winery',\n            nearbyTitle: 'Nearby',\n            allTitle: 'All wineries',\n            reset: 'View all wineries',\n            allLabel: 'All',\n            wineryLabel: 'Winery',\n            winebarLabel: 'Winebar',\n            typeAriaLabel: 'Entity type'\n        };\n\n        toggleResetButton(false);\n\n        let evaMapInitialized = false;\n        let evaMapBootAttempts = 0;\n        let evaMapBootTimer = null;\n        const evaDarkMapStyles = [\n            {\n                elementType: \"geometry\",\n                stylers: [{ color: \"#5b645f\" }]\n            },\n            {\n                elementType: \"labels.text.fill\",\n                stylers: [{ color: \"#ebe3d8\" }]\n            },\n            {\n                elementType: \"labels.text.stroke\",\n                stylers: [{ color: \"#4a534f\" }]\n            },\n            {\n                featureType: \"administrative\",\n                elementType: \"geometry.stroke\",\n                stylers: [{ color: \"#7d8884\" }]\n            },\n            {\n                featureType: \"administrative.land_parcel\",\n                elementType: \"labels.text.fill\",\n                stylers: [{ color: \"#b8c0bb\" }]\n            },\n            {\n                featureType: \"landscape.natural\",\n                elementType: \"geometry\",\n                stylers: [{ color: \"#4e6156\" }]\n            },\n            {\n                featureType: \"poi\",\n                elementType: \"geometry\",\n                stylers: [{ color: \"#6a6d67\" }]\n            },\n            {\n                featureType: \"poi\",\n                elementType: \"labels.text.fill\",\n                stylers: [{ color: \"#d6d0c6\" }]\n            },\n            {\n                featureType: \"poi.park\",\n                elementType: \"geometry\",\n                stylers: [{ color: \"#4b6c57\" }]\n            },\n            {\n                featureType: \"poi.park\",\n                elementType: \"labels.text.fill\",\n                stylers: [{ color: \"#c8dbc8\" }]\n            },\n            {\n                featureType: \"road\",\n                elementType: \"geometry\",\n                stylers: [{ color: \"#7a756d\" }]\n            },\n            {\n                featureType: \"road\",\n                elementType: \"geometry.stroke\",\n                stylers: [{ color: \"#545149\" }]\n            },\n            {\n                featureType: \"road\",\n                elementType: \"labels.text.fill\",\n                stylers: [{ color: \"#e5ddd2\" }]\n            },\n            {\n                featureType: \"road.highway\",\n                elementType: \"geometry\",\n                stylers: [{ color: \"#b78c63\" }]\n            },\n            {\n                featureType: \"road.highway\",\n                elementType: \"geometry.stroke\",\n                stylers: [{ color: \"#6c523f\" }]\n            },\n            {\n                featureType: \"road.highway\",\n                elementType: \"labels.text.fill\",\n                stylers: [{ color: \"#f1deca\" }]\n            },\n            {\n                featureType: \"transit\",\n                elementType: \"geometry\",\n                stylers: [{ color: \"#717b82\" }]\n            },\n            {\n                featureType: \"transit.station\",\n                elementType: \"labels.text.fill\",\n                stylers: [{ color: \"#ded8cf\" }]\n            },\n            {\n                featureType: \"water\",\n                elementType: \"geometry\",\n                stylers: [{ color: \"#4b7285\" }]\n            },\n            {\n                featureType: \"water\",\n                elementType: \"labels.text.fill\",\n                stylers: [{ color: \"#d2e6f0\" }]\n            }\n        ];\n        function initEvaMap() {\n            if (evaMapInitialized) {\n                tgwDebug('initEvaMap skipped: already initialized');\n                return true;\n            }\n\n            if (\n                !window.google ||\n                !google.maps ||\n                !document.getElementById(\"eva-map\")\n            ) {\n                tgwDebug('initEvaMap waiting for dependencies', {\n                    hasGoogle: !!window.google,\n                    hasMaps: !!(window.google && google.maps),\n                    hasMapEl: !!document.getElementById(\"eva-map\")\n                });\n                return false;\n            }\n\n            try {\n                tgwDebug('initEvaMap start', {\n                    showFilters: EVA_SHOW_FILTERS,\n                    hasInitialSearchContext: hasInitialSearchContext(),\n                    url: window.location.href\n                });\n                const mobileView = isMobileViewport();\n                map = new google.maps.Map(document.getElementById(\"eva-map\"), {\n                    zoom: mobileView ? 6 : 7,\n                    center: { lat: 38.6413, lng: 23.9444 },\n                    minZoom: 5,\n                    backgroundColor: \"#5a615d\",\n                    zoomControl: true,\n                    gestureHandling: mobileView ? 'greedy' : 'cooperative',\n                    styles: evaDarkMapStyles\n                });\n                evaMapInitialized = true;\n                if (evaMapBootTimer) {\n                    clearTimeout(evaMapBootTimer);\n                    evaMapBootTimer = null;\n                }\n            } catch (error) {\n                return false;\n            }\n\n            const mapElement = document.getElementById('eva-map');\n            if (mapElement && !mapElement.__tgwCloseHandlerBound) {\n                mapElement.addEventListener('click', event => {\n                    const closeButton = event.target.closest('.eva-card-close');\n                    if (!closeButton) return;\n                    event.preventDefault();\n                    event.stopPropagation();\n                    if (activeInfoWindow) {\n                        activeInfoWindow.close();\n                        activeInfoWindow = null;\n                        activeInfoWindowMarker = null;\n                    }\n                });\n                mapElement.__tgwCloseHandlerBound = true;\n            }\n\n            mapOverlayView = new google.maps.OverlayView();\n            mapOverlayView.onAdd = function () {};\n            mapOverlayView.draw = function () {};\n            mapOverlayView.onRemove = function () {};\n            mapOverlayView.setMap(map);\n\n            map.addListener('zoom_changed', () => {\n                const z = map.getZoom();\n                markers.forEach(marker => {\n                    marker.setVisible(z >= 7);\n                });\n            });\n\n            const input = getAddressInput();\n                if (input) {\n                tgwDebug('binding autocomplete', { inputFound: true });\n                const autocomplete = new google.maps.places.Autocomplete(input);\n                autocomplete.setFields([\"geometry\", \"formatted_address\", \"name\"]);\n\n                autocomplete.addListener(\"place_changed\", () => {\n                    const place = autocomplete.getPlace();\n                    tgwDebug('autocomplete place_changed', {\n                        hasGeometry: !!(place && place.geometry),\n                        place\n                    });\n                    if (!place.geometry) return;\n                    const loc = applyResolvedLocationState({\n                        lat: place.geometry.location.lat(),\n                        lng: place.geometry.location.lng()\n                    }, {\n                        label: (place.formatted_address || place.name || input.value || '').trim(),\n                        syncUrl: true\n                    });\n                    if (!loc) return;\n                    tgwDebug('autocomplete resolved location', loc);\n                    runSearchFromLocation(loc);\n                });\n            } else {\n                tgwDebug('autocomplete not bound: input missing');\n            }\n\n            if (canAutoLocateFromBrowser()) {\n                requestInitialBrowserLocation();\n                applyPendingInitialBrowserLocation();\n            } else {\n                tgwDebug('skipping auto geolocation', {\n                    hasNavigatorGeolocation: !!navigator.geolocation\n                });\n            }\n\n            const initialLocations = getLocationsForCurrentKind();\n            const initialMarkers = initialLocations.slice();\n            const initialAvailableCount = selectedDate ? countAvailableLocations(initialMarkers) : null;\n            renderMarkers(applyAvailabilityFilterToList(initialMarkers));\n            updateStatusMessage(selectedDate ? initialAvailableCount > 0 : null);\n            if (selectedDate || !hasFilterControls()) {\n                ensureSidebarVisible();\n                renderSideCards(applyAvailabilityFilterToList(initialMarkers), null);\n            }\n            handleInitialState();\n            tgwDebug('initEvaMap complete');\n            return true;\n        }\n\n        function scheduleEvaMapInit() {\n            if (evaMapInitialized) {\n                return;\n            }\n\n            if (initEvaMap()) {\n                return;\n            }\n\n            if (evaMapBootAttempts >= 40) {\n                return;\n            }\n\n            evaMapBootAttempts += 1;\n            tgwDebug('scheduleEvaMapInit retry', { attempt: evaMapBootAttempts });\n            evaMapBootTimer = window.setTimeout(scheduleEvaMapInit, 250);\n        }\n\n        window.initEvaMap = initEvaMap;\n\n        if (window.google && google.maps) {\n            scheduleEvaMapInit();\n        } else {\n            document.addEventListener('DOMContentLoaded', () => {\n                scheduleEvaMapInit();\n            });\n            window.addEventListener('load', scheduleEvaMapInit);\n        }\n\n        function getLocationLabel(loc) {\n            if (loc.city) {\n                return loc.city;\n            }\n\n            const address = typeof loc.address === 'string' ? loc.address : '';\n            if (!address) {\n                return '';\n            }\n\n            const parts = address\n                .split(',')\n                .map(part => part.trim())\n                .filter(Boolean);\n\n            for (let i = parts.length - 1; i >= 0; i -= 1) {\n                const part = parts[i];\n                if (!part || \/\\d\/.test(part)) {\n                    continue;\n                }\n                if (\/^(greece|gr|ellada|\u03b5\u03bb\u03bb\u03b1\u03b4\u03b1|\u03b5\u03bb\u03bb\u03ac\u03b4\u03b1)$\/i.test(part)) {\n                    continue;\n                }\n                return part;\n            }\n\n            return '';\n        }\n\n        function resolveCityForLocation(loc, callback) {\n            loc.city = getLocationLabel(loc);\n            callback(loc.city);\n        }\n\n        function renderMarkers(locations) {\n            markers.forEach(m => m.setMap(null));\n            markers = [];\n            if (activeInfoWindow) {\n                activeInfoWindow.close();\n                activeInfoWindow = null;\n                activeInfoWindowMarker = null;\n            }\n\n            locations.forEach(loc => {\n                const pinUrl = (loc.type && EVA_PIN_ICONS[loc.type]) ? EVA_PIN_ICONS[loc.type] : EVA_PIN_ICONS.default;\n                const marker = new google.maps.Marker({\n                    position: { lat: parseFloat(loc.lat), lng: parseFloat(loc.lng) },\n                    map,\n                    title: loc.name,\n                    visible: map.getZoom() >= 7,\n                    icon: {\n                        url: pinUrl,\n                        scaledSize: new google.maps.Size(32, 42),\n                        anchor: new google.maps.Point(16, 42)\n                    }\n                });\n                const markerId = loc.post_id ? parseInt(loc.post_id, 10) : (loc.id ? parseInt(loc.id, 10) : null);\n                if (markerId) {\n                    marker.__tgw_id = markerId;\n                }\n\n                resolveCityForLocation(loc, city => {\n                    const isAvailable = isLocationAvailable(loc);\n                    const statusLabel = selectedDate ? formatAvailabilityLabel(isAvailable) : '';\n                    const ctaLink = loc.link ? buildWineryLink(loc.link, !isAvailable) : '';\n                    const ctaLinkAttr = ctaLink\n                        ? ctaLink.replace(\/&\/g, '&amp;').replace(\/\"\/g, '&quot;').replace(\/<\/g, '&lt;')\n                        : '';\n                    const ctaText = selectedDate ? (isAvailable ? (t.bookNow || t.view) : (t.viewWinery || t.view)) : t.view;\n                    const cardLinkLabel = `${ctaText}: ${loc.name || ''}`\n                        .replace(\/&\/g, '&amp;')\n                        .replace(\/\"\/g, '&quot;')\n                        .replace(\/<\/g, '&lt;');\n\n                    const cardInner = `\n                        <div class=\"eva-card ${ctaLink ? 'is-clickable' : ''}\">\n                            <div class=\"eva-card-image\">\n                                <button class=\"eva-card-close\" type=\"button\" aria-label=\"Close card\"><span aria-hidden=\"true\">&times;<\/span><\/button>\n                                ${loc.pic ? `<img decoding=\"async\" src=\"${loc.pic}\" alt=\"\">` : ``}\n                            <\/div>\n                            <div class=\"eva-card-content\">\n                                ${city ? `<div class=\"eva-card-location\">${city}<\/div>` : ''}\n                                <div class=\"eva-card-title\">${loc.name}<\/div>\n                                ${statusLabel ? `<div class=\"eva-card-status ${isAvailable ? 'is-available' : 'is-unavailable'}\">${statusLabel}<\/div>` : ''}\n                                ${loc.logo ? `\n                                    <div class=\"eva-card-logo-inline\">\n                                        <img decoding=\"async\" src=\"${loc.logo}\" alt=\"\">\n                                    <\/div>\n                                ` : ``}\n                                ${ctaLink ? `\n                                    <div class=\"eva-card-footer\">\n                                        <span class=\"eva-card-cta\">${ctaText}<\/span>\n                                    <\/div>\n                                ` : ``}\n                            <\/div>\n                            ${ctaLink ? `<a class=\"eva-card-link-cover\" href=\"${ctaLinkAttr}\" target=\"_blank\" rel=\"noopener\" aria-label=\"${cardLinkLabel}\"><\/a>` : ``}\n                        <\/div>\n                    `;\n                    const content = cardInner;\n\n                    const showMarkerCard = ({ disableInfoAutoPan = false } = {}) => {\n                        if (activeInfoWindow && activeInfoWindowMarker === marker) {\n                            return;\n                        }\n                        if (activeInfoWindow) {\n                            activeInfoWindow.close();\n                        }\n\n                        const { pixelOffset } = getInfoWindowPlacement(marker);\n                        activeInfoWindow = new google.maps.InfoWindow({\n                            content,\n                            pixelOffset,\n                            disableAutoPan: disableInfoAutoPan\n                        });\n                        activeInfoWindowMarker = marker;\n                        activeInfoWindow.addListener('closeclick', () => {\n                            activeInfoWindow = null;\n                            activeInfoWindowMarker = null;\n                        });\n                        activeInfoWindow.open(map, marker);\n                    };\n\n                    const openMarkerCard = ({ panOnClick = false, disableInfoAutoPan = false } = {}) => {\n                        if (!panOnClick) {\n                            showMarkerCard({ disableInfoAutoPan });\n                            return;\n                        }\n\n                        panMapForMarkerCard(marker, () => {\n                            showMarkerCard({ disableInfoAutoPan });\n                        });\n                    };\n\n                    marker.addListener(\"click\", () => {\n                        openMarkerCard({ panOnClick: true });\n                    });\n\n                    marker.addListener(\"mouseover\", () => {\n                        if (isMobileViewport()) return;\n                        openMarkerCard({ disableInfoAutoPan: true });\n                    });\n                });\n\n                markers.push(marker);\n            });\n        }\n\n        function renderSideCards(locations, origin) {\n            const list = document.getElementById('eva-map-list');\n            if (!list) return;\n\n            list.innerHTML = '';\n\n            if (!locations.length) {\n                list.innerHTML = `\n                    <div class=\"eva-side-empty\">\n                        ${selectedDate ? t.experienceEmpty : t.empty}\n                    <\/div>\n                `;\n                return;\n            }\n\n            const hasOrigin = !!(origin && (typeof origin.lat !== 'undefined') && (typeof origin.lng !== 'undefined'));\n            const originLat = hasOrigin ? (typeof origin.lat === 'function' ? origin.lat() : origin.lat) : null;\n            const originLng = hasOrigin ? (typeof origin.lng === 'function' ? origin.lng() : origin.lng) : null;\n\n            const nearLocations = hasOrigin ? locations.filter(loc => !!loc.__tgwNearby) : [];\n            const otherLocations = hasOrigin ? locations.filter(loc => !loc.__tgwNearby) : locations.slice();\n\n            if (hasOrigin) {\n                nearLocations.sort(compareByDistance);\n                otherLocations.sort(compareByDistance);\n            }\n\n            const sections = [];\n\n            if (hasOrigin && nearLocations.length) {\n                sections.push({ title: t.nearbyTitle || '', items: nearLocations });\n            }\n\n            if (!hasOrigin) {\n                sections.push({ title: '', items: otherLocations });\n            } else if (otherLocations.length) {\n                sections.push({ title: t.allTitle || '', items: otherLocations });\n            }\n\n            sections.forEach(section => {\n                if (section.title) {\n                    const heading = document.createElement('div');\n                    heading.className = 'eva-side-heading';\n                    heading.textContent = section.title;\n                    list.appendChild(heading);\n                }\n\n                section.items.forEach(loc => {\n                    const card = createSidebarCardElement(loc, {\n                        hasOrigin,\n                        originLat,\n                        originLng\n                    });\n                    list.appendChild(card);\n                });\n            });\n\n            const mobileMore = document.createElement('a');\n            mobileMore.className = 'eva-mobile-more';\n            mobileMore.href = 'https:\/\/tastegreekwines.com\/wineries';\n            mobileMore.textContent = t.more || '\u0394\u03b5\u03af\u03c4\u03b5 \u03c0\u03b5\u03c1\u03b9\u03c3\u03c3\u03cc\u03c4\u03b5\u03c1\u03b1 \u03bf\u03b9\u03bd\u03bf\u03c0\u03bf\u03b9\u03b5\u03af\u03b1';\n            list.appendChild(mobileMore);\n        }\n\n        function focusWineryById(postId) {\n            const numericId = parseInt(postId, 10);\n            if (!numericId) return;\n\n            const loc = allLocations.find(l => parseInt(l.post_id || 0, 10) === numericId);\n            if (!loc) return;\n\n            const position = {\n                lat: parseFloat(loc.lat),\n                lng: parseFloat(loc.lng)\n            };\n\n            map.setCenter(position);\n            map.setZoom(12);\n\n            const marker = markers.find(m => m.__tgw_id === numericId);\n            if (marker) {\n                google.maps.event.trigger(marker, 'click');\n            }\n        }\n\n        function searchLocationAt(lat, lng) {\n            const parsedLat = parseFloat(lat);\n            const parsedLng = parseFloat(lng);\n            tgwDebug('searchLocationAt called', { lat, lng, parsedLat, parsedLng });\n            if (Number.isNaN(parsedLat) || Number.isNaN(parsedLng)) return;\n            runSearchFromLocation({ lat: parsedLat, lng: parsedLng });\n        }\n\n        function handleInitialState() {\n            const params = new URLSearchParams(window.location.search);\n\n            const wineryId = params.get('winery');\n            const initialLocationState = getInitialLocationStateFromUrl();\n            tgwDebug('handleInitialState', { wineryId, initialLocationState });\n            if (wineryId) {\n                focusWineryById(wineryId);\n                return;\n            }\n\n            if (initialLocationState) {\n                applyResolvedLocationState(initialLocationState, {\n                    label: initialLocationState.label,\n                    updateInput: true,\n                    persist: true\n                });\n                searchLocationAt(initialLocationState.lat, initialLocationState.lng);\n            }\n        }\n\n        function hasInitialSearchContext() {\n            const params = new URLSearchParams(window.location.search);\n            const wineryId = params.get('winery');\n            const lat = params.get('lat');\n            const lng = params.get('lng');\n            return !!(wineryId || (lat && lng));\n        }\n\n        window.TGWMap = {\n            focusWinery: focusWineryById,\n            searchLocation(lat, lng) {\n                searchLocationAt(lat, lng);\n            }\n        };\n\n        function isLocationAvailable(loc) {\n            if (!selectedDate) {\n                return true;\n            }\n            if (typeof loc.available === 'undefined') {\n                return true;\n            }\n            return !!loc.available;\n        }\n\n        function countAvailableLocations(list) {\n            if (!selectedDate) {\n                return list.length;\n            }\n            return list.filter(isLocationAvailable).length;\n        }\n\n        function normalizeKindValue(value) {\n            if (value === 'wineries' || value === 'winebars') {\n                return value;\n            }\n            return '';\n        }\n\n        function getLocationsForCurrentKind() {\n            if (!currentKindFilter) {\n                return allLocations.slice();\n            }\n            return allLocations.filter(loc => loc && loc.type === currentKindFilter);\n        }\n\n        function buildWineryLink(link, forceDefault = false) {\n            if (!link) {\n                return '';\n            }\n            if (selectedDate && !forceDefault) {\n                const url = new URL(link, window.location.origin);\n                url.searchParams.set('date', selectedDate);\n                url.hash = 'experiences';\n                return url.toString();\n            }\n            return link;\n        }\n\n        function formatDateForDisplay(dateStr) {\n            if (!dateStr) return '';\n            const date = new Date(`${dateStr}T00:00:00`);\n            if (Number.isNaN(date.getTime())) {\n                return dateStr;\n            }\n            return date.toLocaleDateString(locale, { day: 'numeric', month: 'long', year: 'numeric' });\n        }\n\n        function formatStatusText(text, formattedDate) {\n            if (!text) return '';\n            if (text.includes('%s')) {\n                return text.replace('%s', formattedDate);\n            }\n            return text;\n        }\n\n        function formatAvailabilityLabel(isAvailable) {\n            if (!selectedDate) {\n                return '';\n            }\n            const formattedDate = formatDateForDisplay(selectedDate);\n            const template = isAvailable ? (t.availableLabel || '') : (t.unavailableLabel || '');\n            if (!template) {\n                return '';\n            }\n            return formatStatusText(template, formattedDate);\n        }\n\n        function createSidebarCardElement(loc, options = {}) {\n            const { hasOrigin = false, originLat = null, originLng = null } = options;\n            const isAvailable = isLocationAvailable(loc);\n            const card = document.createElement('div');\n            const cardClasses = ['eva-side-card'];\n            if (selectedDate) {\n                cardClasses.push(isAvailable ? 'is-available' : 'is-unavailable');\n            }\n            card.className = cardClasses.join(' ');\n\n            const statusLabel = selectedDate ? formatAvailabilityLabel(isAvailable) : '';\n            const buttonText = selectedDate ? (isAvailable ? (t.bookNow || t.view) : (t.viewWinery || t.view)) : t.view;\n            const buttonLink = loc.link ? buildWineryLink(loc.link, !isAvailable) : '';\n\n            let distanceMarkup = '';\n            if (hasOrigin) {\n                let distanceValue = typeof loc.__tgwDistance === 'number' ? loc.__tgwDistance : null;\n                if ((distanceValue === null || Number.isNaN(distanceValue)) &&\n                    typeof originLat === 'number' && typeof originLng === 'number') {\n                    const computed = getDistanceFromLatLonInKm(\n                        originLat,\n                        originLng,\n                        parseFloat(loc.lat),\n                        parseFloat(loc.lng)\n                    );\n                    if (Number.isFinite(computed)) {\n                        distanceValue = computed;\n                    }\n                }\n\n                if (typeof distanceValue === 'number' && Number.isFinite(distanceValue)) {\n                    distanceMarkup = `<div class=\"eva-side-distance\">${distanceValue.toFixed(1)} ${t.km}<\/div>`;\n                }\n            }\n\n            card.innerHTML = `\n                <div class=\"eva-side-img\" style=\"background-image:url('${loc.pic || ''}')\"><\/div>\n                <div class=\"eva-side-body\">\n                    ${statusLabel ? `<div class=\"eva-side-status ${isAvailable ? 'is-available' : 'is-unavailable'}\">${statusLabel}<\/div>` : ''}\n                    <div class=\"eva-side-title\">${loc.name}<\/div>\n                    ${distanceMarkup}\n                    ${buttonLink ? `<a class=\"eva-side-button\" href=\"${buttonLink}\" target=\"_blank\">${buttonText}<\/a>` : ``}\n                <\/div>\n            `;\n\n            return card;\n        }\n\n        function getInfoWindowPlacement(marker) {\n            const mobileView = isMobileViewport();\n            const defaultVerticalOffset = mobileView ? -40 : 6;\n            const estimatedCardWidth = mobileView ? 220 : 272;\n            const sideGap = mobileView ? 0 : 26;\n\n            if (!mapOverlayView || !marker || !marker.getPosition()) {\n                return {\n                    pixelOffset: new google.maps.Size(0, defaultVerticalOffset),\n                    side: 'top'\n                };\n            }\n\n            const projection = mapOverlayView.getProjection();\n            if (!projection) {\n                return {\n                    pixelOffset: new google.maps.Size(0, defaultVerticalOffset),\n                    side: 'top'\n                };\n            }\n\n            const mapDiv = map.getDiv();\n            const point = projection.fromLatLngToDivPixel(marker.getPosition());\n            if (!point || !mapDiv) {\n                return {\n                    pixelOffset: new google.maps.Size(0, defaultVerticalOffset),\n                    side: 'top'\n                };\n            }\n\n            const mapWidth = mapDiv.offsetWidth || 0;\n            const pointX = typeof point.x === 'number' ? point.x : 0;\n\n            if (!mobileView) {\n                const availableLeft = pointX;\n                const availableRight = Math.max(0, mapWidth - pointX);\n                const fitsRight = availableRight >= estimatedCardWidth;\n                const fitsLeft = availableLeft >= estimatedCardWidth;\n                const sideOffset = estimatedCardWidth \/ 2 + sideGap;\n\n                if (fitsRight && !fitsLeft) {\n                    return {\n                        pixelOffset: new google.maps.Size(sideOffset, defaultVerticalOffset),\n                        side: 'right'\n                    };\n                }\n\n                if (fitsLeft && !fitsRight) {\n                    return {\n                        pixelOffset: new google.maps.Size(-sideOffset, defaultVerticalOffset),\n                        side: 'left'\n                    };\n                }\n\n                return availableRight >= availableLeft\n                    ? {\n                        pixelOffset: new google.maps.Size(sideOffset, defaultVerticalOffset),\n                        side: 'right'\n                    }\n                    : {\n                        pixelOffset: new google.maps.Size(-sideOffset, defaultVerticalOffset),\n                        side: 'left'\n                    };\n            }\n\n            return {\n                pixelOffset: new google.maps.Size(0, defaultVerticalOffset),\n                side: 'top'\n            };\n        }\n\n        function panMapForMarkerCard(marker, callback) {\n            if (!mapOverlayView || !marker || !marker.getPosition()) {\n                callback();\n                return;\n            }\n\n            const projection = mapOverlayView.getProjection();\n            if (!projection) {\n                callback();\n                return;\n            }\n\n            const mapDiv = map.getDiv();\n            const markerPoint = projection.fromLatLngToContainerPixel(marker.getPosition());\n            const center = map.getCenter();\n            const centerPoint = center ? projection.fromLatLngToContainerPixel(center) : null;\n            const { side } = getInfoWindowPlacement(marker);\n\n            if (!mapDiv || !markerPoint || !centerPoint) {\n                callback();\n                return;\n            }\n\n            const mapWidth = mapDiv.offsetWidth || 0;\n            const mapHeight = mapDiv.offsetHeight || 0;\n            const targetX = side === 'left'\n                ? mapWidth * 0.68\n                : side === 'right'\n                    ? mapWidth * 0.32\n                    : mapWidth * 0.5;\n            const targetY = isMobileViewport() ? mapHeight * 0.72 : mapHeight * 0.62;\n\n            const nextCenterPoint = new google.maps.Point(\n                centerPoint.x + (markerPoint.x - targetX),\n                centerPoint.y + (markerPoint.y - targetY)\n            );\n            const nextCenter = projection.fromContainerPixelToLatLng(nextCenterPoint);\n\n            if (!nextCenter) {\n                callback();\n                return;\n            }\n\n            google.maps.event.addListenerOnce(map, 'idle', callback);\n            map.panTo(nextCenter);\n        }\n\n        function compareByDistance(a, b) {\n            const da = typeof a.__tgwDistance === 'number' ? a.__tgwDistance : Number.POSITIVE_INFINITY;\n            const db = typeof b.__tgwDistance === 'number' ? b.__tgwDistance : Number.POSITIVE_INFINITY;\n            return da - db;\n        }\n\n        function updateStatusMessage(hasResults) {\n            if (!statusEl) return;\n\n            if (!selectedDate) {\n                statusEl.textContent = '';\n                statusEl.classList.remove('is-empty');\n                statusEl.style.display = 'none';\n                return;\n            }\n\n            statusEl.style.display = 'block';\n            const formattedDate = formatDateForDisplay(selectedDate);\n\n            if (unavailableWinery) {\n                statusEl.textContent = formatUnavailableStatus(unavailableWinery, formattedDate);\n                statusEl.classList.add('is-empty');\n                return;\n            }\n\n            if (hasResults) {\n                statusEl.textContent = formatStatusText(getExperienceTitleTemplate(), formattedDate);\n                statusEl.classList.remove('is-empty');\n            } else {\n                statusEl.textContent = formatStatusText(getExperienceEmptyTemplate(), formattedDate);\n                statusEl.classList.add('is-empty');\n            }\n        }\n\n        function getExperienceTitleTemplate() {\n            if (currentKindFilter === 'winebars') {\n                return t.experienceTitleWinebars || t.experienceTitle || '';\n            }\n            if (currentKindFilter === 'wineries') {\n                return t.experienceTitle || '';\n            }\n            return t.experienceTitleAll || t.experienceTitle || '';\n        }\n\n        function getExperienceEmptyTemplate() {\n            if (currentKindFilter === 'winebars') {\n                return t.experienceEmptyWinebars || t.experienceEmpty || '';\n            }\n            if (currentKindFilter === 'wineries') {\n                return t.experienceEmpty || '';\n            }\n            return t.experienceEmptyAll || t.experienceEmpty || '';\n        }\n        function formatUnavailableStatus(wineryName, dateLabel) {\n            const template = t.unavailableSpecific || '';\n            if (!template) {\n                return '';\n            }\n            return template\n                .replace('%1$s', wineryName)\n                .replace('%2$s', dateLabel || '');\n        }\n\n        function runSearchFromLocation(location) {\n            tgwDebug('runSearchFromLocation start', {\n                location,\n                hasMap: !!map,\n                radiusValue: getRadiusSelect() ? getRadiusSelect().value : null\n            });\n            lastLocation = location;\n            ensureSidebarVisible();\n            toggleResetButton(true);\n\n            if (!userMarker) {\n                userMarker = new google.maps.Marker({\n                    position: location,\n                    map,\n                    icon: {\n                        path: google.maps.SymbolPath.CIRCLE,\n                        scale: 7,\n                        fillColor: \"#4285F4\",\n                        fillOpacity: 1,\n                        strokeWeight: 2,\n                        strokeColor: \"#fff\"\n                    }\n                });\n            } else {\n                userMarker.setPosition(location);\n            }\n\n            const radiusSelectEl = getRadiusSelect();\n            const radiusKm = radiusSelectEl ? parseFloat(radiusSelectEl.value) : 100;\n            const radiusMeters = radiusKm * 1000;\n            tgwDebug('radius setup', { radiusKm, radiusMeters });\n\n            if (radiusCircle) radiusCircle.setMap(null);\n\n            radiusCircle = new google.maps.Circle({\n                map,\n                center: location,\n                radius: radiusMeters,\n                fillColor: \"#8fbaa2\",\n                fillOpacity: 0.1,\n                strokeColor: \"#d9d4cb\",\n                strokeOpacity: 0.7\n            });\n            tgwDebug('radius circle created', {\n                hasCircle: !!radiusCircle,\n                center: location\n            });\n\n            map.fitBounds(radiusCircle.getBounds());\n            tgwDebug('map fitBounds applied');\n\n            const decorated = allLocations.map(loc => {\n                const d = getDistanceFromLatLonInKm(\n                    location.lat || location.lat(),\n                    location.lng || location.lng(),\n                    parseFloat(loc.lat),\n                    parseFloat(loc.lng)\n                );\n                loc.__tgwDistance = Number.isFinite(d) ? d : null;\n                loc.__tgwNearby = Number.isFinite(d) ? d <= radiusKm : false;\n                return loc;\n            });\n\n            const listForDisplay = applyAvailabilityFilterToList(filterListByCurrentKind(decorated.slice()));\n            const availableCount = selectedDate ? countAvailableLocations(listForDisplay) : null;\n            tgwDebug('runSearchFromLocation results', {\n                totalLocations: allLocations.length,\n                visibleLocations: listForDisplay.length,\n                availableCount\n            });\n            updateStatusMessage(selectedDate ? availableCount > 0 : null);\n            renderSideCards(listForDisplay, location);\n            renderMarkers(listForDisplay);\n            tgwDebug('runSearchFromLocation complete');\n        }\n\n        function ensureSidebarVisible() {\n            const layout = document.getElementById('eva-map-layout');\n            const sidebar = document.getElementById('eva-map-list');\n            if (layout && sidebar) {\n                layout.classList.add('has-location');\n                sidebar.style.display = 'block';\n            }\n        }\n\n        function hideSidebar() {\n            if (!hasFilterControls()) {\n                return;\n            }\n            const layout = document.getElementById('eva-map-layout');\n            const sidebar = document.getElementById('eva-map-list');\n            if (layout && sidebar && !selectedDate) {\n                layout.classList.remove('has-location');\n                sidebar.style.display = 'none';\n            }\n        }\n\n        function toggleResetButton(shouldShow) {\n            const searchBar = getSearchBar();\n            const resetButton = getResetButton();\n            if (!resetButton) return;\n            resetButton.style.display = shouldShow ? 'inline-flex' : 'none';\n            if (searchBar) {\n                searchBar.classList.toggle('has-reset', shouldShow);\n            }\n        }\n\n        function clearLocationFlags() {\n            allLocations.forEach(loc => {\n                if (typeof loc.__tgwDistance !== 'undefined') {\n                    delete loc.__tgwDistance;\n                }\n                if (typeof loc.__tgwNearby !== 'undefined') {\n                    delete loc.__tgwNearby;\n                }\n            });\n        }\n\n        function resetMapFilters() {\n            lastLocation = null;\n            initialBrowserLocationApplied = false;\n            pendingInitialBrowserLocation = null;\n            initialBrowserLocationRequested = false;\n            initialBrowserLocationRetryCount = 0;\n            clearInitialBrowserLocationRetryTimer();\n            clearInitialBrowserLocationWatch();\n            if (userMarker) {\n                userMarker.setMap(null);\n                userMarker = null;\n            }\n            if (radiusCircle) {\n                radiusCircle.setMap(null);\n                radiusCircle = null;\n            }\n\n            clearLocationFlags();\n            clearPersistedLocationState();\n            clearLocationSearchParams();\n            setAddressInputValue('');\n            toggleResetButton(false);\n\n            const baseList = applyAvailabilityFilterToList(getLocationsForCurrentKind());\n            const availableCount = selectedDate ? countAvailableLocations(baseList) : null;\n\n            if (selectedDate) {\n                ensureSidebarVisible();\n                renderSideCards(baseList, null);\n            } else {\n                hideSidebar();\n            }\n\n            renderMarkers(baseList);\n            updateStatusMessage(selectedDate ? availableCount > 0 : null);\n            requestInitialBrowserLocation();\n        }\n\n        function getDistanceFromLatLonInKm(lat1, lon1, lat2, lon2) {\n            const R = 6371;\n            const dLat = (lat2 - lat1) * Math.PI \/ 180;\n            const dLon = (lon2 - lon1) * Math.PI \/ 180;\n            const a =\n                Math.sin(dLat\/2) * Math.sin(dLat\/2) +\n                Math.cos(lat1*Math.PI\/180) * Math.cos(lat2*Math.PI\/180) *\n                Math.sin(dLon\/2) * Math.sin(dLon\/2);\n            return R * (2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)));\n        }\n\n        function getTodayISODate() {\n            const now = new Date();\n            now.setMinutes(now.getMinutes() - now.getTimezoneOffset());\n            return now.toISOString().split('T')[0];\n        }\n\n        function updateDateParam(value) {\n            const url = new URL(window.location.href);\n            if (value && value >= getTodayISODate()) {\n                url.searchParams.set('date', value);\n            } else {\n                url.searchParams.delete('date');\n            }\n            window.location.href = url.toString();\n        }\n\n        function updateKindParam(value) {\n            const url = new URL(window.location.href);\n            if (value) {\n                url.searchParams.set('kind', value);\n            } else {\n                url.searchParams.delete('kind');\n            }\n            window.history.replaceState({}, '', url.toString());\n        }\n\n        function filterListByCurrentKind(list) {\n            if (!currentKindFilter) {\n                return list;\n            }\n            return list.filter(loc => loc && loc.type === currentKindFilter);\n        }\n\n        function applyAvailabilityFilterToList(list) {\n            const availableOnlyToggle = getAvailableOnlyToggle();\n            if (!availableOnlyToggle || !availableOnlyToggle.checked || !selectedDate) {\n                return list;\n            }\n            return list.filter(isLocationAvailable);\n        }\n\n        function refreshVisibleLocations() {\n            if (lastLocation) {\n                runSearchFromLocation(lastLocation);\n                return;\n            }\n\n            clearLocationFlags();\n            const base = getLocationsForCurrentKind();\n            const list = applyAvailabilityFilterToList(base);\n            const availableCount = selectedDate ? countAvailableLocations(list) : null;\n            updateStatusMessage(selectedDate ? availableCount > 0 : null);\n\n            if (selectedDate || !hasFilterControls()) {\n                ensureSidebarVisible();\n                renderSideCards(list, null);\n            } else {\n                hideSidebar();\n            }\n\n            renderMarkers(list);\n        }\n\n        function applyAvailabilityFilter() {\n            const base = getLocationsForCurrentKind();\n            const list = applyAvailabilityFilterToList(base);\n            const availableCount = selectedDate ? countAvailableLocations(list) : null;\n            updateStatusMessage(selectedDate ? availableCount > 0 : null);\n            if (selectedDate) {\n                ensureSidebarVisible();\n                renderSideCards(list, lastLocation || null);\n            } else {\n                hideSidebar();\n            }\n            renderMarkers(list);\n        }\n\n        function bindFilterControls() {\n            const kindSelect = getKindSelect();\n            tgwDebug('bindFilterControls', {\n                hasKindSelect: !!kindSelect,\n                hasResetButton: !!getResetButton(),\n                hasDateInput: !!getDateInput(),\n                hasAvailableOnly: !!getAvailableOnlyToggle(),\n                hasFilterButton: !!getFilterButton(),\n                hasRadiusSelect: !!getRadiusSelect(),\n                hasAddressInput: !!getAddressInput()\n            });\n            if (kindSelect && !kindSelect.__tgwBound) {\n                kindSelect.value = currentKindFilter || 'all';\n                kindSelect.setAttribute('aria-label', t.typeAriaLabel || 'Entity type');\n\n                Array.from(kindSelect.options).forEach(option => {\n                    if (option.value === 'all') {\n                        option.textContent = t.allLabel || 'All';\n                    } else if (option.value === 'wineries') {\n                        option.textContent = t.wineryLabel || 'Winery';\n                    } else if (option.value === 'winebars') {\n                        option.textContent = t.winebarLabel || 'Winebar';\n                    }\n                });\n\n                kindSelect.addEventListener('change', () => {\n                    currentKindFilter = normalizeKindValue(kindSelect.value);\n                    updateKindParam(currentKindFilter);\n                    refreshVisibleLocations();\n                });\n                kindSelect.__tgwBound = true;\n            }\n\n            const resetButton = getResetButton();\n            if (resetButton && !resetButton.__tgwBound) {\n                resetButton.addEventListener('click', () => {\n                    resetMapFilters();\n                });\n                resetButton.__tgwBound = true;\n            }\n\n            const dateInput = getDateInput();\n            if (dateInput && !dateInput.__tgwBound) {\n                const minDate = getTodayISODate();\n                if (minDate) dateInput.setAttribute('min', minDate);\n                if (selectedDate) dateInput.value = selectedDate;\n                dateInput.addEventListener('change', () => {\n                    updateDateParam(dateInput.value);\n                });\n                dateInput.__tgwBound = true;\n            }\n\n            const availableOnlyToggle = getAvailableOnlyToggle();\n            if (availableOnlyToggle && !availableOnlyToggle.__tgwBound) {\n                availableOnlyToggle.addEventListener('change', () => {\n                    applyAvailabilityFilter();\n                });\n                availableOnlyToggle.__tgwBound = true;\n            }\n\n            const filterButton = getFilterButton();\n            if (filterButton && !filterButton.__tgwBound) {\n                filterButton.addEventListener(\"click\", () => {\n                    tgwDebug('filter button clicked', { lastLocation });\n                    if (lastLocation) runSearchFromLocation(lastLocation);\n                });\n                filterButton.__tgwBound = true;\n            }\n\n            const radiusSelect = getRadiusSelect();\n            if (radiusSelect && !radiusSelect.__tgwBound) {\n                radiusSelect.addEventListener(\"change\", () => {\n                    tgwDebug('radius changed', { value: radiusSelect.value, lastLocation });\n                    if (lastLocation) runSearchFromLocation(lastLocation);\n                });\n                radiusSelect.__tgwBound = true;\n            }\n\n            const searchBar = getSearchBar();\n            if (searchBar) {\n                searchBar.classList.toggle(\n                    'has-reset',\n                    !!(getResetButton() && getResetButton().style.display !== 'none')\n                );\n            }\n        }\n\n        if (document.readyState === 'loading') {\n            document.addEventListener('DOMContentLoaded', requestInitialBrowserLocation, { once: true });\n            document.addEventListener('DOMContentLoaded', bindFilterControls);\n        } else {\n            requestInitialBrowserLocation();\n            bindFilterControls();\n        }\n    <\/script>\n\n    \n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"","protected":false},"author":11,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"class_list":["post-12270","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/tastegreekwines.com\/en\/wp-json\/wp\/v2\/pages\/12270","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tastegreekwines.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/tastegreekwines.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/tastegreekwines.com\/en\/wp-json\/wp\/v2\/users\/11"}],"replies":[{"embeddable":true,"href":"https:\/\/tastegreekwines.com\/en\/wp-json\/wp\/v2\/comments?post=12270"}],"version-history":[{"count":5,"href":"https:\/\/tastegreekwines.com\/en\/wp-json\/wp\/v2\/pages\/12270\/revisions"}],"predecessor-version":[{"id":12693,"href":"https:\/\/tastegreekwines.com\/en\/wp-json\/wp\/v2\/pages\/12270\/revisions\/12693"}],"wp:attachment":[{"href":"https:\/\/tastegreekwines.com\/en\/wp-json\/wp\/v2\/media?parent=12270"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}