{"id":425,"date":"2026-08-18T17:08:25","date_gmt":"2026-08-18T17:08:25","guid":{"rendered":"https:\/\/frenchriviera-lounge.com\/?page_id=425"},"modified":"2026-08-25T16:22:42","modified_gmt":"2026-08-25T16:22:42","slug":"en-blog","status":"publish","type":"page","link":"https:\/\/frenchriviera-lounge.com\/en\/en-blog\/","title":{"rendered":"Blog"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"425\" class=\"elementor elementor-425\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-24668a8 e-flex e-con-boxed e-con e-parent\" data-id=\"24668a8\" 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-56471d9 elementor-widget elementor-widget-html\" data-id=\"56471d9\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!-- =========================================================\r\n     LA FRENCH RIVIERA \u2014 BLOG\r\n     Elementor HTML Widget\r\n     HTML + CSS + JavaScript\r\n========================================================= -->\r\n\r\n<style>\r\n\r\n\/* =========================================================\r\n   VARIABLES\r\n========================================================= *\/\r\n\r\n#lfr-blog-app{\r\n    \/* FULL BLEED: saca el blog del ancho limitado del contenedor de Elementor *\/\r\n    position:relative;\r\n    left:50%;\r\n    width:100vw;\r\n    max-width:100vw;\r\n    margin-left:-50vw;\r\n    margin-right:-50vw;\r\n    overflow-x:clip;\r\n\r\n    --navy:#1D3A4C;\r\n    --navy-dark:#082A41;\r\n    --navy-deep:#041D30;\r\n    --gold:#C1A36D;\r\n    --cream:#FFFAF3;\r\n    --cream-2:#F8F2EA;\r\n    --text:#314B5B;\r\n    --line:rgba(193,163,109,.28);\r\n\r\n    \/*\r\n    CAMBIA ESTA URL POR:\r\n    BANNER LA FRENCH PARA WEB-7.jpg\r\n    *\/\r\n    --hero-image:url(\"\/wp-content\/uploads\/2026\/08\/Imagen-7.webp\");\r\n\r\n    overflow:hidden;\r\n    background:var(--cream);\r\n    color:var(--navy);\r\n}\r\n\r\n#lfr-blog-app,\r\n#lfr-blog-app *{\r\n    box-sizing:border-box;\r\n}\r\n\r\n#lfr-blog-app a{\r\n    text-decoration:none;\r\n}\r\n\r\n#lfr-blog-app img{\r\n    max-width:100%;\r\n}\r\n\r\n\/* El contenido interno mantiene una lectura c\u00f3moda,\r\n   pero los fondos\/hero\/barra llegan de borde a borde. *\/\r\n#lfr-blog-app section{\r\n    width:100%;\r\n    max-width:none;\r\n}\r\n\r\n\/* En pantallas peque\u00f1as evitamos cualquier desbordamiento lateral. *\/\r\nhtml,\r\nbody{\r\n    max-width:100%;\r\n    overflow-x:hidden;\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   HERO\r\n========================================================= *\/\r\n\r\n.lfr-blog-hero{\r\n    position:relative;\r\n\r\n    min-height:510px;\r\n\r\n    display:flex;\r\n    align-items:center;\r\n    justify-content:center;\r\n\r\n    padding:90px 30px;\r\n\r\n    background-image:\r\n        linear-gradient(\r\n            rgba(4,29,48,.70),\r\n            rgba(4,29,48,.78)\r\n        ),\r\n        var(--hero-image);\r\n\r\n    background-size:cover;\r\n    background-position:center;\r\n    background-repeat:no-repeat;\r\n}\r\n\r\n.lfr-blog-hero::after{\r\n    content:\"\";\r\n\r\n    position:absolute;\r\n    inset:0;\r\n\r\n    background:\r\n        radial-gradient(\r\n            circle at center,\r\n            transparent 0%,\r\n            rgba(4,29,48,.25) 100%\r\n        );\r\n}\r\n\r\n.lfr-blog-hero__content{\r\n    position:relative;\r\n    z-index:2;\r\n\r\n    width:100%;\r\n    max-width:900px;\r\n\r\n    text-align:center;\r\n}\r\n\r\n.lfr-blog-hero__eyebrow{\r\n    margin-bottom:18px;\r\n\r\n    font-family:\"Inter\",sans-serif;\r\n    font-size:12px;\r\n    font-weight:600;\r\n\r\n    letter-spacing:.28em;\r\n    text-transform:uppercase;\r\n\r\n    color:var(--gold);\r\n}\r\n\r\n.lfr-blog-hero__ornament{\r\n    width:220px;\r\n\r\n    display:flex;\r\n    align-items:center;\r\n\r\n    gap:12px;\r\n\r\n    margin:0 auto 22px;\r\n\r\n    color:var(--gold);\r\n}\r\n\r\n.lfr-blog-hero__ornament::before,\r\n.lfr-blog-hero__ornament::after{\r\n    content:\"\";\r\n\r\n    height:1px;\r\n    flex:1;\r\n\r\n    background:var(--gold);\r\n}\r\n\r\n.lfr-blog-hero h1{\r\n    margin:0;\r\n\r\n    font-family:\"Cormorant Garamond\",serif;\r\n    font-size:clamp(65px,7vw,105px);\r\n    font-weight:500;\r\n\r\n    line-height:.92;\r\n\r\n    letter-spacing:-.025em;\r\n\r\n    color:var(--cream);\r\n}\r\n\r\n.lfr-blog-hero__text{\r\n    max-width:650px;\r\n\r\n    margin:28px auto 0;\r\n\r\n    font-family:\"Inter\",sans-serif;\r\n    font-size:16px;\r\n    line-height:1.7;\r\n\r\n    color:rgba(255,250,243,.92);\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   GENERALES\r\n========================================================= *\/\r\n\r\n.lfr-blog-shell{\r\n    width:100%;\r\n    max-width:1320px;\r\n\r\n    margin:0 auto;\r\n}\r\n\r\n.lfr-blog-section-eyebrow{\r\n    margin-bottom:10px;\r\n\r\n    font-family:\"Inter\",sans-serif;\r\n    font-size:11px;\r\n    font-weight:600;\r\n\r\n    letter-spacing:.2em;\r\n\r\n    text-transform:uppercase;\r\n\r\n    color:var(--gold);\r\n}\r\n\r\n.lfr-blog-section-title{\r\n    margin:0;\r\n\r\n    font-family:\"Cormorant Garamond\",serif;\r\n    font-size:clamp(44px,4vw,62px);\r\n    font-weight:500;\r\n\r\n    line-height:1;\r\n\r\n    color:var(--navy);\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   DESTACADO\r\n========================================================= *\/\r\n\r\n.lfr-blog-featured{\r\n    padding:90px 30px 80px;\r\n\r\n    background:var(--cream);\r\n}\r\n\r\n.lfr-blog-featured__heading{\r\n    margin-bottom:38px;\r\n}\r\n\r\n.lfr-featured-card{\r\n    display:grid;\r\n\r\n    grid-template-columns:\r\n        minmax(0,1.08fr)\r\n        minmax(0,.92fr);\r\n\r\n    align-items:center;\r\n\r\n    gap:58px;\r\n}\r\n\r\n.lfr-featured-card__media{\r\n    position:relative;\r\n\r\n    min-height:430px;\r\n\r\n    overflow:hidden;\r\n\r\n    border-radius:22px 5px 22px 5px;\r\n\r\n    background:var(--cream-2);\r\n}\r\n\r\n.lfr-featured-card__media a{\r\n    position:absolute;\r\n    inset:0;\r\n\r\n    display:block;\r\n}\r\n\r\n.lfr-featured-card__media img{\r\n    width:100%;\r\n    height:100%;\r\n\r\n    position:absolute;\r\n    inset:0;\r\n\r\n    object-fit:cover;\r\n\r\n    transition:\r\n        transform .6s ease;\r\n}\r\n\r\n.lfr-featured-card:hover\r\n.lfr-featured-card__media img{\r\n    transform:scale(1.035);\r\n}\r\n\r\n.lfr-featured-card__category{\r\n    margin-bottom:16px;\r\n\r\n    font-family:\"Inter\",sans-serif;\r\n    font-size:11px;\r\n    font-weight:600;\r\n\r\n    letter-spacing:.16em;\r\n\r\n    text-transform:uppercase;\r\n\r\n    color:var(--gold);\r\n}\r\n\r\n.lfr-featured-card__title{\r\n    margin:0 0 22px;\r\n\r\n    font-family:\"Cormorant Garamond\",serif;\r\n    font-size:clamp(45px,4vw,64px);\r\n    font-weight:500;\r\n\r\n    line-height:.98;\r\n\r\n    color:var(--navy);\r\n}\r\n\r\n.lfr-featured-card__title a{\r\n    color:inherit;\r\n}\r\n\r\n.lfr-featured-card__excerpt{\r\n    max-width:560px;\r\n\r\n    margin-bottom:25px;\r\n\r\n    font-family:\"Inter\",sans-serif;\r\n    font-size:15px;\r\n\r\n    line-height:1.75;\r\n\r\n    color:var(--text);\r\n}\r\n\r\n.lfr-blog-readmore{\r\n    display:inline-flex;\r\n    align-items:center;\r\n\r\n    gap:12px;\r\n\r\n    font-family:\"Inter\",sans-serif;\r\n\r\n    font-size:11px;\r\n    font-weight:600;\r\n\r\n    letter-spacing:.12em;\r\n\r\n    text-transform:uppercase;\r\n\r\n    color:var(--gold) !important;\r\n}\r\n\r\n.lfr-blog-readmore span{\r\n    transition:transform .25s ease;\r\n}\r\n\r\n.lfr-blog-readmore:hover span{\r\n    transform:translateX(5px);\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   TODOS LOS ART\u00cdCULOS\r\n========================================================= *\/\r\n\r\n.lfr-blog-posts{\r\n    padding:\r\n        62px 30px\r\n        95px;\r\n\r\n    background:var(--cream-2);\r\n}\r\n\r\n.lfr-blog-posts__heading{\r\n    display:flex;\r\n\r\n    justify-content:space-between;\r\n    align-items:flex-end;\r\n\r\n    gap:30px;\r\n\r\n    margin-bottom:35px;\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   BARRA SUPERIOR: CATEGOR\u00cdAS + BUSCADOR\r\n========================================================= *\/\r\n\r\n.lfr-blog-topbar{\r\n    padding:30px 30px 0;\r\n    background:var(--cream);\r\n}\r\n\r\n.lfr-blog-toolbar{\r\n    margin:0;\r\n}\r\n\r\n.lfr-blog-filters-wrap{\r\n    display:flex;\r\n    align-items:center;\r\n    justify-content:space-between;\r\n    gap:20px;\r\n    padding:0 0 22px;\r\n    border-bottom:1px solid var(--line);\r\n    position:relative;\r\n}\r\n\r\n.lfr-blog-filters-wrap::after{\r\n    content:\"\u2726\";\r\n    position:absolute;\r\n    left:50%;\r\n    bottom:-10px;\r\n    transform:translateX(-50%);\r\n    padding:0 10px;\r\n    background:var(--cream);\r\n    color:var(--gold);\r\n    font-size:13px;\r\n    line-height:1;\r\n}\r\n\r\n.lfr-blog-filters{\r\n    min-width:0;\r\n    display:flex;\r\n    align-items:center;\r\n    gap:10px;\r\n    flex:1 1 auto;\r\n    overflow-x:auto;\r\n    scrollbar-width:none;\r\n    padding:2px 0;\r\n}\r\n\r\n.lfr-blog-filters::-webkit-scrollbar{\r\n    display:none;\r\n}\r\n\r\n.lfr-blog-filter{\r\n    flex:0 0 auto;\r\n    min-height:48px;\r\n    padding:0 18px;\r\n    display:inline-flex;\r\n    align-items:center;\r\n    justify-content:center;\r\n    border:1px solid rgba(193,163,109,.34);\r\n    border-radius:8px;\r\n    background:transparent;\r\n    cursor:pointer;\r\n    font-family:\"Inter\",sans-serif;\r\n    font-size:11px;\r\n    font-weight:600;\r\n    letter-spacing:.04em;\r\n    text-transform:none;\r\n    color:var(--navy);\r\n    white-space:nowrap;\r\n    transition:background .25s ease,color .25s ease,border-color .25s ease,transform .25s ease;\r\n}\r\n\r\n.lfr-blog-filter:hover{\r\n    transform:translateY(-1px);\r\n    border-color:var(--gold);\r\n    color:var(--gold);\r\n}\r\n\r\n.lfr-blog-filter.is-active{\r\n    background:var(--navy);\r\n    border-color:var(--navy);\r\n    color:#fff;\r\n}\r\n\r\n#lfr-blog-app .lfr-blog-filter,\r\n#lfr-blog-app .lfr-blog-filter:hover,\r\n#lfr-blog-app .lfr-blog-filter:focus,\r\n#lfr-blog-app .lfr-blog-filter:focus-visible,\r\n#lfr-blog-app .lfr-blog-filter:active,\r\n#lfr-blog-app .lfr-blog-filter.is-active{\r\n    appearance:none !important;\r\n    -webkit-appearance:none !important;\r\n    box-shadow:none !important;\r\n    outline:none !important;\r\n}\r\n\r\n#lfr-blog-app .lfr-blog-filter{\r\n    background:transparent !important;\r\n    border:1px solid rgba(193,163,109,.34) !important;\r\n    color:var(--navy) !important;\r\n}\r\n\r\n#lfr-blog-app .lfr-blog-filter:hover{\r\n    background:transparent !important;\r\n    border-color:var(--gold) !important;\r\n    color:var(--gold) !important;\r\n}\r\n\r\n#lfr-blog-app .lfr-blog-filter.is-active,\r\n#lfr-blog-app .lfr-blog-filter.is-active:hover,\r\n#lfr-blog-app .lfr-blog-filter.is-active:focus{\r\n    background:var(--navy) !important;\r\n    border-color:var(--navy) !important;\r\n    color:#fff !important;\r\n}\r\n\r\n.lfr-blog-search{\r\n    width:300px;\r\n    flex:0 0 300px;\r\n    margin:0;\r\n}\r\n\r\n.lfr-blog-search__field{\r\n    position:relative;\r\n    min-height:48px;\r\n    display:flex;\r\n    align-items:center;\r\n    padding:0 13px 0 17px;\r\n    border:1px solid rgba(193,163,109,.34);\r\n    border-radius:8px;\r\n    background:transparent;\r\n}\r\n\r\n.lfr-blog-search__icon{\r\n    order:3;\r\n    flex:0 0 auto;\r\n    margin-left:10px;\r\n    color:var(--gold);\r\n    font-size:20px;\r\n    line-height:1;\r\n    pointer-events:none;\r\n}\r\n\r\n.lfr-blog-search__field input{\r\n    order:1;\r\n    width:100%;\r\n    min-width:0;\r\n    padding:0;\r\n    border:0;\r\n    outline:none;\r\n    background:transparent;\r\n    font-family:\"Inter\",sans-serif;\r\n    font-size:12px;\r\n    color:var(--navy);\r\n}\r\n\r\n.lfr-blog-search__field input::placeholder{\r\n    color:rgba(29,58,76,.48);\r\n}\r\n\r\n.lfr-blog-search__clear{\r\n    order:2;\r\n    flex:0 0 auto;\r\n    width:27px;\r\n    height:27px;\r\n    display:inline-flex;\r\n    align-items:center;\r\n    justify-content:center;\r\n    margin-left:6px;\r\n    border:0;\r\n    border-radius:50%;\r\n    background:transparent;\r\n    color:var(--gold);\r\n    cursor:pointer;\r\n    font-size:17px;\r\n    opacity:0;\r\n    visibility:hidden;\r\n}\r\n\r\n.lfr-blog-search__clear.is-visible{\r\n    opacity:1;\r\n    visibility:visible;\r\n}\r\n\r\n.lfr-blog-results-meta{\r\n    min-height:18px;\r\n    margin-top:16px;\r\n    font-family:\"Inter\",sans-serif;\r\n    font-size:11px;\r\n    color:rgba(29,58,76,.6);\r\n}\r\n\r\n\/* =========================================================\r\n   GRID\r\n========================================================= *\/\r\n\r\n.lfr-blog-grid{\r\n    display:grid;\r\n\r\n    grid-template-columns:\r\n        repeat(3,minmax(0,1fr));\r\n\r\n    gap:\r\n        50px 28px;\r\n}\r\n\r\n.lfr-blog-card{\r\n    min-width:0;\r\n}\r\n\r\n.lfr-blog-card__media{\r\n    position:relative;\r\n\r\n    width:100%;\r\n\r\n    aspect-ratio:4\/3;\r\n\r\n    overflow:hidden;\r\n\r\n    margin-bottom:24px;\r\n\r\n    border-radius:16px 4px 16px 4px;\r\n\r\n    background:#eee5d9;\r\n}\r\n\r\n.lfr-blog-card__media a{\r\n    position:absolute;\r\n    inset:0;\r\n}\r\n\r\n.lfr-blog-card__media img{\r\n    position:absolute;\r\n    inset:0;\r\n\r\n    width:100%;\r\n    height:100%;\r\n\r\n    object-fit:cover;\r\n\r\n    transition:\r\n        transform .55s ease;\r\n}\r\n\r\n.lfr-blog-card:hover\r\n.lfr-blog-card__media img{\r\n    transform:scale(1.04);\r\n}\r\n\r\n.lfr-blog-card__category{\r\n    margin-bottom:10px;\r\n\r\n    font-family:\"Inter\",sans-serif;\r\n\r\n    font-size:10px;\r\n    font-weight:600;\r\n\r\n    letter-spacing:.15em;\r\n\r\n    text-transform:uppercase;\r\n\r\n    color:var(--gold);\r\n}\r\n\r\n.lfr-blog-card__title{\r\n    margin:\r\n        0 0\r\n        13px;\r\n\r\n    font-family:\"Cormorant Garamond\",serif;\r\n\r\n    font-size:31px;\r\n    font-weight:500;\r\n\r\n    line-height:1.04;\r\n\r\n    color:var(--navy);\r\n}\r\n\r\n.lfr-blog-card__title a{\r\n    color:inherit;\r\n}\r\n\r\n.lfr-blog-card__excerpt{\r\n    margin-bottom:17px;\r\n\r\n    font-family:\"Inter\",sans-serif;\r\n\r\n    font-size:13px;\r\n\r\n    line-height:1.7;\r\n\r\n    color:var(--text);\r\n}\r\n\r\n.lfr-blog-card__meta{\r\n    margin-bottom:14px;\r\n\r\n    font-family:\"Inter\",sans-serif;\r\n\r\n    font-size:10px;\r\n\r\n    letter-spacing:.08em;\r\n\r\n    text-transform:uppercase;\r\n\r\n    color:rgba(29,58,76,.58);\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   ESTADOS\r\n========================================================= *\/\r\n\r\n.lfr-blog-status{\r\n    display:none;\r\n    padding:28px 22px;\r\n    border:1px solid rgba(193,163,109,.24);\r\n    border-radius:24px;\r\n    background:rgba(255,255,255,.55);\r\n    text-align:center;\r\n    font-family:\"Inter\",sans-serif;\r\n    font-size:14px;\r\n    line-height:1.7;\r\n    color:var(--navy);\r\n}\r\n\r\n.lfr-blog-status.is-visible{\r\n    display:block;\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   PAGINACI\u00d3N\r\n========================================================= *\/\r\n\r\n.lfr-blog-pagination{\r\n    display:flex;\r\n\r\n    justify-content:center;\r\n    align-items:center;\r\n\r\n    gap:8px;\r\n\r\n    margin-top:65px;\r\n}\r\n\r\n.lfr-blog-pagination button{\r\n    width:42px;\r\n    height:42px;\r\n\r\n    display:flex;\r\n    align-items:center;\r\n    justify-content:center;\r\n\r\n    border:\r\n        1px solid rgba(29,58,76,.15);\r\n\r\n    border-radius:50%;\r\n\r\n    background:transparent;\r\n\r\n    cursor:pointer;\r\n\r\n    font-family:\"Inter\",sans-serif;\r\n    font-size:11px;\r\n\r\n    color:var(--navy);\r\n\r\n    transition:\r\n        background .25s ease,\r\n        color .25s ease,\r\n        border-color .25s ease;\r\n}\r\n\r\n.lfr-blog-pagination button:hover,\r\n.lfr-blog-pagination button.is-active{\r\n    border-color:var(--navy);\r\n\r\n    background:var(--navy);\r\n\r\n    color:#fff;\r\n}\r\n\r\n.lfr-blog-pagination button:disabled{\r\n    opacity:.3;\r\n\r\n    cursor:not-allowed;\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   CTA FINAL\r\n========================================================= *\/\r\n\r\n.lfr-blog-cta{\r\n    position:relative;\r\n\r\n    padding:\r\n        95px 30px;\r\n\r\n    text-align:center;\r\n\r\n    overflow:hidden;\r\n\r\n    background:var(--navy-deep);\r\n}\r\n\r\n.lfr-blog-cta::before{\r\n    content:\"\";\r\n\r\n    position:absolute;\r\n\r\n    width:450px;\r\n    height:450px;\r\n\r\n    left:50%;\r\n    top:50%;\r\n\r\n    transform:\r\n        translate(-50%,-50%);\r\n\r\n    border:\r\n        1px solid rgba(193,163,109,.09);\r\n\r\n    border-radius:50%;\r\n}\r\n\r\n.lfr-blog-cta__content{\r\n    position:relative;\r\n    z-index:2;\r\n\r\n    max-width:780px;\r\n\r\n    margin:0 auto;\r\n}\r\n\r\n.lfr-blog-cta__eyebrow{\r\n    margin-bottom:15px;\r\n\r\n    font-family:\"Inter\",sans-serif;\r\n    font-size:11px;\r\n    font-weight:600;\r\n\r\n    letter-spacing:.22em;\r\n\r\n    text-transform:uppercase;\r\n\r\n    color:var(--gold);\r\n}\r\n\r\n.lfr-blog-cta__title{\r\n    margin:0;\r\n\r\n    font-family:\"Cormorant Garamond\",serif;\r\n\r\n    font-size:clamp(48px,5vw,72px);\r\n    font-weight:500;\r\n\r\n    line-height:.98;\r\n\r\n    color:var(--cream);\r\n}\r\n\r\n.lfr-blog-cta__text{\r\n    max-width:580px;\r\n\r\n    margin:\r\n        22px auto\r\n        28px;\r\n\r\n    font-family:\"Inter\",sans-serif;\r\n\r\n    font-size:14px;\r\n    line-height:1.7;\r\n\r\n    color:rgba(255,250,243,.78);\r\n}\r\n\r\n.lfr-blog-cta__button{\r\n    display:inline-flex;\r\n\r\n    justify-content:center;\r\n    align-items:center;\r\n\r\n    min-width:185px;\r\n\r\n    padding:\r\n        15px 27px;\r\n\r\n    border:\r\n        1px solid var(--gold);\r\n\r\n    background:var(--gold);\r\n\r\n    font-family:\"Inter\",sans-serif;\r\n\r\n    font-size:11px;\r\n    font-weight:600;\r\n\r\n    letter-spacing:.14em;\r\n\r\n    text-transform:uppercase;\r\n\r\n    color:var(--navy-deep) !important;\r\n\r\n    transition:\r\n        background .25s ease,\r\n        color .25s ease;\r\n}\r\n\r\n.lfr-blog-cta__button:hover{\r\n    background:transparent;\r\n\r\n    color:var(--cream) !important;\r\n}\r\n\r\n\r\n\/* =========================================================\r\n   TABLET\r\n========================================================= *\/\r\n\r\n@media(max-width:1024px){\r\n\r\n    .lfr-blog-hero{\r\n        min-height:460px;\r\n    }\r\n\r\n    .lfr-blog-topbar{\r\n        padding:26px 26px 0;\r\n    }\r\n\r\n    .lfr-blog-filters-wrap{\r\n        align-items:stretch;\r\n        gap:16px;\r\n    }\r\n\r\n    .lfr-blog-search{\r\n        width:250px;\r\n        flex-basis:250px;\r\n    }\r\n\r\n    .lfr-blog-featured{\r\n        padding:\r\n            70px 26px\r\n            65px;\r\n    }\r\n\r\n    .lfr-featured-card{\r\n        gap:35px;\r\n    }\r\n\r\n    .lfr-featured-card__media{\r\n        min-height:360px;\r\n    }\r\n\r\n    .lfr-blog-posts{\r\n        padding:\r\n            60px 26px\r\n            80px;\r\n    }\r\n\r\n    .lfr-blog-grid{\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   MOBILE\r\n========================================================= *\/\r\n\r\n@media(max-width:767px){\r\n\r\n    .lfr-blog-hero{\r\n        min-height:400px;\r\n\r\n        padding:\r\n            65px 20px;\r\n    }\r\n\r\n    .lfr-blog-hero h1{\r\n        font-size:\r\n            clamp(52px,15vw,70px);\r\n    }\r\n\r\n    .lfr-blog-hero__text{\r\n        font-size:14px;\r\n    }\r\n\r\n\r\n    .lfr-blog-topbar{\r\n        padding:18px 18px 0;\r\n    }\r\n\r\n    .lfr-blog-filters-wrap{\r\n        display:block;\r\n        padding-bottom:18px;\r\n    }\r\n\r\n    .lfr-blog-filters-wrap::after{\r\n        bottom:-9px;\r\n    }\r\n\r\n    .lfr-blog-filters{\r\n        gap:8px;\r\n        margin-bottom:12px;\r\n        padding:2px 0 4px;\r\n    }\r\n\r\n    .lfr-blog-filter{\r\n        min-height:42px;\r\n        padding:0 14px;\r\n        border-radius:7px;\r\n        font-size:10px;\r\n    }\r\n\r\n    .lfr-blog-search{\r\n        width:100%;\r\n    }\r\n\r\n    .lfr-blog-search__field{\r\n        min-height:44px;\r\n        border-radius:7px;\r\n    }\r\n\r\n    .lfr-blog-results-meta{\r\n        margin-top:13px;\r\n        font-size:10px;\r\n    }\r\n\r\n    .lfr-blog-featured{\r\n        padding:\r\n            55px 18px\r\n            50px;\r\n    }\r\n\r\n    .lfr-featured-card{\r\n        grid-template-columns:1fr;\r\n\r\n        gap:28px;\r\n    }\r\n\r\n    .lfr-featured-card__media{\r\n        min-height:0;\r\n\r\n        aspect-ratio:4\/3;\r\n    }\r\n\r\n\r\n    .lfr-blog-posts{\r\n        padding:\r\n            50px 18px\r\n            65px;\r\n    }\r\n\r\n    .lfr-blog-posts__heading{\r\n        display:block;\r\n\r\n        margin-bottom:28px;\r\n    }\r\n\r\n    .lfr-blog-grid{\r\n        grid-template-columns:1fr;\r\n\r\n        gap:45px;\r\n    }\r\n\r\n    .lfr-blog-card__title{\r\n        font-size:32px;\r\n    }\r\n\r\n    .lfr-blog-pagination{\r\n        margin-top:50px;\r\n    }\r\n\r\n\r\n    .lfr-blog-cta{\r\n        padding:\r\n            75px 20px;\r\n    }\r\n\r\n}\r\n\r\n<\/style>\r\n\r\n\r\n<div id=\"lfr-blog-app\">\r\n\r\n\r\n    <!-- =====================================================\r\n         HERO\r\n    ====================================================== -->\r\n\r\n    <section class=\"lfr-blog-hero\">\r\n\r\n        <div class=\"lfr-blog-hero__content\">\r\n\r\n            <div class=\"lfr-blog-hero__eyebrow\">\r\n                LA FRENCH RIVIERA\r\n            <\/div>\r\n\r\n            <div class=\"lfr-blog-hero__ornament\">\r\n                \u2726\r\n            <\/div>\r\n\r\n            <h1>\r\n                Blog &amp; News\r\n            <\/h1>\r\n\r\n            <div class=\"lfr-blog-hero__text\">\r\n                Stories, flavors, and experiences to discover\r\n                another way to experience the Mediterranean in Canc\u00fan.\r\n            <\/div>\r\n\r\n        <\/div>\r\n\r\n    <\/section>\r\n\r\n\r\n\r\n    <!-- =====================================================\r\n         BARRA DE CATEGOR\u00cdAS + BUSCADOR\r\n    ====================================================== -->\r\n\r\n    <section class=\"lfr-blog-topbar\">\r\n\r\n        <div class=\"lfr-blog-shell\">\r\n\r\n            <div class=\"lfr-blog-toolbar\">\r\n\r\n                <div class=\"lfr-blog-filters-wrap\">\r\n\r\n                    <div\r\n                        class=\"lfr-blog-filters\"\r\n                        id=\"lfr-blog-filters\"\r\n                    >\r\n\r\n                        <button\r\n                            class=\"lfr-blog-filter is-active\"\r\n                            data-category=\"0\"\r\n                            type=\"button\"\r\n                        >\r\n                            All\r\n                        <\/button>\r\n\r\n                    <\/div>\r\n\r\n                    <form\r\n                        class=\"lfr-blog-search\"\r\n                        id=\"lfr-blog-search\"\r\n                        role=\"search\"\r\n                    >\r\n\r\n                        <div class=\"lfr-blog-search__field\">\r\n\r\n                            <span class=\"lfr-blog-search__icon\">\u2315<\/span>\r\n\r\n                            <input\r\n                                id=\"lfr-blog-search-input\"\r\n                                type=\"search\"\r\n                                placeholder=\"Search articles...\"\r\n                                autocomplete=\"off\"\r\n                                aria-label=\"Search articles\"\r\n                            >\r\n\r\n                            <button\r\n                                class=\"lfr-blog-search__clear\"\r\n                                id=\"lfr-blog-search-clear\"\r\n                                type=\"button\"\r\n                                aria-label=\"Clear search\"\r\n                            >\r\n                                \u00d7\r\n                            <\/button>\r\n\r\n                        <\/div>\r\n\r\n                    <\/form>\r\n\r\n                <\/div>\r\n\r\n                <div\r\n                    class=\"lfr-blog-results-meta\"\r\n                    id=\"lfr-blog-results-meta\"\r\n                >\r\n                    Showing recent articles.\r\n                <\/div>\r\n\r\n            <\/div>\r\n\r\n        <\/div>\r\n\r\n    <\/section>\r\n\r\n\r\n\r\n    <!-- =====================================================\r\n         DESTACADO\r\n    ====================================================== -->\r\n\r\n    <section class=\"lfr-blog-featured\">\r\n\r\n        <div class=\"lfr-blog-shell\">\r\n\r\n            <div class=\"lfr-blog-featured__heading\">\r\n\r\n                <div class=\"lfr-blog-section-eyebrow\">\r\n                    FEATURED STORIES\r\n                <\/div>\r\n\r\n                <h2 class=\"lfr-blog-section-title\">\r\n                    Latest from La French Riviera\r\n                <\/h2>\r\n\r\n            <\/div>\r\n\r\n            <div id=\"lfr-featured-post\">\r\n\r\n                <div class=\"lfr-blog-status is-visible\">\r\n                    Loading featured article...\r\n                <\/div>\r\n\r\n            <\/div>\r\n\r\n        <\/div>\r\n\r\n    <\/section>\r\n\r\n\r\n\r\n    <!-- =====================================================\r\n         POSTS\r\n    ====================================================== -->\r\n\r\n    <section\r\n        class=\"lfr-blog-posts\"\r\n        id=\"lfr-articulos\"\r\n    >\r\n\r\n        <div class=\"lfr-blog-shell\">\r\n\r\n\r\n            <div class=\"lfr-blog-posts__heading\">\r\n\r\n                <div>\r\n\r\n                    <div class=\"lfr-blog-section-eyebrow\">\r\n                        MORE STORIES\r\n                    <\/div>\r\n\r\n                    <h2 class=\"lfr-blog-section-title\">\r\n                        Discover more from La French Riviera\r\n                    <\/h2>\r\n\r\n                <\/div>\r\n\r\n            <\/div>\r\n\r\n\r\n            <!-- GRID -->\r\n\r\n            <div\r\n                class=\"lfr-blog-grid\"\r\n                id=\"lfr-blog-grid\"\r\n            ><\/div>\r\n\r\n\r\n            <!-- ESTADO -->\r\n\r\n            <div\r\n                class=\"lfr-blog-status\"\r\n                id=\"lfr-blog-status\"\r\n            ><\/div>\r\n\r\n\r\n            <!-- PAGINACI\u00d3N -->\r\n\r\n            <div\r\n                class=\"lfr-blog-pagination\"\r\n                id=\"lfr-blog-pagination\"\r\n            ><\/div>\r\n\r\n\r\n        <\/div>\r\n\r\n    <\/section>\r\n\r\n\r\n\r\n    <!-- =====================================================\r\n         CTA FINAL\r\n    ====================================================== -->\r\n\r\n    <section class=\"lfr-blog-cta\">\r\n\r\n        <div class=\"lfr-blog-cta__content\">\r\n\r\n            <div class=\"lfr-blog-cta__eyebrow\">\r\n                LA FRENCH RIVIERA\r\n            <\/div>\r\n\r\n            <h2 class=\"lfr-blog-cta__title\">\r\n                Ready to experience it?\r\n            <\/h2>\r\n\r\n            <div class=\"lfr-blog-cta__text\">\r\n                Mediterranean cuisine, cocktails,\r\n                hookah, and an atmosphere designed to\r\n                enjoy the night in Canc\u00fan.\r\n            <\/div>\r\n\r\n            <a\r\n                class=\"lfr-blog-cta__button\"\r\n                href=\"https:\/\/wa.me\/529988821365?text=Hello%2C%20I%20would%20like%20to%20reserve%20a%20table%20at%20La%20French%20Riviera.\"\r\n                target=\"_blank\"\r\n                rel=\"noopener\"\r\n            >\r\n                Reserve a Table\r\n            <\/a>\r\n\r\n        <\/div>\r\n\r\n    <\/section>\r\n\r\n\r\n<\/div>\r\n\r\n\r\n\r\n<script>\r\n\r\n(function(){\r\n\r\n    \"use strict\";\r\n\r\n    \/* =====================================================\r\n       CONFIGURATION\r\n       ===================================================== *\/\r\n\r\n    const API =\r\n        window.location.origin +\r\n        \"\/wp-json\/wp\/v2\";\r\n\r\n    \/*\r\n       This version does NOT depend on Polylang Pro's REST\r\n       \"lang\" parameter.\r\n\r\n       English posts are detected by their REAL document language\r\n       (<html lang=\"en-US\">), not only by the permalink.\r\n       This keeps the filter stable if Polylang URL settings change.\r\n    *\/\r\n    const LANGUAGE_PATH = \"\/en\/\";\r\n    const POSTS_PER_PAGE = 6;\r\n    const API_BATCH_SIZE = 100;\r\n\r\n    const priorityCategories = [\r\n        \"Gastronomy\",\r\n        \"Mediterranean Food\",\r\n        \"Halal Cuisine\",\r\n        \"Hookah\",\r\n        \"Cocktails & Mocktails\",\r\n        \"Mixology\",\r\n        \"Experiences\",\r\n        \"Events\"\r\n    ];\r\n\r\n    const state = {\r\n        page:1,\r\n        category:0,\r\n        search:\"\",\r\n        featuredId:null,\r\n        totalPages:1,\r\n        totalItems:0,\r\n        allEnglishPosts:[]\r\n    };\r\n\r\n\r\n    const featuredContainer =\r\n        document.getElementById(\r\n            \"lfr-featured-post\"\r\n        );\r\n\r\n    const filtersContainer =\r\n        document.getElementById(\r\n            \"lfr-blog-filters\"\r\n        );\r\n\r\n    const searchForm =\r\n        document.getElementById(\r\n            \"lfr-blog-search\"\r\n        );\r\n\r\n    const searchInput =\r\n        document.getElementById(\r\n            \"lfr-blog-search-input\"\r\n        );\r\n\r\n    const searchClear =\r\n        document.getElementById(\r\n            \"lfr-blog-search-clear\"\r\n        );\r\n\r\n    const resultsMeta =\r\n        document.getElementById(\r\n            \"lfr-blog-results-meta\"\r\n        );\r\n\r\n    const grid =\r\n        document.getElementById(\r\n            \"lfr-blog-grid\"\r\n        );\r\n\r\n    const status =\r\n        document.getElementById(\r\n            \"lfr-blog-status\"\r\n        );\r\n\r\n    const pagination =\r\n        document.getElementById(\r\n            \"lfr-blog-pagination\"\r\n        );\r\n\r\n\r\n    \/* =====================================================\r\n       HELPERS\r\n       ===================================================== *\/\r\n\r\n    function stripHTML(html){\r\n\r\n        const element =\r\n            document.createElement(\"div\");\r\n\r\n        element.innerHTML =\r\n            html || \"\";\r\n\r\n        return (\r\n            element.textContent ||\r\n            element.innerText ||\r\n            \"\"\r\n        ).trim();\r\n\r\n    }\r\n\r\n\r\n    function truncate(text,length){\r\n\r\n        if(!text){\r\n            return \"\";\r\n        }\r\n\r\n        if(text.length <= length){\r\n            return text;\r\n        }\r\n\r\n        return (\r\n            text.substring(0,length)\r\n                .trim()\r\n            + \"...\"\r\n        );\r\n\r\n    }\r\n\r\n\r\n    function formatDate(date){\r\n\r\n        try{\r\n\r\n            return new Intl.DateTimeFormat(\r\n                \"en-US\",\r\n                {\r\n                    day:\"2-digit\",\r\n                    month:\"long\",\r\n                    year:\"numeric\"\r\n                }\r\n            ).format(\r\n                new Date(date)\r\n            );\r\n\r\n        }catch(error){\r\n\r\n            return \"\";\r\n\r\n        }\r\n\r\n    }\r\n\r\n\r\n    function normalizePath(url){\r\n\r\n        try{\r\n            return new URL(\r\n                url,\r\n                window.location.origin\r\n            ).pathname.toLowerCase();\r\n        }catch(error){\r\n            return \"\";\r\n        }\r\n\r\n    }\r\n\r\n\r\n    \/*\r\n       Detect the REAL language assigned by WordPress\/Polylang.\r\n\r\n       We do not rely only on \/en\/ in the permalink because Polylang\r\n       can change URL behavior when the default language or URL\r\n       settings change.\r\n\r\n       Detection order:\r\n       1) \"lang\" field if the REST API exposes it.\r\n       2) <html lang=\"...\"> from the public post page.\r\n       3) URL only as a fallback.\r\n    *\/\r\n\r\n    const postLanguageCache = new Map();\r\n\r\n\r\n    async function getPostLanguage(post){\r\n\r\n        if(!post){\r\n            return \"\";\r\n        }\r\n\r\n\r\n        \/* Polylang Pro \/ REST compatible *\/\r\n        if(post.lang){\r\n\r\n            const directLang =\r\n                String(post.lang)\r\n                    .toLowerCase()\r\n                    .replace(\"_\",\"-\")\r\n                    .split(\"-\")[0];\r\n\r\n            if(post.id){\r\n                postLanguageCache.set(\r\n                    post.id,\r\n                    directLang\r\n                );\r\n            }\r\n\r\n            return directLang;\r\n        }\r\n\r\n\r\n        if(\r\n            post.id &&\r\n            postLanguageCache.has(post.id)\r\n        ){\r\n            return postLanguageCache.get(\r\n                post.id\r\n            );\r\n        }\r\n\r\n\r\n        const link =\r\n            post.link || \"\";\r\n\r\n\r\n        \/*\r\n           Main method for Polylang Free:\r\n           fetch the public post and read the actual\r\n           <html lang=\"en-US\"> \/ <html lang=\"es-MX\"> attribute.\r\n        *\/\r\n        if(link){\r\n\r\n            try{\r\n\r\n                const response =\r\n                    await fetch(\r\n                        link,\r\n                        {\r\n                            credentials:\"same-origin\"\r\n                        }\r\n                    );\r\n\r\n\r\n                if(response.ok){\r\n\r\n                    const html =\r\n                        await response.text();\r\n\r\n\r\n                    const match =\r\n                        html.match(\r\n                            \/<html\\b[^>]*\\blang=[\"']([^\"']+)[\"']\/i\r\n                        );\r\n\r\n\r\n                    if(\r\n                        match &&\r\n                        match[1]\r\n                    ){\r\n\r\n                        const documentLang =\r\n                            match[1]\r\n                                .toLowerCase()\r\n                                .replace(\"_\",\"-\")\r\n                                .split(\"-\")[0];\r\n\r\n\r\n                        if(post.id){\r\n                            postLanguageCache.set(\r\n                                post.id,\r\n                                documentLang\r\n                            );\r\n                        }\r\n\r\n\r\n                        return documentLang;\r\n\r\n                    }\r\n\r\n                }\r\n\r\n            }catch(error){\r\n\r\n                console.warn(\r\n                    \"Could not detect article language:\",\r\n                    link\r\n                );\r\n\r\n            }\r\n\r\n        }\r\n\r\n\r\n        \/* URL fallback *\/\r\n        const path =\r\n            normalizePath(link);\r\n\r\n        const fallbackLang =\r\n            (\r\n                path === LANGUAGE_PATH.slice(0,-1) ||\r\n                path.startsWith(LANGUAGE_PATH)\r\n            )\r\n                ? \"en\"\r\n                : \"es\";\r\n\r\n\r\n        if(post.id){\r\n            postLanguageCache.set(\r\n                post.id,\r\n                fallbackLang\r\n            );\r\n        }\r\n\r\n\r\n        return fallbackLang;\r\n\r\n    }\r\n\r\n\r\n    async function filterPostsByLanguage(\r\n        posts,\r\n        expectedLanguage\r\n    ){\r\n\r\n        const checked =\r\n            await Promise.all(\r\n                posts.map(\r\n                    async function(post){\r\n\r\n                        return {\r\n                            post:post,\r\n                            lang:\r\n                                await getPostLanguage(\r\n                                    post\r\n                                )\r\n                        };\r\n\r\n                    }\r\n                )\r\n            );\r\n\r\n\r\n        return checked\r\n            .filter(\r\n                function(item){\r\n\r\n                    return (\r\n                        item.lang ===\r\n                        expectedLanguage\r\n                    );\r\n\r\n                }\r\n            )\r\n            .map(\r\n                function(item){\r\n                    return item.post;\r\n                }\r\n            );\r\n\r\n    }\r\n\r\n\r\n    function getImage(post){\r\n\r\n        const media =\r\n            post?._embedded?.[\r\n                \"wp:featuredmedia\"\r\n            ]?.[0];\r\n\r\n        if(!media){\r\n            return null;\r\n        }\r\n\r\n        return {\r\n            src:\r\n                media.source_url || \"\",\r\n            alt:\r\n                media.alt_text ||\r\n                stripHTML(\r\n                    post.title?.rendered\r\n                )\r\n        };\r\n\r\n    }\r\n\r\n\r\n    function getPostCategories(post){\r\n\r\n        const groups =\r\n            post?._embedded?.[\r\n                \"wp:term\"\r\n            ] || [];\r\n\r\n        return groups\r\n            .flat()\r\n            .filter(function(term){\r\n                return (\r\n                    term.taxonomy ===\r\n                    \"category\"\r\n                );\r\n            });\r\n\r\n    }\r\n\r\n\r\n    function getCategory(post){\r\n\r\n        const categories =\r\n            getPostCategories(post);\r\n\r\n        return categories.length\r\n            ? categories[0].name\r\n            : \"La French Riviera\";\r\n\r\n    }\r\n\r\n\r\n    function createImageLink(post,className){\r\n\r\n        const wrapper =\r\n            document.createElement(\"div\");\r\n\r\n        wrapper.className =\r\n            className;\r\n\r\n        const link =\r\n            document.createElement(\"a\");\r\n\r\n        link.href =\r\n            post.link;\r\n\r\n        const image =\r\n            getImage(post);\r\n\r\n        if(image && image.src){\r\n\r\n            const img =\r\n                document.createElement(\"img\");\r\n\r\n            img.src =\r\n                image.src;\r\n\r\n            img.alt =\r\n                image.alt;\r\n\r\n            img.loading =\r\n                \"lazy\";\r\n\r\n            link.appendChild(img);\r\n\r\n        }\r\n\r\n        wrapper.appendChild(link);\r\n\r\n        return wrapper;\r\n\r\n    }\r\n\r\n\r\n    function getActiveCategoryLabel(){\r\n\r\n        const active =\r\n            filtersContainer.querySelector(\r\n                \".lfr-blog-filter.is-active\"\r\n            );\r\n\r\n        if(!active){\r\n            return \"All\";\r\n        }\r\n\r\n        return (\r\n            active.textContent ||\r\n            \"All\"\r\n        ).trim();\r\n\r\n    }\r\n\r\n\r\n    function updateResultsMeta(){\r\n\r\n        if(!resultsMeta){\r\n            return;\r\n        }\r\n\r\n        const parts = [];\r\n        const total = state.totalItems || 0;\r\n        const activeCategory =\r\n            getActiveCategoryLabel();\r\n\r\n        parts.push(\r\n            total === 1\r\n                ? \"1 article\"\r\n                : total + \" articles\"\r\n        );\r\n\r\n        if(state.category !== 0){\r\n            parts.push(\r\n                \"in \" + activeCategory\r\n            );\r\n        }\r\n\r\n        if(state.search){\r\n            parts.push(\r\n                'for \"' + state.search + '\"'\r\n            );\r\n        }\r\n\r\n        resultsMeta.textContent =\r\n            parts.join(\" \");\r\n\r\n        if(searchClear){\r\n            searchClear.classList.toggle(\r\n                \"is-visible\",\r\n                Boolean(state.search)\r\n            );\r\n        }\r\n\r\n    }\r\n\r\n\r\n    \/* =====================================================\r\n       LOAD ALL PUBLIC POSTS\r\n       WordPress REST exposes public\/published posts here.\r\n       We then verify the real document language and keep only English.\r\n       ===================================================== *\/\r\n\r\n    async function fetchAllPublishedPosts(){\r\n\r\n        const collected = [];\r\n        let page = 1;\r\n        let totalPages = 1;\r\n\r\n        do{\r\n\r\n            const params =\r\n                new URLSearchParams();\r\n\r\n            params.set(\r\n                \"per_page\",\r\n                API_BATCH_SIZE\r\n            );\r\n\r\n            params.set(\r\n                \"page\",\r\n                page\r\n            );\r\n\r\n            params.set(\r\n                \"orderby\",\r\n                \"date\"\r\n            );\r\n\r\n            params.set(\r\n                \"order\",\r\n                \"desc\"\r\n            );\r\n\r\n            params.set(\r\n                \"_embed\",\r\n                \"1\"\r\n            );\r\n\r\n            const response =\r\n                await fetch(\r\n                    API +\r\n                    \"\/posts?\" +\r\n                    params.toString()\r\n                );\r\n\r\n            if(!response.ok){\r\n                throw new Error(\r\n                    \"Unable to load articles.\"\r\n                );\r\n            }\r\n\r\n            const posts =\r\n                await response.json();\r\n\r\n            collected.push.apply(\r\n                collected,\r\n                posts\r\n            );\r\n\r\n            totalPages =\r\n                parseInt(\r\n                    response.headers.get(\r\n                        \"X-WP-TotalPages\"\r\n                    ) || \"1\",\r\n                    10\r\n                );\r\n\r\n            page++;\r\n\r\n        }while(\r\n            page <= totalPages\r\n        );\r\n\r\n        \/*\r\n           Strict language filter:\r\n           keep ONLY posts whose public document is marked English.\r\n        *\/\r\n        state.allEnglishPosts =\r\n            await filterPostsByLanguage(\r\n                collected,\r\n                \"en\"\r\n            );\r\n\r\n    }\r\n\r\n\r\n    \/* =====================================================\r\n       FEATURED\r\n       ===================================================== *\/\r\n\r\n    function renderFeatured(post){\r\n\r\n        featuredContainer.innerHTML =\r\n            \"\";\r\n\r\n        if(!post){\r\n            return;\r\n        }\r\n\r\n        const card =\r\n            document.createElement(\"article\");\r\n\r\n        card.className =\r\n            \"lfr-featured-card\";\r\n\r\n        const media =\r\n            createImageLink(\r\n                post,\r\n                \"lfr-featured-card__media\"\r\n            );\r\n\r\n        const content =\r\n            document.createElement(\"div\");\r\n\r\n        content.className =\r\n            \"lfr-featured-card__content\";\r\n\r\n        const category =\r\n            document.createElement(\"div\");\r\n\r\n        category.className =\r\n            \"lfr-featured-card__category\";\r\n\r\n        category.textContent =\r\n            getCategory(post);\r\n\r\n        const title =\r\n            document.createElement(\"h2\");\r\n\r\n        title.className =\r\n            \"lfr-featured-card__title\";\r\n\r\n        const titleLink =\r\n            document.createElement(\"a\");\r\n\r\n        titleLink.href =\r\n            post.link;\r\n\r\n        titleLink.textContent =\r\n            stripHTML(\r\n                post.title?.rendered\r\n            );\r\n\r\n        title.appendChild(\r\n            titleLink\r\n        );\r\n\r\n        const excerpt =\r\n            document.createElement(\"div\");\r\n\r\n        excerpt.className =\r\n            \"lfr-featured-card__excerpt\";\r\n\r\n        excerpt.textContent =\r\n            truncate(\r\n                stripHTML(\r\n                    post.excerpt?.rendered\r\n                ),\r\n                240\r\n            );\r\n\r\n        const read =\r\n            document.createElement(\"a\");\r\n\r\n        read.className =\r\n            \"lfr-blog-readmore\";\r\n\r\n        read.href =\r\n            post.link;\r\n\r\n        read.innerHTML =\r\n            'READ ARTICLE <span>\u2192<\/span>';\r\n\r\n        content.append(\r\n            category,\r\n            title,\r\n            excerpt,\r\n            read\r\n        );\r\n\r\n        card.append(\r\n            media,\r\n            content\r\n        );\r\n\r\n        featuredContainer.appendChild(\r\n            card\r\n        );\r\n\r\n    }\r\n\r\n\r\n    function loadFeatured(){\r\n\r\n        const post =\r\n            state.allEnglishPosts[0] ||\r\n            null;\r\n\r\n        state.featuredId =\r\n            post ? post.id : null;\r\n\r\n        if(post){\r\n            renderFeatured(post);\r\n        }else{\r\n            featuredContainer.innerHTML =\r\n                '<div class=\"lfr-blog-status is-visible\">' +\r\n                'No published English articles are available yet.' +\r\n                '<\/div>';\r\n        }\r\n\r\n    }\r\n\r\n\r\n    \/* =====================================================\r\n       CATEGORIES\r\n       Built only from English posts, so Spanish categories\r\n       can never enter this English blog.\r\n       ===================================================== *\/\r\n\r\n    function loadCategories(){\r\n\r\n        const categoryMap =\r\n            new Map();\r\n\r\n        state.allEnglishPosts.forEach(\r\n            function(post){\r\n\r\n                getPostCategories(post)\r\n                    .forEach(\r\n                        function(category){\r\n\r\n                            if(\r\n                                !categoryMap.has(\r\n                                    category.id\r\n                                )\r\n                            ){\r\n                                categoryMap.set(\r\n                                    category.id,\r\n                                    category\r\n                                );\r\n                            }\r\n\r\n                        }\r\n                    );\r\n\r\n            }\r\n        );\r\n\r\n        let categories =\r\n            Array.from(\r\n                categoryMap.values()\r\n            );\r\n\r\n        categories.sort(\r\n            function(a,b){\r\n\r\n                const ia =\r\n                    priorityCategories\r\n                    .indexOf(a.name);\r\n\r\n                const ib =\r\n                    priorityCategories\r\n                    .indexOf(b.name);\r\n\r\n                if(\r\n                    ia !== -1 &&\r\n                    ib !== -1\r\n                ){\r\n                    return ia - ib;\r\n                }\r\n\r\n                if(ia !== -1){\r\n                    return -1;\r\n                }\r\n\r\n                if(ib !== -1){\r\n                    return 1;\r\n                }\r\n\r\n                return a.name.localeCompare(\r\n                    b.name,\r\n                    \"en\"\r\n                );\r\n\r\n            }\r\n        );\r\n\r\n        \/*\r\n           Keep the initial \"All\" button and remove\r\n           any old dynamic buttons if Elementor reruns.\r\n        *\/\r\n        filtersContainer\r\n            .querySelectorAll(\r\n                \".lfr-blog-filter:not([data-category='0'])\"\r\n            )\r\n            .forEach(function(button){\r\n                button.remove();\r\n            });\r\n\r\n        categories.forEach(\r\n            function(category){\r\n\r\n                const button =\r\n                    document.createElement(\r\n                        \"button\"\r\n                    );\r\n\r\n                button.type =\r\n                    \"button\";\r\n\r\n                button.className =\r\n                    \"lfr-blog-filter\";\r\n\r\n                button.dataset.category =\r\n                    category.id;\r\n\r\n                button.textContent =\r\n                    category.name;\r\n\r\n                filtersContainer\r\n                    .appendChild(button);\r\n\r\n            }\r\n        );\r\n\r\n    }\r\n\r\n\r\n    \/* =====================================================\r\n       POSTS \u2014 CLIENT-SIDE ENGLISH FILTER + PAGINATION\r\n       ===================================================== *\/\r\n\r\n    function getFilteredPosts(){\r\n\r\n        let posts =\r\n            state.allEnglishPosts.slice();\r\n\r\n        if(state.category){\r\n\r\n            posts =\r\n                posts.filter(\r\n                    function(post){\r\n\r\n                        return (\r\n                            post.categories || []\r\n                        ).includes(\r\n                            state.category\r\n                        );\r\n\r\n                    }\r\n                );\r\n\r\n        }\r\n\r\n        if(state.search){\r\n\r\n            const query =\r\n                state.search.toLowerCase();\r\n\r\n            posts =\r\n                posts.filter(\r\n                    function(post){\r\n\r\n                        const haystack =\r\n                            (\r\n                                stripHTML(\r\n                                    post.title?.rendered\r\n                                ) +\r\n                                \" \" +\r\n                                stripHTML(\r\n                                    post.excerpt?.rendered\r\n                                ) +\r\n                                \" \" +\r\n                                stripHTML(\r\n                                    post.content?.rendered\r\n                                )\r\n                            ).toLowerCase();\r\n\r\n                        return haystack.includes(\r\n                            query\r\n                        );\r\n\r\n                    }\r\n                );\r\n\r\n        }\r\n\r\n        return posts;\r\n\r\n    }\r\n\r\n\r\n    function loadPosts(){\r\n\r\n        grid.innerHTML =\r\n            \"\";\r\n\r\n        pagination.innerHTML =\r\n            \"\";\r\n\r\n        status.classList.remove(\r\n            \"is-visible\"\r\n        );\r\n\r\n        const posts =\r\n            getFilteredPosts();\r\n\r\n        state.totalItems =\r\n            posts.length;\r\n\r\n        state.totalPages =\r\n            Math.max(\r\n                1,\r\n                Math.ceil(\r\n                    posts.length \/\r\n                    POSTS_PER_PAGE\r\n                )\r\n            );\r\n\r\n        if(\r\n            state.page >\r\n            state.totalPages\r\n        ){\r\n            state.page =\r\n                state.totalPages;\r\n        }\r\n\r\n        updateResultsMeta();\r\n\r\n        if(!posts.length){\r\n\r\n            status.textContent =\r\n                state.search\r\n                    ? \"No articles matched those filters. Try another category or change your search.\"\r\n                    : \"There are no published English articles in this filter yet.\";\r\n\r\n            status.classList.add(\r\n                \"is-visible\"\r\n            );\r\n\r\n            return;\r\n\r\n        }\r\n\r\n        const start =\r\n            (state.page - 1) *\r\n            POSTS_PER_PAGE;\r\n\r\n        const pagePosts =\r\n            posts.slice(\r\n                start,\r\n                start + POSTS_PER_PAGE\r\n            );\r\n\r\n        pagePosts.forEach(\r\n            renderPostCard\r\n        );\r\n\r\n        renderPagination();\r\n        updateResultsMeta();\r\n\r\n    }\r\n\r\n\r\n    function renderPostCard(post){\r\n\r\n        const article =\r\n            document.createElement(\r\n                \"article\"\r\n            );\r\n\r\n        article.className =\r\n            \"lfr-blog-card\";\r\n\r\n        const media =\r\n            createImageLink(\r\n                post,\r\n                \"lfr-blog-card__media\"\r\n            );\r\n\r\n        const category =\r\n            document.createElement(\r\n                \"div\"\r\n            );\r\n\r\n        category.className =\r\n            \"lfr-blog-card__category\";\r\n\r\n        category.textContent =\r\n            getCategory(post);\r\n\r\n        const title =\r\n            document.createElement(\"h3\");\r\n\r\n        title.className =\r\n            \"lfr-blog-card__title\";\r\n\r\n        const titleLink =\r\n            document.createElement(\"a\");\r\n\r\n        titleLink.href =\r\n            post.link;\r\n\r\n        titleLink.textContent =\r\n            stripHTML(\r\n                post.title?.rendered\r\n            );\r\n\r\n        title.appendChild(\r\n            titleLink\r\n        );\r\n\r\n        const excerpt =\r\n            document.createElement(\r\n                \"div\"\r\n            );\r\n\r\n        excerpt.className =\r\n            \"lfr-blog-card__excerpt\";\r\n\r\n        excerpt.textContent =\r\n            truncate(\r\n                stripHTML(\r\n                    post.excerpt?.rendered\r\n                ),\r\n                150\r\n            );\r\n\r\n        const meta =\r\n            document.createElement(\r\n                \"div\"\r\n            );\r\n\r\n        meta.className =\r\n            \"lfr-blog-card__meta\";\r\n\r\n        meta.textContent =\r\n            formatDate(post.date);\r\n\r\n        const read =\r\n            document.createElement(\"a\");\r\n\r\n        read.className =\r\n            \"lfr-blog-readmore\";\r\n\r\n        read.href =\r\n            post.link;\r\n\r\n        read.innerHTML =\r\n            'READ MORE <span>\u2192<\/span>';\r\n\r\n        article.append(\r\n            media,\r\n            category,\r\n            title,\r\n            excerpt,\r\n            meta,\r\n            read\r\n        );\r\n\r\n        grid.appendChild(\r\n            article\r\n        );\r\n\r\n    }\r\n\r\n\r\n    \/* =====================================================\r\n       PAGINATION\r\n       ===================================================== *\/\r\n\r\n    function renderPagination(){\r\n\r\n        pagination.innerHTML =\r\n            \"\";\r\n\r\n        if(state.totalPages <= 1){\r\n            return;\r\n        }\r\n\r\n        const previous =\r\n            document.createElement(\r\n                \"button\"\r\n            );\r\n\r\n        previous.type =\r\n            \"button\";\r\n\r\n        previous.innerHTML =\r\n            \"\u2190\";\r\n\r\n        previous.disabled =\r\n            state.page === 1;\r\n\r\n        previous.addEventListener(\r\n            \"click\",\r\n            function(){\r\n\r\n                if(state.page > 1){\r\n\r\n                    state.page--;\r\n\r\n                    refreshPosts();\r\n\r\n                }\r\n\r\n            }\r\n        );\r\n\r\n        pagination.appendChild(\r\n            previous\r\n        );\r\n\r\n\r\n        for(\r\n            let page = 1;\r\n            page <= state.totalPages;\r\n            page++\r\n        ){\r\n\r\n            if(\r\n                state.totalPages > 7 &&\r\n                Math.abs(\r\n                    page - state.page\r\n                ) > 2 &&\r\n                page !== 1 &&\r\n                page !== state.totalPages\r\n            ){\r\n                continue;\r\n            }\r\n\r\n            const button =\r\n                document.createElement(\r\n                    \"button\"\r\n                );\r\n\r\n            button.type =\r\n                \"button\";\r\n\r\n            button.textContent =\r\n                String(page)\r\n                .padStart(2,\"0\");\r\n\r\n            if(page === state.page){\r\n\r\n                button.classList.add(\r\n                    \"is-active\"\r\n                );\r\n\r\n            }\r\n\r\n            button.addEventListener(\r\n                \"click\",\r\n                function(){\r\n\r\n                    state.page =\r\n                        page;\r\n\r\n                    refreshPosts();\r\n\r\n                }\r\n            );\r\n\r\n            pagination.appendChild(\r\n                button\r\n            );\r\n\r\n        }\r\n\r\n\r\n        const next =\r\n            document.createElement(\r\n                \"button\"\r\n            );\r\n\r\n        next.type =\r\n            \"button\";\r\n\r\n        next.innerHTML =\r\n            \"\u2192\";\r\n\r\n        next.disabled =\r\n            state.page ===\r\n            state.totalPages;\r\n\r\n        next.addEventListener(\r\n            \"click\",\r\n            function(){\r\n\r\n                if(\r\n                    state.page <\r\n                    state.totalPages\r\n                ){\r\n\r\n                    state.page++;\r\n\r\n                    refreshPosts();\r\n\r\n                }\r\n\r\n            }\r\n        );\r\n\r\n        pagination.appendChild(\r\n            next\r\n        );\r\n\r\n    }\r\n\r\n\r\n    \/* =====================================================\r\n       FILTERING\r\n       ===================================================== *\/\r\n\r\n    filtersContainer.addEventListener(\r\n        \"click\",\r\n        function(event){\r\n\r\n            const button =\r\n                event.target.closest(\r\n                    \".lfr-blog-filter\"\r\n                );\r\n\r\n            if(!button){\r\n                return;\r\n            }\r\n\r\n            filtersContainer\r\n                .querySelectorAll(\r\n                    \".lfr-blog-filter\"\r\n                )\r\n                .forEach(\r\n                    function(item){\r\n\r\n                        item.classList.remove(\r\n                            \"is-active\"\r\n                        );\r\n\r\n                    }\r\n                );\r\n\r\n            button.classList.add(\r\n                \"is-active\"\r\n            );\r\n\r\n            state.category =\r\n                parseInt(\r\n                    button.dataset.category ||\r\n                    \"0\",\r\n                    10\r\n                );\r\n\r\n            state.page = 1;\r\n\r\n            refreshPosts();\r\n\r\n        }\r\n    );\r\n\r\n\r\n    let searchTimer;\r\n\r\n    if(searchForm){\r\n\r\n        searchForm.addEventListener(\r\n            \"submit\",\r\n            function(event){\r\n\r\n                event.preventDefault();\r\n\r\n                state.search =\r\n                    (searchInput.value || \"\")\r\n                        .trim();\r\n\r\n                state.page = 1;\r\n\r\n                refreshPosts(false);\r\n\r\n            }\r\n        );\r\n\r\n    }\r\n\r\n\r\n    if(searchInput){\r\n\r\n        searchInput.addEventListener(\r\n            \"input\",\r\n            function(){\r\n\r\n                window.clearTimeout(\r\n                    searchTimer\r\n                );\r\n\r\n                const value =\r\n                    (this.value || \"\")\r\n                        .trim();\r\n\r\n                if(searchClear){\r\n                    searchClear.classList.toggle(\r\n                        \"is-visible\",\r\n                        Boolean(value)\r\n                    );\r\n                }\r\n\r\n                searchTimer =\r\n                    window.setTimeout(\r\n                        function(){\r\n\r\n                            state.search =\r\n                                value;\r\n\r\n                            state.page = 1;\r\n\r\n                            refreshPosts(false);\r\n\r\n                        },\r\n                        300\r\n                    );\r\n\r\n            }\r\n        );\r\n\r\n    }\r\n\r\n\r\n    if(searchClear){\r\n\r\n        searchClear.addEventListener(\r\n            \"click\",\r\n            function(){\r\n\r\n                if(searchInput){\r\n                    searchInput.value = \"\";\r\n                }\r\n\r\n                state.search = \"\";\r\n                state.page = 1;\r\n\r\n                searchClear.classList.remove(\r\n                    \"is-visible\"\r\n                );\r\n\r\n                refreshPosts(false);\r\n\r\n                if(searchInput){\r\n                    searchInput.focus();\r\n                }\r\n\r\n            }\r\n        );\r\n\r\n    }\r\n\r\n\r\n    function refreshPosts(\r\n        shouldScroll = true\r\n    ){\r\n\r\n        loadPosts();\r\n\r\n        const section =\r\n            document.getElementById(\r\n                \"lfr-articulos\"\r\n            );\r\n\r\n        if(section && shouldScroll){\r\n\r\n            const top =\r\n                section\r\n                    .getBoundingClientRect()\r\n                    .top\r\n                +\r\n                window.scrollY\r\n                -\r\n                110;\r\n\r\n            window.scrollTo({\r\n                top:top,\r\n                behavior:\"smooth\"\r\n            });\r\n\r\n        }\r\n\r\n    }\r\n\r\n\r\n    \/* =====================================================\r\n       INIT\r\n       ===================================================== *\/\r\n\r\n    async function init(){\r\n\r\n        updateResultsMeta();\r\n\r\n        try{\r\n\r\n            await fetchAllPublishedPosts();\r\n\r\n            loadFeatured();\r\n            loadCategories();\r\n            loadPosts();\r\n\r\n        }catch(error){\r\n\r\n            featuredContainer.innerHTML =\r\n                '<div class=\"lfr-blog-status is-visible\">' +\r\n                'Unable to load the featured article.' +\r\n                '<\/div>';\r\n\r\n            status.textContent =\r\n                \"Unable to load the articles.\";\r\n\r\n            status.classList.add(\r\n                \"is-visible\"\r\n            );\r\n\r\n            console.error(error);\r\n\r\n        }\r\n\r\n    }\r\n\r\n\r\n    init();\r\n\r\n\r\n})();\r\n\r\n<\/script>\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>LA FRENCH RIVIERA \u2726 Blog &amp; News Stories, flavors, and experiences to discover another way to experience the Mediterranean in Canc\u00fan. All \u2315 \u00d7 Showing recent articles. FEATURED STORIES Latest from La French Riviera Loading featured article&#8230; MORE STORIES Discover more from La French Riviera LA FRENCH RIVIERA Ready to experience it? Mediterranean cuisine, cocktails, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-425","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Food Blog in Cancun | La French Riviera<\/title>\n<meta name=\"description\" content=\"Explore the La French Riviera blog for stories about Mediterranean cuisine, halal dining, cocktails and experiences to enjoy in Cancun.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/frenchriviera-lounge.com\/en\/en-blog\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Food Blog in Cancun | La French Riviera\" \/>\n<meta property=\"og:description\" content=\"Explore the La French Riviera blog for stories about Mediterranean cuisine, halal dining, cocktails and experiences to enjoy in Cancun.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/frenchriviera-lounge.com\/en\/en-blog\/\" \/>\n<meta property=\"og:site_name\" content=\"La French Riviera\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/people\/La-French-Riviera\/61588412033207\/\" \/>\n<meta property=\"article:modified_time\" content=\"2026-08-25T16:22:42+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/frenchriviera-lounge.com\/wp-content\/uploads\/2026\/08\/BANNER-LA-FRENCH-PARA-WEB-5.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"1920\" \/>\n\t<meta property=\"og:image:height\" content=\"1080\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/frenchriviera-lounge.com\\\/en\\\/en-blog\\\/\",\"url\":\"https:\\\/\\\/frenchriviera-lounge.com\\\/en\\\/en-blog\\\/\",\"name\":\"Food Blog in Cancun | La French Riviera\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/frenchriviera-lounge.com\\\/#website\"},\"datePublished\":\"2026-08-18T17:08:25+00:00\",\"dateModified\":\"2026-08-25T16:22:42+00:00\",\"description\":\"Explore the La French Riviera blog for stories about Mediterranean cuisine, halal dining, cocktails and experiences to enjoy in Cancun.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/frenchriviera-lounge.com\\\/en\\\/en-blog\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/frenchriviera-lounge.com\\\/en\\\/en-blog\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/frenchriviera-lounge.com\\\/en\\\/en-blog\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/frenchriviera-lounge.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Blog\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/frenchriviera-lounge.com\\\/#website\",\"url\":\"https:\\\/\\\/frenchriviera-lounge.com\\\/\",\"name\":\"La French Riviera\",\"description\":\"Restaurante Mediterr\u00e1neo \u00b7 Hookah Lounge \u00b7 C\u00f3cteles en Canc\u00fan\",\"publisher\":{\"@id\":\"https:\\\/\\\/frenchriviera-lounge.com\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/frenchriviera-lounge.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/frenchriviera-lounge.com\\\/#organization\",\"name\":\"La French Riviera\",\"url\":\"https:\\\/\\\/frenchriviera-lounge.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/frenchriviera-lounge.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/frenchriviera-lounge.com\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/Logo-la-french.png\",\"contentUrl\":\"https:\\\/\\\/frenchriviera-lounge.com\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/Logo-la-french.png\",\"width\":2172,\"height\":724,\"caption\":\"La French Riviera\"},\"image\":{\"@id\":\"https:\\\/\\\/frenchriviera-lounge.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/people\\\/La-French-Riviera\\\/61588412033207\\\/\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Food Blog in Cancun | La French Riviera","description":"Explore the La French Riviera blog for stories about Mediterranean cuisine, halal dining, cocktails and experiences to enjoy in Cancun.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/frenchriviera-lounge.com\/en\/en-blog\/","og_locale":"en_US","og_type":"article","og_title":"Food Blog in Cancun | La French Riviera","og_description":"Explore the La French Riviera blog for stories about Mediterranean cuisine, halal dining, cocktails and experiences to enjoy in Cancun.","og_url":"https:\/\/frenchriviera-lounge.com\/en\/en-blog\/","og_site_name":"La French Riviera","article_publisher":"https:\/\/www.facebook.com\/people\/La-French-Riviera\/61588412033207\/","article_modified_time":"2026-08-25T16:22:42+00:00","og_image":[{"width":1920,"height":1080,"url":"https:\/\/frenchriviera-lounge.com\/wp-content\/uploads\/2026\/08\/BANNER-LA-FRENCH-PARA-WEB-5.webp","type":"image\/webp"}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/frenchriviera-lounge.com\/en\/en-blog\/","url":"https:\/\/frenchriviera-lounge.com\/en\/en-blog\/","name":"Food Blog in Cancun | La French Riviera","isPartOf":{"@id":"https:\/\/frenchriviera-lounge.com\/#website"},"datePublished":"2026-08-18T17:08:25+00:00","dateModified":"2026-08-25T16:22:42+00:00","description":"Explore the La French Riviera blog for stories about Mediterranean cuisine, halal dining, cocktails and experiences to enjoy in Cancun.","breadcrumb":{"@id":"https:\/\/frenchriviera-lounge.com\/en\/en-blog\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/frenchriviera-lounge.com\/en\/en-blog\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/frenchriviera-lounge.com\/en\/en-blog\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/frenchriviera-lounge.com\/"},{"@type":"ListItem","position":2,"name":"Blog"}]},{"@type":"WebSite","@id":"https:\/\/frenchriviera-lounge.com\/#website","url":"https:\/\/frenchriviera-lounge.com\/","name":"La French Riviera","description":"Restaurante Mediterr\u00e1neo \u00b7 Hookah Lounge \u00b7 C\u00f3cteles en Canc\u00fan","publisher":{"@id":"https:\/\/frenchriviera-lounge.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/frenchriviera-lounge.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/frenchriviera-lounge.com\/#organization","name":"La French Riviera","url":"https:\/\/frenchriviera-lounge.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/frenchriviera-lounge.com\/#\/schema\/logo\/image\/","url":"https:\/\/frenchriviera-lounge.com\/wp-content\/uploads\/2026\/08\/Logo-la-french.png","contentUrl":"https:\/\/frenchriviera-lounge.com\/wp-content\/uploads\/2026\/08\/Logo-la-french.png","width":2172,"height":724,"caption":"La French Riviera"},"image":{"@id":"https:\/\/frenchriviera-lounge.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/people\/La-French-Riviera\/61588412033207\/"]}]}},"_links":{"self":[{"href":"https:\/\/frenchriviera-lounge.com\/?rest_route=\/wp\/v2\/pages\/425","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/frenchriviera-lounge.com\/?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/frenchriviera-lounge.com\/?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/frenchriviera-lounge.com\/?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/frenchriviera-lounge.com\/?rest_route=%2Fwp%2Fv2%2Fcomments&post=425"}],"version-history":[{"count":13,"href":"https:\/\/frenchriviera-lounge.com\/?rest_route=\/wp\/v2\/pages\/425\/revisions"}],"predecessor-version":[{"id":474,"href":"https:\/\/frenchriviera-lounge.com\/?rest_route=\/wp\/v2\/pages\/425\/revisions\/474"}],"wp:attachment":[{"href":"https:\/\/frenchriviera-lounge.com\/?rest_route=%2Fwp%2Fv2%2Fmedia&parent=425"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}