{"id":44269,"date":"2025-10-13T11:10:10","date_gmt":"2025-10-13T09:10:10","guid":{"rendered":"https:\/\/treurer.com\/?page_id=44269"},"modified":"2026-04-20T16:33:39","modified_gmt":"2026-04-20T14:33:39","slug":"treurer-restaurant","status":"publish","type":"page","link":"https:\/\/treurer.com\/en\/treurer-restaurant\/","title":{"rendered":"Restaurant Qanat de Treurer"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"44269\" class=\"elementor elementor-44269 elementor-42078\" data-elementor-post-type=\"page\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-b38055e elementor-section-height-full elementor-section-full_width elementor-section-height-default elementor-section-items-middle\" data-id=\"b38055e\" data-element_type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t\t<div class=\"elementor-background-overlay\"><\/div>\n\t\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-417562c\" data-id=\"417562c\" data-element_type=\"column\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-ca0beee elementor-widget elementor-widget-shortcode\" data-id=\"ca0beee\" 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=\"sp-styles-warning\" style=\"width: 450px; background-color: #FFF; color: #F00; border: 1px solid #F00; padding: 10px; font-size: 14px;\">\n\t\t\t<span style=\"font-weight: bold;\">Warning: The stylesheets were not loaded!<\/span> \n\t\t\tYou will need to change the <i>Load stylesheets<\/i> setting from <i>Automatically<\/i> to <i>On homepage<\/i> or <i>On all pages<\/i>. \n\t\t\tYou can set that <a style=\"text-decoration: underline; color: #F00;\" href=\"https:\/\/treurer.com\/wp-admin\/admin.php?page=sliderpro-settings\">here<\/a>.\n\t\t\t<\/div>\r\n<div id=\"slider-pro-10\" class=\"slider-pro sp-no-js\" style=\"width: 1920px; height: 1080px;\">\r\n\t<div class=\"sp-slides\">\r\n\t\t\r\n\t\t<div class=\"sp-slide\">\r\n\t\t\t<img fetchpriority=\"high\" decoding=\"async\" class=\"sp-image\" src=\"https:\/\/treurer.com\/wp-content\/uploads\/Restaurante-Treurer-Algaida-terraza.jpg\" alt=\"Restaurante Qanat de Treurer\" width=\"1920\" height=\"1280\" title=\"\">\r\n\t\t\t\r\n\t\t<\/div>\r\n\t\t<div class=\"sp-slide\">\r\n\t\t\t<img decoding=\"async\" class=\"sp-image\" src=\"https:\/\/treurer.com\/wp-content\/uploads\/Restaurante-Treurer-Algaida-Sala.jpg\" alt=\"Restaurante Qanat de Treurer\" width=\"1920\" height=\"1280\" title=\"\">\r\n\t\t\t\r\n\t\t<\/div>\r\n\t\t<div class=\"sp-slide\">\r\n\t\t\t<img decoding=\"async\" class=\"sp-image\" src=\"https:\/\/treurer.com\/wp-content\/uploads\/Restaurante-Treurer-Algaida-Miralles.jpg\" alt=\"Restaurante Qanat de Treurer\" width=\"1920\" height=\"1280\" title=\"\">\r\n\t\t\t\r\n\t\t<\/div>\r\n\t\t<div class=\"sp-slide\">\r\n\t\t\t<img loading=\"lazy\" decoding=\"async\" class=\"sp-image\" src=\"https:\/\/treurer.com\/wp-content\/uploads\/Restaurante-Treurer-Algaida-Plato.jpg\" alt=\"Restaurante Qanat de Treurer\" width=\"1920\" height=\"1280\" title=\"\">\r\n\t\t\t\r\n\t\t<\/div>\r\n\t\t<div class=\"sp-slide\">\r\n\t\t\t<img loading=\"lazy\" decoding=\"async\" class=\"sp-image\" src=\"https:\/\/treurer.com\/wp-content\/uploads\/Restaurante-Treurer-Algaida-Mesa.jpg\" alt=\"Restaurante Qanat de Treurer\" width=\"1920\" height=\"1280\" title=\"\">\r\n\t\t\t\r\n\t\t<\/div>\r\n\t<\/div>\r\n<\/div><\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-0f3e0b8 elementor-widget elementor-widget-heading\" data-id=\"0f3e0b8\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">Restaurante Qanat de Treurer<\/h1>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-f17ad40 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"f17ad40\" data-element_type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t\t<div class=\"elementor-background-overlay\"><\/div>\n\t\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-297e867\" data-id=\"297e867\" data-element_type=\"column\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-39eedec elementor-widget elementor-widget-heading\" data-id=\"39eedec\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"elementor-heading-title elementor-size-default\">Qanat: An ancient underground water conveyance system that uses natural means for this purpose<br><br>\n\u201cAt the Treurer spring, I drew water and drank. You can imagine and believe how much I needed that water\u201d<br><span style=\"font-size:24px\">Folk Songbook of Mallorca<\/span><\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-3227ab2 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"3227ab2\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-da844f9\" data-id=\"da844f9\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-a1ef93f elementor-widget elementor-widget-text-editor\" data-id=\"a1ef93f\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p style=\"text-align: center;\"><strong>If you would like to contact us, please call us at <a href=\"tel: +34 651 696 322\">+34 651 696 322<\/a>. Sonia Guti\u00e9rrez will be happy to assist you.<\/strong><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4387b2d elementor-widget elementor-widget-shortcode\" data-id=\"4387b2d\" 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\">\n<div class=\"flavor-booking-container\"\n     style=\"--flavor-primary:#5b955b;--flavor-primary-light:#7baa7b;--flavor-primary-dark:#4d7e4d;--flavor-primary-rgb:91,149,91;\"     data-restaurant-id=\"4\"\n     data-shortcode-key=\"2561a5baf572d9438a8be9c1fa71347ec582d1049521123ca486bebc66d90246\"\n     data-max-advance=\"315\"\n     data-min-advance-hours=\"0\"\n     data-open-days=\"2,3,5,6,0\"\n     data-rest-url=\"https:\/\/bookings.rest\/wp-json\/bookings-rest\/v1\/\"\n     data-require-deposit=\"1\"\n     data-deposit-per-reservation=\"0\"\n     data-deposit-per-person=\"20\"\n     data-stripe-key=\"pk_live_51MBwnKDmuxZsbgPbg31pqnP588xHhobfyLte0RzKlcHmefphL1fZ091f0p3NyV9O6ImBpDuuGzGHodF1s3jiDaKU005S6yuMU6\"\n     data-stripe-test=\"0\"\n     data-show-shared-table=\"1\"\n     data-shared-table-text=\"desire\"\n     data-booking-flow-steps=\"2\"\n     data-min-guests=\"1\"\n     data-max-guests=\"6\">\n    \n    \n    <!-- Stepper -->\n    <div class=\"flavor-stepper\">\n        <div class=\"flavor-step-ind active\" data-step=\"1\">\n            <div class=\"flavor-step-num\">1<\/div>\n            <span class=\"flavor-step-label\">Book your table<\/span>\n        <\/div>\n        <div class=\"flavor-step-line\" id=\"flavorLine1\"><\/div>\n        <div class=\"flavor-step-ind\" data-step=\"2\">\n            <div class=\"flavor-step-num\">2<\/div>\n            <span class=\"flavor-step-label\">Pay and confirm<\/span>\n        <\/div>\n            <\/div>\n\n    <!-- STEP 1 -->\n    <div class=\"flavor-panel active\" id=\"flavorPanel1\">\n                <!-- 2-STEP MODE: Reserva + Datos side by side -->\n        <div class=\"flavor-step1-2col\">\n            <!-- Left: Reserva (comensales + fecha + hora in compact sub-grid) -->\n            <div class=\"flavor-card\">\n                <div class=\"flavor-col-title\">Book your table<\/div>\n                <div class=\"flavor-reservation-subgrid\">\n                    <div>\n                        <div class=\"flavor-col-title\" style=\"margin-bottom:8px\">Guests<\/div>\n                        <div class=\"flavor-guests-list\" id=\"flavorChips\">\n                                                            <button type=\"button\" class=\"flavor-chip\" data-val=\"1\">\n                                    1 person                                <\/button>\n                                                            <button type=\"button\" class=\"flavor-chip on\" data-val=\"2\">\n                                    2 person                                <\/button>\n                                                            <button type=\"button\" class=\"flavor-chip\" data-val=\"3\">\n                                    3 person                                <\/button>\n                                                            <button type=\"button\" class=\"flavor-chip\" data-val=\"4\">\n                                    4 person                                <\/button>\n                                                            <button type=\"button\" class=\"flavor-chip\" data-val=\"5\">\n                                    5 person                                <\/button>\n                                                            <button type=\"button\" class=\"flavor-chip\" data-val=\"6\">\n                                    6 person                                <\/button>\n                                                    <\/div>\n                    <\/div>\n                    <div>\n                        <div class=\"flavor-col-title\" style=\"margin-bottom:8px\">Date<\/div>\n                        <div class=\"flavor-cal-header\">\n                            <button type=\"button\" class=\"flavor-cal-nav flavor-cal-nav-prev\" id=\"flavorCalPrev\" aria-label=\"Anterior\"><\/button>\n                            <span class=\"flavor-cal-title\" id=\"flavorCalTitle\"><\/span>\n                            <button type=\"button\" class=\"flavor-cal-nav flavor-cal-nav-next\" id=\"flavorCalNext\" aria-label=\"Siguiente\"><\/button>\n                        <\/div>\n                        <div class=\"flavor-cal-grid\" id=\"flavorCalGrid\"><\/div>\n                    <\/div>\n                    <div>\n                        <div class=\"flavor-col-title\" style=\"margin-bottom:8px\">Time<\/div>\n                        <div class=\"flavor-slots\" id=\"flavorSlots\">\n                            <p class=\"flavor-time-placeholder\">Select a date to see available times<\/p>\n                        <\/div>\n                    <\/div>\n                <\/div>\n            <\/div>\n            <!-- Right: Datos personales -->\n            <div class=\"flavor-card\">\n                <div class=\"flavor-col-title\">Your details<\/div>\n                <div class=\"flavor-form-grid-2 flavor-form-compact\">\n                    <div class=\"flavor-field\">\n                        <label>First name <span class=\"flavor-req\">*<\/span><\/label>\n                        <input type=\"text\" id=\"flavor-first-name\" placeholder=\"Your first name\">\n                    <\/div>\n                    <div class=\"flavor-field\">\n                        <label>Last name <span class=\"flavor-req\">*<\/span><\/label>\n                        <input type=\"text\" id=\"flavor-last-name\" placeholder=\"Your last name\">\n                    <\/div>\n                    <div class=\"flavor-field\">\n                        <label>Email <span class=\"flavor-req\">*<\/span><\/label>\n                        <input type=\"email\" id=\"flavor-email\" placeholder=\"your@email.com\">\n                    <\/div>\n                    <div class=\"flavor-field\">\n                        <label>Phone <span class=\"flavor-req\">*<\/span><\/label>\n                        <div class=\"flavor-phone-row\">\n                            <select id=\"flavor-prefix\"><option>+34<\/option><option>+33<\/option><option>+44<\/option><option>+49<\/option><option>+1<\/option><\/select>\n                            <input type=\"tel\" id=\"flavor-phone\" placeholder=\"600 000 000\">\n                        <\/div>\n                    <\/div>\n                    <div class=\"flavor-field flavor-form-full\">\n                        <label>Allergies<\/label>\n                        <input type=\"text\" id=\"flavor-allergies\" placeholder=\"Gluten, lactose, nuts...\">\n                    <\/div>\n                                        <div class=\"flavor-form-full\">\n                        <div class=\"flavor-toggle-row\" id=\"flavorSharedToggle\">\n                            <div class=\"flavor-toggle-track\"><div class=\"flavor-toggle-knob\"><\/div><\/div>\n                            <span>I prefer shared table<\/span>\n                        <\/div>\n                    <\/div>\n                                        <div class=\"flavor-field flavor-form-full\">\n                        <label>Notes<\/label>\n                        <textarea id=\"flavor-notes\" placeholder=\"Special celebration, high chair...\"><\/textarea>\n                    <\/div>\n                <\/div>\n            <\/div>\n        <\/div>\n                <div class=\"flavor-btn-bar\">\n            <div><\/div>\n            <button type=\"button\" class=\"flavor-btn-next\" id=\"flavorBtn1Next\" disabled>Next<\/button>\n        <\/div>\n        <div class=\"flavor-link-row\">\n            <a href=\"#\" onclick=\"flavorShowManage(); return false;\">Already have a reservation?<\/a>\n        <\/div>\n    <\/div>\n\n    \n    <!-- STEP 2: Confirmar -->\n    <div class=\"flavor-panel\" id=\"flavorPanel3\">\n        <div class=\"flavor-confirm-grid\">\n            <div class=\"flavor-card\">\n                <div class=\"flavor-col-title\">Confirm your reservation<\/div>\n                <div class=\"flavor-sum-grid\">\n                    <div class=\"flavor-sum-item\"><div class=\"flavor-sum-label\">Guests<\/div><div class=\"flavor-sum-value\" id=\"sumGuests\">\u2014<\/div><\/div>\n                    <div class=\"flavor-sum-item\"><div class=\"flavor-sum-label\">Date<\/div><div class=\"flavor-sum-value\" id=\"sumDate\">\u2014<\/div><\/div>\n                    <div class=\"flavor-sum-item\"><div class=\"flavor-sum-label\">Time<\/div><div class=\"flavor-sum-value\" id=\"sumTime\">\u2014<\/div><\/div>\n                    <div class=\"flavor-sum-item\"><div class=\"flavor-sum-label\">First name<\/div><div class=\"flavor-sum-value\" id=\"sumName\">\u2014<\/div><\/div>\n                    <div class=\"flavor-sum-item\"><div class=\"flavor-sum-label\">Email<\/div><div class=\"flavor-sum-value\" id=\"sumEmail\">\u2014<\/div><\/div>\n                    <div class=\"flavor-sum-item\"><div class=\"flavor-sum-label\">Phone<\/div><div class=\"flavor-sum-value\" id=\"sumPhone\">\u2014<\/div><\/div>\n                    <div class=\"flavor-sum-item\"><div class=\"flavor-sum-label\">Shared table<\/div><div class=\"flavor-sum-value\" id=\"sumShared\">\u2014<\/div><\/div>\n                    <div class=\"flavor-sum-item\"><div class=\"flavor-sum-label\">Notes<\/div><div class=\"flavor-sum-value\" id=\"sumNotes\">\u2014<\/div><\/div>\n                <\/div>\n            <\/div>\n            <div class=\"flavor-card flavor-card-payment\">\n                <div class=\"flavor-deposit-box\" id=\"flavorDepositBox\" style=\"display:none\">\n                    <div class=\"flavor-dep-title\">A deposit is required to confirm your reservation<\/div>\n                    <div class=\"flavor-dep-amount\" id=\"flavorDepAmount\">0.00 \u20ac<\/div>\n                    <div class=\"flavor-dep-sub\" id=\"flavorDepSub\"><\/div>\n                    <div class=\"flavor-dep-note\">Reembolsable si cancelas con 24h de antelaci\u00f3n<\/div>\n                <\/div>\n                <div class=\"flavor-card-input-box\" id=\"flavorCardInputBox\" style=\"display:none\">\n                    <div class=\"flavor-ci-title\">Card details<\/div>\n                    <div id=\"flavor-card-element\" style=\"padding:10px 12px;border:1px solid rgba(0,0,0,.08);border-radius:6px;background:#fafafa;\"><\/div>\n                    <div id=\"flavor-card-errors\" style=\"color:#dc2626;font-size:13px;margin-top:8px;\"><\/div>\n                <\/div>\n                <div class=\"flavor-check-row\">\n                    <input type=\"checkbox\" id=\"flavor-accept-terms\">\n                    <span>I accept the privacy policy and booking conditions <a href=\"#\">pol\u00edtica de privacidad<\/a> y <a href=\"#\">condiciones de reserva<\/a><\/span>\n                <\/div>\n            <\/div>\n        <\/div>\n        <div class=\"flavor-btn-bar\">\n            <button type=\"button\" class=\"flavor-btn-back\" id=\"flavorBtn3Back\">Previous<\/button>\n            <button type=\"button\" class=\"flavor-btn-next flavor-btn-green\" id=\"flavorBtn3Confirm\" disabled>\n                <span id=\"flavor-submit-text\">Confirm reservation<\/span>\n                <span id=\"flavor-submit-text-pay\" style=\"display:none;\">Pay and confirm<\/span>\n            <\/button>\n        <\/div>\n    <\/div>\n\n    <div class=\"flavor-loader\" style=\"display:none\">\n        <div class=\"flavor-loader-content\">\n            <span class=\"flavor-spinner-large\"><\/span>\n            <p>Processing...<\/p>\n        <\/div>\n    <\/div>\n    \n    <!-- GESTION DE RESERVA -->\n    <div id=\"manage\" class=\"flavor-manage-view\" style=\"display:none\">\n        <div class=\"flavor-manage-header\">\n            <h3>Manage reservation<\/h3>\n            <a href=\"#\" onclick=\"flavorHideManage(); return false;\">\u2190 Back to booking<\/a>\n        <\/div>\n        <div class=\"flavor-manage-search\">\n            <div class=\"flavor-manage-tabs\">\n                <button type=\"button\" class=\"flavor-manage-tab active\" onclick=\"flavorManageTab('code')\">By code<\/button>\n                <button type=\"button\" class=\"flavor-manage-tab\" onclick=\"flavorManageTab('data')\">By details<\/button>\n            <\/div>\n            <div class=\"flavor-manage-tab-content active\" data-tab=\"code\">\n                <div class=\"flavor-field\">\n                    <label>Reservation code<\/label>\n                    <input type=\"text\" id=\"flavor-manage-code\" placeholder=\"E.g.: FR12345678\">\n                <\/div>\n                <button type=\"button\" class=\"flavor-btn flavor-btn-primary\" onclick=\"flavorSearchByCode()\">Search<\/button>\n            <\/div>\n            <div class=\"flavor-manage-tab-content\" data-tab=\"data\">\n                <div class=\"flavor-fields-row\">\n                    <div class=\"flavor-field\"><label>First name<\/label><input type=\"text\" id=\"flavor-manage-firstname\" placeholder=\"Your first name\"><\/div>\n                    <div class=\"flavor-field\"><label>Last name<\/label><input type=\"text\" id=\"flavor-manage-lastname\" placeholder=\"Your last name\"><\/div>\n                <\/div>\n                <div class=\"flavor-field\"><label>Phone<\/label><input type=\"tel\" id=\"flavor-manage-phone\" placeholder=\"Your phone\"><\/div>\n                <div class=\"flavor-fields-row\">\n                    <div class=\"flavor-field\"><label>Date<\/label><input type=\"date\" id=\"flavor-manage-date\"><\/div>\n                    <div class=\"flavor-field\"><label>Time<\/label><input type=\"time\" id=\"flavor-manage-time\"><\/div>\n                <\/div>\n                <button type=\"button\" class=\"flavor-btn flavor-btn-primary\" onclick=\"flavorSearchByData()\">Search<\/button>\n            <\/div>\n        <\/div>\n        <div class=\"flavor-manage-result\" style=\"display:none\">\n            <div class=\"flavor-reservation-card\">\n                <div class=\"flavor-reservation-header\">\n                    <span class=\"flavor-reservation-code\"><\/span>\n                    <span class=\"flavor-reservation-status\"><\/span>\n                <\/div>\n                <div class=\"flavor-reservation-details\">\n                    <div class=\"flavor-reservation-row\"><span class=\"flavor-reservation-icon\">\ud83d\udcc5<\/span><span class=\"flavor-reservation-date\"><\/span><\/div>\n                    <div class=\"flavor-reservation-row\"><span class=\"flavor-reservation-icon\">\ud83d\udd50<\/span><span class=\"flavor-reservation-time\"><\/span><\/div>\n                    <div class=\"flavor-reservation-row\"><span class=\"flavor-reservation-icon\">\ud83d\udc65<\/span><span class=\"flavor-reservation-guests\"><\/span><\/div>\n                    <div class=\"flavor-reservation-row\"><span class=\"flavor-reservation-icon\">\ud83d\udc64<\/span><span class=\"flavor-reservation-name\"><\/span><\/div>\n                    <div class=\"flavor-reservation-row\"><span class=\"flavor-reservation-icon\">\u2709\ufe0f<\/span><span class=\"flavor-reservation-email\"><\/span><\/div>\n                    <div class=\"flavor-reservation-row\"><span class=\"flavor-reservation-icon\">\ud83d\udcde<\/span><span class=\"flavor-reservation-phone\"><\/span><\/div>\n                    <div class=\"flavor-reservation-row flavor-reservation-allergies\" style=\"display:none\"><span class=\"flavor-reservation-icon\">\u26a0\ufe0f<\/span><span class=\"flavor-reservation-allergies-text\"><\/span><\/div>\n                    <div class=\"flavor-reservation-row flavor-reservation-dietary\" style=\"display:none\"><span class=\"flavor-reservation-icon\">\ud83e\udd57<\/span><span class=\"flavor-reservation-dietary-text\"><\/span><\/div>\n                    <div class=\"flavor-reservation-row flavor-reservation-notes\" style=\"display:none\"><span class=\"flavor-reservation-icon\">\ud83d\udcdd<\/span><span class=\"flavor-reservation-notes-text\"><\/span><\/div>\n                <\/div>\n                <div class=\"flavor-reservation-menu\" style=\"display:none;margin-top:15px;padding:15px;background:#fef3c7;border-radius:8px\">\n                    <p style=\"margin:0 0 10px;font-weight:600;color:#92400e;font-size:14px\">\ud83c\udf7d\ufe0f Menu selection<\/p>\n                    <div class=\"flavor-reservation-starters\" style=\"display:none;margin-bottom:8px\"><strong style=\"color:#666;font-size:13px\">Starters<\/strong> <span class=\"flavor-reservation-starters-text\" style=\"font-size:13px\"><\/span><\/div>\n                    <div class=\"flavor-reservation-mains\" style=\"display:none;margin-bottom:8px\"><strong style=\"color:#666;font-size:13px\">Main courses<\/strong> <span class=\"flavor-reservation-mains-text\" style=\"font-size:13px\"><\/span><\/div>\n                    <div class=\"flavor-reservation-desserts\" style=\"display:none\"><strong style=\"color:#666;font-size:13px\">Desserts<\/strong> <span class=\"flavor-reservation-desserts-text\" style=\"font-size:13px\"><\/span><\/div>\n                <\/div>\n                <div class=\"flavor-manage-actions\">\n                    <button type=\"button\" class=\"flavor-btn flavor-btn-secondary\" onclick=\"flavorShowModify()\">Modify reservation<\/button>\n                    <button type=\"button\" class=\"flavor-btn flavor-btn-danger\" onclick=\"flavorCancelReservation()\">Cancel reservation<\/button>\n                <\/div>\n            <\/div>\n        <\/div>\n        <div class=\"flavor-manage-modify\" style=\"display:none\">\n            <h4>Modify reservation<\/h4>\n            <div class=\"flavor-field\"><label>Guests<\/label><select id=\"flavor-modify-guests\"><\/select><\/div>\n            <div class=\"flavor-fields-row\">\n                <div class=\"flavor-field\"><label>Date<\/label><input type=\"date\" id=\"flavor-modify-date\"><\/div>\n                <div class=\"flavor-field\"><label>Time<\/label><select id=\"flavor-modify-time\"><option value=\"\">Select a date to see available times<\/option><\/select><\/div>\n            <\/div>\n            <div class=\"flavor-fields-row\">\n                <div class=\"flavor-field\"><label>First name<\/label><input type=\"text\" id=\"flavor-modify-first-name\"><\/div>\n                <div class=\"flavor-field\"><label>Last name<\/label><input type=\"text\" id=\"flavor-modify-last-name\"><\/div>\n            <\/div>\n            <div class=\"flavor-fields-row\">\n                <div class=\"flavor-field\"><label>Email<\/label><input type=\"email\" id=\"flavor-modify-email\"><\/div>\n                <div class=\"flavor-field\"><label>Phone<\/label><input type=\"tel\" id=\"flavor-modify-phone\"><\/div>\n            <\/div>\n            <div class=\"flavor-fields-row\">\n                <div class=\"flavor-field\"><label>Allergies<\/label><input type=\"text\" id=\"flavor-modify-allergies\" placeholder=\"Gluten, lactose, nuts...\"><\/div>\n                <div class=\"flavor-field\"><label>Dietary restrictions<\/label><input type=\"text\" id=\"flavor-modify-dietary\" placeholder=\"Vegetarian, vegan, halal...\"><\/div>\n            <\/div>\n            <div class=\"flavor-field\"><label>Notes<\/label><textarea id=\"flavor-modify-notes\" placeholder=\"Special celebration, high chair...\"><\/textarea><\/div>\n            <div class=\"flavor-field\">\n                <label class=\"flavor-option-item flavor-option-single\"><input type=\"checkbox\" id=\"flavor-modify-shared-table\"><span class=\"flavor-option-box\"><span class=\"flavor-option-name\">I accept shared table<\/span><\/span><\/label>\n            <\/div>\n            <div style=\"margin-top:20px;padding-top:15px;border-top:1px solid #eee\">\n                <p style=\"margin:0 0 15px;font-weight:600;color:#92400e\">\ud83c\udf7d\ufe0f Menu selection<\/p>\n                <div class=\"flavor-field\"><label>Starters<\/label><textarea id=\"flavor-modify-starters\" placeholder=\"Ej: 2x Ensalada C\u00e9sar, 1x Sopa del d\u00eda...\"><\/textarea><\/div>\n                <div class=\"flavor-field\"><label>Main courses<\/label><textarea id=\"flavor-modify-mains\" placeholder=\"Ej: 1x Entrecot, 2x Lubina al horno...\"><\/textarea><\/div>\n                <div class=\"flavor-field\"><label>Desserts<\/label><textarea id=\"flavor-modify-desserts\" placeholder=\"Ej: 2x Tarta de queso, 1x Sorbete de lim\u00f3n...\"><\/textarea><\/div>\n            <\/div>\n            <div class=\"flavor-manage-actions\">\n                <button type=\"button\" class=\"flavor-btn flavor-btn-secondary\" onclick=\"flavorBackToResult()\">Back<\/button>\n                <button type=\"button\" class=\"flavor-btn flavor-btn-primary\" onclick=\"flavorSaveModification()\">Save changes<\/button>\n            <\/div>\n        <\/div>\n    <\/div>\n<\/div>\n\n<script src=\"https:\/\/js.stripe.com\/v3\/\"><\/script>\n\n<script>\n\/\/ == Container & Config ==\nvar flavorContainer = document.querySelector('.flavor-booking-container');\nvar flavorRestUrl = flavorContainer.dataset.restUrl;\nvar flavorRestaurantId = flavorContainer.dataset.restaurantId;\nvar flavorShortcodeKey = flavorContainer.dataset.shortcodeKey;\nvar flavorOpenDays = (flavorContainer.dataset.openDays || '1,2,3,4,5,6,0').split(',').map(function(d) { return parseInt(d); });\nvar flavorMinAdvanceHours = parseInt(flavorContainer.dataset.minAdvanceHours) || 0;\nvar flavorMaxAdvanceDays = parseInt(flavorContainer.dataset.maxAdvance) || 60;\nvar flavorTotalSteps = parseInt(flavorContainer.dataset.bookingFlowSteps) || 3;\nvar flavorShowSharedTable = parseInt(flavorContainer.dataset.showSharedTable) || 0;\nvar flavorMinGuests = parseInt(flavorContainer.dataset.minGuests) || 1;\nvar flavorMaxGuests = parseInt(flavorContainer.dataset.maxGuests) || 12;\nvar flavorBlockedDates = {};\n\nvar flavorRequireDeposit = parseInt(flavorContainer.dataset.requireDeposit) || 0;\nvar flavorDepositPerReservation = parseFloat(flavorContainer.dataset.depositPerReservation) || 0;\nvar flavorDepositPerPerson = parseFloat(flavorContainer.dataset.depositPerPerson) || 0;\nvar flavorStripeKey = flavorContainer.dataset.stripeKey || '';\nvar flavorStripe = null;\nvar flavorCardElement = null;\n\nvar flavorStep = 1;\nvar flavorData = { guests: 2, date: null, time: null, shared: false };\n\n\/\/ == i18n (from API translations) ==\nvar flavorI18n = {\"months\":[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],\"days\":[\"M\",\"T\",\"W\",\"T\",\"F\",\"S\",\"S\"],\"dayNames\":[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],\"loadingTimes\":\"Loading times...\",\"noTimesAvailable\":\"No times available for this date\",\"errorLoadingTimes\":\"Error loading times\",\"capacityFull\":\"Full capacity\",\"maxReservations\":\"Maximum reservations reached\",\"minAdvance\":\"Minimum advance time not met\",\"notAvailable\":\"Not available\",\"selectGuests\":\"Select number of guests\",\"selectDate\":\"Select a date\",\"selectTime\":\"Select a time\",\"nameRequired\":\"First name is required\",\"lastNameRequired\":\"Last name is required\",\"emailRequired\":\"Email is required\",\"emailInvalid\":\"Email format is invalid\",\"phoneRequired\":\"Phone is required\",\"phoneInvalid\":\"Phone must include country code and only numbers (e.g. +44600000000)\",\"acceptTerms\":\"You must accept the privacy policy\",\"reservationConfirmed\":\"Reservation confirmed!\",\"reservationSuccess\":\"Your reservation has been registered successfully.\",\"receiveEmail\":\"You will receive a confirmation email.\",\"newReservation\":\"New reservation\",\"error\":\"Error\",\"tryAgain\":\"Try again\",\"date\":\"Date:\",\"time\":\"Time:\",\"guests\":\"Guests:\",\"name\":\"First name:\",\"email\":\"Email:\",\"phone\":\"Phone:\",\"sharedTable\":\"Shared table:\",\"allergies\":\"Allergies:\",\"dietary\":\"Dietary restrictions:\",\"notes\":\"Notes:\",\"yes\":\"Yes\",\"no\":\"No\",\"people\":\"people\",\"person\":\"person\",\"confirmed\":\"Confirmed\",\"pending\":\"Pending\",\"cancelled\":\"Cancelled\",\"enterCode\":\"Enter the reservation code\",\"enterName\":\"Enter your first name\",\"enterLastName\":\"Enter your last name\",\"enterPhone\":\"Enter your phone\",\"enterDate\":\"Enter the reservation date\",\"enterTime\":\"Enter the reservation time\",\"reservationNotFound\":\"Reservation not found\",\"searchError\":\"Error searching for the reservation\",\"selectTimeFirst\":\"Select a time\",\"modifySuccess\":\"Reservation modified successfully\",\"modifyError\":\"Error modifying the reservation\",\"cancelConfirm\":\"Are you sure you want to cancel this reservation?\",\"cancelSuccess\":\"Reservation cancelled successfully\",\"cancelError\":\"Error cancelling the reservation\",\"loading\":\"Loading...\",\"noTimesError\":\"No times available for this date\",\"current\":\"(current)\",\"selectDateFirst\":\"Select a date to see available times\",\"paymentError\":\"Payment error\",\"paymentProcessing\":\"Processing...\",\"cardError\":\"Card error\",\"depositRequired\":\"A deposit of\",\"pendingPayment\":\"Pending payment\",\"paymentSuccess\":\"Payment successful\",\"depositPaid\":\"Deposit paid:\",\"perPerson\":\"per person\"};\n\n\/\/ == Calendar state ==\nvar flavorCalMonth, flavorCalYear;\nvar flavorMinDate, flavorMaxDate;\n\n(function() {\n    var now = new Date();\n    flavorMinDate = new Date(now.getTime() + (flavorMinAdvanceHours * 60 * 60 * 1000));\n    flavorMaxDate = new Date();\n    flavorMaxDate.setDate(flavorMaxDate.getDate() + flavorMaxAdvanceDays);\n    var firstAvail = new Date(flavorMinDate);\n    for (var i = 0; i < 60; i++) {\n        if (flavorOpenDays.indexOf(firstAvail.getDay()) !== -1) break;\n        firstAvail.setDate(firstAvail.getDate() + 1);\n    }\n    flavorCalMonth = firstAvail.getMonth();\n    flavorCalYear = firstAvail.getFullYear();\n})();\n\n\/\/ =====================\n\/\/ NAVIGATION\n\/\/ =====================\nfunction flavorGoStep(n) {\n    if (n < 1 || n > flavorTotalSteps) return;\n    flavorStep = n;\n    document.querySelectorAll('.flavor-panel').forEach(function(p) { p.classList.remove('active'); });\n    if (flavorTotalSteps === 2) {\n        \/\/ 2-step mode: step 1 = flavorPanel1 (reserva+datos), step 2 = flavorPanel3 (confirm)\n        if (n === 1) {\n            document.getElementById('flavorPanel1').classList.add('active');\n        } else {\n            document.getElementById('flavorPanel3').classList.add('active');\n        }\n    } else {\n        document.getElementById('flavorPanel' + n).classList.add('active');\n    }\n    flavorUpdateStepper();\n    if ((flavorTotalSteps === 3 && n === 3) || (flavorTotalSteps === 2 && n === 2)) {\n        flavorBuildSummary();\n        flavorInitStripe();\n    }\n}\n\nfunction flavorUpdateStepper() {\n    var steps = document.querySelectorAll('.flavor-step-ind');\n    steps.forEach(function(el) {\n        var s = parseInt(el.dataset.step);\n        el.classList.remove('active', 'done');\n        if (s < flavorStep) {\n            el.classList.add('done');\n            el.querySelector('.flavor-step-num').textContent = '\\u2713';\n        } else if (s === flavorStep) {\n            el.classList.add('active');\n            el.querySelector('.flavor-step-num').textContent = s;\n        } else {\n            el.querySelector('.flavor-step-num').textContent = s;\n        }\n    });\n    var line1 = document.getElementById('flavorLine1');\n    if (line1) line1.classList.toggle('filled', flavorStep > 1);\n    var line2 = document.getElementById('flavorLine2');\n    if (line2) line2.classList.toggle('filled', flavorStep > 2);\n}\n\n\/\/ =====================\n\/\/ CALENDAR\n\/\/ =====================\nfunction formatDateLocal(d) {\n    return d.getFullYear() + '-' + ('0' + (d.getMonth() + 1)).slice(-2) + '-' + ('0' + d.getDate()).slice(-2);\n}\n\nfunction flavorRenderCalendar() {\n    document.getElementById('flavorCalTitle').textContent = flavorI18n.months[flavorCalMonth] + ' ' + flavorCalYear;\n    var grid = document.getElementById('flavorCalGrid');\n    var today = new Date(); today.setHours(0,0,0,0);\n    var h = flavorI18n.days.map(function(d) { return '<div class=\"flavor-cal-dow\">' + d + '<\/div>'; }).join('');\n    var offset = (new Date(flavorCalYear, flavorCalMonth, 1).getDay() + 6) % 7;\n    var dim = new Date(flavorCalYear, flavorCalMonth + 1, 0).getDate();\n    for (var i = 0; i < offset; i++) h += '<div class=\"flavor-cal-day empty\"><\/div>';\n    var minStr = formatDateLocal(flavorMinDate);\n    var maxStr = formatDateLocal(flavorMaxDate);\n    for (var d = 1; d <= dim; d++) {\n        var date = new Date(flavorCalYear, flavorCalMonth, d);\n        var dateStr = formatDateLocal(date);\n        var isSel = flavorData.date === dateStr;\n        var isToday = date.toDateString() === today.toDateString();\n        var isPast = dateStr < minStr || dateStr > maxStr;\n        var isClosed = !isPast && flavorOpenDays.indexOf(date.getDay()) === -1;\n        var isBlocked = !isPast && !isClosed && flavorBlockedDates[dateStr];\n        var cls = 'flavor-cal-day';\n        if (isPast) cls += ' past';\n        else if (isClosed || isBlocked) cls += ' closed';\n        else if (isSel) cls += ' on';\n        else if (isToday) cls += ' today';\n        if (isPast || isClosed || isBlocked) {\n            h += '<div class=\"' + cls + '\">' + d + '<\/div>';\n        } else {\n            h += '<button type=\"button\" class=\"' + cls + '\" data-date=\"' + dateStr + '\">' + d + '<\/button>';\n        }\n    }\n    grid.innerHTML = h;\n    grid.querySelectorAll('.flavor-cal-day[data-date]').forEach(function(b) {\n        b.addEventListener('click', function() {\n            flavorData.date = b.dataset.date;\n            flavorData.time = null;\n            flavorRenderCalendar();\n            flavorLoadTimeSlots(flavorData.date);\n        });\n    });\n}\n\ndocument.getElementById('flavorCalPrev').addEventListener('click', function() {\n    var now = new Date();\n    if (flavorCalMonth <= now.getMonth() && flavorCalYear <= now.getFullYear()) return;\n    flavorCalMonth--;\n    if (flavorCalMonth < 0) { flavorCalMonth = 11; flavorCalYear--; }\n    flavorRenderCalendar();\n});\ndocument.getElementById('flavorCalNext').addEventListener('click', function() {\n    flavorCalMonth++;\n    if (flavorCalMonth > 11) { flavorCalMonth = 0; flavorCalYear++; }\n    flavorRenderCalendar();\n});\n\n\/\/ =====================\n\/\/ TIME SLOTS\n\/\/ =====================\nfunction flavorLoadTimeSlots(dateStr) {\n    var container = document.getElementById('flavorSlots');\n    var guests = flavorData.guests || 2;\n    container.innerHTML = '<p class=\"flavor-time-placeholder\">' + flavorI18n.loadingTimes + '<\/p>';\n    fetch(flavorRestUrl + 'restaurants\/' + flavorRestaurantId + '\/available-slots?date=' + dateStr + '&guests=' + guests)\n        .then(function(r) { return r.json(); })\n        .then(function(data) {\n            if (data.success && data.data && data.data.length > 0) {\n                var html = '';\n                data.data.forEach(function(slot) {\n                    var timeShort = slot.time.substring(0, 5);\n                    if (slot.available) {\n                        var cls = 'flavor-slot' + (flavorData.time === timeShort ? ' on' : '');\n                        html += '<button type=\"button\" class=\"' + cls + '\" data-t=\"' + timeShort + '\">' + timeShort + '<\/button>';\n                    } else {\n                        var reasonText = flavorI18n.notAvailable;\n                        if (slot.reason === 'capacity') reasonText = flavorI18n.capacityFull;\n                        else if (slot.reason === 'max_reservations') reasonText = flavorI18n.maxReservations;\n                        else if (slot.reason === 'min_advance') reasonText = flavorI18n.minAdvance;\n                        html += '<button type=\"button\" class=\"flavor-slot busy\" disabled data-tooltip=\"' + reasonText + '\">' + timeShort + '<\/button>';\n                    }\n                });\n                container.innerHTML = html;\n                container.querySelectorAll('.flavor-slot:not(.busy)').forEach(function(b) {\n                    b.addEventListener('click', function() {\n                        flavorData.time = b.dataset.t;\n                        container.querySelectorAll('.flavor-slot').forEach(function(s) { s.classList.remove('on'); });\n                        b.classList.add('on');\n                        flavorCheckStep1();\n                    });\n                });\n            } else {\n                container.innerHTML = '<p class=\"flavor-time-placeholder\">' + flavorI18n.noTimesAvailable + '<\/p>';\n            }\n        })\n        .catch(function() {\n            container.innerHTML = '<p class=\"flavor-time-placeholder\">' + flavorI18n.errorLoadingTimes + '<\/p>';\n        });\n}\n\n\/\/ =====================\n\/\/ CHIPS (Guests)\n\/\/ =====================\ndocument.getElementById('flavorChips').addEventListener('click', function(e) {\n    var c = e.target.closest('.flavor-chip');\n    if (!c) return;\n    flavorData.guests = parseInt(c.dataset.val);\n    document.querySelectorAll('.flavor-chip').forEach(function(x) { x.classList.remove('on'); });\n    c.classList.add('on');\n    if (flavorData.date) { flavorData.time = null; flavorLoadTimeSlots(flavorData.date); }\n    flavorCheckStep1();\n});\n\n\/\/ =====================\n\/\/ SHARED TABLE TOGGLE\n\/\/ =====================\nvar sharedToggle = document.getElementById('flavorSharedToggle');\nif (sharedToggle) {\n    sharedToggle.addEventListener('click', function() {\n        flavorData.shared = !flavorData.shared;\n        sharedToggle.classList.toggle('on', flavorData.shared);\n    });\n}\n\n\/\/ =====================\n\/\/ VALIDATIONS\n\/\/ =====================\nfunction flavorCheckStep1() {\n    var hasBooking = !!(flavorData.date && flavorData.time);\n    if (flavorTotalSteps === 2) {\n        \/\/ In 2-step mode, step 1 also contains data fields\n        var hasData = ['flavor-first-name','flavor-last-name','flavor-email','flavor-phone'].every(function(id) {\n            return document.getElementById(id).value.trim() !== '';\n        });\n        document.getElementById('flavorBtn1Next').disabled = !(hasBooking && hasData);\n    } else {\n        document.getElementById('flavorBtn1Next').disabled = !hasBooking;\n    }\n}\nfunction flavorCheckStep2() {\n    var ok = ['flavor-first-name','flavor-last-name','flavor-email','flavor-phone'].every(function(id) {\n        return document.getElementById(id).value.trim() !== '';\n    });\n    var btn2 = document.getElementById('flavorBtn2Next');\n    if (btn2) btn2.disabled = !ok;\n}\nfunction flavorCheckStep3() {\n    document.getElementById('flavorBtn3Confirm').disabled = !document.getElementById('flavor-accept-terms').checked;\n}\n['flavor-first-name','flavor-last-name','flavor-email','flavor-phone'].forEach(function(id) {\n    document.getElementById(id).addEventListener('input', function() {\n        flavorCheckStep2();\n        if (flavorTotalSteps === 2) flavorCheckStep1();\n    });\n});\ndocument.getElementById('flavor-accept-terms').addEventListener('change', flavorCheckStep3);\n\nfunction flavorValidateStep2() {\n    var fn = document.getElementById('flavor-first-name').value.trim();\n    var ln = document.getElementById('flavor-last-name').value.trim();\n    var em = document.getElementById('flavor-email').value.trim();\n    var ph = document.getElementById('flavor-phone').value.trim();\n    if (!fn) { flavorToast(flavorI18n.nameRequired); return false; }\n    if (!ln) { flavorToast(flavorI18n.lastNameRequired); return false; }\n    if (!em) { flavorToast(flavorI18n.emailRequired); return false; }\n    if (!\/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$\/.test(em)) { flavorToast(flavorI18n.emailInvalid); return false; }\n    if (!ph) { flavorToast(flavorI18n.phoneRequired); return false; }\n    return true;\n}\n\n\/\/ =====================\n\/\/ SUMMARY\n\/\/ =====================\nfunction flavorBuildSummary() {\n    document.getElementById('sumGuests').textContent = flavorData.guests + ' ' + (flavorData.guests === 1 ? flavorI18n.person : flavorI18n.people);\n    if (flavorData.date) {\n        var parts = flavorData.date.split('-');\n        var d = new Date(parseInt(parts[0]), parseInt(parts[1]) - 1, parseInt(parts[2]));\n        var dn = flavorI18n.dayNames[d.getDay()].toLowerCase();\n        document.getElementById('sumDate').textContent = dn + ', ' + parseInt(parts[2]) + ' de ' + flavorI18n.months[parseInt(parts[1]) - 1].toLowerCase() + ' ' + parts[0];\n    }\n    document.getElementById('sumTime').textContent = flavorData.time ? flavorData.time + 'h' : '\\u2014';\n    var fn = document.getElementById('flavor-first-name').value.trim();\n    var ln = document.getElementById('flavor-last-name').value.trim();\n    document.getElementById('sumName').textContent = (fn + ' ' + ln).trim() || '\\u2014';\n    document.getElementById('sumEmail').textContent = document.getElementById('flavor-email').value.trim() || '\\u2014';\n    var pre = document.getElementById('flavor-prefix').value;\n    var ph = document.getElementById('flavor-phone').value.trim();\n    document.getElementById('sumPhone').textContent = ph ? pre + ph : '\\u2014';\n    document.getElementById('sumShared').textContent = flavorData.shared ? flavorI18n.yes : flavorI18n.no;\n    document.getElementById('sumNotes').textContent = document.getElementById('flavor-notes').value.trim() || '\\u2014';\n    var depositAmount = flavorCalculateDeposit();\n    var depositBox = document.getElementById('flavorDepositBox');\n    var cardBox = document.getElementById('flavorCardInputBox');\n    if (depositAmount > 0 && flavorStripeKey) {\n        depositBox.style.display = 'block';\n        cardBox.style.display = 'block';\n        document.getElementById('flavorDepAmount').textContent = depositAmount.toFixed(2) + ' \\u20AC';\n        var perPerson = flavorDepositPerPerson > 0 ? (flavorData.guests + ' \\u00D7 ' + flavorDepositPerPerson.toFixed(2) + ' \\u20AC ' + flavorI18n.perPerson) : '';\n        document.getElementById('flavorDepSub').textContent = perPerson;\n        document.getElementById('flavor-submit-text').style.display = 'none';\n        document.getElementById('flavor-submit-text-pay').style.display = 'inline';\n    } else {\n        depositBox.style.display = 'none';\n        cardBox.style.display = 'none';\n        document.getElementById('flavor-submit-text').style.display = 'inline';\n        document.getElementById('flavor-submit-text-pay').style.display = 'none';\n    }\n}\n\n\/\/ =====================\n\/\/ NAVIGATION BUTTONS\n\/\/ =====================\ndocument.getElementById('flavorBtn1Next').addEventListener('click', function() {\n    if (!flavorData.guests) { flavorToast(flavorI18n.selectGuests); return; }\n    if (!flavorData.date) { flavorToast(flavorI18n.selectDate); return; }\n    if (!flavorData.time) { flavorToast(flavorI18n.selectTime); return; }\n    if (flavorTotalSteps === 2 && !flavorValidateStep2()) return;\n    flavorGoStep(2);\n});\nvar btn2Back = document.getElementById('flavorBtn2Back');\nif (btn2Back) btn2Back.addEventListener('click', function() { flavorGoStep(1); });\nvar btn2Next = document.getElementById('flavorBtn2Next');\nif (btn2Next) btn2Next.addEventListener('click', function() {\n    if (!flavorValidateStep2()) return;\n    flavorGoStep(3);\n});\ndocument.getElementById('flavorBtn3Back').addEventListener('click', function() {\n    flavorGoStep(flavorTotalSteps === 2 ? 1 : 2);\n});\ndocument.getElementById('flavorBtn3Confirm').addEventListener('click', function() { flavorSubmit(); });\n\n\/\/ Stepper click\ndocument.querySelectorAll('.flavor-step-ind').forEach(function(el) {\n    el.addEventListener('click', function() {\n        var target = parseInt(el.dataset.step);\n        if (target < flavorStep) flavorGoStep(target);\n    });\n});\n\n\/\/ =====================\n\/\/ DEPOSIT & STRIPE\n\/\/ =====================\nfunction flavorCalculateDeposit() {\n    if (!flavorRequireDeposit) return 0;\n    return flavorDepositPerReservation + (flavorDepositPerPerson * (flavorData.guests || 0));\n}\nfunction flavorInitStripe() {\n    var depositAmount = flavorCalculateDeposit();\n    if (depositAmount > 0 && flavorStripeKey && !flavorStripe) {\n        flavorStripe = Stripe(flavorStripeKey);\n        var elements = flavorStripe.elements({locale: 'es'});\n        flavorCardElement = elements.create('card', {\n            style: {\n                base: { fontSize: '14px', color: '#1a1a1a', fontFamily: 'Inter, -apple-system, sans-serif', '::placeholder': { color: '#c0c0c0' } },\n                invalid: { color: '#dc2626' }\n            }\n        });\n        flavorCardElement.mount('#flavor-card-element');\n        flavorCardElement.on('change', function(event) {\n            document.getElementById('flavor-card-errors').textContent = event.error ? event.error.message : '';\n        });\n    }\n}\n\n\/\/ =====================\n\/\/ SUBMIT\n\/\/ =====================\nfunction flavorSubmit() {\n    if (!document.getElementById('flavor-accept-terms').checked) { flavorToast(flavorI18n.acceptTerms); return; }\n    \/\/ In 2-step mode, validate step2 fields before submit\n    if (flavorTotalSteps === 2 && !flavorValidateStep2()) return;\n    var depositAmount = flavorCalculateDeposit();\n    if (depositAmount > 0 && flavorStripeKey && flavorCardElement) { flavorSubmitWithPayment(); }\n    else { flavorSubmitWithoutPayment(); }\n}\n\nfunction flavorGetPostData() {\n    var prefix = document.getElementById('flavor-prefix').value;\n    var phone = document.getElementById('flavor-phone').value.trim();\n    return {\n        restaurant_id: flavorRestaurantId,\n        shortcode_key: flavorShortcodeKey,\n        guests: flavorData.guests,\n        reservation_date: flavorData.date,\n        reservation_time: flavorData.time,\n        first_name: document.getElementById('flavor-first-name').value,\n        last_name: document.getElementById('flavor-last-name').value,\n        email: document.getElementById('flavor-email').value,\n        phone: prefix + phone,\n        allergies: document.getElementById('flavor-allergies').value,\n        dietary_restrictions: '',\n        notes: document.getElementById('flavor-notes').value,\n        shared_table: flavorData.shared ? 1 : 0\n    };\n}\n\nfunction flavorSubmitWithoutPayment() {\n    document.querySelector('.flavor-loader').style.display = 'flex';\n    fetch(flavorRestUrl + 'reservations', {\n        method: 'POST',\n        headers: {'Content-Type': 'application\/json'},\n        body: JSON.stringify(flavorGetPostData())\n    })\n    .then(function(r) { return r.json(); })\n    .then(function(r) {\n        document.querySelector('.flavor-loader').style.display = 'none';\n        if (r.success) { flavorShowSuccess(r.reservation.reservation || r.reservation); }\n        else { flavorShowError(r.message || 'Error al crear la reserva'); }\n    })\n    .catch(function() {\n        document.querySelector('.flavor-loader').style.display = 'none';\n        flavorShowError(flavorI18n.error);\n    });\n}\n\nfunction flavorSubmitWithPayment() {\n    var submitBtn = document.getElementById('flavorBtn3Confirm');\n    submitBtn.disabled = true;\n    submitBtn.innerHTML = '<span style=\"display:inline-flex;align-items:center;gap:8px;\"><svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" style=\"animation:flavorSpin 1s linear infinite;\"><circle cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" stroke-width=\"4\" fill=\"none\" opacity=\"0.3\"><\/circle><path fill=\"currentColor\" d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z\"><\/path><\/svg>' + flavorI18n.paymentProcessing + '<\/span>';\n    var postData = flavorGetPostData();\n    var customerName = postData.first_name + ' ' + postData.last_name;\n    var customerEmail = postData.email;\n    fetch(flavorRestUrl + 'payment\/create-intent', {\n        method: 'POST',\n        headers: {'Content-Type': 'application\/json'},\n        body: JSON.stringify({ restaurant_id: flavorRestaurantId, guests: flavorData.guests, name: customerName, email: customerEmail })\n    })\n    .then(function(resp) { return resp.json(); })\n    .then(function(paymentData) {\n        if (!paymentData.success) throw new Error(paymentData.message || 'Error al iniciar el pago');\n        return flavorStripe.confirmCardPayment(paymentData.data.client_secret, {\n            payment_method: { card: flavorCardElement, billing_details: { name: customerName, email: customerEmail } }\n        }).then(function(result) {\n            if (result.error) throw new Error(result.error.message);\n            return result.paymentIntent.id;\n        });\n    })\n    .then(function(paymentIntentId) {\n        postData.payment_intent_id = paymentIntentId;\n        postData.deposit_paid = 1;\n        return fetch(flavorRestUrl + 'reservations', { method: 'POST', headers: {'Content-Type': 'application\/json'}, body: JSON.stringify(postData) });\n    })\n    .then(function(response) { return response.json(); })\n    .then(function(r) {\n        if (!r.success) throw new Error(r.message || 'Error al crear la reserva');\n        submitBtn.disabled = false;\n        flavorShowSuccess(r.reservation.reservation || r.reservation);\n    })\n    .catch(function(error) {\n        submitBtn.disabled = false;\n        submitBtn.innerHTML = '<span>' + flavorI18n.paymentProcessing + '<\/span>';\n        document.getElementById('flavor-card-errors').textContent = error.message;\n        flavorToast(error.message);\n    });\n}\n\n\/\/ =====================\n\/\/ SUCCESS \/ ERROR\n\/\/ =====================\nfunction flavorShowSuccess(reservation) {\n    var code = reservation.reservation_code || reservation.id || '';\n    var dateStr = '\\u2014';\n    if (flavorData.date) {\n        var parts = flavorData.date.split('-');\n        var d = new Date(parseInt(parts[0]), parseInt(parts[1]) - 1, parseInt(parts[2]));\n        dateStr = d.toLocaleDateString('es-ES', {weekday:'long', year:'numeric', month:'long', day:'numeric'});\n    }\n    var postData = flavorGetPostData();\n    var shared = flavorData.shared ? flavorI18n.yes : flavorI18n.no;\n    var allergiesHtml = postData.allergies && postData.allergies.trim() ? '<div class=\"flavor-result-item\"><span>' + flavorI18n.allergies + '<\/span> <strong>' + postData.allergies + '<\/strong><\/div>' : '';\n    var notesHtml = postData.notes && postData.notes.trim() ? '<div class=\"flavor-result-item\"><span>' + flavorI18n.notes + '<\/span> <strong>' + postData.notes + '<\/strong><\/div>' : '';\n    var depositHtml = '';\n    var depositAmount = flavorCalculateDeposit();\n    if (depositAmount > 0) {\n        depositHtml = '<div class=\"flavor-result-item\" style=\"background:#d1fae5;padding:10px;border-radius:6px;margin-top:10px;\"><span>\\uD83D\\uDCB3 ' + flavorI18n.depositPaid + '<\/span> <strong style=\"color:#059669\">' + depositAmount.toFixed(2) + ' \\u20AC<\/strong><\/div>';\n    }\n    flavorContainer.innerHTML =\n        '<div class=\"flavor-result flavor-result-success\">' +\n        '<div class=\"flavor-result-icon\">\\u2713<\/div>' +\n        '<h3>' + flavorI18n.reservationConfirmed + '<\/h3>' +\n        '<p>' + flavorI18n.reservationSuccess + '<\/p>' +\n        '<div class=\"flavor-result-code\">' + code + '<\/div>' +\n        '<div class=\"flavor-result-details\">' +\n        '<div class=\"flavor-result-item\"><span>' + flavorI18n.date + '<\/span> <strong>' + dateStr + '<\/strong><\/div>' +\n        '<div class=\"flavor-result-item\"><span>' + flavorI18n.time + '<\/span> <strong>' + flavorData.time + '<\/strong><\/div>' +\n        '<div class=\"flavor-result-item\"><span>' + flavorI18n.guests + '<\/span> <strong>' + flavorData.guests + ' ' + flavorI18n.people + '<\/strong><\/div>' +\n        '<div class=\"flavor-result-item\"><span>' + flavorI18n.name + '<\/span> <strong>' + postData.first_name + ' ' + postData.last_name + '<\/strong><\/div>' +\n        '<div class=\"flavor-result-item\"><span>' + flavorI18n.email + '<\/span> <strong>' + postData.email + '<\/strong><\/div>' +\n        '<div class=\"flavor-result-item\"><span>' + flavorI18n.phone + '<\/span> <strong>' + postData.phone + '<\/strong><\/div>' +\n        '<div class=\"flavor-result-item\"><span>' + flavorI18n.sharedTable + '<\/span> <strong>' + shared + '<\/strong><\/div>' +\n        allergiesHtml + notesHtml + depositHtml +\n        '<\/div>' +\n        '<p style=\"color:#666;margin-top:20px\">' + flavorI18n.receiveEmail + '<\/p>' +\n        '<button class=\"flavor-btn\" onclick=\"location.reload()\">' + flavorI18n.newReservation + '<\/button>' +\n        '<\/div>';\n}\n\nfunction flavorShowError(message) {\n    flavorContainer.innerHTML =\n        '<div class=\"flavor-result flavor-result-error\">' +\n        '<div class=\"flavor-result-icon\">\\u2717<\/div>' +\n        '<h3>' + flavorI18n.error + '<\/h3>' +\n        '<p>' + message + '<\/p>' +\n        '<button class=\"flavor-btn\" onclick=\"location.reload()\">' + flavorI18n.tryAgain + '<\/button>' +\n        '<\/div>';\n}\n\n\/\/ =====================\n\/\/ TOAST\n\/\/ =====================\nfunction flavorToast(message, type) {\n    type = type || 'warning';\n    var existing = document.querySelector('.flavor-toast-modal');\n    var existingOverlay = document.querySelector('.flavor-toast-overlay');\n    if (existing) existing.remove();\n    if (existingOverlay) existingOverlay.remove();\n    var overlay = document.createElement('div');\n    overlay.className = 'flavor-toast-overlay';\n    document.body.appendChild(overlay);\n    var toast = document.createElement('div');\n    toast.className = 'flavor-toast-modal';\n    toast.innerHTML = '<div class=\"flavor-toast-message\">' + message + '<\/div>';\n    document.body.appendChild(toast);\n    function closeToast() {\n        toast.classList.remove('show');\n        overlay.classList.remove('show');\n        setTimeout(function() { toast.remove(); overlay.remove(); }, 250);\n    }\n    overlay.onclick = closeToast;\n    setTimeout(function() { overlay.classList.add('show'); toast.classList.add('show'); }, 10);\n    setTimeout(closeToast, 2500);\n}\n\n\/\/ =====================\n\/\/ BLOCKED DATES & INIT\n\/\/ =====================\nfetch(flavorRestUrl + 'restaurants\/' + flavorRestaurantId + '\/blocked-dates')\n    .then(function(r) { return r.json(); })\n    .then(function(data) {\n        if (data.success && data.data) {\n            flavorBlockedDates = data.data;\n            flavorRenderCalendar();\n            flavorSelectFirstAvailableDate();\n        }\n    })\n    .catch(function() { flavorSelectFirstAvailableDate(); });\n\nfunction flavorSelectFirstAvailableDate() {\n    var today = new Date(); today.setHours(0,0,0,0);\n    for (var i = 0; i <= flavorMaxAdvanceDays; i++) {\n        var check = new Date(today);\n        check.setDate(today.getDate() + i);\n        var dateStr = formatDateLocal(check);\n        if (flavorOpenDays.indexOf(check.getDay()) === -1) continue;\n        if (flavorBlockedDates[dateStr]) continue;\n        if (i === 0) { var hoursLeft = 24 - new Date().getHours(); if (hoursLeft < flavorMinAdvanceHours) continue; }\n        flavorSelectDate(dateStr);\n        return;\n    }\n}\n\nfunction flavorSelectDate(dateStr) {\n    flavorData.date = dateStr;\n    flavorData.time = null;\n    flavorRenderCalendar();\n    flavorLoadTimeSlots(dateStr);\n}\n\n\/\/ =====================\n\/\/ GESTION DE RESERVAS\n\/\/ =====================\nvar flavorCurrentReservation = null;\n\nfunction flavorShowManage() {\n    document.querySelectorAll('.flavor-panel').forEach(function(s) { s.style.display = 'none'; });\n    document.querySelector('.flavor-stepper').style.display = 'none';\n    document.querySelector('.flavor-manage-view').style.display = 'block';\n    document.querySelector('.flavor-manage-search').style.display = 'block';\n    document.querySelector('.flavor-manage-result').style.display = 'none';\n    document.querySelector('.flavor-manage-modify').style.display = 'none';\n}\n\nfunction flavorHideManage() {\n    document.querySelector('.flavor-manage-view').style.display = 'none';\n    document.querySelectorAll('.flavor-panel').forEach(function(s) { s.style.display = 'none'; });\n    document.getElementById('flavorPanel1').style.display = 'block';\n    document.getElementById('flavorPanel1').classList.add('active');\n    document.querySelector('.flavor-stepper').style.display = 'flex';\n    flavorStep = 1;\n    flavorUpdateStepper();\n    flavorCurrentReservation = null;\n}\n\nfunction flavorManageTab(tab) {\n    document.querySelectorAll('.flavor-manage-tab').forEach(function(t) { t.classList.remove('active'); });\n    document.querySelectorAll('.flavor-manage-tab-content').forEach(function(c) { c.classList.remove('active'); });\n    document.querySelector('.flavor-manage-tab-content[data-tab=\"' + tab + '\"]').classList.add('active');\n    event.target.classList.add('active');\n}\n\nfunction flavorSearchByCode() {\n    var code = document.getElementById('flavor-manage-code').value.trim();\n    if (!code) { flavorToast(flavorI18n.enterCode); return; }\n    flavorSearchReservation({ code: code });\n}\n\nfunction flavorSearchByData() {\n    var firstName = document.getElementById('flavor-manage-firstname').value.trim();\n    var lastName = document.getElementById('flavor-manage-lastname').value.trim();\n    var phone = document.getElementById('flavor-manage-phone').value.trim();\n    var date = document.getElementById('flavor-manage-date').value;\n    var time = document.getElementById('flavor-manage-time').value;\n    if (!firstName) { flavorToast(flavorI18n.enterName); return; }\n    if (!lastName) { flavorToast(flavorI18n.enterLastName); return; }\n    if (!phone) { flavorToast(flavorI18n.enterPhone); return; }\n    if (!date) { flavorToast(flavorI18n.enterDate); return; }\n    if (!time) { flavorToast(flavorI18n.enterTime); return; }\n    flavorSearchReservation({ first_name: firstName, last_name: lastName, phone: phone, date: date, time: time + ':00' });\n}\n\nfunction flavorSearchReservation(params) {\n    document.querySelector('.flavor-loader').style.display = 'flex';\n    var url = flavorRestUrl + 'reservations\/search?restaurant_id=' + flavorRestaurantId;\n    if (params.code) { url += '&code=' + encodeURIComponent(params.code); }\n    else {\n        url += '&first_name=' + encodeURIComponent(params.first_name);\n        url += '&last_name=' + encodeURIComponent(params.last_name);\n        url += '&phone=' + encodeURIComponent(params.phone);\n        url += '&date=' + encodeURIComponent(params.date);\n        url += '&time=' + encodeURIComponent(params.time);\n    }\n    fetch(url)\n        .then(function(r) { return r.json(); })\n        .then(function(data) {\n            document.querySelector('.flavor-loader').style.display = 'none';\n            if (data.success && data.data) { flavorCurrentReservation = data.data; flavorShowReservationResult(data.data); }\n            else { flavorToast(data.message || flavorI18n.reservationNotFound, 'error'); }\n        })\n        .catch(function() { document.querySelector('.flavor-loader').style.display = 'none'; flavorToast(flavorI18n.searchError, 'error'); });\n}\n\nfunction flavorShowReservationResult(res) {\n    document.querySelector('.flavor-manage-search').style.display = 'none';\n    document.querySelector('.flavor-manage-result').style.display = 'block';\n    document.querySelector('.flavor-manage-modify').style.display = 'none';\n    var dateParts = res.reservation_date.split('-');\n    var dateStr = dateParts[2] + '\/' + dateParts[1] + '\/' + dateParts[0];\n    var statusText = flavorI18n.confirmed, statusClass = 'confirmed';\n    if (res.status === 'pending') { statusText = flavorI18n.pending; statusClass = 'pending'; }\n    if (res.status === 'cancelled') { statusText = flavorI18n.cancelled; statusClass = 'cancelled'; }\n    document.querySelector('.flavor-reservation-code').textContent = res.reservation_code;\n    document.querySelector('.flavor-reservation-status').textContent = statusText;\n    document.querySelector('.flavor-reservation-status').className = 'flavor-reservation-status ' + statusClass;\n    document.querySelector('.flavor-reservation-date').textContent = dateStr;\n    document.querySelector('.flavor-reservation-time').textContent = res.reservation_time.substring(0, 5);\n    document.querySelector('.flavor-reservation-guests').textContent = res.guests + ' ' + flavorI18n.people;\n    document.querySelector('.flavor-reservation-name').textContent = res.first_name + ' ' + res.last_name;\n    document.querySelector('.flavor-reservation-email').textContent = res.email || '';\n    document.querySelector('.flavor-reservation-phone').textContent = res.phone || '';\n    var allergiesRow = document.querySelector('.flavor-reservation-allergies');\n    if (res.allergies && res.allergies.trim()) { allergiesRow.style.display = 'flex'; document.querySelector('.flavor-reservation-allergies-text').textContent = res.allergies; } else { allergiesRow.style.display = 'none'; }\n    var dietaryRow = document.querySelector('.flavor-reservation-dietary');\n    if (res.dietary_restrictions && res.dietary_restrictions.trim()) { dietaryRow.style.display = 'flex'; document.querySelector('.flavor-reservation-dietary-text').textContent = res.dietary_restrictions; } else { dietaryRow.style.display = 'none'; }\n    var notesRow = document.querySelector('.flavor-reservation-notes');\n    if (res.notes && res.notes.trim()) { notesRow.style.display = 'flex'; document.querySelector('.flavor-reservation-notes-text').textContent = res.notes; } else { notesRow.style.display = 'none'; }\n    var menuSection = document.querySelector('.flavor-reservation-menu');\n    var hasMenu = (res.menu_starters && res.menu_starters.trim()) || (res.menu_mains && res.menu_mains.trim()) || (res.menu_desserts && res.menu_desserts.trim());\n    if (hasMenu) {\n        menuSection.style.display = 'block';\n        var st = document.querySelector('.flavor-reservation-starters'); if (res.menu_starters && res.menu_starters.trim()) { st.style.display = 'block'; document.querySelector('.flavor-reservation-starters-text').textContent = res.menu_starters; } else { st.style.display = 'none'; }\n        var mn = document.querySelector('.flavor-reservation-mains'); if (res.menu_mains && res.menu_mains.trim()) { mn.style.display = 'block'; document.querySelector('.flavor-reservation-mains-text').textContent = res.menu_mains; } else { mn.style.display = 'none'; }\n        var ds = document.querySelector('.flavor-reservation-desserts'); if (res.menu_desserts && res.menu_desserts.trim()) { ds.style.display = 'block'; document.querySelector('.flavor-reservation-desserts-text').textContent = res.menu_desserts; } else { ds.style.display = 'none'; }\n    } else { menuSection.style.display = 'none'; }\n    var actionsDiv = document.querySelector('.flavor-manage-actions');\n    if (res.status === 'cancelled') { actionsDiv.style.display = 'none'; } else { actionsDiv.style.display = 'flex'; }\n}\n\nfunction flavorShowModify() {\n    document.querySelector('.flavor-manage-result').style.display = 'none';\n    document.querySelector('.flavor-manage-modify').style.display = 'block';\n    var res = flavorCurrentReservation;\n    var select = document.getElementById('flavor-modify-guests');\n    select.innerHTML = '';\n    for (var i = flavorMinGuests; i <= Math.min(flavorMaxGuests, 12); i++) {\n        var opt = document.createElement('option');\n        opt.value = i; opt.textContent = i + ' ' + (i === 1 ? flavorI18n.person : flavorI18n.people);\n        if (i === parseInt(res.guests)) opt.selected = true;\n        select.appendChild(opt);\n    }\n    document.getElementById('flavor-modify-date').value = res.reservation_date;\n    document.getElementById('flavor-modify-first-name').value = res.first_name || '';\n    document.getElementById('flavor-modify-last-name').value = res.last_name || '';\n    document.getElementById('flavor-modify-email').value = res.email || '';\n    document.getElementById('flavor-modify-phone').value = res.phone || '';\n    document.getElementById('flavor-modify-allergies').value = res.allergies || '';\n    document.getElementById('flavor-modify-dietary').value = res.dietary_restrictions || '';\n    document.getElementById('flavor-modify-notes').value = res.notes || '';\n    document.getElementById('flavor-modify-shared-table').checked = parseInt(res.shared_table) === 1;\n    document.getElementById('flavor-modify-starters').value = res.menu_starters || '';\n    document.getElementById('flavor-modify-mains').value = res.menu_mains || '';\n    document.getElementById('flavor-modify-desserts').value = res.menu_desserts || '';\n    flavorLoadModifyTimeSlots(res.reservation_date);\n}\n\nfunction flavorLoadModifyTimeSlots(date) {\n    var select = document.getElementById('flavor-modify-time');\n    select.innerHTML = '<option value=\"\">' + flavorI18n.loadingTimes + '<\/option>';\n    var guests = document.getElementById('flavor-modify-guests').value;\n    fetch(flavorRestUrl + 'restaurants\/' + flavorRestaurantId + '\/available-slots?date=' + date + '&guests=' + guests)\n        .then(function(r) { return r.json(); })\n        .then(function(data) {\n            select.innerHTML = '';\n            if (data.success && data.data && data.data.length > 0) {\n                data.data.forEach(function(slot) {\n                    if (slot.available) { var opt = document.createElement('option'); opt.value = slot.time.substring(0, 5); opt.textContent = slot.time.substring(0, 5); select.appendChild(opt); }\n                });\n                var currentTime = flavorCurrentReservation.reservation_time;\n                var hasCurrentTime = false;\n                for (var i = 0; i < select.options.length; i++) { if (select.options[i].value === currentTime) { hasCurrentTime = true; break; } }\n                if (!hasCurrentTime && date === flavorCurrentReservation.reservation_date) {\n                    var opt = document.createElement('option'); opt.value = currentTime; opt.textContent = currentTime.substring(0, 5) + ' ' + flavorI18n.current; opt.selected = true; select.insertBefore(opt, select.firstChild);\n                }\n            } else { select.innerHTML = '<option value=\"\">' + flavorI18n.noTimesError + '<\/option>'; }\n        })\n        .catch(function() { select.innerHTML = '<option value=\"\">' + flavorI18n.errorLoadingTimes + '<\/option>'; });\n}\n\ndocument.getElementById('flavor-modify-date').addEventListener('change', function() { flavorLoadModifyTimeSlots(this.value); });\n\nfunction flavorBackToResult() {\n    document.querySelector('.flavor-manage-modify').style.display = 'none';\n    document.querySelector('.flavor-manage-result').style.display = 'block';\n}\n\nfunction flavorSaveModification() {\n    if (!flavorCurrentReservation) return;\n    var newTime = document.getElementById('flavor-modify-time').value;\n    if (!newTime) { flavorToast(flavorI18n.selectTimeFirst); return; }\n    document.querySelector('.flavor-loader').style.display = 'flex';\n    fetch(flavorRestUrl + 'reservations\/' + flavorCurrentReservation.id + '\/modify', {\n        method: 'PUT',\n        headers: { 'Content-Type': 'application\/json' },\n        body: JSON.stringify({\n            guests: parseInt(document.getElementById('flavor-modify-guests').value),\n            reservation_date: document.getElementById('flavor-modify-date').value,\n            reservation_time: newTime,\n            first_name: document.getElementById('flavor-modify-first-name').value,\n            last_name: document.getElementById('flavor-modify-last-name').value,\n            email: document.getElementById('flavor-modify-email').value,\n            phone: document.getElementById('flavor-modify-phone').value,\n            allergies: document.getElementById('flavor-modify-allergies').value,\n            dietary_restrictions: document.getElementById('flavor-modify-dietary').value,\n            notes: document.getElementById('flavor-modify-notes').value,\n            shared_table: document.getElementById('flavor-modify-shared-table').checked ? 1 : 0,\n            menu_starters: document.getElementById('flavor-modify-starters').value,\n            menu_mains: document.getElementById('flavor-modify-mains').value,\n            menu_desserts: document.getElementById('flavor-modify-desserts').value\n        })\n    })\n    .then(function(r) { return r.json(); })\n    .then(function(data) {\n        document.querySelector('.flavor-loader').style.display = 'none';\n        if (data.success) { flavorCurrentReservation = data.data; flavorShowReservationResult(data.data); flavorToast(flavorI18n.modifySuccess, 'success'); }\n        else { flavorToast(data.message || flavorI18n.modifyError, 'error'); }\n    })\n    .catch(function() { document.querySelector('.flavor-loader').style.display = 'none'; flavorToast(flavorI18n.modifyError, 'error'); });\n}\n\nfunction flavorCancelReservation() {\n    if (!flavorCurrentReservation) return;\n    if (!confirm(flavorI18n.cancelConfirm)) return;\n    document.querySelector('.flavor-loader').style.display = 'flex';\n    fetch(flavorRestUrl + 'reservations\/' + flavorCurrentReservation.id + '\/cancel-public', { method: 'PUT', headers: { 'Content-Type': 'application\/json' } })\n    .then(function(r) { return r.json(); })\n    .then(function(data) {\n        document.querySelector('.flavor-loader').style.display = 'none';\n        if (data.success) { flavorCurrentReservation.status = 'cancelled'; flavorShowReservationResult(flavorCurrentReservation); flavorToast(flavorI18n.cancelSuccess, 'success'); }\n        else { flavorToast(data.message || flavorI18n.cancelError, 'error'); }\n    })\n    .catch(function() { document.querySelector('.flavor-loader').style.display = 'none'; flavorToast(flavorI18n.cancelError, 'error'); });\n}\n\n\/\/ == Init ==\nflavorRenderCalendar();\nflavorCheckStep1();\n\n\/\/ Detect manage_code in URL\n(function() {\n    var urlParams = new URLSearchParams(window.location.search);\n    var manageCode = urlParams.get('manage_code');\n    if (manageCode || window.location.hash === '#manage') {\n        flavorShowManage();\n        setTimeout(function() { var el = document.getElementById('manage'); if (el) { window.scrollTo({ top: window.pageYOffset + el.getBoundingClientRect().top - 20, behavior: 'smooth' }); } }, 500);\n        if (manageCode) { document.getElementById('flavor-manage-code').value = manageCode; setTimeout(function() { flavorSearchReservation({ code: manageCode }); }, 300); }\n    }\n})();\n<\/script>\n\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9826735 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9826735\" data-element_type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-13c2033\" data-id=\"13c2033\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-0499251 elementor-widget elementor-widget-image\" data-id=\"0499251\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"1920\" height=\"1280\" src=\"https:\/\/treurer.com\/wp-content\/uploads\/Restaurante-Qanat-Treurer.jpg\" class=\"attachment-full size-full wp-image-44265\" alt=\"\" srcset=\"https:\/\/treurer.com\/wp-content\/uploads\/Restaurante-Qanat-Treurer.jpg 1920w, https:\/\/treurer.com\/wp-content\/uploads\/Restaurante-Qanat-Treurer-768x512.jpg 768w, https:\/\/treurer.com\/wp-content\/uploads\/Restaurante-Qanat-Treurer-1536x1024.jpg 1536w, https:\/\/treurer.com\/wp-content\/uploads\/Restaurante-Qanat-Treurer-300x200.jpg 300w, https:\/\/treurer.com\/wp-content\/uploads\/Restaurante-Qanat-Treurer-600x400.jpg 600w, https:\/\/treurer.com\/wp-content\/uploads\/Restaurante-Qanat-Treurer-64x43.jpg 64w\" sizes=\"(max-width: 1920px) 100vw, 1920px\" title=\"\">\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-9e09c89\" data-id=\"9e09c89\" data-element_type=\"column\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-cd5fe70 elementor-widget elementor-widget-heading\" data-id=\"cd5fe70\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">Qanat<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-58561fb elementor-widget elementor-widget-heading\" data-id=\"58561fb\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"elementor-heading-title elementor-size-default\">Led by Sonia Guti\u00e9rrez, Qanat was born out of the Miralles Guti\u00e9rrez family\u2019s desire to expand the Finca Treurer experience, opening up its landscape, history, and cuisine to those seeking an authentic experience in Mallorca. Inspired by the ancient 12th-century Treurer fountain, which for generations provided water and relief, Qanat has now become a place to savor culture, tradition, and the essence of the Mediterranean.\n<\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-e1b763d elementor-section-full_width elementor-hidden-tablet elementor-hidden-mobile elementor-section-height-default elementor-section-height-default\" data-id=\"e1b763d\" data-element_type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-d9fde50\" data-id=\"d9fde50\" data-element_type=\"column\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-77d5c32 elementor-widget elementor-widget-heading\" data-id=\"77d5c32\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">Fine dining in Mallorca and local produce<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-cce8b3d elementor-widget elementor-widget-heading\" data-id=\"cce8b3d\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"elementor-heading-title elementor-size-default\">A high-quality restaurant in Mallorca, where local ingredients, farm-to-table cuisine, and Finca Treurer\u2019s extra virgin olive oil set the tone for a refined, authentic dining experience deeply rooted in the local region.<\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-f1e3b06\" data-id=\"f1e3b06\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-f492cad elementor-widget__width-initial elementor-widget elementor-widget-image\" data-id=\"f492cad\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"1365\" height=\"1280\" src=\"https:\/\/treurer.com\/wp-content\/uploads\/Restaurante-Qanat-Treurer-Algaida-e1774526600836.jpg\" class=\"attachment-full size-full wp-image-44266\" alt=\"\" srcset=\"https:\/\/treurer.com\/wp-content\/uploads\/Restaurante-Qanat-Treurer-Algaida-e1774526600836.jpg 1365w, https:\/\/treurer.com\/wp-content\/uploads\/Restaurante-Qanat-Treurer-Algaida-e1774526600836-768x720.jpg 768w, https:\/\/treurer.com\/wp-content\/uploads\/Restaurante-Qanat-Treurer-Algaida-e1774526600836-300x281.jpg 300w, https:\/\/treurer.com\/wp-content\/uploads\/Restaurante-Qanat-Treurer-Algaida-e1774526600836-600x563.jpg 600w, https:\/\/treurer.com\/wp-content\/uploads\/Restaurante-Qanat-Treurer-Algaida-e1774526600836-64x60.jpg 64w\" sizes=\"(max-width: 1365px) 100vw, 1365px\" title=\"\">\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-cf61077 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"cf61077\" data-element_type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-5037ddc\" data-id=\"5037ddc\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-3bfa178 elementor-widget elementor-widget-image\" data-id=\"3bfa178\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"1707\" height=\"1310\" src=\"https:\/\/treurer.com\/wp-content\/uploads\/Jose-Cortes-scaled-e1774526660731.jpg\" class=\"attachment-full size-full wp-image-44267\" alt=\"\" srcset=\"https:\/\/treurer.com\/wp-content\/uploads\/Jose-Cortes-scaled-e1774526660731.jpg 1707w, https:\/\/treurer.com\/wp-content\/uploads\/Jose-Cortes-scaled-e1774526660731-768x589.jpg 768w, https:\/\/treurer.com\/wp-content\/uploads\/Jose-Cortes-scaled-e1774526660731-1536x1179.jpg 1536w, https:\/\/treurer.com\/wp-content\/uploads\/Jose-Cortes-scaled-e1774526660731-300x230.jpg 300w, https:\/\/treurer.com\/wp-content\/uploads\/Jose-Cortes-scaled-e1774526660731-600x460.jpg 600w, https:\/\/treurer.com\/wp-content\/uploads\/Jose-Cortes-scaled-e1774526660731-64x49.jpg 64w\" sizes=\"(max-width: 1707px) 100vw, 1707px\" title=\"\">\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-f0f9aa0\" data-id=\"f0f9aa0\" data-element_type=\"column\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-3bd0b6e elementor-widget elementor-widget-heading\" data-id=\"3bd0b6e\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">Contemporary Mallorcan Cuisine<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4fe3b98 elementor-widget elementor-widget-heading\" data-id=\"4fe3b98\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"elementor-heading-title elementor-size-default\">Qanat's culinary concept reflects Chef Jos\u00e9 Cort\u00e9s\u2019s commitment to Mallorcan cuisine, highlighting the richness and diversity of the island\u2019s local produce. Using seasonal ingredients and precise, respectful cooking techniques, each dish seeks to showcase the island\u2019s richness and make the most of every ingredient. A concept that blends tradition, local ingredients, and a contemporary perspective.<\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-cb66399 elementor-section-full_width elementor-hidden-tablet elementor-hidden-mobile elementor-section-height-default elementor-section-height-default\" data-id=\"cb66399\" data-element_type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-beb96fe\" data-id=\"beb96fe\" data-element_type=\"column\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-17f07aa elementor-widget elementor-widget-heading\" data-id=\"17f07aa\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">Excellence in customer service<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-04608a6 elementor-widget elementor-widget-heading\" data-id=\"04608a6\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"elementor-heading-title elementor-size-default\">The dining experience at Qanat is complemented by attentive and thoughtful service, where every detail\u2014from the presentation to the pace of service\u2014is designed to enhance every moment. The experience is further enriched by a selection of Mallorcan wines curated by our ma\u00eetre d\u2019 Miguel Barcel\u00f3, along with other beverages chosen to pair perfectly with the cuisine. A sensory journey that elevates each dish and elegantly captures the true essence of Mallorca.<\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-ca5216a\" data-id=\"ca5216a\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-198d09c elementor-widget elementor-widget-image\" data-id=\"198d09c\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"1365\" height=\"1188\" src=\"https:\/\/treurer.com\/wp-content\/uploads\/Miquel-Barcelo-e1774526711316.jpg\" class=\"attachment-full size-full wp-image-44268\" alt=\"\" srcset=\"https:\/\/treurer.com\/wp-content\/uploads\/Miquel-Barcelo-e1774526711316.jpg 1365w, https:\/\/treurer.com\/wp-content\/uploads\/Miquel-Barcelo-e1774526711316-768x668.jpg 768w, https:\/\/treurer.com\/wp-content\/uploads\/Miquel-Barcelo-e1774526711316-300x261.jpg 300w, https:\/\/treurer.com\/wp-content\/uploads\/Miquel-Barcelo-e1774526711316-600x522.jpg 600w, https:\/\/treurer.com\/wp-content\/uploads\/Miquel-Barcelo-e1774526711316-64x56.jpg 64w\" sizes=\"(max-width: 1365px) 100vw, 1365px\" title=\"\">\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Restaurant Qanat de Treurer, nestled in a stunning natural setting, serves dishes prepared with local, seasonal ingredients and enhanced by acclaimed Chef Jos\u00e9 Cort\u00e9s using our own olive oil.<\/p>\n","protected":false},"author":3,"featured_media":34629,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"content-type":"","_joinchat":[],"footnotes":""},"class_list":["post-44269","page","type-page","status-publish","has-post-thumbnail","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/treurer.com\/en\/wp-json\/wp\/v2\/pages\/44269","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/treurer.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/treurer.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/treurer.com\/en\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/treurer.com\/en\/wp-json\/wp\/v2\/comments?post=44269"}],"version-history":[{"count":18,"href":"https:\/\/treurer.com\/en\/wp-json\/wp\/v2\/pages\/44269\/revisions"}],"predecessor-version":[{"id":44593,"href":"https:\/\/treurer.com\/en\/wp-json\/wp\/v2\/pages\/44269\/revisions\/44593"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/treurer.com\/en\/wp-json\/wp\/v2\/media\/34629"}],"wp:attachment":[{"href":"https:\/\/treurer.com\/en\/wp-json\/wp\/v2\/media?parent=44269"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}