ADVERTISEMENT

Now you see it, now you dine: Inside The Magic Table at Grand Hyatt Manila

An immersive dinner unfolds where illusion, projection, and a multi-course menu share the stage

Published Jan 20, 2026 11:56 pm
TABLE COMES ALIVE Projection mapping transforms the dining table into the stage for illusions, storytelling, and interactive magic throughout the night.
TABLE COMES ALIVE Projection mapping transforms the dining table into the stage for illusions, storytelling, and interactive magic throughout the night.
At first glance, the table looks ordinary enough. Then the lights dim, the surface comes alive, and dinner at Grand Hyatt Manila slips into something closer to theater.
The Magic Table, an interactive, magic-themed dining experience now at the hotel, was previewed to the media last Jan. 15, ahead of its public debut at Penthouse No. 66 ocated on, you guessed it, the 66th floor of the property. Part performance, part projection-driven spectacle, it places diners directly inside the narrative. Plates arrive as visuals shift beneath them. Scenes change, stories unfold, and the table itself becomes the main character.
MASTER OF MYSTERY Host Jazz sets the tone for the evening, dressed in a classic magician’s costume as she guides guests through the experience.
MASTER OF MYSTERY Host Jazz sets the tone for the evening, dressed in a classic magician’s costume as she guides guests through the experience.
The evening is hosted in an intimate room designed for immersion, with each seat facing the projection-mapped table. The show, created with internationally acclaimed mentalists Thommy Ten and Amélie van Tass, known together as The Clairvoyants, blends illusion, storytelling, and visual trickery. Guests are not merely watching from the sidelines. At various points, participation is part of the script.
Between courses, narrators projected directly onto the table draw diners into a series of mental games. Guests are asked to shuffle cards, study images, tear cards apart, and toss them behind their backs. Moments later, the impossible is revealed. The narrators name the very card chosen or recall details diners were sure they had concealed. These interludes are threaded throughout the meal, punctuated by illusions and mind-reading sequences that build anticipation for the next course. The result is a dining experience that feels playful and participatory, keeping the room engaged and the mood buoyant from start to finish.
MIND GAMES An illusion sequence unfolds across the projection-mapped table, prompting diners to follow instructions, test their memory, and watch the impossible resolve itself in plain sight.
MIND GAMES An illusion sequence unfolds across the projection-mapped table, prompting diners to follow instructions, test their memory, and watch the impossible resolve itself in plain sight.
CHOOSING FATE A guest shuffles and selects cards at the table, becoming part of the mental games woven between courses.
CHOOSING FATE A guest shuffles and selects cards at the table, becoming part of the mental games woven between courses.
The food follows the same sense of pacing. Courses arrive in sync with the projections, each reveal timed to a shift in mood or setting. The Wizard’s Essential Menu opens with a forest and porcini mushroom pâté, layered with hazelnut soil, fig, lemon, pistachio, and Manuka honey. Earthy and textured, it sets the tone for a meal that leans into contrast.
A butter-poached Hokkaido scallop follows, finished with an herb crust and paired with sun-dried tomato and crustacean bisque. The dish is rich but restrained, allowing the sweetness of the scallop to hold its own. Next comes crab meat and codfish brandade with sake-marinated ikura and avocado, a composed plate that balances creaminess, brine, and gentle acidity.
SWEET DEPTHS Butter-poached Hokkaido scallop with herb crust, sun-dried tomato, and crustacean bisque, balancing richness with delicate sweetness.
SWEET DEPTHS Butter-poached Hokkaido scallop with herb crust, sun-dried tomato, and crustacean bisque, balancing richness with delicate sweetness.
SWEET REVEAL Chocolate and hazelnut sphere opened to reveal espresso, chocolate brownie, cherry sorbet, and bourbon sac.
SWEET REVEAL Chocolate and hazelnut sphere opened to reveal espresso, chocolate brownie, cherry sorbet, and bourbon sac.
TABLESIDE DRAMA Mulwarra tenderloin beef Wellington, sliced tableside and served with bone marrow and café de Paris butter jus.
TABLESIDE DRAMA Mulwarra tenderloin beef Wellington, sliced tableside and served with bone marrow and café de Paris butter jus.
FOREST BEGINNING Forest and porcini mushroom pâté layered with hazelnut soil, fig, lemon, pistachio, and Manuka honey, setting an earthy opening note for the evening.
FOREST BEGINNING Forest and porcini mushroom pâté layered with hazelnut soil, fig, lemon, pistachio, and Manuka honey, setting an earthy opening note for the evening.
The centerpiece is a Mulwarra tenderloin beef Wellington, sliced tableside, served with bone marrow and café de Paris butter jus. Guests opting for the upgraded Grand Illusion Menu receive the same Wellington crowned with pan-seared foie gras and freshly shaved black truffle, adding depth and indulgence without tipping into excess.
Dessert arrives as a visual flourish. A chocolate and hazelnut sphere is broken open to reveal espresso, chocolate brownie, cherry sorbet, and bourbon sac, a finale that leans into drama without losing its footing as a composed dessert.
Cocktails mirror the theatrical bent. Vanished combines tequila, strawberry, and almond syrup, lemon, and milk. Illusion No. 1 plays with rum, ube mix, and pandan syrup, while the Canuplin Highball blends gin, toasted Japanese rice syrup, banana liqueur, and soda. Each has a mocktail counterpart, keeping the experience inclusive.
PURPLE ILLUSION Illusion No. 1 blends rum with ube mix and pandan syrup, nodding to familiar flavors with a playful twist.
PURPLE ILLUSION Illusion No. 1 blends rum with ube mix and pandan syrup, nodding to familiar flavors with a playful twist.
DISAPPEARING ACT Vanished cocktail made with tequila, strawberry and almond syrup, lemon, and milk, served as part of the immersive pairing.
DISAPPEARING ACT Vanished cocktail made with tequila, strawberry and almond syrup, lemon, and milk, served as part of the immersive pairing.
HIGHBALL TRICK The Canuplin Highball combines gin, toasted Japanese rice syrup, banana liqueur, and soda for a light, aromatic finish.
HIGHBALL TRICK The Canuplin Highball combines gin, toasted Japanese rice syrup, banana liqueur, and soda for a light, aromatic finish.
With only 40 seats per show and a running time of about two hours, The Magic Table favors intimacy over scale. Tables are arranged in groups of four or eight, ensuring clear sightlines and full engagement with the projections. Guests choose between early evening and late-night seatings, with smart casual attire setting a polished but relaxed tone.
The result is neither dinner with a show nor a show with food as an afterthought. Instead, it is a carefully staged evening where pacing matters, details are deliberate, and the table never quite behaves the way you expect.
ADVERTISEMENT
.most-popular .layout-ratio{ padding-bottom: 79.13%; } @media (min-width: 768px) and (max-width: 1024px) { .widget-title { font-size: 15px !important; } }

