{"id":2753,"date":"2026-02-02T11:59:04","date_gmt":"2026-02-02T04:59:04","guid":{"rendered":"https:\/\/escapeintime.vn\/?page_id=2753"},"modified":"2026-04-02T14:01:32","modified_gmt":"2026-04-02T07:01:32","slug":"forbidden-magic","status":"publish","type":"page","link":"https:\/\/escapeintime.vn\/en\/forbidden-magic\/","title":{"rendered":"Forbidden Magic"},"content":{"rendered":"<div data-elementor-type=\"wp-page\" data-elementor-id=\"2753\" class=\"elementor elementor-2753\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-1df47817 e-flex e-con-boxed e-con e-parent\" data-id=\"1df47817\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-68847ceb elementor-widget elementor-widget-text-editor\" data-id=\"68847ceb\" data-element_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<!-- wp:paragraph -->\n<p><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><\/p>\n<!-- \/wp:paragraph -->\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=\"elementor-element elementor-element-5866a54 e-con-full e-flex e-con e-child\" data-id=\"5866a54\" data-element_type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-9bd423f e-con-full e-flex e-con e-child\" data-id=\"9bd423f\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-491dd9f elementor-widget elementor-widget-video\" data-id=\"491dd9f\" data-element_type=\"widget\" data-settings=\"{&quot;video_type&quot;:&quot;hosted&quot;,&quot;controls&quot;:&quot;yes&quot;}\" data-widget_type=\"video.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"e-hosted-video elementor-wrapper elementor-open-inline\">\n\t\t\t\t\t<video class=\"elementor-video\" src=\"https:\/\/escapeintime.vn\/wp-content\/uploads\/2026\/03\/28-2-Escape1.mp4\" controls=\"\" preload=\"metadata\" controlslist=\"nodownload\"><\/video>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-c9b3915 e-con-full e-flex e-con e-child\" data-id=\"c9b3915\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-487018f elementor-widget elementor-widget-heading\" data-id=\"487018f\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Forbidden Magic<\/h2>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2f6e4d5 elementor-widget elementor-widget-text-editor\" data-id=\"2f6e4d5\" data-element_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<div class=\"flex-shrink-0 flex flex-col relative items-end\">\n<div class=\"pt-0\">\n<div class=\"gizmo-bot-avatar flex h-8 w-8 items-center justify-center overflow-hidden rounded-full\">\n<div class=\"relative p-1 rounded-sm flex items-center justify-center bg-token-main-surface-primary text-token-text-primary h-8 w-8\">\n<p>The wizarding world is under threat from the terrifying return of the Dark Lord. In this fierce battle, the Dark Lord has hidden fragments of his soul within special objects scattered throughout the Escape In Time school.<\/p>\n<p>Brave and talented wizards! The war between light and darkness has begun, and the survival of the wizarding world hangs in the balance. Your mission is to retrieve the fragments of the Dark Lord\u2019s soul and protect the existence of the magical world before everything descends into chaos like never before.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-84221fa e-con-full e-flex e-con e-child\" data-id=\"84221fa\" data-element_type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-4fe0a56 e-con-full elementor-hidden-desktop elementor-hidden-tablet elementor-hidden-mobile e-flex e-con e-child\" data-id=\"4fe0a56\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-a4bf7ad elementor-widget elementor-widget-heading\" data-id=\"a4bf7ad\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Story<\/h2>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-38c657a elementor-widget elementor-widget-text-editor\" data-id=\"38c657a\" data-element_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<p>SawCantation is inspired by a true story about a devout family in Kaohsiung, Taiwan, in 2005. It involves the Wu family of six, whose members believed they were possessed by deities and engaged in bizarre rituals\u2014including collective fasting, self-inflicted torment, and even forcing each other to consume human waste as an exorcism. Tragically, the eldest daughter died from starvation, yet the family insisted she was still alive until another member, while \u201cpossessed,\u201d declared her death.<\/p>\n<p><br \/>You play the role of a family on a trip to Kaohsiung, where you hear villagers whispering about this mysterious case. Driven by curiosity, you decide to explore the lair of the supernatural force, despite locals warning you that the place is the sealed domain of the Great Black Buddha Mother. Deep inside the cave, you suddenly lose consciousness\u2014and awaken in a hospital with strange tattoos marked upon your arms. To your horror, you discover that your youngest daughter has gone missing. Today, your family returns to that very place, determined to rescue her from the darkness.<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-102e231 e-flex e-con-boxed e-con e-child\" data-id=\"102e231\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-6fb8aa8 elementor-widget elementor-widget-heading\" data-id=\"6fb8aa8\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Price details<\/h2>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2a12b8a elementor-widget elementor-widget-image\" data-id=\"2a12b8a\" data-element_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<img fetchpriority=\"high\" decoding=\"async\" width=\"1810\" height=\"2560\" src=\"https:\/\/escapeintime.vn\/wp-content\/uploads\/2026\/04\/BANG-GIA-ESCAPE-1_eng-ver-scaled.png\" class=\"attachment-full size-full wp-image-2974\" alt=\"\" srcset=\"https:\/\/escapeintime.vn\/wp-content\/uploads\/2026\/04\/BANG-GIA-ESCAPE-1_eng-ver-scaled.png 1810w, https:\/\/escapeintime.vn\/wp-content\/uploads\/2026\/04\/BANG-GIA-ESCAPE-1_eng-ver-212x300.png 212w, https:\/\/escapeintime.vn\/wp-content\/uploads\/2026\/04\/BANG-GIA-ESCAPE-1_eng-ver-724x1024.png 724w, https:\/\/escapeintime.vn\/wp-content\/uploads\/2026\/04\/BANG-GIA-ESCAPE-1_eng-ver-768x1086.png 768w, https:\/\/escapeintime.vn\/wp-content\/uploads\/2026\/04\/BANG-GIA-ESCAPE-1_eng-ver-1086x1536.png 1086w, https:\/\/escapeintime.vn\/wp-content\/uploads\/2026\/04\/BANG-GIA-ESCAPE-1_eng-ver-1448x2048.png 1448w, https:\/\/escapeintime.vn\/wp-content\/uploads\/2026\/04\/BANG-GIA-ESCAPE-1_eng-ver-8x12.png 8w\" sizes=\"(max-width: 1810px) 100vw, 1810px\" \/>\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\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-b4bc767 elementor-hidden-desktop elementor-hidden-tablet elementor-hidden-mobile e-flex e-con-boxed e-con e-parent\" data-id=\"b4bc767\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-a9ac3b7 elementor-widget elementor-widget-heading\" data-id=\"a9ac3b7\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Images<\/h2>\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=\"elementor-element elementor-element-701e8c8 elementor-hidden-desktop elementor-hidden-tablet elementor-hidden-mobile e-flex e-con-boxed e-con e-parent\" data-id=\"701e8c8\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-cc0d304 elementor-widget elementor-widget-gallery\" data-id=\"cc0d304\" data-element_type=\"widget\" data-settings=\"{&quot;columns&quot;:3,&quot;lazyload&quot;:&quot;yes&quot;,&quot;gallery_layout&quot;:&quot;grid&quot;,&quot;columns_tablet&quot;:2,&quot;gap&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:10,&quot;sizes&quot;:[]},&quot;gap_tablet&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:10,&quot;sizes&quot;:[]},&quot;gap_mobile&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:10,&quot;sizes&quot;:[]},&quot;link_to&quot;:&quot;file&quot;,&quot;aspect_ratio&quot;:&quot;3:2&quot;,&quot;overlay_background&quot;:&quot;yes&quot;,&quot;content_hover_animation&quot;:&quot;fade-in&quot;}\" data-widget_type=\"gallery.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"elementor-gallery__container\">\n\t\t\t\t\t\t\t<a class=\"e-gallery-item elementor-gallery-item elementor-animated-content\" href=\"https:\/\/escapeintime.vn\/wp-content\/uploads\/2025\/12\/z7314575828752_cdb1ec3b3c921befb8f182e3d07fe9ce-1.jpg\" data-elementor-open-lightbox=\"yes\" data-elementor-lightbox-slideshow=\"cc0d304\" data-elementor-lightbox-title=\"z7314575828752_cdb1ec3b3c921befb8f182e3d07fe9ce\" data-e-action-hash=\"#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6MjQ1OSwidXJsIjoiaHR0cHM6XC9cL2VzY2FwZWludGltZS52blwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyNVwvMTJcL3o3MzE0NTc1ODI4NzUyX2NkYjFlYzNiM2M5MjFiZWZiOGYxODJlM2QwN2ZlOWNlLTEuanBnIiwic2xpZGVzaG93IjoiY2MwZDMwNCJ9\">\n\t\t\t\t\t<div class=\"e-gallery-image elementor-gallery-item__image\" data-thumbnail=\"https:\/\/escapeintime.vn\/wp-content\/uploads\/2025\/12\/z7314575828752_cdb1ec3b3c921befb8f182e3d07fe9ce-1-300x163.jpg\" data-width=\"300\" data-height=\"163\" aria-label=\"\" role=\"img\" ><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"elementor-gallery-item__overlay\"><\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t<a class=\"e-gallery-item elementor-gallery-item elementor-animated-content\" href=\"https:\/\/escapeintime.vn\/wp-content\/uploads\/2025\/12\/z7314576094027_330cf64d2c83ab207402ec818cedef87-1.jpg\" data-elementor-open-lightbox=\"yes\" data-elementor-lightbox-slideshow=\"cc0d304\" data-elementor-lightbox-title=\"z7314576094027_330cf64d2c83ab207402ec818cedef87\" data-e-action-hash=\"#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6MjQ2MCwidXJsIjoiaHR0cHM6XC9cL2VzY2FwZWludGltZS52blwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyNVwvMTJcL3o3MzE0NTc2MDk0MDI3XzMzMGNmNjRkMmM4M2FiMjA3NDAyZWM4MThjZWRlZjg3LTEuanBnIiwic2xpZGVzaG93IjoiY2MwZDMwNCJ9\">\n\t\t\t\t\t<div class=\"e-gallery-image elementor-gallery-item__image\" data-thumbnail=\"https:\/\/escapeintime.vn\/wp-content\/uploads\/2025\/12\/z7314576094027_330cf64d2c83ab207402ec818cedef87-1-300x168.jpg\" data-width=\"300\" data-height=\"168\" aria-label=\"\" role=\"img\" ><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"elementor-gallery-item__overlay\"><\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t<a class=\"e-gallery-item elementor-gallery-item elementor-animated-content\" href=\"https:\/\/escapeintime.vn\/wp-content\/uploads\/2025\/12\/z7314575496391_fd8d5c11bcbd41c78423e9bcdda47609-1.jpg\" data-elementor-open-lightbox=\"yes\" data-elementor-lightbox-slideshow=\"cc0d304\" data-elementor-lightbox-title=\"z7314575496391_fd8d5c11bcbd41c78423e9bcdda47609\" data-e-action-hash=\"#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6MjQ2MSwidXJsIjoiaHR0cHM6XC9cL2VzY2FwZWludGltZS52blwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyNVwvMTJcL3o3MzE0NTc1NDk2MzkxX2ZkOGQ1YzExYmNiZDQxYzc4NDIzZTliY2RkYTQ3NjA5LTEuanBnIiwic2xpZGVzaG93IjoiY2MwZDMwNCJ9\">\n\t\t\t\t\t<div class=\"e-gallery-image elementor-gallery-item__image\" data-thumbnail=\"https:\/\/escapeintime.vn\/wp-content\/uploads\/2025\/12\/z7314575496391_fd8d5c11bcbd41c78423e9bcdda47609-1-300x169.jpg\" data-width=\"300\" data-height=\"169\" aria-label=\"\" role=\"img\" ><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"elementor-gallery-item__overlay\"><\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t<\/div>\n\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=\"elementor-element elementor-element-a0dcfae e-flex e-con-boxed e-con e-parent\" data-id=\"a0dcfae\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-198c6d4 elementor-hidden-desktop elementor-hidden-tablet elementor-hidden-mobile elementor-widget elementor-widget-heading\" data-id=\"198c6d4\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Book now<\/h2>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ed476ca elementor-widget elementor-widget-shortcode\" data-id=\"ed476ca\" data-element_type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"elementor-shortcode\"><style>\n        .container {\n            max-width: 800px;\n            margin: 0 auto;\n            padding: 20px;\n            border-radius: 10px;\n            box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);\n        }\n        h1,h2 {\n            color:white !important;\n            text-align: center;\n            margin-bottom: 20px;\n        }\n        label {\n            display: block;\n            margin: 10px 0 5px;\n            font-weight: bold;\n        }\n        input, select, textarea {\n            width: 100%;\n            padding: 10px;\n            margin-bottom: 15px;\n            border: 1px solid #ccc;\n            border-radius: 5px;\n        }\n        .tabs {\n            display: flex;\n            margin-bottom: 20px;\n        }\n        .tab {\n            flex: 1;\n            text-align: center;\n            padding: 10px;\n            border: 1px solid #ccc;\n            background: #f9f9f9;\n            cursor: pointer;\n            transition: background 0.3s;\n        }\n        .tab.active {\n            background: #ddd;\n            font-weight: bold;\n        }\n        .tab:hover {\n            background: #e9e9e9;\n        }\n        .tab-content {\n            display: none;\n        }\n        .tab-content.active {\n            display: block;\n        }\n        .time-slots {\n            display: flex;\n            flex-wrap: wrap;\n            gap: 10px;\n        }\n        .time-slot {\n            flex: 1 0 calc(33.33% - 10px);\n            padding: 10px;\n            border: 1px solid #ccc;\n            text-align: center;\n            cursor: pointer;\n            border-radius: 5px;\n            background: #f9f9f9;\n            transition: background 0.3s;\n        }\n        .time-slot.booked {\n            background: #E23125;\n            cursor: not-allowed;\n        }\n        .time-slot.selected {\n            background: #E23125;\n            color: white;\n        }\n        .time-slot:hover:not(.booked) {\n            background: #e0e0e0;\n        }\n        button {\n            background: #E23125;\n            color: white;\n            padding: 10px 20px;\n            border: none;\n            border-radius: 5px;\n            cursor: pointer;\n            font-size: 16px;\n            transition: background 0.3s;\n        }\n        button:hover {\n            background: #0056b3;\n        }\n\t.form-container {\n    display: flex;\n    gap: 20px;\n\talign-items:center;\n}\n\n.form-column {\n    flex: 1;\n    display: flex;\n    flex-direction: column;\n    gap: 10px;\n}\n\n.button-container {\n    display: flex;\n    justify-content: center; \/* Horizontally center *\/\n    align-items: center;    \/* Vertically center *\/\n    margin-top: 20px;       \/* Add spacing from the form *\/\n}\n.hidden {\n    display: none;\n}\n\n.tab-content {\n    display: none;\n}\n\n.tab-content.active {\n    display: block;\n}\n\n.tab {\n    cursor: pointer;\n}\n\n.tab.active {\n    font-weight: bold;\n    background-color: #ddd;\n}\n\n    <\/style>\n<div class=\"container\">\n    <h1>Room Booking<\/h1>\n\n    <form id=\"booking-form\">\n        <!-- User Information Form -->\n        <div class=\"form-container\">\n            <div class=\"form-column\">\n                <label for=\"name\">Name:<\/label>\n                <input type=\"text\" id=\"name\" placeholder=\"Enter your name\" required>\n\n                <label for=\"phone\">Phone Number:<\/label>\n                <input type=\"tel\" id=\"phone\" placeholder=\"Enter your phone number\" required>\n            <\/div>\n\n            <div class=\"form-column\">\n                <label for=\"email\">Email Address:<\/label>\n                <input type=\"email\" id=\"email\" placeholder=\"Enter your email address\" required>\n\n                <label for=\"user-type\">You are:<\/label>\n                <select name=\"user-type\" id=\"user-type\" required>\n                    <option value=\"\" disabled selected>--Select type--<\/option>\n                    <option value=\"student\">Student<\/option>\n                    <option value=\"non-student\">Non-student<\/option>\n                <\/select>\n            <\/div>\n        <\/div>\n\n        <!-- Form Section: Location first, then Room -->\n        <div class=\"form-container\">\n            <div class=\"form-column\">\n                <label for=\"location-select\">Select location<\/label>\n                <select id=\"location-select\" required>\n                    <option value=\"\" disabled selected>-- Select location --<\/option>\n                    <option value=\"ngoquyen\">377 Ng\u00f4 Quy\u1ec1n, An H\u1ea3i, \u0110\u00e0 N\u1eb5ng<\/option>\n                    <option value=\"nguyenchithanh\">133 Nguyen Chi Thanh, Hai Chau, Da Nang<\/option>\n                <\/select>\n            <\/div>\n            <div class=\"form-column\">\n                <label for=\"room-select\">Select Room:<\/label>\n                <select id=\"room-select\" required disabled>\n                    <option value=\"\" disabled selected>-- Select location first --<\/option>\n                    <option value=\"Room 1704\" data-location=\"ngoquyen\" data-max-participants=\"10\">Room 1704<\/option>\n                    <option value=\"Blood Dragon\" data-location=\"ngoquyen\" data-max-participants=\"8\">Blood Dragon<\/option>\n                    <option value=\"SawCantation\" data-location=\"ngoquyen\" data-max-participants=\"11\">SawCantation<\/option>\n                    <option value=\"Forbidden Magic\" data-location=\"nguyenchithanh\" data-max-participants=\"10\">Forbidden Magic<\/option>\n                    <option value=\"Haunted Love\" data-location=\"nguyenchithanh\" data-max-participants=\"8\">Haunted Love<\/option>\n                <\/select>\n            <\/div>\n        <\/div>\n        <div class=\"form-container\">\n            <div class=\"form-column\">\n                <label for=\"participants\">Players:<\/label>\n                <select id=\"participants\" required>\n                    <option value=\"\" disabled selected>- Number of People<\/option>\n                <\/select>\n            <\/div>\n\n            <div class=\"form-column\">\n                <label for=\"date\">Choose date<\/label>\n                <input type=\"date\" id=\"date\" required class=\"styled-date\">\n            <\/div>\n        <\/div>\n\n        <!-- Tabs for 60 min and 120 min options -->\n        <div class=\"tabs hidden\">\n            <div class=\"tab active\" data-target=\"60min\">60 minutes<\/div>\n            <div class=\"tab\" data-target=\"120min\">120 minutes<\/div>\n        <\/div>\n\n        <!-- Time Slot Sections -->\n        <div id=\"60min\" class=\"tab-content hidden\">\n            <h2>60 minutes<\/h2>\n            <div class=\"time-slots\" id=\"slots-60min\"><\/div>\n        <\/div>\n        <div id=\"120min\" class=\"tab-content hidden\">\n            <h2>120 minutes<\/h2>\n            <div class=\"time-slots\" id=\"slots-120min\"><\/div>\n        <\/div>\n\n        <div class=\"button-container\">\n            <button type=\"submit\">Book now<\/button>\n        <\/div>\n    <input type=\"hidden\" name=\"trp-form-language\" value=\"en\"\/><\/form>\n<\/div>\n\n\n<script>\n\/\/ document.getElementById('date').min = new Date().toISOString().split('T')[0];\n\ndocument.addEventListener('DOMContentLoaded', () => {\n        const locationSelect = document.getElementById('location-select');\n        const roomSelect = document.getElementById('room-select');\n        const participantsSelect = document.getElementById('participants');\n        const dateInput = document.getElementById('date');\n        const today = new Date().toISOString().split('T')[0];\n        dateInput.setAttribute('min', today);\n        const dateLockNotice = document.getElementById('date-lock-notice');\n\n        dateInput.addEventListener('change', () => {\n            if (dateInput.value && dateInput.value < today) {\n                dateInput.value = today;\n            }\n            if (roomSelect.value === 'Forbidden Magic' && dateInput.value === LOCKED_DATE_FORBIDDEN_MAGIC) {\n                dateInput.value = '';\n                if (dateLockNotice) dateLockNotice.style.display = 'block';\n                alert('Ng\u00e0y 6\/2\/2026 kh\u00f4ng kh\u1ea3 d\u1ee5ng cho \u0111\u1ecba \u0111i\u1ec3m 133 Nguy\u1ec5n Ch\u00ed Thanh, H\u1ea3i Ch\u00e2u, \u0110\u00e0 N\u1eb5ng. Vui l\u00f2ng ch\u1ecdn ng\u00e0y kh\u00e1c.');\n            }\n        });\n\n        \/\/ Store room options by location (clone so we can repopulate)\n        const roomOptionsByLocation = { ngoquyen: [], nguyenchithanh: [] };\n        roomSelect.querySelectorAll('option[data-location]').forEach((opt) => {\n            const loc = opt.getAttribute('data-location');\n            if (roomOptionsByLocation[loc]) roomOptionsByLocation[loc].push(opt.cloneNode(true));\n        });\n        roomSelect.innerHTML = '';\n        const placeholders = { none: '-- Ch\u1ecdn \u0111\u1ecba \u0111i\u1ec3m tr\u01b0\u1edbc --', chosen: '-- Ch\u1ecdn ph\u00f2ng --' };\n\n        function setRoomOptionsForLocation(loc) {\n            roomSelect.innerHTML = '';\n            const ph = document.createElement('option');\n            ph.value = '';\n            ph.disabled = true;\n            ph.selected = true;\n            ph.textContent = loc ? placeholders.chosen : placeholders.none;\n            roomSelect.appendChild(ph);\n            if (loc && roomOptionsByLocation[loc]) {\n                roomOptionsByLocation[loc].forEach((cloned) => roomSelect.appendChild(cloned.cloneNode(true)));\n                roomSelect.disabled = false;\n            } else {\n                roomSelect.disabled = true;\n            }\n            roomSelect.value = '';\n            participantsSelect.innerHTML = '<option value=\"\" disabled selected>-- Ch\u1ecdn s\u1ed1 ng\u01b0\u1eddi --<\/option>';\n        }\n        setRoomOptionsForLocation(locationSelect.value);\n\n        locationSelect.addEventListener('change', () => {\n            setRoomOptionsForLocation(locationSelect.value);\n            roomSelect.dispatchEvent(new Event('change'));\n        });\n\n        \/\/ Function to populate participant options based on room\n        const updateParticipantsOptions = (maxParticipants) => {\n            participantsSelect.innerHTML = '<option value=\"\" disabled selected>-- Ch\u1ecdn s\u1ed1 ng\u01b0\u1eddi --<\/option>';\n            for (let i = 2; i <= maxParticipants; i++) {\n                const option = document.createElement('option');\n                option.value = i;\n                option.textContent = i;\n                participantsSelect.appendChild(option);\n            }\n        };\n\n        \/\/ Event listener for room selection (do not reset location)\n        roomSelect.addEventListener('change', () => {\n            const selectedRoom = roomSelect.options[roomSelect.selectedIndex];\n            const maxParticipants = selectedRoom.getAttribute('data-max-participants');\n            if (maxParticipants) updateParticipantsOptions(parseInt(maxParticipants, 10));\n            if (dateLockNotice) {\n                dateLockNotice.style.display = (roomSelect.value === 'Forbidden Magic') ? 'block' : 'none';\n            }\n            if (roomSelect.value === 'Forbidden Magic' && dateInput.value === LOCKED_DATE_FORBIDDEN_MAGIC) {\n                dateInput.value = '';\n            }\n        });\n    });\n\n\/\/ Generate time slots with fixed intervals\nfunction generateFixedTimeSlots(room) {\n    const baseSlots = [\n        \"09:45\",\n        \"11:00\",\n        \"12:15\",\n        \"13:30\",\n        \"14:45\",\n        \"16:00\",\n        \"17:15\",\n        \"18:30\",\n        \"19:45\",\n        \"21:00\",\n    ];\n\n    \/\/ Forbidden Magic: 9:30 - 22:00, same ~75 min spacing\n    if (room === 'Forbidden Magic') {\n        return [\n            \"09:30\", \"10:45\", \"12:00\", \"13:15\", \"14:30\", \"15:45\",\n            \"17:00\", \"18:15\", \"19:30\", \"20:45\"\n        ];\n    }\n\n    \/\/ Haunted Love: 09:30 - 21:45, 75-min spacing\n    if (room === 'Haunted Love') {\n        return [\n            \"09:30\", \"10:45\", \"12:00\", \"13:15\", \"14:30\", \"15:45\",\n            \"17:00\", \"18:15\", \"19:30\", \"20:45\"\n        ];\n    }\n\n    if (room === 'SawCantation') {\n        return baseSlots.map((t) => adjustTimeByMinutes(t, -15));\n    }\n\n    return baseSlots;\n}\n\n\/\/ Adjust a HH:MM time string by a number of minutes (can be negative)\nfunction adjustTimeByMinutes(time, deltaMinutes) {\n    const [hours, minutes] = time.split(':').map(Number);\n    const total = hours * 60 + minutes + deltaMinutes;\n    const normalized = Math.max(0, total); \/\/ prevent negative times\n    const newHours = Math.floor(normalized \/ 60);\n    const newMinutes = normalized % 60;\n    return `${String(newHours).padStart(2, '0')}:${String(newMinutes).padStart(2, '0')}`;\n}\n\/\/ Check if a slot conflicts with booked slots\nfunction isSlotConflicting(startTime, duration, bookedSlots) {\n    const slotEndTime = calculateEndTime(startTime, duration);\n\n    return bookedSlots.some((bookedSlot) => {\n        const [bookedStart, bookedEnd] = bookedSlot.split(' - ');\n        return (\n            (startTime >= bookedStart && startTime < bookedEnd) || \/\/ Starts within a booked slot\n            (slotEndTime > bookedStart && slotEndTime <= bookedEnd) || \/\/ Ends within a booked slot\n            (startTime <= bookedStart && slotEndTime >= bookedEnd) \/\/ Completely overlaps a booked slot\n        );\n    });\n}\n\t\n\t\/\/ Calculate end time based on duration\nfunction calculateEndTime(startTime, duration) {\n    const [hours, minutes] = startTime.split(':').map(Number);\n    const endMinutes = minutes + duration;\n    const endHours = hours + Math.floor(endMinutes \/ 60);\n    const finalMinutes = endMinutes % 60;\n    return `${String(endHours).padStart(2, '0')}:${String(finalMinutes).padStart(2, '0')}`;\n}\n\/\/ Render slots dynamically\nfunction renderSlots(containerId, slots, room, bookedSlots, duration) {\n    const container = document.getElementById(containerId);\n    container.innerHTML = ''; \/\/ Clear previous slots\n\n    slots.forEach((startTime) => {\n        const slotEndTime = calculateEndTime(startTime, duration);\n        const slotLabel = `${startTime} - ${slotEndTime}`;\n\n        const isConflicting = isSlotConflicting(startTime, duration, bookedSlots);\n\n        const slotDiv = document.createElement('div');\n        slotDiv.className = 'time-slot';\n        slotDiv.textContent = startTime; \/\/ Display only start time\n        slotDiv.dataset.slot = slotLabel;\n        slotDiv.dataset.room = room;\n\n        if (isConflicting) {\n            slotDiv.classList.add('booked');\n            slotDiv.style.pointerEvents = 'none';\n        } else {\n            slotDiv.addEventListener('click', () => selectSlot(slotDiv));\n        }\n\n        container.appendChild(slotDiv);\n    });\n}\n\n\/\/ Select a slot\nfunction selectSlot(element) {\n    document.querySelectorAll('.time-slot.selected').forEach((el) => el.classList.remove('selected'));\n    element.classList.add('selected');\n}\n\ndocument.addEventListener('DOMContentLoaded', () => {\n    const locationSelect = document.getElementById('location-select');\n    const roomSelect = document.getElementById('room-select');\n    const participantsSelect = document.getElementById('participants');\n    const dateInput = document.getElementById('date');\n    const tabs = document.querySelector('.tabs');\n    const tabContents = document.querySelectorAll('.tab-content');\n    const firstTab = document.querySelector('.tab[data-target=\"60min\"]');\n    const firstTabContent = document.getElementById('60min');\n\n    \/\/ Function to check if the form is fully filled (location, room, participants, date)\n    function validateForm() {\n        const location = locationSelect.value;\n        const room = roomSelect.value;\n        const participants = participantsSelect.value;\n        const date = dateInput.value;\n\n        if (location && room && participants && date) {\n            tabs.classList.remove('hidden');\n            tabContents.forEach((content) => content.classList.remove('hidden'));\n\n            \/\/ Always activate the first tab and its content\n            document.querySelectorAll('.tab').forEach((tab) => tab.classList.remove('active'));\n            document.querySelectorAll('.tab-content').forEach((content) => content.classList.remove('active'));\n\n            firstTab.classList.add('active');\n            firstTabContent.classList.add('active');\n        } else {\n            tabs.classList.add('hidden');\n            tabContents.forEach((content) => content.classList.add('hidden'));\n        }\n    }\n\n    \/\/ Add event listeners to form fields\n    locationSelect.addEventListener('change', validateForm);\n    roomSelect.addEventListener('change', validateForm);\n    participantsSelect.addEventListener('change', validateForm);\n    dateInput.addEventListener('input', validateForm);\n\n    \/\/ Tab switching logic\n    document.querySelectorAll('.tab').forEach((tab) => {\n        tab.addEventListener('click', () => {\n            document.querySelectorAll('.tab').forEach((t) => t.classList.remove('active'));\n            document.querySelectorAll('.tab-content').forEach((content) => content.classList.remove('active'));\n\n            tab.classList.add('active');\n            const targetContent = document.getElementById(tab.dataset.target);\n            if (targetContent) {\n                targetContent.classList.add('active');\n            }\n        });\n    });\n});\n\n\n\n\/\/ Fetch booked slots from the server\nasync function fetchBookedSlots(room, date) {\n    try {\n        const response = await fetch(`https:\/\/escapeintime.vn\/wp-admin\/admin-ajax.php?action=get_booked_slots&room=${room}&date=${date}`);\n        if (!response.ok) {\n            throw new Error('Failed to fetch booked slots.');\n        }\n        return await response.json();\n    } catch (error) {\n        console.error(error);\n        alert('Unable to fetch booked slots. Please try again.');\n        return [];\n    }\n}\n\n\/\/ Update time slots dynamically\nasync function updateSlots(room, date) {\n    const bookedSlots = await fetchBookedSlots(room, date);\n    const fixedSlots = generateFixedTimeSlots(room);\n    \/\/ Forbidden Magic: 120-min slots now include 20:45 and 21:00 starts\n    const slots120 = (room === 'Forbidden Magic')\n        ? fixedSlots.filter((start) => start <= '21:00')\n        : (room === 'Haunted Love')\n            ? fixedSlots.filter((start) => start <= '20:30')\n            : fixedSlots;\n\n    renderSlots('slots-60min', fixedSlots, room, bookedSlots, 60);\n    renderSlots('slots-120min', slots120, room, bookedSlots, 120);\n}\n\n\/\/ Initialize the booking system\nasync function initBookingSystem() {\n    const roomSelect = document.getElementById('room-select');\n    const dateInput = document.getElementById('date');\n\n    const initialRoom = roomSelect.value;\n    const initialDate = dateInput.value;\n\n    if (initialRoom && initialDate) {\n        await updateSlots(initialRoom, initialDate);\n    }\n\n    roomSelect.addEventListener('change', async () => {\n        const room = roomSelect.value;\n        const date = dateInput.value;\n        if (room && date) {\n            await updateSlots(room, date);\n        }\n    });\n\n    dateInput.addEventListener('change', async () => {\n        const date = dateInput.value;\n        const room = roomSelect.value;\n        if (room && date) {\n            await updateSlots(room, date);\n        }\n    });\n}\n\n\/\/ Handle form submission with validation\nasync function handleFormSubmission() {\n    document.querySelector(\"button[type='submit']\").addEventListener('click', async (event) => {\n        event.preventDefault();\n\n        \/\/ Validate required fields\n        if (!validateForm()) return; \/\/ Stop if validation fails\n\n        const room = document.getElementById('room-select').value;\n        const date = document.getElementById('date').value;\n        if (room === 'Forbidden Magic' && date === LOCKED_DATE_FORBIDDEN_MAGIC) {\n            alert('Ng\u00e0y 6\/2\/2026 kh\u00f4ng kh\u1ea3 d\u1ee5ng cho \u0111\u1ecba \u0111i\u1ec3m 133 Nguy\u1ec5n Ch\u00ed Thanh. Vui l\u00f2ng ch\u1ecdn ng\u00e0y kh\u00e1c.');\n            return;\n        }\n\n        const selectedSlot = document.querySelector('.time-slot.selected');\n        if (!selectedSlot) {\n            alert('Please select a time slot.');\n            return;\n        }\n\n        const formData = new FormData();\n        formData.append('action', 'process_booking');\n        formData.append('name', document.getElementById('name').value);\n        formData.append('email', document.getElementById('email').value);\n        formData.append('phone', document.getElementById('phone').value);\n        formData.append('date', document.getElementById('date').value);\n        formData.append('room', document.getElementById('room-select').value);\n        formData.append('participants', document.getElementById('participants').value);\n        formData.append('userType', document.getElementById('user-type').value);\n        formData.append('slot', selectedSlot.dataset.slot);\n\n        try {\n            const response = await fetch(\"https:\/\/escapeintime.vn\/wp-admin\/admin-ajax.php\", {\n                method: 'POST',\n                body: formData,\n            });\n\n            const result = await response.json();\n            if (result.success) {\n                alert(result.message || 'Booking processed successfully.');\n                const room = document.getElementById('room-select').value;\n                const date = document.getElementById('date').value;\n                await updateSlots(room, date); \/\/ Refresh slots after booking\n            } else {\n                alert(result.message || 'Booking failed.');\n            }\n        } catch (error) {\n            console.error('Error submitting booking:', error);\n            alert('An error occurred. Please try again.');\n        }\n    });\n}\n\n\/\/ Locked date for Forbidden Magic (133 Nguy\u1ec5n Ch\u00ed Thanh) - not available for booking\nconst LOCKED_DATE_FORBIDDEN_MAGIC = '2026-02-06';\n\n\/\/ Validate required form fields\nfunction validateForm() {\n    const requiredFields = ['name', 'email', 'phone', 'date', 'location-select', 'room-select', 'participants', 'user-type'];\n    let isValid = true;\n\n    requiredFields.forEach(field => {\n        const element = document.getElementById(field);\n        if (!element.value.trim()) {\n            isValid = false;\n            element.style.border = \"2px solid red\"; \/\/ Highlight empty fields\n            element.setCustomValidity(\"This field is required.\");\n        } else {\n            element.style.border = \"\"; \/\/ Reset border if field is filled\n            element.setCustomValidity(\"\");\n        }\n    });\n\n    if (!isValid) {\n        alert(\"Please fill in all required fields before submitting.\");\n    }\n\n    return isValid;\n}\n\n\/\/ Initialize the booking system\ninitBookingSystem();\nhandleFormSubmission();\n\n<\/script>\n\n<\/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>","protected":false},"excerpt":{"rendered":"<p>https:\/\/escapeintime.vn\/wp-content\/uploads\/2026\/03\/28-2-Escape1.mp4 Forbidden Magic Th\u1ebf gi\u1edbi ph\u00f9 th\u1ee7y \u0111ang b\u1ecb \u0111e d\u1ecda b\u1edfi s\u1ef1 tr\u1edf l\u1ea1i \u0111\u1ea7y \u0111\u00e1ng s\u1ee3 c\u1ee7a Ch\u00faa T\u1ec3 H\u1eafc \u00c1m. Trong cu\u1ed9c chi\u1ebfn \u0111\u1ea5u kh\u1ed1c li\u1ec7t n\u00e0y, Ch\u00faa T\u1ec3 H\u1eafc \u00c1m \u0111\u00e3 \u1ea9n gi\u1ea5u nh\u1eefng m\u1ea3nh linh h\u1ed3n c\u1ee7a h\u1eafn v\u00e0o nh\u1eefng m\u00f3n \u0111\u1ed3 \u0111\u1eb7c bi\u1ec7t trong ng\u00f4i tr\u01b0\u1eddng Escape In Time [&hellip;]<\/p>","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"default","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-2753","page","type-page","status-publish","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Forbidden Magic - Escape In Time<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/escapeintime.vn\/en\/forbidden-magic\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Forbidden Magic - Escape In Time\" \/>\n<meta property=\"og:description\" content=\"https:\/\/escapeintime.vn\/wp-content\/uploads\/2026\/03\/28-2-Escape1.mp4 Forbidden Magic Th\u1ebf gi\u1edbi ph\u00f9 th\u1ee7y \u0111ang b\u1ecb \u0111e d\u1ecda b\u1edfi s\u1ef1 tr\u1edf l\u1ea1i \u0111\u1ea7y \u0111\u00e1ng s\u1ee3 c\u1ee7a Ch\u00faa T\u1ec3 H\u1eafc \u00c1m. Trong cu\u1ed9c chi\u1ebfn \u0111\u1ea5u kh\u1ed1c li\u1ec7t n\u00e0y, Ch\u00faa T\u1ec3 H\u1eafc \u00c1m \u0111\u00e3 \u1ea9n gi\u1ea5u nh\u1eefng m\u1ea3nh linh h\u1ed3n c\u1ee7a h\u1eafn v\u00e0o nh\u1eefng m\u00f3n \u0111\u1ed3 \u0111\u1eb7c bi\u1ec7t trong ng\u00f4i tr\u01b0\u1eddng Escape In Time [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/escapeintime.vn\/en\/forbidden-magic\/\" \/>\n<meta property=\"og:site_name\" content=\"Escape In Time\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/escapeintime.vn\" \/>\n<meta property=\"article:modified_time\" content=\"2026-04-02T07:01:32+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/escapeintime.vn\/wp-content\/uploads\/2026\/04\/BANG-GIA-ESCAPE_vn-ver-scaled.png\" \/>\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=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/escapeintime.vn\/forbidden-magic\/\",\"url\":\"https:\/\/escapeintime.vn\/forbidden-magic\/\",\"name\":\"Forbidden Magic - Escape In Time\",\"isPartOf\":{\"@id\":\"https:\/\/escapeintime.vn\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/escapeintime.vn\/forbidden-magic\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/escapeintime.vn\/forbidden-magic\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/escapeintime.vn\/wp-content\/uploads\/2026\/04\/BANG-GIA-ESCAPE_vn-ver-scaled.png\",\"datePublished\":\"2026-02-02T04:59:04+00:00\",\"dateModified\":\"2026-04-02T07:01:32+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/escapeintime.vn\/forbidden-magic\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/escapeintime.vn\/forbidden-magic\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/escapeintime.vn\/forbidden-magic\/#primaryimage\",\"url\":\"https:\/\/escapeintime.vn\/wp-content\/uploads\/2026\/04\/BANG-GIA-ESCAPE_vn-ver-scaled.png\",\"contentUrl\":\"https:\/\/escapeintime.vn\/wp-content\/uploads\/2026\/04\/BANG-GIA-ESCAPE_vn-ver-scaled.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/escapeintime.vn\/forbidden-magic\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Trang ch\u1ee7\",\"item\":\"https:\/\/escapeintime.vn\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Forbidden Magic\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/escapeintime.vn\/#website\",\"url\":\"https:\/\/escapeintime.vn\/\",\"name\":\"Escape In Time\",\"description\":\"Escape Room T\u1ea1i \u0110\u00e0 N\u1eb5ng\",\"publisher\":{\"@id\":\"https:\/\/escapeintime.vn\/#organization\"},\"alternateName\":\"Escape Room in Danang\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/escapeintime.vn\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/escapeintime.vn\/#organization\",\"name\":\"Escape In Time\",\"url\":\"https:\/\/escapeintime.vn\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/escapeintime.vn\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/escapeintime.vn\/wp-content\/uploads\/2024\/09\/cropped-non_backgrd.png\",\"contentUrl\":\"https:\/\/escapeintime.vn\/wp-content\/uploads\/2024\/09\/cropped-non_backgrd.png\",\"width\":512,\"height\":512,\"caption\":\"Escape In Time\"},\"image\":{\"@id\":\"https:\/\/escapeintime.vn\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/escapeintime.vn\",\"https:\/\/www.instagram.com\/escapeintime.vn\/\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Forbidden Magic - Escape In Time","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:\/\/escapeintime.vn\/en\/forbidden-magic\/","og_locale":"en_US","og_type":"article","og_title":"Forbidden Magic - Escape In Time","og_description":"https:\/\/escapeintime.vn\/wp-content\/uploads\/2026\/03\/28-2-Escape1.mp4 Forbidden Magic Th\u1ebf gi\u1edbi ph\u00f9 th\u1ee7y \u0111ang b\u1ecb \u0111e d\u1ecda b\u1edfi s\u1ef1 tr\u1edf l\u1ea1i \u0111\u1ea7y \u0111\u00e1ng s\u1ee3 c\u1ee7a Ch\u00faa T\u1ec3 H\u1eafc \u00c1m. Trong cu\u1ed9c chi\u1ebfn \u0111\u1ea5u kh\u1ed1c li\u1ec7t n\u00e0y, Ch\u00faa T\u1ec3 H\u1eafc \u00c1m \u0111\u00e3 \u1ea9n gi\u1ea5u nh\u1eefng m\u1ea3nh linh h\u1ed3n c\u1ee7a h\u1eafn v\u00e0o nh\u1eefng m\u00f3n \u0111\u1ed3 \u0111\u1eb7c bi\u1ec7t trong ng\u00f4i tr\u01b0\u1eddng Escape In Time [&hellip;]","og_url":"https:\/\/escapeintime.vn\/en\/forbidden-magic\/","og_site_name":"Escape In Time","article_publisher":"https:\/\/www.facebook.com\/escapeintime.vn","article_modified_time":"2026-04-02T07:01:32+00:00","og_image":[{"url":"https:\/\/escapeintime.vn\/wp-content\/uploads\/2026\/04\/BANG-GIA-ESCAPE_vn-ver-scaled.png","type":"","width":"","height":""}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/escapeintime.vn\/forbidden-magic\/","url":"https:\/\/escapeintime.vn\/forbidden-magic\/","name":"Forbidden Magic - Escape In Time","isPartOf":{"@id":"https:\/\/escapeintime.vn\/#website"},"primaryImageOfPage":{"@id":"https:\/\/escapeintime.vn\/forbidden-magic\/#primaryimage"},"image":{"@id":"https:\/\/escapeintime.vn\/forbidden-magic\/#primaryimage"},"thumbnailUrl":"https:\/\/escapeintime.vn\/wp-content\/uploads\/2026\/04\/BANG-GIA-ESCAPE_vn-ver-scaled.png","datePublished":"2026-02-02T04:59:04+00:00","dateModified":"2026-04-02T07:01:32+00:00","breadcrumb":{"@id":"https:\/\/escapeintime.vn\/forbidden-magic\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/escapeintime.vn\/forbidden-magic\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/escapeintime.vn\/forbidden-magic\/#primaryimage","url":"https:\/\/escapeintime.vn\/wp-content\/uploads\/2026\/04\/BANG-GIA-ESCAPE_vn-ver-scaled.png","contentUrl":"https:\/\/escapeintime.vn\/wp-content\/uploads\/2026\/04\/BANG-GIA-ESCAPE_vn-ver-scaled.png"},{"@type":"BreadcrumbList","@id":"https:\/\/escapeintime.vn\/forbidden-magic\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Trang ch\u1ee7","item":"https:\/\/escapeintime.vn\/"},{"@type":"ListItem","position":2,"name":"Forbidden Magic"}]},{"@type":"WebSite","@id":"https:\/\/escapeintime.vn\/#website","url":"https:\/\/escapeintime.vn\/","name":"Escape In Time","description":"Escape Room T\u1ea1i \u0110\u00e0 N\u1eb5ng","publisher":{"@id":"https:\/\/escapeintime.vn\/#organization"},"alternateName":"Escape Room in Danang","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/escapeintime.vn\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/escapeintime.vn\/#organization","name":"Escape In Time","url":"https:\/\/escapeintime.vn\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/escapeintime.vn\/#\/schema\/logo\/image\/","url":"https:\/\/escapeintime.vn\/wp-content\/uploads\/2024\/09\/cropped-non_backgrd.png","contentUrl":"https:\/\/escapeintime.vn\/wp-content\/uploads\/2024\/09\/cropped-non_backgrd.png","width":512,"height":512,"caption":"Escape In Time"},"image":{"@id":"https:\/\/escapeintime.vn\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/escapeintime.vn","https:\/\/www.instagram.com\/escapeintime.vn\/"]}]}},"_links":{"self":[{"href":"https:\/\/escapeintime.vn\/en\/wp-json\/wp\/v2\/pages\/2753","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/escapeintime.vn\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/escapeintime.vn\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/escapeintime.vn\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/escapeintime.vn\/en\/wp-json\/wp\/v2\/comments?post=2753"}],"version-history":[{"count":30,"href":"https:\/\/escapeintime.vn\/en\/wp-json\/wp\/v2\/pages\/2753\/revisions"}],"predecessor-version":[{"id":2994,"href":"https:\/\/escapeintime.vn\/en\/wp-json\/wp\/v2\/pages\/2753\/revisions\/2994"}],"wp:attachment":[{"href":"https:\/\/escapeintime.vn\/en\/wp-json\/wp\/v2\/media?parent=2753"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}