<!DOCTYPE html><html lang="en" class="scroll-smooth"> <head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><meta name="generator" content="Astro v5.17.2"><title>Free Riichi &amp; American Mahjong Guides 2026 | Mahjong Master</title><meta name="description" content="Free guides to riichi and American mahjong. 43 yaku explained, complete rules, buying guides, and interactive tools for beginners and experts."><link rel="canonical" href="https://www.mahjongmaster.co/"><!-- Open Graph --><meta property="og:type" content="website"><meta property="og:title" content="Free Riichi &#38; American Mahjong Guides 2026"><meta property="og:description" content="Free guides to riichi and American mahjong. 43 yaku explained, complete rules, buying guides, and interactive tools for beginners and experts."><meta property="og:url" content="https://www.mahjongmaster.co/"><meta property="og:site_name" content="Mahjong Master"><meta property="og:image" content="https://www.mahjongmaster.co/og-image.jpg"><meta property="og:locale" content="en_US"><!-- Twitter Card --><meta name="twitter:card" content="summary_large_image"><meta name="twitter:title" content="Free Riichi &#38; American Mahjong Guides 2026"><meta name="twitter:description" content="Free guides to riichi and American mahjong. 43 yaku explained, complete rules, buying guides, and interactive tools for beginners and experts."><meta name="twitter:image" content="https://www.mahjongmaster.co/og-image.jpg"><!-- Favicons --><link rel="icon" type="image/svg+xml" href="/favicon.svg"><link rel="apple-touch-icon" href="/apple-touch-icon.png"><!-- Speed up Google Analytics connection setup --><link rel="preconnect" href="https://www.googletagmanager.com" crossorigin><link rel="dns-prefetch" href="https://www.google-analytics.com"><!-- Sitewide JSON-LD: Organization, WebSite, Person (author persona) --><script type="application/ld+json">{"@context":"https://schema.org","@type":"Organization","@id":"https://www.mahjongmaster.co/#organization","name":"Mahjong Master","legalName":"Mahjong Master","url":"https://www.mahjongmaster.co","logo":"https://www.mahjongmaster.co/og-image.jpg","foundingDate":"2026-02-01","description":"Free guides to riichi and American mahjong. 43 yaku explained, complete rules, buying guides, and interactive tools for beginners and experts.","knowsAbout":["Riichi Mahjong","Japanese Mahjong","American Mahjong","NMJL Mahjong","Mahjong Yaku","Mahjong Scoring","Mahjong Strategy"]}</script><script type="application/ld+json">{"@context":"https://schema.org","@type":"WebSite","@id":"https://www.mahjongmaster.co/#website","url":"https://www.mahjongmaster.co","name":"Mahjong Master","description":"Free guides to riichi and American mahjong. 43 yaku explained, complete rules, buying guides, and interactive tools for beginners and experts.","publisher":{"@id":"https://www.mahjongmaster.co/#organization"},"inLanguage":"en-US"}</script><script type="application/ld+json">{"@context":"https://schema.org","@type":"Person","@id":"https://www.mahjongmaster.co/#author-kenji-tanaka","name":"Kenji Tanaka","jobTitle":"Riichi Mahjong Editor","description":"Kenji Tanaka writes about riichi and American mahjong for English-speaking learners. Focused on yaku reference, scoring, and beginner strategy.","url":"https://www.mahjongmaster.co/about/kenji-tanaka/","image":"https://www.mahjongmaster.co/og-image.jpg","sameAs":["https://www.mahjongmaster.co/about/kenji-tanaka/","https://www.mahjongmaster.co"],"worksFor":{"@id":"https://www.mahjongmaster.co/#organization"}}</script><!-- Markdown alternate (for LLMs that respect content negotiation) --><meta name="astro-view-transitions-enabled" content="true"><meta name="astro-view-transitions-fallback" content="animate"><script type="module" src="/_astro/ClientRouter.astro_astro_type_script_index_0_lang.CBOeYAl-.js"></script><!-- Google tag (gtag.js). is:inline keeps gtag a true global (otherwise Astro
         bundles it as a module and window.gtag is undefined). --><script async src="https://www.googletagmanager.com/gtag/js?id=G-JTVLZSE99B"></script><script>
      window.dataLayer = window.dataLayer || [];
      function gtag(){dataLayer.push(arguments);}
      window.gtag = gtag;
      gtag('js', new Date());
      gtag('config', 'G-JTVLZSE99B');
    </script><!-- Forward existing data-plausible-event clicks to GA4. pointerdown fires
         before navigation (beats the outbound-link unload race); click is the
         keyboard fallback; beacon transport survives page unload. One delegated
         listener on document survives View Transitions. --><script>
      (function () {
        var PREFIX = "data-plausible-event-";
        var last = 0;
        function handler(e) {
          var t = e.target;
          var el = t && t.closest ? t.closest("[data-plausible-event]") : null;
          if (!el || typeof window.gtag !== "function") return;
          var now = Date.now();
          if (now - last < 500) return; // dedupe pointerdown + click of one tap
          last = now;
          var name = (el.getAttribute("data-plausible-event") || "click")
            .toLowerCase()
            .replace(/[^a-z0-9]+/g, "_");
          var params = { transport_type: "beacon" };
          for (var i = 0; i < el.attributes.length; i++) {
            var a = el.attributes[i];
            if (a.name.indexOf(PREFIX) === 0) {
              params[a.name.slice(PREFIX.length).replace(/-/g, "_")] = a.value;
            }
          }
          window.gtag("event", name, params);
        }
        document.addEventListener("pointerdown", handler, true);
        document.addEventListener("click", handler, true);
      })();
    </script><link rel="stylesheet" href="/_astro/_slug_.BONhgwut.css"><script type="module" src="/_astro/page.D6sK1WDe.js"></script></head> <body class="flex min-h-screen flex-col bg-canvas text-slate-800 antialiased"> <a href="#main-content" class="sr-only focus:not-sr-only focus:fixed focus:left-4 focus:top-4 focus:z-[100] focus:rounded-lg focus:bg-jade-500 focus:px-4 focus:py-2 focus:text-white focus:outline-none">
