{"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-01T18:19:31","modified_gmt":"2026-04-01T16:19:31","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\">Qanta: 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-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 id=\"manage\" style=\"height:0;overflow:hidden;\"><\/div>\n<div class=\"flavor-booking-container flavor-palette-custom\"\n     style=\"--flavor-primary:#5b955b;--flavor-primary-light:#79b379;--flavor-primary-dark:#427c42;\"     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.00\"\n     data-deposit-per-person=\"20.00\"\n     data-stripe-key=\"pk_live_51MBwnKDmuxZsbgPbg31pqnP588xHhobfyLte0RzKlcHmefphL1fZ091f0p3NyV9O6ImBpDuuGzGHodF1s3jiDaKU005S6yuMU6\"\n     data-stripe-test=\"0\">\n    \n    <div class=\"flavor-header\">\n                <div class=\"flavor-booking-title\">\n            <h3>Reserva tu mesa<\/h3>\n        <\/div>\n        <p class=\"flavor-manage-link\"><a href=\"#\" onclick=\"flavorShowManage(); return false;\">\u00bfTienes ya una reserva?<\/a><\/p>\n    <\/div>\n\n    <div class=\"flavor-progress\">\n        <div class=\"flavor-progress-bar\">\n            <div class=\"flavor-progress-fill\" style=\"width: 33%;\"><\/div>\n        <\/div>\n        <div class=\"flavor-progress-steps\">\n            <span class=\"flavor-step active\" data-step=\"1\">1<\/span>\n            <span class=\"flavor-step\" data-step=\"2\">2<\/span>\n            <span class=\"flavor-step\" data-step=\"3\">3<\/span>\n        <\/div>\n    <\/div>\n\n    <!-- PASO 1: Comensales + Fecha + Hora -->\n    <div class=\"flavor-form-step active\" data-step=\"1\">\n        <div class=\"flavor-step-header\"><h4>N\u00famero de comensales<\/h4><\/div>\n        \n        <div class=\"flavor-guests-selector\">\n                            <button type=\"button\" class=\"flavor-guest-btn\" onclick=\"flavorSelectGuests(this, 1)\">\n                    <span class=\"flavor-guest-number\">1<\/span>\n                <\/button>\n                            <button type=\"button\" class=\"flavor-guest-btn\" onclick=\"flavorSelectGuests(this, 2)\">\n                    <span class=\"flavor-guest-number\">2<\/span>\n                <\/button>\n                            <button type=\"button\" class=\"flavor-guest-btn\" onclick=\"flavorSelectGuests(this, 3)\">\n                    <span class=\"flavor-guest-number\">3<\/span>\n                <\/button>\n                            <button type=\"button\" class=\"flavor-guest-btn\" onclick=\"flavorSelectGuests(this, 4)\">\n                    <span class=\"flavor-guest-number\">4<\/span>\n                <\/button>\n                            <button type=\"button\" class=\"flavor-guest-btn\" onclick=\"flavorSelectGuests(this, 5)\">\n                    <span class=\"flavor-guest-number\">5<\/span>\n                <\/button>\n                            <button type=\"button\" class=\"flavor-guest-btn\" onclick=\"flavorSelectGuests(this, 6)\">\n                    <span class=\"flavor-guest-number\">6<\/span>\n                <\/button>\n                    <\/div>\n        \n        <div class=\"flavor-datetime-container\" style=\"margin-top:30px;\">\n            <div class=\"flavor-date-section\">\n                <label>Fecha de la reserva<\/label>\n                <div id=\"flavor-calendar\" class=\"flavor-calendar\"><\/div>\n                <input type=\"hidden\" id=\"flavor-date\">\n            <\/div>\n            <div class=\"flavor-time-section\">\n                <label>Hora<\/label>\n                <div id=\"flavor-time-grid\" class=\"flavor-time-grid\">\n                    <p class=\"flavor-time-placeholder\">Selecciona una fecha para ver los horarios disponibles<\/p>\n                <\/div>\n            <\/div>\n        <\/div>\n    <\/div>\n\n    <!-- PASO 2: Datos personales + Preferencias -->\n    <div class=\"flavor-form-step\" data-step=\"2\">\n        <div class=\"flavor-step-header\"><h4>Tus datos<\/h4><\/div>\n        <div class=\"flavor-form-fields\" style=\"border-bottom:none;padding-bottom:0\">\n            <div class=\"flavor-field-row\">\n                <div class=\"flavor-field\">\n                    <label>Nombre <span style=\"color:#c00\">*<\/span><\/label>\n                    <input type=\"text\" id=\"flavor-first-name\" placeholder=\"Tu nombre\">\n                <\/div>\n                <div class=\"flavor-field\">\n                    <label>Apellidos <span style=\"color:#c00\">*<\/span><\/label>\n                    <input type=\"text\" id=\"flavor-last-name\" placeholder=\"Tus apellidos\">\n                <\/div>\n            <\/div>\n            <div class=\"flavor-field-row\">\n                <div class=\"flavor-field\">\n                    <label>Email <span style=\"color:#c00\">*<\/span><\/label>\n                    <input type=\"text\" id=\"flavor-email\" placeholder=\"tu@email.com\">\n                <\/div>\n                <div class=\"flavor-field\">\n                    <label>Tel\u00e9fono <span style=\"color:#c00\">*<\/span><\/label>\n                    <input type=\"text\" id=\"flavor-phone\" placeholder=\"+34600000000\">\n                <\/div>\n            <\/div>\n            <div class=\"flavor-field\">\n                <label>Alergias \/ Restricciones alimentarias<\/label>\n                <input type=\"text\" id=\"flavor-allergies\" placeholder=\"Gluten, lactosa, vegetariano, vegano...\" style=\"width:100%\">\n                <input type=\"hidden\" id=\"flavor-dietary\" value=\"\">\n            <\/div>\n            <div class=\"flavor-field\">\n                <label class=\"flavor-option-item flavor-option-single\">\n                    <input type=\"checkbox\" id=\"flavor-shared-table\">\n                    <span class=\"flavor-option-box\">\n                        <span class=\"flavor-option-name\">Acepto mesa compartida<\/span>\n                    <\/span>\n                <\/label>\n            <\/div>\n            <div class=\"flavor-field\">\n                <label>Observaciones<\/label>\n                <textarea id=\"flavor-notes\" rows=\"3\" placeholder=\"Celebraci\u00f3n especial, silla para ni\u00f1o...\" style=\"width:100%\"><\/textarea>\n            <\/div>\n        <\/div>\n    <\/div>\n\n    <!-- PASO 3: Resumen y Confirmaci\u00f3n -->\n    <div class=\"flavor-form-step\" data-step=\"3\">\n        <div class=\"flavor-step-header\"><h4>Confirma tu reserva<\/h4><\/div>\n        <div class=\"flavor-summary\">\n            <div class=\"flavor-summary-content\">\n                <div class=\"flavor-summary-item\"><span>Comensales:<\/span> <strong id=\"summary-guests\">-<\/strong><\/div>\n                <div class=\"flavor-summary-item\"><span>Fecha:<\/span> <strong id=\"summary-date\">-<\/strong><\/div>\n                <div class=\"flavor-summary-item\"><span>Hora:<\/span> <strong id=\"summary-time\">-<\/strong><\/div>\n                <div class=\"flavor-summary-item\"><span>Nombre:<\/span> <strong id=\"summary-name\">-<\/strong><\/div>\n                <div class=\"flavor-summary-item\"><span>Email:<\/span> <strong id=\"summary-email\">-<\/strong><\/div>\n                <div class=\"flavor-summary-item\"><span>Tel\u00e9fono:<\/span> <strong id=\"summary-phone\">-<\/strong><\/div>\n                <div class=\"flavor-summary-item\"><span>Mesa compartida:<\/span> <strong id=\"summary-shared\">-<\/strong><\/div>\n                <div class=\"flavor-summary-item\" id=\"summary-allergies-row\" style=\"display:none\">\n                    <span>Alergias \/ Restricciones:<\/span> <strong id=\"summary-allergies\">-<\/strong>\n                <\/div>\n                <div class=\"flavor-summary-item\" id=\"summary-dietary-row\" style=\"display:none\">\n                    <span><\/span> <strong id=\"summary-dietary\">-<\/strong>\n                <\/div>\n                <div class=\"flavor-summary-item\" id=\"summary-notes-row\" style=\"display:none\">\n                    <span>Observaciones:<\/span> <strong id=\"summary-notes\">-<\/strong>\n                <\/div>\n            <\/div>\n        <\/div>\n        \n        <!-- Secci\u00f3n de dep\u00f3sito\/pago -->\n        <div id=\"flavor-payment-section\" style=\"display:none; margin-top:20px;\">\n            <div style=\"background:#fef3c7; border:1px solid #fcd34d; border-radius:8px; padding:15px; margin-bottom:15px;\">\n                <p style=\"margin:0; font-weight:600; color:#92400e;\">\n                    Se requiere un dep\u00f3sito para confirmar tu reserva                <\/p>\n                <p style=\"margin:8px 0 0; font-size:24px; font-weight:bold; color:#b45309;\" id=\"flavor-deposit-amount\">0.00 \u20ac<\/p>\n            <\/div>\n            <div style=\"background:#fff; border:1px solid #e5e7eb; border-radius:8px; padding:20px;\">\n                <label style=\"display:block; margin-bottom:10px; font-weight:500;\">Datos de la tarjeta<\/label>\n                <div id=\"flavor-card-element\" style=\"padding:12px; border:1px solid #d1d5db; 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>\n        \n        <div class=\"flavor-terms\" style=\"margin-top:20px;\">\n            <label class=\"flavor-checkbox-label\" style=\"display:flex;align-items:center;gap:8px;cursor:pointer;justify-content:flex-start;white-space:nowrap;\">\n                <input type=\"checkbox\" id=\"flavor-accept-terms\" style=\"width:auto;min-width:18px;height:18px;margin:0;flex-shrink:0;\">\n                <span style=\"font-size:14px;\">Acepto la pol\u00edtica de privacidad y condiciones de reserva<\/span>\n            <\/label>\n        <\/div>\n        <div class=\"flavor-submit-container\" style=\"margin-top:20px;display:flex;justify-content:center;gap:10px;\">\n            <button type=\"button\" class=\"flavor-btn flavor-btn-prev\" onclick=\"flavorPrevStep()\">Anterior<\/button>\n            <button type=\"button\" class=\"flavor-btn flavor-btn-submit\" id=\"flavor-submit-btn\" onclick=\"flavorSubmit()\">\n                <span id=\"flavor-submit-text\">Confirmar reserva<\/span>\n                <span id=\"flavor-submit-text-pay\" style=\"display:none;\">Pagar y confirmar<\/span>\n            <\/button>\n        <\/div>\n    <\/div>\n\n    <div class=\"flavor-navigation\">\n        <button type=\"button\" class=\"flavor-btn flavor-btn-prev\" style=\"display:none\" onclick=\"flavorPrevStep()\">Anterior<\/button>\n        <button type=\"button\" class=\"flavor-btn flavor-btn-next\" onclick=\"flavorNextStep()\">Siguiente<\/button>\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>Procesando...<\/p>\n        <\/div>\n    <\/div>\n    \n    <!-- GESTI\u00d3N DE RESERVA -->\n    <div class=\"flavor-manage-view\" style=\"display:none\">\n        <div class=\"flavor-manage-header\">\n            <h3>Gestionar reserva<\/h3>\n            <a href=\"#\" onclick=\"flavorHideManage(); return false;\">\u2190 Volver a reservar<\/a>\n        <\/div>\n        \n        <!-- B\u00fasqueda de reserva -->\n        <div class=\"flavor-manage-search\">\n            <div class=\"flavor-manage-tabs\">\n                <button type=\"button\" class=\"flavor-manage-tab active\" onclick=\"flavorManageTab('code')\">Por c\u00f3digo<\/button>\n                <button type=\"button\" class=\"flavor-manage-tab\" onclick=\"flavorManageTab('data')\">Por datos<\/button>\n            <\/div>\n            \n            <div class=\"flavor-manage-tab-content active\" data-tab=\"code\">\n                <div class=\"flavor-field\">\n                    <label>C\u00f3digo de reserva<\/label>\n                    <input type=\"text\" id=\"flavor-manage-code\" placeholder=\"Ej: FR12345678\">\n                <\/div>\n                <button type=\"button\" class=\"flavor-btn flavor-btn-primary\" onclick=\"flavorSearchByCode()\">Buscar reserva<\/button>\n            <\/div>\n            \n            <div class=\"flavor-manage-tab-content\" data-tab=\"data\">\n                <div class=\"flavor-fields-row\">\n                    <div class=\"flavor-field\">\n                        <label>Nombre<\/label>\n                        <input type=\"text\" id=\"flavor-manage-firstname\" placeholder=\"Tu nombre\">\n                    <\/div>\n                    <div class=\"flavor-field\">\n                        <label>Apellidos<\/label>\n                        <input type=\"text\" id=\"flavor-manage-lastname\" placeholder=\"Tus apellidos\">\n                    <\/div>\n                <\/div>\n                <div class=\"flavor-field\">\n                    <label>Tel\u00e9fono<\/label>\n                    <input type=\"tel\" id=\"flavor-manage-phone\" placeholder=\"Tu tel\u00e9fono\">\n                <\/div>\n                <div class=\"flavor-fields-row\">\n                    <div class=\"flavor-field\">\n                        <label>Fecha de la reserva<\/label>\n                        <input type=\"date\" id=\"flavor-manage-date\">\n                    <\/div>\n                    <div class=\"flavor-field\">\n                        <label>Hora de la reserva<\/label>\n                        <input type=\"time\" id=\"flavor-manage-time\">\n                    <\/div>\n                <\/div>\n                <button type=\"button\" class=\"flavor-btn flavor-btn-primary\" onclick=\"flavorSearchByData()\">Buscar reserva<\/button>\n            <\/div>\n        <\/div>\n        \n        <!-- Resultado de reserva encontrada -->\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\">\n                        <span class=\"flavor-reservation-icon\">\ud83d\udcc5<\/span>\n                        <span class=\"flavor-reservation-date\"><\/span>\n                    <\/div>\n                    <div class=\"flavor-reservation-row\">\n                        <span class=\"flavor-reservation-icon\">\ud83d\udd50<\/span>\n                        <span class=\"flavor-reservation-time\"><\/span>\n                    <\/div>\n                    <div class=\"flavor-reservation-row\">\n                        <span class=\"flavor-reservation-icon\">\ud83d\udc65<\/span>\n                        <span class=\"flavor-reservation-guests\"><\/span>\n                    <\/div>\n                    <div class=\"flavor-reservation-row\">\n                        <span class=\"flavor-reservation-icon\">\ud83d\udc64<\/span>\n                        <span class=\"flavor-reservation-name\"><\/span>\n                    <\/div>\n                    <div class=\"flavor-reservation-row\">\n                        <span class=\"flavor-reservation-icon\">\u2709\ufe0f<\/span>\n                        <span class=\"flavor-reservation-email\"><\/span>\n                    <\/div>\n                    <div class=\"flavor-reservation-row\">\n                        <span class=\"flavor-reservation-icon\">\ud83d\udcde<\/span>\n                        <span class=\"flavor-reservation-phone\"><\/span>\n                    <\/div>\n                    <div class=\"flavor-reservation-row flavor-reservation-allergies\" style=\"display:none\">\n                        <span class=\"flavor-reservation-icon\">\u26a0\ufe0f<\/span>\n                        <span class=\"flavor-reservation-allergies-text\"><\/span>\n                    <\/div>\n                    <div class=\"flavor-reservation-row flavor-reservation-notes\" style=\"display:none\">\n                        <span class=\"flavor-reservation-icon\">\ud83d\udcdd<\/span>\n                        <span class=\"flavor-reservation-notes-text\"><\/span>\n                    <\/div>\n                <\/div>\n                \n                <!-- Secci\u00f3n de men\u00fa seleccionado -->\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 Selecci\u00f3n del men\u00fa<\/p>\n                    <div class=\"flavor-reservation-starters\" style=\"display:none;margin-bottom:8px\">\n                        <strong style=\"color:#666;font-size:13px\">Primeros:<\/strong>\n                        <span class=\"flavor-reservation-starters-text\" style=\"font-size:13px\"><\/span>\n                    <\/div>\n                    <div class=\"flavor-reservation-mains\" style=\"display:none;margin-bottom:8px\">\n                        <strong style=\"color:#666;font-size:13px\">Segundos:<\/strong>\n                        <span class=\"flavor-reservation-mains-text\" style=\"font-size:13px\"><\/span>\n                    <\/div>\n                    <div class=\"flavor-reservation-desserts\" style=\"display:none\">\n                        <strong style=\"color:#666;font-size:13px\">Postres:<\/strong>\n                        <span class=\"flavor-reservation-desserts-text\" style=\"font-size:13px\"><\/span>\n                    <\/div>\n                <\/div>\n                \n                <div class=\"flavor-manage-actions\">\n                    <button type=\"button\" class=\"flavor-btn flavor-btn-secondary\" onclick=\"flavorShowModify()\">Modificar reserva<\/button>\n                    <button type=\"button\" class=\"flavor-btn flavor-btn-danger\" onclick=\"flavorCancelReservation()\">Cancelar reserva<\/button>\n                <\/div>\n            <\/div>\n        <\/div>\n        \n        <!-- Formulario de modificaci\u00f3n -->\n        <div class=\"flavor-manage-modify\" style=\"display:none\">\n            <h4>Modificar reserva<\/h4>\n            \n            <div class=\"flavor-field\">\n                <label>Comensales<\/label>\n                <select id=\"flavor-modify-guests\"><\/select>\n            <\/div>\n            <div class=\"flavor-fields-row\">\n                <div class=\"flavor-field\">\n                    <label>Fecha<\/label>\n                    <input type=\"date\" id=\"flavor-modify-date\">\n                <\/div>\n                <div class=\"flavor-field\">\n                    <label>Hora<\/label>\n                    <select id=\"flavor-modify-time\">\n                        <option value=\"\">Selecciona fecha primero<\/option>\n                    <\/select>\n                <\/div>\n            <\/div>\n            <div class=\"flavor-fields-row\">\n                <div class=\"flavor-field\">\n                    <label>Nombre<\/label>\n                    <input type=\"text\" id=\"flavor-modify-first-name\">\n                <\/div>\n                <div class=\"flavor-field\">\n                    <label>Apellidos<\/label>\n                    <input type=\"text\" id=\"flavor-modify-last-name\">\n                <\/div>\n            <\/div>\n            <div class=\"flavor-fields-row\">\n                <div class=\"flavor-field\">\n                    <label>Email<\/label>\n                    <input type=\"email\" id=\"flavor-modify-email\">\n                <\/div>\n                <div class=\"flavor-field\">\n                    <label>Tel\u00e9fono<\/label>\n                    <input type=\"tel\" id=\"flavor-modify-phone\">\n                <\/div>\n            <\/div>\n            <div class=\"flavor-fields-row\">\n                <div class=\"flavor-field\">\n                    <label>Alergias \/ Restricciones alimentarias<\/label>\n                    <input type=\"text\" id=\"flavor-modify-allergies\" placeholder=\"Gluten, lactosa, vegetariano, vegano...\">\n                    <input type=\"hidden\" id=\"flavor-modify-dietary\" value=\"\">\n                <\/div>\n            <\/div>\n            <div class=\"flavor-field\">\n                <label>Observaciones<\/label>\n                <textarea id=\"flavor-modify-notes\" placeholder=\"Celebraci\u00f3n especial, silla para ni\u00f1o...\"><\/textarea>\n            <\/div>\n            <div class=\"flavor-field\">\n                <label class=\"flavor-option-item flavor-option-single\">\n                    <input type=\"checkbox\" id=\"flavor-modify-shared-table\">\n                    <span class=\"flavor-option-box\">\n                        <span class=\"flavor-option-name\">Acepto mesa compartida<\/span>\n                    <\/span>\n                <\/label>\n            <\/div>\n            \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 Selecci\u00f3n del men\u00fa<\/p>\n                <div class=\"flavor-field\">\n                    <label>Primeros platos<\/label>\n                    <textarea id=\"flavor-modify-starters\" placeholder=\"Ej: 2x Ensalada C\u00e9sar, 1x Sopa del d\u00eda...\"><\/textarea>\n                <\/div>\n                <div class=\"flavor-field\">\n                    <label>Segundos platos<\/label>\n                    <textarea id=\"flavor-modify-mains\" placeholder=\"Ej: 1x Entrecot, 2x Lubina al horno...\"><\/textarea>\n                <\/div>\n                <div class=\"flavor-field\">\n                    <label>Postres<\/label>\n                    <textarea id=\"flavor-modify-desserts\" placeholder=\"Ej: 2x Tarta de queso, 1x Sorbete de lim\u00f3n...\"><\/textarea>\n                <\/div>\n            <\/div>\n            \n            <div class=\"flavor-manage-actions\">\n                <button type=\"button\" class=\"flavor-btn flavor-btn-secondary\" onclick=\"flavorBackToResult()\">Cancelar<\/button>\n                <button type=\"button\" class=\"flavor-btn flavor-btn-primary\" onclick=\"flavorSaveModification()\">Guardar cambios<\/button>\n            <\/div>\n        <\/div>\n    <\/div>\n<\/div>\n\n<script src=\"https:\/\/js.stripe.com\/v3\/\"><\/script>\n<style>\n@keyframes spin { to { transform: rotate(360deg); } }\n<\/style>\n\n<script>\nvar flavorStep = 1;\nvar flavorTotalSteps = 3;\nvar flavorData = {guests: null, date: null, time: null};\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 flavorBlockedDates = {}; \/\/ Fechas bloqueadas (excepciones)\n\n\/\/ Configuraci\u00f3n de dep\u00f3sitos y Stripe\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;\nvar flavorPaymentIntentSecret = null;\n\n\/\/ Traducciones para JavaScript\nvar flavorI18n = {\n    months: [\n        'Enero',\n        'Febrero',\n        'Marzo',\n        'Abril',\n        'Mayo',\n        'Junio',\n        'Julio',\n        'Agosto',\n        'Septiembre',\n        'Octubre',\n        'Noviembre',\n        'Diciembre'\n    ],\n    days: ['L', 'M', 'X', 'J', 'V', 'S', 'D'],\n    loadingTimes: 'Cargando horarios...',\n    noTimesAvailable: 'No hay horarios disponibles para esta fecha',\n    errorLoadingTimes: 'Error al cargar horarios',\n    capacityFull: 'Aforo completo',\n    maxReservations: 'M\u00e1ximo de reservas alcanzado',\n    minAdvance: 'Sin antelaci\u00f3n m\u00ednima',\n    notAvailable: 'No disponible',\n    selectGuests: 'Selecciona el n\u00famero de comensales',\n    selectDate: 'Selecciona una fecha',\n    selectTime: 'Selecciona una hora',\n    nameRequired: 'El nombre es obligatorio',\n    lastNameRequired: 'Los apellidos son obligatorios',\n    emailRequired: 'El email es obligatorio',\n    emailInvalid: 'El email no tiene un formato v\u00e1lido',\n    phoneRequired: 'El tel\u00e9fono es obligatorio',\n    phoneInvalid: 'El tel\u00e9fono debe incluir el prefijo internacional y solo n\u00fameros (ej: +34600000000)',\n    acceptTerms: 'Debes aceptar la pol\u00edtica de privacidad',\n    reservationConfirmed: '\u00a1Reserva confirmada!',\n    reservationSuccess: 'Tu reserva ha sido registrada correctamente.',\n    receiveEmail: 'Recibir\u00e1s un email de confirmaci\u00f3n.',\n    newReservation: 'Nueva reserva',\n    error: 'Error',\n    tryAgain: 'Intentar de nuevo',\n    date: 'Fecha:',\n    time: 'Hora:',\n    guests: 'Comensales:',\n    name: 'Nombre:',\n    email: 'Email:',\n    phone: 'Tel\u00e9fono:',\n    sharedTable: 'Mesa compartida:',\n    allergies: 'Alergias \/ Restricciones:',\n    dietary: 'Restricciones:',\n    notes: 'Observaciones:',\n    yes: 'S\u00ed',\n    no: 'No',\n    people: 'personas',\n    confirmed: 'Confirmada',\n    pending: 'Pendiente',\n    cancelled: 'Cancelada',\n    enterCode: 'Introduce el c\u00f3digo de reserva',\n    enterName: 'Introduce tu nombre',\n    enterLastName: 'Introduce tus apellidos',\n    enterPhone: 'Introduce tu tel\u00e9fono',\n    enterDate: 'Introduce la fecha de la reserva',\n    enterTime: 'Introduce la hora de la reserva',\n    reservationNotFound: 'Reserva no encontrada',\n    searchError: 'Error al buscar la reserva',\n    selectTimeFirst: 'Selecciona una hora',\n    modifySuccess: 'Reserva modificada correctamente',\n    modifyError: 'Error al modificar la reserva',\n    cancelConfirm: '\u00bfEst\u00e1s seguro de que quieres cancelar esta reserva?',\n    cancelSuccess: 'Reserva cancelada correctamente',\n    cancelError: 'Error al cancelar la reserva',\n    loading: 'Cargando...',\n    noTimesError: 'No hay horarios disponibles',\n    current: '(actual)',\n    selectDateFirst: 'Selecciona fecha primero',\n    paymentError: 'Error en el pago',\n    paymentProcessing: 'Procesando pago...',\n    cardError: 'Error en la tarjeta',\n    depositRequired: 'Se requiere un dep\u00f3sito de',\n    pendingPayment: 'Pendiente de pago',\n    paymentSuccess: 'Pago realizado correctamente',\n    depositPaid: 'Dep\u00f3sito pagado:'\n};\n\n\/\/ Cargar fechas bloqueadas\nfetch(flavorRestUrl + 'restaurants\/' + flavorRestaurantId + '\/blocked-dates')\n    .then(function(response) { return response.json(); })\n    .then(function(data) {\n        console.log('Blocked dates response:', data);\n        if (data.success && data.data) {\n            flavorBlockedDates = data.data;\n            console.log('Blocked dates loaded:', Object.keys(flavorBlockedDates).length, 'dates');\n            flavorRenderCalendar(); \/\/ Re-renderizar calendario con fechas bloqueadas\n            \/\/ Seleccionar autom\u00e1ticamente la primera fecha disponible\n            flavorSelectFirstAvailableDate();\n        }\n    })\n    .catch(function(err) { \n        console.log('Error loading blocked dates:', err);\n        \/\/ A\u00fan as\u00ed seleccionar la primera fecha disponible\n        flavorSelectFirstAvailableDate();\n    });\n\n\/\/ Funci\u00f3n para seleccionar la primera fecha disponible\nfunction flavorSelectFirstAvailableDate() {\n    var today = new Date();\n    today.setHours(0, 0, 0, 0);\n    \n    \/\/ Buscar la primera fecha disponible en los pr\u00f3ximos 60 d\u00edas\n    for (var i = 0; i <= flavorMaxAdvanceDays; i++) {\n        var checkDate = new Date(today);\n        checkDate.setDate(today.getDate() + i);\n        \n        var dateStr = checkDate.getFullYear() + '-' + \n                      ('0' + (checkDate.getMonth() + 1)).slice(-2) + '-' + \n                      ('0' + checkDate.getDate()).slice(-2);\n        \n        \/\/ Verificar que es un d\u00eda de apertura\n        if (flavorOpenDays.indexOf(checkDate.getDay()) === -1) continue;\n        \n        \/\/ Verificar que no es fecha bloqueada\n        if (flavorBlockedDates[dateStr]) continue;\n        \n        \/\/ Verificar min_advance_hours para hoy\n        if (i === 0) {\n            var hoursLeft = 24 - new Date().getHours();\n            if (hoursLeft < flavorMinAdvanceHours) continue;\n        }\n        \n        \/\/ Esta es la primera fecha disponible\n        flavorSelectDate(dateStr);\n        return;\n    }\n}\n\n\/\/ Sistema de notificaciones toast (estilo modal)\nfunction flavorToast(message, type) {\n    type = type || 'warning';\n    var existing = document.querySelector('.flavor-toast');\n    var existingOverlay = document.querySelector('.flavor-toast-overlay');\n    if (existing) existing.remove();\n    if (existingOverlay) existingOverlay.remove();\n    \n    \/\/ Crear overlay\n    var overlay = document.createElement('div');\n    overlay.className = 'flavor-toast-overlay';\n    document.body.appendChild(overlay);\n    \n    \/\/ Crear toast\n    var toast = document.createElement('div');\n    toast.className = 'flavor-toast';\n    toast.innerHTML = '<div class=\"flavor-toast-message\">' + message + '<\/div>';\n    document.body.appendChild(toast);\n    \n    \/\/ Funci\u00f3n para cerrar\n    function closeToast() {\n        toast.classList.remove('show');\n        overlay.classList.remove('show');\n        setTimeout(function() {\n            toast.remove();\n            overlay.remove();\n        }, 250);\n    }\n    \n    \/\/ Cerrar al hacer clic en el overlay\n    overlay.onclick = closeToast;\n    \n    \/\/ Mostrar\n    setTimeout(function() {\n        overlay.classList.add('show');\n        toast.classList.add('show');\n    }, 10);\n    \n    \/\/ Auto-cerrar despu\u00e9s de 2.5 segundos\n    setTimeout(closeToast, 2500);\n}\n\n\/\/ Calcular fecha m\u00ednima y m\u00e1xima\nvar flavorMinDate, flavorMaxDate;\nvar flavorCalendarMonth, flavorCalendarYear;\nvar flavorFirstAvailableDate;\n\n(function() {\n    var now = new Date();\n    \n    \/\/ Fecha m\u00ednima: ahora + antelaci\u00f3n m\u00ednima en horas\n    flavorMinDate = new Date(now.getTime() + (flavorMinAdvanceHours * 60 * 60 * 1000));\n    \n    \/\/ Fecha m\u00e1xima: hoy + antelaci\u00f3n m\u00e1xima en d\u00edas\n    flavorMaxDate = new Date();\n    flavorMaxDate.setDate(flavorMaxDate.getDate() + flavorMaxAdvanceDays);\n    \n    \/\/ Buscar el primer d\u00eda disponible (que est\u00e9 abierto el restaurante)\n    flavorFirstAvailableDate = new Date(flavorMinDate);\n    var maxSearchDays = 60;\n    for (var i = 0; i < maxSearchDays; i++) {\n        if (flavorOpenDays.indexOf(flavorFirstAvailableDate.getDay()) !== -1) {\n            break;\n        }\n        flavorFirstAvailableDate.setDate(flavorFirstAvailableDate.getDate() + 1);\n    }\n    \n    \/\/ Inicializar calendario en el mes del primer d\u00eda disponible\n    flavorCalendarMonth = flavorFirstAvailableDate.getMonth();\n    flavorCalendarYear = flavorFirstAvailableDate.getFullYear();\n    \n    \/\/ Renderizar calendario\n    flavorRenderCalendar();\n})();\n\nfunction flavorRenderCalendar() {\n    var container = document.getElementById('flavor-calendar');\n    var monthNames = flavorI18n.months;\n    var dayNames = flavorI18n.days;\n    \n    var today = new Date();\n    today.setHours(0, 0, 0, 0);\n    \n    var firstDay = new Date(flavorCalendarYear, flavorCalendarMonth, 1);\n    var lastDay = new Date(flavorCalendarYear, flavorCalendarMonth + 1, 0);\n    var startDay = firstDay.getDay() || 7; \/\/ Lunes = 1, Domingo = 7\n    \n    var html = '<div class=\"flavor-calendar-header\">';\n    html += '<div class=\"flavor-calendar-nav\"><button type=\"button\" onclick=\"flavorPrevMonth()\">&#8249;<\/button><\/div>';\n    html += '<div class=\"flavor-calendar-title\">' + monthNames[flavorCalendarMonth] + ' ' + flavorCalendarYear + '<\/div>';\n    html += '<div class=\"flavor-calendar-nav\"><button type=\"button\" onclick=\"flavorNextMonth()\">&#8250;<\/button><\/div>';\n    html += '<\/div>';\n    \n    html += '<div class=\"flavor-calendar-weekdays\">';\n    dayNames.forEach(function(d) {\n        html += '<div class=\"flavor-calendar-weekday\">' + d + '<\/div>';\n    });\n    html += '<\/div>';\n    \n    html += '<div class=\"flavor-calendar-days\">';\n    \n    \/\/ D\u00edas vac\u00edos al inicio\n    for (var i = 1; i < startDay; i++) {\n        html += '<div class=\"flavor-calendar-day other-month\"><\/div>';\n    }\n    \n    \/\/ Funci\u00f3n para formatear fecha sin problemas de zona horaria\n    function formatDateLocal(d) {\n        var year = d.getFullYear();\n        var month = ('0' + (d.getMonth() + 1)).slice(-2);\n        var day = ('0' + d.getDate()).slice(-2);\n        return year + '-' + month + '-' + day;\n    }\n    \n    \/\/ D\u00edas del mes\n    for (var day = 1; day <= lastDay.getDate(); day++) {\n        var date = new Date(flavorCalendarYear, flavorCalendarMonth, day);\n        var dateStr = formatDateLocal(date);\n        var classes = ['flavor-calendar-day'];\n        var disabled = false;\n        \n        \/\/ Verificar si es hoy\n        if (date.toDateString() === today.toDateString()) {\n            classes.push('today');\n        }\n        \n        \/\/ Verificar si est\u00e1 seleccionado\n        if (flavorData.date === dateStr) {\n            classes.push('selected');\n        }\n        \n        \/\/ Verificar si est\u00e1 dentro del rango permitido\n        var minDateStr = formatDateLocal(flavorMinDate);\n        var maxDateStr = formatDateLocal(flavorMaxDate);\n        if (dateStr < minDateStr || dateStr > maxDateStr) {\n            classes.push('disabled');\n            disabled = true;\n        }\n        \n        \/\/ Verificar si el restaurante est\u00e1 abierto ese d\u00eda\n        if (!disabled && flavorOpenDays.indexOf(date.getDay()) === -1) {\n            classes.push('closed');\n            disabled = true;\n        }\n        \n        \/\/ Verificar si es una fecha bloqueada (excepci\u00f3n)\n        if (!disabled && flavorBlockedDates[dateStr]) {\n            classes.push('closed');\n            disabled = true;\n        }\n        \n        if (disabled) {\n            html += '<div class=\"' + classes.join(' ') + '\">' + day + '<\/div>';\n        } else {\n            html += '<div class=\"' + classes.join(' ') + '\" onclick=\"flavorSelectDate(\\'' + dateStr + '\\')\">' + day + '<\/div>';\n        }\n    }\n    \n    html += '<\/div>';\n    container.innerHTML = html;\n}\n\nfunction flavorPrevMonth() {\n    flavorCalendarMonth--;\n    if (flavorCalendarMonth < 0) {\n        flavorCalendarMonth = 11;\n        flavorCalendarYear--;\n    }\n    flavorRenderCalendar();\n}\n\nfunction flavorNextMonth() {\n    flavorCalendarMonth++;\n    if (flavorCalendarMonth > 11) {\n        flavorCalendarMonth = 0;\n        flavorCalendarYear++;\n    }\n    flavorRenderCalendar();\n}\n\nfunction flavorSelectDate(dateStr) {\n    flavorData.date = dateStr;\n    flavorData.time = null; \/\/ Limpiar hora seleccionada\n    document.getElementById('flavor-date').value = dateStr;\n    flavorRenderCalendar();\n    flavorLoadTimeSlots(dateStr);\n}\n\nfunction flavorLoadTimeSlots(dateStr) {\n    var container = document.getElementById('flavor-time-grid');\n    var guests = flavorData.guests || 2;\n    \n    container.innerHTML = '<p class=\"flavor-time-loading\">' + flavorI18n.loadingTimes + '<\/p>';\n    \n    fetch(flavorRestUrl + 'restaurants\/' + flavorRestaurantId + '\/available-slots?date=' + dateStr + '&guests=' + guests)\n        .then(function(response) { return response.json(); })\n        .then(function(data) {\n            console.log('Available slots response:', 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                    var classes = 'flavor-time-btn';\n                    if (!slot.available) {\n                        classes += ' disabled';\n                    }\n                    if (slot.available) {\n                        html += '<button type=\"button\" class=\"' + classes + '\" onclick=\"flavorSelectTime(this, \\'' + timeShort + '\\')\">' + timeShort + '<\/button>';\n                    } else {\n                        var reasonText = flavorI18n.notAvailable;\n                        if (slot.reason === 'capacity') {\n                            reasonText = flavorI18n.capacityFull;\n                        } else if (slot.reason === 'max_reservations') {\n                            reasonText = flavorI18n.maxReservations;\n                        } else if (slot.reason === 'min_advance') {\n                            reasonText = flavorI18n.minAdvance;\n                        }\n                        html += '<button type=\"button\" class=\"' + classes + '\" disabled data-tooltip=\"' + reasonText + '\">' + timeShort + '<\/button>';\n                    }\n                });\n                container.innerHTML = html;\n            } else {\n                console.log('No slots or error:', data.message || 'empty data');\n                container.innerHTML = '<p class=\"flavor-time-placeholder\">' + flavorI18n.noTimesAvailable + '<\/p>';\n            }\n        })\n        .catch(function(err) {\n            console.error('Fetch error:', err);\n            container.innerHTML = '<p class=\"flavor-time-placeholder\">' + flavorI18n.errorLoadingTimes + '<\/p>';\n        });\n}\n\nfunction flavorSelectGuests(btn, num) {\n    document.querySelectorAll('.flavor-guest-btn').forEach(function(b) { b.classList.remove('selected'); });\n    btn.classList.add('selected');\n    flavorData.guests = num;\n    \n    \/\/ Si ya hay fecha seleccionada, recargar horarios\n    if (flavorData.date) {\n        flavorData.time = null;\n        flavorLoadTimeSlots(flavorData.date);\n    }\n}\n\nfunction flavorIsOpenDay(dateStr) {\n    var date = new Date(dateStr);\n    var dayOfWeek = date.getDay();\n    return flavorOpenDays.indexOf(dayOfWeek) !== -1;\n}\n\nfunction flavorSelectTime(btn, time) {\n    document.querySelectorAll('.flavor-time-btn').forEach(function(b) { b.classList.remove('selected'); });\n    btn.classList.add('selected');\n    flavorData.time = time;\n}\n\nfunction flavorGoToStep(step) {\n    if (step < 1 || step > flavorTotalSteps) return;\n    flavorStep = step;\n    document.querySelectorAll('.flavor-form-step').forEach(function(s) { s.classList.remove('active'); });\n    document.querySelector('.flavor-form-step[data-step=\"' + step + '\"]').classList.add('active');\n    flavorUpdateUI();\n    if (step === 3) {\n        flavorUpdateSummary();\n        flavorInitStripe();\n    }\n    \/\/ Mantener posici\u00f3n actual sin scroll\n}\n\nfunction flavorUpdateUI() {\n    var pct = (flavorStep \/ flavorTotalSteps) * 100;\n    document.querySelector('.flavor-progress-fill').style.width = pct + '%';\n    document.querySelectorAll('.flavor-step').forEach(function(s) {\n        var n = parseInt(s.dataset.step);\n        s.classList.remove('active', 'completed');\n        if (n < flavorStep) s.classList.add('completed');\n        else if (n === flavorStep) s.classList.add('active');\n    });\n    document.querySelector('.flavor-navigation .flavor-btn-prev').style.display = flavorStep > 1 ? 'inline-block' : 'none';\n    document.querySelector('.flavor-navigation .flavor-btn-next').style.display = flavorStep < flavorTotalSteps ? 'inline-block' : 'none';\n    document.querySelector('.flavor-navigation').style.display = flavorStep === 3 ? 'none' : 'flex';\n}\n\nfunction flavorUpdateSummary() {\n    document.getElementById('summary-guests').textContent = (flavorData.guests || '-') + ' ' + flavorI18n.people;\n    \n    if (flavorData.date) {\n        var d = new Date(flavorData.date + 'T12:00:00');\n        document.getElementById('summary-date').textContent = d.toLocaleDateString('es-ES', {weekday:'long', year:'numeric', month:'long', day:'numeric'});\n    } else {\n        document.getElementById('summary-date').textContent = '-';\n    }\n    \n    document.getElementById('summary-time').textContent = flavorData.time || '-';\n    \n    var fn = document.getElementById('flavor-first-name').value || '';\n    var ln = document.getElementById('flavor-last-name').value || '';\n    document.getElementById('summary-name').textContent = (fn + ' ' + ln).trim() || '-';\n    document.getElementById('summary-email').textContent = document.getElementById('flavor-email').value || '-';\n    document.getElementById('summary-phone').textContent = document.getElementById('flavor-phone').value || '-';\n    document.getElementById('summary-shared').textContent = document.getElementById('flavor-shared-table').checked ? flavorI18n.yes : flavorI18n.no;\n    \n    var allergies = document.getElementById('flavor-allergies').value;\n    if (allergies && allergies.trim()) {\n        document.getElementById('summary-allergies').textContent = allergies;\n        document.getElementById('summary-allergies-row').style.display = 'flex';\n    } else {\n        document.getElementById('summary-allergies-row').style.display = 'none';\n    }\n    \n    var dietary = document.getElementById('flavor-dietary').value;\n    if (dietary && dietary.trim()) {\n        document.getElementById('summary-dietary').textContent = dietary;\n        document.getElementById('summary-dietary-row').style.display = 'flex';\n    } else {\n        document.getElementById('summary-dietary-row').style.display = 'none';\n    }\n    \n    var notes = document.getElementById('flavor-notes').value;\n    if (notes && notes.trim()) {\n        document.getElementById('summary-notes').textContent = notes;\n        document.getElementById('summary-notes-row').style.display = 'flex';\n    } else {\n        document.getElementById('summary-notes-row').style.display = 'none';\n    }\n}\n\nfunction flavorNextStep() {\n    if (flavorStep === 1) {\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    }\n    if (flavorStep === 2) {\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        \n        if (!fn) { flavorToast(flavorI18n.nameRequired); return; }\n        if (!ln) { flavorToast(flavorI18n.lastNameRequired); return; }\n        if (!em) { flavorToast(flavorI18n.emailRequired); return; }\n        if (!\/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$\/.test(em)) { flavorToast(flavorI18n.emailInvalid); return; }\n        if (!ph) { flavorToast(flavorI18n.phoneRequired); return; }\n        if (!\/^\\+\\d+$\/.test(ph)) { flavorToast(flavorI18n.phoneInvalid); return; }\n    }\n    flavorGoToStep(flavorStep + 1);\n}\n\nfunction flavorPrevStep() { \n    flavorGoToStep(flavorStep - 1); \n}\n\n\/\/ Calcular dep\u00f3sito\nfunction flavorCalculateDeposit() {\n    if (!flavorRequireDeposit) return 0;\n    var deposit = flavorDepositPerReservation + (flavorDepositPerPerson * (flavorData.guests || 0));\n    return deposit;\n}\n\n\/\/ Inicializar Stripe cuando se llega al paso 3\nfunction flavorInitStripe() {\n    var depositAmount = flavorCalculateDeposit();\n    \n    if (depositAmount > 0 && flavorStripeKey) {\n        document.getElementById('flavor-payment-section').style.display = 'block';\n        document.getElementById('flavor-deposit-amount').textContent = depositAmount.toFixed(2) + ' \u20ac';\n        document.getElementById('flavor-submit-text').style.display = 'none';\n        document.getElementById('flavor-submit-text-pay').style.display = 'inline';\n        \n        if (!flavorStripe) {\n            flavorStripe = Stripe(flavorStripeKey);\n            var elements = flavorStripe.elements({locale: 'es'});\n            flavorCardElement = elements.create('card', {\n                style: {\n                    base: {\n                        fontSize: '16px',\n                        color: '#32325d',\n                        fontFamily: '-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif',\n                        '::placeholder': { color: '#aab7c4' }\n                    },\n                    invalid: { color: '#dc2626' }\n                }\n            });\n            flavorCardElement.mount('#flavor-card-element');\n            \n            flavorCardElement.on('change', function(event) {\n                var displayError = document.getElementById('flavor-card-errors');\n                displayError.textContent = event.error ? event.error.message : '';\n            });\n        }\n    } else {\n        document.getElementById('flavor-payment-section').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\nfunction flavorSubmit() {\n    if (!document.getElementById('flavor-accept-terms').checked) {\n        flavorToast(flavorI18n.acceptTerms);\n        return;\n    }\n    \n    var depositAmount = flavorCalculateDeposit();\n    \n    \/\/ Si hay dep\u00f3sito requerido, procesar con Stripe\n    if (depositAmount > 0 && flavorStripeKey && flavorCardElement) {\n        flavorSubmitWithPayment();\n    } else {\n        flavorSubmitWithoutPayment();\n    }\n}\n\nfunction flavorSubmitWithoutPayment() {\n    document.querySelector('.flavor-loader').style.display = 'flex';\n    \n    var postData = {\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: document.getElementById('flavor-phone').value,\n        allergies: document.getElementById('flavor-allergies').value,\n        dietary_restrictions: document.getElementById('flavor-dietary').value,\n        notes: document.getElementById('flavor-notes').value,\n        shared_table: document.getElementById('flavor-shared-table').checked ? 1 : 0\n    };\n    \n    fetch(flavorRestUrl + 'reservations', {\n        method: 'POST',\n        headers: {'Content-Type': 'application\/json'},\n        body: JSON.stringify(postData)\n    })\n    .then(function(response) { return response.json(); })\n    .then(function(r) {\n        document.querySelector('.flavor-loader').style.display = 'none';\n        if (r.success) {\n            var res = r.reservation.reservation || r.reservation;\n            flavorShowSuccess(res);\n        } else {\n            flavorShowError(r.message || 'Error al crear la reserva');\n        }\n    })\n    .catch(function(e) {\n        document.querySelector('.flavor-loader').style.display = 'none';\n        flavorShowError('Error de conexi\u00f3n');\n    });\n}\n\nfunction flavorSubmitWithPayment() {\n    var submitBtn = document.getElementById('flavor-submit-btn');\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:spin 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    \n    var customerName = document.getElementById('flavor-first-name').value + ' ' + document.getElementById('flavor-last-name').value;\n    var customerEmail = document.getElementById('flavor-email').value;\n    \n    var postData = {\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: customerEmail,\n        phone: document.getElementById('flavor-phone').value,\n        allergies: document.getElementById('flavor-allergies').value,\n        dietary_restrictions: document.getElementById('flavor-dietary').value,\n        notes: document.getElementById('flavor-notes').value,\n        shared_table: document.getElementById('flavor-shared-table').checked ? 1 : 0\n    };\n    \n    \/\/ 1. Primero crear PaymentIntent (sin reserva a\u00fan)\n    fetch(flavorRestUrl + 'payment\/create-intent', {\n        method: 'POST',\n        headers: {'Content-Type': 'application\/json'},\n        body: JSON.stringify({\n            restaurant_id: flavorRestaurantId,\n            guests: flavorData.guests,\n            name: customerName,\n            email: customerEmail\n        })\n    })\n    .then(function(resp) { return resp.json(); })\n    .then(function(paymentData) {\n        if (!paymentData.success) {\n            throw new Error(paymentData.message || 'Error al iniciar el pago');\n        }\n        \n        \/\/ 2. Confirmar pago con Stripe\n        return flavorStripe.confirmCardPayment(paymentData.data.client_secret, {\n            payment_method: {\n                card: flavorCardElement,\n                billing_details: {\n                    name: customerName,\n                    email: customerEmail\n                }\n            }\n        }).then(function(result) {\n            if (result.error) {\n                throw new Error(result.error.message);\n            }\n            return result.paymentIntent.id;\n        });\n    })\n    .then(function(paymentIntentId) {\n        \/\/ 3. Solo si el pago es exitoso, crear la reserva\n        postData.payment_intent_id = paymentIntentId;\n        postData.deposit_paid = 1;\n        \n        console.log('Bookings Rest: Enviando reserva con pago', {\n            payment_intent_id: postData.payment_intent_id,\n            deposit_paid: postData.deposit_paid,\n            url: flavorRestUrl + 'reservations'\n        });\n        \n        return fetch(flavorRestUrl + 'reservations', {\n            method: 'POST',\n            headers: {'Content-Type': 'application\/json'},\n            body: JSON.stringify(postData)\n        });\n    })\n    .then(function(response) { return response.json(); })\n    .then(function(r) {\n        if (!r.success) {\n            throw new Error(r.message || 'Error al crear la reserva');\n        }\n        \n        var reservation = r.reservation.reservation || r.reservation;\n        submitBtn.disabled = false;\n        submitBtn.innerHTML = '<span id=\"flavor-submit-text-pay\">' + flavorI18n.paymentSuccess + '<\/span>';\n        flavorShowSuccess(reservation);\n    })\n    .catch(function(error) {\n        submitBtn.disabled = false;\n        submitBtn.innerHTML = '<span id=\"flavor-submit-text-pay\">Pagar y confirmar<\/span>';\n        document.getElementById('flavor-card-errors').textContent = error.message;\n        flavorToast(error.message, 'error');\n    });\n}\n\nfunction flavorShowSuccess(reservation) {\n    var code = reservation.reservation_code || reservation.id || '';\n    var dateStr = '-';\n    if (flavorData.date) {\n        var d = new Date(flavorData.date + 'T12:00:00');\n        dateStr = d.toLocaleDateString('es-ES', {weekday:'long', year:'numeric', month:'long', day:'numeric'});\n    }\n    \n    var fn = document.getElementById('flavor-first-name').value;\n    var ln = document.getElementById('flavor-last-name').value;\n    var email = document.getElementById('flavor-email').value;\n    var phone = document.getElementById('flavor-phone').value;\n    var shared = document.getElementById('flavor-shared-table').checked ? flavorI18n.yes : flavorI18n.no;\n    var allergies = document.getElementById('flavor-allergies').value;\n    var dietary = document.getElementById('flavor-dietary').value;\n    var notes = document.getElementById('flavor-notes').value;\n    \n    var allergiesHtml = '';\n    if (allergies && allergies.trim()) {\n        allergiesHtml = '<div class=\"flavor-result-item\"><span>' + flavorI18n.allergies + '<\/span> <strong>' + allergies + '<\/strong><\/div>';\n    }\n    \n    var dietaryHtml = '';\n    if (dietary && dietary.trim()) {\n        dietaryHtml = '<div class=\"flavor-result-item\"><span>' + flavorI18n.dietary + '<\/span> <strong>' + dietary + '<\/strong><\/div>';\n    }\n    \n    var notesHtml = '';\n    if (notes && notes.trim()) {\n        notesHtml = '<div class=\"flavor-result-item\"><span>' + flavorI18n.notes + '<\/span> <strong>' + notes + '<\/strong><\/div>';\n    }\n    \n    \/\/ Mostrar dep\u00f3sito pagado si corresponde\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    \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>' + fn + ' ' + ln + '<\/strong><\/div>' +\n        '<div class=\"flavor-result-item\"><span>' + flavorI18n.email + '<\/span> <strong>' + email + '<\/strong><\/div>' +\n        '<div class=\"flavor-result-item\"><span>' + flavorI18n.phone + '<\/span> <strong>' + phone + '<\/strong><\/div>' +\n        '<div class=\"flavor-result-item\"><span>' + flavorI18n.sharedTable + '<\/span> <strong>' + shared + '<\/strong><\/div>' +\n        allergiesHtml +\n        dietaryHtml +\n        notesHtml +\n        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\/\/ GESTI\u00d3N DE RESERVAS\n\/\/ =====================\nvar flavorCurrentReservation = null;\n\nfunction flavorShowManage() {\n    document.querySelectorAll('.flavor-form-step').forEach(function(s) { s.style.display = 'none'; });\n    document.querySelector('.flavor-progress').style.display = 'none';\n    document.querySelector('.flavor-navigation').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-form-step').forEach(function(s) { s.style.display = 'none'; });\n    document.querySelector('.flavor-form-step[data-step=\"1\"]').style.display = 'block';\n    document.querySelector('.flavor-progress').style.display = 'block';\n    document.querySelector('.flavor-navigation').style.display = 'flex';\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) {\n        flavorToast(flavorI18n.enterCode);\n        return;\n    }\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    \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    \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    \n    var url = flavorRestUrl + 'reservations\/search?restaurant_id=' + flavorRestaurantId;\n    if (params.code) {\n        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    \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) {\n                flavorCurrentReservation = data.data;\n                flavorShowReservationResult(data.data);\n            } else {\n                flavorToast(data.message || flavorI18n.reservationNotFound, 'error');\n            }\n        })\n        .catch(function(err) {\n            document.querySelector('.flavor-loader').style.display = 'none';\n            flavorToast(flavorI18n.searchError, 'error');\n        });\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    \n    var dateParts = res.reservation_date.split('-');\n    var dateStr = dateParts[2] + '\/' + dateParts[1] + '\/' + dateParts[0];\n    \n    var statusText = flavorI18n.confirmed;\n    var statusClass = 'confirmed';\n    if (res.status === 'pending') { statusText = flavorI18n.pending; statusClass = 'pending'; }\n    if (res.status === 'cancelled') { statusText = flavorI18n.cancelled; statusClass = 'cancelled'; }\n    \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    \n    \/\/ Alergias \/ Restricciones (fusionado)\n    var allergiesRow = document.querySelector('.flavor-reservation-allergies');\n    var combinedAllergies = [res.allergies, res.dietary_restrictions].filter(function(v) { return v && v.trim(); }).join(', ');\n    if (combinedAllergies) {\n        allergiesRow.style.display = 'flex';\n        document.querySelector('.flavor-reservation-allergies-text').textContent = combinedAllergies;\n    } else {\n        allergiesRow.style.display = 'none';\n    }\n    \n    \/\/ Notas\n    var notesRow = document.querySelector('.flavor-reservation-notes');\n    if (res.notes && res.notes.trim()) {\n        notesRow.style.display = 'flex';\n        document.querySelector('.flavor-reservation-notes-text').textContent = res.notes;\n    } else {\n        notesRow.style.display = 'none';\n    }\n    \n    \/\/ Men\u00fa seleccionado\n    var menuSection = document.querySelector('.flavor-reservation-menu');\n    var hasMenu = (res.menu_starters && res.menu_starters.trim()) || \n                  (res.menu_mains && res.menu_mains.trim()) || \n                  (res.menu_desserts && res.menu_desserts.trim());\n    \n    if (hasMenu) {\n        menuSection.style.display = 'block';\n        \n        var startersDiv = document.querySelector('.flavor-reservation-starters');\n        if (res.menu_starters && res.menu_starters.trim()) {\n            startersDiv.style.display = 'block';\n            document.querySelector('.flavor-reservation-starters-text').textContent = res.menu_starters;\n        } else {\n            startersDiv.style.display = 'none';\n        }\n        \n        var mainsDiv = document.querySelector('.flavor-reservation-mains');\n        if (res.menu_mains && res.menu_mains.trim()) {\n            mainsDiv.style.display = 'block';\n            document.querySelector('.flavor-reservation-mains-text').textContent = res.menu_mains;\n        } else {\n            mainsDiv.style.display = 'none';\n        }\n        \n        var dessertsDiv = document.querySelector('.flavor-reservation-desserts');\n        if (res.menu_desserts && res.menu_desserts.trim()) {\n            dessertsDiv.style.display = 'block';\n            document.querySelector('.flavor-reservation-desserts-text').textContent = res.menu_desserts;\n        } else {\n            dessertsDiv.style.display = 'none';\n        }\n    } else {\n        menuSection.style.display = 'none';\n    }\n    \n    \/\/ Ocultar botones si ya est\u00e1 cancelada\n    var actions = document.querySelector('.flavor-manage-actions');\n    if (res.status === 'cancelled') {\n        actions.style.display = 'none';\n    } else {\n        actions.style.display = 'flex';\n    }\n}\n\nfunction flavorShowModify() {\n    if (!flavorCurrentReservation) return;\n    \n    document.querySelector('.flavor-manage-result').style.display = 'none';\n    document.querySelector('.flavor-manage-modify').style.display = 'block';\n    \n    \/\/ Rellenar selector de comensales\n    var guestsSelect = document.getElementById('flavor-modify-guests');\n    guestsSelect.innerHTML = '';\n    for (var i = 1; i <= 12; i++) {\n        var opt = document.createElement('option');\n        opt.value = i;\n        opt.textContent = i + ' ' + flavorI18n.people;\n        if (i == flavorCurrentReservation.guests) opt.selected = true;\n        guestsSelect.appendChild(opt);\n    }\n    \n    \/\/ Establecer fecha actual\n    document.getElementById('flavor-modify-date').value = flavorCurrentReservation.reservation_date;\n    document.getElementById('flavor-modify-date').min = new Date().toISOString().split('T')[0];\n    \n    \/\/ Cargar datos personales\n    document.getElementById('flavor-modify-first-name').value = flavorCurrentReservation.first_name || '';\n    document.getElementById('flavor-modify-last-name').value = flavorCurrentReservation.last_name || '';\n    document.getElementById('flavor-modify-email').value = flavorCurrentReservation.email || '';\n    document.getElementById('flavor-modify-phone').value = flavorCurrentReservation.phone || '';\n    var _allParts = [flavorCurrentReservation.allergies, flavorCurrentReservation.dietary_restrictions].filter(function(v) { return v && v.trim(); });\n    document.getElementById('flavor-modify-allergies').value = _allParts.join(', ');\n    document.getElementById('flavor-modify-dietary').value = '';\n    document.getElementById('flavor-modify-notes').value = flavorCurrentReservation.notes || '';\n    document.getElementById('flavor-modify-shared-table').checked = flavorCurrentReservation.shared_table == 1;\n    \n    \/\/ Cargar platos actuales\n    document.getElementById('flavor-modify-starters').value = flavorCurrentReservation.menu_starters || '';\n    document.getElementById('flavor-modify-mains').value = flavorCurrentReservation.menu_mains || '';\n    document.getElementById('flavor-modify-desserts').value = flavorCurrentReservation.menu_desserts || '';\n    \n    \/\/ Cargar horarios para esa fecha\n    flavorLoadModifyTimes();\n    \n    \/\/ Escuchar cambios de fecha\n    document.getElementById('flavor-modify-date').onchange = flavorLoadModifyTimes;\n    document.getElementById('flavor-modify-guests').onchange = flavorLoadModifyTimes;\n}\n\nfunction flavorLoadModifyTimes() {\n    var date = document.getElementById('flavor-modify-date').value;\n    var guests = document.getElementById('flavor-modify-guests').value;\n    var select = document.getElementById('flavor-modify-time');\n    \n    if (!date) {\n        select.innerHTML = '<option value=\"\">' + flavorI18n.selectDateFirst + '<\/option>';\n        return;\n    }\n    \n    select.innerHTML = '<option value=\"\">' + flavorI18n.loading + '<\/option>';\n    \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) {\n                        var opt = document.createElement('option');\n                        opt.value = slot.time_full;\n                        opt.textContent = slot.time;\n                        if (slot.time_full === flavorCurrentReservation.reservation_time) {\n                            opt.selected = true;\n                        }\n                        select.appendChild(opt);\n                    }\n                });\n                \/\/ A\u00f1adir hora actual si no est\u00e1 disponible (para mantenerla)\n                var currentTime = flavorCurrentReservation.reservation_time;\n                var hasCurrentTime = false;\n                for (var i = 0; i < select.options.length; i++) {\n                    if (select.options[i].value === currentTime) {\n                        hasCurrentTime = true;\n                        break;\n                    }\n                }\n                if (!hasCurrentTime && date === flavorCurrentReservation.reservation_date) {\n                    var opt = document.createElement('option');\n                    opt.value = currentTime;\n                    opt.textContent = currentTime.substring(0, 5) + ' ' + flavorI18n.current;\n                    opt.selected = true;\n                    select.insertBefore(opt, select.firstChild);\n                }\n            } else {\n                select.innerHTML = '<option value=\"\">' + flavorI18n.noTimesError + '<\/option>';\n            }\n        })\n        .catch(function() {\n            select.innerHTML = '<option value=\"\">' + flavorI18n.errorLoadingTimes + '<\/option>';\n        });\n}\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    \n    var newGuests = document.getElementById('flavor-modify-guests').value;\n    var newDate = document.getElementById('flavor-modify-date').value;\n    var newTime = document.getElementById('flavor-modify-time').value;\n    var firstName = document.getElementById('flavor-modify-first-name').value;\n    var lastName = document.getElementById('flavor-modify-last-name').value;\n    var email = document.getElementById('flavor-modify-email').value;\n    var phone = document.getElementById('flavor-modify-phone').value;\n    var allergies = document.getElementById('flavor-modify-allergies').value;\n    var dietary = document.getElementById('flavor-modify-dietary').value;\n    var notes = document.getElementById('flavor-modify-notes').value;\n    var menuStarters = document.getElementById('flavor-modify-starters').value;\n    var menuMains = document.getElementById('flavor-modify-mains').value;\n    var menuDesserts = document.getElementById('flavor-modify-desserts').value;\n    var sharedTable = document.getElementById('flavor-modify-shared-table').checked ? 1 : 0;\n    \n    if (!newTime) {\n        flavorToast(flavorI18n.selectTimeFirst);\n        return;\n    }\n    \n    document.querySelector('.flavor-loader').style.display = 'flex';\n    \n    fetch(flavorRestUrl + 'reservations\/' + flavorCurrentReservation.id + '\/modify', {\n        method: 'PUT',\n        headers: { 'Content-Type': 'application\/json' },\n        body: JSON.stringify({\n            guests: parseInt(newGuests),\n            reservation_date: newDate,\n            reservation_time: newTime,\n            first_name: firstName,\n            last_name: lastName,\n            email: email,\n            phone: phone,\n            allergies: allergies,\n            dietary_restrictions: dietary,\n            notes: notes,\n            shared_table: sharedTable,\n            menu_starters: menuStarters,\n            menu_mains: menuMains,\n            menu_desserts: menuDesserts\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) {\n            flavorCurrentReservation = data.data;\n            flavorShowReservationResult(data.data);\n            flavorToast(flavorI18n.modifySuccess, 'success');\n        } else {\n            flavorToast(data.message || flavorI18n.modifyError, 'error');\n        }\n    })\n    .catch(function() {\n        document.querySelector('.flavor-loader').style.display = 'none';\n        flavorToast(flavorI18n.modifyError, 'error');\n    });\n}\n\nfunction flavorCancelReservation() {\n    if (!flavorCurrentReservation) return;\n    \n    if (!confirm(flavorI18n.cancelConfirm)) {\n        return;\n    }\n    \n    document.querySelector('.flavor-loader').style.display = 'flex';\n    \n    fetch(flavorRestUrl + 'reservations\/' + flavorCurrentReservation.id + '\/cancel-public', {\n        method: 'PUT',\n        headers: { 'Content-Type': 'application\/json' }\n    })\n    .then(function(r) { return r.json(); })\n    .then(function(data) {\n        document.querySelector('.flavor-loader').style.display = 'none';\n        if (data.success) {\n            flavorCurrentReservation.status = 'cancelled';\n            flavorShowReservationResult(flavorCurrentReservation);\n            flavorToast(flavorI18n.cancelSuccess, 'success');\n        } else {\n            flavorToast(data.message || flavorI18n.cancelError, 'error');\n        }\n    })\n    .catch(function() {\n        document.querySelector('.flavor-loader').style.display = 'none';\n        flavorToast(flavorI18n.cancelError, 'error');\n    });\n}\n\n\/\/ Detectar par\u00e1metro manage_code en URL para abrir directamente la gesti\u00f3n\n(function() {\n    var urlParams = new URLSearchParams(window.location.search);\n    var manageCode = urlParams.get('manage_code');\n    \n    if (manageCode || window.location.hash === '#manage') {\n        \/\/ Mostrar vista de gesti\u00f3n\n        flavorShowManage();\n        \n        if (manageCode) {\n            \/\/ Rellenar c\u00f3digo y buscar autom\u00e1ticamente\n            document.getElementById('flavor-manage-code').value = manageCode;\n            \/\/ Esperar un momento para que se muestre la UI y luego buscar\n            setTimeout(function() {\n                flavorSearchReservation({ code: manageCode });\n            }, 300);\n        }\n    }\n})();\n<\/script>\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\">Qanta<\/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, Qanta 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, Qanta 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\">Qanta\u2019s 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 Qanta 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>Treurer Restaurant, 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":8,"href":"https:\/\/treurer.com\/en\/wp-json\/wp\/v2\/pages\/44269\/revisions"}],"predecessor-version":[{"id":44279,"href":"https:\/\/treurer.com\/en\/wp-json\/wp\/v2\/pages\/44269\/revisions\/44279"}],"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}]}}