{"id":3958,"date":"2025-06-30T07:11:15","date_gmt":"2025-06-30T07:11:15","guid":{"rendered":"https:\/\/dev.flightgolf.vn\/?page_id=3958"},"modified":"2026-10-05T07:07:15","modified_gmt":"2026-10-05T07:07:15","slug":"bang-gia","status":"publish","type":"page","link":"https:\/\/dev.flightgolf.vn\/en\/bang-gia\/","title":{"rendered":"Rates &amp; Pricing"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"3958\" class=\"elementor elementor-3958\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"wd-negative-gap elementor-element elementor-element-48ebad7 wd-section-stretch-content e-flex e-con-boxed e-con e-parent\" data-id=\"48ebad7\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-5442bc1 elementor-widget elementor-widget-image\" data-id=\"5442bc1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"1920\" height=\"527\" src=\"https:\/\/dev.flightgolf.vn\/wp-content\/uploads\/2026\/09\/cup-vinh-danh-01.jpg\" class=\"attachment-full size-full wp-image-10217\" alt=\"\" srcset=\"https:\/\/dev.flightgolf.vn\/wp-content\/uploads\/2026\/09\/cup-vinh-danh-01.jpg 1920w, https:\/\/dev.flightgolf.vn\/wp-content\/uploads\/2026\/09\/cup-vinh-danh-01-300x82.jpg 300w, https:\/\/dev.flightgolf.vn\/wp-content\/uploads\/2026\/09\/cup-vinh-danh-01-1024x281.jpg 1024w, https:\/\/dev.flightgolf.vn\/wp-content\/uploads\/2026\/09\/cup-vinh-danh-01-768x211.jpg 768w, https:\/\/dev.flightgolf.vn\/wp-content\/uploads\/2026\/09\/cup-vinh-danh-01-1536x422.jpg 1536w, https:\/\/dev.flightgolf.vn\/wp-content\/uploads\/2026\/09\/cup-vinh-danh-01-600x165.jpg 600w, https:\/\/dev.flightgolf.vn\/wp-content\/uploads\/2026\/09\/cup-vinh-danh-01-150x41.jpg 150w\" sizes=\"auto, (max-width: 1920px) 100vw, 1920px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"wd-negative-gap elementor-element elementor-element-a48f361 wd-section-stretch-content e-flex e-con-boxed e-con e-parent\" data-id=\"a48f361\" data-element_type=\"container\" data-e-type=\"container\" id=\"content-to-export\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-0362dbc e-con-full e-flex e-con e-child\" data-id=\"0362dbc\" data-element_type=\"container\" data-e-type=\"container\" id=\"banggia-to-export\">\n\t\t\t\t<div class=\"elementor-element elementor-element-80240be elementor-widget elementor-widget-heading\" data-id=\"80240be\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">QUOTATION PRICE<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-007d5ea e-con-full e-flex e-con e-child\" data-id=\"007d5ea\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-4c2c104 elementor-widget elementor-widget-ucaddon_gradient_text_effect\" data-id=\"4c2c104\" data-element_type=\"widget\" data-e-type=\"widget\" id=\"pdf-title-fix\" data-widget_type=\"ucaddon_gradient_text_effect.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n<!-- start Gradient Text Effect -->\n<style>\/* widget: Gradient Text Effect *\/\n\n#uc_gradient_text_effect_elementor_4c2c104 .ue_gradient_text{\n  color: #587912;\n  padding:0.1em 0;\n}\n\n@supports ((background-clip: text) or (-webkit-background-clip: text)) and ((text-fill-color: transparent) or (-webkit-text-fill-color: transparent)) {\n  #uc_gradient_text_effect_elementor_4c2c104 .ue_gradient_text{\n    background-image: linear-gradient(\n      90deg,\n      #587912 0%,\n      #254206 100%\n    );\n    background-size: cover;\n    -webkit-background-clip: text;\n    background-clip: text;\n    -webkit-text-fill-color: transparent;\n    text-fill-color: transparent;\n    display:inline-block;\n    \n  }\n  #uc_gradient_text_effect_elementor_4c2c104 .ue_gradient_text::selection {\n    -webkit-text-fill-color: #474747;\n  }\n}\n\n<\/style>\n\n<div id=\"uc_gradient_text_effect_elementor_4c2c104\" class=\"ue-text\">\n  <span class=\"ue_beginning_text\"> <\/span> \n  <span class=\"ue_gradient_text\"> Golf course price list - October <\/span>\n  <span class=\"ue_ending_text\">  <\/span>\n<\/div>\n<!-- end Gradient Text Effect -->\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ecba5b2 elementor-widget elementor-widget-html\" data-id=\"ecba5b2\" data-element_type=\"widget\" data-e-type=\"widget\" id=\"btn-export-pdf\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!-- N\u00fat t\u1ea3i PDF i18n -->\n<div style=\"display: flex; justify-content: flex-end;\">\n  <button class=\"export-btn\" id=\"btn-export-pdf\" style=\"\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    gap: 10px;\n    background-color: #ffffff;\n    color: #000000;\n    border: 1px solid #e0e0e0;\n    border-radius: 8px;\n    padding: 10px 20px;\n    font-size: 16px;\n    font-weight: 500;\n    cursor: pointer;\n    box-shadow: 0 2px 4px rgba(0,0,0,0.02);\n    text-transform: none !important;\n    transition: all 0.3s ease;\n  \">\n    <img decoding=\"async\" id=\"btn-export-icon\" src=\"https:\/\/dev.flightgolf.vn\/wp-content\/uploads\/2026\/08\/Download-Iconly-Pro.png\" alt=\"icon-download\" style=\"width: 20px; height: 20px; object-fit: contain;\">\n    \n    <!-- C\u00e1c th\u1ebb Text \u0111\u1ec3 TranslatePress qu\u00e9t & Editor t\u1ef1 s\u1eeda tr\u00ean FE -->\n    <span class=\"fg-btn-text fg-text-vi\">T\u1ea3i b\u1ea3ng gi\u00e1<\/span>\n    <span class=\"fg-btn-text fg-text-en\" style=\"display: none;\">Download price list<\/span>\n    <span class=\"fg-btn-text fg-text-ko\" style=\"display: none;\">\uac00\uaca9\ud45c \ub2e4\uc6b4\ub85c\ub4dc<\/span>\n\n    <span class=\"fg-loading-text fg-text-vi\" style=\"display: none;\">\u0110ang t\u1ea1o PDF, vui l\u00f2ng ch\u1edd...<\/span>\n    <span class=\"fg-loading-text fg-text-en\" style=\"display: none;\">Generating PDF, please wait...<\/span>\n    <span class=\"fg-loading-text fg-text-ko\" style=\"display: none;\">PDF \uc0dd\uc131 \uc911, \uc7a0\uc2dc\ub9cc \uae30\ub2e4\ub824 \uc8fc\uc138\uc694...<\/span>\n  <\/button>\n<\/div>\n\n<!-- CSS Animation -->\n<style>\n@keyframes fg-download-bounce {\n  0%, 100% { transform: translateY(0); }\n  50% { transform: translateY(4px); }\n}\n.fg-downloading {\n  animation: fg-download-bounce 0.6s ease-in-out infinite;\n}\n<\/style>\n\n<script>\n(function() {\n  function getCurrentLang() {\n    const htmlLang = (document.documentElement.lang || '').toLowerCase();\n    const path = window.location.pathname.toLowerCase();\n\n    if (htmlLang.startsWith('en') || path.includes('\/en\/') || path.endsWith('\/en')) return 'en';\n    if (htmlLang.startsWith('ko') || path.includes('\/ko\/') || path.endsWith('\/ko')) return 'ko';\n    return 'vi';\n  }\n\n  function loadRequiredLibs(callback) {\n    let loadedCount = 0;\n    function checkDone() {\n      loadedCount++;\n      if (loadedCount === 2) callback();\n    }\n\n    if (typeof html2canvas === 'undefined') {\n      const s1 = document.createElement('script');\n      s1.src = 'https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/html2canvas\/1.4.1\/html2canvas.min.js';\n      s1.onload = checkDone;\n      document.head.appendChild(s1);\n    } else { checkDone(); }\n\n    if (typeof window.jspdf === 'undefined') {\n      const s2 = document.createElement('script');\n      s2.src = 'https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/jspdf\/2.5.1\/jspdf.umd.min.js';\n      s2.onload = checkDone;\n      document.head.appendChild(s2);\n    } else { checkDone(); }\n  }\n\n  function setupButtonUI() {\n    const lang = getCurrentLang();\n    document.querySelectorAll('.fg-btn-text, .fg-loading-text').forEach(el => el.style.display = 'none');\n    const activeBtnText = document.querySelector(`.fg-btn-text.fg-text-${lang}`);\n    if (activeBtnText) activeBtnText.style.display = 'inline';\n  }\n\n  document.addEventListener('DOMContentLoaded', function() {\n    setupButtonUI();\n\n    const btnExport = document.getElementById('btn-export-pdf');\n    const btnIcon = document.getElementById('btn-export-icon');\n\n    if (!btnExport) return;\n\n    btnExport.addEventListener('click', function(e) {\n      e.preventDefault();\n\n      loadRequiredLibs(function() {\n        const element = document.getElementById('content-to-export');\n        if (!element) {\n          alert('Ch\u01b0a \u0111\u1eb7t CSS ID \"content-to-export\" cho V\u00f9ng ch\u1ee9a B\u1ea3ng gi\u00e1!');\n          return;\n        }\n\n        const lang = getCurrentLang();\n\n        document.querySelectorAll(`.fg-btn-text.fg-text-${lang}`).forEach(el => el.style.display = 'none');\n        document.querySelectorAll(`.fg-loading-text.fg-text-${lang}`).forEach(el => el.style.display = 'inline');\n        \n        btnExport.style.opacity = '0.7';\n        btnExport.style.cursor = 'wait';\n        btnExport.disabled = true;\n        if (btnIcon) btnIcon.classList.add('fg-downloading');\n\n        setTimeout(function() {\n          html2canvas(element, {\n            scale: 2,\n            useCORS: true,\n            allowTaint: true,\n            logging: false,\n            windowWidth: element.scrollWidth,\n            windowHeight: element.scrollHeight,\n            onclone: function(clonedDoc) {\n              const clonedElement = clonedDoc.getElementById('content-to-export');\n              if (clonedElement) {\n                clonedElement.style.height = 'auto';\n                clonedElement.style.maxHeight = 'none';\n                clonedElement.style.overflow = 'visible';\n              }\n\n              \/\/ \u1ea8n n\u00fat xu\u1ea5t tr\u00ean PDF\n              const clonedBtn = clonedDoc.getElementById('btn-export-pdf');\n              if (clonedBtn) clonedBtn.remove();\n\n              \/\/ X\u00f3a n\u00fat \u0111\u1eb7t s\u00e2n\n              const clonedButtons = clonedDoc.querySelectorAll('.elementor-button, a[href*=\"dat-san\"]');\n              clonedButtons.forEach(el => el.remove());\n\n              \/\/ FIX Gradient cho #pdf-title-fix & c\u00e1c class gradient kh\u00e1c\n              const targetGradients = clonedDoc.querySelectorAll('#pdf-title-fix, .ue_gradient_text, .ue-text, [class*=\"ue_\"]');\n              targetGradients.forEach(function(el) {\n                el.style.background = 'none';\n                el.style.backgroundImage = 'none';\n                el.style.webkitBackgroundClip = 'unset';\n                el.style.backgroundClip = 'unset';\n                el.style.webkitTextFillColor = '#2e5b22';\n                el.style.color = '#2e5b22';\n              });\n            }\n          }).then(function(canvas) {\n            const { jsPDF } = window.jspdf;\n            const pdf = new jsPDF('l', 'pt', 'a3');\n            const pdfWidth = pdf.internal.pageSize.getWidth();\n            const pdfHeight = pdf.internal.pageSize.getHeight();\n            \n            const margin = 20;\n            const printWidth = pdfWidth - (margin * 2);\n            const printHeight = pdfHeight - (margin * 2);\n\n            const scaleRatio = printWidth \/ canvas.width;\n            const pxPageHeight = printHeight \/ scaleRatio;\n\n            let srcY = 0;\n            let pageIndex = 0;\n\n            while (srcY < canvas.height) {\n              const pageCanvas = document.createElement('canvas');\n              pageCanvas.width = canvas.width;\n              pageCanvas.height = Math.min(pxPageHeight, canvas.height - srcY);\n\n              const ctx = pageCanvas.getContext('2d');\n              ctx.drawImage(canvas, 0, srcY, canvas.width, pageCanvas.height, 0, 0, canvas.width, pageCanvas.height);\n\n              const imgData = pageCanvas.toDataURL('image\/jpeg', 0.85);\n\n              if (pageIndex > 0) pdf.addPage('a3', 'l');\n\n              const renderedChunkHeight = pageCanvas.height * scaleRatio;\n              pdf.addImage(imgData, 'JPEG', margin, margin, printWidth, renderedChunkHeight);\n\n              srcY += pxPageHeight;\n              pageIndex++;\n            }\n\n            let fileName = 'FlightGolf-Bang-Gia-San-Golf.pdf';\n            if (lang === 'en') fileName = 'FlightGolf-Golf-Course-Price-List.pdf';\n            if (lang === 'ko') fileName = 'FlightGolf-Golf-Price-List.pdf';\n\n            pdf.save(fileName);\n\n            document.querySelectorAll(`.fg-loading-text.fg-text-${lang}`).forEach(el => el.style.display = 'none');\n            document.querySelectorAll(`.fg-btn-text.fg-text-${lang}`).forEach(el => el.style.display = 'inline');\n            \n            btnExport.style.opacity = '1';\n            btnExport.style.cursor = 'pointer';\n            btnExport.disabled = false;\n            if (btnIcon) btnIcon.classList.remove('fg-downloading');\n\n          }).catch(function(err) {\n            console.error(\"L\u1ed7i xu\u1ea5t PDF: \", err);\n            document.querySelectorAll(`.fg-loading-text.fg-text-${lang}`).forEach(el => el.style.display = 'none');\n            document.querySelectorAll(`.fg-btn-text.fg-text-${lang}`).forEach(el => el.style.display = 'inline');\n            btnExport.style.opacity = '1';\n            btnExport.style.cursor = 'pointer';\n            btnExport.disabled = false;\n            if (btnIcon) btnIcon.classList.remove('fg-downloading');\n          });\n        }, 300);\n      });\n    });\n  });\n})();\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-0f65615 color-scheme-inherit text-left elementor-widget elementor-widget-text-editor\" data-id=\"0f65615\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>FlightGolf h\u00e2n h\u1ea1nh g\u1eedi \u0111\u1ebfn Qu\u00fd kh\u00e1ch h\u00e0ng b\u1ea3ng gi\u00e1 s\u00e2n golf \u01b0u \u0111\u00e3i tr\u00ean to\u00e0n qu\u1ed1c. B\u1ea3ng gi\u00e1 \u00e1p d\u1ee5ng cho tee time 18 h\u1ed1 \u0111\u00e3 bao g\u1ed3m ph\u00ed green, caddie c\u00f9ng \u00bd xe \u0111i\u1ec7n \u2013 tr\u1ecdn g\u00f3i cho m\u1ed9t v\u00f2ng golf \u0111\u1eb3ng c\u1ea5p. <br \/>Li\u00ean h\u1ec7 Hotline <strong>0866 236 222<\/strong> \u0111\u1ec3 \u0111\u01b0\u1ee3c t\u01b0 v\u1ea5n v\u00e0 h\u1ed7 tr\u1ee3 \u0111\u1eb7t s\u00e2n nhanh ch\u00f3ng!<\/p><p><span style=\"color: #ff0000;\">*Gi\u00e1 c\u00f3 th\u1ec3 thay \u0111\u1ed5i theo ch\u00ednh s\u00e1ch t\u1eebng s\u00e2n.<\/span><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-593f616 elementor-widget elementor-widget-spacer\" data-id=\"593f616\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-90be548 elementor-widget elementor-widget-html\" data-id=\"90be548\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div id=\"content-to-export\" class=\"main-golf-container\">\r\n  <!-- Thanh Search c\u00f3 Padding l\u1ec1 2 b\u00ean -->\r\n  <div class=\"search-section\">\r\n    <div class=\"search-label\">S\u00e2n golf<\/div>\r\n    <div class=\"search-input-wrapper\">\r\n      <span class=\"search-icon-location\">\r\n        <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"#3e5622\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\r\n          <path d=\"M12 2C8.13 2 5 5.13 5 9c0 5.25 7 13 7 13s7-7.75 7-13c0-3.87-3.13-7-7-7zm0 9.5c-1.38 0-2.5-1.12-2.5-2.5s1.12-2.5 2.5-2.5 2.5 1.12 2.5 2.5-1.12 2.5-2.5 2.5z\"\/>\r\n        <\/svg>\r\n      <\/span>\r\n      <input type=\"text\" id=\"golf-search\" placeholder=\"B\u1ea1n mu\u1ed1n ch\u01a1i s\u00e2n n\u00e0o?\">\r\n      <span class=\"search-icon-arrow\">\r\n        <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#a0aec0\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n          <polyline points=\"6 9 12 15 18 9\"><\/polyline>\r\n        <\/svg>\r\n      <\/span>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <!-- B\u1ea3ng Gi\u00e1 s\u00e1t m\u00e9p tr\u00e1i\/ph\u1ea3i container -->\r\n  <div class=\"table-scroll-wrapper\">\r\n    <table id=\"golf-table\">\r\n      <thead>\r\n        <tr>\r\n          <th rowspan=\"2\" class=\"header-no\" style=\"width:3%;\">No<\/th>\r\n          <th rowspan=\"2\" class=\"header-khuvuc\" style=\"width:7%;\">Khu v\u1ef1c<\/th>\r\n          <th rowspan=\"2\" class=\"header-sangon sticky-san-gon\" style=\"width:15%;\">S\u00e2n g\u00f4n<\/th>\r\n          <th colspan=\"2\" class=\"header-group\" style=\"width: 13%;\">Ng\u00e0y\/Gi\u1edd<\/th>\r\n          <th colspan=\"2\" class=\"header-group\" style=\"width: 15%;\">Ng\u00e0y th\u01b0\u1eddng<\/th>\r\n          <th colspan=\"2\" class=\"header-group\" style=\"width: 15%;\">Cu\u1ed1i tu\u1ea7n<\/th>\r\n          <th rowspan=\"2\" class=\"header-fee\" style=\"width: 10%;\">Ph\u00ed xe \u0111i\u1ec7n<\/th>\r\n          <th rowspan=\"2\" class=\"header-bonus\" style=\"width: 14%;\">Bonus<\/th>\r\n          <th rowspan=\"2\" class=\"header-datsan\" style=\"width: 8%;\">\u0110\u1eb7t s\u00e2n<\/th>\r\n        <\/tr>\r\n        <tr>\r\n          <th class=\"header-child\">Ng\u00e0y<\/th>\r\n          <th class=\"header-child\">Gi\u1edd<\/th>\r\n          <th class=\"header-child\">FlightGolf<\/th>\r\n          <th class=\"header-child\">Public<\/th>\r\n          <th class=\"header-child\">FlightGolf<\/th>\r\n          <th class=\"header-child\">Public<\/th>\r\n        <\/tr>\r\n      <\/thead>\r\n\r\n      <tbody id=\"golf-table-body\"><\/tbody>\r\n    <\/table>\r\n  <\/div>\r\n<\/div>\r\n\r\n<style>\r\n  \/* Container ngo\u00e0i b\u1ecdc h\u1ebft *\/\r\n  .main-golf-container {\r\n    background-color: #ffffff;\r\n    border: 1px solid #e2e8f0;\r\n    border-radius: 16px;\r\n    padding: 16px 0 0 0;\r\n    box-shadow: 0 4px 20px rgba(0, 0, 0, 0.05);\r\n    width: 100%;\r\n    overflow: hidden;\r\n    box-sizing: border-box;\r\n  }\r\n\r\n  \/* Reset box-sizing *\/\r\n  #content-to-export * {\r\n    box-sizing: border-box;\r\n  }\r\n\r\n  \/* \u00d4 Search *\/\r\n  .search-section {\r\n    padding: 0 16px 16px 16px;\r\n    width: 100%;\r\n    font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif;\r\n  }\r\n\r\n  .search-label {\r\n    font-size: 13px;\r\n    color: #718096;\r\n    margin-bottom: 6px;\r\n    font-weight: 500;\r\n  }\r\n\r\n  .search-input-wrapper {\r\n    position: relative;\r\n    display: flex;\r\n    align-items: center;\r\n    width: 100%;\r\n    background-color: #f4f5f6;\r\n    border-radius: 12px;\r\n    padding: 4px 12px;\r\n    border: 1px solid #e2e8f0;\r\n  }\r\n\r\n  .search-icon-location {\r\n    display: flex;\r\n    align-items: center;\r\n    justify-content: center;\r\n    background: #e2e8f0;\r\n    padding: 6px;\r\n    border-radius: 8px;\r\n    margin-right: 10px;\r\n  }\r\n\r\n  #golf-search {\r\n    width: 100%;\r\n    border: none !important;\r\n    background: transparent !important;\r\n    padding: 10px 0 !important;\r\n    font-size: 14px;\r\n    color: #2d3748;\r\n    outline: none !important;\r\n    box-shadow: none !important;\r\n    font-weight: 400 !important;\r\n  }\r\n\r\n  \/* CH\u1ec8NH PLACEHOLDER NH\u1ea0T M\u00c0U & M\u1eceNG N\u1ebeT *\/\r\n  #golf-search::placeholder {\r\n    color: #a0aec0 !important;\r\n    font-weight: 400 !important;\r\n    opacity: 1;\r\n  }\r\n\r\n  .search-icon-arrow {\r\n    display: flex;\r\n    align-items: center;\r\n    padding-left: 8px;\r\n  }\r\n\r\n  \/* Khung cu\u1ed9n b\u1ea3ng *\/\r\n  .table-scroll-wrapper {\r\n    overflow-x: auto;\r\n    width: 100%;\r\n    margin: 0;\r\n    -webkit-overflow-scrolling: touch;\r\n  }\r\n\r\n  \/* B\u1ea3ng Gi\u00e1 *\/\r\n  #golf-table {\r\n    width: 100%;\r\n    min-width: 1070px;\r\n    border-collapse: collapse !important;\r\n    font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif;\r\n    font-size: 13.5px;\r\n    text-align: center;\r\n    color: #333333;\r\n    background-color: #ffffff;\r\n    border-style: hidden;\r\n  }\r\n\r\n  #golf-table thead {\r\n    background-color: #3e5622 !important;\r\n  }\r\n\r\n  \/* Header CSS *\/\r\n  #golf-table thead tr th {\r\n    background-color: #3e5622 !important;\r\n    color: #ffffff !important;\r\n    font-weight: 600;\r\n    padding: 10px 8px;\r\n    border: none !important;\r\n    box-shadow: inset -1px -1px 0 0 #2f421c !important;\r\n    vertical-align: middle;\r\n  }\r\n\r\n  #golf-table thead tr:last-child th.header-child {\r\n    background-color: #3e5622 !important;\r\n    font-size: 12.5px;\r\n    padding: 8px 6px;\r\n    border: none !important;\r\n    box-shadow: inset -1px -1px 0 0 #2f421c !important;\r\n  }\r\n\r\n  \/* \u00d4 D\u1eee LI\u1ec6U C\u01a0 B\u1ea2N *\/\r\n  #golf-table td {\r\n    border: none !important;\r\n    box-shadow: inset -1px -1px 0 0 #e2e8f0 !important;\r\n    padding: 8px 6px;\r\n    vertical-align: middle;\r\n    background-color: #fefffb;\r\n    color: #2d3748;\r\n  }\r\n\r\n  \/* Sticky C\u1ed9t S\u00e2n g\u00f4n *\/\r\n  #golf-table th.sticky-san-gon {\r\n    position: sticky !important;\r\n    left: 0 !important;\r\n    z-index: 10 !important;\r\n    background-color: #3e5622 !important;\r\n  }\r\n\r\n  #golf-table td.sticky-golf-col {\r\n    position: sticky !important;\r\n    left: 0 !important;\r\n    z-index: 5 !important;\r\n    background-color: #fefffb !important;\r\n    box-shadow: inset -1px -1px 0 0 #e2e8f0, 2px 0 5px rgba(0,0,0,0.06) !important;\r\n  }\r\n\r\n  \/* T\u00ean s\u00e2n *\/\r\n  .sticky-golf-col b,\r\n  .sticky-golf-col strong {\r\n    color: #1a202c !important;\r\n    font-weight: 700 !important;\r\n  }\r\n\r\n  \/* \u00d4 ch\u1ee9a gi\u00e1 FlightGolf *\/\r\n  .price-flightgolf-container {\r\n    display: flex;\r\n    flex-direction: column;\r\n    align-items: flex-start;\r\n    justify-content: center;\r\n  }\r\n\r\n  \/* Gi\u00e1 FlightGolf *\/\r\n  .price-flightgolf {\r\n    color: #d9534f !important;\r\n    font-weight: 700 !important;\r\n    font-size: 13.5px !important;\r\n  }\r\n\r\n  \/* D\u00f2ng Ti\u1ebft ki\u1ec7m *\/\r\n  .price-savings {\r\n    font-size: 11px !important;\r\n    color: #888888 !important;\r\n    margin-top: 2px;\r\n    font-weight: 400 !important;\r\n  }\r\n\r\n  \/* C\u1ed9t Ph\u00ed xe \u0111i\u1ec7n *\/\r\n  .fee-car {\r\n    color: #6b8e23 !important;\r\n    font-weight: 600 !important;\r\n  }\r\n\r\n  \/* D\u1ea3i ph\u00e2n c\u00e1ch khu v\u1ef1c *\/\r\n  .row-khuvuc-header {\r\n    background-color: #e8eedd !important;\r\n    color: #2f4017 !important;\r\n    font-weight: 700 !important;\r\n    text-align: center !important;\r\n    padding: 10px 16px !important;\r\n    font-size: 14px !important;\r\n    letter-spacing: 0.3px;\r\n    border: none !important;\r\n    box-shadow: inset -1px -1px 0 0 #d4dfc3 !important;\r\n  }\r\n\r\n  \/* N\u00fat \u0110\u1eb7t S\u00e2n *\/\r\n  .cell-datsan {\r\n    text-align: center !important;\r\n    vertical-align: middle !important;\r\n  }\r\n\r\n  .btn-book {\r\n    background-color: #ffffff !important;\r\n    color: #3e5622 !important;\r\n    border: 1px solid #3e5622 !important;\r\n    padding: 6px 14px !important;\r\n    border-radius: 20px !important;\r\n    text-decoration: none !important;\r\n    display: inline-flex !important;\r\n    align-items: center !important;\r\n    justify-content: center !important;\r\n    font-weight: 600 !important;\r\n    font-size: 12px !important;\r\n    transition: all 0.2s ease-in-out !important;\r\n    box-shadow: 0 1px 2px rgba(0,0,0,0.05);\r\n    margin: 0 auto;\r\n  }\r\n\r\n  .btn-book:hover {\r\n    background-color: #3e5622 !important;\r\n    color: #ffffff !important;\r\n    box-shadow: 0 3px 6px rgba(62, 86, 34, 0.25);\r\n  }\r\n<\/style>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-8cb5056 elementor-widget elementor-widget-html\" data-id=\"8cb5056\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<script>\n(function() {\n  \/\/ 1. NH\u1eacN DI\u1ec6N NG\u00d4N NG\u1eee T\u1eea URL\n  const currentPath = window.location.pathname;\n  let lang = 'vi';\n  if (currentPath.includes('\/en\/')) {\n    lang = 'en';\n  } else if (currentPath.includes('\/ko\/')) {\n    lang = 'ko';\n  }\n\n  \/\/ 2. B\u1ed8 T\u1eea \u0110I\u1ec2N V\u0102N B\u1ea2N THEO NG\u00d4N NG\u1eee\n  const i18n = {\n    vi: {\n      khuVuc: {\n        \"mien_bac\": \"S\u00e2n g\u00f4n Mi\u1ec1n B\u1eafc\",\n        \"vinpearl\": \"S\u00e2n g\u00f4n Vinpearl\",\n        \"flc\": \"S\u00e2n g\u00f4n FLC\",\n        \"mien_trung\": \"S\u00e2n g\u00f4n Mi\u1ec1n Trung\",\n        \"mien_nam\": \"S\u00e2n g\u00f4n Mi\u1ec1n Nam\"\n      },\n      saveText: \"Ti\u1ebft ki\u1ec7m \",\n      bookBtn: \"\u0110\u1eb7t s\u00e2n\"\n    },\n    en: {\n      khuVuc: {\n        \"mien_bac\": \"Northern Golf Courses\",\n        \"vinpearl\": \"Vinpearl Golf Courses\",\n        \"flc\": \"FLC Golf Courses\",\n        \"mien_trung\": \"Central Golf Courses\",\n        \"mien_nam\": \"Southern Golf Courses\"\n      },\n      saveText: \"Save \",\n      bookBtn: \"Book Now\"\n    },\n    ko: {\n      khuVuc: {\n        \"mien_bac\": \"\ubd81\ubd80 \uace8\ud504\uc7a5\",\n        \"vinpearl\": \"\ube48\ud384 \uace8\ud504\uc7a5\",\n        \"flc\": \"FLC \uace8\ud504\uc7a5\",\n        \"mien_trung\": \"\uc911\ubd80 \uace8\ud504\uc7a5\",\n        \"mien_nam\": \"\ub0a8\ubd80 \uace8\ud504\uc7a5\"\n      },\n      saveText: \"\", \/\/ Ti\u1ebfng H\u00e0n ch\u1eef \ud560\uc778 \u0111\u1eb7t \u0111\u1eb1ng sau\n      saveTextSuffix: \" \ud560\uc778\",\n      bookBtn: \"\uc608\uc57d\ud558\uae30\"\n    }\n  };\n\n  const t = i18n[lang] || i18n['vi'];\n\n  const diaPhuongMap = {\n    vinh_phuc: \"PHU THO\", ha_noi: \"HA NOI\", bac_giang: \"BAC NINH\", hai_duong: \"HAI PHONG\", hoa_binh: \"HOA BINH\",\n    ha_nam: \"NINH BINH\", phu_tho: \"PHU THO\", ninh_binh: \"NINH BINH\", hai_phong: \"HAI PHONG\", quang_ninh: \"QUANG NINH\",\n    yen_bai: \"YEN BAI\", lao_cai: \"LAO CAI\", vinpearlcourse: \"VINPEARL\", flccourse: \"FLC COURSE\",\n    da_nang: \"DA NANG\", hue: \"HUE\", quang_nam: \"QUANG NAM\", nghe_an: \"NGHE AN\", ha_tinh: \"HA TINH\",\n    khanh_hoa: \"KHANH HOA\", ninh_thuan: \"NINH THUAN\", lam_dong: \"LAM DONG\", binh_thuan: \"BINH THUAN\",\n    dong_nai: \"DONG NAI\", binh_duong: \"BINH DUONG\", tp_hcm: \"TP HCM\", vung_tau: \"VUNG TAU\",\n    long_an: \"TAY NINH\", phu_quoc: \"PHU QUOC\", thai_nguyen: \"THAI NGUYEN\", quang_tri: \"QUANG TRI\"\n  };\n\n  let fullGolfData = [];\n\n  \/\/ Render \u00f4 gi\u00e1 FlightGolf - Align Top\n  function renderFlightGolfPriceCell(priceFL, pricePL) {\n    if (!priceFL) return '<td style=\"text-align:left; padding:8px 6px; vertical-align:top;\"><\/td>';\n    \n    const cleanFL = priceFL.toString().trim();\n    \n    if (cleanFL.toUpperCase() === 'N\/A') {\n      return `\n        <td style=\"text-align:left; padding:8px 6px; vertical-align:top;\">\n          <div class=\"price-flightgolf-container\" style=\"align-items: flex-start;\">\n            <span class=\"price-flightgolf\">N\/A<\/span>\n          <\/div>\n        <\/td>\n      `;\n    }\n\n    const parsePrice = (str) => {\n      if (!str) return 0;\n      const num = str.toString().replace(\/[^0-9]\/g, '');\n      return num ? parseInt(num, 10) : 0;\n    };\n\n    const flNum = parsePrice(priceFL);\n    const plNum = parsePrice(pricePL);\n    const diff = plNum - flNum;\n\n    let savingsHtml = '';\n    if (flNum > 0 && diff > 0) {\n      const formattedDiff = diff.toLocaleString('vi-VN') + '\u0111';\n      \n      \/\/ X\u1eed l\u00fd c\u00e2u \"Ti\u1ebft ki\u1ec7m\" theo ng\u00f4n ng\u1eef\n      let saveString = '';\n      if (lang === 'ko') {\n        saveString = `${formattedDiff}${t.saveTextSuffix}`;\n      } else {\n        saveString = `${t.saveText}${formattedDiff}`;\n      }\n\n      savingsHtml = `<div class=\"price-savings\">${saveString}<\/div>`;\n    }\n\n    return `\n      <td style=\"text-align:left; padding:8px 6px; vertical-align:top;\">\n        <div class=\"price-flightgolf-container\" style=\"align-items: flex-start;\">\n          <span class=\"price-flightgolf\">${priceFL}<\/span>\n          ${savingsHtml}\n        <\/div>\n      <\/td>\n    `;\n  }\n\n  async function fetchAndRenderGolfData(filteredKeyword = \"\") {\n    const tbody = document.getElementById('golf-table-body');\n    if (!tbody) return;\n    tbody.innerHTML = \"\";\n\n    const keyword = filteredKeyword.toLowerCase().trim();\n\n    const filteredData = fullGolfData.filter(san =>\n      san.slug.toLowerCase().includes(keyword)\n    );\n\n    let currentKhuVuc = '';\n    const diaPhuongRowspans = {};\n    const diaPhuongRendered = {};\n    let counter = 1;\n\n    filteredData.forEach(san => {\n      const dia_phuong = san.dia_phuong || 'khac';\n      diaPhuongRowspans[dia_phuong] = (diaPhuongRowspans[dia_phuong] || 0) + san.gia_tee_time.reduce((t, b) => t + b.khung_gio.length, 0);\n    });\n\n    for (const san of filteredData) {\n      if (san.khu_vuc !== currentKhuVuc) {\n        const trGroup = document.createElement('tr');\n        const labelKhuVuc = t.khuVuc[san.khu_vuc] || san.khu_vuc;\n        trGroup.innerHTML = `<td colspan=\"12\" class=\"row-khuvuc-header\">${labelKhuVuc}<\/td>`;\n        tbody.appendChild(trGroup);\n        currentKhuVuc = san.khu_vuc;\n      }\n\n      const diaPhuongSlug = san.dia_phuong || 'khac';\n      const diaPhuongLabel = diaPhuongMap[diaPhuongSlug] || diaPhuongSlug.toUpperCase();\n      const allRows = [];\n\n      san.gia_tee_time.forEach(dateBlock => {\n        dateBlock.khung_gio.forEach(slot => {\n          allRows.push({ ngay: dateBlock.ngay, ...slot });\n        });\n      });\n\n      allRows.forEach((row, index) => {\n        const tr = document.createElement('tr');\n        tr.setAttribute('data-san', san.slug.toLowerCase());\n        let html = '';\n\n        \/\/ C\u1ed9t STT c\u0103n gi\u1eefa\n        if (index === 0) {\n          html += `<td rowspan=\"${allRows.length}\" style=\"text-align:center; vertical-align:middle; font-weight:500; color:#4a5568;\">${counter}<\/td>`;\n        }\n\n        \/\/ C\u1ed9t \u0110\u1ecba ph\u01b0\u01a1ng\n        if (!diaPhuongRendered[diaPhuongSlug]) {\n          html += `<td rowspan=\"${diaPhuongRowspans[diaPhuongSlug]}\" style=\"font-weight:bold; color:#2d3748; vertical-align:middle; text-align:left; padding-left:12px;\">${diaPhuongLabel}<\/td>`;\n          diaPhuongRendered[diaPhuongSlug] = true;\n        }\n\n        \/\/ C\u1ed9t T\u00ean s\u00e2n (Sticky)\n        if (index === 0) {\n          html += `<td rowspan=\"${allRows.length}\" class=\"sticky-golf-col\" data-sticky-golf style=\"min-width:150px; text-align:left; padding-left:12px;\"><b>${san.ten_san}<\/b><\/td>`;\n        }\n\n        \/\/ C\u1ed9t Ng\u00e0y\n        if (index === 0 || allRows[index].ngay !== allRows[index - 1]?.ngay) {\n          const rowspanCount = allRows.filter(r => r.ngay === row.ngay).length;\n          html += `<td rowspan=\"${rowspanCount}\" style=\"color:#2d3748; text-align:left; padding-left:12px;\">${row.ngay}<\/td>`;\n        }\n\n        \/\/ C\u1ed9t Gi\u1edd\n        html += `<td style=\"color:#4a5568; text-align:left; padding-left:12px;\">${row.gio || ''}<\/td>`;\n\n        \/\/ 1. Gi\u00e1 FlightGolf Ng\u00e0y th\u01b0\u1eddng (Top)\n        html += renderFlightGolfPriceCell(row[\"gia-wd-fl\"], row[\"gia-wd-pl\"]);\n\n        \/\/ 2. Gi\u00e1 Public Ng\u00e0y th\u01b0\u1eddng (Top)\n        html += `<td style=\"color:#2d3748; text-align:left; padding:8px 6px; vertical-align:top;\">${row[\"gia-wd-pl\"] || ''}<\/td>`;\n\n        \/\/ 3. Gi\u00e1 FlightGolf Cu\u1ed1i tu\u1ea7n (Top)\n        html += renderFlightGolfPriceCell(row[\"gia-wk-fl\"], row[\"gia-wk-pl\"]);\n\n        \/\/ 4. Gi\u00e1 Public Cu\u1ed1i tu\u1ea7n (Top)\n        html += `<td style=\"color:#2d3748; text-align:left; padding:8px 6px; vertical-align:top;\">${row[\"gia-wk-pl\"] || ''}<\/td>`;\n\n        if (index === 0) {\n          html += `<td rowspan=\"${allRows.length}\" class=\"fee-car\" style=\"max-width:120px; text-align:left; padding-left:12px;\">${san.phi_xe_chung || ''}<\/td>`;\n          html += `<td rowspan=\"${allRows.length}\" style=\"max-width:200px; word-break:break-word; color:#718096; font-size:12.5px; text-align:left; padding-left:12px;\">${san.bonus_chung || ''}<\/td>`;\n          \n          \/\/ C\u1ed9t \u0110\u1eb7t s\u00e2n (\u0110\u00e3 \u0111\u1ed5i theo URL)\n          html += `<td rowspan=\"${allRows.length}\" class=\"cell-datsan\">\n            <a href=\"${san.link_dat_san}\" target=\"_blank\"\n               class=\"btn-book pdf-disable-link\"\n               data-href=\"${san.link_dat_san}\">\n              ${t.bookBtn}\n            <\/a>\n          <\/td>`;\n        }\n\n        tr.innerHTML = html;\n        tbody.appendChild(tr);\n      });\n\n      counter++;\n    }\n  }\n\n  \/\/ Fetch data\n  window.addEventListener('load', async function () {\n    try {\n      const res = await fetch('\/wp-json\/golfdata\/v1\/bang-gia-v2\/');\n      fullGolfData = await res.json();\n      fetchAndRenderGolfData();\n    } catch (error) {\n      console.error('L\u1ed7i fetch d\u1eef li\u1ec7u s\u00e2n golf', error);\n    }\n\n    \/\/ B\u1eaft s\u1ef1 ki\u1ec7n g\u00f5 \u00f4 t\u00ecm ki\u1ebfm\n    const searchInput = document.getElementById('golf-search');\n    if (searchInput) {\n      searchInput.addEventListener('input', function () {\n        fetchAndRenderGolfData(this.value);\n      });\n    }\n  });\n})();\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>QUOTATION PRICE skip render: ucaddon_gradient_text_effect T\u1ea3i b\u1ea3ng gi\u00e1 Download price list \uac00\uaca9\ud45c \ub2e4\uc6b4\ub85c\ub4dc \u0110ang t\u1ea1o PDF, vui l\u00f2ng ch\u1edd&#8230; Generating<\/p>","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-3958","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/dev.flightgolf.vn\/en\/wp-json\/wp\/v2\/pages\/3958","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dev.flightgolf.vn\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/dev.flightgolf.vn\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/dev.flightgolf.vn\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/dev.flightgolf.vn\/en\/wp-json\/wp\/v2\/comments?post=3958"}],"version-history":[{"count":482,"href":"https:\/\/dev.flightgolf.vn\/en\/wp-json\/wp\/v2\/pages\/3958\/revisions"}],"predecessor-version":[{"id":11530,"href":"https:\/\/dev.flightgolf.vn\/en\/wp-json\/wp\/v2\/pages\/3958\/revisions\/11530"}],"wp:attachment":[{"href":"https:\/\/dev.flightgolf.vn\/en\/wp-json\/wp\/v2\/media?parent=3958"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}