Skip to content
</a> <div class="sticky top-0 z-50"> <div id="promo-bar" data-astro-transition-persist="astro-5acn5j3j-1"> <a href="/guides/" data-banner-variant="0" data-plausible-event="Guide Promo Click" data-plausible-event-placement="top-banner" data-plausible-event-product="american-winners-playbook" aria-label="The American Mahjong Winner's Playbook: get the guide" class="block bg-ink text-center text-sm text-slate-200 transition-colors hover:bg-slate-800"> <div class="mx-auto flex max-w-(--width-max) flex-wrap items-center justify-center gap-x-2 gap-y-0.5 px-4 py-2"> <span class="hidden text-slate-300 sm:inline">Read the card, win the Charleston, take more games.</span> <span class="font-semibold text-white">The American Mahjong Winner&#39;s Playbook</span> <span class="inline-flex items-center gap-1 font-bold text-amber-300 underline decoration-amber-300/40 underline-offset-2">
Get it for $29 <svg class="h-3.5 w-3.5" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2.5"> <path stroke-linecap="round" stroke-linejoin="round" d="M13 7l5 5m0 0l-5 5m5-5H6"></path> </svg> </span> </div> </a><a href="/guides/" data-banner-variant="1" data-plausible-event="Guide Promo Click" data-plausible-event-placement="top-banner" data-plausible-event-product="climb-the-ranks" aria-label="Climb the Ranks: get the guide" class="block bg-ink text-center text-sm text-slate-200 transition-colors hover:bg-slate-800 hidden"> <div class="mx-auto flex max-w-(--width-max) flex-wrap items-center justify-center gap-x-2 gap-y-0.5 px-4 py-2"> <span class="hidden text-slate-300 sm:inline">Stuck at Expert? Fix the 5 leaks and climb the ranks.</span> <span class="font-semibold text-white">Climb the Ranks</span> <span class="inline-flex items-center gap-1 font-bold text-amber-300 underline decoration-amber-300/40 underline-offset-2">
Get it for $17 <svg class="h-3.5 w-3.5" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2.5"> <path stroke-linecap="round" stroke-linejoin="round" d="M13 7l5 5m0 0l-5 5m5-5H6"></path> </svg> </span> </div> </a> </div> <script type="module">function a(){const r=document.getElementById("promo-bar");if(!r)return;const n=r.querySelectorAll("[data-banner-variant]");if(n.length<2)return;let e=sessionStorage.getItem("mm_banner_i");if(e===null){const t=parseInt(localStorage.getItem("mm_banner_c")||"0",10)+1;localStorage.setItem("mm_banner_c",String(t)),e=String(t%n.length),sessionStorage.setItem("mm_banner_i",e)}const o=parseInt(e,10);n.forEach((t,s)=>t.classList.toggle("hidden",s!==o))}document.addEventListener("astro:page-load",a);document.readyState!=="loading"?a():document.addEventListener("DOMContentLoaded",a);</script> <header class="border-b border-slate-200/80 bg-white/80 backdrop-blur-lg"> <div class="mx-auto flex max-w-(--width-max) items-center justify-between px-6 py-4"> <!-- Logo --> <a href="/" class="flex items-center gap-2 text-lg font-bold text-ink transition-colors hover:text-jade-600"> <svg class="h-8 w-8" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"> <defs> <linearGradient id="header-tile-face" x1="0" y1="0" x2="0" y2="1"> <stop offset="0%" stop-color="#FFFFFF"></stop> <stop offset="100%" stop-color="#F1F5F9"></stop> </linearGradient> <linearGradient id="header-jade" x1="0" y1="0" x2="1" y2="1"> <stop offset="0%" stop-color="#16B364"></stop> <stop offset="100%" stop-color="#099250"></stop> </linearGradient> </defs> <rect x="4" y="5" width="24" height="26" rx="3" fill="#0C1F2C" opacity="0.15"></rect> <rect x="3" y="4" width="24" height="26" rx="3" fill="#CBD5E1"></rect> <rect x="3" y="3" width="24" height="25" rx="3" fill="url(#header-tile-face)" stroke="#CBD5E1" stroke-width="0.5"></rect> <circle cx="15" cy="15.5" r="8" fill="url(#header-jade)"></circle> <rect x="11" y="10" width="2" height="11" rx="1" fill="white" opacity="0.9"></rect> <rect x="14" y="10" width="2" height="11" rx="1" fill="white" opacity="0.9"></rect> <rect x="17" y="10" width="2" height="11" rx="1" fill="white" opacity="0.9"></rect> <rect x="10" y="14.5" width="10" height="2" rx="1" fill="white" opacity="0.9"></rect> </svg> <span>Mahjong Master</span> </a> <!-- Desktop Navigation --> <nav class="hidden items-center gap-1 lg:flex" aria-label="Main navigation"> <div class="group relative"> <a href="/learn/" class="inline-flex items-center gap-1 rounded-lg px-3 py-2 text-sm font-medium text-slate-600 transition-colors hover:bg-slate-100 hover:text-slate-900"> Learn <svg class="h-4 w-4 opacity-50 transition-transform group-hover:rotate-180" fill="none" viewBox="0 0 24 24" stroke="currentColor"> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"></path> </svg> </a> <div class="invisible absolute left-0 top-full z-50 min-w-[280px] translate-y-1 rounded-xl border border-slate-200 bg-white p-2 opacity-0 shadow-xl transition-all duration-200 group-hover:visible group-hover:translate-y-0 group-hover:opacity-100"> <a href="/learn/american/beginners-guide/" class="block rounded-lg px-4 py-3 transition-colors hover:bg-slate-50"> <div class="text-sm font-medium text-slate-900">American Mahjong Guide</div> <div class="mt-0.5 text-xs text-slate-500">Complete guide to American Mahjong for beginners</div> </a><a href="/learn/riichi/beginners-guide/" class="block rounded-lg px-4 py-3 transition-colors hover:bg-slate-50"> <div class="text-sm font-medium text-slate-900">Riichi Mahjong Guide</div> <div class="mt-0.5 text-xs text-slate-500">Complete guide to learning riichi mahjong</div> </a><a href="/learn/riichi/yaku/" class="block rounded-lg px-4 py-3 transition-colors hover:bg-slate-50"> <div class="text-sm font-medium text-slate-900">Yaku Reference</div> <div class="mt-0.5 text-xs text-slate-500">All 43 yaku with examples and strategy</div> </a><a href="/learn/riichi/tiles/" class="block rounded-lg px-4 py-3 transition-colors hover:bg-slate-50"> <div class="text-sm font-medium text-slate-900">Tile Reference</div> <div class="mt-0.5 text-xs text-slate-500">Visual guide to all mahjong tiles</div> </a><a href="/learn/riichi/glossary/" class="block rounded-lg px-4 py-3 transition-colors hover:bg-slate-50"> <div class="text-sm font-medium text-slate-900">Glossary</div> <div class="mt-0.5 text-xs text-slate-500">Common riichi mahjong terms</div> </a> </div> </div><div class="group relative"> <a href="/guides/" class="inline-flex items-center gap-1 rounded-lg px-3 py-2 text-sm font-medium text-slate-600 transition-colors hover:bg-slate-100 hover:text-slate-900"> Guides  </a>  </div><div class="group relative"> <a href="/blog/" class="inline-flex items-center gap-1 rounded-lg px-3 py-2 text-sm font-medium text-slate-600 transition-colors hover:bg-slate-100 hover:text-slate-900"> Blog  </a>  </div><div class="group relative"> <a href="/resources/" class="inline-flex items-center gap-1 rounded-lg px-3 py-2 text-sm font-medium text-slate-600 transition-colors hover:bg-slate-100 hover:text-slate-900"> Resources  </a>  </div><div class="group relative"> <a href="/resources/mahjong-sets/" class="inline-flex items-center gap-1 rounded-lg px-3 py-2 text-sm font-medium text-slate-600 transition-colors hover:bg-slate-100 hover:text-slate-900"> Shop Sets  </a>  </div> </nav> <!-- Right side: Mobile menu --> <div class="flex items-center gap-3"> <!-- Mobile menu button --> <button type="button" class="inline-flex items-center justify-center rounded-lg p-3 text-slate-600 transition-colors hover:bg-slate-100 lg:hidden" aria-label="Open menu" id="mobile-menu-toggle"> <svg class="h-6 w-6" fill="none" viewBox="0 0 24 24" stroke="currentColor"> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 12h16M4 18h16"></path> </svg> </button> </div> </div> <!-- Mobile Navigation --> <div id="mobile-menu" class="hidden border-t border-slate-200 bg-white lg:hidden"> <nav class="mx-auto max-w-(--width-max) px-6 py-4" aria-label="Mobile navigation"> <div class="border-b border-slate-100 last:border-0"> <a href="/learn/" class="block py-3 text-base font-medium text-slate-700"> Learn </a> <div class="pb-3 pl-4"> <a href="/learn/american/beginners-guide/" class="block py-2 text-sm text-slate-500 hover:text-jade-600"> American Mahjong Guide </a><a href="/learn/riichi/beginners-guide/" class="block py-2 text-sm text-slate-500 hover:text-jade-600"> Riichi Mahjong Guide </a><a href="/learn/riichi/yaku/" class="block py-2 text-sm text-slate-500 hover:text-jade-600"> Yaku Reference </a><a href="/learn/riichi/tiles/" class="block py-2 text-sm text-slate-500 hover:text-jade-600"> Tile Reference </a><a href="/learn/riichi/glossary/" class="block py-2 text-sm text-slate-500 hover:text-jade-600"> Glossary </a> </div> </div><div class="border-b border-slate-100 last:border-0"> <a href="/guides/" class="block py-3 text-base font-medium text-slate-700"> Guides </a>  </div><div class="border-b border-slate-100 last:border-0"> <a href="/blog/" class="block py-3 text-base font-medium text-slate-700"> Blog </a>  </div><div class="border-b border-slate-100 last:border-0"> <a href="/resources/" class="block py-3 text-base font-medium text-slate-700"> Resources </a>  </div><div class="border-b border-slate-100 last:border-0"> <a href="/resources/mahjong-sets/" class="block py-3 text-base font-medium text-slate-700"> Shop Sets </a>  </div> </nav> </div> </header> <script type="module">function i(){const e=document.getElementById("mobile-menu-toggle"),t=document.getElementById("mobile-menu");!e||!t||(e.addEventListener("click",()=>{const n=t.classList.toggle("hidden");e.setAttribute("aria-label",n?"Open menu":"Close menu")}),t.querySelectorAll("a").forEach(n=>{n.addEventListener("click",()=>{t.classList.add("hidden"),e.setAttribute("aria-label","Open menu")})}))}document.addEventListener("astro:page-load",i);</script> </div> <main id="main-content" class="flex-1">  <script type="application/ld+json">{"@context":"https://schema.org","@type":"ItemList","name":"Recommended Mahjong Sets","itemListElement":[{"@type":"ListItem","position":1,"item":{"@type":"Product","name":"Yellow Mountain Imports American Mahjong Set - Santorini","description":"Best overall American mahjong set with 166 scratch-resistant melamine tiles, all-in-one racks, and Mediterranean blue soft case.","image":"https://www.mahjongmaster.co/_astro/ymi-santorini.D77mwaoM_ZPU2sm.webp","brand":{"@type":"Brand","name":"Yellow Mountain Imports"},"review":{"@type":"Review","reviewRating":{"@type":"Rating","ratingValue":4.5,"bestRating":5,"worstRating":1},"author":{"@id":"https://www.mahjongmaster.co/#organization"},"reviewBody":"Best overall American mahjong set with 166 scratch-resistant melamine tiles, all-in-one racks, and Mediterranean blue soft case.","datePublished":"2026-02-17"},"offers":{"@type":"Offer","price":"175.99","priceCurrency":"USD","availability":"https://schema.org/InStock","url":"https://www.amazon.com/Yellow-Mountain-Imports-American-Mahjong/dp/B08PHJ37R4?tag=jacgrowthmark-20","seller":{"@type":"Organization","name":"Amazon.com"},"hasMerchantReturnPolicy":{"@type":"MerchantReturnPolicy","applicableCountry":"US","returnPolicyCategory":"https://schema.org/MerchantReturnFiniteReturnWindow","merchantReturnDays":30,"returnMethod":"https://schema.org/ReturnByMail","returnFees":"https://schema.org/FreeReturn"},"shippingDetails":{"@type":"OfferShippingDetails","shippingRate":{"@type":"MonetaryAmount","value":0,"currency":"USD"},"shippingDestination":{"@type":"DefinedRegion","addressCountry":"US"},"deliveryTime":{"@type":"ShippingDeliveryTime","handlingTime":{"@type":"QuantitativeValue","minValue":0,"maxValue":1,"unitCode":"DAY"},"transitTime":{"@type":"QuantitativeValue","minValue":1,"maxValue":5,"unitCode":"DAY"}}}}}},{"@type":"ListItem","position":2,"item":{"@type":"Product","name":"Metro Mah Jongg American Mahjong Set - Blue Canvas Bag","description":"Highly-rated American (NMJL) mahjong set with 166 engraved tiles, all-in-one rack/pushers, and a blue canvas bag. A complete set from a brand other than YMI.","image":"https://www.mahjongmaster.co/_astro/metro-mahjong.B_NyBo9O_iOOUH.webp","brand":{"@type":"Brand","name":"Metro Mah Jongg"},"review":{"@type":"Review","reviewRating":{"@type":"Rating","ratingValue":4.8,"bestRating":5,"worstRating":1},"author":{"@id":"https://www.mahjongmaster.co/#organization"},"reviewBody":"Highly-rated American (NMJL) mahjong set with 166 engraved tiles, all-in-one rack/pushers, and a blue canvas bag. A complete set from a brand other than YMI.","datePublished":"2026-05-30"},"offers":{"@type":"Offer","price":"149.95","priceCurrency":"USD","availability":"https://schema.org/InStock","url":"https://www.amazon.com/American-Mah-Jongg-All-One/dp/B01N0NJEJU?tag=jacgrowthmark-20","seller":{"@type":"Organization","name":"Amazon.com"},"hasMerchantReturnPolicy":{"@type":"MerchantReturnPolicy","applicableCountry":"US","returnPolicyCategory":"https://schema.org/MerchantReturnFiniteReturnWindow","merchantReturnDays":30,"returnMethod":"https://schema.org/ReturnByMail","returnFees":"https://schema.org/FreeReturn"},"shippingDetails":{"@type":"OfferShippingDetails","shippingRate":{"@type":"MonetaryAmount","value":0,"currency":"USD"},"shippingDestination":{"@type":"DefinedRegion","addressCountry":"US"},"deliveryTime":{"@type":"ShippingDeliveryTime","handlingTime":{"@type":"QuantitativeValue","minValue":0,"maxValue":1,"unitCode":"DAY"},"transitTime":{"@type":"QuantitativeValue","minValue":1,"maxValue":5,"unitCode":"DAY"}}}}}},{"@type":"ListItem","position":3,"item":{"@type":"Product","name":"Linda Li American Mahjong Set - Blue Paisley","description":"Premium American mahjong set with 166 fully engraved tiles, elegant quilted soft case, and complete accessories. Best for players who value style.","image":"https://www.mahjongmaster.co/_astro/linda-li-paisley.BkDJbSEK_2fGysG.webp","brand":{"@type":"Brand","name":"Linda Li"},"review":{"@type":"Review","reviewRating":{"@type":"Rating","ratingValue":4.6,"bestRating":5,"worstRating":1},"author":{"@id":"https://www.mahjongmaster.co/#organization"},"reviewBody":"Premium American mahjong set with 166 fully engraved tiles, elegant quilted soft case, and complete accessories. Best for players who value style.","datePublished":"2026-02-17"},"offers":{"@type":"Offer","price":"199.99","priceCurrency":"USD","availability":"https://schema.org/InStock","url":"https://www.amazon.com/NEW-American-All-One-Complete/dp/B00H2QX94E?tag=jacgrowthmark-20","seller":{"@type":"Organization","name":"Amazon.com"},"hasMerchantReturnPolicy":{"@type":"MerchantReturnPolicy","applicableCountry":"US","returnPolicyCategory":"https://schema.org/MerchantReturnFiniteReturnWindow","merchantReturnDays":30,"returnMethod":"https://schema.org/ReturnByMail","returnFees":"https://schema.org/FreeReturn"},"shippingDetails":{"@type":"OfferShippingDetails","shippingRate":{"@type":"MonetaryAmount","value":0,"currency":"USD"},"shippingDestination":{"@type":"DefinedRegion","addressCountry":"US"},"deliveryTime":{"@type":"ShippingDeliveryTime","handlingTime":{"@type":"QuantitativeValue","minValue":0,"maxValue":1,"unitCode":"DAY"},"transitTime":{"@type":"QuantitativeValue","minValue":1,"maxValue":5,"unitCode":"DAY"}}}}}},{"@type":"ListItem","position":4,"item":{"@type":"Product","name":"USA MJ Table Automatic Mahjong Table - 36mm American Style","description":"Automatic shuffling table with 166-tile American mahjong sets. Foldable design with wheels, 2 sets of numbered tiles included. The ultimate upgrade for serious players.","image":"https://www.mahjongmaster.co/_astro/automatic-table.wgOk6r2n_1N4GTB.webp","brand":{"@type":"Brand","name":"USA MJ"},"review":{"@type":"Review","reviewRating":{"@type":"Rating","ratingValue":4.5,"bestRating":5,"worstRating":1},"author":{"@id":"https://www.mahjongmaster.co/#organization"},"reviewBody":"Automatic shuffling table with 166-tile American mahjong sets. Foldable design with wheels, 2 sets of numbered tiles included. The ultimate upgrade for serious players.","datePublished":"2026-02-15"},"offers":{"@type":"Offer","price":"1159.99","priceCurrency":"USD","availability":"https://schema.org/InStock","url":"https://www.amazon.com/Folding-Automatic-American-Numbered-Foldable/dp/B09XGM984K?tag=jacgrowthmark-20","seller":{"@type":"Organization","name":"Amazon.com"},"hasMerchantReturnPolicy":{"@type":"MerchantReturnPolicy","applicableCountry":"US","returnPolicyCategory":"https://schema.org/MerchantReturnFiniteReturnWindow","merchantReturnDays":30,"returnMethod":"https://schema.org/ReturnByMail","returnFees":"https://schema.org/FreeReturn"},"shippingDetails":{"@type":"OfferShippingDetails","shippingRate":{"@type":"MonetaryAmount","value":0,"currency":"USD"},"shippingDestination":{"@type":"DefinedRegion","addressCountry":"US"},"deliveryTime":{"@type":"ShippingDeliveryTime","handlingTime":{"@type":"QuantitativeValue","minValue":0,"maxValue":1,"unitCode":"DAY"},"transitTime":{"@type":"QuantitativeValue","minValue":1,"maxValue":5,"unitCode":"DAY"}}}}}}]}</script>   <section class="relative min-h-[85vh] overflow-hidden bg-gradient-to-br from-slate-50 via-white to-jade-50/30"> <!-- Background glow effects --> <div class="absolute left-1/4 top-0 h-[500px] w-[500px] rounded-full bg-jade-400/8 blur-[150px]"></div> <div class="absolute bottom-0 right-1/4 h-[400px] w-[400px] rounded-full bg-amber-400/6 blur-[120px]"></div> <div class="relative mx-auto grid min-h-[85vh] max-w-7xl items-center gap-8 px-6 py-16 lg:grid-cols-2 lg:gap-12 lg:px-12"> <!-- Left: Content --> <div> <h1 class="text-5xl font-extrabold leading-[1.05] tracking-tight text-slate-900 sm:text-6xl lg:text-7xl">
Learn Riichi &amp; American<br> <span class="accent-italic bg-gradient-to-r from-jade-600 via-jade-500 to-amber-500 bg-clip-text text-transparent">
Mahjong
</span> </h1> <p class="mt-6 max-w-lg text-lg leading-relaxed text-slate-500">
Everything for Japanese riichi and American (NMJL) mahjong in one place: rules, strategy, yaku, glossary, and honest gear reviews. Free to read.
</p> <!-- Quick action buttons --> <div class="mt-10 flex flex-wrap gap-4"> <a href="/learn/american/beginners-guide/" class="flex items-center gap-3 rounded-xl bg-jade-600 px-6 py-4 font-semibold text-white shadow-lg shadow-jade-600/20 transition-all hover:-translate-y-0.5 hover:bg-jade-500 hover:shadow-xl"> <svg class="h-5 w-5" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path d="M12 6.253v13m0-13C10.832 5.477 9.246 5 7.5 5S4.168 5.477 3 6.253v13C4.168 18.477 5.754 18 7.5 18s3.332.477 4.5 1.253m0-13C13.168 5.477 14.754 5 16.5 5c1.747 0 3.332.477 4.5 1.253v13C19.832 18.477 18.247 18 16.5 18c-1.746 0-3.332.477-4.5 1.253"></path></svg>
Start Learning
</a> <a href="/resources/mahjong-sets/" data-plausible-event="Hero Shop Now" class="flex items-center gap-3 rounded-xl bg-amber-500 px-6 py-4 font-semibold text-white shadow-lg shadow-amber-500/20 transition-all hover:-translate-y-0.5 hover:bg-amber-400 hover:shadow-xl"> <svg class="h-5 w-5" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path d="M16 11V7a4 4 0 00-8 0v4M5 9h14l1 12H4L5 9z"></path></svg>
Shop Now
</a> </div> </div> <!-- Right: Photo with overlay UI --> <div class="relative hidden lg:block"> <div class="relative overflow-hidden rounded-2xl shadow-2xl shadow-slate-200/50 ring-1 ring-slate-200"> <img src="/_astro/hero-mahjong.bfYh_lCG_27CN07.webp" alt="Mahjong winning hand with tiles" loading="eager" decoding="async" fetchpriority="auto" width="1100" height="733" class="h-[500px] w-full object-cover"> <!-- Overlay UI: site content stats --> <!-- TODO: All numbers with data-counter should animate up from 0 on scroll-into-view using countUp.js or IntersectionObserver + requestAnimationFrame --> <div class="absolute bottom-0 left-0 right-0 bg-gradient-to-t from-black/80 via-black/50 to-transparent p-6"> <div class="grid grid-cols-3 gap-3 text-center"> <div> <span class="text-2xl font-bold tabular-nums text-jade-400" data-counter data-target="43">43</span> <span class="block text-xs text-white/70">Yaku explained</span> </div> <div> <span class="text-2xl font-bold tabular-nums text-amber-400" data-counter data-target="109">109</span> <span class="block text-xs text-white/70">Glossary terms</span> </div> <div> <span class="text-2xl font-bold tabular-nums text-blue-400" data-counter data-target="300">300+</span> <span class="block text-xs text-white/70">Pages of guides</span> </div> </div> </div> </div> </div> </div> </section>  <section class="relative overflow-hidden bg-gradient-to-r from-ink via-slate-800 to-ink py-10"> <div class="absolute right-1/4 top-0 h-64 w-64 rounded-full bg-amber-500/10 blur-[100px]"></div> <div class="relative mx-auto max-w-7xl px-6 md:px-12"> <div class="flex flex-col items-center gap-8 md:flex-row md:justify-between"> <div class="max-w-xl text-center md:text-left"> <span class="inline-flex items-center gap-2 rounded-full bg-white/10 px-3 py-1 text-xs font-bold uppercase tracking-widest text-amber-300"> <span class="h-1.5 w-1.5 rounded-full bg-amber-400"></span> Strategy guides
</span> <h2 class="mt-3 text-3xl font-bold text-white md:text-4xl">Learn the moves that win.</h2> <p class="mt-3 text-slate-300">
The rules are free. Winning is a skill. Two printable guides teach the strategy that takes games, one for American mahjong and one for riichi.
</p> <div class="mt-6 flex flex-wrap items-center justify-center gap-4 md:justify-start"> <a href="/guides/" data-plausible-event="Guide Promo Click" data-plausible-event-placement="homepage-band" class="inline-flex items-center gap-2 rounded-full bg-amber-500 px-6 py-3 text-base font-bold text-white shadow-lg shadow-amber-500/20 transition-all hover:-translate-y-0.5 hover:bg-amber-400">
See the guides
<svg class="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M13 7l5 5m0 0l-5 5m5-5H6"></path></svg> </a> <span class="text-sm font-semibold text-slate-400">From $17 · instant PDF</span> </div> </div> <a href="/guides/" data-plausible-event="Guide Promo Click" data-plausible-event-placement="homepage-band-covers" class="flex flex-shrink-0 items-end justify-center gap-4"> <img src="/guides/covers/american.webp" alt="The American Mahjong Winner's Playbook cover" width="132" height="178" loading="lazy" class="w-28 rounded-lg shadow-2xl ring-1 ring-white/10 transition-transform hover:-translate-y-1 sm:w-32 rotate-[-4deg]"><img src="/guides/covers/riichi.webp" alt="Climb the Ranks cover" width="132" height="178" loading="lazy" class="w-28 rounded-lg shadow-2xl ring-1 ring-white/10 transition-transform hover:-translate-y-1 sm:w-32 rotate-[4deg]"> </a> </div> </div> </section>    <section class="bg-[#FAFBFC] px-4 py-12 md:px-8 lg:px-12"> <div class="mx-auto max-w-7xl"> <div class="grid gap-6 lg:grid-cols-12"> <!-- Main Content Column (8 cols) --> <div class="space-y-6 lg:col-span-8"> <!-- Featured Guide Cards --> <div class="grid gap-4 sm:grid-cols-2"> <!-- Riichi Guide --> <a href="/learn/riichi/beginners-guide/" class="group relative block overflow-hidden rounded-2xl bg-gradient-to-br from-jade-600 via-jade-500 to-jade-700 p-6 shadow-lg ring-1 ring-jade-600 transition-all hover:-translate-y-0.5 hover:shadow-xl"> <div class="mb-3 flex items-center gap-2"> <span class="rounded-full bg-white/20 px-2.5 py-1 text-[10px] font-bold text-white backdrop-blur">JAPANESE RULES</span> <span class="text-xs text-white/80">~60 min</span> </div> <h2 class="text-2xl font-bold text-white group-hover:text-jade-100">
Riichi Mahjong Guide
</h2> <p class="mt-3 text-sm leading-relaxed text-white/90">
Master the most popular online variant. Strategic gameplay, competitive play, millions of players worldwide.
</p> <div class="mt-4 inline-flex items-center gap-2 text-sm font-semibold text-white/90 group-hover:text-white">
Start learning
<svg class="h-4 w-4 transition-transform group-hover:translate-x-1" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"> <path stroke-linecap="round" stroke-linejoin="round" d="M13 7l5 5m0 0l-5 5m5-5H6"></path> </svg> </div> </a> <!-- American Guide --> <a href="/learn/american/beginners-guide/" class="group relative block overflow-hidden rounded-2xl bg-gradient-to-br from-blue-600 via-blue-500 to-purple-600 p-6 shadow-lg ring-1 ring-blue-600 transition-all hover:-translate-y-0.5 hover:shadow-xl"> <div class="mb-3 flex items-center gap-2"> <span class="rounded-full bg-white/20 px-2.5 py-1 text-[10px] font-bold text-white backdrop-blur">AMERICAN RULES</span> <span class="text-xs text-white/80">~50 min</span> </div> <h2 class="text-2xl font-bold text-white group-hover:text-blue-100">
American Mahjong Guide
</h2> <p class="mt-3 text-sm leading-relaxed text-white/90">
Perfect for social game nights. Popular in the USA with clubs nationwide. Uses the NMJL Card system.
</p> <div class="mt-4 inline-flex items-center gap-2 text-sm font-semibold text-white/90 group-hover:text-white">
Start learning
<svg class="h-4 w-4 transition-transform group-hover:translate-x-1" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"> <path stroke-linecap="round" stroke-linejoin="round" d="M13 7l5 5m0 0l-5 5m5-5H6"></path> </svg> </div> </a> </div> <!-- Two-column article cards --> <div class="grid gap-4 sm:grid-cols-2"> <a href="/blog/mahjong-soul-ranks-explained/" class="group overflow-hidden rounded-2xl bg-white shadow-sm ring-1 ring-slate-200 transition-all hover:shadow-md hover:ring-slate-300"><div class="p-5"><div class="mb-2 flex flex-wrap items-center gap-2"><span class="rounded-full px-2.5 py-0.5 text-xs font-bold uppercase tracking-wider bg-blue-50 text-blue-700">platform review</span><span class="rounded-full px-2.5 py-0.5 text-xs font-semibold uppercase tracking-wider bg-emerald-50 text-emerald-700">beginner</span><span class="text-xs text-slate-400">4 min read</span></div><h3 class="font-bold text-slate-900 group-hover:text-jade-600 line-clamp-2">Mahjong Soul Ranks Explained: Novice to Celestial</h3><p class="mt-2 text-sm text-slate-500 line-clamp-2">How Mahjong Soul ranks work, the six tiers from Novice to Celestial, which room each unlocks, and how placement points move you up or down.</p><div class="mt-3 text-xs text-slate-400"><time datetime="2026-05-31T00:00:00.000Z">May 31, 2026</time></div></div></a> <a href="/blog/riichi-mahjong-defense-when-to-fold/" class="group overflow-hidden rounded-2xl bg-white shadow-sm ring-1 ring-slate-200 transition-all hover:shadow-md hover:ring-slate-300"><div class="p-5"><div class="mb-2 flex flex-wrap items-center gap-2"><span class="rounded-full px-2.5 py-0.5 text-xs font-bold uppercase tracking-wider bg-amber-50 text-amber-700">strategy</span><span class="rounded-full px-2.5 py-0.5 text-xs font-semibold uppercase tracking-wider bg-amber-50 text-amber-700">intermediate</span><span class="text-xs text-slate-400">5 min read</span></div><h3 class="font-bold text-slate-900 group-hover:text-jade-600 line-clamp-2">Riichi Mahjong Defense: Genbutsu, Safe Tiles &amp; When to Fold</h3><p class="mt-2 text-sm text-slate-500 line-clamp-2">Riichi defense explained: read safe tiles with genbutsu and suji, know when to fold (betaori), and why not dealing in beats chasing every hand.</p><div class="mt-3 text-xs text-slate-400"><time datetime="2026-05-31T00:00:00.000Z">May 31, 2026</time></div></div></a> </div> <!-- Variant selector: visual cards --> <div class="rounded-2xl bg-white p-6 shadow-sm ring-1 ring-slate-200"> <h3 class="mb-4 text-sm font-bold uppercase tracking-wider text-slate-400">Choose Your Variant</h3> <div class="grid gap-4 sm:grid-cols-3"> <a href="/learn/riichi/" class="group relative overflow-hidden rounded-xl ring-2 ring-slate-200 transition-all hover:ring-jade-500 hover:shadow-lg"> <img src="/_astro/variant-riichi.Cq9OtyAs_1TTcfU.svg" alt="Riichi Mahjong - Japanese rules" loading="lazy" decoding="async" fetchpriority="auto" width="400" height="300" class="h-48 w-full object-cover transition-transform duration-500 group-hover:scale-105"> <div class="absolute inset-0 bg-gradient-to-t from-black/70 via-black/20 to-transparent"></div> <div class="absolute bottom-0 left-0 right-0 p-5"> <span class="mb-2 inline-block rounded-full bg-jade-500 px-2.5 py-1 text-[10px] font-bold uppercase tracking-wider text-white">Most Popular</span> <div> <span class="block text-xl font-bold text-white drop-shadow-lg">Riichi</span> <span class="mt-1 block text-sm text-white/90">Japanese rules</span> </div> </div> </a> <a href="/blog/which-mahjong-variant-should-you-learn/" class="group relative overflow-hidden rounded-xl ring-2 ring-slate-200 transition-all hover:ring-blue-500 hover:shadow-lg"> <img src="/_astro/variant-american.DP_Jrkma_1TTcfU.svg" alt="American Mahjong - NMJL rules" loading="lazy" decoding="async" fetchpriority="auto" width="400" height="300" class="h-48 w-full object-cover transition-transform duration-500 group-hover:scale-105"> <div class="absolute inset-0 bg-gradient-to-t from-black/70 via-black/20 to-transparent"></div> <div class="absolute bottom-0 left-0 right-0 p-5"> <span class="mb-2 inline-block rounded-full bg-blue-500 px-2.5 py-1 text-[10px] font-bold uppercase tracking-wider text-white">Popular in USA</span> <div> <span class="block text-xl font-bold text-white drop-shadow-lg">American</span> <span class="mt-1 block text-sm text-white/90">Social & casual</span> </div> </div> </a> <a href="/blog/which-mahjong-variant-should-you-learn/" class="group relative overflow-hidden rounded-xl ring-2 ring-slate-200 transition-all hover:ring-purple-500 hover:shadow-lg"> <img src="/_astro/variant-other.DuisUY8m_1TTcfU.svg" alt="Other Mahjong variants - Hong Kong, Chinese Official" loading="lazy" decoding="async" fetchpriority="auto" width="400" height="300" class="h-48 w-full object-cover transition-transform duration-500 group-hover:scale-105"> <div class="absolute inset-0 bg-gradient-to-t from-black/70 via-black/20 to-transparent"></div> <div class="absolute bottom-0 left-0 right-0 p-5"> <span class="block text-xl font-bold text-white drop-shadow-lg">Chinese & HK</span> <span class="mt-1 block text-sm text-white/90">Traditional variants</span> </div> </a> </div> </div> <!-- More article rows --> <div class="space-y-3"> <a href="/blog/american-mahjong-scoring-explained-nmjl/" class="group flex gap-4 rounded-xl bg-white p-3 shadow-sm ring-1 ring-slate-200 transition-all hover:shadow-md hover:ring-slate-300"><div class="flex flex-col justify-center"><div class="flex items-center gap-2"><span class="rounded-full px-2 py-0.5 text-[10px] font-bold uppercase tracking-wider bg-amber-50 text-amber-700">strategy</span><span class="text-[10px] text-slate-400">5 min</span></div><h4 class="mt-1 text-sm font-bold text-slate-900 group-hover:text-jade-600 line-clamp-2">American Mahjong Scoring Explained: How NMJL Points Work</h4></div></a> </div> <!-- Link to blog --> <div class="mt-6 text-center"> <a href="/blog/" class="inline-flex items-center gap-2 text-sm font-semibold text-jade-600 hover:text-jade-700">
View all articles
<svg class="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"> <path stroke-linecap="round" stroke-linejoin="round" d="M13 7l5 5m0 0l-5 5m5-5H6"></path> </svg> </a> </div> </div> <!-- Sidebar (4 cols) --> <div class="space-y-6 lg:col-span-4"> <!-- Tools panel (hidden until tools are built) --> <!-- <div class="rounded-2xl bg-white p-5 shadow-sm ring-1 ring-slate-200">
            <h3 class="mb-4 flex items-center gap-2 text-sm font-bold uppercase tracking-wider text-slate-400">
              <svg class="h-4 w-4 text-jade-500" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path d="M13 10V3L4 14h7v7l9-11h-7z"/></svg>
              Quick Tools
            </h3>
          </div> --> <!-- Ad Zone: Sidebar rectangle (hidden until ads are ready) --> <!-- <div class="flex h-[250px] items-center justify-center rounded-2xl border-2 border-dashed border-slate-300 bg-white text-sm text-slate-400">
            Ad Zone: 300x250 Sidebar
          </div> --> <!-- Buying Guide card --> <a href="/resources/mahjong-sets/" class="group relative block overflow-hidden rounded-2xl shadow-sm ring-1 ring-slate-200 transition-all hover:ring-amber-500 hover:shadow-md"> <img src="/_astro/find-your-perfect-set.BqMxR5eY_2iln5L.webp" alt="Mahjong table close-up" loading="lazy" decoding="async" fetchpriority="auto" width="800" height="534" class="h-[200px] w-full object-cover transition-transform duration-500 group-hover:scale-105"> <div class="absolute inset-0 bg-gradient-to-t from-black/80 to-transparent"></div> <div class="absolute bottom-0 left-0 p-5"> <span class="text-xs font-bold uppercase tracking-wider text-amber-400">Buying Guide</span> <h4 class="mt-1 text-lg font-bold text-white group-hover:text-amber-300">Find Your Perfect Set</h4> <span class="mt-1 block text-xs text-white/70">From $30 to $3,000 &rarr;</span> </div> </a> <!-- Newsletter: compact (removed until ready) --> <!-- Ad Zone: Another sidebar slot (hidden until ads are ready) --> <!-- <div class="flex h-[120px] items-center justify-center rounded-xl border-2 border-dashed border-slate-300 bg-white text-sm text-slate-400">
            Ad Zone: 300x100
          </div> --> <!-- Site stats — factual content counts --> <!-- TODO: data-counter elements should animate up on scroll-into-view using countUp.js or IntersectionObserver + requestAnimationFrame --> <div class="rounded-2xl bg-white p-5 shadow-sm ring-1 ring-slate-200"> <h3 class="mb-4 text-sm font-bold uppercase tracking-wider text-slate-400">What's Inside</h3> <div class="space-y-3"> <div class="flex items-center justify-between"> <span class="text-sm text-slate-500">Yaku reference pages</span> <span class="text-sm font-bold tabular-nums text-jade-600" data-counter data-target="40">40+</span> </div> <div class="flex items-center justify-between"> <span class="text-sm text-slate-500">Tile types covered</span> <span class="text-sm font-bold tabular-nums text-blue-600" data-counter data-target="34">34</span> </div> <div class="flex items-center justify-between"> <span class="text-sm text-slate-500">Mahjong variants</span> <span class="text-sm font-bold tabular-nums text-purple-600" data-counter data-target="3">3</span> </div> <div class="flex items-center justify-between"> <span class="text-sm text-slate-500">Guide chapters</span> <span class="text-sm font-bold tabular-nums text-amber-600" data-counter data-target="16">16</span> </div> </div> </div> </div> </div> </div> </section>  <section class="border-t border-slate-200 bg-gradient-to-br from-jade-50/50 via-white to-amber-50/40 py-20"> <div class="mx-auto max-w-7xl px-6 md:px-12"> <div class="mb-12 text-center"> <div class="mb-3 flex items-center justify-center gap-4"> <div class="h-px w-12 bg-jade-200"></div> <span class="text-xs font-bold uppercase tracking-[0.2em] text-jade-700">Strategy Guides</span> <div class="h-px w-12 bg-jade-200"></div> </div> <h2 class="text-3xl font-bold text-slate-900 md:text-4xl">
