{"id":2217,"date":"2022-09-02T10:53:40","date_gmt":"2022-09-02T09:53:40","guid":{"rendered":"https:\/\/obleu-mogador.com\/?page_id=2217"},"modified":"2026-10-22T21:49:18","modified_gmt":"2026-10-22T20:49:18","slug":"contact-2","status":"publish","type":"page","link":"https:\/\/obleu-mogador.com\/?page_id=2217&lang=en","title":{"rendered":"Contact"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"2217\" class=\"elementor elementor-2217\">\n\t\t\t\t\t\t<section class=\"ob-is-breaking-bad elementor-section elementor-top-section elementor-element elementor-element-31ed6bb elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"31ed6bb\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;,&quot;_ob_bbad_use_it&quot;:&quot;yes&quot;,&quot;_ob_bbad_sssic_use&quot;:&quot;no&quot;,&quot;_ob_glider_is_slider&quot;:&quot;no&quot;}\">\n\t\t\t\t\t\t\t<div class=\"elementor-background-overlay\"><\/div>\n\t\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-no\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-48930cc\" data-id=\"48930cc\" data-element_type=\"column\" data-e-type=\"column\" data-settings=\"{&quot;_ob_bbad_is_stalker&quot;:&quot;no&quot;,&quot;_ob_teleporter_use&quot;:false,&quot;_ob_column_hoveranimator&quot;:&quot;no&quot;,&quot;_ob_column_has_pseudo&quot;:&quot;no&quot;}\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-debef74 ob-harakiri-inherit ob-has-background-overlay elementor-widget elementor-widget-heading\" data-id=\"debef74\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_ob_use_harakiri&quot;:&quot;yes&quot;,&quot;_ob_harakiri_writing_mode&quot;:&quot;inherit&quot;,&quot;_ob_harakiri_text_clip&quot;:&quot;none&quot;,&quot;_ob_perspektive_use&quot;:&quot;no&quot;,&quot;_ob_poopart_use&quot;:&quot;yes&quot;,&quot;_ob_shadough_use&quot;:&quot;no&quot;,&quot;_ob_allow_hoveranimator&quot;:&quot;no&quot;,&quot;_ob_widget_stalker_use&quot;:&quot;no&quot;}\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">Reservation<\/h1>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"ob-is-breaking-bad elementor-section elementor-top-section elementor-element elementor-element-d71ff12 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"d71ff12\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;,&quot;_ob_bbad_use_it&quot;:&quot;yes&quot;,&quot;_ob_bbad_sssic_use&quot;:&quot;no&quot;,&quot;_ob_glider_is_slider&quot;:&quot;no&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-no\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-48115e6\" data-id=\"48115e6\" data-element_type=\"column\" data-e-type=\"column\" data-settings=\"{&quot;_ob_bbad_is_stalker&quot;:&quot;no&quot;,&quot;_ob_teleporter_use&quot;:false,&quot;_ob_column_hoveranimator&quot;:&quot;no&quot;,&quot;_ob_column_has_pseudo&quot;:&quot;no&quot;}\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-ee5c33f ob-has-background-overlay elementor-widget elementor-widget-html\" data-id=\"ee5c33f\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_ob_perspektive_use&quot;:&quot;no&quot;,&quot;_ob_poopart_use&quot;:&quot;yes&quot;,&quot;_ob_shadough_use&quot;:&quot;no&quot;,&quot;_ob_allow_hoveranimator&quot;:&quot;no&quot;,&quot;_ob_widget_stalker_use&quot;:&quot;no&quot;}\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!-- O'Bleu Mogador: table booking module, English version (paste into an Elementor HTML widget or a custom HTML block) -->\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Imperial+Script&family=Varela+Round&family=Yeseva+One&display=swap\" rel=\"stylesheet\">\n<style>\n  \/* ===== O'Bleu Mogador booking widget \u2014 all styles scoped under #ob-booking ===== *\/\n  #ob-booking {\n    --ob-blue: #273094;\n    --ob-ink: #1B226E;\n    --ob-plum: #494153;\n    --ob-muted: #6E6878;\n    --ob-soft: #F4F3F9;\n    --ob-lav: #E9E6F2;\n    --ob-line: #E3E1EA;\n    --ob-ui: \"Varela Round\", Arial, sans-serif;\n    --ob-head: \"Yeseva One\", Georgia, serif;\n    --ob-script: \"Imperial Script\", cursive;\n    font-family: Georgia, \"Times New Roman\", serif;\n    font-size: 15px;\n    color: var(--ob-plum);\n    background: transparent;\n    padding: 64px 16px;\n    -webkit-font-smoothing: antialiased;\n  }\n  #ob-booking *, #ob-booking *::before, #ob-booking *::after { box-sizing: border-box; }\n  \/* Reset: neutralise Astra \/ Elementor styles on buttons, inputs, headings *\/\n  #ob-booking button {\n    -webkit-appearance: none; appearance: none; margin: 0; padding: 0; width: auto; height: auto;\n    min-width: 0; min-height: 0; max-width: none; background: none; border: 0; border-radius: 0;\n    box-shadow: none; text-shadow: none; text-transform: none; text-decoration: none; letter-spacing: normal;\n    font: inherit; line-height: 1.25; color: inherit; cursor: pointer; transform: none; white-space: normal; text-align: inherit;\n  }\n  #ob-booking button:disabled { cursor: not-allowed; }\n  #ob-booking input, #ob-booking textarea, #ob-booking select {\n    margin: 0; height: auto; min-height: 0; max-width: 100%; box-shadow: none; line-height: 1.4; font: inherit;\n  }\n  #ob-booking h2, #ob-booking h3, #ob-booking h4, #ob-booking h5, #ob-booking p {\n    font-family: inherit; text-transform: none; letter-spacing: normal; padding: 0; border: 0;\n  }\n  #ob-booking ol, #ob-booking ul, #ob-booking li { margin: 0; padding: 0; }\n  #ob-booking li::marker { content: none; }\n  #ob-booking svg { display: inline-block; flex-shrink: 0; vertical-align: middle; max-width: none; }\n  #ob-booking .ob-wrap { max-width: 1080px; margin: 0 auto; container: obwrap \/ inline-size; }\n  \/* Header *\/\n  #ob-booking .ob-head { text-align: center; margin-bottom: 36px; }\n  #ob-booking .ob-eyebrow { display: inline-block; font-family: var(--ob-ui); font-size: 12px; letter-spacing: .24em; text-transform: uppercase; color: var(--ob-muted); margin-bottom: 4px; }\n  #ob-booking .ob-title { font-family: var(--ob-script); font-weight: 400; font-size: clamp(46px, 7vw, 72px); color: var(--ob-blue); margin: 0 0 10px; line-height: 1.15; }\n  #ob-booking .ob-sub { font-style: italic; color: var(--ob-muted); font-size: 16px; margin: 0 auto; max-width: 580px; line-height: 1.65; }\n  #ob-booking .ob-rule { width: 70px; height: 1px; background: var(--ob-blue); margin: 18px auto 0; opacity: .5; }\n  \/* Card *\/\n  #ob-booking .ob-card {\n    display: grid; grid-template-columns: 260px minmax(0, 1fr); background: #fff; border: 1px solid var(--ob-line);\n    box-shadow: 0 24px 60px -30px rgba(39, 48, 148, .35); overflow: hidden; min-height: 560px;\n  }\n  \/* Sidebar *\/\n  #ob-booking .ob-side { background: #fff; padding: 34px 26px; border-right: 1px solid var(--ob-line); }\n  #ob-booking .ob-side-top { display: none; justify-content: flex-end; margin-bottom: 14px; }\n  #ob-booking .ob-step-pill { font-family: var(--ob-ui); padding: 6px 12px; font-size: 12px; border: 1px solid var(--ob-line); color: var(--ob-muted); white-space: nowrap; }\n  #ob-booking .ob-step-pill b { color: var(--ob-blue); font-weight: 400; }\n  #ob-booking .ob-steps { list-style: none; margin: 0 0 30px; position: relative; font-family: var(--ob-ui); }\n  #ob-booking .ob-steps li { position: relative; display: flex; align-items: center; gap: 14px; padding: 9px 0; color: #A9A5B2; font-size: 14px; transition: color .3s; }\n  #ob-booking .ob-steps li + li::before { content: \"\"; position: absolute; left: 15px; top: -11px; width: 1px; height: 22px; background: var(--ob-line); transition: background .4s; }\n  #ob-booking .ob-steps li.is-done + li::before { background: var(--ob-blue); }\n  #ob-booking .ob-step-txt small { display: block; font-size: 10.5px; letter-spacing: .12em; text-transform: uppercase; opacity: .8; margin-bottom: 1px; }\n  #ob-booking .ob-dot { position: relative; z-index: 1; width: 31px; height: 31px; border-radius: 50%; border: 1px solid var(--ob-line); background: #fff; display: grid; place-items: center; font-size: 13px; flex-shrink: 0; transition: all .3s; }\n  #ob-booking .ob-dot svg { width: 13px; height: 13px; display: none; }\n  #ob-booking .ob-steps li.is-active { color: var(--ob-ink); }\n  #ob-booking .ob-steps li.is-active .ob-dot { background: var(--ob-blue); border-color: var(--ob-blue); color: #fff; box-shadow: 0 0 0 5px rgba(39, 48, 148, .1); }\n  #ob-booking .ob-steps li.is-done { color: var(--ob-plum); }\n  #ob-booking .ob-steps li.is-done .ob-dot { background: var(--ob-blue); border-color: var(--ob-blue); color: #fff; }\n  #ob-booking .ob-steps li.is-done .ob-dot b { display: none; }\n  #ob-booking .ob-steps li.is-done .ob-dot svg { display: block; }\n  #ob-booking .ob-dot b { font-weight: 400; }\n  #ob-booking .ob-summary { background: var(--ob-soft); padding: 16px; font-size: 13.5px; }\n  #ob-booking .ob-summary h4 { margin: 0 0 8px; font-family: var(--ob-ui); font-size: 10.5px; letter-spacing: .16em; text-transform: uppercase; color: var(--ob-muted); font-weight: 400; }\n  #ob-booking .ob-summary-row { display: flex; gap: 10px; align-items: flex-start; padding: 6px 0; color: var(--ob-ink); line-height: 1.45; }\n  #ob-booking .ob-summary-row svg { margin-top: 2px; color: var(--ob-blue); }\n  #ob-booking .ob-summary-row .ob-empty { color: #A9A5B2; font-style: italic; }\n  #ob-booking .ob-hours { margin-top: 18px; font-family: var(--ob-ui); font-size: 12px; color: var(--ob-muted); line-height: 1.7; }\n  #ob-booking .ob-hours b { color: var(--ob-blue); font-weight: 400; }\n  \/* Main *\/\n  #ob-booking .ob-main { padding: 38px 42px; display: flex; flex-direction: column; min-width: 0; container: obmain \/ inline-size; }\n  #ob-booking .ob-progress { height: 2px; background: var(--ob-line); overflow: hidden; margin-bottom: 30px; }\n  #ob-booking .ob-progress span { display: block; height: 100%; width: 25%; background: var(--ob-blue); transition: width .5s cubic-bezier(.65,0,.35,1); }\n  #ob-booking .ob-panel { display: none; flex: 1; animation: obIn .45s cubic-bezier(.22,1,.36,1); }\n  #ob-booking .ob-panel.is-active { display: block; }\n  @keyframes obIn { from { opacity: 0; transform: translateX(16px); } to { opacity: 1; transform: none; } }\n  #ob-booking .ob-h { font-family: var(--ob-head); font-weight: 400; font-size: 26px; color: var(--ob-blue); margin: 0 0 6px; line-height: 1.25; }\n  #ob-booking .ob-p { color: var(--ob-muted); margin: 0 0 24px; font-size: 15px; line-height: 1.6; font-style: italic; }\n  #ob-booking .ob-label { display: block; font-family: var(--ob-ui); font-size: 12px; letter-spacing: .12em; text-transform: uppercase; color: var(--ob-ink); margin: 26px 0 12px; }\n  \/* Party : adults \/ children *\/\n  #ob-booking .ob-party { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }\n  #ob-booking .ob-party .ob-chip { padding: 16px; text-align: center; font-size: 14px; }\n  #ob-booking .ob-counts { display: grid; gap: 8px; margin-top: 10px; }\n  #ob-booking .ob-count { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 10px 12px 10px 16px; border: 1px solid var(--ob-line); }\n  #ob-booking .ob-count-name { font-size: 15px; color: var(--ob-ink); }\n  #ob-booking .ob-ctrl { display: flex; align-items: center; gap: 12px; font-family: var(--ob-head); font-size: 18px; color: var(--ob-ink); }\n  #ob-booking .ob-ctrl b { min-width: 22px; text-align: center; font-weight: 400; }\n  #ob-booking .ob-round { width: 34px; height: 34px; border-radius: 50%; border: 1px solid var(--ob-line); display: grid; place-items: center; color: var(--ob-blue); font-family: var(--ob-ui); font-size: 18px; line-height: 1; transition: all .2s; }\n  #ob-booking .ob-round:hover:not(:disabled) { border-color: var(--ob-blue); background: var(--ob-soft); }\n  #ob-booking .ob-round:disabled { opacity: .3; }\n  \/* Chips *\/\n  #ob-booking .ob-chips { display: flex; flex-wrap: wrap; gap: 8px; }\n  #ob-booking .ob-chip { font-family: var(--ob-ui); padding: 10px 16px; border: 1px solid var(--ob-line); background: #fff; font-size: 13.5px; color: var(--ob-plum); transition: all .2s; }\n  #ob-booking .ob-chip:hover { border-color: var(--ob-blue); color: var(--ob-blue); }\n  #ob-booking .ob-chip.is-selected { background: var(--ob-blue); border-color: var(--ob-blue); color: #fff; }\n  \/* Calendar *\/\n  #ob-booking .ob-datetime { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr); gap: 26px; align-items: start; }\n  #ob-booking .ob-cal { border: 1px solid var(--ob-line); padding: 16px; min-width: 0; }\n  #ob-booking .ob-cal-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 12px; }\n  #ob-booking .ob-cal-head strong { font-family: var(--ob-head); font-weight: 400; font-size: 17px; color: var(--ob-ink); text-transform: capitalize; }\n  #ob-booking .ob-nav { width: 36px; height: 36px; border-radius: 50%; border: 1px solid var(--ob-line); background: #fff; display: grid; place-items: center; color: var(--ob-blue); transition: all .2s; flex-shrink: 0; }\n  #ob-booking .ob-nav:hover:not(:disabled) { border-color: var(--ob-blue); background: var(--ob-soft); }\n  #ob-booking .ob-nav:disabled { opacity: .3; }\n  #ob-booking .ob-grid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 3px; }\n  #ob-booking .ob-dow { text-align: center; font-family: var(--ob-ui); font-size: 10.5px; color: var(--ob-muted); text-transform: uppercase; padding: 6px 0; letter-spacing: .06em; }\n  #ob-booking .ob-day { width: 100%; height: 42px; display: grid; place-items: center; background: transparent; border-radius: 50%; max-width: 42px; margin: 0 auto; font-family: var(--ob-ui); font-size: 14px; line-height: 1; color: var(--ob-plum); position: relative; transition: background-color .15s, color .15s; }\n  #ob-booking .ob-day:hover:not(:disabled):not(.is-selected) { background: var(--ob-soft); color: var(--ob-blue); }\n  #ob-booking .ob-day:disabled { color: #CBC8D2; }\n  #ob-booking .ob-day.is-today::after { content: \"\"; position: absolute; bottom: 5px; left: 50%; width: 4px; height: 4px; margin-left: -2px; border-radius: 50%; background: var(--ob-blue); }\n  #ob-booking .ob-day.is-selected { background: var(--ob-blue); color: #fff; }\n  #ob-booking .ob-day.is-selected::after { background: #fff; }\n  #ob-booking .ob-legend { margin-top: 10px; font-family: var(--ob-ui); font-size: 12px; color: var(--ob-muted); }\n  #ob-booking .ob-right h5 { margin: 0 0 6px; font-family: var(--ob-head); font-weight: 400; font-size: 17px; color: var(--ob-ink); }\n  #ob-booking .ob-right h5 span { display: block; font-family: Georgia, serif; font-style: italic; font-size: 14px; color: var(--ob-muted); text-transform: capitalize; margin-top: 2px; }\n  #ob-booking .ob-slots { display: grid; grid-template-columns: repeat(auto-fill, minmax(82px, 1fr)); gap: 8px; margin-top: 14px; }\n  #ob-booking .ob-slot { width: 100%; height: 46px; display: grid; place-items: center; border: 1px solid var(--ob-line); background: #fff; font-family: var(--ob-ui); font-size: 15px; line-height: 1; color: var(--ob-ink); font-variant-numeric: tabular-nums; transition: all .2s; }\n  #ob-booking .ob-slot:hover:not(:disabled):not(.is-selected) { border-color: var(--ob-blue); color: var(--ob-blue); }\n  #ob-booking .ob-slot:disabled { background: #F7F7F9; color: #CBC8D2; text-decoration: line-through; }\n  #ob-booking .ob-slot.is-selected { background: var(--ob-blue); border-color: var(--ob-blue); color: #fff; }\n  #ob-booking .ob-placeholder { border: 1px dashed var(--ob-line); padding: 36px 20px; text-align: center; color: var(--ob-muted); font-style: italic; font-size: 14px; }\n  #ob-booking .ob-hint { font-size: 13px; font-style: italic; color: var(--ob-muted); line-height: 1.55; margin-top: 14px; }\n  \/* Form *\/\n  #ob-booking .ob-form { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }\n  #ob-booking .ob-field { display: flex; flex-direction: column; gap: 7px; min-width: 0; }\n  #ob-booking .ob-field.ob-full { grid-column: 1 \/ -1; }\n  #ob-booking .ob-field label, #ob-booking .ob-field .ob-flabel { font-family: var(--ob-ui); font-size: 12.5px; letter-spacing: .04em; color: var(--ob-ink); }\n  #ob-booking .ob-field label em { color: var(--ob-blue); font-style: normal; }\n  #ob-booking .ob-field input, #ob-booking .ob-field textarea {\n    width: 100%; font-family: Georgia, serif; font-size: 15px; padding: 12px 14px; border: 1px solid var(--ob-line); border-radius: 0; background: #fff; color: var(--ob-ink);\n    transition: border-color .2s, box-shadow .2s;\n  }\n  #ob-booking .ob-field textarea { resize: vertical; min-height: 90px; }\n  #ob-booking .ob-field input:focus, #ob-booking .ob-field textarea:focus { outline: none; border-color: var(--ob-blue); box-shadow: 0 0 0 3px rgba(39, 48, 148, .1); }\n  #ob-booking .ob-field.has-error input { border-color: #C8404D; box-shadow: 0 0 0 3px rgba(200, 64, 77, .1); }\n  #ob-booking .ob-err { font-family: var(--ob-ui); font-size: 12px; color: #C8404D; display: none; }\n  #ob-booking .ob-field.has-error .ob-err { display: block; }\n  \/* Phone: country code picker (flag) + number *\/\n  #ob-booking .ob-phone { position: relative; display: flex; align-items: stretch; border: 1px solid var(--ob-line); background: #fff; transition: border-color .2s, box-shadow .2s; }\n  #ob-booking .ob-phone:focus-within { border-color: var(--ob-blue); box-shadow: 0 0 0 3px rgba(39, 48, 148, .1); }\n  #ob-booking .ob-field.has-error .ob-phone { border-color: #C8404D; box-shadow: 0 0 0 3px rgba(200, 64, 77, .1); }\n  #ob-booking .ob-field .ob-phone input { flex: 1; min-width: 0; border: 0; box-shadow: none; padding-left: 10px; }\n  #ob-booking .ob-field.has-error .ob-phone input, #ob-booking .ob-field .ob-phone input:focus { border: 0; box-shadow: none; }\n  #ob-booking .ob-cc { display: flex; align-items: center; gap: 6px; padding: 0 10px 0 12px; border-right: 1px solid var(--ob-line); font-family: var(--ob-ui); font-size: 14px; color: var(--ob-ink); white-space: nowrap; font-variant-numeric: tabular-nums; }\n  #ob-booking .ob-cc:hover, #ob-booking .ob-cc[aria-expanded=\"true\"] { background: var(--ob-soft); }\n  #ob-booking .ob-cc svg { color: var(--ob-muted); }\n  #ob-booking .ob-flag { width: 22px; height: 16px; object-fit: cover; box-shadow: 0 0 0 1px rgba(0,0,0,.08); flex-shrink: 0; display: block; }\n  #ob-booking .ob-cc-menu { position: absolute; z-index: 20; top: calc(100% + 6px); left: -1px; width: 290px; max-width: calc(100vw - 40px); background: #fff; border: 1px solid var(--ob-line); box-shadow: 0 18px 40px -16px rgba(39, 48, 148, .35); padding: 8px; display: none; }\n  #ob-booking .ob-cc-menu.is-open { display: block; }\n  #ob-booking .ob-field .ob-cc-menu input { border: 1px solid var(--ob-line); padding: 9px 12px; font-size: 14px; margin-bottom: 6px; }\n  #ob-booking .ob-field .ob-cc-menu input:focus { border-color: var(--ob-blue); box-shadow: none; }\n  #ob-booking .ob-cc-list { max-height: 240px; overflow-y: auto; list-style: none; font-family: var(--ob-ui); }\n  #ob-booking .ob-cc-list li { display: flex; align-items: center; gap: 10px; padding: 8px 10px; font-size: 14px; color: var(--ob-ink); cursor: pointer; }\n  #ob-booking .ob-cc-list li:hover, #ob-booking .ob-cc-list li.is-selected { background: var(--ob-soft); }\n  #ob-booking .ob-cc-list li span { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\n  #ob-booking .ob-cc-list li b { color: var(--ob-muted); font-weight: 400; font-variant-numeric: tabular-nums; }\n  #ob-booking .ob-cc-list li.ob-cc-sep { height: 1px; padding: 0; margin: 4px 6px; background: var(--ob-line); cursor: default; }\n  \/* Recap *\/\n  #ob-booking .ob-recap { border: 1px solid var(--ob-line); padding: 4px 18px; }\n  #ob-booking .ob-recap-row { display: flex; justify-content: space-between; gap: 16px; padding: 13px 0; border-bottom: 1px solid var(--ob-line); font-size: 14px; }\n  #ob-booking .ob-recap-row:last-child { border-bottom: none; }\n  #ob-booking .ob-recap-row span { font-family: var(--ob-ui); font-size: 12.5px; color: var(--ob-muted); flex-shrink: 0; padding-top: 2px; }\n  #ob-booking .ob-recap-row strong { color: var(--ob-ink); text-align: right; font-weight: 400; white-space: pre-line; }\n  #ob-booking .ob-notice { display: flex; gap: 12px; margin-top: 16px; padding: 14px 16px; background: var(--ob-soft); font-size: 13.5px; font-style: italic; line-height: 1.6; color: var(--ob-ink); }\n  #ob-booking .ob-notice svg { color: var(--ob-blue); margin-top: 2px; }\n  \/* Buttons \u2014 same style as obleu-mogador.com (square, uppercase, inverted on hover) *\/\n  #ob-booking .ob-actions { display: flex; justify-content: space-between; align-items: center; gap: 12px; margin-top: 30px; padding-top: 22px; border-top: 1px solid var(--ob-line); }\n  #ob-booking .ob-btn { display: inline-flex; align-items: center; justify-content: center; gap: 10px; padding: 18px 28px; border: 1px solid transparent; font-family: var(--ob-ui); font-size: 13px; line-height: 1; text-transform: uppercase; letter-spacing: 1px; text-decoration: none; transition: background-color .25s, color .25s, border-color .25s; }\n  #ob-booking .ob-btn-primary { background: var(--ob-blue); border-color: var(--ob-blue); color: #fff; }\n  #ob-booking .ob-btn-primary:hover:not(:disabled), #ob-booking .ob-btn-primary:focus-visible { background: #fff; color: var(--ob-blue); outline: none; }\n  #ob-booking .ob-btn-primary:disabled { background: #D6D4E4; border-color: #D6D4E4; color: #fff; }\n  #ob-booking .ob-btn-ghost { background: transparent; color: var(--ob-muted); padding-left: 4px; padding-right: 4px; }\n  #ob-booking .ob-btn-ghost:hover { color: var(--ob-blue); }\n  #ob-booking .ob-btn-wa { background: var(--ob-blue); border-color: var(--ob-blue); color: #fff; }\n  #ob-booking .ob-btn-wa:hover { background: #fff; color: var(--ob-blue); }\n  #ob-booking .ob-hidden { visibility: hidden; }\n  \/* Success *\/\n  #ob-booking .ob-success { text-align: center; padding: 22px 10px; }\n  #ob-booking .ob-success-title { font-family: var(--ob-script); font-size: 58px; color: var(--ob-blue); line-height: 1.1; margin: 0 0 10px; font-weight: 400; }\n  #ob-booking .ob-success .ob-p { max-width: 460px; margin-left: auto; margin-right: auto; }\n  #ob-booking .ob-success .ob-notice { max-width: 460px; margin: 0 auto 24px; text-align: left; }\n  #ob-booking .ob-success-btns { display: flex; justify-content: center; gap: 12px; flex-wrap: wrap; }\n  \/* Responsive (based on the widget's own width) *\/\n  @container obwrap (max-width: 860px) {\n    #ob-booking .ob-card { grid-template-columns: 1fr; }\n    #ob-booking .ob-side { padding: 18px 20px 20px; border-right: none; border-bottom: 1px solid var(--ob-line); }\n    #ob-booking .ob-side-top { display: flex; }\n    #ob-booking .ob-steps { display: grid; grid-template-columns: repeat(4, 1fr); margin: 0; }\n    #ob-booking .ob-steps li { flex-direction: column; gap: 8px; padding: 0; text-align: center; font-size: 11.5px; }\n    #ob-booking .ob-steps li + li::before { left: calc(-50% + 18px); right: calc(50% + 18px); width: auto; top: 13px; height: 1px; }\n    #ob-booking .ob-dot { width: 28px; height: 28px; font-size: 12px; }\n    #ob-booking .ob-step-txt small { display: none; }\n    #ob-booking .ob-summary, #ob-booking .ob-hours { display: none; }\n    #ob-booking .ob-main { padding: 28px 22px; }\n  }\n  @container obwrap (max-width: 540px) {\n    #ob-booking .ob-steps li { font-size: 10.5px; }\n    #ob-booking .ob-main { padding: 24px 16px; }\n  }\n  @container obmain (max-width: 640px) {\n    #ob-booking .ob-datetime { grid-template-columns: minmax(0, 1fr); gap: 20px; }\n  }\n  @container obmain (max-width: 480px) {\n    #ob-booking .ob-form { grid-template-columns: minmax(0, 1fr); }\n    #ob-booking .ob-cal { padding: 12px; }\n    #ob-booking .ob-day { height: 38px; max-width: 38px; font-size: 13px; }\n    #ob-booking .ob-h { font-size: 22px; }\n    #ob-booking .ob-actions { flex-direction: column-reverse; align-items: stretch; }\n    #ob-booking .ob-recap-row { flex-direction: column; gap: 4px; }\n    #ob-booking .ob-recap-row strong { text-align: left; }\n  }\n  @media (max-width: 560px) { #ob-booking { padding: 40px 12px; } }\n  @media (prefers-reduced-motion: reduce) { #ob-booking * { animation: none !important; transition: none !important; } }\n<\/style>\n<section id=\"ob-booking\" lang=\"en\">\n  <div class=\"ob-wrap\">\n    <header class=\"ob-head\">\n      <span class=\"ob-eyebrow\">O'Bleu Mogador Restaurant \u00b7 Essaouira<\/span>\n      <h2 class=\"ob-title\">Book your table<\/h2>\n      <p class=\"ob-sub\">An intimate table in a riad of the medina, with the Proven\u00e7al and Essaouira cuisine of chef Serge Peuzin, Ma\u00eetre Cuisinier de France.<\/p>\n      <div class=\"ob-rule\"><\/div>\n    <\/header>\n    <div class=\"ob-card\">\n      <aside class=\"ob-side\">\n        <div class=\"ob-side-top\"><span class=\"ob-step-pill\">Step <b id=\"obStepNum\">1<\/b>\/4<\/span><\/div>\n        <ol class=\"ob-steps\" id=\"obSteps\"><\/ol>\n        <div class=\"ob-summary\">\n          <h4>Your booking<\/h4>\n          <div class=\"ob-summary-row\">\n            <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\"><path d=\"M17 21v-2a4 4 0 00-4-4H5a4 4 0 00-4 4v2\"\/><circle cx=\"9\" cy=\"7\" r=\"4\"\/><path d=\"M23 21v-2a4 4 0 00-3-3.87M16 3.13a4 4 0 010 7.75\"\/><\/svg>\n            <span id=\"obSumWho\" class=\"ob-empty\">Number of guests<\/span>\n          <\/div>\n          <div class=\"ob-summary-row\">\n            <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\"><rect x=\"3\" y=\"4\" width=\"18\" height=\"18\" rx=\"2\"\/><path d=\"M16 2v4M8 2v4M3 10h18\"\/><\/svg>\n            <span id=\"obSumWhen\" class=\"ob-empty\">Date and time<\/span>\n          <\/div>\n          <div class=\"ob-summary-row\">\n            <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\"><path d=\"M3 2v7c0 1.1.9 2 2 2h4a2 2 0 002-2V2M7 2v20M21 15V2a5 5 0 00-5 5v6c0 1.1.9 2 2 2h3zm0 0v7\"\/><\/svg>\n            <span>Seasonal menu: you will choose at the table<\/span>\n          <\/div>\n        <\/div>\n        <div class=\"ob-hours\">Dinner <b>Monday to Saturday<\/b><br>7 pm to 10 pm \u00b7 closed on Sundays<\/div>\n      <\/aside>\n      <div class=\"ob-main\">\n        <div class=\"ob-progress\"><span id=\"obBar\"><\/span><\/div>\n        <!-- Step 1 : table -->\n        <div class=\"ob-panel is-active\" data-step=\"1\">\n          <h3 class=\"ob-h\">How many of you?<\/h3>\n          <p class=\"ob-p\">The riad has an intimate dining room: we will prepare the table that suits you.<\/p>\n          <div class=\"ob-chips ob-party\" id=\"obParty\">\n            <button type=\"button\" class=\"ob-chip\" data-p=\"adults\">Adults only<\/button>\n            <button type=\"button\" class=\"ob-chip\" data-p=\"family\">Adults and children<\/button>\n          <\/div>\n          <div class=\"ob-counts\" id=\"obCounts\" style=\"display:none\">\n            <div class=\"ob-count\">\n              <span class=\"ob-count-name\">Adults<\/span>\n              <span class=\"ob-ctrl\"><button type=\"button\" class=\"ob-round\" data-k=\"adults\" data-delta=\"-1\" aria-label=\"One adult less\">\u2212<\/button><b id=\"obAdults\">2<\/b><button type=\"button\" class=\"ob-round\" data-k=\"adults\" data-delta=\"1\" aria-label=\"One adult more\">+<\/button><\/span>\n            <\/div>\n            <div class=\"ob-count\" id=\"obKidsRow\">\n              <span class=\"ob-count-name\">Children<\/span>\n              <span class=\"ob-ctrl\"><button type=\"button\" class=\"ob-round\" data-k=\"kids\" data-delta=\"-1\" aria-label=\"One child less\">\u2212<\/button><b id=\"obKids\">1<\/b><button type=\"button\" class=\"ob-round\" data-k=\"kids\" data-delta=\"1\" aria-label=\"One child more\">+<\/button><\/span>\n            <\/div>\n          <\/div>\n          <p class=\"ob-hint\" id=\"obGroupHint\" style=\"display:none\">For a group of more than 12 people or a private booking of the riad, tell us about your plans in the message: we will get back to you.<\/p>\n          <span class=\"ob-label\">Need extra space at the table?<\/span>\n          <div class=\"ob-chips\" id=\"obNeeds\"><\/div>\n          <p class=\"ob-hint\">Let us know what you are bringing along: we will reserve an easy-to-reach table with enough room.<\/p>\n        <\/div>\n        <!-- Step 2 : date -->\n        <div class=\"ob-panel\" data-step=\"2\">\n          <h3 class=\"ob-h\">Which evening?<\/h3>\n          <p class=\"ob-p\">Dinner is served Monday to Saturday, from 7 pm to 10 pm.<\/p>\n          <div class=\"ob-datetime\">\n            <div class=\"ob-cal\">\n              <div class=\"ob-cal-head\">\n                <button type=\"button\" class=\"ob-nav\" id=\"obPrev\" aria-label=\"Previous month\"><svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M15 18l-6-6 6-6\"\/><\/svg><\/button>\n                <strong id=\"obMonth\"><\/strong>\n                <button type=\"button\" class=\"ob-nav\" id=\"obNext\" aria-label=\"Next month\"><svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M9 18l6-6-6-6\"\/><\/svg><\/button>\n              <\/div>\n              <div class=\"ob-grid\" id=\"obGrid\"><\/div>\n              <div class=\"ob-legend\">The restaurant is closed on Sundays.<\/div>\n            <\/div>\n            <div class=\"ob-right\" id=\"obRight\"><\/div>\n          <\/div>\n        <\/div>\n        <!-- Step 3 : contact -->\n        <div class=\"ob-panel\" data-step=\"3\">\n          <h3 class=\"ob-h\">Your details<\/h3>\n          <p class=\"ob-p\">We will confirm your table on WhatsApp.<\/p>\n          <form class=\"ob-form\" id=\"obForm\" novalidate>\n            <div class=\"ob-field\">\n              <label for=\"obName\">Full name <em>*<\/em><\/label>\n              <input id=\"obName\" type=\"text\" placeholder=\"Your name\" autocomplete=\"name\">\n              <span class=\"ob-err\">Please enter your name.<\/span>\n            <\/div>\n            <div class=\"ob-field\">\n              <label for=\"obPhone\">WhatsApp number <em>*<\/em><\/label>\n              <div class=\"ob-phone\">\n                <button type=\"button\" class=\"ob-cc\" id=\"obCc\" aria-haspopup=\"listbox\" aria-expanded=\"false\" aria-label=\"Country code\"><\/button>\n                <input id=\"obPhone\" type=\"tel\" placeholder=\"7400 123456\" autocomplete=\"tel-national\" inputmode=\"tel\">\n                <div class=\"ob-cc-menu\" id=\"obCcMenu\">\n                  <input type=\"text\" id=\"obCcSearch\" placeholder=\"Search for a country\u2026\" autocomplete=\"off\">\n                  <ul class=\"ob-cc-list\" id=\"obCcList\" role=\"listbox\"><\/ul>\n                <\/div>\n              <\/div>\n              <span class=\"ob-err\">Invalid number.<\/span>\n            <\/div>\n            <div class=\"ob-field ob-full\">\n              <span class=\"ob-flabel\">The occasion<\/span>\n              <div class=\"ob-chips\" id=\"obOccasions\"><\/div>\n            <\/div>\n            <div class=\"ob-field ob-full\">\n              <label for=\"obDiet\">Allergies or dietary requirements<\/label>\n              <input id=\"obDiet\" type=\"text\" placeholder=\"Seafood, gluten, vegetarian\u2026\">\n            <\/div>\n            <div class=\"ob-field ob-full\">\n              <label for=\"obMsg\">Any special request?<\/label>\n              <textarea id=\"obMsg\" placeholder=\"Birthday, quiet table, cake, late arrival\u2026\"><\/textarea>\n            <\/div>\n            <input type=\"text\" id=\"obWebsite\" tabindex=\"-1\" autocomplete=\"off\" aria-hidden=\"true\" style=\"position:absolute;left:-9999px;width:1px;height:1px;opacity:0\">\n          <\/form>\n        <\/div>\n        <!-- Step 4 : recap -->\n        <div class=\"ob-panel\" data-step=\"4\">\n          <h3 class=\"ob-h\">Your booking<\/h3>\n          <p class=\"ob-p\">Check the details, then send your request on WhatsApp.<\/p>\n          <div class=\"ob-recap\" id=\"obRecap\"><\/div>\n          <div class=\"ob-notice\">\n            <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\"><path d=\"M3 2v7c0 1.1.9 2 2 2h4a2 2 0 002-2V2M7 2v20M21 15V2a5 5 0 00-5 5v6c0 1.1.9 2 2 2h3zm0 0v7\"\/><\/svg>\n            <span>Our menu changes every season: you will choose at the table.<\/span>\n          <\/div>\n          <div class=\"ob-notice\">\n            <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\"><path d=\"M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0118 0z\"\/><circle cx=\"12\" cy=\"10\" r=\"3\"\/><\/svg>\n            <span>O'Bleu is at 23 rue Bouchentouf, in the medina of Essaouira. It is a discreet riad: just ring the bell to come in.<\/span>\n          <\/div>\n        <\/div>\n        <!-- Success -->\n        <div class=\"ob-panel\" data-step=\"5\">\n          <div class=\"ob-success\">\n            <h3 class=\"ob-success-title\" id=\"obSuccessTitle\">Thank you!<\/h3>\n            <p class=\"ob-p\" id=\"obSuccessText\"><\/p>\n            <div class=\"ob-notice\">\n              <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\"><circle cx=\"12\" cy=\"12\" r=\"10\"\/><path d=\"M12 8v4M12 16h.01\"\/><\/svg>\n              <span>Running late or can't make it? Let us know on +212 524 783 133.<\/span>\n            <\/div>\n            <div class=\"ob-success-btns\">\n              <a class=\"ob-btn ob-btn-wa\" id=\"obWa\" href=\"#\" target=\"_blank\" rel=\"noopener\">\n                <svg width=\"17\" height=\"17\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M17.47 14.38c-.3-.15-1.76-.87-2.03-.97-.27-.1-.47-.15-.67.15-.2.3-.77.97-.94 1.17-.17.2-.35.22-.65.07-.3-.15-1.26-.46-2.4-1.480-.89-.79-1.49-1.77-1.66-2.07-.17-.3-.02-.46.13-.61.13-.13.3-.35.45-.52.15-.17.2-.3.3-.5.1-.2.05-.37-.02-.52-.08-.15-.67-1.62-.92-2.22-.24-.58-.49-.5-.67-.51h-.57c-.2 0-.52.07-.79.37-.27.3-1.04 1.02-1.04 2.48s1.07 2.88 1.21 3.08c.15.2 2.1 3.2 5.08 4.49.71.31 1.26.49 1.69.63.71.23 1.360.2 1.87.12.57-.09 1.76-.72 2.01-1.41.25-.7.25-1.29.17-1.41-.07-.13-.27-.2-.57-.35zM12.04 21.5h-.01a9.4 9.4 0 01-4.8-1.32l-.34-.2-3.57.94.95-3.48-.22-.36a9.430 9.430 0 01-1.45-5.03c0-5.2 4.24-9.44 9.45-9.44a9.4 9.4 0 016.68 2.77 9.38 9.38 0 012.76 6.68c0 5.21-4.24 9.44-9.45 9.44zm8.04-17.48A11.32 11.32 0 0012.04.7C5.77.7.67 5.8.67 12.06c0 2 .52 3.96 1.52 5.68L.57 23.7l6.1-1.6a11.33 11.33 0 005.37 1.37h.01c6.26 0 11.36-5.1 11.37-11.37 0-3.03-1.18-5.890-3.34-8.04z\"\/><\/svg>\n                Open WhatsApp\n              <\/a>\n              <button type=\"button\" class=\"ob-btn ob-btn-ghost\" id=\"obRestart\">New booking<\/button>\n            <\/div>\n          <\/div>\n        <\/div>\n        <div class=\"ob-actions\" id=\"obActions\">\n          <button type=\"button\" class=\"ob-btn ob-btn-ghost ob-hidden\" id=\"obBack\"><svg width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M15 18l-6-6 6-6\"\/><\/svg>Back<\/button>\n          <button type=\"button\" class=\"ob-btn ob-btn-primary\" id=\"obNextBtn\" disabled><span id=\"obNextLabel\">Continue<\/span><svg width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M5 12h14M12 5l7 7-7 7\"\/><\/svg><\/button>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/section>\n<script>\n(function () {\n  \/* ===================== CONFIG ===================== *\/\n  var CONFIG = {\n    whatsapp: \"212628365302\",                    \/\/ Restaurant WhatsApp (without +): receives the booking requests\n    \/\/ Arrival times per day (0 = Sunday \u2026 6 = Saturday). [] = closed.\n    slots: { 0: [], 1: [\"19:00\",\"19:30\",\"20:00\",\"20:30\",\"21:00\"], 2: [\"19:00\",\"19:30\",\"20:00\",\"20:30\",\"21:00\"],\n             3: [\"19:00\",\"19:30\",\"20:00\",\"20:30\",\"21:00\"], 4: [\"19:00\",\"19:30\",\"20:00\",\"20:30\",\"21:00\"],\n             5: [\"19:00\",\"19:30\",\"20:00\",\"20:30\",\"21:00\"], 6: [\"19:00\",\"19:30\",\"20:00\",\"20:30\",\"21:00\"] },\n    closedDates: [],                            \/\/ e.g. [\"2026-12-31\"] \u2014 exceptional closing days\n    fullSlots: {},                              \/\/ e.g. { \"2026-10-24\": [\"20:00\",\"20:30\"] } \u2014 fully booked times\n    minNoticeMinutes: 90,                       \/\/ minimum notice before arrival\n    maxDaysAhead: 120,\n    maxGuests: 30\n  };\n  var OCCASIONS = [\"Dinner\", \"Birthday\", \"Romantic dinner\", \"Marriage proposal\", \"Business meal\", \"With friends\"];\n  var NEEDS = [\"Pushchair\", \"Wheelchair\"];\n  var STEPS = [\"Table\", \"Date\", \"Contact\", \"Send\"];\n  var MONTHS = [\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"];\n  var DAYS = [\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"];\n  var CHECK = '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"3.5\"><path d=\"M20 6L9 17l-5-5\"\/><\/svg>';\n  \/* ===================== STATE ===================== *\/\n  var today = new Date(); today.setHours(0, 0, 0, 0);\n  var maxDate = new Date(today); maxDate.setDate(maxDate.getDate() + CONFIG.maxDaysAhead);\n  var state;\n  function resetState() {\n    state = { step: 1, party: null, adults: 2, kids: 1, needs: [], occasion: OCCASIONS[0], date: null, time: null,\n              view: new Date(today.getFullYear(), today.getMonth(), 1) };\n  }\n  resetState();\n  var $ = function (id) { return document.getElementById(id); };\n  function pad(n) { return (n < 10 ? \"0\" : \"\") + n; }\n  function key(d) { return d.getFullYear() + \"-\" + pad(d.getMonth() + 1) + \"-\" + pad(d.getDate()); }\n  function fmt(d) { return DAYS[d.getDay()] + \" \" + d.getDate() + \" \" + MONTHS[d.getMonth()] + \" \" + d.getFullYear(); }\n  function hour(t) { var h = +t.slice(0, 2); return (h % 12 || 12) + \":\" + t.slice(3) + (h < 12 ? \" am\" : \" pm\"); }\n  function esc(s) { return String(s).replace(\/[&<>\"']\/g, function (c) { return { \"&\": \"&amp;\", \"<\": \"&lt;\", \">\": \"&gt;\", '\"': \"&quot;\", \"'\": \"&#39;\" }[c]; }); }\n  function plural(n, one, many) { return n + \" \" + (n > 1 ? many : one); }\n  function kidsCount() { return state.party === \"family\" ? state.kids : 0; }\n  function totalGuests() { return state.party ? state.adults + kidsCount() : 0; }\n  function guestsLabel() {\n    if (!state.party) return \"\";\n    return plural(state.adults, \"adult\", \"adults\") + (kidsCount() ? \" and \" + plural(state.kids, \"child\", \"children\") : \"\");\n  }\n  \/* ===================== STEPPER ===================== *\/\n  $(\"obSteps\").innerHTML = STEPS.map(function (s, i) {\n    return '<li><span class=\"ob-dot\"><b>' + (i + 1) + '<\/b>' + CHECK + '<\/span><span class=\"ob-step-txt\"><small>Step ' + (i + 1) + '<\/small>' + s + '<\/span><\/li>';\n  }).join(\"\");\n  \/* ===================== STEP 1 : TABLE ===================== *\/\n  function renderParty() {\n    var full = totalGuests() >= CONFIG.maxGuests;\n    document.querySelectorAll(\"#obParty .ob-chip\").forEach(function (x) { x.classList.toggle(\"is-selected\", x.dataset.p === state.party); });\n    $(\"obCounts\").style.display = state.party ? \"\" : \"none\";\n    $(\"obKidsRow\").style.display = state.party === \"family\" ? \"\" : \"none\";\n    $(\"obAdults\").textContent = state.adults;\n    $(\"obKids\").textContent = state.kids;\n    $(\"obCounts\").querySelectorAll(\".ob-round\").forEach(function (b) {\n      b.disabled = +b.dataset.delta < 0 ? state[b.dataset.k] <= 1 : full;\n    });\n    $(\"obGroupHint\").style.display = totalGuests() > 12 ? \"\" : \"none\";\n    $(\"obNeeds\").innerHTML = NEEDS.map(function (n) {\n      return '<button type=\"button\" class=\"ob-chip' + (state.needs.indexOf(n) > -1 ? \" is-selected\" : \"\") + '\" data-n=\"' + esc(n) + '\">' + n + '<\/button>';\n    }).join(\"\");\n  }\n  $(\"obParty\").addEventListener(\"click\", function (e) {\n    var b = e.target.closest(\".ob-chip\"); if (!b) return;\n    state.party = b.dataset.p;\n    if (totalGuests() > CONFIG.maxGuests) state.kids = Math.max(1, CONFIG.maxGuests - state.adults);\n    renderParty(); update();\n  });\n  $(\"obCounts\").addEventListener(\"click\", function (e) {\n    var b = e.target.closest(\".ob-round\"); if (!b || b.disabled) return;\n    state[b.dataset.k] = Math.max(1, state[b.dataset.k] + (+b.dataset.delta));\n    renderParty(); update();\n  });\n  $(\"obNeeds\").addEventListener(\"click\", function (e) {\n    var b = e.target.closest(\".ob-chip\"); if (!b) return;\n    var i = state.needs.indexOf(b.dataset.n);\n    if (i > -1) state.needs.splice(i, 1); else state.needs.push(b.dataset.n);\n    b.classList.toggle(\"is-selected\", i === -1); update();\n  });\n  $(\"obOccasions\").innerHTML = OCCASIONS.map(function (o) {\n    return '<button type=\"button\" class=\"ob-chip' + (o === state.occasion ? \" is-selected\" : \"\") + '\" data-o=\"' + esc(o) + '\">' + o + '<\/button>';\n  }).join(\"\");\n  $(\"obOccasions\").addEventListener(\"click\", function (e) {\n    var b = e.target.closest(\".ob-chip\"); if (!b) return;\n    state.occasion = b.dataset.o;\n    document.querySelectorAll(\"#obOccasions .ob-chip\").forEach(function (x) { x.classList.toggle(\"is-selected\", x === b); });\n    update();\n  });\n  \/* ===================== STEP 2 : CALENDAR ===================== *\/\n  function slotsFor(date) {\n    var list = CONFIG.slots[date.getDay()] || [], full = CONFIG.fullSlots[key(date)] || [];\n    var minStart = new Date(Date.now() + CONFIG.minNoticeMinutes * 60000);\n    if (CONFIG.closedDates.indexOf(key(date)) > -1) return [];\n    return list.map(function (t) {\n      var s = new Date(date); s.setHours(+t.slice(0, 2), +t.slice(3), 0, 0);\n      return { label: t, disabled: full.indexOf(t) > -1 || s < minStart };\n    });\n  }\n  function renderCalendar() {\n    var v = state.view, y = v.getFullYear(), m = v.getMonth();\n    $(\"obMonth\").textContent = MONTHS[m] + \" \" + y;\n    $(\"obPrev\").disabled = y === today.getFullYear() && m === today.getMonth();\n    $(\"obNext\").disabled = new Date(y, m + 1, 1) > maxDate;\n    var html = [\"mon\",\"tue\",\"wed\",\"thu\",\"fri\",\"sat\",\"sun\"].map(function (d) { return '<div class=\"ob-dow\">' + d + '<\/div>'; }).join(\"\");\n    var offset = (new Date(y, m, 1).getDay() + 6) % 7;\n    for (var i = 0; i < offset; i++) html += \"<div><\/div>\";\n    var days = new Date(y, m + 1, 0).getDate();\n    for (var d = 1; d <= days; d++) {\n      var date = new Date(y, m, d), cls = \"ob-day\";\n      var slots = slotsFor(date);\n      var disabled = date < today || date > maxDate || !slots.length || slots.every(function (s) { return s.disabled; });\n      if (date.getTime() === today.getTime()) cls += \" is-today\";\n      if (state.date && date.getTime() === state.date.getTime()) cls += \" is-selected\";\n      html += '<button type=\"button\" class=\"' + cls + '\" data-d=\"' + d + '\"' + (disabled ? \" disabled\" : \"\") + '>' + d + '<\/button>';\n    }\n    $(\"obGrid\").innerHTML = html;\n  }\n  function renderRight() {\n    if (!state.date) { $(\"obRight\").innerHTML = '<div class=\"ob-placeholder\">Choose an evening to see the available arrival times.<\/div>'; return; }\n    $(\"obRight\").innerHTML = '<h5>Arrival time<span>' + fmt(state.date) + '<\/span><\/h5><div class=\"ob-slots\">' + slotsFor(state.date).map(function (s) {\n      return '<button type=\"button\" class=\"ob-slot' + (state.time === s.label ? \" is-selected\" : \"\") + '\" data-t=\"' + s.label + '\"' + (s.disabled ? \" disabled\" : \"\") + '>' + hour(s.label) + '<\/button>';\n    }).join(\"\") + '<\/div><p class=\"ob-hint\">We hold your table for 15 minutes after the booked time.<\/p>';\n  }\n  $(\"obPrev\").addEventListener(\"click\", function () { state.view = new Date(state.view.getFullYear(), state.view.getMonth() - 1, 1); renderCalendar(); });\n  $(\"obNext\").addEventListener(\"click\", function () { state.view = new Date(state.view.getFullYear(), state.view.getMonth() + 1, 1); renderCalendar(); });\n  $(\"obGrid\").addEventListener(\"click\", function (e) {\n    var b = e.target.closest(\".ob-day\"); if (!b || b.disabled) return;\n    state.date = new Date(state.view.getFullYear(), state.view.getMonth(), +b.dataset.d); state.time = null;\n    renderCalendar(); renderRight(); update();\n  });\n  $(\"obRight\").addEventListener(\"click\", function (e) {\n    var b = e.target.closest(\".ob-slot\"); if (!b || b.disabled) return;\n    state.time = b.dataset.t; renderRight(); update();\n  });\n  \/* ===================== STEP 3 : FORM ===================== *\/\n  \/* Phone country codes: [ISO, name, code]. The first ones are shown on top of the list. *\/\n  var CC_TOP = 8;\n  var COUNTRIES = [\n    [\"gb\",\"United Kingdom\",\"44\"],[\"us\",\"United States\",\"1\"],[\"ma\",\"Morocco\",\"212\"],[\"fr\",\"France\",\"33\"],\n    [\"ca\",\"Canada\",\"1\"],[\"de\",\"Germany\",\"49\"],[\"es\",\"Spain\",\"34\"],[\"nl\",\"Netherlands\",\"31\"],\n    [\"dz\",\"Algeria\",\"213\"],[\"ar\",\"Argentina\",\"54\"],[\"au\",\"Australia\",\"61\"],[\"at\",\"Austria\",\"43\"],[\"be\",\"Belgium\",\"32\"],\n    [\"bj\",\"Benin\",\"229\"],[\"br\",\"Brazil\",\"55\"],[\"bf\",\"Burkina Faso\",\"226\"],[\"cm\",\"Cameroon\",\"237\"],[\"cl\",\"Chile\",\"56\"],\n    [\"cn\",\"China\",\"86\"],[\"co\",\"Colombia\",\"57\"],[\"hr\",\"Croatia\",\"385\"],[\"cz\",\"Czechia\",\"420\"],[\"dk\",\"Denmark\",\"45\"],\n    [\"eg\",\"Egypt\",\"20\"],[\"fi\",\"Finland\",\"358\"],[\"pf\",\"French Polynesia\",\"689\"],[\"ga\",\"Gabon\",\"241\"],[\"gr\",\"Greece\",\"30\"],\n    [\"gp\",\"Guadeloupe\",\"590\"],[\"gn\",\"Guinea\",\"224\"],[\"hu\",\"Hungary\",\"36\"],[\"is\",\"Iceland\",\"354\"],[\"in\",\"India\",\"91\"],\n    [\"ie\",\"Ireland\",\"353\"],[\"il\",\"Israel\",\"972\"],[\"it\",\"Italy\",\"39\"],[\"ci\",\"Ivory Coast\",\"225\"],[\"jp\",\"Japan\",\"81\"],\n    [\"jo\",\"Jordan\",\"962\"],[\"lb\",\"Lebanon\",\"961\"],[\"lu\",\"Luxembourg\",\"352\"],[\"mg\",\"Madagascar\",\"261\"],[\"ml\",\"Mali\",\"223\"],\n    [\"mt\",\"Malta\",\"356\"],[\"mq\",\"Martinique\",\"596\"],[\"mr\",\"Mauritania\",\"222\"],[\"mu\",\"Mauritius\",\"230\"],[\"mx\",\"Mexico\",\"52\"],\n    [\"mc\",\"Monaco\",\"377\"],[\"nc\",\"New Caledonia\",\"687\"],[\"nz\",\"New Zealand\",\"64\"],[\"no\",\"Norway\",\"47\"],[\"pl\",\"Poland\",\"48\"],\n    [\"pt\",\"Portugal\",\"351\"],[\"qa\",\"Qatar\",\"974\"],[\"re\",\"R\u00e9union\",\"262\"],[\"ro\",\"Romania\",\"40\"],[\"ru\",\"Russia\",\"7\"],\n    [\"sa\",\"Saudi Arabia\",\"966\"],[\"sn\",\"Senegal\",\"221\"],[\"sg\",\"Singapore\",\"65\"],[\"za\",\"South Africa\",\"27\"],[\"se\",\"Sweden\",\"46\"],\n    [\"ch\",\"Switzerland\",\"41\"],[\"tg\",\"Togo\",\"228\"],[\"tn\",\"Tunisia\",\"216\"],[\"tr\",\"Turkey\",\"90\"],[\"ua\",\"Ukraine\",\"380\"],\n    [\"ae\",\"United Arab Emirates\",\"971\"]\n  ];\n  var cc = COUNTRIES[0];\n  function flag(iso) { return '<img decoding=\"async\" class=\"ob-flag\" src=\"https:\/\/flagcdn.com\/w40\/' + iso + '.png\" alt=\"\" loading=\"lazy\">'; }\n  function norm(s) { return s.toLowerCase().normalize(\"NFD\").replace(\/[\u0300-\u036f]\/g, \"\"); }\n  function setCc(c) {\n    cc = c;\n    $(\"obCc\").innerHTML = flag(c[0]) + \"+\" + c[2] + '<svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M6 9l6 6 6-6\"\/><\/svg>';\n    $(\"obCc\").setAttribute(\"aria-label\", \"Country code: \" + c[1] + \" +\" + c[2]);\n  }\n  function renderCcList(q) {\n    q = norm(q || \"\").replace(\/^\\+\/, \"\");\n    var list = COUNTRIES.filter(function (c) { return !q || norm(c[1]).indexOf(q) > -1 || c[2].indexOf(q) === 0; });\n    $(\"obCcList\").innerHTML = list.map(function (c, i) {\n      return (!q && i === CC_TOP ? '<li class=\"ob-cc-sep\" aria-hidden=\"true\"><\/li>' : \"\") +\n        '<li role=\"option\" data-iso=\"' + c[0] + '\"' + (c === cc ? ' class=\"is-selected\" aria-selected=\"true\"' : \"\") + '>' + flag(c[0]) + '<span>' + c[1] + '<\/span><b>+' + c[2] + '<\/b><\/li>';\n    }).join(\"\") || '<li style=\"cursor:default;color:var(--ob-muted)\">No country found<\/li>';\n  }\n  function toggleCc(open) {\n    $(\"obCcMenu\").classList.toggle(\"is-open\", open);\n    $(\"obCc\").setAttribute(\"aria-expanded\", open);\n    if (open) { $(\"obCcSearch\").value = \"\"; renderCcList(\"\"); $(\"obCcSearch\").focus(); }\n  }\n  $(\"obCc\").addEventListener(\"click\", function () { toggleCc(!$(\"obCcMenu\").classList.contains(\"is-open\")); });\n  $(\"obCcSearch\").addEventListener(\"input\", function () { renderCcList(this.value); });\n  $(\"obCcSearch\").addEventListener(\"keydown\", function (e) {\n    if (e.key === \"Escape\") { toggleCc(false); $(\"obCc\").focus(); }\n    if (e.key === \"Enter\") { e.preventDefault(); var li = $(\"obCcList\").querySelector(\"li[data-iso]\"); if (li) li.click(); }\n  });\n  $(\"obCcList\").addEventListener(\"click\", function (e) {\n    var li = e.target.closest(\"li[data-iso]\"); if (!li) return;\n    setCc(COUNTRIES.filter(function (c) { return c[0] === li.dataset.iso; })[0]);\n    toggleCc(false); $(\"obPhone\").focus();\n  });\n  document.addEventListener(\"click\", function (e) { if (!e.target.closest(\".ob-phone\")) toggleCc(false); });\n  setCc(cc);\n  function phoneDigits() { return $(\"obPhone\").value.replace(\/\\D\/g, \"\").replace(\/^0+\/, \"\"); }\n  function fullPhone() { return \"+\" + cc[2] + \" \" + $(\"obPhone\").value.trim().replace(\/^0+\/, \"\"); }\n\n  var validators = {\n    obName: function (v) { return v.trim().length >= 2; },\n    obPhone: function (v) { var n = phoneDigits().length; return \/^[\\d\\s.()-]+$\/.test(v.trim()) && n >= 6 && n <= 13; }\n  };\n  Object.keys(validators).forEach(function (id) { $(id).addEventListener(\"input\", function () { $(id).closest(\".ob-field\").classList.remove(\"has-error\"); }); });\n  function validateForm() {\n    var ok = true;\n    Object.keys(validators).forEach(function (id) {\n      var valid = validators[id]($(id).value); if (!valid) ok = false;\n      $(id).closest(\".ob-field\").classList.toggle(\"has-error\", !valid);\n    });\n    return ok;\n  }\n  \/* ===================== SUMMARY \/ LINES ===================== *\/\n  function whenLabel() { return state.date ? fmt(state.date) + (state.time ? \" at \" + hour(state.time) : \"\") : \"\"; }\n  function lines() {\n    var L = [[\"Guests\", guestsLabel()]];\n    if (state.needs.length) L.push([\"Extra space\", state.needs.join(\", \")]);\n    L.push([\"Date\", whenLabel()], [\"Occasion\", state.occasion]);\n    L.push([\"Name\", $(\"obName\").value.trim()], [\"WhatsApp\", fullPhone()]);\n    if ($(\"obDiet\").value.trim()) L.push([\"Allergies \/ diet\", $(\"obDiet\").value.trim()]);\n    if ($(\"obMsg\").value.trim()) L.push([\"Message\", $(\"obMsg\").value.trim()]);\n    return L;\n  }\n  function renderRecap() {\n    $(\"obRecap\").innerHTML = lines().map(function (r) { return '<div class=\"ob-recap-row\"><span>' + esc(r[0]) + '<\/span><strong>' + esc(r[1]) + '<\/strong><\/div>'; }).join(\"\");\n  }\n  \/* ===================== FLOW ===================== *\/\n  function canContinue() {\n    if (state.step === 1) return !!state.party;\n    if (state.step === 2) return !!(state.date && state.time);\n    return true;\n  }\n  function setSum(id, val, empty) { var el = $(id); el.textContent = val || empty; el.classList.toggle(\"ob-empty\", !val); }\n  function update() {\n    setSum(\"obSumWho\", guestsLabel() + (state.party && state.needs.length ? \" \u00b7 \" + state.needs.join(\", \").toLowerCase() : \"\"), \"Number of guests\");\n    setSum(\"obSumWhen\", whenLabel(), \"Date and time\");\n    $(\"obNextBtn\").disabled = !canContinue();\n  }\n  function goTo(step) {\n    state.step = step;\n    document.querySelectorAll(\"#ob-booking .ob-panel\").forEach(function (p) { p.classList.toggle(\"is-active\", +p.dataset.step === step); });\n    document.querySelectorAll(\"#obSteps li\").forEach(function (li, i) { li.classList.toggle(\"is-active\", i + 1 === step); li.classList.toggle(\"is-done\", i + 1 < step); });\n    $(\"obBar\").style.width = Math.min(step, 4) * 25 + \"%\";\n    $(\"obStepNum\").textContent = Math.min(step, 4);\n    $(\"obBack\").classList.toggle(\"ob-hidden\", step === 1);\n    $(\"obActions\").style.display = step === 5 ? \"none\" : \"\";\n    $(\"obNextLabel\").textContent = step === 4 ? \"Send on WhatsApp\" : \"Continue\";\n    if (step === 1) renderParty();\n    if (step === 2) { renderCalendar(); renderRight(); }\n    if (step === 4) renderRecap();\n    update();\n    var top = $(\"ob-booking\").getBoundingClientRect().top;\n    if (top < 0) window.scrollBy({ top: top + 20, behavior: \"smooth\" });\n  }\n  \/* The request goes to the restaurant's WhatsApp, pre-filled: the guest only has to tap Send. *\/\n  function submit() {\n    if ($(\"obWebsite\").value) return; \/\/ anti-spam\n    var text = \"Hello O'Bleu Mogador, I would like to book a table:\\n\\n\" + lines().map(function (r) { return \"\u2022 \" + r[0] + \": \" + r[1].replace(\/\\n\/g, \", \"); }).join(\"\\n\");\n    var url = \"https:\/\/wa.me\/\" + CONFIG.whatsapp + \"?text=\" + encodeURIComponent(text);\n    $(\"obWa\").href = url;\n    window.open(url, \"_blank\", \"noopener\");\n    $(\"obSuccessTitle\").textContent = \"Thank you \" + $(\"obName\").value.trim().split(\" \")[0] + \"!\";\n    $(\"obSuccessText\").textContent = \"Your request for \" + guestsLabel() + \", \" + whenLabel() + \", is ready in WhatsApp: tap Send to pass it on to us. We will confirm your table on WhatsApp very soon.\";\n    goTo(5);\n  }\n  $(\"obNextBtn\").addEventListener(\"click\", function () {\n    if (state.step === 3 && !validateForm()) return;\n    if (state.step === 4) return submit();\n    goTo(state.step + 1);\n  });\n  $(\"obBack\").addEventListener(\"click\", function () { if (state.step > 1) goTo(state.step - 1); });\n  $(\"obRestart\").addEventListener(\"click\", function () {\n    resetState(); $(\"obForm\").reset(); setCc(COUNTRIES[0]);\n    document.querySelectorAll(\"#obOccasions .ob-chip\").forEach(function (x) { x.classList.toggle(\"is-selected\", x.dataset.o === state.occasion); });\n    goTo(1);\n  });\n  goTo(1);\n})();\n<\/script>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"ob-is-breaking-bad elementor-section elementor-top-section elementor-element elementor-element-cf27505 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"cf27505\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;,&quot;_ob_bbad_use_it&quot;:&quot;yes&quot;,&quot;_ob_bbad_sssic_use&quot;:&quot;no&quot;,&quot;_ob_glider_is_slider&quot;:&quot;no&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-no\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-1f12e2d\" data-id=\"1f12e2d\" data-element_type=\"column\" data-e-type=\"column\" data-settings=\"{&quot;_ob_bbad_is_stalker&quot;:&quot;no&quot;,&quot;_ob_teleporter_use&quot;:false,&quot;_ob_column_hoveranimator&quot;:&quot;no&quot;,&quot;_ob_column_has_pseudo&quot;:&quot;no&quot;}\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-231df4e ob-harakiri-inherit ob-has-background-overlay elementor-widget elementor-widget-heading\" data-id=\"231df4e\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_ob_use_harakiri&quot;:&quot;yes&quot;,&quot;_ob_harakiri_writing_mode&quot;:&quot;inherit&quot;,&quot;_ob_harakiri_text_clip&quot;:&quot;none&quot;,&quot;_ob_perspektive_use&quot;:&quot;no&quot;,&quot;_ob_poopart_use&quot;:&quot;yes&quot;,&quot;_ob_shadough_use&quot;:&quot;no&quot;,&quot;_ob_allow_hoveranimator&quot;:&quot;no&quot;,&quot;_ob_widget_stalker_use&quot;:&quot;no&quot;}\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">+212 524 783 133<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-93a763e ob-has-background-overlay elementor-widget elementor-widget-icon-box\" data-id=\"93a763e\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_ob_perspektive_use&quot;:&quot;no&quot;,&quot;_ob_poopart_use&quot;:&quot;yes&quot;,&quot;_ob_shadough_use&quot;:&quot;no&quot;,&quot;_ob_allow_hoveranimator&quot;:&quot;no&quot;,&quot;_ob_widget_stalker_use&quot;:&quot;no&quot;}\" data-widget_type=\"icon-box.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-icon-box-wrapper\">\n\n\t\t\t\n\t\t\t\t\t\t<div class=\"elementor-icon-box-content\">\n\n\t\t\t\t\t\t\t\t\t<h4 class=\"elementor-icon-box-title\">\n\t\t\t\t\t\t<span  >\n\t\t\t\t\t\t\tAddress\t\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/h4>\n\t\t\t\t\n\t\t\t\t\t\t\t\t\t<p class=\"elementor-icon-box-description\">\n\t\t\t\t\t\t23 rues bouchentouf Essaouira (Medina)\n\t\t\t\t\t<\/p>\n\t\t\t\t\n\t\t\t<\/div>\n\t\t\t\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-e5b1e3e ob-has-background-overlay elementor-widget elementor-widget-icon-box\" data-id=\"e5b1e3e\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_ob_perspektive_use&quot;:&quot;no&quot;,&quot;_ob_poopart_use&quot;:&quot;yes&quot;,&quot;_ob_shadough_use&quot;:&quot;no&quot;,&quot;_ob_allow_hoveranimator&quot;:&quot;no&quot;,&quot;_ob_widget_stalker_use&quot;:&quot;no&quot;}\" data-widget_type=\"icon-box.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-icon-box-wrapper\">\n\n\t\t\t\n\t\t\t\t\t\t<div class=\"elementor-icon-box-content\">\n\n\t\t\t\t\t\t\t\t\t<h4 class=\"elementor-icon-box-title\">\n\t\t\t\t\t\t<span  >\n\t\t\t\t\t\t\tE-mail\t\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/h4>\n\t\t\t\t\n\t\t\t\t\t\t\t\t\t<p class=\"elementor-icon-box-description\">\n\t\t\t\t\t\tcontact@obleu-mogador.com\t\t\t\t\t<\/p>\n\t\t\t\t\n\t\t\t<\/div>\n\t\t\t\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"ob-is-breaking-bad ob-bb-inner elementor-section elementor-inner-section elementor-element elementor-element-66d211d elementor-section-content-middle elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"66d211d\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;_ob_bbad_use_it&quot;:&quot;yes&quot;,&quot;_ob_bbad_sssic_use&quot;:&quot;no&quot;,&quot;_ob_glider_is_slider&quot;:&quot;no&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-no\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-877d46d\" data-id=\"877d46d\" data-element_type=\"column\" data-e-type=\"column\" data-settings=\"{&quot;_ob_bbad_is_stalker&quot;:&quot;no&quot;,&quot;_ob_teleporter_use&quot;:false,&quot;_ob_column_hoveranimator&quot;:&quot;no&quot;,&quot;_ob_column_has_pseudo&quot;:&quot;no&quot;}\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-32bbf4c ob-has-background-overlay elementor-widget elementor-widget-icon-box\" data-id=\"32bbf4c\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_ob_perspektive_use&quot;:&quot;no&quot;,&quot;_ob_poopart_use&quot;:&quot;yes&quot;,&quot;_ob_shadough_use&quot;:&quot;no&quot;,&quot;_ob_allow_hoveranimator&quot;:&quot;no&quot;,&quot;_ob_widget_stalker_use&quot;:&quot;no&quot;}\" data-widget_type=\"icon-box.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-icon-box-wrapper\">\n\n\t\t\t\n\t\t\t\t\t\t<div class=\"elementor-icon-box-content\">\n\n\t\t\t\t\t\t\t\t\t<h4 class=\"elementor-icon-box-title\">\n\t\t\t\t\t\t<span  >\n\t\t\t\t\t\t\tGPS coordinates\t\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/h4>\n\t\t\t\t\n\t\t\t\t\t\t\t\t\t<p class=\"elementor-icon-box-description\">\n\t\t\t\t\t\t31 513409 N  -9 766548  O\n\t\t\t\t\t<\/p>\n\t\t\t\t\n\t\t\t<\/div>\n\t\t\t\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d840bf3 ob-has-background-overlay elementor-widget elementor-widget-google_maps\" data-id=\"d840bf3\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_ob_perspektive_use&quot;:&quot;no&quot;,&quot;_ob_poopart_use&quot;:&quot;yes&quot;,&quot;_ob_shadough_use&quot;:&quot;no&quot;,&quot;_ob_allow_hoveranimator&quot;:&quot;no&quot;,&quot;_ob_widget_stalker_use&quot;:&quot;no&quot;}\" data-widget_type=\"google_maps.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-custom-embed\">\n\t\t\t<iframe loading=\"lazy\"\n\t\t\t\t\tsrc=\"https:\/\/maps.google.com\/maps?q=O%27Bleu%20Mogador%2C%20G67M%2B9C%20Essaouira&#038;t=m&#038;z=18&#038;output=embed&#038;iwloc=near\"\n\t\t\t\t\ttitle=\"O&#039;Bleu Mogador, G67M+9C Essaouira\"\n\t\t\t\t\taria-label=\"O&#039;Bleu Mogador, G67M+9C Essaouira\"\n\t\t\t><\/iframe>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Reservation O&rsquo;Bleu Mogador Restaurant \u00b7 Essaouira Book your table An intimate table in a riad of the medina, with the Proven\u00e7al and Essaouira cuisine of chef Serge Peuzin, Ma\u00eetre Cuisinier de France. Step 1\/4 Your booking Number of guests Date and time Seasonal menu: you will choose at the table Dinner Monday to Saturday7 pm [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"site-sidebar-layout":"no-sidebar","site-content-layout":"page-builder","ast-site-content-layout":"full-width-container","site-content-style":"unboxed","site-sidebar-style":"unboxed","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"disabled","ast-breadcrumbs-content":"","ast-featured-img":"disabled","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"enabled","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-2217","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Book a Table in Essaouira | O\u2019Bleu Mogador Restaurant<\/title>\n<meta name=\"description\" content=\"Book a table in Essaouira at O\u2019Bleu Mogador: dinner Monday to Saturday, 7-10 pm, 23 rue Bouchentouf in the medina. Confirmed on WhatsApp.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/obleu-mogador.com\/?page_id=2217&lang=en\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Book a Table in Essaouira | O\u2019Bleu Mogador Restaurant\" \/>\n<meta property=\"og:description\" content=\"Book a table in Essaouira at O\u2019Bleu Mogador: dinner Monday to Saturday, 7-10 pm, 23 rue Bouchentouf in the medina. Confirmed on WhatsApp.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/obleu-mogador.com\/?page_id=2217&amp;lang=en\" \/>\n<meta property=\"og:site_name\" content=\"Restaurant O&#039;bleu Mogador\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-22T20:49:18+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data1\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/obleu-mogador.com\\\/?page_id=2217&lang=en\",\"url\":\"https:\\\/\\\/obleu-mogador.com\\\/?page_id=2217&lang=en\",\"name\":\"Book a Table in Essaouira | O\u2019Bleu Mogador Restaurant\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/obleu-mogador.com\\\/#website\"},\"datePublished\":\"2022-09-02T09:53:40+00:00\",\"dateModified\":\"2026-10-22T20:49:18+00:00\",\"description\":\"Book a table in Essaouira at O\u2019Bleu Mogador: dinner Monday to Saturday, 7-10 pm, 23 rue Bouchentouf in the medina. Confirmed on WhatsApp.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/obleu-mogador.com\\\/?page_id=2217&lang=en#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/obleu-mogador.com\\\/?page_id=2217&lang=en\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/obleu-mogador.com\\\/?page_id=2217&lang=en#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/obleu-mogador.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Contact\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/obleu-mogador.com\\\/#website\",\"url\":\"https:\\\/\\\/obleu-mogador.com\\\/\",\"name\":\"Restaurant O&#039;bleu Mogador\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/obleu-mogador.com\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/obleu-mogador.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/obleu-mogador.com\\\/#organization\",\"name\":\"Restaurant O&#039;bleu Mogador\",\"url\":\"https:\\\/\\\/obleu-mogador.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/obleu-mogador.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/obleu-mogador.com\\\/wp-content\\\/uploads\\\/2022\\\/07\\\/cropped-logo-png.png\",\"contentUrl\":\"https:\\\/\\\/obleu-mogador.com\\\/wp-content\\\/uploads\\\/2022\\\/07\\\/cropped-logo-png.png\",\"width\":1000,\"height\":1000,\"caption\":\"Restaurant O&#039;bleu Mogador\"},\"image\":{\"@id\":\"https:\\\/\\\/obleu-mogador.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Book a Table in Essaouira | O\u2019Bleu Mogador Restaurant","description":"Book a table in Essaouira at O\u2019Bleu Mogador: dinner Monday to Saturday, 7-10 pm, 23 rue Bouchentouf in the medina. Confirmed on WhatsApp.","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:\/\/obleu-mogador.com\/?page_id=2217&lang=en","og_locale":"fr_FR","og_type":"article","og_title":"Book a Table in Essaouira | O\u2019Bleu Mogador Restaurant","og_description":"Book a table in Essaouira at O\u2019Bleu Mogador: dinner Monday to Saturday, 7-10 pm, 23 rue Bouchentouf in the medina. Confirmed on WhatsApp.","og_url":"https:\/\/obleu-mogador.com\/?page_id=2217&lang=en","og_site_name":"Restaurant O&#039;bleu Mogador","article_modified_time":"2026-10-22T20:49:18+00:00","twitter_card":"summary_large_image","twitter_misc":{"Dur\u00e9e de lecture estim\u00e9e":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/obleu-mogador.com\/?page_id=2217&lang=en","url":"https:\/\/obleu-mogador.com\/?page_id=2217&lang=en","name":"Book a Table in Essaouira | O\u2019Bleu Mogador Restaurant","isPartOf":{"@id":"https:\/\/obleu-mogador.com\/#website"},"datePublished":"2022-09-02T09:53:40+00:00","dateModified":"2026-10-22T20:49:18+00:00","description":"Book a table in Essaouira at O\u2019Bleu Mogador: dinner Monday to Saturday, 7-10 pm, 23 rue Bouchentouf in the medina. Confirmed on WhatsApp.","breadcrumb":{"@id":"https:\/\/obleu-mogador.com\/?page_id=2217&lang=en#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/obleu-mogador.com\/?page_id=2217&lang=en"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/obleu-mogador.com\/?page_id=2217&lang=en#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/obleu-mogador.com\/"},{"@type":"ListItem","position":2,"name":"Contact"}]},{"@type":"WebSite","@id":"https:\/\/obleu-mogador.com\/#website","url":"https:\/\/obleu-mogador.com\/","name":"Restaurant O&#039;bleu Mogador","description":"","publisher":{"@id":"https:\/\/obleu-mogador.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/obleu-mogador.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/obleu-mogador.com\/#organization","name":"Restaurant O&#039;bleu Mogador","url":"https:\/\/obleu-mogador.com\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/obleu-mogador.com\/#\/schema\/logo\/image\/","url":"https:\/\/obleu-mogador.com\/wp-content\/uploads\/2022\/07\/cropped-logo-png.png","contentUrl":"https:\/\/obleu-mogador.com\/wp-content\/uploads\/2022\/07\/cropped-logo-png.png","width":1000,"height":1000,"caption":"Restaurant O&#039;bleu Mogador"},"image":{"@id":"https:\/\/obleu-mogador.com\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/obleu-mogador.com\/index.php?rest_route=\/wp\/v2\/pages\/2217","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/obleu-mogador.com\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/obleu-mogador.com\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/obleu-mogador.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/obleu-mogador.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2217"}],"version-history":[{"count":17,"href":"https:\/\/obleu-mogador.com\/index.php?rest_route=\/wp\/v2\/pages\/2217\/revisions"}],"predecessor-version":[{"id":2543,"href":"https:\/\/obleu-mogador.com\/index.php?rest_route=\/wp\/v2\/pages\/2217\/revisions\/2543"}],"wp:attachment":[{"href":"https:\/\/obleu-mogador.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2217"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}