{"id":222,"date":"2025-02-10T22:23:47","date_gmt":"2025-02-10T22:23:47","guid":{"rendered":"https:\/\/latincafewaterfall.com\/?page_id=222"},"modified":"2026-08-27T08:33:17","modified_gmt":"2026-08-27T08:33:17","slug":"menu","status":"publish","type":"page","link":"https:\/\/latincafewaterfall.com\/es\/menu\/","title":{"rendered":"Men\u00fa"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"222\" class=\"elementor elementor-222\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-a4803b0 e-flex e-con-boxed e-con e-parent\" data-id=\"a4803b0\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-40b26cc elementor-widget elementor-widget-html\" data-id=\"40b26cc\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div id=\"wf-app\">\r\n\r\n<style>\r\n\r\n#wf-app{\r\n  --gold:#f4b942;\r\n  --dark:#151515;\r\n\r\n  font-family:Arial,Helvetica,sans-serif;\r\n  color:#222;\r\n\r\n  background:\r\n    linear-gradient(rgba(10,10,10,.56),rgba(10,10,10,.68)),\r\n    url('https:\/\/images.unsplash.com\/photo-1504674900247-0877df9cc836?auto=format&fit=crop&w=1800&q=85');\r\n\r\n  background-size:cover;\r\n  background-position:center;\r\n  background-attachment:fixed;\r\n\r\n  padding:0 20px 30px;\r\n}\r\n\r\n#wf-app *{\r\n  box-sizing:border-box;\r\n}\r\n\r\n\r\n\/* =========================================\r\n   BARRA DE CATEGOR\u00cdAS\r\n========================================= *\/\r\n\r\n.wf-category-nav{\r\n  display:flex;\r\n  flex-wrap:wrap;\r\n\r\n  justify-content:center;\r\n  align-items:center;\r\n\r\n  gap:7px 9px;\r\n\r\n  width:100%;\r\n\r\n  padding:10px 12px;\r\n\r\n  position:sticky;\r\n\r\n  \/* AJUSTA ESTE N\u00daMERO SI EL HEADER\r\n     DE WORDPRESS ES M\u00c1S ALTO O M\u00c1S BAJO *\/\r\n  top:100px;\r\n\r\n  z-index:9999;\r\n\r\n  background:rgba(255,255,255,.97);\r\n\r\n  border-radius:0 0 14px 14px;\r\n\r\n  box-shadow:0 4px 14px rgba(0,0,0,.18);\r\n}\r\n\r\n\r\n#wf-app .wf-category-button{\r\n\r\n  flex:0 1 auto !important;\r\n\r\n  white-space:nowrap !important;\r\n\r\n  border:1px solid #d7d7d7 !important;\r\n\r\n  background:#ffffff !important;\r\n\r\n  color:#111111 !important;\r\n\r\n  padding:8px 13px !important;\r\n\r\n  border-radius:22px !important;\r\n\r\n  cursor:pointer !important;\r\n\r\n  font-size:13px !important;\r\n\r\n  font-weight:800 !important;\r\n\r\n  line-height:1.2 !important;\r\n\r\n  text-shadow:none !important;\r\n\r\n  box-shadow:0 2px 5px rgba(0,0,0,.08) !important;\r\n\r\n  transition:.15s;\r\n}\r\n\r\n\r\n#wf-app .wf-category-button:hover{\r\n\r\n  background:#151515 !important;\r\n\r\n  color:#ffffff !important;\r\n\r\n  border-color:#151515 !important;\r\n}\r\n\r\n\r\n\/* CATEGOR\u00cdA SELECCIONADA *\/\r\n\r\n#wf-app .wf-category-button.active{\r\n\r\n  background:#151515 !important;\r\n\r\n  color:#ffffff !important;\r\n\r\n  border-color:#151515 !important;\r\n\r\n  box-shadow:0 3px 8px rgba(0,0,0,.22) !important;\r\n}\r\n\r\n\r\n\/* =========================================\r\n   PORTADA\r\n========================================= *\/\r\n\r\n.wf-hero{\r\n\r\n  max-width:1200px;\r\n\r\n  margin:0 auto 25px;\r\n\r\n  padding:45px 25px;\r\n\r\n  text-align:center;\r\n\r\n  color:white;\r\n}\r\n\r\n\r\n.wf-hero-small{\r\n\r\n  text-transform:uppercase;\r\n\r\n  letter-spacing:3px;\r\n\r\n  font-size:13px;\r\n\r\n  opacity:.9;\r\n}\r\n\r\n\r\n.wf-hero h1{\r\n\r\n  margin:8px 0;\r\n\r\n  font-size:48px;\r\n\r\n  color:white;\r\n}\r\n\r\n\r\n.wf-hero p{\r\n\r\n  font-size:18px;\r\n\r\n  max-width:700px;\r\n\r\n  margin:10px auto;\r\n\r\n  color:white;\r\n}\r\n\r\n\r\n\/* =========================================\r\n   CONTENEDOR\r\n========================================= *\/\r\n\r\n.wf-shell{\r\n\r\n  max-width:1200px;\r\n\r\n  margin:auto;\r\n\r\n  background:transparent;\r\n\r\n  padding:10px 0 30px;\r\n\r\n  box-shadow:none;\r\n}\r\n\r\n\r\n\/* =========================================\r\n   TARJETAS\r\n========================================= *\/\r\n\r\n.wf-grid{\r\n\r\n  display:grid;\r\n\r\n  grid-template-columns:\r\n    repeat(3,minmax(0,1fr));\r\n\r\n  gap:20px;\r\n}\r\n\r\n\r\n.wf-card{\r\n\r\n  background:\r\n    rgba(255,255,255,.96);\r\n\r\n  border-radius:18px;\r\n\r\n  overflow:hidden;\r\n\r\n  border:\r\n    1px solid rgba(255,255,255,.7);\r\n\r\n  box-shadow:\r\n    0 7px 22px rgba(0,0,0,.25);\r\n\r\n  display:flex;\r\n\r\n  flex-direction:column;\r\n}\r\n\r\n\r\n.wf-media{\r\n\r\n  height:220px;\r\n\r\n  background:\r\n    linear-gradient(\r\n      135deg,\r\n      rgba(45,45,45,.95),\r\n      rgba(15,15,15,.95)\r\n    );\r\n\r\n  overflow:hidden;\r\n}\r\n\r\n\r\n.wf-media img,\r\n.wf-media video{\r\n\r\n  width:100%;\r\n\r\n  height:100%;\r\n\r\n  object-fit:cover;\r\n}\r\n\r\n\r\n.wf-placeholder{\r\n\r\n  height:100%;\r\n\r\n  display:flex;\r\n\r\n  flex-direction:column;\r\n\r\n  justify-content:center;\r\n\r\n  align-items:center;\r\n\r\n  text-align:center;\r\n\r\n  color:white;\r\n\r\n  padding:20px;\r\n}\r\n\r\n\r\n.wf-placeholder strong{\r\n\r\n  font-size:18px;\r\n\r\n  margin-bottom:6px;\r\n\r\n  color:white;\r\n}\r\n\r\n\r\n.wf-placeholder small{\r\n\r\n  opacity:.7;\r\n\r\n  color:white;\r\n}\r\n\r\n\r\n.wf-card-body{\r\n\r\n  padding:16px;\r\n\r\n  display:flex;\r\n\r\n  flex-direction:column;\r\n\r\n  flex:1;\r\n}\r\n\r\n\r\n.wf-name{\r\n\r\n  font-size:20px;\r\n\r\n  font-weight:800;\r\n\r\n  margin-bottom:6px;\r\n\r\n  color:#111;\r\n}\r\n\r\n\r\n.wf-description{\r\n\r\n  color:#666;\r\n\r\n  font-size:14px;\r\n\r\n  line-height:1.4;\r\n\r\n  margin-bottom:10px;\r\n}\r\n\r\n\r\n.wf-includes{\r\n\r\n  color:#8b6800;\r\n\r\n  font-size:13px;\r\n\r\n  font-weight:bold;\r\n\r\n  margin-bottom:10px;\r\n}\r\n\r\n\r\n.wf-bottom{\r\n\r\n  margin-top:auto;\r\n\r\n  display:flex;\r\n\r\n  align-items:center;\r\n\r\n  justify-content:space-between;\r\n\r\n  gap:10px;\r\n}\r\n\r\n\r\n.wf-price{\r\n\r\n  font-size:22px;\r\n\r\n  font-weight:800;\r\n\r\n  color:#111;\r\n}\r\n\r\n\r\n\/* =========================================\r\n   BOT\u00d3N CHEF\r\n========================================= *\/\r\n\r\n#wf-app .wf-chef-add{\r\n\r\n  width:52px !important;\r\n\r\n  height:52px !important;\r\n\r\n  min-width:52px !important;\r\n\r\n  min-height:52px !important;\r\n\r\n  padding:0 !important;\r\n\r\n  border:0 !important;\r\n\r\n  outline:none !important;\r\n\r\n  border-radius:50% !important;\r\n\r\n  background:#f4b942 !important;\r\n\r\n  color:#111 !important;\r\n\r\n  font-size:27px !important;\r\n\r\n  line-height:1 !important;\r\n\r\n  display:flex !important;\r\n\r\n  align-items:center !important;\r\n\r\n  justify-content:center !important;\r\n\r\n  cursor:pointer !important;\r\n\r\n  box-shadow:\r\n    0 3px 9px rgba(0,0,0,.22) !important;\r\n\r\n  transition:transform .15s;\r\n}\r\n\r\n\r\n#wf-app .wf-chef-add:hover{\r\n\r\n  transform:scale(1.08);\r\n}\r\n\r\n\r\n#wf-app .wf-chef-add:active{\r\n\r\n  transform:scale(.94);\r\n}\r\n\r\n\r\n\/* =========================================\r\n   CARRITO FLOTANTE\r\n========================================= *\/\r\n\r\n#wf-floating-cart{\r\n\r\n  position:fixed;\r\n\r\n  right:22px;\r\n\r\n  bottom:22px;\r\n\r\n  z-index:999990;\r\n\r\n  border:0 !important;\r\n\r\n  border-radius:30px !important;\r\n\r\n  background:#151515 !important;\r\n\r\n  color:white !important;\r\n\r\n  padding:13px 18px !important;\r\n\r\n  cursor:pointer;\r\n\r\n  box-shadow:\r\n    0 7px 25px rgba(0,0,0,.4);\r\n\r\n  font-size:16px !important;\r\n\r\n  font-weight:bold;\r\n\r\n  display:flex;\r\n\r\n  align-items:center;\r\n\r\n  gap:9px;\r\n}\r\n\r\n\r\n#wf-floating-cart-count{\r\n\r\n  min-width:24px;\r\n\r\n  height:24px;\r\n\r\n  padding:0 6px;\r\n\r\n  border-radius:20px;\r\n\r\n  background:var(--gold);\r\n\r\n  color:#111;\r\n\r\n  display:flex;\r\n\r\n  align-items:center;\r\n\r\n  justify-content:center;\r\n\r\n  font-size:13px;\r\n}\r\n\r\n\r\n\/* =========================================\r\n   OVERLAYS\r\n========================================= *\/\r\n\r\n.wf-overlay{\r\n\r\n  display:none;\r\n\r\n  position:fixed;\r\n\r\n  inset:0;\r\n\r\n  background:\r\n    rgba(0,0,0,.74);\r\n\r\n  z-index:999999;\r\n\r\n  padding:18px;\r\n\r\n  overflow:auto;\r\n}\r\n\r\n\r\n\/* =========================================\r\n   CARRITO\r\n========================================= *\/\r\n\r\n#wf-cart-modal{\r\n\r\n  max-width:650px;\r\n\r\n  margin:30px auto;\r\n\r\n  background:#171717;\r\n\r\n  color:white;\r\n\r\n  border-radius:22px;\r\n\r\n  padding:22px;\r\n\r\n  box-shadow:\r\n    0 20px 60px rgba(0,0,0,.5);\r\n}\r\n\r\n\r\n.wf-modal-top{\r\n\r\n  display:flex;\r\n\r\n  justify-content:space-between;\r\n\r\n  align-items:center;\r\n\r\n  gap:10px;\r\n}\r\n\r\n\r\n.wf-modal-top h2{\r\n\r\n  margin:0;\r\n\r\n  color:white;\r\n}\r\n\r\n\r\n.wf-close{\r\n\r\n  width:40px !important;\r\n\r\n  height:40px !important;\r\n\r\n  padding:0 !important;\r\n\r\n  border:0 !important;\r\n\r\n  border-radius:50% !important;\r\n\r\n  background:white !important;\r\n\r\n  color:#111 !important;\r\n\r\n  font-size:21px !important;\r\n\r\n  cursor:pointer;\r\n}\r\n\r\n\r\n\/* =========================================\r\n   PRODUCTOS EN CARRITO\r\n========================================= *\/\r\n\r\n.wf-cart-row{\r\n\r\n  display:grid;\r\n\r\n  grid-template-columns:\r\n    1fr auto auto;\r\n\r\n  gap:12px;\r\n\r\n  align-items:center;\r\n\r\n  padding:14px 0;\r\n\r\n  border-bottom:\r\n    1px solid #3b3b3b;\r\n}\r\n\r\n\r\n.wf-cart-name{\r\n\r\n  font-weight:bold;\r\n\r\n  color:white;\r\n}\r\n\r\n\r\n.wf-cart-price{\r\n\r\n  color:#bbb;\r\n\r\n  font-size:13px;\r\n}\r\n\r\n\r\n.wf-cart-options{\r\n\r\n  color:#ddd;\r\n\r\n  font-size:13px;\r\n\r\n  margin-top:5px;\r\n\r\n  line-height:1.4;\r\n}\r\n\r\n\r\n.wf-qty{\r\n\r\n  display:flex;\r\n\r\n  align-items:center;\r\n\r\n  gap:7px;\r\n}\r\n\r\n\r\n.wf-qty button{\r\n\r\n  width:34px !important;\r\n\r\n  height:34px !important;\r\n\r\n  padding:0 !important;\r\n\r\n  border:\r\n    1px solid #555 !important;\r\n\r\n  background:\r\n    #2d2d2d !important;\r\n\r\n  color:white !important;\r\n\r\n  border-radius:8px !important;\r\n\r\n  cursor:pointer;\r\n}\r\n\r\n\r\n.wf-remove{\r\n\r\n  border:0 !important;\r\n\r\n  background:\r\n    transparent !important;\r\n\r\n  color:white !important;\r\n\r\n  font-size:20px !important;\r\n\r\n  cursor:pointer;\r\n}\r\n\r\n\r\n.wf-total-area{\r\n\r\n  text-align:right;\r\n\r\n  margin-top:18px;\r\n}\r\n\r\n\r\n.wf-total-label{\r\n\r\n  color:#aaa;\r\n\r\n  font-size:13px;\r\n}\r\n\r\n\r\n.wf-total{\r\n\r\n  color:var(--gold);\r\n\r\n  font-size:32px;\r\n\r\n  font-weight:bold;\r\n}\r\n\r\n\r\n\/* =========================================\r\n   FORMULARIO\r\n========================================= *\/\r\n\r\n.wf-form{\r\n\r\n  margin-top:24px;\r\n\r\n  padding-top:18px;\r\n\r\n  border-top:\r\n    1px solid #444;\r\n}\r\n\r\n\r\n.wf-form h3{\r\n\r\n  color:white;\r\n}\r\n\r\n\r\n.wf-form-grid{\r\n\r\n  display:grid;\r\n\r\n  grid-template-columns:\r\n    1fr 1fr;\r\n\r\n  gap:10px;\r\n}\r\n\r\n\r\n.wf-form input,\r\n.wf-form textarea{\r\n\r\n  width:100%;\r\n\r\n  padding:14px;\r\n\r\n  margin-top:10px;\r\n\r\n  border:\r\n    1px solid #555;\r\n\r\n  border-radius:10px;\r\n\r\n  background:#242424;\r\n\r\n  color:white;\r\n\r\n  font-size:16px;\r\n}\r\n\r\n\r\n.wf-form input::placeholder,\r\n.wf-form textarea::placeholder{\r\n\r\n  color:#bbb;\r\n}\r\n\r\n\r\n.wf-payment{\r\n\r\n  margin-top:14px;\r\n\r\n  padding:14px;\r\n\r\n  background:#292929;\r\n\r\n  border-left:\r\n    4px solid var(--gold);\r\n\r\n  border-radius:10px;\r\n\r\n  color:white;\r\n}\r\n\r\n\r\n#wf-submit{\r\n\r\n  width:100%;\r\n\r\n  padding:17px !important;\r\n\r\n  margin-top:18px;\r\n\r\n  border:0 !important;\r\n\r\n  border-radius:12px !important;\r\n\r\n  background:\r\n    var(--gold) !important;\r\n\r\n  color:#111 !important;\r\n\r\n  font-size:19px !important;\r\n\r\n  font-weight:900 !important;\r\n\r\n  cursor:pointer;\r\n}\r\n\r\n\r\n#wf-submit:disabled{\r\n\r\n  opacity:.55;\r\n}\r\n\r\n\r\n#wf-message{\r\n\r\n  margin-top:15px;\r\n\r\n  text-align:center;\r\n\r\n  font-weight:bold;\r\n\r\n  line-height:1.5;\r\n}\r\n\r\n\r\n.wf-success{\r\n\r\n  background:#e9ffe8;\r\n\r\n  color:#135c19 !important;\r\n\r\n  padding:18px;\r\n\r\n  border-radius:12px;\r\n}\r\n\r\n\r\n\/* =========================================\r\n   ACOMPA\u00d1ANTES\r\n========================================= *\/\r\n\r\n#wf-side-modal{\r\n\r\n  max-width:550px;\r\n\r\n  margin:40px auto;\r\n\r\n  background:white;\r\n\r\n  border-radius:20px;\r\n\r\n  padding:24px;\r\n}\r\n\r\n\r\n#wf-side-modal h2{\r\n\r\n  margin-top:0;\r\n\r\n  color:#111;\r\n}\r\n\r\n\r\n.wf-side-help{\r\n\r\n  background:#fff4cf;\r\n\r\n  padding:11px;\r\n\r\n  border-radius:9px;\r\n\r\n  margin-bottom:12px;\r\n\r\n  color:#111;\r\n}\r\n\r\n\r\n.wf-side-option{\r\n\r\n  display:flex;\r\n\r\n  gap:12px;\r\n\r\n  align-items:center;\r\n\r\n  padding:12px;\r\n\r\n  border-bottom:\r\n    1px solid #eee;\r\n\r\n  cursor:pointer;\r\n\r\n  color:#111;\r\n}\r\n\r\n\r\n.wf-side-option input{\r\n\r\n  width:21px;\r\n\r\n  height:21px;\r\n}\r\n\r\n\r\n.wf-side-actions{\r\n\r\n  display:flex;\r\n\r\n  gap:10px;\r\n\r\n  margin-top:18px;\r\n}\r\n\r\n\r\n.wf-side-actions button{\r\n\r\n  flex:1;\r\n\r\n  padding:13px !important;\r\n\r\n  border:0 !important;\r\n\r\n  border-radius:9px !important;\r\n\r\n  cursor:pointer;\r\n\r\n  font-weight:bold;\r\n}\r\n\r\n\r\n#wf-cancel-sides{\r\n\r\n  background:#ddd !important;\r\n\r\n  color:#111 !important;\r\n}\r\n\r\n\r\n#wf-confirm-sides{\r\n\r\n  background:#151515 !important;\r\n\r\n  color:white !important;\r\n}\r\n\r\n\r\n\/* =========================================\r\n   TABLET\r\n========================================= *\/\r\n\r\n@media(max-width:900px){\r\n\r\n  .wf-grid{\r\n\r\n    grid-template-columns:\r\n      repeat(2,minmax(0,1fr));\r\n\r\n  }\r\n\r\n}\r\n\r\n\r\n\/* =========================================\r\n   TEL\u00c9FONO\r\n========================================= *\/\r\n\r\n@media(max-width:600px){\r\n\r\n  #wf-app{\r\n\r\n    padding:0 8px 20px;\r\n\r\n    background-attachment:scroll;\r\n\r\n  }\r\n\r\n\r\n  .wf-category-nav{\r\n\r\n    top:80px;\r\n\r\n    gap:6px;\r\n\r\n    padding:8px 6px;\r\n\r\n  }\r\n\r\n\r\n  #wf-app .wf-category-button{\r\n\r\n    padding:\r\n      7px 9px !important;\r\n\r\n    font-size:\r\n      11px !important;\r\n\r\n  }\r\n\r\n\r\n  .wf-hero{\r\n\r\n    padding:\r\n      30px 10px;\r\n\r\n  }\r\n\r\n\r\n  .wf-hero h1{\r\n\r\n    font-size:35px;\r\n\r\n  }\r\n\r\n\r\n  .wf-shell{\r\n\r\n    padding:6px;\r\n\r\n  }\r\n\r\n\r\n  .wf-grid{\r\n\r\n    grid-template-columns:1fr;\r\n\r\n  }\r\n\r\n\r\n  .wf-media{\r\n\r\n    height:230px;\r\n\r\n  }\r\n\r\n\r\n  .wf-form-grid{\r\n\r\n    grid-template-columns:1fr;\r\n\r\n  }\r\n\r\n\r\n  #wf-floating-cart{\r\n\r\n    right:12px;\r\n\r\n    bottom:12px;\r\n\r\n    padding:\r\n      11px 14px !important;\r\n\r\n  }\r\n\r\n}\r\n\r\n<\/style>\r\n\r\n\r\n\r\n<!-- =====================================\r\n     BARRA DE CATEGOR\u00cdAS\r\n===================================== -->\r\n\r\n<div\r\n  id=\"wfCategoryNav\"\r\n  class=\"wf-category-nav\">\r\n<\/div>\r\n\r\n\r\n\r\n<!-- =====================================\r\n     PORTADA\r\n===================================== -->\r\n\r\n<div class=\"wf-hero\">\r\n\r\n  <div class=\"wf-hero-small\">\r\n\r\n    Waterfall Latin Cafe\r\n\r\n  <\/div>\r\n\r\n\r\n  <h1>\r\n\r\n    Ordena tu comida favorita\r\n\r\n  <\/h1>\r\n\r\n\r\n  <p>\r\n\r\n    Escoge tus platos,\r\n    personaliza tus acompa\u00f1antes\r\n    y env\u00eda tu orden directamente\r\n    al restaurante.\r\n\r\n  <\/p>\r\n\r\n<\/div>\r\n\r\n\r\n\r\n<!-- =====================================\r\n     MEN\u00da\r\n===================================== -->\r\n\r\n<div class=\"wf-shell\">\r\n\r\n  <div id=\"wfMenu\"><\/div>\r\n\r\n<\/div>\r\n\r\n\r\n\r\n<!-- =====================================\r\n     CARRITO FLOTANTE\r\n===================================== -->\r\n\r\n<button\r\n  type=\"button\"\r\n  id=\"wf-floating-cart\">\r\n\r\n  \ud83d\uded2 Carrito\r\n\r\n  <span\r\n    id=\"wf-floating-cart-count\">\r\n\r\n    0\r\n\r\n  <\/span>\r\n\r\n  <span>\r\n\r\n    $\r\n    <span\r\n      id=\"wf-floating-total\">\r\n\r\n      0.00\r\n\r\n    <\/span>\r\n\r\n  <\/span>\r\n\r\n<\/button>\r\n\r\n\r\n\r\n<!-- =====================================\r\n     VENTANA CARRITO\r\n===================================== -->\r\n\r\n<div\r\n  id=\"wf-cart-overlay\"\r\n  class=\"wf-overlay\">\r\n\r\n\r\n  <div id=\"wf-cart-modal\">\r\n\r\n\r\n    <div class=\"wf-modal-top\">\r\n\r\n      <h2>\r\n\r\n        \ud83d\uded2 Tu pedido\r\n\r\n      <\/h2>\r\n\r\n\r\n      <button\r\n        type=\"button\"\r\n        id=\"wf-close-cart\"\r\n        class=\"wf-close\">\r\n\r\n        \u2715\r\n\r\n      <\/button>\r\n\r\n    <\/div>\r\n\r\n\r\n\r\n    <div id=\"wfCartItems\">\r\n\r\n      <p>\r\n\r\n        Tu carrito est\u00e1 vac\u00edo.\r\n\r\n      <\/p>\r\n\r\n    <\/div>\r\n\r\n\r\n\r\n    <div class=\"wf-total-area\">\r\n\r\n      <div class=\"wf-total-label\">\r\n\r\n        TOTAL\r\n\r\n      <\/div>\r\n\r\n\r\n      <div class=\"wf-total\">\r\n\r\n        $\r\n        <span id=\"wfTotal\">\r\n\r\n          0.00\r\n\r\n        <\/span>\r\n\r\n      <\/div>\r\n\r\n    <\/div>\r\n\r\n\r\n\r\n    <div class=\"wf-form\">\r\n\r\n\r\n      <h3>\r\n\r\n        Datos para recoger\r\n\r\n      <\/h3>\r\n\r\n\r\n      <div class=\"wf-form-grid\">\r\n\r\n\r\n        <input\r\n          id=\"wfName\"\r\n          type=\"text\"\r\n          placeholder=\"Nombre\"\r\n          autocomplete=\"name\">\r\n\r\n\r\n        <input\r\n          id=\"wfPhone\"\r\n          type=\"tel\"\r\n          placeholder=\"Tel\u00e9fono\"\r\n          autocomplete=\"tel\">\r\n\r\n\r\n      <\/div>\r\n\r\n\r\n\r\n      <textarea\r\n        id=\"wfNotes\"\r\n        rows=\"3\"\r\n        placeholder=\"Notas, alergias o instrucciones para la cocina\"><\/textarea>\r\n\r\n\r\n\r\n      <div class=\"wf-payment\">\r\n\r\n        <strong>\r\n\r\n          \ud83d\udcb5 Pago al recoger\r\n\r\n        <\/strong>\r\n\r\n        <br>\r\n\r\n        Pagar\u00e1s cuando recojas\r\n        tu pedido en el restaurante.\r\n\r\n      <\/div>\r\n\r\n\r\n    <\/div>\r\n\r\n\r\n\r\n    <button\r\n      type=\"button\"\r\n      id=\"wf-submit\">\r\n\r\n      CONFIRMAR PEDIDO\r\n\r\n    <\/button>\r\n\r\n\r\n    <div id=\"wf-message\"><\/div>\r\n\r\n\r\n  <\/div>\r\n\r\n<\/div>\r\n\r\n\r\n\r\n<!-- =====================================\r\n     ACOMPA\u00d1ANTES\r\n===================================== -->\r\n\r\n<div\r\n  id=\"wf-side-overlay\"\r\n  class=\"wf-overlay\">\r\n\r\n\r\n  <div id=\"wf-side-modal\">\r\n\r\n\r\n    <h2 id=\"wf-side-title\">\r\n\r\n      Escoge tus acompa\u00f1antes\r\n\r\n    <\/h2>\r\n\r\n\r\n    <div class=\"wf-side-help\">\r\n\r\n      Selecciona exactamente\r\n\r\n      <strong>\r\n\r\n        2 acompa\u00f1antes\r\n\r\n      <\/strong>.\r\n\r\n    <\/div>\r\n\r\n\r\n    <div id=\"wf-side-list\"><\/div>\r\n\r\n\r\n    <div class=\"wf-side-actions\">\r\n\r\n\r\n      <button\r\n        type=\"button\"\r\n        id=\"wf-cancel-sides\">\r\n\r\n        CANCELAR\r\n\r\n      <\/button>\r\n\r\n\r\n      <button\r\n        type=\"button\"\r\n        id=\"wf-confirm-sides\">\r\n\r\n        AGREGAR\r\n\r\n      <\/button>\r\n\r\n\r\n    <\/div>\r\n\r\n\r\n  <\/div>\r\n\r\n<\/div>\r\n\r\n\r\n\r\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/@supabase\/supabase-js@2\"><\/script>\r\n\r\n\r\n<script>\r\n\r\n\r\n\/* =========================================\r\n   SUPABASE\r\n========================================= *\/\r\n\r\nconst SUPABASE_URL =\r\n'https:\/\/xkugpcriyyemhfcfhnth.supabase.co';\r\n\r\n\r\nconst SUPABASE_KEY =\r\n'sb_publishable_J2dfh2XmeiPyy6p84aSKlw_e3VO0byo';\r\n\r\n\r\nconst wfDB =\r\nsupabase.createClient(\r\n  SUPABASE_URL,\r\n  SUPABASE_KEY\r\n);\r\n\r\n\r\n\r\n\/* =========================================\r\n   ACOMPA\u00d1ANTES\r\n========================================= *\/\r\n\r\nconst wfSides = [\r\n\r\n  'French Fries',\r\n\r\n  'Mashed Potatoes',\r\n\r\n  'Saut\u00e9ed Vegetables',\r\n\r\n  'Red Beans',\r\n\r\n  'Tostones',\r\n\r\n  'Rice with Vegetables',\r\n\r\n  'Black Beans',\r\n\r\n  'Waterfall Salad',\r\n\r\n  'Maduros',\r\n\r\n  'Mang\u00fa',\r\n\r\n  'Yuca with Mojo',\r\n\r\n  'Arroz Congr\u00ed',\r\n\r\n  'White Rice'\r\n\r\n];\r\n\r\n\r\n\r\n\/* =========================================\r\n   PRODUCTOS\r\n========================================= *\/\r\n\r\nconst wfProducts = [\r\n\r\n\r\n\/* APERITIVOS *\/\r\n\r\n{\r\n category:'Aperitivos',\r\n name:'Camar\u00f3n Cocktail',\r\n description:'Camarones preparados estilo cocktail.',\r\n price:12.99,\r\n sides:0,\r\n image:'',\r\n video:''\r\n},\r\n\r\n\r\n{\r\n category:'Aperitivos',\r\n name:'Fried Yuca',\r\n description:'Yuca frita dorada y crujiente.',\r\n price:7.99,\r\n sides:0,\r\n image:'',\r\n video:''\r\n},\r\n\r\n\r\n{\r\n category:'Aperitivos',\r\n name:'Ham or Chicken Croquettes - 5 Pieces',\r\n description:'Cinco croquetas de jam\u00f3n o pollo.',\r\n price:8.00,\r\n sides:0,\r\n image:'',\r\n video:''\r\n},\r\n\r\n\r\n{\r\n category:'Aperitivos',\r\n name:'Tostones with Ropa Vieja',\r\n description:'Tostones con ropa vieja.',\r\n price:13.00,\r\n sides:0,\r\n image:'',\r\n video:''\r\n},\r\n\r\n\r\n{\r\n category:'Aperitivos',\r\n name:'Guacamole & Shrimp Stuffed Tost\u00f3n',\r\n description:'Tost\u00f3n relleno de guacamole y camarones.',\r\n price:15.99,\r\n sides:0,\r\n image:'',\r\n video:''\r\n},\r\n\r\n\r\n{\r\n category:'Aperitivos',\r\n name:'Brava Potatoes',\r\n description:'Papas estilo brava.',\r\n price:7.00,\r\n sides:0,\r\n image:'',\r\n video:''\r\n},\r\n\r\n\r\n{\r\n category:'Aperitivos',\r\n name:'Bruschetta',\r\n description:'Bruschetta preparada al momento.',\r\n price:7.00,\r\n sides:0,\r\n image:'',\r\n video:''\r\n},\r\n\r\n\r\n\r\n\/* SOPAS *\/\r\n\r\n{\r\n category:'Sopas',\r\n name:'Beef Soup',\r\n description:'Sopa casera de res.',\r\n price:14.00,\r\n sides:0,\r\n image:'',\r\n video:''\r\n},\r\n\r\n\r\n{\r\n category:'Sopas',\r\n name:'Chicken Vegetable Soup',\r\n description:'Sopa de pollo con vegetales.',\r\n price:12.99,\r\n sides:0,\r\n image:'',\r\n video:''\r\n},\r\n\r\n\r\n{\r\n category:'Sopas',\r\n name:'Red Bean Soup',\r\n description:'Sopa casera de frijoles rojos.',\r\n price:7.00,\r\n sides:0,\r\n image:'',\r\n video:''\r\n},\r\n\r\n\r\n\r\n\/* ENSALADAS *\/\r\n\r\n{\r\n category:'Ensaladas',\r\n name:'Waterfall Salad',\r\n description:'Ensalada fresca de la casa.',\r\n price:5.99,\r\n sides:0,\r\n image:'',\r\n video:''\r\n},\r\n\r\n\r\n{\r\n category:'Ensaladas',\r\n name:'Tuna Salad',\r\n description:'Ensalada con at\u00fan.',\r\n price:14.00,\r\n sides:0,\r\n image:'',\r\n video:''\r\n},\r\n\r\n\r\n{\r\n category:'Ensaladas',\r\n name:'Shrimp Salad',\r\n description:'Ensalada fresca con camarones.',\r\n price:19.00,\r\n sides:0,\r\n image:'',\r\n video:''\r\n},\r\n\r\n\r\n\r\n\/* S\u00c1NDWICHES *\/\r\n\r\n{\r\n category:'S\u00e1ndwiches',\r\n name:'Cuban Sandwich',\r\n description:'Cl\u00e1sico s\u00e1ndwich cubano.',\r\n price:14.00,\r\n sides:0,\r\n included:'French Fries',\r\n image:'',\r\n video:''\r\n},\r\n\r\n\r\n{\r\n category:'S\u00e1ndwiches',\r\n name:'Veggie Sandwich',\r\n description:'S\u00e1ndwich de vegetales.',\r\n price:13.00,\r\n sides:0,\r\n included:'French Fries',\r\n image:'',\r\n video:''\r\n},\r\n\r\n\r\n{\r\n category:'S\u00e1ndwiches',\r\n name:'Tuna Sandwich',\r\n description:'S\u00e1ndwich preparado con at\u00fan.',\r\n price:13.00,\r\n sides:0,\r\n included:'French Fries',\r\n image:'',\r\n video:''\r\n},\r\n\r\n\r\n{\r\n category:'S\u00e1ndwiches',\r\n name:'Roast Pork Sandwich',\r\n description:'S\u00e1ndwich de lech\u00f3n asado.',\r\n price:13.00,\r\n sides:0,\r\n included:'French Fries',\r\n image:'',\r\n video:''\r\n},\r\n\r\n\r\n\r\n\/* POLLO *\/\r\n\r\n{\r\n category:'Pollo',\r\n name:'Pineapple Bacon Chicken Breast',\r\n description:'Pechuga con pi\u00f1a y bacon.',\r\n price:18.99,\r\n sides:2,\r\n image:'',\r\n video:''\r\n},\r\n\r\n\r\n{\r\n category:'Pollo',\r\n name:'Chicken with Potatoes',\r\n description:'Pollo preparado al momento.',\r\n price:19.99,\r\n sides:2,\r\n image:'',\r\n video:''\r\n},\r\n\r\n\r\n{\r\n category:'Pollo',\r\n name:'BBQ Chicken',\r\n description:'Pollo preparado con BBQ.',\r\n price:17.99,\r\n sides:2,\r\n image:'',\r\n video:''\r\n},\r\n\r\n\r\n{\r\n category:'Pollo',\r\n name:'Chicken Strips',\r\n description:'Tiras de pollo.',\r\n price:18.99,\r\n sides:2,\r\n image:'',\r\n video:''\r\n},\r\n\r\n\r\n\r\n\/* CERDO *\/\r\n\r\n{\r\n category:'Cerdo',\r\n name:'Pork Chop (12 oz)',\r\n description:'Chuleta de cerdo de 12 oz.',\r\n price:18.50,\r\n sides:2,\r\n image:'',\r\n video:''\r\n},\r\n\r\n\r\n{\r\n category:'Cerdo',\r\n name:'Roast Pork',\r\n description:'Lech\u00f3n asado.',\r\n price:18.99,\r\n sides:2,\r\n image:'',\r\n video:''\r\n},\r\n\r\n\r\n{\r\n category:'Cerdo',\r\n name:'Fried Pork Chunks',\r\n description:'Masitas de cerdo fritas.',\r\n price:16.99,\r\n sides:2,\r\n image:'',\r\n video:''\r\n},\r\n\r\n\r\n{\r\n category:'Cerdo',\r\n name:'BBQ Ribs (1\/2 Rack)',\r\n description:'Media costilla BBQ.',\r\n price:19.99,\r\n sides:2,\r\n image:'',\r\n video:''\r\n},\r\n\r\n\r\n\r\n\/* MARISCOS *\/\r\n\r\n{\r\n category:'Mariscos',\r\n name:'Shrimp Skewer',\r\n description:'Brocheta de camarones.',\r\n price:18.99,\r\n sides:2,\r\n image:'',\r\n video:''\r\n},\r\n\r\n\r\n{\r\n category:'Mariscos',\r\n name:'Salmon with Lemon Butter Sauce',\r\n description:'Salm\u00f3n con mantequilla y lim\u00f3n.',\r\n price:22.99,\r\n sides:2,\r\n image:'',\r\n video:''\r\n},\r\n\r\n\r\n{\r\n category:'Mariscos',\r\n name:'Parmesan Garlic Shrimp',\r\n description:'Camarones con ajo y parmesano.',\r\n price:19.99,\r\n sides:2,\r\n image:'',\r\n video:''\r\n},\r\n\r\n\r\n{\r\n category:'Mariscos',\r\n name:'White Fish Fillet',\r\n description:'Filete de pescado blanco.',\r\n price:18.99,\r\n sides:2,\r\n image:'',\r\n video:''\r\n},\r\n\r\n\r\n\r\n\/* RES *\/\r\n\r\n{\r\n category:'Res',\r\n name:'Skirt Steak with Onions (12 oz)',\r\n description:'Churrasco de 12 oz con cebolla.',\r\n price:28.99,\r\n sides:2,\r\n image:'',\r\n video:''\r\n},\r\n\r\n\r\n{\r\n category:'Res',\r\n name:'New York Strip (12 oz)',\r\n description:'New York Strip de 12 oz.',\r\n price:29.00,\r\n sides:2,\r\n image:'',\r\n video:''\r\n},\r\n\r\n\r\n{\r\n category:'Res',\r\n name:'Picanha (12 oz)',\r\n description:'Picanha de 12 oz.',\r\n price:29.00,\r\n sides:2,\r\n image:'',\r\n video:''\r\n},\r\n\r\n\r\n{\r\n category:'Res',\r\n name:'Spicy Oxtail',\r\n description:'Rabo con saz\u00f3n de la casa.',\r\n price:30.00,\r\n sides:2,\r\n image:'',\r\n video:''\r\n},\r\n\r\n\r\n{\r\n category:'Res',\r\n name:'Ground Beef Creole',\r\n description:'Picadillo estilo criollo.',\r\n price:18.99,\r\n sides:2,\r\n image:'',\r\n video:''\r\n},\r\n\r\n\r\n{\r\n category:'Res',\r\n name:'Ropa Vieja',\r\n description:'Carne deshebrada estilo cubano.',\r\n price:19.99,\r\n sides:2,\r\n image:'',\r\n video:''\r\n},\r\n\r\n\r\n\r\n\/* MAR Y TIERRA *\/\r\n\r\n{\r\n category:'Mar y Tierra',\r\n name:'Skirt Steak with Shrimp',\r\n description:'Churrasco con camarones.',\r\n price:35.00,\r\n sides:2,\r\n image:'',\r\n video:''\r\n},\r\n\r\n\r\n{\r\n category:'Mar y Tierra',\r\n name:'Chicken & Shrimp',\r\n description:'Pollo con camarones.',\r\n price:26.00,\r\n sides:2,\r\n image:'',\r\n video:''\r\n},\r\n\r\n\r\n{\r\n category:'Mar y Tierra',\r\n name:'Waterfall Combination',\r\n description:'Combinaci\u00f3n especial Waterfall.',\r\n price:40.00,\r\n sides:0,\r\n image:'',\r\n video:''\r\n},\r\n\r\n\r\n\r\n\/* CARNES EX\u00d3TICAS *\/\r\n\r\n{\r\n category:'Carnes Ex\u00f3ticas',\r\n name:'Rabbit (1\/2 Rabbit)',\r\n description:'Medio conejo preparado a la orden.',\r\n price:23.00,\r\n sides:2,\r\n image:'',\r\n video:''\r\n},\r\n\r\n\r\n{\r\n category:'Carnes Ex\u00f3ticas',\r\n name:'Lamb Chop',\r\n description:'Chuleta de cordero.',\r\n price:29.99,\r\n sides:2,\r\n image:'',\r\n video:''\r\n},\r\n\r\n\r\n\r\n\/* POSTRES *\/\r\n\r\n{\r\n category:'Postres',\r\n name:'Key Lime Pie',\r\n description:'Cl\u00e1sico Key Lime Pie.',\r\n price:6.99,\r\n sides:0,\r\n image:'',\r\n video:''\r\n},\r\n\r\n\r\n{\r\n category:'Postres',\r\n name:'Strawberry Cheesecake',\r\n description:'Cheesecake de fresa.',\r\n price:6.99,\r\n sides:0,\r\n image:'',\r\n video:''\r\n},\r\n\r\n\r\n{\r\n category:'Postres',\r\n name:'Cuban Rice Pudding',\r\n description:'Arroz con leche estilo cubano.',\r\n price:7.00,\r\n sides:0,\r\n image:'',\r\n video:''\r\n},\r\n\r\n\r\n{\r\n category:'Postres',\r\n name:'Flan',\r\n description:'Flan tradicional.',\r\n price:7.00,\r\n sides:0,\r\n image:'',\r\n video:''\r\n}\r\n\r\n];\r\n\r\n\r\n\r\n\/* =========================================\r\n   VARIABLES\r\n========================================= *\/\r\n\r\nlet wfCart = [];\r\n\r\n\r\nlet wfPendingProduct = null;\r\n\r\n\r\n\/* AL ENTRAR SE MUESTRAN APERITIVOS *\/\r\n\r\nlet wfCurrentCategory =\r\n'Aperitivos';\r\n\r\n\r\nconst wfCategories =\r\n[\r\n  ...new Set(\r\n    wfProducts.map(\r\n      product =>\r\n        product.category\r\n    )\r\n  )\r\n];\r\n\r\n\r\n\r\n\/* =========================================\r\n   FOTO \/ VIDEO\r\n========================================= *\/\r\n\r\nfunction wfMedia(product){\r\n\r\n\r\n  if(product.video){\r\n\r\n    return `\r\n\r\n      <video\r\n        controls\r\n        muted\r\n        playsinline>\r\n\r\n        <source\r\n          src=\"${product.video}\">\r\n\r\n      <\/video>\r\n\r\n    `;\r\n\r\n  }\r\n\r\n\r\n  if(product.image){\r\n\r\n    return `\r\n\r\n      <img decoding=\"async\"\r\n        src=\"${product.image}\"\r\n        alt=\"${product.name}\"\r\n        loading=\"lazy\">\r\n\r\n    `;\r\n\r\n  }\r\n\r\n\r\n  return `\r\n\r\n    <div class=\"wf-placeholder\">\r\n\r\n      <strong>\r\n\r\n        Waterfall Latin Cafe\r\n\r\n      <\/strong>\r\n\r\n      <small>\r\n\r\n        Foto o video pr\u00f3ximamente\r\n\r\n      <\/small>\r\n\r\n    <\/div>\r\n\r\n  `;\r\n\r\n}\r\n\r\n\r\n\r\n\/* =========================================\r\n   BOTONES DE CATEGOR\u00cdAS\r\n========================================= *\/\r\n\r\nfunction wfRenderCategories(){\r\n\r\n\r\n  const nav =\r\n    document.getElementById(\r\n      'wfCategoryNav'\r\n    );\r\n\r\n\r\n  nav.innerHTML = '';\r\n\r\n\r\n  wfCategories.forEach(\r\n    function(category){\r\n\r\n\r\n      const button =\r\n        document.createElement(\r\n          'button'\r\n        );\r\n\r\n\r\n      button.type =\r\n        'button';\r\n\r\n\r\n      button.className =\r\n        'wf-category-button';\r\n\r\n\r\n      button.textContent =\r\n        category;\r\n\r\n\r\n      if(\r\n        category ===\r\n        wfCurrentCategory\r\n      ){\r\n\r\n        button.classList.add(\r\n          'active'\r\n        );\r\n\r\n      }\r\n\r\n\r\n      button.onclick =\r\n        function(){\r\n\r\n\r\n          wfCurrentCategory =\r\n            category;\r\n\r\n\r\n          wfRenderMenu();\r\n\r\n\r\n          wfRenderCategories();\r\n\r\n\r\n          \/*\r\n            Cuando cambias categor\u00eda,\r\n            lleva al cliente al inicio\r\n            de los productos.\r\n          *\/\r\n\r\n          const menu =\r\n            document.getElementById(\r\n              'wfMenu'\r\n            );\r\n\r\n\r\n          const offset =\r\n            165;\r\n\r\n\r\n          const position =\r\n            menu\r\n            .getBoundingClientRect()\r\n            .top\r\n            +\r\n            window.pageYOffset\r\n            -\r\n            offset;\r\n\r\n\r\n          window.scrollTo({\r\n\r\n            top:position,\r\n\r\n            behavior:'smooth'\r\n\r\n          });\r\n\r\n        };\r\n\r\n\r\n      nav.appendChild(\r\n        button\r\n      );\r\n\r\n    }\r\n  );\r\n\r\n}\r\n\r\n\r\n\r\n\/* =========================================\r\n   MOSTRAR SOLO LA CATEGOR\u00cdA SELECCIONADA\r\n========================================= *\/\r\n\r\nfunction wfRenderMenu(){\r\n\r\n\r\n  const menu =\r\n    document.getElementById(\r\n      'wfMenu'\r\n    );\r\n\r\n\r\n  menu.innerHTML = '';\r\n\r\n\r\n  const products =\r\n    wfProducts.filter(\r\n\r\n      product =>\r\n\r\n        product.category ===\r\n        wfCurrentCategory\r\n\r\n    );\r\n\r\n\r\n  const grid =\r\n    document.createElement(\r\n      'div'\r\n    );\r\n\r\n\r\n  grid.className =\r\n    'wf-grid';\r\n\r\n\r\n  products.forEach(\r\n    function(product){\r\n\r\n\r\n      const card =\r\n        document.createElement(\r\n          'article'\r\n        );\r\n\r\n\r\n      card.className =\r\n        'wf-card';\r\n\r\n\r\n      let includes = '';\r\n\r\n\r\n      if(product.sides === 2){\r\n\r\n        includes =\r\n\r\n          '<div class=\"wf-includes\">' +\r\n\r\n          'Escoge 2 acompa\u00f1antes' +\r\n\r\n          '<\/div>';\r\n\r\n      }\r\n\r\n\r\n      if(product.included){\r\n\r\n        includes =\r\n\r\n          '<div class=\"wf-includes\">' +\r\n\r\n          'Incluye ' +\r\n\r\n          product.included +\r\n\r\n          '<\/div>';\r\n\r\n      }\r\n\r\n\r\n      card.innerHTML = `\r\n\r\n\r\n        <div class=\"wf-media\">\r\n\r\n          ${wfMedia(product)}\r\n\r\n        <\/div>\r\n\r\n\r\n        <div class=\"wf-card-body\">\r\n\r\n\r\n          <div class=\"wf-name\">\r\n\r\n            ${product.name}\r\n\r\n          <\/div>\r\n\r\n\r\n          <div class=\"wf-description\">\r\n\r\n            ${product.description}\r\n\r\n          <\/div>\r\n\r\n\r\n          ${includes}\r\n\r\n\r\n          <div class=\"wf-bottom\">\r\n\r\n\r\n            <div class=\"wf-price\">\r\n\r\n              $${product.price.toFixed(2)}\r\n\r\n            <\/div>\r\n\r\n\r\n            <button\r\n              type=\"button\"\r\n              class=\"wf-chef-add\"\r\n              title=\"Agregar al pedido\">\r\n\r\n              \ud83d\udc68\u200d\ud83c\udf73\r\n\r\n            <\/button>\r\n\r\n\r\n          <\/div>\r\n\r\n\r\n        <\/div>\r\n\r\n      `;\r\n\r\n\r\n      card\r\n        .querySelector(\r\n          '.wf-chef-add'\r\n        )\r\n        .onclick =\r\n        function(){\r\n\r\n          wfStartAdd(\r\n            product\r\n          );\r\n\r\n        };\r\n\r\n\r\n      grid.appendChild(\r\n        card\r\n      );\r\n\r\n\r\n    }\r\n  );\r\n\r\n\r\n  menu.appendChild(\r\n    grid\r\n  );\r\n\r\n}\r\n\r\n\r\n\r\n\/* =========================================\r\n   AGREGAR\r\n========================================= *\/\r\n\r\nfunction wfStartAdd(product){\r\n\r\n\r\n  if(product.sides === 2){\r\n\r\n    wfPendingProduct =\r\n      product;\r\n\r\n\r\n    wfOpenSides();\r\n\r\n\r\n    return;\r\n\r\n  }\r\n\r\n\r\n  let options = '';\r\n\r\n\r\n  if(product.included){\r\n\r\n    options =\r\n\r\n      'Incluye: ' +\r\n\r\n      product.included;\r\n\r\n  }\r\n\r\n\r\n  wfAddToCart(\r\n    product,\r\n    options\r\n  );\r\n\r\n}\r\n\r\n\r\n\r\n\/* =========================================\r\n   SIDES\r\n========================================= *\/\r\n\r\nfunction wfOpenSides(){\r\n\r\n\r\n  const list =\r\n    document.getElementById(\r\n      'wf-side-list'\r\n    );\r\n\r\n\r\n  list.innerHTML = '';\r\n\r\n\r\n  document.getElementById(\r\n    'wf-side-title'\r\n  ).textContent =\r\n\r\n    'Acompa\u00f1antes para ' +\r\n\r\n    wfPendingProduct.name;\r\n\r\n\r\n  wfSides.forEach(\r\n    function(side){\r\n\r\n\r\n      const label =\r\n        document.createElement(\r\n          'label'\r\n        );\r\n\r\n\r\n      label.className =\r\n        'wf-side-option';\r\n\r\n\r\n      label.innerHTML = `\r\n\r\n        <input\r\n          type=\"checkbox\"\r\n          value=\"${side}\">\r\n\r\n        <span>\r\n\r\n          ${side}\r\n\r\n        <\/span>\r\n\r\n      `;\r\n\r\n\r\n      list.appendChild(\r\n        label\r\n      );\r\n\r\n\r\n    }\r\n  );\r\n\r\n\r\n  document.getElementById(\r\n    'wf-side-overlay'\r\n  ).style.display =\r\n    'block';\r\n\r\n}\r\n\r\n\r\n\r\n\/* CANCELAR SIDES *\/\r\n\r\ndocument.getElementById(\r\n  'wf-cancel-sides'\r\n).onclick =\r\nfunction(){\r\n\r\n\r\n  document.getElementById(\r\n    'wf-side-overlay'\r\n  ).style.display =\r\n    'none';\r\n\r\n\r\n  wfPendingProduct =\r\n    null;\r\n\r\n};\r\n\r\n\r\n\r\n\/* CONFIRMAR SIDES *\/\r\n\r\ndocument.getElementById(\r\n  'wf-confirm-sides'\r\n).onclick =\r\nfunction(){\r\n\r\n\r\n  const selected =\r\n    [\r\n      ...document.querySelectorAll(\r\n        '#wf-side-list input:checked'\r\n      )\r\n    ];\r\n\r\n\r\n  if(selected.length !== 2){\r\n\r\n    alert(\r\n      'Selecciona exactamente 2 acompa\u00f1antes.'\r\n    );\r\n\r\n    return;\r\n\r\n  }\r\n\r\n\r\n  const names =\r\n    selected.map(\r\n      input =>\r\n        input.value\r\n    );\r\n\r\n\r\n  const options =\r\n\r\n    'Acompa\u00f1antes: ' +\r\n\r\n    names.join(' + ');\r\n\r\n\r\n  wfAddToCart(\r\n    wfPendingProduct,\r\n    options\r\n  );\r\n\r\n\r\n  document.getElementById(\r\n    'wf-side-overlay'\r\n  ).style.display =\r\n    'none';\r\n\r\n\r\n  wfPendingProduct =\r\n    null;\r\n\r\n};\r\n\r\n\r\n\r\n\/* =========================================\r\n   AGREGAR AL CARRITO\r\n========================================= *\/\r\n\r\nfunction wfAddToCart(\r\n  product,\r\n  options\r\n){\r\n\r\n\r\n  const existing =\r\n    wfCart.find(\r\n\r\n      item =>\r\n\r\n        item.name ===\r\n        product.name\r\n\r\n        &&\r\n\r\n        item.options ===\r\n        options\r\n\r\n    );\r\n\r\n\r\n  if(existing){\r\n\r\n    existing.quantity++;\r\n\r\n  }\r\n\r\n  else{\r\n\r\n    wfCart.push({\r\n\r\n      name:\r\n        product.name,\r\n\r\n      price:\r\n        product.price,\r\n\r\n      quantity:\r\n        1,\r\n\r\n      options:\r\n        options || '',\r\n\r\n      notes:\r\n        ''\r\n\r\n    });\r\n\r\n  }\r\n\r\n\r\n  wfRenderCart();\r\n\r\n}\r\n\r\n\r\n\r\n\/* =========================================\r\n   MOSTRAR CARRITO\r\n========================================= *\/\r\n\r\nfunction wfRenderCart(){\r\n\r\n\r\n  const box =\r\n    document.getElementById(\r\n      'wfCartItems'\r\n    );\r\n\r\n\r\n  box.innerHTML = '';\r\n\r\n\r\n  let totalItems = 0;\r\n\r\n\r\n  wfCart.forEach(\r\n    function(item){\r\n\r\n      totalItems +=\r\n        item.quantity;\r\n\r\n    }\r\n  );\r\n\r\n\r\n  document.getElementById(\r\n    'wf-floating-cart-count'\r\n  ).textContent =\r\n    totalItems;\r\n\r\n\r\n  const total =\r\n    wfCart.reduce(\r\n\r\n      function(sum,item){\r\n\r\n        return (\r\n\r\n          sum +\r\n\r\n          item.price *\r\n\r\n          item.quantity\r\n\r\n        );\r\n\r\n      },\r\n\r\n      0\r\n\r\n    );\r\n\r\n\r\n  document.getElementById(\r\n    'wf-floating-total'\r\n  ).textContent =\r\n    total.toFixed(2);\r\n\r\n\r\n  document.getElementById(\r\n    'wfTotal'\r\n  ).textContent =\r\n    total.toFixed(2);\r\n\r\n\r\n  if(wfCart.length === 0){\r\n\r\n    box.innerHTML =\r\n\r\n      '<p>Tu carrito est\u00e1 vac\u00edo.<\/p>';\r\n\r\n    return;\r\n\r\n  }\r\n\r\n\r\n  wfCart.forEach(\r\n    function(item,index){\r\n\r\n\r\n      const row =\r\n        document.createElement(\r\n          'div'\r\n        );\r\n\r\n\r\n      row.className =\r\n        'wf-cart-row';\r\n\r\n\r\n      row.innerHTML = `\r\n\r\n\r\n        <div>\r\n\r\n\r\n          <div class=\"wf-cart-name\">\r\n\r\n            ${item.name}\r\n\r\n          <\/div>\r\n\r\n\r\n          <div class=\"wf-cart-price\">\r\n\r\n            $${item.price.toFixed(2)} c\/u\r\n\r\n          <\/div>\r\n\r\n\r\n          ${\r\n            item.options\r\n\r\n            ?\r\n\r\n            '<div class=\"wf-cart-options\">' +\r\n\r\n            item.options +\r\n\r\n            '<\/div>'\r\n\r\n            :\r\n\r\n            ''\r\n          }\r\n\r\n\r\n        <\/div>\r\n\r\n\r\n\r\n        <div class=\"wf-qty\">\r\n\r\n\r\n          <button\r\n            type=\"button\"\r\n            class=\"minus\">\r\n\r\n            \u2212\r\n\r\n          <\/button>\r\n\r\n\r\n          <strong>\r\n\r\n            ${item.quantity}\r\n\r\n          <\/strong>\r\n\r\n\r\n          <button\r\n            type=\"button\"\r\n            class=\"plus\">\r\n\r\n            +\r\n\r\n          <\/button>\r\n\r\n\r\n        <\/div>\r\n\r\n\r\n\r\n        <button\r\n          type=\"button\"\r\n          class=\"wf-remove\">\r\n\r\n          \ud83d\uddd1\ufe0f\r\n\r\n        <\/button>\r\n\r\n\r\n      `;\r\n\r\n\r\n\r\n      row.querySelector(\r\n        '.minus'\r\n      ).onclick =\r\n      function(){\r\n\r\n\r\n        item.quantity--;\r\n\r\n\r\n        if(\r\n          item.quantity <= 0\r\n        ){\r\n\r\n          wfCart.splice(\r\n            index,\r\n            1\r\n          );\r\n\r\n        }\r\n\r\n\r\n        wfRenderCart();\r\n\r\n      };\r\n\r\n\r\n\r\n      row.querySelector(\r\n        '.plus'\r\n      ).onclick =\r\n      function(){\r\n\r\n\r\n        item.quantity++;\r\n\r\n\r\n        wfRenderCart();\r\n\r\n      };\r\n\r\n\r\n\r\n      row.querySelector(\r\n        '.wf-remove'\r\n      ).onclick =\r\n      function(){\r\n\r\n\r\n        wfCart.splice(\r\n          index,\r\n          1\r\n        );\r\n\r\n\r\n        wfRenderCart();\r\n\r\n      };\r\n\r\n\r\n      box.appendChild(\r\n        row\r\n      );\r\n\r\n\r\n    }\r\n  );\r\n\r\n}\r\n\r\n\r\n\r\n\/* =========================================\r\n   ABRIR CARRITO\r\n========================================= *\/\r\n\r\ndocument.getElementById(\r\n  'wf-floating-cart'\r\n).onclick =\r\nfunction(){\r\n\r\n\r\n  document.getElementById(\r\n    'wf-cart-overlay'\r\n  ).style.display =\r\n    'block';\r\n\r\n};\r\n\r\n\r\n\r\n\/* =========================================\r\n   CERRAR CARRITO\r\n========================================= *\/\r\n\r\ndocument.getElementById(\r\n  'wf-close-cart'\r\n).onclick =\r\nfunction(){\r\n\r\n\r\n  document.getElementById(\r\n    'wf-cart-overlay'\r\n  ).style.display =\r\n    'none';\r\n\r\n};\r\n\r\n\r\n\r\n\/* =========================================\r\n   ENVIAR PEDIDO\r\n========================================= *\/\r\n\r\ndocument.getElementById(\r\n  'wf-submit'\r\n).onclick =\r\n  wfEnviarPedido;\r\n\r\n\r\n\r\nasync function wfEnviarPedido(){\r\n\r\n\r\n  const name =\r\n    document.getElementById(\r\n      'wfName'\r\n    ).value.trim();\r\n\r\n\r\n  const phone =\r\n    document.getElementById(\r\n      'wfPhone'\r\n    ).value.trim();\r\n\r\n\r\n  const notes =\r\n    document.getElementById(\r\n      'wfNotes'\r\n    ).value.trim();\r\n\r\n\r\n  const message =\r\n    document.getElementById(\r\n      'wf-message'\r\n    );\r\n\r\n\r\n  const button =\r\n    document.getElementById(\r\n      'wf-submit'\r\n    );\r\n\r\n\r\n  message.className = '';\r\n\r\n  message.innerHTML = '';\r\n\r\n\r\n  if(wfCart.length === 0){\r\n\r\n    message.style.color =\r\n      '#ff8a80';\r\n\r\n\r\n    message.textContent =\r\n      'Agrega al menos un plato.';\r\n\r\n\r\n    return;\r\n\r\n  }\r\n\r\n\r\n  if(!name){\r\n\r\n    message.style.color =\r\n      '#ff8a80';\r\n\r\n\r\n    message.textContent =\r\n      'Escribe tu nombre.';\r\n\r\n\r\n    return;\r\n\r\n  }\r\n\r\n\r\n  if(!phone){\r\n\r\n    message.style.color =\r\n      '#ff8a80';\r\n\r\n\r\n    message.textContent =\r\n      'Escribe tu tel\u00e9fono.';\r\n\r\n\r\n    return;\r\n\r\n  }\r\n\r\n\r\n  button.disabled =\r\n    true;\r\n\r\n\r\n  button.textContent =\r\n    'ENVIANDO PEDIDO...';\r\n\r\n\r\n\r\n  const items =\r\n    wfCart.map(\r\n      function(item){\r\n\r\n\r\n        return {\r\n\r\n          product_name:\r\n            item.name,\r\n\r\n          quantity:\r\n            item.quantity,\r\n\r\n          unit_price:\r\n            item.price,\r\n\r\n          options:\r\n            item.options || null,\r\n\r\n          notes:\r\n            item.notes || null\r\n\r\n        };\r\n\r\n\r\n      }\r\n    );\r\n\r\n\r\n\r\n  const result =\r\n    await wfDB.rpc(\r\n\r\n      'place_order',\r\n\r\n      {\r\n\r\n        p_customer_name:\r\n          name,\r\n\r\n        p_customer_phone:\r\n          phone,\r\n\r\n        p_order_type:\r\n          'pickup',\r\n\r\n        p_notes:\r\n          notes || '',\r\n\r\n        p_items:\r\n          items\r\n\r\n      }\r\n\r\n    );\r\n\r\n\r\n\r\n  if(result.error){\r\n\r\n\r\n    console.error(\r\n      result.error\r\n    );\r\n\r\n\r\n    message.style.color =\r\n      '#ff8a80';\r\n\r\n\r\n    message.textContent =\r\n      'No pudimos enviar el pedido. Int\u00e9ntalo nuevamente.';\r\n\r\n\r\n    button.disabled =\r\n      false;\r\n\r\n\r\n    button.textContent =\r\n      'CONFIRMAR PEDIDO';\r\n\r\n\r\n    return;\r\n\r\n  }\r\n\r\n\r\n\r\n  const order =\r\n    result.data;\r\n\r\n\r\n\r\n  message.className =\r\n    'wf-success';\r\n\r\n\r\n\r\n  message.innerHTML = `\r\n\r\n    \u2705\r\n\r\n    <strong>\r\n\r\n      \u00a1Pedido recibido!\r\n\r\n    <\/strong>\r\n\r\n\r\n    <br><br>\r\n\r\n\r\n    N\u00famero:\r\n\r\n\r\n    <strong>\r\n\r\n      ${order.order_number}\r\n\r\n    <\/strong>\r\n\r\n\r\n    <br>\r\n\r\n\r\n    Total:\r\n\r\n\r\n    <strong>\r\n\r\n      $${Number(order.total).toFixed(2)}\r\n\r\n    <\/strong>\r\n\r\n\r\n    <br><br>\r\n\r\n\r\n    \ud83d\udcb5 Paga cuando recojas\r\n    tu pedido.\r\n\r\n  `;\r\n\r\n\r\n\r\n  wfCart = [];\r\n\r\n\r\n  wfRenderCart();\r\n\r\n\r\n\r\n  document.getElementById(\r\n    'wfName'\r\n  ).value = '';\r\n\r\n\r\n  document.getElementById(\r\n    'wfPhone'\r\n  ).value = '';\r\n\r\n\r\n  document.getElementById(\r\n    'wfNotes'\r\n  ).value = '';\r\n\r\n\r\n\r\n  button.disabled =\r\n    false;\r\n\r\n\r\n  button.textContent =\r\n    'CONFIRMAR PEDIDO';\r\n\r\n}\r\n\r\n\r\n\r\n\/* =========================================\r\n   INICIAR\r\n========================================= *\/\r\n\r\nwfRenderCategories();\r\n\r\nwfRenderMenu();\r\n\r\nwfRenderCart();\r\n\r\n\r\n<\/script>\r\n\r\n<\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Waterfall Latin Cafe Ordena tu comida favorita Escoge tus platos, personaliza tus acompa\u00f1antes y env\u00eda tu orden directamente al restaurante. \ud83d\uded2 Carrito 0 $ 0.00 \ud83d\uded2 Tu pedido \u2715 Tu carrito est\u00e1 vac\u00edo. TOTAL $ 0.00 Datos para recoger \ud83d\udcb5 Pago al recoger Pagar\u00e1s cuando recojas tu pedido en el restaurante. CONFIRMAR PEDIDO Escoge tus [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"_themeisle_gutenberg_block_has_review":false,"footnotes":""},"class_list":["post-222","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/latincafewaterfall.com\/es\/wp-json\/wp\/v2\/pages\/222","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/latincafewaterfall.com\/es\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/latincafewaterfall.com\/es\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/latincafewaterfall.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/latincafewaterfall.com\/es\/wp-json\/wp\/v2\/comments?post=222"}],"version-history":[{"count":58,"href":"https:\/\/latincafewaterfall.com\/es\/wp-json\/wp\/v2\/pages\/222\/revisions"}],"predecessor-version":[{"id":628,"href":"https:\/\/latincafewaterfall.com\/es\/wp-json\/wp\/v2\/pages\/222\/revisions\/628"}],"wp:attachment":[{"href":"https:\/\/latincafewaterfall.com\/es\/wp-json\/wp\/v2\/media?parent=222"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}