:root { --ink: #171717; --muted: #68645d; --cream: #f7f1e7; --white: #fffdf9; --red: #c94535; --red-dark: #9f2e25; --gold: #d6a54e; --line: rgba(23,23,23,.16); --display: "Barlow Condensed", Impact, sans-serif; --body: "DM Sans", Arial, sans-serif; } * { box-sizing: border-box; } html { scroll-behavior: smooth; } body { margin: 0; color: var(--ink); background: var(--cream); font-family: var(--body); font-size: 16px; line-height: 1.5; } a { color: inherit; text-decoration: none; } button { font: inherit; } img { display: block; max-width: 100%; } .container { width: min(1240px, calc(100% - 56px)); margin: 0 auto; } .site-header { position: relative; z-index: 20; background: var(--white); border-bottom: 1px solid var(--line); } .nav { display: flex; align-items: center; justify-content: space-between; min-height: 82px; gap: 28px; } .brand { display: inline-flex; align-items: center; gap: 12px; font-family: var(--display); font-size: 25px; font-weight: 700; letter-spacing: .01em; text-transform: uppercase; white-space: nowrap; } .brand-mark { display: grid; place-items: center; width: 39px; height: 39px; color: var(--white); background: var(--red); border-radius: 50%; font-family: var(--display); font-size: 18px; letter-spacing: -.05em; } .nav-links { display: flex; align-items: center; gap: 34px; } .nav-links a { position: relative; padding: 29px 0 25px; font-size: 13px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; } .nav-links a::after { position: absolute; right: 0; bottom: 17px; left: 0; height: 3px; background: var(--red); content: ""; transform: scaleX(0); transform-origin: right; transition: transform .25s ease; } .nav-links a:hover::after, .nav-links a:focus-visible::after, .nav-links a[aria-current="page"]::after { transform: scaleX(1); transform-origin: left; } .nav-button { display: inline-flex; align-items: center; gap: 8px; padding: 12px 17px; color: var(--white); background: var(--red); border-radius: 999px; font-size: 12px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; transition: background .2s ease, transform .2s ease; } .nav-button:hover, .nav-button:focus-visible { background: var(--red-dark); transform: translateY(-2px); } .menu-button { display: none; border: 0; background: transparent; cursor: pointer; font-size: 12px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; } .category-hero { position: relative; overflow: hidden; color: var(--white); background: var(--ink); } .category-hero::before { position: absolute; inset: 0; background: linear-gradient(90deg, rgba(23,23,23,.95) 0%, rgba(23,23,23,.8) 44%, rgba(23,23,23,.2) 100%); content: ""; z-index: 1; } .category-hero-bg { position: absolute; inset: 0; background-position: center; background-size: cover; opacity: .92; transform: scale(1.03); } .category-hero-inner { position: relative; z-index: 2; display: grid; grid-template-columns: 1fr .72fr; align-items: end; min-height: 590px; gap: 60px; padding: 92px 0 78px; } .eyebrow { display: inline-flex; align-items: center; gap: 12px; margin: 0 0 22px; color: #f1c775; font-size: 12px; font-weight: 700; letter-spacing: .17em; text-transform: uppercase; } .eyebrow::before { width: 30px; height: 3px; background: var(--red); content: ""; } h1, h2, h3 { font-family: var(--display); font-weight: 700; letter-spacing: -.045em; line-height: .86; } h1 { max-width: 780px; margin: 0 0 26px; font-size: clamp(5.7rem, 12vw, 11.5rem); text-transform: uppercase; } h1 span { display: block; color: #f1c775; } .hero-intro { max-width: 500px; margin: 0; color: rgba(255,253,249,.78); font-size: 17px; } .hero-stamp { align-self: end; max-width: 285px; padding: 25px; border: 1px solid rgba(255,253,249,.35); background: rgba(255,253,249,.1); backdrop-filter: blur(7px); } .hero-stamp strong { display: block; margin-bottom: 9px; color: var(--white); font-family: var(--display); font-size: 47px; line-height: .84; text-transform: uppercase; } .hero-stamp p { margin: 0; color: rgba(255,253,249,.72); font-size: 13px; } .category-nav { border-bottom: 1px solid var(--line); background: var(--white); } .category-nav-inner { display: flex; align-items: center; justify-content: space-between; gap: 20px; min-height: 72px; } .category-nav-label { color: var(--muted); font-size: 11px; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; } .category-nav-links { display: flex; flex-wrap: wrap; justify-content: end; gap: 22px; } .category-nav-links a { color: var(--muted); font-size: 11px; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; transition: color .2s ease; } .category-nav-links a:hover, .category-nav-links a:focus-visible, .category-nav-links a[aria-current="page"] { color: var(--red); } .recipe-section { padding: 108px 0 118px; } .section-heading { display: flex; align-items: end; justify-content: space-between; gap: 40px; margin-bottom: 44px; } .section-heading h2 { max-width: 680px; margin: 0; font-size: clamp(4.5rem, 8.5vw, 8.7rem); text-transform: uppercase; } .section-heading h2 span { color: var(--red); } .section-heading p { max-width: 330px; margin: 0 0 5px; color: var(--muted); } .recipe-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 13px; } .recipe-card { display: flex; min-height: 415px; flex-direction: column; border: 1px solid var(--line); background: var(--white); transition: transform .3s ease, box-shadow .3s ease, border-color .3s ease; } .recipe-card:hover, .recipe-card:focus-within { border-color: var(--red); box-shadow: 0 16px 32px rgba(23,23,23,.14); transform: translateY(-6px); } .recipe-visual { position: relative; height: 190px; overflow: hidden; background: linear-gradient(145deg, #291f1b, #8e3b2e 52%, #d69f4f); } .recipe-visual::after { position: absolute; inset: 0; background: linear-gradient(180deg, transparent 45%, rgba(23,23,23,.35)); content: ""; pointer-events: none; } .recipe-visual img { position: relative; z-index: 1; width: 100%; height: 100%; object-fit: cover; } .recipe-body { display: flex; flex: 1; flex-direction: column; padding: 19px 18px 20px; } .recipe-meta { display: flex; justify-content: space-between; gap: 10px; margin-bottom: 19px; color: var(--muted); font-size: 10px; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; } .recipe-body h3 { margin: 0 0 9px; font-size: clamp(2.35rem, 3vw, 3.4rem); text-transform: uppercase; } .recipe-body p { margin: 0; color: var(--muted); font-size: 13px; line-height: 1.45; } .recipe-link { display: inline-flex; align-items: center; gap: 8px; margin-top: auto; padding-top: 20px; color: var(--red); font-size: 11px; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; } .recipe-link span { transition: transform .2s ease; } .recipe-card:hover .recipe-link span { transform: translateX(5px); } .recipe-details { padding: 104px 0 112px; border-top: 1px solid var(--line); background: var(--white); } .recipe-details .section-heading { margin-bottom: 40px; } .detail-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 13px; } .detail-card { padding: 28px; border: 1px solid var(--line); background: var(--cream); } .detail-card h3 { margin: 0 0 12px; font-size: clamp(2.5rem, 3vw, 4rem); text-transform: uppercase; } .detail-card .detail-lede { margin: 0 0 24px; color: var(--muted); font-size: 14px; } .detail-card h4 { margin: 24px 0 10px; color: var(--red); font-size: 11px; letter-spacing: .14em; text-transform: uppercase; } .detail-card ul, .detail-card ol { margin: 0; padding-left: 20px; color: var(--muted); font-size: 13px; } .detail-card li { margin-bottom: 8px; } .detail-card .detail-note { margin: 22px 0 0; padding-top: 18px; border-top: 1px solid var(--line); color: var(--muted); font-size: 13px; } .marquee { overflow: hidden; color: var(--white); background: var(--ink); } .marquee-track { display: flex; width: max-content; gap: 28px; padding: 23px 0; animation: move 25s linear infinite; } .marquee-item { display: inline-flex; align-items: center; gap: 28px; font-family: var(--display); font-size: 31px; letter-spacing: .02em; text-transform: uppercase; white-space: nowrap; } .marquee-item::after { width: 9px; height: 9px; border-radius: 50%; background: var(--red); content: ""; } @keyframes move { to { transform: translateX(-50%); } } .table-cta { padding: 106px 0 116px; color: var(--white); background: var(--red); } .table-cta-inner { display: flex; align-items: end; justify-content: space-between; gap: 30px; } .table-cta h2 { max-width: 770px; margin: 0; font-size: clamp(4.5rem, 10vw, 10rem); text-transform: uppercase; } .table-cta h2 span { display: block; color: var(--ink); } .table-cta .button { display: inline-flex; align-items: center; justify-content: center; gap: 9px; min-width: 245px; min-height: 84px; padding: 0 32px; color: var(--ink); background: var(--white); border: 2px solid var(--white); box-shadow: 0 12px 0 rgba(23,23,23,.16); font-size: 16px; font-weight: 700; letter-spacing: .13em; text-transform: uppercase; white-space: nowrap; transition: transform .25s ease, color .25s ease, background .25s ease, border-color .25s ease, box-shadow .25s ease; } .table-cta .button:hover, .table-cta .button:focus-visible { color: var(--white); background: var(--ink); border-color: var(--ink); box-shadow: 0 12px 0 rgba(23,23,23,.2), 0 0 0 9px rgba(255,253,249,.18), 0 0 34px rgba(255,253,249,.42); transform: translateY(-5px) scale(1.04); } footer { padding: 34px 0; color: rgba(255,255,255,.7); background: var(--ink); } .footer-inner { display: flex; align-items: center; justify-content: space-between; gap: 25px; } footer .brand { color: var(--white); font-size: 22px; } .footer-links { display: flex; gap: 24px; font-size: 12px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; } .footer-links a:hover { color: var(--red); } .copyright { font-size: 12px; } @media (max-width: 1100px) { .recipe-grid { grid-template-columns: repeat(3, 1fr); } } @media (max-width: 900px) { .nav { min-height: 72px; } .nav-links { display: none; } .menu-button { display: block; } .nav.menu-open .nav-links { position: absolute; top: 72px; right: 28px; left: 28px; display: grid; gap: 0; padding: 12px 20px; border: 1px solid var(--line); background: var(--white); box-shadow: 0 15px 35px rgba(23,23,23,.14); } .nav.menu-open .nav-links a { padding: 15px 0; border-bottom: 1px solid var(--line); } .nav.menu-open .nav-links a:last-child { border-bottom: 0; } .nav-button { display: none; } .category-hero-inner { grid-template-columns: 1fr; min-height: 610px; align-items: start; } .hero-stamp { align-self: start; } .category-nav-inner { align-items: start; flex-direction: column; justify-content: center; padding: 18px 0; } .category-nav-links { justify-content: start; } .section-heading { display: block; } .section-heading h2 { margin-bottom: 20px; } .section-heading p { max-width: 480px; } .table-cta-inner { display: block; } .table-cta .button { margin-top: 30px; } } @media (max-width: 600px) { .container { width: min(100% - 30px, 1240px); } .brand { font-size: 21px; } .brand-mark { width: 34px; height: 34px; font-size: 16px; } h1 { font-size: clamp(5rem, 23vw, 7.2rem); } .category-hero-inner { padding-top: 74px; } .recipe-section { padding: 80px 0; } .section-heading h2 { font-size: clamp(4.4rem, 20vw, 7rem); } .recipe-grid { grid-template-columns: 1fr; } .detail-grid { grid-template-columns: 1fr; } .recipe-card { min-height: 385px; } .table-cta h2 { font-size: clamp(4.7rem, 20vw, 7.2rem); } .footer-inner { align-items: start; flex-direction: column; } .footer-links { flex-wrap: wrap; } } @media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; } }

02 / The good stuff

Comfort food forever.

The dishes that feel familiar, fill the room with a good smell, and make people ask for seconds.

Feed the table.

Family flavors, hearty plates, and the kind of food that makes leftovers feel like a gift.

Orange Puerto Rican pollo guisado with chicken, potato chunks, rice, and plantains
Serves 401

Pollo guisado

Tender chicken and potatoes in an orange tomato-and-pepper sauce built for rice, plantains, and a quiet moment.

Recipe notes
Store-bought potato gnocchi coated in bright basil pesto with parmesan
Serves 402

Pesto gnocchi

Pillowy store-bought gnocchi, bright pesto, and a counterbalance that keeps every bite in line.

Recipe notes
Thinly sliced parmesan scalloped potatoes with a golden crust and rosemary
Serves 403

Parmesan scalloped potatoes

Thin potatoes, equal parts heavy cream and milk, plenty of parmesan, and rosemary if you want to take them higher.

Recipe notes
Puerto Rican arroz con habichuelas rojas with sofrito, olives, and red beans
Serves 404

Arroz con habichuelas

Sofrito-based rice and red beans with green olives and olive brine stirred into the base for extra depth.

Recipe notes
Latin-style pork neck bone soup with yuca, corn, potatoes, cilantro, lime, avocado, and white rice
Serves 405

Pork neck bone soup

A rich, slow-simmered soup with tender pork neck bones, yuca, corn, mini potatoes, cilantro, lime, and avocado.

Recipe notes
Golden crispy chicken cutlets with crunchy breading and lemon
Serves 406

Crispy chicken cutlets

Golden outside, juicy inside, and ready for whatever sauce or side you are feeling.

Recipe notes

Recipes, written down.

The full methods for the dishes you are cooking and refining at home.

Pollo guisado

Classic Puerto Rican braised chicken with sofrito, sazón, and a splash of olive brine for tang.

Ingredients

  • 3 pounds bone-in, skin-on chicken thighs
  • 1 teaspoon kosher salt
  • 1 tablespoon adobo seasoning
  • 2 tablespoons olive oil
  • 0.5 cups sofrito
  • 0.3 cups tomato sauce
  • 2 sazón packets, con culantro y achiote
  • 1 teaspoon dried oregano
  • 2 bay leaves
  • 1.5 cups chicken broth
  • 2 russet potatoes, peeled and cubed
  • 2 carrots, sliced
  • 0.3 cups whole green olives
  • 3 tablespoons olive brine
  • 2 tablespoons fresh cilantro, chopped

Steps

  1. Pat the chicken dry and season with kosher salt and adobo. Let it sit 15–20 minutes while you prep.
  2. Heat olive oil in a heavy pot over medium-high. Brown the chicken skin-side down first, 4–5 minutes per side. Remove and set aside.
  3. Cook the sofrito for 2–3 minutes. Stir in tomato sauce, sazón, and oregano; cook another minute.
  4. Return the chicken, add bay leaves and broth, bring to a simmer, cover, and cook on low for 25 minutes.
  5. Add potatoes, carrots, and olives. Cover and simmer about 20 minutes more, until the potatoes are fork-tender and the chicken is cooked through.
  6. Turn off the heat and stir in the olive brine. Taste and adjust salt, discard the bay leaves, garnish with cilantro, and serve over rice.

Note: Add the olive brine off heat so the acidity stays bright. If the olives are salty, taste before adding more salt.

Arroz con habichuelas rojas

Puerto Rican rice and red beans built on sofrito, green olives, and olive brine for extra depth.

Ingredients

  • 2 cups long-grain white rice
  • 2 tablespoons olive oil
  • 0.3 cups sofrito
  • 2 tablespoons tomato sauce
  • 1 sazón packet, con culantro y achiote
  • 0.5 teaspoons dried oregano
  • 1 cup red kidney beans, drained and rinsed
  • 1 small potato, peeled and cubed, optional
  • 0.3 cups green olives, sliced
  • 3 tablespoons olive brine
  • 3.5 cups chicken broth or water
  • 0.5 teaspoons kosher salt
  • 1 bay leaf

Steps

  1. Rinse the rice in cold water until the water runs mostly clear. Drain well.
  2. Heat olive oil in a caldero or heavy pot over medium. Cook the sofrito for 2–3 minutes, then stir in tomato sauce, sazón, and oregano for another minute.
  3. Stir in beans, optional potato, olives, and olive brine. Simmer 2–3 minutes so the beans pick up the tang.
  4. Add broth or water, kosher salt, and bay leaf. Bring to a boil, then stir in the rinsed rice.
  5. Once it returns to a boil, stir once, reduce heat to low, cover tightly, and cook without lifting the lid.
  6. Turn off the heat and rest covered for 5–10 minutes. Remove the bay leaf, fluff with a fork, and serve.

Note: Adding the brine before the rice goes in lets the acidity work into the whole pot. For a higher bean-to-rice ratio, use 1.5 cups beans.

Pork neck bone soup

A rich, slow-simmered Latin-style soup with tender pork neck bones, yuca, corn, and mini potatoes. Serve with white rice on the side.

Ingredients

  • 1.7 pounds pork neck bones
  • 5.3 cups chicken or beef broth
  • 1.3 cups water, if needed to cover
  • 0.7 medium onion, diced
  • 2.7 garlic cloves, minced
  • 0.7 jalapeño, sliced, seeds removed for less heat
  • 1.3 tablespoons cooking oil
  • 1 pound yuca, peeled and cut into chunks
  • 0.7 pounds mini potatoes, halved
  • 1.3 corn on the cob, cut into 1–2 inch rounds
  • 1 teaspoon salt
  • 0.7 bay leaf
  • 0.2 cups cilantro, chopped
  • 0.7 lime, cut into wedges
  • 0.7 avocado, sliced for topping

Steps

  1. Heat cooking oil in a large pot over medium-high. Sear the neck bones on all sides until browned, about 8–10 minutes.
  2. Add onion, garlic, and jalapeño. Sauté 3–4 minutes until the onion softens and everything smells fragrant.
  3. Pour in broth and water if needed to cover the bones. Add bay leaf and salt. Bring to a boil, reduce to a low simmer, cover, and cook until the pork is tender and pulling from the bone.
  4. Add yuca and potatoes. Continue simmering until they are fork-tender but not falling apart.
  5. Add the corn and simmer until cooked through and tender.
  6. Remove the bay leaf. Stir in most of the cilantro, saving some for garnish. Taste and adjust salt, then serve with avocado, lime wedges, and white rice on the side.

Note: Neck bones vary in size, so check for tenderness instead of relying strictly on time. Leftovers keep well and often taste even better the next day.

Pull up a chair.Let’s cook.

Join the table