{"id":28,"date":"2026-07-11T14:17:28","date_gmt":"2026-07-11T14:17:28","guid":{"rendered":"https:\/\/grahadwarkavati.com\/?page_id=28"},"modified":"2026-07-12T00:32:10","modified_gmt":"2026-07-12T00:32:10","slug":"graha-dwakavati-ubud","status":"publish","type":"page","link":"https:\/\/grahadwarkavati.com\/","title":{"rendered":"Villa Graha Dwarkavati"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"28\" class=\"elementor elementor-28\">\n\t\t\t\t<div class=\"elementor-element elementor-element-20358a3 e-con-full e-flex e-con e-parent\" data-id=\"20358a3\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-e9c7c9f elementor-widget elementor-widget-html\" data-id=\"e9c7c9f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <title>Graha Dwakavati Ubud - Luxury Premium Villa<\/title>\n    <meta name=\"description\" content=\"Experience Tranquility in the Heart of Ubud. Luxury Villa with 7 Elegant Rooms and a Stunning Public Swimming Pool.\">\n    \n    <!-- Google Fonts -->\n    <link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n    <link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\n    <link href=\"https:\/\/fonts.googleapis.com\/css2?family=Playfair+Display:ital,wght@0,400;0,600;0,700;1,400&family=Lato:wght@300;400;700&display=swap\" rel=\"stylesheet\">\n    \n    <!-- Phosphor Icons -->\n    <script src=\"https:\/\/unpkg.com\/@phosphor-icons\/web\"><\/script>\n\n    <!-- Flatpickr (Datepicker Library for disabling specific booked dates) -->\n    <link rel=\"stylesheet\" href=\"https:\/\/cdn.jsdelivr.net\/npm\/flatpickr\/dist\/flatpickr.min.css\">\n    <link rel=\"stylesheet\" type=\"text\/css\" href=\"https:\/\/npmcdn.com\/flatpickr\/dist\/themes\/airbnb.css\">\n\n    <style>\n        \/* CSS Variables - Color Palette & Typography *\/\n        :root {\n            --color-white: #FFFFFF;\n            --color-dark: #1A1A1A;\n            --color-gold: #C9A86A;\n            --color-gold-hover: #b3955e;\n            --color-beige: #F5F0E8;\n            --color-text-light: #666666;\n            \n            --font-heading: 'Playfair Display', serif;\n            --font-body: 'Lato', sans-serif;\n            \n            --transition: all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1);\n        }\n\n        \/* Reset & Base Styles *\/\n        * { margin: 0; padding: 0; box-sizing: border-box; }\n        html { scroll-behavior: smooth; }\n        body {\n            font-family: var(--font-body);\n            color: var(--color-dark);\n            background-color: var(--color-white);\n            line-height: 1.6;\n            overflow-x: hidden;\n        }\n\n        h1, h2, h3, h4, h5, h6 {\n            font-family: var(--font-heading);\n            font-weight: 600;\n            line-height: 1.2;\n        }\n\n        a { text-decoration: none; color: inherit; }\n        ul { list-style: none; }\n        img { max-width: 100%; height: auto; display: block; }\n\n        .container {\n            width: 100%;\n            max-width: 1200px;\n            margin: 0 auto;\n            padding: 0 20px;\n        }\n\n        .section-title {\n            text-align: center;\n            font-size: 2.5rem;\n            margin-bottom: 1rem;\n            color: var(--color-dark);\n        }\n\n        .section-subtitle {\n            text-align: center;\n            color: var(--color-gold);\n            font-size: 1.1rem;\n            text-transform: uppercase;\n            letter-spacing: 2px;\n            margin-bottom: 3rem;\n        }\n\n        section { padding: 80px 0; }\n\n        \/* Buttons *\/\n        .btn {\n            display: inline-block;\n            padding: 12px 30px;\n            font-family: var(--font-body);\n            font-size: 1rem;\n            font-weight: 700;\n            text-transform: uppercase;\n            letter-spacing: 1px;\n            border: none;\n            cursor: pointer;\n            transition: var(--transition);\n            text-align: center;\n            border-radius: 4px;\n        }\n\n        .btn-primary {\n            background-color: var(--color-gold);\n            color: var(--color-white);\n        }\n\n        .btn-primary:hover {\n            background-color: var(--color-gold-hover);\n            transform: translateY(-2px);\n            box-shadow: 0 4px 15px rgba(201, 168, 106, 0.4);\n        }\n\n        .btn-outline {\n            background-color: transparent;\n            color: var(--color-white);\n            border: 1px solid var(--color-white);\n        }\n\n        .btn-outline:hover {\n            background-color: var(--color-white);\n            color: var(--color-dark);\n        }\n\n        \/* Navbar & Dual Logo System *\/\n        nav {\n            position: fixed;\n            top: 0;\n            left: 0;\n            width: 100%;\n            z-index: 1000;\n            padding: 15px 0;\n            transition: var(--transition);\n            background: transparent;\n        }\n\n        nav.scrolled {\n            background: rgba(255, 255, 255, 0.98);\n            padding: 10px 0;\n            box-shadow: 0 2px 10px rgba(0,0,0,0.1);\n        }\n\n        .nav-container {\n            display: flex;\n            justify-content: space-between;\n            align-items: center;\n        }\n\n        .logo-img {\n            max-height: 50px;\n            width: auto;\n            transition: var(--transition);\n        }\n\n        nav.scrolled .logo-img { max-height: 45px; }\n\n        \/* Logo visibility toggles *\/\n        .logo-light { display: block; }\n        .logo-dark { display: none; }\n        nav.scrolled .logo-light { display: none; }\n        nav.scrolled .logo-dark { display: block; }\n\n        .nav-links {\n            display: flex;\n            gap: 30px;\n            align-items: center;\n        }\n\n        .nav-links a {\n            color: var(--color-white);\n            font-size: 0.9rem;\n            text-transform: uppercase;\n            letter-spacing: 1px;\n            transition: color 0.3s ease;\n            font-weight: 600;\n        }\n\n        nav.scrolled .nav-links a { color: var(--color-dark); }\n        .nav-links a:hover, nav.scrolled .nav-links a:hover { color: var(--color-gold); }\n\n        .mobile-menu-btn {\n            display: none;\n            color: var(--color-white);\n            font-size: 1.5rem;\n            cursor: pointer;\n            transition: color 0.3s ease;\n        }\n\n        nav.scrolled .mobile-menu-btn { color: var(--color-dark); }\n\n        \/* Hero Section *\/\n        #hero {\n            height: 100vh;\n            position: relative;\n            display: flex;\n            align-items: center;\n            justify-content: center;\n            color: var(--color-white);\n            text-align: center;\n            overflow: hidden; \/* For zoom effect containment *\/\n            padding-top: 60px;\n        }\n\n        \/* Slideshow Animation *\/\n        .hero-slide {\n            position: absolute;\n            top: 0;\n            left: 0;\n            width: 100%;\n            height: 100%;\n            background-size: cover;\n            background-position: center;\n            opacity: 0;\n            z-index: -2;\n            animation: heroFade 18s infinite;\n        }\n\n        .hero-slide:nth-child(1) {\n            background-image: url('https:\/\/cf.bstatic.com\/xdata\/images\/hotel\/max1024x768\/745580675.jpg?k=e6e098ebf9b477e5bf227768b473f7dc1c52adc2410c5cd5d06740e34b7046c0&o=');\n            animation-delay: 0s;\n        }\n        .hero-slide:nth-child(2) {\n            background-image: url('https:\/\/cf.bstatic.com\/xdata\/images\/hotel\/max1024x768\/745264542.jpg?k=c2c50233181368e4ce712be933de0ba1f2b64850d921c6fbfe6d7e4874c2b7e2&o=');\n            animation-delay: 6s;\n        }\n        .hero-slide:nth-child(3) {\n            background-image: url('https:\/\/cf.bstatic.com\/xdata\/images\/hotel\/max1024x768\/745265328.jpg?k=6ba227ffd7df0e013428bb4fe77f086934be464f5c1a048e62f0f62161a48da8&o=');\n            animation-delay: 12s;\n        }\n\n        @keyframes heroFade {\n            0% { opacity: 0; transform: scale(1); }\n            10% { opacity: 1; }\n            33% { opacity: 1; }\n            43% { opacity: 0; transform: scale(1.05); } \/* Slow zoom out effect *\/\n            100% { opacity: 0; }\n        }\n\n        .hero-overlay {\n            position: absolute;\n            top: 0;\n            left: 0;\n            width: 100%;\n            height: 100%;\n            background: linear-gradient(rgba(26, 26, 26, 0.4), rgba(26, 26, 26, 0.7));\n            z-index: -1;\n        }\n\n        .hero-content {\n            max-width: 800px;\n            padding: 0 20px;\n            animation: fadeInUP 1s ease-out;\n            z-index: 1;\n        }\n\n        .hero-title {\n            font-size: 4rem;\n            margin-bottom: 20px;\n            text-shadow: 2px 2px 4px rgba(0,0,0,0.3);\n        }\n\n        .hero-subtitle {\n            font-size: 1.2rem;\n            font-family: var(--font-body);\n            font-weight: 300;\n            margin-bottom: 40px;\n            opacity: 0.9;\n        }\n\n        .hero-badges {\n            display: flex;\n            flex-wrap: wrap;\n            justify-content: center;\n            gap: 15px;\n            margin-bottom: 40px;\n        }\n\n        .badge {\n            background: rgba(255, 255, 255, 0.1);\n            backdrop-filter: blur(5px);\n            border: 1px solid rgba(255, 255, 255, 0.2);\n            padding: 8px 15px;\n            border-radius: 30px;\n            font-size: 0.9rem;\n            display: flex;\n            align-items: center;\n            gap: 8px;\n        }\n\n        .hero-ctas {\n            display: flex;\n            justify-content: center;\n            gap: 20px;\n        }\n\n        \/* Sticky Booking Engine *\/\n        #booking-bar {\n            background: rgba(255, 255, 255, 0.95);\n            backdrop-filter: blur(10px);\n            padding: 20px 0;\n            box-shadow: 0 10px 30px rgba(0,0,0,0.1);\n            position: relative;\n            z-index: 10;\n            margin-top: -50px;\n            border-radius: 8px;\n        }\n\n        \/* Simplified booking form to 4 columns since room type is fixed to Deluxe Room *\/\n        .booking-form {\n            display: grid;\n            grid-template-columns: repeat(4, 1fr) auto;\n            gap: 15px;\n            align-items: end;\n        }\n\n        .form-group {\n            display: flex;\n            flex-direction: column;\n            gap: 5px;\n            position: relative;\n        }\n\n        .form-group label {\n            font-size: 0.85rem;\n            font-weight: 700;\n            color: var(--color-dark);\n            text-transform: uppercase;\n        }\n\n        .form-group input, .form-group select {\n            padding: 12px;\n            border: 1px solid #ddd;\n            border-radius: 4px;\n            font-family: var(--font-body);\n            font-size: 1rem;\n            background-color: var(--color-white);\n        }\n\n        \/* About Section (Intro to Ubud) *\/\n        #about { background-color: var(--color-beige); }\n\n        .about-wrapper {\n            display: grid;\n            grid-template-columns: 1fr 1fr;\n            gap: 60px;\n            align-items: center;\n        }\n\n        .about-content h2.section-title { text-align: left; margin-bottom: 0.5rem; }\n        .about-content p.section-subtitle { text-align: left; margin-bottom: 2rem; }\n        .about-text {\n            margin-bottom: 30px;\n            color: var(--color-text-light);\n            font-size: 1.05rem;\n            line-height: 1.8;\n        }\n\n        .nearby-list li {\n            display: flex;\n            align-items: flex-start;\n            gap: 15px;\n            margin-bottom: 20px;\n        }\n\n        .nearby-icon {\n            font-size: 1.8rem;\n            color: var(--color-gold);\n            background: rgba(201, 168, 106, 0.15);\n            padding: 10px;\n            border-radius: 8px;\n        }\n\n        .nearby-text h4 { margin-bottom: 5px; color: var(--color-dark); font-size: 1.1rem; }\n        .nearby-text p { font-size: 0.95rem; color: var(--color-text-light); }\n\n        .about-image { position: relative; }\n        .about-image img { border-radius: 12px; box-shadow: 0 20px 40px rgba(0,0,0,0.1); }\n        .about-image::before {\n            content: '';\n            position: absolute;\n            top: -20px;\n            right: -20px;\n            width: 100%;\n            height: 100%;\n            border: 2px solid var(--color-gold);\n            border-radius: 12px;\n            z-index: -1;\n        }\n\n        \/* Deluxe Room Showcase Section (Single Room Design) *\/\n        #rooms { background-color: var(--color-white); }\n\n        .deluxe-showcase {\n            display: grid;\n            grid-template-columns: 1fr 1fr;\n            gap: 50px;\n            align-items: start;\n        }\n\n        .deluxe-gallery {\n            display: grid;\n            grid-template-columns: 1fr 1fr;\n            gap: 15px;\n        }\n\n        .deluxe-gallery img {\n            border-radius: 8px;\n            object-fit: cover;\n            width: 100%;\n            cursor: pointer;\n            transition: var(--transition);\n            box-shadow: 0 5px 15px rgba(0,0,0,0.05);\n        }\n\n        .deluxe-gallery img:hover {\n            transform: scale(1.03);\n            box-shadow: 0 10px 25px rgba(0,0,0,0.15);\n        }\n\n        .main-img { grid-column: 1 \/ -1; height: 350px; }\n        .thumb-img { height: 160px; }\n\n        .deluxe-info { padding: 10px 0; }\n        \n        .deluxe-info h3 {\n            font-size: 2rem;\n            margin-bottom: 15px;\n            color: var(--color-dark);\n        }\n        \n        .room-features {\n            display: flex;\n            flex-wrap: wrap;\n            gap: 15px;\n            margin-bottom: 25px;\n            padding-bottom: 25px;\n            border-bottom: 1px solid #eee;\n        }\n\n        .room-feature-item {\n            display: flex;\n            align-items: center;\n            gap: 8px;\n            font-size: 0.95rem;\n            color: var(--color-text-light);\n            font-weight: 600;\n        }\n\n        .room-feature-item i { color: var(--color-gold); font-size: 1.3rem; }\n\n        .deluxe-price {\n            font-size: 2.2rem;\n            color: var(--color-gold);\n            font-family: var(--font-heading);\n            font-weight: 700;\n            margin-bottom: 25px;\n        }\n\n        .deluxe-price span {\n            font-size: 1.1rem;\n            color: #888;\n            font-weight: 400;\n            font-family: var(--font-body);\n        }\n\n        \/* Facilities Section *\/\n        #facilities { background-color: var(--color-beige); }\n\n        .facilities-grid {\n            display: grid;\n            grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));\n            gap: 30px;\n            text-align: center;\n        }\n\n        .facility-item { padding: 20px; background: var(--color-white); border-radius: 8px; transition: var(--transition); }\n        .facility-item:hover { transform: translateY(-5px); box-shadow: 0 10px 20px rgba(0,0,0,0.05); }\n        .facility-icon { font-size: 2.5rem; color: var(--color-gold); margin-bottom: 15px; display: inline-block; }\n\n        \/* Features \/ Why Choose Us *\/\n        #features-section { background-color: var(--color-white); }\n        .features-list { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 20px; }\n        .feature-list-item { display: flex; align-items: flex-start; gap: 15px; padding: 20px; border: 1px solid #eee; border-radius: 8px; }\n        .feature-list-item i { font-size: 1.5rem; color: var(--color-gold); margin-top: 3px; }\n\n        \/* Gallery Section (Expanded for 9 photos) *\/\n        #gallery { background-color: var(--color-dark); color: var(--color-white); }\n        .gallery-grid {\n            display: grid;\n            grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n            grid-auto-rows: 200px;\n            gap: 15px;\n        }\n        .gallery-item { position: relative; overflow: hidden; border-radius: 8px; cursor: pointer; }\n        \/* Creating a masonry-like look by spanning certain items *\/\n        .gallery-item:nth-child(1) { grid-column: span 2; grid-row: span 2; }\n        .gallery-item:nth-child(4) { grid-row: span 2; }\n        .gallery-item:nth-child(8) { grid-column: span 2; }\n\n        .gallery-item img { width: 100%; height: 100%; object-fit: cover; transition: transform 0.5s ease; }\n        .gallery-item:hover img { transform: scale(1.1); }\n\n        \/* Lightbox *\/\n        #lightbox {\n            display: none; position: fixed; top: 0; left: 0; width: 100%; height: 100%;\n            background: rgba(0,0,0,0.9); z-index: 2000; justify-content: center; align-items: center;\n        }\n        #lightbox.active { display: flex; }\n        #lightbox img { max-width: 90%; max-height: 90vh; border-radius: 4px; }\n        .lightbox-close { position: absolute; top: 20px; right: 30px; color: white; font-size: 2rem; cursor: pointer; }\n\n        \/* Testimonials *\/\n        #testimonials { background-color: var(--color-beige); text-align: center; overflow: hidden; }\n        .testimonial-slider { display: flex; transition: transform 0.5s ease; width: 500%; }\n        .testimonial-item { width: 20%; padding: 0 20px; }\n        .stars { color: var(--color-gold); font-size: 1.2rem; margin-bottom: 15px; }\n        .review-text { font-size: 1.2rem; font-style: italic; margin-bottom: 20px; max-width: 700px; margin-left: auto; margin-right: auto; }\n        .reviewer-name { font-weight: 700; font-family: var(--font-heading); }\n        .reviewer-country { font-size: 0.9rem; color: var(--color-text-light); }\n        .slider-dots { display: flex; justify-content: center; gap: 10px; margin-top: 30px; }\n        .dot { width: 12px; height: 12px; border-radius: 50%; background-color: #ddd; cursor: pointer; transition: var(--transition); }\n        .dot.active { background-color: var(--color-gold); }\n\n        \/* Location Section *\/\n        .map-container { width: 100%; height: 450px; margin-top: 40px; }\n        .map-container iframe { width: 100%; height: 100%; border: 0; }\n\n        \/* Footer *\/\n        footer { background-color: var(--color-dark); color: var(--color-white); padding: 60px 0 20px; }\n        .footer-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 40px; margin-bottom: 40px; }\n        .footer-col h3 { color: var(--color-gold); margin-bottom: 20px; font-size: 1.2rem; }\n        .footer-col p, .footer-col ul li { color: #aaa; margin-bottom: 10px; font-size: 0.95rem; }\n        .footer-col ul li a:hover { color: var(--color-gold); }\n        .social-links { display: flex; gap: 15px; margin-top: 20px; }\n        .social-links a { display: flex; align-items: center; justify-content: center; width: 40px; height: 40px; background: rgba(255,255,255,0.1); border-radius: 50%; transition: var(--transition); }\n        .social-links a:hover { background: var(--color-gold); color: var(--color-white); }\n        .footer-logo { max-height: 50px; margin-bottom: 20px; display: block; }\n        .footer-bottom { text-align: center; padding-top: 20px; border-top: 1px solid rgba(255,255,255,0.1); color: #777; font-size: 0.85rem; }\n\n        \/* Floating WhatsApp Button *\/\n        .float-wa {\n            position: fixed; bottom: 30px; right: 30px; background-color: #25D366; color: white;\n            width: 60px; height: 60px; border-radius: 50%; display: flex; justify-content: center;\n            align-items: center; font-size: 35px; box-shadow: 0 4px 10px rgba(0,0,0,0.3); z-index: 100; transition: var(--transition);\n        }\n        .float-wa:hover { transform: scale(1.1); background-color: #1ebe57; }\n\n        \/* Booking Modal Setup *\/\n        .modal-overlay {\n            position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0,0,0,0.6);\n            backdrop-filter: blur(5px); display: none; justify-content: center; align-items: center; z-index: 2000; padding: 20px; opacity: 0; transition: opacity 0.3s ease;\n        }\n        .modal-overlay.active { display: flex; opacity: 1; }\n        .modal-content { background: var(--color-white); width: 100%; max-width: 900px; border-radius: 12px; overflow: hidden; display: flex; flex-direction: column; max-height: 90vh; position: relative; transform: translateY(20px); transition: transform 0.3s ease; box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25); }\n        .modal-overlay.active .modal-content { transform: translateY(0); }\n        .modal-header { padding: 20px 30px; background: var(--color-dark); color: var(--color-white); display: flex; justify-content: space-between; align-items: center; }\n        .modal-header h3 { color: var(--color-gold); margin: 0; }\n        .close-modal { background: none; border: none; color: var(--color-white); font-size: 1.5rem; cursor: pointer; }\n        .modal-body { display: grid; grid-template-columns: 1fr 1fr; overflow-y: auto; }\n        .booking-form-area { padding: 30px; }\n        .booking-summary-area { background: var(--color-beige); padding: 30px; border-left: 1px solid #eee; }\n        .form-row { display: flex; gap: 15px; margin-bottom: 15px; }\n        .form-row .form-group { flex: 1; }\n        .summary-card { background: var(--color-white); padding: 20px; border-radius: 8px; box-shadow: 0 4px 6px rgba(0,0,0,0.05); }\n        .summary-title { font-family: var(--font-heading); font-size: 1.2rem; border-bottom: 1px solid #eee; padding-bottom: 10px; margin-bottom: 15px; }\n        .summary-item { display: flex; justify-content: space-between; margin-bottom: 10px; font-size: 0.95rem; }\n        .summary-item.total { border-top: 1px solid #eee; padding-top: 15px; margin-top: 15px; font-weight: 700; font-size: 1.2rem; color: var(--color-gold); }\n        .wa-submit-btn { width: 100%; background-color: #25D366; color: white; display: flex; justify-content: center; align-items: center; gap: 10px; margin-top: 20px; border: none; cursor: pointer; padding: 12px; border-radius: 4px; font-size: 1rem; font-weight: bold; }\n        .wa-submit-btn:hover { background-color: #1ebe57; box-shadow: 0 4px 15px rgba(37, 211, 102, 0.4); }\n\n        .season-badge { display: inline-block; background: rgba(201, 168, 106, 0.2); color: var(--color-gold); padding: 5px 10px; border-radius: 4px; font-size: 0.8rem; margin-top: 5px; font-weight: bold; }\n\n        \/* Animations *\/\n        @keyframes fadeInUP { from { opacity: 0; transform: translateY(30px); } to { opacity: 1; transform: translateY(0); } }\n        .reveal { opacity: 0; transform: translateY(30px); transition: all 0.8s ease; }\n        .reveal.active { opacity: 1; transform: translateY(0); }\n\n        \/* Responsive Design *\/\n        @media (max-width: 992px) {\n            .booking-form { grid-template-columns: repeat(3, 1fr); }\n            .about-wrapper { grid-template-columns: 1fr; gap: 40px; }\n            .about-image::before { display: none; }\n            .deluxe-showcase { grid-template-columns: 1fr; gap: 30px; }\n            .modal-body { grid-template-columns: 1fr; }\n            .gallery-grid { grid-auto-rows: 150px; }\n            .gallery-item:nth-child(1) { grid-column: span 1; grid-row: span 1; }\n            .gallery-item:nth-child(4) { grid-row: span 1; }\n            .gallery-item:nth-child(8) { grid-column: span 1; }\n        }\n\n        @media (max-width: 768px) {\n            .hero-title { font-size: 2.5rem; }\n            .booking-form { grid-template-columns: 1fr 1fr; }\n            .booking-form .btn { grid-column: span 2; }\n            \n            \/* Navbar Mobile Adjustments *\/\n            .nav-container { position: relative; justify-content: center; }\n            .logo { z-index: 1001; }\n            \n            \/* Full Screen Dropdown Menu *\/\n            .nav-links {\n                position: fixed; top: -100vh; left: 0; width: 100%; height: 100vh;\n                background: var(--color-dark); flex-direction: column; align-items: center;\n                justify-content: center; transition: 0.5s ease; z-index: 999;\n            }\n            .nav-links.active { top: 0; }\n            nav.scrolled .nav-links a { color: var(--color-white); }\n            \n            .mobile-menu-btn { display: block; position: absolute; right: 20px; top: 50%; transform: translateY(-50%); z-index: 1001; }\n            .nav-links.active ~ .mobile-menu-btn { color: var(--color-white) !important; }\n\n            \/* Center Footer on Mobile *\/\n            .footer-col { text-align: center; }\n            .footer-logo { margin-left: auto; margin-right: auto; }\n            .social-links { justify-content: center; }\n            .form-row { flex-direction: column; gap: 0; }\n        }\n\n        @media (max-width: 576px) {\n            .booking-form { grid-template-columns: 1fr; }\n            .booking-form .btn { grid-column: span 1; }\n            .hero-ctas { flex-direction: column; width: 100%; }\n            #booking-bar { margin-top: 0; border-radius: 0; }\n            .logo-img { max-height: 40px; }\n            .deluxe-gallery .thumb-img { height: 120px; }\n        }\n    <\/style>\n<\/head>\n<body>\n\n    <!-- Navigation -->\n    <nav id=\"navbar\">\n        <div class=\"container nav-container\">\n            <a href=\"#\" class=\"logo\">\n                <!-- Light Logo for Dark Background (Top) -->\n                <img decoding=\"async\" src=\"https:\/\/grahadwarkavati.com\/wp-content\/uploads\/2026\/07\/Logo-Graha-Dwarkavati-white.png\" alt=\"Graha Dwakavati Ubud Light Logo\" class=\"logo-img logo-light\">\n                <!-- Dark Logo for Light Background (Scrolled) -->\n                <img decoding=\"async\" src=\"https:\/\/grahadwarkavati.com\/wp-content\/uploads\/2026\/07\/Logo-Graha-Dwarkavati-color.png\" alt=\"Graha Dwakavati Ubud Dark Logo\" class=\"logo-img logo-dark\">\n            <\/a>\n            <div class=\"nav-links\" id=\"navLinks\">\n                <a href=\"#hero\" class=\"nav-link\">Home<\/a>\n                <a href=\"#about\" class=\"nav-link\">About<\/a>\n                <a href=\"#rooms\" class=\"nav-link\">Rooms<\/a>\n                <a href=\"#facilities\" class=\"nav-link\">Facilities<\/a>\n                <a href=\"#gallery\" class=\"nav-link\">Gallery<\/a>\n            <\/div>\n            <i class=\"ph ph-list mobile-menu-btn\" id=\"menuBtn\"><\/i>\n        <\/div>\n    <\/nav>\n\n    <!-- Hero Section -->\n    <header id=\"hero\">\n        <!-- 3 Images for smooth fading slideshow -->\n        <div class=\"hero-slide\"><\/div>\n        <div class=\"hero-slide\"><\/div>\n        <div class=\"hero-slide\"><\/div>\n        \n        <div class=\"hero-overlay\"><\/div>\n        <div class=\"container hero-content\">\n            <div class=\"hero-badges\">\n                <div class=\"badge\"><i class=\"ph-fill ph-star\" style=\"color: #FFD700;\"><\/i> 4.9\/5 Rating<\/div>\n                <div class=\"badge\"><i class=\"ph-fill ph-map-pin\"><\/i> Ubud, Bali<\/div>\n                <div class=\"badge\"><i class=\"ph-fill ph-money\"><\/i> Starting From Rp300K\/Night<\/div>\n            <\/div>\n            <h1 class=\"hero-title\">Experience Tranquility in the Heart of Ubud<\/h1>\n            <p class=\"hero-subtitle\">Luxury Villa with 7 Elegant Deluxe Rooms and a Stunning Public Swimming Pool<\/p>\n            <div class=\"hero-ctas\">\n                <button class=\"btn btn-primary\" onclick=\"document.getElementById('rooms').scrollIntoView();\">View Rooms<\/button>\n                <button class=\"btn btn-outline\" onclick=\"openModal('Deluxe Room')\">Book Now<\/button>\n            <\/div>\n        <\/div>\n    <\/header>\n\n    <!-- Sticky Booking Engine (Simplified since only 1 Room Type exists) -->\n    <section id=\"booking-bar\">\n        <div class=\"container\">\n            <div class=\"booking-form\">\n                <div class=\"form-group\">\n                    <label>Check-in<\/label>\n                    <input type=\"text\" id=\"bar-checkin\" placeholder=\"Select Date\" required>\n                <\/div>\n                <div class=\"form-group\">\n                    <label>Check-out<\/label>\n                    <input type=\"text\" id=\"bar-checkout\" placeholder=\"Select Date\" required>\n                <\/div>\n                <div class=\"form-group\">\n                    <label>Guests<\/label>\n                    <select id=\"bar-guests\">\n                        <option value=\"1\">1 Person<\/option>\n                        <option value=\"2\" selected>2 Persons<\/option>\n                    <\/select>\n                <\/div>\n                <div class=\"form-group\">\n                    <label>Room Type<\/label>\n                    <select id=\"bar-room\">\n                        <!-- Populated via JS Config -->\n                    <\/select>\n                <\/div>\n                <button type=\"button\" class=\"btn btn-primary\" onclick=\"syncAndOpenModal()\">Check Availability<\/button>\n            <\/div>\n        <\/div>\n    <\/section>\n\n    <!-- About Section -->\n    <section id=\"about\">\n        <div class=\"container\">\n            <div class=\"about-wrapper\">\n                <div class=\"about-content reveal\">\n                    <h2 class=\"section-title\">Discover the Magic of Ubud<\/h2>\n                    <p class=\"section-subtitle\">Your Gateway to Bali's Cultural Heart<\/p>\n                    \n                    <p class=\"about-text\">\n                        Welcome to Graha Dwakavati, a sanctuary of peace nestled in the enchanting landscapes of Ubud. Immerse yourself in authentic Balinese culture while enjoying the comfort of our premium luxury villa. Our strategic location offers the perfect balance of serene seclusion and easy access to Bali's most iconic and breathtaking destinations.\n                    <\/p>\n\n                    <ul class=\"nearby-list\">\n                        <li>\n                            <div class=\"nearby-icon\"><i class=\"ph-fill ph-map-pin\"><\/i><\/div>\n                            <div class=\"nearby-text\">\n                                <h4>Central Ubud<\/h4>\n                                <p>Just minutes away from vibrant art markets, royal palaces, and world-class dining experiences.<\/p>\n                            <\/div>\n                        <\/li>\n                        <li>\n                            <div class=\"nearby-icon\"><i class=\"ph-fill ph-plant\"><\/i><\/div>\n                            <div class=\"nearby-text\">\n                                <h4>Tegalalang Rice Terrace<\/h4>\n                                <p>A short scenic drive to the famous lush, cascading emerald rice paddies.<\/p>\n                            <\/div>\n                        <\/li>\n                        <li>\n                            <div class=\"nearby-icon\"><i class=\"ph-fill ph-drop\"><\/i><\/div>\n                            <div class=\"nearby-text\">\n                                <h4>Tirta Empul Temple<\/h4>\n                                <p>Close to the sacred water temple for a deeply spiritual purification experience.<\/p>\n                            <\/div>\n                        <\/li>\n                        <li>\n                            <div class=\"nearby-icon\"><i class=\"ph-fill ph-mountains\"><\/i><\/div>\n                            <div class=\"nearby-text\">\n                                <h4>Kintamani Volcano<\/h4>\n                                <p>Perfectly positioned for a beautiful day trip to witness the majestic Mount Batur and its crater lake.<\/p>\n                            <\/div>\n                        <\/li>\n                    <\/ul>\n                <\/div>\n                \n                <div class=\"about-image reveal\">\n                    <img decoding=\"async\" src=\"https:\/\/ik.imagekit.io\/tvlk\/blog\/2024\/11\/shutterstock_2498914213.jpg?tr=q-70,c-at_max,w-1000,h-600\" alt=\"Beautiful Ubud Landscapes\">\n                <\/div>\n            <\/div>\n        <\/div>\n    <\/section>\n\n    <!-- Rooms Showcase (Single Deluxe Room) -->\n    <section id=\"rooms\">\n        <div class=\"container\">\n            <h2 class=\"section-title reveal\">Our Signature Deluxe Room<\/h2>\n            <p class=\"section-subtitle reveal\">7 Exclusive Units of Pure Comfort<\/p>\n\n            <div class=\"deluxe-showcase reveal\">\n                <!-- Dedicated Image Gallery for Deluxe Room -->\n                <div class=\"deluxe-gallery\">\n                    <!-- Main Image -->\n                    <img decoding=\"async\" src=\"https:\/\/cf.bstatic.com\/xdata\/images\/hotel\/max1024x768\/745264562.jpg?k=a39a967c8695cd2aab0aab3ed87336fc6fdf1d60c823aa204b8404c86b37a491&o=\" class=\"main-img\" alt=\"Deluxe Room Main\" onclick=\"openLightbox(this.src)\">\n                    <!-- Thumbnails -->\n                    <img decoding=\"async\" src=\"https:\/\/cf.bstatic.com\/xdata\/images\/hotel\/max1024x768\/745579512.jpg?k=3c6c8e5b859205f43a0d1dd46ead37ad67341c2633cd27f2fe6e59873b1f3626&o=\" class=\"thumb-img\" alt=\"Room Interior\" onclick=\"openLightbox(this.src)\">\n                    <img decoding=\"async\" src=\"https:\/\/cf.bstatic.com\/xdata\/images\/hotel\/max1024x768\/745580842.jpg?k=be5723c1606f7584efb97c7faf06f5e115f6ae9370a019e402b654d4c0d2a15c&o=\" class=\"thumb-img\" alt=\"Room Detail\" onclick=\"openLightbox(this.src)\">\n                <\/div>\n\n                <!-- Room Information -->\n                <div class=\"deluxe-info\">\n                    <h3>Deluxe Room<\/h3>\n                    <p style=\"margin-bottom: 25px; color: var(--color-text-light); line-height: 1.8; font-size: 1.05rem;\">\n                        Experience the perfect blend of modern luxury and traditional Balinese charm. Our 7 exclusive Deluxe Rooms are designed as a spacious sanctuary, offering pristine comfort overlooking lush tropical gardens and easy access to the stunning public pool.\n                    <\/p>\n                    \n                    <div class=\"room-features\">\n                        <div class=\"room-feature-item\"><i class=\"ph-fill ph-users\"><\/i> Max 2 Guests<\/div>\n                        <div class=\"room-feature-item\"><i class=\"ph-fill ph-bed\"><\/i> Queen Bed<\/div>\n                        <div class=\"room-feature-item\"><i class=\"ph-fill ph-selection-all\"><\/i> 25m\u00b2 Space<\/div>\n                        <div class=\"room-feature-item\"><i class=\"ph-fill ph-tree\"><\/i> Garden View<\/div>\n                        <div class=\"room-feature-item\"><i class=\"ph-fill ph-television\"><\/i> Smart TV<\/div>\n                        <div class=\"room-feature-item\"><i class=\"ph-fill ph-wifi-high\"><\/i> Free High-Speed WiFi<\/div>\n                        <div class=\"room-feature-item\"><i class=\"ph-fill ph-drop\"><\/i> Hot Water<\/div>\n                        <div class=\"room-feature-item\"><i class=\"ph-fill ph-coffee\"><\/i> Breakfast Available<\/div>\n                    <\/div>\n                    \n                    <div class=\"deluxe-price\">\n                        From Rp 300,000 <span>\/ night<\/span>\n                    <\/div>\n                    \n                    <button class=\"btn btn-primary\" onclick=\"openModal('Deluxe Room')\" style=\"width: 100%; font-size: 1.1rem; padding: 15px;\">Book This Room Now<\/button>\n                <\/div>\n            <\/div>\n        <\/div>\n    <\/section>\n\n    <!-- Facilities Section -->\n    <section id=\"facilities\">\n        <div class=\"container\">\n            <h2 class=\"section-title reveal\">Main Facilities<\/h2>\n            <p class=\"section-subtitle reveal\">Maximum comfort for your stay<\/p>\n            \n            <div class=\"facilities-grid reveal\">\n                <div class=\"facility-item\"><i class=\"ph ph-swimming-pool facility-icon\"><\/i><h4>Public Pool<\/h4><\/div>\n                <div class=\"facility-item\"><i class=\"ph ph-wifi-high facility-icon\"><\/i><h4>Free WiFi<\/h4><\/div>\n                <div class=\"facility-item\"><i class=\"ph ph-wind facility-icon\"><\/i><h4>AC<\/h4><\/div>\n                <div class=\"facility-item\"><i class=\"ph ph-television facility-icon\"><\/i><h4>Smart TV<\/h4><\/div>\n                <div class=\"facility-item\"><i class=\"ph ph-car facility-icon\"><\/i><h4>Free Parking<\/h4><\/div>\n                <div class=\"facility-item\"><i class=\"ph ph-broom facility-icon\"><\/i><h4>Housekeeping<\/h4><\/div>\n                <div class=\"facility-item\"><i class=\"ph ph-tree-palm facility-icon\"><\/i><h4>Tropical Garden<\/h4><\/div>\n                <div class=\"facility-item\"><i class=\"ph ph-coffee facility-icon\"><\/i><h4>Breakfast<\/h4><\/div>\n            <\/div>\n        <\/div>\n    <\/section>\n\n    <!-- Why Choose Us -->\n    <section id=\"features-section\">\n        <div class=\"container\">\n            <h2 class=\"section-title reveal\">Why Choose Us?<\/h2>\n            <p class=\"section-subtitle reveal\">The Excellence of Graha Dwakavati Ubud<\/p>\n\n            <div class=\"features-list reveal\">\n                <div class=\"feature-list-item\"><i class=\"ph-fill ph-money\"><\/i><div><h4>Best Direct Booking Price<\/h4><p>Get the lowest price by booking directly through our website.<\/p><\/div><\/div>\n                <div class=\"feature-list-item\"><i class=\"ph-fill ph-map-pin\"><\/i><div><h4>Prime Ubud Location<\/h4><p>Strategic location in the center of Ubud, close to nature and cultural attractions.<\/p><\/div><\/div>\n                <div class=\"feature-list-item\"><i class=\"ph-fill ph-swimming-pool\"><\/i><div><h4>Stunning Pool Access<\/h4><p>Relax and unwind anytime in our beautifully maintained tropical public pool.<\/p><\/div><\/div>\n                <div class=\"feature-list-item\"><i class=\"ph-fill ph-whatsapp-logo\"><\/i><div><h4>Fast WhatsApp Reservation<\/h4><p>Instant and easy booking process connected directly to our admin.<\/p><\/div><\/div>\n                <div class=\"feature-list-item\"><i class=\"ph-fill ph-clock\"><\/i><div><h4>Flexible Check-in<\/h4><p>We strive to accommodate your arrival schedule as best as we can.<\/p><\/div><\/div>\n                <div class=\"feature-list-item\"><i class=\"ph-fill ph-star\"><\/i><div><h4>Professional Hospitality<\/h4><p>Friendly and professional service ready to assist you 24 hours.<\/p><\/div><\/div>\n            <\/div>\n        <\/div>\n    <\/section>\n\n    <!-- Expanded Gallery Section -->\n    <section id=\"gallery\">\n        <div class=\"container\">\n            <h2 class=\"section-title reveal\" style=\"color: white;\">Villa Gallery<\/h2>\n            <p class=\"section-subtitle reveal\" style=\"color: var(--color-gold);\">Explore the beauty of Graha Dwakavati<\/p>\n\n            <div class=\"gallery-grid reveal\">\n                <div class=\"gallery-item\" onclick=\"openLightbox(this.querySelector('img').src)\"><img decoding=\"async\" src=\"https:\/\/cf.bstatic.com\/xdata\/images\/hotel\/max1024x768\/745575208.jpg?k=cd4f4ebf36a03418d635a1db34f3582318310221aea44caa1cdeb377f7c4d4fd&o=\" alt=\"Pool Area\"><\/div>\n                <div class=\"gallery-item\" onclick=\"openLightbox(this.querySelector('img').src)\"><img decoding=\"async\" src=\"https:\/\/cf.bstatic.com\/xdata\/images\/hotel\/max1024x768\/745580675.jpg?k=e6e098ebf9b477e5bf227768b473f7dc1c52adc2410c5cd5d06740e34b7046c0&o=\" alt=\"Exterior View\"><\/div>\n                <div class=\"gallery-item\" onclick=\"openLightbox(this.querySelector('img').src)\"><img decoding=\"async\" src=\"https:\/\/cf.bstatic.com\/xdata\/images\/hotel\/max1024x768\/745265328.jpg?k=6ba227ffd7df0e013428bb4fe77f086934be464f5c1a048e62f0f62161a48da8&o=\" alt=\"Room Interior\"><\/div>\n                <div class=\"gallery-item\" onclick=\"openLightbox(this.querySelector('img').src)\"><img decoding=\"async\" src=\"https:\/\/cf.bstatic.com\/xdata\/images\/hotel\/max1024x768\/745576390.jpg?k=16dcd4688f69c177c6476658b0afba6c2db79af42bf4feb3e420ef35ee026ee4&o=\" alt=\"Bathroom\"><\/div>\n                <div class=\"gallery-item\" onclick=\"openLightbox(this.querySelector('img').src)\"><img decoding=\"async\" src=\"https:\/\/cf.bstatic.com\/xdata\/images\/hotel\/max1024x768\/745581174.jpg?k=16a7d20467a13590a7fd21dafd44c4c45bb4851319eba499b9f9835ce20cd9ec&o=\" alt=\"Lounge Area\"><\/div>\n                <div class=\"gallery-item\" onclick=\"openLightbox(this.querySelector('img').src)\"><img decoding=\"async\" src=\"https:\/\/cf.bstatic.com\/xdata\/images\/hotel\/max1024x768\/745264688.jpg?k=ceab2595089029f99cd615a632438e2392a5023e88ee9c4a16eb394fdd61150a&o=\" alt=\"Room View\"><\/div>\n                <div class=\"gallery-item\" onclick=\"openLightbox(this.querySelector('img').src)\"><img decoding=\"async\" src=\"https:\/\/cf.bstatic.com\/xdata\/images\/hotel\/max1024x768\/745579512.jpg?k=3c6c8e5b859205f43a0d1dd46ead37ad67341c2633cd27f2fe6e59873b1f3626&o=\" alt=\"Bedroom Angle\"><\/div>\n                <div class=\"gallery-item\" onclick=\"openLightbox(this.querySelector('img').src)\"><img decoding=\"async\" src=\"https:\/\/cf.bstatic.com\/xdata\/images\/hotel\/max1024x768\/745575021.jpg?k=ce14e76cd555ce179f7eb2a751e5adbd2e308746dea86067b08c697f2be211c7&o=\" alt=\"Tropical Garden\"><\/div>\n                <div class=\"gallery-item\" onclick=\"openLightbox(this.querySelector('img').src)\"><img decoding=\"async\" src=\"https:\/\/cf.bstatic.com\/xdata\/images\/hotel\/max1024x768\/745580842.jpg?k=be5723c1606f7584efb97c7faf06f5e115f6ae9370a019e402b654d4c0d2a15c&o=\" alt=\"Details\"><\/div>\n            <\/div>\n        <\/div>\n    <\/section>\n\n    <!-- Lightbox -->\n    <div id=\"lightbox\" onclick=\"closeLightbox()\">\n        <span class=\"lightbox-close\">&times;<\/span>\n        <img decoding=\"async\" id=\"lightbox-img\" src=\"\" alt=\"Gallery Image Zoom\">\n    <\/div>\n\n    <!-- Testimonials (Updated with real reviews) -->\n    <section id=\"testimonials\">\n        <div class=\"container reveal\">\n            <h2 class=\"section-title\">What Our Guests Say<\/h2>\n            <p class=\"section-subtitle\">Real experiences from our visitors<\/p>\n            \n            <div style=\"overflow: hidden;\">\n                <div class=\"testimonial-slider\" id=\"testimonialSlider\">\n                    <!-- Real Review 1 -->\n                    <div class=\"testimonial-item\">\n                        <div class=\"stars\">\u2605\u2605\u2605\u2605\u2605<\/div>\n                        <p class=\"review-text\">\"I felt very welcomed by the whole family and all my requests were attended to with care and attention. The overall quality of the room, bed, air-con and WiFi is very good. The location is peaceful and the local community is friendly.\"<\/p>\n                        <h4 class=\"reviewer-name\">Fiorello<\/h4>\n                        <p class=\"reviewer-country\">Australia<\/p>\n                    <\/div>\n                    <!-- Real Review 2 -->\n                    <div class=\"testimonial-item\">\n                        <div class=\"stars\">\u2605\u2605\u2605\u2605\u2605<\/div>\n                        <p class=\"review-text\">\"The rooms are newly built, and I was the very first guest to stay there. The hotel is a family-run place, and you can really feel that in the warm, personal atmosphere. It's located in a quiet area surrounded by beautiful rice fields, while still being close to Ubud. Perfect.\"<\/p>\n                        <h4 class=\"reviewer-name\">Samim<\/h4>\n                        <p class=\"reviewer-country\">Germany<\/p>\n                    <\/div>\n                    <!-- Real Review 3 -->\n                    <div class=\"testimonial-item\">\n                        <div class=\"stars\">\u2605\u2605\u2605\u2605\u2605<\/div>\n                        <p class=\"review-text\">\"Great value for money. For a very reasonable price you get beautiful clean accommodation near Ubud. Great location close to sights. I definitely recommend it!\"<\/p>\n                        <h4 class=\"reviewer-name\">Tom\u00e1\u0161<\/h4>\n                        <p class=\"reviewer-country\">Czech Republic<\/p>\n                    <\/div>\n                    <!-- Real Review 4 -->\n                    <div class=\"testimonial-item\">\n                        <div class=\"stars\">\u2605\u2605\u2605\u2605\u2605<\/div>\n                        <p class=\"review-text\">\"The establishment was very clean and matches the photos. We were very well received by the host and the breakfast was very good and nicely presented.\"<\/p>\n                        <h4 class=\"reviewer-name\">Lisa<\/h4>\n                        <p class=\"reviewer-country\">France<\/p>\n                    <\/div>\n                    <!-- Real Review 5 -->\n                    <div class=\"testimonial-item\">\n                        <div class=\"stars\">\u2605\u2605\u2605\u2605\u2605<\/div>\n                        <p class=\"review-text\">\"Very cool guesthouse! Spacious room, beautiful pool, and delicious breakfast! Very kind hosts. Highly recommended for a relaxing stay!\"<\/p>\n                        <h4 class=\"reviewer-name\">Sergej<\/h4>\n                        <p class=\"reviewer-country\">Latvia<\/p>\n                    <\/div>\n                <\/div>\n            <\/div>\n            \n            <div class=\"slider-dots\" id=\"sliderDots\">\n                <div class=\"dot active\" onclick=\"goToSlide(0)\"><\/div>\n                <div class=\"dot\" onclick=\"goToSlide(1)\"><\/div>\n                <div class=\"dot\" onclick=\"goToSlide(2)\"><\/div>\n                <div class=\"dot\" onclick=\"goToSlide(3)\"><\/div>\n                <div class=\"dot\" onclick=\"goToSlide(4)\"><\/div>\n            <\/div>\n        <\/div>\n    <\/section>\n\n    <!-- Location \/ Map -->\n    <section id=\"location-section\">\n        <div class=\"container reveal\">\n            <h2 class=\"section-title\">Our Location in Ubud<\/h2>\n            <p class=\"section-subtitle\">A hidden paradise in Bali<\/p>\n        <\/div>\n        <div class=\"map-container reveal\">\n            <iframe src=\"https:\/\/maps.google.com\/maps?q=Graha%20Dwakavati%20Ubud&t=&z=15&ie=UTF8&iwloc=&output=embed\" allowfullscreen=\"\" loading=\"lazy\" referrerpolicy=\"no-referrer-when-downgrade\"><\/iframe>\n        <\/div>\n    <\/section>\n\n    <!-- Footer -->\n    <footer>\n        <div class=\"container\">\n            <div class=\"footer-grid\">\n                <div class=\"footer-col\">\n                    <img decoding=\"async\" src=\"https:\/\/grahadwarkavati.com\/wp-content\/uploads\/2026\/07\/Logo-Graha-Dwarkavati-white.png\" alt=\"Graha Dwakavati Ubud Light Logo\" class=\"footer-logo\">\n                    <p>Exclusive luxury villa with 7 elegant Deluxe Rooms, offering true tranquility and comfort in the heart of Ubud, Bali.<\/p>\n                    <div class=\"social-links\">\n                        <a href=\"#\"><i class=\"ph ph-instagram-logo\"><\/i><\/a>\n                        <a href=\"#\"><i class=\"ph ph-facebook-logo\"><\/i><\/a>\n                        <a href=\"#\"><i class=\"ph ph-tripadvisor-logo\"><\/i><\/a>\n                    <\/div>\n                <\/div>\n                <div class=\"footer-col\">\n                    <h3>Contact Us<\/h3>\n                    <p><i class=\"ph ph-map-pin\" style=\"color:var(--color-gold);\"><\/i> Ubud, Gianyar, Bali, Indonesia<\/p>\n                    <p><i class=\"ph ph-whatsapp-logo\" style=\"color:var(--color-gold);\"><\/i> +62 813 3980 8670<\/p>\n                <\/div>\n                <div class=\"footer-col\">\n                    <h3>Quick Links<\/h3>\n                    <ul>\n                        <li><a href=\"#hero\">Home<\/a><\/li>\n                        <li><a href=\"#about\">About<\/a><\/li>\n                        <li><a href=\"#rooms\">Room Gallery<\/a><\/li>\n                        <li><a href=\"#facilities\">Facilities<\/a><\/li>\n                    <\/ul>\n                <\/div>\n            <\/div>\n            <div class=\"footer-bottom\">\n                &copy; <span id=\"currentYear\"><\/span> Graha Dwakavati Ubud. All Rights Reserved.\n            <\/div>\n        <\/div>\n    <\/footer>\n\n    <!-- Floating WA -->\n    <a href=\"https:\/\/wa.me\/6281339808670\" target=\"_blank\" class=\"float-wa\">\n        <i class=\"ph ph-whatsapp-logo\"><\/i>\n    <\/a>\n\n    <!-- Booking Modal (Checkout System) -->\n    <div class=\"modal-overlay\" id=\"bookingModal\">\n        <div class=\"modal-content\">\n            <div class=\"modal-header\">\n                <h3>Complete Your Reservation<\/h3>\n                <button class=\"close-modal\" onclick=\"closeModal()\">&times;<\/button>\n            <\/div>\n            \n            <div class=\"modal-body\">\n                <!-- Form Area (Email removed) -->\n                <div class=\"booking-form-area\">\n                    <form id=\"checkoutForm\" onsubmit=\"event.preventDefault(); submitBooking();\">\n                        <h4 style=\"margin-bottom: 15px; font-family: var(--font-body);\">Guest Details<\/h4>\n                        \n                        <div class=\"form-group\" style=\"margin-bottom: 15px;\">\n                            <label>Full Name *<\/label>\n                            <input type=\"text\" id=\"guestName\" required style=\"width:100%; padding:10px; border:1px solid #ddd; border-radius:4px;\">\n                        <\/div>\n                        <div class=\"form-row\">\n                            <div class=\"form-group\">\n                                <label>WhatsApp Number *<\/label>\n                                <input type=\"tel\" id=\"guestWA\" required placeholder=\"e.g. +6281234...\" style=\"width:100%; padding:10px; border:1px solid #ddd; border-radius:4px;\">\n                            <\/div>\n                            <div class=\"form-group\">\n                                <label>Email Address *<\/label>\n                                <input type=\"email\" id=\"guestEmail\" required placeholder=\"your@email.com\" style=\"width:100%; padding:10px; border:1px solid #ddd; border-radius:4px;\">\n                            <\/div>\n                        <\/div>\n\n                        <h4 style=\"margin: 20px 0 15px; font-family: var(--font-body);\">Stay Details<\/h4>\n                        \n                        <!-- Hidden Room Select since it's only Deluxe Room now -->\n                        <div class=\"form-group\" style=\"display: none;\">\n                            <label>Room Type *<\/label>\n                            <select id=\"modalRoom\" required style=\"width:100%; padding:10px; border:1px solid #ddd; border-radius:4px;\">\n                                <option value=\"Deluxe Room\">Deluxe Room<\/option>\n                            <\/select>\n                        <\/div>\n\n                        <div class=\"form-row\">\n                            <div class=\"form-group\">\n                                <label>Check-in *<\/label>\n                                <input type=\"text\" id=\"modalCheckin\" placeholder=\"Select Date\" required style=\"width:100%; padding:10px; border:1px solid #ddd; border-radius:4px;\" onchange=\"calculatePrice()\">\n                            <\/div>\n                            <div class=\"form-group\">\n                                <label>Check-out *<\/label>\n                                <input type=\"text\" id=\"modalCheckout\" placeholder=\"Select Date\" required style=\"width:100%; padding:10px; border:1px solid #ddd; border-radius:4px;\" onchange=\"calculatePrice()\">\n                            <\/div>\n                        <\/div>\n                        \n                        <div class=\"form-group\" style=\"margin-top: 15px;\">\n                            <label>Number of Guests *<\/label>\n                            <select id=\"modalGuests\" required style=\"width:100%; padding:10px; border:1px solid #ddd; border-radius:4px;\" onchange=\"calculatePrice()\">\n                                <option value=\"1\">1 Person<\/option>\n                                <option value=\"2\" selected>2 Persons<\/option>\n                            <\/select>\n                            <small style=\"color:#888; font-size: 0.8rem; margin-top:5px; display:block;\">Maximum capacity is 2 persons.<\/small>\n                        <\/div>\n\n                        <!-- Add Breakfast Checkbox -->\n                        <div class=\"form-group\" style=\"margin-top: 15px; background: #f9f9f9; padding: 15px; border-radius: 8px; border: 1px solid #eee;\">\n                            <label style=\"display: flex; align-items: center; gap: 10px; cursor: pointer; text-transform: none; font-weight: normal; font-size: 1rem; color: var(--color-dark);\">\n                                <input type=\"checkbox\" id=\"includeBreakfast\" onchange=\"calculatePrice()\" style=\"width: 20px; height: 20px; accent-color: var(--color-gold);\">\n                                <div>\n                                    <strong>Include Breakfast<\/strong><br>\n                                    <span style=\"font-size: 0.85rem; color: var(--color-text-light);\">+Rp 50,000 \/ person \/ night<\/span>\n                                <\/div>\n                            <\/label>\n                        <\/div>\n\n                        <div class=\"form-group\" style=\"margin-top: 15px;\">\n                            <label>Preferred Payment Method *<\/label>\n                            <select id=\"paymentMethod\" required style=\"width:100%; padding:10px; border:1px solid #ddd; border-radius:4px;\">\n                                <option value=\"Bank Transfer\">Bank Transfer<\/option>\n                                <option value=\"Payment Link \/ Credit Card\">Payment Link \/ Credit Card<\/option>\n                            <\/select>\n                        <\/div>\n\n                        <div class=\"form-group\" style=\"margin-top: 15px;\">\n                            <label>Special Request (Optional)<\/label>\n                            <textarea id=\"guestRequest\" rows=\"3\" style=\"width:100%; padding:10px; border:1px solid #ddd; border-radius:4px; font-family: inherit;\"><\/textarea>\n                        <\/div>\n                    <\/form>\n                <\/div>\n\n                <!-- Summary Area -->\n                <div class=\"booking-summary-area\">\n                    <div class=\"summary-card\">\n                        <div class=\"summary-title\">Reservation Summary<\/div>\n                        \n                        <div class=\"summary-item\">\n                            <span>Room:<\/span>\n                            <strong id=\"sumRoom\">Deluxe Room<\/strong>\n                        <\/div>\n                        <div class=\"summary-item\">\n                            <span>Check-in:<\/span>\n                            <strong id=\"sumCheckin\">-<\/strong>\n                        <\/div>\n                        <div class=\"summary-item\">\n                            <span>Check-out:<\/span>\n                            <strong id=\"sumCheckout\">-<\/strong>\n                        <\/div>\n                        <div class=\"summary-item\">\n                            <span>Guests:<\/span>\n                            <strong id=\"sumGuests\">-<\/strong>\n                        <\/div>\n                        <div class=\"summary-item\">\n                            <span>Breakfast:<\/span>\n                            <strong id=\"sumBreakfast\">-<\/strong>\n                        <\/div>\n                        \n                        <div class=\"summary-item\" style=\"margin-top: 15px; flex-direction: column;\">\n                            <span id=\"sumCalculation\" style=\"color: var(--color-text-light); font-size: 0.9rem;\">Select dates to see price<\/span>\n                            <div id=\"seasonNoticeContainer\"><\/div>\n                        <\/div>\n                        \n                        <div class=\"summary-item total\">\n                            <span>Total:<\/span>\n                            <span id=\"sumTotal\">Rp 0<\/span>\n                        <\/div>\n\n                        <button type=\"button\" class=\"btn wa-submit-btn\" onclick=\"document.getElementById('checkoutForm').requestSubmit()\">\n                            <i class=\"ph-fill ph-whatsapp-logo\" style=\"font-size: 1.2rem;\"><\/i> Book via WhatsApp\n                        <\/button>\n                        \n                        <p style=\"text-align: center; font-size: 0.8rem; color: var(--color-text-light); margin-top: 15px; line-height: 1.5;\">\n                            * No payment is required right now. You will receive payment instructions via WhatsApp after we confirm your reservation.\n                        <\/p>\n                    <\/div>\n                <\/div>\n            <\/div>\n        <\/div>\n    <\/div>\n\n    <!-- Flatpickr Script JS -->\n    <script src=\"https:\/\/cdn.jsdelivr.net\/npm\/flatpickr\"><\/script>\n\n    <!-- Main Scripts -->\n    <script>\n        \/* =======================================================\n           1. PRICING CONFIGURATION (NEW EXACT PRICING LOGIC)\n           ======================================================= *\/\n        const PRICING_CONFIG = {\n            baseRates: {\n                \"Deluxe Room\": 300000 \/\/ Base fallback\n            },\n            breakfastRate: 50000, \/\/ Per person per night\n            \/\/ Using exactPrice instead of multiplier for exact values\n            seasons: [\n                {\n                    name: \"Regular Season\",\n                    startDate: \"01-01\",   \/\/ Jan 1\n                    endDate: \"07-31\",     \/\/ Jul 31\n                    exactPrice: 300000    \/\/ Exact 300K\n                },\n                {\n                    name: \"High Season\",\n                    startDate: \"08-01\",   \/\/ Aug 1\n                    endDate: \"12-31\",     \/\/ Dec 31\n                    exactPrice: 400000    \/\/ Exact 400K\n                }\n            ]\n        };\n\n        \/\/ Initialize Option\n        function initRoomOptions() {\n            const selects = [document.getElementById('bar-room')];\n            let html = '<option value=\"Deluxe Room\">Deluxe Room<\/option>';\n            selects.forEach(select => { if(select) select.innerHTML = html; });\n        }\n        initRoomOptions();\n\n\n        \/* =======================================================\n           2. GOOGLE CALENDAR & FLATPICKR LOGIC\n           ======================================================= *\/\n        const GOOGLE_CALENDAR_API_KEY = 'MASUKKAN_API_KEY_ANDA_DISINI'; \n        const GOOGLE_CALENDAR_ID = 'MASUKKAN_CALENDAR_ID_ANDA_DISINI@group.calendar.google.com';\n        \n        let bookedDates = [];\n        let pickers = {}; \/\/ Store Flatpickr instances globally to safely update them\n\n        async function fetchGoogleCalendarEvents() {\n            if (GOOGLE_CALENDAR_API_KEY === 'MASUKKAN_API_KEY_ANDA_DISINI') {\n                let todayDate = new Date();\n                let b1 = new Date(); b1.setDate(todayDate.getDate() + 1);\n                let b2 = new Date(); b2.setDate(todayDate.getDate() + 2);\n                bookedDates.push(b1.toISOString().split('T')[0]);\n                bookedDates.push(b2.toISOString().split('T')[0]);\n                initDatePickers();\n                return;\n            }\n\n            try {\n                const todayISO = new Date().toISOString();\n                const url = `https:\/\/www.googleapis.com\/calendar\/v3\/calendars\/${GOOGLE_CALENDAR_ID}\/events?key=${GOOGLE_CALENDAR_API_KEY}&timeMin=${todayISO}&singleEvents=true&orderBy=startTime`;\n                \n                const response = await fetch(url);\n                const data = await response.json();\n                \n                bookedDates = [];\n                if(data.items) {\n                    data.items.forEach(event => {\n                        let start = new Date(event.start.date || event.start.dateTime);\n                        let end = new Date(event.end.date || event.end.dateTime);\n                        \n                        let current = new Date(start);\n                        while(current < end) {\n                            bookedDates.push(current.toISOString().split('T')[0]);\n                            current.setDate(current.getDate() + 1);\n                        }\n                    });\n                }\n                initDatePickers();\n            } catch (error) {\n                initDatePickers(); \n            }\n        }\n\n        function initDatePickers() {\n            const fpConfig = {\n                minDate: \"today\",\n                disable: bookedDates,\n                dateFormat: \"Y-m-d\",\n                altInput: true,\n                altFormat: \"F j, Y\",\n                allowInput: true\n            };\n\n            pickers.barCheckin = flatpickr(\"#bar-checkin\", {\n                ...fpConfig,\n                onChange: function(selectedDates) {\n                    if(selectedDates[0]) {\n                        let nextDay = new Date(selectedDates[0]);\n                        nextDay.setDate(nextDay.getDate() + 1);\n                        pickers.barCheckout.set(\"minDate\", nextDay);\n                    }\n                }\n            });\n\n            pickers.barCheckout = flatpickr(\"#bar-checkout\", fpConfig);\n\n            pickers.modalCheckin = flatpickr(\"#modalCheckin\", {\n                ...fpConfig,\n                onChange: function(selectedDates) {\n                    if(selectedDates[0]) {\n                        let nextDay = new Date(selectedDates[0]);\n                        nextDay.setDate(nextDay.getDate() + 1);\n                        pickers.modalCheckout.set(\"minDate\", nextDay);\n                    }\n                    calculatePrice();\n                }\n            });\n\n            pickers.modalCheckout = flatpickr(\"#modalCheckout\", {\n                ...fpConfig,\n                onChange: function() { calculatePrice(); }\n            });\n        }\n        fetchGoogleCalendarEvents();\n\n\n        \/* =======================================================\n           3. UI & ANIMATION HELPERS\n           ======================================================= *\/\n        const formatIDR = (number) => new Intl.NumberFormat('id-ID', { style: 'currency', currency: 'IDR', minimumFractionDigits: 0 }).format(number);\n        const formatDate = (dateString) => {\n            if(!dateString) return \"-\";\n            return new Date(dateString).toLocaleDateString('en-US', { day: 'numeric', month: 'short', year: 'numeric' });\n        };\n\n        \/\/ Sticky Navbar Logic\n        window.addEventListener('scroll', () => {\n            const nav = document.getElementById('navbar');\n            if (window.scrollY > 50) {\n                nav.classList.add('scrolled');\n            } else {\n                nav.classList.remove('scrolled');\n            }\n        });\n\n        \/\/ Mobile Menu Toggle\n        const menuBtn = document.getElementById('menuBtn');\n        const navLinks = document.getElementById('navLinks');\n        menuBtn.addEventListener('click', () => {\n            navLinks.classList.toggle('active');\n            if(navLinks.classList.contains('active')){\n                menuBtn.classList.remove('ph-list');\n                menuBtn.classList.add('ph-x');\n            } else {\n                menuBtn.classList.remove('ph-x');\n                menuBtn.classList.add('ph-list');\n            }\n        });\n        \n        document.querySelectorAll('.nav-link').forEach(link => {\n            link.addEventListener('click', () => {\n                navLinks.classList.remove('active');\n                menuBtn.classList.remove('ph-x');\n                menuBtn.classList.add('ph-list');\n            });\n        });\n\n        \/\/ Scroll Reveal Animation\n        function reveal() {\n            var reveals = document.querySelectorAll(\".reveal\");\n            for (var i = 0; i < reveals.length; i++) {\n                var windowHeight = window.innerHeight;\n                var elementTop = reveals[i].getBoundingClientRect().top;\n                var elementVisible = 100;\n                if (elementTop < windowHeight - elementVisible) {\n                    reveals[i].classList.add(\"active\");\n                }\n            }\n        }\n        window.addEventListener(\"scroll\", reveal);\n        reveal(); \n\n        \/\/ Lightbox functionality\n        const lightbox = document.getElementById('lightbox');\n        const lightboxImg = document.getElementById('lightbox-img');\n\n        function openLightbox(src) {\n            lightboxImg.src = src;\n            lightbox.classList.add('active');\n        }\n        function closeLightbox() { lightbox.classList.remove('active'); }\n\n        \/\/ Testimonial Slider\n        let currentSlide = 0;\n        const totalSlides = 5;\n        const slider = document.getElementById('testimonialSlider');\n        const dots = document.querySelectorAll('.dot');\n\n        function goToSlide(index) {\n            currentSlide = index;\n            slider.style.transform = `translateX(-${currentSlide * 20}%)`;\n            dots.forEach(dot => dot.classList.remove('active'));\n            dots[currentSlide].classList.add('active');\n        }\n        setInterval(() => {\n            currentSlide = (currentSlide + 1) % totalSlides;\n            goToSlide(currentSlide);\n        }, 6000); \/\/ Slower review sliding\n\n        document.getElementById('currentYear').textContent = new Date().getFullYear();\n\n\n        \/* =======================================================\n           4. EXACT SEASONAL PRICING ENGINE\n           ======================================================= *\/\n        let bookingDetails = { totalNights: 0, totalPrice: 0, roomPrice: 0, breakfastPrice: 0, appliedSeasons: [], includesBreakfast: false };\n\n        function calculatePrice() {\n            const checkinVal = document.getElementById('modalCheckin').value;\n            const checkoutVal = document.getElementById('modalCheckout').value;\n            const roomType = \"Deluxe Room\"; \/\/ Fixed\n            const guests = parseInt(document.getElementById('modalGuests').value);\n            const isBreakfast = document.getElementById('includeBreakfast').checked;\n            \n            bookingDetails.appliedSeasons = [];\n            bookingDetails.includesBreakfast = isBreakfast;\n            let seasonsFound = new Set();\n\n            if (checkinVal && checkoutVal) {\n                const cin = new Date(checkinVal);\n                const cout = new Date(checkoutVal);\n\n                if (cout <= cin) {\n                    bookingDetails.totalNights = 0;\n                    bookingDetails.totalPrice = 0;\n                    bookingDetails.roomPrice = 0;\n                    bookingDetails.breakfastPrice = 0;\n                } else {\n                    let totalRoom = 0;\n                    let nights = 0;\n                    \n                    let currentDate = new Date(cin);\n                    while (currentDate < cout) {\n                        let checkDateStr = currentDate.toISOString().split('T')[0];\n                        if (bookedDates.includes(checkDateStr)) {\n                            alert(`Sorry, date ${checkDateStr} is fully booked.`);\n                            document.getElementById('modalCheckout').value = ''; \n                            bookingDetails.totalNights = 0;\n                            bookingDetails.totalPrice = 0;\n                            bookingDetails.roomPrice = 0;\n                            bookingDetails.breakfastPrice = 0;\n                            updateSummaryDOM();\n                            return; \n                        }\n\n                        let dailyPrice = PRICING_CONFIG.baseRates[roomType];\n                        let month = String(currentDate.getMonth() + 1).padStart(2, '0');\n                        let day = String(currentDate.getDate()).padStart(2, '0');\n                        let md = `${month}-${day}`;\n\n                        \/\/ Exact Match Seasonal Logic\n                        for (let season of PRICING_CONFIG.seasons) {\n                            let isMatch = false;\n                            if (season.startDate <= season.endDate) {\n                                isMatch = (md >= season.startDate && md <= season.endDate);\n                            } else {\n                                isMatch = (md >= season.startDate || md <= season.endDate);\n                            }\n\n                            if (isMatch) {\n                                dailyPrice = season.exactPrice; \/\/ Use exact price directly\n                                seasonsFound.add(season.name);\n                                break; \n                            }\n                        }\n\n                        totalRoom += dailyPrice;\n                        nights++;\n                        currentDate.setDate(currentDate.getDate() + 1);\n                    }\n\n                    let totalBreakfast = isBreakfast ? (PRICING_CONFIG.breakfastRate * guests * nights) : 0;\n\n                    bookingDetails.totalNights = nights;\n                    bookingDetails.roomPrice = totalRoom;\n                    bookingDetails.breakfastPrice = totalBreakfast;\n                    bookingDetails.totalPrice = totalRoom + totalBreakfast;\n                    bookingDetails.appliedSeasons = Array.from(seasonsFound);\n                }\n            } else {\n                bookingDetails.totalNights = 0;\n                bookingDetails.totalPrice = 0;\n                bookingDetails.roomPrice = 0;\n                bookingDetails.breakfastPrice = 0;\n            }\n            updateSummaryDOM();\n        }\n\n        function updateSummaryDOM() {\n            const checkin = document.getElementById('modalCheckin').value;\n            const checkout = document.getElementById('modalCheckout').value;\n            const guests = document.getElementById('modalGuests').value;\n\n            document.getElementById('sumCheckin').textContent = formatDate(checkin);\n            document.getElementById('sumCheckout').textContent = formatDate(checkout);\n            document.getElementById('sumGuests').textContent = guests > 1 ? `${guests} Persons` : `${guests} Person`;\n            document.getElementById('sumBreakfast').textContent = bookingDetails.includesBreakfast ? 'Included' : 'None';\n\n            const noticeContainer = document.getElementById('seasonNoticeContainer');\n            noticeContainer.innerHTML = '';\n\n            if (bookingDetails.totalNights > 0) {\n                const avgPrice = bookingDetails.roomPrice \/ bookingDetails.totalNights;\n                let calcText = `${bookingDetails.totalNights} Night(s). Room Avg ${formatIDR(avgPrice)}\/night`;\n                \n                if(bookingDetails.includesBreakfast) {\n                    calcText += `<br><span style=\"color: var(--color-gold);\">+ Breakfast ${formatIDR(bookingDetails.breakfastPrice)}<\/span>`;\n                }\n                \n                document.getElementById('sumCalculation').innerHTML = calcText;\n                document.getElementById('sumTotal').textContent = formatIDR(bookingDetails.totalPrice);\n\n                if(bookingDetails.appliedSeasons.length > 0) {\n                    bookingDetails.appliedSeasons.forEach(season => {\n                        noticeContainer.innerHTML += `<span class=\"season-badge\">${season} Rates Applied<\/span> `;\n                    });\n                }\n            } else {\n                document.getElementById('sumCalculation').innerHTML = \"Select dates to see price\";\n                document.getElementById('sumTotal').textContent = \"Rp 0\";\n            }\n        }\n\n        \/* =======================================================\n           5. MODAL & SUBMIT LOGIC\n           ======================================================= *\/\n        const modal = document.getElementById('bookingModal');\n\n        function openModal() {\n            modal.classList.add('active');\n            calculatePrice();\n        }\n\n        function closeModal() { modal.classList.remove('active'); }\n\n        function syncAndOpenModal() {\n            const checkin = document.getElementById('bar-checkin').value;\n            const checkout = document.getElementById('bar-checkout').value;\n            const guests = document.getElementById('bar-guests').value;\n\n            \/\/ Use Flatpickr API to safely set dates and trigger visual updates\n            if(checkin) pickers.modalCheckin.setDate(checkin);\n            if(checkout) pickers.modalCheckout.setDate(checkout);\n            document.getElementById('modalGuests').value = guests;\n\n            modal.classList.add('active');\n            calculatePrice();\n        }\n\n        function submitBooking() {\n            if(bookingDetails.totalNights === 0) {\n                alert(\"Please complete valid Check-in and Check-out dates.\");\n                return;\n            }\n\n            const name = document.getElementById('guestName').value;\n            const wa = document.getElementById('guestWA').value;\n            const email = document.getElementById('guestEmail').value || \"-\";\n            const req = document.getElementById('guestRequest').value || \"-\";\n            const checkin = formatDate(document.getElementById('modalCheckin').value);\n            const checkout = formatDate(document.getElementById('modalCheckout').value);\n            const guests = document.getElementById('modalGuests').value;\n            const paymentMethod = document.getElementById('paymentMethod').value;\n            const seasonNote = bookingDetails.appliedSeasons.length > 0 ? `(${bookingDetails.appliedSeasons.join(\", \")})` : \"\";\n            const breakfastNote = bookingDetails.includesBreakfast ? `Yes (+${formatIDR(bookingDetails.breakfastPrice)})` : \"No\";\n\n            const targetWA = \"6281339808670\"; \n\n            let message = `Hello Graha Dwakavati Ubud,\\nI would like to make a reservation.\\n\\n`;\n            message += `*Name:* ${name}\\n`;\n            message += `*WhatsApp Number:* ${wa}\\n`;\n            message += `*Email:* ${email}\\n\\n`;\n            message += `*Check-in:* ${checkin}\\n`;\n            message += `*Check-out:* ${checkout}\\n`;\n            message += `*Total Nights:* ${bookingDetails.totalNights} Night(s)\\n`;\n            message += `*Number of Guests:* ${guests} Person(s)\\n`;\n            message += `*Room Type:* Deluxe Room\\n`;\n            message += `*Include Breakfast:* ${breakfastNote}\\n`;\n            message += `*Payment Method:* ${paymentMethod}\\n`;\n            message += `*Total Payment:* ${formatIDR(bookingDetails.totalPrice)} ${seasonNote}\\n\\n`;\n            message += `*Special Request:*\\n${req}\\n\\n`;\n            message += `Please let me know the availability.\\nThank you.`;\n\n            const waURL = `https:\/\/wa.me\/${targetWA}?text=${encodeURIComponent(message)}`;\n            window.open(waURL, '_blank');\n            closeModal();\n        }\n    <\/script>\n<\/body>\n<\/html>\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>Graha Dwakavati Ubud &#8211; Luxury Premium Villa Home About Rooms Facilities Gallery 4.9\/5 Rating Ubud, Bali Starting From Rp300K\/Night Experience Tranquility in the Heart of Ubud Luxury Villa with 7 Elegant Deluxe Rooms and a Stunning Public Swimming Pool View Rooms Book Now Check-in Check-out Guests 1 Person2 Persons Room Type Check Availability Discover the [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":45,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_canvas","meta":{"footnotes":""},"class_list":["post-28","page","type-page","status-publish","has-post-thumbnail","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.0 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Villa Graha Dwarkavati - Villa Graha Dwarkavati Ubud<\/title>\n<meta name=\"description\" content=\"Graha Dwakavati Ubud offers luxury Deluxe Rooms, a stunning pool &amp; prime location. Book direct for the best price!\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/grahadwarkavati.com\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Villa Graha Dwarkavati - Villa Graha Dwarkavati Ubud\" \/>\n<meta property=\"og:description\" content=\"Graha Dwakavati Ubud offers luxury Deluxe Rooms, a stunning pool &amp; prime location. Book direct for the best price!\" \/>\n<meta property=\"og:url\" content=\"https:\/\/grahadwarkavati.com\/\" \/>\n<meta property=\"og:site_name\" content=\"Villa Graha Dwarkavati Ubud\" \/>\n<meta property=\"article:modified_time\" content=\"2026-07-12T00:32:10+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/grahadwarkavati.com\/wp-content\/uploads\/2026\/07\/graha-dwarkavati.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1024\" \/>\n\t<meta property=\"og:image:height\" content=\"683\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/grahadwarkavati.com\\\/\",\"url\":\"https:\\\/\\\/grahadwarkavati.com\\\/\",\"name\":\"Villa Graha Dwarkavati - Villa Graha Dwarkavati Ubud\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/grahadwarkavati.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/grahadwarkavati.com\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/grahadwarkavati.com\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/grahadwarkavati.com\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/graha-dwarkavati.jpg\",\"datePublished\":\"2026-07-11T14:17:28+00:00\",\"dateModified\":\"2026-07-12T00:32:10+00:00\",\"description\":\"Graha Dwakavati Ubud offers luxury Deluxe Rooms, a stunning pool & prime location. Book direct for the best price!\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/grahadwarkavati.com\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/grahadwarkavati.com\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/grahadwarkavati.com\\\/#primaryimage\",\"url\":\"https:\\\/\\\/grahadwarkavati.com\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/graha-dwarkavati.jpg\",\"contentUrl\":\"https:\\\/\\\/grahadwarkavati.com\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/graha-dwarkavati.jpg\",\"width\":1024,\"height\":683},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/grahadwarkavati.com\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/grahadwarkavati.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Villa Graha Dwarkavati\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/grahadwarkavati.com\\\/#website\",\"url\":\"https:\\\/\\\/grahadwarkavati.com\\\/\",\"name\":\"Villa Graha Dwarkavati Ubud\",\"description\":\"Comfortable Villa in Ubud\",\"publisher\":{\"@id\":\"https:\\\/\\\/grahadwarkavati.com\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/grahadwarkavati.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/grahadwarkavati.com\\\/#organization\",\"name\":\"Villa Graha Dwarkavati Ubud\",\"url\":\"https:\\\/\\\/grahadwarkavati.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/grahadwarkavati.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/grahadwarkavati.com\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/Logo-Graha-Dwarkavati-color.png\",\"contentUrl\":\"https:\\\/\\\/grahadwarkavati.com\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/Logo-Graha-Dwarkavati-color.png\",\"width\":1361,\"height\":854,\"caption\":\"Villa Graha Dwarkavati Ubud\"},\"image\":{\"@id\":\"https:\\\/\\\/grahadwarkavati.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Villa Graha Dwarkavati - Villa Graha Dwarkavati Ubud","description":"Graha Dwakavati Ubud offers luxury Deluxe Rooms, a stunning pool & prime location. Book direct for the best price!","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/grahadwarkavati.com\/","og_locale":"en_US","og_type":"article","og_title":"Villa Graha Dwarkavati - Villa Graha Dwarkavati Ubud","og_description":"Graha Dwakavati Ubud offers luxury Deluxe Rooms, a stunning pool & prime location. Book direct for the best price!","og_url":"https:\/\/grahadwarkavati.com\/","og_site_name":"Villa Graha Dwarkavati Ubud","article_modified_time":"2026-07-12T00:32:10+00:00","og_image":[{"width":1024,"height":683,"url":"https:\/\/grahadwarkavati.com\/wp-content\/uploads\/2026\/07\/graha-dwarkavati.jpg","type":"image\/jpeg"}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/grahadwarkavati.com\/","url":"https:\/\/grahadwarkavati.com\/","name":"Villa Graha Dwarkavati - Villa Graha Dwarkavati Ubud","isPartOf":{"@id":"https:\/\/grahadwarkavati.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/grahadwarkavati.com\/#primaryimage"},"image":{"@id":"https:\/\/grahadwarkavati.com\/#primaryimage"},"thumbnailUrl":"https:\/\/grahadwarkavati.com\/wp-content\/uploads\/2026\/07\/graha-dwarkavati.jpg","datePublished":"2026-07-11T14:17:28+00:00","dateModified":"2026-07-12T00:32:10+00:00","description":"Graha Dwakavati Ubud offers luxury Deluxe Rooms, a stunning pool & prime location. Book direct for the best price!","breadcrumb":{"@id":"https:\/\/grahadwarkavati.com\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/grahadwarkavati.com\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/grahadwarkavati.com\/#primaryimage","url":"https:\/\/grahadwarkavati.com\/wp-content\/uploads\/2026\/07\/graha-dwarkavati.jpg","contentUrl":"https:\/\/grahadwarkavati.com\/wp-content\/uploads\/2026\/07\/graha-dwarkavati.jpg","width":1024,"height":683},{"@type":"BreadcrumbList","@id":"https:\/\/grahadwarkavati.com\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/grahadwarkavati.com\/"},{"@type":"ListItem","position":2,"name":"Villa Graha Dwarkavati"}]},{"@type":"WebSite","@id":"https:\/\/grahadwarkavati.com\/#website","url":"https:\/\/grahadwarkavati.com\/","name":"Villa Graha Dwarkavati Ubud","description":"Comfortable Villa in Ubud","publisher":{"@id":"https:\/\/grahadwarkavati.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/grahadwarkavati.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/grahadwarkavati.com\/#organization","name":"Villa Graha Dwarkavati Ubud","url":"https:\/\/grahadwarkavati.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/grahadwarkavati.com\/#\/schema\/logo\/image\/","url":"https:\/\/grahadwarkavati.com\/wp-content\/uploads\/2026\/07\/Logo-Graha-Dwarkavati-color.png","contentUrl":"https:\/\/grahadwarkavati.com\/wp-content\/uploads\/2026\/07\/Logo-Graha-Dwarkavati-color.png","width":1361,"height":854,"caption":"Villa Graha Dwarkavati Ubud"},"image":{"@id":"https:\/\/grahadwarkavati.com\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/grahadwarkavati.com\/index.php?rest_route=\/wp\/v2\/pages\/28","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/grahadwarkavati.com\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/grahadwarkavati.com\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/grahadwarkavati.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/grahadwarkavati.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=28"}],"version-history":[{"count":14,"href":"https:\/\/grahadwarkavati.com\/index.php?rest_route=\/wp\/v2\/pages\/28\/revisions"}],"predecessor-version":[{"id":48,"href":"https:\/\/grahadwarkavati.com\/index.php?rest_route=\/wp\/v2\/pages\/28\/revisions\/48"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/grahadwarkavati.com\/index.php?rest_route=\/wp\/v2\/media\/45"}],"wp:attachment":[{"href":"https:\/\/grahadwarkavati.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=28"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}