{"title":"Mahjong Wearables","description":null,"products":[{"product_id":"mahjong-heartbeat-sweatshirt-mahjong-lover-crewneck","title":"Mahjong Heartbeat Sweatshirt – Mahjong Lover Crewneck","description":"\u003ctable id=\"size-guide\" style=\"min-width:360px;\"\u003e\n            \u003cthead\u003e\n                \u003ctr\u003e\n                    \u003cth style=\"padding:10px;\"\u003e\u003c\/th\u003e\n                    \u003cth style=\"color:#000000;font-weight:500;text-align:left;font-size:15px;padding:10px;\"\u003eS\u003c\/th\u003e\n\u003cth style=\"color:#000000;font-weight:500;text-align:left;font-size:15px;padding:10px;\"\u003eM\u003c\/th\u003e\n\u003cth style=\"color:#000000;font-weight:500;text-align:left;font-size:15px;padding:10px;\"\u003eL\u003c\/th\u003e\n\u003cth style=\"color:#000000;font-weight:500;text-align:left;font-size:15px;padding:10px;\"\u003eXL\u003c\/th\u003e\n\u003cth style=\"color:#000000;font-weight:500;text-align:left;font-size:15px;padding:10px;\"\u003e2XL\u003c\/th\u003e\n\u003cth style=\"color:#000000;font-weight:500;text-align:left;font-size:15px;padding:10px;\"\u003e3XL\u003c\/th\u003e\n                \u003c\/tr\u003e\n            \u003c\/thead\u003e\n            \u003ctbody\u003e\n                \n                    \u003ctr\u003e\n                        \u003ctd style=\"padding:10px;color:#525252;font-size:15px;border-top:1px solid #ededed;word-break: break-word;\"\u003e\n                            Width, in\n                        \u003c\/td\u003e\n                        \n                        \u003ctd style=\"padding:10px;color:#525252;font-size:15px;border-top:1px solid #ededed;word-break: break-word;\"\u003e\n                            20.00 \n                        \u003c\/td\u003e\n                                        \n                        \u003ctd style=\"padding:10px;color:#525252;font-size:15px;border-top:1px solid #ededed;word-break: break-word;\"\u003e\n                            22.01 \n                        \u003c\/td\u003e\n                                        \n                        \u003ctd style=\"padding:10px;color:#525252;font-size:15px;border-top:1px solid #ededed;word-break: break-word;\"\u003e\n                            24.00 \n                        \u003c\/td\u003e\n                                        \n                        \u003ctd style=\"padding:10px;color:#525252;font-size:15px;border-top:1px solid #ededed;word-break: break-word;\"\u003e\n                            26.00 \n                        \u003c\/td\u003e\n                                        \n                        \u003ctd style=\"padding:10px;color:#525252;font-size:15px;border-top:1px solid #ededed;word-break: break-word;\"\u003e\n                            28.00 \n                        \u003c\/td\u003e\n                                        \n                        \u003ctd style=\"padding:10px;color:#525252;font-size:15px;border-top:1px solid #ededed;word-break: break-word;\"\u003e\n                            30.00 \n                        \u003c\/td\u003e\n                                        \n                    \u003c\/tr\u003e\n               \n                    \u003ctr\u003e\n                        \u003ctd style=\"padding:10px;color:#525252;font-size:15px;border-top:1px solid #ededed;word-break: break-word;\"\u003e\n                            Length, in\n                        \u003c\/td\u003e\n                        \n                        \u003ctd style=\"padding:10px;color:#525252;font-size:15px;border-top:1px solid #ededed;word-break: break-word;\"\u003e\n                            27.00 \n                        \u003c\/td\u003e\n                                        \n                        \u003ctd style=\"padding:10px;color:#525252;font-size:15px;border-top:1px solid #ededed;word-break: break-word;\"\u003e\n                            28.00 \n                        \u003c\/td\u003e\n                                        \n                        \u003ctd style=\"padding:10px;color:#525252;font-size:15px;border-top:1px solid #ededed;word-break: break-word;\"\u003e\n                            29.00 \n                        \u003c\/td\u003e\n                                        \n                        \u003ctd style=\"padding:10px;color:#525252;font-size:15px;border-top:1px solid #ededed;word-break: break-word;\"\u003e\n                            30.00 \n                        \u003c\/td\u003e\n                                        \n                        \u003ctd style=\"padding:10px;color:#525252;font-size:15px;border-top:1px solid #ededed;word-break: break-word;\"\u003e\n                            31.00 \n                        \u003c\/td\u003e\n                                        \n                        \u003ctd style=\"padding:10px;color:#525252;font-size:15px;border-top:1px solid #ededed;word-break: break-word;\"\u003e\n                            32.00 \n                        \u003c\/td\u003e\n                                        \n                    \u003c\/tr\u003e\n               \n                    \u003ctr\u003e\n                        \u003ctd style=\"padding:10px;color:#525252;font-size:15px;border-top:1px solid #ededed;word-break: break-word;\"\u003e\n                            Sleeve length (from center back), in\n                        \u003c\/td\u003e\n                        \n                        \u003ctd style=\"padding:10px;color:#525252;font-size:15px;border-top:1px solid #ededed;word-break: break-word;\"\u003e\n                            33.50 \n                        \u003c\/td\u003e\n                                        \n                        \u003ctd style=\"padding:10px;color:#525252;font-size:15px;border-top:1px solid #ededed;word-break: break-word;\"\u003e\n                            34.50 \n                        \u003c\/td\u003e\n                                        \n                        \u003ctd style=\"padding:10px;color:#525252;font-size:15px;border-top:1px solid #ededed;word-break: break-word;\"\u003e\n                            35.50 \n                        \u003c\/td\u003e\n                                        \n                        \u003ctd style=\"padding:10px;color:#525252;font-size:15px;border-top:1px solid #ededed;word-break: break-word;\"\u003e\n                            36.50 \n                        \u003c\/td\u003e\n                                        \n                        \u003ctd style=\"padding:10px;color:#525252;font-size:15px;border-top:1px solid #ededed;word-break: break-word;\"\u003e\n                            37.50 \n                        \u003c\/td\u003e\n                                        \n                        \u003ctd style=\"padding:10px;color:#525252;font-size:15px;border-top:1px solid #ededed;word-break: break-word;\"\u003e\n                            38.50 \n                        \u003c\/td\u003e\n                                        \n                    \u003c\/tr\u003e\n               \n                    \u003ctr\u003e\n                        \u003ctd style=\"padding:10px;color:#525252;font-size:15px;border-top:1px solid #ededed;word-break: break-word;\"\u003e\n                            Size tolerance, in\n                        \u003c\/td\u003e\n                        \n                        \u003ctd style=\"padding:10px;color:#525252;font-size:15px;border-top:1px solid #ededed;word-break: break-word;\"\u003e\n                            1.50 \n                        \u003c\/td\u003e\n                                        \n                        \u003ctd style=\"padding:10px;color:#525252;font-size:15px;border-top:1px solid #ededed;word-break: break-word;\"\u003e\n                            1.50 \n                        \u003c\/td\u003e\n                                        \n                        \u003ctd style=\"padding:10px;color:#525252;font-size:15px;border-top:1px solid #ededed;word-break: break-word;\"\u003e\n                            1.50 \n                        \u003c\/td\u003e\n                                        \n                        \u003ctd style=\"padding:10px;color:#525252;font-size:15px;border-top:1px solid #ededed;word-break: break-word;\"\u003e\n                            1.50 \n                        \u003c\/td\u003e\n                                        \n                        \u003ctd style=\"padding:10px;color:#525252;font-size:15px;border-top:1px solid #ededed;word-break: break-word;\"\u003e\n                            1.50 \n                        \u003c\/td\u003e\n                                        \n                        \u003ctd style=\"padding:10px;color:#525252;font-size:15px;border-top:1px solid #ededed;word-break: break-word;\"\u003e\n                            1.50 \n                        \u003c\/td\u003e\n                                        \n                    \u003c\/tr\u003e\n               \n            \u003c\/tbody\u003e\n        \u003c\/table\u003e\n        A soft, medium-weight crewneck that feels like a quiet Sunday morning at the table. This sweatshirt pairs a clean, classic silhouette with a subtle, heartbeat-style \"Mahjong\" script across the chest — a gentle shout-out to nights of tiles, laughter, and friendly competition. The fabric has reassuring heft without being stiff, and the ribbed collar and cuffs hold their shape wash after wash. Wear it to game nights, casual meet-ups, or while teaching someone a tricky hand; it settles in comfortably and looks effortlessly intentional.\u003cbr\u003e\u003cbr\u003eProduct features\u003cbr\u003e- Embroidered options on left, center, large chest or both wrists\u003cbr\u003e- 50\/50 cotton-poly medium-heavy 8.0 oz (271 g\/m²) fabric for warmth and durability\u003cbr\u003e- Tubular knit (no side seams) with ribbed knit collar and double-needle stitching\u003cbr\u003e- DTF inner neck labels and wrist prints; DTG used for main prints\u003cbr\u003e- OEKO-TEX® certified dyes; ethically grown US cotton (US Cotton Trust Protocol)\u003cbr\u003e\u003cbr\u003eCare instructions\u003cbr\u003e- Machine wash: cold (max 30C or 90F)\u003cbr\u003e- Non-chlorine: bleach as needed\u003cbr\u003e- Tumble dry: low heat\u003cbr\u003e- Do not dryclean\u003cbr\u003e- \u003cbr\u003e\u003cbr\u003e\u003cbr\u003e\u003cp\u003e\u003cstrong\u003eProduct information\u003c\/strong\u003e: Gildan 18000, 2 year warranty in EU and Northern Ireland as per Directive 1999\/44\/EC\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eWarnings, Hazard\u003c\/strong\u003e: Made in Nicaragua, For adults\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eCare instructions\u003c\/strong\u003e: Machine wash: cold (max 30C or 90F), Non-chlorine: bleach as needed, Tumble dry: low heat, , Do not dryclean\u003c\/p\u003e","brand":"Printify","offers":[{"title":"S \/ Light Pink","offer_id":45731636543695,"sku":"18638040415844850702","price":45.99,"currency_code":"USD","in_stock":true},{"title":"S \/ Red","offer_id":45731636576463,"sku":"23501124091937802178","price":50.99,"currency_code":"USD","in_stock":true},{"title":"S \/ Sand","offer_id":45731636609231,"sku":"19643430658087000174","price":46.99,"currency_code":"USD","in_stock":true},{"title":"S \/ White","offer_id":45731635658959,"sku":"16572568279465594522","price":53.99,"currency_code":"USD","in_stock":true},{"title":"M \/ Light Pink","offer_id":45731636641999,"sku":"28522790373311042471","price":46.99,"currency_code":"USD","in_stock":true},{"title":"M \/ Sand","offer_id":45731636674767,"sku":"14737095619399030319","price":47.99,"currency_code":"USD","in_stock":true},{"title":"M \/ Sport Grey","offer_id":45731636707535,"sku":"11862558429339859609","price":47.99,"currency_code":"USD","in_stock":true},{"title":"M \/ White","offer_id":45731635691727,"sku":"34990026429589242472","price":53.99,"currency_code":"USD","in_stock":true},{"title":"L \/ Light Pink","offer_id":45731636740303,"sku":"10634596813745683070","price":46.99,"currency_code":"USD","in_stock":true},{"title":"L \/ Sand","offer_id":45731636773071,"sku":"11426780408406144315","price":50.99,"currency_code":"USD","in_stock":true},{"title":"L \/ White","offer_id":45731635724495,"sku":"26592482202407867416","price":54.99,"currency_code":"USD","in_stock":true},{"title":"XL \/ Light Pink","offer_id":45731636805839,"sku":"23052296649636862584","price":47.99,"currency_code":"USD","in_stock":true},{"title":"XL \/ Red","offer_id":45731636838607,"sku":"14992207611846398939","price":49.99,"currency_code":"USD","in_stock":true},{"title":"XL \/ Sand","offer_id":45731636871375,"sku":"11518351093461872226","price":46.99,"currency_code":"USD","in_stock":true},{"title":"XL \/ Sport Grey","offer_id":45731636904143,"sku":"84383134516547455829","price":46.99,"currency_code":"USD","in_stock":true},{"title":"XL \/ White","offer_id":45731635757263,"sku":"16545876520059077651","price":47.99,"currency_code":"USD","in_stock":true},{"title":"2XL \/ Red","offer_id":45731636936911,"sku":"13548553757706793822","price":46.99,"currency_code":"USD","in_stock":true},{"title":"2XL \/ Sand","offer_id":45731636969679,"sku":"11168145752049655918","price":48.99,"currency_code":"USD","in_stock":true},{"title":"2XL \/ Sport Grey","offer_id":45731637002447,"sku":"32569866210510734200","price":48.99,"currency_code":"USD","in_stock":true},{"title":"2XL \/ White","offer_id":45731635790031,"sku":"14655119108151969154","price":51.99,"currency_code":"USD","in_stock":true},{"title":"3XL \/ Sand","offer_id":45731637035215,"sku":"13117537560954301589","price":45.99,"currency_code":"USD","in_stock":true},{"title":"3XL \/ White","offer_id":45731635822799,"sku":"32776921754079850377","price":46.99,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0656\/9970\/9135\/files\/10209733522077638256_2048.jpg?v=1786832105"},{"product_id":"mahjong-hoodie-i-came-i-saw-i-mahjonged-casual-game-night-pullover","title":"Mahjong Hoodie — \"I Came. I Saw. I Mahjonged.\" Casual Game Night Pullover","description":"\u003ctable id=\"size-guide\" style=\"min-width:360px;\"\u003e\n            \u003cthead\u003e\n                \u003ctr\u003e\n                    \u003cth style=\"padding:10px;\"\u003e\u003c\/th\u003e\n                    \u003cth style=\"color:#000000;font-weight:500;text-align:left;font-size:15px;padding:10px;\"\u003eS\u003c\/th\u003e\n\u003cth style=\"color:#000000;font-weight:500;text-align:left;font-size:15px;padding:10px;\"\u003eM\u003c\/th\u003e\n\u003cth style=\"color:#000000;font-weight:500;text-align:left;font-size:15px;padding:10px;\"\u003eL\u003c\/th\u003e\n\u003cth style=\"color:#000000;font-weight:500;text-align:left;font-size:15px;padding:10px;\"\u003eXL\u003c\/th\u003e\n\u003cth style=\"color:#000000;font-weight:500;text-align:left;font-size:15px;padding:10px;\"\u003e2XL\u003c\/th\u003e\n\u003cth style=\"color:#000000;font-weight:500;text-align:left;font-size:15px;padding:10px;\"\u003e3XL\u003c\/th\u003e\n                \u003c\/tr\u003e\n            \u003c\/thead\u003e\n            \u003ctbody\u003e\n                \n                    \u003ctr\u003e\n                        \u003ctd style=\"padding:10px;color:#525252;font-size:15px;border-top:1px solid #ededed;word-break: break-word;\"\u003e\n                            Width, in\n                        \u003c\/td\u003e\n                        \n                        \u003ctd style=\"padding:10px;color:#525252;font-size:15px;border-top:1px solid #ededed;word-break: break-word;\"\u003e\n                            21.00 \n                        \u003c\/td\u003e\n                                        \n                        \u003ctd style=\"padding:10px;color:#525252;font-size:15px;border-top:1px solid #ededed;word-break: break-word;\"\u003e\n                            23.00 \n                        \u003c\/td\u003e\n                                        \n                        \u003ctd style=\"padding:10px;color:#525252;font-size:15px;border-top:1px solid #ededed;word-break: break-word;\"\u003e\n                            25.00 \n                        \u003c\/td\u003e\n                                        \n                        \u003ctd style=\"padding:10px;color:#525252;font-size:15px;border-top:1px solid #ededed;word-break: break-word;\"\u003e\n                            26.50 \n                        \u003c\/td\u003e\n                                        \n                        \u003ctd style=\"padding:10px;color:#525252;font-size:15px;border-top:1px solid #ededed;word-break: break-word;\"\u003e\n                            28.00 \n                        \u003c\/td\u003e\n                                        \n                        \u003ctd style=\"padding:10px;color:#525252;font-size:15px;border-top:1px solid #ededed;word-break: break-word;\"\u003e\n                            29.50 \n                        \u003c\/td\u003e\n                                        \n                    \u003c\/tr\u003e\n               \n                    \u003ctr\u003e\n                        \u003ctd style=\"padding:10px;color:#525252;font-size:15px;border-top:1px solid #ededed;word-break: break-word;\"\u003e\n                            Length, in\n                        \u003c\/td\u003e\n                        \n                        \u003ctd style=\"padding:10px;color:#525252;font-size:15px;border-top:1px solid #ededed;word-break: break-word;\"\u003e\n                            27.50 \n                        \u003c\/td\u003e\n                                        \n                        \u003ctd style=\"padding:10px;color:#525252;font-size:15px;border-top:1px solid #ededed;word-break: break-word;\"\u003e\n                            28.50 \n                        \u003c\/td\u003e\n                                        \n                        \u003ctd style=\"padding:10px;color:#525252;font-size:15px;border-top:1px solid #ededed;word-break: break-word;\"\u003e\n                            29.50 \n                        \u003c\/td\u003e\n                                        \n                        \u003ctd style=\"padding:10px;color:#525252;font-size:15px;border-top:1px solid #ededed;word-break: break-word;\"\u003e\n                            30.50 \n                        \u003c\/td\u003e\n                                        \n                        \u003ctd style=\"padding:10px;color:#525252;font-size:15px;border-top:1px solid #ededed;word-break: break-word;\"\u003e\n                            31.50 \n                        \u003c\/td\u003e\n                                        \n                        \u003ctd style=\"padding:10px;color:#525252;font-size:15px;border-top:1px solid #ededed;word-break: break-word;\"\u003e\n                            32.50 \n                        \u003c\/td\u003e\n                                        \n                    \u003c\/tr\u003e\n               \n                    \u003ctr\u003e\n                        \u003ctd style=\"padding:10px;color:#525252;font-size:15px;border-top:1px solid #ededed;word-break: break-word;\"\u003e\n                            Sleeve length from center back, in\n                        \u003c\/td\u003e\n                        \n                        \u003ctd style=\"padding:10px;color:#525252;font-size:15px;border-top:1px solid #ededed;word-break: break-word;\"\u003e\n                            31.50 \n                        \u003c\/td\u003e\n                                        \n                        \u003ctd style=\"padding:10px;color:#525252;font-size:15px;border-top:1px solid #ededed;word-break: break-word;\"\u003e\n                            33.50 \n                        \u003c\/td\u003e\n                                        \n                        \u003ctd style=\"padding:10px;color:#525252;font-size:15px;border-top:1px solid #ededed;word-break: break-word;\"\u003e\n                            35.25 \n                        \u003c\/td\u003e\n                                        \n                        \u003ctd style=\"padding:10px;color:#525252;font-size:15px;border-top:1px solid #ededed;word-break: break-word;\"\u003e\n                            36.75 \n                        \u003c\/td\u003e\n                                        \n                        \u003ctd style=\"padding:10px;color:#525252;font-size:15px;border-top:1px solid #ededed;word-break: break-word;\"\u003e\n                            38.25 \n                        \u003c\/td\u003e\n                                        \n                        \u003ctd style=\"padding:10px;color:#525252;font-size:15px;border-top:1px solid #ededed;word-break: break-word;\"\u003e\n                            39.25 \n                        \u003c\/td\u003e\n                                        \n                    \u003c\/tr\u003e\n               \n            \u003c\/tbody\u003e\n        \u003c\/table\u003e\n        A cozy, garment-dyed hoodie that reads like a little declaration of personality. The heavyweight ringspun cotton blend feels substantial and warm, with a soft, brushed surface that settles in like an old friend. The playful front artwork — cheeky text with bright accents and quirky character illustrations — brings a dash of humor to quiet days out and relaxed nights in. Designed with a roomy, relaxed cut and a lined hood with matching drawcord, it layers easily over tees or knit tops. Thoughtful details like ribbed cuffs and hem, neck twill tape, and a half-moon back patch keep it durable and comfortable season after season. Wear it when you want warmth, a laugh, and an outfit that doesn’t take itself too seriously.\u003cbr\u003e\u003cbr\u003eProduct features\u003cbr\u003e- 80% ringspun cotton, 20% polyester heavyweight (9.5 oz \/yd²) for warmth and a soft hand\u003cbr\u003e- Relaxed fit with ribbed 1x1 cuffs and bottom hem for stretch and recovery\u003cbr\u003e- Hood lined with jersey and self-colored flatcord drawstrings\u003cbr\u003e- Necktape and half-moon back patch for comfort and shape retention\u003cbr\u003e- Sewn-in twill label and durable construction, built for frequent wear\u003cbr\u003e\u003cbr\u003eCare instructions\u003cbr\u003e- Do not dryclean\u003cbr\u003e- Machine wash: cold (max 30C or 90F)\u003cbr\u003e- Do not bleach\u003cbr\u003e- Tumble dry: low heat\u003cbr\u003e- Iron, steam or dry: low heat\u003cbr\u003e","brand":"Printify","offers":[{"title":"Seafoam \/ S","offer_id":45731636183247,"sku":"20113347947549683377","price":64.99,"currency_code":"USD","in_stock":true},{"title":"White \/ S","offer_id":45731636216015,"sku":"25211394545254558980","price":64.99,"currency_code":"USD","in_stock":true},{"title":"Seafoam \/ M","offer_id":45731636248783,"sku":"32033219177941358871","price":64.99,"currency_code":"USD","in_stock":true},{"title":"White \/ M","offer_id":45731636281551,"sku":"20512140928610702042","price":64.99,"currency_code":"USD","in_stock":true},{"title":"White \/ L","offer_id":45731636314319,"sku":"62026567592585045844","price":64.99,"currency_code":"USD","in_stock":true},{"title":"Seafoam \/ XL","offer_id":45731636347087,"sku":"24239506509603019554","price":64.99,"currency_code":"USD","in_stock":true},{"title":"White \/ XL","offer_id":45731636379855,"sku":"27635102891381783077","price":64.99,"currency_code":"USD","in_stock":true},{"title":"Seafoam \/ 2XL","offer_id":45731636412623,"sku":"11166746170092907950","price":64.99,"currency_code":"USD","in_stock":true},{"title":"White \/ 2XL","offer_id":45731636445391,"sku":"14580788501811919679","price":64.99,"currency_code":"USD","in_stock":true},{"title":"Seafoam \/ 3XL","offer_id":45731636478159,"sku":"19287515838932404188","price":64.99,"currency_code":"USD","in_stock":true},{"title":"White \/ 3XL","offer_id":45731636510927,"sku":"16595874427470803776","price":64.99,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0656\/9970\/9135\/files\/3909615151904333620_2048.jpg?v=1786831886"},{"product_id":"mahjong-heartbeat-baseball-cap-mahjong-player-gift","title":"Mahjong Heartbeat Baseball Cap — Mahjong Player Gift","description":"Soft, low-profile cotton cap embroidered with a minimalist heartbeat-style \"Mahjong\" script. It sits low on the head for a relaxed, lived-in look and feels breathable thanks to 100% cotton twill. Reinforced interior seams and a Velcro® adjustment keep it durable and easy to size. Wear it to club nights, casual meetups, tile-laden afternoons, or while cheering on friends at a weekend game — it reads like a quiet nod to the game and the community around it. The neutral color and subtle black embroidery make the cap blend into everyday wardrobes while still signaling a shared passion for mahjong.\u003cbr\u003e\u003cbr\u003eProduct features\u003cbr\u003e- 100% cotton twill for smooth, breathable comfort\u003cbr\u003e- Unstructured low-fitting design for a relaxed silhouette\u003cbr\u003e- Velcro® adjustable closure for easy sizing\u003cbr\u003e- Reinforced interior seams with cotton ribbon for durability\u003cbr\u003e- Smooth surface optimized for clear embroidery or printing\u003cbr\u003e\u003cbr\u003eCare instructions\u003cbr\u003e- Use warm water and dish soap and clean spots off your hat. It's not necessary to soak the whole item. For hard to clean spots use a soft bristled brush.\u003cbr\u003e","brand":"Printify","offers":[{"title":"One size \/ Khaki","offer_id":45731637985487,"sku":"30260464975263166191","price":29.99,"currency_code":"USD","in_stock":true},{"title":"One size \/ White","offer_id":45731638018255,"sku":"12404806993981175397","price":29.99,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0656\/9970\/9135\/files\/5765244795695753204_2048.jpg?v=1786832411"},{"product_id":"mahjong-heartbeat-tote-organic-canvas-market-bag-for-mahjong-lovers","title":"Mahjong Heartbeat Tote — Organic Canvas Market Bag for Mahjong Lovers","description":"Carry a quiet declaration of what moves you. This organic canvas tote pairs a soft, natural weave with a simple heartbeat-line script that reads “Mahjong” — subtle, personal, and a little playful. The medium-heavy fabric holds shape and weight, so it moves from market runs to meetups without sagging. Its long cotton web handles sit comfortably on shoulder or arm, and the roomy open compartment swallows books, tiles, snacks, or a small project pouch. Small flecks in the natural canvas give it an artisanal, lived-in look; the tear-away label keeps things clean against your skin. For players who treat the game like ritual, this tote feels like part of the ritual too.\u003cbr\u003e\u003cbr\u003eProduct features\u003cbr\u003e- 100% certified organic cotton (medium-heavy 9 oz\/yd²)\u003cbr\u003e- Reinforced cotton web handles for comfortable carrying\u003cbr\u003e- Spacious single open compartment for everyday essentials\u003cbr\u003e- Natural unprocessed fabric with subtle black flecks\u003cbr\u003e- Tear-away label and Econscious tag at handle base\u003cbr\u003e\u003cbr\u003eCare instructions\u003cbr\u003e- Remove all items from the bag before cleaning. Suggested to pretreat visible stains with stain remover. Mix warm water with laundry detergent and clean the bag with terry washcloth or a soft bristle brush. Let the bag air dry.\u003cbr\u003e","brand":"Printify","offers":[{"title":"One size \/ Natural","offer_id":45731638313167,"sku":"13554590944119302334","price":31.99,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0656\/9970\/9135\/files\/17511486636861000815_2048.jpg?v=1786832784"},{"product_id":"mahjong-tote-bag-mahjong-the-only-time-its-acceptable-to-stare-at-tiles-for-hours-and-no-one-judges-organic-canvas-shopper","title":"Mahjong Tote Bag — \"Mahjong: The Only Time It's Acceptable to Stare at Tiles for Hours...and No One Judges\" Organic Canvas Shopper","description":"A cozy, sustainably made canvas tote that carries your tiles, snacks, and scorepad to every mahjong night. The natural organic cotton shows subtle flecks for a lived-in look, while the playful design—hand-lettered “Mahjong” with illustrated tiles and a cheeky line beneath—adds personality without shouting. Long reinforced handles sit comfortably on the shoulder, and the roomy interior swallows extra sets, a water bottle, and whatever lucky charms you bring. Lightweight but durable, this tote ages beautifully and feels like it belongs at your next game night or casual outing.\u003cbr\u003e\u003cbr\u003eProduct features\u003cbr\u003e- 100% certified organic ring-spun cotton (medium-heavy 9 oz\/yd²)\u003cbr\u003e- Long cotton web handles with reinforced stitching for comfortable carrying\u003cbr\u003e- Spacious single open compartment fits game sets, books, and daily essentials\u003cbr\u003e- Natural unprocessed fabric with subtle black flecks for an authentic, earthy look\u003cbr\u003e- Tear-away label and Econscious tag; ethically sourced blank product\u003cbr\u003e\u003cbr\u003eCare instructions\u003cbr\u003e- Remove all items from the bag before cleaning. Suggested to pretreat visible stains with stain remover. Mix warm water with laundry detergent and clean the bag with terry washcloth or a soft bristle brush. Let the bag air dry.\u003cbr\u003e","brand":"Printify","offers":[{"title":"One size \/ Natural","offer_id":45731638575311,"sku":"21762607924467898572","price":31.99,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0656\/9970\/9135\/files\/577186403304908048_2048.jpg?v=1786832897"}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0656\/9970\/9135\/collections\/IMG-3531.png?v=1786830841","url":"https:\/\/mahjhausdesignstudio.myshopify.com\/collections\/mahjong-wearables.oembed","provider":"Mahj Haus Design Studio","version":"1.0","type":"link"}