Skip to main content
/* ═══ V3.2 OPTIMIZED SHELL ═══ */ /* — THEME KILL — */ #masthead,#site-navigation,.site-header,.header-container,.header-actions, #colophon,.site-footer,.site-info{display:none!important} .page-title,.entry-title{display:none!important} body,html{background:var(–obsidian,#0A0A0A)!important;color:var(–bone,#E8E4DF)!important; margin:0!important;padding:0!important} html{color-scheme:dark} .entry-content,.page-content,.site-main,.content-area,.site-content, .wp-site-blocks,.has-global-padding{padding:0!important;margin:0 auto!important; max-width:none!important;width:100%!important;background:transparent!important} .woocommerce-store-notice,.demo_store{display:none!important} *{-webkit-font-smoothing:antialiased!important;-moz-osx-font-smoothing:grayscale!important;box-sizing:border-box} /* — VARIABLES — */ :root{ –void:#050505;–obsidian:#0A0A0A;–charcoal:#141414;–smoke:#1E1E1E; –graphite:#2A2A2A;–ash:#7A7A7A;–slate:#7E7E7E;–mist:#888;–silver:#AAA; –bone:#E8E4DF;–cream:#F5F0EB;–white:#FAFAFA; –rose:#B76E79;–rose-dim:rgba(183,110,121,0.12);–rose-glow:rgba(183,110,121,0.35); –blood:#8B0000;–blood-dim:rgba(139,0,0,0.12); –gold:#D4AF37;–gold-dim:rgba(212,175,55,0.10); –font-display:’Bebas Neue’,’Impact’,sans-serif; –font-editorial:’Cormorant Garamond’,’Georgia’,serif; –font-heading:’Playfair Display’,’Georgia’,serif; –font-body:’Inter’,-apple-system,BlinkMacSystemFont,sans-serif; –ease-expo:cubic-bezier(0.16,1,0.3,1); –ease-smooth:cubic-bezier(0.25,0.1,0.25,1); –ease-out-quint:cubic-bezier(0.22,1,0.36,1); –nav-h:64px; –container:min(90vw,1400px); } /* A11y: Focus visible */ a:focus-visible,button:focus-visible{outline:2px solid var(–rose);outline-offset:3px;border-radius:2px} .skip-link:focus{position:fixed!important;top:10px;left:10px;z-index:999999; background:var(–obsidian);color:var(–white);padding:12px 24px; font-family:var(–font-body);font-size:14px;text-decoration:none; border:2px solid var(–rose);border-radius:4px} /* A11y: Reduced motion enhancement */ @media(prefers-reduced-motion:reduce){ *,*::before,*::after{animation-duration:0.01ms!important;animation-iteration-count:1!important; transition-duration:0.01ms!important;scroll-behavior:auto!important} } /* — PAGE TRANSITION — */ .page-transition{position:fixed;inset:0;z-index:999999;pointer-events:none} .page-transition .curtain{position:absolute;inset:0;background:var(–obsidian); transform:scaleY(0);transform-origin:bottom;will-change:transform} /* — LOADER — */ .page-loader{position:fixed;inset:0;z-index:99999;background:var(–void); display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px; transition:opacity .5s var(–ease-expo),visibility .5s} .page-loader.loaded{opacity:0;visibility:hidden;pointer-events:none} .loader-counter{font-family:var(–font-display);font-size:clamp(48px,12vw,80px); letter-spacing:6px;color:var(–white);line-height:1} .loader-line{width:min(200px,50vw);height:1px;background:var(–graphite);overflow:hidden;border-radius:1px} .loader-line-fill{height:100%;width:0;background:linear-gradient(90deg,var(–rose),var(–gold)); transition:width .1s linear;border-radius:1px} .loader-label{font-family:var(–font-editorial);font-size:11px;letter-spacing:5px; text-transform:uppercase;color:var(–mist);margin-top:4px} /* — CURSOR — */ .cursor-dot{position:fixed;width:6px;height:6px;background:var(–white);border-radius:50%; pointer-events:none;z-index:10002;mix-blend-mode:difference; transition:transform .15s var(–ease-expo),opacity .2s;will-change:transform;top:-3px;left:-3px} .cursor-ring{position:fixed;width:36px;height:36px;border:1px solid rgba(255,255,255,.25); border-radius:50%;pointer-events:none;z-index:10001;mix-blend-mode:difference; transition:width .3s var(–ease-expo),height .3s var(–ease-expo),border-color .3s,opacity .2s; will-change:transform;top:-18px;left:-18px;display:flex;align-items:center;justify-content:center} .cursor-text{font-family:var(–font-body);font-size:8px;letter-spacing:2px;text-transform:uppercase; color:var(–white);opacity:0;transition:opacity .2s;white-space:nowrap} body.cursor-hover .cursor-ring{width:64px;height:64px;top:-32px;left:-32px;border-color:var(–rose)} body.cursor-hover .cursor-dot{transform:scale(0)} body.cursor-text-active .cursor-text{opacity:1} body.cursor-text-active .cursor-ring{width:80px;height:80px;top:-40px;left:-40px; background:rgba(10,10,10,.7);backdrop-filter:blur(4px);border-color:var(–rose)} /* — NAV — */ .nav{position:fixed;top:0;left:0;right:0;z-index:10000; display:flex;align-items:center;justify-content:space-between; padding:0 clamp(20px,4vw,48px);height:var(–nav-h); transition:background .4s var(–ease-expo),backdrop-filter .4s,box-shadow .4s} .nav.scrolled{background:rgba(5,5,5,.8);backdrop-filter:blur(24px);-webkit-backdrop-filter:blur(24px); box-shadow:0 1px 0 rgba(255,255,255,.04)} .nav-logo{font-family:var(–font-display);font-size:18px;letter-spacing:8px; color:var(–white);text-decoration:none;transition:opacity .3s} .nav-logo:hover{opacity:.7} .nav-links{display:flex;gap:clamp(20px,3vw,40px);align-items:center} .nav-links a{font-family:var(–font-body);font-size:11px;letter-spacing:3px; text-transform:uppercase;color:var(–mist);text-decoration:none; position:relative;padding:4px 0;transition:color .3s var(–ease-expo)} .nav-links a::after{content:”;position:absolute;bottom:0;left:0;width:0;height:1px; background:var(–rose);transition:width .4s var(–ease-expo)} .nav-links a:hover{color:var(–white)} .nav-links a:hover::after{width:100%} .nav-links a.active{color:var(–rose)} .nav-links a.active::after{width:100%;background:var(–rose)} .nav-actions{display:flex;align-items:center;gap:16px} .nav-cart{position:relative;color:var(–mist);transition:color .3s;display:flex;align-items:center} .nav-cart:hover{color:var(–rose)} .nav-toggle{display:none;width:24px;height:16px;flex-direction:column;justify-content:space-between; background:none;border:none;cursor:pointer;padding:0;z-index:10001} .nav-toggle span{display:block;height:1px;background:var(–white); transition:transform .4s var(–ease-expo),opacity .3s} .nav-toggle.open span:nth-child(1){transform:translateY(7.5px) rotate(45deg)} .nav-toggle.open span:nth-child(2){opacity:0} .nav-toggle.open span:nth-child(3){transform:translateY(-7.5px) rotate(-45deg)} /* — MOBILE DRAWER — */ .nav-drawer{position:fixed;inset:0;z-index:9998;background:rgba(5,5,5,.97); backdrop-filter:blur(40px);-webkit-backdrop-filter:blur(40px); display:flex;flex-direction:column;align-items:center;justify-content:center;gap:0; opacity:0;visibility:hidden;transition:opacity .5s var(–ease-expo),visibility .5s} .nav-drawer.open{opacity:1;visibility:visible} .nav-drawer a{font-family:var(–font-display);font-size:clamp(32px,8vw,56px); letter-spacing:8px;color:var(–bone);text-transform:uppercase;text-decoration:none; padding:12px 0;opacity:0;transform:translateY(20px); transition:color .3s,opacity .5s var(–ease-expo),transform .5s var(–ease-expo)} .nav-drawer.open a{opacity:1;transform:translateY(0)} .nav-drawer a:nth-child(1){transition-delay:.05s} .nav-drawer a:nth-child(2){transition-delay:.1s} .nav-drawer a:nth-child(3){transition-delay:.15s} .nav-drawer a:nth-child(4){transition-delay:.2s} .nav-drawer a:nth-child(5){transition-delay:.25s} .nav-drawer a:hover{color:var(–rose)} .nav-drawer a.active{color:var(–rose)} .nav-drawer .drawer-footer{position:absolute;bottom:clamp(24px,5vh,48px); font-family:var(–font-editorial);font-size:11px;letter-spacing:4px; text-transform:uppercase;color:var(–ash)} /* — SCROLL PROGRESS — */ .scroll-progress{position:fixed;top:0;left:0;height:2px;width:0; background:linear-gradient(90deg,var(–rose),var(–gold));z-index:10001; will-change:width;transition:none} /* — FILM GRAIN — */ .grain{position:fixed;inset:0;z-index:9990;pointer-events:none;opacity:.03; background-image:url(“data:image/svg+xml,%3Csvg viewBox=’0 0 256 256′ xmlns=’http://www.w3.org/2000/svg’%3E%3Cfilter id=’n’%3E%3CfeTurbulence type=’fractalNoise’ baseFrequency=’.85′ numOctaves=’4′ stitchTiles=’stitch’/%3E%3C/filter%3E%3Crect width=’100%25′ height=’100%25′ filter=’url(%23n)’/%3E%3C/svg%3E”)} /* — SPOTLIGHT — */ .spotlight{position:fixed;inset:0;z-index:9989;pointer-events:none; opacity:0;transition:opacity .6s} body:not(.is-mobile) .spotlight{opacity:1} /* — FOOTER — */ .footer{border-top:1px solid var(–graphite);padding:clamp(48px,8vw,96px) clamp(20px,4vw,48px) clamp(24px,4vw,48px); margin-top:clamp(64px,10vw,120px)} .footer-grid{display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:clamp(24px,4vw,48px); max-width:var(–container);margin:0 auto} .footer-brand-name{font-family:var(–font-display);font-size:clamp(16px,2vw,20px); letter-spacing:6px;color:var(–white);margin-bottom:16px} .footer-brand-desc{font-family:var(–font-editorial);font-size:14px;line-height:1.7; color:var(–mist);font-style:italic;max-width:320px} .footer-col-title{font-family:var(–font-body);font-size:10px;letter-spacing:4px; text-transform:uppercase;color:var(–slate);margin-bottom:20px;font-weight:500} .footer-link{display:block;font-family:var(–font-body);font-size:13px;color:var(–mist); text-decoration:none;padding:6px 0;transition:color .3s,transform .3s var(–ease-expo)} .footer-link:hover{color:var(–rose);transform:translateX(4px)} .footer-bottom{display:flex;justify-content:space-between;align-items:center; max-width:var(–container);margin:clamp(32px,5vw,64px) auto 0; padding-top:clamp(20px,3vw,32px);border-top:1px solid var(–graphite)} .footer-copy{font-size:11px;color:var(–ash);letter-spacing:1px} .footer-badges{display:flex;gap:12px} .footer-badge{font-size:10px;color:var(–ash);letter-spacing:2px;text-transform:uppercase; padding:4px 10px;border:1px solid var(–graphite);border-radius:2px} /* — BACK TO TOP — */ .back-to-top{position:fixed;bottom:clamp(20px,3vw,32px);right:clamp(20px,3vw,32px); width:40px;height:40px;border-radius:50%;background:rgba(255,255,255,.04); border:1px solid var(–graphite);display:flex;align-items:center;justify-content:center; z-index:9995;opacity:0;visibility:hidden;transform:translateY(12px);cursor:pointer; transition:all .4s var(–ease-expo)} .back-to-top.visible{opacity:1;visibility:visible;transform:translateY(0)} .back-to-top:hover{background:var(–rose);border-color:var(–rose)} .back-to-top svg{width:16px;height:16px;stroke:var(–mist);stroke-width:1.5;fill:none; transition:stroke .3s} .back-to-top:hover svg{stroke:var(–white)} /* — MAGNETIC BUTTONS — */ .magnetic{transition:transform .3s var(–ease-expo)} .btn{display:inline-flex;align-items:center;justify-content:center;gap:8px; font-family:var(–font-display);font-size:13px;letter-spacing:4px;text-transform:uppercase; padding:16px 40px;border:none;cursor:pointer;text-decoration:none; transition:all .4s var(–ease-expo);position:relative;overflow:hidden} .btn::after{content:”;position:absolute;inset:0;background:linear-gradient(120deg, transparent 30%,rgba(255,255,255,.08) 50%,transparent 70%); transform:translateX(-100%);transition:transform .6s var(–ease-expo)} .btn:hover::after{transform:translateX(100%)} .btn-primary{background:var(–rose);color:var(–white);border-radius:2px} .btn-primary:hover{background:#c4828c;transform:translateY(-2px); box-shadow:0 8px 32px rgba(183,110,121,.25)} .btn-outline{background:transparent;color:var(–bone);border:1px solid var(–ash);border-radius:2px} .btn-outline:hover{border-color:var(–rose);color:var(–rose);transform:translateY(-2px)} /* — SCROLL REVEALS — */ [data-reveal]{opacity:0;transform:translateY(24px);transition:opacity .7s var(–ease-expo), transform .7s var(–ease-expo)} [data-reveal].revealed{opacity:1;transform:translateY(0)} [data-reveal=”left”]{transform:translateX(-24px)} [data-reveal=”left”].revealed{transform:translateX(0)} [data-reveal=”right”]{transform:translateX(24px)} [data-reveal=”right”].revealed{transform:translateX(0)} [data-reveal=”scale”]{transform:scale(.95);opacity:0} [data-reveal=”scale”].revealed{transform:scale(1)} /* — SECTION DIVIDER — */ .section-divider{width:48px;height:1px;background:linear-gradient(90deg,transparent,var(–ash),transparent); margin:0 auto} /* — SCROLLBAR — */ ::-webkit-scrollbar{width:5px;background:var(–void)} ::-webkit-scrollbar-thumb{background:var(–graphite);border-radius:3px} ::-webkit-scrollbar-thumb:hover{background:var(–ash)} /* — RESPONSIVE — */ @media(max-width:1024px){ .footer-grid{grid-template-columns:1fr 1fr} } @media(max-width:768px){ body{cursor:auto!important;-webkit-text-size-adjust:100%!important;text-size-adjust:100%!important} a,button{cursor:pointer!important} *{-webkit-tap-highlight-color:transparent} html,body{overflow-x:hidden!important;width:100%!important} .nav{padding:0 16px;height:56px} .nav-logo{font-size:15px;letter-spacing:6px} .nav-links{display:none} .nav-toggle{display:flex} .cursor-dot,.cursor-ring,.spotlight{display:none!important} .grain{opacity:.015} input,select,textarea{font-size:16px!important} .site-content,.entry-content{-webkit-overflow-scrolling:touch!important} .footer-grid{grid-template-columns:1fr 1fr;gap:24px} .footer-bottom{flex-direction:column;gap:16px;text-align:center} } @media(max-width:480px){ .nav-logo{font-size:13px;letter-spacing:4px} .footer-grid{grid-template-columns:1fr} .footer-brand-desc{max-width:none} } /* — REDUCED MOTION — */ @media(prefers-reduced-motion:reduce){ *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important; transition-duration:.01ms!important;scroll-behavior:auto!important} .grain,.spotlight,.cursor-dot,.cursor-ring,.page-transition{display:none!important} [data-reveal]{opacity:1!important;transform:none!important} } .woocommerce-page .btn,.woocommerce-page button:not(.nav-toggle):not(.qty-btn):not(.accordion-toggle) { font-family:var(–font-display)!important;letter-spacing:3px!important; } .btn::before {content:”;position:absolute;inset:0;transform:scaleX(0);transform-origin:left;transition:transform .5s var(–ease-expo);z-index:0} .btn span {position:relative;z-index:1} .btn:hover::before {transform:scaleX(1)} .btn-primary {background:var(–rose);color:var(–void)} .btn-primary::before {background:var(–white)} .btn-primary:hover {color:var(–void)} .btn-outline {border:1px solid rgba(255,255,255,.2);color:var(–bone)} .btn-outline::before {background:rgba(255,255,255,.08)} .btn-outline:hover {border-color:rgba(255,255,255,.5)} .cart-page {padding:clamp(120px,14vw,160px) clamp(24px,5vw,80px) clamp(60px,8vw,100px);max-width:1400px;margin:0 auto} .cart-header {margin-bottom:clamp(32px,4vw,48px)} .cart-header h1 {font-family:var(–font-display);font-size:clamp(36px,6vw,64px);letter-spacing:3px;color:var(–white);text-transform:uppercase;line-height:.95} .cart-header p {font-family:var(–font-editorial);font-size:14px;color:var(–mist);font-style:italic;margin-top:8px} .cart-layout {display:grid;grid-template-columns:1fr 380px;gap:clamp(32px,4vw,60px)} .cart-items {display:flex;flex-direction:column;gap:16px} .empty-cart {text-align:center;padding:clamp(60px,10vw,120px) 24px} .empty-cart svg {margin:0 auto 24px;color:var(–ash);opacity:.3} .empty-cart h2 {font-family:var(–font-display);font-size:clamp(24px,4vw,36px);letter-spacing:3px;color:var(–white);text-transform:uppercase;margin-bottom:12px} .empty-cart p {font-family:var(–font-editorial);font-size:15px;color:var(–mist);font-style:italic;margin-bottom:32px} .order-summary {position:sticky;top:120px;padding:clamp(24px,3vw,32px);background:rgba(255,255,255,.02);border:1px solid rgba(255,255,255,.04);align-self:start} .order-summary h3 {font-family:var(–font-display);font-size:18px;letter-spacing:4px;color:var(–white);text-transform:uppercase;margin-bottom:24px;padding-bottom:16px;border-bottom:1px solid rgba(255,255,255,.06)} .summary-row {display:flex;justify-content:space-between;margin-bottom:12px;font-size:14px} .summary-row span:first-child {color:var(–mist)} .summary-row.total {font-size:16px;margin-top:20px;padding-top:20px;border-top:1px solid rgba(255,255,255,.06)} .summary-row.total span:last-child {color:var(–rose);font-family:var(–font-display);letter-spacing:2px} .promo-code {margin:24px 0} .promo-code label {display:block;font-family:var(–font-display);font-size:10px;letter-spacing:4px;text-transform:uppercase;margin-bottom:10px;color:var(–mist)} .promo-input {display:flex;gap:0} .promo-input input {flex:1;padding:14px 16px;background:transparent;border:1px solid var(–graphite);color:var(–bone);font-family:var(–font-body);font-size:13px;outline:none;transition:border-color .4s} .promo-input input:focus {border-color:var(–rose)} .promo-input input::placeholder {color:var(–ash)} .promo-input button {padding:14px 20px;background:transparent;border:1px solid var(–graphite);border-left:0;color:var(–bone);font-family:var(–font-display);font-size:11px;letter-spacing:3px;text-transform:uppercase;transition:background .3s,color .3s,border-color .3s} .promo-input button:hover {background:var(–rose);color:var(–void);border-color:var(–rose)} .cart-btn {display:block;width:100%;padding:16px;font-family:var(–font-display);font-size:13px;letter-spacing:4px;text-transform:uppercase;text-align:center;transition:background .3s,color .3s,border-color .3s,transform .3s var(–ease-expo);margin-bottom:10px} .cart-btn-primary {background:var(–rose);color:var(–void)} .cart-btn-primary:hover {background:var(–white)} .cart-btn-outline {border:1px solid rgba(255,255,255,.12);color:var(–bone)} .cart-btn-outline:hover {border-color:var(–rose);color:var(–rose)} .summary-note {margin-top:16px;font-family:var(–font-editorial);font-size:13px;color:var(–ash);text-align:center;font-style:italic} @media(max-width:1024px){ .cart-layout {grid-template-columns:1fr} .order-summary {position:static} }
0
The Skyy Rose Collection

