Antidote is the cool and durable retailer we've been waiting for

Antidote is the cool and durable retailer we've been waiting for

Welcome to the Green Scene. Every week, we emphasize designers and manufacturers who attempt to make the world of trend and magnificence a greener and extra sustainable place. Supported manufacturers make a difference; examine again each tuesday to see your new favorites.

The world of sustainable style might be large navigation. It's great that it has grown significantly over the final couple of years, however it may be onerous to keep up.

For most shoppers, convenience is key, and the number of persistent, multi-brand retailers – one-stop service points for a number of acutely aware labels that span a number of product teams and always deliver newcomers to the market – is nonetheless far and few. That's why we've dropped the heel to the Miami-based Antidote online retailer, which provides a web-based store (and half an IRL) that sells the coolest and fairest-priced trendy durable merchandise.

After years of working in the textile business, Sophie Zembra, the founder of Antidote, was not proud of what he found in factories in China and India. "I had witnessed contamination and unethical manufacturing practices," he says. "My personal interest in ethical fashion evolved here. I no longer felt comfortable wearing clothes created for such an environment for many reasons, including chemical exposure and employee treatment."

Photograph: Antidote

Consequently, he started researching ethical and sustainable manufacturers, but still discovered labels that did not include trend change pieces, but principally found clothes with more boho and hippie. With the idea that trend and sustainability go hand in hand, Zembra launched Antidote in 2017 as a method to deliver collectively modern, but moral and sustainable brands for acutely aware consumers like themselves.

Antidote carries various durable staples, similar to Mother Pearl, Osklen, and Mara Hoffman, along with emerging international brands that should not have the similar presence in the United States. With digital buying, bespoke in-store and previously Miami-based in-store and pop-up, Antidote has made it straightforward for the trend department to pay money for the latest eco-friendly merch.

Zembra and his workforce did a whole lot of work on branding, an antidote that looks at a number of brands of brand name earlier than deciding on a inventory. "We look at many elements before we choose; fabrics and manufacturing processes are one of the most important factors, not just style and retail," he explains. "We really want to break the stigma that comes with talking about durable fashion by showing that it can be trendy, stylish and also affordable."

Sturdiness is often a posh topic, and on the subject of clothes and accessories, it turns into much more so. That's why Antidote's supply is divided into classes similar to Truthful Commerce, eco-fabrics, US-made, recycled and rather more. "Ideally, the brands we decide to represent fall into more than one category. Depending on how much information the brand already provides, we also ask for factory images and fabric descriptions," Zembra says. This classification additionally allows larger transparency between Antidote and its clients.

Picture: Antidote. What good wouldn’t it be if the rest of its practices were not comparable? It is for this cause that sustainability is a huge a part of a brand's DNA and company culture. "We publish conscious practices daily," says Zembra.

All of Antidote's premises, from their former Wynwood store and the ultimate pop-up window of the Brickell City Middle in Miami to the showroom, are created. non-toxic paints, eco-cements and recycled wood. They have a paperless receipt coverage that sends digital receipts to all clients upon buy. Buying luggage and clear acetate paper are biodegradable and come from FSC-certified forests, which additionally grow wooden every time Antidote places an order. The wrapping paper is printed on recycled newspaper with soy-based, non-toxic inks and all of its ribbons are manufactured in the United States.

Zembra mentions that he is at present wanting for methods to improve Antidote's sustainability practices, resembling finding ways to scale back the amount of packaging you employ and finding various transportation options that have decrease carbon emissions.

The antidote started as a vacation spot for durable ready-to-use and vacation locations, transporting every little thing from warm climate clothes, clothes, and swimwear to cleaning. and organic sun and skincare products along with a handful of household products resembling candles and ceramics.

Provided that the brand's headquarters are situated year-round in seashore climate, this made good sense. Nevertheless, as Zembra started to note that a big portion of her digital area viewers lived outdoors of Miami, especially in cities like New York, she felt it was time to increase her choices all through the seasons and city way of life. 19659016] Photograph by Antidote