Ready to <span class="accent-italic text-jade-600">win</span>, not just play?
</h2> <p class="mx-auto mt-3 max-w-xl text-slate-500">
The rules are free everywhere. These premium, printable guides teach the strategy that actually takes games.
</p> </div> <div class="grid gap-6 md:grid-cols-2"> <div class="flex gap-5 rounded-2xl bg-white p-6 shadow-sm ring-1 ring-slate-200 transition-all hover:-translate-y-0.5 hover:shadow-lg"> <a href="/guides/" class="flex-shrink-0"> <img src="/guides/covers/american.webp" alt="The American Mahjong Winner's Playbook cover" width="116" height="156" loading="lazy" class="w-28 rounded-lg shadow-md ring-1 ring-slate-200"> </a> <div class="flex flex-col"> <span class="text-[10px] font-bold uppercase tracking-wider text-jade-700">American · NMJL</span> <h3 class="mt-1 text-lg font-bold leading-tight text-slate-900">The American Mahjong Winner&#39;s Playbook</h3> <p class="mt-1 text-sm leading-snug text-slate-500">Read the card, win the Charleston, and take more games at your table.</p> <div class="mt-auto flex flex-wrap items-center gap-3 pt-4"> <span class="text-xl font-bold text-slate-900">$29</span> <a href="https://buy.stripe.com/fZubJ0eBR8Y9f0Xgpe8ww00" data-plausible-event="Guide Buy" data-plausible-event-product="american-winners-playbook" data-plausible-event-placement="homepage" class="inline-flex items-center gap-2 rounded-full bg-jade-600 px-5 py-2.5 text-sm font-bold text-white transition-colors hover:bg-jade-700">
Buy now
<svg class="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"> <path stroke-linecap="round" stroke-linejoin="round" d="M13 7l5 5m0 0l-5 5m5-5H6"></path> </svg> </a> <a href="/guides/" class="text-sm font-semibold text-jade-600 hover:text-jade-700">Details</a> </div> </div> </div><div class="flex gap-5 rounded-2xl bg-white p-6 shadow-sm ring-1 ring-slate-200 transition-all hover:-translate-y-0.5 hover:shadow-lg"> <a href="/guides/" class="flex-shrink-0"> <img src="/guides/covers/riichi.webp" alt="Climb the Ranks cover" width="116" height="156" loading="lazy" class="w-28 rounded-lg shadow-md ring-1 ring-slate-200"> </a> <div class="flex flex-col"> <span class="text-[10px] font-bold uppercase tracking-wider text-jade-700">Riichi · Mahjong Soul</span> <h3 class="mt-1 text-lg font-bold leading-tight text-slate-900">Climb the Ranks</h3> <p class="mt-1 text-sm leading-snug text-slate-500">A riichi improvement system: the 5 leaks keeping you stuck, and how to plug them.</p> <div class="mt-auto flex flex-wrap items-center gap-3 pt-4"> <span class="text-xl font-bold text-slate-900">$17</span> <a href="https://buy.stripe.com/28EcN479p5LXf0X5KA8ww01" data-plausible-event="Guide Buy" data-plausible-event-product="climb-the-ranks" data-plausible-event-placement="homepage" class="inline-flex items-center gap-2 rounded-full bg-jade-600 px-5 py-2.5 text-sm font-bold text-white transition-colors hover:bg-jade-700">
Buy now
<svg class="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"> <path stroke-linecap="round" stroke-linejoin="round" d="M13 7l5 5m0 0l-5 5m5-5H6"></path> </svg> </a> <a href="/guides/" class="text-sm font-semibold text-jade-600 hover:text-jade-700">Details</a> </div> </div> </div> </div> <div class="mt-8 text-center"> <a href="/guides/" class="inline-flex items-center gap-2 text-sm font-bold text-jade-600 hover:text-jade-700">
Browse all guides
<svg class="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M13 7l5 5m0 0l-5 5m5-5H6"></path></svg> </a> </div> </div> </section>  <section class="border-t border-slate-200 bg-white py-20"> <div class="mx-auto max-w-7xl px-6 md:px-12"> <div class="mb-12 flex items-center justify-between"> <div> <div class="mb-3 flex items-center gap-4"> <span class="text-xs font-bold uppercase tracking-[0.2em] text-amber-700">Shop</span> <div class="h-px w-16 bg-amber-200"></div> </div> <h2 class="text-3xl font-bold text-slate-900 md:text-4xl">
Find your <span class="accent-italic text-jade-600">perfect set</span> </h2> <p class="mt-3 max-w-lg text-slate-500">
Whether you're buying your first set or upgrading to something <span class="accent-italic">special</span>, we've researched the options so you don't have to.
</p> <p class="mt-2"> <a href="/blog/best-mahjong-set-beginners-under-100/" class="text-sm font-semibold text-jade-600 hover:text-jade-700">See the best mahjong set for beginners &rarr;</a> </p> </div> <a href="/resources/mahjong-sets/" class="hidden items-center gap-2 rounded-full bg-slate-900 px-6 py-3 text-sm font-bold text-white transition-all hover:-translate-y-0.5 hover:shadow-lg sm:inline-flex">
View All Sets
<svg class="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M13 7l5 5m0 0l-5 5m5-5H6"></path></svg> </a> </div> <!-- Product cards grid --> <div class="grid gap-6 sm:grid-cols-2 lg:grid-cols-4"> <!-- Product 1: Best Overall --> <a href="https://www.amazon.com/Yellow-Mountain-Imports-American-Mahjong/dp/B08PHJ37R4?tag=jacgrowthmark-20" rel="nofollow sponsored" target="_blank" data-affiliate data-plausible-event="Affiliate Click" data-plausible-event-asin="B08PHJ37R4" data-plausible-event-product="Yellow Mountain Imports American Mahjong Set - Santorini" data-plausible-event-placement="homepage-card" class="group overflow-hidden rounded-2xl bg-white shadow-sm ring-1 ring-slate-200 transition-all hover:-translate-y-1 hover:shadow-lg hover:ring-slate-300"> <div class="relative h-52 overflow-hidden bg-slate-100"> <img src="/_astro/ymi-santorini.D77mwaoM_Z2n1PU2.webp" srcset="/_astro/ymi-santorini.D77mwaoM_ZJWfig.webp 400w" alt="Yellow Mountain Imports Santorini American Mahjong Set" loading="lazy" sizes="400px" decoding="async" fetchpriority="auto" width="1499" height="1500" class="h-full w-full object-cover transition-transform duration-500 group-hover:scale-105"> <span class="absolute left-3 top-3 rounded-full bg-jade-500 px-3 py-1 text-[10px] font-bold uppercase tracking-wider text-white shadow-sm">Best Overall</span> </div> <div class="p-5"> <h3 class="font-bold text-slate-900 group-hover:text-jade-600">YMI Santorini Set</h3> <p class="mt-1 text-sm text-slate-500">Best overall American mahjong set. 166 premium tiles with soft case.</p> <div class="mt-3 flex items-center justify-between"> <span class="text-lg font-bold text-slate-900">$175.99</span> <div class="flex items-center gap-1 text-amber-500"> <svg class="h-4 w-4" fill="currentColor" viewBox="0 0 20 20"><path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path></svg> <span class="text-xs font-semibold">4.5</span> </div> </div> </div> </a> <!-- Product 2: Best Value --> <a href="https://www.amazon.com/American-Mah-Jongg-All-One/dp/B01N0NJEJU?tag=jacgrowthmark-20" rel="nofollow sponsored" target="_blank" data-affiliate data-plausible-event="Affiliate Click" data-plausible-event-asin="B01N0NJEJU" data-plausible-event-product="Metro Mah Jongg American Mahjong Set - Blue Canvas Bag" data-plausible-event-placement="homepage-card" class="group overflow-hidden rounded-2xl bg-white shadow-sm ring-1 ring-slate-200 transition-all hover:-translate-y-1 hover:shadow-lg hover:ring-slate-300"> <div class="relative h-52 overflow-hidden bg-slate-100"> <img src="/_astro/metro-mahjong.B_NyBo9O_1yzLxY.webp" srcset="/_astro/metro-mahjong.B_NyBo9O_DrW4G.webp 400w" alt="Metro Mah Jongg American Mahjong Set with 166 white tiles and blue canvas bag" loading="lazy" sizes="400px" decoding="async" fetchpriority="auto" width="995" height="935" class="h-full w-full object-cover transition-transform duration-500 group-hover:scale-105"> <span class="absolute left-3 top-3 rounded-full bg-blue-500 px-3 py-1 text-[10px] font-bold uppercase tracking-wider text-white shadow-sm">Best Value</span> </div> <div class="p-5"> <h3 class="font-bold text-slate-900 group-hover:text-jade-600">Metro Mah Jongg Set</h3> <p class="mt-1 text-sm text-slate-500">Our highest-rated American set. 4.8 stars, great value.</p> <div class="mt-3 flex items-center justify-between"> <span class="text-lg font-bold text-slate-900">$149.95</span> <div class="flex items-center gap-1 text-amber-500"> <svg class="h-4 w-4" fill="currentColor" viewBox="0 0 20 20"><path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path></svg> <span class="text-xs font-semibold">4.8</span> </div> </div> </div> </a> <!-- Product 3: Premium Design --> <a href="https://www.amazon.com/NEW-American-All-One-Complete/dp/B00H2QX94E?tag=jacgrowthmark-20" rel="nofollow sponsored" target="_blank" data-affiliate data-plausible-event="Affiliate Click" data-plausible-event-asin="B00H2QX94E" data-plausible-event-product="Linda Li American Mahjong Set - Blue Paisley" data-plausible-event-placement="homepage-card" class="group overflow-hidden rounded-2xl bg-white shadow-sm ring-1 ring-slate-200 transition-all hover:-translate-y-1 hover:shadow-lg hover:ring-slate-300"> <div class="relative h-52 overflow-hidden bg-slate-100"> <img src="/_astro/linda-li-paisley.BkDJbSEK_Z227BWp.webp" srcset="/_astro/linda-li-paisley.BkDJbSEK_ZmMUjW.webp 400w" alt="Linda Li Blue Paisley American Mahjong Set" loading="lazy" sizes="400px" decoding="async" fetchpriority="auto" width="997" height="1002" class="h-full w-full object-cover transition-transform duration-500 group-hover:scale-105"> <span class="absolute left-3 top-3 rounded-full bg-purple-500 px-3 py-1 text-[10px] font-bold uppercase tracking-wider text-white shadow-sm">Best Design</span> </div> <div class="p-5"> <h3 class="font-bold text-slate-900 group-hover:text-jade-600">Linda Li Blue Paisley</h3> <p class="mt-1 text-sm text-slate-500">Premium design with hand-painted tiles and elegant case.</p> <div class="mt-3 flex items-center justify-between"> <span class="text-lg font-bold text-slate-900">$199.99</span> <div class="flex items-center gap-1 text-amber-500"> <svg class="h-4 w-4" fill="currentColor" viewBox="0 0 20 20"><path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path></svg> <span class="text-xs font-semibold">4.6</span> </div> </div> </div> </a> <!-- Product 4: Automatic Table --> <a href="https://www.amazon.com/Folding-Automatic-American-Numbered-Foldable/dp/B09XGM984K?tag=jacgrowthmark-20" rel="nofollow sponsored" target="_blank" data-affiliate data-plausible-event="Affiliate Click" data-plausible-event-asin="B09XGM984K" data-plausible-event-product="USA MJ Table Automatic Mahjong Table - 36mm American Style" data-plausible-event-placement="homepage-card" class="group overflow-hidden rounded-2xl bg-white shadow-sm ring-1 ring-slate-200 transition-all hover:-translate-y-1 hover:shadow-lg hover:ring-slate-300"> <div class="relative h-52 overflow-hidden bg-slate-100"> <img src="/_astro/automatic-table.wgOk6r2n_Z16hcjI.webp" srcset="/_astro/automatic-table.wgOk6r2n_OzyGb.webp 400w" alt="USA MJ Table Automatic Mahjong Table with American Tiles" loading="lazy" sizes="400px" decoding="async" fetchpriority="auto" width="1436" height="1023" class="h-full w-full object-cover transition-transform duration-500 group-hover:scale-105"> <span class="absolute left-3 top-3 rounded-full bg-amber-500 px-3 py-1 text-[10px] font-bold uppercase tracking-wider text-white shadow-sm">Premium</span> </div> <div class="p-5"> <h3 class="font-bold text-slate-900 group-hover:text-jade-600">Automatic Table</h3> <p class="mt-1 text-sm text-slate-500">Self-shuffling luxury. Never sort tiles by hand again.</p> <div class="mt-3 flex items-center justify-between"> <span class="text-lg font-bold text-slate-900">$1,159.99</span> <div class="flex items-center gap-1 text-amber-500"> <svg class="h-4 w-4" fill="currentColor" viewBox="0 0 20 20"><path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path></svg> <span class="text-xs font-semibold">4.5</span> </div> </div> </div> </a> </div> <!-- Comparison CTA banner --> <div class="mt-10 flex flex-col items-center justify-between gap-6 rounded-2xl bg-gradient-to-r from-amber-50 to-jade-50 p-8 ring-1 ring-amber-200/50 sm:flex-row"> <div> <h3 class="text-lg font-bold text-slate-900">Not sure which set is right for you?</h3> <p class="mt-1 text-sm text-slate-500">Take our 2-minute quiz or read the full comparison guide — we'll help you find the perfect match for your budget and play style.</p> </div> <div class="flex flex-shrink-0 gap-3"> <a href="/resources/mahjong-sets/" class="inline-flex items-center gap-2 rounded-full bg-slate-900 px-6 py-3 text-sm font-bold text-white transition-all hover:-translate-y-0.5 hover:shadow-lg">
Full Buying Guide
<svg class="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M13 7l5 5m0 0l-5 5m5-5H6"></path></svg> </a> </div> </div> <!-- Mobile: View all link --> <div class="mt-6 text-center sm:hidden"> <a href="/resources/mahjong-sets/" class="inline-flex items-center gap-2 text-sm font-bold text-jade-600 hover:text-jade-700">
View all mahjong sets &rarr;
</a> </div> </div> </section>  </main> <footer class="border-t border-slate-200 bg-white"> <div class="mx-auto max-w-(--width-max) px-6 py-16"> <div class="grid grid-cols-2 gap-8 md:grid-cols-3"> <!-- Learn --> <div> <h3 class="mb-4 text-sm font-semibold uppercase tracking-wider text-slate-900">
Learn
</h3> <ul class="space-y-3"> <li> <a href="/learn/riichi/" class="text-sm text-slate-500 transition-colors hover:text-jade-600"> Riichi Mahjong </a> </li><li> <a href="/learn/riichi/beginners-guide/" class="text-sm text-slate-500 transition-colors hover:text-jade-600"> Beginner&#39;s Guide </a> </li><li> <a href="/learn/riichi/yaku/" class="text-sm text-slate-500 transition-colors hover:text-jade-600"> Yaku Reference </a> </li><li> <a href="/learn/riichi/tiles/" class="text-sm text-slate-500 transition-colors hover:text-jade-600"> Tile Reference </a> </li><li> <a href="/learn/riichi/glossary/" class="text-sm text-slate-500 transition-colors hover:text-jade-600"> Glossary </a> </li> </ul> </div> <!-- Tools (hidden until tools are built) --> <!-- <div>
        <h3 class="mb-4 text-sm font-semibold uppercase tracking-wider text-slate-900">
          Tools
        </h3>
        <ul class="space-y-3">
          {footerNav.tools.map((item) => (
            <li>
              <a
                href={item.href}
                class="text-sm text-slate-500 transition-colors hover:text-jade-600"
              >
                {item.label}
              </a>
            </li>
          ))}
        </ul>
      </div> --> <!-- Resources --> <div> <h3 class="mb-4 text-sm font-semibold uppercase tracking-wider text-slate-900">
