Sofia Falcone (Cristin Milioti), veers closer to the theatrical end of Gotham’s Rogues Gallery, belonging to the same lineage as Two-Face and Harley Quinn: transformed by trauma and using crime as a therapeutic outlet.
Photo: Macall Polay/HBO
Come see Gotham’s newest baddie at Vulture Festival, November 16–17 in Los Angeles, where we’ll be talking to Cristin Milioti.
Like The Batman, HBO’s The Penguin takes cues from 1970s crime thrillers like The French Connection, infusing gritty mob drama with heightened comic-book flourishes. The title character’s backstory is a morbid tale of emotional incest and childhood fratricide, and flashbacks appear via a psychotherapist who wields his EMDR lamp like a hypnotist’s pocket watch. Through it all we never lose sight of the fact that this is Gotham City rather than Chicago or New York; a grimy setting plagued by emotionally unstable supervillains and rampant corruption, with strong hints of Taxi Driver and The Godfather.
Ostensibly set in the present day, The Penguin often feels closer to the late 20th century — particularly in terms of costuming, where designer Helen Huang drew inspiration from decades of vintage influences. While Oz Cobb (Colin Farrell) offers a street-level twist on the Penguin’s customary formalwear, the show’s secondary lead, Sofia Falcone (Cristin Milioti), veers closer to the theatrical end of Gotham’s Rogues Gallery. She belongs to the same lineage as Two-Face and Harley Quinn, transformed by trauma and using crime as a therapeutic outlet.
This combination of panache and emotional damage is a classic Batman theme, but in Sofia’s case it’s a new invention for the show; in the comics she’s a pretty straightforward mobster villain. Appearing in the 1990s storylines Batman: The Long Halloween and Batman: Dark Victory, the original Sofia is loyal to her father’s legacy and, unlike in The Penguin, entirely worthy of her Hangman moniker. Her costumes aren’t particularly notable, consisting mostly of plain suits and overcoats in a story where the flashy outfits go to characters like the Joker. Cristin Milioti and Penguin showrunner Lauren LeFranc reshaped her into a more layered and sympathetic figure, expanding on Carmine Falcone and Catwoman’s disturbing father-daughter dynamic in The Batman.
Where Huang’s wardrobe for Oz emphasizes his position as a clumsy social climber, aspiring to classic mafia masculinity but too crass to fit in with the old-money elite, Sofia represents a different kind of outsider. Born into criminal royalty, she was cast out when she failed to conform. Feeding into Milioti’s volatile performance, her costumes chart a journey from obedient heiress to homicidal mob boss, culminating in her violent retribution against Oz in the show’s penultimate episode. Clad in red-bottom platform heels and her mother’s vintage fur coat, she detonates a bomb at the heart of Oz’s underground HQ, reducing it to rubble. This version of Sofia is merciless and unrestrained, betrayed or abandoned by everyone she used to trust.
Back in her introductory scene, though, Sofia is a beacon in the darkness. Interrupting a meeting between Oz and the current Falcone leadership, she wears a pristine white skirt-suit inspired by 1960s designer André Courrèges. Standing out in a room full of men in dark suits, she echoes the conservative femininity of Jackie Kennedy. A delicate white scarf hides the scars around her throat; fallout from her traumatic stint in Arkham Asylum.
Photo: Macall Polay/HBO
“The whole thing about her narrative is where she’s positioned in the family as a woman,” Huang explains. For Sofia’s early outfits, she looked to 1960s It Girl Edie Sedgwick, who went from old-money heiress to edgy Warhol collaborator. These costumes reflect “a more male-dominant influence of what a proper female should be,” all buttoned-up collars, kitten heels, and delicate 1920s heirloom jewelry.
Sofia’s haircut is an early sign of her rebellion; a shaggy mullet that calls back to Jane Fonda in the 1970s thriller Klute. Cristin Milioti “fought really hard” for this cut, says Huang, which turned out to be a smart move. The length allows Sofia to style her hair up for more formal looks, but when she leaves it loose, it adds a subversive Joan Jett edge to otherwise staid outfits. In later episodes it gets messier and messier, implying that she’s started cutting it herself.
Photo: HBO
Recently released from Arkham Asylum, Sofia occupies a conflicted place in the Falcone family. Technically she’s the heir to her father Carmine’s legacy, but the current bosses have no desire to hand over power. Leadership is a man’s job, and Sofia has already failed at her original role: providing a palatable public face for their criminal empire. These days she’s better known by her serial killer nickname, The Hangman, and no amount of chic little jackets can launder that kind of reputation.
During flashbacks to Sofia’s life before Arkham, she seems comfortable playing a conventionally feminine role, keeping her wayward brother in line and acting as a society hostess. We see her wearing a plain red cocktail dress at a charity event, and pastel florals to dinner with her father. She’s the perfect daughter, not just in terms of private loyalty to the family, but in the way she presents herself to the world. Women like her provide a crucial point of connection between Gotham’s mainstream upper classes, and the tarnished wealth of organized crime. She doesn’t know it, but her most valued skill is her ability to conform.
Photo: Macall Polay/HBO
Soon enough though, the ugly side of this dynamic breaks through. A journalist approaches Sofia with proof that her father has murdered multiple women — including Sofia’s mother, whose death was labeled a suicide. And once Sofia knows the truth, she becomes disposable. Carmine frames her for his own crimes, dumping her in Arkham to receive electroshock treatment and tranquilizing drugs; a classic way to dispose of “difficult” female relatives.
In the present day, Sofia quickly realizes that maintaining her good-girl persona is a waste of time. There’s no point in catering to respectability when the masculine establishment has already dismissed her out of hand. As she strikes on her own as a crime boss, her outfits become more outré, adopting a gothic palette and stronger hints of mob wife style: animal prints, furs, heavy eyeshadow, flashy jewelry.
Her pivotal transformation comes in episode four, as Sofia’s rage has built to a boiling point after being betrayed by her father, abandoned by her extended family, and double-crossed by her recent ally Oz Cobb. Ignoring an order to leave town, she shows up to family dinner at the Falcone mansion, ready to confront (and ultimately murder) the relatives who turned a blind eye to her suffering.
Photo: Macall Polay/HBO
Disrupting a scene of genteel formality, she arrives in an acid-yellow gown with a long train and a scandalously low neckline, styled with a thick swoop of eyeliner like Elizabeth Taylor’s Cleopatra. It’s a barn-burner of an outfit, characterized by Huang as Sofia’s “coming out.”
“I thought a big pop of color would be great for this sequence because the emotion is very heightened,” she says. “Since the interior of the Falcone mansion is very dark, we thought the bright citrine would really help.” This fabric introduces a new texture to Sofia’s wardrobe; a liquid satin with a chiffon overlay. It also shows considerably more skin, revealing her scars and bidding farewell to conservative femininity. Sexy and palpably disinterested in conformity, it sets the tone for the next phase of her story.
Photo: Macall Polay/HBO
When Sofia takes control of the family business, she jettisons the Falcone title in favor of her mother’s maiden name, Gigante. Preparing to meet her new employees, she selects a voluminous fur coat from her mother’s collection. Along with being a quintessential status symbol, the name embroidered into the lining (Isabella Gigante rather than Isabella Falcone) suggests it was purchased before her parents’ marriage, avoiding the taint of Carmine’s influence.
Layering the coat over a skimpy black slip dress, Sofia sends a visible message that she’s a different kind of boss from her predecessors. She and Oz both want to be seen as underdog disruptors for organized crime — Oz as a kind of working-class outsider candidate, and Sofia as a new alternative to mafia family traditions. This kind of image-consciousness is an amusingly familiar Batman villain trait, although Sofia and Oz stop short of dressing their goons in themed uniforms. (More’s the pity.)
Photo: Macall Polay/HBO
No longer trying to blend in with Gotham’s elite, Sofia swaps vintage femininity (Courrèges, Lanvin, Celine) for the godmother of punk (Vivienne Westwood), adopting a nightlife wardrobe of dark fabrics, metallic highlights, and animalistic details. Her low necklines signal a rejection of shame, coupled with a newfound sexual confidence as she embarks on a sadomasochistic affair with her therapist Dr. Rush.
Huang notes that alongside her darker color palette, Sofia embraces new textures and silhouettes, using bulky furs to take up more space. Her jewelry shifts from sedate heirlooms to big, bold costume pieces. Visiting her sole surviving cousin in an orphanage, she resembles a vampiric Lady Gaga: black minidress and platform heels, paired with a dark coat, a teal fur boa, heavy jewels, and smokey eyes. It’s an absurdly inappropriate outfit for the occasion, potentially doubling as psychological armor as the orphanage triggers flashbacks to her time in Arkham.
Photo: HBO/Max
Over the last two episodes, Sofia reaches her final form. After a string of gothic looks, episode seven introduces a sudden pop of color: a red flash under the collar of her coat during the bomb sequence. According to Huang, this expanded palette leads into the intense drama of the finale, when Sofia and Oz will face higher stakes than ever before.
Like many recent DC adaptations, The Penguin grapples with a desire for grounded storytelling, trying to provide a mature take on somewhat wacky source material. Sofia is a runaway success in that regard, balancing prestige drama complexity with theatrical Gotham extremes. Embracing the exaggerated nature of the setting, she embodies the idea that all great supervillains need to have style — and that style can tell a story in itself.
By submitting your email, you agree to our
Terms and Privacy Notice
and to receive email correspondence from us. This site is protected by reCAPTCHA and the Google
Privacy Policy and
Terms of Service apply.
or
Already a subscriber?
What is your email?
This email will be used to sign into all New York sites. By submitting your email, you agree to our Terms and Privacy Policy and to receive email correspondence from us.
Password must be at least 8 characters and contain:
Lower case letters (a-z)
Upper case letters (A-Z)
Numbers (0-9)
Special Characters (!@#$%^&*)
This password will be used to sign into all New York sites. By submitting your email, you agree to our Terms and Privacy Policy and to receive email correspondence from us.
You’re in!
As part of your account, you’ll receive occasional updates and offers from New York, which you can opt out of anytime.
or
Already a subscriber?
What is your email?
This email will be used to sign into all New York sites. By submitting your email, you agree to our Terms and Privacy Policy and to receive email correspondence from us.
Password must be at least 8 characters and contain:
Lower case letters (a-z)
Upper case letters (A-Z)
Numbers (0-9)
Special Characters (!@#$%^&*)
This password will be used to sign into all New York sites. By submitting your email, you agree to our Terms and Privacy Policy and to receive email correspondence from us.
You’re in!
As part of your account, you’ll receive occasional updates and offers from New York, which you can opt out of anytime.
Already a subscriber?
Already a subscriber?
`;
// integrate Sub(x) scripts and elements
if (hostname !== 'subs.nymag.com') { // do not integrate on this subdomain
document.head.appendChild(trackingScript);
document.body.insertAdjacentHTML('beforeend', subXAnimationElements);
}
There was an error processing the request. Please try again later."}).catch(e=>console.error("Error verifying email: ",e)))(r.querySelector(".content"),o.bannerCTAVerification)})):(l.remove(),s.remove()),o.dismissable||n.remove(),o.useAlertIcon||a.remove(),r.classList.add("show"),n.addEventListener("click",()=>{u(),r.classList.remove("show")})}else r.remove()}});
}, {"1":1,"6":6,"12":12,"35":35,"40":40}];
window.modules["global-nav.client"] = [function(require,module,exports){"use strict";const dom=require(4),auth=require(12),signInButton=dom.find(".user-signin"),signOutButton=dom.find(".user-signout"),globalNav=dom.find('[class^="global-nav"]'),body=dom.find("body"),dropdownItems=dom.findAll(".dropdown-wrap"),gtm=require(1),appendLandingPageParams=require(135),pageUri=require(124).getPageUri(),subscriptionPromoLinks=dom.findAll(".persist-params"),searchString=window.location.search||"";function closeDropdowns(e){let n=globalNav.querySelectorAll(".dropdown.open");dropdownItems.forEach(function(t){let o=t.querySelector(".dropdown");!n||t.contains(e.target)&&27!==e.keyCode||o.classList.remove("open")})}function gtmSendReport(e,n,t){let o={eventCategory:"ecommerce",eventAction:"componentClick",brand:e,dimension23:"global-nav",list:pageUri,pageZone:"header",variant:"nav-link"};"global-nav-link"===t&&(o.eventLabel=n.href),gtm.reportNow(o)}function updateElementTargetUrlsIfQueryStrings(e){if(searchString){const n=new URLSearchParams(searchString);let t=e.href;if(t.includes("?")){const o=t.split("?"),i=new URLSearchParams(o[1]);for(let e of n.entries())i.set(e[0],e[1]);t=`${o[0]}?${i.toString()}`,e.href=t}else e.href=`${t}?${n.toString()}`}}function init(e){const n=e.querySelectorAll(".to-landing-page");window.addEventListener("auth:init",()=>{signInButton.addEventListener("click",function(e){e.preventDefault(),auth.showEmbeddedLoginFlow("top navigation")}),signOutButton.addEventListener("click",function(e){e.preventDefault(),gtmSendReport("Sign Out",e.target,"user-info-link"),auth.logout()}),auth.isAuthenticated()&&e.classList.add("signed-in"),auth.isSubscriber()&&e.classList.add("subscribed"),e.querySelectorAll(".user-link").forEach(e=>{e.classList.add("active")}),subscriptionPromoLinks.forEach(e=>{updateElementTargetUrlsIfQueryStrings(e)}),appendLandingPageParams(n)})}dropdownItems.forEach(function(e){e.addEventListener("click",function(){e.querySelector(".dropdown").classList.toggle("open")})}),body.addEventListener("click",closeDropdowns),document.addEventListener("keydown",closeDropdowns),globalNav.addEventListener("click",function(e){let n=e.target;n.classList.contains("global-nav-track")&>mSendReport(n.text,n,"global-nav-link")}),module.exports=init;
}, {"1":1,"4":4,"12":12,"124":124,"135":135}];
window.modules["aaa-module-mounting.legacy"] = [function(require,module,exports){"use strict";const _pickBy=require(221),_each=require(406),Fingerprint2=require(408),DS=require(407),Eventify=require(246);function registerGlobals(){window.DS=DS,window.Eventify=Eventify,window.Fingerprint2=Fingerprint2,DS.value("Eventify",Eventify),DS.value("Fingerprint2",Fingerprint2),DS.value("$document",window.document),DS.value("$window",window)}function mountDollarSliceComponents(){DS.service("components",["$document","$module",function(e,n){var o=_pickBy(n.definitions,e=>e.providerStrategy===n.providers.controller),r=Object.keys(o);function t(e){return o=>{try{n.get(e,o)}catch(e){logMountError(o,e)}}}_each(r,n=>{var o=e.querySelectorAll('[data-uri*="/_components/'+n+'/"]'),r=e.querySelectorAll('[data-uri$="/_components/'+n+'"]');_each(o,t(n)),_each(r,t(n))}),this.components=r}]),DS.get("components")}function logMountError(e,n){const o=e.outerHTML.slice(0,e.outerHTML.indexOf(e.innerHTML));console.error("Error attaching controller to "+o,n)}registerGlobals(),"loading"===document.readyState?document.addEventListener("DOMContentLoaded",()=>{mountDollarSliceComponents()}):mountDollarSliceComponents();
}, {"221":221,"246":246,"406":406,"407":407,"408":408}];
window.modules["ads.legacy"] = [function(require,module,exports){"use strict";const _map=require(118),_forEach=require(107),_isString=require(268),_intersectionWith=require(409),_isEqual=require(274),_each=require(406),_debounce=require(182),_sortBy=require(205),page=require(124),visit=require(114);DS.service("adService",["Eventify","$cid","$document","$window",function(e,t,a,i){var o,n,s,r,d,c,u,l,g={},p=this,h=[],f=visit.getQueryParamsObject(["utm_campaign"]),m=document.querySelector('script[data-type="ad-a9"]'),b=[],w=!1,v=[],y=document.querySelector('script[data-name="ad-doubleverify"]');document.querySelector('script[data-name="concert-ads"]')||(i.NYM={},i.NYM.analytics={},i.NYM.analytics.adStartTime=i.performance.now(),i.googletag=i.googletag||{},i.googletag.cmd=i.googletag.cmd||[],u=i.googletag,(m||y)&&(i.googletag.cmd=i.googletag.cmd||[],i.googletag.cmd.push(function(){i.googletag.pubads().disableInitialLoad()})),m&&(l=i.setInterval(function(){void 0!==window.apstag&&void 0!==window.apstag.timeout&&(i.clearInterval(l),window.apstag.cleared=!0,l=null)},10),setTimeout(function(){l&&(i.clearInterval(l),i.googletag.pubads().refresh(),window.apstag||console.log("MESSAGE: Timeout for A9 load exceeded, aborting"))},500)),y&&(b.push(new Promise(function(e){w?e():v.push(e)})),c=i.setTimeout(T,2500)),o=function(e){var t,a,o=e.data,n=[];return o.loaded?e:(o.loaded=!0,t=null,(t=o.sizes?u.defineSlot(o.name,o.sizes,o.id).addService(u.pubads()):u.defineOutOfPageSlot(o.name,o.id).addService(u.pubads())).setTargeting("adid",o.id),f.hasOwnProperty("utm_campaign")&&t.setTargeting("utmcamp",f.utm_campaign),a=p.getAdCount(o.label),t.setTargeting("label",o.label+"_"+o.site+"-"+a),u.display(o.id),u.pubads().addEventListener("slotOnload",function(){i.NYM.analytics.firstAdLoadTime||(i.NYM.analytics.firstAdLoadTime=i.performance.now(),i.NYM.analytics.firstAdLoadLabel=e.data.label)}),n=_(o),Promise.all(b).then(function(){n?window.apstag&&window.apstag.cleared?window.apstag.fetchBids({slots:[n],timeout:window.apstag.timeout},function(){u.cmd.push(function(){window.apstag.setDisplayBids(),u.pubads().refresh([t],{changeCorrelator:!1})})}):y&&u.pubads().refresh([t],{changeCorrelator:!1}):u.pubads().refresh([t],{changeCorrelator:!1})}),e.slot=t,e)},n=function(e){var a,i,o,n=t(),s=e.getAttribute("data-name"),r=e.getAttribute("data-sizes"),d=e.getAttribute("data-label"),c=e.getAttribute("data-site");n=e.id,r&&r.length?(r=r.split(","),a=[],_map(r,function(e){e=e.split("x"),i=parseInt(e[0]),o=parseInt(e[1]),a.push([i,o])})):(e.classList.add("oop"),a=!1),this.data={id:n,name:s,sizes:a,loaded:!1,label:d,site:c},g[n]=this},r=function(e){u.cmd.push(function(){var t=o(e);g[e.data.id]=t})},s=function(e){var t=[];e.slot?(t=_(e))&&window.apstag&&window.apstag.cleared&&window.apstag.fetchBids({slots:[t],timeout:window.apstag.timeout},function(){u.cmd.push(function(){window.apstag.setDisplayBids(),u.pubads().refresh([e.slot],{changeCorrelator:!1})})}):e&&r(e)},u.cmd.push(function(){var e,t,o,n=page.getMeta("article:tag"),s=page.getMeta("author"),r=i.location.href,d=(e=a.head.querySelector(".head-gtm"),t=a.body.querySelector(".gtm"),e&&"top"===e.getAttribute("data-gtm")?"gtmtop":t&&"bottom"===t.getAttribute("data-gtm")?"gtmbottom":"");o=[],_forEach([n,s,d],function(e){_forEach(e.split(","),function(e){(e=e.trim().toLowerCase().replace(/\s/g,"-").replace(/\'|\’/g,"")).length&&o.push(e)})}),u.pubads().setTargeting("kw",o),u.pubads().setTargeting("entry_group",o),r=r.slice(r.lastIndexOf("/")+1),u.pubads().setTargeting("pn",r),u.companionAds().setRefreshUnfilledSlots(!0),u.pubads().enableAsyncRendering(),u.enableServices()}),this.load=r,this.create=function(e){return new n(e)},this.refresh=function(e){var t;_isString(e)?(t=this.getById(e),s(t)):s(e)},this.remove=function(e){var t=e.data.id;a.getElementById(t).innerHTML=""},this.getAdCount=function(e){var t,a=0,i=Object.keys(g);return _each(i,function(i){(t=g[i]).data.loaded&&t.data.label===e&&a++}),a},this.getById=function(e){return g[e]},d=_debounce(function(){var e={TopLeaderboard:1,RightColTopMPU:2,outOfPage:99,"homepageTakeover/TopLeaderboard":1},t=_sortBy(h,function(t){return e[t.data.label]||10});_forEach(t,function(e){return e.data.sizes?r(e):i.setTimeout(function(){r(e)},2e3)}),y&&window.PQ.cmd.push(()=>{try{window.PQ.loadSignals(["ids","bsc","vlp"],T)}catch(e){T(),console.error(`There has been an error loading Double Verify signals: ${e}`)}}),h=[]},10),this.addToPageLoadQueue=function(e){h.push(e),d()});function _(e){var t,a=e.sizes;return a=_intersectionWith(a,[[970,250],[970,90],[728,90],[300,600],[300,250],[320,100],[320,50]],_isEqual),e.sizes&&e.sizes.length&&(t={slotID:e.id,sizes:a,slotName:e.label}),t}function T(){i.clearTimeout(c),w=!0,_forEach(v,function(e){e()})}}]);
}, {"107":107,"114":114,"118":118,"124":124,"182":182,"205":205,"268":268,"274":274,"406":406,"409":409}];
window.modules["cid.legacy"] = [function(require,module,exports){"use strict";DS.service("$cid",function(){var r=Math.floor(100*Math.random());return function(){return"cid-"+ ++r}});
}, {}];
window.modules["client.legacy"] = [function(require,module,exports){"use strict";require("cid.legacy"),require("ads.legacy"),require("facebook.legacy"),require("aaa-module-mounting.legacy");
}, {"cid.legacy":"cid.legacy","ads.legacy":"ads.legacy","facebook.legacy":"facebook.legacy","aaa-module-mounting.legacy":"aaa-module-mounting.legacy"}];
window.modules["facebook.legacy"] = [function(require,module,exports){"use strict";DS.service("facebook",[function(){this.fb=function(i){window.FB&&window.FB[i].apply(this,Array.prototype.slice.call(arguments,1))}}]);
}, {}];
require=(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o typeof key === 'string' && key.match(/\.legacy$/)).forEach(key => window.require(key));
}
function tryToMount(fn, el, name) {
try {
fn(el); // init the controller
} catch (e) {
const elementTag = el.outerHTML.slice(0, el.outerHTML.indexOf(el.innerHTML));
console.error(`Error initializing controller for "${name}" on "${elementTag}"`, e);
}
}
/**
* mount client.js component controllers
*/
function mountComponentModules() {
Object.keys(window.modules).filter(key => typeof key === 'string' && key.match(/\.client$/)).forEach(key => {
let controllerFn = window.require(key);
if (typeof controllerFn === 'function') {
const name = key.replace('.client', ''),
instancesSelector = `[data-uri*="_components/${name}/"]`,
defaultSelector = `[data-uri$="_components${name}"]`,
instances = document.querySelectorAll(instancesSelector),
defaults = document.querySelectorAll(defaultSelector);
for (let el of instances) {
tryToMount(controllerFn, el, name);
}
for (let el of defaults) {
tryToMount(controllerFn, el, name);
}
}
});
}
// Make sure that a `window.process.env.NODE_ENV` is available in the client for any dependencies,
// services, or components that could require it
// note: the `` value is swapped for the actual environment variable in /lib/cmd/compile/scripts.js
window.process = window.process || {};
window.process.env = window.process.env || {};
if (!window.process.env.NODE_ENV) {
window.process.env.NODE_ENV = '';
}
// note: legacy controllers that require legacy services (e.g. dollar-slice) must
// wait for DOMContentLoaded to initialize themselves, as the files themselves must be mounted first
mountLegacyServices();
mountComponentModules();
// ]]