{"id":30160,"date":"2026-01-24T09:46:25","date_gmt":"2026-01-24T08:46:25","guid":{"rendered":"https:\/\/www.tipicovillas.com\/cerca-disponibilita\/"},"modified":"2026-03-11T09:40:22","modified_gmt":"2026-03-11T08:40:22","slug":"verfuegbarkeit-pruefen","status":"publish","type":"page","link":"https:\/\/www.tipicovillas.com\/de\/verfuegbarkeit-pruefen\/","title":{"rendered":"Verfuegbarkeit Pruefen"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"30160\" class=\"elementor elementor-30160 elementor-19296\">\n\t\t\t\t<div class=\"elementor-element elementor-element-c8c431e e-flex e-con-boxed e-con e-parent\" data-id=\"c8c431e\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-ada4894 elementor-widget elementor-widget-homey_elementor_section_title\" data-id=\"ada4894\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"homey_elementor_section_title.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t            <div class=\"homey_section_title_wrap_elementor homey-module module-title section-title-module\">\n                                    <h2 class=\"homey_section_title\">Authentische Erlebnisse in Apulien \u2013 individuell f\u00fcr Sie gestaltet<\/h2>\n                \n                                    <p class=\"homey_section_subtitle sub-heading\">Neben dem Komfort unserer Villen gestalten wir individuelle Erlebnisse, die Ihren Aufenthalt bereichern. Von der Entdeckung der lokalen K\u00fcche bis hin zu Aktivit\u00e4ten in der Region \u2013 jedes Angebot ist darauf ausgerichtet, Ihnen Apulien auf authentische und unvergessliche Weise n\u00e4herzubringen<\/p>\n                            <\/div>\n            \t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-ff40d60 e-con-full e-flex e-con e-parent\" data-id=\"ff40d60\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-5138555 elementor-widget__width-inherit elementor-widget elementor-widget-html\" data-id=\"5138555\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t        <style>\n        \/* ============================================\n           KBI SEARCH WIDGET - ADVANCED\n           ============================================ *\/\n        .kbi-search-widget {\n            font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif;\n            background: #fff;\n            border-radius: 8px;\n            padding: 20px;\n            border: 1px solid #e0e0e0;\n        }\n        .kbi-search-widget * {\n            box-sizing: border-box;\n        }\n        \n        \/* Search Form *\/\n        .kbi-search-form {\n            display: flex;\n            gap: 12px;\n            flex-wrap: wrap;\n            align-items: flex-end;\n        }\n        .kbi-search-field {\n            flex: 1;\n            min-width: 150px;\n            position: relative;\n        }\n        .kbi-search-field label {\n            display: block;\n            font-size: 11px;\n            font-weight: 600;\n            color: #666;\n            margin-bottom: 6px;\n            text-transform: uppercase;\n            letter-spacing: 0.5px;\n        }\n        .kbi-search-field input[type=\"text\"],\n        .kbi-search-field input[type=\"number\"] {\n            width: 100%;\n            padding: 12px 14px;\n            border: 1px solid #ddd;\n            border-radius: 4px;\n            font-size: 14px;\n            background: #fff;\n            transition: border-color 0.2s;\n        }\n        .kbi-search-field input:focus {\n            outline: none;\n            border-color: #161C3E;\n        }\n        \n        \/* Dates field with clear button *\/\n        .kbi-dates-field {\n            position: relative;\n        }\n        .kbi-dates-field .kbi-dates-input {\n            padding-right: 36px;\n        }\n        .kbi-dates-clear {\n            position: absolute;\n            right: 10px;\n            top: 50%;\n            transform: translateY(25%);\n            background: none;\n            border: none;\n            color: #999;\n            cursor: pointer;\n            font-size: 14px;\n            padding: 4px;\n            line-height: 1;\n        }\n        .kbi-dates-clear:hover {\n            color: #333;\n        }\n        \n        \/* Autocomplete Dropdown *\/\n        .kbi-autocomplete-dropdown {\n            position: absolute;\n            top: 100%;\n            left: 0;\n            right: 0;\n            background: #fff;\n            border: 1px solid #ddd;\n            border-top: none;\n            border-radius: 0 0 4px 4px;\n            max-height: 200px;\n            overflow-y: auto;\n            z-index: 1000;\n            display: none;\n            box-shadow: 0 4px 12px rgba(0,0,0,0.1);\n        }\n        .kbi-autocomplete-dropdown.open {\n            display: block;\n        }\n        .kbi-autocomplete-item {\n            padding: 10px 14px;\n            cursor: pointer;\n            font-size: 14px;\n            border-bottom: 1px solid #f0f0f0;\n        }\n        .kbi-autocomplete-item:last-child {\n            border-bottom: none;\n        }\n        .kbi-autocomplete-item:hover,\n        .kbi-autocomplete-item.selected {\n            background: #f5f5f5;\n        }\n        .kbi-autocomplete-item.all-destinations {\n            font-weight: 500;\n            color: #161C3E;\n        }\n        \n        \/* Calendar Popup *\/\n        .kbi-calendar-popup {\n            position: absolute;\n            top: 100%;\n            left: 0;\n            background: #fff;\n            border: 2px solid #888;\n            border-radius: 8px;\n            padding: 20px;\n            z-index: 1000;\n            display: none;\n            box-shadow: 0 4px 20px rgba(0,0,0,0.2);\n            width: 100%;\n            left: 0;\n            right: 0;\n        }\n        .kbi-calendar-popup.open {\n            display: block;\n        }\n        .kbi-calendar-header {\n            display: flex;\n            justify-content: space-between;\n            align-items: center;\n            padding: 12px 0;\n            margin-bottom: 12px;\n            border-bottom: 2px solid #ddd;\n        }\n        .kbi-calendar-nav-btn {\n            width: 38px;\n            height: 38px;\n            border: 2px solid #888;\n            background: #fff;\n            border-radius: 6px;\n            cursor: pointer;\n            font-size: 20px;\n            font-weight: bold;\n            color: #333;\n            transition: all 0.2s;\n        }\n        .kbi-calendar-nav-btn:hover {\n            background: #161C3E;\n            border-color: #161C3E;\n            color: #fff;\n        }\n        .kbi-calendar-title {\n            font-size: 18px;\n            font-weight: 700;\n            color: #1a1a1a;\n        }\n        .kbi-calendar-hint {\n            text-align: center;\n            font-size: 13px;\n            font-weight: 500;\n            color: #555;\n            padding: 10px 0;\n            background: #f5f5f5;\n            border-radius: 6px;\n            margin-bottom: 14px;\n            border: 1px solid #ddd;\n        }\n        .kbi-calendar-weekdays {\n            display: grid;\n            grid-template-columns: repeat(7, 1fr);\n            gap: 4px;\n            margin-bottom: 10px;\n            padding-bottom: 10px;\n            border-bottom: 2px solid #ddd;\n        }\n        .kbi-calendar-weekdays span {\n            text-align: center;\n            font-size: 13px;\n            font-weight: 700;\n            color: #444;\n            padding: 8px 0;\n            text-transform: uppercase;\n        }\n        .kbi-calendar-days {\n            display: grid;\n            grid-template-columns: repeat(7, 1fr);\n            gap: 5px;\n        }\n        .kbi-cal-day {\n            height: 42px;\n            display: flex;\n            align-items: center;\n            justify-content: center;\n            font-size: 15px;\n            font-weight: 600;\n            border-radius: 6px;\n            cursor: pointer;\n            border: 2px solid #999;\n            background: #fff;\n            color: #1a1a1a;\n            transition: all 0.15s;\n        }\n        .kbi-cal-day.empty {\n            cursor: default;\n            border: none;\n            background: transparent;\n        }\n        .kbi-cal-day.past {\n            color: #aaa;\n            cursor: default;\n            border-color: #ddd;\n            background: #f5f5f5;\n        }\n        .kbi-cal-day.unavailable {\n            color: #999;\n            cursor: default;\n            border-color: #ddd;\n            background: #f0f0f0;\n            text-decoration: line-through;\n        }\n        .kbi-cal-day.available:hover {\n            border-color: #161C3E;\n            background: #161C3E;\n            color: #fff;\n        }\n        .kbi-cal-day.selected {\n            background: #161C3E;\n            color: #fff;\n            border-color: #161C3E;\n            font-weight: 700;\n        }\n        .kbi-cal-day.selected.checkin {\n            border-radius: 6px 0 0 6px;\n        }\n        .kbi-cal-day.selected.checkout {\n            border-radius: 0 6px 6px 0;\n        }\n        .kbi-cal-day.in-range {\n            background: rgba(22, 28, 62, 0.15);\n            border-color: rgba(22, 28, 62, 0.4);\n            color: #161C3E;\n            font-weight: 700;\n            border-radius: 0;\n        }\n        \n        \/* Guests Selector *\/\n        .kbi-guests-selector {\n            display: flex;\n            align-items: center;\n            border: 2px solid #888;\n            border-radius: 6px;\n            overflow: hidden;\n        }\n        .kbi-guests-btn {\n            width: 42px;\n            height: 40px;\n            border: none;\n            background: #f5f5f5;\n            cursor: pointer;\n            font-size: 16px;\n            color: #666;\n        }\n        .kbi-guests-btn:hover {\n            background: #161C3E;\n            color: #fff;\n        }\n        .kbi-guests-input {\n            flex: 1;\n            border: none !important;\n            text-align: center;\n            font-size: 14px;\n            padding: 10px 5px !important;\n        }\n        .kbi-guests-input:focus {\n            outline: none;\n        }\n        \n        \/* Search Button *\/\n        .kbi-search-submit-btn {\n            padding: 12px 28px;\n            background: #161C3E;\n            color: #fff;\n            border: none;\n            border-radius: 4px;\n            font-size: 14px;\n            font-weight: 600;\n            cursor: pointer;\n            transition: background 0.2s;\n            white-space: nowrap;\n        }\n        .kbi-search-submit-btn:hover {\n            background: #0d1229;\n        }\n        \n        \/* Loader *\/\n        .kbi-search-loader {\n            text-align: center;\n            padding: 40px;\n            color: #666;\n            font-size: 14px;\n        }\n        .kbi-spinner {\n            display: inline-block;\n            width: 20px;\n            height: 20px;\n            border: 2px solid #e0e0e0;\n            border-top-color: #161C3E;\n            border-radius: 50%;\n            animation: kbi-spin 0.8s linear infinite;\n            margin-right: 8px;\n            vertical-align: middle;\n        }\n        @keyframes kbi-spin {\n            to { transform: rotate(360deg); }\n        }\n        \n        \/* Results Container *\/\n        .kbi-search-results-container {\n            margin-top: 20px;\n            display: none;\n        }\n        .kbi-search-results-container.visible {\n            display: block;\n        }\n        \n        \/* Filters Bar *\/\n        .kbi-filters-bar {\n            display: flex;\n            gap: 10px;\n            flex-wrap: wrap;\n            padding: 12px 0;\n            border-bottom: 1px solid #eee;\n            margin-bottom: 16px;\n        }\n        .kbi-filter-btn {\n            padding: 8px 14px;\n            border: 1px solid #ddd;\n            border-radius: 20px;\n            background: #fff;\n            font-size: 13px;\n            cursor: pointer;\n            transition: all 0.2s;\n        }\n        .kbi-filter-btn:hover,\n        .kbi-filter-btn.active {\n            border-color: #161C3E;\n            background: #161C3E;\n            color: #fff;\n        }\n        .kbi-filter-dropdown {\n            position: relative;\n            display: inline-block;\n        }\n        .kbi-filter-dropdown-content {\n            display: none;\n            position: absolute;\n            top: 100%;\n            left: 0;\n            background: #fff;\n            border: 1px solid #ddd;\n            border-radius: 4px;\n            padding: 10px;\n            min-width: 150px;\n            z-index: 100;\n            box-shadow: 0 4px 12px rgba(0,0,0,0.1);\n        }\n        .kbi-filter-dropdown-content.open {\n            display: block;\n        }\n        .kbi-filter-option {\n            display: flex;\n            align-items: center;\n            padding: 6px 0;\n            font-size: 13px;\n            cursor: pointer;\n        }\n        .kbi-filter-option input {\n            margin-right: 8px;\n        }\n        \n        \/* Results Layout *\/\n        .kbi-results-layout {\n            display: flex;\n            gap: 20px;\n            align-items: flex-start;\n        }\n        .kbi-results-list {\n            flex: 1;\n            min-width: 0;\n        }\n        .kbi-results-map {\n            flex: 0 0 50%;\n            height: calc(100vh - 150px);\n            max-height: 700px;\n            min-height: 400px;\n            background: #f5f5f5;\n            border-radius: 8px;\n            position: sticky;\n            top: 100px;\n        }\n        \n        \/* Results Header *\/\n        .kbi-results-header {\n            display: flex;\n            justify-content: space-between;\n            align-items: center;\n            margin-bottom: 16px;\n        }\n        .kbi-results-count {\n            font-size: 14px;\n            color: #666;\n        }\n        .kbi-results-count strong {\n            color: #333;\n        }\n        .kbi-view-toggle {\n            display: flex;\n            gap: 4px;\n        }\n        .kbi-view-btn {\n            width: 32px;\n            height: 32px;\n            border: 1px solid #ddd;\n            background: #fff;\n            border-radius: 4px;\n            cursor: pointer;\n            font-size: 14px;\n        }\n        .kbi-view-btn.active {\n            background: #161C3E;\n            border-color: #161C3E;\n            color: #fff;\n        }\n        \n        \/* Result Cards *\/\n        .kbi-results-grid {\n            display: grid;\n            grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));\n            gap: 16px;\n        }\n        .kbi-results-list-view .kbi-results-grid {\n            grid-template-columns: 1fr;\n        }\n        .kbi-result-card {\n            background: #fff;\n            border: 1px solid #e0e0e0;\n            border-radius: 8px;\n            overflow: hidden;\n            transition: all 0.2s;\n        }\n        .kbi-result-card:hover {\n            border-color: #161C3E;\n            box-shadow: 0 4px 12px rgba(0,0,0,0.1);\n        }\n        .kbi-result-card a {\n            text-decoration: none;\n            color: inherit;\n            display: block;\n        }\n        .kbi-results-list-view .kbi-result-card a {\n            display: flex;\n        }\n        .kbi-result-image {\n            position: relative;\n            height: 180px;\n            background: #f0f0f0;\n        }\n        .kbi-results-list-view .kbi-result-image {\n            width: 280px;\n            flex-shrink: 0;\n        }\n        .kbi-result-image img {\n            width: 100%;\n            height: 100%;\n            object-fit: cover;\n        }\n        .kbi-result-price-badge {\n            position: absolute;\n            bottom: 10px;\n            right: 10px;\n            background: #161C3E;\n            color: #fff;\n            padding: 6px 12px;\n            border-radius: 4px;\n            font-weight: 600;\n            font-size: 14px;\n        }\n        .kbi-result-content {\n            padding: 14px;\n            flex: 1;\n        }\n        .kbi-result-title {\n            font-size: 16px;\n            font-weight: 600;\n            margin: 0 0 6px;\n            color: #222;\n        }\n        .kbi-result-location {\n            font-size: 13px;\n            color: #666;\n            margin-bottom: 8px;\n        }\n        .kbi-result-features {\n            display: flex;\n            gap: 12px;\n            font-size: 12px;\n            color: #888;\n            margin-bottom: 10px;\n        }\n        .kbi-result-amenities {\n            display: flex;\n            gap: 6px;\n            flex-wrap: wrap;\n            margin-bottom: 10px;\n        }\n        .kbi-amenity-tag {\n            font-size: 11px;\n            padding: 3px 8px;\n            background: #f5f5f5;\n            border-radius: 3px;\n            color: #666;\n        }\n        .kbi-result-footer {\n            display: flex;\n            justify-content: space-between;\n            align-items: center;\n            padding-top: 10px;\n            border-top: 1px solid #eee;\n        }\n        .kbi-result-total {\n            font-size: 13px;\n            color: #666;\n        }\n        .kbi-result-total-price {\n            font-size: 18px;\n            font-weight: 600;\n            color: #161C3E;\n        }\n        \n        \/* Leaflet Map Price Markers (Airbnb style) *\/\n        .kbi-price-marker {\n            background: transparent !important;\n            border: none !important;\n        }\n        .kbi-marker-price {\n            background: #fff;\n            padding: 6px 10px;\n            border-radius: 20px;\n            font-weight: 600;\n            font-size: 13px;\n            box-shadow: 0 2px 8px rgba(0,0,0,0.2);\n            cursor: pointer;\n            transition: all 0.2s;\n            border: 2px solid #fff;\n            white-space: nowrap;\n            text-align: center;\n            color: #161C3E;\n        }\n        .kbi-marker-price:hover,\n        .kbi-marker-hover .kbi-marker-price {\n            background: #161C3E;\n            color: #fff;\n            transform: scale(1.1);\n            border-color: #161C3E;\n        }\n        .kbi-map-popup {\n            min-width: 200px;\n        }\n        .kbi-map-popup img {\n            width: 100%;\n            height: 100px;\n            object-fit: cover;\n            border-radius: 4px;\n            margin-bottom: 8px;\n        }\n        \/* Fix Leaflet popup *\/\n        .leaflet-popup-content-wrapper {\n            border-radius: 8px;\n        }\n        .leaflet-popup-content {\n            margin: 10px;\n        }\n        \n        \/* No Results *\/\n        .kbi-no-results {\n            text-align: center;\n            padding: 60px 20px;\n            color: #666;\n        }\n        .kbi-no-results-icon {\n            font-size: 48px;\n            margin-bottom: 16px;\n            opacity: 0.5;\n        }\n        \n        \/* Responsive *\/\n        @media (max-width: 900px) {\n            .kbi-results-layout {\n                flex-direction: column-reverse;\n            }\n            .kbi-results-list {\n                width: 100%;\n            }\n            .kbi-results-map {\n                flex: none;\n                width: 100%;\n                height: 350px;\n                position: relative;\n                top: 0;\n                margin-bottom: 20px;\n            }\n        }\n        @media (max-width: 600px) {\n            .kbi-search-form {\n                flex-direction: column;\n            }\n            .kbi-search-field {\n                width: 100%;\n            }\n            .kbi-search-submit-btn {\n                width: 100%;\n            }\n            .kbi-results-grid {\n                grid-template-columns: 1fr;\n            }\n            .kbi-results-map {\n                height: 300px;\n            }\n        }\n        <\/style>\n        \n        <div id=\"kbi-search-6adacd0a6b6ea\" class=\"kbi-search-widget\">\n            <!-- Search Form -->\n            <div class=\"kbi-search-form\">\n                <!-- Destination with Autocomplete -->\n                <div class=\"kbi-search-field kbi-destination-field\">\n                    <label>Reiseziel<\/label>\n                    <input type=\"text\" \n                           class=\"kbi-destination-input\" \n                           placeholder=\"Wohin m\u00f6chten Sie fahren?\"\n                           autocomplete=\"off\">\n                    <input type=\"hidden\" class=\"kbi-destination-value\" value=\"\">\n                    <div class=\"kbi-autocomplete-dropdown\"><\/div>\n                <\/div>\n                \n                <!-- Date Range with Single Calendar -->\n                <div class=\"kbi-search-field kbi-dates-field\">\n                    <label>Daten<\/label>\n                    <input type=\"text\" \n                           class=\"kbi-dates-input\" \n                           placeholder=\"Termine hinzuf\u00fcgen\"\n                           readonly>\n                    <input type=\"hidden\" class=\"kbi-checkin-value\" value=\"\">\n                    <input type=\"hidden\" class=\"kbi-checkout-value\" value=\"\">\n                    <button type=\"button\" class=\"kbi-dates-clear\" style=\"display:none;\">\u2715<\/button>\n                    <div class=\"kbi-calendar-popup kbi-range-calendar\"><\/div>\n                <\/div>\n                \n                <!-- Guests -->\n                <div class=\"kbi-search-field kbi-guests-field\">\n                    <label>G\u00e4ste<\/label>\n                    <div class=\"kbi-guests-selector\">\n                        <button type=\"button\" class=\"kbi-guests-btn kbi-guests-minus\">\u2212<\/button>\n                        <input type=\"number\" class=\"kbi-guests-input\" value=\"2\" min=\"1\" max=\"20\" readonly>\n                        <button type=\"button\" class=\"kbi-guests-btn kbi-guests-plus\">+<\/button>\n                    <\/div>\n                <\/div>\n                \n                <!-- Submit -->\n                <div class=\"kbi-search-field\" style=\"flex: 0 0 auto;\">\n                    <label>&nbsp;<\/label>\n                    <button type=\"button\" class=\"kbi-search-submit-btn\">\n                        Verf\u00fcgbarkeit pr\u00fcfen                    <\/button>\n                <\/div>\n            <\/div>\n            \n            <!-- Loader -->\n            <div class=\"kbi-search-loader\" style=\"display: none;\">\n                <span class=\"kbi-spinner\"><\/span> Laufende Forschung...            <\/div>\n            \n            <!-- Results Container -->\n            <div class=\"kbi-search-results-container\">\n                <!-- Filters -->\n                <div class=\"kbi-filters-bar\">\n                    <div class=\"kbi-filter-dropdown\">\n                        <button type=\"button\" class=\"kbi-filter-btn\" data-filter=\"bedrooms\">Bedrooms<\/button>\n                        <div class=\"kbi-filter-dropdown-content\">\n                            <label class=\"kbi-filter-option\"><input type=\"radio\" name=\"bedrooms\" value=\"\" checked> Alle<\/label>\n                            <label class=\"kbi-filter-option\"><input type=\"radio\" name=\"bedrooms\" value=\"1\"> 1+<\/label>\n                            <label class=\"kbi-filter-option\"><input type=\"radio\" name=\"bedrooms\" value=\"2\"> 2+<\/label>\n                            <label class=\"kbi-filter-option\"><input type=\"radio\" name=\"bedrooms\" value=\"3\"> 3+<\/label>\n                            <label class=\"kbi-filter-option\"><input type=\"radio\" name=\"bedrooms\" value=\"4\"> 4+<\/label>\n                        <\/div>\n                    <\/div>\n                    <div class=\"kbi-filter-dropdown\">\n                        <button type=\"button\" class=\"kbi-filter-btn\" data-filter=\"bathrooms\">Bathrooms<\/button>\n                        <div class=\"kbi-filter-dropdown-content\">\n                            <label class=\"kbi-filter-option\"><input type=\"radio\" name=\"bathrooms\" value=\"\" checked> Alle<\/label>\n                            <label class=\"kbi-filter-option\"><input type=\"radio\" name=\"bathrooms\" value=\"1\"> 1+<\/label>\n                            <label class=\"kbi-filter-option\"><input type=\"radio\" name=\"bathrooms\" value=\"2\"> 2+<\/label>\n                            <label class=\"kbi-filter-option\"><input type=\"radio\" name=\"bathrooms\" value=\"3\"> 3+<\/label>\n                        <\/div>\n                    <\/div>\n                    <div class=\"kbi-filter-dropdown\">\n                        <button type=\"button\" class=\"kbi-filter-btn\" data-filter=\"amenities\">Amenities<\/button>\n                        <div class=\"kbi-filter-dropdown-content kbi-amenities-filter\">\n                            <label class=\"kbi-filter-option\"><input type=\"checkbox\" name=\"amenity\" value=\"wifi\"> WiFi<\/label>\n                            <label class=\"kbi-filter-option\"><input type=\"checkbox\" name=\"amenity\" value=\"pool\"> Pool<\/label>\n                            <label class=\"kbi-filter-option\"><input type=\"checkbox\" name=\"amenity\" value=\"parking\"> Parking<\/label>\n                            <label class=\"kbi-filter-option\"><input type=\"checkbox\" name=\"amenity\" value=\"ac\"> Air Conditioning<\/label>\n                            <label class=\"kbi-filter-option\"><input type=\"checkbox\" name=\"amenity\" value=\"kitchen\"> Kitchen<\/label>\n                            <label class=\"kbi-filter-option\"><input type=\"checkbox\" name=\"amenity\" value=\"washing\"> Washing Machine<\/label>\n                            <label class=\"kbi-filter-option\"><input type=\"checkbox\" name=\"amenity\" value=\"garden\"> Garden<\/label>\n                            <label class=\"kbi-filter-option\"><input type=\"checkbox\" name=\"amenity\" value=\"bbq\"> Barbecue<\/label>\n                        <\/div>\n                        <\/div>\n                        <button type=\"button\" class=\"kbi-filter-btn kbi-filter-reset\" style=\"display:none;\">Remove filters<\/button>\n                <\/div>\n                \n                <!-- Results Header -->\n                <div class=\"kbi-results-header\">\n                    <div class=\"kbi-results-count\"><\/div>\n                    <div class=\"kbi-view-toggle\">\n                        <button type=\"button\" class=\"kbi-view-btn\" data-view=\"grid\" title=\"Griglia\">\u25a6<\/button>\n                        <button type=\"button\" class=\"kbi-view-btn active\" data-view=\"map\" title=\"Mappa\">\u2316<\/button>\n                    <\/div>\n                <\/div>\n                \n                <!-- Results Layout -->\n                <div class=\"kbi-results-layout\">\n                    <div class=\"kbi-results-list\">\n                        <div class=\"kbi-results-grid\"><\/div>\n                    <\/div>\n                    <div class=\"kbi-results-map\">\n                        <div id=\"kbi-search-6adacd0a6b6ea-map\" style=\"width:100%;height:100%;\"><\/div>\n                    <\/div>\n                <\/div>\n            <\/div>\n            \n            <!-- No Results -->\n            <div class=\"kbi-no-results\" style=\"display: none;\">\n                <div class=\"kbi-no-results-icon\">\ud83c\udfe0<\/div>\n                <p>No properties available for the selected criteria.<\/p>\n                <p style=\"font-size: 13px; color: #999;\">Try changing the dates or destination.<\/p>\n            <\/div>\n        <\/div>\n        \n        <script>\n        (function() {\n            var widget = document.getElementById('kbi-search-6adacd0a6b6ea');\n            if (!widget) return;\n            \n            \/\/ Data\n            var destinations = [{\"id\":\"1140\",\"name\":\"Carovigno\",\"slug\":\"carovigno\"},{\"id\":\"859\",\"name\":\"Ostuni\",\"slug\":\"ostuni\"},{\"id\":0,\"name\":\"Puglia\",\"slug\":\"puglia\"},{\"id\":\"1132\",\"name\":\"San Michele Salentino\",\"slug\":\"san-michele-salentino\"}];\n            var months = [\"Gennaio\",\"Febbraio\",\"Marzo\",\"Aprile\",\"Maggio\",\"Giugno\",\"Luglio\",\"Agosto\",\"Settembre\",\"Ottobre\",\"Novembre\",\"Dicembre\"];\n            var weekdays = [\"Lun\",\"Mar\",\"Mer\",\"Gio\",\"Ven\",\"Sab\",\"Dom\"];\n            var allListings = [];\n            var filteredListings = [];\n            var map = null;\n            var markers = [];\n            \n            \/\/ Elements\n            var destInput = widget.querySelector('.kbi-destination-input');\n            var destValue = widget.querySelector('.kbi-destination-value');\n            var destDropdown = widget.querySelector('.kbi-autocomplete-dropdown');\n            var datesInput = widget.querySelector('.kbi-dates-input');\n            var datesClear = widget.querySelector('.kbi-dates-clear');\n            var checkinValue = widget.querySelector('.kbi-checkin-value');\n            var checkoutValue = widget.querySelector('.kbi-checkout-value');\n            var rangeCalendar = widget.querySelector('.kbi-range-calendar');\n            var guestsInput = widget.querySelector('.kbi-guests-input');\n            var submitBtn = widget.querySelector('.kbi-search-submit-btn');\n            var loader = widget.querySelector('.kbi-search-loader');\n            var resultsContainer = widget.querySelector('.kbi-search-results-container');\n            var resultsGrid = widget.querySelector('.kbi-results-grid');\n            var resultsCount = widget.querySelector('.kbi-results-count');\n            var noResults = widget.querySelector('.kbi-no-results');\n            var resultsMap = widget.querySelector('.kbi-results-map');\n            var resultsList = widget.querySelector('.kbi-results-list');\n            \n            \/\/ Calendar state\n            var calendarMonth = new Date();\n            var selectingCheckout = false; \/\/ false = selecting checkin, true = selecting checkout\n            \n            \/\/ Initialize\n            initDestinationAutocomplete();\n            initRangeCalendar();\n            initGuestsSelector();\n            initFilters();\n            initViewToggle();\n            initSubmit();\n            \n            \/\/ ==========================================\n            \/\/ DESTINATION AUTOCOMPLETE\n            \/\/ ==========================================\n            function initDestinationAutocomplete() {\n                \/\/ Build dropdown\n                renderDestinationDropdown('');\n                \n                destInput.addEventListener('focus', function() {\n                    renderDestinationDropdown(this.value);\n                    destDropdown.classList.add('open');\n                });\n                \n                destInput.addEventListener('input', function() {\n                    renderDestinationDropdown(this.value);\n                    destDropdown.classList.add('open');\n                });\n                \n                document.addEventListener('click', function(e) {\n                    if (!e.target.closest('.kbi-destination-field')) {\n                        destDropdown.classList.remove('open');\n                    }\n                });\n            }\n            \n            function renderDestinationDropdown(filter) {\n                var html = '<div class=\"kbi-autocomplete-item all-destinations\" data-value=\"\" data-name=\"Tutte le destinazioni\">Tutte le destinazioni<\/div>';\n                \n                var filtered = destinations.filter(function(d) {\n                    return !filter || d.name.toLowerCase().indexOf(filter.toLowerCase()) > -1;\n                });\n                \n                filtered.forEach(function(d) {\n                    html += '<div class=\"kbi-autocomplete-item\" data-value=\"' + d.slug + '\" data-name=\"' + d.name + '\">' + d.name + '<\/div>';\n                });\n                \n                destDropdown.innerHTML = html;\n                \n                \/\/ Bind clicks\n                destDropdown.querySelectorAll('.kbi-autocomplete-item').forEach(function(item) {\n                    item.addEventListener('click', function() {\n                        destInput.value = this.dataset.name;\n                        destValue.value = this.dataset.value;\n                        destDropdown.classList.remove('open');\n                    });\n                });\n            }\n            \n            \/\/ ==========================================\n            \/\/ RANGE CALENDAR (Single calendar for both dates)\n            \/\/ ==========================================\n            function initRangeCalendar() {\n                datesInput.addEventListener('click', function() {\n                    calendarMonth = checkinValue.value ? new Date(checkinValue.value) : new Date();\n                    selectingCheckout = false;\n                    renderRangeCalendar();\n                    rangeCalendar.classList.add('open');\n                });\n                \n                datesClear.addEventListener('click', function(e) {\n                    e.stopPropagation();\n                    checkinValue.value = '';\n                    checkoutValue.value = '';\n                    datesInput.value = '';\n                    datesClear.style.display = 'none';\n                    selectingCheckout = false;\n                });\n                \n                document.addEventListener('click', function(e) {\n                    if (!e.target.closest('.kbi-dates-field')) {\n                        rangeCalendar.classList.remove('open');\n                    }\n                });\n            }\n            \n            function renderRangeCalendar() {\n                var year = calendarMonth.getFullYear();\n                var month = calendarMonth.getMonth();\n                var today = new Date();\n                today.setHours(0,0,0,0);\n                \n                var checkinDate = checkinValue.value ? new Date(checkinValue.value) : null;\n                var checkoutDate = checkoutValue.value ? new Date(checkoutValue.value) : null;\n                \n                var html = '<div class=\"kbi-calendar-header\">';\n                html += '<button type=\"button\" class=\"kbi-calendar-nav-btn kbi-cal-prev\">\u2039<\/button>';\n                html += '<span class=\"kbi-calendar-title\">' + months[month] + ' ' + year + '<\/span>';\n                html += '<button type=\"button\" class=\"kbi-calendar-nav-btn kbi-cal-next\">\u203a<\/button>';\n                html += '<\/div>';\n                \n                \/\/ Selection hint\n                html += '<div class=\"kbi-calendar-hint\">';\n                if (!checkinDate) {\n                    html += 'Seleziona data di arrivo';\n                } else if (!checkoutDate) {\n                    html += 'Seleziona data di partenza';\n                } else {\n                    html += formatDisplayDate(checkinValue.value) + ' \u2192 ' + formatDisplayDate(checkoutValue.value);\n                }\n                html += '<\/div>';\n                \n                html += '<div class=\"kbi-calendar-weekdays\">';\n                weekdays.forEach(function(d) { html += '<span>' + d + '<\/span>'; });\n                html += '<\/div>';\n                \n                html += '<div class=\"kbi-calendar-days\">';\n                \n                var firstDay = new Date(year, month, 1);\n                var lastDay = new Date(year, month + 1, 0);\n                var startDay = (firstDay.getDay() + 6) % 7;\n                \n                for (var i = 0; i < startDay; i++) {\n                    html += '<div class=\"kbi-cal-day empty\"><\/div>';\n                }\n                \n                for (var d = 1; d <= lastDay.getDate(); d++) {\n                    var date = new Date(year, month, d);\n                    date.setHours(12,0,0,0);\n                    var dateStr = formatDate(date);\n                    var isPast = date < today;\n                    var isCheckin = checkinDate && dateStr === formatDate(checkinDate);\n                    var isCheckout = checkoutDate && dateStr === formatDate(checkoutDate);\n                    var inRange = checkinDate && checkoutDate && date > checkinDate && date < checkoutDate;\n                    \n                    var classes = ['kbi-cal-day'];\n                    if (isPast) classes.push('past');\n                    else classes.push('available');\n                    if (isCheckin) classes.push('selected checkin');\n                    if (isCheckout) classes.push('selected checkout');\n                    if (inRange) classes.push('in-range');\n                    \n                    html += '<div class=\"' + classes.join(' ') + '\" data-date=\"' + dateStr + '\">' + d + '<\/div>';\n                }\n                \n                html += '<\/div>';\n                \n                rangeCalendar.innerHTML = html;\n                \n                \/\/ Bind nav\n                rangeCalendar.querySelector('.kbi-cal-prev').addEventListener('click', function(e) {\n                    e.stopPropagation();\n                    calendarMonth.setMonth(calendarMonth.getMonth() - 1);\n                    renderRangeCalendar();\n                });\n                \n                rangeCalendar.querySelector('.kbi-cal-next').addEventListener('click', function(e) {\n                    e.stopPropagation();\n                    calendarMonth.setMonth(calendarMonth.getMonth() + 1);\n                    renderRangeCalendar();\n                });\n                \n                \/\/ Bind day clicks\n                rangeCalendar.querySelectorAll('.kbi-cal-day.available').forEach(function(day) {\n                    day.addEventListener('click', function(e) {\n                        e.stopPropagation();\n                        var dateStr = this.dataset.date;\n                        \n                        if (!selectingCheckout) {\n                            \/\/ First click: set checkin\n                            checkinValue.value = dateStr;\n                            checkoutValue.value = '';\n                            selectingCheckout = true;\n                            renderRangeCalendar();\n                        } else {\n                            \/\/ Second click: set checkout\n                            if (dateStr <= checkinValue.value) {\n                                \/\/ Clicked before checkin, reset and use as new checkin\n                                checkinValue.value = dateStr;\n                                checkoutValue.value = '';\n                                renderRangeCalendar();\n                            } else {\n                                checkoutValue.value = dateStr;\n                                selectingCheckout = false;\n                                updateDatesDisplay();\n                                rangeCalendar.classList.remove('open');\n                            }\n                        }\n                    });\n                });\n            }\n            \n            function updateDatesDisplay() {\n                if (checkinValue.value && checkoutValue.value) {\n                    datesInput.value = formatDisplayDate(checkinValue.value) + ' - ' + formatDisplayDate(checkoutValue.value);\n                    datesClear.style.display = 'block';\n                } else if (checkinValue.value) {\n                    datesInput.value = formatDisplayDate(checkinValue.value) + ' - ...';\n                    datesClear.style.display = 'block';\n                } else {\n                    datesInput.value = '';\n                    datesClear.style.display = 'none';\n                }\n            }\n            \n            \/\/ ==========================================\n            \/\/ GUESTS SELECTOR\n            \/\/ ==========================================\n            function initGuestsSelector() {\n                widget.querySelector('.kbi-guests-minus').addEventListener('click', function() {\n                    var val = parseInt(guestsInput.value);\n                    if (val > 1) guestsInput.value = val - 1;\n                });\n                \n                widget.querySelector('.kbi-guests-plus').addEventListener('click', function() {\n                    var val = parseInt(guestsInput.value);\n                    var max = parseInt(guestsInput.max);\n                    if (val < max) guestsInput.value = val + 1;\n                });\n            }\n            \n            \/\/ ==========================================\n            \/\/ FILTERS\n            \/\/ ==========================================\n            function initFilters() {\n                \/\/ Toggle filter dropdowns\n                widget.querySelectorAll('.kbi-filter-btn[data-filter]').forEach(function(btn) {\n                    btn.addEventListener('click', function() {\n                        var dropdown = this.nextElementSibling;\n                        var isOpen = dropdown.classList.contains('open');\n                        \n                        \/\/ Close all\n                        widget.querySelectorAll('.kbi-filter-dropdown-content').forEach(function(d) {\n                            d.classList.remove('open');\n                        });\n                        \n                        if (!isOpen) dropdown.classList.add('open');\n                    });\n                });\n                \n                \/\/ Filter change - radio buttons\n                widget.querySelectorAll('.kbi-filter-option input[type=\"radio\"]').forEach(function(input) {\n                    input.addEventListener('change', function() {\n                        applyFilters();\n                        this.closest('.kbi-filter-dropdown-content').classList.remove('open');\n                    });\n                });\n                \n                \/\/ Filter change - checkboxes (amenities)\n                widget.querySelectorAll('.kbi-filter-option input[type=\"checkbox\"]').forEach(function(input) {\n                    input.addEventListener('change', function() {\n                        applyFilters();\n                    });\n                });\n                \n                \/\/ Reset filters\n                widget.querySelector('.kbi-filter-reset').addEventListener('click', function() {\n                    widget.querySelectorAll('.kbi-filter-option input[type=\"radio\"]').forEach(function(input) {\n                        input.checked = input.value === '';\n                    });\n                    widget.querySelectorAll('.kbi-filter-option input[type=\"checkbox\"]').forEach(function(input) {\n                        input.checked = false;\n                    });\n                    applyFilters();\n                });\n                \n                \/\/ Close dropdowns on outside click\n                document.addEventListener('click', function(e) {\n                    if (!e.target.closest('.kbi-filter-dropdown')) {\n                        widget.querySelectorAll('.kbi-filter-dropdown-content').forEach(function(d) {\n                            d.classList.remove('open');\n                        });\n                    }\n                });\n            }\n            \n            function applyFilters() {\n                var bedroomsMin = widget.querySelector('input[name=\"bedrooms\"]:checked')?.value || '';\n                var bathroomsMin = widget.querySelector('input[name=\"bathrooms\"]:checked')?.value || '';\n                \n                \/\/ Get selected amenities\n                var selectedAmenities = [];\n                widget.querySelectorAll('input[name=\"amenity\"]:checked').forEach(function(input) {\n                    selectedAmenities.push(input.value);\n                });\n                \n                filteredListings = allListings.filter(function(listing) {\n                    if (bedroomsMin && listing.bedrooms < parseInt(bedroomsMin)) return false;\n                    if (bathroomsMin && listing.bathrooms < parseInt(bathroomsMin)) return false;\n                    \n                    \/\/ Check amenities\n                    if (selectedAmenities.length > 0 && listing.amenities) {\n                        var listingAmenities = listing.amenities.map(function(a) { return a.toLowerCase(); });\n                        for (var i = 0; i < selectedAmenities.length; i++) {\n                            var amenity = selectedAmenities[i];\n                            var found = listingAmenities.some(function(la) {\n                                return la.indexOf(amenity) > -1 || \n                                       (amenity === 'wifi' && la.indexOf('wi-fi') > -1) ||\n                                       (amenity === 'pool' && la.indexOf('piscina') > -1) ||\n                                       (amenity === 'parking' && (la.indexOf('parcheggio') > -1 || la.indexOf('garage') > -1)) ||\n                                       (amenity === 'ac' && (la.indexOf('aria condizionata') > -1 || la.indexOf('climatizzatore') > -1)) ||\n                                       (amenity === 'kitchen' && la.indexOf('cucina') > -1) ||\n                                       (amenity === 'washing' && la.indexOf('lavatrice') > -1) ||\n                                       (amenity === 'garden' && la.indexOf('giardino') > -1) ||\n                                       (amenity === 'bbq' && la.indexOf('barbecue') > -1);\n                            });\n                            if (!found) return false;\n                        }\n                    }\n                    \n                    return true;\n                });\n                \n                \/\/ Show\/hide reset button\n                var resetBtn = widget.querySelector('.kbi-filter-reset');\n                if (bedroomsMin || bathroomsMin || selectedAmenities.length > 0) {\n                    resetBtn.style.display = 'inline-block';\n                } else {\n                    resetBtn.style.display = 'none';\n                }\n                \n                renderResults();\n            }\n            \n            \/\/ ==========================================\n            \/\/ VIEW TOGGLE\n            \/\/ ==========================================\n            function initViewToggle() {\n                widget.querySelectorAll('.kbi-view-btn').forEach(function(btn) {\n                    btn.addEventListener('click', function() {\n                        widget.querySelectorAll('.kbi-view-btn').forEach(function(b) { b.classList.remove('active'); });\n                        this.classList.add('active');\n                        \n                        var view = this.dataset.view;\n                        \n                        if (view === 'map') {\n                            resultsMap.style.display = 'block';\n                            initMap();\n                        } else {\n                            resultsMap.style.display = 'none';\n                        }\n                    });\n                });\n            }\n            \n            \/\/ ==========================================\n            \/\/ SEARCH\n            \/\/ ==========================================\n            function initSubmit() {\n                submitBtn.addEventListener('click', doSearch);\n            }\n            \n            function doSearch() {\n                var destination = destValue.value;\n                var checkin = checkinValue.value;\n                var checkout = checkoutValue.value;\n                var guests = guestsInput.value;\n                \n                \/\/ Le date sono ora opzionali\n                var hasDates = checkin && checkout;\n                \n                console.log('KBI Search:', {destination: destination, checkin: checkin, checkout: checkout, guests: guests, hasDates: hasDates});\n                \n                loader.style.display = 'block';\n                resultsContainer.classList.remove('visible');\n                noResults.style.display = 'none';\n                \n                var formData = new FormData();\n                formData.append('action', 'kbi_search_available');\n                formData.append('destination', destination);\n                formData.append('checkin', checkin || '');\n                formData.append('checkout', checkout || '');\n                formData.append('guests', guests);\n                formData.append('no_dates', hasDates ? '0' : '1');\n                \n                fetch('https:\/\/www.tipicovillas.com\/wp-admin\/admin-ajax.php', {\n                    method: 'POST',\n                    body: formData\n                })\n                .then(function(r) { return r.json(); })\n                .then(function(data) {\n                    console.log('KBI Search Response:', data);\n                    loader.style.display = 'none';\n                    \n                    if (data.success && data.data && data.data.listings && data.data.listings.length > 0) {\n                        allListings = data.data.listings;\n                        filteredListings = allListings.slice();\n                        console.log('KBI Found', allListings.length, 'listings');\n                        renderResults();\n                        resultsContainer.classList.add('visible');\n                        \/\/ Inizializza mappa se vista mappa \u00e8 attiva\n                        if (widget.querySelector('.kbi-view-btn[data-view=\"map\"].active')) {\n                            initMap();\n                        }\n                    } else {\n                        console.log('KBI No results or error:', data);\n                        noResults.style.display = 'block';\n                    }\n                })\n                .catch(function(err) {\n                    loader.style.display = 'none';\n                    console.error('KBI Search error:', err);\n                    noResults.style.display = 'block';\n                });\n            }\n            \n            \/\/ ==========================================\n            \/\/ RENDER RESULTS\n            \/\/ ==========================================\n            function renderResults() {\n                resultsCount.innerHTML = '<strong>' + filteredListings.length + '<\/strong> strutture trovate';\n                \n                var hasDates = checkinValue.value && checkoutValue.value;\n                \n                var html = '';\n                filteredListings.forEach(function(listing) {\n                    var url = listing.url;\n                    if (hasDates) {\n                        url += '?checkin=' + checkinValue.value + '&checkout=' + checkoutValue.value + '&guests=' + guestsInput.value;\n                    }\n                    \n                    html += '<div class=\"kbi-result-card\" data-id=\"' + listing.id + '\" data-lat=\"' + (listing.lat || '') + '\" data-lng=\"' + (listing.lng || '') + '\">';\n                    html += '<a href=\"' + url + '\">';\n                    html += '<div class=\"kbi-result-image\">';\n                    if (listing.thumbnail) {\n                        html += '<img decoding=\"async\" src=\"' + listing.thumbnail + '\" alt=\"\" loading=\"lazy\">';\n                    }\n                    html += '<div class=\"kbi-result-price-badge\">\u20ac' + Math.round(listing.price_per_night) + '\/notte<\/div>';\n                    html += '<\/div>';\n                    html += '<div class=\"kbi-result-content\">';\n                    html += '<h3 class=\"kbi-result-title\">' + listing.title + '<\/h3>';\n                    if (listing.city) {\n                        html += '<div class=\"kbi-result-location\">' + listing.city + '<\/div>';\n                    }\n                    html += '<div class=\"kbi-result-features\">';\n                    if (listing.bedrooms) html += '<span>' + listing.bedrooms + ' camere<\/span>';\n                    if (listing.bathrooms) html += '<span>' + listing.bathrooms + ' bagni<\/span>';\n                    if (listing.max_guests) html += '<span>' + listing.max_guests + ' ospiti<\/span>';\n                    html += '<\/div>';\n                    \/\/ Mostra totale solo se ci sono date\n                    if (hasDates && listing.grand_total > 0) {\n                        html += '<div class=\"kbi-result-footer\">';\n                        html += '<span class=\"kbi-result-total\">Totale ' + listing.nights + ' notti<\/span>';\n                        html += '<span class=\"kbi-result-total-price\">\u20ac' + Math.round(listing.grand_total) + '<\/span>';\n                        html += '<\/div>';\n                    }\n                    html += '<\/div>';\n                    html += '<\/a>';\n                    html += '<\/div>';\n                });\n                \n                resultsGrid.innerHTML = html;\n                \n                \/\/ Update map if visible\n                if (resultsMap.style.display !== 'none' && map) {\n                    updateMapMarkers();\n                }\n            }\n            \n            \/\/ ==========================================\n            \/\/ MAP (Leaflet + OpenStreetMap - FREE)\n            \/\/ ==========================================\n            function initMap() {\n                if (map) {\n                    updateMapMarkers();\n                    return;\n                }\n                \n                \/\/ Load Leaflet if not loaded\n                if (typeof L === 'undefined') {\n                    \/\/ Load CSS\n                    var link = document.createElement('link');\n                    link.rel = 'stylesheet';\n                    link.href = 'https:\/\/unpkg.com\/leaflet@1.9.4\/dist\/leaflet.css';\n                    document.head.appendChild(link);\n                    \n                    \/\/ Load JS\n                    var script = document.createElement('script');\n                    script.src = 'https:\/\/unpkg.com\/leaflet@1.9.4\/dist\/leaflet.js';\n                    script.onload = function() {\n                        createMap();\n                    };\n                    document.head.appendChild(script);\n                } else {\n                    createMap();\n                }\n            }\n            \n            function createMap() {\n                var mapElement = document.getElementById('kbi-search-6adacd0a6b6ea-map');\n                \n                \/\/ Default center (Puglia)\n                var center = [40.7917, 17.1028];\n                \n                map = L.map(mapElement).setView(center, 9);\n                \n                \/\/ OpenStreetMap tiles (FREE)\n                L.tileLayer('https:\/\/{s}.tile.openstreetmap.org\/{z}\/{x}\/{y}.png', {\n                    attribution: '\u00a9 OpenStreetMap contributors',\n                    maxZoom: 18\n                }).addTo(map);\n                \n                updateMapMarkers();\n            }\n            \n            function updateMapMarkers() {\n                \/\/ Clear existing markers\n                markers.forEach(function(m) { map.removeLayer(m); });\n                markers = [];\n                \n                var bounds = [];\n                \n                filteredListings.forEach(function(listing) {\n                    if (!listing.lat || !listing.lng) return;\n                    \n                    var lat = parseFloat(listing.lat);\n                    var lng = parseFloat(listing.lng);\n                    bounds.push([lat, lng]);\n                    \n                    \/\/ Custom price marker (Airbnb style)\n                    var priceIcon = L.divIcon({\n                        className: 'kbi-price-marker',\n                        html: '<div class=\"kbi-marker-price\">\u20ac' + Math.round(listing.price_per_night) + '<\/div>',\n                        iconSize: [60, 30],\n                        iconAnchor: [30, 15]\n                    });\n                    \n                    var marker = L.marker([lat, lng], { icon: priceIcon }).addTo(map);\n                    \n                    \/\/ Popup with listing info\n                    var url = listing.url;\n                    var hasDates = checkinValue.value && checkoutValue.value;\n                    if (hasDates) {\n                        url += '?checkin=' + checkinValue.value + '&checkout=' + checkoutValue.value + '&guests=' + guestsInput.value;\n                    }\n                    \n                    var popupContent = '<div class=\"kbi-map-popup\">' +\n                        (listing.thumbnail ? '<img decoding=\"async\" src=\"' + listing.thumbnail + '\" style=\"width:100%;height:100px;object-fit:cover;border-radius:4px;margin-bottom:8px;\">' : '') +\n                        '<strong>' + listing.title + '<\/strong><br>' +\n                        '<small style=\"color:#666;\">' + (listing.city || '') + '<\/small><br>';\n                    \n                    \/\/ Mostra totale solo se ci sono date\n                    if (hasDates && listing.grand_total > 0) {\n                        popupContent += '<div style=\"margin-top:6px;font-weight:600;color:#161C3E;\">\u20ac' + Math.round(listing.grand_total) + ' totale<\/div>';\n                    } else {\n                        popupContent += '<div style=\"margin-top:6px;font-weight:600;color:#161C3E;\">\u20ac' + Math.round(listing.price_per_night) + '\/notte<\/div>';\n                    }\n                    \n                    popupContent += '<a href=\"' + url + '\" style=\"display:inline-block;margin-top:8px;padding:6px 12px;background:#161C3E;color:#fff;text-decoration:none;border-radius:4px;font-size:12px;\">Vedi dettagli<\/a>' +\n                        '<\/div>';\n                    \n                    marker.bindPopup(popupContent, { maxWidth: 250 });\n                    \n                    \/\/ Highlight on hover\n                    marker.on('mouseover', function() {\n                        this.getElement().classList.add('kbi-marker-hover');\n                    });\n                    marker.on('mouseout', function() {\n                        this.getElement().classList.remove('kbi-marker-hover');\n                    });\n                    \n                    markers.push(marker);\n                });\n                \n                \/\/ Fit bounds if we have markers\n                if (bounds.length > 0) {\n                    \/\/ Usa L.latLngBounds per un controllo migliore\n                    var latLngBounds = L.latLngBounds(bounds);\n                    \n                    \/\/ Zoom sui risultati con limiti\n                    map.fitBounds(latLngBounds, { \n                        padding: [50, 50],\n                        maxZoom: 14  \/\/ Non zoommare troppo vicino\n                    });\n                    \n                    \/\/ Se lo zoom \u00e8 troppo lontano (troppi risultati sparsi), limita\n                    if (map.getZoom() < 8) {\n                        map.setZoom(8);\n                    }\n                }\n            }\n            \n            \/\/ ==========================================\n            \/\/ UTILITIES\n            \/\/ ==========================================\n            function formatDate(date) {\n                if (typeof date === 'string') date = new Date(date);\n                var y = date.getFullYear();\n                var m = String(date.getMonth() + 1).padStart(2, '0');\n                var d = String(date.getDate()).padStart(2, '0');\n                return y + '-' + m + '-' + d;\n            }\n            \n            function formatDisplayDate(dateStr) {\n                if (!dateStr) return '';\n                var parts = dateStr.split('-');\n                return parts[2] + '\/' + parts[1] + '\/' + parts[0];\n            }\n            \n        })();\n        <\/script>\n        \t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-8dc5672 e-flex e-con-boxed e-con e-parent\" data-id=\"8dc5672\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-97f8b07 e-con-full e-flex e-con e-child\" data-id=\"97f8b07\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-e2b00d8 elementor-widget elementor-widget-homey_elementor_section_title\" data-id=\"e2b00d8\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"homey_elementor_section_title.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t            <div class=\"homey_section_title_wrap_elementor homey-module module-title section-title-module\">\n                                    <h2 class=\"homey_section_title\">Ein neuer Standard der Gastfreundschaft in Apulien<\/h2>\n                \n                                    <p class=\"homey_section_subtitle sub-heading\">Wir sind leidenschaftlich der Kunst der Gastfreundschaft verpflichtet und bereit, Ihre Erwartungen zu \u00fcbertreffen. TIPICO Collection ist der perfekte Ausgangspunkt, um das Beste von Apulien zu erleben.<\/p>\n                            <\/div>\n            \t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-a93e876 e-con-full e-flex e-con e-child\" data-id=\"a93e876\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-30d10420 e-con-full e-flex e-con e-child\" data-id=\"30d10420\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-5bd943f3 e-con-full e-flex e-con e-child\" data-id=\"5bd943f3\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-18c0ef62 elementor-position-top elementor-widget elementor-widget-image-box\" data-id=\"18c0ef62\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image-box.default\">\n\t\t\t\t\t<div class=\"elementor-image-box-wrapper\"><figure class=\"elementor-image-box-img\"><a href=\"#\" tabindex=\"-1\"><img decoding=\"async\" src=\"https:\/\/www.tipicovillas.com\/wp-content\/uploads\/2026\/02\/30.jpg\" title=\"\" alt=\"\" class=\"elementor-animation-grow\" loading=\"lazy\" \/><\/a><\/figure><div class=\"elementor-image-box-content\"><h4 class=\"elementor-image-box-title\"><a href=\"#\">Apulische Kochkurse<\/a><\/h4><p class=\"elementor-image-box-description\">Entdecken Sie die Geheimnisse der apulischen K\u00fcche bei praktischen Kochkursen unter der Anleitung lokaler K\u00f6che. Ein authentisches Erlebnis, bei dem Sie lernen, kochen und die typischen Spezialit\u00e4ten der Region genie\u00dfen k\u00f6nnen.<\/p><\/div><\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-5e01ddd e-con-full e-flex e-con e-child\" data-id=\"5e01ddd\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-0b8b989 elementor-position-top elementor-widget elementor-widget-image-box\" data-id=\"0b8b989\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image-box.default\">\n\t\t\t\t\t<div class=\"elementor-image-box-wrapper\"><figure class=\"elementor-image-box-img\"><a href=\"#\" tabindex=\"-1\"><img fetchpriority=\"high\" decoding=\"async\" width=\"400\" height=\"267\" src=\"https:\/\/www.tipicovillas.com\/wp-content\/uploads\/2026\/02\/16602344903859629750431462388563715871022o.jpg.webp\" class=\"elementor-animation-grow attachment-full size-full wp-image-30096\" alt=\"\" srcset=\"https:\/\/www.tipicovillas.com\/wp-content\/uploads\/2026\/02\/16602344903859629750431462388563715871022o.jpg.webp 400w, https:\/\/www.tipicovillas.com\/wp-content\/uploads\/2026\/02\/16602344903859629750431462388563715871022o.jpg-300x200.webp 300w, https:\/\/www.tipicovillas.com\/wp-content\/uploads\/2026\/02\/16602344903859629750431462388563715871022o.jpg-120x80.webp 120w\" sizes=\"(max-width: 400px) 100vw, 400px\" \/><\/a><\/figure><div class=\"elementor-image-box-content\"><h4 class=\"elementor-image-box-title\"><a href=\"#\">Lokale Weinverkostungen in Apulien<\/a><\/h4><p class=\"elementor-image-box-description\">Eine Reise durch die Aromen und D\u00fcfte Apuliens, bei der Sie ausgew\u00e4hlte Weing\u00fcter und autochthone Rebsorten entdecken. Gef\u00fchrte Weinverkostungen, um die Region durch ihre Weine kennenzulernen.<\/p><\/div><\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-47e7d66 e-con-full e-flex e-con e-child\" data-id=\"47e7d66\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-b08edb4 elementor-position-top elementor-widget elementor-widget-image-box\" data-id=\"b08edb4\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image-box.default\">\n\t\t\t\t\t<div class=\"elementor-image-box-wrapper\"><figure class=\"elementor-image-box-img\"><a href=\"#\" tabindex=\"-1\"><img decoding=\"async\" width=\"860\" height=\"574\" src=\"https:\/\/www.tipicovillas.com\/wp-content\/uploads\/2026\/02\/italy-alberobello-apulia-trulli-street.jpg\" class=\"elementor-animation-grow attachment-full size-full wp-image-30097\" alt=\"\" srcset=\"https:\/\/www.tipicovillas.com\/wp-content\/uploads\/2026\/02\/italy-alberobello-apulia-trulli-street.jpg 860w, https:\/\/www.tipicovillas.com\/wp-content\/uploads\/2026\/02\/italy-alberobello-apulia-trulli-street-300x200.jpg 300w, https:\/\/www.tipicovillas.com\/wp-content\/uploads\/2026\/02\/italy-alberobello-apulia-trulli-street-768x513.jpg 768w, https:\/\/www.tipicovillas.com\/wp-content\/uploads\/2026\/02\/italy-alberobello-apulia-trulli-street-450x300.jpg 450w, https:\/\/www.tipicovillas.com\/wp-content\/uploads\/2026\/02\/italy-alberobello-apulia-trulli-street-120x80.jpg 120w, https:\/\/www.tipicovillas.com\/wp-content\/uploads\/2026\/02\/italy-alberobello-apulia-trulli-street-749x500.jpg 749w\" sizes=\"(max-width: 860px) 100vw, 860px\" \/><\/a><\/figure><div class=\"elementor-image-box-content\"><h4 class=\"elementor-image-box-title\"><a href=\"#\">Kulturelle und historische Routen in Apulien<\/a><\/h4><p class=\"elementor-image-box-description\">Entdecken Sie historische D\u00f6rfer, Kunstst\u00e4dte und ikonische Orte Apuliens, begleitet von erfahrenen Guides. Routen, die darauf ausgelegt sind, Geschichte, Architektur und lokale Traditionen auf authentische Weise zu erleben.<\/p><\/div><\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-c3cba54 e-con-full e-flex e-con e-child\" data-id=\"c3cba54\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-a341691 elementor-position-top elementor-widget elementor-widget-image-box\" data-id=\"a341691\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image-box.default\">\n\t\t\t\t\t<div class=\"elementor-image-box-wrapper\"><figure class=\"elementor-image-box-img\"><a href=\"#\" tabindex=\"-1\"><img decoding=\"async\" width=\"1920\" height=\"1280\" src=\"https:\/\/www.tipicovillas.com\/wp-content\/uploads\/2026\/02\/d1617a93-c45c-4af7-942c-9d5a6291e3fb_boat-tour-of-the-polignano-a-mare-caves-with-aperitif-xlarge.webp\" class=\"elementor-animation-grow attachment-full size-full wp-image-30098\" alt=\"\" srcset=\"https:\/\/www.tipicovillas.com\/wp-content\/uploads\/2026\/02\/d1617a93-c45c-4af7-942c-9d5a6291e3fb_boat-tour-of-the-polignano-a-mare-caves-with-aperitif-xlarge.webp 1920w, https:\/\/www.tipicovillas.com\/wp-content\/uploads\/2026\/02\/d1617a93-c45c-4af7-942c-9d5a6291e3fb_boat-tour-of-the-polignano-a-mare-caves-with-aperitif-xlarge-300x200.webp 300w, https:\/\/www.tipicovillas.com\/wp-content\/uploads\/2026\/02\/d1617a93-c45c-4af7-942c-9d5a6291e3fb_boat-tour-of-the-polignano-a-mare-caves-with-aperitif-xlarge-1024x683.webp 1024w, https:\/\/www.tipicovillas.com\/wp-content\/uploads\/2026\/02\/d1617a93-c45c-4af7-942c-9d5a6291e3fb_boat-tour-of-the-polignano-a-mare-caves-with-aperitif-xlarge-768x512.webp 768w, https:\/\/www.tipicovillas.com\/wp-content\/uploads\/2026\/02\/d1617a93-c45c-4af7-942c-9d5a6291e3fb_boat-tour-of-the-polignano-a-mare-caves-with-aperitif-xlarge-1536x1024.webp 1536w, https:\/\/www.tipicovillas.com\/wp-content\/uploads\/2026\/02\/d1617a93-c45c-4af7-942c-9d5a6291e3fb_boat-tour-of-the-polignano-a-mare-caves-with-aperitif-xlarge-450x300.webp 450w, https:\/\/www.tipicovillas.com\/wp-content\/uploads\/2026\/02\/d1617a93-c45c-4af7-942c-9d5a6291e3fb_boat-tour-of-the-polignano-a-mare-caves-with-aperitif-xlarge-1140x760.webp 1140w, https:\/\/www.tipicovillas.com\/wp-content\/uploads\/2026\/02\/d1617a93-c45c-4af7-942c-9d5a6291e3fb_boat-tour-of-the-polignano-a-mare-caves-with-aperitif-xlarge-120x80.webp 120w, https:\/\/www.tipicovillas.com\/wp-content\/uploads\/2026\/02\/d1617a93-c45c-4af7-942c-9d5a6291e3fb_boat-tour-of-the-polignano-a-mare-caves-with-aperitif-xlarge-750x500.webp 750w\" sizes=\"(max-width: 1920px) 100vw, 1920px\" \/><\/a><\/figure><div class=\"elementor-image-box-content\"><h4 class=\"elementor-image-box-title\"><a href=\"#\">Bootsausfl\u00fcge entlang der apulischen K\u00fcste<\/a><\/h4><p class=\"elementor-image-box-description\">Erleben Sie das Meer aus einer exklusiven Perspektive und segeln Sie entlang der apulischen K\u00fcste zwischen Buchten, Grotten und kristallklarem Wasser. Ein entspannendes und eindrucksvolles Erlebnis, ideal, um die K\u00fcste in v\u00f6lliger Privatsph\u00e4re zu entdecken.<\/p><\/div><\/div>\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\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-781d198 e-flex e-con-boxed e-con e-parent\" data-id=\"781d198\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-f3bb540 e-con-full e-flex e-con e-child\" data-id=\"f3bb540\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-676477d elementor-widget elementor-widget-homey_elementor_section_title\" data-id=\"676477d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"homey_elementor_section_title.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t            <div class=\"homey_section_title_wrap_elementor homey-module module-title section-title-module\">\n                                    <h2 class=\"homey_section_title\">Erleben Sie das Apulien Ihrer Tr\u00e4ume<\/h2>\n                \n                                    <p class=\"homey_section_subtitle sub-heading\">Einzigartige Villen zwischen Meer, Natur und Tradition<\/p>\n                            <\/div>\n            \t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-039667d e-con-full e-flex e-con e-child\" data-id=\"039667d\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-52ecd0b e-con-full e-flex e-con e-child\" data-id=\"52ecd0b\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-45545a2 e-con-full e-flex e-con e-child\" data-id=\"45545a2\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-33e48c4 elementor-position-top elementor-widget elementor-widget-image-box\" data-id=\"33e48c4\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image-box.default\">\n\t\t\t\t\t<div class=\"elementor-image-box-wrapper\"><figure class=\"elementor-image-box-img\"><a href=\"#\" tabindex=\"-1\"><img loading=\"lazy\" decoding=\"async\" width=\"1310\" height=\"875\" src=\"https:\/\/www.tipicovillas.com\/wp-content\/uploads\/2026\/01\/17267685501730-2.jpg\" class=\"elementor-animation-grow attachment-full size-full wp-image-22036\" alt=\"\" srcset=\"https:\/\/www.tipicovillas.com\/wp-content\/uploads\/2026\/01\/17267685501730-2.jpg 1310w, https:\/\/www.tipicovillas.com\/wp-content\/uploads\/2026\/01\/17267685501730-2-300x200.jpg 300w, https:\/\/www.tipicovillas.com\/wp-content\/uploads\/2026\/01\/17267685501730-2-1024x684.jpg 1024w, https:\/\/www.tipicovillas.com\/wp-content\/uploads\/2026\/01\/17267685501730-2-768x513.jpg 768w, https:\/\/www.tipicovillas.com\/wp-content\/uploads\/2026\/01\/17267685501730-2-450x300.jpg 450w, https:\/\/www.tipicovillas.com\/wp-content\/uploads\/2026\/01\/17267685501730-2-1140x760.jpg 1140w, https:\/\/www.tipicovillas.com\/wp-content\/uploads\/2026\/01\/17267685501730-2-120x80.jpg 120w, https:\/\/www.tipicovillas.com\/wp-content\/uploads\/2026\/01\/17267685501730-2-749x500.jpg 749w\" sizes=\"(max-width: 1310px) 100vw, 1310px\" \/><\/a><\/figure><div class=\"elementor-image-box-content\"><h4 class=\"elementor-image-box-title\"><a href=\"#\">Familienvillen in Apulien<\/a><\/h4><p class=\"elementor-image-box-description\">Gro\u00dfz\u00fcgige R\u00e4ume, Komfort und Spa\u00df f\u00fcr Gro\u00df und Klein.<\/p><\/div><\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-dc47b95 e-con-full e-flex e-con e-child\" data-id=\"dc47b95\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-c750125 elementor-position-top elementor-widget elementor-widget-image-box\" data-id=\"c750125\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image-box.default\">\n\t\t\t\t\t<div class=\"elementor-image-box-wrapper\"><figure class=\"elementor-image-box-img\"><a href=\"#\" tabindex=\"-1\"><img loading=\"lazy\" decoding=\"async\" width=\"1536\" height=\"1024\" src=\"https:\/\/www.tipicovillas.com\/wp-content\/uploads\/2026\/02\/ChatGPT-Image-12-feb-2026-10_39_59.png\" class=\"elementor-animation-grow attachment-full size-full wp-image-30331\" alt=\"\" srcset=\"https:\/\/www.tipicovillas.com\/wp-content\/uploads\/2026\/02\/ChatGPT-Image-12-feb-2026-10_39_59.png 1536w, https:\/\/www.tipicovillas.com\/wp-content\/uploads\/2026\/02\/ChatGPT-Image-12-feb-2026-10_39_59-300x200.png 300w, https:\/\/www.tipicovillas.com\/wp-content\/uploads\/2026\/02\/ChatGPT-Image-12-feb-2026-10_39_59-1024x683.png 1024w, https:\/\/www.tipicovillas.com\/wp-content\/uploads\/2026\/02\/ChatGPT-Image-12-feb-2026-10_39_59-768x512.png 768w, https:\/\/www.tipicovillas.com\/wp-content\/uploads\/2026\/02\/ChatGPT-Image-12-feb-2026-10_39_59-450x300.png 450w, https:\/\/www.tipicovillas.com\/wp-content\/uploads\/2026\/02\/ChatGPT-Image-12-feb-2026-10_39_59-1140x760.png 1140w, https:\/\/www.tipicovillas.com\/wp-content\/uploads\/2026\/02\/ChatGPT-Image-12-feb-2026-10_39_59-120x80.png 120w, https:\/\/www.tipicovillas.com\/wp-content\/uploads\/2026\/02\/ChatGPT-Image-12-feb-2026-10_39_59-750x500.png 750w\" sizes=\"(max-width: 1536px) 100vw, 1536px\" \/><\/a><\/figure><div class=\"elementor-image-box-content\"><h4 class=\"elementor-image-box-title\"><a href=\"#\">Villen zur Miete nahe am Meer<\/a><\/h4><p class=\"elementor-image-box-description\">Atemberaubende Sonnenunterg\u00e4nge und direkter Zugang zu den sch\u00f6nsten Str\u00e4nden.<\/p><\/div><\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-c5260fb e-con-full e-flex e-con e-child\" data-id=\"c5260fb\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-a6271d4 elementor-position-top elementor-widget elementor-widget-image-box\" data-id=\"a6271d4\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image-box.default\">\n\t\t\t\t\t<div class=\"elementor-image-box-wrapper\"><figure class=\"elementor-image-box-img\"><a href=\"#\" tabindex=\"-1\"><img loading=\"lazy\" decoding=\"async\" width=\"1536\" height=\"1024\" src=\"https:\/\/www.tipicovillas.com\/wp-content\/uploads\/2026\/02\/ChatGPT-Image-12-feb-2026-10_40_54.png\" class=\"elementor-animation-grow attachment-full size-full wp-image-30330\" alt=\"\" srcset=\"https:\/\/www.tipicovillas.com\/wp-content\/uploads\/2026\/02\/ChatGPT-Image-12-feb-2026-10_40_54.png 1536w, https:\/\/www.tipicovillas.com\/wp-content\/uploads\/2026\/02\/ChatGPT-Image-12-feb-2026-10_40_54-300x200.png 300w, https:\/\/www.tipicovillas.com\/wp-content\/uploads\/2026\/02\/ChatGPT-Image-12-feb-2026-10_40_54-1024x683.png 1024w, https:\/\/www.tipicovillas.com\/wp-content\/uploads\/2026\/02\/ChatGPT-Image-12-feb-2026-10_40_54-768x512.png 768w, https:\/\/www.tipicovillas.com\/wp-content\/uploads\/2026\/02\/ChatGPT-Image-12-feb-2026-10_40_54-450x300.png 450w, https:\/\/www.tipicovillas.com\/wp-content\/uploads\/2026\/02\/ChatGPT-Image-12-feb-2026-10_40_54-1140x760.png 1140w, https:\/\/www.tipicovillas.com\/wp-content\/uploads\/2026\/02\/ChatGPT-Image-12-feb-2026-10_40_54-120x80.png 120w, https:\/\/www.tipicovillas.com\/wp-content\/uploads\/2026\/02\/ChatGPT-Image-12-feb-2026-10_40_54-750x500.png 750w\" sizes=\"(max-width: 1536px) 100vw, 1536px\" \/><\/a><\/figure><div class=\"elementor-image-box-content\"><h4 class=\"elementor-image-box-title\"><a href=\"#\">Charmante Masserien in Apulien<\/a><\/h4><p class=\"elementor-image-box-description\">Apulische Eleganz, Infinity-Pools und exklusive Services.<\/p><\/div><\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-f4c6bf2 e-con-full e-flex e-con e-child\" data-id=\"f4c6bf2\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-80cecba elementor-position-top elementor-widget elementor-widget-image-box\" data-id=\"80cecba\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image-box.default\">\n\t\t\t\t\t<div class=\"elementor-image-box-wrapper\"><figure class=\"elementor-image-box-img\"><a href=\"#\" tabindex=\"-1\"><img loading=\"lazy\" decoding=\"async\" width=\"1536\" height=\"1024\" src=\"https:\/\/www.tipicovillas.com\/wp-content\/uploads\/2026\/02\/ChatGPT-Image-11-feb-2026-18_03_36.png\" class=\"elementor-animation-grow attachment-full size-full wp-image-30095\" alt=\"\" srcset=\"https:\/\/www.tipicovillas.com\/wp-content\/uploads\/2026\/02\/ChatGPT-Image-11-feb-2026-18_03_36.png 1536w, https:\/\/www.tipicovillas.com\/wp-content\/uploads\/2026\/02\/ChatGPT-Image-11-feb-2026-18_03_36-300x200.png 300w, https:\/\/www.tipicovillas.com\/wp-content\/uploads\/2026\/02\/ChatGPT-Image-11-feb-2026-18_03_36-1024x683.png 1024w, https:\/\/www.tipicovillas.com\/wp-content\/uploads\/2026\/02\/ChatGPT-Image-11-feb-2026-18_03_36-768x512.png 768w, https:\/\/www.tipicovillas.com\/wp-content\/uploads\/2026\/02\/ChatGPT-Image-11-feb-2026-18_03_36-450x300.png 450w, https:\/\/www.tipicovillas.com\/wp-content\/uploads\/2026\/02\/ChatGPT-Image-11-feb-2026-18_03_36-1140x760.png 1140w, https:\/\/www.tipicovillas.com\/wp-content\/uploads\/2026\/02\/ChatGPT-Image-11-feb-2026-18_03_36-120x80.png 120w, https:\/\/www.tipicovillas.com\/wp-content\/uploads\/2026\/02\/ChatGPT-Image-11-feb-2026-18_03_36-750x500.png 750w\" sizes=\"(max-width: 1536px) 100vw, 1536px\" \/><\/a><\/figure><div class=\"elementor-image-box-content\"><h4 class=\"elementor-image-box-title\"><a href=\"#\">Trulli und typische Landh\u00e4user<\/a><\/h4><p class=\"elementor-image-box-description\">Authentische apulische Unterk\u00fcnfte mit einzigartigem Charme.<\/p><\/div><\/div>\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\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-4a5d3dc3 e-flex e-con-boxed e-con e-parent\" data-id=\"4a5d3dc3\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-87fee98 elementor-widget elementor-widget-homey_elementor_section_title\" data-id=\"87fee98\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"homey_elementor_section_title.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t            <div class=\"homey_section_title_wrap_elementor homey-module module-title section-title-module\">\n                                    <h2 class=\"homey_section_title\">Buchen Sie mit Vertrauen \u2013 wir sind an Ihrer Seite<\/h2>\n                \n                            <\/div>\n            \t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6014bdf elementor-widget elementor-widget-text-editor\" data-id=\"6014bdf\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p data-start=\"60\" data-end=\"175\">Eine Villa im Ausland zu mieten kann Zweifel und Unsicherheiten hervorrufen \u2013 und das ist v\u00f6llig verst\u00e4ndlich.<\/p><p data-start=\"177\" data-end=\"458\">Deshalb stellt TIPICO Collection Transparenz in den Mittelpunkt jeder Erfahrung: Jede Unterkunft wird sorgf\u00e4ltig gepr\u00fcft und mit realen Fotos sowie pr\u00e4zisen Beschreibungen dokumentiert, damit das, was Sie online sehen, genau dem entspricht, was Sie bei Ihrer Ankunft vorfinden.<\/p><p data-start=\"460\" data-end=\"687\" data-is-last-node=\"\" data-is-only-node=\"\">Unser Team steht Ihnen jederzeit zur Verf\u00fcgung, um alle Fragen zu beantworten, jedes Detail zu kl\u00e4ren und Sie in jeder Phase zu begleiten \u2013 vor und w\u00e4hrend Ihres Aufenthalts. Keine \u00dcberraschungen, nur Ruhe und Vertrauen.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6c65cc75 elementor-align-center elementor-mobile-align-center elementor-widget elementor-widget-button\" data-id=\"6c65cc75\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"#\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Kontaktieren Sie uns vor der Buchung<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Authentische Erlebnisse in Apulien \u2013 individuell f\u00fcr Sie gestaltet Neben dem Komfort unserer Villen gestalten wir individuelle Erlebnisse, die Ihren Aufenthalt bereichern. Von der Entdeckung der lokalen K\u00fcche bis hin zu Aktivit\u00e4ten in der Region \u2013 jedes Angebot ist darauf ausgerichtet, Ihnen Apulien auf authentische und unvergessliche Weise n\u00e4herzubringen Ein neuer Standard der Gastfreundschaft in [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"footnotes":""},"class_list":["post-30160","page","type-page","status-publish","hentry"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.tipicovillas.com\/de\/wp-json\/wp\/v2\/pages\/30160","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.tipicovillas.com\/de\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.tipicovillas.com\/de\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.tipicovillas.com\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.tipicovillas.com\/de\/wp-json\/wp\/v2\/comments?post=30160"}],"version-history":[{"count":5,"href":"https:\/\/www.tipicovillas.com\/de\/wp-json\/wp\/v2\/pages\/30160\/revisions"}],"predecessor-version":[{"id":30388,"href":"https:\/\/www.tipicovillas.com\/de\/wp-json\/wp\/v2\/pages\/30160\/revisions\/30388"}],"wp:attachment":[{"href":"https:\/\/www.tipicovillas.com\/de\/wp-json\/wp\/v2\/media?parent=30160"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}