/* =========================================================
   VOID — site sections (everything below the hero)
   Namespaced class prefixes (feat-, prod-, rev-, insta-,
   perk-, faq-, foot-) so nothing collides with hero styles.
   ========================================================= */

:root{
  --lux-black:#0d0d0d;
  --lux-ink:#1a1a1a;
  --lux-white:#ffffff;
  --lux-off:#f7f5f1;
  --lux-gray:#e7e4de;
  --lux-gray-dim:#8a8680;
  --lux-gold:#b6903f;
  --lux-gold-soft:#e7d9b8;
  --lux-radius:16px;
  --lux-shadow:0 30px 60px -30px rgba(13,13,13,.25);
}

/* nav re-skin once scrolled past the (dark) hero, so it stays
   legible over the light sections below — hero's own look is untouched */
.nav.nav-scrolled{
  background:rgba(247,245,241,.92) !important;
  backdrop-filter:blur(10px);
  box-shadow:0 1px 0 rgba(13,13,13,.07);
}
.nav.nav-scrolled .logo, .nav.nav-scrolled a, .nav.nav-scrolled .nav-account{ color:var(--lux-ink) !important; }
.nav.nav-scrolled a:hover{ color:var(--lux-gold) !important; }
.nav.nav-scrolled .cta{ border-color:var(--lux-ink) !important; color:var(--lux-ink) !important; }
.nav.nav-scrolled .cta:hover{ border-color:var(--lux-gold) !important; background:rgba(182,144,63,.1) !important; }
.nav.nav-scrolled .hamburger span{ background:var(--lux-ink) !important; }

/* Smooth hide/show transition for nav when scrolling */
.nav{ transition:transform .28s ease, background .2s ease; }
.nav.nav-hidden{ transform:translateY(-110%); }

.site-main{
  background:var(--lux-off);
  color:var(--lux-ink);
  font-family:'Inter',-apple-system,'Segoe UI',sans-serif;
  overflow-x:hidden;
}
.site-main *{ box-sizing:border-box; }

.lux-heading{
  font-family:'Playfair Display', Georgia, serif;
  font-weight:600;
  letter-spacing:-.01em;
}
.section-head{
  display:flex; align-items:flex-end; justify-content:space-between;
  gap:24px; margin-bottom:44px; flex-wrap:wrap;
}
.section-kicker{
  display:inline-flex; align-items:center; gap:10px;
  font-size:11px; letter-spacing:.24em; text-transform:uppercase;
  color:var(--lux-gold); font-weight:700; margin-bottom:10px;
}
.section-kicker::before{ content:''; width:22px; height:1px; background:var(--lux-gold); }
.section-title{ font-size:clamp(26px,3.4vw,44px); line-height:1.05; }
.section-link{
  font-size:13px; font-weight:600; letter-spacing:.03em; text-decoration:none;
  color:var(--lux-ink); border-bottom:1px solid var(--lux-ink);
  padding-bottom:3px; transition:color .25s, border-color .25s;
  white-space:nowrap;
}
.section-link:hover{ color:var(--lux-gold); border-color:var(--lux-gold); }
.wrap{ max-width:1360px; margin:0 auto; padding:0 clamp(20px,5vw,64px); }
.wrap-wide{ max-width:1680px; }
.pad{ padding-block:clamp(64px,9vw,120px); }

/* reveal-on-scroll (JS toggles .in-view) */
.reveal{ opacity:0; transform:translateY(34px); transition:opacity .8s cubic-bezier(.16,1,.3,1), transform .8s cubic-bezier(.16,1,.3,1); }
.reveal.in-view{ opacity:1; transform:translateY(0); }
.reveal-stagger > *{ opacity:0; transform:translateY(34px); transition:opacity .7s cubic-bezier(.16,1,.3,1), transform .7s cubic-bezier(.16,1,.3,1); }
.reveal-stagger.in-view > *{ opacity:1; transform:translateY(0); }
.reveal-stagger.in-view > *:nth-child(1){ transition-delay:.02s; }
.reveal-stagger.in-view > *:nth-child(2){ transition-delay:.1s; }
.reveal-stagger.in-view > *:nth-child(3){ transition-delay:.18s; }
.reveal-stagger.in-view > *:nth-child(4){ transition-delay:.26s; }
.reveal-stagger.in-view > *:nth-child(5){ transition-delay:.34s; }
.reveal-stagger.in-view > *:nth-child(6){ transition-delay:.42s; }

