{"title":"Meal Plans","description":null,"products":[{"product_id":"5-meal-plan","title":"5 Meal Plan","description":"\u003cp\u003e\u003cmeta charset=\"UTF-8\"\u003e \u003cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"\u003e \u003clink rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\"\u003e \u003clink href=\"https:\/\/fonts.googleapis.com\/css2?family=Oswald:wght@400;500;600;700\u0026amp;family=Barlow:ital,wght@0,400;0,600;0,700;0,800;0,900;1,700\u0026amp;family=Barlow+Condensed:wght@500;600;700;800\u0026amp;display=swap\" rel=\"stylesheet\"\u003e\u003c\/p\u003e\n\u003c!-- LEAFLET (replaces the Google Maps embed) --\u003e\n\u003cp\u003e\u003clink rel=\"stylesheet\" href=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/leaflet\/1.9.4\/leaflet.min.css\"\u003e \u003cscript src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/leaflet\/1.9.4\/leaflet.min.js\"\u003e\u003c\/script\u003e\u003c\/p\u003e\n\u003cstyle\u003e\n*{box-sizing:border-box;margin:0;padding:0}\n:root{--bg:#fffffd;--bg-card:#f4f7f2;--bg-card2:#e9efe5;--bg-pill:#eef3ec;--border:#dbe3d6;--green:#579441;--green-dk:#43762f;--dark:#131a11;--dark-2:#22301d;--txt-hi:#151915;--txt-md:#3d443c;--txt-lo:#61695f;--txt-eye:#43762f;}\nbody{font-family:'Barlow',sans-serif;background:var(--bg);color:var(--txt-hi);line-height:1.6}\n.sb{width:100%;max-width:680px;margin:0 auto;background:var(--bg);color:var(--txt-hi)}\n.eyebrow{font-family:'Barlow Condensed',sans-serif;font-size:12px;font-weight:700;letter-spacing:3px;text-transform:uppercase;color:var(--txt-eye);margin-bottom:10px}\n.heading{font-family:'Oswald',sans-serif;font-size:clamp(26px,5.5vw,40px);font-weight:700;color:var(--txt-hi);letter-spacing:0.02em;line-height:1.1;margin-bottom:16px}\n.lead{font-size:16px;color:var(--txt-md);line-height:1.75;font-weight:400}\n.lead strong{color:var(--green-dk)}\n.section{padding:44px 20px;border-bottom:1px solid var(--border)}\n\/* HERO *\/\n.hero{padding:52px 20px 44px;border-bottom:1px solid var(--border);position:relative;overflow:hidden}\n.hero::before{content:'';position:absolute;inset:0;background:radial-gradient(ellipse at 75% 40%,rgba(87,148,65,0.12) 0%,transparent 60%);pointer-events:none}\n.hero-eyebrow{display:inline-flex;align-items:center;gap:10px;margin-bottom:22px}\n.hero-eyebrow-line{width:28px;height:2px;background:var(--green);flex-shrink:0}\n.hero-eyebrow span{font-family:'Barlow Condensed',sans-serif;font-size:12px;font-weight:700;letter-spacing:3px;text-transform:uppercase;color:var(--green-dk)}\n.hero h1{font-family:'Oswald',sans-serif;font-size:clamp(32px,10vw,56px);font-weight:700;color:var(--txt-hi);letter-spacing:0.02em;line-height:1.04;margin-bottom:20px}\n.hero h1 em{font-style:normal;color:var(--green)}\n.hero-sub{font-size:16px;color:var(--txt-md);max-width:460px;line-height:1.75}\n.hero-sub strong{color:var(--green-dk)}\n.hero-review-badge{display:inline-flex;align-items:center;gap:10px;background:var(--bg-card);border:1px solid var(--border);border-radius:999px;padding:8px 18px 8px 12px;font-size:13px;color:var(--txt-md);margin-top:22px;position:relative;text-decoration:none}\n.hero-review-badge:hover{border-color:var(--green)}\n.hero-review-dot{width:8px;height:8px;border-radius:50%;background:var(--green);flex-shrink:0}\n.hero-review-badge strong{color:var(--txt-hi)}\n\/* PROOF STATS *\/\n.proof{border-bottom:1px solid var(--border)}\n.proof-grid{display:grid;grid-template-columns:repeat(3,1fr)}\n.proof-cell{padding:36px 12px;text-align:center;border-right:1px solid var(--border);text-decoration:none;color:inherit;display:block}\n.proof-cell:last-child{border-right:none}\n.proof-num{font-family:'Oswald',sans-serif;font-size:clamp(36px,9vw,58px);font-weight:700;color:var(--txt-hi);line-height:1;display:block}\n.proof-num em{color:var(--green);font-style:normal}\n.proof-lbl{font-family:'Barlow Condensed',sans-serif;font-size:11px;font-weight:600;letter-spacing:2px;text-transform:uppercase;color:var(--txt-lo);margin-top:10px;display:block}\n\/* SHORT USPS *\/\n.usp-sm{padding:32px 20px}\n\/* HOW IT WORKS *\/\n.steps-grid{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--border);border-radius:4px;overflow:hidden;margin-top:32px}\n.step-col{background:var(--bg-card);padding:28px 22px;text-align:center}\n.step-circle{width:52px;height:52px;background:var(--green);color:#fff;font-family:'Oswald',sans-serif;font-size:22px;font-weight:700;border-radius:50%;display:flex;align-items:center;justify-content:center;margin:0 auto 16px}\n.step-col h4{font-family:'Barlow',sans-serif;font-size:17px;font-weight:800;color:var(--txt-hi);margin-bottom:8px;line-height:1.2}\n.step-col p{font-size:13px;color:var(--txt-md);line-height:1.6}\n\/* WEEK TIMELINE *\/\n.week{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--border);border:1px solid var(--border);border-radius:4px;overflow:hidden;margin-top:24px}\n.week-cell{background:var(--bg-card);padding:20px 12px;text-align:center}\n.week-cell.live{background:var(--green)}\n.week-day{font-family:'Oswald',sans-serif;font-size:20px;font-weight:700;color:var(--txt-hi);line-height:1.1;display:block}\n.week-cell.live .week-day{color:#fff}\n.week-time{font-family:'Oswald',sans-serif;font-size:14px;font-weight:500;color:var(--green-dk);display:block;margin-top:4px}\n.week-cell.live .week-time{color:rgba(255,255,255,0.9)}\n.week-note{font-family:'Barlow Condensed',sans-serif;font-size:11px;font-weight:600;letter-spacing:1.5px;text-transform:uppercase;color:var(--txt-lo);margin-top:10px;display:block;line-height:1.4}\n.week-cell.live .week-note{color:rgba(255,255,255,0.85)}\n\/* DELIVERY ZONES *\/\n.zones-block{border:1px solid var(--border);border-radius:4px;padding:20px;margin-top:24px;background:var(--bg-card)}\n.zones-label{font-family:'Barlow Condensed',sans-serif;font-size:11px;font-weight:700;letter-spacing:3px;text-transform:uppercase;color:var(--txt-lo);margin-bottom:14px;display:block}\n.zones{display:flex;flex-wrap:wrap;gap:8px}\n.zone{font-family:'Barlow Condensed',sans-serif;font-size:12px;font-weight:600;letter-spacing:1.5px;background:var(--bg-pill);border:1px solid var(--border);color:var(--txt-md);padding:6px 14px;border-radius:3px;text-transform:uppercase}\n.zone.hub{background:var(--green);border-color:var(--green);color:#fff}\n.zones-sub{font-family:'Barlow Condensed',sans-serif;font-size:11px;font-weight:600;letter-spacing:2px;text-transform:uppercase;color:var(--txt-lo);margin:18px 0 10px;display:block}\n\/* ZONES DROPDOWN *\/\n.zones-more{margin-top:20px;border-top:1px solid var(--border);padding-top:16px}\n.zones-more summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:12px;font-family:'Barlow Condensed',sans-serif;font-size:13px;font-weight:700;letter-spacing:2px;text-transform:uppercase;color:var(--green-dk)}\n.zones-more summary::-webkit-details-marker{display:none}\n.zones-more summary:hover{color:var(--green)}\n.zones-chev{width:22px;height:22px;border:1px solid var(--border);border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0;background:var(--bg-pill);transition:transform 0.2s;font-size:10px;line-height:1}\n.zones-more[open] .zones-chev{transform:rotate(180deg)}\n.zones-more-body{padding-top:16px}\n.zone-group{margin-bottom:16px}\n.zone-group:last-child{margin-bottom:0}\n.zone-group h5{font-family:'Barlow Condensed',sans-serif;font-size:11px;font-weight:700;letter-spacing:2px;text-transform:uppercase;color:var(--green-dk);margin-bottom:6px}\n.zone-group p{font-size:13.5px;color:var(--txt-md);line-height:1.8}\n.zones-foot{font-size:13px;color:var(--txt-lo);line-height:1.7;margin-top:16px;padding-top:14px;border-top:1px solid var(--border)}\n.zones-foot a{color:var(--green-dk);font-weight:700;text-decoration:underline}\n\/* MAP *\/\n.map-wrap{border:1px solid var(--border);border-radius:4px;overflow:hidden;margin-top:24px;background:var(--bg-card);position:relative;z-index:0}\n#ulo-map{height:380px;width:100%;background:var(--bg-card2)}\n.leaflet-container{z-index:0;font-family:'Barlow',sans-serif;background:var(--bg-card2)}\n\/* Softens raw OSM tiles into a pale, cream basemap - no API key needed.\n   Remove this rule if you ever want full-colour map tiles. *\/\n.leaflet-tile{filter:grayscale(0.92) brightness(1.06) contrast(0.86) sepia(0.12)}\n.leaflet-container a{color:var(--green-dk)}\n.leaflet-tooltip{font-family:'Barlow Condensed',sans-serif;font-size:12px;font-weight:700;letter-spacing:1px;text-transform:uppercase;color:var(--txt-hi);border:1px solid var(--border);border-radius:3px;box-shadow:none;padding:4px 9px}\n.leaflet-popup-content{font-size:13px;color:var(--txt-md)}\n.leaflet-popup-content b{color:var(--txt-hi)}\n.leaflet-control-attribution{font-size:9px}\n.map-legend{display:flex;flex-wrap:wrap;gap:16px;justify-content:center;padding:12px 16px;border-top:1px solid var(--border);background:var(--bg-card)}\n.map-legend span{display:inline-flex;align-items:center;gap:7px;font-family:'Barlow Condensed',sans-serif;font-size:11px;font-weight:600;letter-spacing:1.5px;text-transform:uppercase;color:var(--txt-lo)}\n.legend-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}\n.legend-dot.hub{background:var(--green-dk)}\n.legend-dot.city{background:var(--green);opacity:0.75}\n.legend-dot.ring{background:transparent;border:2px solid var(--green);opacity:0.7}\n.map-caption{font-family:'Barlow Condensed',sans-serif;font-size:11px;font-weight:600;letter-spacing:2px;text-transform:uppercase;color:var(--txt-lo);padding:12px 16px;border-top:1px solid var(--border);text-align:center}\n.map-fallback{padding:24px 18px;text-align:center;font-size:14px;color:var(--txt-md)}\n@media(max-width:480px){#ulo-map{height:300px}}\n\/* CUTOFF CALLOUT *\/\n.cutoff{display:flex;gap:14px;align-items:flex-start;background:var(--bg-card2);border-left:4px solid var(--green);border-radius:3px;padding:16px 18px;margin-top:16px}\n.cutoff-mark{font-family:'Oswald',sans-serif;font-size:16px;font-weight:700;color:var(--green-dk);line-height:1.4;flex-shrink:0;text-align:center}\n.cutoff-mark span{display:block;font-size:11px;font-family:'Barlow Condensed',sans-serif;letter-spacing:1.5px}\n.cutoff p{font-size:14px;color:var(--txt-md);line-height:1.6}\n.cutoff strong{color:var(--txt-hi)}\n\/* DELIVERY WINDOW *\/\n.window{display:flex;gap:14px;align-items:center;background:var(--bg-card);border:1px solid var(--border);border-radius:3px;padding:16px 18px;margin-top:16px}\n.window-mark{font-family:'Oswald',sans-serif;font-size:16px;font-weight:700;color:var(--green-dk);line-height:1.4;flex-shrink:0;text-align:center}\n.window-mark span{display:block;font-size:11px;font-family:'Barlow Condensed',sans-serif;letter-spacing:1.5px}\n.window p{font-size:14px;color:var(--txt-md);line-height:1.6}\n.window strong{color:var(--txt-hi)}\n\/* PLANS *\/\n.plan-header{text-align:center;margin-bottom:28px}\n.plan-cards{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--border);border-radius:4px;overflow:hidden;margin-bottom:16px}\n.plan-card{background:var(--bg-card);padding:28px 10px;text-align:center;text-decoration:none;color:inherit;display:block;transition:background 0.2s}\n.plan-card:hover{background:var(--bg-card2)}\n.plan-card.featured{background:var(--green)}\n.plan-card.featured:hover{background:var(--green-dk)}\n.plan-badge{display:inline-block;background:#fff;color:var(--green-dk);font-family:'Barlow Condensed',sans-serif;font-size:10px;font-weight:700;letter-spacing:2px;text-transform:uppercase;padding:4px 10px;border-radius:2px;margin-bottom:14px}\n.plan-num{font-family:'Oswald',sans-serif;font-size:clamp(38px,9vw,56px);font-weight:700;color:var(--txt-hi);line-height:1;display:block}\n.plan-card.featured .plan-num{color:#fff}\n.plan-lbl{font-family:'Barlow Condensed',sans-serif;font-size:11px;font-weight:700;letter-spacing:2.5px;text-transform:uppercase;color:var(--txt-lo);margin:8px 0 14px;display:block}\n.plan-card.featured .plan-lbl{color:rgba(255,255,255,0.75)}\n.plan-desc{font-size:13px;color:var(--txt-md);line-height:1.6;margin-bottom:18px}\n.plan-card.featured .plan-desc{color:rgba(255,255,255,0.9)}\n.plan-cta{display:inline-block;font-family:'Barlow Condensed',sans-serif;font-size:11px;font-weight:700;letter-spacing:2px;text-transform:uppercase;color:var(--txt-hi);background:var(--bg-pill);border:1px solid var(--border);padding:10px 12px;border-radius:3px}\n.plan-card.featured .plan-cta{background:rgba(0,0,0,0.22);border-color:rgba(255,255,255,0.3);color:#fff}\n@media(max-width:560px){.plan-cards{grid-template-columns:1fr 1fr}}\n\/* CONTACT FOOTER *\/\n.contact-note{text-align:center}\n.contact-note h3{font-family:'Oswald',sans-serif;font-size:22px;font-weight:700;color:var(--txt-hi);margin-bottom:8px}\n.contact-note p{font-size:15px;color:var(--txt-md);line-height:1.7;max-width:460px;margin:0 auto}\n.contact-note a{color:var(--green-dk);font-weight:700;text-decoration:underline}\n@media(max-width:480px){\n  .proof-cell{padding:28px 8px}\n  .steps-grid{grid-template-columns:1fr}\n  .step-col{padding:20px 14px}\n  .step-col h4{font-size:15px}\n  .section,.hero{padding-left:16px;padding-right:16px}\n  .week-day{font-size:17px}\n}\n@media(max-width:360px){\n  .proof-num{font-size:32px}\n  .step-col h4{font-size:13px}\n}\n\u003c\/style\u003e\n\u003cdiv class=\"sb\"\u003e\n\u003c!-- HERO --\u003e\n\u003cdiv class=\"hero\"\u003e\n\u003cdiv class=\"hero-eyebrow\"\u003e\n\u003cdiv class=\"hero-eyebrow-line\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cspan\u003eA NIGERIAN Family Kitchen in Toronto\u003c\/span\u003e\n\u003c\/div\u003e\n\u003ch1\u003eAuthentic\u003cbr\u003eNigerian\u003cbr\u003eMeal Prep,\u003cbr\u003e\u003cem\u003eDelivered Fresh for Toronto\u003c\/em\u003e\n\u003c\/h1\u003e\n\u003cp class=\"hero-sub\"\u003eHomestyle Nigerian meals cooked by hand by \u003cstrong\u003eUloma and her son Obi\u003c\/strong\u003e. We bring it to your door fresh every Saturday in Toronto, in two delivery windows: \u003cstrong\u003e10 AM to 1 PM\u003c\/strong\u003e or \u003cstrong\u003e2 PM to 5 PM\u003c\/strong\u003e. Just reheat, and serve.\u003c\/p\u003e\n\u003ca class=\"hero-review-badge\" href=\"#plans\"\u003e\u003cspan class=\"hero-review-dot\"\u003e\u003c\/span\u003e \u003cspan\u003eNew menu every week. \u003cstrong\u003eOrder by Wednesday, 11:59 PM.\u003c\/strong\u003e\u003c\/span\u003e\u003c\/a\u003e\n\u003c\/div\u003e\n\u003c!-- PROOF STATS --\u003e\n\u003cdiv class=\"proof\"\u003e\n\u003cdiv class=\"proof-grid\"\u003e\n\u003cdiv class=\"proof-cell\"\u003e\n\u003cspan class=\"proof-num\"\u003e40\u003cem\u003e+\u003c\/em\u003e\u003c\/span\u003e\u003cspan class=\"proof-lbl\"\u003eYears of Experience\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"proof-cell\"\u003e\n\u003cspan class=\"proof-num\"\u003e0\u003c\/span\u003e\u003cspan class=\"proof-lbl\"\u003eSubscriptions\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"proof-cell\"\u003e\n\u003cspan class=\"proof-num\"\u003e24\u003cem\u003eoz\u003c\/em\u003e\u003c\/span\u003e\u003cspan class=\"proof-lbl\"\u003ePortions\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!-- CRAFTED BY MOM AND SON --\u003e\n\u003cdiv class=\"section usp-sm\"\u003e\n\u003cdiv class=\"eyebrow\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0723\/3699\/8453\/files\/ChatGPT_Image_Sep_11_2026_09_51_30_AM.png?v=1789134723\" alt=\"\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"eyebrow\"\u003eFamily behind each meal\u003c\/div\u003e\n\u003cdiv class=\"heading\"\u003eCrafted by Mom and Son\u003c\/div\u003e\n\u003cp class=\"lead\"\u003eUloma has cooked Nigerian food for \u003cstrong\u003emore than 40 years\u003c\/strong\u003e. She and her son Obi created ULOFoods to bring Nigerian meals to Toronto homes. \u003cstrong\u003e\u003cem\u003eUlo\u003c\/em\u003e is the Igbo word for home\u003c\/strong\u003e, and that is exactly how the food tastes.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c!-- THE FOOD --\u003e\n\u003cdiv class=\"section usp-sm\"\u003e\n\u003cdiv class=\"eyebrow\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0723\/3699\/8453\/files\/meal_callouts_okra_green.png?v=1785966644\" alt=\"\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"eyebrow\"\u003eThe Food\u003c\/div\u003e\n\u003cdiv class=\"heading\"\u003eAuthentic Nigerian Dishes\u003c\/div\u003e\n\u003cp class=\"lead\"\u003eSmoky Jollof Rice, rich Egusi, fluffy Pounded Yam, and more! Our food tastes like home, with a few fusion dishes to keep the menu exciting.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c!-- PORTIONS --\u003e\n\u003cdiv class=\"section usp-sm\"\u003e\n\u003cdiv class=\"eyebrow\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0723\/3699\/8453\/files\/brim_graphic_green.png?v=1785966801\" alt=\"\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"eyebrow\"\u003ePortions\u003c\/div\u003e\n\u003cdiv class=\"heading\"\u003eMom-Style Portions\u003c\/div\u003e\n\u003cp class=\"lead\"\u003eUloma fills your plate the way she fills a plate at home. Every meal is a generous\u003cstrong\u003e 24 oz portion.\u003c\/strong\u003e\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c!-- WEEKLY MENU --\u003e\n\u003cdiv class=\"section usp-sm\"\u003e\n\u003cdiv class=\"eyebrow\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0723\/3699\/8453\/files\/carousel_menu_options_small_c88ad0c7-4ec1-42f8-a452-dadab32bc660.gif?v=1785967836\" alt=\"\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"eyebrow\"\u003eThe Menu\u003c\/div\u003e\n\u003cdiv class=\"heading\"\u003eA New Menu Every Week\u003c\/div\u003e\n\u003cp class=\"lead\"\u003e\u003cstrong\u003eThe menu changes every week.\u003c\/strong\u003e Uloma picks new dishes each time, so you never eat the same week twice.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c!-- FRESH --\u003e\n\u003cdiv class=\"section usp-sm\"\u003e\n\u003cdiv class=\"eyebrow\"\u003eFresh Food\u003c\/div\u003e\n\u003cdiv class=\"heading\"\u003eCooked Fresh, Never Frozen\u003c\/div\u003e\n\u003cp class=\"lead\"\u003eNothing sits in a freezer. \u003cstrong\u003eEvery meal is cooked fresh on your delivery day.\u003c\/strong\u003e Just reheat and serve. Sprinkle it lightly with water, cover it with a damp paper towel, and microwave for 30–45 seconds.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c!-- DELIVERY --\u003e\n\u003cdiv class=\"section\"\u003e\n\u003cdiv class=\"eyebrow\"\u003eDelivery\u003c\/div\u003e\n\u003cdiv class=\"heading\"\u003eSaturday Delivery Across the GTA\u003c\/div\u003e\n\u003cp class=\"lead\"\u003eWe deliver fresh meals \u003cstrong\u003eevery Saturday in two windows, 10 AM to 1 PM and 2 PM to 5 PM\u003c\/strong\u003e, to Toronto and the towns within about \u003cstrong\u003e30 miles of our kitchen\u003c\/strong\u003e. Orders close \u003cstrong\u003eWednesday at 11:59 PM\u003c\/strong\u003e for that Saturday.\u003c\/p\u003e\n\u003cdiv class=\"week\"\u003e\n\u003cdiv class=\"week-cell\"\u003e\n\u003cspan class=\"week-day\"\u003eWednesday\u003c\/span\u003e \u003cspan class=\"week-time\"\u003e11:59 PM\u003c\/span\u003e \u003cspan class=\"week-note\"\u003eOrders Close\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"week-cell\"\u003e\n\u003cspan class=\"week-day\"\u003eThu \u0026amp; Fri\u003c\/span\u003e \u003cspan class=\"week-time\"\u003eAll Day\u003c\/span\u003e \u003cspan class=\"week-note\"\u003eUloma Shops and Preps\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"week-cell live\"\u003e\n\u003cspan class=\"week-day\"\u003eSaturday\u003c\/span\u003e \u003cspan class=\"week-time\"\u003e10 AM – 1 PM\u003cbr\u003e2 PM – 5 PM\u003c\/span\u003e \u003cspan class=\"week-note\"\u003eFresh at Your Door\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"cutoff\"\u003e\n\u003cspan class=\"cutoff-mark\"\u003e11:59 PM\u003cspan\u003eWednesday\u003c\/span\u003e\u003c\/span\u003e\n\u003cp\u003e\u003cstrong\u003eDo not miss the cutoff.\u003c\/strong\u003e We only buy what we need for the orders we have, so nothing is wasted and nothing is frozen. If you order after Wednesday at 11:59 PM, you go on next Saturday's list.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"window\"\u003e\n\u003cspan class=\"window-mark\"\u003e10–1\u003cbr\u003e2–5\u003cspan\u003eSaturday\u003c\/span\u003e\u003c\/span\u003e\n\u003cp\u003e\u003cstrong\u003eWe deliver in two windows: 10 AM to 1 PM and 2 PM to 5 PM.\u003c\/strong\u003e Obi texts you before he sets out, so you know roughly when to expect your meals.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c!-- ZONES --\u003e\n\u003cdiv class=\"zones-block\"\u003e\n\u003cspan class=\"zones-label\"\u003eWe deliver to\u003c\/span\u003e\n\u003cdiv class=\"zones\"\u003e\n\u003cspan class=\"zone hub\"\u003eToronto\u003c\/span\u003e\u003cspan class=\"zone\"\u003eNorth York\u003c\/span\u003e\u003cspan class=\"zone\"\u003eScarborough\u003c\/span\u003e\u003cspan class=\"zone\"\u003eEtobicoke\u003c\/span\u003e\u003cspan class=\"zone\"\u003eYork\u003c\/span\u003e\u003cspan class=\"zone\"\u003eEast York\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cspan class=\"zones-sub\"\u003eAnd across the wider GTA\u003c\/span\u003e\n\u003cdiv class=\"zones\"\u003e\n\u003cspan class=\"zone\"\u003eMississauga\u003c\/span\u003e\u003cspan class=\"zone\"\u003eBrampton\u003c\/span\u003e\u003cspan class=\"zone\"\u003eVaughan\u003c\/span\u003e\u003cspan class=\"zone\"\u003eMarkham\u003c\/span\u003e\u003cspan class=\"zone\"\u003eRichmond Hill\u003c\/span\u003e\u003cspan class=\"zone\"\u003eOakville\u003c\/span\u003e\u003cspan class=\"zone\"\u003ePickering\u003c\/span\u003e\u003cspan class=\"zone\"\u003eAjax\u003c\/span\u003e\u003cspan class=\"zone\"\u003eWhitby\u003c\/span\u003e\u003cspan class=\"zone\"\u003eMilton\u003c\/span\u003e\u003cspan class=\"zone\"\u003eBurlington\u003c\/span\u003e\u003cspan class=\"zone\"\u003eHalton Hills\u003c\/span\u003e\u003cspan class=\"zone\"\u003eCaledon\u003c\/span\u003e\u003cspan class=\"zone\"\u003eAurora\u003c\/span\u003e\u003cspan class=\"zone\"\u003eNewmarket\u003c\/span\u003e\u003cspan class=\"zone\"\u003eKing City\u003c\/span\u003e\u003cspan class=\"zone\"\u003eStouffville\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c!-- SEO DROPDOWN --\u003e\n\u003cdetails class=\"zones-more\"\u003e\n\u003csummary\u003eSee every city and neighbourhood we serve \u003cspan class=\"zones-chev\"\u003e▼\u003c\/span\u003e\u003c\/summary\u003e\n\u003cdiv class=\"zones-more-body\"\u003e\n\u003cdiv class=\"zone-group\"\u003e\n\u003ch5\u003eToronto\u003c\/h5\u003e\n\u003cp\u003eDowntown Toronto, CityPlace, Fort York, Liberty Village, King West, Queen West, Entertainment District, Financial District, St. Lawrence, Distillery District, Corktown, Regent Park, Cabbagetown, Yorkville, The Annex, Little Italy, Little Portugal, Parkdale, Roncesvalles, High Park, The Junction, Bloor West Village, Swansea, Trinity Bellwoods, Leslieville, Riverdale, The Danforth, Greektown, The Beaches, Upper Beaches, East York, Leaside, Thorncliffe Park, Don Mills, Flemingdon Park, North York, Willowdale, Bayview Village, Don Valley Village, Yorkdale, Lawrence Heights, Forest Hill, Midtown, Davisville, Eglinton West, Weston, Mount Dennis, Jane and Finch, Downsview, Rexdale, Humber Bay, Mimico, New Toronto, Long Branch, Alderwood, Islington-City Centre, Kingsway, Scarborough, Agincourt, Malvern, Rouge, Guildwood, Cliffside, Birch Cliff, Highland Creek, West Hill.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"zone-group\"\u003e\n\u003ch5\u003ePeel Region: Mississauga, Brampton \u0026amp; Caledon\u003c\/h5\u003e\n\u003cp\u003eMississauga, Port Credit, Clarkson, Lorne Park, Cooksville, Erin Mills, Churchill Meadows, Meadowvale, Streetsville, Lisgar, Malton, Applewood, Dixie, Square One, Brampton, Bramalea, Heart Lake, Springdale, Castlemore, Mount Pleasant, Fletcher's Meadow, Caledon, Bolton, Mayfield West, Caledon East, Palgrave.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"zone-group\"\u003e\n\u003ch5\u003eYork Region: Vaughan, Markham \u0026amp; North\u003c\/h5\u003e\n\u003cp\u003eVaughan, Woodbridge, Maple, Concord, Thornhill, Kleinburg, Vaughan Metropolitan Centre, Markham, Unionville, Milliken, Cornell, Markham Village, Cathedraltown, Richmond Hill, Oak Ridges, Langstaff, Aurora, Newmarket, King City, Nobleton, Whitchurch-Stouffville, Stouffville, Schomberg.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"zone-group\"\u003e\n\u003ch5\u003eDurham Region\u003c\/h5\u003e\n\u003cp\u003ePickering, Pickering Village, Rougemount, Amberlea, Ajax, Ajax Waterfront, Whitby, Brooklin, Port Whitby.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"zone-group\"\u003e\n\u003ch5\u003eHalton Region\u003c\/h5\u003e\n\u003cp\u003eOakville, Bronte, Glen Abbey, River Oaks, Burlington, Aldershot, Milton, Georgetown, Halton Hills, Acton.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cp class=\"zones-foot\"\u003eDo not see your street on the list? Message Obi on our \u003ca href=\"\/pages\/contact\"\u003eContact Page\u003c\/a\u003e and he will tell you if we can reach you this Saturday.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/details\u003e\n\u003c\/div\u003e\n\u003c!-- LEAFLET MAP --\u003e\n\u003cdiv class=\"map-wrap\"\u003e\n\u003cdiv id=\"ulo-map\" role=\"img\"\u003e\n\u003cdiv class=\"map-fallback\"\u003eLoading our delivery map…\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"map-legend\"\u003e\n\u003cspan\u003e\u003cspan class=\"legend-dot hub\"\u003e\u003c\/span\u003e Our Kitchen\u003c\/span\u003e \u003cspan\u003e\u003cspan class=\"legend-dot city\"\u003e\u003c\/span\u003e Delivery Cities\u003c\/span\u003e \u003cspan\u003e\u003cspan class=\"legend-dot ring\"\u003e\u003c\/span\u003e 30 Mile Radius\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"map-caption\"\u003eOur delivery area: Toronto and 30 miles around our kitchen\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!--\n  LEAFLET MAP NOTES\n  - Leaflet 1.9.4 is loaded from cdnjs at the top of this file. No API key, no billing.\n  - Tiles come straight from OpenStreetMap. No API key, no quota dashboard.\n    The pale look is a CSS filter (.leaflet-tile), not a paid basemap.\n    OSM attribution is required and renders in the map corner - leave it in place.\n    If the store ever gets very heavy traffic, move to a paid tile host\n    (MapTiler, Mapbox, Thunderforest) and swap the one L.tileLayer URL below.\n  - To move the kitchen pin, edit ULO_HUB below.\n  - To add or remove a city dot, edit the ULO_CITIES array below.\n  - Radius is set in metres: 48280 m = 30 miles. For 25 miles use 40234.\n--\u003e \u003cscript\u003e\n(function () {\n  var ULO_HUB = { lat: 43.6398, lng: -79.3936, label: \"Uloma's Kitchen\", sub: \"10 Capreol Crt, Toronto\" };\n  var ULO_RADIUS_M = 48280; \/\/ 30 miles\n  var ULO_CITIES = [\n    { n: \"North York\",    lat: 43.7615, lng: -79.4111 },\n    { n: \"Scarborough\",   lat: 43.7764, lng: -79.2318 },\n    { n: \"Etobicoke\",     lat: 43.6205, lng: -79.5132 },\n    { n: \"East York\",     lat: 43.6907, lng: -79.3300 },\n    { n: \"York\",          lat: 43.6896, lng: -79.4772 },\n    { n: \"Mississauga\",   lat: 43.5890, lng: -79.6441 },\n    { n: \"Brampton\",      lat: 43.6832, lng: -79.7629 },\n    { n: \"Vaughan\",       lat: 43.8361, lng: -79.4983 },\n    { n: \"Woodbridge\",    lat: 43.7758, lng: -79.5964 },\n    { n: \"Thornhill\",     lat: 43.8156, lng: -79.4239 },\n    { n: \"Markham\",       lat: 43.8561, lng: -79.3370 },\n    { n: \"Richmond Hill\", lat: 43.8828, lng: -79.4403 },\n    { n: \"Aurora\",        lat: 44.0065, lng: -79.4504 },\n    { n: \"Newmarket\",     lat: 44.0592, lng: -79.4613 },\n    { n: \"King City\",     lat: 43.9260, lng: -79.5290 },\n    { n: \"Stouffville\",   lat: 43.9709, lng: -79.2445 },\n    { n: \"Bolton\",        lat: 43.8745, lng: -79.7324 },\n    { n: \"Caledon East\",  lat: 43.8686, lng: -79.8730 },\n    { n: \"Pickering\",     lat: 43.8384, lng: -79.0868 },\n    { n: \"Ajax\",          lat: 43.8509, lng: -79.0204 },\n    { n: \"Whitby\",        lat: 43.8975, lng: -78.9429 },\n    { n: \"Oakville\",      lat: 43.4675, lng: -79.6877 },\n    { n: \"Burlington\",    lat: 43.3255, lng: -79.7990 },\n    { n: \"Milton\",        lat: 43.5183, lng: -79.8774 },\n    { n: \"Georgetown\",    lat: 43.6500, lng: -79.9155 }\n  ];\n\n  var GREEN = \"#579441\", GREEN_DK = \"#43762f\";\n  var tries = 0;\n\n  function init() {\n    var el = document.getElementById(\"ulo-map\");\n    if (!el) return;\n    if (!window.L) {\n      if (++tries \u003e 60) {\n        el.innerHTML = '\u003cdiv class=\"map-fallback\"\u003eWe deliver across Toronto and the GTA. Message Obi to check your street.\u003c\/div\u003e';\n        return;\n      }\n      return setTimeout(init, 150);\n    }\n    el.innerHTML = \"\";\n\n    var map = L.map(el, {\n      center: [ULO_HUB.lat, ULO_HUB.lng],\n      zoom: 9,\n      scrollWheelZoom: false,\n      zoomControl: true,\n      attributionControl: true\n    });\n\n    \/\/ Keyless OpenStreetMap tiles. Softened to a pale basemap by the CSS\n    \/\/ filter on .leaflet-tile below, so no API key or billing is ever needed.\n    L.tileLayer(\"https:\/\/tile.openstreetmap.org\/{z}\/{x}\/{y}.png\", {\n      attribution: '\u0026copy; \u003ca href=\"https:\/\/www.openstreetmap.org\/copyright\"\u003eOpenStreetMap\u003c\/a\u003e contributors',\n      maxZoom: 19\n    }).addTo(map);\n\n    var ring = L.circle([ULO_HUB.lat, ULO_HUB.lng], {\n      radius: ULO_RADIUS_M,\n      color: GREEN,\n      weight: 2,\n      opacity: 0.7,\n      fillColor: GREEN,\n      fillOpacity: 0.08,\n      interactive: false\n    }).addTo(map);\n\n    ULO_CITIES.forEach(function (c) {\n      L.circleMarker([c.lat, c.lng], {\n        radius: 6,\n        color: \"#ffffff\",\n        weight: 1.5,\n        fillColor: GREEN,\n        fillOpacity: 0.85\n      })\n        .addTo(map)\n        .bindTooltip(c.n, { direction: \"top\", offset: [0, -6] })\n        .bindPopup(\"\u003cb\u003e\" + c.n + \"\u003c\/b\u003e\u003cbr\u003eSaturday delivery\u003cbr\u003e10 AM – 1 PM or 2 PM – 5 PM\");\n    });\n\n    L.circleMarker([ULO_HUB.lat, ULO_HUB.lng], {\n      radius: 9,\n      color: \"#ffffff\",\n      weight: 3,\n      fillColor: GREEN_DK,\n      fillOpacity: 1\n    })\n      .addTo(map)\n      .bindTooltip(ULO_HUB.label, { direction: \"top\", offset: [0, -9], permanent: false })\n      .bindPopup(\"\u003cb\u003e\" + ULO_HUB.label + \"\u003c\/b\u003e\u003cbr\u003e\" + ULO_HUB.sub);\n\n    map.fitBounds(ring.getBounds(), { padding: [16, 16] });\n\n    \/\/ Scroll-wheel zoom only once the visitor clicks into the map\n    map.on(\"focus click\", function () { map.scrollWheelZoom.enable(); });\n    map.on(\"blur mouseout\", function () { map.scrollWheelZoom.disable(); });\n\n    setTimeout(function () { map.invalidateSize(); }, 300);\n  }\n\n  if (document.readyState !== \"loading\") { init(); }\n  else { document.addEventListener(\"DOMContentLoaded\", init); }\n})();\n\u003c\/script\u003e\n\u003c\/div\u003e\n\u003c!-- HOW IT WORKS --\u003e\n\u003cdiv class=\"section\"\u003e\n\u003cdiv class=\"eyebrow\"\u003eSimple Process\u003c\/div\u003e\n\u003cdiv class=\"heading\"\u003eHow It Works\u003c\/div\u003e\n\u003cp class=\"lead\"\u003eFour easy steps to a week of good food.\u003c\/p\u003e\n\u003cdiv class=\"steps-grid\"\u003e\n\u003cdiv class=\"step-col\"\u003e\n\u003cdiv class=\"step-circle\"\u003e1\u003c\/div\u003e\n\u003ch4\u003ePick Your Meals\u003c\/h4\u003e\n\u003cp\u003eLook at this week's menu and choose what you want.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"step-col\"\u003e\n\u003cdiv class=\"step-circle\"\u003e2\u003c\/div\u003e\n\u003ch4\u003eOrder by Wednesday\u003c\/h4\u003e\n\u003cp\u003eOrders close Wednesday at 11:59 PM for that Saturday.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"step-col\"\u003e\n\u003cdiv class=\"step-circle\"\u003e3\u003c\/div\u003e\n\u003ch4\u003eWe Deliver Saturday\u003c\/h4\u003e\n\u003cp\u003eYour fresh meals arrive between 10 AM and 1 PM or 2 PM and 5 PM.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"step-col\"\u003e\n\u003cdiv class=\"step-circle\"\u003e4\u003c\/div\u003e\n\u003ch4\u003eYou Enjoy\u003c\/h4\u003e\n\u003cp\u003eHeat it up and eat. No cooking. No cleanup.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!-- PLANS --\u003e\n\u003cdiv class=\"section\" id=\"plans\"\u003e\n\u003cdiv class=\"plan-header\"\u003e\n\u003cdiv class=\"eyebrow\"\u003eGet Started\u003c\/div\u003e\n\u003cdiv class=\"heading\"\u003eWant More Than 5 Meals?\u003c\/div\u003e\n\u003cp class=\"lead\" style=\"max-width: 420px; margin: 0 auto;\"\u003ePick the plan that fits your week. \u003cstrong\u003eNo subscription.\u003c\/strong\u003e Order the weeks you want and skip the weeks you do not.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"plan-cards\"\u003e\n\u003ca href=\"\/products\/6-meal-plan\" class=\"plan-card\"\u003e\u003cspan class=\"plan-num\"\u003e6\u003c\/span\u003e \u003cspan class=\"plan-lbl\"\u003eMeal Plan\u003c\/span\u003e\n\u003cp class=\"plan-desc\"\u003eA little extra for your week.\u003c\/p\u003e\n\u003cspan class=\"plan-cta\"\u003eShop 6 Meals\u003c\/span\u003e\u003c\/a\u003e\u003ca href=\"\/products\/7-meal-plan\" class=\"plan-card\"\u003e\u003cspan class=\"plan-num\"\u003e7\u003c\/span\u003e \u003cspan class=\"plan-lbl\"\u003eMeal Plan\u003c\/span\u003e\n\u003cp class=\"plan-desc\"\u003eOne meal for every day.\u003c\/p\u003e\n\u003cspan class=\"plan-cta\"\u003eShop 7 Meals\u003c\/span\u003e\u003c\/a\u003e\u003ca href=\"\/products\/10-meal-plan\" class=\"plan-card featured\"\u003e\n\u003cdiv class=\"plan-badge\"\u003eMost Popular\u003c\/div\u003e\n\u003cspan class=\"plan-num\"\u003e10\u003c\/span\u003e \u003cspan class=\"plan-lbl\"\u003eMeal Plan\u003c\/span\u003e\n\u003cp class=\"plan-desc\"\u003eCovers most of your week.\u003c\/p\u003e\n\u003cspan class=\"plan-cta\"\u003eShop 10 Meals\u003c\/span\u003e\u003c\/a\u003e\u003ca href=\"\/products\/15-meal-plan\" class=\"plan-card\"\u003e\u003cspan class=\"plan-num\"\u003e15\u003c\/span\u003e \u003cspan class=\"plan-lbl\"\u003eMeal Plan\u003c\/span\u003e\n\u003cp class=\"plan-desc\"\u003eLunch and dinner every day.\u003c\/p\u003e\n\u003cspan class=\"plan-cta\"\u003eShop 15 Meals\u003c\/span\u003e\u003c\/a\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!-- CONTACT --\u003e\n\u003cdiv class=\"section\"\u003e\n\u003cdiv class=\"contact-note\"\u003e\n\u003ch3\u003eGot Questions?\u003c\/h3\u003e\n\u003cp\u003eNot sure which plan to pick? Want to know if we come to your street? Obi answers every message. See our \u003ca href=\"\/pages\/contact\"\u003eContact Page\u003c\/a\u003e.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e","brand":"ULO Foods","offers":[{"title":"Default Title","offer_id":45862462554165,"sku":null,"price":100.0,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0723\/3699\/8453\/files\/0_c4c3de41-73ee-4df0-a1c0-a8486fd130dc.jpg?v=1790000393"},{"product_id":"7-meal-plan","title":"7 Meal Plan","description":"\u003cp\u003e\u003cmeta charset=\"UTF-8\"\u003e \u003cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"\u003e \u003clink rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\"\u003e \u003clink href=\"https:\/\/fonts.googleapis.com\/css2?family=Oswald:wght@400;500;600;700\u0026amp;family=Barlow:ital,wght@0,400;0,600;0,700;0,800;0,900;1,700\u0026amp;family=Barlow+Condensed:wght@500;600;700;800\u0026amp;display=swap\" rel=\"stylesheet\"\u003e\u003c\/p\u003e\n\u003c!-- LEAFLET (replaces the Google Maps embed) --\u003e\n\u003cp\u003e\u003clink rel=\"stylesheet\" href=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/leaflet\/1.9.4\/leaflet.min.css\"\u003e \u003cscript src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/leaflet\/1.9.4\/leaflet.min.js\"\u003e\u003c\/script\u003e\u003c\/p\u003e\n\u003cstyle\u003e\n*{box-sizing:border-box;margin:0;padding:0}\n:root{--bg:#fffffd;--bg-card:#f4f7f2;--bg-card2:#e9efe5;--bg-pill:#eef3ec;--border:#dbe3d6;--green:#579441;--green-dk:#43762f;--dark:#131a11;--dark-2:#22301d;--txt-hi:#151915;--txt-md:#3d443c;--txt-lo:#61695f;--txt-eye:#43762f;}\nbody{font-family:'Barlow',sans-serif;background:var(--bg);color:var(--txt-hi);line-height:1.6}\n.sb{width:100%;max-width:680px;margin:0 auto;background:var(--bg);color:var(--txt-hi)}\n.eyebrow{font-family:'Barlow Condensed',sans-serif;font-size:12px;font-weight:700;letter-spacing:3px;text-transform:uppercase;color:var(--txt-eye);margin-bottom:10px}\n.heading{font-family:'Oswald',sans-serif;font-size:clamp(26px,5.5vw,40px);font-weight:700;color:var(--txt-hi);letter-spacing:0.02em;line-height:1.1;margin-bottom:16px}\n.lead{font-size:16px;color:var(--txt-md);line-height:1.75;font-weight:400}\n.lead strong{color:var(--green-dk)}\n.section{padding:44px 20px;border-bottom:1px solid var(--border)}\n\/* HERO *\/\n.hero{padding:52px 20px 44px;border-bottom:1px solid var(--border);position:relative;overflow:hidden}\n.hero::before{content:'';position:absolute;inset:0;background:radial-gradient(ellipse at 75% 40%,rgba(87,148,65,0.12) 0%,transparent 60%);pointer-events:none}\n.hero-eyebrow{display:inline-flex;align-items:center;gap:10px;margin-bottom:22px}\n.hero-eyebrow-line{width:28px;height:2px;background:var(--green);flex-shrink:0}\n.hero-eyebrow span{font-family:'Barlow Condensed',sans-serif;font-size:12px;font-weight:700;letter-spacing:3px;text-transform:uppercase;color:var(--green-dk)}\n.hero h1{font-family:'Oswald',sans-serif;font-size:clamp(32px,10vw,56px);font-weight:700;color:var(--txt-hi);letter-spacing:0.02em;line-height:1.04;margin-bottom:20px}\n.hero h1 em{font-style:normal;color:var(--green)}\n.hero-sub{font-size:16px;color:var(--txt-md);max-width:460px;line-height:1.75}\n.hero-sub strong{color:var(--green-dk)}\n.hero-review-badge{display:inline-flex;align-items:center;gap:10px;background:var(--bg-card);border:1px solid var(--border);border-radius:999px;padding:8px 18px 8px 12px;font-size:13px;color:var(--txt-md);margin-top:22px;position:relative;text-decoration:none}\n.hero-review-badge:hover{border-color:var(--green)}\n.hero-review-dot{width:8px;height:8px;border-radius:50%;background:var(--green);flex-shrink:0}\n.hero-review-badge strong{color:var(--txt-hi)}\n\/* PROOF STATS *\/\n.proof{border-bottom:1px solid var(--border)}\n.proof-grid{display:grid;grid-template-columns:repeat(3,1fr)}\n.proof-cell{padding:36px 12px;text-align:center;border-right:1px solid var(--border);text-decoration:none;color:inherit;display:block}\n.proof-cell:last-child{border-right:none}\n.proof-num{font-family:'Oswald',sans-serif;font-size:clamp(36px,9vw,58px);font-weight:700;color:var(--txt-hi);line-height:1;display:block}\n.proof-num em{color:var(--green);font-style:normal}\n.proof-lbl{font-family:'Barlow Condensed',sans-serif;font-size:11px;font-weight:600;letter-spacing:2px;text-transform:uppercase;color:var(--txt-lo);margin-top:10px;display:block}\n\/* SHORT USPS *\/\n.usp-sm{padding:32px 20px}\n\/* HOW IT WORKS *\/\n.steps-grid{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--border);border-radius:4px;overflow:hidden;margin-top:32px}\n.step-col{background:var(--bg-card);padding:28px 22px;text-align:center}\n.step-circle{width:52px;height:52px;background:var(--green);color:#fff;font-family:'Oswald',sans-serif;font-size:22px;font-weight:700;border-radius:50%;display:flex;align-items:center;justify-content:center;margin:0 auto 16px}\n.step-col h4{font-family:'Barlow',sans-serif;font-size:17px;font-weight:800;color:var(--txt-hi);margin-bottom:8px;line-height:1.2}\n.step-col p{font-size:13px;color:var(--txt-md);line-height:1.6}\n\/* WEEK TIMELINE *\/\n.week{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--border);border:1px solid var(--border);border-radius:4px;overflow:hidden;margin-top:24px}\n.week-cell{background:var(--bg-card);padding:20px 12px;text-align:center}\n.week-cell.live{background:var(--green)}\n.week-day{font-family:'Oswald',sans-serif;font-size:20px;font-weight:700;color:var(--txt-hi);line-height:1.1;display:block}\n.week-cell.live .week-day{color:#fff}\n.week-time{font-family:'Oswald',sans-serif;font-size:14px;font-weight:500;color:var(--green-dk);display:block;margin-top:4px}\n.week-cell.live .week-time{color:rgba(255,255,255,0.9)}\n.week-note{font-family:'Barlow Condensed',sans-serif;font-size:11px;font-weight:600;letter-spacing:1.5px;text-transform:uppercase;color:var(--txt-lo);margin-top:10px;display:block;line-height:1.4}\n.week-cell.live .week-note{color:rgba(255,255,255,0.85)}\n\/* DELIVERY ZONES *\/\n.zones-block{border:1px solid var(--border);border-radius:4px;padding:20px;margin-top:24px;background:var(--bg-card)}\n.zones-label{font-family:'Barlow Condensed',sans-serif;font-size:11px;font-weight:700;letter-spacing:3px;text-transform:uppercase;color:var(--txt-lo);margin-bottom:14px;display:block}\n.zones{display:flex;flex-wrap:wrap;gap:8px}\n.zone{font-family:'Barlow Condensed',sans-serif;font-size:12px;font-weight:600;letter-spacing:1.5px;background:var(--bg-pill);border:1px solid var(--border);color:var(--txt-md);padding:6px 14px;border-radius:3px;text-transform:uppercase}\n.zone.hub{background:var(--green);border-color:var(--green);color:#fff}\n.zones-sub{font-family:'Barlow Condensed',sans-serif;font-size:11px;font-weight:600;letter-spacing:2px;text-transform:uppercase;color:var(--txt-lo);margin:18px 0 10px;display:block}\n\/* ZONES DROPDOWN *\/\n.zones-more{margin-top:20px;border-top:1px solid var(--border);padding-top:16px}\n.zones-more summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:12px;font-family:'Barlow Condensed',sans-serif;font-size:13px;font-weight:700;letter-spacing:2px;text-transform:uppercase;color:var(--green-dk)}\n.zones-more summary::-webkit-details-marker{display:none}\n.zones-more summary:hover{color:var(--green)}\n.zones-chev{width:22px;height:22px;border:1px solid var(--border);border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0;background:var(--bg-pill);transition:transform 0.2s;font-size:10px;line-height:1}\n.zones-more[open] .zones-chev{transform:rotate(180deg)}\n.zones-more-body{padding-top:16px}\n.zone-group{margin-bottom:16px}\n.zone-group:last-child{margin-bottom:0}\n.zone-group h5{font-family:'Barlow Condensed',sans-serif;font-size:11px;font-weight:700;letter-spacing:2px;text-transform:uppercase;color:var(--green-dk);margin-bottom:6px}\n.zone-group p{font-size:13.5px;color:var(--txt-md);line-height:1.8}\n.zones-foot{font-size:13px;color:var(--txt-lo);line-height:1.7;margin-top:16px;padding-top:14px;border-top:1px solid var(--border)}\n.zones-foot a{color:var(--green-dk);font-weight:700;text-decoration:underline}\n\/* MAP *\/\n.map-wrap{border:1px solid var(--border);border-radius:4px;overflow:hidden;margin-top:24px;background:var(--bg-card);position:relative;z-index:0}\n#ulo-map{height:380px;width:100%;background:var(--bg-card2)}\n.leaflet-container{z-index:0;font-family:'Barlow',sans-serif;background:var(--bg-card2)}\n\/* Softens raw OSM tiles into a pale, cream basemap - no API key needed.\n   Remove this rule if you ever want full-colour map tiles. *\/\n.leaflet-tile{filter:grayscale(0.92) brightness(1.06) contrast(0.86) sepia(0.12)}\n.leaflet-container a{color:var(--green-dk)}\n.leaflet-tooltip{font-family:'Barlow Condensed',sans-serif;font-size:12px;font-weight:700;letter-spacing:1px;text-transform:uppercase;color:var(--txt-hi);border:1px solid var(--border);border-radius:3px;box-shadow:none;padding:4px 9px}\n.leaflet-popup-content{font-size:13px;color:var(--txt-md)}\n.leaflet-popup-content b{color:var(--txt-hi)}\n.leaflet-control-attribution{font-size:9px}\n.map-legend{display:flex;flex-wrap:wrap;gap:16px;justify-content:center;padding:12px 16px;border-top:1px solid var(--border);background:var(--bg-card)}\n.map-legend span{display:inline-flex;align-items:center;gap:7px;font-family:'Barlow Condensed',sans-serif;font-size:11px;font-weight:600;letter-spacing:1.5px;text-transform:uppercase;color:var(--txt-lo)}\n.legend-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}\n.legend-dot.hub{background:var(--green-dk)}\n.legend-dot.city{background:var(--green);opacity:0.75}\n.legend-dot.ring{background:transparent;border:2px solid var(--green);opacity:0.7}\n.map-caption{font-family:'Barlow Condensed',sans-serif;font-size:11px;font-weight:600;letter-spacing:2px;text-transform:uppercase;color:var(--txt-lo);padding:12px 16px;border-top:1px solid var(--border);text-align:center}\n.map-fallback{padding:24px 18px;text-align:center;font-size:14px;color:var(--txt-md)}\n@media(max-width:480px){#ulo-map{height:300px}}\n\/* CUTOFF CALLOUT *\/\n.cutoff{display:flex;gap:14px;align-items:flex-start;background:var(--bg-card2);border-left:4px solid var(--green);border-radius:3px;padding:16px 18px;margin-top:16px}\n.cutoff-mark{font-family:'Oswald',sans-serif;font-size:16px;font-weight:700;color:var(--green-dk);line-height:1.4;flex-shrink:0;text-align:center}\n.cutoff-mark span{display:block;font-size:11px;font-family:'Barlow Condensed',sans-serif;letter-spacing:1.5px}\n.cutoff p{font-size:14px;color:var(--txt-md);line-height:1.6}\n.cutoff strong{color:var(--txt-hi)}\n\/* DELIVERY WINDOW *\/\n.window{display:flex;gap:14px;align-items:center;background:var(--bg-card);border:1px solid var(--border);border-radius:3px;padding:16px 18px;margin-top:16px}\n.window-mark{font-family:'Oswald',sans-serif;font-size:16px;font-weight:700;color:var(--green-dk);line-height:1.4;flex-shrink:0;text-align:center}\n.window-mark span{display:block;font-size:11px;font-family:'Barlow Condensed',sans-serif;letter-spacing:1.5px}\n.window p{font-size:14px;color:var(--txt-md);line-height:1.6}\n.window strong{color:var(--txt-hi)}\n\/* PLANS *\/\n.plan-header{text-align:center;margin-bottom:28px}\n.plan-cards{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--border);border-radius:4px;overflow:hidden;margin-bottom:16px}\n.plan-card{background:var(--bg-card);padding:28px 10px;text-align:center;text-decoration:none;color:inherit;display:block;transition:background 0.2s}\n.plan-card:hover{background:var(--bg-card2)}\n.plan-card.featured{background:var(--green)}\n.plan-card.featured:hover{background:var(--green-dk)}\n.plan-badge{display:inline-block;background:#fff;color:var(--green-dk);font-family:'Barlow Condensed',sans-serif;font-size:10px;font-weight:700;letter-spacing:2px;text-transform:uppercase;padding:4px 10px;border-radius:2px;margin-bottom:14px}\n.plan-num{font-family:'Oswald',sans-serif;font-size:clamp(38px,9vw,56px);font-weight:700;color:var(--txt-hi);line-height:1;display:block}\n.plan-card.featured .plan-num{color:#fff}\n.plan-lbl{font-family:'Barlow Condensed',sans-serif;font-size:11px;font-weight:700;letter-spacing:2.5px;text-transform:uppercase;color:var(--txt-lo);margin:8px 0 14px;display:block}\n.plan-card.featured .plan-lbl{color:rgba(255,255,255,0.75)}\n.plan-desc{font-size:13px;color:var(--txt-md);line-height:1.6;margin-bottom:18px}\n.plan-card.featured .plan-desc{color:rgba(255,255,255,0.9)}\n.plan-cta{display:inline-block;font-family:'Barlow Condensed',sans-serif;font-size:11px;font-weight:700;letter-spacing:2px;text-transform:uppercase;color:var(--txt-hi);background:var(--bg-pill);border:1px solid var(--border);padding:10px 12px;border-radius:3px}\n.plan-card.featured .plan-cta{background:rgba(0,0,0,0.22);border-color:rgba(255,255,255,0.3);color:#fff}\n@media(max-width:560px){.plan-cards{grid-template-columns:1fr 1fr}}\n\/* CONTACT FOOTER *\/\n.contact-note{text-align:center}\n.contact-note h3{font-family:'Oswald',sans-serif;font-size:22px;font-weight:700;color:var(--txt-hi);margin-bottom:8px}\n.contact-note p{font-size:15px;color:var(--txt-md);line-height:1.7;max-width:460px;margin:0 auto}\n.contact-note a{color:var(--green-dk);font-weight:700;text-decoration:underline}\n@media(max-width:480px){\n  .proof-cell{padding:28px 8px}\n  .steps-grid{grid-template-columns:1fr}\n  .step-col{padding:20px 14px}\n  .step-col h4{font-size:15px}\n  .section,.hero{padding-left:16px;padding-right:16px}\n  .week-day{font-size:17px}\n}\n@media(max-width:360px){\n  .proof-num{font-size:32px}\n  .step-col h4{font-size:13px}\n}\n\u003c\/style\u003e\n\u003cdiv class=\"sb\"\u003e\n\u003c!-- HERO --\u003e\n\u003cdiv class=\"hero\"\u003e\n\u003cdiv class=\"hero-eyebrow\"\u003e\n\u003cdiv class=\"hero-eyebrow-line\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cspan\u003eA NIGERIAN Family Kitchen in Toronto\u003c\/span\u003e\n\u003c\/div\u003e\n\u003ch1\u003eAuthentic\u003cbr\u003eNigerian\u003cbr\u003eMeal Prep,\u003cbr\u003e\u003cem\u003eDelivered Fresh for Toronto\u003c\/em\u003e\n\u003c\/h1\u003e\n\u003cp class=\"hero-sub\"\u003eHomestyle Nigerian meals cooked by hand by \u003cstrong\u003eUloma and her son Obi\u003c\/strong\u003e. We bring it to your door fresh every Saturday in Toronto, in two delivery windows: \u003cstrong\u003e10 AM to 1 PM\u003c\/strong\u003e or \u003cstrong\u003e2 PM to 5 PM\u003c\/strong\u003e. Just reheat, and serve.\u003c\/p\u003e\n\u003ca class=\"hero-review-badge\" href=\"#plans\"\u003e\u003cspan class=\"hero-review-dot\"\u003e\u003c\/span\u003e \u003cspan\u003eNew menu every week. \u003cstrong\u003eOrder by Wednesday, 11:59 PM.\u003c\/strong\u003e\u003c\/span\u003e\u003c\/a\u003e\n\u003c\/div\u003e\n\u003c!-- PROOF STATS --\u003e\n\u003cdiv class=\"proof\"\u003e\n\u003cdiv class=\"proof-grid\"\u003e\n\u003cdiv class=\"proof-cell\"\u003e\n\u003cspan class=\"proof-num\"\u003e40\u003cem\u003e+\u003c\/em\u003e\u003c\/span\u003e\u003cspan class=\"proof-lbl\"\u003eYears of Experience\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"proof-cell\"\u003e\n\u003cspan class=\"proof-num\"\u003e0\u003c\/span\u003e\u003cspan class=\"proof-lbl\"\u003eSubscriptions\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"proof-cell\"\u003e\n\u003cspan class=\"proof-num\"\u003e24\u003cem\u003eoz\u003c\/em\u003e\u003c\/span\u003e\u003cspan class=\"proof-lbl\"\u003ePortions\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!-- CRAFTED BY MOM AND SON --\u003e\n\u003cdiv class=\"section usp-sm\"\u003e\n\u003cdiv class=\"eyebrow\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0723\/3699\/8453\/files\/ChatGPT_Image_Sep_11_2026_09_51_30_AM.png?v=1789134723\" alt=\"\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"eyebrow\"\u003eFamily behind each meal\u003c\/div\u003e\n\u003cdiv class=\"heading\"\u003eCrafted by Mom and Son\u003c\/div\u003e\n\u003cp class=\"lead\"\u003eUloma has cooked Nigerian food for \u003cstrong\u003emore than 40 years\u003c\/strong\u003e. She and her son Obi created ULOFoods to bring Nigerian meals to Toronto homes. \u003cstrong\u003e\u003cem\u003eUlo\u003c\/em\u003e is the Igbo word for home\u003c\/strong\u003e, and that is exactly how the food tastes.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c!-- THE FOOD --\u003e\n\u003cdiv class=\"section usp-sm\"\u003e\n\u003cdiv class=\"eyebrow\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0723\/3699\/8453\/files\/meal_callouts_okra_green.png?v=1785966644\" alt=\"\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"eyebrow\"\u003eThe Food\u003c\/div\u003e\n\u003cdiv class=\"heading\"\u003eAuthentic Nigerian Dishes\u003c\/div\u003e\n\u003cp class=\"lead\"\u003eSmoky Jollof Rice, rich Egusi, fluffy Pounded Yam, and more! Our food tastes like home, with a few fusion dishes to keep the menu exciting.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c!-- PORTIONS --\u003e\n\u003cdiv class=\"section usp-sm\"\u003e\n\u003cdiv class=\"eyebrow\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0723\/3699\/8453\/files\/brim_graphic_green.png?v=1785966801\" alt=\"\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"eyebrow\"\u003ePortions\u003c\/div\u003e\n\u003cdiv class=\"heading\"\u003eMom-Style Portions\u003c\/div\u003e\n\u003cp class=\"lead\"\u003eUloma fills your plate the way she fills a plate at home. Every meal is a generous\u003cstrong\u003e 24 oz portion.\u003c\/strong\u003e\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c!-- WEEKLY MENU --\u003e\n\u003cdiv class=\"section usp-sm\"\u003e\n\u003cdiv class=\"eyebrow\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0723\/3699\/8453\/files\/carousel_menu_options_small_c88ad0c7-4ec1-42f8-a452-dadab32bc660.gif?v=1785967836\" alt=\"\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"eyebrow\"\u003eThe Menu\u003c\/div\u003e\n\u003cdiv class=\"heading\"\u003eA New Menu Every Week\u003c\/div\u003e\n\u003cp class=\"lead\"\u003e\u003cstrong\u003eThe menu changes every week.\u003c\/strong\u003e Uloma picks new dishes each time, so you never eat the same week twice.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c!-- FRESH --\u003e\n\u003cdiv class=\"section usp-sm\"\u003e\n\u003cdiv class=\"eyebrow\"\u003eFresh Food\u003c\/div\u003e\n\u003cdiv class=\"heading\"\u003eCooked Fresh, Never Frozen\u003c\/div\u003e\n\u003cp class=\"lead\"\u003eNothing sits in a freezer. \u003cstrong\u003eEvery meal is cooked fresh on your delivery day.\u003c\/strong\u003e Just reheat and serve. Sprinkle it lightly with water, cover it with a damp paper towel, and microwave for 30–45 seconds.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c!-- DELIVERY --\u003e\n\u003cdiv class=\"section\"\u003e\n\u003cdiv class=\"eyebrow\"\u003eDelivery\u003c\/div\u003e\n\u003cdiv class=\"heading\"\u003eSaturday Delivery Across the GTA\u003c\/div\u003e\n\u003cp class=\"lead\"\u003eWe deliver fresh meals \u003cstrong\u003eevery Saturday in two windows, 10 AM to 1 PM and 2 PM to 5 PM\u003c\/strong\u003e, to Toronto and the towns within about \u003cstrong\u003e30 miles of our kitchen\u003c\/strong\u003e. Orders close \u003cstrong\u003eWednesday at 11:59 PM\u003c\/strong\u003e for that Saturday.\u003c\/p\u003e\n\u003cdiv class=\"week\"\u003e\n\u003cdiv class=\"week-cell\"\u003e\n\u003cspan class=\"week-day\"\u003eWednesday\u003c\/span\u003e \u003cspan class=\"week-time\"\u003e11:59 PM\u003c\/span\u003e \u003cspan class=\"week-note\"\u003eOrders Close\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"week-cell\"\u003e\n\u003cspan class=\"week-day\"\u003eThu \u0026amp; Fri\u003c\/span\u003e \u003cspan class=\"week-time\"\u003eAll Day\u003c\/span\u003e \u003cspan class=\"week-note\"\u003eUloma Shops and Preps\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"week-cell live\"\u003e\n\u003cspan class=\"week-day\"\u003eSaturday\u003c\/span\u003e \u003cspan class=\"week-time\"\u003e10 AM – 1 PM\u003cbr\u003e2 PM – 5 PM\u003c\/span\u003e \u003cspan class=\"week-note\"\u003eFresh at Your Door\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"cutoff\"\u003e\n\u003cspan class=\"cutoff-mark\"\u003e11:59 PM\u003cspan\u003eWednesday\u003c\/span\u003e\u003c\/span\u003e\n\u003cp\u003e\u003cstrong\u003eDo not miss the cutoff.\u003c\/strong\u003e We only buy what we need for the orders we have, so nothing is wasted and nothing is frozen. If you order after Wednesday at 11:59 PM, you go on next Saturday's list.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"window\"\u003e\n\u003cspan class=\"window-mark\"\u003e10–1\u003cbr\u003e2–5\u003cspan\u003eSaturday\u003c\/span\u003e\u003c\/span\u003e\n\u003cp\u003e\u003cstrong\u003eWe deliver in two windows: 10 AM to 1 PM and 2 PM to 5 PM.\u003c\/strong\u003e Obi texts you before he sets out, so you know roughly when to expect your meals.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c!-- ZONES --\u003e\n\u003cdiv class=\"zones-block\"\u003e\n\u003cspan class=\"zones-label\"\u003eWe deliver to\u003c\/span\u003e\n\u003cdiv class=\"zones\"\u003e\n\u003cspan class=\"zone hub\"\u003eToronto\u003c\/span\u003e\u003cspan class=\"zone\"\u003eNorth York\u003c\/span\u003e\u003cspan class=\"zone\"\u003eScarborough\u003c\/span\u003e\u003cspan class=\"zone\"\u003eEtobicoke\u003c\/span\u003e\u003cspan class=\"zone\"\u003eYork\u003c\/span\u003e\u003cspan class=\"zone\"\u003eEast York\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cspan class=\"zones-sub\"\u003eAnd across the wider GTA\u003c\/span\u003e\n\u003cdiv class=\"zones\"\u003e\n\u003cspan class=\"zone\"\u003eMississauga\u003c\/span\u003e\u003cspan class=\"zone\"\u003eBrampton\u003c\/span\u003e\u003cspan class=\"zone\"\u003eVaughan\u003c\/span\u003e\u003cspan class=\"zone\"\u003eMarkham\u003c\/span\u003e\u003cspan class=\"zone\"\u003eRichmond Hill\u003c\/span\u003e\u003cspan class=\"zone\"\u003eOakville\u003c\/span\u003e\u003cspan class=\"zone\"\u003ePickering\u003c\/span\u003e\u003cspan class=\"zone\"\u003eAjax\u003c\/span\u003e\u003cspan class=\"zone\"\u003eWhitby\u003c\/span\u003e\u003cspan class=\"zone\"\u003eMilton\u003c\/span\u003e\u003cspan class=\"zone\"\u003eBurlington\u003c\/span\u003e\u003cspan class=\"zone\"\u003eHalton Hills\u003c\/span\u003e\u003cspan class=\"zone\"\u003eCaledon\u003c\/span\u003e\u003cspan class=\"zone\"\u003eAurora\u003c\/span\u003e\u003cspan class=\"zone\"\u003eNewmarket\u003c\/span\u003e\u003cspan class=\"zone\"\u003eKing City\u003c\/span\u003e\u003cspan class=\"zone\"\u003eStouffville\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c!-- SEO DROPDOWN --\u003e\n\u003cdetails class=\"zones-more\"\u003e\n\u003csummary\u003eSee every city and neighbourhood we serve \u003cspan class=\"zones-chev\"\u003e▼\u003c\/span\u003e\u003c\/summary\u003e\n\u003cdiv class=\"zones-more-body\"\u003e\n\u003cdiv class=\"zone-group\"\u003e\n\u003ch5\u003eToronto\u003c\/h5\u003e\n\u003cp\u003eDowntown Toronto, CityPlace, Fort York, Liberty Village, King West, Queen West, Entertainment District, Financial District, St. Lawrence, Distillery District, Corktown, Regent Park, Cabbagetown, Yorkville, The Annex, Little Italy, Little Portugal, Parkdale, Roncesvalles, High Park, The Junction, Bloor West Village, Swansea, Trinity Bellwoods, Leslieville, Riverdale, The Danforth, Greektown, The Beaches, Upper Beaches, East York, Leaside, Thorncliffe Park, Don Mills, Flemingdon Park, North York, Willowdale, Bayview Village, Don Valley Village, Yorkdale, Lawrence Heights, Forest Hill, Midtown, Davisville, Eglinton West, Weston, Mount Dennis, Jane and Finch, Downsview, Rexdale, Humber Bay, Mimico, New Toronto, Long Branch, Alderwood, Islington-City Centre, Kingsway, Scarborough, Agincourt, Malvern, Rouge, Guildwood, Cliffside, Birch Cliff, Highland Creek, West Hill.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"zone-group\"\u003e\n\u003ch5\u003ePeel Region: Mississauga, Brampton \u0026amp; Caledon\u003c\/h5\u003e\n\u003cp\u003eMississauga, Port Credit, Clarkson, Lorne Park, Cooksville, Erin Mills, Churchill Meadows, Meadowvale, Streetsville, Lisgar, Malton, Applewood, Dixie, Square One, Brampton, Bramalea, Heart Lake, Springdale, Castlemore, Mount Pleasant, Fletcher's Meadow, Caledon, Bolton, Mayfield West, Caledon East, Palgrave.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"zone-group\"\u003e\n\u003ch5\u003eYork Region: Vaughan, Markham \u0026amp; North\u003c\/h5\u003e\n\u003cp\u003eVaughan, Woodbridge, Maple, Concord, Thornhill, Kleinburg, Vaughan Metropolitan Centre, Markham, Unionville, Milliken, Cornell, Markham Village, Cathedraltown, Richmond Hill, Oak Ridges, Langstaff, Aurora, Newmarket, King City, Nobleton, Whitchurch-Stouffville, Stouffville, Schomberg.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"zone-group\"\u003e\n\u003ch5\u003eDurham Region\u003c\/h5\u003e\n\u003cp\u003ePickering, Pickering Village, Rougemount, Amberlea, Ajax, Ajax Waterfront, Whitby, Brooklin, Port Whitby.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"zone-group\"\u003e\n\u003ch5\u003eHalton Region\u003c\/h5\u003e\n\u003cp\u003eOakville, Bronte, Glen Abbey, River Oaks, Burlington, Aldershot, Milton, Georgetown, Halton Hills, Acton.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cp class=\"zones-foot\"\u003eDo not see your street on the list? Message Obi on our \u003ca href=\"\/pages\/contact\"\u003eContact Page\u003c\/a\u003e and he will tell you if we can reach you this Saturday.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/details\u003e\n\u003c\/div\u003e\n\u003c!-- LEAFLET MAP --\u003e\n\u003cdiv class=\"map-wrap\"\u003e\n\u003cdiv id=\"ulo-map\" role=\"img\"\u003e\n\u003cdiv class=\"map-fallback\"\u003eLoading our delivery map…\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"map-legend\"\u003e\n\u003cspan\u003e\u003cspan class=\"legend-dot hub\"\u003e\u003c\/span\u003e Our Kitchen\u003c\/span\u003e \u003cspan\u003e\u003cspan class=\"legend-dot city\"\u003e\u003c\/span\u003e Delivery Cities\u003c\/span\u003e \u003cspan\u003e\u003cspan class=\"legend-dot ring\"\u003e\u003c\/span\u003e 30 Mile Radius\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"map-caption\"\u003eOur delivery area: Toronto and 30 miles around our kitchen\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!--\n  LEAFLET MAP NOTES\n  - Leaflet 1.9.4 is loaded from cdnjs at the top of this file. No API key, no billing.\n  - Tiles come straight from OpenStreetMap. No API key, no quota dashboard.\n    The pale look is a CSS filter (.leaflet-tile), not a paid basemap.\n    OSM attribution is required and renders in the map corner - leave it in place.\n    If the store ever gets very heavy traffic, move to a paid tile host\n    (MapTiler, Mapbox, Thunderforest) and swap the one L.tileLayer URL below.\n  - To move the kitchen pin, edit ULO_HUB below.\n  - To add or remove a city dot, edit the ULO_CITIES array below.\n  - Radius is set in metres: 48280 m = 30 miles. For 25 miles use 40234.\n--\u003e \u003cscript\u003e\n(function () {\n  var ULO_HUB = { lat: 43.6398, lng: -79.3936, label: \"Uloma's Kitchen\", sub: \"10 Capreol Crt, Toronto\" };\n  var ULO_RADIUS_M = 48280; \/\/ 30 miles\n  var ULO_CITIES = [\n    { n: \"North York\",    lat: 43.7615, lng: -79.4111 },\n    { n: \"Scarborough\",   lat: 43.7764, lng: -79.2318 },\n    { n: \"Etobicoke\",     lat: 43.6205, lng: -79.5132 },\n    { n: \"East York\",     lat: 43.6907, lng: -79.3300 },\n    { n: \"York\",          lat: 43.6896, lng: -79.4772 },\n    { n: \"Mississauga\",   lat: 43.5890, lng: -79.6441 },\n    { n: \"Brampton\",      lat: 43.6832, lng: -79.7629 },\n    { n: \"Vaughan\",       lat: 43.8361, lng: -79.4983 },\n    { n: \"Woodbridge\",    lat: 43.7758, lng: -79.5964 },\n    { n: \"Thornhill\",     lat: 43.8156, lng: -79.4239 },\n    { n: \"Markham\",       lat: 43.8561, lng: -79.3370 },\n    { n: \"Richmond Hill\", lat: 43.8828, lng: -79.4403 },\n    { n: \"Aurora\",        lat: 44.0065, lng: -79.4504 },\n    { n: \"Newmarket\",     lat: 44.0592, lng: -79.4613 },\n    { n: \"King City\",     lat: 43.9260, lng: -79.5290 },\n    { n: \"Stouffville\",   lat: 43.9709, lng: -79.2445 },\n    { n: \"Bolton\",        lat: 43.8745, lng: -79.7324 },\n    { n: \"Caledon East\",  lat: 43.8686, lng: -79.8730 },\n    { n: \"Pickering\",     lat: 43.8384, lng: -79.0868 },\n    { n: \"Ajax\",          lat: 43.8509, lng: -79.0204 },\n    { n: \"Whitby\",        lat: 43.8975, lng: -78.9429 },\n    { n: \"Oakville\",      lat: 43.4675, lng: -79.6877 },\n    { n: \"Burlington\",    lat: 43.3255, lng: -79.7990 },\n    { n: \"Milton\",        lat: 43.5183, lng: -79.8774 },\n    { n: \"Georgetown\",    lat: 43.6500, lng: -79.9155 }\n  ];\n\n  var GREEN = \"#579441\", GREEN_DK = \"#43762f\";\n  var tries = 0;\n\n  function init() {\n    var el = document.getElementById(\"ulo-map\");\n    if (!el) return;\n    if (!window.L) {\n      if (++tries \u003e 60) {\n        el.innerHTML = '\u003cdiv class=\"map-fallback\"\u003eWe deliver across Toronto and the GTA. Message Obi to check your street.\u003c\/div\u003e';\n        return;\n      }\n      return setTimeout(init, 150);\n    }\n    el.innerHTML = \"\";\n\n    var map = L.map(el, {\n      center: [ULO_HUB.lat, ULO_HUB.lng],\n      zoom: 9,\n      scrollWheelZoom: false,\n      zoomControl: true,\n      attributionControl: true\n    });\n\n    \/\/ Keyless OpenStreetMap tiles. Softened to a pale basemap by the CSS\n    \/\/ filter on .leaflet-tile below, so no API key or billing is ever needed.\n    L.tileLayer(\"https:\/\/tile.openstreetmap.org\/{z}\/{x}\/{y}.png\", {\n      attribution: '\u0026copy; \u003ca href=\"https:\/\/www.openstreetmap.org\/copyright\"\u003eOpenStreetMap\u003c\/a\u003e contributors',\n      maxZoom: 19\n    }).addTo(map);\n\n    var ring = L.circle([ULO_HUB.lat, ULO_HUB.lng], {\n      radius: ULO_RADIUS_M,\n      color: GREEN,\n      weight: 2,\n      opacity: 0.7,\n      fillColor: GREEN,\n      fillOpacity: 0.08,\n      interactive: false\n    }).addTo(map);\n\n    ULO_CITIES.forEach(function (c) {\n      L.circleMarker([c.lat, c.lng], {\n        radius: 6,\n        color: \"#ffffff\",\n        weight: 1.5,\n        fillColor: GREEN,\n        fillOpacity: 0.85\n      })\n        .addTo(map)\n        .bindTooltip(c.n, { direction: \"top\", offset: [0, -6] })\n        .bindPopup(\"\u003cb\u003e\" + c.n + \"\u003c\/b\u003e\u003cbr\u003eSaturday delivery\u003cbr\u003e10 AM – 1 PM or 2 PM – 5 PM\");\n    });\n\n    L.circleMarker([ULO_HUB.lat, ULO_HUB.lng], {\n      radius: 9,\n      color: \"#ffffff\",\n      weight: 3,\n      fillColor: GREEN_DK,\n      fillOpacity: 1\n    })\n      .addTo(map)\n      .bindTooltip(ULO_HUB.label, { direction: \"top\", offset: [0, -9], permanent: false })\n      .bindPopup(\"\u003cb\u003e\" + ULO_HUB.label + \"\u003c\/b\u003e\u003cbr\u003e\" + ULO_HUB.sub);\n\n    map.fitBounds(ring.getBounds(), { padding: [16, 16] });\n\n    \/\/ Scroll-wheel zoom only once the visitor clicks into the map\n    map.on(\"focus click\", function () { map.scrollWheelZoom.enable(); });\n    map.on(\"blur mouseout\", function () { map.scrollWheelZoom.disable(); });\n\n    setTimeout(function () { map.invalidateSize(); }, 300);\n  }\n\n  if (document.readyState !== \"loading\") { init(); }\n  else { document.addEventListener(\"DOMContentLoaded\", init); }\n})();\n\u003c\/script\u003e\n\u003c\/div\u003e\n\u003c!-- HOW IT WORKS --\u003e\n\u003cdiv class=\"section\"\u003e\n\u003cdiv class=\"eyebrow\"\u003eSimple Process\u003c\/div\u003e\n\u003cdiv class=\"heading\"\u003eHow It Works\u003c\/div\u003e\n\u003cp class=\"lead\"\u003eFour easy steps to a week of good food.\u003c\/p\u003e\n\u003cdiv class=\"steps-grid\"\u003e\n\u003cdiv class=\"step-col\"\u003e\n\u003cdiv class=\"step-circle\"\u003e1\u003c\/div\u003e\n\u003ch4\u003ePick Your Meals\u003c\/h4\u003e\n\u003cp\u003eLook at this week's menu and choose what you want.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"step-col\"\u003e\n\u003cdiv class=\"step-circle\"\u003e2\u003c\/div\u003e\n\u003ch4\u003eOrder by Wednesday\u003c\/h4\u003e\n\u003cp\u003eOrders close Wednesday at 11:59 PM for that Saturday.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"step-col\"\u003e\n\u003cdiv class=\"step-circle\"\u003e3\u003c\/div\u003e\n\u003ch4\u003eWe Deliver Saturday\u003c\/h4\u003e\n\u003cp\u003eYour fresh meals arrive between 10 AM and 1 PM or 2 PM and 5 PM.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"step-col\"\u003e\n\u003cdiv class=\"step-circle\"\u003e4\u003c\/div\u003e\n\u003ch4\u003eYou Enjoy\u003c\/h4\u003e\n\u003cp\u003eHeat it up and eat. No cooking. No cleanup.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!-- PLANS --\u003e\n\u003cdiv class=\"section\" id=\"plans\"\u003e\n\u003cdiv class=\"plan-header\"\u003e\n\u003cdiv class=\"eyebrow\"\u003eGet Started\u003c\/div\u003e\n\u003cdiv class=\"heading\"\u003eWant More Than 5 Meals?\u003c\/div\u003e\n\u003cp class=\"lead\" style=\"max-width: 420px; margin: 0 auto;\"\u003ePick the plan that fits your week. \u003cstrong\u003eNo subscription.\u003c\/strong\u003e Order the weeks you want and skip the weeks you do not.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"plan-cards\"\u003e\n\u003ca href=\"\/products\/6-meal-plan\" class=\"plan-card\"\u003e\u003cspan class=\"plan-num\"\u003e6\u003c\/span\u003e \u003cspan class=\"plan-lbl\"\u003eMeal Plan\u003c\/span\u003e\n\u003cp class=\"plan-desc\"\u003eA little extra for your week.\u003c\/p\u003e\n\u003cspan class=\"plan-cta\"\u003eShop 6 Meals\u003c\/span\u003e\u003c\/a\u003e\u003ca href=\"\/products\/7-meal-plan\" class=\"plan-card\"\u003e\u003cspan class=\"plan-num\"\u003e7\u003c\/span\u003e \u003cspan class=\"plan-lbl\"\u003eMeal Plan\u003c\/span\u003e\n\u003cp class=\"plan-desc\"\u003eOne meal for every day.\u003c\/p\u003e\n\u003cspan class=\"plan-cta\"\u003eShop 7 Meals\u003c\/span\u003e\u003c\/a\u003e\u003ca href=\"\/products\/10-meal-plan\" class=\"plan-card featured\"\u003e\n\u003cdiv class=\"plan-badge\"\u003eMost Popular\u003c\/div\u003e\n\u003cspan class=\"plan-num\"\u003e10\u003c\/span\u003e \u003cspan class=\"plan-lbl\"\u003eMeal Plan\u003c\/span\u003e\n\u003cp class=\"plan-desc\"\u003eCovers most of your week.\u003c\/p\u003e\n\u003cspan class=\"plan-cta\"\u003eShop 10 Meals\u003c\/span\u003e\u003c\/a\u003e\u003ca href=\"\/products\/15-meal-plan\" class=\"plan-card\"\u003e\u003cspan class=\"plan-num\"\u003e15\u003c\/span\u003e \u003cspan class=\"plan-lbl\"\u003eMeal Plan\u003c\/span\u003e\n\u003cp class=\"plan-desc\"\u003eLunch and dinner every day.\u003c\/p\u003e\n\u003cspan class=\"plan-cta\"\u003eShop 15 Meals\u003c\/span\u003e\u003c\/a\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!-- CONTACT --\u003e\n\u003cdiv class=\"section\"\u003e\n\u003cdiv class=\"contact-note\"\u003e\n\u003ch3\u003eGot Questions?\u003c\/h3\u003e\n\u003cp\u003eNot sure which plan to pick? Want to know if we come to your street? Obi answers every message. See our \u003ca href=\"\/pages\/contact\"\u003eContact Page\u003c\/a\u003e.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e","brand":"ULO Foods","offers":[{"title":"Default Title","offer_id":45862471991349,"sku":null,"price":130.0,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0723\/3699\/8453\/files\/0_c707d3d9-ba36-48cf-8162-4daf3f30d3c9.jpg?v=1790000381"},{"product_id":"10-meal-plan","title":"10 Meal Plan","description":"\u003cp\u003e\u003cmeta charset=\"UTF-8\"\u003e \u003cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"\u003e \u003clink rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\"\u003e \u003clink href=\"https:\/\/fonts.googleapis.com\/css2?family=Oswald:wght@400;500;600;700\u0026amp;family=Barlow:ital,wght@0,400;0,600;0,700;0,800;0,900;1,700\u0026amp;family=Barlow+Condensed:wght@500;600;700;800\u0026amp;display=swap\" rel=\"stylesheet\"\u003e\u003c\/p\u003e\n\u003c!-- LEAFLET (replaces the Google Maps embed) --\u003e\n\u003cp\u003e\u003clink rel=\"stylesheet\" href=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/leaflet\/1.9.4\/leaflet.min.css\"\u003e \u003cscript src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/leaflet\/1.9.4\/leaflet.min.js\"\u003e\u003c\/script\u003e\u003c\/p\u003e\n\u003cstyle\u003e\n*{box-sizing:border-box;margin:0;padding:0}\n:root{--bg:#fffffd;--bg-card:#f4f7f2;--bg-card2:#e9efe5;--bg-pill:#eef3ec;--border:#dbe3d6;--green:#579441;--green-dk:#43762f;--dark:#131a11;--dark-2:#22301d;--txt-hi:#151915;--txt-md:#3d443c;--txt-lo:#61695f;--txt-eye:#43762f;}\nbody{font-family:'Barlow',sans-serif;background:var(--bg);color:var(--txt-hi);line-height:1.6}\n.sb{width:100%;max-width:680px;margin:0 auto;background:var(--bg);color:var(--txt-hi)}\n.eyebrow{font-family:'Barlow Condensed',sans-serif;font-size:12px;font-weight:700;letter-spacing:3px;text-transform:uppercase;color:var(--txt-eye);margin-bottom:10px}\n.heading{font-family:'Oswald',sans-serif;font-size:clamp(26px,5.5vw,40px);font-weight:700;color:var(--txt-hi);letter-spacing:0.02em;line-height:1.1;margin-bottom:16px}\n.lead{font-size:16px;color:var(--txt-md);line-height:1.75;font-weight:400}\n.lead strong{color:var(--green-dk)}\n.section{padding:44px 20px;border-bottom:1px solid var(--border)}\n\/* HERO *\/\n.hero{padding:52px 20px 44px;border-bottom:1px solid var(--border);position:relative;overflow:hidden}\n.hero::before{content:'';position:absolute;inset:0;background:radial-gradient(ellipse at 75% 40%,rgba(87,148,65,0.12) 0%,transparent 60%);pointer-events:none}\n.hero-eyebrow{display:inline-flex;align-items:center;gap:10px;margin-bottom:22px}\n.hero-eyebrow-line{width:28px;height:2px;background:var(--green);flex-shrink:0}\n.hero-eyebrow span{font-family:'Barlow Condensed',sans-serif;font-size:12px;font-weight:700;letter-spacing:3px;text-transform:uppercase;color:var(--green-dk)}\n.hero h1{font-family:'Oswald',sans-serif;font-size:clamp(32px,10vw,56px);font-weight:700;color:var(--txt-hi);letter-spacing:0.02em;line-height:1.04;margin-bottom:20px}\n.hero h1 em{font-style:normal;color:var(--green)}\n.hero-sub{font-size:16px;color:var(--txt-md);max-width:460px;line-height:1.75}\n.hero-sub strong{color:var(--green-dk)}\n.hero-review-badge{display:inline-flex;align-items:center;gap:10px;background:var(--bg-card);border:1px solid var(--border);border-radius:999px;padding:8px 18px 8px 12px;font-size:13px;color:var(--txt-md);margin-top:22px;position:relative;text-decoration:none}\n.hero-review-badge:hover{border-color:var(--green)}\n.hero-review-dot{width:8px;height:8px;border-radius:50%;background:var(--green);flex-shrink:0}\n.hero-review-badge strong{color:var(--txt-hi)}\n\/* PROOF STATS *\/\n.proof{border-bottom:1px solid var(--border)}\n.proof-grid{display:grid;grid-template-columns:repeat(3,1fr)}\n.proof-cell{padding:36px 12px;text-align:center;border-right:1px solid var(--border);text-decoration:none;color:inherit;display:block}\n.proof-cell:last-child{border-right:none}\n.proof-num{font-family:'Oswald',sans-serif;font-size:clamp(36px,9vw,58px);font-weight:700;color:var(--txt-hi);line-height:1;display:block}\n.proof-num em{color:var(--green);font-style:normal}\n.proof-lbl{font-family:'Barlow Condensed',sans-serif;font-size:11px;font-weight:600;letter-spacing:2px;text-transform:uppercase;color:var(--txt-lo);margin-top:10px;display:block}\n\/* SHORT USPS *\/\n.usp-sm{padding:32px 20px}\n\/* HOW IT WORKS *\/\n.steps-grid{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--border);border-radius:4px;overflow:hidden;margin-top:32px}\n.step-col{background:var(--bg-card);padding:28px 22px;text-align:center}\n.step-circle{width:52px;height:52px;background:var(--green);color:#fff;font-family:'Oswald',sans-serif;font-size:22px;font-weight:700;border-radius:50%;display:flex;align-items:center;justify-content:center;margin:0 auto 16px}\n.step-col h4{font-family:'Barlow',sans-serif;font-size:17px;font-weight:800;color:var(--txt-hi);margin-bottom:8px;line-height:1.2}\n.step-col p{font-size:13px;color:var(--txt-md);line-height:1.6}\n\/* WEEK TIMELINE *\/\n.week{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--border);border:1px solid var(--border);border-radius:4px;overflow:hidden;margin-top:24px}\n.week-cell{background:var(--bg-card);padding:20px 12px;text-align:center}\n.week-cell.live{background:var(--green)}\n.week-day{font-family:'Oswald',sans-serif;font-size:20px;font-weight:700;color:var(--txt-hi);line-height:1.1;display:block}\n.week-cell.live .week-day{color:#fff}\n.week-time{font-family:'Oswald',sans-serif;font-size:14px;font-weight:500;color:var(--green-dk);display:block;margin-top:4px}\n.week-cell.live .week-time{color:rgba(255,255,255,0.9)}\n.week-note{font-family:'Barlow Condensed',sans-serif;font-size:11px;font-weight:600;letter-spacing:1.5px;text-transform:uppercase;color:var(--txt-lo);margin-top:10px;display:block;line-height:1.4}\n.week-cell.live .week-note{color:rgba(255,255,255,0.85)}\n\/* DELIVERY ZONES *\/\n.zones-block{border:1px solid var(--border);border-radius:4px;padding:20px;margin-top:24px;background:var(--bg-card)}\n.zones-label{font-family:'Barlow Condensed',sans-serif;font-size:11px;font-weight:700;letter-spacing:3px;text-transform:uppercase;color:var(--txt-lo);margin-bottom:14px;display:block}\n.zones{display:flex;flex-wrap:wrap;gap:8px}\n.zone{font-family:'Barlow Condensed',sans-serif;font-size:12px;font-weight:600;letter-spacing:1.5px;background:var(--bg-pill);border:1px solid var(--border);color:var(--txt-md);padding:6px 14px;border-radius:3px;text-transform:uppercase}\n.zone.hub{background:var(--green);border-color:var(--green);color:#fff}\n.zones-sub{font-family:'Barlow Condensed',sans-serif;font-size:11px;font-weight:600;letter-spacing:2px;text-transform:uppercase;color:var(--txt-lo);margin:18px 0 10px;display:block}\n\/* ZONES DROPDOWN *\/\n.zones-more{margin-top:20px;border-top:1px solid var(--border);padding-top:16px}\n.zones-more summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:12px;font-family:'Barlow Condensed',sans-serif;font-size:13px;font-weight:700;letter-spacing:2px;text-transform:uppercase;color:var(--green-dk)}\n.zones-more summary::-webkit-details-marker{display:none}\n.zones-more summary:hover{color:var(--green)}\n.zones-chev{width:22px;height:22px;border:1px solid var(--border);border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0;background:var(--bg-pill);transition:transform 0.2s;font-size:10px;line-height:1}\n.zones-more[open] .zones-chev{transform:rotate(180deg)}\n.zones-more-body{padding-top:16px}\n.zone-group{margin-bottom:16px}\n.zone-group:last-child{margin-bottom:0}\n.zone-group h5{font-family:'Barlow Condensed',sans-serif;font-size:11px;font-weight:700;letter-spacing:2px;text-transform:uppercase;color:var(--green-dk);margin-bottom:6px}\n.zone-group p{font-size:13.5px;color:var(--txt-md);line-height:1.8}\n.zones-foot{font-size:13px;color:var(--txt-lo);line-height:1.7;margin-top:16px;padding-top:14px;border-top:1px solid var(--border)}\n.zones-foot a{color:var(--green-dk);font-weight:700;text-decoration:underline}\n\/* MAP *\/\n.map-wrap{border:1px solid var(--border);border-radius:4px;overflow:hidden;margin-top:24px;background:var(--bg-card);position:relative;z-index:0}\n#ulo-map{height:380px;width:100%;background:var(--bg-card2)}\n.leaflet-container{z-index:0;font-family:'Barlow',sans-serif;background:var(--bg-card2)}\n\/* Softens raw OSM tiles into a pale, cream basemap - no API key needed.\n   Remove this rule if you ever want full-colour map tiles. *\/\n.leaflet-tile{filter:grayscale(0.92) brightness(1.06) contrast(0.86) sepia(0.12)}\n.leaflet-container a{color:var(--green-dk)}\n.leaflet-tooltip{font-family:'Barlow Condensed',sans-serif;font-size:12px;font-weight:700;letter-spacing:1px;text-transform:uppercase;color:var(--txt-hi);border:1px solid var(--border);border-radius:3px;box-shadow:none;padding:4px 9px}\n.leaflet-popup-content{font-size:13px;color:var(--txt-md)}\n.leaflet-popup-content b{color:var(--txt-hi)}\n.leaflet-control-attribution{font-size:9px}\n.map-legend{display:flex;flex-wrap:wrap;gap:16px;justify-content:center;padding:12px 16px;border-top:1px solid var(--border);background:var(--bg-card)}\n.map-legend span{display:inline-flex;align-items:center;gap:7px;font-family:'Barlow Condensed',sans-serif;font-size:11px;font-weight:600;letter-spacing:1.5px;text-transform:uppercase;color:var(--txt-lo)}\n.legend-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}\n.legend-dot.hub{background:var(--green-dk)}\n.legend-dot.city{background:var(--green);opacity:0.75}\n.legend-dot.ring{background:transparent;border:2px solid var(--green);opacity:0.7}\n.map-caption{font-family:'Barlow Condensed',sans-serif;font-size:11px;font-weight:600;letter-spacing:2px;text-transform:uppercase;color:var(--txt-lo);padding:12px 16px;border-top:1px solid var(--border);text-align:center}\n.map-fallback{padding:24px 18px;text-align:center;font-size:14px;color:var(--txt-md)}\n@media(max-width:480px){#ulo-map{height:300px}}\n\/* CUTOFF CALLOUT *\/\n.cutoff{display:flex;gap:14px;align-items:flex-start;background:var(--bg-card2);border-left:4px solid var(--green);border-radius:3px;padding:16px 18px;margin-top:16px}\n.cutoff-mark{font-family:'Oswald',sans-serif;font-size:16px;font-weight:700;color:var(--green-dk);line-height:1.4;flex-shrink:0;text-align:center}\n.cutoff-mark span{display:block;font-size:11px;font-family:'Barlow Condensed',sans-serif;letter-spacing:1.5px}\n.cutoff p{font-size:14px;color:var(--txt-md);line-height:1.6}\n.cutoff strong{color:var(--txt-hi)}\n\/* DELIVERY WINDOW *\/\n.window{display:flex;gap:14px;align-items:center;background:var(--bg-card);border:1px solid var(--border);border-radius:3px;padding:16px 18px;margin-top:16px}\n.window-mark{font-family:'Oswald',sans-serif;font-size:16px;font-weight:700;color:var(--green-dk);line-height:1.4;flex-shrink:0;text-align:center}\n.window-mark span{display:block;font-size:11px;font-family:'Barlow Condensed',sans-serif;letter-spacing:1.5px}\n.window p{font-size:14px;color:var(--txt-md);line-height:1.6}\n.window strong{color:var(--txt-hi)}\n\/* PLANS *\/\n.plan-header{text-align:center;margin-bottom:28px}\n.plan-cards{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--border);border-radius:4px;overflow:hidden;margin-bottom:16px}\n.plan-card{background:var(--bg-card);padding:28px 10px;text-align:center;text-decoration:none;color:inherit;display:block;transition:background 0.2s}\n.plan-card:hover{background:var(--bg-card2)}\n.plan-card.featured{background:var(--green)}\n.plan-card.featured:hover{background:var(--green-dk)}\n.plan-badge{display:inline-block;background:#fff;color:var(--green-dk);font-family:'Barlow Condensed',sans-serif;font-size:10px;font-weight:700;letter-spacing:2px;text-transform:uppercase;padding:4px 10px;border-radius:2px;margin-bottom:14px}\n.plan-num{font-family:'Oswald',sans-serif;font-size:clamp(38px,9vw,56px);font-weight:700;color:var(--txt-hi);line-height:1;display:block}\n.plan-card.featured .plan-num{color:#fff}\n.plan-lbl{font-family:'Barlow Condensed',sans-serif;font-size:11px;font-weight:700;letter-spacing:2.5px;text-transform:uppercase;color:var(--txt-lo);margin:8px 0 14px;display:block}\n.plan-card.featured .plan-lbl{color:rgba(255,255,255,0.75)}\n.plan-desc{font-size:13px;color:var(--txt-md);line-height:1.6;margin-bottom:18px}\n.plan-card.featured .plan-desc{color:rgba(255,255,255,0.9)}\n.plan-cta{display:inline-block;font-family:'Barlow Condensed',sans-serif;font-size:11px;font-weight:700;letter-spacing:2px;text-transform:uppercase;color:var(--txt-hi);background:var(--bg-pill);border:1px solid var(--border);padding:10px 12px;border-radius:3px}\n.plan-card.featured .plan-cta{background:rgba(0,0,0,0.22);border-color:rgba(255,255,255,0.3);color:#fff}\n@media(max-width:560px){.plan-cards{grid-template-columns:1fr 1fr}}\n\/* CONTACT FOOTER *\/\n.contact-note{text-align:center}\n.contact-note h3{font-family:'Oswald',sans-serif;font-size:22px;font-weight:700;color:var(--txt-hi);margin-bottom:8px}\n.contact-note p{font-size:15px;color:var(--txt-md);line-height:1.7;max-width:460px;margin:0 auto}\n.contact-note a{color:var(--green-dk);font-weight:700;text-decoration:underline}\n@media(max-width:480px){\n  .proof-cell{padding:28px 8px}\n  .steps-grid{grid-template-columns:1fr}\n  .step-col{padding:20px 14px}\n  .step-col h4{font-size:15px}\n  .section,.hero{padding-left:16px;padding-right:16px}\n  .week-day{font-size:17px}\n}\n@media(max-width:360px){\n  .proof-num{font-size:32px}\n  .step-col h4{font-size:13px}\n}\n\u003c\/style\u003e\n\u003cdiv class=\"sb\"\u003e\n\u003c!-- HERO --\u003e\n\u003cdiv class=\"hero\"\u003e\n\u003cdiv class=\"hero-eyebrow\"\u003e\n\u003cdiv class=\"hero-eyebrow-line\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cspan\u003eA NIGERIAN Family Kitchen in Toronto\u003c\/span\u003e\n\u003c\/div\u003e\n\u003ch1\u003eAuthentic\u003cbr\u003eNigerian\u003cbr\u003eMeal Prep,\u003cbr\u003e\u003cem\u003eDelivered Fresh for Toronto\u003c\/em\u003e\n\u003c\/h1\u003e\n\u003cp class=\"hero-sub\"\u003eHomestyle Nigerian meals cooked by hand by \u003cstrong\u003eUloma and her son Obi\u003c\/strong\u003e. We bring it to your door fresh every Saturday in Toronto, in two delivery windows: \u003cstrong\u003e10 AM to 1 PM\u003c\/strong\u003e or \u003cstrong\u003e2 PM to 5 PM\u003c\/strong\u003e. Just reheat, and serve.\u003c\/p\u003e\n\u003ca class=\"hero-review-badge\" href=\"#plans\"\u003e\u003cspan class=\"hero-review-dot\"\u003e\u003c\/span\u003e \u003cspan\u003eNew menu every week. \u003cstrong\u003eOrder by Wednesday, 11:59 PM.\u003c\/strong\u003e\u003c\/span\u003e\u003c\/a\u003e\n\u003c\/div\u003e\n\u003c!-- PROOF STATS --\u003e\n\u003cdiv class=\"proof\"\u003e\n\u003cdiv class=\"proof-grid\"\u003e\n\u003cdiv class=\"proof-cell\"\u003e\n\u003cspan class=\"proof-num\"\u003e40\u003cem\u003e+\u003c\/em\u003e\u003c\/span\u003e\u003cspan class=\"proof-lbl\"\u003eYears of Experience\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"proof-cell\"\u003e\n\u003cspan class=\"proof-num\"\u003e0\u003c\/span\u003e\u003cspan class=\"proof-lbl\"\u003eSubscriptions\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"proof-cell\"\u003e\n\u003cspan class=\"proof-num\"\u003e24\u003cem\u003eoz\u003c\/em\u003e\u003c\/span\u003e\u003cspan class=\"proof-lbl\"\u003ePortions\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!-- CRAFTED BY MOM AND SON --\u003e\n\u003cdiv class=\"section usp-sm\"\u003e\n\u003cdiv class=\"eyebrow\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0723\/3699\/8453\/files\/ChatGPT_Image_Sep_11_2026_09_51_30_AM.png?v=1789134723\" alt=\"\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"eyebrow\"\u003eFamily behind each meal\u003c\/div\u003e\n\u003cdiv class=\"heading\"\u003eCrafted by Mom and Son\u003c\/div\u003e\n\u003cp class=\"lead\"\u003eUloma has cooked Nigerian food for \u003cstrong\u003emore than 40 years\u003c\/strong\u003e. She and her son Obi created ULOFoods to bring Nigerian meals to Toronto homes. \u003cstrong\u003e\u003cem\u003eUlo\u003c\/em\u003e is the Igbo word for home\u003c\/strong\u003e, and that is exactly how the food tastes.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c!-- THE FOOD --\u003e\n\u003cdiv class=\"section usp-sm\"\u003e\n\u003cdiv class=\"eyebrow\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0723\/3699\/8453\/files\/meal_callouts_okra_green.png?v=1785966644\" alt=\"\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"eyebrow\"\u003eThe Food\u003c\/div\u003e\n\u003cdiv class=\"heading\"\u003eAuthentic Nigerian Dishes\u003c\/div\u003e\n\u003cp class=\"lead\"\u003eSmoky Jollof Rice, rich Egusi, fluffy Pounded Yam, and more! Our food tastes like home, with a few fusion dishes to keep the menu exciting.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c!-- PORTIONS --\u003e\n\u003cdiv class=\"section usp-sm\"\u003e\n\u003cdiv class=\"eyebrow\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0723\/3699\/8453\/files\/brim_graphic_green.png?v=1785966801\" alt=\"\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"eyebrow\"\u003ePortions\u003c\/div\u003e\n\u003cdiv class=\"heading\"\u003eMom-Style Portions\u003c\/div\u003e\n\u003cp class=\"lead\"\u003eUloma fills your plate the way she fills a plate at home. Every meal is a generous\u003cstrong\u003e 24 oz portion.\u003c\/strong\u003e\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c!-- WEEKLY MENU --\u003e\n\u003cdiv class=\"section usp-sm\"\u003e\n\u003cdiv class=\"eyebrow\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0723\/3699\/8453\/files\/carousel_menu_options_small_c88ad0c7-4ec1-42f8-a452-dadab32bc660.gif?v=1785967836\" alt=\"\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"eyebrow\"\u003eThe Menu\u003c\/div\u003e\n\u003cdiv class=\"heading\"\u003eA New Menu Every Week\u003c\/div\u003e\n\u003cp class=\"lead\"\u003e\u003cstrong\u003eThe menu changes every week.\u003c\/strong\u003e Uloma picks new dishes each time, so you never eat the same week twice.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c!-- FRESH --\u003e\n\u003cdiv class=\"section usp-sm\"\u003e\n\u003cdiv class=\"eyebrow\"\u003eFresh Food\u003c\/div\u003e\n\u003cdiv class=\"heading\"\u003eCooked Fresh, Never Frozen\u003c\/div\u003e\n\u003cp class=\"lead\"\u003eNothing sits in a freezer. \u003cstrong\u003eEvery meal is cooked fresh on your delivery day.\u003c\/strong\u003e Just reheat and serve. Sprinkle it lightly with water, cover it with a damp paper towel, and microwave for 30–45 seconds.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c!-- DELIVERY --\u003e\n\u003cdiv class=\"section\"\u003e\n\u003cdiv class=\"eyebrow\"\u003eDelivery\u003c\/div\u003e\n\u003cdiv class=\"heading\"\u003eSaturday Delivery Across the GTA\u003c\/div\u003e\n\u003cp class=\"lead\"\u003eWe deliver fresh meals \u003cstrong\u003eevery Saturday in two windows, 10 AM to 1 PM and 2 PM to 5 PM\u003c\/strong\u003e, to Toronto and the towns within about \u003cstrong\u003e30 miles of our kitchen\u003c\/strong\u003e. Orders close \u003cstrong\u003eWednesday at 11:59 PM\u003c\/strong\u003e for that Saturday.\u003c\/p\u003e\n\u003cdiv class=\"week\"\u003e\n\u003cdiv class=\"week-cell\"\u003e\n\u003cspan class=\"week-day\"\u003eWednesday\u003c\/span\u003e \u003cspan class=\"week-time\"\u003e11:59 PM\u003c\/span\u003e \u003cspan class=\"week-note\"\u003eOrders Close\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"week-cell\"\u003e\n\u003cspan class=\"week-day\"\u003eThu \u0026amp; Fri\u003c\/span\u003e \u003cspan class=\"week-time\"\u003eAll Day\u003c\/span\u003e \u003cspan class=\"week-note\"\u003eUloma Shops and Preps\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"week-cell live\"\u003e\n\u003cspan class=\"week-day\"\u003eSaturday\u003c\/span\u003e \u003cspan class=\"week-time\"\u003e10 AM – 1 PM\u003cbr\u003e2 PM – 5 PM\u003c\/span\u003e \u003cspan class=\"week-note\"\u003eFresh at Your Door\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"cutoff\"\u003e\n\u003cspan class=\"cutoff-mark\"\u003e11:59 PM\u003cspan\u003eWednesday\u003c\/span\u003e\u003c\/span\u003e\n\u003cp\u003e\u003cstrong\u003eDo not miss the cutoff.\u003c\/strong\u003e We only buy what we need for the orders we have, so nothing is wasted and nothing is frozen. If you order after Wednesday at 11:59 PM, you go on next Saturday's list.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"window\"\u003e\n\u003cspan class=\"window-mark\"\u003e10–1\u003cbr\u003e2–5\u003cspan\u003eSaturday\u003c\/span\u003e\u003c\/span\u003e\n\u003cp\u003e\u003cstrong\u003eWe deliver in two windows: 10 AM to 1 PM and 2 PM to 5 PM.\u003c\/strong\u003e Obi texts you before he sets out, so you know roughly when to expect your meals.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c!-- ZONES --\u003e\n\u003cdiv class=\"zones-block\"\u003e\n\u003cspan class=\"zones-label\"\u003eWe deliver to\u003c\/span\u003e\n\u003cdiv class=\"zones\"\u003e\n\u003cspan class=\"zone hub\"\u003eToronto\u003c\/span\u003e\u003cspan class=\"zone\"\u003eNorth York\u003c\/span\u003e\u003cspan class=\"zone\"\u003eScarborough\u003c\/span\u003e\u003cspan class=\"zone\"\u003eEtobicoke\u003c\/span\u003e\u003cspan class=\"zone\"\u003eYork\u003c\/span\u003e\u003cspan class=\"zone\"\u003eEast York\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cspan class=\"zones-sub\"\u003eAnd across the wider GTA\u003c\/span\u003e\n\u003cdiv class=\"zones\"\u003e\n\u003cspan class=\"zone\"\u003eMississauga\u003c\/span\u003e\u003cspan class=\"zone\"\u003eBrampton\u003c\/span\u003e\u003cspan class=\"zone\"\u003eVaughan\u003c\/span\u003e\u003cspan class=\"zone\"\u003eMarkham\u003c\/span\u003e\u003cspan class=\"zone\"\u003eRichmond Hill\u003c\/span\u003e\u003cspan class=\"zone\"\u003eOakville\u003c\/span\u003e\u003cspan class=\"zone\"\u003ePickering\u003c\/span\u003e\u003cspan class=\"zone\"\u003eAjax\u003c\/span\u003e\u003cspan class=\"zone\"\u003eWhitby\u003c\/span\u003e\u003cspan class=\"zone\"\u003eMilton\u003c\/span\u003e\u003cspan class=\"zone\"\u003eBurlington\u003c\/span\u003e\u003cspan class=\"zone\"\u003eHalton Hills\u003c\/span\u003e\u003cspan class=\"zone\"\u003eCaledon\u003c\/span\u003e\u003cspan class=\"zone\"\u003eAurora\u003c\/span\u003e\u003cspan class=\"zone\"\u003eNewmarket\u003c\/span\u003e\u003cspan class=\"zone\"\u003eKing City\u003c\/span\u003e\u003cspan class=\"zone\"\u003eStouffville\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c!-- SEO DROPDOWN --\u003e\n\u003cdetails class=\"zones-more\"\u003e\n\u003csummary\u003eSee every city and neighbourhood we serve \u003cspan class=\"zones-chev\"\u003e▼\u003c\/span\u003e\u003c\/summary\u003e\n\u003cdiv class=\"zones-more-body\"\u003e\n\u003cdiv class=\"zone-group\"\u003e\n\u003ch5\u003eToronto\u003c\/h5\u003e\n\u003cp\u003eDowntown Toronto, CityPlace, Fort York, Liberty Village, King West, Queen West, Entertainment District, Financial District, St. Lawrence, Distillery District, Corktown, Regent Park, Cabbagetown, Yorkville, The Annex, Little Italy, Little Portugal, Parkdale, Roncesvalles, High Park, The Junction, Bloor West Village, Swansea, Trinity Bellwoods, Leslieville, Riverdale, The Danforth, Greektown, The Beaches, Upper Beaches, East York, Leaside, Thorncliffe Park, Don Mills, Flemingdon Park, North York, Willowdale, Bayview Village, Don Valley Village, Yorkdale, Lawrence Heights, Forest Hill, Midtown, Davisville, Eglinton West, Weston, Mount Dennis, Jane and Finch, Downsview, Rexdale, Humber Bay, Mimico, New Toronto, Long Branch, Alderwood, Islington-City Centre, Kingsway, Scarborough, Agincourt, Malvern, Rouge, Guildwood, Cliffside, Birch Cliff, Highland Creek, West Hill.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"zone-group\"\u003e\n\u003ch5\u003ePeel Region: Mississauga, Brampton \u0026amp; Caledon\u003c\/h5\u003e\n\u003cp\u003eMississauga, Port Credit, Clarkson, Lorne Park, Cooksville, Erin Mills, Churchill Meadows, Meadowvale, Streetsville, Lisgar, Malton, Applewood, Dixie, Square One, Brampton, Bramalea, Heart Lake, Springdale, Castlemore, Mount Pleasant, Fletcher's Meadow, Caledon, Bolton, Mayfield West, Caledon East, Palgrave.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"zone-group\"\u003e\n\u003ch5\u003eYork Region: Vaughan, Markham \u0026amp; North\u003c\/h5\u003e\n\u003cp\u003eVaughan, Woodbridge, Maple, Concord, Thornhill, Kleinburg, Vaughan Metropolitan Centre, Markham, Unionville, Milliken, Cornell, Markham Village, Cathedraltown, Richmond Hill, Oak Ridges, Langstaff, Aurora, Newmarket, King City, Nobleton, Whitchurch-Stouffville, Stouffville, Schomberg.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"zone-group\"\u003e\n\u003ch5\u003eDurham Region\u003c\/h5\u003e\n\u003cp\u003ePickering, Pickering Village, Rougemount, Amberlea, Ajax, Ajax Waterfront, Whitby, Brooklin, Port Whitby.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"zone-group\"\u003e\n\u003ch5\u003eHalton Region\u003c\/h5\u003e\n\u003cp\u003eOakville, Bronte, Glen Abbey, River Oaks, Burlington, Aldershot, Milton, Georgetown, Halton Hills, Acton.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cp class=\"zones-foot\"\u003eDo not see your street on the list? Message Obi on our \u003ca href=\"\/pages\/contact\"\u003eContact Page\u003c\/a\u003e and he will tell you if we can reach you this Saturday.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/details\u003e\n\u003c\/div\u003e\n\u003c!-- LEAFLET MAP --\u003e\n\u003cdiv class=\"map-wrap\"\u003e\n\u003cdiv id=\"ulo-map\" role=\"img\"\u003e\n\u003cdiv class=\"map-fallback\"\u003eLoading our delivery map…\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"map-legend\"\u003e\n\u003cspan\u003e\u003cspan class=\"legend-dot hub\"\u003e\u003c\/span\u003e Our Kitchen\u003c\/span\u003e \u003cspan\u003e\u003cspan class=\"legend-dot city\"\u003e\u003c\/span\u003e Delivery Cities\u003c\/span\u003e \u003cspan\u003e\u003cspan class=\"legend-dot ring\"\u003e\u003c\/span\u003e 30 Mile Radius\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"map-caption\"\u003eOur delivery area: Toronto and 30 miles around our kitchen\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!--\n  LEAFLET MAP NOTES\n  - Leaflet 1.9.4 is loaded from cdnjs at the top of this file. No API key, no billing.\n  - Tiles come straight from OpenStreetMap. No API key, no quota dashboard.\n    The pale look is a CSS filter (.leaflet-tile), not a paid basemap.\n    OSM attribution is required and renders in the map corner - leave it in place.\n    If the store ever gets very heavy traffic, move to a paid tile host\n    (MapTiler, Mapbox, Thunderforest) and swap the one L.tileLayer URL below.\n  - To move the kitchen pin, edit ULO_HUB below.\n  - To add or remove a city dot, edit the ULO_CITIES array below.\n  - Radius is set in metres: 48280 m = 30 miles. For 25 miles use 40234.\n--\u003e \u003cscript\u003e\n(function () {\n  var ULO_HUB = { lat: 43.6398, lng: -79.3936, label: \"Uloma's Kitchen\", sub: \"10 Capreol Crt, Toronto\" };\n  var ULO_RADIUS_M = 48280; \/\/ 30 miles\n  var ULO_CITIES = [\n    { n: \"North York\",    lat: 43.7615, lng: -79.4111 },\n    { n: \"Scarborough\",   lat: 43.7764, lng: -79.2318 },\n    { n: \"Etobicoke\",     lat: 43.6205, lng: -79.5132 },\n    { n: \"East York\",     lat: 43.6907, lng: -79.3300 },\n    { n: \"York\",          lat: 43.6896, lng: -79.4772 },\n    { n: \"Mississauga\",   lat: 43.5890, lng: -79.6441 },\n    { n: \"Brampton\",      lat: 43.6832, lng: -79.7629 },\n    { n: \"Vaughan\",       lat: 43.8361, lng: -79.4983 },\n    { n: \"Woodbridge\",    lat: 43.7758, lng: -79.5964 },\n    { n: \"Thornhill\",     lat: 43.8156, lng: -79.4239 },\n    { n: \"Markham\",       lat: 43.8561, lng: -79.3370 },\n    { n: \"Richmond Hill\", lat: 43.8828, lng: -79.4403 },\n    { n: \"Aurora\",        lat: 44.0065, lng: -79.4504 },\n    { n: \"Newmarket\",     lat: 44.0592, lng: -79.4613 },\n    { n: \"King City\",     lat: 43.9260, lng: -79.5290 },\n    { n: \"Stouffville\",   lat: 43.9709, lng: -79.2445 },\n    { n: \"Bolton\",        lat: 43.8745, lng: -79.7324 },\n    { n: \"Caledon East\",  lat: 43.8686, lng: -79.8730 },\n    { n: \"Pickering\",     lat: 43.8384, lng: -79.0868 },\n    { n: \"Ajax\",          lat: 43.8509, lng: -79.0204 },\n    { n: \"Whitby\",        lat: 43.8975, lng: -78.9429 },\n    { n: \"Oakville\",      lat: 43.4675, lng: -79.6877 },\n    { n: \"Burlington\",    lat: 43.3255, lng: -79.7990 },\n    { n: \"Milton\",        lat: 43.5183, lng: -79.8774 },\n    { n: \"Georgetown\",    lat: 43.6500, lng: -79.9155 }\n  ];\n\n  var GREEN = \"#579441\", GREEN_DK = \"#43762f\";\n  var tries = 0;\n\n  function init() {\n    var el = document.getElementById(\"ulo-map\");\n    if (!el) return;\n    if (!window.L) {\n      if (++tries \u003e 60) {\n        el.innerHTML = '\u003cdiv class=\"map-fallback\"\u003eWe deliver across Toronto and the GTA. Message Obi to check your street.\u003c\/div\u003e';\n        return;\n      }\n      return setTimeout(init, 150);\n    }\n    el.innerHTML = \"\";\n\n    var map = L.map(el, {\n      center: [ULO_HUB.lat, ULO_HUB.lng],\n      zoom: 9,\n      scrollWheelZoom: false,\n      zoomControl: true,\n      attributionControl: true\n    });\n\n    \/\/ Keyless OpenStreetMap tiles. Softened to a pale basemap by the CSS\n    \/\/ filter on .leaflet-tile below, so no API key or billing is ever needed.\n    L.tileLayer(\"https:\/\/tile.openstreetmap.org\/{z}\/{x}\/{y}.png\", {\n      attribution: '\u0026copy; \u003ca href=\"https:\/\/www.openstreetmap.org\/copyright\"\u003eOpenStreetMap\u003c\/a\u003e contributors',\n      maxZoom: 19\n    }).addTo(map);\n\n    var ring = L.circle([ULO_HUB.lat, ULO_HUB.lng], {\n      radius: ULO_RADIUS_M,\n      color: GREEN,\n      weight: 2,\n      opacity: 0.7,\n      fillColor: GREEN,\n      fillOpacity: 0.08,\n      interactive: false\n    }).addTo(map);\n\n    ULO_CITIES.forEach(function (c) {\n      L.circleMarker([c.lat, c.lng], {\n        radius: 6,\n        color: \"#ffffff\",\n        weight: 1.5,\n        fillColor: GREEN,\n        fillOpacity: 0.85\n      })\n        .addTo(map)\n        .bindTooltip(c.n, { direction: \"top\", offset: [0, -6] })\n        .bindPopup(\"\u003cb\u003e\" + c.n + \"\u003c\/b\u003e\u003cbr\u003eSaturday delivery\u003cbr\u003e10 AM – 1 PM or 2 PM – 5 PM\");\n    });\n\n    L.circleMarker([ULO_HUB.lat, ULO_HUB.lng], {\n      radius: 9,\n      color: \"#ffffff\",\n      weight: 3,\n      fillColor: GREEN_DK,\n      fillOpacity: 1\n    })\n      .addTo(map)\n      .bindTooltip(ULO_HUB.label, { direction: \"top\", offset: [0, -9], permanent: false })\n      .bindPopup(\"\u003cb\u003e\" + ULO_HUB.label + \"\u003c\/b\u003e\u003cbr\u003e\" + ULO_HUB.sub);\n\n    map.fitBounds(ring.getBounds(), { padding: [16, 16] });\n\n    \/\/ Scroll-wheel zoom only once the visitor clicks into the map\n    map.on(\"focus click\", function () { map.scrollWheelZoom.enable(); });\n    map.on(\"blur mouseout\", function () { map.scrollWheelZoom.disable(); });\n\n    setTimeout(function () { map.invalidateSize(); }, 300);\n  }\n\n  if (document.readyState !== \"loading\") { init(); }\n  else { document.addEventListener(\"DOMContentLoaded\", init); }\n})();\n\u003c\/script\u003e\n\u003c\/div\u003e\n\u003c!-- HOW IT WORKS --\u003e\n\u003cdiv class=\"section\"\u003e\n\u003cdiv class=\"eyebrow\"\u003eSimple Process\u003c\/div\u003e\n\u003cdiv class=\"heading\"\u003eHow It Works\u003c\/div\u003e\n\u003cp class=\"lead\"\u003eFour easy steps to a week of good food.\u003c\/p\u003e\n\u003cdiv class=\"steps-grid\"\u003e\n\u003cdiv class=\"step-col\"\u003e\n\u003cdiv class=\"step-circle\"\u003e1\u003c\/div\u003e\n\u003ch4\u003ePick Your Meals\u003c\/h4\u003e\n\u003cp\u003eLook at this week's menu and choose what you want.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"step-col\"\u003e\n\u003cdiv class=\"step-circle\"\u003e2\u003c\/div\u003e\n\u003ch4\u003eOrder by Wednesday\u003c\/h4\u003e\n\u003cp\u003eOrders close Wednesday at 11:59 PM for that Saturday.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"step-col\"\u003e\n\u003cdiv class=\"step-circle\"\u003e3\u003c\/div\u003e\n\u003ch4\u003eWe Deliver Saturday\u003c\/h4\u003e\n\u003cp\u003eYour fresh meals arrive between 10 AM and 1 PM or 2 PM and 5 PM.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"step-col\"\u003e\n\u003cdiv class=\"step-circle\"\u003e4\u003c\/div\u003e\n\u003ch4\u003eYou Enjoy\u003c\/h4\u003e\n\u003cp\u003eHeat it up and eat. No cooking. No cleanup.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!-- PLANS --\u003e\n\u003cdiv class=\"section\" id=\"plans\"\u003e\n\u003cdiv class=\"plan-header\"\u003e\n\u003cdiv class=\"eyebrow\"\u003eGet Started\u003c\/div\u003e\n\u003cdiv class=\"heading\"\u003eWant More Than 5 Meals?\u003c\/div\u003e\n\u003cp class=\"lead\" style=\"max-width: 420px; margin: 0 auto;\"\u003ePick the plan that fits your week. \u003cstrong\u003eNo subscription.\u003c\/strong\u003e Order the weeks you want and skip the weeks you do not.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"plan-cards\"\u003e\n\u003ca href=\"\/products\/6-meal-plan\" class=\"plan-card\"\u003e\u003cspan class=\"plan-num\"\u003e6\u003c\/span\u003e \u003cspan class=\"plan-lbl\"\u003eMeal Plan\u003c\/span\u003e\n\u003cp class=\"plan-desc\"\u003eA little extra for your week.\u003c\/p\u003e\n\u003cspan class=\"plan-cta\"\u003eShop 6 Meals\u003c\/span\u003e\u003c\/a\u003e\u003ca href=\"\/products\/7-meal-plan\" class=\"plan-card\"\u003e\u003cspan class=\"plan-num\"\u003e7\u003c\/span\u003e \u003cspan class=\"plan-lbl\"\u003eMeal Plan\u003c\/span\u003e\n\u003cp class=\"plan-desc\"\u003eOne meal for every day.\u003c\/p\u003e\n\u003cspan class=\"plan-cta\"\u003eShop 7 Meals\u003c\/span\u003e\u003c\/a\u003e\u003ca href=\"\/products\/10-meal-plan\" class=\"plan-card featured\"\u003e\n\u003cdiv class=\"plan-badge\"\u003eMost Popular\u003c\/div\u003e\n\u003cspan class=\"plan-num\"\u003e10\u003c\/span\u003e \u003cspan class=\"plan-lbl\"\u003eMeal Plan\u003c\/span\u003e\n\u003cp class=\"plan-desc\"\u003eCovers most of your week.\u003c\/p\u003e\n\u003cspan class=\"plan-cta\"\u003eShop 10 Meals\u003c\/span\u003e\u003c\/a\u003e\u003ca href=\"\/products\/15-meal-plan\" class=\"plan-card\"\u003e\u003cspan class=\"plan-num\"\u003e15\u003c\/span\u003e \u003cspan class=\"plan-lbl\"\u003eMeal Plan\u003c\/span\u003e\n\u003cp class=\"plan-desc\"\u003eLunch and dinner every day.\u003c\/p\u003e\n\u003cspan class=\"plan-cta\"\u003eShop 15 Meals\u003c\/span\u003e\u003c\/a\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!-- CONTACT --\u003e\n\u003cdiv class=\"section\"\u003e\n\u003cdiv class=\"contact-note\"\u003e\n\u003ch3\u003eGot Questions?\u003c\/h3\u003e\n\u003cp\u003eNot sure which plan to pick? Want to know if we come to your street? Obi answers every message. See our \u003ca href=\"\/pages\/contact\"\u003eContact Page\u003c\/a\u003e.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e","brand":"ULO Foods","offers":[{"title":"Default Title","offer_id":45862472745013,"sku":null,"price":160.0,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0723\/3699\/8453\/files\/0_29314928-0ab2-47c7-bee2-022628389e24.jpg?v=1790000373"},{"product_id":"15-meal-plan","title":"15 Meal Plan","description":"\u003cp\u003e\u003cmeta charset=\"UTF-8\"\u003e \u003cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"\u003e \u003clink rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\"\u003e \u003clink href=\"https:\/\/fonts.googleapis.com\/css2?family=Oswald:wght@400;500;600;700\u0026amp;family=Barlow:ital,wght@0,400;0,600;0,700;0,800;0,900;1,700\u0026amp;family=Barlow+Condensed:wght@500;600;700;800\u0026amp;display=swap\" rel=\"stylesheet\"\u003e\u003c\/p\u003e\n\u003c!-- LEAFLET (replaces the Google Maps embed) --\u003e\n\u003cp\u003e\u003clink rel=\"stylesheet\" href=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/leaflet\/1.9.4\/leaflet.min.css\"\u003e \u003cscript src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/leaflet\/1.9.4\/leaflet.min.js\"\u003e\u003c\/script\u003e\u003c\/p\u003e\n\u003cstyle\u003e\n*{box-sizing:border-box;margin:0;padding:0}\n:root{--bg:#fffffd;--bg-card:#f4f7f2;--bg-card2:#e9efe5;--bg-pill:#eef3ec;--border:#dbe3d6;--green:#579441;--green-dk:#43762f;--dark:#131a11;--dark-2:#22301d;--txt-hi:#151915;--txt-md:#3d443c;--txt-lo:#61695f;--txt-eye:#43762f;}\nbody{font-family:'Barlow',sans-serif;background:var(--bg);color:var(--txt-hi);line-height:1.6}\n.sb{width:100%;max-width:680px;margin:0 auto;background:var(--bg);color:var(--txt-hi)}\n.eyebrow{font-family:'Barlow Condensed',sans-serif;font-size:12px;font-weight:700;letter-spacing:3px;text-transform:uppercase;color:var(--txt-eye);margin-bottom:10px}\n.heading{font-family:'Oswald',sans-serif;font-size:clamp(26px,5.5vw,40px);font-weight:700;color:var(--txt-hi);letter-spacing:0.02em;line-height:1.1;margin-bottom:16px}\n.lead{font-size:16px;color:var(--txt-md);line-height:1.75;font-weight:400}\n.lead strong{color:var(--green-dk)}\n.section{padding:44px 20px;border-bottom:1px solid var(--border)}\n\/* HERO *\/\n.hero{padding:52px 20px 44px;border-bottom:1px solid var(--border);position:relative;overflow:hidden}\n.hero::before{content:'';position:absolute;inset:0;background:radial-gradient(ellipse at 75% 40%,rgba(87,148,65,0.12) 0%,transparent 60%);pointer-events:none}\n.hero-eyebrow{display:inline-flex;align-items:center;gap:10px;margin-bottom:22px}\n.hero-eyebrow-line{width:28px;height:2px;background:var(--green);flex-shrink:0}\n.hero-eyebrow span{font-family:'Barlow Condensed',sans-serif;font-size:12px;font-weight:700;letter-spacing:3px;text-transform:uppercase;color:var(--green-dk)}\n.hero h1{font-family:'Oswald',sans-serif;font-size:clamp(32px,10vw,56px);font-weight:700;color:var(--txt-hi);letter-spacing:0.02em;line-height:1.04;margin-bottom:20px}\n.hero h1 em{font-style:normal;color:var(--green)}\n.hero-sub{font-size:16px;color:var(--txt-md);max-width:460px;line-height:1.75}\n.hero-sub strong{color:var(--green-dk)}\n.hero-review-badge{display:inline-flex;align-items:center;gap:10px;background:var(--bg-card);border:1px solid var(--border);border-radius:999px;padding:8px 18px 8px 12px;font-size:13px;color:var(--txt-md);margin-top:22px;position:relative;text-decoration:none}\n.hero-review-badge:hover{border-color:var(--green)}\n.hero-review-dot{width:8px;height:8px;border-radius:50%;background:var(--green);flex-shrink:0}\n.hero-review-badge strong{color:var(--txt-hi)}\n\/* PROOF STATS *\/\n.proof{border-bottom:1px solid var(--border)}\n.proof-grid{display:grid;grid-template-columns:repeat(3,1fr)}\n.proof-cell{padding:36px 12px;text-align:center;border-right:1px solid var(--border);text-decoration:none;color:inherit;display:block}\n.proof-cell:last-child{border-right:none}\n.proof-num{font-family:'Oswald',sans-serif;font-size:clamp(36px,9vw,58px);font-weight:700;color:var(--txt-hi);line-height:1;display:block}\n.proof-num em{color:var(--green);font-style:normal}\n.proof-lbl{font-family:'Barlow Condensed',sans-serif;font-size:11px;font-weight:600;letter-spacing:2px;text-transform:uppercase;color:var(--txt-lo);margin-top:10px;display:block}\n\/* SHORT USPS *\/\n.usp-sm{padding:32px 20px}\n\/* HOW IT WORKS *\/\n.steps-grid{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--border);border-radius:4px;overflow:hidden;margin-top:32px}\n.step-col{background:var(--bg-card);padding:28px 22px;text-align:center}\n.step-circle{width:52px;height:52px;background:var(--green);color:#fff;font-family:'Oswald',sans-serif;font-size:22px;font-weight:700;border-radius:50%;display:flex;align-items:center;justify-content:center;margin:0 auto 16px}\n.step-col h4{font-family:'Barlow',sans-serif;font-size:17px;font-weight:800;color:var(--txt-hi);margin-bottom:8px;line-height:1.2}\n.step-col p{font-size:13px;color:var(--txt-md);line-height:1.6}\n\/* WEEK TIMELINE *\/\n.week{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--border);border:1px solid var(--border);border-radius:4px;overflow:hidden;margin-top:24px}\n.week-cell{background:var(--bg-card);padding:20px 12px;text-align:center}\n.week-cell.live{background:var(--green)}\n.week-day{font-family:'Oswald',sans-serif;font-size:20px;font-weight:700;color:var(--txt-hi);line-height:1.1;display:block}\n.week-cell.live .week-day{color:#fff}\n.week-time{font-family:'Oswald',sans-serif;font-size:14px;font-weight:500;color:var(--green-dk);display:block;margin-top:4px}\n.week-cell.live .week-time{color:rgba(255,255,255,0.9)}\n.week-note{font-family:'Barlow Condensed',sans-serif;font-size:11px;font-weight:600;letter-spacing:1.5px;text-transform:uppercase;color:var(--txt-lo);margin-top:10px;display:block;line-height:1.4}\n.week-cell.live .week-note{color:rgba(255,255,255,0.85)}\n\/* DELIVERY ZONES *\/\n.zones-block{border:1px solid var(--border);border-radius:4px;padding:20px;margin-top:24px;background:var(--bg-card)}\n.zones-label{font-family:'Barlow Condensed',sans-serif;font-size:11px;font-weight:700;letter-spacing:3px;text-transform:uppercase;color:var(--txt-lo);margin-bottom:14px;display:block}\n.zones{display:flex;flex-wrap:wrap;gap:8px}\n.zone{font-family:'Barlow Condensed',sans-serif;font-size:12px;font-weight:600;letter-spacing:1.5px;background:var(--bg-pill);border:1px solid var(--border);color:var(--txt-md);padding:6px 14px;border-radius:3px;text-transform:uppercase}\n.zone.hub{background:var(--green);border-color:var(--green);color:#fff}\n.zones-sub{font-family:'Barlow Condensed',sans-serif;font-size:11px;font-weight:600;letter-spacing:2px;text-transform:uppercase;color:var(--txt-lo);margin:18px 0 10px;display:block}\n\/* ZONES DROPDOWN *\/\n.zones-more{margin-top:20px;border-top:1px solid var(--border);padding-top:16px}\n.zones-more summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:12px;font-family:'Barlow Condensed',sans-serif;font-size:13px;font-weight:700;letter-spacing:2px;text-transform:uppercase;color:var(--green-dk)}\n.zones-more summary::-webkit-details-marker{display:none}\n.zones-more summary:hover{color:var(--green)}\n.zones-chev{width:22px;height:22px;border:1px solid var(--border);border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0;background:var(--bg-pill);transition:transform 0.2s;font-size:10px;line-height:1}\n.zones-more[open] .zones-chev{transform:rotate(180deg)}\n.zones-more-body{padding-top:16px}\n.zone-group{margin-bottom:16px}\n.zone-group:last-child{margin-bottom:0}\n.zone-group h5{font-family:'Barlow Condensed',sans-serif;font-size:11px;font-weight:700;letter-spacing:2px;text-transform:uppercase;color:var(--green-dk);margin-bottom:6px}\n.zone-group p{font-size:13.5px;color:var(--txt-md);line-height:1.8}\n.zones-foot{font-size:13px;color:var(--txt-lo);line-height:1.7;margin-top:16px;padding-top:14px;border-top:1px solid var(--border)}\n.zones-foot a{color:var(--green-dk);font-weight:700;text-decoration:underline}\n\/* MAP *\/\n.map-wrap{border:1px solid var(--border);border-radius:4px;overflow:hidden;margin-top:24px;background:var(--bg-card);position:relative;z-index:0}\n#ulo-map{height:380px;width:100%;background:var(--bg-card2)}\n.leaflet-container{z-index:0;font-family:'Barlow',sans-serif;background:var(--bg-card2)}\n\/* Softens raw OSM tiles into a pale, cream basemap - no API key needed.\n   Remove this rule if you ever want full-colour map tiles. *\/\n.leaflet-tile{filter:grayscale(0.92) brightness(1.06) contrast(0.86) sepia(0.12)}\n.leaflet-container a{color:var(--green-dk)}\n.leaflet-tooltip{font-family:'Barlow Condensed',sans-serif;font-size:12px;font-weight:700;letter-spacing:1px;text-transform:uppercase;color:var(--txt-hi);border:1px solid var(--border);border-radius:3px;box-shadow:none;padding:4px 9px}\n.leaflet-popup-content{font-size:13px;color:var(--txt-md)}\n.leaflet-popup-content b{color:var(--txt-hi)}\n.leaflet-control-attribution{font-size:9px}\n.map-legend{display:flex;flex-wrap:wrap;gap:16px;justify-content:center;padding:12px 16px;border-top:1px solid var(--border);background:var(--bg-card)}\n.map-legend span{display:inline-flex;align-items:center;gap:7px;font-family:'Barlow Condensed',sans-serif;font-size:11px;font-weight:600;letter-spacing:1.5px;text-transform:uppercase;color:var(--txt-lo)}\n.legend-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}\n.legend-dot.hub{background:var(--green-dk)}\n.legend-dot.city{background:var(--green);opacity:0.75}\n.legend-dot.ring{background:transparent;border:2px solid var(--green);opacity:0.7}\n.map-caption{font-family:'Barlow Condensed',sans-serif;font-size:11px;font-weight:600;letter-spacing:2px;text-transform:uppercase;color:var(--txt-lo);padding:12px 16px;border-top:1px solid var(--border);text-align:center}\n.map-fallback{padding:24px 18px;text-align:center;font-size:14px;color:var(--txt-md)}\n@media(max-width:480px){#ulo-map{height:300px}}\n\/* CUTOFF CALLOUT *\/\n.cutoff{display:flex;gap:14px;align-items:flex-start;background:var(--bg-card2);border-left:4px solid var(--green);border-radius:3px;padding:16px 18px;margin-top:16px}\n.cutoff-mark{font-family:'Oswald',sans-serif;font-size:16px;font-weight:700;color:var(--green-dk);line-height:1.4;flex-shrink:0;text-align:center}\n.cutoff-mark span{display:block;font-size:11px;font-family:'Barlow Condensed',sans-serif;letter-spacing:1.5px}\n.cutoff p{font-size:14px;color:var(--txt-md);line-height:1.6}\n.cutoff strong{color:var(--txt-hi)}\n\/* DELIVERY WINDOW *\/\n.window{display:flex;gap:14px;align-items:center;background:var(--bg-card);border:1px solid var(--border);border-radius:3px;padding:16px 18px;margin-top:16px}\n.window-mark{font-family:'Oswald',sans-serif;font-size:16px;font-weight:700;color:var(--green-dk);line-height:1.4;flex-shrink:0;text-align:center}\n.window-mark span{display:block;font-size:11px;font-family:'Barlow Condensed',sans-serif;letter-spacing:1.5px}\n.window p{font-size:14px;color:var(--txt-md);line-height:1.6}\n.window strong{color:var(--txt-hi)}\n\/* PLANS *\/\n.plan-header{text-align:center;margin-bottom:28px}\n.plan-cards{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--border);border-radius:4px;overflow:hidden;margin-bottom:16px}\n.plan-card{background:var(--bg-card);padding:28px 10px;text-align:center;text-decoration:none;color:inherit;display:block;transition:background 0.2s}\n.plan-card:hover{background:var(--bg-card2)}\n.plan-card.featured{background:var(--green)}\n.plan-card.featured:hover{background:var(--green-dk)}\n.plan-badge{display:inline-block;background:#fff;color:var(--green-dk);font-family:'Barlow Condensed',sans-serif;font-size:10px;font-weight:700;letter-spacing:2px;text-transform:uppercase;padding:4px 10px;border-radius:2px;margin-bottom:14px}\n.plan-num{font-family:'Oswald',sans-serif;font-size:clamp(38px,9vw,56px);font-weight:700;color:var(--txt-hi);line-height:1;display:block}\n.plan-card.featured .plan-num{color:#fff}\n.plan-lbl{font-family:'Barlow Condensed',sans-serif;font-size:11px;font-weight:700;letter-spacing:2.5px;text-transform:uppercase;color:var(--txt-lo);margin:8px 0 14px;display:block}\n.plan-card.featured .plan-lbl{color:rgba(255,255,255,0.75)}\n.plan-desc{font-size:13px;color:var(--txt-md);line-height:1.6;margin-bottom:18px}\n.plan-card.featured .plan-desc{color:rgba(255,255,255,0.9)}\n.plan-cta{display:inline-block;font-family:'Barlow Condensed',sans-serif;font-size:11px;font-weight:700;letter-spacing:2px;text-transform:uppercase;color:var(--txt-hi);background:var(--bg-pill);border:1px solid var(--border);padding:10px 12px;border-radius:3px}\n.plan-card.featured .plan-cta{background:rgba(0,0,0,0.22);border-color:rgba(255,255,255,0.3);color:#fff}\n@media(max-width:560px){.plan-cards{grid-template-columns:1fr 1fr}}\n\/* CONTACT FOOTER *\/\n.contact-note{text-align:center}\n.contact-note h3{font-family:'Oswald',sans-serif;font-size:22px;font-weight:700;color:var(--txt-hi);margin-bottom:8px}\n.contact-note p{font-size:15px;color:var(--txt-md);line-height:1.7;max-width:460px;margin:0 auto}\n.contact-note a{color:var(--green-dk);font-weight:700;text-decoration:underline}\n@media(max-width:480px){\n  .proof-cell{padding:28px 8px}\n  .steps-grid{grid-template-columns:1fr}\n  .step-col{padding:20px 14px}\n  .step-col h4{font-size:15px}\n  .section,.hero{padding-left:16px;padding-right:16px}\n  .week-day{font-size:17px}\n}\n@media(max-width:360px){\n  .proof-num{font-size:32px}\n  .step-col h4{font-size:13px}\n}\n\u003c\/style\u003e\n\u003cdiv class=\"sb\"\u003e\n\u003c!-- HERO --\u003e\n\u003cdiv class=\"hero\"\u003e\n\u003cdiv class=\"hero-eyebrow\"\u003e\n\u003cdiv class=\"hero-eyebrow-line\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cspan\u003eA NIGERIAN Family Kitchen in Toronto\u003c\/span\u003e\n\u003c\/div\u003e\n\u003ch1\u003eAuthentic\u003cbr\u003eNigerian\u003cbr\u003eMeal Prep,\u003cbr\u003e\u003cem\u003eDelivered Fresh for Toronto\u003c\/em\u003e\n\u003c\/h1\u003e\n\u003cp class=\"hero-sub\"\u003eHomestyle Nigerian meals cooked by hand by \u003cstrong\u003eUloma and her son Obi\u003c\/strong\u003e. We bring it to your door fresh every Saturday in Toronto, in two delivery windows: \u003cstrong\u003e10 AM to 1 PM\u003c\/strong\u003e or \u003cstrong\u003e2 PM to 5 PM\u003c\/strong\u003e. Just reheat, and serve.\u003c\/p\u003e\n\u003ca class=\"hero-review-badge\" href=\"#plans\"\u003e\u003cspan class=\"hero-review-dot\"\u003e\u003c\/span\u003e \u003cspan\u003eNew menu every week. \u003cstrong\u003eOrder by Wednesday, 11:59 PM.\u003c\/strong\u003e\u003c\/span\u003e\u003c\/a\u003e\n\u003c\/div\u003e\n\u003c!-- PROOF STATS --\u003e\n\u003cdiv class=\"proof\"\u003e\n\u003cdiv class=\"proof-grid\"\u003e\n\u003cdiv class=\"proof-cell\"\u003e\n\u003cspan class=\"proof-num\"\u003e40\u003cem\u003e+\u003c\/em\u003e\u003c\/span\u003e\u003cspan class=\"proof-lbl\"\u003eYears of Experience\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"proof-cell\"\u003e\n\u003cspan class=\"proof-num\"\u003e0\u003c\/span\u003e\u003cspan class=\"proof-lbl\"\u003eSubscriptions\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"proof-cell\"\u003e\n\u003cspan class=\"proof-num\"\u003e24\u003cem\u003eoz\u003c\/em\u003e\u003c\/span\u003e\u003cspan class=\"proof-lbl\"\u003ePortions\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!-- CRAFTED BY MOM AND SON --\u003e\n\u003cdiv class=\"section usp-sm\"\u003e\n\u003cdiv class=\"eyebrow\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0723\/3699\/8453\/files\/ChatGPT_Image_Sep_11_2026_09_51_30_AM.png?v=1789134723\" alt=\"\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"eyebrow\"\u003eFamily behind each meal\u003c\/div\u003e\n\u003cdiv class=\"heading\"\u003eCrafted by Mom and Son\u003c\/div\u003e\n\u003cp class=\"lead\"\u003eUloma has cooked Nigerian food for \u003cstrong\u003emore than 40 years\u003c\/strong\u003e. She and her son Obi created ULOFoods to bring Nigerian meals to Toronto homes. \u003cstrong\u003e\u003cem\u003eUlo\u003c\/em\u003e is the Igbo word for home\u003c\/strong\u003e, and that is exactly how the food tastes.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c!-- THE FOOD --\u003e\n\u003cdiv class=\"section usp-sm\"\u003e\n\u003cdiv class=\"eyebrow\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0723\/3699\/8453\/files\/meal_callouts_okra_green.png?v=1785966644\" alt=\"\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"eyebrow\"\u003eThe Food\u003c\/div\u003e\n\u003cdiv class=\"heading\"\u003eAuthentic Nigerian Dishes\u003c\/div\u003e\n\u003cp class=\"lead\"\u003eSmoky Jollof Rice, rich Egusi, fluffy Pounded Yam, and more! Our food tastes like home, with a few fusion dishes to keep the menu exciting.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c!-- PORTIONS --\u003e\n\u003cdiv class=\"section usp-sm\"\u003e\n\u003cdiv class=\"eyebrow\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0723\/3699\/8453\/files\/brim_graphic_green.png?v=1785966801\" alt=\"\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"eyebrow\"\u003ePortions\u003c\/div\u003e\n\u003cdiv class=\"heading\"\u003eMom-Style Portions\u003c\/div\u003e\n\u003cp class=\"lead\"\u003eUloma fills your plate the way she fills a plate at home. Every meal is a generous\u003cstrong\u003e 24 oz portion.\u003c\/strong\u003e\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c!-- WEEKLY MENU --\u003e\n\u003cdiv class=\"section usp-sm\"\u003e\n\u003cdiv class=\"eyebrow\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0723\/3699\/8453\/files\/carousel_menu_options_small_c88ad0c7-4ec1-42f8-a452-dadab32bc660.gif?v=1785967836\" alt=\"\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"eyebrow\"\u003eThe Menu\u003c\/div\u003e\n\u003cdiv class=\"heading\"\u003eA New Menu Every Week\u003c\/div\u003e\n\u003cp class=\"lead\"\u003e\u003cstrong\u003eThe menu changes every week.\u003c\/strong\u003e Uloma picks new dishes each time, so you never eat the same week twice.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c!-- FRESH --\u003e\n\u003cdiv class=\"section usp-sm\"\u003e\n\u003cdiv class=\"eyebrow\"\u003eFresh Food\u003c\/div\u003e\n\u003cdiv class=\"heading\"\u003eCooked Fresh, Never Frozen\u003c\/div\u003e\n\u003cp class=\"lead\"\u003eNothing sits in a freezer. \u003cstrong\u003eEvery meal is cooked fresh on your delivery day.\u003c\/strong\u003e Just reheat and serve. Sprinkle it lightly with water, cover it with a damp paper towel, and microwave for 30–45 seconds.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c!-- DELIVERY --\u003e\n\u003cdiv class=\"section\"\u003e\n\u003cdiv class=\"eyebrow\"\u003eDelivery\u003c\/div\u003e\n\u003cdiv class=\"heading\"\u003eSaturday Delivery Across the GTA\u003c\/div\u003e\n\u003cp class=\"lead\"\u003eWe deliver fresh meals \u003cstrong\u003eevery Saturday in two windows, 10 AM to 1 PM and 2 PM to 5 PM\u003c\/strong\u003e, to Toronto and the towns within about \u003cstrong\u003e30 miles of our kitchen\u003c\/strong\u003e. Orders close \u003cstrong\u003eWednesday at 11:59 PM\u003c\/strong\u003e for that Saturday.\u003c\/p\u003e\n\u003cdiv class=\"week\"\u003e\n\u003cdiv class=\"week-cell\"\u003e\n\u003cspan class=\"week-day\"\u003eWednesday\u003c\/span\u003e \u003cspan class=\"week-time\"\u003e11:59 PM\u003c\/span\u003e \u003cspan class=\"week-note\"\u003eOrders Close\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"week-cell\"\u003e\n\u003cspan class=\"week-day\"\u003eThu \u0026amp; Fri\u003c\/span\u003e \u003cspan class=\"week-time\"\u003eAll Day\u003c\/span\u003e \u003cspan class=\"week-note\"\u003eUloma Shops and Preps\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"week-cell live\"\u003e\n\u003cspan class=\"week-day\"\u003eSaturday\u003c\/span\u003e \u003cspan class=\"week-time\"\u003e10 AM – 1 PM\u003cbr\u003e2 PM – 5 PM\u003c\/span\u003e \u003cspan class=\"week-note\"\u003eFresh at Your Door\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"cutoff\"\u003e\n\u003cspan class=\"cutoff-mark\"\u003e11:59 PM\u003cspan\u003eWednesday\u003c\/span\u003e\u003c\/span\u003e\n\u003cp\u003e\u003cstrong\u003eDo not miss the cutoff.\u003c\/strong\u003e We only buy what we need for the orders we have, so nothing is wasted and nothing is frozen. If you order after Wednesday at 11:59 PM, you go on next Saturday's list.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"window\"\u003e\n\u003cspan class=\"window-mark\"\u003e10–1\u003cbr\u003e2–5\u003cspan\u003eSaturday\u003c\/span\u003e\u003c\/span\u003e\n\u003cp\u003e\u003cstrong\u003eWe deliver in two windows: 10 AM to 1 PM and 2 PM to 5 PM.\u003c\/strong\u003e Obi texts you before he sets out, so you know roughly when to expect your meals.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c!-- ZONES --\u003e\n\u003cdiv class=\"zones-block\"\u003e\n\u003cspan class=\"zones-label\"\u003eWe deliver to\u003c\/span\u003e\n\u003cdiv class=\"zones\"\u003e\n\u003cspan class=\"zone hub\"\u003eToronto\u003c\/span\u003e\u003cspan class=\"zone\"\u003eNorth York\u003c\/span\u003e\u003cspan class=\"zone\"\u003eScarborough\u003c\/span\u003e\u003cspan class=\"zone\"\u003eEtobicoke\u003c\/span\u003e\u003cspan class=\"zone\"\u003eYork\u003c\/span\u003e\u003cspan class=\"zone\"\u003eEast York\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cspan class=\"zones-sub\"\u003eAnd across the wider GTA\u003c\/span\u003e\n\u003cdiv class=\"zones\"\u003e\n\u003cspan class=\"zone\"\u003eMississauga\u003c\/span\u003e\u003cspan class=\"zone\"\u003eBrampton\u003c\/span\u003e\u003cspan class=\"zone\"\u003eVaughan\u003c\/span\u003e\u003cspan class=\"zone\"\u003eMarkham\u003c\/span\u003e\u003cspan class=\"zone\"\u003eRichmond Hill\u003c\/span\u003e\u003cspan class=\"zone\"\u003eOakville\u003c\/span\u003e\u003cspan class=\"zone\"\u003ePickering\u003c\/span\u003e\u003cspan class=\"zone\"\u003eAjax\u003c\/span\u003e\u003cspan class=\"zone\"\u003eWhitby\u003c\/span\u003e\u003cspan class=\"zone\"\u003eMilton\u003c\/span\u003e\u003cspan class=\"zone\"\u003eBurlington\u003c\/span\u003e\u003cspan class=\"zone\"\u003eHalton Hills\u003c\/span\u003e\u003cspan class=\"zone\"\u003eCaledon\u003c\/span\u003e\u003cspan class=\"zone\"\u003eAurora\u003c\/span\u003e\u003cspan class=\"zone\"\u003eNewmarket\u003c\/span\u003e\u003cspan class=\"zone\"\u003eKing City\u003c\/span\u003e\u003cspan class=\"zone\"\u003eStouffville\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c!-- SEO DROPDOWN --\u003e\n\u003cdetails class=\"zones-more\"\u003e\n\u003csummary\u003eSee every city and neighbourhood we serve \u003cspan class=\"zones-chev\"\u003e▼\u003c\/span\u003e\u003c\/summary\u003e\n\u003cdiv class=\"zones-more-body\"\u003e\n\u003cdiv class=\"zone-group\"\u003e\n\u003ch5\u003eToronto\u003c\/h5\u003e\n\u003cp\u003eDowntown Toronto, CityPlace, Fort York, Liberty Village, King West, Queen West, Entertainment District, Financial District, St. Lawrence, Distillery District, Corktown, Regent Park, Cabbagetown, Yorkville, The Annex, Little Italy, Little Portugal, Parkdale, Roncesvalles, High Park, The Junction, Bloor West Village, Swansea, Trinity Bellwoods, Leslieville, Riverdale, The Danforth, Greektown, The Beaches, Upper Beaches, East York, Leaside, Thorncliffe Park, Don Mills, Flemingdon Park, North York, Willowdale, Bayview Village, Don Valley Village, Yorkdale, Lawrence Heights, Forest Hill, Midtown, Davisville, Eglinton West, Weston, Mount Dennis, Jane and Finch, Downsview, Rexdale, Humber Bay, Mimico, New Toronto, Long Branch, Alderwood, Islington-City Centre, Kingsway, Scarborough, Agincourt, Malvern, Rouge, Guildwood, Cliffside, Birch Cliff, Highland Creek, West Hill.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"zone-group\"\u003e\n\u003ch5\u003ePeel Region: Mississauga, Brampton \u0026amp; Caledon\u003c\/h5\u003e\n\u003cp\u003eMississauga, Port Credit, Clarkson, Lorne Park, Cooksville, Erin Mills, Churchill Meadows, Meadowvale, Streetsville, Lisgar, Malton, Applewood, Dixie, Square One, Brampton, Bramalea, Heart Lake, Springdale, Castlemore, Mount Pleasant, Fletcher's Meadow, Caledon, Bolton, Mayfield West, Caledon East, Palgrave.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"zone-group\"\u003e\n\u003ch5\u003eYork Region: Vaughan, Markham \u0026amp; North\u003c\/h5\u003e\n\u003cp\u003eVaughan, Woodbridge, Maple, Concord, Thornhill, Kleinburg, Vaughan Metropolitan Centre, Markham, Unionville, Milliken, Cornell, Markham Village, Cathedraltown, Richmond Hill, Oak Ridges, Langstaff, Aurora, Newmarket, King City, Nobleton, Whitchurch-Stouffville, Stouffville, Schomberg.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"zone-group\"\u003e\n\u003ch5\u003eDurham Region\u003c\/h5\u003e\n\u003cp\u003ePickering, Pickering Village, Rougemount, Amberlea, Ajax, Ajax Waterfront, Whitby, Brooklin, Port Whitby.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"zone-group\"\u003e\n\u003ch5\u003eHalton Region\u003c\/h5\u003e\n\u003cp\u003eOakville, Bronte, Glen Abbey, River Oaks, Burlington, Aldershot, Milton, Georgetown, Halton Hills, Acton.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cp class=\"zones-foot\"\u003eDo not see your street on the list? Message Obi on our \u003ca href=\"\/pages\/contact\"\u003eContact Page\u003c\/a\u003e and he will tell you if we can reach you this Saturday.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/details\u003e\n\u003c\/div\u003e\n\u003c!-- LEAFLET MAP --\u003e\n\u003cdiv class=\"map-wrap\"\u003e\n\u003cdiv id=\"ulo-map\" role=\"img\"\u003e\n\u003cdiv class=\"map-fallback\"\u003eLoading our delivery map…\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"map-legend\"\u003e\n\u003cspan\u003e\u003cspan class=\"legend-dot hub\"\u003e\u003c\/span\u003e Our Kitchen\u003c\/span\u003e \u003cspan\u003e\u003cspan class=\"legend-dot city\"\u003e\u003c\/span\u003e Delivery Cities\u003c\/span\u003e \u003cspan\u003e\u003cspan class=\"legend-dot ring\"\u003e\u003c\/span\u003e 30 Mile Radius\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"map-caption\"\u003eOur delivery area: Toronto and 30 miles around our kitchen\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!--\n  LEAFLET MAP NOTES\n  - Leaflet 1.9.4 is loaded from cdnjs at the top of this file. No API key, no billing.\n  - Tiles come straight from OpenStreetMap. No API key, no quota dashboard.\n    The pale look is a CSS filter (.leaflet-tile), not a paid basemap.\n    OSM attribution is required and renders in the map corner - leave it in place.\n    If the store ever gets very heavy traffic, move to a paid tile host\n    (MapTiler, Mapbox, Thunderforest) and swap the one L.tileLayer URL below.\n  - To move the kitchen pin, edit ULO_HUB below.\n  - To add or remove a city dot, edit the ULO_CITIES array below.\n  - Radius is set in metres: 48280 m = 30 miles. For 25 miles use 40234.\n--\u003e \u003cscript\u003e\n(function () {\n  var ULO_HUB = { lat: 43.6398, lng: -79.3936, label: \"Uloma's Kitchen\", sub: \"10 Capreol Crt, Toronto\" };\n  var ULO_RADIUS_M = 48280; \/\/ 30 miles\n  var ULO_CITIES = [\n    { n: \"North York\",    lat: 43.7615, lng: -79.4111 },\n    { n: \"Scarborough\",   lat: 43.7764, lng: -79.2318 },\n    { n: \"Etobicoke\",     lat: 43.6205, lng: -79.5132 },\n    { n: \"East York\",     lat: 43.6907, lng: -79.3300 },\n    { n: \"York\",          lat: 43.6896, lng: -79.4772 },\n    { n: \"Mississauga\",   lat: 43.5890, lng: -79.6441 },\n    { n: \"Brampton\",      lat: 43.6832, lng: -79.7629 },\n    { n: \"Vaughan\",       lat: 43.8361, lng: -79.4983 },\n    { n: \"Woodbridge\",    lat: 43.7758, lng: -79.5964 },\n    { n: \"Thornhill\",     lat: 43.8156, lng: -79.4239 },\n    { n: \"Markham\",       lat: 43.8561, lng: -79.3370 },\n    { n: \"Richmond Hill\", lat: 43.8828, lng: -79.4403 },\n    { n: \"Aurora\",        lat: 44.0065, lng: -79.4504 },\n    { n: \"Newmarket\",     lat: 44.0592, lng: -79.4613 },\n    { n: \"King City\",     lat: 43.9260, lng: -79.5290 },\n    { n: \"Stouffville\",   lat: 43.9709, lng: -79.2445 },\n    { n: \"Bolton\",        lat: 43.8745, lng: -79.7324 },\n    { n: \"Caledon East\",  lat: 43.8686, lng: -79.8730 },\n    { n: \"Pickering\",     lat: 43.8384, lng: -79.0868 },\n    { n: \"Ajax\",          lat: 43.8509, lng: -79.0204 },\n    { n: \"Whitby\",        lat: 43.8975, lng: -78.9429 },\n    { n: \"Oakville\",      lat: 43.4675, lng: -79.6877 },\n    { n: \"Burlington\",    lat: 43.3255, lng: -79.7990 },\n    { n: \"Milton\",        lat: 43.5183, lng: -79.8774 },\n    { n: \"Georgetown\",    lat: 43.6500, lng: -79.9155 }\n  ];\n\n  var GREEN = \"#579441\", GREEN_DK = \"#43762f\";\n  var tries = 0;\n\n  function init() {\n    var el = document.getElementById(\"ulo-map\");\n    if (!el) return;\n    if (!window.L) {\n      if (++tries \u003e 60) {\n        el.innerHTML = '\u003cdiv class=\"map-fallback\"\u003eWe deliver across Toronto and the GTA. Message Obi to check your street.\u003c\/div\u003e';\n        return;\n      }\n      return setTimeout(init, 150);\n    }\n    el.innerHTML = \"\";\n\n    var map = L.map(el, {\n      center: [ULO_HUB.lat, ULO_HUB.lng],\n      zoom: 9,\n      scrollWheelZoom: false,\n      zoomControl: true,\n      attributionControl: true\n    });\n\n    \/\/ Keyless OpenStreetMap tiles. Softened to a pale basemap by the CSS\n    \/\/ filter on .leaflet-tile below, so no API key or billing is ever needed.\n    L.tileLayer(\"https:\/\/tile.openstreetmap.org\/{z}\/{x}\/{y}.png\", {\n      attribution: '\u0026copy; \u003ca href=\"https:\/\/www.openstreetmap.org\/copyright\"\u003eOpenStreetMap\u003c\/a\u003e contributors',\n      maxZoom: 19\n    }).addTo(map);\n\n    var ring = L.circle([ULO_HUB.lat, ULO_HUB.lng], {\n      radius: ULO_RADIUS_M,\n      color: GREEN,\n      weight: 2,\n      opacity: 0.7,\n      fillColor: GREEN,\n      fillOpacity: 0.08,\n      interactive: false\n    }).addTo(map);\n\n    ULO_CITIES.forEach(function (c) {\n      L.circleMarker([c.lat, c.lng], {\n        radius: 6,\n        color: \"#ffffff\",\n        weight: 1.5,\n        fillColor: GREEN,\n        fillOpacity: 0.85\n      })\n        .addTo(map)\n        .bindTooltip(c.n, { direction: \"top\", offset: [0, -6] })\n        .bindPopup(\"\u003cb\u003e\" + c.n + \"\u003c\/b\u003e\u003cbr\u003eSaturday delivery\u003cbr\u003e10 AM – 1 PM or 2 PM – 5 PM\");\n    });\n\n    L.circleMarker([ULO_HUB.lat, ULO_HUB.lng], {\n      radius: 9,\n      color: \"#ffffff\",\n      weight: 3,\n      fillColor: GREEN_DK,\n      fillOpacity: 1\n    })\n      .addTo(map)\n      .bindTooltip(ULO_HUB.label, { direction: \"top\", offset: [0, -9], permanent: false })\n      .bindPopup(\"\u003cb\u003e\" + ULO_HUB.label + \"\u003c\/b\u003e\u003cbr\u003e\" + ULO_HUB.sub);\n\n    map.fitBounds(ring.getBounds(), { padding: [16, 16] });\n\n    \/\/ Scroll-wheel zoom only once the visitor clicks into the map\n    map.on(\"focus click\", function () { map.scrollWheelZoom.enable(); });\n    map.on(\"blur mouseout\", function () { map.scrollWheelZoom.disable(); });\n\n    setTimeout(function () { map.invalidateSize(); }, 300);\n  }\n\n  if (document.readyState !== \"loading\") { init(); }\n  else { document.addEventListener(\"DOMContentLoaded\", init); }\n})();\n\u003c\/script\u003e\n\u003c\/div\u003e\n\u003c!-- HOW IT WORKS --\u003e\n\u003cdiv class=\"section\"\u003e\n\u003cdiv class=\"eyebrow\"\u003eSimple Process\u003c\/div\u003e\n\u003cdiv class=\"heading\"\u003eHow It Works\u003c\/div\u003e\n\u003cp class=\"lead\"\u003eFour easy steps to a week of good food.\u003c\/p\u003e\n\u003cdiv class=\"steps-grid\"\u003e\n\u003cdiv class=\"step-col\"\u003e\n\u003cdiv class=\"step-circle\"\u003e1\u003c\/div\u003e\n\u003ch4\u003ePick Your Meals\u003c\/h4\u003e\n\u003cp\u003eLook at this week's menu and choose what you want.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"step-col\"\u003e\n\u003cdiv class=\"step-circle\"\u003e2\u003c\/div\u003e\n\u003ch4\u003eOrder by Wednesday\u003c\/h4\u003e\n\u003cp\u003eOrders close Wednesday at 11:59 PM for that Saturday.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"step-col\"\u003e\n\u003cdiv class=\"step-circle\"\u003e3\u003c\/div\u003e\n\u003ch4\u003eWe Deliver Saturday\u003c\/h4\u003e\n\u003cp\u003eYour fresh meals arrive between 10 AM and 1 PM or 2 PM and 5 PM.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"step-col\"\u003e\n\u003cdiv class=\"step-circle\"\u003e4\u003c\/div\u003e\n\u003ch4\u003eYou Enjoy\u003c\/h4\u003e\n\u003cp\u003eHeat it up and eat. No cooking. No cleanup.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!-- PLANS --\u003e\n\u003cdiv class=\"section\" id=\"plans\"\u003e\n\u003cdiv class=\"plan-header\"\u003e\n\u003cdiv class=\"eyebrow\"\u003eGet Started\u003c\/div\u003e\n\u003cdiv class=\"heading\"\u003eWant More Than 5 Meals?\u003c\/div\u003e\n\u003cp class=\"lead\" style=\"max-width: 420px; margin: 0 auto;\"\u003ePick the plan that fits your week. \u003cstrong\u003eNo subscription.\u003c\/strong\u003e Order the weeks you want and skip the weeks you do not.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"plan-cards\"\u003e\n\u003ca href=\"\/products\/6-meal-plan\" class=\"plan-card\"\u003e\u003cspan class=\"plan-num\"\u003e6\u003c\/span\u003e \u003cspan class=\"plan-lbl\"\u003eMeal Plan\u003c\/span\u003e\n\u003cp class=\"plan-desc\"\u003eA little extra for your week.\u003c\/p\u003e\n\u003cspan class=\"plan-cta\"\u003eShop 6 Meals\u003c\/span\u003e\u003c\/a\u003e\u003ca href=\"\/products\/7-meal-plan\" class=\"plan-card\"\u003e\u003cspan class=\"plan-num\"\u003e7\u003c\/span\u003e \u003cspan class=\"plan-lbl\"\u003eMeal Plan\u003c\/span\u003e\n\u003cp class=\"plan-desc\"\u003eOne meal for every day.\u003c\/p\u003e\n\u003cspan class=\"plan-cta\"\u003eShop 7 Meals\u003c\/span\u003e\u003c\/a\u003e\u003ca href=\"\/products\/10-meal-plan\" class=\"plan-card featured\"\u003e\n\u003cdiv class=\"plan-badge\"\u003eMost Popular\u003c\/div\u003e\n\u003cspan class=\"plan-num\"\u003e10\u003c\/span\u003e \u003cspan class=\"plan-lbl\"\u003eMeal Plan\u003c\/span\u003e\n\u003cp class=\"plan-desc\"\u003eCovers most of your week.\u003c\/p\u003e\n\u003cspan class=\"plan-cta\"\u003eShop 10 Meals\u003c\/span\u003e\u003c\/a\u003e\u003ca href=\"\/products\/15-meal-plan\" class=\"plan-card\"\u003e\u003cspan class=\"plan-num\"\u003e15\u003c\/span\u003e \u003cspan class=\"plan-lbl\"\u003eMeal Plan\u003c\/span\u003e\n\u003cp class=\"plan-desc\"\u003eLunch and dinner every day.\u003c\/p\u003e\n\u003cspan class=\"plan-cta\"\u003eShop 15 Meals\u003c\/span\u003e\u003c\/a\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!-- CONTACT --\u003e\n\u003cdiv class=\"section\"\u003e\n\u003cdiv class=\"contact-note\"\u003e\n\u003ch3\u003eGot Questions?\u003c\/h3\u003e\n\u003cp\u003eNot sure which plan to pick? Want to know if we come to your street? Obi answers every message. See our \u003ca href=\"\/pages\/contact\"\u003eContact Page\u003c\/a\u003e.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e","brand":"ULO Foods","offers":[{"title":"Default Title","offer_id":45862473269301,"sku":null,"price":220.0,"currency_code":"CAD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0723\/3699\/8453\/files\/0_cd74b120-7b84-4747-b1aa-dba588ebaba1.jpg?v=1790000363"}],"url":"https:\/\/ulofoods.ca\/collections\/meal-plans.oembed","provider":"ULO Foods","version":"1.0","type":"link"}