{"id":10921,"date":"2026-08-26T10:55:41","date_gmt":"2026-08-26T07:25:41","guid":{"rendered":"https:\/\/skyland.om\/projects\/"},"modified":"2026-09-15T12:15:45","modified_gmt":"2026-09-15T08:45:45","slug":"projects","status":"publish","type":"page","link":"https:\/\/skyland.om\/en\/projects\/","title":{"rendered":"Projects"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"10921\" class=\"elementor elementor-10921\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-2f7229f e-con-full e-flex e-con e-parent\" data-id=\"2f7229f\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-efac109 elementor-widget elementor-widget-html\" data-id=\"efac109\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<section class=\"projects-hero\" dir=\"ltr\" lang=\"en\" data-reviewed=\"47\" data-selected=\"15\">\n  <div class=\"projects-hero__inner\">\n    <h1 class=\"projects-hero__title\">Projects That Have Earned Our Approval<\/h1>\n\n    <p class=\"projects-hero__subtitle\">\n      A selection of the safest investment opportunities that have successfully passed Skyland's <span class=\"projects-hero__number\">7<\/span> rigorous\n      <br class=\"projects-hero__desktop-break\">\n      legal and financial screening criteria.\n    <\/p>\n\n    <div class=\"projects-hero__notice\">\n      <div class=\"projects-hero__notice-content\">\n        <svg class=\"projects-hero__notice-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\">\n          <path d=\"M12 2.25 4.5 5.1v5.48c0 5.05 3.2 9.55 7.5 11.17 4.3-1.62 7.5-6.12 7.5-11.17V5.1L12 2.25Z\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linejoin=\"round\"\/>\n          <path d=\"M12 7.15v5.25M12 16.1h.01\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.9\" stroke-linecap=\"round\"\/>\n        <\/svg>\n\n        <p class=\"projects-hero__notice-text\">\n          <strong>Transparency Principle:<\/strong>\n          Out of <span class=\"projects-hero__reviewed projects-hero__number\"><\/span> projects reviewed, <span class=\"projects-hero__selected projects-hero__number\"><\/span> successfully passed our rigorous evaluation criteria and have been selected as recommended opportunities.\n        <\/p>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/section>\n\n<script>\n(() => {\n  const digitMap = {\n    \"\u06f0\": \"0\",\n    \"\u06f1\": \"1\",\n    \"\u06f2\": \"2\",\n    \"\u06f3\": \"3\",\n    \"\u06f4\": \"4\",\n    \"\u06f5\": \"5\",\n    \"\u06f6\": \"6\",\n    \"\u06f7\": \"7\",\n    \"\u06f8\": \"8\",\n    \"\u06f9\": \"9\",\n    \"\u0660\": \"0\",\n    \"\u0661\": \"1\",\n    \"\u0662\": \"2\",\n    \"\u0663\": \"3\",\n    \"\u0664\": \"4\",\n    \"\u0665\": \"5\",\n    \"\u0666\": \"6\",\n    \"\u0667\": \"7\",\n    \"\u0668\": \"8\",\n    \"\u0669\": \"9\"\n  };\n\n  const toLatinDigits = (value) => String(value ?? \"\").replace(\/[\u06f0-\u06f9\u0660-\u0669]\/g, digit => digitMap[digit]);\n\n  const wrapNumbersInTextNode = (textNode) => {\n    if (!textNode || !textNode.nodeValue) return;\n    if (textNode.parentElement?.closest(\".projects-hero__number\")) return;\n\n    const source = toLatinDigits(textNode.nodeValue);\n\n    if (!\/[0-9]\/.test(source)) {\n      if (source !== textNode.nodeValue) textNode.nodeValue = source;\n      return;\n    }\n\n    const fragment = document.createDocumentFragment();\n    const parts = source.split(\/([0-9]+(?:[.,][0-9]+)*(?:\\s*[%])?)\/g);\n\n    parts.forEach(part => {\n      if (!part) return;\n\n      if (\/^[0-9]+(?:[.,][0-9]+)*(?:\\s*[%])?$\/.test(part)) {\n        const span = document.createElement(\"span\");\n        span.className = \"projects-hero__number\";\n        span.textContent = part;\n        fragment.appendChild(span);\n      } else {\n        fragment.appendChild(document.createTextNode(part));\n      }\n    });\n\n    textNode.replaceWith(fragment);\n  };\n\n  const normalizeNumbers = (root) => {\n    if (!root) return;\n\n    if (root.nodeType === Node.TEXT_NODE) {\n      wrapNumbersInTextNode(root);\n      return;\n    }\n\n    if (root.nodeType !== Node.ELEMENT_NODE) return;\n\n    const walker = document.createTreeWalker(\n      root,\n      NodeFilter.SHOW_TEXT,\n      {\n        acceptNode(node) {\n          if (node.parentElement?.closest(\".projects-hero__number\")) {\n            return NodeFilter.FILTER_REJECT;\n          }\n\n          return NodeFilter.FILTER_ACCEPT;\n        }\n      }\n    );\n\n    const textNodes = [];\n\n    while (walker.nextNode()) {\n      textNodes.push(walker.currentNode);\n    }\n\n    textNodes.forEach(wrapNumbersInTextNode);\n  };\n\n  document.querySelectorAll(\".projects-hero\").forEach(hero => {\n    hero.setAttribute(\"dir\", \"ltr\");\n    hero.setAttribute(\"lang\", \"en\");\n\n    const reviewedNode = hero.querySelector(\".projects-hero__reviewed\");\n    const selectedNode = hero.querySelector(\".projects-hero__selected\");\n\n    if (reviewedNode) reviewedNode.textContent = toLatinDigits(hero.dataset.reviewed || \"0\");\n    if (selectedNode) selectedNode.textContent = toLatinDigits(hero.dataset.selected || \"0\");\n\n    normalizeNumbers(hero);\n\n    const observer = new MutationObserver(mutations => {\n      observer.disconnect();\n\n      mutations.forEach(mutation => {\n        if (mutation.type === \"characterData\") {\n          normalizeNumbers(mutation.target);\n          return;\n        }\n\n        mutation.addedNodes.forEach(node => {\n          normalizeNumbers(node);\n        });\n      });\n\n      observer.observe(hero, {\n        subtree: true,\n        childList: true,\n        characterData: true\n      });\n    });\n\n    observer.observe(hero, {\n      subtree: true,\n      childList: true,\n      characterData: true\n    });\n  });\n})();\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a0816ae elementor-widget elementor-widget-html\" data-id=\"a0816ae\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<section class=\"sky-projects-section\" dir=\"ltr\" lang=\"en\">\n  <div class=\"sky-projects-shell\">\n    <div class=\"sky-projects-filter\" id=\"skyProjectsFilter\">\n      <div class=\"sky-projects-filter__top\">\n        <div class=\"sky-projects-filter__heading\">\n          <span class=\"sky-projects-filter__heading-icon\" aria-hidden=\"true\">\n            <svg viewBox=\"0 0 24 24\"><path d=\"M4 6h16M7 12h10M10 18h4\"\/><circle cx=\"17\" cy=\"6\" r=\"2\"\/><circle cx=\"8\" cy=\"12\" r=\"2\"\/><circle cx=\"15\" cy=\"18\" r=\"2\"\/><\/svg>\n          <\/span>\n          <div>\n            <h2>Find the Right Project for You<\/h2>\n            <p>Search and filter using the information available for these projects<\/p>\n          <\/div>\n        <\/div>\n        <div class=\"sky-projects-filter__counter\">\n          <strong id=\"skyProjectsCount\" class=\"sky-projects-number\">22<\/strong>\n          <span id=\"skyProjectsCountLabel\">projects found<\/span>\n        <\/div>\n      <\/div>\n\n      <div class=\"sky-projects-filter__controls\">\n        <label class=\"sky-projects-filter__search\">\n          <span class=\"sky-projects-filter__control-icon\" aria-hidden=\"true\">\n            <svg viewBox=\"0 0 24 24\"><circle cx=\"11\" cy=\"11\" r=\"6\"\/><path d=\"m16 16 4 4\"\/><\/svg>\n          <\/span>\n          <input id=\"skyProjectSearch\" type=\"search\" autocomplete=\"off\" placeholder=\"Project name, location, unit type, price...\" aria-label=\"Search projects\">\n          <button class=\"sky-projects-filter__search-clear\" id=\"skyProjectSearchClear\" type=\"button\" aria-label=\"Clear search\">\n            <svg viewBox=\"0 0 24 24\"><path d=\"m7 7 10 10M17 7 7 17\"\/><\/svg>\n          <\/button>\n        <\/label>\n\n        <label class=\"sky-projects-filter__select-wrap\">\n          <span class=\"sky-projects-filter__control-icon\" aria-hidden=\"true\">\n            <svg viewBox=\"0 0 24 24\"><path d=\"M12 21s6-5.3 6-11a6 6 0 1 0-12 0c0 5.7 6 11 6 11Z\"\/><circle cx=\"12\" cy=\"10\" r=\"2.4\"\/><\/svg>\n          <\/span>\n          <select id=\"skyProjectLocation\" aria-label=\"Filter by location\">\n            <option value=\"\">All Locations<\/option>\n          <\/select>\n        <\/label>\n\n        <label class=\"sky-projects-filter__select-wrap\">\n          <span class=\"sky-projects-filter__control-icon\" aria-hidden=\"true\">\n            <svg viewBox=\"0 0 24 24\"><path d=\"m5 12 4 4L19 6\"\/><\/svg>\n          <\/span>\n          <select id=\"skyProjectStatus\" aria-label=\"Filter by status\">\n            <option value=\"\">All Statuses<\/option>\n          <\/select>\n        <\/label>\n\n        <label class=\"sky-projects-filter__select-wrap\">\n          <span class=\"sky-projects-filter__control-icon\" aria-hidden=\"true\">\n            <svg viewBox=\"0 0 24 24\"><path d=\"M4 5h16v14H4zM8 5v14M16 5v14\"\/><\/svg>\n          <\/span>\n          <select id=\"skyProjectUnit\" aria-label=\"Filter by unit type\">\n            <option value=\"\">All Unit Types<\/option>\n          <\/select>\n        <\/label>\n\n        <label class=\"sky-projects-filter__select-wrap sky-projects-filter__select-wrap--sort\">\n          <span class=\"sky-projects-filter__control-icon\" aria-hidden=\"true\">\n            <svg viewBox=\"0 0 24 24\"><path d=\"M8 6h12M8 12h8M8 18h4M4 5v14M2 17l2 2 2-2\"\/><\/svg>\n          <\/span>\n          <select id=\"skyProjectSort\" aria-label=\"Sort projects\">\n            <option value=\"default\">Recommended Order<\/option>\n            <option value=\"price-asc\">Lowest Price<\/option>\n            <option value=\"price-desc\">Highest Price<\/option>\n            <option value=\"name\">Project Name<\/option>\n          <\/select>\n        <\/label>\n\n        <button class=\"sky-projects-filter__reset\" id=\"skyProjectsReset\" type=\"button\" disabled>\n          <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M4 12a8 8 0 1 0 2.34-5.66L4 8.68M4 4v4.68h4.68\"\/><\/svg>\n          <span>Clear Filters<\/span>\n        <\/button>\n      <\/div>\n\n      <div class=\"sky-projects-filter__footer\">\n        <div class=\"sky-projects-filter__active\" id=\"skyProjectsActiveFilters\" aria-live=\"polite\"><\/div>\n      <\/div>\n    <\/div>\n\n    <div class=\"sky-projects-empty\" id=\"skyProjectsEmpty\" hidden>\n      <span class=\"sky-projects-empty__icon\" aria-hidden=\"true\">\n        <svg viewBox=\"0 0 24 24\"><circle cx=\"11\" cy=\"11\" r=\"6\"\/><path d=\"m16 16 4 4M8.5 11h5\"\/><\/svg>\n      <\/span>\n      <strong>No projects match your criteria<\/strong>\n      <span>Try changing your search term or filters.<\/span>\n    <\/div>\n\n    <div class=\"sky-projects-grid\" id=\"skyProjectsGrid\"><\/div>\n  <\/div>\n<\/section>\n\n<script>\n(() => {\n  const contactUrl = \"https:\/\/skyland.om\/contact-us\/\";\n  const fallbackImage = \"https:\/\/images.unsplash.com\/photo-1600596542815-ffad4c1539a9?auto=format&fit=crop&q=82&w=1400\";\n\n  const projects = [\n    {\n      name: \"Azura I Beachfront Residences\",\n      location: \"Al Mouj\",\n      handover: \"Q4 2028\",\n      badge: \"Purchase from Owner\",\n      image: \"https:\/\/cdn.prod.website-files.com\/60a80329df09006ff2f8d9af\/6913d3264814f5cb8af92efd_Azura-beach.jpg\",\n      url: \"https:\/\/skyland.om\/azura1-project\/\",\n      units: [\n        [\"One Bedroom\", \"143,000 OMR\", \"Purchase from Owner\"],\n        [\"Two Bedroom\", \"200,000 OMR\", \"Unavailable\"],\n        [\"Three Bedroom\", \"\u2014\u2014\u2014\", \"Unavailable\"]\n      ]\n    },\n    {\n      name: \"Azura II Beachfront Residences\",\n      location: \"Al Mouj\",\n      handover: \"Q4 2028\",\n      badge: \"Purchase from Owner\",\n      image: \"https:\/\/skyland.om\/wp-content\/uploads\/2026\/08\/Azura-2-scaled.webp\",\n      url: \"https:\/\/skyland.om\/azura2-project\/\",\n      units: [\n        [\"One Bedroom\", \"124,500 OMR\", \"Purchase from Owner\"],\n        [\"Two Bedroom\", \"232,000 OMR\", \"Purchase from Owner\"],\n        [\"Three Bedroom\", \"314,000 OMR\", \"Purchase from Owner\"]\n      ]\n    },\n    {\n      name: \"Azura IV Beachfront Residences\",\n      location: \"Al Mouj\",\n      handover: \"Delivery in 3 Years\",\n      badge: \"Purchase from Owner\",\n      image: \"https:\/\/skyland.om\/wp-content\/uploads\/2026\/08\/Azura-4.webp\",\n      url: \"https:\/\/skyland.om\/azura4-project\/\",\n      units: [\n        [\"One Bedroom\", \"89,900 OMR\", \"Purchase from Owner\"],\n        [\"Two Bedroom\", \"\u2014\u2014\u2014\", \"Unavailable\"],\n        [\"Three Bedroom\", \"\u2014\u2014\u2014\", \"Unavailable\"]\n      ]\n    },\n    {\n      name: \"Golf Links Residences\",\n      location: \"Al Mouj\",\n      handover: \"Based on Project Phase\",\n      badge: \"Purchase from Owner\",\n      image: \"https:\/\/skyland.om\/wp-content\/uploads\/2026\/08\/Golf-Links.webp\",\n      url: \"https:\/\/skyland.om\/golf-links-residences-project\/\",\n      units: [\n        [\"One Bedroom\", \"93,000 OMR\", \"Available\"],\n        [\"Two Bedroom\", \"\u2014\u2014\u2014\", \"Unavailable\"],\n        [\"Three Bedroom\", \"\u2014\u2014\u2014\", \"Unavailable\"],\n        [\"4 Bedroom Townhouse\", \"436,000 OMR\", \"Available\"]\n      ]\n    },\n    {\n      name: \"Wadi Zaha Project\",\n      location: \"Sultan Haitham City\",\n      handover: \"New Project\",\n      badge: \"Purchase from Developer\",\n      image: \"https:\/\/skyland.om\/wp-content\/uploads\/2026\/08\/Wadi-Zaha-scaled.webp\",\n      url: \"https:\/\/skyland.om\/wadi-zaha-project\/\",\n      units: [\n        [\"Studio\", \"61,850 OMR\", \"Available\"],\n        [\"One Bedroom\", \"72,660 OMR\", \"Available\"],\n        [\"Two Bedroom\", \"99,430 OMR\", \"Available\"],\n        [\"Three Bedroom\", \"147,000 OMR\", \"Available\"],\n        [\"Sky Villa\", \"170,625 OMR\", \"Available\"]\n      ]\n    },\n    {\n      name: \"Yenaier Project\",\n      location: \"Sultan Haitham City\",\n      handover: \"Government Project\",\n      badge: \"Purchase from Developer\",\n      image: \"https:\/\/skyland.om\/wp-content\/uploads\/2026\/05\/Yenayer-Project-1-scaled.jpg\",\n      url: \"https:\/\/skyland.om\/yenayer-project\/\",\n      units: [\n        [\"Studio\", \"\u2014\u2014\u2014\", \"Unavailable\"],\n        [\"One Bedroom\", \"77,800 OMR\", \"Available\"],\n        [\"Two Bedroom\", \"103,740 OMR\", \"Available\"],\n        [\"Three Bedroom\", \"195,195 OMR\", \"Available\"]\n      ]\n    },\n    {\n      name: \"Hay Al Wafaa Project\",\n      location: \"Sultan Haitham City\",\n      handover: \"Under Development\",\n      badge: \"Purchase from Developer\",\n      image: \"https:\/\/skyland.om\/wp-content\/uploads\/2026\/05\/Hay-Al-Wafaa-Project-1.webp\",\n      url: \"https:\/\/skyland.om\/hay-al-wafaa-project\/\",\n      units: [\n        [\"Studio\", \"\u2014\u2014\u2014\", \"Unavailable\"],\n        [\"One Bedroom\", \"\u2014\u2014\u2014\", \"Unavailable\"],\n        [\"Two Bedroom\", \"89,590 OMR\", \"Available\"],\n        [\"Townhouse\", \"149,500 OMR\", \"Available\"],\n        [\"Villa\", \"242,000 OMR\", \"Available\"]\n      ]\n    },\n    {\n      name: \"Golf Hills Project\",\n      location: \"Muscat Hills\",\n      handover: \"2028\",\n      badge: \"Under Construction\",\n      image: \"https:\/\/skyland.om\/wp-content\/uploads\/2026\/05\/Golf-Links-Residences-Project-1.webp\",\n      url: \"https:\/\/skyland.om\/golf-hills-project\/\",\n      units: [\n        [\"Studio\", \"\u2014\u2014\u2014\", \"Unavailable\"],\n        [\"One Bedroom\", \"77,800 OMR\", \"Available\"],\n        [\"Two Bedroom\", \"103,740 OMR\", \"Available\"],\n        [\"Three Bedroom\", \"195,195 OMR\", \"Available\"]\n      ]\n    },\n    {\n      name: \"Vistal Project\",\n      location: \"Al Mouj\",\n      handover: \"Under Development\",\n      badge: \"Purchase from Developer\",\n      image: \"https:\/\/skyland.om\/wp-content\/uploads\/2026\/09\/vistal-copy-1-scaled.webp\",\n      url: \"https:\/\/skyland.om\/vistal-project\/\",\n      units: [\n        [\"One Bedroom\", \"150,150 OMR\", \"Available\"],\n        [\"Two Bedroom\", \"246,750 OMR\", \"Available\"],\n        [\"Duplex\", \"826,560 OMR\", \"Available\"]\n      ]\n    },\n    {\n      name: \"Uptown Project\",\n      location: \"Knowledge Oasis Muscat\",\n      handover: \"Q1 2028\",\n      badge: \"Purchase from Developer\",\n      image: \"https:\/\/skyland.om\/wp-content\/uploads\/2026\/05\/Uptown-Project-1.webp\",\n      url: \"https:\/\/skyland.om\/uptown-project\/\",\n      units: [\n        [\"Studio\", \"41,100 OMR\", \"Available\"],\n        [\"One Bedroom\", \"52,100 OMR\", \"Available\"],\n        [\"Two Bedroom\", \"94,500 OMR\", \"Available\"],\n        [\"Three Bedroom\", \"139,450 OMR\", \"Available\"],\n        [\"Four Bedroom\", \"308,900 OMR\", \"Available\"]\n      ]\n    },\n    {\n      name: \"CENTRAL 7 Office & Commercial Project\",\n      location: \"Knowledge Oasis Muscat\",\n      handover: \"Office Project\",\n      badge: \"Purchase from Developer\",\n      image: \"https:\/\/skyland.om\/wp-content\/uploads\/2026\/05\/CENTRAL-7-Project-1.webp\",\n      url: \"https:\/\/skyland.om\/central-7-project\/\",\n      units: [\n        [\"Ground Floor Commercial\", \"69,900 OMR\", \"Available\"],\n        [\"First Floor Office\", \"70,813 OMR\", \"Available\"],\n        [\"Second Floor Office\", \"70,813 OMR\", \"Available\"],\n        [\"Third Floor Office\", \"43,453 OMR\", \"Available\"],\n        [\"Fourth Floor Office\", \"38,625 OMR\", \"Available\"]\n      ]\n    },\n    {\n      name: \"Luma Project\",\n      location: \"Qantab, Muscat Bay\",\n      handover: \"2029\",\n      badge: \"Purchase from Developer\",\n      image: \"https:\/\/skyland.om\/wp-content\/uploads\/2026\/09\/Luma.webp\",\n      url: \"https:\/\/skyland.om\/luma-project\/\",\n      units: [\n        [\"One Bedroom\", \"92,500 OMR\", \"Available\"],\n        [\"Two Bedroom\", \"115,500 OMR\", \"Available\"],\n        [\"Three Bedroom\", \"208,500 OMR\", \"Available\"]\n      ]\n    },\n    {\n      name: \"Zen Residences\",\n      location: \"Muscat Bay\",\n      handover: \"Q4 2026\",\n      badge: \"Purchase from Developer\",\n      image: \"https:\/\/skyland.om\/wp-content\/uploads\/2026\/09\/%D9%86%D9%85%D8%A7%DB%8C-%D9%BE%D8%B1%D9%88%DA%98%D9%87-Zen-Residences-%D8%AF%D8%B1-%D8%AE%D9%84%DB%8C%D8%AC-%D9%85%D8%B3%D9%82%D8%B7.webp\",\n      url: \"https:\/\/skyland.om\/en\/zen-residences-project\/\",\n      units: [\n        [\"Studio\", \"\u2014\u2014\u2014\", \"Unavailable\"],\n        [\"One Bedroom\", \"\u2014\u2014\u2014\", \"Unavailable\"],\n        [\"Two-Bedroom Apartment\", \"From 139,000 OMR\", \"Subject to Availability\"],\n        [\"Two-Bedroom Loft Apartment\", \"From 165,000 OMR\", \"Subject to Availability\"]\n      ]\n    },\n    {\n      name: \"Sustainable City Yiti\",\n      location: \"Yiti Bay, Muscat\",\n      handover: \"Under Construction\",\n      badge: \"Under Construction\",\n      image: \"https:\/\/skyland.om\/wp-content\/uploads\/2026\/05\/Yiti-Project-1.webp\",\n      url: \"https:\/\/skyland.om\/yiti-project\/\",\n      units: [\n        [\"The Plaza Apartments\", \"85,000 OMR\", \"Available\"],\n        [\"1 to 3 Bedroom Apartments\", \"85,000 OMR\", \"Limited\"],\n        [\"Sustainable Villas\", \"Daily Price\", \"Fast Sale\"]\n      ]\n    },\n    {\n      name: \"The Great Escape 2\",\n      location: \"AIDA, Yiti\",\n      handover: \"Q4 2026\",\n      badge: \"Purchase from Developer\",\n      image: \"https:\/\/skyland.om\/wp-content\/uploads\/2026\/09\/%D9%86%D9%85%D8%A7%DB%8C-%D9%BE%D8%B1%D9%88%DA%98%D9%87-The-Great-Escape-%DB%B2-%D8%AF%D8%B1-AIDA-%DB%8C%DB%8C%D8%AA%DB%8C-%D9%85%D8%B3%D9%82%D8%B7.webp\",\n      url: \"https:\/\/skyland.om\/en\/the-great-escape-2-project\/\",\n      units: [\n        [\"One-Bedroom Apartment\", \"117,000 OMR\", \"Available\"],\n        [\"Two-Bedroom Apartment\", \"120,000 OMR\", \"Available\"],\n        [\"Three-Bedroom Apartment\", \"\u2014\u2014\u2014\", \"Sold Out\"],\n        [\"Garden Villa\", \"\u2014\u2014\u2014\", \"Sold Out\"]\n      ]\n    },\n    {\n      name: \"Fendi Project\",\n      location: \"Oman\",\n      handover: \"2028\",\n      badge: \"Under Construction\",\n      image: \"https:\/\/skyland.om\/wp-content\/uploads\/2026\/09\/Fendi-villas-copy.webp\",\n      url: \"https:\/\/skyland.om\/fendi-project\/\",\n      units: [\n        [\"4 Bedroom Villa\", \"1,000,000 OMR\", \"Available\"],\n        [\"5 Bedroom Villa\", \"Price on Request\", \"Limited\"],\n        [\"Selected Villas\", \"Price on Request\", \"Subject to Availability\"]\n      ]\n    },\n    {\n      name: \"Marriott Project\",\n      location: \"Aida, Yiti\",\n      handover: \"2029\",\n      badge: \"Under Construction\",\n      image: \"https:\/\/skyland.om\/wp-content\/uploads\/2026\/09\/Marriott-EXT-01-copy.webp\",\n      url: \"https:\/\/skyland.om\/marriott-project\/\",\n      units: [\n        [\"One Bedroom\", \"From 90,000 OMR\", \"Available\"],\n        [\"Two Bedroom\", \"Price on Request\", \"Limited\"],\n        [\"Three Bedroom\", \"Price on Request\", \"Subject to Availability\"]\n      ]\n    },\n    {\n      name: \"Trump International Hotel\",\n      location: \"Aida, Yiti\",\n      handover: \"2028\",\n      badge: \"Under Construction\",\n      image: \"https:\/\/skyland.om\/wp-content\/uploads\/2026\/05\/Trump-Hotels-Project-1.webp\",\n      url: \"https:\/\/skyland.om\/trump-hotels-project\/\",\n      units: [\n        [\"Hotel Unit\", \"From 170,000 OMR\", \"Check Availability\"],\n        [\"Selected Suite\", \"Price on Request\", \"Check Availability\"]\n      ]\n    },\n    {\n      name: \"Jinan Island Project\",\n      location: \"Al Mouj\",\n      handover: \"Delivered\",\n      badge: \"Purchase from Owner\",\n      image: \"https:\/\/skyland.om\/wp-content\/uploads\/2026\/09\/Jinan-copy-scaled.webp\",\n      url: \"https:\/\/skyland.om\/jinan-project\/\",\n      units: [\n        [\"5 Bedroom Villa\", \"From 572,000 OMR\", \"Subject to Availability\"],\n        [\"Larger Villas\", \"Price on Request\", \"Subject to Availability\"]\n      ]\n    },\n    {\n      name: \"Jebel Sifah Resort\",\n      location: \"Jebel Sifah, Muscat\",\n      handover: \"Depending on Product\",\n      badge: \"Check Availability\",\n      image: \"https:\/\/skyland.om\/wp-content\/uploads\/2026\/09\/Jabal-sifah-copy.webp\",\n      url: \"https:\/\/skyland.om\/jebel-sifah-project\/\",\n      units: [\n        [\"Selected Opportunity\", \"From 55,000 OMR\", \"Check Availability\"],\n        [\"Beach Cabin\", \"Price on Request\", \"Check Availability\"],\n        [\"Villa Plot\", \"Price on Request\", \"Check Availability\"],\n        [\"Investment Package\", \"15% \/ 18% \/ 20%\", \"Special Package\"]\n      ]\n    },\n    {\n      name: \"Hawana Salalah Beachfront Project\",\n      location: \"Salalah\",\n      handover: \"Depending on Unit\",\n      badge: \"On Sale\",\n      image: \"https:\/\/skyland.om\/wp-content\/uploads\/2026\/09\/salalah-copy.webp\",\n      url: \"https:\/\/skyland.om\/havana-project\/\",\n      units: [\n        [\"Apartment\", \"From 78,000 OMR\", \"Available\"],\n        [\"Villa\", \"Price on Request\", \"Limited\"]\n      ]\n    },\n    {\n      name: \"Mandarin Project\",\n      location: \"Shatti Al Qurum, Muscat\",\n      handover: \"Ready for Handover\",\n      badge: \"Purchase from Developer\",\n      image: \"https:\/\/skyland.om\/wp-content\/uploads\/2026\/09\/Mandarin.webp\",\n      url: \"https:\/\/skyland.om\/mandarin-project\/\",\n      units: [\n        [\"One Bedroom\", \"169,980 OMR\", \"Available\"],\n        [\"Two Bedroom\", \"292,830 OMR\", \"Available\"],\n        [\"Three Bedroom\", \"508,080 OMR\", \"Available\"]\n      ]\n    }\n  ];\n\n  const digitMap = {\n    \"\u06f0\": \"0\",\n    \"\u06f1\": \"1\",\n    \"\u06f2\": \"2\",\n    \"\u06f3\": \"3\",\n    \"\u06f4\": \"4\",\n    \"\u06f5\": \"5\",\n    \"\u06f6\": \"6\",\n    \"\u06f7\": \"7\",\n    \"\u06f8\": \"8\",\n    \"\u06f9\": \"9\",\n    \"\u0660\": \"0\",\n    \"\u0661\": \"1\",\n    \"\u0662\": \"2\",\n    \"\u0663\": \"3\",\n    \"\u0664\": \"4\",\n    \"\u0665\": \"5\",\n    \"\u0666\": \"6\",\n    \"\u0667\": \"7\",\n    \"\u0668\": \"8\",\n    \"\u0669\": \"9\"\n  };\n\n  const toLatinDigits = (value) => String(value ?? \"\")\n    .replace(\/[\u06f0-\u06f9\u0660-\u0669]\/g, digit => digitMap[digit]);\n\n  const escapeHtml = (value) => String(value ?? \"\")\n    .replace(\/&\/g, \"&amp;\")\n    .replace(\/<\/g, \"&lt;\")\n    .replace(\/>\/g, \"&gt;\")\n    .replace(\/\"\/g, \"&quot;\")\n    .replace(\/'\/g, \"&#039;\");\n\n  const withLatinNumbers = (value) => {\n    const source = toLatinDigits(value);\n    const parts = source.split(\/([0-9]+(?:[.,][0-9]+)*(?:\\s*%)?)\/g);\n\n    return parts.map(part => {\n      if (!part) return \"\";\n\n      if (\/^[0-9]+(?:[.,][0-9]+)*(?:\\s*%)?$\/.test(part)) {\n        return `<span class=\"sky-projects-number\">${escapeHtml(part)}<\/span>`;\n      }\n\n      return escapeHtml(part);\n    }).join(\"\");\n  };\n\n  const normalizeNativeControlDigits = (value) => toLatinDigits(value);\n\n  const icons = {\n    pin: '<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M12 21s6-5.3 6-11a6 6 0 1 0-12 0c0 5.7 6 11 6 11Z\"\/><circle cx=\"12\" cy=\"10\" r=\"2.4\"\/><\/svg>',\n    calendar: '<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M7 3v3M17 3v3M4 9h16M5 5h14a1 1 0 0 1 1 1v14H4V6a1 1 0 0 1 1-1Z\"\/><\/svg>',\n    arrow: '<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M5 12h14M13 6l6 6-6 6\"\/><\/svg>',\n    check: '<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"m5 12 4 4L19 6\"\/><\/svg>'\n  };\n\n  const badgeClass = (text) => {\n    if (text.includes(\"Ready\")) return \"is-ready\";\n    if (text.includes(\"Owner\") || text.includes(\"Resale\")) return \"is-resale\";\n    if (text.includes(\"Construction\")) return \"is-building\";\n    if (text.includes(\"Available\") || text.includes(\"Sale\") || text.includes(\"New\")) return \"is-available\";\n    return \"is-neutral\";\n  };\n\n  const renderUnit = ([type, price, status]) => {\n    const isEmptyPrice = \/^[-\u2014\u2013\u0640]+$\/.test(String(price || \"\").trim());\n\n    return `\n      <div class=\"sky-project-card__unit\">\n        <div class=\"sky-project-card__unit-type\">${withLatinNumbers(type)}<\/div>\n        <div class=\"sky-project-card__unit-price${isEmptyPrice ? \" is-empty\" : \"\"}\">${withLatinNumbers(price)}<\/div>\n        <div class=\"sky-project-card__unit-status\">${withLatinNumbers(status)}<\/div>\n      <\/div>\n    `;\n  };\n\n  const renderCard = (project, index) => `\n    <article class=\"sky-project-card\" style=\"--card-index:${index}\">\n      <a class=\"sky-project-card__media\" href=\"${project.url}\" aria-label=\"View ${escapeHtml(project.name)}\">\n        <img\n          src=\"${project.image}\"\n          alt=\"${escapeHtml(project.name)}\"\n          ${index < 3 ? 'loading=\"eager\" fetchpriority=\"high\"' : 'loading=\"lazy\"'}\n          decoding=\"async\"\n          onerror=\"this.onerror=null;this.src='${fallbackImage}'\"\n        >\n        <span class=\"sky-project-card__shade\"><\/span>\n        <div class=\"sky-project-card__floating\">\n          <span class=\"sky-project-card__glass sky-project-card__badge ${badgeClass(project.badge)}\">${icons.check}<span>${withLatinNumbers(project.badge)}<\/span><\/span>\n          <span class=\"sky-project-card__glass sky-project-card__meta-chip\">\n            <span class=\"sky-project-card__meta-chip-item\">${icons.pin}<span>${withLatinNumbers(project.location)}<\/span><\/span>\n            <span class=\"sky-project-card__meta-chip-divider\"><\/span>\n            <span class=\"sky-project-card__meta-chip-item\">${icons.calendar}<span>${withLatinNumbers(project.handover)}<\/span><\/span>\n          <\/span>\n        <\/div>\n      <\/a>\n\n      <div class=\"sky-project-card__body\">\n        <div class=\"sky-project-card__heading\">\n          <h3 class=\"sky-project-card__title\"><a href=\"${project.url}\">${withLatinNumbers(project.name)}<\/a><\/h3>\n        <\/div>\n\n        <div class=\"sky-project-card__units\">\n          <div class=\"sky-project-card__unit sky-project-card__unit--head\">\n            <span>Unit Type<\/span>\n            <span>Starting Price<\/span>\n            <span>Status<\/span>\n          <\/div>\n          ${project.units.map(renderUnit).join(\"\")}\n        <\/div>\n\n        <div class=\"sky-project-card__actions\">\n          <a class=\"sky-project-card__button sky-project-card__button--primary\" href=\"${contactUrl}\">\n            <span>Check Availability<\/span>\n            ${icons.arrow}\n          <\/a>\n\n          <a class=\"sky-project-card__button sky-project-card__button--secondary\" href=\"${project.url}\">\n            <span>View Project<\/span>\n            ${icons.arrow}\n          <\/a>\n        <\/div>\n      <\/div>\n    <\/article>\n  `;\n\n  const section = document.querySelector(\".sky-projects-section\");\n  const grid = document.getElementById(\"skyProjectsGrid\");\n  const searchInput = document.getElementById(\"skyProjectSearch\");\n  const searchClear = document.getElementById(\"skyProjectSearchClear\");\n  const locationSelect = document.getElementById(\"skyProjectLocation\");\n  const statusSelect = document.getElementById(\"skyProjectStatus\");\n  const unitSelect = document.getElementById(\"skyProjectUnit\");\n  const sortSelect = document.getElementById(\"skyProjectSort\");\n  const resetButton = document.getElementById(\"skyProjectsReset\");\n  const countNode = document.getElementById(\"skyProjectsCount\");\n  const countLabel = document.getElementById(\"skyProjectsCountLabel\");\n  const activeFiltersNode = document.getElementById(\"skyProjectsActiveFilters\");\n  const emptyNode = document.getElementById(\"skyProjectsEmpty\");\n\n  if (!section || !grid || !searchInput || !locationSelect || !statusSelect || !unitSelect || !sortSelect) return;\n\n  section.setAttribute(\"dir\", \"ltr\");\n  section.setAttribute(\"lang\", \"en\");\n\n  const normalizeText = (value) => toLatinDigits(value)\n    .toLowerCase()\n    .replace(\/\\s+\/g, \" \")\n    .trim();\n\n  const getProjectPrice = (project) => {\n    const prices = project.units\n      .map(unit => {\n        const cleaned = toLatinDigits(unit[1]).replace(\/,\/g, \"\");\n        const match = cleaned.match(\/\\d{2,}\/);\n        return match ? Number(match[0]) : null;\n      })\n      .filter(value => Number.isFinite(value));\n\n    return prices.length ? Math.min(...prices) : Number.POSITIVE_INFINITY;\n  };\n\n  const uniqueSorted = (values) => [...new Set(values)]\n    .sort((a, b) => a.localeCompare(b, \"en\"));\n\n  const addOptions = (select, values) => {\n    values.forEach(value => {\n      const option = document.createElement(\"option\");\n      option.value = normalizeNativeControlDigits(value);\n      option.textContent = normalizeNativeControlDigits(value);\n      select.appendChild(option);\n    });\n  };\n\n  addOptions(locationSelect, uniqueSorted(projects.map(project => project.location)));\n  addOptions(statusSelect, uniqueSorted(projects.map(project => project.badge)));\n  addOptions(unitSelect, uniqueSorted(projects.flatMap(project => project.units.map(unit => unit[0]))));\n\n  let observer;\n\n  const activateCards = () => {\n    if (observer) observer.disconnect();\n\n    const cards = grid.querySelectorAll(\".sky-project-card\");\n\n    if (\"IntersectionObserver\" in window) {\n      observer = new IntersectionObserver((entries, obs) => {\n        entries.forEach(entry => {\n          if (!entry.isIntersecting) return;\n          entry.target.classList.add(\"is-visible\");\n          obs.unobserve(entry.target);\n        });\n      }, { rootMargin: \"0px 0px -50px\", threshold: 0.08 });\n\n      cards.forEach(card => observer.observe(card));\n    } else {\n      cards.forEach(card => card.classList.add(\"is-visible\"));\n    }\n  };\n\n  const getSearchHaystack = (project) => normalizeText([\n    project.name,\n    project.location,\n    project.handover,\n    project.badge,\n    ...project.units.flat()\n  ].join(\" \"));\n\n  const renderActiveFilters = () => {\n    const chips = [];\n\n    if (searchInput.value.trim()) chips.push(`Search: ${toLatinDigits(searchInput.value.trim())}`);\n    if (locationSelect.value) chips.push(toLatinDigits(locationSelect.value));\n    if (statusSelect.value) chips.push(toLatinDigits(statusSelect.value));\n    if (unitSelect.value) chips.push(toLatinDigits(unitSelect.value));\n\n    activeFiltersNode.innerHTML = chips.map(chip => `<span>${withLatinNumbers(chip)}<\/span>`).join(\"\");\n    resetButton.disabled = chips.length === 0 && sortSelect.value === \"default\";\n    searchClear.classList.toggle(\"is-visible\", Boolean(searchInput.value.trim()));\n  };\n\n  const applyFilters = () => {\n    const query = normalizeText(searchInput.value);\n    const location = locationSelect.value;\n    const status = statusSelect.value;\n    const unitType = unitSelect.value;\n\n    let filtered = projects.filter(project => {\n      if (query && !getSearchHaystack(project).includes(query)) return false;\n      if (location && project.location !== location) return false;\n      if (status && project.badge !== status) return false;\n      if (unitType && !project.units.some(unit => unit[0] === unitType)) return false;\n      return true;\n    });\n\n    if (sortSelect.value === \"price-asc\") {\n      filtered = [...filtered].sort((a, b) => getProjectPrice(a) - getProjectPrice(b));\n    }\n\n    if (sortSelect.value === \"price-desc\") {\n      filtered = [...filtered].sort((a, b) => getProjectPrice(b) - getProjectPrice(a));\n    }\n\n    if (sortSelect.value === \"name\") {\n      filtered = [...filtered].sort((a, b) => a.name.localeCompare(b.name, \"en\"));\n    }\n\n    grid.innerHTML = filtered.map(renderCard).join(\"\");\n    countNode.textContent = toLatinDigits(filtered.length);\n    countLabel.textContent = filtered.length === 1 ? \"project found\" : \"projects found\";\n    emptyNode.hidden = filtered.length !== 0;\n    grid.hidden = filtered.length === 0;\n\n    renderActiveFilters();\n    activateCards();\n  };\n\n  const resetFilters = () => {\n    searchInput.value = \"\";\n    locationSelect.value = \"\";\n    statusSelect.value = \"\";\n    unitSelect.value = \"\";\n    sortSelect.value = \"default\";\n    applyFilters();\n    searchInput.focus();\n  };\n\n  searchInput.addEventListener(\"input\", () => {\n    const start = searchInput.selectionStart;\n    const normalized = toLatinDigits(searchInput.value);\n\n    if (normalized !== searchInput.value) {\n      searchInput.value = normalized;\n      if (start !== null) searchInput.setSelectionRange(start, start);\n    }\n\n    applyFilters();\n  });\n\n  locationSelect.addEventListener(\"change\", applyFilters);\n  statusSelect.addEventListener(\"change\", applyFilters);\n  unitSelect.addEventListener(\"change\", applyFilters);\n  sortSelect.addEventListener(\"change\", applyFilters);\n  resetButton.addEventListener(\"click\", resetFilters);\n\n  searchClear.addEventListener(\"click\", () => {\n    searchInput.value = \"\";\n    applyFilters();\n    searchInput.focus();\n  });\n\n  applyFilters();\n})();\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Projects That Have Earned Our Approval A selection of the safest investment opportunities that have successfully passed Skyland&#8217;s 7 rigorous legal and financial screening criteria. Transparency Principle: Out of projects reviewed, successfully passed our rigorous evaluation criteria and have been selected as recommended opportunities. Find the Right Project for You Search and filter using the [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"footnotes":""},"class_list":["post-10921","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/skyland.om\/en\/wp-json\/wp\/v2\/pages\/10921","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/skyland.om\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/skyland.om\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/skyland.om\/en\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/skyland.om\/en\/wp-json\/wp\/v2\/comments?post=10921"}],"version-history":[{"count":34,"href":"https:\/\/skyland.om\/en\/wp-json\/wp\/v2\/pages\/10921\/revisions"}],"predecessor-version":[{"id":11545,"href":"https:\/\/skyland.om\/en\/wp-json\/wp\/v2\/pages\/10921\/revisions\/11545"}],"wp:attachment":[{"href":"https:\/\/skyland.om\/en\/wp-json\/wp\/v2\/media?parent=10921"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}