{"id":2269,"date":"2026-10-10T21:01:43","date_gmt":"2026-10-10T21:01:43","guid":{"rendered":"https:\/\/thatismorocco.com\/?page_id=2269"},"modified":"2026-10-11T18:39:22","modified_gmt":"2026-10-11T18:39:22","slug":"explore","status":"publish","type":"page","link":"https:\/\/thatismorocco.com\/fr\/explore\/","title":{"rendered":"D\u00e9couvrez"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"2269\" class=\"elementor elementor-2269\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-4cd056f elementor-section-content-middle ct-section-stretched elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"4cd056f\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-no\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-f8c6691\" data-id=\"f8c6691\" data-element_type=\"column\" data-e-type=\"column\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-4186693 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"4186693\" data-element_type=\"section\" data-e-type=\"section\">\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-375230c\" data-id=\"375230c\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-1a45797 rahyb-blur-heading elementor-widget elementor-widget-heading\" data-id=\"1a45797\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">\u0627\u0643\u062a\u0634\u0641 \u0627\u0644\u0645\u063a\u0631\u0628\n<br>\n \u0639\u0644\u0649 \u0637\u0631\u064a\u0642\u062a\u0643!<\/h2>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-87d0707 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"87d0707\" data-element_type=\"section\" data-e-type=\"section\">\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-c293c88\" data-id=\"c293c88\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-7d22e96 animated-slow rahyb-blur-heading elementor-invisible elementor-widget elementor-widget-heading\" data-id=\"7d22e96\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeInUp&quot;}\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<span class=\"elementor-heading-title elementor-size-default\">\u0645\u0646 \u0627\u0644\u0645\u062f\u0646 \u0627\u0644\u0639\u062a\u064a\u0642\u0629 \u0625\u0644\u0649 \u0627\u0644\u062a\u062c\u0627\u0631\u0628 \u0627\u0644\u0645\u062d\u0644\u064a\u0629 \u0648\u0627\u0644\u0623\u0645\u0627\u0643\u0646 \u0627\u0644\u0645\u0645\u064a\u0632\u0629\u061b \u062e\u0631\u064a\u0637\u0629 \u0648\u0627\u062d\u062f\u0629 \u062a\u0633\u0627\u0639\u062f\u0643 \u0639\u0644\u0649 \u0627\u0644\u0639\u062b\u0648\u0631 \u0639\u0644\u0649 \u0648\u062c\u0647\u062a\u0643 \u0627\u0644\u062a\u0627\u0644\u064a\u0629.\n\n<\/span>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-6b6003d elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"6b6003d\" data-element_type=\"section\" data-e-type=\"section\">\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-36db229\" data-id=\"36db229\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-af39114 elementor-widget elementor-widget-shortcode\" data-id=\"af39114\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">    <section id=\"tim-explore-1\" class=\"timExplore\" dir=\"rtl\" data-config=\"{&quot;placeIcons&quot;:{&quot;\u0641\u0646\u062f\u0642&quot;:&quot;https:\/\/thatismorocco.com\/wp-content\/uploads\/2026\/10\/bed-single-01-stroke-rounded.svg&quot;,&quot;\u0631\u064a\u0627\u0636 \/ \u062f\u0627\u0631 \u0636\u064a\u0627\u0641\u0629&quot;:&quot;https:\/\/thatismorocco.com\/wp-content\/uploads\/2026\/10\/guest-house-stroke-rounded.svg&quot;,&quot;\u0645\u0637\u0639\u0645&quot;:&quot;https:\/\/thatismorocco.com\/wp-content\/uploads\/2026\/10\/restaurant-01-stroke-rounded.svg&quot;,&quot;\u0645\u0642\u0647\u0649&quot;:&quot;https:\/\/thatismorocco.com\/wp-content\/uploads\/2026\/10\/coffee-02-stroke-rounded.svg&quot;,&quot;\u0645\u0646\u062a\u062c\u0639&quot;:&quot;https:\/\/thatismorocco.com\/wp-content\/uploads\/2026\/10\/flower-01-stroke-rounded.svg&quot;,&quot;default&quot;:&quot;https:\/\/thatismorocco.com\/wp-content\/uploads\/2026\/10\/location-03-stroke-rounded-1.svg&quot;},&quot;ajax&quot;:&quot;https:\/\/thatismorocco.com\/wp-admin\/admin-ajax.php&quot;,&quot;tile&quot;:&quot;https:\/\/tile.openstreetmap.org\/{z}\/{x}\/{y}.png&quot;,&quot;attribution&quot;:&quot;&copy; &lt;a href=\\&quot;https:\/\/www.openstreetmap.org\/copyright\\&quot; target=\\&quot;_blank\\&quot; rel=\\&quot;noopener\\&quot;&gt;OpenStreetMap contributors&lt;\/a&gt;&quot;,&quot;retinaMode&quot;:&quot;detect&quot;,&quot;types&quot;:{&quot;cities&quot;:&quot;\u0627\u0644\u0645\u062f\u0646&quot;,&quot;places&quot;:&quot;\u0627\u0644\u0623\u0645\u0627\u0643\u0646&quot;,&quot;trips&quot;:&quot;\u0627\u0644\u0631\u062d\u0644\u0627\u062a&quot;,&quot;events&quot;:&quot;\u0627\u0644\u0641\u0639\u0627\u0644\u064a\u0627\u062a&quot;},&quot;geocodeAdmin&quot;:false,&quot;reviewAdmin&quot;:false,&quot;reviewCityAdmin&quot;:false,&quot;cityReviewNonce&quot;:&quot;&quot;,&quot;cityReviewIcon&quot;:&quot;https:\/\/thatismorocco.com\/wp-content\/uploads\/2026\/10\/building-stroke-rounded.svg&quot;,&quot;reviewNonce&quot;:&quot;&quot;,&quot;geocodeNonce&quot;:&quot;&quot;,&quot;leafletJs&quot;:&quot;https:\/\/cdn.jsdelivr.net\/npm\/leaflet@1.9.4\/dist\/leaflet.js&quot;,&quot;leafletCss&quot;:&quot;https:\/\/cdn.jsdelivr.net\/npm\/leaflet@1.9.4\/dist\/leaflet.css&quot;,&quot;vectorEnabled&quot;:true,&quot;vectorPmtilesUrl&quot;:&quot;&quot;,&quot;vectorLightStyle&quot;:&quot;https:\/\/tiles.openfreemap.org\/styles\/positron&quot;,&quot;vectorDarkStyle&quot;:&quot;https:\/\/tiles.openfreemap.org\/styles\/dark&quot;,&quot;maplibreJs&quot;:&quot;https:\/\/cdn.jsdelivr.net\/npm\/maplibre-gl@5.6.1\/dist\/maplibre-gl.js&quot;,&quot;maplibreRtlJs&quot;:&quot;https:\/\/unpkg.com\/@mapbox\/mapbox-gl-rtl-text@0.2.3\/mapbox-gl-rtl-text.js&quot;,&quot;maplibreCss&quot;:&quot;https:\/\/cdn.jsdelivr.net\/npm\/maplibre-gl@5.6.1\/dist\/maplibre-gl.css&quot;,&quot;leafletMaplibreJs&quot;:&quot;https:\/\/cdn.jsdelivr.net\/npm\/@maplibre\/maplibre-gl-leaflet@0.1.4\/leaflet-maplibre-gl.js&quot;,&quot;pmtilesJs&quot;:&quot;https:\/\/cdn.jsdelivr.net\/npm\/pmtiles@4.2.1\/dist\/pmtiles.js&quot;,&quot;protomapsBasemapsJs&quot;:&quot;https:\/\/cdn.jsdelivr.net\/npm\/@protomaps\/basemaps@5.7.2\/dist\/basemaps.js&quot;}\" aria-label=\"\u0627\u0633\u062a\u0643\u0634\u0641 \u0627\u0644\u0645\u063a\u0631\u0628\">\r\n      <div class=\"timExplore-controls\" role=\"search\">\r\n        <div class=\"timExplore-search\" data-search-box>\r\n          <div class=\"timExplore-searchActions\">\r\n            <span class=\"timExplore-searchGlyph\" aria-hidden=\"true\"><i class=\"timExplore-icon timExplore-iSearch\"><\/i><\/span>\r\n          <\/div>\r\n          <input type=\"search\" data-search placeholder=\"\u0627\u0628\u062d\u062b \u0639\u0646 \u0645\u062f\u064a\u0646\u0629 \u0623\u0648 \u0645\u0643\u0627\u0646 \u0623\u0648 \u0631\u062d\u0644\u0629\u2026\" aria-label=\"\u0627\u0628\u062d\u062b \u0641\u064a \u0627\u0644\u0645\u063a\u0631\u0628\" autocomplete=\"off\" aria-autocomplete=\"list\" aria-expanded=\"false\" aria-controls=\"tim-explore-1-search-suggestions\">\r\n          <div class=\"timExplore-cityControl\">\r\n              <button type=\"button\" class=\"timExplore-cityToggle\" data-area-toggle aria-haspopup=\"listbox\" aria-expanded=\"false\" aria-controls=\"tim-explore-1-city-menu\" aria-label=\"\u0627\u062e\u062a\u064a\u0627\u0631 \u0645\u062f\u064a\u0646\u0629\" title=\"\u0627\u062e\u062a\u064a\u0627\u0631 \u0645\u062f\u064a\u0646\u0629\"><i class=\"timExplore-icon timExplore-iStay\" aria-hidden=\"true\"><\/i><span class=\"timExplore-srOnly\">\u0627\u062e\u062a\u064a\u0627\u0631 \u0645\u062f\u064a\u0646\u0629<\/span><\/button>\r\n              <select data-area hidden tabindex=\"-1\" aria-hidden=\"true\"><option value=\"\">\u0643\u0644 \u0627\u0644\u0645\u062f\u0646 \u0648\u0627\u0644\u0645\u0646\u0627\u0637\u0642<\/option><\/select>\r\n              <div class=\"timExplore-cityMenu\" id=\"tim-explore-1-city-menu\" data-area-menu hidden><div class=\"timExplore-cityOptions\" data-area-options role=\"listbox\" aria-label=\"\u0627\u062e\u062a\u064a\u0627\u0631 \u0627\u0644\u0645\u062f\u064a\u0646\u0629\"><\/div><div class=\"timExplore-cityScrollRail\" data-area-scroll-rail aria-hidden=\"true\" hidden><span class=\"timExplore-cityScrollThumb\" data-area-scroll-thumb><\/span><\/div><\/div>\r\n            <\/div>\r\n          <div class=\"timExplore-liveSuggestions\" id=\"tim-explore-1-search-suggestions\" data-live-suggestions hidden aria-live=\"polite\" aria-label=\"\u0627\u0642\u062a\u0631\u0627\u062d\u0627\u062a \u0627\u0644\u0628\u062d\u062b\"><\/div>\r\n        <\/div>\r\n        <button class=\"timExplore-near\" type=\"button\" data-near title=\"\u0627\u062e\u062a\u0631 \u0623\u0642\u0631\u0628 \u0645\u062f\u064a\u0646\u0629 \u0627\u0639\u062a\u0645\u0627\u062f\u064b\u0627 \u0639\u0644\u0649 \u0645\u0648\u0642\u0639\u0643\" aria-label=\"\u0627\u0644\u0623\u0642\u0631\u0628 \u0625\u0644\u064a\u0651\"><i class=\"timExplore-icon timExplore-iNear\" aria-hidden=\"true\"><\/i><span class=\"timExplore-srOnly\">\u0627\u0644\u0623\u0642\u0631\u0628 \u0625\u0644\u064a\u0651<\/span><\/button>\r\n      <\/div>\r\n      <div class=\"timExplore-types\" role=\"group\" aria-label=\"\u0646\u0648\u0639 \u0627\u0644\u0645\u062d\u062a\u0648\u0649\">\r\n        <button type=\"button\" data-type=\"cities\" class=\"is-active\" aria-pressed=\"true\">\u0627\u0644\u0645\u062f\u0646<\/button><button type=\"button\" data-type=\"places\" class=\"\" aria-pressed=\"false\">\u0627\u0644\u0623\u0645\u0627\u0643\u0646<\/button><button type=\"button\" data-type=\"trips\" class=\"\" aria-pressed=\"false\">\u0627\u0644\u0631\u062d\u0644\u0627\u062a<\/button><button type=\"button\" data-type=\"events\" class=\"\" aria-pressed=\"false\">\u0627\u0644\u0641\u0639\u0627\u0644\u064a\u0627\u062a<\/button>      <\/div>\r\n      <div class=\"timExplore-layout\">\r\n        <div class=\"timExplore-results\">\r\n          <div class=\"timExplore-resultsHead\"><div><h2 data-heading>\u0648\u062c\u0647\u0627\u062a \u062a\u0633\u062a\u062d\u0642 \u0627\u0644\u0627\u0643\u062a\u0634\u0627\u0641<\/h2><p data-summary class=\"timExplore-srOnly\" role=\"status\" aria-live=\"polite\">\u062c\u0627\u0631\u064d \u062a\u062d\u0645\u064a\u0644 \u0627\u0644\u0648\u062c\u0647\u0627\u062a\u2026<\/p><\/div><button type=\"button\" data-reset class=\"timExplore-reset\" hidden>\u0625\u0639\u0627\u062f\u0629 \u0636\u0628\u0637<\/button><\/div>\r\n          <div class=\"timExplore-list\" data-results aria-live=\"polite\"><div class=\"timExplore-loading\">\u062c\u0627\u0631\u064d \u062a\u062d\u0645\u064a\u0644 \u0627\u0644\u0645\u062d\u062a\u0648\u0649\u2026<\/div><\/div>\r\n          <div class=\"timExplore-more\"><button data-more type=\"button\" hidden>\u0639\u0631\u0636 \u0627\u0644\u0645\u0632\u064a\u062f<\/button><\/div>\r\n        <\/div>\r\n        <div class=\"timExplore-mapWrap\">\r\n          <div class=\"timExplore-map\" data-map aria-label=\"\u062e\u0631\u064a\u0637\u0629 \u062a\u0641\u0627\u0639\u0644\u064a\u0629 \u0644\u0644\u0645\u062f\u0646 \u0648\u0627\u0644\u0645\u0646\u0627\u0637\u0642 \u0627\u0644\u0645\u063a\u0631\u0628\u064a\u0629\">\r\n            <div class=\"timExplore-mapPlaceholder\" data-map-status><div class=\"timExplore-mapBadge\">\u0627\u0644\u0645\u063a\u0631\u0628 <span>\u2726<\/span><\/div><p>\u062c\u0627\u0631\u064a \u062a\u062c\u0647\u064a\u0632 \u0627\u0644\u062e\u0631\u064a\u0637\u0629\u2026<\/p><\/div>\r\n            <div class=\"timExplore-mapTools\" data-map-tools hidden aria-label=\"\u0623\u062f\u0648\u0627\u062a \u0627\u0644\u062e\u0631\u064a\u0637\u0629\">\r\n              <button type=\"button\" class=\"timExplore-mapExpand\" data-map-expand aria-label=\"\u062a\u0648\u0633\u064a\u0639 \u0627\u0644\u062e\u0631\u064a\u0637\u0629 \u062f\u0627\u062e\u0644 \u0627\u0644\u0635\u0641\u062d\u0629\" title=\"\u062a\u0648\u0633\u064a\u0639 \u0627\u0644\u062e\u0631\u064a\u0637\u0629 \u062f\u0627\u062e\u0644 \u0627\u0644\u0635\u0641\u062d\u0629\" aria-pressed=\"false\">\r\n                <svg class=\"timExplore-icoExpand\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M8 3H3v5M3 3l7 7M16 3h5v5M21 3l-7 7M3 16v5h5M3 21l7-7M21 16v5h-5M21 21l-7-7\"\/><\/svg>\r\n                <svg class=\"timExplore-icoCollapse\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M3 10h7V3M10 10 3 3M21 10h-7V3M14 10l7-7M3 14h7v7M10 14l-7 7M21 14h-7v7M14 14l7 7\"\/><\/svg>\r\n              <\/button>\r\n              <div class=\"timExplore-mapZoom\" role=\"group\" aria-label=\"\u062a\u0643\u0628\u064a\u0631 \u0648\u062a\u0635\u063a\u064a\u0631 \u0627\u0644\u062e\u0631\u064a\u0637\u0629\">\r\n                <button type=\"button\" data-map-zoomin aria-label=\"\u062a\u0643\u0628\u064a\u0631 \u0627\u0644\u062e\u0631\u064a\u0637\u0629\" title=\"\u062a\u0643\u0628\u064a\u0631 \u0627\u0644\u062e\u0631\u064a\u0637\u0629\">+<\/button>\r\n                <button type=\"button\" data-map-zoomout aria-label=\"\u062a\u0635\u063a\u064a\u0631 \u0627\u0644\u062e\u0631\u064a\u0637\u0629\" title=\"\u062a\u0635\u063a\u064a\u0631 \u0627\u0644\u062e\u0631\u064a\u0637\u0629\">\u2212<\/button>\r\n              <\/div>\r\n            <\/div>\r\n          <\/div>\r\n          <div class=\"timExplore-mapFoot\"><span data-map-foot><i><\/i> \u0641\u064a \u0642\u0633\u0645 \u0627\u0644\u0623\u0645\u0627\u0643\u0646 \u062a\u0638\u0647\u0631 \u0627\u0644\u0639\u0644\u0627\u0645\u0627\u062a \u0630\u0627\u062a \u0627\u0644\u0625\u062d\u062f\u0627\u062b\u064a\u0627\u062a \u0627\u0644\u0645\u0624\u0643\u062f\u0629 \u0641\u0642\u0637.<\/span><button type=\"button\" data-review-open hidden>\u0645\u0631\u0627\u062c\u0639\u0629 \u0645\u0648\u0627\u0642\u0639 \u0627\u0644\u0623\u0645\u0627\u0643\u0646<\/button><button type=\"button\" data-city-review-open hidden>\u0645\u0631\u0627\u062c\u0639\u0629 \u0645\u0648\u0627\u0642\u0639 \u0627\u0644\u0645\u062f\u0646<\/button><button type=\"button\" data-locate-admin hidden title=\"\u0625\u0639\u0627\u062f\u0629 \u0641\u062d\u0635 \u0627\u0644\u0623\u0645\u0627\u0643\u0646 \u062f\u0648\u0646 \u0625\u062d\u062f\u0627\u062b\u064a\u0627\u062a \u0628\u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u0627\u0644\u0628\u062d\u062b \u0639\u0646 \u0627\u0644\u0645\u0646\u0634\u0622\u062a\">\u0627\u0633\u062a\u0643\u0645\u0627\u0644 \u0645\u0648\u0627\u0642\u0639 \u0627\u0644\u0623\u0645\u0627\u0643\u0646<\/button><button type=\"button\" data-fit title=\"\u0639\u0631\u0636 \u0627\u0644\u0645\u063a\u0631\u0628 \u0643\u0627\u0645\u0644\u064b\u0627\">\u0639\u0631\u0636 \u0627\u0644\u0645\u063a\u0631\u0628<\/button><\/div>\r\n          <div class=\"timExplore-reviewPanel\" data-review-panel hidden dir=\"rtl\">\r\n            <div class=\"timExplore-reviewHead\"><strong data-review-heading>\u062a\u062d\u062f\u064a\u062f \u0645\u0648\u0642\u0639 \u0645\u0643\u0627\u0646 \u063a\u064a\u0631 \u0638\u0627\u0647\u0631<\/strong><button type=\"button\" data-review-close aria-label=\"\u0625\u063a\u0644\u0627\u0642\">\u00d7<\/button><\/div>\r\n            <p data-review-help>\u0627\u062e\u062a\u0631 \u0627\u0644\u0645\u0643\u0627\u0646\u060c \u062b\u0645 \u0623\u0644\u0635\u0642 \u0631\u0627\u0628\u0637 Google Maps \u0623\u0648 \u0625\u062d\u062f\u0627\u062b\u064a\u0627\u062a \u0627\u0644\u062f\u0628\u0648\u0633 \u0645\u0628\u0627\u0634\u0631\u0629\u064b. \u064a\u0645\u0643\u0646 \u0627\u062e\u062a\u064a\u0627\u0631 \u0645\u0648\u0642\u0639 \u0645\u0642\u062a\u0631\u062d \u0642\u0628\u0644 \u0627\u0644\u062d\u0641\u0638.<\/p>\r\n            <div class=\"timExplore-reviewFields\"><select data-review-select aria-label=\"\u0627\u062e\u062a\u0631 \u0645\u0643\u0627\u0646\u064b\u0627 \u063a\u064a\u0631 \u0645\u062d\u062f\u062f\"><option value=\"\">\u062c\u0627\u0631\u064d \u062a\u062d\u0645\u064a\u0644 \u0627\u0644\u0623\u0645\u0627\u0643\u0646\u2026<\/option><\/select><a data-review-google href=\"#\" target=\"_blank\" rel=\"noopener noreferrer\" hidden>Google Maps<\/a><\/div>\r\n            <div class=\"timExplore-reviewUrlRow\"><label for=\"tim-explore-1-googleLink\">\u0631\u0627\u0628\u0637 Google Maps \u0623\u0648 \u0625\u062d\u062f\u0627\u062b\u064a\u0627\u062a \u0627\u0644\u062f\u0628\u0648\u0633<\/label><div class=\"timExplore-reviewUrlControls\"><input id=\"tim-explore-1-googleLink\" type=\"text\" inputmode=\"text\" data-review-url placeholder=\"Google Maps \u0623\u0648 33.5731, -7.5898\" autocomplete=\"off\" aria-label=\"\u0631\u0627\u0628\u0637 Google Maps \u0623\u0648 \u0625\u062d\u062f\u0627\u062b\u064a\u0627\u062a \u0627\u0644\u0645\u0643\u0627\u0646\" dir=\"ltr\"><button type=\"button\" data-review-resolve disabled>\u062a\u062d\u062f\u064a\u062f \u0639\u0644\u0649 \u0627\u0644\u062e\u0631\u064a\u0637\u0629<\/button><\/div><select data-review-candidates hidden aria-label=\"\u0627\u0644\u0645\u0648\u0627\u0642\u0639 \u0627\u0644\u0645\u062d\u062a\u0645\u0644\u0629 \u0627\u0644\u0645\u0637\u0627\u0628\u0642\u0629\"><option value=\"\">\u0627\u062e\u062a\u0631 \u0627\u0644\u0645\u0648\u0642\u0639 \u0627\u0644\u0645\u0637\u0627\u0628\u0642 \u0628\u0639\u062f \u0645\u0631\u0627\u062c\u0639\u062a\u0647\u2026<\/option><\/select><\/div>\r\n            <div class=\"timExplore-reviewActions\"><span data-review-status role=\"status\">\u0627\u062e\u062a\u0631 \u0645\u0643\u0627\u0646\u064b\u0627 \u0644\u0644\u0628\u062f\u0621.<\/span><button type=\"button\" data-review-save disabled>\u062d\u0641\u0638 \u0627\u0644\u0645\u0648\u0642\u0639<\/button><\/div>\r\n          <\/div>\r\n        <\/div>\r\n      <\/div>\r\n    <\/section>\r\n    <style>\r\n      #tim-explore-1{--x-accent:var(--primary,#FFC94A);--x-heading:var(--heading,#211D16);--x-text:var(--text,#706d66);--x-card:var(--card,#FBF9F3);--x-bg:var(--surface,#F5EFE4);--x-border:var(--border,#EBE3D4);color:var(--x-text);font-family:var(--x-font-base,var(--theme-font-family,inherit))!important;width:100%;min-width:0;margin:0 auto;padding:0 0 28px;-webkit-text-size-adjust:100%;text-size-adjust:100%}\r\n      #tim-explore-1 *,#tim-explore-1 *:before,#tim-explore-1 *:after{box-sizing:border-box;box-shadow:none!important}\r\n      #tim-explore-1 [hidden]{display:none!important}\r\n      \/* Read the site's actual Blocksy typography (H2\/H6\/Base), never load another font. *\/\r\n      #tim-explore-1 :where(p,span,small,button,label,input,select,option,div,a,b,strong){font-family:var(--x-font-base,inherit)!important}\r\n      #tim-explore-1 :where(h1,h2,h3,h4,h5,h6,.timExplore-itemName,.timExplore-mapBadge,.timExplore-mapPopup b){font-family:var(--x-font-h6,var(--x-font-base,inherit))!important}\r\n      #tim-explore-1 .timExplore-resultsHead h2{font-family:var(--x-font-h2,var(--x-font-h6,inherit))!important}\r\n      #tim-explore-1 .timExplore-srOnly{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}\r\n      #tim-explore-1 button,#tim-explore-1 select,#tim-explore-1 input{font-family:var(--x-font-base,inherit)!important}\r\n      \/* v1.22: one compact field; Near Me follows search, the city selector lives next to the search glyph. *\/\r\n      #tim-explore-1 .timExplore-controls{position:relative;z-index:1005;display:flex;flex-flow:row nowrap;align-items:center;justify-content:center;gap:11px;width:min(100%,760px);max-width:760px;margin:0 auto 20px;min-width:0;overflow:visible}\r\n      #tim-explore-1 .timExplore-controls>.timExplore-search{position:relative;flex:1 1 0;width:0;min-width:0;height:56px;min-height:56px;display:flex;align-items:center;gap:8px;padding-inline:10px 13px;background:var(--x-card);border:3px solid var(--x-border);border-radius:999px;transition:border-color .18s ease,border-radius .18s ease;margin:0;overflow:visible;isolation:isolate}\r\n      #tim-explore-1 .timExplore-search:focus-within{border-color:var(--x-accent)}\r\n      #tim-explore-1 .timExplore-searchActions{display:flex;flex:0 0 auto;align-items:center;justify-content:center;gap:5px;order:0;min-width:0}\r\n      #tim-explore-1 .timExplore-searchGlyph{display:grid;place-items:center;flex:0 0 34px;width:34px;height:34px;min-width:34px;margin:0;padding:0;line-height:1;border:1px solid var(--x-border);border-radius:50%;background:var(--x-card);color:var(--x-heading);align-self:center}\r\n      #tim-explore-1 .timExplore-searchGlyph>.timExplore-icon{display:block!important;width:16px!important;height:16px!important;flex:none!important;align-self:center;justify-self:center;margin:0;padding:0}\r\n      #tim-explore-1 .timExplore-search input{order:1;flex:1 1 auto;width:100%;min-width:0;height:52px!important;min-height:0!important;max-height:52px!important;padding:0!important;margin:0!important;border:0!important;background:transparent!important;font-family:var(--x-font-base,inherit)!important;font-size:12.5px!important;font-weight:400!important;line-height:1.35!important;text-align:start;color:var(--x-text)!important;-webkit-text-fill-color:var(--x-text)!important;caret-color:var(--x-text)!important;outline:0!important;box-shadow:none!important;-webkit-appearance:none;appearance:none;border-radius:0!important}\r\n      #tim-explore-1 .timExplore-search input:is(:focus,:focus-visible,:active){border:0!important;outline:0!important;box-shadow:none!important;background:transparent!important}\r\n      #tim-explore-1 .timExplore-search input::placeholder{color:var(--x-text)!important;opacity:.9!important;font-weight:400!important}\r\n      #tim-explore-1 .timExplore-search input[type=search]::-webkit-search-cancel-button{cursor:pointer}\r\n      \/* Live suggestions expand the search surface downward; the same results AJAX response powers both views. *\/\r\n      #tim-explore-1 .timExplore-search.is-suggesting{border-radius:27px 27px 0 0;border-color:var(--x-border);border-bottom-color:transparent!important;z-index:9}\r\n      #tim-explore-1 .timExplore-search.is-suggesting:focus-within{border-color:var(--x-accent);border-bottom-color:transparent!important}\r\n      #tim-explore-1 .timExplore-liveSuggestions[hidden]{display:none!important}\r\n      #tim-explore-1 .timExplore-liveSuggestions{position:absolute;top:calc(100% - 1px);inset-inline:-3px;z-index:12;display:flex;flex-direction:column;gap:0;padding:8px 9px 10px;border:3px solid var(--x-border);border-top:1px solid var(--x-border);border-radius:0 0 22px 22px;background:var(--x-card);max-height:min(370px,56vh);overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;direction:inherit}\r\n      #tim-explore-1 .timExplore-search.is-suggesting:focus-within .timExplore-liveSuggestions{border-color:var(--x-accent);border-top-color:var(--x-border)!important}\r\n      #tim-explore-1 .timExplore-liveLabel{font-size:10px;color:var(--x-text);padding:5px 9px 8px;text-align:start}\r\n      #tim-explore-1 .timExplore-liveRow{width:100%;border:0!important;background:transparent!important;cursor:pointer;font-family:inherit!important;display:flex;align-items:center;gap:10px;min-width:0;padding:8px;border-radius:12px;color:var(--x-heading)!important;text-decoration:none!important;text-align:start;transition:background-color .12s ease}\r\n      #tim-explore-1 .timExplore-liveRow:hover,#tim-explore-1 .timExplore-liveRow:focus-visible{background:var(--x-bg)!important;outline:0}\r\n      #tim-explore-1 .timExplore-livePhoto{width:43px;height:43px;flex:0 0 43px;display:grid;place-items:center;overflow:hidden;border-radius:10px;background:var(--x-bg);color:var(--x-text)}\r\n      #tim-explore-1 .timExplore-livePhoto img{width:100%;height:100%;object-fit:cover;display:block}\r\n      #tim-explore-1 .timExplore-livePhoto .timExplore-icon{width:19px;height:19px;opacity:.5}\r\n      #tim-explore-1 .timExplore-liveDetails{display:flex;flex-direction:column;gap:3px;min-width:0;flex:1}\r\n      #tim-explore-1 .timExplore-liveName{display:block;font-family:var(--x-font-h6,var(--x-font-base,inherit))!important;font-size:12px;font-weight:600;line-height:1.4;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color:var(--x-heading)}\r\n      #tim-explore-1 .timExplore-liveMeta{font-size:10.5px;color:var(--x-text);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}\r\n      #tim-explore-1 .timExplore-liveState{font-size:12px;line-height:1.7;color:var(--x-text);padding:16px 9px;text-align:start}\r\n      #tim-explore-1 .timExplore-didYouMean{display:flex;align-items:center;flex-wrap:wrap;gap:6px;padding:10px 9px;border-top:1px solid var(--x-border);font-size:12px;color:var(--x-text);text-align:start}\r\n      #tim-explore-1 .timExplore-didYouMean button{display:inline-flex;align-items:center;border:1px solid var(--x-border)!important;background:var(--x-bg)!important;border-radius:999px!important;padding:7px 11px!important;color:var(--x-heading)!important;font-size:12px!important;font-weight:600!important;line-height:1.3!important}\r\n      #tim-explore-1 .timExplore-didYouMean button:hover,#tim-explore-1 .timExplore-didYouMean button:focus-visible{border-color:var(--x-accent)!important;outline:0!important}\r\n      #tim-explore-1 .timExplore-liveAll{align-self:stretch;margin-top:5px!important;padding:11px!important;border:1px solid var(--x-border)!important;border-radius:11px!important;background:var(--x-bg)!important;color:var(--x-heading)!important;font-size:11.5px!important;font-weight:500!important;text-align:center}\r\n      #tim-explore-1 .timExplore-liveAll:hover{border-color:var(--x-accent)!important}\r\n      #tim-explore-1 .timExplore-icon{display:inline-block;width:19px;height:19px;flex:0 0 19px;background:currentColor;-webkit-mask:var(--x-ico) no-repeat center\/contain;mask:var(--x-ico) no-repeat center\/contain}\r\n      #tim-explore-1 .timExplore-iSearch{--x-ico:url('https:\/\/thatismorocco.com\/wp-content\/uploads\/2026\/10\/search-02-stroke-rounded-2.svg')}\r\n      #tim-explore-1 .timExplore-iArrow{--x-ico:url('https:\/\/thatismorocco.com\/wp-content\/uploads\/2026\/10\/arrow-down-02-stroke-rounded.svg')}\r\n      #tim-explore-1 .timExplore-iNear{--x-ico:url('https:\/\/thatismorocco.com\/wp-content\/uploads\/2026\/10\/location-01-stroke-rounded-2.svg')}\r\n      #tim-explore-1 .timExplore-iStay{--x-ico:url('https:\/\/thatismorocco.com\/wp-content\/uploads\/2026\/10\/maps-location-01-stroke-rounded-1.svg')}\r\n      #tim-explore-1 .timExplore-iCityReset{--x-ico:url('https:\/\/thatismorocco.com\/wp-content\/uploads\/2026\/10\/refresh-01-stroke-rounded.svg')}\r\n      #tim-explore-1 .timExplore-iImage{--x-ico:url('https:\/\/thatismorocco.com\/wp-content\/uploads\/2026\/10\/image-02-stroke-rounded-2.svg')}\r\n      #tim-explore-1 button{cursor:pointer;margin:0;box-shadow:none!important}\r\n      #tim-explore-1 .timExplore-cityControl{position:relative;order:2;flex:0 0 36px;width:36px;height:36px;min-width:36px;overflow:visible}\r\n      #tim-explore-1 .timExplore-cityControl>select[hidden]{display:none!important}\r\n      #tim-explore-1 .timExplore-cityToggle{position:relative;display:grid!important;place-items:center!important;width:36px!important;height:36px!important;min-width:36px!important;min-height:36px!important;max-width:36px!important;max-height:36px!important;padding:0!important;margin:0!important;border:1px solid var(--x-heading)!important;border-radius:50%!important;background:var(--x-heading)!important;color:var(--x-card)!important;line-height:1!important}\r\n      \/* Single border only: selection, hover and keyboard focus must not stack rings. *\/\r\n      #tim-explore-1 .timExplore-controls .timExplore-cityToggle:is(:hover,:focus,:focus-visible,[aria-expanded=true],.is-selected){outline:0!important;outline-offset:0!important;box-shadow:none!important;border-color:var(--x-accent)!important}\r\n      #tim-explore-1 .timExplore-cityToggle>.timExplore-icon{display:block!important;width:18px;height:18px;flex:0 0 18px;margin:0!important;align-self:center;justify-self:center;color:inherit!important}\r\n      \/* Fixed and geometrically clamped: even a city button at a phone edge cannot clip the menu. *\/\r\n      #tim-explore-1 .timExplore-cityMenu{position:fixed;z-index:2147482000;top:0;left:0;width:274px;max-height:350px;padding:7px;border:1px solid var(--x-border);border-radius:15px;background:var(--x-card);display:flex;flex-direction:column;overflow:hidden;direction:inherit}\r\n      #tim-explore-1 .timExplore-cityOptions{flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain;display:flex;flex-direction:column;gap:2px;padding:2px}\r\n      \/* City dropdown: website-owned rail is always visible when overflow exists.\r\n         The city list still scrolls natively via wheel, touch, keys and screen reader. *\/\r\n      #tim-explore-1 .timExplore-cityOptions{\r\n        padding-inline-end:16px;\r\n        scrollbar-width:none!important;\r\n        -ms-overflow-style:none;\r\n        -webkit-overflow-scrolling:touch;\r\n      }\r\n      #tim-explore-1 .timExplore-cityOptions::-webkit-scrollbar{display:none!important;width:0!important;height:0!important}\r\n      #tim-explore-1 .timExplore-cityScrollRail{\r\n        position:absolute;\r\n        inset-block:12px;\r\n        inset-inline-end:9px;\r\n        width:7px;\r\n        border-radius:999px;\r\n        background:var(--x-bg);\r\n        cursor:pointer;\r\n        touch-action:none;\r\n        overflow:hidden;\r\n      }\r\n      #tim-explore-1 .timExplore-cityScrollThumb{\r\n        position:absolute;\r\n        inset-block-start:0;\r\n        inset-inline-start:0;\r\n        display:block;\r\n        width:100%;\r\n        min-height:30px;\r\n        border:1px solid var(--x-card);\r\n        border-radius:999px;\r\n        background:var(--x-accent);\r\n        transform:translate3d(0,0,0);\r\n        transition:background-color .14s ease;\r\n        will-change:transform;\r\n      }\r\n      #tim-explore-1 .timExplore-cityScrollRail:hover .timExplore-cityScrollThumb{background:#f2b831}\r\n      \/* The adjacent live search panel gets the same identity-colored native scroll. *\/\r\n      #tim-explore-1 .timExplore-liveSuggestions{\r\n        scrollbar-width:thin;\r\n        scrollbar-color:var(--x-accent) var(--x-bg);\r\n        -webkit-overflow-scrolling:touch;\r\n      }\r\n      #tim-explore-1 .timExplore-liveSuggestions::-webkit-scrollbar{width:8px;height:8px}\r\n      #tim-explore-1 .timExplore-liveSuggestions::-webkit-scrollbar-track{background:var(--x-bg);border-radius:999px}\r\n      #tim-explore-1 .timExplore-liveSuggestions::-webkit-scrollbar-thumb{\r\n        min-height:35px;background:var(--x-accent);border:2px solid var(--x-card);border-radius:999px\r\n      }\r\n      #tim-explore-1 .timExplore-liveSuggestions::-webkit-scrollbar-thumb:hover{background:#f2b831}\r\n      #tim-explore-1 .timExplore-liveSuggestions::-webkit-scrollbar-button{display:none;width:0;height:0}\r\n      #tim-explore-1 .timExplore-cityOptions button{display:block;width:100%;min-height:39px;padding:8px 11px;border:0!important;border-radius:9px;text-align:start;background:transparent;color:var(--x-text);font-family:var(--x-font-base,inherit)!important;font-size:12.5px;font-weight:400;line-height:1.3;white-space:normal}\r\n      #tim-explore-1 .timExplore-cityOptions button:hover,#tim-explore-1 .timExplore-cityOptions button:focus-visible,#tim-explore-1 .timExplore-cityOptions button[aria-selected=true]{background:var(--x-bg);color:var(--x-heading);outline:0}\r\n      #tim-explore-1 .timExplore-cityOptions button[aria-selected=true]{font-weight:600}\r\n      #tim-explore-1 .timExplore-controls>.timExplore-near{position:relative;display:grid!important;place-items:center!important;flex:0 0 56px;width:56px!important;height:56px!important;min-width:56px!important;min-height:56px!important;max-width:56px!important;max-height:56px!important;padding:0!important;margin:0!important;border:3px solid var(--x-border)!important;border-radius:50%!important;background:var(--x-card)!important;color:var(--x-text)!important;line-height:1!important;isolation:isolate}\r\n      #tim-explore-1 .timExplore-near>.timExplore-icon{position:relative;z-index:2;width:20px;height:20px;flex:0 0 20px;margin:0!important;align-self:center;justify-self:center;color:var(--x-text)!important}\r\n      \/* Glow belongs to the outer BORDER, never a yellow fill behind the icon. *\/\r\n      #tim-explore-1 .timExplore-near::before{display:none!important}\r\n      #tim-explore-1 .timExplore-near::after{display:none!important}\r\n      \/* v1.28.1 \u2014 Match the approved Cities archive's rotating, border-only orbit.\r\n         Keep the live-suggestions seam open; this does not change dimensions, events,\r\n         click targets, colors, geolocation or the map. *\/\r\n      @property --timExploreOrbitAngle{syntax:\"<angle>\";inherits:false;initial-value:0deg}\r\n      @supports ((-webkit-mask-composite:xor) or (mask-composite:exclude)) and (background:conic-gradient(from 0deg,#FFC94A,#EBE3D4)){\r\n        #tim-explore-1 .timExplore-search::before,\r\n        #tim-explore-1 .timExplore-controls>.timExplore-near::before{\r\n          content:\"\";display:block!important;position:absolute;inset:-3px;padding:3px;\r\n          border-radius:inherit;pointer-events:none;z-index:1;\r\n          background:conic-gradient(from var(--timExploreOrbitAngle) at 50% 50%,var(--x-border) 0deg 252deg,#f2b831 284deg,var(--x-accent) 310deg,#f2b831 340deg,var(--x-border) 360deg);\r\n          -webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);\r\n          -webkit-mask-composite:xor;\r\n          mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);\r\n          mask-composite:exclude;\r\n          animation:timExploreBorderOrbit 5s linear infinite;\r\n        }\r\n        @keyframes timExploreBorderOrbit{to{--timExploreOrbitAngle:360deg}}\r\n        \/* Results visually extend the search surface, so don't draw a second seam. *\/\r\n        #tim-explore-1 .timExplore-search.is-suggesting::before{clip-path:inset(0 0 3px 0)}\r\n        @media(prefers-reduced-motion:reduce){\r\n          #tim-explore-1 .timExplore-search::before,\r\n          #tim-explore-1 .timExplore-controls>.timExplore-near::before{animation:none}\r\n        }\r\n        @media(forced-colors:active){\r\n          #tim-explore-1 .timExplore-search::before,\r\n          #tim-explore-1 .timExplore-controls>.timExplore-near::before{display:none!important}\r\n        }\r\n      }\r\n\r\n      #tim-explore-1 .timExplore-near:disabled{opacity:.55;cursor:wait}\r\n\r\n\r\n      #tim-explore-1 .timExplore-controls button:focus-visible{outline:2px solid var(--x-accent)!important;outline-offset:3px!important}\r\n      \/* The city button uses a single focus border, not the global button outline. *\/\r\n      #tim-explore-1 .timExplore-controls .timExplore-cityToggle:focus-visible{outline:0!important;outline-offset:0!important}\r\n      @media(max-width:760px){\r\n        #tim-explore-1 .timExplore-controls{gap:9px;width:100%;max-width:560px}\r\n        #tim-explore-1 .timExplore-controls>.timExplore-search{height:54px;min-height:54px;gap:5px;padding-inline:11px 8px}\r\n        #tim-explore-1 .timExplore-controls>.timExplore-near{flex-basis:54px;width:54px!important;min-width:54px!important;max-width:54px!important;height:54px!important;min-height:54px!important;max-height:54px!important}\r\n        #tim-explore-1 .timExplore-searchActions{gap:4px}\r\n        #tim-explore-1 .timExplore-cityControl{flex-basis:34px;width:34px;height:34px;min-width:34px}\r\n        #tim-explore-1 .timExplore-cityToggle{width:34px!important;min-width:34px!important;max-width:34px!important;height:34px!important;min-height:34px!important;max-height:34px!important}\r\n        #tim-explore-1 .timExplore-searchGlyph{width:32px;height:32px;min-width:32px;flex-basis:32px}\r\n        #tim-explore-1 .timExplore-liveSuggestions{max-height:min(330px,55vh);padding:6px 6px 8px}\r\n        #tim-explore-1 .timExplore-liveRow{padding:7px;gap:8px}\r\n        #tim-explore-1 .timExplore-livePhoto{width:38px;height:38px;flex-basis:38px}\r\n        #tim-explore-1 .timExplore-liveName{font-size:11.5px}\r\n        #tim-explore-1 .timExplore-cityOptions button{font-size:14px}\r\n        \/* iOS Safari sees 16px while the painted text is 14.5px; never use a sub-16 computed input. *\/\r\n        #tim-explore-1 .timExplore-search input,#tim-explore-1 .timExplore-search input:focus{font-size:16px!important;transform:scale(.91);transform-origin:right center;letter-spacing:-.015em}\r\n        #tim-explore-1[dir=ltr] .timExplore-search input,#tim-explore-1[dir=ltr] .timExplore-search input:focus{transform-origin:left center}\r\n      }\r\n      #tim-explore-1 .timExplore-advanced{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:0 0 13px}\r\n      #tim-explore-1 .timExplore-option{display:inline-flex;align-items:center;gap:7px;height:41px;min-width:0;padding:0 9px 0 12px;border:1px solid var(--x-border);border-radius:11px;background:var(--x-card);color:var(--x-text);font-size:12px;margin:0}\r\n      #tim-explore-1 .timExplore-option span{flex:none;white-space:nowrap}\r\n      #tim-explore-1 .timExplore-option select{width:auto!important;max-width:195px;min-width:90px;height:39px!important;padding:0 7px!important;font-size:13px!important;font-weight:400!important;border:0!important;color:var(--x-heading)!important;cursor:pointer}\r\n      #tim-explore-1 .timExplore-itemWrap{position:relative}\r\n      #tim-explore-1 .timExplore-item{padding-inline-end:12px}\r\n      #tim-explore-1 .timExplore-types{display:flex;align-items:center;justify-content:center;gap:8px;overflow-x:auto;scrollbar-width:none;padding:0 0 16px;scroll-padding-inline:12px}\r\n      #tim-explore-1 .timExplore-types::-webkit-scrollbar{display:none}\r\n      #tim-explore-1 .timExplore-types button{flex:0 0 auto;min-height:39px;padding:0 16px;border:1px solid var(--x-border);border-radius:999px;background:var(--x-card);color:var(--x-heading);font-family:var(--x-font-h6,var(--x-font-base,inherit))!important;font-size:12.5px;font-weight:600;white-space:nowrap}\r\n      #tim-explore-1 .timExplore-types button.is-active,#tim-explore-1 .timExplore-types button:hover{background:var(--x-accent);border-color:var(--x-accent);color:#211D16}\r\n      #tim-explore-1 .timExplore-layout{display:grid;grid-template-columns:minmax(345px,.8fr) minmax(0,1.3fr);gap:15px;align-items:start}\r\n      #tim-explore-1 .timExplore-results,#tim-explore-1 .timExplore-mapWrap{background:var(--x-card);border:1px solid var(--x-border);border-radius:19px;overflow:hidden;min-width:0}\r\n      #tim-explore-1 .timExplore-results{padding:16px;min-height:550px}\r\n      #tim-explore-1 .timExplore-resultsHead{display:flex;align-items:start;justify-content:space-between;gap:8px;margin:1px 0 16px}\r\n      #tim-explore-1 .timExplore-resultsHead h2{font-size:19px;line-height:1.4;font-weight:800;margin:0 0 4px;color:var(--x-heading)}\r\n      #tim-explore-1 .timExplore-resultsHead p{font-size:12px;color:var(--x-text);margin:0}\r\n      #tim-explore-1 .timExplore-reset{border:0;background:transparent;color:var(--x-heading);font-size:12px;text-decoration:underline;text-underline-offset:4px;white-space:nowrap;padding:5px}\r\n      #tim-explore-1 .timExplore-list{display:flex;flex-direction:column;gap:9px}\r\n      #tim-explore-1 .timExplore-item{display:grid;grid-template-columns:98px minmax(0,1fr);gap:12px;min-height:110px;padding:9px;border:1px solid var(--x-border);border-radius:13px;background:var(--x-card);color:inherit;text-decoration:none!important;transition:border-color .15s}\r\n      #tim-explore-1 .timExplore-item:hover{border-color:var(--x-accent)}\r\n      #tim-explore-1 .timExplore-photo{position:relative;display:flex;align-items:center;justify-content:center;border-radius:9px;background:var(--x-bg);color:var(--x-text);overflow:hidden;min-height:96px}\r\n      #tim-explore-1 .timExplore-photo img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}\r\n      #tim-explore-1 .timExplore-photo .timExplore-icon{width:27px;height:27px;opacity:.48}\r\n      #tim-explore-1 .timExplore-itemText{min-width:0;display:flex;flex-direction:column;justify-content:center;gap:6px}\r\n      #tim-explore-1 .timExplore-itemName{font-size:12.5px;font-weight:800;color:var(--x-heading);line-height:1.45;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}\r\n      #tim-explore-1 .timExplore-itemMeta{display:flex;gap:4px;align-items:center;flex-wrap:wrap;font-size:10px;color:var(--x-text)}\r\n      #tim-explore-1 .timExplore-itemMeta i{font-style:normal;background:var(--x-bg);border-radius:999px;padding:2px 7px;color:var(--x-heading);font-size:10px;line-height:1.35}\r\n      #tim-explore-1 .timExplore-itemDesc{font-size:11.5px;line-height:1.6;color:var(--x-text);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}\r\n      #tim-explore-1 .timExplore-more{padding-top:14px;text-align:center}\r\n      #tim-explore-1 .timExplore-more button{height:41px;padding:0 21px;background:var(--x-card);border:1px solid var(--x-border);border-radius:12px;color:var(--x-heading);font-size:12.5px;font-weight:750}\r\n      #tim-explore-1 .timExplore-more button:hover{border-color:var(--x-accent)}\r\n      #tim-explore-1 .timExplore-loading,#tim-explore-1 .timExplore-empty{padding:36px 16px;text-align:center;color:var(--x-text);font-size:13px;line-height:1.9}\r\n      \/* City-specific upcoming trips\/events; exactly the existing card CTA treatment. *\/\r\n      #tim-explore-1 .timExplore-teaser{display:flex;align-items:flex-start;justify-content:flex-start;gap:14px;text-align:start;min-height:170px;padding:22px 17px;border:1px solid var(--x-border);border-radius:14px;background:var(--x-card);direction:inherit}\r\n      #tim-explore-1 .timExplore-teaserImage{display:block;flex:0 0 58px;width:58px;height:66px;object-fit:cover;border-radius:12px;border:1px solid var(--x-border);transform:rotate(-9deg);transform-origin:center center;align-self:flex-start}\r\n      #tim-explore-1[dir=ltr] .timExplore-teaserImage{transform:rotate(9deg)}\r\n      #tim-explore-1 .timExplore-teaserContent{display:flex;min-width:0;flex:1;flex-direction:column;align-items:flex-start;gap:9px;text-align:start}\r\n      #tim-explore-1 .timExplore-teaserTitle{font-family:var(--x-font-h6,var(--x-font-base,inherit))!important;color:var(--x-heading);font-size:15px;font-weight:700;line-height:1.55}\r\n      #tim-explore-1 .timExplore-teaserText{font-family:var(--x-font-base,inherit)!important;color:var(--x-text);font-size:12px;line-height:1.75}\r\n      #tim-explore-1 .timExplore-teaserLink{align-self:flex-start;min-height:29px!important;padding:5px 12px!important;border:1px solid var(--x-border)!important;border-radius:999px!important;background:transparent!important;color:var(--x-heading)!important;font-family:var(--x-font-h6,var(--x-font-base,inherit))!important;font-size:10.5px!important;font-weight:500!important;text-decoration:none!important;white-space:nowrap;display:inline-flex;align-items:center;justify-content:center}\r\n      #tim-explore-1 .timExplore-teaserLink:hover{border-color:var(--x-accent)!important}\r\n      \/* Teasers inside map popups are image-first, copy and the normal outline CTA below. *\/\r\n      #tim-explore-1 .timExplore-popupEmpty .timExplore-teaser{border:0;min-height:0;padding:0;gap:10px;flex-direction:column;align-items:flex-start;text-align:start;width:100%}\r\n      #tim-explore-1 .timExplore-popupEmpty .timExplore-teaserImage{width:58px!important;height:58px!important;min-width:58px;min-height:58px;flex:0 0 58px!important;aspect-ratio:1 \/ 1;object-fit:cover;border-radius:10px;margin-inline-start:4px;align-self:flex-start}\r\n      #tim-explore-1 .timExplore-popupEmpty .timExplore-teaserContent{width:100%;flex:0 0 auto;gap:7px;align-items:flex-start;text-align:start}\r\n      \/* Avoid the generic .timExplore-popupEmpty strong { margin-bottom:8px } rule. *\/\r\n      #tim-explore-1 .timExplore-popupEmpty .timExplore-teaserTitle{font-size:12.5px;line-height:1.4;margin:0!important;padding:0!important}\r\n      #tim-explore-1 .timExplore-popupEmpty .timExplore-teaserText{font-size:10.5px;line-height:1.65;margin:0!important;padding:0!important}\r\n      #tim-explore-1 .timExplore-popupEmpty .timExplore-teaserLink{margin:5px 0 0!important;min-height:30px!important;align-self:flex-start}\r\n      @media(max-width:380px){#tim-explore-1 .timExplore-teaser{padding:18px 12px;gap:11px}#tim-explore-1 .timExplore-teaserImage{width:49px;height:58px;flex-basis:49px}}\r\n      #tim-explore-1 .timExplore-mapWrap{position:sticky;top:20px}\r\n      #tim-explore-1 .timExplore-map{height:min(68vw,680px);min-height:500px;max-height:730px;width:100%;position:relative;isolation:isolate;background:#e9e5d8}\r\n      #tim-explore-1 .timExplore-mapPlaceholder{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:13px;background:radial-gradient(ellipse at 65% 32%,#fff9e7,#ede6d7);text-align:center;z-index:2}\r\n      #tim-explore-1 .timExplore-mapBadge{width:126px;height:126px;border:1px solid #e1d5c4;border-radius:50%;background:#f7efdf;color:#211D16;font-weight:850;font-size:20px;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:3px}\r\n      #tim-explore-1 .timExplore-mapBadge span{color:#e9b529;font-size:27px}\r\n      #tim-explore-1 .timExplore-mapPlaceholder p{font-size:12px;color:#706d66;margin:0;padding:0 12px}\r\n      #tim-explore-1 .timExplore-mapPlaceholder button{border:1px solid #e1d5c4;background:#FFC94A;border-radius:10px;color:#211D16;padding:9px 16px}\r\n      #tim-explore-1 .timExplore-mapFoot{padding:11px 13px;display:flex;gap:10px;align-items:center;justify-content:space-between;color:var(--x-text);font-size:11px;line-height:1.6}\r\n      #tim-explore-1 .timExplore-mapFoot span{display:inline-flex;align-items:flex-start;gap:8px}\r\n      #tim-explore-1 .timExplore-mapFoot i{display:inline-block;width:9px;height:9px;background:var(--x-accent);border-radius:50%;flex:none;margin-top:4px}\r\n      #tim-explore-1 .timExplore-mapFoot button{flex:none;background:var(--x-bg);border:1px solid var(--x-border);border-radius:8px;padding:8px 10px;color:var(--x-heading);font-size:11px;font-weight:750}\r\n      \/* Admin-only manual pin review: visible only to users with Place management permission. *\/\r\n      #tim-explore-1 .timExplore-reviewPanel{padding:14px;background:var(--x-card);border-top:1px solid var(--x-border);display:grid;gap:11px;direction:rtl}\r\n      #tim-explore-1 .timExplore-reviewHead{display:flex;justify-content:space-between;align-items:center;gap:8px}\r\n      #tim-explore-1 .timExplore-reviewHead strong{font-family:var(--x-font-h6,var(--x-font-base,inherit))!important;font-size:13px;color:var(--x-heading)}\r\n      #tim-explore-1 .timExplore-reviewHead button{width:28px;height:28px;border:1px solid var(--x-border);background:transparent;color:var(--x-heading);border-radius:50%;font-size:17px}\r\n      #tim-explore-1 .timExplore-reviewPanel p{margin:0;color:var(--x-text);font-size:11.5px;line-height:1.7}\r\n      #tim-explore-1 .timExplore-reviewFields{display:flex;align-items:center;gap:8px;min-width:0}\r\n      #tim-explore-1 .timExplore-reviewFields select{flex:1;width:auto;min-width:0;height:39px!important;border:1px solid var(--x-border)!important;border-radius:10px;padding:0 10px!important;background:var(--x-bg)!important;font-size:12px!important}\r\n      #tim-explore-1 .timExplore-reviewFields>a{font-size:11px;text-decoration:underline;color:var(--x-heading);white-space:nowrap}\r\n      #tim-explore-1 .timExplore-reviewUrlRow{display:grid;gap:6px;min-width:0}\r\n      #tim-explore-1 .timExplore-reviewUrlRow>label{font-size:11px;color:var(--x-heading);font-family:var(--x-font-h6,var(--x-font-base,inherit))!important;font-weight:650}\r\n      #tim-explore-1 .timExplore-reviewUrlControls{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:center;min-width:0}\r\n      #tim-explore-1 .timExplore-reviewUrlControls input{height:40px!important;width:100%!important;min-width:0!important;min-height:40px!important;border:1px solid var(--x-border)!important;border-radius:11px!important;background:var(--x-bg)!important;color:var(--x-heading)!important;padding:0 12px!important;font-size:13px!important;text-align:left!important;direction:ltr!important}\r\n      #tim-explore-1 .timExplore-reviewUrlControls input:focus{border-color:var(--x-accent)!important}\r\n      #tim-explore-1 .timExplore-reviewUrlControls button{height:40px;min-height:40px;padding:0 13px;background:transparent;color:var(--x-heading);border:1px solid var(--x-border);border-radius:999px;font-size:11px;font-family:var(--x-font-h6,var(--x-font-base,inherit))!important;white-space:nowrap}\r\n      #tim-explore-1 .timExplore-reviewUrlRow>[data-review-candidates]{width:100%!important;max-width:100%;min-width:0;min-height:42px!important;height:42px!important;margin-top:5px;border:1px solid var(--x-border)!important;border-radius:11px!important;background:var(--x-bg)!important;color:var(--x-heading)!important;font-size:12px!important;direction:rtl;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}\r\n      #tim-explore-1 .timExplore-reviewUrlControls button:disabled{opacity:.45;cursor:default}\r\n      @media(max-width:760px){#tim-explore-1 .timExplore-reviewUrlControls{grid-template-columns:minmax(0,1fr)}#tim-explore-1 .timExplore-reviewUrlControls input{font-size:16px!important}#tim-explore-1 .timExplore-reviewUrlControls button{width:100%}}\r\n      #tim-explore-1 .timExplore-reviewActions{display:flex;align-items:center;justify-content:space-between;gap:10px}\r\n      #tim-explore-1 .timExplore-reviewActions span{font-size:11px;line-height:1.6;color:var(--x-text)}\r\n      #tim-explore-1 .timExplore-reviewActions button{font-size:12px;font-weight:650;background:var(--x-accent);border:1px solid var(--x-accent);color:#211D16;border-radius:999px;padding:8px 14px;flex:none}\r\n      #tim-explore-1 .timExplore-reviewActions button:disabled{opacity:.45;cursor:default}\r\n      @media(max-width:760px){#tim-explore-1 .timExplore-reviewFields select{font-size:16px!important}#tim-explore-1 .timExplore-reviewPanel{padding:12px}#tim-explore-1 .timExplore-mapFoot{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}#tim-explore-1 .timExplore-mapFoot>span{grid-column:1\/-1}#tim-explore-1 .timExplore-mapFoot button{min-width:0;white-space:normal;padding:8px 6px;font-size:10px}#tim-explore-1 .timExplore-mapFoot>[data-fit]{grid-column:1\/-1}}\r\n      \/* Airbnb-inspired map controls: page-only, no map-control plugins or new requests. *\/\r\n      #tim-explore-1 .timExplore-mapTools{position:absolute;z-index:1002;inset-block-start:14px;inset-inline-end:14px;display:flex;flex-direction:column;align-items:center;gap:12px;pointer-events:none}\r\n      #tim-explore-1 .timExplore-mapTools button{pointer-events:auto;display:flex;align-items:center;justify-content:center;width:42px;height:42px;min-width:42px;border:0!important;padding:0!important;margin:0!important;background:#fff!important;color:#211D16!important;font-family:var(--x-font-h6,var(--x-font-base,inherit))!important;font-size:23px!important;font-weight:400!important;line-height:1!important;cursor:pointer;transition:background .15s,color .15s}\r\n      #tim-explore-1 .timExplore-mapTools button:hover{background:#f7f1e7!important}\r\n      #tim-explore-1 .timExplore-mapTools button:focus-visible{outline:2px solid #211D16!important;outline-offset:2px!important}\r\n      #tim-explore-1 .timExplore-mapTools button:disabled{opacity:.6;cursor:default}\r\n      #tim-explore-1 .timExplore-mapExpand{border-radius:50%!important}\r\n      #tim-explore-1 .timExplore-mapExpand svg{width:19px;height:19px;display:block}\r\n      #tim-explore-1 .timExplore-mapExpand .timExplore-icoCollapse{display:none}\r\n      #tim-explore-1 .timExplore-mapZoom{display:flex;flex-direction:column;align-items:center;background:#fff;border-radius:24px;overflow:hidden;pointer-events:auto}\r\n      #tim-explore-1 .timExplore-mapZoom button:first-child{border-radius:24px 24px 0 0!important}\r\n      #tim-explore-1 .timExplore-mapZoom button:last-child{border-radius:0 0 24px 24px!important}\r\n      #tim-explore-1 .timExplore-mapZoom button+button:before{content:\"\";position:absolute;top:0;left:11px;right:11px;height:1px;background:#e9e5df}\r\n      #tim-explore-1 .timExplore-mapZoom button{position:relative}\r\n      \/* In-page wide view: preserve the page header, search and category filters. *\/\r\n      #tim-explore-1 .timExplore-layout.is-map-wide{display:block!important;width:100%;min-width:0}\r\n      #tim-explore-1 .timExplore-layout.is-map-wide>.timExplore-results{display:none!important}\r\n      #tim-explore-1 .timExplore-layout.is-map-wide>.timExplore-mapWrap{position:relative!important;inset:auto!important;width:100%!important;max-width:none!important;margin:0!important;border-radius:19px!important;overflow:hidden!important}\r\n      #tim-explore-1 .timExplore-mapWrap.is-expanded .timExplore-map{width:100%!important;height:clamp(520px,72vh,790px)!important;min-height:0!important;max-height:none!important;overflow:hidden}\r\n      #tim-explore-1 .timExplore-mapWrap.is-expanded .timExplore-mapExpand .timExplore-icoExpand{display:none}\r\n      #tim-explore-1 .timExplore-mapWrap.is-expanded .timExplore-mapExpand .timExplore-icoCollapse{display:block}\r\n      @media(max-width:760px){#tim-explore-1 .timExplore-mapTools{inset-block-start:11px;inset-inline-end:11px;gap:9px}#tim-explore-1 .timExplore-mapTools button{width:37px;height:37px;min-width:37px;font-size:21px!important}#tim-explore-1 .timExplore-mapExpand svg{width:17px;height:17px}#tim-explore-1 .timExplore-mapWrap.is-expanded .timExplore-map{height:clamp(430px,70svh,680px)!important}}\r\n      #tim-explore-1 .leaflet-container{font-family:inherit!important;z-index:1}\r\n      \/* MapLibre only paints basemap; Leaflet owns accessible markers & popups. *\/\r\n      #tim-explore-1 .maplibregl-map{font-family:inherit!important}\r\n      #tim-explore-1 .leaflet-maplibre-gl-layer{pointer-events:none}\r\n      #tim-explore-1 .leaflet-maplibre-gl-layer canvas{pointer-events:none}\r\n\r\n      #tim-explore-1 .leaflet-control-attribution{font-size:10px!important}\r\n      #tim-explore-1 .timExplore-pin{width:34px;height:34px;border:2px solid #fff;background:#FFC94A;border-radius:12px 12px 12px 2px;transform:rotate(-45deg);display:flex;align-items:center;justify-content:center;color:#211D16;font-size:12px;font-weight:850;box-shadow:0 3px 11px rgba(33,29,22,.16)!important;transition:background .16s}\r\n      #tim-explore-1 .timExplore-pin>span{transform:rotate(45deg);display:flex;align-items:center;justify-content:center}\r\n      #tim-explore-1 .timExplore-pin .timExplore-icon{width:17px;height:17px;flex:0 0 17px}\r\n      #tim-explore-1 .timExplore-pin.is-active{background:#FFC94A;color:#211D16;border-color:#211D16}\r\n      #tim-explore-1 .timExplore-mapPopup{font-family:inherit;text-align:right;direction:rtl;min-width:160px}\r\n      #tim-explore-1 .timExplore-mapPopup b{color:#211D16;font-size:15px;display:block;margin-bottom:4px}\r\n      #tim-explore-1 .timExplore-mapPopup small{display:block;font-size:12px;line-height:1.8;color:#706d66}\r\n      #tim-explore-1 .timExplore-mapPopup button{margin-top:8px;background:#FFC94A;color:#211D16;padding:6px 11px;font-size:12px;border:0;border-radius:7px;cursor:pointer}\r\n      \/* City-centre pin -> rich content preview, reusing the same 12-item results request. *\/\r\n      #tim-explore-1 .leaflet-popup.timExplore-richPopup{max-width:calc(100vw - 34px)}\r\n      #tim-explore-1 .timExplore-richPopup .leaflet-popup-content-wrapper{padding:0;background:var(--x-card);border:1px solid var(--x-border);border-radius:17px;overflow:hidden;color:var(--x-text)}\r\n      #tim-explore-1 .timExplore-richPopup .leaflet-popup-content{margin:0!important;width:262px!important;max-width:calc(100vw - 50px)!important}\r\n      #tim-explore-1 .timExplore-richPopup .leaflet-popup-tip{background:var(--x-card);border:1px solid var(--x-border)}\r\n      #tim-explore-1 .timExplore-richPopup .timExplore-mapCard{width:100%;min-width:0;direction:rtl;text-align:right;font-family:var(--x-font-base,inherit)!important}\r\n      #tim-explore-1 .timExplore-richPopup .timExplore-mapCard.is-en{direction:ltr;text-align:left}\r\n      #tim-explore-1 .timExplore-popupMedia{height:195px;position:relative;overflow:hidden;background:var(--x-bg);display:flex;align-items:center;justify-content:center}\r\n      #tim-explore-1 .timExplore-popupMedia.is-empty{height:110px;flex-direction:column;gap:5px}\r\n      #tim-explore-1 .timExplore-noImageMessage{color:var(--x-text);font-size:10.5px;line-height:1.5}\r\n      #tim-explore-1 .timExplore-popupMedia>a{display:block;position:absolute;inset:0;text-decoration:none}\r\n      #tim-explore-1 .timExplore-popupMedia img{display:block;width:100%;height:100%;object-fit:cover}\r\n      #tim-explore-1 .timExplore-popupMedia .timExplore-iImage{height:35px;width:35px;flex:0 0 35px;opacity:.42;color:var(--x-text)}\r\n      #tim-explore-1 .timExplore-popupOverlay{position:absolute;inset-inline:0;top:0;z-index:2;display:flex;justify-content:flex-start;gap:8px;padding:8px;pointer-events:none}\r\n      #tim-explore-1 .timExplore-popupOverlay button{pointer-events:auto;display:grid;place-items:center;width:27px;height:27px;padding:0;margin:0;border:1px solid var(--x-border);border-radius:50%;background:var(--x-card);color:var(--x-heading);cursor:pointer}\r\n      #tim-explore-1 .timExplore-popupClose{font-size:17px!important;line-height:1!important}\r\n      #tim-explore-1 .timExplore-popupInfo{padding:12px 13px 13px;min-width:0}\r\n      #tim-explore-1 .timExplore-popupEyebrow{display:flex;align-items:center;justify-content:space-between;gap:6px;color:var(--x-text);font-size:10.5px;line-height:1.5;margin-bottom:6px}\r\n      #tim-explore-1 .timExplore-popupEyebrow span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\r\n      #tim-explore-1 .timExplore-popupTitle{display:block;margin:0 0 7px;color:var(--x-heading)!important;text-decoration:none!important;font-size:13.5px;font-weight:800;line-height:1.45;font-family:var(--x-font-h6,var(--x-font-base,inherit))!important;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}\r\n      #tim-explore-1 .timExplore-popupTitleRow{display:flex;align-items:flex-start;gap:6px;flex-wrap:wrap;margin:0 0 6px}\r\n      #tim-explore-1 .timExplore-popupTitleRow .timExplore-popupTitle{flex:0 1 auto;min-width:0;margin:0}\r\n      #tim-explore-1 .timExplore-popupBadge{display:inline-flex;align-items:center;width:max-content;max-width:100%;padding:3px 7px;border:1px solid var(--x-border);border-radius:999px;color:var(--x-text);background:transparent;font-size:9.5px;line-height:1.4;white-space:normal}\r\n      #tim-explore-1 .timExplore-popupType{margin:0 0 7px}\r\n      #tim-explore-1 .timExplore-popupMeta{color:var(--x-text);font-size:11px;margin:0 0 7px;line-height:1.5;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}\r\n      #tim-explore-1 .timExplore-popupDesc{color:var(--x-text);font-size:11px;line-height:1.65;margin:0 0 11px;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}\r\n      #tim-explore-1 .timExplore-popupFoot{display:flex;align-items:center;justify-content:space-between;gap:8px;padding-top:0;border-top:0}\r\n      #tim-explore-1 .timExplore-popupLink{display:inline-flex;align-items:center;justify-content:center;min-height:29px;border:1px solid var(--x-border);border-radius:999px;padding:5px 12px;background:transparent!important;color:var(--x-heading)!important;font-family:var(--x-font-h6,var(--x-font-base,inherit))!important;font-size:10.5px;font-weight:500;text-decoration:none!important;white-space:nowrap;transition:border-color .18s ease}.timExplore-popupLink:hover,.timExplore-popupLink:focus-visible{border-color:var(--x-accent)}\r\n      #tim-explore-1 .timExplore-popupPager{display:inline-flex;align-items:center;gap:7px;font-size:11px;color:var(--x-text);direction:ltr;flex:none}\r\n      #tim-explore-1 .timExplore-popupPager button{width:29px;height:29px;border:1px solid var(--x-border);border-radius:50%;background:var(--x-card);color:var(--x-heading);padding:0;display:grid;place-items:center;font-size:17px;cursor:pointer}\r\n      #tim-explore-1 .timExplore-popupPager button:disabled{opacity:.3;cursor:default}\r\n      #tim-explore-1 .timExplore-popupEmpty{padding:14px 14px 13px;color:var(--x-text);font-size:12px;line-height:1.8}\r\n      #tim-explore-1 .timExplore-popupEmpty strong{display:block;margin-bottom:8px;color:var(--x-heading);font-size:15px;font-family:var(--x-font-h6,var(--x-font-base,inherit))!important}\r\n      #tim-explore-1 .timExplore-popupEmpty a{color:var(--x-heading);font-weight:750;text-decoration:underline;text-underline-offset:3px}\r\n      #tim-explore-1 .timExplore-popupLoading{padding:22px 16px;text-align:center;color:var(--x-text);font-size:12px}\r\n      @media(max-width:760px){#tim-explore-1 .timExplore-richPopup .leaflet-popup-content{width:min(250px,calc(100vw - 72px))!important}#tim-explore-1 .timExplore-popupMedia{height:172px}#tim-explore-1 .timExplore-popupInfo{padding:10px 12px 12px}#tim-explore-1 .timExplore-popupTitle{font-size:13px}}\r\n      \/* Verified individual venue pins; no city aggregates in Places mode. *\/\r\n      #tim-explore-1 .timExplore-placePin{width:28px;height:28px;border:2px solid #fff;border-radius:10px 10px 10px 3px;transform:rotate(-45deg);display:flex;align-items:center;justify-content:center;background:#FFC94A;color:#211D16;box-shadow:0 2px 6px rgba(0,0,0,.12)!important}\r\n      #tim-explore-1 .timExplore-placePin>i{display:block;transform:rotate(45deg);width:15px;height:15px;background:currentColor;-webkit-mask:var(--x-place-svg) no-repeat center\/contain;mask:var(--x-place-svg) no-repeat center\/contain}\r\n\r\n      \/* v1.16 \u2014 unmistakable admin-only proposal: isolate this marker, never pass it as a verified venue. *\/\r\n      \/* Double guard for asynchronous Leaflet redraws: an unsaved editor preview\r\n         never shows old venue\/city markers. The unique proposal class stays visible. *\/\r\n      #tim-explore-1.is-reviewing-location .timExplore-placeMarker,\r\n      #tim-explore-1.is-reviewing-location .timExplore-pin{\r\n        visibility:hidden!important;pointer-events:none!important;\r\n      }\r\n      #tim-explore-1 .timExplore-reviewMarker{background:transparent!important;border:0!important}\r\n      #tim-explore-1 .timExplore-reviewPin{width:39px;height:39px;border:3px solid #FFC94A;border-radius:13px 13px 13px 4px;background:#211D16;transform:rotate(-45deg);display:flex;align-items:center;justify-content:center;box-shadow:0 0 0 3px #FFFFFF!important}\r\n      #tim-explore-1 .timExplore-reviewPin>i{display:block;width:19px;height:19px;background:#FFFFFF;transform:rotate(45deg);-webkit-mask:var(--x-review-svg) no-repeat center\/contain;mask:var(--x-review-svg) no-repeat center\/contain}\r\n      #tim-explore-1 .timExplore-placeMarker.is-newly-saved{z-index:1}\r\n      #tim-explore-1 .timExplore-pin.is-city-saved{outline:3px solid var(--x-heading)!important;outline-offset:2px}\r\n      #tim-explore-1 .timExplore-placeMarker.is-newly-saved .timExplore-placePin{box-shadow:0 0 0 4px #211D16!important;border-color:#FFFFFF!important}\r\n      @media(max-width:760px){#tim-explore-1 .timExplore-reviewPin{width:35px;height:35px;border-radius:11px 11px 11px 3px}#tim-explore-1 .timExplore-reviewPin>i{width:17px;height:17px}}\r\n      #tim-explore-1 .timExplore-geocodeBtn{font-family:var(--x-font-h6,var(--x-font-base,inherit))!important}\r\n      @media(max-width:760px){#tim-explore-1 .timExplore-pin{width:27px;height:27px;border-radius:10px 10px 10px 2px;font-size:10px}#tim-explore-1 .timExplore-pin .timExplore-icon{width:14px;height:14px}#tim-explore-1 .timExplore-placePin{width:23px;height:23px;border-radius:8px 8px 8px 2px}.timExplore-placePin>i{width:13px;height:13px}}\r\n      .tim-admin.is-night #tim-explore-1,html[data-color-mode=\"dark\"] #tim-explore-1,body[data-color-mode=\"dark\"] #tim-explore-1{--x-accent:#FFC94A;--x-heading:#F3ECDF;--x-text:#827D73;--x-card:#11100d;--x-bg:#0c0b08;--x-border:#27231e}\r\n      @media(max-width:1000px){#tim-explore-1 .timExplore-layout{grid-template-columns:minmax(310px,.9fr) minmax(0,1.1fr)}#tim-explore-1 .timExplore-item{grid-template-columns:80px minmax(0,1fr)}#tim-explore-1 .timExplore-photo{min-height:87px}}\r\n      @media(max-width:760px){#tim-explore-1 .timExplore-layout{display:flex;flex-direction:column}#tim-explore-1 .timExplore-mapWrap{order:-1;position:static;width:100%}#tim-explore-1 .timExplore-map{height:410px;min-height:410px;max-height:none}#tim-explore-1 .timExplore-results{width:100%;min-height:200px}#tim-explore-1 .timExplore-item{grid-template-columns:100px minmax(0,1fr)}#tim-explore-1 .timExplore-photo{min-height:94px}#tim-explore-1 .timExplore-mapFoot{font-size:10px}}\r\n      @media(max-width:760px){#tim-explore-1 .timExplore-advanced{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}#tim-explore-1 .timExplore-option{grid-column:1\/-1;justify-content:space-between;width:100%}#tim-explore-1 .timExplore-option select{flex:1;max-width:75%;min-width:0}}\r\n      @media(max-width:620px){#tim-explore-1 .timExplore-types{justify-content:safe center}}\r\n      @media(max-width:380px){#tim-explore-1 .timExplore-item{grid-template-columns:82px minmax(0,1fr);gap:9px}#tim-explore-1 .timExplore-itemName{font-size:12px}#tim-explore-1 .timExplore-photo{min-height:84px}#tim-explore-1 .timExplore-map{height:375px;min-height:375px}}\r\n      \/* iOS Safari zooms the whole page for editable controls with a computed font below 16px. *\/\r\n      @media(max-width:760px){#tim-explore-1 input,#tim-explore-1 select,#tim-explore-1 textarea,#tim-explore-1 input:focus,#tim-explore-1 select:focus{font-size:16px!important;line-height:normal!important}}\r\n      @media(prefers-reduced-motion:reduce){#tim-explore-1 *{transition:none!important;animation:none!important}}\r\n    <\/style>\r\n    <script>\r\n    (function(){\r\n      'use strict';\r\n      var root=document.getElementById(\"tim-explore-1\");if(!root)return;\r\n      var cfg={};try{cfg=JSON.parse(root.getAttribute('data-config')||'{}')}catch(_e){return}\r\n      var $=function(s,r){return(r||root).querySelector(s)},$$=function(s,r){return Array.prototype.slice.call((r||root).querySelectorAll(s))};\r\n      var field=$('[data-search]'),searchBox=$('[data-search-box]'),liveBox=$('[data-live-suggestions]'),areaEl=$('[data-area]'),areaBtn=$('[data-area-toggle]'),areaMenu=$('[data-area-menu]'),areaOptions=$('[data-area-options]'),areaScrollRail=$('[data-area-scroll-rail]'),areaScrollThumb=$('[data-area-scroll-thumb]');\r\n      var list=$('[data-results]'),summary=$('[data-summary]'),more=$('[data-more]'),reset=$('[data-reset]'),mapEl=$('[data-map]'),mapStatus=$('[data-map-status]');\r\n      var state={type:'cities',area:'',category:'',search:'',page:1,areas:[],facets:{},total:0,loading:false,seq:0,map:null,layer:null,placeLayer:null,markers:{},placeSeq:0,placePoints:[],placeMarkers:{},reviewIsolated:false,reviewFocusId:0,leafletPromise:null,preview:null,previewSeq:0,rasterLayer:null,vectorLayer:null,vectorGL:null,vectorFallback:false};\r\n      var searchTimer=0,controller=null,loadingMap=false,lastLive=null,liveItems=[],pendingFocus=null,focusSeq=0;\r\n      function syncThemeFonts(){\r\n        \/* Probe headings OUTSIDE the shortcode to inherit the site's real Blocksy H fonts. *\/\r\n        try{var bodyStyle=window.getComputedStyle(document.body);root.style.setProperty('--x-font-base',bodyStyle.fontFamily);\r\n          ['h2','h6'].forEach(function(tag){var node=document.createElement(tag);node.textContent='.';node.style.cssText='position:absolute!important;left:-10000px!important;top:-10000px!important;visibility:hidden!important;pointer-events:none!important';document.body.appendChild(node);var name=window.getComputedStyle(node).fontFamily;root.style.setProperty('--x-font-'+tag,name);node.remove()})\r\n        }catch(_){}\r\n      }\r\n      var isEn=\/(^|\\\/)en(\\\/|$)\/i.test(location.pathname)||\/^en(?:-|$)\/i.test(document.documentElement.lang||'');\r\n      var enTypes={cities:'Cities',places:'Places',trips:'Trips',events:'Events'};\r\n      var enAreas={'\u0622\u064a\u062a \u0628\u0646\u062d\u062f\u0648':'A\u00eft Benhaddou','\u0623\u0635\u064a\u0644\u0629':'Asilah','\u0623\u0643\u0627\u062f\u064a\u0631':'Agadir','\u0625\u0641\u0631\u0627\u0646':'Ifrane','\u0625\u0645\u0644\u064a\u0644':'Imlil','\u0627\u0644\u062c\u062f\u064a\u062f\u0629':'El Jadida','\u0627\u0644\u062d\u0633\u064a\u0645\u0629':'Al Hoceima','\u0627\u0644\u062f\u0627\u062e\u0644\u0629':'Dakhla','\u0627\u0644\u062f\u0627\u0631 \u0627\u0644\u0628\u064a\u0636\u0627\u0621':'Casablanca','\u0627\u0644\u0631\u0628\u0627\u0637':'Rabat','\u0627\u0644\u0633\u0639\u064a\u062f\u064a\u0629':'Sa\u00efdia','\u0627\u0644\u0635\u0648\u064a\u0631\u0629':'Essaouira','\u0627\u0644\u0648\u0644\u064a\u062f\u064a\u0629':'Oualidia','\u062a\u0627\u0631\u0648\u062f\u0627\u0646\u062a':'Taroudant','\u062a\u0637\u0648\u0627\u0646':'Tetouan','\u062a\u063a\u0627\u0632\u0648\u062a':'Taghazout','\u062a\u0646\u063a\u064a\u0631':'Tinghir','\u0632\u0627\u0643\u0648\u0631\u0629':'Zagora','\u0634\u0641\u0634\u0627\u0648\u0646':'Chefchaouen','\u0637\u0646\u062c\u0629':'Tangier','\u0641\u0627\u0633':'Fes','\u0645\u0631\u0627\u0643\u0634':'Marrakech','\u0645\u0631\u0632\u0648\u0643\u0629':'Merzouga','\u0645\u0643\u0646\u0627\u0633':'Meknes','\u0648\u062c\u062f\u0629':'Oujda','\u0648\u0631\u0632\u0627\u0632\u0627\u062a':'Ouarzazate','\u0622\u0633\u0641\u064a':'Safi','\u0627\u0644\u0646\u0627\u0638\u0648\u0631':'Nador','\u0645\u064a\u062f\u0644\u062a':'Midelt','\u0627\u0644\u0631\u0634\u064a\u062f\u064a\u0629':'Errachidia','\u0623\u0632\u064a\u0644\u0627\u0644':'Azilal'};\r\n      function areaName(name){return isEn?(enAreas[name]||name):name}\r\n      \/* Persistent custom scrollbar for the city menu. No cloned scrolling surface:\r\n         users continue to scroll areaOptions with touch, wheel and keyboard. *\/\r\n      var cityScrollPending=false,cityScrollDrag=null;\r\n      function updateCityScroll(){\r\n        cityScrollPending=false;\r\n        if(!areaScrollRail||!areaScrollThumb||areaMenu.hidden)return;\r\n        var maximum=Math.max(0,areaOptions.scrollHeight-areaOptions.clientHeight);\r\n        areaScrollRail.hidden=maximum<2;\r\n        if(maximum<2)return;\r\n        var trackH=areaScrollRail.clientHeight;\r\n        if(!trackH)return;\r\n        var thumbH=Math.min(trackH,Math.max(30,Math.round(trackH*areaOptions.clientHeight\/areaOptions.scrollHeight)));\r\n        var thumbTop=Math.round((areaOptions.scrollTop\/maximum)*Math.max(0,trackH-thumbH));\r\n        areaScrollThumb.style.height=thumbH+'px';\r\n        areaScrollThumb.style.transform='translate3d(0,'+thumbTop+'px,0)';\r\n      }\r\n      function queueCityScroll(){\r\n        if(cityScrollPending)return;\r\n        cityScrollPending=true;\r\n        window.requestAnimationFrame(updateCityScroll);\r\n      }\r\n      if(areaScrollRail&&areaScrollThumb){\r\n        areaOptions.addEventListener('scroll',queueCityScroll,{passive:true});\r\n        function scrollCityToPointer(e){\r\n          if(!cityScrollDrag)return;\r\n          var track=areaScrollRail.getBoundingClientRect(),length=Math.max(1,track.height-areaScrollThumb.offsetHeight);\r\n          var progress=Math.max(0,Math.min(1,(e.clientY-track.top-cityScrollDrag.offset)\/length));\r\n          areaOptions.scrollTop=progress*Math.max(0,areaOptions.scrollHeight-areaOptions.clientHeight);\r\n          queueCityScroll();\r\n        }\r\n        areaScrollRail.addEventListener('pointerdown',function(e){\r\n          if(areaScrollRail.hidden||areaMenu.hidden)return;\r\n          e.preventDefault();\r\n          var thumb=areaScrollThumb.getBoundingClientRect();\r\n          cityScrollDrag={id:e.pointerId,offset:e.target===areaScrollThumb?e.clientY-thumb.top:thumb.height\/2};\r\n          try{areaScrollRail.setPointerCapture(e.pointerId)}catch(_e){}\r\n          scrollCityToPointer(e);\r\n        });\r\n        areaScrollRail.addEventListener('pointermove',function(e){if(cityScrollDrag&&e.pointerId===cityScrollDrag.id)scrollCityToPointer(e)});\r\n        function endCityScrollDrag(e){if(cityScrollDrag&&e.pointerId===cityScrollDrag.id)cityScrollDrag=null}\r\n        areaScrollRail.addEventListener('pointerup',endCityScrollDrag);\r\n        areaScrollRail.addEventListener('pointercancel',endCityScrollDrag);\r\n        areaScrollRail.addEventListener('lostpointercapture',function(){cityScrollDrag=null});\r\n      }\r\n      function renderCityChoices(){\r\n        if(!areaOptions)return;\r\n        areaOptions.innerHTML='';\r\n        var choices=[{key:'',name:isEn?'All cities & regions':'\u0643\u0644 \u0627\u0644\u0645\u062f\u0646 \u0648\u0627\u0644\u0645\u0646\u0627\u0637\u0642'}].concat(state.areas.map(function(a){return {key:a.key,name:areaName(a.name)}}));\r\n        choices.forEach(function(choice){var btn=document.createElement('button');btn.type='button';btn.dataset.areaChoice=choice.key;btn.setAttribute('role','option');btn.setAttribute('aria-selected',choice.key===state.area?'true':'false');btn.textContent=choice.name;areaOptions.appendChild(btn)});queueCityScroll();\r\n      }\r\n      function syncCityToggle(){\r\n        if(!areaBtn)return;\r\n        var city=state.areas.find(function(a){return a.key===state.area});\r\n        var name=city?areaName(city.name):(isEn?'All cities & regions':'\u0643\u0644 \u0627\u0644\u0645\u062f\u0646 \u0648\u0627\u0644\u0645\u0646\u0627\u0637\u0642');\r\n        var active=!!state.area;\r\n        areaBtn.setAttribute('aria-label',active?((isEn?'Reset city filter: ':'\u0625\u0644\u063a\u0627\u0621 \u062a\u0635\u0641\u064a\u0629 \u0627\u0644\u0645\u062f\u064a\u0646\u0629: ')+name):(isEn?'Choose a city':'\u0627\u062e\u062a\u064a\u0627\u0631 \u0645\u062f\u064a\u0646\u0629'));\r\n        areaBtn.title=active?(isEn?'Reset city filter':'\u0625\u0644\u063a\u0627\u0621 \u062a\u0635\u0641\u064a\u0629 \u0627\u0644\u0645\u062f\u064a\u0646\u0629'):(isEn?'Choose a city':'\u0627\u062e\u062a\u064a\u0627\u0631 \u0645\u062f\u064a\u0646\u0629');\r\n        areaBtn.classList.toggle('is-selected',active);\r\n        areaBtn.setAttribute('aria-haspopup',active?'false':'listbox');\r\n        var cityIcon=areaBtn.querySelector('.timExplore-icon');\r\n        if(cityIcon){cityIcon.classList.toggle('timExplore-iStay',!active);cityIcon.classList.toggle('timExplore-iCityReset',active)}\r\n        var accessibleLabel=areaBtn.querySelector('.timExplore-srOnly');\r\n        if(accessibleLabel)accessibleLabel.textContent=active?(isEn?'Reset city filter':'\u0625\u0644\u063a\u0627\u0621 \u062a\u0635\u0641\u064a\u0629 \u0627\u0644\u0645\u062f\u064a\u0646\u0629'):(isEn?'Choose a city':'\u0627\u062e\u062a\u064a\u0627\u0631 \u0645\u062f\u064a\u0646\u0629');\r\n        if(areaMenu&&!areaMenu.hidden)renderCityChoices();\r\n      }\r\n      function positionCityMenu(){\r\n        if(!areaMenu||areaMenu.hidden)return;\r\n        var r=areaBtn.getBoundingClientRect(),vw=Math.max(240,document.documentElement.clientWidth||window.innerWidth),vh=Math.max(200,window.innerHeight);\r\n        var width=Math.min(274,vw-24),below=Math.max(0,vh-r.bottom-12),above=Math.max(0,r.top-12);\r\n        var upwards=below<230&&above>below;\r\n        var available=Math.max(110,(upwards?above:below)-8),height=Math.min(350,available);\r\n        var left=isEn?r.left:r.right-width;\r\n        left=Math.min(Math.max(12,left),Math.max(12,vw-width-12));\r\n        var top=upwards?r.top-8-height:r.bottom+8;\r\n        top=Math.max(8,Math.min(top,vh-height-8));\r\n        areaMenu.style.left=Math.round(left)+'px';areaMenu.style.top=Math.round(top)+'px';\r\n        areaMenu.style.width=Math.round(width)+'px';areaMenu.style.maxHeight=Math.round(height)+'px';queueCityScroll();\r\n      }\r\n      function closeCityMenu(focus){if(areaMenu.hidden)return;areaMenu.hidden=true;areaBtn.setAttribute('aria-expanded','false');if(focus)areaBtn.focus({preventScroll:true})}\r\n      function toggleCityMenu(){\r\n        closeLiveSuggestions();\r\n        if(!areaMenu.hidden){closeCityMenu(false);return}\r\n        renderCityChoices();areaMenu.hidden=false;areaBtn.setAttribute('aria-expanded','true');positionCityMenu();\r\n        var selected=areaOptions.querySelector('[aria-selected=\"true\"]');if(selected){selected.focus({preventScroll:true});selected.scrollIntoView({block:'nearest'})}queueCityScroll();\r\n      }\r\n      window.addEventListener('resize',function(){if(!areaMenu.hidden)positionCityMenu()},{passive:true});\r\n      window.addEventListener('scroll',function(){if(!areaMenu.hidden)positionCityMenu()},true);\r\n      areaBtn.addEventListener('click',function(){\r\n        if(state.area){closeCityMenu(false);dismissPreview();areaChoose('',true);areaBtn.focus({preventScroll:true});return}\r\n        toggleCityMenu();\r\n      });\r\n      areaOptions.addEventListener('click',function(e){var btn=e.target.closest('[data-area-choice]');if(!btn)return;var val=btn.dataset.areaChoice||'';closeCityMenu(false);areaEl.value=val;areaEl.dispatchEvent(new Event('change',{bubbles:true}));areaBtn.focus({preventScroll:true})});\r\n      document.addEventListener('pointerdown',function(e){if(!areaMenu.hidden&&!e.target.closest('.timExplore-cityControl'))closeCityMenu(false)});\r\n      root.addEventListener('keydown',function(e){\r\n        if(areaMenu.hidden){if(!state.area&&document.activeElement===areaBtn&&e.key==='ArrowDown'){e.preventDefault();toggleCityMenu()}return}\r\n        if(e.key==='Escape'){e.preventDefault();closeCityMenu(true);return}\r\n        var options=Array.prototype.slice.call(areaOptions.querySelectorAll('[data-area-choice]'));\r\n        var index=options.indexOf(document.activeElement);\r\n        if(e.key==='ArrowDown'||e.key==='ArrowUp'){e.preventDefault();if(options.length)options[(index+(e.key==='ArrowDown'?1:-1)+options.length)%options.length].focus({preventScroll:true})}\r\n        if(e.key==='Home'&&options.length){e.preventDefault();options[0].focus({preventScroll:true})}\r\n        if(e.key==='End'&&options.length){e.preventDefault();options[options.length-1].focus({preventScroll:true})}\r\n      });\r\n\r\n      function esc(x){return String(x==null?'':x).replace(\/[&<>\"']\/g,function(k){return {'&':'&amp;','<':'&lt;','>':'&gt;','\"':'&quot;',\"'\":'&#039;'}[k]})}\r\n      function fmt(n){try{return Number(n||0).toLocaleString('ar-EG-u-nu-latn')}catch(_){return String(n||0)}}\r\n      function label(k){return isEn?(enTypes[k]||k):(cfg.types&&cfg.types[k]||k)}\r\n      function request(params,canAbort){var fd=new FormData();fd.set('action','tim_explore_v100_data');fd.set('lang',isEn?'en':'ar');Object.keys(params).forEach(function(k){fd.set(k,params[k])});return fetch(cfg.ajax,{method:'POST',body:fd,credentials:'same-origin',signal:canAbort&&controller?controller.signal:undefined}).then(function(r){return r.json().then(function(j){if(!r.ok||!j.success)throw Error((j.data&&j.data.message)||(isEn?'Unable to load content.':'\u062a\u0639\u0630\u0631 \u062a\u062d\u0645\u064a\u0644 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a.'));return j.data})})}\r\n      function currentUrl(){var u=new URL(location.href),qs=u.searchParams;['ex_type','ex_city','ex_category','ex_sort','ex_q','ex_saved'].forEach(function(k){qs.delete(k)});\r\n        if(state.type!=='cities')qs.set('ex_type',state.type);if(state.area)qs.set('ex_city',state.area);if(state.search)qs.set('ex_q',state.search);return u.toString();\r\n      }\r\n      function updateUrl(){try{history.replaceState(history.state,'',currentUrl())}catch(_){}}\r\n      function initUrl(){try{var q=new URL(location.href).searchParams;var type=q.get('ex_type')||'';if(cfg.types&&cfg.types[type])state.type=type;state.area=(q.get('ex_city')||'').slice(0,30);state.category='';state.search=(q.get('ex_q')||'').slice(0,80)}catch(_){}}\r\n      function paintTabs(){$$('[data-type]').forEach(function(b){var on=b.dataset.type===state.type;b.classList.toggle('is-active',on);b.setAttribute('aria-pressed',on?'true':'false')})}\r\n      function renderCategories(){state.category=''}\r\n      function title(){var a=state.areas.filter(function(x){return x.key===state.area})[0],name=a?areaName(a.name):'';$('[data-heading]').textContent=name?(isEn?'Explore '+name:'\u0627\u0633\u062a\u0643\u0634\u0641 '+name):(isEn?'Places worth exploring':'\u0648\u062c\u0647\u0627\u062a \u062a\u0633\u062a\u062d\u0642 \u0627\u0644\u0627\u0643\u062a\u0634\u0627\u0641');reset.hidden=!(name||state.search||state.type!=='cities')}\r\n      function itemHtml(it){var photo=it.image?'<img src=\"'+esc(it.image)+'\" alt=\"\" loading=\"lazy\" decoding=\"async\">':'<i class=\"timExplore-icon timExplore-iImage\" aria-hidden=\"true\"><\/i>';\r\n        var tags='<i>'+esc(label(it.type))+'<\/i>'+(it.area?'<span>'+esc(areaName(it.area))+'<\/span>':'')+(it.meta?'<span>\u00b7 '+esc(it.meta)+'<\/span>':'');\r\n        return '<div class=\"timExplore-itemWrap\"><a class=\"timExplore-item\" href=\"'+esc(it.url)+'\"><span class=\"timExplore-photo\">'+photo+'<\/span><span class=\"timExplore-itemText\"><strong class=\"timExplore-itemName\">'+esc(it.title)+'<\/strong><span class=\"timExplore-itemMeta\">'+tags+'<\/span>'+(it.excerpt?'<span class=\"timExplore-itemDesc\">'+esc(it.excerpt)+'<\/span>':'')+'<\/span><\/a><\/div>';\r\n      }\r\n      \/* Same AJAX response: global suggestions across all published types, independent of the city\/category filter. *\/\r\n      function closeLiveSuggestions(){if(!liveBox)return;liveBox.hidden=true;searchBox.classList.remove('is-suggesting');field.setAttribute('aria-expanded','false')}\r\n      function openLiveSuggestions(html){if(!liveBox)return;liveBox.innerHTML=html;liveBox.hidden=false;searchBox.classList.add('is-suggesting');field.setAttribute('aria-expanded','true')}\r\n      function liveRowHtml(it){var pic=it.image?'<img src=\"'+esc(it.image)+'\" loading=\"lazy\" decoding=\"async\" alt=\"\">':'<i class=\"timExplore-icon timExplore-iImage\" aria-hidden=\"true\"><\/i>';\r\n        return '<button type=\"button\" class=\"timExplore-liveRow\" data-live-result=\"'+esc(it.type+':'+it.id)+'\"><span class=\"timExplore-livePhoto\">'+pic+'<\/span><span class=\"timExplore-liveDetails\"><strong class=\"timExplore-liveName\">'+esc(it.title)+'<\/strong><span class=\"timExplore-liveMeta\">'+esc(label(it.type))+(it.area?' \u00b7 '+esc(areaName(it.area)):'')+'<\/span><\/span><\/button>'}\r\n      function showLiveResults(items,query,spellings,sectionCount){\r\n        liveItems=(items||[]).slice(0,8);\r\n        if(document.activeElement!==field||field.value.trim().length<2||query!==state.search||field.value.trim()!==query){return}\r\n        var title='<div class=\"timExplore-liveLabel\">'+(isEn?'Across all Morocco \u00b7 Cities, places, trips and events':'\u0646\u062a\u0627\u0626\u062c \u0645\u0646 \u062c\u0645\u064a\u0639 \u0645\u062f\u0646 \u0627\u0644\u0645\u063a\u0631\u0628 \u0648\u0623\u0642\u0633\u0627\u0645\u0647')+'<\/div>';\r\n        var rows=(items||[]).slice(0,8).map(liveRowHtml).join('');\r\n        if(!rows)rows='<div class=\"timExplore-liveState\">'+(isEn?'No exact match found.':'\u0644\u0645 \u0646\u062c\u062f \u0646\u062a\u064a\u062c\u0629 \u0645\u0637\u0627\u0628\u0642\u0629 \u062a\u0645\u0627\u0645\u064b\u0627.')+'<\/div>';\r\n        var correction='';\r\n        if(spellings&&spellings.length){correction='<div class=\"timExplore-didYouMean\"><span>'+(isEn?'Did you mean':'\u0647\u0644 \u062a\u0642\u0635\u062f')+'\u2026\u061f<\/span>'+spellings.slice(0,3).map(function(name){return '<button type=\"button\" data-spelling=\"'+esc(name)+'\">'+esc(name)+'<\/button>'}).join('')+'<\/div>'}\r\n        var footer=sectionCount>0?'<button class=\"timExplore-liveAll\" type=\"button\" data-live-all>'+(isEn?'View section results below':'\u0639\u0631\u0636 \u0646\u062a\u0627\u0626\u062c \u0627\u0644\u0642\u0633\u0645 \u0641\u064a \u0627\u0644\u0642\u0627\u0626\u0645\u0629')+'<\/button>':'';\r\n        openLiveSuggestions(title+rows+correction+footer);\r\n      }\r\n      function showLivePending(){if(document.activeElement!==field||field.value.trim().length<2){closeLiveSuggestions();return}openLiveSuggestions('<div class=\"timExplore-liveState\">'+(isEn?'Searching\u2026':'\u062c\u0627\u0631\u064d \u0627\u0644\u0628\u062d\u062b\u2026')+'<\/div>')}\r\n      field.addEventListener('focus',function(){var q=field.value.trim();if(q.length<2)return;if(lastLive&&lastLive.q===q&&lastLive.type===state.type&&lastLive.area===state.area){showLiveResults(lastLive.items,q,lastLive.spellings,lastLive.sectionCount)}else{showLivePending()}});\r\n      field.addEventListener('keydown',function(e){if(e.key==='Escape'){e.preventDefault();closeLiveSuggestions();field.blur();return}if(e.key==='ArrowDown'&&!liveBox.hidden){var a=liveBox.querySelector('.timExplore-liveRow');if(a){e.preventDefault();a.focus()}}if(e.key==='Enter'){closeLiveSuggestions();clearTimeout(searchTimer);var q=field.value.trim().slice(0,80);if(state.search!==q){state.search=q;dismissPreview();loadPlacePoints();load(false)}field.blur()}});\r\n      liveBox.addEventListener('click',function(e){var chosen=e.target.closest('[data-live-result]');if(chosen){e.preventDefault();var it=liveItems.find(function(x){return x.type+':'+x.id===chosen.dataset.liveResult});if(it)focusSearchItem(it);return}var spell=e.target.closest('[data-spelling]');if(spell){e.preventDefault();field.value=spell.dataset.spelling||'';state.search=field.value.slice(0,80);lastLive=null;showLivePending();dismissPreview();loadPlacePoints();load(false);field.focus({preventScroll:true});return}if(e.target.closest('[data-live-all]')){closeLiveSuggestions();field.blur();var dest=$('.timExplore-results');if(dest)dest.scrollIntoView({behavior:'smooth',block:'start'})}});\r\n      liveBox.addEventListener('keydown',function(e){if(e.key==='Escape'){e.preventDefault();closeLiveSuggestions();field.focus({preventScroll:true})}});\r\n      document.addEventListener('pointerdown',function(e){if(searchBox&&!searchBox.contains(e.target))closeLiveSuggestions()});\r\n      function teaserMarkup(kind,city,compact,cityUrl){\r\n        if(kind!=='trips'&&kind!=='events')return '';\r\n        var c=esc(city||'');\r\n        var heading=kind==='trips'?(isEn?'A new journey is on its way!':'\u0631\u062d\u0644\u0627\u062a \u0645\u0645\u064a\u0632\u0629 \u0641\u064a \u0627\u0644\u0637\u0631\u064a\u0642!'):(isEn?'Something exciting is coming!':'\u0641\u0639\u0627\u0644\u064a\u0627\u062a \u0645\u0645\u064a\u0632\u0629 \u0642\u0627\u062f\u0645\u0629!');\r\n        var sentence;\r\n        if(kind==='trips')sentence=isEn?('We\u2019re preparing new trips'+(c?' to '+c:'')+'. Stay tuned to discover what\u2019s next.'):('\u0646\u0639\u0645\u0644 \u0639\u0644\u0649 \u0625\u0636\u0627\u0641\u0629 \u0631\u062d\u0644\u0627\u062a \u0648\u062a\u062c\u0627\u0631\u0628 \u062c\u062f\u064a\u062f\u0629'+(c?' \u0641\u064a '+c:'')+'\u060c \u0648\u062a\u0631\u0642\u0651\u0628 \u0645\u0627 \u0633\u0646\u0643\u0634\u0641 \u0639\u0646\u0647 \u0642\u0631\u064a\u0628\u064b\u0627.');\r\n        else sentence=isEn?('We\u2019re preparing upcoming events'+(c?' in '+c:'')+'. More to discover soon.'):('\u0646\u064f\u062d\u0636\u0651\u0631 \u0644\u0625\u0636\u0627\u0641\u0629 \u0641\u0639\u0627\u0644\u064a\u0627\u062a \u062c\u062f\u064a\u062f\u0629'+(c?' \u0641\u064a '+c:'')+'\u060c \u0648\u0627\u0644\u0645\u0632\u064a\u062f \u0645\u0646 \u0627\u0644\u062a\u062c\u0627\u0631\u0628 \u0628\u0627\u0646\u062a\u0638\u0627\u0631\u0643 \u0642\u0631\u064a\u0628\u064b\u0627.');\r\n        var image='<img class=\"timExplore-teaserImage\" src=\"https:\/\/thatismorocco.com\/wp-content\/uploads\/2026\/10\/ewfewqfw.jpg\" alt=\"\" loading=\"lazy\" decoding=\"async\">';\r\n        var link=cityUrl?'<a class=\"timExplore-popupLink timExplore-teaserLink\" href=\"'+esc(cityUrl)+'\">'+(isEn?'Explore city':'\u0627\u0633\u062a\u0643\u0634\u0641 \u0627\u0644\u0645\u062f\u064a\u0646\u0629')+'<\/a>':'';\r\n        return '<div class=\"timExplore-teaser'+(compact?' is-compact':'')+'\">'+image+'<div class=\"timExplore-teaserContent\"><strong class=\"timExplore-teaserTitle\">'+heading+'<\/strong><span class=\"timExplore-teaserText\">'+sentence+'<\/span>'+link+'<\/div><\/div>';\r\n      }\r\n      function render(items,append){\r\n        if(!append)list.innerHTML='';\r\n        if(!items.length&&!append){\r\n          var area=state.areas.find(function(a){return a.key===state.area});\r\n          var showTeaser=!!area&&!state.search&&(state.type==='trips'||state.type==='events');\r\n          list.innerHTML=showTeaser?teaserMarkup(state.type,areaName(area.name),false,area.url||''):'<div class=\"timExplore-empty\">'+(isEn?'No matching results. Try another city.':'\u0644\u0627 \u062a\u0648\u062c\u062f \u0646\u062a\u0627\u0626\u062c \u0645\u0637\u0627\u0628\u0642\u0629. \u062c\u0631\u0651\u0628 \u0645\u062f\u064a\u0646\u0629 \u0623\u062e\u0631\u0649.')+'<\/div>';\r\n          return;\r\n        }\r\n        list.insertAdjacentHTML('beforeend',items.map(itemHtml).join(''));\r\n      }\r\n      function load(append){if(controller)controller.abort();controller=typeof AbortController!=='undefined'?new AbortController():null;var seq=++state.seq,page=append?state.page+1:1;state.loading=true;more.disabled=true;\r\n        if(!append){list.innerHTML='<div class=\"timExplore-loading\">'+(isEn?'Finding destinations\u2026':'\u062c\u0627\u0631\u064d \u0627\u0644\u0628\u062d\u062b \u0641\u064a \u0627\u0644\u0648\u062c\u0647\u0627\u062a\u2026')+'<\/div>';summary.textContent=isEn?'Loading results\u2026':'\u062c\u0627\u0631\u064d \u062a\u062d\u0645\u064a\u0644 \u0627\u0644\u0646\u062a\u0627\u0626\u062c\u2026';more.hidden=true}\r\n        var work=request({kind:'items',type:state.type,area:state.area,category:state.category,search:state.search,page:page},true).then(function(d){if(seq!==state.seq)return null;state.page=page;state.total=Number(d.total)||0;render(d.items||[],append);if(!append){lastLive={q:state.search,type:state.type,area:state.area,items:d.suggestions||[],spellings:d.spellings||[],sectionCount:(d.items||[]).length};showLiveResults(d.suggestions||[],state.search,d.spellings||[],(d.items||[]).length)}var n=Math.min(page*(Number(d.per_page)||Number(12)),state.total);summary.textContent=isEn?('Showing '+fmt(n)+' of '+fmt(state.total)+' results'):('\u0639\u0631\u0636 '+fmt(n)+' \u0645\u0646 '+fmt(state.total)+' \u0646\u062a\u064a\u062c\u0629');more.hidden=!d.has_more;title();return d}).catch(function(e){if(e.name==='AbortError'||seq!==state.seq)return null;if(!append)list.innerHTML='<div class=\"timExplore-empty\">'+(isEn?'Unable to load results. Please retry.':'\u062a\u0639\u0630\u0631 \u062a\u062d\u0645\u064a\u0644 \u0627\u0644\u0646\u062a\u0627\u0626\u062c. \u064a\u0631\u062c\u0649 \u0627\u0644\u0645\u062d\u0627\u0648\u0644\u0629 \u0645\u062c\u062f\u062f\u064b\u0627.')+'<\/div>';summary.textContent=isEn?'Server connection failed':'\u062a\u0639\u0630\u0631 \u0627\u0644\u0627\u062a\u0635\u0627\u0644 \u0628\u0627\u0644\u062e\u0627\u062f\u0645';if(!append&&document.activeElement===field&&field.value.trim().length>=2)openLiveSuggestions('<div class=\"timExplore-liveState\">'+(isEn?'Unable to load suggestions.':'\u062a\u0639\u0630\u0631 \u062a\u062d\u0645\u064a\u0644 \u0627\u0644\u0627\u0642\u062a\u0631\u0627\u062d\u0627\u062a.')+'<\/div>');more.hidden=true;return null}).then(function(d){if(seq===state.seq){state.loading=false;more.disabled=false}return d});\r\n        updateUrl();return work;\r\n      }\r\n      function areaChoose(key,focusMap){closeLiveSuggestions();state.area=key||'';areaEl.value=state.area;syncCityToggle();closeCityMenu(false);title();var work=load(false);drawMarkers();loadPlacePoints();if(focusMap&&state.map){var a=state.areas.filter(function(x){return x.key===state.area})[0];if(a&&a.lat!=null)state.map.flyTo([a.lat,a.lng],9,{duration:.65});else fitMap()}return work}\r\n      function typeChoose(t){if(!Object.prototype.hasOwnProperty.call(cfg.types||{},t))return;closeLiveSuggestions();dismissPreview();state.type=t;state.category='';paintTabs();renderCategories();drawMarkers();loadPlacePoints();load(false)}\r\n      $$('[data-type]').forEach(function(b){b.addEventListener('click',function(){typeChoose(b.dataset.type)})});\r\n      field.addEventListener('input',function(){clearTimeout(searchTimer);showLivePending();searchTimer=setTimeout(function(){state.search=field.value.trim().slice(0,80);dismissPreview();loadPlacePoints();load(false)},280)});\r\n      areaEl.addEventListener('change',function(){dismissPreview();areaChoose(areaEl.value,true)});\r\n      $('[data-reset]').addEventListener('click',function(){closeLiveSuggestions();dismissPreview();state.type='cities';state.area='';state.category='';state.search='';field.value='';areaEl.value='';paintTabs();renderCategories();areaChoose('',true)});\r\n      more.addEventListener('click',function(){if(!state.loading)load(true)});\r\n      $('[data-fit]').addEventListener('click',function(){dismissPreview();areaChoose('',true)});\r\n      $('[data-near]').addEventListener('click',function(){var b=this;if(!navigator.geolocation){summary.textContent=isEn?'Location is not supported.':'\u062c\u0647\u0627\u0632\u0643 \u0644\u0627 \u064a\u062f\u0639\u0645 \u062a\u062d\u062f\u064a\u062f \u0627\u0644\u0645\u0648\u0642\u0639.';return}b.disabled=true;navigator.geolocation.getCurrentPosition(function(pos){b.disabled=false;var x=pos.coords.latitude,y=pos.coords.longitude,best=null,bestKm=1e10;state.areas.forEach(function(a){if(a.lat==null)return;var rad=Math.PI\/180,dlat=(a.lat-x)*rad,dlng=(a.lng-y)*rad,aa=Math.sin(dlat\/2)**2+Math.cos(x*rad)*Math.cos(a.lat*rad)*Math.sin(dlng\/2)**2;var km=6371*2*Math.atan2(Math.sqrt(aa),Math.sqrt(Math.max(0,1-aa)));if(km<bestKm){bestKm=km;best=a}});if(best){dismissPreview();areaChoose(best.key,true);summary.textContent=isEn?('Nearest listed city: '+areaName(best.name)+' (not an exact venue).'):('\u0623\u0642\u0631\u0628 \u0645\u062f\u064a\u0646\u0629 \u0645\u062f\u0631\u062c\u0629: '+best.name+'\u060c \u0648\u0644\u064a\u0633 \u0645\u0648\u0642\u0639 \u0645\u0646\u0634\u0623\u0629 \u0628\u0639\u064a\u0646\u0647\u0627.')}},function(){b.disabled=false;summary.textContent=isEn?'Location unavailable or permission denied.':'\u062a\u0639\u0630\u0631 \u062a\u062d\u062f\u064a\u062f \u0627\u0644\u0645\u0648\u0642\u0639 \u0623\u0648 \u0644\u0645 \u064a\u062a\u0645 \u0645\u0646\u062d \u0627\u0644\u0625\u0630\u0646.'},{enableHighAccuracy:false,timeout:8000,maximumAge:300000})});\r\n      \/* Map markers are city\/area centres. The preview showcases ACTUAL published results of that area,\r\n       * not a claim that an individual venue is at the marker coordinates. *\/\r\n      function popupCls(){return 'timExplore-mapCard'+(isEn?' is-en':'')}\r\n      function previewLoading(area){return '<div class=\"'+popupCls()+'\"><div class=\"timExplore-popupLoading\">'+(isEn?'Loading '+esc(areaName(area.name))+'\u2026':'\u062c\u0627\u0631\u064d \u062a\u062d\u0645\u064a\u0644 \u0645\u062d\u062a\u0648\u0649 '+esc(areaName(area.name))+'\u2026')+'<\/div><\/div>'}\r\n      function previewMarkup(p){var a=p.area,items=p.items||[],total=p.total||0;\r\n        if(!items.length){\r\n          var teaser=!p.failed&&!p.previewSearch&&(p.previewType==='trips'||p.previewType==='events');\r\n          var text=teaser?teaserMarkup(p.previewType,areaName(a.name),true,a.url||''):'<strong>'+esc(areaName(a.name))+'<\/strong>'+(p.failed?(isEn?'Could not load the preview. Try this marker again.':'\u062a\u0639\u0630\u0631 \u062a\u062d\u0645\u064a\u0644 \u0627\u0644\u0645\u0639\u0627\u064a\u0646\u0629. \u062d\u0627\u0648\u0644 \u0645\u062c\u062f\u062f\u064b\u0627.'):(isEn?'No matching results in this city.':'\u0644\u0627 \u062a\u0648\u062c\u062f \u0646\u062a\u0627\u0626\u062c \u0645\u0637\u0627\u0628\u0642\u0629 \u0641\u064a \u0647\u0630\u0647 \u0627\u0644\u0645\u062f\u064a\u0646\u0629.'));\r\n          return '<div class=\"'+popupCls()+'\"><div class=\"timExplore-popupEmpty\">'+text+(!teaser&&a.url?'<p><a href=\"'+esc(a.url)+'\">'+(isEn?'Open city page':'\u0635\u0641\u062d\u0629 \u0627\u0644\u0645\u062f\u064a\u0646\u0629')+'<\/a><\/p>':'')+'<\/div><\/div>';\r\n        }\r\n        var idx=Math.max(0,Math.min(p.index||0,items.length-1)),it=items[idx],hasPhoto=!!it.image;\r\n        var image=hasPhoto?'<img src=\"'+esc(it.image)+'\" loading=\"eager\" decoding=\"async\" alt=\"'+esc(it.title)+'\">':'<i class=\"timExplore-icon timExplore-iImage\" aria-hidden=\"true\"><\/i><span class=\"timExplore-noImageMessage\">'+(isEn?'Image not available':'\u0644\u0627 \u062a\u0648\u062c\u062f \u0635\u0648\u0631\u0629 \u0645\u062a\u0627\u062d\u0629')+'<\/span>';\r\n        var isCity=it.type==='cities',isPlace=it.type==='places';\r\n        var countBadge=isCity?'<span class=\"timExplore-popupBadge\">'+fmt(it.famous_places||0)+' '+(isEn?'famous places':'\u0623\u0645\u0627\u0643\u0646 \u0645\u0634\u0647\u0648\u0631\u0629')+'<\/span>':'';\r\n        var typeBadge=isPlace&&it.meta?'<span class=\"timExplore-popupBadge timExplore-popupType\">'+esc(it.meta)+'<\/span>':'';\r\n        var heading='<div class=\"timExplore-popupTitleRow\"><strong class=\"timExplore-popupTitle\">'+esc(it.title)+'<\/strong>'+countBadge+'<\/div>';\r\n        var excerpt=it.excerpt?'<p class=\"timExplore-popupDesc\">'+esc(it.excerpt)+'<\/p>':'';\r\n        return '<div class=\"'+popupCls()+'\"><div class=\"timExplore-popupMedia'+(hasPhoto?'':' is-empty')+'\">'+image+'<div class=\"timExplore-popupOverlay\"><button type=\"button\" class=\"timExplore-popupClose\" data-preview-close aria-label=\"'+(isEn?'Close preview':'\u0625\u063a\u0644\u0627\u0642 \u0627\u0644\u0645\u0639\u0627\u064a\u0646\u0629')+'\">\u00d7<\/button><\/div><\/div>'+ \r\n        '<div class=\"timExplore-popupInfo\">'+typeBadge+heading+excerpt+\r\n        '<div class=\"timExplore-popupFoot\"><a class=\"timExplore-popupLink\" href=\"'+esc(it.url)+'\">'+(isEn?'View details':'\u0639\u0631\u0636 \u0627\u0644\u062a\u0641\u0627\u0635\u064a\u0644')+'<\/a>'+ \r\n        ((total>1)?'<div class=\"timExplore-popupPager\"><button type=\"button\" data-preview-step=\"-1\" aria-label=\"'+(isEn?'Previous':'\u0627\u0644\u0633\u0627\u0628\u0642')+'\"'+(idx===0?' disabled':'')+'>\u2039<\/button><button type=\"button\" data-preview-step=\"1\" aria-label=\"'+(isEn?'Next':'\u0627\u0644\u062a\u0627\u0644\u064a')+'\"'+(idx>=total-1?' disabled':'')+'>\u203a<\/button><\/div>':'')+'<\/div><\/div><\/div>';\r\n      }\r\n      function handlePreviewAction(e){\r\n        var closeBtn=e.target.closest('[data-preview-close]');if(closeBtn){e.preventDefault();e.stopPropagation();dismissPreview();return}\r\n        var step=e.target.closest('[data-preview-step]');if(!step||!state.preview)return;\r\n        e.preventDefault();e.stopPropagation();if(step.disabled||state.preview.busy)return;\r\n        var p=state.preview,delta=Number(step.dataset.previewStep)||0,next=p.index+delta;\r\n        if(next>=0&&next<p.items.length){p.index=next;repaintPreview();return}\r\n        if(next<0||next>=p.total)return;\r\n        p.busy=true;var token=state.previewSeq;\r\n        request({kind:'items',type:p.previewType||state.type,area:p.area.key,search:p.previewSearch!==undefined?p.previewSearch:state.search,page:Math.floor(p.items.length\/12)+1},false).then(function(d){\r\n          if(token!==state.previewSeq||state.preview!==p)return;\r\n          var more=d&&d.items||[];if(!more.length){p.total=p.items.length;return}\r\n          var known={};p.items.forEach(function(x){known[x.id]=true});more.forEach(function(x){if(!known[x.id])p.items.push(x)});\r\n          p.total=Math.max(p.items.length,Number(d.total)||0);p.index=Math.min(p.items.length-1,next);\r\n        }).catch(function(){}).then(function(){if(state.preview===p){p.busy=false;repaintPreview()}});\r\n      }\r\n      \/\/ Capture handlers before Leaflet's map click handlers; don't let the map dismiss the popup.\r\n      ['pointerdown','mousedown','touchstart','dblclick'].forEach(function(name){mapEl.addEventListener(name,function(e){if(e.target.closest('.timExplore-richPopup'))e.stopPropagation()},true)});\r\n      mapEl.addEventListener('click',function(e){if(!e.target.closest('.timExplore-richPopup'))return;handlePreviewAction(e);e.stopImmediatePropagation()},true);\r\n      \/\/ Broken WordPress image files gracefully collapse to the compact no-image state.\r\n      mapEl.addEventListener('error',function(e){\r\n        var img=e.target;if(!img||!img.matches||!img.matches('.timExplore-popupMedia img'))return;\r\n        var media=img.closest('.timExplore-popupMedia');if(!media||media.classList.contains('is-empty'))return;\r\n        media.classList.add('is-empty');var link=img.closest('a');if(link)link.remove();else img.remove();\r\n        media.insertAdjacentHTML('afterbegin','<i class=\"timExplore-icon timExplore-iImage\" aria-hidden=\"true\"><\/i><span class=\"timExplore-noImageMessage\">'+(isEn?'Image unavailable':'\u0627\u0644\u0635\u0648\u0631\u0629 \u063a\u064a\u0631 \u0645\u062a\u0627\u062d\u0629')+'<\/span>');\r\n      },true);\r\n      function bindPreviewEvents(marker){var pop=marker.getPopup&&marker.getPopup(),el=pop&&pop.getElement&&pop.getElement();if(el&&window.L&&window.L.DomEvent&&window.L.DomEvent.disableClickPropagation)window.L.DomEvent.disableClickPropagation(el)}\r\n      function repaintPreview(){var p=state.preview;if(p&&p.marker&&p.marker.isPopupOpen())p.marker.getPopup().setContent(previewMarkup(p))}\r\n      function dismissPreview(){state.previewSeq++;state.preview=null;if(state.map)state.map.closePopup()}\r\n      function openPreview(a,marker){\r\n        \/\/ Previewing a marker is NOT a filter action: never update state.area, the\r\n        \/\/ select value, URL, results list or Leaflet layers here. Only the city\r\n        \/\/ dropdown and explicit Near Me action may narrow the map to a city.\r\n        var token=++state.previewSeq;\r\n        var selectedType=state.type,searchText=state.search;\r\n        state.preview={area:a,marker:marker,items:[],total:0,index:0,failed:false,busy:false,previewType:selectedType,previewSearch:searchText};\r\n        marker.setPopupContent(previewLoading(a));bindPreviewEvents(marker);\r\n        request({kind:'items',type:selectedType,area:a.key,search:searchText,page:1},false)\r\n          .then(function(d){\r\n            if(token!==state.previewSeq||!state.preview||state.preview.marker!==marker||!marker.isPopupOpen())return;\r\n            state.preview.items=Array.isArray(d.items)?d.items:[];\r\n            state.preview.total=Number(d.total)||0;\r\n            repaintPreview();\r\n          }).catch(function(){\r\n            if(token!==state.previewSeq||!state.preview||state.preview.marker!==marker||!marker.isPopupOpen())return;\r\n            state.preview.failed=true;repaintPreview();\r\n          });\r\n      }\r\n      function openPlacePreview(it,marker){\r\n        \/\/ Precise locations open the selected Place directly, with no additional AJAX request.\r\n        var area=state.areas.filter(function(a){return a.key===it.area_key})[0]||{key:it.area_key,name:it.area||'',url:''};\r\n        state.previewSeq++;state.preview={area:area,marker:marker,items:[it],total:1,index:0,failed:false,busy:false,previewType:'places',previewSearch:state.search};\r\n        marker.setPopupContent(previewMarkup(state.preview));bindPreviewEvents(marker);\r\n      }\r\n      \/* Selecting an autocomplete row navigates the MAP only. Page navigation is\r\n       * reserved for the explicit detail link or an ordinary result-side card. *\/\r\n      function exactSearchPopup(item,marker,area){\r\n        dismissPreview();\r\n        state.preview={area:area,marker:marker,items:[item],total:1,index:0,\r\n          failed:false,busy:false,previewType:item.type,previewSearch:''};\r\n        marker.setPopupContent(previewMarkup(state.preview));\r\n        marker.openPopup();bindPreviewEvents(marker);\r\n      }\r\n      function displaySearchFocus(item,token){\r\n        if(token!==focusSeq)return;\r\n        if(!state.map||!window.L){pendingFocus=item;prepareMap();return}\r\n        var area=state.areas.find(function(a){return a.key===item.area_key})||null;\r\n        if(item.type==='cities')area=state.areas.find(function(a){return a.city_id===Number(item.id)})||area;\r\n        var coords=Number.isFinite(Number(item.lat))&&item.lat!==null&&Number.isFinite(Number(item.lng))&&item.lng!==null\r\n          ?[Number(item.lat),Number(item.lng)]:null;\r\n        if(item.type==='places'&&coords){\r\n          var marker=state.placeMarkers[String(item.id)];\r\n          if(marker){state.map.flyTo(coords,Math.max(14,state.map.getZoom()),{duration:.55});\r\n            exactSearchPopup(item,marker,area||{key:item.area_key,name:item.area||'',url:''});return}\r\n        }\r\n        if(item.type==='cities'&&area&&state.markers[area.key]){\r\n          var cityMarker=state.markers[area.key].marker;\r\n          state.map.flyTo([area.lat,area.lng],Math.max(10,state.map.getZoom()),{duration:.55});\r\n          exactSearchPopup(item,cityMarker,area);return;\r\n        }\r\n        if((item.type==='trips'||item.type==='events')&&area&&state.markers[area.key]){\r\n          var areaMarker=state.markers[area.key].marker;\r\n          state.map.flyTo([area.lat,area.lng],Math.max(10,state.map.getZoom()),{duration:.55});\r\n          exactSearchPopup(item,areaMarker,area);return;\r\n        }\r\n        \/\/ A published place without verified coordinates must not get a fabricated pin.\r\n        \/\/ Its city centre is only used to orient the map, with explicit disclosure.\r\n        if(area&&area.lat!=null&&area.lng!=null){\r\n          state.map.flyTo([area.lat,area.lng],11,{duration:.55});\r\n          state.map.closePopup();\r\n          var text='<div class=\"'+popupCls()+'\"><div class=\"timExplore-popupEmpty\"><strong>'+esc(item.title)+'<\/strong><p>'+\r\n            (isEn?'Exact coordinates are not yet verified. The map is centred on the city, not this venue.':'\u0644\u0645 \u062a\u064f\u0624\u0643\u062f \u0625\u062d\u062f\u0627\u062b\u064a\u0627\u062a \u0647\u0630\u0627 \u0627\u0644\u0645\u0643\u0627\u0646 \u0628\u0639\u062f. \u0627\u0644\u062e\u0631\u064a\u0637\u0629 \u0645\u062a\u0645\u0631\u0643\u0632\u0629 \u0639\u0644\u0649 \u0627\u0644\u0645\u062f\u064a\u0646\u0629 \u0648\u0644\u064a\u0633 \u0639\u0644\u0649 \u0627\u0644\u0645\u0646\u0634\u0623\u0629.')+\r\n            '<\/p><a class=\"timExplore-popupLink\" href=\"'+esc(item.url)+'\">'+(isEn?'View details':'\u0639\u0631\u0636 \u0627\u0644\u062a\u0641\u0627\u0635\u064a\u0644')+'<\/a><\/div><\/div>';\r\n          window.L.popup({maxWidth:275,autoPan:true,closeButton:true}).setLatLng([area.lat,area.lng]).setContent(text).openOn(state.map);\r\n        }else{\r\n          var foot=$('[data-map-foot]');if(foot)foot.textContent=isEn?'This item has no verified map coordinates.':'\u0647\u0630\u0627 \u0627\u0644\u0645\u062d\u062a\u0648\u0649 \u0644\u064a\u0633 \u0644\u0647 \u0645\u0648\u0642\u0639 \u062c\u063a\u0631\u0627\u0641\u064a \u0645\u0624\u0643\u062f.';\r\n        }\r\n      }\r\n      function focusSearchItem(item){\r\n        if(!item||!item.type)return;\r\n        var token=++focusSeq;\r\n        closeLiveSuggestions();clearTimeout(searchTimer);field.blur();\r\n        \/\/ Explicit autocomplete choice opens an item preview. Clear any old city\r\n        \/\/ restriction only in this deliberate action (NOT on pin click).\r\n        state.area='';areaEl.value='';syncCityToggle();\r\n        state.type=item.type;state.category='';state.search='';field.value='';\r\n        dismissPreview();paintTabs();renderCategories();title();drawMarkers();\r\n        load(false);\r\n        var after=loadPlacePoints({keepView:true})||Promise.resolve();\r\n        Promise.resolve(after).then(function(){displaySearchFocus(item,token)}).catch(function(){displaySearchFocus(item,token)});\r\n      }\r\n      function placePinSize(){return window.innerWidth<=760?23:28}\r\n      function placeIconUrl(t){var type=String(t||'').replace(\/\\s+\/g,' ').trim();var icons=cfg.placeIcons||{};\r\n        if(icons[type])return icons[type];\r\n        if(\/\u0631\u064a\u0627\u0636|\u0636\u064a\u0627\u0641\u0629\/.test(type))return icons['\u0631\u064a\u0627\u0636 \/ \u062f\u0627\u0631 \u0636\u064a\u0627\u0641\u0629']||icons.default;\r\n        if(\/\u0641\u0646\u062f\u0642|hotel\/i.test(type))return icons['\u0641\u0646\u062f\u0642']||icons.default;\r\n        if(\/\u0645\u0642\u0647\u0649|caf\u00e9|cafe\/i.test(type))return icons['\u0645\u0642\u0647\u0649']||icons.default;\r\n        if(\/\u0645\u0637\u0639\u0645|restaurant\/i.test(type))return icons['\u0645\u0637\u0639\u0645']||icons.default;\r\n        if(\/\u0645\u0646\u062a\u062c\u0639|resort\/i.test(type))return icons['\u0645\u0646\u062a\u062c\u0639']||icons.default;\r\n        return icons.default||'';\r\n      }\r\n      function placePinIcon(it){var w=placePinSize(),url=placeIconUrl(it.place_type||it.meta);\r\n        return window.L.divIcon({className:'timExplore-placeMarker',html:'<div class=\"timExplore-placePin\"><i style=\"--x-place-svg:url(&quot;'+esc(url)+'&quot;)\" aria-hidden=\"true\"><\/i><\/div>',iconSize:[w,w],iconAnchor:[Math.round(w\/2),Math.round(w*.90)]});\r\n      }\r\n      function showCityLayer(){return state.type!=='places'}\r\n      function syncCityLayer(){if(!state.map||!state.layer)return;\r\n        if(state.reviewIsolated||!showCityLayer()){if(state.map.hasLayer(state.layer))state.map.removeLayer(state.layer);return}\r\n        if(!state.map.hasLayer(state.layer))state.layer.addTo(state.map);\r\n      }\r\n      function placeMapStatus(text){var foot=$('[data-map-foot]');if(foot)foot.innerHTML='<i><\/i> '+text;}\r\n      function loadPlacePoints(options){\r\n        options=options||{};\r\n        var token=++state.placeSeq;\r\n        if(!state.map||!window.L)return;\r\n        if(state.placeLayer){if(!options.preserveExisting)state.placeLayer.clearLayers()}\r\n        else state.placeLayer=window.L.layerGroup();\r\n        if(state.reviewIsolated){if(state.map.hasLayer(state.placeLayer))state.map.removeLayer(state.placeLayer)}\r\n        else if(!state.map.hasLayer(state.placeLayer))state.placeLayer.addTo(state.map);\r\n        state.placePoints=[];state.placeMarkers={};syncCityLayer();\r\n        if(state.type!=='places'){\r\n          state.placeLayer.clearLayers();\r\n          placeMapStatus(isEn?'Markers show Moroccan city centres.':'\u0627\u0644\u0639\u0644\u0627\u0645\u0627\u062a \u062a\u0645\u062b\u0644 \u0645\u0631\u0627\u0643\u0632 \u0627\u0644\u0645\u062f\u0646 \u0627\u0644\u0645\u063a\u0631\u0628\u064a\u0629.');\r\n          return;\r\n        }\r\n        \/\/ Places mode: ONLY verified individual POIs, never city-centre or approximate group markers.\r\n        placeMapStatus(isEn?'Loading verified place locations\u2026':'\u062c\u0627\u0631\u064d \u062a\u062d\u0645\u064a\u0644 \u0645\u0648\u0627\u0642\u0639 \u0627\u0644\u0623\u0645\u0627\u0643\u0646 \u0627\u0644\u0645\u0624\u0643\u062f\u0629\u2026');\r\n        var fd=new FormData();fd.set('action','tim_explore_v150_place_points');fd.set('lang',isEn?'en':'ar');fd.set('area',state.area);fd.set('search',state.search);\r\n        var locationsPromise=fetch(cfg.ajax,{method:'POST',credentials:'same-origin',body:fd}).then(function(r){\r\n          if(!r.ok)throw Error('HTTP '+r.status);\r\n          return r.json();\r\n        }).then(function(j){\r\n          if(token!==state.placeSeq||!state.map||state.type!=='places')return;\r\n          if(!j||!j.success||!j.data)throw Error('Map data unavailable');\r\n          var data=j.data||{},places=Array.isArray(data.items)?data.items:[];\r\n          if(state.area)places=places.filter(function(it){return it.area_key===state.area});\r\n          state.placeLayer.clearLayers();\r\n          state.placePoints=places;\r\n          var pins=[];\r\n          places.forEach(function(it){\r\n            var lat=Number(it.lat),lng=Number(it.lng);\r\n            if(!Number.isFinite(lat)||!Number.isFinite(lng))return;\r\n            if(lat<21||lat>37.7||lng< -18||lng>-.5)return;\r\n            var fresh=Number(it.id)===Number(state.reviewFocusId)&&Number(state.reviewFocusId)>0;\r\n            var pinIcon=placePinIcon(it);\r\n            if(fresh)pinIcon.options.className='timExplore-placeMarker is-newly-saved';\r\n            var marker=window.L.marker([lat,lng],{icon:pinIcon,keyboard:true,title:it.title,zIndexOffset:fresh?1000:0});\r\n            marker.bindPopup('',{minWidth:180,maxWidth:265,autoPan:true,keepInView:true,offset:[0,-5],closeButton:false,className:'timExplore-richPopup'});\r\n            marker.on('popupopen',function(){bindPreviewEvents(marker)});\r\n            marker.on('click',function(){openPlacePreview(it,marker)});\r\n            marker.addTo(state.placeLayer);state.placeMarkers[String(it.id)]=marker;pins.push([lat,lng]);\r\n          });\r\n          if(state.area&&!state.preview&&!options.keepView){\r\n            if(pins.length===1)state.map.flyTo(pins[0],Math.max(state.map.getZoom(),13),{duration:.5});\r\n            else if(pins.length>1)state.map.fitBounds(window.L.latLngBounds(pins),{padding:[42,42],maxZoom:13,animate:true});\r\n            else{\r\n              var selected=state.areas.find(function(a){return a.key===state.area});\r\n              if(selected&&selected.lat!=null)state.map.flyTo([selected.lat,selected.lng],Math.max(10,state.map.getZoom()),{duration:.5});\r\n            }\r\n          }\r\n          var total=Number(data.total)||0;\r\n          var unmatched=Math.max(0,Number(data.unlocated)||Math.max(0,total-pins.length));\r\n          var note=isEn?('Precise place locations: '+fmt(pins.length)+' \/ '+fmt(total)):\r\n            ('\u0623\u0645\u0627\u0643\u0646 \u0645\u062d\u062f\u062f\u0629 \u0628\u062f\u0642\u0629: '+fmt(pins.length)+' \u0645\u0646 '+fmt(total));\r\n          if(unmatched)note+=isEn?(' \u00b7 Unmapped: '+fmt(unmatched)+' (shown in list only)'):\r\n            (' \u00b7 \u062f\u0648\u0646 \u0625\u062d\u062f\u0627\u062b\u064a\u0627\u062a: '+fmt(unmatched)+' (\u0641\u064a \u0627\u0644\u0642\u0627\u0626\u0645\u0629 \u0641\u0642\u0637)');\r\n          if(!pins.length)note=isEn?'No verified place locations for this selection. Places remain in the results list.':'\u0644\u0627 \u062a\u0648\u062c\u062f \u0645\u0648\u0627\u0642\u0639 \u0623\u0645\u0627\u0643\u0646 \u0645\u0624\u0643\u062f\u0629 \u0644\u0647\u0630\u0627 \u0627\u0644\u0627\u062e\u062a\u064a\u0627\u0631\u061b \u062a\u0628\u0642\u0649 \u0627\u0644\u0623\u0645\u0627\u0643\u0646 \u0641\u064a \u0642\u0627\u0626\u0645\u0629 \u0627\u0644\u0646\u062a\u0627\u0626\u062c.';\r\n          placeMapStatus(note);\r\n          \/\/ If another request finished while reviewing, keep every non-proposal pin hidden.\r\n          if(state.reviewIsolated&&state.map.hasLayer(state.placeLayer))state.map.removeLayer(state.placeLayer);\r\n        }).catch(function(){\r\n          if(token!==state.placeSeq||state.type!=='places'||!state.map)return;\r\n          placeMapStatus(isEn?'Unable to load place locations. Results are still available in the list.':'\u062a\u0639\u0630\u0631 \u062c\u0644\u0628 \u0645\u0648\u0627\u0642\u0639 \u0627\u0644\u0623\u0645\u0627\u0643\u0646\u060c \u0648\u064a\u0645\u0643\u0646\u0643 \u062a\u0635\u0641\u062d\u0647\u0627 \u0641\u064a \u0642\u0627\u0626\u0645\u0629 \u0627\u0644\u0646\u062a\u0627\u0626\u062c.');\r\n        });\r\n        return locationsPromise;\r\n      }\r\n      function cityPinMetrics(){var w=window.innerWidth<=760?27:34;return {iconSize:[w,w],iconAnchor:[Math.round(w\/2),Math.round(w*.79)]}}\r\n      function pinCount(a){if(state.type==='events')return a.events;if(state.type==='trips')return a.trips;return null}\r\n      function pinHtml(a){var count=pinCount(a);var inner=count===null?'<i class=\"timExplore-icon timExplore-iNear\" aria-hidden=\"true\"><\/i>':fmt(count||0);return '<div class=\"timExplore-pin'+(a.key===state.area?' is-active':'')+(a.key===state.reviewFocusCityKey?' is-city-saved':'')+'\"><span>'+inner+'<\/span><\/div>'}\r\n      function paintMarkers(){if(!state.map||!window.L)return;\r\n        Object.keys(state.markers).forEach(function(k){var o=state.markers[k];o.setIcon(window.L.divIcon({className:'',html:pinHtml(o.area),...cityPinMetrics()}));});\r\n        syncCityLayer();\r\n      }\r\n      function fitMap(){if(!state.map)return;state.map.fitBounds([[22.7,-17],[36.3,-1.35]],{padding:[20,20],maxZoom:6,animate:true})}\r\n      function drawMarkers(){if(!state.map||!window.L)return;\r\n        if(state.layer)state.layer.clearLayers();else state.layer=window.L.layerGroup().addTo(state.map);\r\n        state.markers={};\r\n        state.areas.forEach(function(a){if(a.lat==null||a.lng==null)return;\r\n          \/\/ City\/area mode can show all markers; a selected area strictly shows its own marker.\r\n          if(state.area&&a.key!==state.area) return;\r\n          var marker=window.L.marker([a.lat,a.lng],{icon:window.L.divIcon({className:'',html:pinHtml(a),...cityPinMetrics()}),title:a.name,keyboard:true});\r\n          marker.bindPopup(previewLoading(a),{minWidth:190,maxWidth:275,autoPan:true,keepInView:true,offset:[0,-8],closeButton:false,className:'timExplore-richPopup'});\r\n          marker.on('popupopen',function(){bindPreviewEvents(marker)});marker.on('click',function(){openPreview(a,marker)});\r\n          marker.addTo(state.layer);state.markers[a.key]={area:a,marker:marker,setIcon:function(icon){marker.setIcon(icon)}};\r\n        });syncCityLayer();\r\n      }\r\n      function script(url){return new Promise(function(resolve,reject){var s=document.createElement('script');s.src=url;s.async=true;s.onload=resolve;s.onerror=function(){reject(Error('leaflet'))};document.head.appendChild(s)})}\r\n      function leaflet(){if(window.L)return Promise.resolve();if(state.leafletPromise)return state.leafletPromise;state.leafletPromise=new Promise(function(resolve,reject){var l=document.createElement('link');l.rel='stylesheet';l.href=cfg.leafletCss;l.onload=function(){script(cfg.leafletJs).then(resolve,reject)};l.onerror=function(){reject(Error('leaflet css'))};document.head.appendChild(l)});return state.leafletPromise}\r\n      \/* Map navigation controls stay independent of the basemap provider. *\/\r\n      var mapWrap=$('.timExplore-mapWrap'),expandBtn=$('[data-map-expand]'),zoomInBtn=$('[data-map-zoomin]'),zoomOutBtn=$('[data-map-zoomout]');\r\n      var expanded=false,exploreLayout=$('.timExplore-layout');\r\n      function adjustMapSize(){if(!state.map)return;requestAnimationFrame(function(){if(state.map)state.map.invalidateSize({pan:false,animate:false})})}\r\n      function setMapExpanded(on){on=!!on;if(on===expanded)return;\r\n        \/\/ Only occupy the Explore content frame, never the browser viewport.\r\n        expanded=on;exploreLayout.classList.toggle('is-map-wide',on);mapWrap.classList.toggle('is-expanded',on);\r\n        expandBtn.setAttribute('aria-pressed',on?'true':'false');\r\n        var title=on?(isEn?'Return to results':'\u0627\u0644\u0639\u0648\u062f\u0629 \u0625\u0644\u0649 \u0627\u0644\u0646\u062a\u0627\u0626\u062c'):(isEn?'Widen map':'\u062a\u0648\u0633\u064a\u0639 \u0627\u0644\u062e\u0631\u064a\u0637\u0629');\r\n        expandBtn.setAttribute('aria-label',title);expandBtn.title=title;\r\n        adjustMapSize();setTimeout(adjustMapSize,80);setTimeout(adjustMapSize,220);\r\n      }\r\n      expandBtn.addEventListener('click',function(e){e.preventDefault();e.stopPropagation();setMapExpanded(!expanded)});\r\n      zoomInBtn.addEventListener('click',function(e){e.preventDefault();e.stopPropagation();if(state.map)state.map.zoomIn(1,{animate:true})});\r\n      zoomOutBtn.addEventListener('click',function(e){e.preventDefault();e.stopPropagation();if(state.map)state.map.zoomOut(1,{animate:true})});\r\n      document.addEventListener('keydown',function(e){if(expanded&&e.key==='Escape'){e.preventDefault();setMapExpanded(false)}});\r\n      window.addEventListener('resize',function(){if(expanded)adjustMapSize()},{passive:true});\r\n      \/* MAP BASEMAP v1.27.0: Keep the existing Leaflet camera, marker and popup API.\r\n       * Only the background becomes MapLibre vector tiles, with complete raster fallback.\r\n       * The public OpenFreeMap styles work immediately and require no API key.\r\n       * A production PMTiles URL switches the vector source to actual Protomaps data.\r\n       *\/\r\n      function mapIsDark(){\r\n        try{\r\n          var val=window.getComputedStyle(root).getPropertyValue('--x-bg').replace(\/\\s\/g,'').toLowerCase();\r\n          if(val==='#0c0b08'||val==='rgb(12,11,8)')return true;\r\n          if(val==='#f5efe4'||val==='rgb(245,239,228)')return false;\r\n          return document.documentElement.getAttribute('data-color-mode')==='dark'||document.body.getAttribute('data-color-mode')==='dark'||root.closest('.tim-admin.is-night')!==null;\r\n        }catch(_){return false}\r\n      }\r\n      function browserCanVector(){\r\n        try{var c=document.createElement('canvas');return !!(window.WebGLRenderingContext&&(c.getContext('webgl2')||c.getContext('webgl')))}catch(_){return false}\r\n      }\r\n      \/* MapLibre GL 5.x does not shape bidirectional Arabic labels by default.\r\n       * Register the version-pinned ICU text shaper before creating the GL map.\r\n       * This small resource is requested ONLY when the vector map actually loads;\r\n       * other pages\/visits that choose classic raster need no RTL module.\r\n       * A shared promise prevents duplicate registration on multiple shortcodes.\r\n       *\/\r\n      function ensureVectorRTL(){\r\n        if(window.__timExploreRTLPromise)return window.__timExploreRTLPromise;\r\n        var gl=window.maplibregl;\r\n        if(!gl||typeof gl.setRTLTextPlugin!=='function')return Promise.reject(new Error('RTL text shaping not supported'));\r\n        var status='unavailable';\r\n        try{if(typeof gl.getRTLTextPluginStatus==='function')status=gl.getRTLTextPluginStatus()}catch(_e){}\r\n        if(status==='loaded'||status==='loading'||status==='deferred')return Promise.resolve();\r\n        \/\/ Wait for the plugin to register before MapLibre first paints Arabic glyphs.\r\n        window.__timExploreRTLPromise=Promise.resolve().then(function(){\r\n          return gl.setRTLTextPlugin(cfg.maplibreRtlJs,false);\r\n        }).catch(function(e){\r\n          window.__timExploreRTLPromise=null;\r\n          throw e;\r\n        });\r\n        return window.__timExploreRTLPromise;\r\n      }\r\n      function vectorLibrary(){\r\n        if(window.__timExploreVectorAssets)return window.__timExploreVectorAssets;\r\n        function cssOnce(url){return new Promise(function(resolve,reject){\r\n          var old=document.querySelector('link[data-tim-maplibre-css]');if(old){if(old.dataset.ready==='1')return resolve();old.addEventListener('load',resolve,{once:true});old.addEventListener('error',reject,{once:true});return}\r\n          var el=document.createElement('link');el.rel='stylesheet';el.href=url;el.dataset.timMaplibreCss='1';el.onload=function(){el.dataset.ready='1';resolve()};el.onerror=function(){reject(new Error('MapLibre CSS unavailable'))};document.head.appendChild(el)\r\n        })}\r\n        window.__timExploreVectorAssets=Promise.all([\r\n          cssOnce(cfg.maplibreCss),\r\n          (window.maplibregl?Promise.resolve():script(cfg.maplibreJs))\r\n        ]).then(function(){\r\n          \/\/ Only make a vector map after the RTL plugin can join Arabic letters.\r\n          return ensureVectorRTL();\r\n        }).then(function(){\r\n          return (window.L&&window.L.maplibreGL)?Promise.resolve():script(cfg.leafletMaplibreJs)\r\n        }).then(function(){\r\n          if(!window.L||typeof window.L.maplibreGL!=='function')throw new Error('MapLibre Leaflet adapter unavailable');\r\n          if(!cfg.vectorPmtilesUrl)return;\r\n          return (window.pmtiles?Promise.resolve():script(cfg.pmtilesJs)).then(function(){\r\n            return (window.basemaps?Promise.resolve():script(cfg.protomapsBasemapsJs))\r\n          }).then(function(){\r\n            if(!window.pmtiles||!window.basemaps)throw new Error('Protomaps modules unavailable');\r\n            if(!window.__timExplorePmProtocol){\r\n              window.__timExplorePmProtocol=new window.pmtiles.Protocol();\r\n              window.maplibregl.addProtocol('pmtiles',window.__timExplorePmProtocol.tile);\r\n            }\r\n          });\r\n        });\r\n        \/\/ Allow retry following network interruptions; never poison the shared promise.\r\n        window.__timExploreVectorAssets=window.__timExploreVectorAssets.catch(function(err){window.__timExploreVectorAssets=null;throw err});\r\n        return window.__timExploreVectorAssets;\r\n      }\r\n      function vectorStyle(){\r\n        var dark=mapIsDark();\r\n        if(!cfg.vectorPmtilesUrl)return dark?cfg.vectorDarkStyle:cfg.vectorLightStyle;\r\n        \/\/ A real Protomaps v4 PMTiles archive from a configured production source.\r\n        var fl=Object.assign({},window.basemaps.namedFlavor(dark?'dark':'light'));\r\n        if(dark){\r\n          fl.background='#0c0b08';fl.earth='#181611';fl.water='#192d36';fl.park_a='#253126';fl.park_b='#263428';fl.buildings='#302b25';\r\n        }else{\r\n          fl.background='#F5EFE4';fl.earth='#F5EFE4';fl.water='#badce2';fl.park_a='#e2edda';fl.park_b='#dfebd7';fl.buildings='#e8decf';\r\n        }\r\n        return {version:8,\r\n          glyphs:'https:\/\/protomaps.github.io\/basemaps-assets\/fonts\/{fontstack}\/{range}.pbf',\r\n          sprite:'https:\/\/protomaps.github.io\/basemaps-assets\/sprites\/v4\/'+(dark?'dark':'light'),\r\n          sources:{tim_protomaps:{type:'vector',url:'pmtiles:\/\/'+cfg.vectorPmtilesUrl,\r\n            attribution:'<a href=\"https:\/\/protomaps.com\" target=\"_blank\" rel=\"noopener\">Protomaps<\/a> \u00b7 <a href=\"https:\/\/www.openstreetmap.org\/copyright\" target=\"_blank\" rel=\"noopener\">\u00a9 OpenStreetMap<\/a>'}},\r\n          layers:window.basemaps.layers('tim_protomaps',fl,{lang:isEn?'en':'ar'})};\r\n      }\r\n      function brandOpenFreeMap(gl){\r\n        if(!gl||cfg.vectorPmtilesUrl||!gl.isStyleLoaded||!gl.isStyleLoaded())return;\r\n        \/\/ Only semantic background, land, parks and water layers. Leave POIs and roads legible.\r\n        var dark=mapIsDark();\r\n        var land=dark?'#191713':'#F5EFE4';\r\n        var water=dark?'#1d3640':'#b9dce4';\r\n        var park=dark?'#263427':'#e5eddc';\r\n        var building=dark?'#332d26':'#ece3d5';\r\n        try{(gl.getStyle().layers||[]).forEach(function(layer){\r\n          var id=(layer.id||'').toLowerCase(),value=null,prop=null;\r\n          if(layer.type==='background'){prop='background-color';value=land}\r\n          else if(layer.type==='fill'){\r\n            prop='fill-color';\r\n            if(\/water|ocean|sea|lake\/.test(id))value=water;\r\n            else if(\/park|wood|forest|grass|landcover|nature|green\/.test(id))value=park;\r\n            else if(\/building\/.test(id))value=building;\r\n            else if(\/land|background\/.test(id))value=land;\r\n          }\r\n          if(prop&&value&&layer.paint&&Object.prototype.hasOwnProperty.call(layer.paint,prop)){\r\n            try{gl.setPaintProperty(layer.id,prop,value)}catch(_e){}\r\n          }\r\n        })}catch(_e){}\r\n      }\r\n      var mapThemeObserver=null,mapThemeScheduled=false;\r\n      function watchVectorTheme(){\r\n        if(mapThemeObserver||!('MutationObserver' in window))return;\r\n        var last=mapIsDark();\r\n        mapThemeObserver=new MutationObserver(function(){\r\n          if(mapThemeScheduled)return;mapThemeScheduled=true;\r\n          requestAnimationFrame(function(){mapThemeScheduled=false;var next=mapIsDark();if(next===last)return;last=next;\r\n            if(!state.vectorGL)return;\r\n            try{state.vectorGL.setStyle(vectorStyle(),{diff:false})}catch(_e){}\r\n          });\r\n        });\r\n        [document.documentElement,document.body,root].forEach(function(n){\r\n          mapThemeObserver.observe(n,{attributes:true,attributeFilter:['class','data-color-mode','data-theme','style']})\r\n        });\r\n      }\r\n      function vectorFail(err){\r\n        state.vectorFallback=true;\r\n        if(state.vectorLayer){try{state.map.removeLayer(state.vectorLayer)}catch(_e){}state.vectorLayer=null}\r\n        state.vectorGL=null;\r\n        if(state.map&&!state.rasterLayer){\r\n          state.rasterLayer=window.L.tileLayer(cfg.tile,{maxZoom:18,attribution:cfg.attribution,updateWhenIdle:true,keepBuffer:1}).addTo(state.map);\r\n        }\r\n        \/\/ Restore raster even if a graphics context fails after vector already loaded.\r\n        if(window.console&&console.warn)console.warn('That is Morocco: vector basemap fallback',err&&err.message||err);\r\n      }\r\n      function upgradeToVector(){\r\n        var saveData=!!(navigator.connection&&navigator.connection.saveData);\r\n        var slow=!!(navigator.connection&&\/^(slow-2g|2g)$\/.test(navigator.connection.effectiveType||''));\r\n        if(!cfg.vectorEnabled||saveData||slow||!browserCanVector()||new URLSearchParams(window.location.search).get('ex_map')==='classic')return;\r\n        vectorLibrary().then(function(){\r\n          if(!state.map||state.vectorLayer||state.vectorFallback)return;\r\n          var layer=window.L.maplibreGL({style:vectorStyle(),attribution:cfg.vectorPmtilesUrl?'Protomaps \u00b7 <a href=\"https:\/\/www.openstreetmap.org\/copyright\" target=\"_blank\" rel=\"noopener\">\u00a9 OpenStreetMap<\/a>':'<a href=\"https:\/\/openfreemap.org\" target=\"_blank\" rel=\"noopener\">OpenFreeMap<\/a> \u00b7 <a href=\"https:\/\/www.openstreetmap.org\/copyright\" target=\"_blank\" rel=\"noopener\">\u00a9 OpenStreetMap<\/a>',interactive:false});\r\n          state.vectorLayer=layer;\r\n          var done=false,timeout=0;\r\n          function success(){if(done)return;done=true;clearTimeout(timeout);\r\n            if(state.rasterLayer&&state.map){try{state.map.removeLayer(state.rasterLayer)}catch(_e){}state.rasterLayer=null}\r\n            watchVectorTheme();\r\n          }\r\n          function fail(error){if(done)return;done=true;clearTimeout(timeout);vectorFail(error||new Error('Vector tiles unavailable'))}\r\n          try{\r\n            layer.addTo(state.map);\r\n            var gl=layer.getMaplibreMap();state.vectorGL=gl;\r\n            if(!gl)throw new Error('MapLibre map missing');\r\n            gl.on('style.load',function(){if(!cfg.vectorPmtilesUrl)brandOpenFreeMap(gl)});\r\n            gl.once('load',function(){\r\n              \/\/ MapLibre has a nonempty parsed style. Do not remove raster before first render.\r\n              requestAnimationFrame(function(){requestAnimationFrame(success)})\r\n            });\r\n            gl.on('webglcontextlost',function(){if(!done)fail(new Error('WebGL context lost'));else vectorFail(new Error('WebGL context lost'))});\r\n            timeout=setTimeout(function(){fail(new Error('Vector basemap timed out'))},12000);\r\n            if(gl.loaded&&gl.loaded())setTimeout(function(){if(!cfg.vectorPmtilesUrl)brandOpenFreeMap(gl);success()},0);\r\n          }catch(e){fail(e)}\r\n        }).catch(vectorFail);\r\n      }\r\n      \/* Keep legally required map credits visible; clicking a credit must not replace the Explore page.\r\n         Capture the event before Leaflet's attribution control stops propagation. *\/\r\n      mapEl.addEventListener('click',function(ev){\r\n        var link=ev.target&&ev.target.closest?ev.target.closest('.leaflet-control-attribution a, .maplibregl-ctrl-attrib a'):null;\r\n        if(link&&mapEl.contains(link)){link.target='_blank';link.rel='noopener noreferrer'}\r\n      },true);\r\n      function installBasemap(){\r\n        state.rasterLayer=window.L.tileLayer(cfg.tile,{maxZoom:18,attribution:cfg.attribution,\r\n          detectRetina:cfg.retinaMode==='detect'&&window.devicePixelRatio>=1.5,\r\n          updateWhenIdle:true,keepBuffer:1}).addTo(state.map);\r\n        \/\/ Defer heavy GL modules until after the original map and markers appear.\r\n        setTimeout(upgradeToVector,150);\r\n      }\r\n      function prepareMap(){if(state.map||loadingMap)return;loadingMap=true;mapStatus.hidden=false;leaflet().then(function(){if(state.map)return;var laptopMouse=window.matchMedia&&window.matchMedia('(hover:hover) and (pointer:fine)').matches&&window.innerWidth>760;\r\n        var saveData=!!(navigator.connection&&navigator.connection.saveData);\r\n        var lowBandwidth=!!(navigator.connection&&\/^(slow-2g|2g)$\/.test(navigator.connection.effectiveType||''));\r\n        var hiDpi=window.devicePixelRatio>=1.5&&!saveData&&!lowBandwidth;\r\n        state.map=window.L.map(mapEl,{scrollWheelZoom:!!laptopMouse,zoomControl:false,preferCanvas:true,minZoom:3,maxZoom:18,wheelDebounceTime:60,wheelPxPerZoomLevel:105,worldCopyJump:false});\r\n        state.map.on('zoomend',function(){zoomInBtn.disabled=state.map.getZoom()>=state.map.getMaxZoom();zoomOutBtn.disabled=state.map.getZoom()<=state.map.getMinZoom()});\r\n        \/* Markers and editor remain native Leaflet; basemap upgrades to vector only if viable. *\/\r\n        installBasemap();root.dispatchEvent(new Event('timExplore:mapReady'));fitMap();drawMarkers();var firstPins=loadPlacePoints();if(pendingFocus){var pf=pendingFocus,ft=focusSeq;pendingFocus=null;Promise.resolve(firstPins).then(function(){displaySearchFocus(pf,ft)}).catch(function(){displaySearchFocus(pf,ft)})}mapStatus.hidden=true;$('[data-map-tools]').hidden=false;setTimeout(function(){if(state.map){state.map.invalidateSize();state.map.fire('zoomend')}},80)}).catch(function(){mapStatus.innerHTML=isEn?'<div class=\"timExplore-mapBadge\">Morocco <span>\u2726<\/span><\/div><p>Map unavailable. You can still browse the list.<\/p><button type=\"button\" data-map-retry>Retry<\/button>':'<div class=\"timExplore-mapBadge\">\u0627\u0644\u0645\u063a\u0631\u0628 <span>\u2726<\/span><\/div><p>\u062a\u0639\u0630\u0631 \u062a\u062d\u0645\u064a\u0644 \u0627\u0644\u062e\u0631\u064a\u0637\u0629\u060c \u064a\u0645\u0643\u0646\u0643 \u062a\u0635\u0641\u062d \u0627\u0644\u0648\u062c\u0647\u0627\u062a \u0641\u064a \u0627\u0644\u0642\u0627\u0626\u0645\u0629.<\/p><button type=\"button\" data-map-retry>\u0625\u0639\u0627\u062f\u0629 \u0627\u0644\u0645\u062d\u0627\u0648\u0644\u0629<\/button>';var btn=$('[data-map-retry]');btn.addEventListener('click',function(){state.leafletPromise=null;mapStatus.innerHTML=isEn?'<p>Retrying\u2026<\/p>':'<p>\u062c\u0627\u0631\u064d \u0625\u0639\u0627\u062f\u0629 \u0627\u0644\u062a\u062d\u0645\u064a\u0644\u2026<\/p>';prepareMap()})}).then(function(){loadingMap=false})}\r\n      function initMap(){if('IntersectionObserver' in window){var obs=new IntersectionObserver(function(entries){if(entries.some(function(e){return e.isIntersecting})){obs.disconnect();prepareMap()}},{rootMargin:'280px 0px'});obs.observe(mapEl)}else prepareMap()}\r\n      function translateUi(){if(!isEn)return;root.dir='ltr';\r\n        field.placeholder='Search for a city, place or trip\u2026';field.setAttribute('aria-label','Search Morocco');areaEl.options[0].textContent='All cities & regions';$$('[data-near] span').forEach(function(el){el.textContent='Near me'});$('[data-near]').title='Find nearest listed city';$('[data-near]').setAttribute('aria-label','Find nearest city');$$('[data-type]').forEach(function(b){b.textContent=enTypes[b.dataset.type]||b.dataset.type});$('[data-heading]').textContent='Places worth exploring';summary.textContent='Loading destinations\u2026';reset.textContent='Reset';more.textContent='Load more';$('[data-fit]').textContent='View Morocco';$('[data-map-expand]').setAttribute('aria-label','Widen map');$('[data-map-expand]').title='Widen map';$('[data-map-zoomin]').setAttribute('aria-label','Zoom in');$('[data-map-zoomin]').title='Zoom in';$('[data-map-zoomout]').setAttribute('aria-label','Zoom out');$('[data-map-zoomout]').title='Zoom out';$('[data-map-foot]').innerHTML='<i><\/i> Cities have centre markers; Places show verified individual locations only.';mapStatus.querySelector('.timExplore-mapBadge').innerHTML='Morocco <span>\u2726<\/span>';mapStatus.querySelector('p').textContent='Preparing the map\u2026';\r\n\r\n      }\r\n      \/* Review unmatched locations WITHOUT guessing coordinates or calling Geoapify.\r\n       * No customer sees these controls or the endpoint payload; access checked in PHP.\r\n       *\/\r\n      function setupManualReview(){\r\n        if(!cfg.reviewAdmin&&!cfg.reviewCityAdmin)return;\r\n        var open=$('[data-review-open]'),cityOpen=$('[data-city-review-open]'),panel=$('[data-review-panel]'),closer=$('[data-review-close]'),\r\n            picker=$('[data-review-select]'),maps=$('[data-review-google]'),save=$('[data-review-save]'),googleUrl=$('[data-review-url]'),resolveBtn=$('[data-review-resolve]'),\r\n            status=$('[data-review-status]'),help=$('[data-review-help]'),heading=$('[data-review-heading]'),suggestions=$('[data-review-candidates]');\r\n        if(!open||!panel)return;\r\n        var records=[],selected=null,point=null,temporary=null,busy=false,mode='places';\r\n        open.hidden=!cfg.reviewAdmin;cityOpen.hidden=!cfg.reviewCityAdmin;\r\n        function message(ar,en){status.textContent=isEn?en:ar}\r\n        function api(name,data){var fd=new FormData();fd.set('action',mode==='cities'?'tim_explore_v1283_city_'+(name==='unmapped'?'list':'save'):'tim_explore_v111_'+name);fd.set('nonce',mode==='cities'?cfg.cityReviewNonce:cfg.reviewNonce);\r\n          Object.keys(data||{}).forEach(function(k){fd.set(k,data[k])});\r\n          return fetch(cfg.ajax,{method:'POST',body:fd,credentials:'same-origin'}).then(function(r){return r.json().then(function(j){if(!r.ok||!j.success){var er=Error(j.data&&j.data.message||'Server error');er.needs_confirmation=!!(j.data&&j.data.needs_confirmation);throw er}return j.data})});\r\n        }\r\n        function previewGoogle(id,url){var fd=new FormData();fd.set('action',mode==='cities'?'tim_explore_v1283_city_preview':'tim_explore_v112_google_preview');fd.set('nonce',mode==='cities'?cfg.cityReviewNonce:cfg.reviewNonce);fd.set('id',id);fd.set('url',url);\r\n          return fetch(cfg.ajax,{method:'POST',body:fd,credentials:'same-origin'}).then(function(r){return r.json().then(function(j){if(!r.ok||!j.success){var er=Error(j.data&&j.data.message||'Server error');er.needs_confirmation=!!(j.data&&j.data.needs_confirmation);throw er}return j.data})});\r\n        }\r\n        function reviewIsolate(on){\r\n          state.reviewIsolated=!!on;\r\n          root.classList.toggle('is-reviewing-location',state.reviewIsolated);\r\n          if(!state.map)return;\r\n          if(on){\r\n            \/\/ Admin-only: hide all verified places and city centres while comparing the proposal.\r\n            dismissPreview();\r\n            if(state.placeLayer&&state.map.hasLayer(state.placeLayer))state.map.removeLayer(state.placeLayer);\r\n            if(state.layer&&state.map.hasLayer(state.layer))state.map.removeLayer(state.layer);\r\n          }else{\r\n            syncCityLayer();\r\n            if(state.type==='places'&&state.placeLayer&&!state.map.hasLayer(state.placeLayer))state.placeLayer.addTo(state.map);\r\n          }\r\n        }\r\n        function clearPoint(keepIsolation){\r\n          point=null;save.disabled=true;\r\n          if(temporary&&state.map)state.map.removeLayer(temporary);\r\n          temporary=null;\r\n          if(!keepIsolation)reviewIsolate(false);\r\n        }\r\n        function setReviewPoint(latlng){\r\n          clearPoint(true);point=latlng;reviewIsolate(true);\r\n          if(state.map&&window.L){\r\n            var iconUrl=mode==='cities'?cfg.cityReviewIcon:placeIconUrl(selected&&selected.type||''),w=window.innerWidth<=760?35:39;\r\n            var html='<div class=\"timExplore-reviewPin\"><i style=\"--x-review-svg:url(&quot;'+esc(iconUrl)+'&quot;)\" aria-hidden=\"true\"><\/i><\/div>';\r\n            temporary=window.L.marker([latlng.lat,latlng.lng],{\r\n              icon:window.L.divIcon({className:'timExplore-reviewMarker',html:html,iconSize:[w,w],iconAnchor:[Math.round(w\/2),Math.round(w*.88)]}),\r\n              keyboard:false,interactive:false,zIndexOffset:2000\r\n            }).addTo(state.map);\r\n          }\r\n          save.disabled=false;\r\n        }\r\n        var suggested=[];\r\n        function clearSuggestions(){suggested=[];suggestions.hidden=true;suggestions.innerHTML='';}\r\n        function placeSuggestions(items){clearSuggestions();suggested=items||[];if(!suggested.length)return;\r\n          var first=document.createElement('option');first.value='';first.textContent=isEn?'Choose a matching place (verify the pin)\u2026':'\u0627\u062e\u062a\u0631 \u0627\u0644\u0645\u0646\u0634\u0623\u0629 \u0627\u0644\u0645\u0637\u0627\u0628\u0642\u0629 \u0628\u0639\u062f \u0627\u0644\u062a\u062d\u0642\u0642 \u0645\u0646 \u0627\u0644\u0646\u0642\u0637\u0629\u2026';suggestions.appendChild(first);\r\n          suggested.forEach(function(c,i){var opt=document.createElement('option');opt.value=String(i);opt.textContent=c.name+(c.address?' \u2014 '+c.address:'');suggestions.appendChild(opt)});\r\n          suggestions.hidden=false;suggestions.value='';\r\n        }\r\n        \/\/ Geoapify can return several *possible* venues even when the Google short URL\r\n        \/\/ has no public pin coordinates. Show the top-ranked candidate immediately,\r\n        \/\/ not merely a dropdown with an unselected placeholder and a blank map.\r\n        \/\/ This is a PROPOSAL, not a verified point: manual approval stays mandatory.\r\n        function previewSuggestion(index){\r\n          var c=suggested[index];if(!c)return false;\r\n          var lat=Number(c.lat),lng=Number(c.lng);\r\n          if(!Number.isFinite(lat)||!Number.isFinite(lng)||lat<21||lat>37.7||lng< -18||lng>-.5)return false;\r\n          suggestions.value=String(index);\r\n          var ll=window.L&&window.L.latLng?window.L.latLng(lat,lng):{lat:lat,lng:lng};\r\n          setReviewPoint(ll);\r\n          if(state.map)state.map.flyTo([lat,lng],mode==='cities'?11:16,{duration:.45});\r\n          message('\u0639\u0644\u0627\u0645\u0629 \u0633\u0648\u062f\u0627\u0621 \u0644\u0645\u0648\u0642\u0639 \u0645\u062d\u062a\u0645\u0644: \u00ab'+String(c.name||'')+'\u00bb. \u062a\u062d\u0642\u0642 \u0645\u0646 \u0627\u0644\u0627\u0633\u0645 \u0648\u0627\u0644\u0645\u0628\u0646\u0649 \u0639\u0644\u0649 \u0627\u0644\u062e\u0631\u064a\u0637\u0629\u060c \u0623\u0648 \u0627\u062e\u062a\u0631 \u0627\u0642\u062a\u0631\u0627\u062d\u064b\u0627 \u0622\u062e\u0631 \u0642\u0628\u0644 \u0627\u0644\u062d\u0641\u0638.',\r\n                  'Black marker for a possible match: '+String(c.name||'')+'. Verify the name and building, or choose another option before saving.');\r\n          return true;\r\n        }\r\n        suggestions.addEventListener('change',function(){\r\n          clearPoint(true);if(selected)reviewIsolate(true);\r\n          if(suggestions.value==='')return;\r\n          previewSuggestion(Number(suggestions.value));\r\n        });\r\n        function hide(){panel.hidden=true;clearPoint();clearSuggestions();selected=null;picker.value='';googleUrl.value='';resolveBtn.disabled=true}\r\n        function refresh(){if(panel.hidden)return;var prev=selected&&selected.id;\r\n          api('unmapped',{area:mode==='cities'?'':state.area}).then(function(d){records=d.items||[];picker.innerHTML='';var first=document.createElement('option');first.value='';first.textContent=mode==='cities'?(isEn?'Choose a city to adjust\u2026':'\u0627\u062e\u062a\u0631 \u0645\u062f\u064a\u0646\u0629 \u0644\u062a\u0639\u062f\u064a\u0644 \u0639\u0644\u0627\u0645\u062a\u0647\u0627\u2026'):(isEn?'Choose an unmapped place\u2026':'\u0627\u062e\u062a\u0631 \u0645\u0643\u0627\u0646\u064b\u0627 \u063a\u064a\u0631 \u0645\u062d\u062f\u062f\u2026');picker.appendChild(first);\r\n            records.forEach(function(r){var opt=document.createElement('option');opt.value=String(r.id);opt.textContent=mode==='cities'?(areaName(r.title)+(r.saved?(isEn?' \u00b7 Saved pin':' \u00b7 \u0639\u0644\u0627\u0645\u0629 \u0645\u062d\u0641\u0648\u0638\u0629'):(isEn?' \u00b7 Default centre':' \u00b7 \u0645\u0631\u0643\u0632 \u0627\u0641\u062a\u0631\u0627\u0636\u064a'))):(r.title+' \u2014 '+r.city);picker.appendChild(opt)});\r\n            if(prev&&records.some(function(r){return r.id===prev}))picker.value=String(prev);\r\n            else selected=null;\r\n            maps.hidden=!selected||!selected.maps_url;\r\n            if(mode==='cities')message('\u0645\u062f\u0646 \u0645\u062a\u0627\u062d\u0629 \u0644\u062a\u0639\u062f\u064a\u0644 \u0627\u0644\u0639\u0644\u0627\u0645\u0629: '+fmt(records.length),'Cities available for marker editing: '+fmt(records.length));\r\n            else message('\u0623\u0645\u0627\u0643\u0646 \u062a\u062d\u062a\u0627\u062c \u0645\u0631\u0627\u062c\u0639\u0629: '+fmt(records.length),'Places needing review: '+fmt(records.length));\r\n          }).catch(function(err){message(err.message,err.message)});\r\n        }\r\n        function openReview(nextMode){\r\n          if(busy)return;\r\n          if(!panel.hidden&&mode===nextMode){hide();return}\r\n          hide();mode=nextMode;panel.hidden=false;\r\n          if(mode==='cities'&&state.type!=='cities')typeChoose('cities');\r\n          if(mode==='places'&&state.type!=='places')typeChoose('places');\r\n          heading.textContent=mode==='cities'?(isEn?'City marker review':'\u062a\u0639\u062f\u064a\u0644 \u0645\u0648\u0627\u0642\u0639 \u0639\u0644\u0627\u0645\u0627\u062a \u0627\u0644\u0645\u062f\u0646'):(isEn?'Place location review':'\u062a\u062d\u062f\u064a\u062f \u0645\u0648\u0642\u0639 \u0645\u0643\u0627\u0646 \u063a\u064a\u0631 \u0638\u0627\u0647\u0631');\r\n          help.textContent=mode==='cities'\r\n            ?(isEn?'Choose any published city, review its current marker, then paste a Google Maps share link or click the map to propose a new point. Save to confirm.':'\u0627\u062e\u062a\u0631 \u0623\u064a \u0645\u062f\u064a\u0646\u0629 \u0645\u0646\u0634\u0648\u0631\u0629\u060c \u0648\u0631\u0627\u062c\u0639 \u0645\u0648\u0636\u0639 \u0639\u0644\u0627\u0645\u062a\u0647\u0627 \u0627\u0644\u062d\u0627\u0644\u064a\u060c \u062b\u0645 \u0627\u0644\u0635\u0642 \u0631\u0627\u0628\u0637 Google Maps \u0623\u0648 \u0627\u0636\u063a\u0637 \u0639\u0644\u0649 \u0627\u0644\u062e\u0631\u064a\u0637\u0629 \u0644\u062a\u062d\u062f\u064a\u062f \u0645\u0648\u0636\u0639 \u062c\u062f\u064a\u062f. \u0644\u0627 \u064a\u064f\u0639\u062a\u0645\u062f \u0627\u0644\u062a\u063a\u064a\u064a\u0631 \u0642\u0628\u0644 \u0627\u0644\u062d\u0641\u0638.')\r\n            :(isEn?'Choose a place and paste its Google Maps share link to locate it, or click the map directly. Confirm the point before saving.':'\u0627\u062e\u062a\u0631 \u0627\u0644\u0645\u0643\u0627\u0646 \u0648\u0627\u0644\u0635\u0642 \u0631\u0627\u0628\u0637 \u0645\u0634\u0627\u0631\u0643\u062a\u0647 \u0645\u0646 Google Maps \u0644\u062a\u062d\u062f\u064a\u062f\u0647 \u062a\u0644\u0642\u0627\u0626\u064a\u064b\u0627\u060c \u0623\u0648 \u0627\u0636\u063a\u0637 \u0639\u0644\u0649 \u0627\u0644\u062e\u0631\u064a\u0637\u0629. \u062a\u0623\u0643\u062f \u0645\u0646 \u0627\u0644\u0646\u0642\u0637\u0629 \u0642\u0628\u0644 \u0627\u0644\u062d\u0641\u0638.');\r\n          maps.textContent='Google Maps';save.textContent=isEn?'Save location':'\u062d\u0641\u0638 \u0627\u0644\u0645\u0648\u0642\u0639';resolveBtn.textContent=isEn?'Locate on map':'\u062a\u062d\u062f\u064a\u062f \u0639\u0644\u0649 \u0627\u0644\u062e\u0631\u064a\u0637\u0629';googleUrl.placeholder=isEn?'Google Maps or 33.5731, -7.5898':'Google Maps \u0623\u0648 33.5731, -7.5898';clearSuggestions();refresh();adjustMapSize();\r\n        }\r\n        if(cfg.reviewAdmin)open.addEventListener('click',function(){openReview('places')});\r\n        if(cfg.reviewCityAdmin)cityOpen.addEventListener('click',function(){openReview('cities')});\r\n        closer.addEventListener('click',hide);\r\n        picker.addEventListener('change',function(){clearPoint(true);clearSuggestions();googleUrl.value='';selected=records.find(function(r){return String(r.id)===picker.value})||null;reviewIsolate(!!selected);resolveBtn.disabled=!selected;\r\n          if(!selected){maps.hidden=true;message('\u0627\u062e\u062a\u0631 \u0645\u0643\u0627\u0646\u064b\u0627 \u0644\u0644\u0628\u062f\u0621.','Choose a place first.');return}\r\n          maps.hidden=!selected.maps_url;maps.href=selected.maps_url||'#';\r\n          if(mode==='cities'){\r\n            message('\u0645\u0648\u0642\u0639 \u0627\u0644\u0645\u062f\u064a\u0646\u0629 \u0627\u0644\u062d\u0627\u0644\u064a \u064a\u0638\u0647\u0631 \u0648\u062d\u062f\u0647 \u0644\u0644\u0645\u0631\u0627\u062c\u0639\u0629. \u0627\u0646\u0642\u0631 \u0645\u0648\u0642\u0639\u064b\u0627 \u062c\u062f\u064a\u062f\u064b\u0627 \u0623\u0648 \u0623\u0644\u0635\u0642 \u0631\u0627\u0628\u0637 Google Maps\u061b \u0644\u0646 \u064a\u062a\u0645 \u062d\u0641\u0638 \u0627\u0644\u0645\u0648\u0642\u0639 \u0627\u0644\u062d\u0627\u0644\u064a \u0645\u062c\u062f\u062f\u064b\u0627 \u062f\u0648\u0646 \u062a\u063a\u064a\u064a\u0631.','The current city pin is isolated. Click a new position or paste a Google Maps link; the current point is not resaved automatically.');\r\n            if(selected.lat!=null&&selected.lng!=null&&window.L){setReviewPoint(window.L.latLng(selected.lat,selected.lng));point=null;save.disabled=true;}\r\n          }else message('\u062a\u0645 \u0625\u062e\u0641\u0627\u0621 \u0627\u0644\u0639\u0644\u0627\u0645\u0627\u062a \u0627\u0644\u0623\u062e\u0631\u0649. \u0623\u0644\u0635\u0642 \u0631\u0627\u0628\u0637 \u0627\u0644\u0645\u0643\u0627\u0646 \u0644\u062a\u0638\u0647\u0631 \u0646\u0642\u0637\u0629 \u0627\u0644\u0645\u0639\u0627\u064a\u0646\u0629 \u0648\u062d\u062f\u0647\u0627\u060c \u0623\u0648 \u0627\u062e\u062a\u0631 \u0645\u0648\u0642\u0639\u0647 \u064a\u062f\u0648\u064a\u064b\u0627.','Other markers are hidden. Paste the location link to preview only its pin, or select the location manually.');\r\n          if(state.map&&selected.lat!=null&&selected.lng!=null)state.map.flyTo([selected.lat,selected.lng],mode==='cities'?11:12,{duration:.45});\r\n        });\r\n        googleUrl.addEventListener('input',function(){resolveBtn.disabled=!selected||!googleUrl.value.trim()||busy;clearPoint(true);if(selected)reviewIsolate(true);clearSuggestions()});\r\n        googleUrl.addEventListener('paste',function(){setTimeout(function(){if(selected&&googleUrl.value.trim()&&!busy)resolveBtn.click()},90)});\r\n        resolveBtn.addEventListener('click',function(){if(!selected||!googleUrl.value.trim()||busy)return;\r\n          busy=true;resolveBtn.disabled=true;var picked=selected,link=googleUrl.value.trim();clearPoint(true);reviewIsolate(true);clearSuggestions();\r\n          message('\u062c\u0627\u0631\u064d \u0642\u0631\u0627\u0621\u0629 \u0625\u062d\u062f\u0627\u062b\u064a\u0627\u062a \u0631\u0627\u0628\u0637 Google Maps\u2026','Reading the Google Maps location\u2026');\r\n          previewGoogle(picked.id,link).then(function(data){\r\n            if(selected!==picked)return;\r\n            if(Array.isArray(data.candidates)&&data.candidates.length){\r\n              placeSuggestions(data.candidates);\r\n              \/\/ Previously the first <option> stayed selected and NO map pin\r\n              \/\/ appeared. Always draw a valid top candidate immediately.\r\n              var displayed=false;\r\n              for(var ci=0;ci<suggested.length;ci++){\r\n                if(previewSuggestion(ci)){displayed=true;break}\r\n              }\r\n              if(!displayed){\r\n                clearPoint(true);\r\n                message('\u0644\u0645 \u062a\u064f\u0631\u062c\u0639 \u0627\u0644\u0645\u0648\u0627\u0642\u0639 \u0627\u0644\u0645\u062d\u062a\u0645\u0644\u0629 \u0625\u062d\u062f\u0627\u062b\u064a\u0627\u062a \u0635\u0627\u0644\u062d\u0629. \u062a\u062d\u0642\u0642 \u0645\u0646 \u0631\u0627\u0628\u0637 \u0627\u0644\u0645\u0643\u0627\u0646 \u0623\u0648 \u0627\u0644\u0635\u0642 \u0625\u062d\u062f\u0627\u062b\u064a\u0627\u062a \u062f\u0628\u0648\u0633\u0647.',\r\n                        'The suggestions contain no valid coordinates. Check the venue link or paste its pin coordinates.');\r\n              }\r\n              return;\r\n            }\r\n            clearSuggestions();\r\n            var ll=window.L&&window.L.latLng?window.L.latLng(Number(data.lat),Number(data.lng)):{lat:Number(data.lat),lng:Number(data.lng)};\r\n            setReviewPoint(ll);\r\n            if(state.map)state.map.flyTo([ll.lat,ll.lng],mode==='cities'?11:16,{duration:.45});\r\n            if(data.confidence==='suggestion'){\r\n              message('\u0627\u0644\u0646\u0642\u0637\u0629 \u0645\u0642\u062a\u0631\u062d\u0629 \u0648\u0644\u064a\u0633\u062a \u0645\u0624\u0643\u062f\u0629. \u062a\u0638\u0647\u0631 \u0648\u062d\u062f\u0647\u0627 \u0628\u0627\u0644\u0623\u0633\u0648\u062f\u061b \u062a\u062d\u0642\u0642 \u0645\u0646\u0647\u0627 \u0642\u0628\u0644 \u0627\u0644\u062d\u0641\u0638.','Suggested, not verified: only the black pin is shown. Verify before saving.');\r\n            }else{\r\n              message('\u062a\u0638\u0647\u0631 \u0627\u0644\u0639\u0644\u0627\u0645\u0629 \u0627\u0644\u0645\u0642\u062a\u0631\u062d\u0629 \u0648\u062d\u062f\u0647\u0627. \u062a\u0623\u0643\u062f \u0645\u0646 \u0627\u0644\u0645\u0648\u0636\u0639 \u062b\u0645 \u0627\u062d\u0641\u0638 \u0644\u0625\u0638\u0647\u0627\u0631 \u0628\u0642\u064a\u0629 \u0627\u0644\u0623\u0645\u0627\u0643\u0646.','The proposed pin is isolated. Confirm and save to restore other place markers.');\r\n            }\r\n          }).catch(function(err){if(selected===picked){clearPoint(true);reviewIsolate(true);message(err.message,err.message)}})\r\n          .then(function(){busy=false;resolveBtn.disabled=!selected||!googleUrl.value.trim()});\r\n        });\r\n        save.addEventListener('click',function(){if(!selected||!point||busy)return;busy=true;save.disabled=true;\r\n          var saved=selected;message('\u062c\u0627\u0631\u064d \u062d\u0641\u0638 \u0627\u0644\u0625\u062d\u062f\u0627\u062b\u064a\u0627\u062a\u2026','Saving coordinates\u2026');\r\n          var savedMode=mode;\r\n          function commit(confirmFar){return api('manual_save',{id:saved.id,lat:point.lat.toFixed(7),lng:point.lng.toFixed(7),confirm_far:confirmFar?'1':''}).catch(function(err){\r\n            if(savedMode==='cities'&&err.needs_confirmation){\r\n              if(window.confirm(isEn?'This is more than 100 km from the previous city marker. Are you sure you want to save?':'\u0627\u0644\u0645\u0648\u0642\u0639 \u0627\u0644\u062c\u062f\u064a\u062f \u0628\u0639\u064a\u062f \u0623\u0643\u062b\u0631 \u0645\u0646 100 \u0643\u0645 \u0639\u0646 \u0639\u0644\u0627\u0645\u0629 \u0627\u0644\u0645\u062f\u064a\u0646\u0629 \u0627\u0644\u0633\u0627\u0628\u0642\u0629. \u0647\u0644 \u062a\u0624\u0643\u062f \u062d\u0641\u0638 \u0647\u0630\u0627 \u0627\u0644\u0645\u0648\u0636\u0639\u061f'))return commit(true);\r\n            }\r\n            throw err;\r\n          });}\r\n          commit(false).then(function(data){\r\n            \/\/ Restore existing verified pins immediately after the server confirms saving.\r\n            var confirmedLat=Number(data.lat),confirmedLng=Number(data.lng);\r\n            if(savedMode==='cities'){\r\n              clearPoint();clearSuggestions();selected=null;googleUrl.value='';resolveBtn.disabled=true;\r\n              if(state.map&&Number.isFinite(confirmedLat)&&Number.isFinite(confirmedLng))state.map.flyTo([confirmedLat,confirmedLng],11,{duration:.5});\r\n              message('\u062a\u0645 \u062d\u0641\u0638 \u0645\u0648\u0642\u0639 \u0627\u0644\u0645\u062f\u064a\u0646\u0629\u061b \u062c\u0627\u0631\u064d \u0625\u0639\u0627\u062f\u0629 \u0625\u0638\u0647\u0627\u0631 \u0639\u0644\u0627\u0645\u0627\u062a \u0627\u0644\u0645\u062f\u0646 \u0627\u0644\u0623\u062e\u0631\u0649.','City position saved; restoring the remaining city markers.');\r\n              \/\/ The catalogue is versioned: the save endpoint invalidates its cache.\r\n              \/\/ Refresh marker coordinates without mutating filters, search or visitor mode.\r\n              return request({kind:'catalogue'},false).then(function(cat){\r\n                state.areas=cat.areas||state.areas;state.facets=cat.facets||state.facets;\r\n                state.reviewFocusCityKey=state.areas.find(function(a){return Number(a.city_id)===Number(saved.id)})?.key||'';\r\n                drawMarkers();loadPlacePoints({keepView:true});\r\n                message('\u062a\u0645 \u062d\u0641\u0638 \u0645\u0648\u0642\u0639 \u00ab'+saved.title+'\u00bb \u0648\u062a\u062d\u062f\u064a\u062b \u0627\u0644\u0639\u0644\u0627\u0645\u0627\u062a \u0639\u0644\u0649 \u0627\u0644\u062e\u0631\u064a\u0637\u0629.','Saved '+saved.title+' and refreshed the map markers.');\r\n                return api('unmapped',{});\r\n              });\r\n            }\r\n            state.reviewFocusId=Number(saved.id);\r\n            clearPoint();clearSuggestions();selected=null;googleUrl.value='';resolveBtn.disabled=true;\r\n            if(state.map&&Number.isFinite(confirmedLat)&&Number.isFinite(confirmedLng)){\r\n              state.map.flyTo([confirmedLat,confirmedLng],14,{duration:.5});\r\n            }\r\n            \/\/ Retain existing markers until refreshed results arrive. The saved pin is\r\n            \/\/ highlighted within the complete verified set, not confused with a proposal.\r\n            loadPlacePoints({preserveExisting:true,keepView:true});\r\n            message('\u062a\u0645 \u0627\u0644\u062d\u0641\u0638. \u0639\u0627\u062f\u062a \u0639\u0644\u0627\u0645\u0627\u062a \u0627\u0644\u0623\u0645\u0627\u0643\u0646 \u0648\u064a\u062c\u0631\u064a \u0625\u0628\u0631\u0627\u0632 \u0627\u0644\u0639\u0644\u0627\u0645\u0629 \u0627\u0644\u062c\u062f\u064a\u062f\u0629.','Saved. Other place pins are restored; the new pin will be highlighted.');\r\n            return api('unmapped',{area:state.area});\r\n          }).then(function(d){records=d.items||[];picker.innerHTML='';var opt=document.createElement('option');opt.value='';opt.textContent=savedMode==='cities'?(isEn?'Choose another city\u2026':'\u0627\u062e\u062a\u0631 \u0645\u062f\u064a\u0646\u0629 \u0623\u062e\u0631\u0649\u2026'):(isEn?'Choose another place\u2026':'\u0627\u062e\u062a\u0631 \u0645\u0643\u0627\u0646\u064b\u0627 \u0622\u062e\u0631\u2026');picker.appendChild(opt);\r\n            records.forEach(function(r){var o=document.createElement('option');o.value=String(r.id);o.textContent=savedMode==='cities'?areaName(r.title):(r.title+' \u2014 '+r.city);picker.appendChild(o)});\r\n            maps.hidden=true;\r\n            if(savedMode==='places')message('\u062a\u0645 \u062d\u0641\u0638 '+saved.title+'. \u0638\u0647\u0631\u062a \u0628\u0642\u064a\u0629 \u0627\u0644\u0623\u0645\u0627\u0643\u0646\u060c \u0648\u0627\u0644\u0645\u0648\u0642\u0639 \u0627\u0644\u062c\u062f\u064a\u062f \u0645\u0645\u064a\u0632 \u0628\u0625\u0637\u0627\u0631 \u0623\u0633\u0648\u062f. \u0627\u0644\u0645\u062a\u0628\u0642\u064a: '+fmt(records.length),'Saved '+saved.title+'. Nearby places are restored; the new pin has a black outline. Remaining: '+fmt(records.length));\r\n          }).catch(function(err){message(err.message,err.message);save.disabled=!point}).then(function(){busy=false});\r\n        });\r\n        function onMapClick(e){if(panel.hidden||!selected||busy||!state.map||!window.L)return;\r\n          setReviewPoint(e.latlng);message('\u062a\u0645 \u062a\u0645\u064a\u064a\u0632 \u0627\u0644\u0645\u0648\u0642\u0639 \u0628\u0627\u0644\u0623\u0633\u0648\u062f \u0648\u0625\u062e\u0641\u0627\u0621 \u0628\u0642\u064a\u0629 \u0627\u0644\u0639\u0644\u0627\u0645\u0627\u062a \u0645\u0624\u0642\u062a\u064b\u0627. \u0627\u062d\u0641\u0638 \u0628\u0639\u062f \u0627\u0644\u062a\u062d\u0642\u0642.','The chosen point is black; other pins are hidden until you confirm the save.');\r\n        }\r\n        \/\/ The map initializes lazily; attach exactly once after Leaflet becomes available.\r\n        root.addEventListener('timExplore:mapReady',function(){if(state.map)state.map.on('click',onMapClick)});\r\n        if(state.map)state.map.on('click',onMapClick);\r\n        \/\/ Update list when city filter changes, but do not create extra visitor requests.\r\n        areaEl.addEventListener('change',function(){if(!panel.hidden){hide()}});\r\n      }\r\n      function setupGeoAdmin(){\r\n        var btn=$('[data-locate-admin]');if(!btn||!cfg.geocodeAdmin)return;\r\n        btn.hidden=false;btn.classList.add('timExplore-geocodeBtn');\r\n        btn.addEventListener('click',function(){\r\n          if(btn.disabled)return;\r\n          if(!window.confirm(isEn?'Find verified coordinates for Places without coordinates? This may take several minutes.':'\u062a\u062d\u062f\u064a\u062f \u0645\u0648\u0627\u0642\u0639 \u0627\u0644\u0623\u0645\u0627\u0643\u0646 \u0627\u0644\u062a\u064a \u062a\u0641\u062a\u0642\u062f \u0625\u062d\u062f\u0627\u062b\u064a\u0627\u062a \u062f\u0642\u064a\u0642\u0629\u061f \u0642\u062f \u064a\u0633\u062a\u063a\u0631\u0642 \u0630\u0644\u0643 \u0639\u062f\u0629 \u062f\u0642\u0627\u0626\u0642\u060c \u0648\u0644\u0646 \u064a\u062d\u0641\u0638 \u0627\u0644\u0646\u062a\u0627\u0626\u062c \u063a\u064a\u0631 \u0627\u0644\u0645\u0648\u062b\u0648\u0642\u0629.'))return;\r\n          btn.disabled=true;var old=btn.textContent,done=0,found=0,unmatched=0,failed=0;\r\n          function api(action,body){var fd=new FormData();fd.set('action','tim_explore_v150_'+action);fd.set('nonce',cfg.geocodeNonce);Object.keys(body||{}).forEach(function(k){fd.set(k,body[k])});return fetch(cfg.ajax,{method:'POST',body:fd,credentials:'same-origin'}).then(function(r){return r.json()}).then(function(j){if(!j.success)throw Error(j.data&&j.data.message||'Server error');return j.data||{}})}\r\n          api('geo_queue',{}).then(function(data){var ids=data.ids||[];\r\n            if(!ids.length){btn.textContent=isEn?'No eligible places to geocode right now':'\u0644\u0627 \u062a\u0648\u062c\u062f \u0623\u0645\u0627\u0643\u0646 \u0645\u062a\u0627\u062d\u0629 \u0644\u0644\u0645\u0639\u0627\u0644\u062c\u0629 \u0627\u0644\u0622\u0646';btn.disabled=false;loadPlacePoints();return}\r\n            function next(){\r\n              if(!ids.length){\r\n                btn.disabled=false;\r\n                btn.textContent=isEn?('Confirmed: '+found+' \u00b7 Unmatched: '+unmatched+' \u00b7 Errors: '+failed):('\u0645\u0648\u0627\u0642\u0639 \u0645\u0624\u0643\u062f\u0629: '+found+' \u00b7 \u062a\u062d\u062a\u0627\u062c \u0645\u0631\u0627\u062c\u0639\u0629: '+unmatched+' \u00b7 \u0623\u062e\u0637\u0627\u0621: '+failed);\r\n                loadPlacePoints();return;\r\n              }\r\n              var id=ids.shift();btn.textContent=(isEn?'Checking ':'\u062c\u0627\u0631\u064d \u0641\u062d\u0635 ')+(++done)+' \/ '+(done+ids.length);\r\n              var attempts=0;\r\n              function tryOne(){return api('geo_one',{id:id}).catch(function(e){\r\n                if(++attempts<2)return new Promise(function(resolve){setTimeout(resolve,4500)}).then(tryOne);\r\n                throw e;\r\n              })}\r\n              tryOne().then(function(r){if(r.located&&!r.already)found++;else if(!r.located)unmatched++;})\r\n                .catch(function(){failed++}).then(function(){setTimeout(next,1800)});\r\n            }\r\n            next();\r\n          }).catch(function(e){btn.disabled=false;btn.textContent=old;alert(e.message)});\r\n        });\r\n      }\r\n      function init(){syncThemeFonts();initUrl();translateUi();setupGeoAdmin();setupManualReview();field.value=state.search;paintTabs();title();initMap();\r\n        request({kind:'catalogue'},false).then(function(d){state.areas=d.areas||[];state.facets=d.facets||{};areaEl.length=1;state.areas.forEach(function(a){var o=document.createElement('option');o.value=a.key;o.textContent=areaName(a.name);areaEl.appendChild(o)});if(!state.areas.some(function(a){return a.key===state.area}))state.area='';areaEl.value=state.area;syncCityToggle();\r\n          renderCategories();title();drawMarkers();loadPlacePoints();load(false);\r\n        }).catch(function(){state.area='';state.category='';renderCategories();areaEl.value='';syncCityToggle();load(false)});\r\n      }\r\n      init();\r\n    })();\r\n    <\/script>\r\n    <\/div>\n\t\t\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>\u0627\u0643\u062a\u0634\u0641 \u0627\u0644\u0645\u063a\u0631\u0628 \u0639\u0644\u0649 \u0637\u0631\u064a\u0642\u062a\u0643! \u0645\u0646 \u0627\u0644\u0645\u062f\u0646 \u0627\u0644\u0639\u062a\u064a\u0642\u0629 \u0625\u0644\u0649 \u0627\u0644\u062a\u062c\u0627\u0631\u0628 \u0627\u0644\u0645\u062d\u0644\u064a\u0629 \u0648\u0627\u0644\u0623\u0645\u0627\u0643\u0646 \u0627\u0644\u0645\u0645\u064a\u0632\u0629\u061b \u062e\u0631\u064a\u0637\u0629 \u0648\u0627\u062d\u062f\u0629 \u062a\u0633\u0627\u0639\u062f\u0643 \u0639\u0644\u0649 \u0627\u0644\u0639\u062b\u0648\u0631 \u0639\u0644\u0649 \u0648\u062c\u0647\u062a\u0643 \u0627\u0644\u062a\u0627\u0644\u064a\u0629.<\/p>","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-2269","page","type-page","status-publish","hentry"],"blocksy_meta":{"has_hero_section":"disabled","styles_descriptor":{"styles":{"desktop":"","tablet":"","mobile":""},"google_fonts":[],"version":8}},"_links":{"self":[{"href":"https:\/\/thatismorocco.com\/fr\/wp-json\/wp\/v2\/pages\/2269","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/thatismorocco.com\/fr\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/thatismorocco.com\/fr\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/thatismorocco.com\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/thatismorocco.com\/fr\/wp-json\/wp\/v2\/comments?post=2269"}],"version-history":[{"count":11,"href":"https:\/\/thatismorocco.com\/fr\/wp-json\/wp\/v2\/pages\/2269\/revisions"}],"predecessor-version":[{"id":2295,"href":"https:\/\/thatismorocco.com\/fr\/wp-json\/wp\/v2\/pages\/2269\/revisions\/2295"}],"wp:attachment":[{"href":"https:\/\/thatismorocco.com\/fr\/wp-json\/wp\/v2\/media?parent=2269"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}