let ProdMobile = false; if (navigator.userAgent.match(/Android|BlackBerry|iPhone|iPad|iPod|Opera Mini|IEMobile/i)) { ProdMobile = true; } function ProdLeft(id) { let w = (window.innerWidth)/2; let i = ["PROD__scroller" + id]; let o = document.getElementById(i); o.scrollLeft += -(w); } function ProdRight(id) { let w = (window.innerWidth)/2; let i = ["PROD__scroller" + id]; let o = document.getElementById(i); o.scrollLeft += w; } function ProdArrows(id) { const container = document.querySelectorAll(".multi-product-carousel-container")[id]; const newArrows = document.createElement('div'); newArrows.setAttribute('class',"caro__arrows"); container.appendChild(newArrows); const ar_l = ">"; const ar_r = ">"; // Arrows code, add id to the fucntion calls const a = "" + ar_l + "" + ar_r + ""; ////// ??????????????????????? //////// // Target the carousel // let b = document.querySelectorAll(".prod__arrows")[id]; // Add arrows to carousel newArrows.innerHTML = a; } function ProdMonitor(id,wd) { let i = ["PROD__scroller" + id]; let o = document.getElementById(i); let pos = o.scrollLeft; // Get number of cards in scroller let num = o.childElementCount; // Get window width let w = window.innerWidth; // Calc scrolling sapce let max = -((w - wd)+20); let gla = ["PROD__left" + id]; let gra = ["PROD__right" + id]; let la = document.getElementById(gla); let ra = document.getElementById(gra); // Left Arrow if (pos > -20 && pos max-20) { ra.style.display = "none"; ra.style.opacity = "0.0"; } else { ra.style.display = "block"; ra.style.opacity = "1.0"; } } function ProdDevice(id) { let i = ["PROD__scroller" + id]; let o = document.getElementById(i); let pos = o.scrollLeft; if (pos > 100) { let gra = ["PROD__right" + id]; let ra = document.getElementById(gra); ra.style.opacity = "0.0"; ra.style.transition = "all 0.7s"; ra.style.WebkitTransition = "all 0.7s"; let wait = setTimeout(function() { ra.style.display = "none"; clearTimeout(wait); }, 200); } } function ProdCount(id) { let a = ["PROD__scroller" + id]; let b = document.getElementById(a).children; return b.length; } function ProdWidthCheck(id,wd) { console.log("ProdWidthCheck"); let w = window.innerWidth; let a = ["PROD__scroller" + id]; let b = document.getElementById(a); let gla = ["PROD__left" + id]; let gra = ["PROD__right" + id]; let la = document.getElementById(gla); let ra = document.getElementById(gra); console.log(id + "browser " + w); console.log(id + "scroller " + wd); if (wd <= w) { console.log("Center it"); b.style.justifyContent = "center"; la.style.visibility = "hidden"; ra.style.visibility = "hidden"; } else { console.log("Left it"); b.style.justifyContent = "start"; la.style.visibility = "visible"; ra.style.visibility = "visible"; } } function ProdSetup(id) { // Assemble carousel id attribute let a = ["PROD" + id]; let aa = ["PROD__scroller" + id]; // Target the carousel let b = document.querySelectorAll(".section-multi-product-container")[id]; let bb = document.querySelectorAll(".products-row")[id]; // Get width of cards // let crd = bb.querySelectorAll(".product")[1].clientWidth; // Get width from the second card // Set the attribute of the carousel b.setAttribute("id",a); bb.setAttribute("id",aa); // Get width of the scroller element let wd = bb.scrollWidth; // let count = ProdCount(id); // Watch the carousel scolling bb.addEventListener("scroll", function() { if (ProdMobile == false) { ProdMonitor(id,wd); } else { ProdDevice(id); } }, false); // Add the arrows ProdArrows(id); // Check width of cards, if not wider than browser, center and turn off arrows ProdWidthCheck(id,wd); } function ProdResize() { let a = document.querySelectorAll(".section-multi-product-container"); let b,c,d,wd; for (let i = 0; i < a.length; i++) { b = ["PROD__scroller" + i]; c = document.getElementById(b); d = b.childElementCount; wd = c.scrollWidth; console.log(b + " = " + wd); ProdWidthCheck(i,wd,d); } } function ProdInit() { console.log("ProdInit"); // Look for Carousels let a = document.querySelectorAll(".section-multi-product-container"); // Run setup for each carousel found for (let i = 0; i < a.length; i++) { ProdSetup(i); } // If browser resize, recheck if carousels need centering and arrows window.onresize = function() { ProdResize(); }; } const ProdWait = setTimeout(function() { console.log("ProdWait"); clearTimeout(ProdWait); let a = document.querySelectorAll(".section-multi-product-container")[0].id; if (a != "PROD0") { ProdInit(); } }, 1500); const elem = document.querySelector(".fade"); // Select all elements with the 'fade-in-element' class const fadeElements = document.querySelectorAll('.fade'); // Options for the observer (when to trigger the callback) const observerOptions = { root: null, // Use the browser viewport as the root rootMargin: '0px', threshold: 0.1 // Trigger when 10% of the element is visible }; // The callback function that runs when an element intersects const observerCallback = (entries, observer) => { entries.forEach(entry => { if (entry.isIntersecting) { entry.target.style.opacity = "1.0"; entry.target.style.transition = "all 0.5s ease-out"; entry.target.style.webkitTransition = "all 0.5s ease-out"; entry.target.style.transitionDelay = "0.2s"; entry.target.style.webkitTransitionDelay = "0.2s"; } else { entry.target.style.opacity = "0.0"; entry.target.style.transition = "all 1.0s ease-out"; entry.target.style.webkitTransition = "all 1.0s ease-out"; entry.target.style.transitionDelay = "0.2s"; entry.target.style.webkitTransitionDelay = "0.2s"; } }); }; // Create a new IntersectionObserver instance const observer = new IntersectionObserver(observerCallback, observerOptions); // Start observing each element fadeElements.forEach(element => { observer.observe(element); }); /* Roboto */ @import url('https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,100..900;1,100..900&display=swap'); /* Roboto Mono */ @import url('https://fonts.googleapis.com/css2?family=Roboto+Mono:ital,wght@0,100..700;1,100..700&display=swap'); :root { /* //////////////////////////////////////////////////////////////////// */ /* System colors */ --color-cream: #E8F6F7; --color-black: #000; --color-white: #FFEEEE; --color-light-gray: #EAE0D4; --color-medium-gray: #555555; /* Hovers */ --color-dark-gray: #4B4D56; /* Primary colors, use white or black text */ --color-pink: #F300CE; --color-blue: #1F69FF; /* Secondary colors, use black text only*/ --color-orange: #4B4D56; --color-yellow: #FBF5E7; --color-green: #4B4D56; --color-teal: #4B4D56; --color-purple: #4B4D56; /* //////////////////////////////////////////////////////////////////// */ /* Fonts */ --Brown-Regular: Brown Regular, Gill Sans, Arial, Helvetica, Roboto, Segoe UI Light, Ubuntu Light, DroidSans, sans-serif; --Brown-Bold: Brown Bold, Gill Sans, Arial, Helvetica, Roboto, Segoe UI Light, Ubuntu Light, DroidSans, sans-serif; --Roboto: 'Roboto', Arial, Helvetica, Segoe UI Light, Ubuntu Light, DroidSans, sans-serif; --Roboto-Mono: 'Roboto Mono', Monaco, monospace; --Owners-Narrow: 'owners-narrow-black', sans-serif; --Playfair: Playfair Display, Times New Roman Bold, TimesNewRomanPSMT-Bold, Times Bold, Noto Serif Bold, NotoSerif-Bold, Georgia, serif; --Ivy-Presto: 'owners', Helvetica, Roboto, Segoe UI Light, Ubuntu Light, DroidSans, sans-serif; --Owners: 'owners', Helvetica, Roboto, Segoe UI Light, Ubuntu Light, DroidSans, sans-serif; --OwnersWide: 'owners-wide', Helvetica, Roboto, Segoe UI Light, Ubuntu Light, DroidSans, sans-serif; --OwnersXwide: 'owners-xwide', Helvetica, Roboto, Segoe UI Light, Ubuntu Light, DroidSans, sans-serif; --NeueHaus-Unica: neue-haas-unica, Helvetica, Roboto, Segoe UI Light, Ubuntu Light, DroidSans, sans-serif; /* Font Letterspacing < DO NOT ALTER */ --Tight: -0.01em; --Normal: 0em; --Loose: 0.02em; --Spread: 0.1em; /* Intro column div{font-family:var(--Roboto-Mono);font-weight:var(--Weight-Roboto-Mono-Regular);font-size:.7rem;text-transform:uppercase;text-decoration:none;letter-spacing:.02em;color:var(--subnav-text-color);border-bottom:1px solid transparent}.subnav__container a:hover,.subnav__container-mobile button:hover,.subnav__container>div:hover{color:var(--subnav-text-hover-color);border-bottom:1px solid var(--subnav-text-hover-color)}.subnav__read-more{pointer-events: none;color:var(--subnav-read-more-color);border:0!important;text-decoration:none}.subnav__container-mobile{display:none}#subnav__marker{height:1px;margin-top:-1px}@media only screen and (max-width:1100px){.subnav__container{display:none}.subnav__container-mobile{display:flex}}@media only screen and (max-width:1024px){.subnav__container{width:100%;height:30px;display:flex!important;flex-direction:row;justify-content:start;align-items:center;gap:30px;overflow-x:auto;scroll-behavior:smooth;padding:0 20px 2px}.subnav__container a,.subnav__container-mobile button,.subnav__container>div{white-space:nowrap}.subnav__container::-webkit-scrollbar{height:1px;pointer-events:auto;cursor:pointer}.subnav__container::-webkit-scrollbar-thumb{background:rgba(255,255,255,0);border-radius:6px;border:0}.subnav__container::-webkit-scrollbar-track{background:rgba(0,0,0,0);padding:0}}@media only screen and (max-width:760.98px){.subnav__container a,.subnav__container-mobile button,.subnav__container>div{font-size:.65rem;border-bottom:1px solid var(--subnav-text-color-underline)}.subnav__container,.subnav__container-mobile{gap:20px}} #subnav, .subnav { transition: translateY 0.5s ease-in-out; -webkit-transition: translateY 0.5s ease-in-out; z-index: 99; } /* //////////////////////////////////////////////////////////////////// */ /* Anchors */ .caro__marker{position:relative}.caro__anchor{position:absolute;top:-40px;left:0;width:100%;height:1px}.caro__marker .caro__anchor{top:-140px} .marker_set{position:relative}.marker{position:absolute;top:-40px;left:0;width:100%;height:1px}.marker_set .marker{top:-140px} .section-html, .module {position: relative;} /* //////////////////////////////////////////////////////////////////// */ /* Carousel Basics */ .caro,.caro__scroller{display:block;width:100%}.caro{clear:both;margin:0;padding:0;overflow:hidden}.caro__scroller{position:relative}.caro__scroller-wrapper{width:100%;display:flex;flex-direction:column;position:relative}.caro__count{display:none}.caro__arrows{position:absolute;top:0;left:0;right:0;width:100%;pointer-events:none;display:flex;flex-direction:row;justify-content:center;align-items:center;height:100%}.caro__arrow,.caro__arrow-left,.caro__arrow-right{padding:0;pointer-events:auto}.caro__arrow-left{top:auto;bottom:auto;left:40px;width:auto;margin:0;display:none;opacity:0}.caro__arrow-right{top:auto;right:40px;width:100px;margin:0;display:block;opacity:1;animation-name:moveArrow;animation-timing-function:ease-in-out;animation-duration:1.5s;animation-iteration-count:infinite}.caro__arrow{position:absolute;width:60px;height:60px;cursor:pointer;margin:-20px 0 0}.caro__arrow-file svg{width:100%;height:100%}.caro__arrow-file svg path{fill: var(--carousel-arrow-shape-color)}.caro__arrow-file:hover path{fill:var(--carousel-arrow-shape-color-hover)}.caro__arrow-file svg circle{fill:var(--carousel-arrow-bgcolor);stroke:var(--carousel-arrow-bordercolor)}.caro__arrow-file:hover svg circle{fill:var(--carousel-arrow-bgcolor-hover);stroke:var(--carousel-arrow-bordercolor-hover)}.caro__arrow-right:hover{animation-play-state:paused;-webkit-animation-play-state:paused}@keyframes moveArrow{0%,100%{transform:translateX(0)}50%{transform:translateX(30px)}}@-moz-keyframes moveArrow{0%,100%{transform:translateX(0)}50%{transform:translateX(30px)}}@-webkit-keyframes moveArrow{0%,100%{transform:translateX(0)}50%{transform:translateX(30px)}}@-o-keyframes moveArrow{0%,100%{transform:translateX(0)}50%{transform:translateX(30px)}}.caro__scroller-list{width:100%;height:fit-content;white-space:nowrap;overflow-x:auto;overflow-y:hidden;scroll-behavior:smooth;scroll-snap-type:x mandatory;scroll-padding:0 20px;padding:0 0 20px;-webkit-transform:translateZ(0);-moz-transform:translateZ(0);-ms-transform:translateZ(0);-o-transform:translateZ(0);transform:translateZ(0);-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000;-moz-perspective:1000;-ms-perspective:1000;perspective:1000;-webkit-overflow-scrolling:touch;grid-template-columns:repeat(100,340px);font-size:0;display:flex;justify-content:start;align-items:start;gap:20px;flex-wrap:nowrap}.is-promos .caro__scroller-list,.is-wide .caro__scroller-list,.is-youtube .caro__scroller-list{grid-template-columns:repeat(100,500px)}.is-social .caro__scroller-list,.is-tall .caro__scroller-list{grid-template-columns:repeat(100,340px)}.caro__card{overflow:hidden;width:340px;min-width:340px;max-width:340px;background-color:transparent;height:fit-content;scroll-snap-align:start;position:relative;display:inline-block;float:none;box-sizing:content-box;padding:0;margin:0}.caro__card img{width:100%}.caro__card>div{box-sizing:border-box;width:inherit}.caro__card:first-of-type{padding-left:20px}.caro__card:last-of-type{margin-right:20px}.is-promos .caro__card,.is-wide .caro__card,.is-youtube .caro__card{width:500px;min-width:500px;max-width:500px}.is-youtube .caro__card iframe{width:500px!important;height:281px!important}.is-social .caro__card iframe.instagram-media{max-width:unset!important;width:100%!important;border-radius:0!important;margin:-54px 0 0!important;border:0!important}@media only screen and (max-width:760.98px){.caro__arrow-left{left:15px}.caro__arrow-right{right:15px;pointer-events:none}.caro__arrow-right .caro__arrow-file{transform:rotate(180deg)}.caro__arrow-file{width:85px;height:85px}.caro__arrow-file img,.caro__arrow-file svg{padding:11px}@keyframes moveArrow{0%,100%{transform:translateX(0)}50%{transform:translateX(20px)}}@-moz-keyframes moveArrow{0%,100%{transform:translateX(0)}50%{transform:translateX(20px)}}@-webkit-keyframes moveArrow{0%,100%{transform:translateX(0)}50%{transform:translateX(20px)}}@-o-keyframes moveArrow{0%,100%{transform:translateX(0)}50%{transform:translateX(20px)}}.caro__scroller-list,.is-people .caro__scroller-list,.is-promos .caro__scroller-list,.is-social .caro__scroller-list,.is-tall .caro__scroller-list,.is-wide .caro__scroller-list,.is-youtube .caro__scroller-list{grid-template-columns:repeat(100,335px)}.caro__card,.is-people .caro__card,.is-promos .caro__card,.is-social .caro__card,.is-tall .caro__card,.is-wide .caro__card,.is-youtube .caro__card{width:335px;min-width:335px;max-width:335px}.is-youtube .caro__card iframe{width:335px!important;height:188px!important}.caro__arrows{display:none!important}}.caro__scroller-list::-webkit-scrollbar{height:4px;pointer-events:auto;cursor:pointer;background:0 0!important}.caro__scroller-list::-webkit-scrollbar-track{background:0 0!important;padding:2px 0}.caro__scroller-list::-webkit-scrollbar-thumb{background:0 0!important;border-radius:6px;border:0}.caro__scroller-list::-webkit-scrollbar-thumb:hover{background:0 0!important} /* /////////////////////////////////////////////////////////////////////////////// */ /* Editors */ .editors { margin: 40px auto 0; padding: 0; } .editors__wrapper { } .editors__list { display: flex; flex-direction: row; justify-content: center; align-items: flex-start; flex-wrap: wrap; width: 100%; gap: 15px; } .editors__card { width: 100%; max-width: 250px; display: block; margin: 0; padding: 0 20px; } .editors__card-image { width: 100%; max-width: 250px; margin: 0 auto 10px; } .editors__card-image img { width: 100%; border-radius: 500px; border: var(--editor-border-size) solid var(--editor-border-color); } .editors__card-details { width: 100%; display: flex; flex-direction: column; font-family: var(--editor-details-font); font-weight: var(--editor-details-weight); color: var(--editor-details-color); font-size: 0.7rem; line-height: 1.45; text-align: center; } .editors__card-details a:hover { color: var(--editor-name-hover-color); } .editors__card-name { font-size: 1.2rem; color: var(--editor-name-color); font-family: var(--editor-name-font); font-weight: var(--editor-name-weight); } .editors__card-role { color: var(--editor-role-color); text-transform: uppercase; letter-spacing: 0.05em; } .editors__card-social { display: flex; flex-direction: row; justify-content: center; align-items: center; gap: 0; } .editors__card-social-icon svg { width: 50px; height: 50px; } .editors__card-social-icon svg path { fill: var(--editor-social-color); } .editors__card-social-icon:hover svg path { fill: var(--editor-social-hover-color); } @media only screen and (max-width: 760px) { .editors { padding: 0 0 40px; } .editors__list { gap: 20px; } .editors__card { margin-bottom: 20px; } } /* //////////////////////////////////////////////////////////////////// */ /* Products */ .product__card { width: 100%; height: 100%; display: flex; flex-direction: column; gap: 0; align-items: stretch; justify-content: center; } .product__image { width: 100%; overflow: hidden; display: flex; flex-direction: column; justify-content: start; align-items: center; position: static; padding-bottom: 0; height: fit-content; top: 0; max-height: 440px; } /* new */ .product__image { width: 100%; overflow: hidden; display: flex; flex-direction: column; justify-content: center; align-items: center; position: relative; padding-bottom: 0; height: 440px; /* 420px; */ } .product_image-container { width: 100%; overflow: hidden; position: relative; padding-bottom: 0; height: auto; border: 0; /* var(--product-img-border-size) solid var(--product-img-border-color); */ border-radius: 0; /* var(--product-img-border-radius); */ display: flex; flex-direction: column; justify-content: center; align-items: center; } .product__image img { width: 100%; position: static; top: unset; -ms-transform: unset; transform: unset; top: 0; left: 0; } .product__eyebrow { width: 100%; font-family: var(--product-brand-font); font-weight: var(--product-brand-weight); font-size: 0.7rem; text-transform: uppercase; letter-spacing: 0.05em; color: var(--product-brand-color); text-decoration: none; padding: 15px 10px 5px; overflow: hidden; height: 35px; } .product__name { width: 100%; font-family: var(--product-name-font); font-weight: var(--product-name-weight); font-size: 1.1rem; text-transform: none; letter-spacing: 0em; color: var(--product-name-color); text-decoration: none; padding: 0 10px 15px; white-space: normal; overflow: hidden; height: 60px; } .product__name span { border-bottom: 1px solid transparent; } .product__name:hover span { border-bottom: 1px solid var(--product-name-color); } .product__buy { width: 100%; display: flex; flex-direction: row; justify-content: center; align-items: stretch; padding: 0 10px 10px; gap: 20px; } .product__b