Swarthmore Borough is tabling a proposal to implement an earned income tax after Swarthmore College stepped up to cover a funding gap left by the closure of Crozer-Chester Medical Center.
Under a memorandum of understanding passed by Swarthmore Borough Tuesday, Swarthmore College will contribute $638,000 to the borough to help cover rising emergency service costs.
The contribution allows the borough to drop a proposal to implement an earned income tax, which faced pushback from residents and some members of borough council.
In a message to the community, Rob Goldberg, Swarthmore College’s vice president for finance and administration, said, “We’re happy we were able to work with the borough to avoid a new tax being imposed on College employees. We also value our long-standing partnership with the borough and remain committed to supporting the community we share. We’re grateful for the constructive dialogue that led to this outcome and for the continued collaboration that benefits both the borough and the College.”
In a presentation given last month, the borough projected a 1% earned income tax would bring in at least $3.13 million in the second year of collection (some collection lags would occur in the first year). This would include $760,000 to $1.5 million in taxes collected from nonresidents who work in Swarthmore.
An earned income tax is a local tax on salary, wages, and tips, but not on passive income like interest, dividends, capital gains, pensions, and Social Security benefits. These taxes are generally capped at 1%.
If a taxpayer lives in a community with an earned income tax, they pay into their home community’s income tax base. If their home community does not have an earned income tax and the community where they work does, they pay into their work community’s income tax base. One major exception is Philadelphia’s wage tax, which overrides local earned income taxes. This means if a person works in Philadelphia and lives in a suburban municipality with an earned income tax, they would pay Philadelphia’s wage tax rather than their home community’s earned income tax.
Cindy MacLeod, chair of the borough council’s finance committee, said the borough’s financial outlook is starkly different this year after the loss of Crozer’s ambulance services both increased the borough’s costs and brought down its revenue.
In April, the borough adopted a declaration of disaster emergency following the closures of Crozer-Chester Medical Center in Chester and Taylor Hospital in Ridley Park. The closures resulted in “significant impacts” to emergency services in the region, the declaration said, including burdening remaining medical centers and increasing wait times for patients.
According to preliminary estimates, the borough’s public safety costs are set to increase by 41% next year — from $3.1 million to $4.3 million. In addition to the loss of Crozer’s ambulance services, the borough is staring down steep fire equipment repair costs and a drop in the number of volunteer firefighters.
“The cost assumptions around all these emergency services is a real and meaningful change,” said councilmember Scarlett McCahill at a Sept. 8 meeting. “It’s not that all of a sudden, surprise, we weren’t minding the shop and now we’re really behind and need to do a catchup. The actual costs to the community have changed significantly.”
In addition to emergency service needs, Swarthmore officials say the borough has not been immune to more general inflationary pressures. Costs are rising for community services that the borough doesn’t want to cut, MacLeod said.
Though the earned income tax is off the table for now, the borough is considering implementing an emergency services tax, a specific type of property tax that would be earmarked just for emergency services.
“We hope we don’t have to do an emergency services tax, but we haven’t ruled that out,” MacLeod said.
Budget discussions will continue at the borough’s Oct. 27 finance committee meeting.
This suburban content is produced with support from the Leslie Miller and Richard Worley Foundation and The Lenfest Institute for Journalism. Editorial content is created independently of the project donors. Gifts to support The Inquirer’s high-impact journalism can be made at inquirer.com/donate. A list of Lenfest Institute donors can be found at lenfestinstitute.org/supporters.
In 2020, Dallas litigator Kevin Kelley had a 10,000-square-foot space on the ground floor of his building that had been vacant for a year.
With the pandemic in full swing and no takers, Kelley built it out himself as a restaurant serving Southern comfort food and modern cocktails in upscale, TikTok-able environs.
“People came, they enjoyed it, and …” Kelley paused. “I was in it.”
Five years later, Kelley is in Center City Philadelphia to open his sixth Kitchen & Kocktails by Kevin Kelley, after locations in Chicago, Washington, Charlotte, and Atlanta. The Philadelphia restaurant, with 300 seats including a 25-seat bar, 50-seat private dining room, and a staff of 125, opened Saturday on the ground floor of the Cambria Hotel, at 225 S. Broad St.
Cooks work in the open kitchen at Kitchen & Kocktails, as viewed from the mezzanine.
Kelley also owns Kanvas Sports & Social, a sports bar, and Club Vivo, a nightclub, both in Dallas. By this time next year, he said, he expects to open six more Kitchen & Kocktails, and he isn’t ruling out a restaurant in King of Prussia, where he first looked before leasing the former Del Frisco’s Grille at the Cambria.
And to think — Kelley said — “if somebody had been willing to pay a small lease, I might not have opened a restaurant. But you know, God is good.”
Roses cover the walls in the stairwell at Kitchen & Kocktails.
Early interest spiked after a social-media blitz last month drove people to OpenTable. In only the first 24 hours, the restaurant booked 2,840 reservations, Kelley said.
Customers step into the sleek, high-ceilinged reception area, decorated with greenery, next to a wine tower. Staff greets everyone with a “welcome home,” Kelley said. The jade blue onyx marble bar is front and center next to an open kitchen. At a preview party recently, influencers deftly balanced their cell cameras and LED lights while climbing the stairs to the mezzanine through a gauntlet of red roses. Kelley also hosted nonprofit groups, including Mothers in Charge, which supports families who have lost children to gun violence.
Lamb chops and deviled eggs are prepared for a preview dinner at Kitchen & Kocktails.
The menu includes shrimp and grits, chicken and waffles, jerk lamb chops, fried catfish, and vegan bowls, served at lunch, dinner, and weekend brunch. The average dinner check, Kelley said, is about $75, including a drink or two. Even with white tablecloths, Kelley insisted that the restaurant is not fine dining: “I want a restaurant that everyone can dine in. Be the best of yourself, dress nice, bring your lady, but we want to be affordable for everyone.”
Diners take their seats at the new Kitchen & Kocktails.
Kelley has not given up his legal work. From Philadelphia this week, he said, he logged into a Zoom hearing to close out a multimillion-dollar settlement for clients in Texas. “But hospitality is my passion and the future,” he said, adding that he sees it as an extension of his legal work. “I’ve learned that people need to be cared for,” he said. “They need to be treated with respect. There is power in serving people.”
Kelley, 48 — who started his law firm at age 26 and still owns 100% of his companies — speaks often about Black entrepreneurship and ownership. “I believe diversity is extraordinary,” he said. “In order for us to learn from other cultures and for other cultures to learn from us, there have to be Black entrepreneurs.” His wife, Deseri, founded a company that designs luxury handbags.
Drinks on a table during a preview of Kitchen & Kocktails.
His company’s leadership is intentionally diverse. “My restaurant looks like I would want America to look like — where everybody’s represented,” he said. “My CFO is a Black female. My director of operations is a white male. I want to make sure that I give everybody an opportunity — Black, white, brown — because I think everybody should give Black people an opportunity as well,” he said. “I don’t want to be a Black man who has power that doesn’t give other people a chance.”
The Kitchen & Kocktails idea came to him from 2014 to 2019 as he shuttled between Texas and Spain while his sons played soccer at elite youth academies in Europe.
Diners attend a preview of the new Kitchen & Kocktails.The exterior of the new Kitchen & Kocktails restaurant.
“I ate a lot of tapas, a lot of pan con tomate, and jamón, but I missed Southern food: fried chicken, blackened shrimp,” he said. “I said, ‘When I come back to America full time, I’m going to open my own restaurant so that I can enjoy what I miss.’”
Kevin II is now a 20-year-old junior and Kristian is a 19-year-old sophomore, both student-athletes at Princeton University. “They played at Cornell University [in Ithaca, N.Y.] on Saturday, won that game [2-0, with one goal by Kristian], drove back that night with their team, and then on Sunday they came to the restaurant and worked a full day,” Kelley said. “Afterward, they rode back to Princeton to get back to their schoolwork.”
Kelley’s first restaurant opened in August 2020 as True Kitchen & Kocktails, but he dropped the “True” because of what he called a trademark concern. He said his team suggested that he add his own name “because they believe in my sacrifice and my investment in them.”
Kelley said his name on the shingle represents accountability. “I take great pride in that,” he said. “As long as I have my ownership, everything is my responsibility, good and bad.”
Kitchen & Kocktails by Kevin Kelley, 225 S. Broad, Philadelphia, Pa. 19107. Hours: 11 a.m. to 10 p.m. Monday to Thursday, 11 a.m. to 11 p.m. Friday, 10 a.m. to 11 p.m. Saturday, and 10 a.m. to 10 p.m. Sunday. Brunch: 10 a.m. to 2 p.m. weekends.
When cookbook author Pamela Anderson and her husband, David, were looking for a bucolic escape in Bucks County, they found a forested stretch of land sandwiched between a high ridge and a stream to put down roots.
The couple, who previously lived in New Hope, toured the 11-acre parcel in Riegelsville with an architect back in 2003, learning how their new home could flow with the land. Today, the focal point of Copper House might be the living room, with 180-degree views from floor-to-ceiling windows. It’s like forest bathing, from a comfortable couch.
“We wanted a place to get away,” Anderson said on a recent October afternoon.
Outside, they’ve woven gravel trails into countless grottos, fire pits, and other quiet gathering places for the numerous visitors who’ve descended upon their home for sound baths, yoga, and meditations. On this Friday afternoon, about a dozen architects and interior designers gathered at their home for a corporate retreat to learn about sustainable flooring.
“Some people just want to come here to have a meeting in a lovely place,” Anderson said.
Pamela and David Anderson sit on their couch in their home, Copper House, where they host events and retreats.
The Andersons didn’t just want to live at Copper House, so they went beyond having friends over for dinner. They started hosting corporate events and retreats at their home during the early days of the COVID-19 pandemic, stopped for a bit, and got things back up again afterward.
“We’ve done most of the work ourselves. We built all the walls ourselves from rocks we had here. It’s expensive to maintain this place, and these events help with that,” Anderson said. “It made sense for us.”
“This was just a natural transition for me from that career to this one,” she said.
David Anderson, a longtime Episcopal priest, said the landscape was wild when they first toured it, filled with brambles and invasive species. The couple has methodically rid the invasive species from various patches of their property, but that work never ends.
Copper House in Upper Bucks County.
Their latest retreat was hosted by Interface, an indoor flooring company that specializes in sustainable projects. Monica Blair-Smith, an account executive with Interface, said they’ve had meetings by a bonfire and in the labyrinth, so far, at Copper House. The team also took a sound bath.
“We toured several places from here to southern New Jersey, but we really loved how much this space was integrated with nature. Hosting in such a beautiful space is important to us,” Blair-Smith said. “Once we toured it, we didn’t go anywhere else. It was a no-brainer.”
Retreat packages at Copper House begin at $1,500.
While events and retreats have become a lucrative business, the Andersons said Copper House is still a home they cherish.
“You’re always seeing something new and different, and our senses are so heightened living here,” Pamela Anderson said. “In winter, it’s like living in a snow globe.”
The Rose Tree Media School District is moving forward with plans to build a kindergarten and first-grade school in Middletown Township, marking its second attempt in recent years to build a new school amid rising enrollment and shrinking classroom space.
The district says the school will be necessary to accommodate increasing student numbers and will finally allow the Delaware County community to offer full-day kindergarten. Yet an uphill battle remains before crews can break ground, as the district must receive approvals from Middletown Township’s council, which has signaled apprehension over traffic and development in the growing municipality.
Why is the district planning to build a new school?
The Rose Tree Media School District plans to build a new elementary school for kindergarten and first-grade students, known as the K-1 Early Learning Center, on district-owned land behind Penncrest High School.
Put simply, “We are overcrowded at the elementary level,” said Rose Tree Media School District Superintendent Joe Meloche.
The school district estimates that more than 600 new homes have been built within its bounds in the last six years, including major developments like Pond’s Edge and the Franklin Mint site. The school district serves Media Borough and Edgmont, Middletown, and Upper Providence Townships. Between 2020 and 2024, Middletown saw a nearly 6% growth rate, due in large part to the new developments. The district projects it will grow by around 300 students in the next 10 years.
!function(){“use strict”;window.addEventListener(“message”,function(a){if(void 0!==a.data[“datawrapper-height”]){var e=document.querySelectorAll(“iframe”);for(var t in a.data[“datawrapper-height”])for(var r,i=0;r=e[i];i++)if(r.contentWindow===a.source){var d=a.data[“datawrapper-height”][t]+”px”;r.style.height=d}}})}();
This growth has forced the district to adopt space-saving measures. At Glenwood Elementary School, two modular classrooms were installed in 2023. The school got two more modular classrooms in 2024, then two more in 2025. There are now 10 modular classrooms being used across the district.
While Rose Tree Media can temporarily expand its classroom space, it can’t expand gyms, cafeterias, auditoriums, nurse’s offices, and other communal spaces. Beyond that, Meloche said, older school buildings aren’t designed to accommodate a modern school day, which includes far more individualized services, breakout groups, and collaborative work than it used to.
What will the new school look like?
Rose Tree Media is working with the Schrader Group, an architecture firm that has designed schools throughout the Philly region, including a K-1 school in Phoenixville.
Having Rose Tree Media’s youngest learners in one building will allow the district to add some “nuanced things” to the school’s design, Meloche said. Small water fountains, tiny sinks, and low-to-the-ground chairs come to mind. The K-1 Center will also place all of the district’s kindergarten and first-grade teachers in one place, making professional development and sharing of resources easier, Meloche said.
The project is currently estimated to cost $84 million. The district says it plans to sell bonds to build the school.
Though suggestions have floated around that Rose Tree Media remodel an old school, rather than build something new, district officials say it’s unrealistic. According to the district, purchasing and repurposing an old building “would be costly and would not meet the needs of young children” as it would lack accessibility features, safe play areas, and elements designed specifically for early learners.
What will this mean for full-day kindergarten?
Rose Tree Media is one of many districts in the Philadelphia region that have historically not offered full-day kindergarten.
Citing families’ needs for childcare and the developmental benefits of full-day schooling, many districts in the region have begun implementing full-day programs. The Penn-Delco School District implemented full-day kindergarten in 2023. Lower Merion switched from half-day to full-day last school year. New Jersey Gov. Phil Murphy signed a law ending half-day kindergarten across the state earlier this summer.
Meloche said bringing full-day kindergarten to Rose Tree Media has been on the table since he came to the district from Cherry Hill in 2023. Full-day kindergarten, Meloche said, will allow the district to “provide a much more substantial foundation for our children.” Under the half-day model, learning is crammed into a shorter period, he said, leaving little time for developmentally important activities like free play, outdoor activities, and specials like art, music, and physical education. Rose Tree Media’s existing elementary schools could not accommodate full-day kindergarten, according to the district.
What happened to the district’s previous proposal in Edgmont Township?
Rose Tree Media evaluated 23 potential sites for a new school before landing on a piece of land in Edgmont Township. That plan fell apart after the township denied the school district’s application in 2023, prompting the district to sue. The school district withdrew its legal challenge last spring and pivoted to the K-1 Center proposal.
Meloche said the district is in the process of selling the 37-acre Edgmont Township property on Route 352. The school district is finalizing the appraisal and has a buyer. They hope to finalize the process, including receiving court approval to sell, by the end of the year.
What will the approval process with Middletown Township look like?
Though the district already owns the property behind Penncrest High School, it is required to go through a planning and development process with local and state governing bodies, which can take several months.
The township has asked the district to undergo an expanded traffic study, which will include evaluations of the intersections of Middletown and Oriole Roads, Rose Tree Road and Hunting Hills Lane, and three access points to Penncrest High School on Barren Road. Once the district completes its expanded traffic study, it will submit a preliminary land development plan to the township. That will kick off a series of public hearings.
The district plans to hold an Act 34 hearing in January, a public meeting required by Pennsylvania law that gives residents and employees an opportunity to weigh in on the project.
During public meetings this fall, some residents urged the Middletown Township Council to deny the school district’s proposal, referencing traffic concerns and the desire to preserve green space. Others implored them to approve the school, citing a need to accommodate residents of new apartments and offer full-day kindergarten to working parents.
Council members noted that the school district will have the opportunity to address community concerns before an official plan is brought to the council.
Councilmember David Bialek said at a Sept. 17 meeting that the district has implied to the public that the K-1 Center is “a done deal” and “rubber-stamped,” when a preliminary plan has not yet been submitted.
In an emailed statement, Meloche said, “We have stated multiple times publicly that we have identified the K-1 Center’s location and purpose, and are now in the approval phase, which includes a rigorous process of approvals from Middletown Township, Delaware County, DEP and PennDot. We have been clear that the land development process must be completed prior to obtaining a building permit. The discussion at our Board meetings, the information on the Time to Bloom web page, and our monthly Time to Bloom email updates have laid out the land development process in detail.”
A rendering of the Rose Tree Media School District’s proposed K-1 center, which the district hopes to build behind Penncrest High School.
Township council chair Bibianna Dussling saidat an Oct. 1 meeting that the “details are going to be key” as the council considers the K-1 Center plans.
“It’s complicated because you can see the pros and cons,” Dussling said. “There’s a lot of concerns as far as the location, traffic, the neighbors, the neighborhood in very close proximity to it, the roadways there that are already busy.”
The district has said its professionals are working on creating an “optimal traffic flow,” which may include adding an additional parking lot for athletic fields and routing K-1 Center bus access around the back of Penncrest High School.
“We believe that we are all on the same side and on the same team,” Meloche said, adding that the goal is “to meet the needs of our community at-large, and to do so in a fiscally responsible but forward-thinking and future-looking way.”
The district says the new school will open in time for the 2028-29 school year. If the application is denied, a spokesperson from the district said they do not have an alternative plan for the K-1 Center.
This suburban content is produced with support from the Leslie Miller and Richard Worley Foundation and The Lenfest Institute for Journalism. Editorial content is created independently of the project donors. Gifts to support The Inquirer’s high-impact journalism can be made at inquirer.com/donate. A list of Lenfest Institute donors can be found at lenfestinstitute.org/supporters.
If you’re looking to clown around, look no further: Philadelphia’s quirkiest bar is a cross between a retro living room, an amusement park’s dumpster, and a clown collector’s dream.
Located above Kensingtonbar Kung Fu Necktie at 1248 N. Front St., the Neon Clown Dream Lounge has roughly 120 salvaged works of clown art competing for attention across the walls, the counters, and even the ceilings.
And yet, the bars’ owner — a man who would only refer to himself as Chicken (real name James Herman) — said the Neon Clown is not a shrine to the professional red-nosed jokers, despite its name and decor. Rather, Philly’s clown lounge is an ode to a few of Chicken’s favorite things: art deco furnishings, upcycled industrial trash, and a touch of clownery.
Chicken’s clown fascination began in the 1990s when he was building his career as an artist and gallerist inspired by Bernard Buffet, a French expressionist painter whose work often depicted downtrodden and almost skeletal clowns. Since then, the painted jokesters have flitted in and out of Chicken’s life. They became subjects of his own art and a bit for his band, Plaque Marks, which performs in full clown suits.
The main dining area inside Kensington’s Neon Clown Dream Lounge, which owner Chicken estimates contains roughly 120 different clowns.
“How can you cancel a clown?” Chicken, 64, said while knocking back his first of several tequila and ouzo cocktails over a recent interview. “There’s no prospect of offending anybody with a clown … Some people love them and some people dislike them, but there’s still a level of whimsy.”
The second-story space served as Kung Fu Necktie’s no-frills music venue until 2018, when Chicken said a Department of Licenses and Inspections officer ordered the second floor to close. The closure — coupled with the pandemic — gave the Kung Fu Necktie owner what he called the “perfect” opportunity to make something useful out of the salvaged wares he’d been collecting for decades from abandoned churches, condemned buildings, and going-out-of-business sales at theme parks.
When the Neon Clown Lounge opened in September 2024, it “was like a relief valve,” Chicken said. “I’ve had some of this s— for 30 years.”
The clown bar was an apartment before it was anything else. The living room was replaced by the bar’s main seating area, where a leather couch and a row of vintage seating from one of LaGuardia Airport’s lounges sit beneath a cluster of clown masks Chicken retrofitted into ambient light fixtures. The parlor was knocked out in favor of a stage paneled with leftover wood from a now-demolished house on Front Street; the room is outfitted with a disco light that spins above couches fit for a conversation pit.
The rest of the space is peppered with clown portraits and figurines both large and small, including a trio of eerily childlike wooden cutouts Chicken purchased from Obnoxious Antiques, a warehouse that mines amusement parks for treasure in Burlington, New Jersey.
There’s no criteria for what makes a good piece of clownery, Chicken said, other than that it captures the aura of the 1970s. The decade was a golden age for clowns in popular culture, not long after Barnum & Bailey opened the first clown college to train people to emulate characters like Bozo and Ronald McDonald.
The ceiling of Kensington’s Neon Clown Dream Lounge is covered with clown masks that owner Chicken retrofitted into lighting fixtures.
“I could’ve put out a bunch of crap you can buy at the dollar store,” said Chicken. “We want stuff that’s one-of-one and authentic. Something that is of the era, not replicated.”
A space for clowns, tended by the ‘clown neutral’
Bar manager Evan Madden — who self-identifies as “clown neutral” — said he tries to imbue the drinks program with the energy of a clown. Both, after all, are very serious about doing what some consider unserious work.
The Neon Clown Dream Lounge never has a cover, and the only food on offer are $2 hot dogs. The drink menu has 12 cocktails with names that conjure up images of killer clowns and carnival food, like “Endless Nightmare,” “Witching Hour,” or “Tropical Hot Dog Too.”
The Tropical Hot Dog Too (left) and Endless Nightmare (right) cocktails from Neon Clown Dream Lounge.
The Endless Nightmare is the lounge’s house margarita and uses Espolón tequila that Madden says spends just under a week marinating in a pineapple-lime mixture; on good weeks, the bar goes through six to eight 25-ounce bottles of the mix. The Witching Hour comes across as a spiked coffee, combining cold brew with rum, amaretto, mint extract, and a shot of dry Curacao for a citrus-y aftertaste. Tropical Hot Dog Too mixes smoky mezcal with a vermouth that spends hours steeping in a mixture of chilies, limes, and grapefruit liqueur.
Roughly once a month, Madden said, a group of clowns will sit at the bar in full costume and imbibe. “They’re appreciative of the space,” he continued. “There’s not a lot of clown bars in Philadelphia.”
Nearly every piece of decor inside the Neon Clown Dream Lounge has been thrifted or salvaged from abandoned homes, churches, or amusement parks.
Or anywhere, really. Outside of Philadelphia, the clown lounge’s only competition in the United States is Creepy’s in Portland, Ore., which has animatronic dolls and pinball, but only a fraction of Chicken’s clowns.
Still, not everyone is a fan, said Chicken: When the bar first opened, one customer left a review saying there weren’t enough clowns. Tough nuts, Chicken said with another cocktail in hand.
The clown lounge is “like a sanctuary … a safe zone,” Chicken said. “We want to make the space feel open and comfortable.”
Bucks County Sheriff Fred Harran acted legally in signing up to have his deputies help ICE enforce federal immigration laws, a judge ruled Wednesday in a case that has riled residents on both sides of a contentious issue.
Bucks County Court Judge Jeffrey Trauger said Harran’s cooperation with the agency was “clearly lawful under Pennsylvania jurisprudence,” and both “reasonable and necessary” in fulfilling his lawful duty to keep the citizens of Bucks County safe.
What the judge called “intergovernmental cooperation of law enforcement” is no different under the law at the county, state, or federal level, he wrote.
Reached by phone Wednesday, Harran said he was pleased with the decision and expected his partnership with U.S. Immigration and Customs Enforcement to be fully operational by the end of next week.
“I knew from the time I started this that I was in the right, that the county commissioners do not control the office of the sheriff,” Harran said.
A spokesperson for Bucks County said the county intended to appeal.
Those who sought to block Harran’s efforts said they would continue to battle.
“This decision doesn’t mean that we’ll stop fighting to hold Sheriff Harran accountable,” said Diana Robinson, co-executive director of Make the Road Pennsylvania, an advocacy group that was one of the plaintiffs. ”Indeed, we will redouble our efforts in this case and continue to fight for what is right.”
She said an alliance between Harran’s department and ICE was aimed at “turning our neighborhoods into surveillance zones” and “weaponizing local law enforcement to carry out ICE’s harmful agenda.”
Community members rally in Bucks County before civil rights groups asked a judge to block Sheriff Fred Harran’s controversial partnership with ICE.
In his opinion, the judge said it did not appear that Make the Road, NAACP Bucks County, or Buxmont Unitarian Universalist Fellowship as organizations had clear standing to sue under Pennsylvania law.
While individual members might have standing if they were caused harm by the sheriff’s office, he said, the injuries they alleged were “not immediate or substantial,” and their complaint was based in part on speculation about what might happen.
ACLU of Pennsylvania attorney Stephen Loney, who helped lead the court fight, said Wednesday that he disagreed with the decision.
“In the most respectful way I could possibly say it, I think the judge got it totally wrong,” he said. “It’s unfortunate.”
He said the ACLU would appeal the decision.
ICE officials did not immediately offer comment.
Melanie Goldstein holds a sign as demonstrators rally outside the Bucks County Administration building before a hearing last month during which the ACLU and other organizations sought an injunction to stop the Bucks County sheriff from going through with his plan to help ICE enforce immigration laws.
Laura Rose, an organizer with Indivisible Bucks County, said the group was “deeply disappointed in Judge Trauger’s decision” to let Harran proceed “without guardrails.”
She called the ruling “a profound failure to protect both the immigrants and taxpayers of Bucks County.”
Rose called on voters to end the local alliance with ICE by voting Harran out of office on Nov. 4.
Harran’s lawyer, Wally Zimolong, called the decision “a victory for the rule of law and for the safety of Bucks County residents,” and accused the ACLU of maligning the sheriff with false claims.
“Frankly,” he said, “it is mind-boggling that anyone would oppose this. It is also a vindication for Sheriff Harran, a good and honorable man and dedicated public servant. … It is a proud day when people of good character, like Sheriff Harran, prevail over those that lack it.”
In the spring, Harran and ICE officials signed what is called a 287(g) agreement, a controversial program named for a section of a 1996 immigration law. It enables local police to undergo ICE training, then assist the agency in identifying, arresting, and deporting immigrants.
Shortly before the government shutdown, ICE was poised to begin backing its recruitment efforts with money, announcing that it would reimburse cooperating police agencies for costs that previously had been borne by local departments and taxpayers.
Harran, who is seeking reelection in November, has pledged “zero cost” to local taxpayers.
He insists the alliance with ICE will prevent crime and keep people safe. Civil rights groups say the sheriff is inviting racial profiling, taxpayer liability, and a loss of trust between police and citizens.
Bucks County’s sheriff Fred Harran, outside the courthouse in Doylestown, PA, June 9, 2025.
Contentious legal hearings have come against a backdrop of name-calling and rancor outside the courtroom.
The Democratic-led Bucks County Board of Commissioners has disavowed Harran’s actions, voting 2-1, with the lone Republican opposed, to approve a resolution that declared the agreement with ICE “is not an appropriate use of Bucks County taxpayer resources.”
The ICE issue has become central to Democrats’ effort to oust Harran, a Republican, while the sheriff says his intentions have been misconstrued by political opponents and the news media.
“A judge ruling that he has the authority to enter into this deportation agreement does not make this any less dangerous,” Harran’s Democratic opponent, Danny Ceisler, said in a statement Wednesday.
The last opportunity to end the partnership, Ceisler said, is by winning the election next month.
A key issue has been the difference between what Harran says he intends to do and the much broader powers conferred within the agreement with ICE.
Harran signed up for the “Task Force Model,” the most far-reaching of the three types of 287(g) agreements. It allows local police to challenge people on the streets about their immigration status and arrest them for violations.
Harran said his officers won’t do that.
Wednesday’s ruling, Harran said, recognized the limited scope of his plans, and he suggested that every county should partner with ICE.
“I’m only interested in making the county safer, and I’m only interested in dealing with those folks that are in this country illegally that have committed crimes,” Harran said. “I am not the immigration police. I am not Immigration and Customs Enforcement.”
Harran has said staff will electronically check the immigration status of people who have contact with the sheriff’s office because of alleged criminal offenses. Those found to be in the country illegally will be turned over or transported to ICE, if the federal agency desires, he said.
Harran testified in court last month that he planned to create a sheriff’s office policy to specify the limits of his deputies’ powers but had not yet done so.
He insisted that his office would take only the actions he has described.
“We will not be stopping people to ask them on immigration status,” he said under cross-examination. “I know what I am doing, and that’s all I intend to do.”
This suburban content is produced with support from the Leslie Miller and Richard Worley Foundation and The Lenfest Institute for Journalism. Editorial content is created independently of the project donors. Gifts to support The Inquirer’s high-impact journalism can be made at inquirer.com/donate. A list of Lenfest Institute donors can be found at lenfestinstitute.org/supporters.
With the exception of a sign etched onto a glass window on the ground floor, there’s no indication that an entertainment venue and bar awaits beyond the doors of Media’s predominately office-focused Phoenix building.
Inside is equally vague. There’s just a large sign that reads “Martinique Deux” situated on a staircase leading to the basement. Following it downstairs, there’s an innocuous door that leads to a speakeasy-like bar.
Martinique Deux’s owners — business partners James Matika, Jason Fogg, and Pat Collins — like that it has a bit of a mystique, at least for the time being.
That will change when the entertainment venue and bar debuts on Oct. 17 and Oct. 18, during a soft opening in advance of its grand opening on Oct. 23.
Located at 115 W. State St., the 2,400-square-foot space features a long bar with chairs, high- and low-top tables, including some with church pews for seating, a stage with a piano, as well as a back section with couches and a big-screen TV.
Though largely dark and atmospheric, there are some pop culture nods, like a large painting of David Bowie and a photo of Princess Diana sporting an Eagles jacket.
When Martinique Deux opens, its owners envision it as a lively place where people can grab a drink before or after dinner, watch a game, play darts, and enjoy a music or comedy show. It will be open from 4 p.m. to midnight on Wednesdays, Thursdays, and Fridays, and open earlier on weekends.
A dart board on the wall at Martinique Deux in Media.
The 21-and-over venue will have live entertainment at least three days a week, with music performances on Fridays and Saturdays and comedy shows on Thursdays, though the lineups will vary. They plan to launch with a range of musical acts and comedy, with some being ticketed events and others charging a cover.
Sports fans can also catch games, with a large TV taking center stage during Eagles games.
“If there’s Philly sports on, that’s what will be on,” Matika said.
After football season ends, they’re contemplating adding acoustic performances on Sundays. Weekends may also see Martinique Deux open earlier to accommodate Premier League soccer fans.
Martinique Deux will also be open on Wednesdays starting around Thanksgiving, but largely without planned entertainment.
The bar will offer staple food items like soft pretzels, popcorn, and chips, with plans to partner with neighboring pizza joint Lariele Wood Fired Square Pie. They’re also contemplating a rotating food truck lineup on live entertainment nights.
While they’re still finalizing the cocktail list, it will likely be bourbon-forward and feature Pops McCann liquors, Fogg’s Pottstown distillery that produces bourbons, whiskeys, and a rum, and is planning to expand into vodkas and tequilas.
“We’re going to keep it simple,” Matika said.
The bar will feature Pops McCann liquors, Fogg’s Pottstown distillery.
When Martinique Deux opens, it will mark the end of a year-and-a-half-long effort to bring the concept to life. Matika and Collins began working on it together last March after each independently considered similar ideas. They soon connected and set about transforming the space, which was sitting empty after an escape room there closed amid the pandemic.
Both also have experience in the industry — Matika worked at Tap 24 and La Belle Epoque in Media and grew up in the bars his father owned, including The Martinique in Wildwood. Similarly, Collins’ father formerly owned the Clam Tavern in Clifton Heights, and Collins himself said he owned a dive bar in South Philly previously.
They later connected with Fogg through a mutual friend, bringing the entire vision together.
Owners Jason Fogg, James Matika, and Pat Collins pose for a photo at the bar.
“I think it’s going to be one of Media’s staples,” Collins said.
This suburban content is produced with support from the Leslie Miller and Richard Worley Foundation and The Lenfest Institute for Journalism. Editorial content is created independently of the project donors. Gifts to support The Inquirer’s high-impact journalism can be made at inquirer.com/donate. A list of Lenfest Institute donors can be found at lenfestinstitute.org/supporters.
The Mann is getting a new name. With a major sponsorship in hand, Philadelphia’s arts center in Fairmount Park will now be called the Highmark Mann Center for the Performing Arts.
The Pittsburgh-based Highmark insurance company will join the Mann nameplate starting immediately under the terms of a 12-year deal.
“This investment will absolutely help to ensure that the Mann will continue to be an evolving, creative, living, inviting premier destination for our region, for all the artists that we present, and for the audiences that come. This is really an exciting next step for us,” said Catherine M. Cahill, president and CEO of the arts center.
The main entrance to the Highmark Mann as it is envisioned after a renovation and re-opening in the spring of 2026.
Cahill and Highmark declined to discuss how much the company paid for the naming rights and other financial details. “Substantial” is how Dan Tropeano, market president of Highmark Blue Shield in Southeastern Pennsylvania, described the amount of money the company will pay to put its name on the venue.
He noted that Highmark had entered the Philadelphia market recently — in 2023 — and that the company saw an alignment between its customers and the Mann’s patrons.
“They offer programming that appeals to the entire demographic of the folks here in Southeast Pa., whether that’s the orchestra for folks that like that kind of thing, whether it’s other music festivals that cater to other types,” said Tropeano, who recalled attending his first Mann concert in 1991 (the Allman Brothers Band). “We find it to be one of the most diverse venues that really exposes us to the entire community, not just one defined segment.”
The arts center will use the moniker Highmark Mann for short.
A rendering of a new Welcome Center at the arts center that, when built, will house a Music Hall of Fame Jukebox, gift shop and a continuously running LED ticker with names of performers who have played the center throughout its history.
The new name was announced Wednesday afternoon in a ceremony marking the start of construction on a renovation slated for completion in the spring. The project is part of a $70 million campaign that will also boost endowment and fund operations and artistic projects.
Among the changes coming to the Mann are a new main entry canopy and a plaza three times the size of the current one. A section of the Mann’s angular shed will display a 4,900-square-foot LED screen animated with video and kinetic artwork. Digital pillars, landscaping, lighting, and new way-finding features are on the way.
To date, nearly $60 million has been raised toward the $70 million total, said Cahill, who declined to specify whether the money from Highmark would be paid in one lump sum or in installments over years.
“This is an important component of this campaign, but we still have more work to do. We still have more money to raise,” she said, adding that she expects the $70 million goal to be reached by February 2027.
Catherine M. Cahill, president and CEO of what is now called the Highmark Mann, with the Philadelphia Orchestra rehearsing in the background, July 23, 2025.
The new name is the center’s fourth. Called the Robin Hood Dell West at its opening in 1976, it was renamed the Mann Music Center in 1979 for philanthropist Fredric R. Mann and then, in 1998, the Mann Center for the Performing Arts.
The new name will apply not just to the physical campus — which includes the main shed named for TD Bank and a smaller stage at the top of the hill already named for Highmark — but also to the organization itself.
(The name change is a rebranding; the center is not changing its name legally.)
Fans cheer while Black Thought of The Roots performed during day two of the Roots Picnic 2025 at the Mann Center on Sunday, June 1, 2025.
Some major naming opportunities may be spoken for, but others remain, Cahill said.
“We have the plaza that can be named. We have backstage spaces to be named. We have programmatic things to be named. We have a whole laundry list of naming rights.”
Though officials declined to quantify the cost of the sponsorship deal, Cahill said the amount was in line with similar ones elsewhere.
“We did national benchmarking about the world of naming rights, and I can tell you we are absolutely confident that where we landed in this deal is exactly where the Mann should be.”
Almost as soon as we closed The 76 last year, The Inquirer’s Food team started thinking about how to improve it. The challenge of an annual list is not just to keep it going, but to make sure it stays as relevant and useful as it was in the first edition.
Philadelphia is an incredible city for eating. That’s not news to anyone reading this. As the fine dining scene in Philadelphia — rightfully — draws more national (and international) attention, the danger is that excellent, low-profile eateries will go ignored while kitchens focused on luxe ingredients win acclaim.
What makes Philadelphia’s restaurant scene unique is that there’s room for experiments, for big swings, and for upstarts to express their own culinary perspectives. That’s thanks to a blend of factors: a lower cost of living than other East Coast cities, a confluence of talent, and a diversity of immigrant cuisine. There’s an exciting culture of collaboration and DIY energy in Philly, like going to a basement show of a band that feels destined to make it big.
In the food section, we cover the big award nominees, of course. But we’re equally eager to celebrate an unassuming BYOB, a new-to-us food cart, a killer sandwich, or a fantastic café. It’s not that these places are secret, but they aren’t the national media darlings that some of Philly’s top spots have become. With this year’s 76, we aimed to give those restaurants their accolades, too.
So we enlisted even more eating power than last year, drawing on a newsroom of reporters who travel all over the Philadelphia area every day, telling stories in every community. There were surprises. There were delights. There were at least two cases of food poisoning.
But the results were worth it. This list is unlike any other in Philadelphia, both in its scope and in its depth. I’m tremendously proud of it, and of the immense effort The Inquirer put into it.
As the new food editor at The Inquirer, my aim is to make sure that The 76 keeps evolving, to reflect, as best we can, the vast cultural and culinary diversity in Philadelphia. Don’t worry: We’re already thinking about next year.
It’s a brand-new year for The 76, The Inquirer’s annual list of the most vital restaurants in the Philadelphia area. This year, we started fresh with a new batch of dining scouts and an even wider purview, diving deeper into pockets of Philadelphia that we didn’t get to eat through last year. The result is a list that we hope is as vibrant, diverse, and interesting as the city that it reflects.
You’ll find some favorites from last year on 2025’s 76, which held on to their spots by being just as impressive as they were the last times we ate there (Friday Saturday Sunday still dazzles, as does Gabriella’s Vietnam).
But you’ll notice that there’s a good deal of turnover, too. More than half of the list is fresh — either classics we felt deserved their time in the spotlight, like the white-tablecloth red-gravy stalwart Dante & Luigi’s or chef favorite Pho 75, or new and new-to-us spots that reflect the shifting energy of the dining scene, like Indonesian karaoke hot spot Niki Echo and the revived Tequilas, a three-restaurants-in-one experience.
Advertisement
Our scouts, all 18 of them, fanned out across the Philadelphia area and ate through cuisines we were curious about, like the wide-ranging food truck landscape and the vibrant Mexican community in Norristown. We found a Main Line cheesesteak (Johnny’s Pizzeria) that rivals South Philly’s best. The result is a list filled with gems, some in plain sight and some that required a bit more hunting.
We think this list, which is unranked and alphabetical, is the most useful list of Philadelphia-area restaurants out there. Some hotly anticipated openings like Stephen Starr’s Borromini and Phila Lorn’s Sao opened too late to make the cut. But don’t worry, there’s always next year.
The 76 is how we think Philadelphia is eating right now, and — we hope — might help you uncover your next favorite spot. Grab a plate and dig in.
Advertisement
How The Inquirer makes its recommendations
The Inquirer aims to represent the geographic, cultural, and culinary diversity of the region in its coverage. Inquirer staffers and contributors do not accept free or comped meals — all meals are paid for by The Inquirer. All dining recommendations are made solely by The Inquirer editorial staffers and contributors based on their reporting and expertise, without input from advertisers or outside interests. More information about how The 76 was put together is available here.
Filter by
Genres
1
Regions
1
Price
1
Showing 76 places
Clear filters
The medium mixed grill and sides.Monica Herndon / Staff Photographer
BBQ captain Jason Kim cooks prime rib eye for the “Korean BBQ Combo B,” including prime cha dol begi, prime rib eye, marinated prime kalbi, steamed egg, scallion salad, doenjang jjigae or kimchi jjigae.Elizabeth Robertson / Staff Photographer
Pho order number 1: Slices of eye-round steak, well-done flank, fat brisket, soft tendon and beef tripe with added meatballs.Alejandro A. Alvarez / Staff Photographer
This is the second edition of The 76 and we’re looking for your feedback to make it even more useful. If you have thoughts about its design or features, we would appreciate a few minutes of your time by taking this survey.
Staff Contributors
Editing: Margaret Eby, Jenn Ladd, and Matt Buchanan
Reporters: Beatrice Forman, Craig LaBan, Earl Hopkins, Emily Bloch, Evan S. Benn, Evan Weiss, Hira Qureshi, Jake Blumgart, Jasen Lo, Jenn Ladd, Julia Duarte, Kiki Aranita, Max Marin, Michael Klein, Ryan Briggs, Tommy Rowan, and Ximena Conde
Social Editing: Esra Erol and Sam Stewart
Design, Art Direction, and Development: Sam Morris
Art Direction: Julia Duarte and Suzette Moyer
Photo Editing: Jasmine Goldband
Photographers: Alejandro A. Alvarez, Caean Couto, Tom Gralish, Jessica Griffin, Monica Herndon, Heather Khalifa, Yong Kim, Joe Lamberti, Elizabeth Robertson, Tim Tai, Isaiah Vazquez, Tyger Williams
Video: Gabe Coffey, Esra Erol, Jenna Miller, Samantha Stewart
`}tablecell(t,n){let r=n.header?”th”:”td”;return(n.align?“:“)+t+`${r}>
`}strong(t){return`${t}`}em(t){return`${t}`}codespan(t){return`${t}`}br(){return this.options.xhtml?” “:” “}del(t){return`${t}`}link(t,n,r){if(t=hi(this.options.sanitize,this.options.baseUrl,t),t===null)return r;let i=’“+r+”“,i}image(t,n,r){if(t=hi(this.options.sanitize,this.options.baseUrl,t),t===null)return r;let i=`“:”>”,i}text(t){return t}},kt=class{strong(t){return t}em(t){return t}codespan(t){return t}del(t){return t}html(t){return t}text(t){return t}link(t,n,r){return””+r}image(t,n,r){return””+r}br(){return””}},bt=class{constructor(){this.seen={}}serialize(t){return t.toLowerCase().trim().replace(//ig,””).replace(/[u2000-u206Fu2E00-u2E7F\’!”#$%&()*+,./:;?@[]^`{|}~]/g,””).replace(/s/g,”-“)}getNextSafeSlug(t,n){let r=t,i=0;if(this.seen.hasOwnProperty(r)){i=this.seen[t];do i++,r=t+”-“+i;while(this.seen.hasOwnProperty(r))}return n||(this.seen[t]=i,this.seen[r]=0),r}slug(t,n={}){let r=this.serialize(t);return this.getNextSafeSlug(r,n.dryrun)}},ie=class{constructor(t){this.options=t||me,this.options.renderer=this.options.renderer||new Qe,this.renderer=this.options.renderer,this.renderer.options=this.options,this.textRenderer=new kt,this.slugger=new bt}static parse(t,n){return new ie(n).parse(t)}static parseInline(t,n){return new ie(n).parseInline(t)}parse(t,n=!0){let r=””,i,s,o,l,a,c,h,u,f,p,x,y,k,w,T,b,D,B,Z,ce=t.length;for(i=0;i<ce;i++){if(p=t[i],this.options.extensions&&this.options.extensions.renderers&&this.options.extensions.renderers[p.type]&&(Z=this.options.extensions.renderers[p.type].call({parser:this},p),Z!==!1||!["space","hr","heading","code","table","blockquote","list","html","paragraph","text"].includes(p.type))){r+=Z||"";continue}switch(p.type){case"space":continue;case"hr":{r+=this.renderer.hr();continue}case"heading":{r+=this.renderer.heading(this.parseInline(p.tokens),p.depth,wi(this.parseInline(p.tokens,this.textRenderer)),this.slugger);continue}case"code":{r+=this.renderer.code(p.text,p.lang,p.escaped);continue}case"table":{for(u="",h="",l=p.header.length,s=0;s<l;s++)h+=this.renderer.tablecell(this.parseInline(p.header[s].tokens),{header:!0,align:p.align[s]});for(u+=this.renderer.tablerow(h),f="",l=p.rows.length,s=0;s<l;s++){for(c=p.rows[s],h="",a=c.length,o=0;o<a;o++)h+=this.renderer.tablecell(this.parseInline(c[o].tokens),{header:!1,align:p.align[o]});f+=this.renderer.tablerow(h)}r+=this.renderer.table(u,f);continue}case"blockquote":{f=this.parse(p.tokens),r+=this.renderer.blockquote(f);continue}case"list":{for(x=p.ordered,y=p.start,k=p.loose,l=p.items.length,f="",s=0;s0&&T.tokens[0].type===”paragraph”?(T.tokens[0].text=B+” “+T.tokens[0].text,T.tokens[0].tokens&&T.tokens[0].tokens.length>0&&T.tokens[0].tokens[0].type===”text”&&(T.tokens[0].tokens[0].text=B+” “+T.tokens[0].tokens[0].text)):T.tokens.unshift({type:”text”,text:B}):w+=B),w+=this.parse(T.tokens,k),f+=this.renderer.listitem(w,D,b);r+=this.renderer.list(f,x,y);continue}case”html”:{r+=this.renderer.html(p.text);continue}case”paragraph”:{r+=this.renderer.paragraph(this.parseInline(p.tokens));continue}case”text”:{for(f=p.tokens?this.parseInline(p.tokens):p.text;i+1<ce&&t[i+1].type==="text";)p=t[++i],f+=`
`+(p.tokens?this.parseInline(p.tokens):p.text);r+=n?this.renderer.paragraph(f):f;continue}default:{let Ie='Token with "'+p.type+'" type was not found.';if(this.options.silent){console.error(Ie);return}else throw new Error(Ie)}}}return r}parseInline(t,n){n=n||this.renderer;let r="",i,s,o,l=t.length;for(i=0;i{if(r.message+=`
Please report this to https://github.com/markedjs/marked.`,e){let i=”
An error occurred:
"+R(r.message+"",!0)+"
“;if(t)return Promise.resolve(i);if(n){n(null,i);return}return i}if(t)return Promise.reject(r);if(n){n(r);return}throw r}}function xi(e,t){return(n,r,i)=>{typeof r==”function”&&(i=r,r=null);let s={…r};r={…m.defaults,…s};let o=kl(r.silent,r.async,i);if(typeof n>”u”||n===null)return o(new Error(“marked(): input parameter is undefined or null”));if(typeof n!=”string”)return o(new Error(“marked(): input parameter is of type “+Object.prototype.toString.call(n)+”, string expected”));if(yl(r),r.hooks&&(r.hooks.options=r),i){let l=r.highlight,a;try{r.hooks&&(n=r.hooks.preprocess(n)),a=e(n,r)}catch(u){return o(u)}let c=function(u){let f;if(!u)try{r.walkTokens&&m.walkTokens(a,r.walkTokens),f=t(a,r),r.hooks&&(f=r.hooks.postprocess(f))}catch(p){u=p}return r.highlight=l,u?o(u):i(null,f)};if(!l||l.length{l(u.text,u.lang,function(f,p){if(f)return c(f);p!=null&&p!==u.text&&(u.text=p,u.escaped=!0),h–,h===0&&c()})},0))}),h===0&&c();return}if(r.async)return Promise.resolve(r.hooks?r.hooks.preprocess(n):n).then(l=>e(l,r)).then(l=>r.walkTokens?Promise.all(m.walkTokens(l,r.walkTokens)).then(()=>l):l).then(l=>t(l,r)).then(l=>r.hooks?r.hooks.postprocess(l):l).catch(o);try{r.hooks&&(n=r.hooks.preprocess(n));let l=e(n,r);r.walkTokens&&m.walkTokens(l,r.walkTokens);let a=t(l,r);return r.hooks&&(a=r.hooks.postprocess(a)),a}catch(l){return o(l)}}}function m(e,t,n){return xi(re.lex,ie.parse)(e,t,n)}m.options=m.setOptions=function(e){return m.defaults={…m.defaults,…e},sl(m.defaults),m};m.getDefaults=mi;m.defaults=me;m.use=function(…e){let t=m.defaults.extensions||{renderers:{},childTokens:{}};e.forEach(n=>{let r={…n};if(r.async=m.defaults.async||r.async||!1,n.extensions&&(n.extensions.forEach(i=>{if(!i.name)throw new Error(“extension name required”);if(i.renderer){let s=t.renderers[i.name];s?t.renderers[i.name]=function(…o){let l=i.renderer.apply(this,o);return l===!1&&(l=s.apply(this,o)),l}:t.renderers[i.name]=i.renderer}if(i.tokenizer){if(!i.level||i.level!==”block”&&i.level!==”inline”)throw new Error(“extension level must be ‘block’ or ‘inline’”);t[i.level]?t[i.level].unshift(i.tokenizer):t[i.level]=[i.tokenizer],i.start&&(i.level===”block”?t.startBlock?t.startBlock.push(i.start):t.startBlock=[i.start]:i.level===”inline”&&(t.startInline?t.startInline.push(i.start):t.startInline=[i.start]))}i.childTokens&&(t.childTokens[i.name]=i.childTokens)}),r.extensions=t),n.renderer){let i=m.defaults.renderer||new Qe;for(let s in n.renderer){let o=i[s];i[s]=(…l)=>{let a=n.renderer[s].apply(i,l);return a===!1&&(a=o.apply(i,l)),a}}r.renderer=i}if(n.tokenizer){let i=m.defaults.tokenizer||new Je;for(let s in n.tokenizer){let o=i[s];i[s]=(…l)=>{let a=n.tokenizer[s].apply(i,l);return a===!1&&(a=o.apply(i,l)),a}}r.tokenizer=i}if(n.hooks){let i=m.defaults.hooks||new Te;for(let s in n.hooks){let o=i[s];Te.passThroughHooks.has(s)?i[s]=l=>{if(m.defaults.async)return Promise.resolve(n.hooks[s].call(i,l)).then(c=>o.call(i,c));let a=n.hooks[s].call(i,l);return o.call(i,a)}:i[s]=(…l)=>{let a=n.hooks[s].apply(i,l);return a===!1&&(a=o.apply(i,l)),a}}r.hooks=i}if(n.walkTokens){let i=m.defaults.walkTokens;r.walkTokens=function(s){let o=[];return o.push(n.walkTokens.call(this,s)),i&&(o=o.concat(i.call(this,s))),o}}m.setOptions(r)})};m.walkTokens=function(e,t){let n=[];for(let r of e)switch(n=n.concat(t.call(m,r)),r.type){case”table”:{for(let i of r.header)n=n.concat(m.walkTokens(i.tokens,t));for(let i of r.rows)for(let s of i)n=n.concat(m.walkTokens(s.tokens,t));break}case”list”:{n=n.concat(m.walkTokens(r.items,t));break}default:m.defaults.extensions&&m.defaults.extensions.childTokens&&m.defaults.extensions.childTokens[r.type]?m.defaults.extensions.childTokens[r.type].forEach(function(i){n=n.concat(m.walkTokens(r[i],t))}):r.tokens&&(n=n.concat(m.walkTokens(r.tokens,t)))}return n};m.parseInline=xi(re.lexInline,ie.parseInline);m.Parser=ie;m.parser=ie.parse;m.Renderer=Qe;m.TextRenderer=kt;m.Lexer=re;m.lexer=re.lex;m.Tokenizer=Je;m.Slugger=bt;m.Hooks=Te;m.parse=m;var tc=m.options,nc=m.setOptions,rc=m.use,ic=m.walkTokens,sc=m.parseInline;var oc=ie.parse,lc=re.lex;var Ni=lt(Ri());var wn=lt(gt());function xn({label:e,text:t}){return wn.default.createElement(“span”,{className:”inno-hover js-hover”},e,wn.default.createElement(“span”,{className:”inno-hover__box”,dangerouslySetInnerHTML:{__html:Tt.toHTML(t[0])}}))}var jl={name:”spannerWithColor”,level:”inline”,start(e){return e.match(/</)?.index},tokenizer(e){let n=/^]*)>(([^)]*))/.exec(e);if(n){let i=/#(?:[0-9a-fA-F]{3}){1,2}$/.exec(n[2]);return{type:”spannerWithColor”,raw:n[0],text:n[1],…i&&{color:n[2]}}}},renderer(e){if(e.color){let t=(0,Ni.default)(e.color).isDark();return`${m.parseInline(e.text)}`}else return`${m.parseInline(e.text)} (u26D4uFE0F Error: Incorrect hex color provided)`}},_l={name:”spanner”,level:”inline”,start(e){return e.match(/</)?.index},tokenizer(e){let n=/^]*?)>(?!()/.exec(e);if(n)return{type:”spanner”,raw:n[0],text:n[1]}},renderer(e){return`${m.parseInline(e.text)}`}},Rl={name:”hover”,level:”inline”,start(e){return e.match(/)?.index},tokenizer(e){let n=/^[([^]]*?)]{([^}]*?)}/.exec(e);if(n)return{type:"hover",raw:n[0],label:n[1],text:n[2]}},renderer(e){return Ui.default.renderToString(Pi.default.createElement(xn,{label:[e.label],text:[e.text]}))}};m.use({extensions:[jl,_l,Rl]});var Tt={toHTML:e=>e&&typeof e==”string”?m.parseInline(e.replace(“v”,`
`)):””};var Pl=(e,t)=>{let n=e.querySelector(“.js-description”);for(let r of t.body){let i=document.createElement(“p”);i.classList.add(“inno-p”),i.innerHTML=Tt.toHTML(r.value),n.appendChild(i)}},At={init:()=>{},populate:(e,t)=>{Pl(e,t)}};var kn=!1,Ul=()=>{document.querySelectorAll(“.js-filter-header”).forEach(e=>{e.addEventListener(“click”,()=>{Bl(e)})}),document.querySelectorAll(“.js-filter-checkbox”).forEach(e=>{e.addEventListener(“change”,()=>{Wi(),Hi(),O.event(“click”,`Filter checked | ${e.dataset.group} | ${e.value} | ${e.checked?”on”:”off”}`)})}),document.querySelectorAll(“.js-filter-reset”).forEach(e=>{e.addEventListener(“click”,()=>{Nl()})}),document.querySelector(“.js-filter-catcher”).addEventListener(“click”,()=>{Zl()}),document.querySelectorAll(“.js-toggle-filters”).forEach(e=>{e.addEventListener(“click”,()=>{Zi()})}),window.addEventListener(“resize”,()=>{Bi()})},Bi=()=>{document.querySelectorAll(“.js-filter”).forEach(t=>{window.innerWidth>1199?t.classList.remove(“is-open”):t.classList.add(“is-open”)})},Zi=()=>{kn=!kn,kn?(document.querySelector(“body”).classList.add(“is-filtering”),O.event(“click”,”Show mobile filters”)):(document.querySelector(“body”).classList.remove(“is-filtering”),O.event(“click”,”Hide mobile filters”),window.innerWidth{document.querySelector(“.js-guide”).scrollIntoView({behavior:”instant”})},Nl=()=>{document.querySelectorAll(“.js-filter-checkbox:checked”).forEach(t=>{t.checked=!1}),O.event(“click”,”Reset all filters”),Wi()},Bl=e=>{let t=document.querySelector(“.js-filters”),n=document.querySelectorAll(“.js-filter”),r=e.closest(“.js-filter”),i=r.classList.contains(“is-open”);window.innerWidth>1200&&n.forEach(s=>{s.classList.remove(“is-open”)}),i?(r.classList.remove(“is-open”),t.classList.remove(“is-open-filter”),O.event(“click”,`Desktop filter group closed | ${r.dataset.filter}`)):(r.classList.add(“is-open”),t.classList.add(“is-open-filter”),O.event(“click”,`Desktop filter group opened | ${r.dataset.filter}`))},Zl=()=>{document.querySelector(“.js-filters”).classList.remove(“is-open-filter”),document.querySelectorAll(“.js-filter”).forEach(n=>{n.classList.remove(“is-open”)})},Hl=()=>{let e=new Object,t=document.querySelectorAll(“.js-filter-checkbox:checked”);for(let n of t){let r=n.dataset.group;e[r]||(e[r]=new Array),e[r].push(n.value)}return e},Wl=(e,t)=>{let n=Object.keys(e),r=new Array;for(let i of n){let l=e[i].map(a=>{if(t[i]!==void 0)return t[i].split(“,”).map(f=>f==a).filter(Boolean).length>0;console.log(`no ${i}`)}).filter(Boolean).length>0;r.push(l)}return r.every(Boolean)},Wi=()=>{let e=Hl(),t=document.querySelectorAll(“.js-place”),n=0;for(let i of t){let s=Wl(e,i.dataset),o=document.querySelector(`.js-marker[data-id=”${i.dataset.id}”]`);s?(o.classList.remove(“is-filtered”),i.classList.remove(“is-filtered”),n++):(o.classList.add(“is-filtered”),i.classList.add(“is-filtered”))}document.querySelectorAll(“.js-filter”).forEach(i=>{let s=i.querySelector(“.js-filter-active”),o=e[i.dataset.filter];o?(i.classList.add(“is-active”),s.textContent=o.length):(i.classList.remove(“is-active”),s.textContent=”1″)});let r=Object.keys(e).reduce((i,s)=>i+e[s].length,0);document.querySelector(“.js-filter-indicator”).textContent=r,document.querySelectorAll(“.js-filter-count”).forEach(i=>{i.textContent=n}),document.querySelectorAll(“.js-filter-plural”).forEach(i=>{i.textContent=n==1?””:”s”}),n==0?document.querySelector(“.js-guide”).classList.add(“is-empty”):document.querySelector(“.js-guide”).classList.remove(“is-empty”),Object.keys(e).length>0?document.querySelector(“.js-inno”).classList.add(“has-filters”):document.querySelector(“.js-inno”).classList.remove(“has-filters”),$e.reDraw()},Lt={init:()=>{Ul(),Bi()},toggle:()=>{Zi()}};var bn,ae,En,Ce,Vi=null;var Vl=async()=>{let e=await fetch(“https://interactives.inquirer.com/projects/2025/10/the-76/1760553884505/assets/places.json”);if(e.ok){let t=await e.json();for(let n of t){let r=document.querySelector(`.js-place#${n.id}`);r?(Pe.populate(r,n),At.populate(r,n)):console.log(`u26D4uFE0F Can not find ${n.name} on the page`)}Pe.done(),Gi(),Kl(),ta(),document.querySelector(“.js-inno”).classList.remove(“is-loading”)}},Gi=()=>{ae=document.querySelectorAll(“.js-place:not(.is-filtered)”),En=ae.length-1},Gl=e=>{if(e=Ki(e),!(Ce&&e!==Ce)){if(e!==bn){bn=e,document.querySelectorAll(“.is-current-place”).forEach(n=>{n.classList.remove(“is-current-place”)});let t=ae[e]||null;Ql(t),t&&(t.classList.add(“is-current-place”),t.id&&O.event(“card-view”,`Scrolled into view | ${t.id}`)),clearTimeout(Vi),Vi=setTimeout(()=>{bn==-1&&En>1?tt.showAll():t&&tt.highlight(t.dataset.index)},300)}}},Ki=e=>Math.min(Math.max(e,-1),En),Kl=()=>{document.addEventListener(“scroll”,()=>{Sn()}),window.addEventListener(“resize”,()=>{Sn()}),document.querySelector(“.js-guide-filter-toggle”).addEventListener(“click”,()=>{Lt.toggle()}),document.querySelectorAll(“.js-place-expand”).forEach(e=>{e.addEventListener(“click”,()=>{Jl(e)})})},Jl=e=>{let t=e.closest(“.js-place”);t.classList.remove(“is-collapsed”),O.event(“click”,`expand block | ${t.dataset.name}`)},Sn=()=>{Yl(),Xl(),ea()},Ql=e=>{e?history.replaceState(null,null,”#”+e.id):history.replaceState(null,null,” “)},Yl=()=>{if(Ce){let t=Array.from(ae).filter(n=>n.dataset.index==Ce)[0].getBoundingClientRect().top+window.scrollY-70;window.scrollY+100>t&&window.scrollY-100{let e=-1;ae.forEach((t,n)=>{let r=t.getBoundingClientRect();200>r.top&&r.height>0&&(e=n)}),Gl(e)},ea=()=>{let e=document.querySelector(“.js-guide”),t=e.getBoundingClientRect(),n=window.innerHeight/2;t.top+t.height-n<0?(e.classList.add("is-post-guide"),e.classList.remove("is-in-guide")):t.top-n{let i=Array.from(ae).filter(s=>s.dataset.index==e)[0].getBoundingClientRect().top+window.scrollY-70;Ce=e,ae[e]&&ae[e].id&&n&&O.event(“node-click”,`Clicked on marker | ${ae[e].id}`),window.scrollTo({top:i,behavior:t})},ta=()=>{let e=window.location.hash;if(e){let t=document.querySelector(e);if(t){let n=Ki(t.dataset.index);n&&Ji(n,”smooth”,!1)}}},$e={init:()=>{Vl()},scrollTo:(e,t=”smooth”)=>{Ji(e,t)},reDraw:()=>{Sn(),Gi()}};var nt,te,na=null,rt=new Array,st=!1;var Fe=null,ve=20,it=window.innerWidth>1200,ra=()=>{document.querySelector(“.js-toggle-map”).addEventListener(“click”,()=>{Yi()}),window.addEventListener(“resize”,()=>{Qi()})},Qi=()=>{it=window.innerWidth>1200,ve=it?20:Math.floor(window.innerWidth*.4),te.setPadding({top:it?ve+80:ve,left:it?window.innerWidth/2:ve,bottom:ve,right:ve}),setTimeout(()=>{te.resize()},400)},ia=()=>{let e,t,n,r,i=new Array;return document.querySelectorAll(“.js-place”).forEach(o=>{let l=parseFloat(o.dataset.long),a=parseFloat(o.dataset.lat);(e&<||!t)&&(t=l),(n&&ar||!r)&&(r=a)}),i=[[e,n],[t,r]],i},sa=()=>{let e=document.querySelectorAll(“.js-place”);e.forEach((t,n)=>{let r=t.dataset;if(r.lat&&r.long){let i=ht(“js-marker-stub”);i.classList.add(`inno-map__marker–${n}`),r.index=n,r.id=Ee(r.name),r.imageSrc=`https://interactives.inquirer.com/secondbank/arc/${r.media}/80.webp`,ft(i,r),i.addEventListener(“click”,()=>{i.classList.contains(“is-active”)&&st&&Yi(),$e.scrollTo(n,st?”instant”:”smooth”)}),i.addEventListener(“mouseover”,()=>{e[n].selected=!0}),i.addEventListener(“mouseleave”,()=>{e[n].selected=!1,Fe&&(e[Fe].selected=!0)}),rt.push(i),new nt.Marker({element:i}).setLngLat([parseFloat(r.long),parseFloat(r.lat)]).addTo(te)}})},zn=()=>{let e=ia();te&&te.fitBounds(e),document.querySelectorAll(“.js-marker”).forEach(t=>{t.classList.remove(“is-active”)}),document.querySelector(“.js-map”).classList.add(“is-all”)},oa=()=>{vr(“https://interactives.inquirer.com/storage/dependencies/maplibre/5.3.0/maplibre-gl.js”,()=>{let e=new Xn;nt=window.maplibregl,nt.addProtocol(“pmtiles”,e.tile);let t=”https://interactives.inquirer.com/melish/1.2.1″,n=`${t}/us-latest.pmtiles`,r=new at(n);e.add(r),r.getHeader().then(async()=>{let s=await(await fetch(`${t}/styles/neutral.json`)).json();ve=it?20:Math.floor(window.innerWidth*.4),te=new nt.Map({container:”map”,zoom:13,center:[-75.165222,39.952583],maxBounds:[[-86.485129,34.333968],[-69.915035,43.854144]],attributionControl:!1,style:{…s,sources:{openmaptiles:{type:”vector”,url:`pmtiles://${n}`}}}}),Qi(),te.scrollZoom.disable(),te.addControl(new nt.NavigationControl({showCompass:!1,showZoom:!0,visualizePitch:!1}),”bottom-right”),document.querySelector(“.js-map”).classList.add(“is-loaded”),te.on(“load”,()=>{sa(),zn()})})})},la=e=>{if(rt.length>0){let t=rt[e];if(document.querySelector(“.js-map”).classList.remove(“is-all”),document.querySelectorAll(“.js-marker”).forEach(n=>{n.classList.remove(“is-active”)}),t){let n=document.querySelector(`.js-place[id=${t.dataset.id}]`),r=document.querySelector(`.js-marker[data-id=${t.dataset.id}]`);te.flyTo({center:[parseFloat(n.dataset.long),parseFloat(n.dataset.lat)],zoom:13.2,speed:.5}),Fe=e,t.selected=!0,r.classList.add(“is-active”)}else te&&rt&&(zn(),Fe!==null&&(rt[Fe].selected=!1,Fe=null))}else na=e},Yi=()=>{st=!st,st?(document.querySelector(“.js-inno”).classList.add(“is-mapping”),O.event(“click”,”Open mobile map”)):(document.querySelector(“.js-inno”).classList.remove(“is-mapping”),O.event(“click”,”Close mobile map”))},tt={init:()=>{oa(),ra()},highlight:e=>{la(e)},showAll:()=>{zn()}};var aa=()=>{document.querySelectorAll(“.js-media-caption-toggle-show”).forEach(e=>{e.addEventListener(“click”,()=>{ca(e)})}),document.querySelectorAll(“.js-media-caption-toggle-hide”).forEach(e=>{e.addEventListener(“click”,()=>{ua(e)})})},ca=e=>{e.closest(“.js-place”).classList.add(“is-captioning”),O.event(“click”,”Open caption”)},ua=e=>{e.closest(“.js-place”).classList.remove(“is-captioning”),O.event(“click”,”Closed caption”)},Xi={init:()=>{aa()}};var An=new Array,Mn=650,Tn=650,ha=()=>{let e=document.querySelectorAll(“.js-slide-viewer”);for(let n of e){n.height=Mn,n.width=Tn;let r={el:n,id:n.dataset.id,ctx:n.getContext(“2d”),totalFrames:n.dataset.totalFrames,frames:new Array,currentFrame:1},i=new Array;for(var t=1;t{r.frames=s,An.push(r),es(r.id)})}},fa=e=>new Promise((t,n)=>{let r=new Image;r.onload=()=>t(r),r.setAttribute(“crossOrigin”,”anonymous”),r.src=e}),es=e=>{let t=An.filter(n=>e==n.id)[0];if(t.currentFrame!==void 0||t.currentFrame!==null){let n=t.frames[t.currentFrame];n&&(t.ctx.clearRect(0,0,Tn,Mn),t.ctx.drawImage(n,0,0,Tn,Mn))}},pa=e=>{for(let t of An)t.currentFrame=Math.ceil(e*t.totalFrames),es(t.id)},$t={init:()=>{ha()},updateFrame:e=>{pa(e)}};var da=()=>{xr()&&document.querySelectorAll(“.js-ad”).forEach(t=>{t.classList.add(“is-hidden”)})},ts={init:()=>{da()}};var ns=async(e,t)=>(await fetch(`https://inq-junto.herokuapp.com/${e}`,{method:”POST”,headers:{“Content-Type”:”application/json”},mode:”cors”,body:JSON.stringify(t)})).json(),Ln=()=>{let t=document.querySelector(“.js-inno”).dataset.junto;if(t)return t;throw new Error(“no junto id found”)},$n={getDefaultId:()=>Ln(),vote:(e,t=Ln())=>{ns(“vote”,{poll:t,ballot:e})},results:async(e=Ln())=>await ns(“results”,{poll:e})};var ga=()=>{document.querySelectorAll(“.js-feedback”).forEach(e=>{let t=e.dataset.question;e.querySelector(“.js-feedback-yes”).addEventListener(“click”,()=>{rs(“yes”,e)}),e.querySelector(“.js-feedback-no”).addEventListener(“click”,()=>{rs(“no”,e)})})},rs=async(e,t)=>{t.classList.add(“has-answered”,`has-answered-${e}`),t.querySelector(`.js-feedback-${e}`).blur();let n=”feedback-“+$n.getDefaultId(),r=t.dataset.question;$n.vote({[r]:e},n)},is={init:()=>{ga()}};var ye,ss,ma=()=>{ye=document.getElementById(“js-inno-toast”)},va=e=>{if(!ye)return;ye.innerHTML=e,ye.classList.add(“inno-toast–active”);let t=()=>{ye.addEventListener(“transitionend”,ya,{once:!0}),ye.classList.remove(“inno-toast–active”)};clearTimeout(ss),ss=setTimeout(t,5e3)},ya=()=>{ye.innerHTML=””},we={init:()=>{ma()},showToast:va};var Ct,os=!1,wa=async()=>new Promise(e=>{setTimeout(()=>{console.log(“simulating createShareLink for localhost”),e(“https://inquirer.com/interactives”),xa()},100)}),xa=()=>{let e=document.querySelector(“.js-gift-toast-receiver”);!e||!(e instanceof HTMLElement)||setTimeout(()=>{let t=e?.querySelector(“span”);t&&(t.innerHTML=”Gift link copied to clipboard“)},20)},ka=()=>{let e=window.services?.createShareLink;e&&(Ct=e),Wt()&&(Ct=wa),Ct&&Sa()},ba=async e=>{let t=”text/plain”,n=async()=>{try{return await Ct(window.location.pathname)}catch{e.dataset.state=”error”,we.showToast(“Hmm, we couldn’t generate a gift link…”)}},r=new ClipboardItem({[t]:n()});await navigator.clipboard.write([r]).catch(i=>{console.log(i),we.showToast(“Couldn’t copy to clipboard, try again?”),e.dataset.state=”error”}),we.showToast(“Gift link copied to clipboard!”),e.dataset.state=”complete”},Sa=()=>{document.querySelectorAll(“.js-gift”).forEach(t=>{(yr()||Wt()||wr())&&t.classList.add(“is-available”)}),document.querySelectorAll(“.js-gift-button”).forEach(t=>{t instanceof HTMLButtonElement&&t.addEventListener(“click”,()=>{t.classList.contains(“disabled”)||(t.dataset.state=”loading”,os=!0,ba(t),setTimeout(()=>{t.dataset.state=”ready”},2e3))})});let e=document.querySelector(“.js-gift-toast-receiver”);!e||!(e instanceof HTMLElement)||Ea(e)},Ea=e=>{new MutationObserver(n=>{for(let r of n){let i=[…r.addedNodes].at(0);if(!(i instanceof HTMLElement))return;os&&we.showToast(i.outerHTML)}}).observe(e,{subtree:!0,childList:!0})},ls={init:()=>{ka()}};var za={0:.5,1:.2,2:1,3:.8,4:.6,5:.9},Ma={0:.02,1:.14,2:.16,3:.11,4:.07,5:.23},Ta=()=>{document.addEventListener(“scroll”,()=>{as()})},as=()=>{let t=document.querySelector(“.js-hero”).getBoundingClientRect(),n=document.documentElement.scrollTop,r=t.top+n,i=t.height,s=r+i,o=s-n,l=Math.min(1-o/s,1),a=s*.5;document.querySelectorAll(“.js-hero-image”).forEach((h,u)=>{let f=a*za[u]*l;h.setAttribute(“style”,`transform: translateY(-${f}px)`),l>Ma[u]?h.classList.add(“is-visible”):h.classList.remove(“is-visible”)}),$t.updateFrame(l)},cs={init:()=>{Ta(),as()}};var Aa=()=>{},us={init:()=>{Aa()}};var hs={init:()=>{Bn.init?.(),tt.init?.(),At.init?.(),Lt.init?.(),$e.init?.(),Xi.init?.(),Pe.init?.(),$t.init?.(),ts.init?.(),is.init?.(),ls.init?.(),cs.init?.(),us.init?.(),we.init?.()}};var La=()=>{},fs={init:()=>{La()}};var $a=document.querySelector(“.js-inno”),ps=()=>{hs.init(),fs.init()};$a?ps():new MutationObserver((t,n)=>{if(document.querySelector(“.js-inno”)){n.disconnect(),ps();return}}).observe(document,{attributes:!0,childList:!0,subtree:!0});})();
/*! Bundled license information:
object-assign/index.js:
(*
object-assign
(c) Sindre Sorhus
@license MIT
*)
react/cjs/react.production.min.js:
(** @license React v16.14.0
* react.production.min.js
*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*)
react-dom/cjs/react-dom-server.browser.production.min.js:
(** @license React v16.14.0
* react-dom-server.browser.production.min.js
*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*)
*/