Shopping Cart

Your bag is empty

Your bag is empty

Explore our collections and find pieces that speak to you.

Order Summary

Subtotal$0
ShippingCalculated at checkout
Total$0
Proceed to Checkout Continue Shopping

Free shipping on orders over $150

https://cdnjs.cloudflare.com/ajax/libs/gsap/3.12.5/gsap.min.js https://cdnjs.cloudflare.com/ajax/libs/gsap/3.12.5/ScrollTrigger.min.js https://unpkg.com/lenis@1.1.18/dist/lenis.min.js document.addEventListener(‘DOMContentLoaded’,function(){ “use strict”; /* ── Loader ── */ var loader=document.getElementById(‘pageLoader’), counter=document.getElementById(‘loaderCounter’), fill=document.getElementById(‘loaderFill’), progress=0,loadDone=false; function finishLoad(){ if(loadDone)return;loadDone=true; if(counter)counter.textContent=’100′; if(fill)fill.style.width=’100%’; setTimeout(function(){if(loader)loader.classList.add(‘loaded’);initPage()},300); } if(loader){ var li=setInterval(function(){ progress+=Math.random()*18+7; if(progress>=100){progress=100;clearInterval(li);finishLoad()} if(counter)counter.textContent=Math.floor(progress); if(fill)fill.style.width=progress+’%’; },40); setTimeout(finishLoad,2500); }else{initPage()} /* ── Mobile detect ── */ var isMobile=’ontouchstart’ in window||navigator.maxTouchPoints>1; if(isMobile)document.body.classList.add(‘is-mobile’); /* ── Cursor ── */ if(!isMobile){ var dot=document.getElementById(‘cursorDot’),ring=document.getElementById(‘cursorRing’), ctxt=document.getElementById(‘cursorText’),mx=0,my=0,cx=0,cy=0,rx=0,ry=0; document.addEventListener(‘mousemove’,function(e){mx=e.clientX;my=e.clientY}, {passive:true}); (function cursorLoop(){ cx+=(mx-cx)*.2;cy+=(my-cy)*.2;rx+=(mx-rx)*.08;ry+=(my-ry)*.08; if(dot)dot.style.transform=’translate3d(‘+cx+’px,’+cy+’px,0)’; if(ring)ring.style.transform=’translate3d(‘+rx+’px,’+ry+’px,0)’; requestAnimationFrame(cursorLoop); })(); document.querySelectorAll(‘[data-cursor]’).forEach(function(el){ el.addEventListener(‘mouseenter’,function(){ document.body.classList.add(‘cursor-hover’); var t=el.getAttribute(‘data-cursor’); if(t&&t!==’link’){document.body.classList.add(‘cursor-text-active’);if(ctxt)ctxt.textContent=t} }); el.addEventListener(‘mouseleave’,function(){ document.body.classList.remove(‘cursor-hover’,’cursor-text-active’); if(ctxt)ctxt.textContent=”; }); }); } /* ── Spotlight ── */ var spot=document.getElementById(‘spotlight’); if(spot&&!isMobile){ document.addEventListener(‘mousemove’,function(e){ spot.style.background=’radial-gradient(500px circle at ‘+e.clientX+’px ‘+e.clientY+’px,’+ ‘rgba(183,110,121,.04),transparent 70%)’; },{passive:true}); } /* ── Nav scroll ── */ var nav=document.getElementById(‘mainNav’),lastY=0; window.addEventListener(‘scroll’,function(){ var y=window.scrollY; if(nav){if(y>60)nav.classList.add(‘scrolled’);else nav.classList.remove(‘scrolled’)} /* Scroll progress */ var sp=document.getElementById(‘scrollProgress’); if(sp){var h=document.documentElement.scrollHeight-window.innerHeight; sp.style.width=h>0?(y/h*100)+’%’:’0′} /* Back to top */ var btt=document.getElementById(‘backToTop’); if(btt){if(y>400)btt.classList.add(‘visible’);else btt.classList.remove(‘visible’)} lastY=y; },{passive:true}); /* ── Back to top ── */ var btt=document.getElementById(‘backToTop’); if(btt)btt.addEventListener(‘click’,function(){window.scrollTo({top:0,behavior:’smooth’})}); /* ── Mobile drawer ── */ var nt=document.getElementById(‘navToggle’),nd=document.getElementById(‘navDrawer’); if(nt&&nd){ nt.addEventListener(‘click’,function(){ nt.classList.toggle(‘open’);nd.classList.toggle(‘open’);nt.setAttribute(‘aria-expanded’,nd.classList.contains(‘open’));nd.setAttribute(‘aria-hidden’,!nd.classList.contains(‘open’)); document.body.style.overflow=nd.classList.contains(‘open’)?’hidden’:”; }); nd.querySelectorAll(‘a’).forEach(function(a){ a.addEventListener(‘click’,function(){ nt.classList.remove(‘open’);nd.classList.remove(‘open’); document.body.style.overflow=”; }); }); } /* ── Magnetic buttons ── */ if(!isMobile){ document.querySelectorAll(‘.magnetic,.btn’).forEach(function(el){ el.addEventListener(‘mousemove’,function(e){ var r=el.getBoundingClientRect(), dx=e.clientX-r.left-r.width/2, dy=e.clientY-r.top-r.height/2; el.style.transform=’translate(‘+dx*.25+’px,’+dy*.25+’px)’; }); el.addEventListener(‘mouseleave’,function(){el.style.transform=”}); }); } /* ── Page transitions ── */ document.querySelectorAll(‘a[href^=”/”]’).forEach(function(a){ if(a.getAttribute(‘target’)===’_blank’)return; a.addEventListener(‘click’,function(e){ var href=a.getAttribute(‘href’); if(!href||href===’#’||href===window.location.pathname+window.location.search)return; e.preventDefault(); var curtain=document.querySelector(‘.page-transition .curtain’); if(curtain){ curtain.style.transition=’transform .4s ‘+getComputedStyle(document.documentElement).getPropertyValue(‘–ease-expo’); curtain.style.transformOrigin=’bottom’; curtain.style.transform=’scaleY(1)’; setTimeout(function(){window.location.href=href},420); }else{window.location.href=href} }); }); /* ── Init page (called after loader) ── */ function initPage(){ /* Lenis */ if(typeof Lenis!==’undefined’){ var lenis=new Lenis({duration:1.0,easing:function(t){return Math.min(1,1.001-Math.pow(2,-10*t))}, smoothWheel:true,touchMultiplier:1.5}); function raf(time){lenis.raf(time);requestAnimationFrame(raf)} requestAnimationFrame(raf); if(typeof gsap!==’undefined’&&typeof ScrollTrigger!==’undefined’){ gsap.registerPlugin(ScrollTrigger); lenis.on(‘scroll’,ScrollTrigger.update); gsap.ticker.add(function(time){lenis.raf(time*1000)}); gsap.ticker.lagSmoothing(0); } } /* Scroll reveals (IntersectionObserver) */ if(‘IntersectionObserver’ in window){ var ro=new IntersectionObserver(function(entries){ entries.forEach(function(e){ if(e.isIntersecting){e.target.classList.add(‘revealed’);ro.unobserve(e.target)} }); },{threshold:0.1,rootMargin:’0px 0px -40px 0px’}); document.querySelectorAll(‘[data-reveal]’).forEach(function(el){ro.observe(el)}); }else{ document.querySelectorAll(‘[data-reveal]’).forEach(function(el){el.classList.add(‘revealed’)}); } /* Emit custom event for page-specific JS */ window.dispatchEvent(new CustomEvent(‘v3ready’)); } }); window.addEventListener(‘v3ready’, function() { if(typeof gsap!==’undefined’){ gsap.registerPlugin(ScrollTrigger); gsap.from(‘.cart-header’,{y:30,opacity:0,duration:0.7,ease:’power2.out’,delay:0.3}); gsap.from(‘.cart-items’,{y:20,opacity:0,duration:0.6,ease:’power2.out’,delay:0.5}); gsap.from(‘.order-summary’,{y:20,opacity:0,duration:0.6,ease:’power2.out’,delay:0.6}); } });