const toolsOn = false;

/* ///////////////////////////////////////////// */

/* DO NOT DELETE – Knotch Tracking – Add tracking to product Links */

function setupProductLinks()

const regex = /[’/`~!#*$@%+=.,^&()[]

/* ///////////////////////////////////////////// */

/* Image Annotations */

var elem = new Array();
var mobilebuy = new Array();
var closebutton = new Array();

var init = false;
var previous = 100;
var mobile = false;
var desktop = true;

var grabnav;

// What device is this?
if (navigator.userAgent.match(/Android|BlackBerry|iPhone|iPad|iPod|Opera Mini|IEMobile/i))
var mobile = true;
var desktop = false;

function assembleArray(id, pos)
// Assemble a tip and dot array, add id tags to them
var a = [document.getElementById('anno-tip' + id), document.getElementById('anno-dot' + id + '-hint'), pos];
return a;

function tipOn(elem)
// Grab items from the array
var pop = elem[0];
var hint = elem[1];
var pos = elem[2];
// Setup Global Nav for hiding on mobile
if (init == false)
// Add the id to the global nav and store mobile buy buttons
// Done with setup
init = true;

if (mobile == true)
// Mobile & Tablet, click dots, show mobile buy button
// If just mobiile and not tablet, hide the global nav
if (window.innerWidth < 768)

// Check for small or wide desktop
if (window.innerWidth < 768)
// Desktop Small, click dots, show mobile buy button
// Desktop Wide, rollover dots, no mobile buy button

function tipOff(elem) {
// Grab items from the array
var pop = elem[0];
var hint = elem[1];
var pos = elem[2];
if (mobile == true)
// Mobile & Tablet, click dots, show mobile buy button
// If just mobiile and not tablet, hide the global nav
if (window.innerWidth < 768)

// Check for small or wide desktop
if (window.innerWidth 540)

function closeTip(id)
// Mobile onClick closebutton
var lmt = assembleArray(id, ‘0’);
if (window.innerWidth > 540)

function showTip(id)
// Desktop Rollover
if (desktop == true)
if (window.innerWidth > 720)
var lmt = assembleArray(id, ‘-15%’);

function hideTip(id)
// Desktop Rolloff
if (desktop == true)
if (window.innerWidth > 720)
var lmt = assembleArray(id, ‘0’);

function mobileExtraOn(id)
// Turn on the mobile buy button
mobilebuy[id].style.display = “block”;
closebutton[id].style.display = “block”;

function mobileExtraOff(id)
// Turn off the mobile buy button
mobilebuy[id].style.display = “none”;
closebutton[id].style.display = “none”;

function initAnnotations()

// Add id tag to the global nav, for hiding on mobile
document.getElementsByClassName(“global-header”)[0].setAttribute(“id”, “tmp-global-header”);
grabnav = document.getElementById(‘tmp-global-header’);

// Get the mobile buttons
mobilebuy = document.getElementsByClassName(‘anno-mobile-buy’);
// Get the mobile close buttoms
closebutton = document.getElementsByClassName(‘anno-tip-close’);

function showGlobalNav() = “block”;

function hideGlobalNav() = “none”;

/* ///////////////////////////////////////////// */


function tagImages()

let elems = document.querySelectorAll(“.section-image .img-container”);
let e;

for (e = 0; e < elems.length; e++)

elems[e].setAttribute("id", ["image" + e]);

// Temp numbering, turn off above by setting toolsOn to false

if (toolsOn == true)
let add = document.createElement('DIV');

add.innerHTML = "

” + e + “


// Add Shop Look buttons

let addCTA = document.createElement(‘DIV’);

if (e == 4)
addCTA.innerHTML = “


// Reveal?

let elemsReveal = document.querySelectorAll(“.section-reveal-container”);

let addReveal = document.createElement(‘DIV’);

addReveal.innerHTML = “


// Cleans up
elems, e = undefined;

// Setup

function setupAnnotations(id)

/* ///////////////////////////////////////////// */

// Grab the img-containers for adding annotations

let elems = document.querySelectorAll(“.section-image .img-container”);

/* ///////////////////////////////////////////// */

/* Annotation 1 */

let anno1 = document.createElement(‘DIV’);

anno1.innerHTML = “


/* Cleanup */

elems = undefined;

function setupInsetAnimations()

/* ///////////////////////////////////////////// */

// Grab the img-containers for adding animations (replaces gifs)

let elems = document.querySelectorAll(“.section-image .img-container”);

/* ///////////////////////////////////////////// */

/* Animation 1 */

let anim1 = document.createElement(‘DIV’);

anim1.innerHTML = “


/* Animation 2 */

let anim2 = document.createElement(‘DIV’);

anim2.innerHTML = “


/* Animation 3 */

let anim3 = document.createElement(‘DIV’);

anim3.innerHTML = “


/* Cleanup */

elems = undefined;

/* ///////////////////////////////////////////// */

/* Video */

// Video urls from JWplayer
const videoHeroDesktopBigURL = “”; // NEW: For big monitor, desktop
const videoHeroDesktopURL = “”;
const videoHeroTabletURL = “”;

const videoHeroMobileURL = “”;
const videoHeroSmallMobileURL = “”;

// Poster/thumbnail images while video loads
const vidPosterWide = “”;
const vidPosterTall = “”;

// ALt text
const altTag = “”;

function startVideoHero()

const videoHeroDesktop = document.getElementById(“tmp-video-hero-desktop”);
const videoHeroMobile = document.getElementById(“tmp-video-hero-mobile”);

if (window.innerWidth > 1799)
videoHeroDesktop.src = videoHeroDesktopBigURL;

if (window.innerWidth > 1220 && window.innerWidth 767 && window.innerWidth 360 && window.innerWidth < 768)
videoHeroMobile.src = videoHeroMobileURL;

if (window.innerWidth < 361)
videoHeroMobile.src = videoHeroSmallMobileURL;

function setupVideoHero()

// Grab the target
const videoInject = document.getElementsByClassName("opener");
// Make a new element
let vidOpener = document.createElement('DIV');
// Give the new element a class
// Update the element
// Assemble the custom html
let allCode = "

// Insert the custom html
vidOpener.innerHTML = allCode;

// Add the video urls etc.

// Cleanup
//videoInject = undefined;

/* ///////////////////////////////////////////// */

/* Setup */

function setupPage()

// Video opener
// Annotations, set number based on image tag using the tag images function
// Inset animations
// Number the images, turn off for publish
// Knotch analytics

/* ///////////////////////////////////////////// */

/* Preload */

document.onmouseleave = function()
window.isReady = false

window.addEventListener(“resize”, function() window.isReady = false);

function ready(fn)
if (document.attachEvent ? document.readyState === “complete” : document.readyState !== “loading”)
document.addEventListener(‘DOMContentLoaded’, fn);

window.isReady = window.isReady === undefined ? false : window.isReady;

ready(function ()
var imagesLoadedInterval = setInterval(function()
imagesLoaded( ‘#tmp-load’, background: true , function()
window.isReady = false

, 100)

if (window.isReady === false)
window.isReady = true

const waitForLoad = setTimeout(function()
, 200);


function invokeKnotchEventPixel(eventName)
var img = new Image();
var src = eventName;
src += “&ts=” +;
img.src = src;
catch (e)

Our lives have been in a state of flux — and so has our sense of style. In partnership with Macy’s, we’ve tapped R29 editors to shed light on how their personal styles have evolved in the last year, aligning them with their own specific fashion identity that offers a glimpse into who they are and a reflection of the times we’re living in. Read more about the partnership and the other fashion identities here

If pressure makes diamonds, what can a stress test like, say, a global pandemic do for our style? Some might emerge having indulged in the pleasures of fully fleece-based ‘fits; others might resurface having fine-tuned their personal aesthetics until they more faithfully represent their inner workings than ever before. For the Personal Style Stalwart, the latter is coming true through lots of sartorial reflection, making some smart buys, and, yes, deep-quarantine solo fashion shows (what else was there to do anyway?). Together, these methods can result in a harder, better, and stronger way of dressing — something fashion editor Chelsea Peng can personally attest to. Ahead, discover how her look-at-me approach to style shifted (or didn’t) when her audience was drastically reduced, and how, with every foray into shearling and sweats, she’s styling her way to greater fashion freedom. 

My pre-pandemic style could be described as… “A very eclectic hodgepodge of references and influences that, all together, make up…me. There are always about 53 tabs open in my brain. Nobody would ever describe my personal style as minimal, that’s for sure. I like volume, prints on prints on prints, suiting and co-ords, and weird/happy color combinations that make toddlers stop and stare on the street.”

But when the pandemic hit… “It would have been silly not to adapt as the world became more casual and inward-facing, because style is all about context, isn’t it? The contexts in which I can present myself to the world have dwindled to but a handful, so like many of us, I’ve had to adapt my personal style to suit a state of ‘perma bodega run.’ I did wear sweatpants in public for the first time (an orange tie-dye pair with a clashy sock and loafers, but still).

My personal style evolved… “To the ‘at-home’ version of me. That said, barring my most formal eveningwear, I’ve been able to get at least one wear out of most everything in my closet, like say, a blue feather jacket, now paired with stirrup pants, a ballet slipper, and a merch T-shirt that supports a local cocktail bar (as opposed to a full going-out ‘fit, which would consist of a lavender feather top and rhinestone jeans). 

What I learned: “That I miss The Gaze, though we do still have a version of that with more of a cafe and park culture. It’s still a teensy consideration that makes me put on a bra before embarking on a post-dinner stroll, but overall, lockdown has only affirmed my personal style as being fluid and supported by a series of choices and purchases that do reflect who I am.”

I’m The Personal Style Stalwart because… “The tie between my sense of style and self is stronger than ever. During the summer, I would go for solo walks wearing a cutout bubble-hem dress (a sample on loan from a fashion-designer friend), just for the feeling of being dressed up again. Even if it wasn’t invading my fellow partygoers’ personal space on a light-up dancefloor, this reminder of pre-lockdown life cheered me up in a time when I was beginning to question if fashion was important at all. But just like how integrity is how you behave when no one’s around, true style is how you dress when you’re without an audience: for yourself.”

My essentials include: “Suits! Though the slouchier ’70s ones and not those whose trouser breaks require a heel. Also fun knits (including sweater vests), good denim (only two categories: perfect bum or the bigger and weirder the better), dad sneakers, and statement outerwear.”

The most surprising thing I discovered: “Lockdown louche is a whole different level that’s best described as ‘shipping merchant’s ne’er-do-well son on a yacht holiday.’ I’ve always loved pajama dressing, but now it’s with actual clothes I’ve worn to bed. And I did recently wear a pair of mini shearling boots to an outdoor film screening that caused quite a stir because I’ve never worn them before. (The consensus was, however, that they are on-brand for me. As I said, louche.)”

My favorite pandemic purchases are… “1) A pair of perfect-fitting — no cap — ‘70s teenage boy’s jeans I found at a local vintage shop not 30 minutes after I broke up with someone by chucking their baseball jacket over their front gate and 2) an ’80s fishtail-hem lace dress I had originally wanted for last year’s apocalypse-themed birthday but ended up scoring (at a steep discount) four months later.”

My 2021 personal style will… “Be dressing in a way that’s even more joyful and loud and hopeful in anticipation of all the fun we’ll have when we meet again. You know that meme that’s like, ‘Can’t wait until it’s winter so I can really start dressing?’ That’s me once the world can safely reopen.”

Get to know more about The Peronsal Style Stalwart through products and events, below.

Like what you see? How about some more R29 goodness, right here?

Source link