Resources
</h3> <ul class="space-y-3"> <li> <a href="/resources/mahjong-sets/" class="text-sm text-slate-500 transition-colors hover:text-jade-600"> Mahjong Sets </a> </li><li> <a href="/resources/where-to-play/" class="text-sm text-slate-500 transition-colors hover:text-jade-600"> Where to Play </a> </li><li> <a href="/resources/books/" class="text-sm text-slate-500 transition-colors hover:text-jade-600"> Books </a> </li><li> <a href="/blog/" class="text-sm text-slate-500 transition-colors hover:text-jade-600"> Blog </a> </li> </ul> </div> <!-- Site --> <div> <h3 class="mb-4 text-sm font-semibold uppercase tracking-wider text-slate-900">
Site
</h3> <ul class="space-y-3"> <li> <a href="/blog/" class="text-sm text-slate-500 transition-colors hover:text-jade-600"> Blog </a> </li><li> <a href="/privacy/" class="text-sm text-slate-500 transition-colors hover:text-jade-600"> Privacy </a> </li> </ul> </div> </div> <!-- Bottom bar --> <div class="mt-16 flex flex-col items-center justify-between gap-4 border-t border-slate-200 pt-8 md:flex-row"> <div class="flex items-center gap-2"> <svg class="h-6 w-6" viewBox="0 0 32 32" fill="none"> <defs> <linearGradient id="footer-tile-face" x1="0" y1="0" x2="0" y2="1"> <stop offset="0%" stop-color="#FFFFFF"></stop> <stop offset="100%" stop-color="#F1F5F9"></stop> </linearGradient> <linearGradient id="footer-jade" x1="0" y1="0" x2="1" y2="1"> <stop offset="0%" stop-color="#16B364"></stop> <stop offset="100%" stop-color="#099250"></stop> </linearGradient> </defs> <rect x="4" y="5" width="24" height="26" rx="3" fill="#0C1F2C" opacity="0.15"></rect> <rect x="3" y="4" width="24" height="26" rx="3" fill="#CBD5E1"></rect> <rect x="3" y="3" width="24" height="25" rx="3" fill="url(#footer-tile-face)" stroke="#CBD5E1" stroke-width="0.5"></rect> <circle cx="15" cy="15.5" r="8" fill="url(#footer-jade)"></circle> <rect x="11" y="10" width="2" height="11" rx="1" fill="white" opacity="0.9"></rect> <rect x="14" y="10" width="2" height="11" rx="1" fill="white" opacity="0.9"></rect> <rect x="17" y="10" width="2" height="11" rx="1" fill="white" opacity="0.9"></rect> <rect x="10" y="14.5" width="10" height="2" rx="1" fill="white" opacity="0.9"></rect> </svg> <span class="text-sm font-semibold text-slate-700">Mahjong Master</span> </div> <p class="text-sm text-slate-400">
&copy; 2026 Mahjong Master. All rights reserved.
</p> </div> </div> </footer> </body></html>