For the first time, the assortment of Antidote journal brings cult-favorite labels resembling Batsheva and Lebrand to supply now vegan leather moto jackets, long-sleeved prairie suits and a number of cozy outerwear. "Our home is Miami, but our customers are spread around the world," Zembra says. "We wanted to make sure we could provide them with the styles they were looking for year-round, which is why this year we have included ethically derived cashmere, vegan jackets and other urban styles in our fall collection."

So what's next for Zembra and Antidote? Though he has just lately begun launching some personal label equipment for Antidote, he is now specializing in increasing the personal label into a set of durable necessities and wardrobe necessities.

You should purchase Antidote's current supply at

var rblms; (perform ()
if (! rblms) rblms = ; else requires = rblms;
/ ** vim: et: ts = 4: sw = 4: s = four
* @license RequireJS 2.three.2 Copyright jQuery Foundation and other contributors.
* Revealed underneath MIT License,
* /
var demand, insist, specify ;! perform (international, setTimeout) perform commentReplace (e, t) perform onFunction (e) return "[object Function]" === (e) perform isArray (e) return "[object Array]" === (e) perform each ( e, t) if (e) var i; for (i = zero; i-1 && (! e [i] ||! t (e [i] i, e)); i- = 1); with hasProp (e, t) return hasOwn. call (e, t) perform getOwn (e, t) return hasProp (e, t) &&
return 1;

if (a1 b1)
return 1;

if (a1 b1)
return 1;

if (a1 = 0; i–)
if (this.itemsHover [i] .isVisible ())
this.itemsHover [i] .load ();
this.optionHover.plice (i, 1);

name: perform (func, wait, immediately)
var end result
, timeout = zero

return perform ()
var args = arguments
, callNow = prompt &&! timeout
, context = this
, later

later = motion ()
timeout = zero;
if (! instantly)
end result = func.apply (context, args);


clearTimeout (timeout);
timeout = set timeout (later, wait);
if (callNow)
end result = func.apply (context, args);



(perform ()

var onDomReady = action ()
rblms.require ([‘utils/lazy_loading/queue’] perform (queue)
queue.initialize ();

if (doc.readyState! == & # 39; loading & # 39;)
onDomReady ();
window.addEventListener (& # 39; DOMContentLoaded & # 39 ;, onDomReady);

) ();

rblms.define ("utils / lazy_loading / loader", perform () );
/ *! jQuery v1.11.1 | (c) 2005, 2014, jQuery Basis, Inc. | * /
! perform (a, b) "object" == module sort && "object" == module sort.exports? module.exports = a.document? b (a,! zero): perform (a) if (! a .document) throws a brand new error ("jQuery requires a window containing the document"); return b (a): b (a) ("unspecified"! = window sort? window: this, perform (a, b) var c = [] d = c.lice, e = c.concat, f = c.push, g = c.indexOf, h = , i = h.toSing, j = h.hasOwnProperty, okay = , l = "1.11.1", m = perform (a, b) return new m.fn.init (a, b), n = / ^ [suFEFFxA0] + | [suFEFFxA0] + $ / g, o = / ^ – ms – /, p = / – ([da-z]) / gi, q = perform (a, b) return b.toUpperCase (); m.fn = m.prototype = jquery: l, builder: m, selector: "", size: zero, toArray: perform ( ) return (this), get: perform (a) return null! = a? 0> a? this [a+this.length]: this [a]: (this), pushStack: perform ( a) var b = m.merge (this.constructor (), a); return b.prevObject = this, b.context = this .context, b, each: perform (a, b) return m.each (this, a, b), map: perform (a) return this.pushStack ( (this, perform (b, c) return (b, c, b)), slice: perform () return this.pushStack d.apply this, argum e nts)), first: perform () return this.eq (zero), last: perform () return this.eq (-1), eq: perform (a) var b = this.size, c = + a + 0> a? b: 0); restore this.pushStack (c> = zero && b> c? [this[c]]: []), finish: perform () , push: f, type: c.type, Splice: c.splice, m.prolong = m.fn.prolong = perform () , h = 1, i = arguments.length, j =! 1; for ("boolean" = = g && sort (j = g, g = arguments [h] || , h ++), "object" == of sort g || m.isFunction (g) || ( g = ), h === i && (g = this, h -); i> h; h ++) if (zero! = (e = arguments [h])) for (d in e) a = g [d] c = e [d] g! == c && (j && c && (m.isPlainObject (c) ||) || (b = m.isArray (c))), b? (b =! 1, f = a && m.isArray ( a)? a: []): f = a && m.isPlainObject (a)? a: , g [d] = m.prolong (j, f, c)): empty zero! == c && (g [d] = c)); restore g, m.prolong (expando: "jQuery" + (l + Math.random ()). substitute (/ D / g, ""), isReady:! zero, error: perform (a) throw new bug (a), noop: perform () , isFunction: perform (a) return "action" === m.sort (a), isArray: Array.isArray || perform (a) return "matrix" === m.sort (a), isWindow: perform (a) return zero! = a && a == a.window, isNumeric: perform (a) return! m.isArray (a) && a -parseFloat (a)> = zero, isEmptyObject: perform (a) var b; for (b in a) return! 1; return! zero, isPlainObject: perform (a) var b; if (! a | | "object"! == m.sort (a) || a.nodeType || m.isWindow (a)) return! 1, attempt if (a.constructor &&! (a "builder") &&! (a.constructor.prototype, "isPrototypeOf")) return! 1 catch (c) return! 1 if (okay.ownLast) for (b in a) return (a, b ); (b for a); return empty zero === b || (a, b), sort: perform (a) , globalEval: perform (b) b && m.trim (b) && (a.execScript || perform (b) (a, b)) (b), camelCase: perform (a) return a.substitute (o, "ms -"). substitute (p, q), nodeName: perform (a, b) return a.nodeName && a.nodeName.toLowerCase () === b.toLowerCase (), each: perform (a, b, c) var d, e = 0, f = a.size, g = r (a) if (c) if (g) for (f> e; e ++) if (d = b.apply (a [e] c), d ===! 1) break else for (e in a) if (d = b.apply (a [e] c), d ===! 1) break else if (g) for (; f> e; e ++) if (d = (a [e] e, a [e]), d ===! 1) break else (e in a) if (d = (a [e] e, a [e]), d ===! 1) pause; reset a, minimize: perform (a) reset zero == a? "" 🙁 ++ ""). exchange (n, ""), makeArray: perform (a, b) var c = b || []; return null! = a && (r (Object (a))? m.merge (c, "string" == sort? [a]: a): (c, a)), c, inArray: perform (a , b, c) var d; if (b) if (g) returns (b, a, c); for (d = b.size, c = c? 0> c? math.max (0, d + c): c: zero; d> c; c ++) if (c in b && b [c] === a) return c return-1, merge: perform (a, b) var c = + b.size, d = zero, e = a.size; whereas (c> d) a [e++] = b [d++]; if (c! == c) when (empty zero! == b [d]) a [e++] = b [d++]; return a.length = e, a, grep: perform (a, b, c) for var d, e = [] f = 0, g = a.size, h =! c; g> f; f ++) d =! b (a [f] f), d! == h && e.push (a [f]); return e, map: perform (a, b, c) var d, f = 0, g = a.length, h = r (a), i = []; if (h) for (; g> f; f ++) d = b (a [f] f, c), zero! = d & i halfway (d); otherwise (f in a) d = b (a [f] f, c), zero! = d && i.push (DR eturn e.apply ([] i), information: 1, proxy: perform (a, b) var c, e, f; return "string" == b && (f = a [b] b = a, a = f), m.isFunction (a)? c = (argumentsit, 2), e = perform () return a.apply (b || this , c.concat ( (arguments)), e.guid = a.guid = a.guid || m.guid ++, e): empty zero, now: perform () return + a brand new date assist okay), m .each ( "Boolean number string function group date RegExp object error" .cut up ( ""), the perform (a, b) h [“[object “+b+”] "] = b.toLowerCase () ); perform r (a) var b = a.length, c = m.sort (a); return "action" === c || m.isWindow (a)?! 1: 1 === a .nodeType && b?! zero: "array" = == c || 0 === b || "number" == b && b> 0 && b-1 a var s = function (a) var b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u = "sizzle" + – new date, v = document, w = 0, x = 0, y = gb (), z = gb (), A = gb (), B = function (a, b) return a === b && (l =! 0), 0 , C = "determ unfinished ", D = 1