/* ---------------- FEATURED COLLECTIONS ---------------- */
.feat-grid{
  display:grid; gap:20px;
  grid-template-columns:repeat(4,1fr);
  grid-auto-rows:280px;
}
.feat-card{
  position:relative; grid-column:span 1; grid-row:span 1;
  border-radius:var(--lux-radius); overflow:hidden; cursor:pointer;
  isolation:isolate;
}
.feat-card:nth-child(1){ grid-column:span 2; grid-row:span 2; }
.feat-card:nth-child(4){ grid-column:span 2; }
.feat-card:nth-child(5){ grid-column:span 2; }
.feat-card img{
  position:absolute; inset:0; width:100%; height:100%; object-fit:cover;
  transform:scale(1.06); transition:transform .9s cubic-bezier(.16,1,.3,1);
}
.feat-card:hover img{ transform:scale(1.16) rotate(.3deg); }
.feat-card::after{
  content:''; position:absolute; inset:0;
  background:linear-gradient(180deg, rgba(13,13,13,0) 40%, rgba(13,13,13,.78) 100%);
  transition:opacity .4s ease;
}
.feat-card:hover::after{ opacity:.9; }
.feat-label{
  position:absolute; left:22px; bottom:20px; z-index:1; color:#fff;
}
.feat-label .sm{ display:block; font-size:11px; letter-spacing:.2em; text-transform:uppercase; opacity:.75; margin-bottom:6px; }
.feat-label .lg{ font-size:clamp(18px,2vw,26px); font-family:'Playfair Display',serif; }
.feat-arrow{
  position:absolute; right:18px; top:18px; z-index:1;
  width:38px; height:38px; border-radius:50%;
  background:rgba(255,255,255,.14); backdrop-filter:blur(6px);
  display:flex; align-items:center; justify-content:center; color:#fff;
  transform:translate(6px,-6px) rotate(-40deg); opacity:0;
  transition:transform .4s cubic-bezier(.16,1,.3,1), opacity .4s;
}
.feat-card:hover .feat-arrow{ transform:translate(0,0) rotate(0deg); opacity:1; }

