ADVERTISEMENT

AshDres in 'Minamahal': A bittersweet Gen Z love story in full bloom

Published Sep 28, 2025 08:03 am
A scene from 'Minamahal: 100 Bulaklak Para Kay Luna'
A scene from 'Minamahal: 100 Bulaklak Para Kay Luna'

In  "Minamahal: 100 Bulaklak Para Kay Luna," director Jason Paul Laxamana offers a refreshingly unvarnished take on Gen Z love, delivered through the fresh pairing of Andres Muhlach and Ashtine Olviga. The film has the effervescence of a garden in springtime,  yet not without thorns. It captures the quiet ache and messy hope of growing up with someone, only to realise you may also have to grow apart.

At its core is Raffy (played by Andres), a shy but steadfast teen whose affection for his artsy classmate Luna (Ashtine) begins with a simple question: “May boyfriend ka ba?” From that opener, "Minamahal"  unfolds into a coming-of-age love story that spans high school to college, while depicting the evolution of modern relationships.

One of the film’s subtlest triumphs is its portrayal of how Gen Z approaches romance differently. As a Gen X viewer, I was struck by how Luna and Raffy skip the melodrama of courtship. There's no "ligawan" phase, no prolonged flirtation. They decide to be together, a moment of quiet consent rather than fireworks.

While the relationship begins in the glow of teenage idealism, it is never allowed to remain there. Luna’s home life is fractured, marked by her mother’s abusive relationship and her own bouts of emotional withdrawal. Raffy, for all his romanticism, has his own growing pains, moments of self-doubt, and a tendency to tether his self-worth to Luna’s affection.

The film’s title reference to flowers grows in meaning as the narrative progresses. For Raffy, who later studies Botany in college, each flower is an offering, a gesture of love when words fall short. 

Andres Muhlach and Ashtine Olviga, collectively known as AshDres, during the premiere night held at Megamall Cinema.
Andres Muhlach and Ashtine Olviga, collectively known as AshDres, during the premiere night held at Megamall Cinema.

Luna also chooses to respond with simple gestures. She dyes a white rose blue and gives it to Raffy. Their small acts are romantic and millennial-coded, giving us insight into Gen Z's love language.

The second half of the film shifts into more turbulent terrain. College opens new horizons, but also new distances. Luna begins to rediscover herself through a reconnection with her estranged father. Raffy clings tighter, even as Luna starts to drift.

Raffy and Luna's quarrels and reconciliations feel achingly real, echoing the cyclical nature of many young adult romances. Their final scene at the airport, marked by a single sunflower, was not the ending we may have hoped for. Luna chose to follow her dreams, even if it meant leaving love behind.

Andres, though still working on polishing his Tagalog diction, proves he has a screen presence worthy of the surname he carries. He exudes a quiet intensity, making Raffy’s vulnerability resonate without becoming maudlin. Ashtine shines as Luna, easily drawing in the viewer with a face that is both relatable and mysterious.

The movie has a few sagging points in the second act, but they are more than compensated by the film’s sincerity and the naturalistic performances of its leads.

This is not a fairytale romance. It’s a slow-blooming, occasionally painful portrait of two people trying to love without losing themselves. There is no fairy-tale ending here. It is for this reason that a sequel wouldn’t be unwelcome.

Produced by Viva Entertainment, "Minamahal: 100 Bulaklak Para Kay Luna" is now showing in select Metro Manila theaters.

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.