{"id":2427,"date":"2026-05-21T02:02:00","date_gmt":"2026-05-21T02:02:00","guid":{"rendered":"https:\/\/marilynrecipes.com\/?p=2427"},"modified":"2026-05-19T18:51:19","modified_gmt":"2026-05-19T18:51:19","slug":"goat-cheese-and-tomato-salad","status":"publish","type":"post","link":"https:\/\/marilynrecipes.com\/index.php\/2026\/05\/21\/goat-cheese-and-tomato-salad\/","title":{"rendered":"Goat Cheese and Tomato Salad Fresh, Creamy, and Full of Summer Flavor"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">There is something so comforting about a simple Goat Cheese and Tomato Salad. I always return to this recipe when I want something fresh, colorful, and satisfying without spending hours in the kitchen. The creamy goat cheese melts slightly into the juicy tomatoes, and every bite tastes like sunshine on a warm afternoon.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Hi\ud83d\udc4b I\u2019m MARILYN, a 34-year-old from the United Kingdom. Cooking is my passion, and I love sharing delicious, easy-to-follow recipes. Join me on marilynrecipes.com to explore a world of culinary delights, from comforting classics to innovative creations. Let&#8217;s make cooking fun and enjoyable for everyone! Cooking is about more than just food it\u2019s about sharing stories and making memories.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I first made this Goat Cheese and Tomato Salad during a family lunch in late summer. I had a basket full of ripe tomatoes sitting on my counter, and I wanted to create something simple but beautiful. I opened the fridge, spotted creamy goat cheese, fresh basil, and olive oil, and this lovely salad came together naturally.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Now, I make this Goat Cheese and Tomato Salad almost every week when tomatoes are in season. I love how elegant it looks on the table, yet it feels completely effortless. Whether I serve it beside grilled chicken, toasted bread, or pasta, everyone always asks for more.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This Goat Cheese and Tomato Salad reminds me that the best meals do not need complicated ingredients. Fresh produce, good olive oil, and a little love create magic every single time.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1024\" height=\"1024\" src=\"https:\/\/marilynrecipes.com\/wp-content\/uploads\/2026\/05\/RECIPES_Goat_cheese_and_tomato_salad_on_a_rustic_ceramic_plate__f2e0ab18-d250-4d4c-89d3-dbd6098fa596.png\" alt=\"\" class=\"wp-image-2465\" srcset=\"https:\/\/marilynrecipes.com\/wp-content\/uploads\/2026\/05\/RECIPES_Goat_cheese_and_tomato_salad_on_a_rustic_ceramic_plate__f2e0ab18-d250-4d4c-89d3-dbd6098fa596.png 1024w, https:\/\/marilynrecipes.com\/wp-content\/uploads\/2026\/05\/RECIPES_Goat_cheese_and_tomato_salad_on_a_rustic_ceramic_plate__f2e0ab18-d250-4d4c-89d3-dbd6098fa596-300x300.png 300w, https:\/\/marilynrecipes.com\/wp-content\/uploads\/2026\/05\/RECIPES_Goat_cheese_and_tomato_salad_on_a_rustic_ceramic_plate__f2e0ab18-d250-4d4c-89d3-dbd6098fa596-150x150.png 150w, https:\/\/marilynrecipes.com\/wp-content\/uploads\/2026\/05\/RECIPES_Goat_cheese_and_tomato_salad_on_a_rustic_ceramic_plate__f2e0ab18-d250-4d4c-89d3-dbd6098fa596-768x768.png 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Why I Love Making This Recipe<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">I adore this recipe because it feels light yet comforting at the same time. The tomatoes bring sweetness and freshness, while the goat cheese adds creamy richness with a slightly tangy flavor.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This salad also saves me on busy days. I can prepare everything in less than fifteen minutes, and it still feels special enough for guests. When friends come over unexpectedly, I often place this Goat Cheese and Tomato Salad in the center of the table with crusty bread and a chilled drink.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I also love how flexible this recipe can be. Sometimes I add avocado, cucumber, or toasted nuts. Other times, I drizzle balsamic glaze over the top for extra sweetness. The base recipe always works beautifully.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Most importantly, this salad brings people together. Everyone gathers around colorful food, and conversations flow naturally when the table looks inviting and vibrant.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Ingredients &amp; Little Kitchen Secrets<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The secret to the best Goat Cheese and Tomato Salad starts with ripe tomatoes. I always choose the freshest tomatoes I can find because they create the heart of the recipe.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Ingredients<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>4 large ripe tomatoes<\/li>\n\n\n\n<li>1 cup cherry tomatoes<\/li>\n\n\n\n<li>150 grams goat cheese<\/li>\n\n\n\n<li>2 tablespoons extra virgin olive oil<\/li>\n\n\n\n<li>1 tablespoon balsamic vinegar<\/li>\n\n\n\n<li>Fresh basil leaves<\/li>\n\n\n\n<li>1 small red onion<\/li>\n\n\n\n<li>1 teaspoon honey<\/li>\n\n\n\n<li>Salt<\/li>\n\n\n\n<li>Black pepper<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">My Little Kitchen Secrets<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">I always let the tomatoes sit at room temperature before slicing them. Cold tomatoes lose so much flavor in the refrigerator.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I also crumble the goat cheese gently with my hands instead of cutting it with a knife. The soft crumbles spread more evenly throughout the salad.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Another trick I love involves the dressing. I whisk the olive oil, balsamic vinegar, honey, salt, and pepper together until smooth and glossy. The honey balances the tanginess of the goat cheese perfectly.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Fresh basil completely changes this salad. I tear the leaves by hand instead of chopping them because tearing keeps the flavor bright and aromatic.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">How I Make It, Step by Step<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Making this Goat Cheese and Tomato Salad feels almost relaxing for me. Everything comes together naturally, and the colors alone make me happy.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 1: Prepare the Tomatoes<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">I wash all the tomatoes carefully and dry them with a kitchen towel. Then I slice the large tomatoes into thick rounds and cut the cherry tomatoes in half.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I arrange them on a large serving platter because presentation matters so much with a simple salad.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 2: Slice the Onion<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">I peel the red onion and slice it very thinly. Thin slices add flavor without overpowering the salad.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If the onion tastes too sharp, I soak the slices in cold water for about ten minutes. This little trick softens the bite beautifully.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 3: Make the Dressing<\/h3>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1024\" height=\"1024\" src=\"https:\/\/marilynrecipes.com\/wp-content\/uploads\/2026\/05\/RECIPES_Goat_cheese_and_tomato_salad_on_a_rustic_ceramic_plate__fd954cfa-ac42-4dd9-97b4-44a4c112957e.png\" alt=\"\" class=\"wp-image-2464\" srcset=\"https:\/\/marilynrecipes.com\/wp-content\/uploads\/2026\/05\/RECIPES_Goat_cheese_and_tomato_salad_on_a_rustic_ceramic_plate__fd954cfa-ac42-4dd9-97b4-44a4c112957e.png 1024w, https:\/\/marilynrecipes.com\/wp-content\/uploads\/2026\/05\/RECIPES_Goat_cheese_and_tomato_salad_on_a_rustic_ceramic_plate__fd954cfa-ac42-4dd9-97b4-44a4c112957e-300x300.png 300w, https:\/\/marilynrecipes.com\/wp-content\/uploads\/2026\/05\/RECIPES_Goat_cheese_and_tomato_salad_on_a_rustic_ceramic_plate__fd954cfa-ac42-4dd9-97b4-44a4c112957e-150x150.png 150w, https:\/\/marilynrecipes.com\/wp-content\/uploads\/2026\/05\/RECIPES_Goat_cheese_and_tomato_salad_on_a_rustic_ceramic_plate__fd954cfa-ac42-4dd9-97b4-44a4c112957e-768x768.png 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">In a small bowl, I whisk together:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Olive oil<\/li>\n\n\n\n<li>Balsamic vinegar<\/li>\n\n\n\n<li>Honey<\/li>\n\n\n\n<li>Salt<\/li>\n\n\n\n<li>Black pepper<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">I whisk until the dressing becomes silky and slightly thickened.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 4: Add the Goat Cheese<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">I crumble the goat cheese gently over the tomatoes. I make sure every section gets a little creamy cheese.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 5: Finish the Salad<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">I scatter the onion slices and fresh basil over everything. Then I drizzle the dressing across the entire platter right before serving.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Sometimes I finish with extra black pepper and another drizzle of olive oil for a beautiful glossy finish.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">How I Serve It at Home<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">I usually serve this Goat Cheese and Tomato Salad with warm crusty bread. The bread soaks up the dressing and tomato juices beautifully.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For lunch, I pair it with grilled chicken or salmon. For dinner parties, I place it beside roasted vegetables and pasta dishes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">During summer, I love serving this salad outdoors. The bright colors look gorgeous under natural sunlight, and it feels refreshing on hot evenings.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Sometimes I even turn this salad into a light meal by adding quinoa or chickpeas. It becomes filling while still tasting fresh and vibrant.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">When I host brunch, this salad sits perfectly beside eggs, pastries, and fruit platters. Guests always comment on how pretty it looks.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Storage, Reheating &amp; Make-Ahead Tips<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">This salad tastes best fresh, but I still have a few tricks for storing leftovers.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Storage<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">I keep leftovers in an airtight container in the refrigerator for up to two days.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Reheating<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">I never reheat this salad because fresh tomatoes and goat cheese taste best cold or at room temperature.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Make-Ahead Tips<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">I often prepare the dressing several days ahead and store it in the fridge.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I also slice the onions and wash the basil earlier in the day. Then I assemble everything right before serving.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If I know guests are coming, I arrange the tomatoes on the platter ahead of time and keep the goat cheese separate until the last moment.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">100-Word Short Version<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">This Goat Cheese and Tomato Salad feels fresh, creamy, and incredibly easy to make. I combine ripe tomatoes, tangy goat cheese, fresh basil, and red onion with a simple balsamic dressing for a beautiful salad full of flavor. I love serving it with crusty bread, grilled chicken, or pasta during warm summer evenings. The creamy goat cheese balances the sweet tomatoes perfectly, while the basil adds freshness to every bite. This recipe works wonderfully for quick lunches, family dinners, or elegant gatherings with friends. It takes only minutes to prepare but always looks impressive and tastes absolutely delicious.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1024\" height=\"1024\" src=\"https:\/\/marilynrecipes.com\/wp-content\/uploads\/2026\/05\/RECIPES_Goat_cheese_and_tomato_salad_on_a_rustic_ceramic_plate__f461ce57-7766-496d-afa2-dc6b98009dcd.png\" alt=\"\" class=\"wp-image-2463\" srcset=\"https:\/\/marilynrecipes.com\/wp-content\/uploads\/2026\/05\/RECIPES_Goat_cheese_and_tomato_salad_on_a_rustic_ceramic_plate__f461ce57-7766-496d-afa2-dc6b98009dcd.png 1024w, https:\/\/marilynrecipes.com\/wp-content\/uploads\/2026\/05\/RECIPES_Goat_cheese_and_tomato_salad_on_a_rustic_ceramic_plate__f461ce57-7766-496d-afa2-dc6b98009dcd-300x300.png 300w, https:\/\/marilynrecipes.com\/wp-content\/uploads\/2026\/05\/RECIPES_Goat_cheese_and_tomato_salad_on_a_rustic_ceramic_plate__f461ce57-7766-496d-afa2-dc6b98009dcd-150x150.png 150w, https:\/\/marilynrecipes.com\/wp-content\/uploads\/2026\/05\/RECIPES_Goat_cheese_and_tomato_salad_on_a_rustic_ceramic_plate__f461ce57-7766-496d-afa2-dc6b98009dcd-768x768.png 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h1 class=\"wp-block-heading\">Recipe Card<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">\u23f1\ufe0f Time<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Prep Time: 15 minutes<\/li>\n\n\n\n<li>Cook Time: 0 minutes<\/li>\n\n\n\n<li>Total Time: 15 minutes<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83d\uded2 Ingredients<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>4 large ripe tomatoes<\/li>\n\n\n\n<li>1 cup cherry tomatoes<\/li>\n\n\n\n<li>150 grams goat cheese<\/li>\n\n\n\n<li>2 tablespoons extra virgin olive oil<\/li>\n\n\n\n<li>1 tablespoon balsamic vinegar<\/li>\n\n\n\n<li>1 teaspoon honey<\/li>\n\n\n\n<li>1 small red onion<\/li>\n\n\n\n<li>Fresh basil leaves<\/li>\n\n\n\n<li>Salt to taste<\/li>\n\n\n\n<li>Black pepper to taste<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83d\udc69\u200d\ud83c\udf73 Instructions<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Wash and dry all tomatoes.<\/li>\n\n\n\n<li>Slice the large tomatoes and halve the cherry tomatoes.<\/li>\n\n\n\n<li>Arrange the tomatoes on a serving platter.<\/li>\n\n\n\n<li>Slice the red onion thinly.<\/li>\n\n\n\n<li>Whisk olive oil, balsamic vinegar, honey, salt, and pepper in a small bowl.<\/li>\n\n\n\n<li>Crumble the goat cheese over the tomatoes.<\/li>\n\n\n\n<li>Add onion slices and basil leaves.<\/li>\n\n\n\n<li>Drizzle the dressing over the salad.<\/li>\n\n\n\n<li>Serve immediately with fresh bread if desired.<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83d\udcdd Notes<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Use room-temperature tomatoes for the best flavor.<\/li>\n\n\n\n<li>Tear basil leaves by hand for a fresher taste.<\/li>\n\n\n\n<li>Add avocado or toasted walnuts for extra texture.<\/li>\n\n\n\n<li>Store leftovers in the refrigerator for up to two days.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83c\udf7d\ufe0f Nutrition<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Calories: 220 per serving<\/li>\n\n\n\n<li>Protein: 8g<\/li>\n\n\n\n<li>Carbohydrates: 10g<\/li>\n\n\n\n<li>Fat: 16g<\/li>\n\n\n\n<li>Fiber: 2g<\/li>\n\n\n\n<li>Sugar: 6g<\/li>\n\n\n\n<li>Sodium: 260mg<\/li>\n<\/ul>\n\n\n<svg aria-hidden=\"true\" style=\"position: absolute;width: 0;height: 0;overflow: hidden\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n<defs>\n<symbol viewbox=\"9 9 46 42\" id=\"wpt-star-full\">\n\t<path d=\"m46.3 52-14.4-9.5-14.4 9.4L22 35.3 8.7 24.5l17.1-.9 6.2-16 6 16 17.2 1-13.4 10.7z\" \/>\n<\/symbol>\n<\/defs>\n<\/svg>\n<a class=\"button tasty-recipes-print-button tasty-recipes-no-print tasty-recipes-print-above-card\" href=\"https:\/\/marilynrecipes.com\/index.php\/2026\/05\/21\/goat-cheese-and-tomato-salad\/print\/2428\/\">Print<\/a><span class=\"tasty-recipes-jump-target\" id=\"tasty-recipes-2428-jump-target\" style=\"display:block;padding-top:2px;margin-top:-2px;\"><\/span><div id=\"tasty-recipes-2428\" data-tr-id=\"2428\" class=\"tasty-recipes tasty-recipes-2428 tasty-recipes-display tasty-recipes-has-image\">\n\n\n<h2 class=\"tasty-recipes-title\" data-tasty-recipes-customization=\"h2-color.color h2-transform.text-transform\">Goat Cheese and Tomato Salad<\/h2>\n<div class=\"tasty-recipes-image-button-container\">\n\t\t\t<div class=\"tasty-recipes-image\">\n\t\t\t<img decoding=\"async\" width=\"150\" height=\"150\" src=\"https:\/\/marilynrecipes.com\/wp-content\/uploads\/2026\/05\/RECIPES_Goat_cheese_and_tomato_salad_on_a_rustic_ceramic_plate__2a6ce4a8-d721-4ed2-a112-e3a0876b4512-150x150.png\" class=\"attachment-thumbnail size-thumbnail\" alt=\"Goat Cheese and Tomato Salad\" data-pin-nopin=\"true\" \/>\t\t<\/div>\n\t\t<div class=\"tasty-recipes-buttons\">\n\t\t\t\t<div class=\"tasty-recipes-button-wrap\">\n\t\t\t\n<a class=\"button tasty-recipes-print-button tasty-recipes-no-print\" href=\"https:\/\/marilynrecipes.com\/index.php\/2026\/05\/21\/goat-cheese-and-tomato-salad\/print\/2428\/\" target=\"_blank\" data-tasty-recipes-customization=\"\">\n\t\t\t<svg viewBox=\"0 0 24 24\" class=\"svg-print\" aria-hidden=\"true\"><use xlink:href=\"#tasty-recipes-icon-print\"><\/use><\/svg>\n\t\tPrint Recipe<\/a>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n<\/div>\n\t<div class=\"tasty-recipes-rating\" data-tasty-recipes-customization=\"body-color.color\">\n\t\t\t\t\t<p><svg aria-hidden=\"true\" style=\"position: absolute;width: 0;height: 0;overflow: hidden\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n<defs>\n<symbol viewbox=\"9 9 46 42\" id=\"wpt-star-full\">\n\t<path d=\"m46.3 52-14.4-9.5-14.4 9.4L22 35.3 8.7 24.5l17.1-.9 6.2-16 6 16 17.2 1-13.4 10.7z\" \/>\n<\/symbol>\n<\/defs>\n<\/svg>\n<span class=\"tasty-recipes-ratings-buttons tasty-recipes-no-ratings-buttons\"\tdata-tr-default-rating=\"0\"\t>\t\t<span class=\"tasty-recipes-rating\" >\t\t<i class=\"checked\" data-rating=\"5\">\t\t\t<span class=\"tasty-recipes-rating-solid\" data-tr-clip=\"0\">\t\t\t\t<svg class=\"tasty-recipes-svg\" width=\"18\" height=\"17\"><use href=\"#wpt-star-full\" \/><\/svg>\t\t\t<\/span>\t\t\t<span class=\"tasty-recipes-screen-reader\">\t\t\t\t5 Stars\t\t\t<\/span>\t\t<\/i>\t<\/span>\t\t<span class=\"tasty-recipes-rating\" >\t\t<i class=\"checked\" data-rating=\"4\">\t\t\t<span class=\"tasty-recipes-rating-solid\" data-tr-clip=\"0\">\t\t\t\t<svg class=\"tasty-recipes-svg\" width=\"18\" height=\"17\"><use href=\"#wpt-star-full\" \/><\/svg>\t\t\t<\/span>\t\t\t<span class=\"tasty-recipes-screen-reader\">\t\t\t\t4 Stars\t\t\t<\/span>\t\t<\/i>\t<\/span>\t\t<span class=\"tasty-recipes-rating\" >\t\t<i class=\"checked\" data-rating=\"3\">\t\t\t<span class=\"tasty-recipes-rating-solid\" data-tr-clip=\"0\">\t\t\t\t<svg class=\"tasty-recipes-svg\" width=\"18\" height=\"17\"><use href=\"#wpt-star-full\" \/><\/svg>\t\t\t<\/span>\t\t\t<span class=\"tasty-recipes-screen-reader\">\t\t\t\t3 Stars\t\t\t<\/span>\t\t<\/i>\t<\/span>\t\t<span class=\"tasty-recipes-rating\" >\t\t<i class=\"checked\" data-rating=\"2\">\t\t\t<span class=\"tasty-recipes-rating-solid\" data-tr-clip=\"0\">\t\t\t\t<svg class=\"tasty-recipes-svg\" width=\"18\" height=\"17\"><use href=\"#wpt-star-full\" \/><\/svg>\t\t\t<\/span>\t\t\t<span class=\"tasty-recipes-screen-reader\">\t\t\t\t2 Stars\t\t\t<\/span>\t\t<\/i>\t<\/span>\t\t<span class=\"tasty-recipes-rating\" >\t\t<i class=\"checked\" data-rating=\"1\">\t\t\t<span class=\"tasty-recipes-rating-solid\" data-tr-clip=\"0\">\t\t\t\t<svg class=\"tasty-recipes-svg\" width=\"18\" height=\"17\"><use href=\"#wpt-star-full\" \/><\/svg>\t\t\t<\/span>\t\t\t<span class=\"tasty-recipes-screen-reader\">\t\t\t\t1 Star\t\t\t<\/span>\t\t<\/i>\t<\/span><\/span><\/p>\n\t\t\t\t\t\t\t<p><span data-tasty-recipes-customization=\"detail-label-color.color\" class=\"rating-label\">No reviews<\/span><\/p>\n\t\t\t<\/div>\n\n\n\t<div class=\"tasty-recipes-description\" data-tasty-recipes-customization=\"body-color.color\">\n\t\t<p>This Goat Cheese and Tomato Salad combines juicy ripe tomatoes, creamy goat cheese, fresh basil, and a light balsamic dressing for a refreshing and elegant dish perfect for lunch, dinner, or summer gatherings.<\/p>\n\t<\/div>\n\n\t<div class=\"tasty-recipes-details\" data-tasty-recipes-customization=\"body-color.color\">\n\t\t<ul>\n\t\t\t\t\t\t\t<li class=\"author\"><strong data-tasty-recipes-customization=\"detail-label-color.color\" class=\"tasty-recipes-label\">Author:<\/strong> <span data-tasty-recipes-customization=\"detail-value-color.color\" class=\"tasty-recipes-author-name\">MARILYN<\/span><\/li>\n\t\t\t\t\t\t\t<li class=\"prep-time\"><strong data-tasty-recipes-customization=\"detail-label-color.color\" class=\"tasty-recipes-label\">Prep Time:<\/strong> <span data-tasty-recipes-customization=\"detail-value-color.color\" class=\"tasty-recipes-prep-time\">15 minutes<\/span><\/li>\n\t\t\t\t\t\t\t<li class=\"cook-time\"><strong data-tasty-recipes-customization=\"detail-label-color.color\" class=\"tasty-recipes-label\">Cook Time:<\/strong> <span data-tasty-recipes-customization=\"detail-value-color.color\" class=\"tasty-recipes-cook-time\">0 minutes<\/span><\/li>\n\t\t\t\t\t\t\t<li class=\"total-time\"><strong data-tasty-recipes-customization=\"detail-label-color.color\" class=\"tasty-recipes-label\">Total Time:<\/strong> <span data-tasty-recipes-customization=\"detail-value-color.color\" class=\"tasty-recipes-total-time\">15 minutes<\/span><\/li>\n\t\t\t\t\t\t\t<li class=\"yield\"><strong data-tasty-recipes-customization=\"detail-label-color.color\" class=\"tasty-recipes-label\">Yield:<\/strong> <span data-tasty-recipes-customization=\"detail-value-color.color\" class=\"tasty-recipes-yield\"><span data-amount=\"4\">4<\/span> servings <span class=\"tasty-recipes-yield-scale\"><span data-amount=\"1\">1<\/span>x<\/span><\/span><\/li>\n\t\t\t\t\t\t\t<li class=\"category\"><strong data-tasty-recipes-customization=\"detail-label-color.color\" class=\"tasty-recipes-label\">Category:<\/strong> <span data-tasty-recipes-customization=\"detail-value-color.color\" class=\"tasty-recipes-category\">Salad<\/span><\/li>\n\t\t\t\t\t\t\t<li class=\"method\"><strong data-tasty-recipes-customization=\"detail-label-color.color\" class=\"tasty-recipes-label\">Method:<\/strong> <span data-tasty-recipes-customization=\"detail-value-color.color\" class=\"tasty-recipes-method\">No-Cook<\/span><\/li>\n\t\t\t\t\t\t\t<li class=\"cuisine\"><strong data-tasty-recipes-customization=\"detail-label-color.color\" class=\"tasty-recipes-label\">Cuisine:<\/strong> <span data-tasty-recipes-customization=\"detail-value-color.color\" class=\"tasty-recipes-cuisine\">Mediterranean<\/span><\/li>\n\t\t\t\t\t\t\t<li class=\"diet\"><strong data-tasty-recipes-customization=\"detail-label-color.color\" class=\"tasty-recipes-label\">Diet:<\/strong> <span data-tasty-recipes-customization=\"detail-value-color.color\" class=\"tasty-recipes-diet\">Vegetarian<\/span><\/li>\n\t\t\t\t\t<\/ul>\n\t<\/div>\n\n\t<div class=\"tasty-recipes-ingredients\">\n\t\t<div class=\"tasty-recipes-ingredients-header\">\n\t\t\t<div class=\"tasty-recipes-ingredients-clipboard-container\">\n\t\t\t\t<h3 data-tasty-recipes-customization=\"h3-color.color h3-transform.text-transform\">Ingredients<\/h3>\n\t\t\t\t\t\t\t<\/div>\n\t\t\t<div class=\"tasty-recipes-units-scale-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"tasty-recipes-scale-container\">\n\t\t\t\t\t\t<span class=\"tasty-recipes-scale-label\">Scale<\/span>\n\t\t\t\t\t\t<button class=\"tasty-recipes-scale-button tasty-recipes-scale-button-active\" data-amount=\"1\" type=\"button\">1x<\/button><button class=\"tasty-recipes-scale-button\" data-amount=\"2\" type=\"button\">2x<\/button><button class=\"tasty-recipes-scale-button\" data-amount=\"3\" type=\"button\">3x<\/button>\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t<div class=\"tasty-recipes-ingredients-body\" data-tasty-recipes-customization=\"body-color.color\">\n\t\t\t<ul>\n<li><span data-amount=\"4\">4<\/span> large ripe tomatoes, sliced<\/li>\n<li><span data-amount=\"1\" data-unit=\"cup\">1 cup<\/span> cherry tomatoes, halved<\/li>\n<li><span data-amount=\"150\" data-unit=\"gram\">150 grams<\/span> goat cheese, crumbled<\/li>\n<li><span data-amount=\"2\" data-unit=\"tablespoon\">2 tablespoons<\/span> extra virgin olive oil<\/li>\n<li><span data-amount=\"1\" data-unit=\"tablespoon\">1 tablespoon<\/span> balsamic vinegar<\/li>\n<li><span data-amount=\"1\" data-unit=\"teaspoon\">1 teaspoon<\/span> honey<\/li>\n<li><span data-amount=\"1\">1<\/span> small red onion, thinly sliced<\/li>\n<li>Fresh basil leaves<\/li>\n<li>Salt to taste<\/li>\n<li>Black pepper to taste<\/li>\n<\/ul>\n<!--INSIDE_INGREDIENTS-->\t\t<\/div>\n\t\t<div class=\"tasty-recipes-cook-mode\">\n\t<div class=\"tasty-recipes-cook-mode__container\">\n\t\t<label class=\"tasty-recipes-cook-mode__switch\">\n\t\t\t<input type=\"checkbox\" id=\"tasty_recipes_6a0f3eaad8f07_cookmode\">\n\t\t\t<span class=\"tasty-recipes-cook-mode__switch-slider tasty-recipes-cook-mode__switch-round\"\n\t\t\t\tdata-tasty-recipes-customization=\"button-color.background button-text-color.color\"><\/span>\n\t\t<\/label>\n\t\t<label for=\"tasty_recipes_6a0f3eaad8f07_cookmode\">\n\t\t\t<span class=\"tasty-recipes-cook-mode__label\">Cook Mode<\/span>\n\t\t\t<span class=\"tasty-recipes-cook-mode__helper\">\n\t\t\t\tPrevent your screen from going dark\t\t\t<\/span>\n\t\t<\/label>\n\t<\/div>\n<\/div>\n\t<\/div>\n\n\t<div class=\"tasty-recipe-instructions\">\n\t\t<div class=\"tasty-recipes-instructions-header\">\n\t\t\t<h3 data-tasty-recipes-customization=\"h3-color.color h3-transform.text-transform\">Instructions<\/h3>\n\t\t\t\t\t<\/div>\n\t\t<div class=\"tasty-recipes-instructions-body\" data-tasty-recipes-customization=\"body-color.color\">\n\t\t\t<ol>\n<li id=\"instruction-step-1\">Wash and dry all tomatoes thoroughly.<\/li>\n<li id=\"instruction-step-2\">Slice the large tomatoes and halve the cherry tomatoes.<\/li>\n<li id=\"instruction-step-3\">Arrange tomatoes on a large serving platter.<\/li>\n<li id=\"instruction-step-4\">Thinly slice the red onion and scatter over the tomatoes.<\/li>\n<li id=\"instruction-step-5\">Whisk olive oil, balsamic vinegar, honey, salt, and black pepper in a small bowl.<\/li>\n<li id=\"instruction-step-6\">Crumble the goat cheese evenly over the salad.<\/li>\n<li id=\"instruction-step-7\">Add fresh basil leaves on top.<\/li>\n<li id=\"instruction-step-8\">Drizzle the dressing over the salad just before serving.<\/li>\n<li id=\"instruction-step-9\">Serve immediately with crusty bread if desired.<\/li>\n<\/ol>\n\t\t<\/div>\n\t<\/div>\n\n\n\n\t<div class=\"tasty-recipes-notes\">\n\t\t<h3 data-tasty-recipes-customization=\"h3-color.color h3-transform.text-transform\">Notes<\/h3>\n\t\t<div class=\"tasty-recipes-notes-body\" data-tasty-recipes-customization=\"body-color.color\">\n\t\t\t<p>Use room-temperature tomatoes for the best flavor. Tear basil leaves by hand instead of chopping them to keep their aroma fresh. Store leftovers in an airtight container in the refrigerator for up to 2 days. Add avocado or toasted walnuts for extra texture and richness.<\/p>\n\t\t<\/div>\n\t<\/div>\n\n\n\n\t<div class=\"tasty-recipes-nutrition\">\n\t\t<h3 data-tasty-recipes-customization=\"h3-color.color h3-transform.text-transform\">Nutrition<\/h3>\n\t\t<ul>\n\t\t\t\t\t\t\t<li><strong class=\"tasty-recipes-label\" data-tasty-recipes-customization=\"body-color.color\">Serving Size:<\/strong> <span data-tasty-recipes-customization=\"body-color.color\" class=\"tasty-recipes-serving-size\">1 serving<\/span><\/li>\n\t\t\t\t\t\t\t<li><strong class=\"tasty-recipes-label\" data-tasty-recipes-customization=\"body-color.color\">Calories:<\/strong> <span data-tasty-recipes-customization=\"body-color.color\" class=\"tasty-recipes-calories\">220<\/span><\/li>\n\t\t\t\t\t\t\t<li><strong class=\"tasty-recipes-label\" data-tasty-recipes-customization=\"body-color.color\">Sugar:<\/strong> <span data-tasty-recipes-customization=\"body-color.color\" class=\"tasty-recipes-sugar\">6g<\/span><\/li>\n\t\t\t\t\t\t\t<li><strong class=\"tasty-recipes-label\" data-tasty-recipes-customization=\"body-color.color\">Sodium:<\/strong> <span data-tasty-recipes-customization=\"body-color.color\" class=\"tasty-recipes-sodium\">260mg<\/span><\/li>\n\t\t\t\t\t\t\t<li><strong class=\"tasty-recipes-label\" data-tasty-recipes-customization=\"body-color.color\">Fat:<\/strong> <span data-tasty-recipes-customization=\"body-color.color\" class=\"tasty-recipes-fat\">16g<\/span><\/li>\n\t\t\t\t\t\t\t<li><strong class=\"tasty-recipes-label\" data-tasty-recipes-customization=\"body-color.color\">Saturated Fat:<\/strong> <span data-tasty-recipes-customization=\"body-color.color\" class=\"tasty-recipes-saturated-fat\">7g<\/span><\/li>\n\t\t\t\t\t\t\t<li><strong class=\"tasty-recipes-label\" data-tasty-recipes-customization=\"body-color.color\">Unsaturated Fat:<\/strong> <span data-tasty-recipes-customization=\"body-color.color\" class=\"tasty-recipes-unsaturated-fat\">8g<\/span><\/li>\n\t\t\t\t\t\t\t<li><strong class=\"tasty-recipes-label\" data-tasty-recipes-customization=\"body-color.color\">Trans Fat:<\/strong> <span data-tasty-recipes-customization=\"body-color.color\" class=\"tasty-recipes-trans-fat\">0g<\/span><\/li>\n\t\t\t\t\t\t\t<li><strong class=\"tasty-recipes-label\" data-tasty-recipes-customization=\"body-color.color\">Carbohydrates:<\/strong> <span data-tasty-recipes-customization=\"body-color.color\" class=\"tasty-recipes-carbohydrates\">10g<\/span><\/li>\n\t\t\t\t\t\t\t<li><strong class=\"tasty-recipes-label\" data-tasty-recipes-customization=\"body-color.color\">Fiber:<\/strong> <span data-tasty-recipes-customization=\"body-color.color\" class=\"tasty-recipes-fiber\">2g<\/span><\/li>\n\t\t\t\t\t\t\t<li><strong class=\"tasty-recipes-label\" data-tasty-recipes-customization=\"body-color.color\">Protein:<\/strong> <span data-tasty-recipes-customization=\"body-color.color\" class=\"tasty-recipes-protein\">8g<\/span><\/li>\n\t\t\t\t\t\t\t<li><strong class=\"tasty-recipes-label\" data-tasty-recipes-customization=\"body-color.color\">Cholesterol:<\/strong> <span data-tasty-recipes-customization=\"body-color.color\" class=\"tasty-recipes-cholesterol\">20mg<\/span><\/li>\n\t\t\t\t\t<\/ul>\n\t<\/div>\n\n\n<footer class=\"tasty-recipes-entry-footer\">\n\t<h3 data-tasty-recipes-customization=\"footer-heading-color.color h3-transform.text-transform footer-heading.innerText\">Did you make this recipe?<\/h3>\n\t<div data-tasty-recipes-customization=\"footer-description-color.color footer-description.innerHTML\"><p>Share a photo and tag us \u2014 we can&#8217;t wait to see what you&#8217;ve made!<\/p><\/div>\n<\/footer>\n\n\n\n<script>\nwindow.trCommon={\"minRating\":6,\"ajaxurl\":\"https:\\\/\\\/marilynrecipes.com\\\/wp-admin\\\/admin-ajax.php\",\"ratingNonce\":\"\",\"postId\":2427};\nwindow.TastyRecipes = window.TastyRecipes || {};\n\nwindow.TastyRecipes.smoothScroll = {\ninit() {\ndocument.addEventListener( 'click', ( e ) => {\nlet anchor = e.target;\nif ( anchor.tagName !== 'A' ) {\nanchor = anchor.closest( 'a.tasty-recipes-scrollto' );\n}\n\nif ( ! anchor || ! anchor.classList.contains( 'tasty-recipes-scrollto' ) ) {\nreturn;\n}\n\nconst elementHref = anchor.getAttribute( 'href' );\nif ( ! elementHref ) {\nreturn;\n}\n\ne.preventDefault();\nthis.goToSelector( elementHref );\n});\n},\ngoToSelector( selector ) {\nconst element = document.querySelector( selector );\nif ( ! element ) {\nreturn;\n}\nelement.scrollIntoView( { behavior: 'smooth' } );\n}\n};\n\ndocument.addEventListener(\n'DOMContentLoaded',\n() => window.TastyRecipes.smoothScroll.init()\n);\n\n(function(){\n\n\nvar bothEquals = function( d1, d2, D ) {\nvar ret = 0;\nif (d1<=D) {\nret++;\n}\nif (d2<=D) {\nret++;\n}\nreturn ret === 2;\n};\n\nvar frac =function frac(x,D,mixed){var n1=Math.floor(x),d1=1;var n2=n1+1,d2=1;if(x!==n1){while(bothEquals(d1,d2,D)){var m=(n1+n2)\/(d1+d2);if(x===m){if(d1+d2<=D){d1+=d2;n1+=n2;d2=D+1}else if(d1>d2){d2=D+1;}else {d1=D+1;}break}else if(x<m){n2=n1+n2;d2=d1+d2}else{n1=n1+n2;d1=d1+d2}}}if(d1>D){d1=d2;n1=n2}if(!mixed){return[0,n1,d1];}var q=Math.floor(n1\/d1);return[q,n1-q*d1,d1]};frac.cont=function cont(x,D,mixed){var sgn=x<0?-1:1;var B=x*sgn;var P_2=0,P_1=1,P=0;var Q_2=1,Q_1=0,Q=0;var A=Math.floor(B);while(Q_1<D){A=Math.floor(B);P=A*P_1+P_2;Q=A*Q_1+Q_2;if(B-A<5e-8){break;}B=1\/(B-A);P_2=P_1;P_1=P;Q_2=Q_1;Q_1=Q}if(Q>D){if(Q_1>D){Q=Q_2;P=P_2}else{Q=Q_1;P=P_1}}if(!mixed){return[0,sgn*P,Q];}var q=Math.floor(sgn*P\/Q);return[q,sgn*P-q*Q,Q]};\n\n\nwindow.tastyRecipesVulgarFractions = JSON.parse(decodeURIComponent(\"%7B%22%C2%BC%22%3A%221%2F4%22%2C%22%C2%BD%22%3A%221%2F2%22%2C%22%C2%BE%22%3A%223%2F4%22%2C%22%E2%85%93%22%3A%221%2F3%22%2C%22%E2%85%94%22%3A%222%2F3%22%2C%22%E2%85%95%22%3A%221%2F5%22%2C%22%E2%85%96%22%3A%222%2F5%22%2C%22%E2%85%97%22%3A%223%2F5%22%2C%22%E2%85%98%22%3A%224%2F5%22%2C%22%E2%85%99%22%3A%221%2F6%22%2C%22%E2%85%9A%22%3A%225%2F6%22%2C%22%E2%85%9B%22%3A%221%2F8%22%2C%22%E2%85%9C%22%3A%223%2F8%22%2C%22%E2%85%9D%22%3A%225%2F8%22%2C%22%E2%85%9E%22%3A%227%2F8%22%7D\"));\n\nwindow.tastyRecipesFormatAmount = function(amount, el) {\nif ( parseFloat( amount ) === parseInt( amount ) ) {\nreturn amount;\n}\nvar roundType = 'frac';\nif (typeof el.dataset.amountShouldRound !== 'undefined') {\nif ('false' !== el.dataset.amountShouldRound) {\nif ( 'number' === el.dataset.amountShouldRound ) {\nroundType = 'number';\n} else if ('frac' === el.dataset.amountShouldRound) {\nroundType = 'frac';\n} else if ('vulgar' === el.dataset.amountShouldRound) {\nroundType = 'vulgar';\n} else {\nroundType = 'integer';\n}\n}\n}\nif ('number' === roundType) {\namount = Number.parseFloat(amount).toPrecision(2);\n} else if ('integer' === roundType) {\namount = Math.round(amount);\n} else if ('frac' === roundType || 'vulgar' === roundType) {\nvar denom = 8;\nif (typeof el.dataset.unit !== 'undefined') {\nvar unit = el.dataset.unit;\nif (['cups','cup','c'].includes(unit)) {\ndenom = 4;\nif (0.125 === amount) {\ndenom = 8;\n}\nif (\"0.1667\" === Number.parseFloat( amount ).toPrecision(4)) {\ndenom = 6;\n}\n}\nif (['tablespoons','tablespoon','tbsp'].includes(unit)) {\ndenom = 2;\n}\nif (['teaspoons','teaspoon','tsp'].includes(unit)) {\ndenom = 8;\n}\n}\nvar amountArray = frac.cont( amount, denom, true );\nvar newAmount = '';\nif ( amountArray[1] !== 0 ) {\nnewAmount = amountArray[1] + '\/' + amountArray[2];\nif ('vulgar' === roundType) {\nObject.keys(window.tastyRecipesVulgarFractions).forEach(function(vulgar) {\nif (newAmount === window.tastyRecipesVulgarFractions[vulgar]) {\nnewAmount = vulgar;\n}\n});\n}\n}\nif ( newAmount ) {\nnewAmount = ' ' + newAmount;\n}\nif ( amountArray[0] ) {\nnewAmount = amountArray[0] + newAmount;\n}\namount = newAmount;\n}\nreturn amount;\n};\n\n\nwindow.tastyRecipesUpdatePrintLink = () => {\n\nconst printButton = document.querySelector( '.tasty-recipes-print-button' );\n\n\nif ( ! printButton ) {\nreturn;\n}\n\nconst printURL = new URL( printButton.href );\nconst searchParams = new URLSearchParams( printURL.search );\n\nconst unitButton = document.querySelector( '.tasty-recipes-convert-button-active' );\nconst scaleButton = document.querySelector( '.tasty-recipes-scale-button-active' );\n\nlet unit = '';\nlet scale = '';\n\nif ( unitButton ) {\nunit = unitButton.dataset.unitType;\nsearchParams.delete('unit');\nsearchParams.set( 'unit', unit );\n}\n\nif ( scaleButton ) {\nscale = scaleButton.dataset.amount;\nsearchParams.set( 'scale', scale );\n}\n\nconst paramString = searchParams.toString();\nconst newURL = '' === paramString ? printURL.href : printURL.origin + printURL.pathname + '?' + paramString;\nconst printLinks = document.querySelectorAll( '.tasty-recipes-print-link' );\n\nprintLinks.forEach( ( el ) => {\nel.href = newURL;\n});\n\nconst printButtons = document.querySelectorAll( '.tasty-recipes-print-button' );\nprintButtons.forEach( ( el ) => {\nel.href = newURL;\n});\n};\n\n\ndocument.addEventListener( 'DOMContentLoaded', () => {\n\n\nif ( ! window.location.href.includes( '\/print\/' ) ) {\nreturn;\n}\n\nconst searchParams = new URLSearchParams( window.location.search );\n\nconst unit = searchParams.get( 'unit' );\nconst scale = searchParams.get( 'scale' );\n\nif ( unit && ( 'metric' === unit || 'usc' === unit ) ) {\ndocument.querySelector( '.tasty-recipes-convert-button[data-unit-type=\"' + unit + '\"]' ).click();\n}\n\nif ( scale && Number(scale) > 0 ) {\ndocument.querySelector( '.tasty-recipes-scale-button[data-amount=\"' + Number(scale) + '\"]' ).click();\n}\n});\n}());\n\n(function(){\nvar buttonClass = 'tasty-recipes-scale-button',\nbuttonActiveClass = 'tasty-recipes-scale-button-active',\nbuttons = document.querySelectorAll('.tasty-recipes-scale-button');\nif ( ! buttons ) {\nreturn;\n}\n\nbuttons.forEach(function(button){\nbutton.addEventListener('click', function(event){\nevent.preventDefault();\nvar recipe = event.target.closest('.tasty-recipes');\nif ( ! recipe ) {\nreturn;\n}\nvar otherButtons = recipe.querySelectorAll('.' + buttonClass);\notherButtons.forEach(function(bt){\nbt.classList.remove(buttonActiveClass);\n});\nbutton.classList.add(buttonActiveClass);\n\n\nvar scalables = recipe.querySelectorAll('span[data-amount]');\nvar buttonAmount = parseFloat( button.dataset.amount );\nscalables.forEach(function(scalable){\nif (typeof scalable.dataset.amountOriginalType === 'undefined'\n&& typeof scalable.dataset.nfOriginal === 'undefined') {\nif (-1 !== scalable.innerText.indexOf('\/')) {\nscalable.dataset.amountOriginalType = 'frac';\n}\nif (-1 !== scalable.innerText.indexOf('.')) {\nscalable.dataset.amountOriginalType = 'number';\n}\nObject.keys(window.tastyRecipesVulgarFractions).forEach(function(vulgar) {\nif (-1 !== scalable.innerText.indexOf(vulgar)) {\nscalable.dataset.amountOriginalType = 'vulgar';\n}\n});\nif (typeof scalable.dataset.amountOriginalType !== 'undefined') {\nscalable.dataset.amountShouldRound = scalable.dataset.amountOriginalType;\n}\n}\nvar amount = parseFloat( scalable.dataset.amount ) * buttonAmount;\namount = window.tastyRecipesFormatAmount(amount, scalable);\nif ( typeof scalable.dataset.unit !== 'undefined' ) {\nif ( ! scalable.classList.contains('nutrifox-quantity') ) {\nif ( ! scalable.classList.contains('nutrifox-second-quantity') ) {\namount += ' ' + scalable.dataset.unit;\n}\n}\n}\nscalable.innerText = amount;\n});\n\nvar nonNumerics = recipe.querySelectorAll('[data-has-non-numeric-amount]');\nnonNumerics.forEach(function(nonNumeric){\nvar indicator = nonNumeric.querySelector('span[data-non-numeric-label]');\nif ( indicator ) {\nnonNumeric.removeChild(indicator);\n}\nif ( 1 !== buttonAmount ) {\nindicator = document.createElement('span');\nindicator.setAttribute('data-non-numeric-label', true);\nvar text = document.createTextNode(' (x' + buttonAmount + ')');\nindicator.appendChild(text);\nnonNumeric.appendChild(indicator);\n}\n});\n\nwindow.tastyRecipesUpdatePrintLink();\n});\n});\n}());\n\nwindow.TastyRecipes = window.TastyRecipes || {};\nwindow.TastyRecipes.cookMode = {\nwakeLockApi: false,\nwakeLock: false,\ncookModeSelector: '.tasty-recipes-cook-mode',\ninit() {\nif (\"wakeLock\" in navigator && \"request\" in navigator.wakeLock) {\nthis.wakeLockApi = navigator.wakeLock;\n}\n\nconst cookModes = document.querySelectorAll(this.cookModeSelector);\n\nif (cookModes.length > 0) {\nfor (const cookMode of cookModes) {\nif (this.wakeLockApi) {\ncookMode.querySelector('input[type=\"checkbox\"]').addEventListener(\"change\", event => {\nthis.checkboxChange(event.target);\n}, false);\n} else {\ncookMode.style.display = \"none\";\n}\n}\n}\n},\ncheckboxChange(checkbox) {\nif (checkbox.checked) {\nthis.lock();\n} else {\nthis.unlock();\n}\n},\nsetCheckboxesState(state) {\nconst checkboxes = document.querySelectorAll(this.cookModeSelector + ' input[type=\"checkbox\"]');\nfor (const checkbox of checkboxes) {\ncheckbox.checked = state;\n}\n},\nasync lock() {\ntry {\nthis.wakeLock = await this.wakeLockApi.request(\"screen\");\nthis.wakeLock.addEventListener(\"release\", () => {\nthis.wakeLock = false;\nthis.setCheckboxesState(false);\n});\nthis.setCheckboxesState(true);\n} catch (error) {\nthis.setCheckboxesState(false);\n}\n},\nunlock() {\nif (this.wakeLock) {\nthis.wakeLock.release();\nthis.wakeLock = false;\n}\nthis.setCheckboxesState(false);\n}\n};\n\n(function(callback) {\nif (document.readyState !== \"loading\") {\ncallback();\n} else {\ndocument.addEventListener(\"DOMContentLoaded\", callback);\n}\n})(() => {\nwindow.TastyRecipes.cookMode.init();\n});\n\n\n\nwindow.TastyRecipes = window.TastyRecipes || {};\n\nwindow.TastyRecipes.staticTooltip = {\nelement: null,\ntooltipElement: null,\ndeleting: false,\ninit( element ) {\nif ( this.deleting ) {\nreturn;\n}\nthis.element = element;\nthis.buildElements();\n},\ndestroy() {\nif ( ! this.tooltipElement || this.deleting ) {\nreturn;\n}\n\nthis.deleting = true;\nthis.tooltipElement.classList.remove( 'opened' );\n\nsetTimeout( () => {\nthis.tooltipElement.remove();\nthis.deleting = false;\n}, 500 );\n},\nbuildElements() {\nconst tooltipElement = document.createElement( 'div' );\ntooltipElement.classList.add( 'tasty-recipes-static-tooltip');\ntooltipElement.setAttribute( 'id', 'tasty-recipes-tooltip' );\n\nconst currentTooltipElement = document.getElementById( 'tasty-recipes-tooltip' );\nif ( currentTooltipElement ) {\ndocument.body.replaceChild( tooltipElement, currentTooltipElement );\n} else {\ndocument.body.appendChild( tooltipElement );\n}\n\nthis.tooltipElement = document.getElementById( 'tasty-recipes-tooltip' );\n},\nshow() {\nif ( ! this.tooltipElement ) {\nreturn;\n}\n\nconst tooltipTop = this.element.getBoundingClientRect().top\n+ window.scrollY\n- 10 \/\/ 10px offset.\n- this.tooltipElement.getBoundingClientRect().height;\nconst tooltipLeft = this.element.getBoundingClientRect().left\n- ( this.tooltipElement.getBoundingClientRect().width \/ 2 )\n+ ( this.element.getBoundingClientRect().width \/ 2 ) - 1;\nconst posLeft = Math.max( 10, tooltipLeft );\nthis.maybeRemoveTail( posLeft !== tooltipLeft );\n\nthis.tooltipElement.setAttribute( 'style', 'top:' + tooltipTop + 'px;left:' + posLeft + 'px;' );\nthis.tooltipElement.classList.add( 'opened' );\n\n},\nmaybeRemoveTail( removeTail ) {\nif ( removeTail ) {\nthis.tooltipElement.classList.add( 'tr-hide-tail' );\n} else {\nthis.tooltipElement.classList.remove( 'tr-hide-tail' );\n}\n},\nchangeMessage( message ) {\nif ( ! this.tooltipElement ) {\nreturn;\n}\nthis.tooltipElement.innerHTML = message;\n}\n};\n\nwindow.TastyRecipes.ajax = {\nsendPostRequest( url, data, success, failure ) {\nconst xhr = new XMLHttpRequest();\nxhr.open( 'POST', url, true );\nxhr.send( this.preparePostData( data ) );\n\nxhr.onreadystatechange = () => {\nif ( 4 !== xhr.readyState ) {\nreturn;\n}\nif ( xhr.status === 200 ) {\nsuccess( JSON.parse( xhr.responseText ) );\nreturn;\n}\n\nfailure( xhr );\n};\n\nxhr.onerror = () => {\nfailure( xhr );\n};\n},\npreparePostData( data ) {\nconst formData = new FormData();\n\nfor ( const key in data ) {\nformData.append( key, data[key] );\n}\nreturn formData;\n},\n};\n\nwindow.TastyRecipes.ratings = {\ndefaultRating: 0,\ncurrentRatingPercentage: 100,\nsavingRating: false,\ninit( minRating ) {\nthis.minRating = minRating;\n\nthis.formWatchRating();\nthis.closeTooltipWhenClickOutside();\nthis.addBodyClassBasedOnSelectedRating();\nthis.backwardCompFormRatingPosition();\n},\nformWatchRating() {\nconst ratings = document.querySelectorAll('.tasty-recipes-no-ratings-buttons [data-rating]');\nif ( ratings.length <= 0 ) {\nreturn;\n}\nfor ( const rating of ratings ) {\nrating.addEventListener( 'click', event => {\nevent.preventDefault();\nthis.defaultRating = event.target.closest( '.checked' ).dataset.rating;\nthis.setCheckedStar( event.target );\nthis.maybeSendRating( this.defaultRating, event.target );\nthis.setRatingInForm( this.defaultRating );\n} );\n}\n},\ncloseTooltipWhenClickOutside() {\nwindow.addEventListener( 'click', e => {\n\/\/ Bailout (don't remove the tooltip) when the clicked element is a rating star, or it's the tooltip itself.\nif ( e.target.closest( '.tasty-recipes-rating' ) || e.target.classList.contains( 'tasty-recipes-static-tooltip' ) ) {\nreturn;\n}\n\nwindow.TastyRecipes.staticTooltip.destroy();\n} );\n},\n setRatingInForm( rating ) {\nconst ratingInput = document.querySelector( '#respond .tasty-recipes-rating[value=\"' + rating + '\"]' );\nif ( ! ratingInput ) {\nreturn;\n}\nratingInput.click();\n},\naddBodyClassBasedOnSelectedRating() {\nconst ratingInputs = document.querySelectorAll( 'input.tasty-recipes-rating' );\nif ( ! ratingInputs ) {\nreturn;\n}\nfor ( const ratingInput of ratingInputs ) {\nratingInput.addEventListener( 'click', currentEvent => {\nconst selectedRating = currentEvent.target.getAttribute( 'value' );\nthis.handleBodyClassByRating( selectedRating );\nthis.toggleCommentTextareaRequired( selectedRating );\n} );\n}\n},\nhandleBodyClassByRating( rating ) {\nif ( rating < this.minRating ) {\ndocument.body.classList.remove( 'tasty-recipes-selected-minimum-rating' );\nreturn;\n}\ndocument.body.classList.add( 'tasty-recipes-selected-minimum-rating' );\n},\ntoggleCommentTextareaRequired( rating ) {\nconst commentTextarea = document.getElementById( 'comment' );\nif ( ! commentTextarea ) {\nreturn;\n}\n\nif ( rating < this.minRating ) {\ncommentTextarea.setAttribute( 'required', '' );\nreturn;\n}\n\ncommentTextarea.removeAttribute( 'required' );\n},\nmaybeSendRating( rating, element ) {\nif ( this.savingRating === rating ) {\nreturn;\n}\n\nthis.savingRating = rating;\nwindow.TastyRecipes.staticTooltip.init( element );\n\nconst recipeCardElement = element.closest( '.tasty-recipes' );\nif ( ! recipeCardElement ) {\nwindow.TastyRecipes.staticTooltip.destroy();\nreturn;\n}\n\nwindow.TastyRecipes.ajax.sendPostRequest(\nwindow.trCommon.ajaxurl,\n{\naction: 'tasty_recipes_save_rating',\nrating,\nnonce: window.trCommon.ratingNonce,\npost_id: window.trCommon.postId,\nrecipe_id: recipeCardElement.dataset.trId,\n},\n( response ) => {\nwindow.TastyRecipes.staticTooltip.changeMessage( response.data.message );\nwindow.TastyRecipes.staticTooltip.show();\nthis.updateAverageText( response.data, recipeCardElement );\nthis.maybeFillCommentForm( response.data );\n\n\/\/ Hide the tooltip after 5 seconds.\nsetTimeout( () => {\nthis.maybeResetTooltip( recipeCardElement, response.data, rating );\n}, 5000 );\n},\n() => {\nthis.resetTooltip( recipeCardElement );\n}\n);\n},\nupdateAverageText( data, recipeCardElement ) {\nif ( ! data.average ) {\nreturn;\n}\nthis.setRatingPercent( data );\n\nif ( ! data.count ) {\nreturn;\n}\n\nconst quickLink = document.querySelector( '.tasty-recipes-rating-link' );\nif ( quickLink ) {\nthis.setTextInContainer( quickLink, data );\nthis.setPartialStar( quickLink );\n}\n\nconst cardStars = recipeCardElement.querySelector( '.tasty-recipes-ratings-buttons' );\ncardStars.dataset.trDefaultRating = data.average;\nthis.setTextInContainer( recipeCardElement.querySelector( '.tasty-recipes-rating' ), data );\n},\nsetTextInContainer( container, data ) {\nif ( ! container ) {\nreturn;\n}\n\nif ( data.label ) {\nconst ratingLabelElement = container.querySelector( '.rating-label' );\nif ( ratingLabelElement ) {\nratingLabelElement.innerHTML = data.label;\n}\nreturn;\n}\n\nconst averageElement = container.querySelector( '.average' );\nif ( averageElement ) {\naverageElement.textContent = data.average;\n}\n\nconst countElement = container.querySelector( '.count' );\nif ( countElement ) {\ncountElement.textContent = data.count;\n}\n},\nsetPartialStar( container ) {\nconst highestStar = container.querySelector( '[data-rating=\"' + Math.ceil( this.defaultRating ) + '\"]' );\nif ( highestStar ) {\nhighestStar.dataset.trClip = this.currentRatingPercentage;\n}\n},\nsetRatingPercent( data ) {\nthis.defaultRating = data.average.toFixed( 1 );\nconst parts = data.average.toFixed( 2 ).toString().split( '.' );\nthis.currentRatingPercentage = parts[1] ? parts[1] : 100;\nif ( this.currentRatingPercentage === '00' ) {\nthis.currentRatingPercentage = 100;\n}\n},\nsetCheckedStar( target ) {\nconst cardRatingContainer = target.closest( '.tasty-recipes-ratings-buttons' );\nconst selectedRatingElement = cardRatingContainer.querySelector( '[data-tr-checked]' );\nif ( selectedRatingElement ) {\ndelete selectedRatingElement.dataset.trChecked;\n}\n\nconst thisStar = target.closest( '.tasty-recipes-rating' );\nthisStar.dataset.trChecked = 1;\nthisStar.querySelector( '[data-tr-clip]' ).dataset.trClip = 100;\n},\nmaybeFillCommentForm( data ) {\nif ( ! data.comment || ! data.comment.content ) {\nreturn;\n}\n\nconst commentForm = document.querySelector( '#commentform' );\nif ( ! commentForm ) {\nreturn;\n}\n\nconst commentBox = commentForm.querySelector( '[name=comment]' );\nif ( ! commentBox || commentBox.value ) {\nreturn;\n}\n\n\/\/ Add comment details for editing.\ncommentBox.innerHTML = data.comment.content;\nif ( data.comment.name ) {\ncommentForm.querySelector( '[name=author]' ).value = data.comment.name;\ncommentForm.querySelector( '[name=email]' ).value = data.comment.email;\n}\n},\nmaybeResetTooltip( recipeCardElement, data, rating ) {\nif ( this.savingRating === rating ) {\nthis.resetTooltip( recipeCardElement, data );\n}\n},\nresetTooltip( recipeCardElement, data ) {\nwindow.TastyRecipes.staticTooltip.destroy();\nthis.savingRating = false;\n\n\/\/ Reset the default rating.\nconst cardRatingContainer = recipeCardElement.querySelector( '.tasty-recipes-ratings-buttons' );\nif ( cardRatingContainer ) {\nthis.defaultRating = ( data && data.average ) ? data.average.toFixed(1) : cardRatingContainer.dataset.trDefaultRating;\ncardRatingContainer.dataset.trDefaultRating = this.defaultRating;\n\nthis.resetSelectedStar( cardRatingContainer, data );\n}\n},\nresetSelectedStar( cardRatingContainer ) {\nconst selectedRatingElement = cardRatingContainer.querySelector( '[data-rating=\"' + Math.ceil( this.defaultRating ) + '\"]' );\nif ( selectedRatingElement ) {\nselectedRatingElement.querySelector( '[data-tr-clip]' ).dataset.trClip = this.currentRatingPercentage;\nselectedRatingElement.parentNode.dataset.trChecked = 1;\n}\n\nconst previousSelectedElement= cardRatingContainer.querySelector( '[data-tr-checked]' );\nif ( previousSelectedElement ) {\nconst currentSelectedRating = previousSelectedElement.querySelector('[data-rating]');\nif ( currentSelectedRating !== selectedRatingElement ) {\ndelete previousSelectedElement.dataset.trChecked;\n}\n}\n},\nbackwardCompFormRatingPosition() {\nconst ratingsButtons = document.querySelector( '#respond .tasty-recipes-ratings-buttons, #tasty-recipes-comment-rating .tasty-recipes-ratings-buttons' );\nif ( ! ratingsButtons ) {\nreturn;\n}\nconst ratingsButtonsStyles = window.getComputedStyle(ratingsButtons);\nif ( ! ratingsButtonsStyles.display.includes( 'flex' ) ) {\nratingsButtons.style.direction = 'rtl';\n}\n\nif ( typeof tastyRecipesRating !== 'undefined' ) {\n\/\/ Select the rating that was previously selected in admin.\nratingsButtons.querySelector( '.tasty-recipes-rating[value=\"' + tastyRecipesRating + '\"]' ).checked = true;\n}\n\nconst ratingSpans = ratingsButtons.querySelectorAll( '.tasty-recipes-rating' );\nfor (const ratingSpan of ratingSpans) {\nratingSpan.addEventListener( 'click', event => {\nif ( ratingSpan === event.target ) {\nreturn;\n}\nratingSpan.previousElementSibling.click();\n} );\n}\n}\n};\n\n(function(callback) {\nif (document.readyState !== \"loading\") {\ncallback();\n} else {\nwindow.addEventListener( 'load', callback );\n}\n})(() => {\nwindow.TastyRecipes.ratings.init( window.trCommon ? window.trCommon.minRating : 4 );\n});\n<\/script><\/div>\n\n\n<h2 class=\"wp-block-heading\">Conclusion<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">This Goat Cheese and Tomato Salad always reminds me how simple ingredients can create something truly beautiful. Every fresh bite feels comforting, vibrant, and full of joy. I love sharing this recipe with family and friends because it brings warmth to the table without requiring complicated steps or expensive ingredients.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Whenever I make this salad, I slow down and enjoy the little moments in the kitchen \u2014 slicing tomatoes, tearing basil, and watching everyone gather around the table with happy smiles. Food creates memories, and this recipe carries so many lovely ones for me.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I hope this Goat Cheese and Tomato Salad brings freshness, comfort, and happiness into your kitchen too.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>There is something so comforting about a simple Goat Cheese and Tomato Salad. I always return to this recipe when I want something fresh, colorful, and satisfying without spending hours &#8230; <\/p>\n<p class=\"read-more-container\"><a title=\"Goat Cheese and Tomato Salad Fresh, Creamy, and Full of Summer Flavor\" class=\"read-more button\" href=\"https:\/\/marilynrecipes.com\/index.php\/2026\/05\/21\/goat-cheese-and-tomato-salad\/#more-2427\" aria-label=\"Read more about Goat Cheese and Tomato Salad Fresh, Creamy, and Full of Summer Flavor\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":2466,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-2427","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-recipes","generate-columns","tablet-grid-50","mobile-grid-100","grid-parent","grid-50","no-featured-image-padding"],"_links":{"self":[{"href":"https:\/\/marilynrecipes.com\/index.php\/wp-json\/wp\/v2\/posts\/2427","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/marilynrecipes.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/marilynrecipes.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/marilynrecipes.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/marilynrecipes.com\/index.php\/wp-json\/wp\/v2\/comments?post=2427"}],"version-history":[{"count":1,"href":"https:\/\/marilynrecipes.com\/index.php\/wp-json\/wp\/v2\/posts\/2427\/revisions"}],"predecessor-version":[{"id":2467,"href":"https:\/\/marilynrecipes.com\/index.php\/wp-json\/wp\/v2\/posts\/2427\/revisions\/2467"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/marilynrecipes.com\/index.php\/wp-json\/wp\/v2\/media\/2466"}],"wp:attachment":[{"href":"https:\/\/marilynrecipes.com\/index.php\/wp-json\/wp\/v2\/media?parent=2427"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/marilynrecipes.com\/index.php\/wp-json\/wp\/v2\/categories?post=2427"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/marilynrecipes.com\/index.php\/wp-json\/wp\/v2\/tags?post=2427"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}