/* ---------------- PRODUCT GRID ---------------- */
.prod-tabs{ display:flex; gap:10px; }
.prod-tab{
  font-size:12px; letter-spacing:.08em; text-transform:uppercase; font-weight:700;
  padding:9px 18px; border-radius:100px; border:1px solid var(--lux-gray);
  background:transparent; color:var(--lux-gray-dim); cursor:pointer;
  transition:all .25s;
}
.prod-tab.active, .prod-tab:hover{ background:var(--lux-ink); border-color:var(--lux-ink); color:#fff; }

.prod-grid{
  display:grid; grid-template-columns:repeat(4,1fr); gap:28px 22px;
  margin-top:40px;
}
.prod-card{
  position:relative; display:grid; grid-template-rows:auto 1fr;
  transition:transform .45s cubic-bezier(.16,1,.3,1);
}
.prod-card:hover{ transform:translateY(-10px); }
.prod-media{ position:relative; width:100%; grid-row:1; overflow:hidden; }
.prod-media-frame{
  position:relative; border-radius:14px; overflow:hidden;
  aspect-ratio:3/4; background:#fff;
  width:100%;
  box-shadow:0 1px 2px rgba(13,13,13,.06), 0 18px 36px -20px rgba(13,13,13,.28);
  transition:box-shadow .45s cubic-bezier(.16,1,.3,1);
}
.prod-media-frame::after{
  content:''; position:absolute; inset:0; z-index:1; pointer-events:none;
  box-shadow:inset 0 0 0 1px rgba(13,13,13,.06);
  border-radius:inherit;
  transition:box-shadow .45s ease;
}
.prod-card:hover .prod-media-frame{
  box-shadow:0 1px 2px rgba(13,13,13,.06), 0 34px 60px -22px rgba(13,13,13,.4), 0 0 0 1px rgba(182,144,63,.35);
}
.prod-card:hover .prod-media-frame::after{ box-shadow:inset 0 0 0 1px rgba(182,144,63,.5); }
.prod-media-frame img{
  position:absolute; inset:0; width:100%; height:100%; object-fit:cover;
  transition:opacity .5s ease, transform .7s cubic-bezier(.16,1,.3,1);
}
/* product cutout shots (img-a) sit on a plain white background and vary in how tightly
   they're cropped to the garment — contain guarantees the whole item is always visible
   instead of cover cutting off hoods/sleeves on the tighter-cropped source photos. */
.prod-media-frame img.img-a{ object-fit:contain; }
.prod-media-frame img.img-b{ opacity:0; }
.prod-card:hover .prod-media-frame img{ transform:scale(1.08); }

.prod-badge{
  position:absolute; top:12px; left:12px; z-index:2;
  font-size:10px; letter-spacing:.1em; text-transform:uppercase; font-weight:700;
  background:var(--lux-ink); color:#fff; padding:6px 10px; border-radius:100px;
  box-shadow:0 8px 18px -6px rgba(13,13,13,.5);
}
.prod-badge--gold{ background:linear-gradient(135deg, var(--lux-gold), #8a6a26); color:#0d0d0d; box-shadow:0 8px 20px -6px rgba(182,144,63,.65); }
.prod-badge--red{ background:#c23a2e; box-shadow:0 8px 20px -6px rgba(194,58,46,.6); }
.prod-wish{
  position:absolute; top:10px; right:10px; z-index:2;
  width:36px; height:36px; border-radius:50%; border:none;
  background:rgba(255,255,255,.85); backdrop-filter:blur(4px);
  display:flex; align-items:center; justify-content:center; cursor:pointer;
  transition:transform .3s, background .3s;
}
.prod-wish svg{ width:16px; height:16px; stroke:var(--lux-ink); fill:none; transition:fill .25s, stroke .25s; }
.prod-wish:hover{ transform:scale(1.1); }
.prod-wish.active svg{ fill:var(--lux-gold); stroke:var(--lux-gold); }

.prod-actions{
  position:absolute; left:10px; right:10px; bottom:-52px; z-index:2;
  display:flex; gap:8px;
  transition:bottom .35s cubic-bezier(.16,1,.3,1);
}
.prod-card:hover .prod-actions{ bottom:10px; }
.prod-actions button{
  flex:1; border:none; border-radius:10px; padding:11px 8px;
  font-size:11.5px; font-weight:700; letter-spacing:.04em; text-transform:uppercase;
  cursor:pointer; transition:background .25s, color .25s, transform .2s;
}
.prod-add{ background:var(--lux-ink); color:#fff; }
.prod-add:hover{ background:var(--lux-gold); }
.prod-quick{ background:#fff; color:var(--lux-ink); }
.prod-quick:hover{ background:var(--lux-gray); }

.prod-info{ padding-top:16px; grid-row:2; }
.prod-cat{ font-size:11px; letter-spacing:.12em; text-transform:uppercase; color:var(--lux-gray-dim); margin-bottom:4px; }
.prod-name{
  font-size:15.5px; font-weight:600; margin-bottom:6px;
  transition:color .3s ease;
}
.prod-card:hover .prod-name{ color:var(--lux-gold); }
.prod-rating{ display:flex; align-items:center; gap:5px; font-size:12px; color:var(--lux-gray-dim); margin-bottom:8px; }
.prod-rating .stars{ color:var(--lux-gold); letter-spacing:1px; }
.prod-row{ display:flex; align-items:center; justify-content:space-between; }
.prod-price{ font-size:16px; font-weight:800; }
.prod-price .was{ font-size:12px; color:var(--lux-gray-dim); text-decoration:line-through; font-weight:400; margin-right:6px; }
.prod-price.prod-price--split{ display:flex; flex-direction:column; gap:2px; }
.prod-price--split .price-line{ font-size:14px; line-height:1.3; }
.prod-price--split .price-line .label{ font-size:10.5px; font-weight:500; text-transform:uppercase; letter-spacing:.06em; color:var(--lux-gray-dim); margin-right:5px; }
.prod-swatches{ display:flex; gap:6px; }
.prod-swatches span{
  width:14px; height:14px; border-radius:50%; border:1px solid rgba(0,0,0,.12);
  display:inline-block; cursor:pointer;
}
.prod-swatches span.selected{ outline:2px solid var(--lux-ink); outline-offset:2px; }

.prod-more{ display:flex; justify-content:center; margin-top:52px; }
.lux-btn-outline{
  font-size:12.5px; letter-spacing:.1em; text-transform:uppercase; font-weight:700;
  padding:15px 38px; border-radius:100px; border:1px solid var(--lux-ink);
  background:transparent; color:var(--lux-ink); cursor:pointer;
  transition:background .3s, color .3s;
}
.lux-btn-outline:hover{ background:var(--lux-ink); color:#fff; }

/* ---------------- REVIEWS ---------------- */
.rev-section{ background:#ffffff; color:var(--lux-ink); }
.rev-header{ text-align:center; }
.rev-title{
  font-family:'Playfair Display', Georgia, serif; font-weight:600;
  font-size:clamp(24px,3vw,36px); letter-spacing:.01em; margin-bottom:16px;
}
.rev-summary{ display:flex; align-items:center; justify-content:center; gap:10px; flex-wrap:wrap; }
.rev-summary-stars{ color:var(--red); letter-spacing:2px; font-size:16px; }
.rev-summary-count{ font-size:13px; color:var(--lux-gray-dim); font-weight:500; }

.rev-track-wrap{ margin-top:52px; }
.rev-track{
  display:flex; gap:28px; align-items:flex-start;
  overflow-x:auto; scroll-snap-type:x mandatory; scroll-behavior:smooth;
  -ms-overflow-style:none; scrollbar-width:none;
}
.rev-track::-webkit-scrollbar{ display:none; }
.rev-card{
  text-align:center; padding:0 6px; scroll-snap-align:start;
  flex:0 0 calc(20% - 22.4px);
}
.rev-stars{ color:var(--red); letter-spacing:2px; font-size:14px; margin-bottom:10px; }
.rev-headline{ font-size:14.5px; font-weight:700; margin-bottom:8px; line-height:1.35; }
.rev-quote{
  font-size:13.5px; line-height:1.6; color:var(--lux-gray-dim); margin-bottom:18px;
  display:-webkit-box; -webkit-line-clamp:4; -webkit-box-orient:vertical; overflow:hidden;
}
.rev-person{ font-size:12.5px; color:var(--lux-gray-dim); margin-bottom:14px; }
.rev-thumb{
  display:none; /* hide product thumbnails in testimonials */
}
.rev-thumb img{ width:100%; height:100%; object-fit:cover; }

.rev-nav{ display:flex; align-items:center; justify-content:center; gap:18px; margin-top:36px; }
.rev-arrow{
  width:32px; height:32px; border-radius:50%; border:1px solid var(--lux-gray);
  background:none; display:flex; align-items:center; justify-content:center;
  color:var(--lux-gray-dim); cursor:pointer; transition:border-color .25s, color .25s;
}
.rev-arrow svg{ width:16px; height:16px; }
.rev-arrow:hover{ border-color:var(--lux-ink); color:var(--lux-ink); }
.rev-arrow:disabled{ opacity:.35; cursor:default; }
.rev-arrow:disabled:hover{ border-color:var(--lux-gray); color:var(--lux-gray-dim); }

@media (max-width:1100px){
  .rev-card{ flex-basis:calc(33.333% - 18.7px); }
}
@media (max-width:760px){
  .rev-card{ flex-basis:calc(50% - 14px); }
}
@media (max-width:480px){
  .rev-card{ flex-basis:82%; }
}

/* ---------------- INSTAGRAM GALLERY ---------------- */
.insta-grid{ display:grid; grid-template-columns:repeat(6,1fr); gap:24px; margin-top:90px; }
.insta-item{
  position:relative; aspect-ratio:1/1; border-radius:12px; overflow:hidden; cursor:pointer;
  width:100%;
}
.insta-item img{ width:100%; height:100%; object-fit:cover; transition:transform .6s cubic-bezier(.16,1,.3,1); filter:contrast(1.08) saturate(1.08); }
.insta-item:hover img{ transform:scale(1.1); }
.insta-item::after{
  content:'♥ View on Instagram'; position:absolute; inset:0;
  background:rgba(13,13,13,.55); color:#fff; font-size:12px; letter-spacing:.06em;
  display:flex; align-items:center; justify-content:center; text-align:center;
  opacity:0; transition:opacity .35s;
}
.insta-item:hover::after{ opacity:1; }

/* ---------------- STORE BENEFITS ---------------- */
.perk-grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:28px; margin-top:8px; }
.perk-card{ text-align:center; padding:8px; }
.perk-icon{
  width:56px; height:56px; margin:0 auto 18px; border-radius:50%;
  background:var(--lux-white); border:1px solid var(--lux-gray);
  display:flex; align-items:center; justify-content:center;
  transition:transform .4s cubic-bezier(.16,1,.3,1), border-color .4s, box-shadow .4s;
}
.perk-card:hover .perk-icon{ transform:translateY(-6px) rotate(-6deg); border-color:var(--lux-gold); box-shadow:var(--lux-shadow); }
.perk-icon svg{ width:24px; height:24px; stroke:var(--lux-ink); }
.perk-title{ font-size:14.5px; font-weight:700; margin-bottom:6px; }
.perk-text{ font-size:13px; color:var(--lux-gray-dim); line-height:1.5; }

/* Perks section - white background (Instagram gallery now matches the Products section's off-white) */
.site-main section:has(.perk-grid){ background:#ffffff; }

/* ---------------- FAQ ---------------- */
.faq-list{ max-width:780px; margin:0 auto; }
.faq-item{ border-bottom:1px solid var(--lux-gray); }
.faq-q{
  width:100%; text-align:left; background:none; border:none; cursor:pointer;
  display:flex; align-items:center; justify-content:space-between; gap:20px;
  padding:24px 4px; font-size:16px; font-weight:600; color:var(--lux-ink);
}
.faq-q .plus{
  flex:none; width:26px; height:26px; border-radius:50%; border:1px solid var(--lux-gray-dim);
  position:relative; transition:transform .35s, border-color .35s;
}
.faq-q .plus::before, .faq-q .plus::after{
  content:''; position:absolute; background:var(--lux-ink); transition:transform .35s, opacity .35s;
}
.faq-q .plus::before{ left:7px; right:7px; top:50%; height:1px; transform:translateY(-50%); }
.faq-q .plus::after{ top:7px; bottom:7px; left:50%; width:1px; transform:translateX(-50%); }
.faq-item.open .plus{ transform:rotate(90deg); border-color:var(--lux-gold); }
.faq-item.open .plus::after{ opacity:0; }
.faq-a{ max-height:0; overflow:hidden; transition:max-height .4s cubic-bezier(.16,1,.3,1); }
.faq-a p{ padding:0 30px 24px 4px; font-size:14.5px; line-height:1.7; color:var(--lux-gray-dim); }

/* ---------------- PAYMENT METHODS ---------------- */
.pay-section{ background:#ffffff; padding:clamp(40px,6vw,64px) 0; }
.pay-methods{
  display:flex; align-items:center; justify-content:center; gap:clamp(20px,4vw,40px);
  flex-wrap:wrap;
}
.pay-label{ color:rgba(13,13,13,.6); font-size:13px; letter-spacing:.08em; text-transform:uppercase; font-weight:600; }
.pay-logos{
  display:flex; align-items:center; gap:clamp(20px,3vw,32px); flex-wrap:wrap;
}
.pay-logo{
  height:80px; display:flex; align-items:center; justify-content:center;
}
.pay-logo img{ max-height:100%; max-width:220px; opacity:.8; transition:opacity .3s; }
.pay-logo:hover img{ opacity:1; }

/* ---------------- FOOTER ---------------- */
.foot{ background:var(--lux-black); color:rgba(255,255,255,.72); padding-top:clamp(56px,7vw,88px); }
.foot-top{ display:grid; grid-template-columns:1.4fr repeat(3,1fr); gap:40px; padding-bottom:56px; border-bottom:1px solid rgba(255,255,255,.1); }
.foot-brand{ font-family:'Archivo Black',sans-serif; font-size:22px; color:#fff; margin-bottom:14px; }
.foot-tag{ font-size:13.5px; line-height:1.6; max-width:280px; color:rgba(255,255,255,.5); }
.foot-col h4{ font-size:12px; letter-spacing:.14em; text-transform:uppercase; color:rgba(255,255,255,.9); margin-bottom:18px; }
.foot-col ul{ list-style:none; display:flex; flex-direction:column; gap:11px; }
.foot-col a{ color:rgba(255,255,255,.55); text-decoration:none; font-size:13.5px; transition:color .25s; }
.foot-col a:hover{ color:var(--lux-gold-soft); }
.foot-bottom{ display:flex; align-items:center; justify-content:space-between; padding:26px 0; font-size:12.5px; color:rgba(255,255,255,.4); flex-wrap:wrap; gap:12px; }
.foot-social{ display:flex; gap:12px; }
.foot-social a{
  width:34px; height:34px; border-radius:50%; border:1px solid rgba(255,255,255,.18);
  display:flex; align-items:center; justify-content:center; color:#fff; text-decoration:none;
  transition:background .25s, border-color .25s;
}
.foot-social a:hover{ background:var(--lux-gold); border-color:var(--lux-gold); }
.foot-social svg{ width:15px; height:15px; }
.foot-credit{
  background:linear-gradient(90deg, var(--lux-gold), #f2d585, var(--lux-gold-soft));
  -webkit-background-clip:text; background-clip:text; color:transparent;
  font-weight:700;
}

/* ---------------- RESPONSIVE ---------------- */
@media (max-width:1100px){
  .feat-grid{ grid-template-columns:repeat(2,1fr); grid-auto-rows:240px; }
  .feat-card:nth-child(1){ grid-column:span 2; grid-row:span 1; }
  .feat-card:nth-child(4), .feat-card:nth-child(5){ grid-column:span 1; }
  .prod-grid{ grid-template-columns:repeat(2,1fr); }
  .rev-track{ grid-template-columns:1fr; }
  .insta-grid{ grid-template-columns:repeat(3,1fr); }
  .perk-grid{ grid-template-columns:repeat(2,1fr); gap:36px 20px; }
  .foot-top{ grid-template-columns:1fr 1fr; }
}
@media (max-width:640px){
  .prod-grid{ grid-template-columns:1fr 1fr; gap:24px 12px; }
  .section-head{ align-items:flex-start; flex-direction:column; }
  .foot-top{ grid-template-columns:1fr; }
  .prod-tabs{ flex-wrap:wrap; }
  .insta-grid{ gap:14px; margin-top:50px; }
  .perk-grid{ gap:28px 16px; }
  .cart-fab{ width:46px; height:46px; bottom:16px; right:16px; }
  .cart-fab svg{ width:18px; height:18px; }
}

/* touch devices have no :hover to reveal add-to-cart / quick-view, so instead of
   overlaying them on the image (which would permanently cover the product photo)
   they sit in normal flow below it. */
@media (hover:none){
  .prod-actions{
    position:static; bottom:auto; margin-top:8px;
  }
}

/* ---------------- TOASTS ---------------- */
body.no-scroll{ overflow:hidden; }
.toast-host{
  position:fixed; bottom:26px; left:50%; transform:translateX(-50%);
  z-index:2000; display:flex; flex-direction:column; gap:8px; align-items:center;
  pointer-events:none;
}
.toast{
  background:var(--lux-ink); color:#fff; font-size:13.5px; font-weight:600;
  padding:13px 22px; border-radius:100px; box-shadow:0 20px 40px -12px rgba(0,0,0,.4);
  opacity:0; transform:translateY(14px) scale(.96);
  transition:opacity .35s cubic-bezier(.16,1,.3,1), transform .35s cubic-bezier(.16,1,.3,1);
}
.toast.show{ opacity:1; transform:translateY(0) scale(1); }

/* ---------------- FLOATING CART BUTTON ---------------- */
.cart-fab{
  position:fixed; bottom:28px; right:28px; z-index:1500;
  width:56px; height:56px; border-radius:50%; border:none; cursor:pointer;
  background:var(--lux-ink); color:#fff;
  display:flex; align-items:center; justify-content:center;
  box-shadow:0 18px 36px -14px rgba(0,0,0,.5);
  transition:transform .3s cubic-bezier(.16,1,.3,1), background .3s;
}
.cart-fab:hover{ background:var(--lux-gold); }
.cart-fab svg{ width:22px; height:22px; }
.cart-fab-count{
  position:absolute; top:-2px; right:-2px; min-width:20px; height:20px; padding:0 4px;
  border-radius:50%; background:var(--lux-gold); color:#0d0d0d;
  font-size:11px; font-weight:800; display:flex; align-items:center; justify-content:center;
}
.cart-fab.bump{ animation:cartBump .4s ease; }
@keyframes cartBump{ 0%,100%{ transform:scale(1); } 40%{ transform:scale(1.16); } }

/* ---------------- QUICK VIEW MODAL ---------------- */
.qv-modal{
  position:fixed; inset:0; z-index:1900;
  background:rgba(13,13,13,.6); backdrop-filter:blur(4px);
  display:flex; align-items:center; justify-content:center; padding:20px;
  opacity:0; pointer-events:none; transition:opacity .3s ease;
}
.qv-modal.open{ opacity:1; pointer-events:auto; }
.qv-panel{
  background:#fff; border-radius:20px; overflow:hidden; max-width:820px; width:100%;
  display:grid; grid-template-columns:1fr 1fr; max-height:86vh;
  transform:translateY(20px) scale(.97); transition:transform .35s cubic-bezier(.16,1,.3,1);
}
.qv-modal.open .qv-panel{ transform:translateY(0) scale(1); }
.qv-media{ background:var(--lux-gray); position:relative; }
.qv-media img{ width:100%; height:100%; object-fit:contain; }
.qv-body{ padding:36px 32px; display:flex; flex-direction:column; gap:10px; }
.qv-body h3{ font-size:22px; font-family:'Playfair Display',serif; }
.qv-body .prod-price{ font-size:18px; margin:4px 0 6px; }
.qv-desc{ font-size:13.5px; line-height:1.7; color:var(--lux-gray-dim); margin-bottom:10px; }
.qv-add{ margin-top:auto; padding:14px; border-radius:10px; }
.qv-close{
  position:absolute; top:16px; right:16px; z-index:2;
  width:34px; height:34px; border-radius:50%; border:none; background:rgba(255,255,255,.9);
  font-size:20px; line-height:1; cursor:pointer; color:var(--lux-ink);
}
@media (max-width:640px){
  .qv-panel{ grid-template-columns:1fr; overflow-y:auto; }
  .qv-media{ aspect-ratio:4/3; }
}

/* ---------------- ACCOUNT DRAWER ---------------- */
.acct-overlay{
  position:fixed; inset:0; z-index:1950;
  background:rgba(13,13,13,.5); backdrop-filter:blur(2px);
  opacity:0; pointer-events:none; transition:opacity .3s ease;
}
.acct-overlay.open{ opacity:1; pointer-events:auto; }
.acct-panel{
  position:absolute; top:0; right:0; height:100%; width:min(420px,92vw);
  background:var(--lux-off); box-shadow:-20px 0 50px -20px rgba(0,0,0,.4);
  display:flex; flex-direction:column;
  transform:translateX(100%); transition:transform .4s cubic-bezier(.16,1,.3,1);
  overflow-y:auto;
}
.acct-overlay.open .acct-panel{ transform:translateX(0); }
.acct-head{
  display:flex; align-items:center; justify-content:space-between;
  padding:26px 28px; border-bottom:1px solid var(--lux-gray); flex:none;
}
.acct-head h2{ font-family:'Playfair Display',Georgia,serif; font-weight:600; font-size:22px; color:var(--lux-ink); }
.acct-close{
  width:34px; height:34px; border-radius:50%; border:none; background:#fff;
  font-size:20px; line-height:1; cursor:pointer; color:var(--lux-ink); flex:none;
}
.acct-body{ padding:26px 28px 40px; display:flex; flex-direction:column; }

.acct-perks{ background:#fff; border:1px solid var(--lux-gray); border-radius:12px; padding:22px 20px; text-align:center; margin-bottom:20px; }
.acct-perks-brand{ font-family:'Archivo Black',sans-serif; font-size:15px; letter-spacing:.02em; color:var(--lux-ink); margin-bottom:12px; }
.acct-perks-brand span{ color:var(--lux-gold); }
.acct-perks-copy{ font-size:13.5px; color:var(--lux-ink); margin-bottom:10px; line-height:1.6; }
.acct-perks-copy strong{ color:#2f7a3d; }
.acct-join-btn{ padding:12px 30px; font-size:12px; }
.acct-perks-note{ font-size:11px; color:var(--lux-gray-dim); margin-top:14px; }

.acct-hint{ font-size:13px; color:var(--lux-gray-dim); margin-bottom:22px; }
.acct-subhead{ font-family:'Playfair Display',Georgia,serif; font-weight:600; font-size:18px; color:var(--lux-ink); margin-bottom:16px; }

.acct-field{ display:flex; flex-direction:column; gap:6px; margin-bottom:14px; }
.acct-field label{ font-size:12px; font-weight:600; letter-spacing:.04em; text-transform:uppercase; color:var(--lux-gray-dim); }
.acct-field input{
  font-family:inherit; font-size:14.5px; color:var(--lux-ink);
  padding:13px 14px; border-radius:9px; border:1px solid var(--lux-gray);
  background:#fff; outline:none; transition:border-color .2s, box-shadow .2s;
}
.acct-field input:focus{ border-color:var(--lux-gold); box-shadow:0 0 0 3px rgba(182,144,63,.15); }

.acct-error{ font-size:12.5px; color:var(--red,#c23a2e); min-height:16px; margin:-4px 0 6px; }
.acct-submit{
  width:100%; padding:15px; border-radius:100px; border:none; cursor:pointer;
  background:var(--lux-ink); color:#fff; font-size:13.5px; font-weight:700;
  letter-spacing:.05em; text-transform:uppercase; transition:background .25s; margin-top:4px;
}
.acct-submit:hover{ background:var(--lux-gold); }
.acct-switch{ font-size:13px; color:var(--lux-gray-dim); text-align:center; margin-top:20px; }
.acct-switch a{ color:var(--lux-ink); font-weight:600; text-decoration:underline; cursor:pointer; }
.acct-switch a:hover{ color:var(--lux-gold); }

.acct-welcome{ display:flex; align-items:center; gap:14px; margin-bottom:24px; }
.acct-avatar{
  width:48px; height:48px; border-radius:50%; background:var(--lux-ink); color:#fff;
  display:flex; align-items:center; justify-content:center; font-family:'Playfair Display',serif; font-size:18px; flex:none;
}
.acct-welcome-name{ font-size:15.5px; font-weight:700; color:var(--lux-ink); }
.acct-welcome-email{ font-size:12.5px; color:var(--lux-gray-dim); }
.acct-logout{ background:transparent; border:1px solid var(--lux-ink); color:var(--lux-ink); margin-top:8px; }
.acct-logout:hover{ background:var(--lux-ink); color:#fff; }

@media (max-width:480px){
  .acct-panel{ width:100vw; }
}