{{ articles_filter_1561_widget.title }}

.most-popular .layout-ratio{ padding-bottom: 79.13%; } @media (min-width: 768px) and (max-width: 1024px) { .widget-title { font-size: 15px !important; } }

{{ articles_filter_1562_widget.title }}

.most-popular .layout-ratio{ padding-bottom: 79.13%; } @media (min-width: 768px) and (max-width: 1024px) { .widget-title { font-size: 15px !important; } }

{{ articles_filter_1563_widget.title }}

{{ articles_filter_1564_widget.title }}

.mb-article-details { position: relative; } .mb-article-details .article-body-preview, .mb-article-details .article-body-summary{ font-size: 17px; line-height: 30px; font-family: "Libre Caslon Text", serif; color: #000; } .mb-article-details .article-body-preview iframe , .mb-article-details .article-body-summary iframe{ width: 100%; margin: auto; } .read-more-background { background: linear-gradient(180deg, color(display-p3 1.000 1.000 1.000 / 0) 13.75%, color(display-p3 1.000 1.000 1.000 / 0.8) 30.79%, color(display-p3 1.000 1.000 1.000) 72.5%); position: absolute; height: 200px; width: 100%; bottom: 0; display: flex; justify-content: center; align-items: center; padding: 0; } .read-more-background a{ color: #000; } .read-more-btn { padding: 17px 45px; font-family: Inter; font-weight: 700; font-size: 18px; line-height: 16px; text-align: center; vertical-align: middle; border: 1px solid black; background-color: white; } .hidden { display: none; }
function initializeAllSwipers() { // Get all hidden inputs with cms_article_id document.querySelectorAll('[id^="cms_article_id_"]').forEach(function (input) { const cmsArticleId = input.value; const articleSelector = '#article-' + cmsArticleId + ' .body_images'; const swiperElement = document.querySelector(articleSelector); if (swiperElement && !swiperElement.classList.contains('swiper-initialized')) { new Swiper(articleSelector, { loop: true, pagination: false, navigation: { nextEl: '#article-' + cmsArticleId + ' .swiper-button-next', prevEl: '#article-' + cmsArticleId + ' .swiper-button-prev', }, }); } }); } setTimeout(initializeAllSwipers, 3000); const intersectionObserver = new IntersectionObserver( (entries) => { entries.forEach((entry) => { if (entry.isIntersecting) { const newUrl = entry.target.getAttribute("data-url"); if (newUrl) { history.pushState(null, null, newUrl); let article = entry.target; // Extract metadata const author = article.querySelector('.author-section').textContent.replace('By', '').trim(); const section = article.querySelector('.section-info ').textContent.replace(' ', ' '); const title = article.querySelector('.article-title h1').textContent; // Parse URL for Chartbeat path format const parsedUrl = new URL(newUrl, window.location.origin); const cleanUrl = parsedUrl.host + parsedUrl.pathname; // Update Chartbeat configuration if (typeof window._sf_async_config !== 'undefined') { window._sf_async_config.path = cleanUrl; window._sf_async_config.sections = section; window._sf_async_config.authors = author; } // Track virtual page view with Chartbeat if (typeof pSUPERFLY !== 'undefined' && typeof pSUPERFLY.virtualPage === 'function') { try { pSUPERFLY.virtualPage({ path: cleanUrl, title: title, sections: section, authors: author }); } catch (error) { console.error('ping error', error); } } // Optional: Update document title if (title && title !== document.title) { document.title = title; } } } }); }, { threshold: 0.1 } ); function showArticleBody(button) { const article = button.closest("article"); const summary = article.querySelector(".article-body-summary"); const body = article.querySelector(".article-body-preview"); const readMoreSection = article.querySelector(".read-more-background"); // Hide summary and read-more section summary.style.display = "none"; readMoreSection.style.display = "none"; // Show the full article body body.classList.remove("hidden"); } document.addEventListener("DOMContentLoaded", () => { let loadCount = 0; // Track how many times articles are loaded const offset = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; // Offset values const currentUrl = window.location.pathname.substring(1); let isLoading = false; // Prevent multiple calls if (!currentUrl) { console.log("Current URL is invalid."); return; } const sentinel = document.getElementById("load-more-sentinel"); if (!sentinel) { console.log("Sentinel element not found."); return; } function isSentinelVisible() { const rect = sentinel.getBoundingClientRect(); return ( rect.top < window.innerHeight && rect.bottom >= 0 ); } function onScroll() { if (isLoading) return; if (isSentinelVisible()) { if (loadCount >= offset.length) { console.log("Maximum load attempts reached."); window.removeEventListener("scroll", onScroll); return; } isLoading = true; const currentOffset = offset[loadCount]; window.loadMoreItems().then(() => { let article = document.querySelector('#widget_1690 > div:nth-last-of-type(2) article'); intersectionObserver.observe(article) loadCount++; }).catch(error => { console.error("Error loading more items:", error); }).finally(() => { isLoading = false; }); } } window.addEventListener("scroll", onScroll); });

Sign up by email to receive news.