/* ============================================================
   ABABA — "Gallery White" design system  (v2)
   Apple-grade clarity · floating products · soft depth
   ============================================================ */

@import url('https://fonts.googleapis.com/css2?family=Hanken+Grotesk:wght@300;400;500;600;700;800&display=swap');

:root{
  /* ---- color : pure neutral, white canvas ---- */
  --white:    #ffffff;
  --canvas:   #fdfdfd;          /* page */
  --mist:     #f6f6f6;          /* alt section / tiles */
  --mist-2:   #f0f0f0;          /* deeper tile */
  --ink:      #0f0f0f;           /* near-black */
  --ink-2:    #484848;           /* secondary */
  --ink-3:    #808080;           /* tertiary / meta */
  --line:     #e3e3e3;          /* hairline */
  --line-2:   #d7d7d7;
  --accent:   #106ed7;      /* restrained electric blue */
  --accent-d: #0053b3;

  /* ---- type ---- */
  --sans: 'Hanken Grotesk', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;

  /* ---- radius ---- */
  --r-xs: 10px;
  --r-sm: 14px;
  --r:    20px;
  --r-lg: 30px;
  --r-xl: 40px;

  /* ---- depth ---- */
  --sh-1: 0 1px 2px rgba(20,20,22,.04), 0 4px 14px rgba(20,20,22,.05);
  --sh-2: 0 2px 6px rgba(20,20,22,.05), 0 18px 40px -8px rgba(20,20,22,.10);
  --sh-lift: 0 30px 70px -28px rgba(20,20,22,.30);
  --sh-product: 0 50px 90px -36px rgba(20,20,22,.34);

  /* ---- metrics ---- */
  --maxw: 1480px;
  --pad: clamp(20px, 4.5vw, 80px);
  --rhythm: clamp(84px, 11vw, 184px);
  --ease: cubic-bezier(.22,.61,.36,1);
  --ease-out: cubic-bezier(.16,1,.3,1);
}

*{ box-sizing:border-box; margin:0; padding:0; }
html{ -webkit-text-size-adjust:100%; scroll-behavior:smooth; }

/* Accessible visually-hidden text. WooCommerce/WordPress add `.screen-reader-text`
   spans (e.g. "Required") that, without this rule, render as real absolutely-
   positioned elements with `margin:-1px` — they sit OUTSIDE any overflow:clip
   ancestor and stretched the page width on mobile. This standard clip recipe
   locks them to a 1px box so they never extend the layout while staying
   readable by screen readers. */
.screen-reader-text,
.sr-only{
  position:absolute !important;
  width:1px; height:1px;
  padding:0; margin:-1px;
  overflow:hidden;
  clip:rect(0,0,0,0);
  clip-path:inset(50%);
  white-space:nowrap;
  border:0;
}
/* No global overflow-x clip/hidden here — it can break position:sticky on iOS
   Safari and in some DevTools device emulations. The page is kept from
   scrolling sideways at the source instead: real layout overflow is fixed in
   the components, and intentionally off-canvas pieces (the cart drawer) contain
   themselves via `contain` + `overflow:hidden` on their own wrapper. */
body{
  background:var(--canvas);
  color:var(--ink);
  font-family:var(--sans);
  font-size:16px; line-height:1.5;
  letter-spacing:-0.011em;
  font-weight:400;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}
img{ display:block; max-width:100%; }
a{ color:inherit; text-decoration:none; }
button{ font-family:inherit; cursor:pointer; }
::selection{ background:var(--ink); color:var(--white); }

/* ---- type primitives ---- */
.display{ font-weight:760; line-height:0.96; letter-spacing:-0.035em; text-wrap:balance; }
.h-xxl{ font-size:clamp(3.2rem, 11vw, 9.5rem); }
.h-xl{ font-size:clamp(2.6rem, 6.5vw, 5.4rem); }
.h-lg{ font-size:clamp(2rem, 4.2vw, 3.4rem); }
.h-md{ font-size:clamp(1.5rem, 2.6vw, 2.2rem); letter-spacing:-0.028em; font-weight:700; }
.lede{ font-size:clamp(1.05rem, 1.5vw, 1.32rem); line-height:1.5; color:var(--ink-2); font-weight:400; letter-spacing:-0.012em; }
.kicker{
  font-size:0.72rem; font-weight:600; letter-spacing:0.16em; text-transform:uppercase; color:var(--ink-3);
  display:inline-flex; align-items:center; gap:9px;
}
.kicker::before{ content:''; width:22px; height:1.5px; background:var(--ink-3); display:inline-block; }
.tag{ font-size:0.7rem; font-weight:600; letter-spacing:0.04em; text-transform:uppercase; }
.num{ font-variant-numeric:tabular-nums; letter-spacing:0; }
.accent{ color:var(--accent); }

/* ============================================================
   LAYOUT
   ============================================================ */
.wrap{ max-width:var(--maxw); margin:0 auto; padding-inline:var(--pad); }
.section{ padding-block:var(--rhythm); }
.rule{ border:0; border-top:1px solid var(--line); }
.sec-head{ display:flex; justify-content:space-between; align-items:flex-end; gap:28px; margin-bottom:clamp(34px,5vw,64px); }
.sec-head h2{ margin-top:18px; }

/* ============================================================
   ANNOUNCEMENT + HEADER
   ============================================================ */
.announce{
  background:var(--ink); color:var(--white);
  font-size:0.74rem; font-weight:500; letter-spacing:0.02em; text-align:center; padding:9px 16px;
}
.announce b{ font-weight:700; }
.announce .sep{ opacity:.4; margin-inline:10px; }

.site-head{
  position:sticky; top:0; z-index:60;
  background:rgba(253, 253, 253, 0.78);
  backdrop-filter:blur(20px) saturate(1.6);
  -webkit-backdrop-filter:blur(20px) saturate(1.6);
  border-bottom:1px solid rgba(227, 227, 227, 0.70);
}
.head-inner{
  display:grid; grid-template-columns:auto minmax(0,1fr) auto; align-items:center;
  gap:clamp(16px,3vw,40px);
  height:66px; max-width:var(--maxw); margin:0 auto; padding-inline:var(--pad);
}
.brand{ font-size:1.5rem; font-weight:800; letter-spacing:-0.04em; }
.brand .dot{ color:var(--accent); }
.nav-center{ justify-self:center; }
.nav{ display:flex; gap:clamp(6px,1vw,12px); background:var(--mist); padding:5px; border-radius:100px; }
.nav a{
  font-size:0.85rem; font-weight:500; color:var(--ink-2); padding:8px 16px; border-radius:100px;
  transition:color .25s, background .25s;
}
.nav a:hover{ color:var(--ink); }
.nav a.is-active{ background:var(--white); color:var(--ink); box-shadow:var(--sh-1); }
.head-tools{ justify-self:end; display:flex; align-items:center; gap:6px; }
.icon-btn{
  background:none; border:0; color:var(--ink); width:42px; height:42px; border-radius:50%;
  display:inline-flex; align-items:center; justify-content:center; position:relative; transition:background .25s;
}
.icon-btn:hover{ background:var(--mist); }
.icon-btn svg{ width:20px; height:20px; stroke:currentColor; fill:none; stroke-width:1.6; }
.cart-tag{
  position:absolute; top:4px; right:4px; background:var(--accent); color:var(--white);
  font-size:0.58rem; font-weight:700; line-height:1; min-width:16px; height:16px; padding:0 4px;
  border-radius:100px; display:flex; align-items:center; justify-content:center;
}
.burger{ display:none; background:none; border:0; width:42px; height:42px; border-radius:50%; flex-direction:column; gap:5px; align-items:center; justify-content:center; }
.burger span{ width:18px; height:1.8px; background:var(--ink); border-radius:2px; }

/* nav mega-dropdown ("Sayfalar") */
.nav-dd{ position:relative; display:flex; }
.nav-dd-toggle{
  font-family:inherit; font-size:0.85rem; font-weight:500; color:var(--ink-2);
  background:none; border:0; padding:8px 16px; border-radius:100px;
  display:inline-flex; align-items:center; gap:5px; line-height:inherit;
  transition:color .25s, background .25s;
}
.nav-dd-toggle:hover{ color:var(--ink); }
.nav-dd .dd-arr{ font-size:0.7rem; transition:transform .25s var(--ease); }
.nav-dd-menu{
  position:absolute; top:calc(100% + 14px); left:50%; transform:translateX(-50%) translateY(8px);
  z-index:120; background:var(--white); border:1px solid var(--line);
  border-radius:var(--r-sm); box-shadow:var(--sh-2); padding:22px 24px;
  display:grid; grid-template-columns:repeat(3, minmax(150px, 1fr)); gap:14px 30px;
  opacity:0; visibility:hidden; pointer-events:none;
  transition:opacity .25s var(--ease), transform .25s var(--ease), visibility .25s;
}
/* small invisible bridge so hover doesn't drop in the 14px gap */
.nav-dd::after{ content:""; position:absolute; top:100%; left:0; right:0; height:16px; }
.nav-dd:hover .nav-dd-menu,
.nav-dd:focus-within .nav-dd-menu{
  opacity:1; visibility:visible; pointer-events:auto; transform:translateX(-50%) translateY(0);
}
.nav-dd:hover .nav-dd-toggle,
.nav-dd:focus-within .nav-dd-toggle{ color:var(--ink); }
.nav-dd:hover .dd-arr,
.nav-dd:focus-within .dd-arr{ transform:rotate(180deg); }
.nav-dd-menu .dd-col{ display:flex; flex-direction:column; }
.nav-dd-menu .dd-h{
  font-size:0.66rem; font-weight:700; letter-spacing:0.08em; text-transform:uppercase;
  color:var(--ink-3); margin-bottom:9px;
}
.nav-dd-menu .dd-col a{
  font-size:0.86rem; font-weight:500; color:var(--ink-2); padding:5px 0;
  border-radius:6px; transition:color .2s;
}
.nav-dd-menu .dd-col a:hover{ color:var(--accent); }
.nav-dd-toggle:focus-visible{ outline:2px solid var(--accent); outline-offset:2px; }

/* mobile-nav "Categories" subheading + category links */
.mnav-sub{
  font-size:0.66rem; font-weight:700; letter-spacing:0.14em; text-transform:uppercase;
  color:var(--ink-3); margin:18px 0 2px;
}
/* Category rows: smaller, lightly indented under the subheading. */
.mobile-nav nav a.mnav-pg{ font-size:1rem; font-weight:500; color:var(--ink-2); padding:11px 0; }
.mobile-nav nav a.mnav-pg span{ font-size:0.78rem; }

/* mobile nav — a clean, single-screen sheet */
.mnav-toggle{ position:absolute; opacity:0; pointer-events:none; }
.mobile-nav{
  position:fixed; inset:0; width:100%; max-width:100%; box-sizing:border-box; z-index:90; background:var(--canvas);
  transform:translateY(-101%); transition:transform .5s var(--ease-out); visibility:hidden;
  display:flex; flex-direction:column; padding:0 var(--pad) calc(20px + env(safe-area-inset-bottom));
  overflow-y:auto; overflow-x:hidden; clip-path:inset(0); /* never let the off-canvas menu extend the page width */
}
.mnav-toggle:checked ~ .mobile-nav{ transform:translateY(0); visibility:visible; }
.mnav-head{ display:flex; justify-content:space-between; align-items:center; height:60px; margin-bottom:14px; flex:0 0 auto; }
.mnav-head .brand{ font-size:1.4rem; }
.mnav-close{ background:var(--mist); border:0; width:40px; height:40px; border-radius:50%; font-size:1.05rem; display:grid; place-items:center; cursor:pointer; }
.mobile-nav nav{ display:flex; flex-direction:column; }
/* Primary links (Shop / New / Sale): prominent but not oversized. */
.mobile-nav nav a{
  font-size:1.5rem; font-weight:700; letter-spacing:-0.02em; color:var(--ink);
  padding:13px 0; border-bottom:1px solid var(--line);
  display:flex; justify-content:space-between; align-items:center;
}
.mobile-nav nav a span{ font-size:0.78rem; font-weight:600; color:var(--ink-3); }
/* Category rows have no heavy divider (lighter than primary links). */
.mobile-nav nav a.mnav-pg{ border-bottom:1px solid rgba(227,227,227,0.5); }
.mnav-foot{ margin-top:auto; padding-top:24px; display:flex; gap:24px; font-size:0.82rem; font-weight:500; color:var(--ink-2); }

/* ============================================================
   BUTTONS
   ============================================================ */
.btn{
  display:inline-flex; align-items:center; justify-content:center; gap:9px;
  font-size:0.92rem; font-weight:600; letter-spacing:-0.01em;
  padding:15px 26px; border:1px solid var(--ink); background:var(--ink); color:var(--white);
  border-radius:100px; transition:transform .3s var(--ease), background .3s, color .3s, box-shadow .3s; white-space:nowrap;
}
.btn:hover{ transform:translateY(-2px); box-shadow:var(--sh-2); }
.btn:active{ transform:translateY(0); }
.btn .arr{ transition:transform .3s var(--ease); }
.btn:hover .arr{ transform:translateX(4px); }
.btn-lg{ padding:18px 34px; font-size:1rem; }
.btn-ghost{ background:transparent; color:var(--ink); border-color:var(--line-2); }
.btn-ghost:hover{ background:var(--white); border-color:var(--ink); }
.btn-accent{ background:var(--accent); border-color:var(--accent); }
.btn-block{ width:100%; }
.btn-white{ background:var(--white); color:var(--ink); border-color:var(--white); }

.tlink{ font-size:0.92rem; font-weight:600; display:inline-flex; align-items:center; gap:7px; transition:gap .3s var(--ease); white-space:nowrap; }
.tlink .arr{ transition:transform .3s var(--ease); }
.tlink:hover{ gap:11px; }

/* ============================================================
   PRODUCT IMAGE PLACEHOLDERS (drop real shots here)
   ============================================================ */
.ph{
  position:relative; overflow:hidden; background:var(--mist);
  background-image:radial-gradient(120% 90% at 50% 8%, #fafafa, var(--mist) 70%);
}
.ph::before{   /* faint centred guide mark */
  content:''; position:absolute; inset:0; margin:auto; width:30%; height:30%;
  border:1.5px dashed #bebebe; border-radius:50%;
  opacity:.7;
}
.ph::after{
  content:attr(data-ph); position:absolute; left:0; right:0; bottom:16px; text-align:center;
  font-size:0.66rem; font-weight:600; letter-spacing:0.1em; text-transform:uppercase; color:#868686;
}
.ph-clean::before{ display:none; }
.ph-ink{ background:var(--ink); background-image:radial-gradient(120% 90% at 50% 8%, #242424, var(--ink) 70%); }
.ph-ink::after{ color:#868686; }
.ph-ink::before{ border-color:#333333; }

/* ============================================================
   PRODUCT CARD — floating / lift on hover
   ============================================================ */
.product{ display:flex; flex-direction:column; gap:16px; }
.product-media img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; transition:opacity .55s var(--ease-out), transform .9s var(--ease-out); }
.product-media .alt{ opacity:0; }
/* Only swap to the second image on hover when one actually exists (.has-alt).
   Cards without a gallery image keep showing the main image (no blank flash). */
.product:hover .product-media.has-alt .main{ opacity:0; }
.product:hover .product-media.has-alt .alt{ opacity:1; }
.product:hover .product-media img{ transform:scale(1.05); }
.rail-pedestal img, .bcell img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }
.bcell::after{ content:''; position:absolute; inset:0; z-index:1; background:linear-gradient(180deg, transparent 45%, rgba(248,248,248,.66)); }
.bcell.dark::after{ display:none; }
.bcell .bc-body, .bcell .arrow{ z-index:2; }
.gallery-main img, .thumb img{ width:100%; height:100%; object-fit:cover; }
.co-line > img,
.co-line > a > img,
.co-line a img,
.co-line img{ width:76px !important; height:76px !important; max-width:76px !important; aspect-ratio:1/1; border-radius:var(--r-sm); flex-shrink:0; object-fit:cover; }
.co-line > a{ flex-shrink:0; line-height:0; }
.hero-product img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; border-radius:var(--r); box-shadow:var(--sh-product); border:1px solid #dedede; }
.product-media{
  position:relative; aspect-ratio:4/5; border-radius:var(--r); overflow:hidden;
  background:var(--mist); transition:transform .5s var(--ease-out), box-shadow .5s var(--ease-out);
}
.product-media .ph{ position:absolute; inset:0; transition:transform .8s var(--ease-out); }
.product:hover .product-media{ transform:translateY(-8px); box-shadow:var(--sh-lift); }
.product:hover .product-media .ph{ transform:scale(1.05); }
.product-flag{
  position:absolute; top:14px; left:14px; z-index:2; background:var(--white); color:var(--ink);
  font-size:0.62rem; font-weight:700; letter-spacing:0.06em; text-transform:uppercase;
  padding:6px 11px; border-radius:100px; box-shadow:var(--sh-1);
}
.product-flag.sale{ background:var(--accent); color:var(--white); }
.fav{
  position:absolute; top:12px; right:12px; z-index:2; width:36px; height:36px; border-radius:50%;
  background:rgba(255, 255, 255, 0.70); backdrop-filter:blur(6px); border:0;
  display:flex; align-items:center; justify-content:center; opacity:0; transform:scale(.85);
  transition:opacity .3s, transform .3s, background .3s;
}
.fav svg{ width:17px; height:17px; stroke:var(--ink); fill:none; stroke-width:1.6; }
.product:hover .fav{ opacity:1; transform:scale(1); }
.quick-add{
  position:absolute; left:12px; right:12px; bottom:12px; z-index:2;
  background:var(--ink); color:var(--white); border:0; border-radius:100px;
  font-size:0.84rem; font-weight:600; padding:13px; opacity:0; transform:translateY(10px);
  transition:opacity .35s var(--ease), transform .35s var(--ease);
}
.product:hover .quick-add{ opacity:1; transform:translateY(0); }
.product-info{ display:flex; flex-direction:column; gap:5px; padding-inline:2px; }
.product-cat{ font-size:0.7rem; font-weight:600; letter-spacing:0.08em; text-transform:uppercase; color:var(--ink-3); }
.product-row{ display:flex; justify-content:space-between; align-items:baseline; gap:12px; }
.product-name{ font-size:1.02rem; font-weight:600; letter-spacing:-0.018em; flex:1 1 auto; min-width:0; }
.price{ font-size:0.96rem; font-weight:600; white-space:nowrap; flex:0 0 auto; }
.price .was{ color:var(--ink-3); text-decoration:line-through; font-weight:400; margin-right:7px; }
.swatches{ display:flex; gap:6px; }
.swatch{ width:14px; height:14px; border-radius:50%; box-shadow:inset 0 0 0 1px rgba(0,0,0,.12); cursor:pointer; transition:box-shadow .2s, transform .2s; }
.swatch:hover{ transform:scale(1.15); }
.swatch.on{ box-shadow:inset 0 0 0 1px rgba(0,0,0,.12), 0 0 0 1.5px var(--canvas), 0 0 0 3px var(--ink); }
.sec-foot{ display:flex; justify-content:center; margin-top:clamp(28px,3.5vw,48px); }

/* ============================================================
   FOOTER
   ============================================================ */
.site-foot{ background:var(--ink); color:var(--white); padding-block:clamp(64px,8vw,110px) 38px; border-radius:var(--r-xl) var(--r-xl) 0 0; margin-top:var(--rhythm); }
.foot-cta{ display:flex; justify-content:space-between; align-items:flex-end; gap:40px; padding-bottom:clamp(48px,6vw,80px); border-bottom:1px solid #2e2e2e; flex-wrap:wrap; }
.foot-cta h2{ letter-spacing:-0.04em; }
.foot-news{ display:flex; align-items:center; gap:10px; background:#1f1f1f; border-radius:100px; padding:6px 6px 6px 22px; min-width:min(380px,90vw); }
.foot-news input{ flex:1; background:none; border:0; color:var(--white); font-family:var(--sans); font-size:0.95rem; outline:none; }
.foot-news input::placeholder{ color:#808080; }
.foot-news button{ background:var(--white); color:var(--ink); border:0; width:44px; height:44px; border-radius:50%; font-size:1.1rem; flex-shrink:0; }
.foot-grid{ display:grid; grid-template-columns:1.6fr 1fr 1fr 1fr; gap:40px; padding-top:clamp(40px,5vw,64px); }
.foot-brand .brand{ font-size:2.6rem; }
.foot-brand p{ color:#929292; margin-top:14px; max-width:34ch; font-size:0.92rem; }
.foot-col h4{ font-size:0.72rem; font-weight:600; letter-spacing:0.12em; text-transform:uppercase; color:#868686; margin-bottom:18px; }
.foot-col ul{ list-style:none; display:flex; flex-direction:column; gap:12px; }
.foot-col a{ font-size:0.92rem; color:#c4c4c4; transition:color .2s; }
.foot-col a:hover{ color:var(--white); }
.foot-bottom{ margin-top:clamp(48px,6vw,80px); padding-top:26px; border-top:1px solid #2e2e2e; display:flex; justify-content:space-between; gap:18px; flex-wrap:wrap; font-size:0.78rem; color:#808080; }

/* ============================================================
   REVEAL ON LOAD
   ============================================================ */
@media (prefers-reduced-motion:no-preference){
  .rise{ opacity:0; transform:translateY(26px); animation:rise 1s var(--ease-out) forwards; }
  .rise.d1{ animation-delay:.07s } .rise.d2{ animation-delay:.14s } .rise.d3{ animation-delay:.21s }
  .rise.d4{ animation-delay:.28s } .rise.d5{ animation-delay:.35s } .rise.d6{ animation-delay:.42s }
  @keyframes rise{ to{ opacity:1; transform:none } }
}

/* ============================================================
   FORM ELEMENTS
   ============================================================ */
.field{ display:flex; flex-direction:column; gap:8px; }
.field label{ font-size:0.74rem; font-weight:600; letter-spacing:0.04em; color:var(--ink-2); }
.field input, .field select, .field textarea{
  font-family:var(--sans); font-size:1rem; color:var(--ink); background:var(--white);
  border:1px solid var(--line-2); border-radius:var(--r-sm); padding:15px 16px; outline:none;
  transition:border-color .2s, box-shadow .2s;
}
.field input:focus, .field select:focus{ border-color:var(--ink); box-shadow:0 0 0 4px #e4e4e4; }

/* ============================================================
   PDP NEXT-GEN  (zoom · hotspots · stock · sticky bar · reviews · bundle)
   ============================================================ */
.thumb{ border:0; padding:0; }
.gallery-main{ position:relative; overflow:hidden; cursor:zoom-in; }
.gallery-main.zoom{ cursor:zoom-out; }
.gallery-main img{ transition:transform .3s var(--ease-out); will-change:transform; }
.gallery-main.zoom img{ transform:scale(1.9); }
.gallery-badge{ position:absolute; top:16px; left:16px; z-index:3; background:rgba(255, 255, 255, 0.80); backdrop-filter:blur(8px); border-radius:100px; padding:8px 14px; font-size:0.72rem; font-weight:600; display:flex; gap:7px; align-items:center; box-shadow:var(--sh-1); }
.gallery-main.zoom .gallery-badge, .gallery-main.zoom .hotspot{ opacity:0; }
.hotspot{ position:absolute; z-index:4; width:28px; height:28px; transition:opacity .3s; }
.hotspot .pin{ position:absolute; inset:0; border-radius:50%; background:var(--white); box-shadow:var(--sh-2); display:grid; place-items:center; cursor:pointer; }
.hotspot .pin::after{ content:''; width:7px; height:7px; border-radius:50%; background:var(--ink); }
.hotspot .pin::before{ content:''; position:absolute; inset:0; border-radius:50%; border:1.5px solid var(--white); animation:ping 2.6s var(--ease-out) infinite; }
@keyframes ping{ 0%{ transform:scale(.8); opacity:.9 } 70%,100%{ transform:scale(1.9); opacity:0 } }
.hotspot .tip{ position:absolute; bottom:38px; left:50%; transform:translateX(-50%) translateY(6px); width:max-content; max-width:210px; background:var(--ink); color:var(--white); font-size:0.78rem; font-weight:500; line-height:1.35; padding:9px 13px; border-radius:var(--r-xs); opacity:0; pointer-events:none; transition:opacity .25s, transform .25s; }
.hotspot .tip::after{ content:''; position:absolute; bottom:-5px; left:50%; transform:translateX(-50%) rotate(45deg); width:9px; height:9px; background:var(--ink); }
.hotspot:hover{ z-index:6; }
.hotspot:hover .tip{ opacity:1; transform:translateX(-50%) translateY(0); }
@media (prefers-reduced-motion:reduce){ .hotspot .pin::before{ animation:none } }
/* Product pin: hover shows a mini product card that links to the product page. */
.hotspot.is-product .pin::after{ background:var(--accent,#1a7a3c); }
.hotspot .pin-card{ position:absolute; bottom:38px; left:50%; transform:translateX(-50%) translateY(6px); width:max-content; max-width:240px; display:flex; align-items:center; gap:10px; background:var(--white); color:var(--ink); box-shadow:var(--sh-2); border-radius:var(--r-xs); padding:8px; opacity:0; pointer-events:none; transition:opacity .25s, transform .25s; }
.hotspot.is-product:hover .pin-card{ opacity:1; transform:translateX(-50%) translateY(0); pointer-events:auto; }
.hotspot .pin-card img{ width:46px; height:46px; object-fit:cover; border-radius:6px; flex-shrink:0; }
.hotspot .pin-card .pc-body{ display:flex; flex-direction:column; gap:2px; min-width:0; }
.hotspot .pin-card .pc-name{ font-size:0.82rem; font-weight:600; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; max-width:150px; }
.hotspot .pin-card .pc-price{ font-size:0.8rem; color:var(--ink-3,#666); }

.opt-head .guide{ font-size:0.8rem; font-weight:600; color:var(--accent); cursor:pointer; }
.stock{ margin:20px 0 0; }
.stock-bar{ height:5px; border-radius:5px; background:var(--mist-2); overflow:hidden; }
.stock-bar i{ display:block; height:100%; background:linear-gradient(90deg,var(--accent),#f4543a); border-radius:5px; }
.stock-info{ display:flex; justify-content:space-between; align-items:center; font-size:0.8rem; color:var(--ink-2); margin-top:9px; }
.live{ display:inline-flex; align-items:center; gap:7px; }
.live .pulse{ width:8px; height:8px; border-radius:50%; background:#2e9e52; animation:lpulse 2s infinite; }
@keyframes lpulse{ 0%{ box-shadow:0 0 0 0 rgba(46, 158, 82, 0.5) } 70%{ box-shadow:0 0 0 8px transparent } 100%{ box-shadow:0 0 0 0 transparent } }

.buybar{ display:none; position:fixed; left:0; right:0; bottom:0; z-index:75; background:rgba(253, 253, 253, 0.88); backdrop-filter:blur(18px) saturate(1.4); border-top:1px solid var(--line); transform:translateY(115%); transition:transform .45s var(--ease-out); }
.buybar.show{ transform:translateY(0); }
.buybar .inner{ max-width:var(--maxw); margin:0 auto; padding:11px var(--pad); display:flex; align-items:center; justify-content:space-between; gap:16px; }
.buybar .bb-left{ display:flex; align-items:center; gap:14px; min-width:0; }
.buybar .bb-left img{ width:46px; height:46px; border-radius:var(--r-xs); object-fit:cover; flex-shrink:0; }
.buybar .bb-name{ font-weight:600; }
.buybar .bb-price{ font-size:0.82rem; color:var(--ink-2); }
.buybar .bb-actions{ display:flex; gap:12px; align-items:center; flex-shrink:0; }
@media (max-width:560px){ .buybar .bb-meta{ display:none } .buybar .bb-actions .bb-pp{ display:none } }

.bundle{ background:var(--mist); border-radius:var(--r-lg); padding:clamp(24px,3vw,40px); display:grid; grid-template-columns:1fr auto; gap:30px; align-items:center; }
.bundle-items{ display:flex; align-items:center; gap:14px; flex-wrap:wrap; }
.bundle-thumb{ width:88px; height:88px; border-radius:var(--r-sm); overflow:hidden; background:var(--white); box-shadow:var(--sh-1); }
.bundle-thumb img{ width:100%; height:100%; object-fit:cover; }
.bundle-plus{ font-size:1.3rem; color:var(--ink-3); }
.bundle-side{ text-align:right; display:flex; flex-direction:column; gap:12px; align-items:flex-end; }
.bundle-price{ font-size:1.6rem; font-weight:700; }
.bundle-was{ color:var(--ink-3); text-decoration:line-through; font-size:1rem; font-weight:400; margin-right:9px; }

.reviews{ display:grid; grid-template-columns:0.75fr 1.25fr; gap:clamp(28px,4vw,64px); align-items:start; }
.rev-big{ font-size:clamp(3.4rem,6vw,5rem); font-weight:780; letter-spacing:-0.04em; line-height:1; }
.rev-stars{ color:var(--ink); font-size:1.1rem; letter-spacing:3px; margin:8px 0 4px; }
.rev-dist{ display:flex; flex-direction:column; gap:9px; margin-top:22px; }
.rev-row{ display:flex; align-items:center; gap:11px; font-size:0.8rem; color:var(--ink-2); }
.rev-row .lab{ width:14px; }
.rev-row .bar{ flex:1; height:6px; border-radius:6px; background:var(--mist-2); overflow:hidden; }
.rev-row .bar i{ display:block; height:100%; background:var(--ink); border-radius:6px; }
.rev-list{ display:flex; flex-direction:column; gap:16px; }
.rev-card{ border:1px solid var(--line); border-radius:var(--r); padding:22px 24px; }
.rev-head{ display:flex; justify-content:space-between; align-items:center; margin-bottom:9px; gap:12px; }
.rev-name{ font-weight:600; display:flex; align-items:center; gap:9px; white-space:nowrap; }

/* ============================================================
   STORIES (Instagram-style) — rail + fullscreen viewer
   ============================================================ */
.stories-wrap{ padding-top:clamp(18px,2.4vw,32px); }
.stories{ display:flex; gap:clamp(14px,1.6vw,22px); overflow-x:auto; scrollbar-width:none; padding:2px 0 6px; contain:layout paint; }
.stories::-webkit-scrollbar{ display:none; }
.story-btn{ background:none; border:0; display:flex; flex-direction:column; align-items:center; gap:9px; flex-shrink:0; width:80px; cursor:pointer; }
.story-btn .ring{ width:76px; height:76px; border-radius:50%; padding:2.5px; background:conic-gradient(from 210deg, var(--accent), #f96c4a, #267ee8, var(--accent)); display:grid; place-items:center; transition:transform .25s var(--ease); }
.story-btn:hover .ring{ transform:scale(1.06); }
.story-btn .av{ width:100%; height:100%; border-radius:50%; overflow:hidden; border:2.5px solid var(--canvas); background:var(--mist); }
.story-btn .av img{ width:100%; height:100%; object-fit:cover; }
.story-btn.seen .ring{ background:var(--line-2); }
.story-btn .st-label{ font-size:0.74rem; font-weight:500; color:var(--ink-2); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; max-width:80px; }

.story-viewer{ position:fixed; inset:0; z-index:120; background:rgba(14,14,16,.92); backdrop-filter:blur(10px); display:none; align-items:center; justify-content:center; padding:16px; }
.story-viewer.open{ display:flex; }
.sv-card{ position:relative; width:min(430px,94vw); height:min(86vh,840px); border-radius:var(--r-lg); overflow:hidden; background:#000; box-shadow:var(--sh-lift); }
.sv-img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }
.sv-scrim{ position:absolute; inset:0; background:linear-gradient(180deg, rgba(0,0,0,.42) 0%, transparent 26%, transparent 52%, rgba(0,0,0,.74) 100%); }
.sv-nav{ position:absolute; inset:0; z-index:2; display:flex; }
.sv-nav button{ border:0; background:none; cursor:pointer; }
.sv-nav .nav-prev{ flex:0 0 32%; }
.sv-nav .nav-next{ flex:1; }
.sv-bars{ position:absolute; top:13px; left:13px; right:13px; z-index:4; display:flex; gap:5px; }
.sv-bar{ flex:1; height:3px; border-radius:3px; background:rgba(255,255,255,.34); overflow:hidden; }
.sv-bar i{ display:block; height:100%; width:0; background:#fff; border-radius:3px; }
.sv-bar.done i{ width:100%; }
.sv-bar.active i{ animation:svfill var(--dur,4500ms) linear forwards; }
@keyframes svfill{ to{ width:100% } }
.sv-top{ position:absolute; top:26px; left:15px; right:15px; z-index:4; display:flex; align-items:center; gap:10px; color:#fff; }
.sv-top .av{ width:34px; height:34px; border-radius:50%; overflow:hidden; border:1.5px solid rgba(255,255,255,.85); flex-shrink:0; }
.sv-top .av img{ width:100%; height:100%; object-fit:cover; }
.sv-top .lbl{ font-size:0.88rem; font-weight:600; white-space:nowrap; text-shadow:0 1px 6px rgba(0,0,0,.4); }
.sv-close{ margin-left:auto; background:rgba(255,255,255,.16); color:#fff; width:34px; height:34px; border-radius:50%; font-size:0.95rem; backdrop-filter:blur(4px); }
.sv-caption{ position:absolute; left:24px; right:24px; bottom:28px; z-index:4; color:#fff; }
.sv-caption .ct{ font-size:1.6rem; font-weight:700; letter-spacing:-0.025em; line-height:1.1; }
.sv-caption .cs{ font-size:0.92rem; opacity:.86; margin:6px 0 18px; }
.sv-cta{ display:inline-flex; align-items:center; gap:8px; background:#fff; color:#17171a; font-weight:600; font-size:0.9rem; padding:13px 22px; border-radius:100px; transition:transform .25s var(--ease); }
.sv-cta:hover{ transform:translateY(-2px); }

/* ============================================================
   SEARCH OVERLAY
   ============================================================ */
.search-ov{ position:fixed; inset:0; z-index:130; display:none; }
.search-ov.open{ display:block; }
.search-ov .so-back{ position:absolute; inset:0; background:rgba(14,14,16,.45); backdrop-filter:blur(4px); }
.search-ov .so-sheet{ position:relative; background:var(--canvas); border-radius:0 0 var(--r-lg) var(--r-lg); padding:clamp(20px,3vw,34px) var(--pad) clamp(28px,4vw,44px); max-width:var(--maxw); margin:0 auto; transform:translateY(-12px); opacity:0; transition:transform .35s var(--ease-out), opacity .35s; max-height:90vh; overflow:auto; }
.search-ov.open .so-sheet{ transform:translateY(0); opacity:1; }
.so-field{ display:flex; align-items:center; gap:14px; border-bottom:2px solid var(--ink); padding:10px 0; }
.so-field svg{ width:26px; height:26px; stroke:var(--ink); fill:none; stroke-width:1.6; flex-shrink:0; }
.so-field input{ flex:1; border:0; background:none; font-family:var(--sans); font-size:clamp(1.4rem,3vw,2.2rem); font-weight:600; letter-spacing:-0.03em; color:var(--ink); outline:none; }
.so-field input::placeholder{ color:var(--ink-3); }
.so-close{ background:var(--mist); border:0; width:42px; height:42px; border-radius:50%; font-size:1.05rem; flex-shrink:0; }
.so-pop{ display:flex; gap:9px; flex-wrap:wrap; margin-top:20px; align-items:center; }
.so-pop .lab{ font-size:0.74rem; font-weight:600; letter-spacing:0.06em; text-transform:uppercase; color:var(--ink-3); margin-right:4px; }
.so-chip{ font-size:0.85rem; font-weight:500; border:1px solid var(--line-2); background:var(--white); padding:8px 15px; border-radius:100px; cursor:pointer; transition:all .2s; }
.so-chip:hover{ border-color:var(--ink); }
.so-meta{ font-size:0.78rem; font-weight:600; color:var(--ink-3); margin:26px 0 16px; letter-spacing:0.04em; text-transform:uppercase; }
.so-results{ display:grid; grid-template-columns:repeat(4,1fr); gap:clamp(14px,2vw,24px); }
.so-empty{ padding:30px 0; color:var(--ink-3); font-size:1rem; }
@media (max-width:900px){ .so-results{ grid-template-columns:repeat(2,1fr); } }
@media (max-width:560px){ .so-results{ grid-template-columns:1fr 1fr; } }

/* ============================================================
   SHOP — sidebar filters
   ============================================================ */
.shop-layout{ display:grid; grid-template-columns:264px 1fr; gap:clamp(28px,4vw,56px); align-items:start; padding-bottom:var(--rhythm); }
.shop-layout > *{ min-width:0; }
.filters{ position:sticky; top:82px; display:flex; flex-direction:column; gap:6px; }
.flt-top{ display:flex; justify-content:space-between; align-items:center; margin-bottom:8px; }
.flt-top h3{ font-size:1.1rem; font-weight:700; letter-spacing:-0.02em; }
.flt-clear{ background:none; border:0; font-size:0.8rem; font-weight:600; color:var(--accent); }
.flt-group{ border-top:1px solid var(--line); padding:18px 0; }
.flt-group > h4{ font-size:0.74rem; font-weight:600; letter-spacing:0.08em; text-transform:uppercase; color:var(--ink-2); margin-bottom:14px; }
.flt-opt{ display:flex; align-items:center; gap:10px; padding:6px 0; cursor:pointer; font-size:0.92rem; color:var(--ink-2); user-select:none; }
.flt-opt:hover{ color:var(--ink); }
.flt-box{ width:19px; height:19px; border:1.5px solid var(--line-2); border-radius:6px; display:grid; place-items:center; flex-shrink:0; transition:all .2s; }
.flt-box svg{ width:12px; height:12px; stroke:var(--ink); fill:none; stroke-width:2.6; opacity:0; }
.flt-opt input{ position:absolute; opacity:0; pointer-events:none; }
.flt-opt input:checked ~ .flt-box{ border-color:var(--ink); }
.flt-opt input:checked ~ .flt-box svg{ opacity:1; }
.flt-opt.on .flt-box{ border-color:var(--ink); background:var(--mist); }
.flt-opt.on .flt-box svg{ opacity:1; }
.flt-opt input:checked ~ .flt-box svg{ opacity:1; }
.flt-opt .cnt{ margin-left:auto; font-size:0.78rem; color:var(--ink-3); }
.flt-colors{ display:flex; flex-wrap:wrap; gap:10px; }
.flt-sw{ width:28px; height:28px; border-radius:50%; cursor:pointer; box-shadow:inset 0 0 0 1px rgba(0,0,0,.12); position:relative; }
.flt-sw.on{ box-shadow:0 0 0 2px var(--canvas), 0 0 0 4px var(--ink); }
.price-val{ display:flex; justify-content:space-between; font-size:0.86rem; font-weight:600; margin-bottom:12px; }
.price-range{ -webkit-appearance:none; appearance:none; width:100%; height:4px; border-radius:4px; background:var(--line-2); outline:none; }
.price-range::-webkit-slider-thumb{ -webkit-appearance:none; width:20px; height:20px; border-radius:50%; background:var(--ink); cursor:pointer; box-shadow:var(--sh-1); }
.price-range::-moz-range-thumb{ width:20px; height:20px; border:0; border-radius:50%; background:var(--ink); cursor:pointer; }

.results-top{ display:flex; justify-content:space-between; align-items:center; gap:16px; margin-bottom:22px; flex-wrap:wrap; }
.results-top .rc{ font-size:0.86rem; color:var(--ink-2); }
.results-top .rc b{ color:var(--ink); }
.active-chips{ display:flex; gap:8px; flex-wrap:wrap; }
.ac{ font-size:0.78rem; font-weight:500; background:var(--ink); color:var(--white); padding:7px 12px; border-radius:100px; display:inline-flex; gap:7px; align-items:center; cursor:pointer; }
.ac .x{ opacity:.7; }
.no-results{ padding:60px 0; text-align:center; color:var(--ink-3); }
.no-results h3{ font-size:1.4rem; font-weight:700; color:var(--ink); margin-bottom:8px; letter-spacing:-0.02em; }
.filter-fab{ display:none; }

@media (max-width:860px){
  .shop-layout{ grid-template-columns:1fr; }
  .filters{ position:fixed; inset:0; z-index:110; background:var(--canvas); padding:var(--pad); overflow:auto; transform:translateX(-101%); transition:transform .4s var(--ease-out); gap:0; }
  .filters.open{ transform:translateX(0); }
  .filter-fab{ display:inline-flex; align-items:center; gap:8px; }
  .flt-done{ position:sticky; bottom:0; background:var(--canvas); padding-top:14px; }
}

/* ============================================================
   REVIEW FORM + interactive stars
   ============================================================ */
.rev-write{ border:1px solid var(--line); border-radius:var(--r); padding:6px 24px; margin:0 0 20px; }
.rev-toggle{ display:flex; justify-content:space-between; align-items:center; width:100%; background:none; border:0; padding:16px 0; font-size:1.02rem; font-weight:700; letter-spacing:-0.02em; color:var(--ink); }
.rev-toggle .rt-plus{ font-size:1.4rem; font-weight:300; transition:transform .3s var(--ease); }
.rev-write.open .rev-toggle .rt-plus{ transform:rotate(45deg); }
.rev-form-wrap{ max-height:0; overflow:hidden; transition:max-height .4s var(--ease-out); }
.rev-write.open .rev-form-wrap{ max-height:760px; }
.rev-form-wrap .star-input{ margin-top:6px; }
.rev-photo{ display:inline-flex; align-items:center; gap:8px; margin-top:14px; font-size:0.88rem; font-weight:600; color:var(--ink-2); border:1px dashed var(--line-2); border-radius:100px; padding:11px 18px; cursor:pointer; transition:border-color .2s, color .2s; }
.rev-photo:hover{ border-color:var(--ink); color:var(--ink); }
.rev-photo svg{ width:18px; height:18px; }
.rev-phcount{ color:var(--accent); font-weight:700; }
.rev-prev{ display:flex; gap:8px; flex-wrap:wrap; margin-top:12px; }
.rev-prev img{ width:56px; height:56px; object-fit:cover; border-radius:var(--r-xs); }
.rc-photos{ display:flex; gap:8px; margin-top:12px; }
.rc-photos img{ width:66px; height:66px; object-fit:cover; border-radius:var(--r-xs); }
.star-input{ display:inline-flex; gap:4px; margin-bottom:14px; }
.star-input button{ background:none; border:0; font-size:1.7rem; line-height:1; color:var(--line-2); transition:color .15s, transform .15s; padding:0; }
.star-input button.on{ color:var(--ink); }
.star-input button:hover{ transform:scale(1.15); }
.rev-write .field+.field{ margin-top:12px; }
.rev-write textarea{ resize:vertical; min-height:90px; }
.rev-write .btn{ margin-top:14px; }
.rev-thanks{ display:none; padding:8px 0; color:#137738; font-weight:600; }

/* ============================================================
   HERO — search + quick chips (sales-forward)
   ============================================================ */
.hero-search{ display:flex; align-items:center; gap:12px; background:var(--white); border:1px solid var(--line-2); border-radius:100px; padding:6px 6px 6px 20px; box-shadow:var(--sh-1); max-width:430px; margin-bottom:18px; cursor:text; transition:border-color .2s, box-shadow .2s; }
.hero-search:hover{ border-color:var(--ink); }
.hero-search svg{ width:20px; height:20px; stroke:var(--ink-3); fill:none; stroke-width:1.6; }
.hero-search input{ flex:1; border:0; background:none; font-family:var(--sans); font-size:0.98rem; outline:none; color:var(--ink); }
.hero-search button{ background:var(--ink); color:var(--white); border:0; border-radius:100px; padding:11px 20px; font-size:0.86rem; font-weight:600; }
.hero-chips{ display:flex; gap:9px; flex-wrap:wrap; align-items:center; margin-bottom:30px; }
.hero-chips .lab{ font-size:0.74rem; font-weight:600; letter-spacing:0.06em; text-transform:uppercase; color:var(--ink-3); }
.hero-chips a{ font-size:0.85rem; font-weight:500; color:var(--ink-2); border:1px solid var(--line-2); padding:7px 14px; border-radius:100px; transition:all .2s; }
.hero-chips a:hover{ border-color:var(--ink); color:var(--ink); }

/* ============================================================
   CATEGORY GRID (readable)
   ============================================================ */
.cat-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:16px; }
.cat-card{ position:relative; display:flex; align-items:center; justify-content:space-between; gap:16px; background:var(--tint,var(--mist)); border-radius:var(--r); padding:24px 26px; min-height:148px; overflow:hidden; transition:transform .4s var(--ease-out), box-shadow .4s var(--ease-out); }
.cat-card:hover{ transform:translateY(-5px); box-shadow:var(--sh-lift); }
.cc-text h3{ font-size:1.5rem; font-weight:760; letter-spacing:-0.03em; line-height:1; }
.cc-text span{ font-size:0.82rem; color:var(--ink-2); font-weight:500; }
.cat-card img{ width:104px; height:104px; object-fit:cover; border-radius:var(--r-sm); flex-shrink:0; box-shadow:var(--sh-1); transition:transform .5s var(--ease-out); }
.cat-card:hover img{ transform:scale(1.06) rotate(-1.5deg); }
.cc-go{ position:absolute; top:16px; right:18px; width:32px; height:32px; border-radius:50%; background:rgba(255, 255, 255, 0.65); backdrop-filter:blur(4px); display:grid; place-items:center; font-size:0.95rem; transition:transform .3s var(--ease); }
.cat-card:hover .cc-go{ transform:translate(3px,-3px); }
@media (max-width:860px){ .cat-grid{ grid-template-columns:repeat(2,1fr); } }
@media (max-width:520px){ .cat-grid{ grid-template-columns:1fr; gap:10px; } }

/* ============================================================
   SETS / LOOKS  (homepage promo + grid)
   ============================================================ */
.sets-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:clamp(18px,2vw,28px); }
.set-card{ position:relative; display:flex; flex-direction:column; gap:14px; border-radius:var(--r); }
.set-cover{ aspect-ratio:4/5; border-radius:var(--r); overflow:hidden; background:var(--mist); }
.set-cover img{ width:100%; height:100%; object-fit:cover; transition:transform .6s var(--ease-out); }
.set-card:hover .set-cover img{ transform:scale(1.05); }
.set-card .set-body{ position:relative; display:flex; flex-direction:column; gap:5px; padding-inline:2px; }
.set-card .set-kick{ font-size:0.7rem; font-weight:600; letter-spacing:0.1em; text-transform:uppercase; color:var(--ink-3); }
.set-card h3{ font-size:1.3rem; font-weight:700; letter-spacing:-0.025em; color:var(--ink); line-height:1.05; }
.set-card .set-meta{ display:flex; flex-wrap:wrap; justify-content:space-between; align-items:baseline; gap:4px 12px; margin-top:2px; }
.set-card .set-from{ font-size:1.05rem; font-weight:700; color:var(--ink); }
.set-card .set-go{ font-size:0.84rem; font-weight:600; color:var(--ink-2); white-space:nowrap; }
/* On narrow 2-up set cards the price + "Explore set →" don't fit on one line —
   let them wrap (price on top, link below) instead of overflowing the card. */
.set-card .fav{ top:14px; right:14px; }
.sets-grid.combos{ grid-template-columns:repeat(3,1fr); }
@media (max-width:860px){ .sets-grid, .sets-grid.combos{ grid-template-columns:repeat(2,minmax(0,1fr)); } }
/* Keep set cards 2-up on phones too. As a single column each card was ~527px
   tall, so three of them turned the homepage Sets block into a ~2000px white
   corridor. Two columns halves the height and matches the product grids. */
@media (max-width:400px){ .sets-grid, .sets-grid.combos{ gap:14px; } }

/* spotlight single product */
.spotlight{ display:grid; grid-template-columns:1fr 1fr; background:var(--ink); color:#fff; border-radius:var(--r-xl); overflow:hidden; align-items:center; }
.spot-media{ position:relative; aspect-ratio:1/1; background:radial-gradient(circle at 50% 35%, #37322e, var(--ink)); display:grid; place-items:center; }
.spot-media img{ width:64%; filter:drop-shadow(0 40px 60px rgba(0,0,0,.5)); }
.spot-tag{ position:absolute; top:24px; left:24px; font-size:0.7rem; font-weight:700; letter-spacing:0.1em; text-transform:uppercase; background:var(--accent); padding:7px 13px; border-radius:100px; }
.spot-body{ padding:clamp(32px,4vw,64px); }
.spot-body .kicker{ color:#a39d98; }
.spot-body .kicker::before{ background:#a39d98; }
.spot-body h2{ margin:16px 0; }
.spot-body p{ color:#bcb6b1; max-width:42ch; margin-bottom:24px; }
.spot-price{ display:flex; align-items:baseline; gap:14px; margin-bottom:26px; }
.spot-price .num{ font-size:2rem; font-weight:760; letter-spacing:-0.03em; }
.spot-price .was{ color:#857f7a; text-decoration:line-through; }
@media (max-width:760px){ .spotlight{ grid-template-columns:1fr; } }

/* ============================================================
   FOMO band (countdown · live feed · low stock)
   ============================================================ */
.fomo{ display:grid; grid-template-columns:1.1fr 0.9fr; gap:clamp(28px,4vw,56px); background:var(--ink); color:#fff; border-radius:var(--r-xl); padding:clamp(30px,4vw,58px); align-items:center; }
.fomo-main .kicker{ color:#a9a39e; }
.fomo-main .kicker::before{ background:#a9a39e; }
.fomo-main h2{ margin:16px 0 14px; }
.fomo-main p{ color:#bcb6b1; max-width:36ch; margin-bottom:24px; }
.countdown{ display:flex; gap:10px; margin-bottom:28px; }
.cd-unit{ background:#242424; border-radius:var(--r-sm); padding:13px 0; width:76px; text-align:center; }
.cd-n{ display:block; font-size:1.9rem; font-weight:760; letter-spacing:-0.03em; font-variant-numeric:tabular-nums; line-height:1; }
.cd-l{ font-size:0.66rem; text-transform:uppercase; letter-spacing:0.08em; color:#868686; margin-top:6px; display:block; }
.cd-sep{ align-self:center; font-size:1.5rem; font-weight:700; color:#5d5d5d; }
.fomo-side{ display:flex; flex-direction:column; gap:13px; }
.fomo-live{ background:#242424; border-radius:var(--r); padding:15px 18px; display:flex; align-items:center; gap:13px; }
.fomo-live-link{ display:flex; align-items:center; gap:13px; width:100%; color:inherit; }
.fomo-live:hover{ background:#2b2b2b; }
.fl-img{ width:42px; height:42px; border-radius:var(--r-xs); overflow:hidden; flex-shrink:0; background:#333333; }
.fl-img img{ width:100%; height:100%; object-fit:cover; }
.fomo-live .pulse{ width:9px; height:9px; border-radius:50%; background:#4ac06c; flex-shrink:0; animation:lpulse 2s infinite; }
.fomo-live .fl-text{ font-size:0.9rem; line-height:1.35; min-width:0; }
.fomo-live .fl-text span{ color:#8c8c8c; font-size:0.8rem; }
.fomo-stock{ display:flex; flex-direction:column; gap:11px; }
.fomo-stock .fs-track{ display:flex; flex-direction:column; gap:11px; }
/* Auto-scrolling variant: a fixed viewport + vertical marquee of the (duplicated) list. */
.fomo-stock-scroll{ position:relative; max-height:230px; overflow:hidden; }
.fomo-stock-scroll::after{ content:""; position:absolute; left:0; right:0; bottom:0; height:46px; pointer-events:none; background:linear-gradient(to bottom,transparent,var(--ink) 92%); }
.fomo-stock-scroll .fs-track{ animation:fsScroll 18s linear infinite; will-change:transform; }
.fomo-stock-scroll:hover .fs-track{ animation-play-state:paused; }
@keyframes fsScroll{ from{ transform:translateY(0); } to{ transform:translateY(-50%); } }
@media (prefers-reduced-motion:reduce){ .fomo-stock-scroll .fs-track{ animation:none; } .fomo-stock-scroll{ overflow:auto; } }
.fs-item{ display:flex; align-items:center; gap:13px; background:#1d1d1d; border-radius:var(--r); padding:11px 14px; }
.fs-item img{ width:50px; height:50px; border-radius:var(--r-xs); object-fit:cover; flex-shrink:0; }
.fs-body{ flex:1; min-width:0; }
.fs-name{ font-size:0.9rem; font-weight:600; }
.fs-bar{ height:5px; border-radius:5px; background:#383838; margin-top:7px; overflow:hidden; }
.fs-bar i{ display:block; height:100%; background:linear-gradient(90deg,var(--accent),#f4543a); border-radius:5px; }
.fs-left{ font-size:0.72rem; color:#f28c5c; font-weight:700; white-space:nowrap; }
@media (max-width:820px){ .fomo{ grid-template-columns:1fr; } }

/* ============================================================
   LIGHTBOX
   ============================================================ */
.lightbox{ position:fixed; inset:0; z-index:140; background:rgba(12,12,14,.92); backdrop-filter:blur(8px); display:none; align-items:center; justify-content:center; padding:30px; }
.lightbox.open{ display:flex; }
.lightbox img{ max-width:90vw; max-height:88vh; border-radius:var(--r); box-shadow:var(--sh-lift); }
.lb-close{ position:absolute; top:20px; right:24px; width:46px; height:46px; border-radius:50%; background:rgba(255,255,255,.16); color:#fff; border:0; font-size:1.1rem; }
.lb-nav{ position:absolute; top:50%; transform:translateY(-50%); width:50px; height:50px; border-radius:50%; background:rgba(255,255,255,.16); color:#fff; border:0; font-size:1.5rem; display:grid; place-items:center; }
.lb-prev{ left:18px; } .lb-next{ right:18px; }
.rc-photos img, .rev-prev img{ cursor:zoom-in; }
/* Review form submit -> Ababa pill (WooCommerce renders an <input type=submit>
   with its own styles; force the Ababa .btn look). */
.rev-form-wrap .form-submit input[type="submit"],
.rev-form-wrap input#submit,
.rev-form-wrap input.btn,
.rev-write .form-submit input[type="submit"]{
  display:inline-flex; align-items:center; justify-content:center;
  font-family:var(--sans); font-size:0.92rem; font-weight:600; letter-spacing:-0.01em;
  padding:15px 28px !important; height:auto !important;
  border:1px solid var(--ink) !important; background:var(--ink) !important; color:var(--white) !important;
  border-radius:100px !important; box-shadow:none !important; cursor:pointer;
  transition:transform .3s var(--ease), box-shadow .3s; margin-top:6px;
}
.rev-form-wrap .form-submit input[type="submit"]:hover,
.rev-write .form-submit input[type="submit"]:hover{ transform:translateY(-2px); box-shadow:var(--sh-2) !important; }
.rev-form-wrap .form-submit{ margin:6px 0 0; }

/* ============================================================
   BUNDLE / SET PAGE
   ============================================================ */
.setpage{ display:grid; grid-template-columns:1fr 0.92fr; gap:clamp(30px,4vw,72px); align-items:start; padding-top:clamp(20px,3vw,40px); padding-bottom:var(--rhythm); }
.setpage > *{ min-width:0; }
/* Stack the set image above its piece list on tablets/phones (the look-stage
   already drops its sticky position at 900px — keep the two in sync). */
@media (max-width:900px){ .setpage{ grid-template-columns:1fr; gap:clamp(24px,4vw,40px); } }
.set-stage{ position:sticky; top:90px; border-radius:var(--r-lg); overflow:hidden; background:radial-gradient(circle at 50% 30%, var(--mist), var(--mist-2)); aspect-ratio:4/5; padding:5%; }
.set-board{ width:100%; height:100%; display:grid; grid-template-columns:1fr 1fr; grid-template-rows:1fr 1fr 1fr; gap:3%; }
.set-board a{ border-radius:var(--r-sm); overflow:hidden; background:var(--white); box-shadow:var(--sh-1); transition:transform .4s var(--ease-out), box-shadow .4s; position:relative; }
.set-board a:hover{ transform:translateY(-4px); box-shadow:var(--sh-lift); z-index:2; }
.set-board a img{ width:100%; height:100%; object-fit:cover; }
.set-board a:first-child{ grid-row:span 2; grid-column:span 1; }
.set-board a.dim{ opacity:.32; filter:grayscale(.4); }
.set-info .kicker{ margin-bottom:16px; }
.set-info h1{ margin-bottom:14px; }
.set-info .lede{ margin-bottom:26px; }
.set-list{ display:flex; flex-direction:column; margin-bottom:8px; }
.set-item{ display:flex; align-items:center; gap:15px; padding:15px 0; border-bottom:1px solid var(--line); }
.set-item .si-thumb{ display:block; width:68px; height:68px; border-radius:var(--r-sm); overflow:hidden; flex-shrink:0; background:var(--mist); }
.set-item .si-thumb img{ width:100%; height:100%; object-fit:cover; }
.si-body{ flex:1; min-width:0; }
.si-name{ font-weight:600; letter-spacing:-0.015em; }
.si-cat{ font-size:0.78rem; color:var(--ink-3); }
.si-price{ font-weight:600; white-space:nowrap; }
.si-toggle{ flex-shrink:0; width:30px; height:30px; border-radius:50%; border:1.5px solid var(--ink); background:var(--ink); color:#fff; display:grid; place-items:center; font-size:0.9rem; transition:all .2s; }
.set-item.off .si-toggle{ background:transparent; color:var(--ink); }
.set-item.off .si-thumb, .set-item.off .si-body{ opacity:.42; }
.set-bar{ background:var(--mist); border-radius:var(--r); padding:22px 24px; margin-top:22px; }
.set-bar .sb-row{ display:flex; justify-content:space-between; align-items:baseline; margin-bottom:6px; }
.set-bar .sb-row .sb-was{ color:var(--ink-3); text-decoration:line-through; font-size:0.9rem; }
.set-bar .sb-total{ font-size:1.6rem; font-weight:760; letter-spacing:-0.03em; }
.set-bar .sb-save{ color:var(--accent); font-weight:600; font-size:0.86rem; }
.set-bar .btn{ margin-top:14px; }

/* shop-the-look cover + pins (bundle detail) */
.look-stage{ position:sticky; top:90px; border-radius:var(--r-lg); overflow:hidden; aspect-ratio:4/5; background:var(--mist); }
.look-stage > img{ width:100%; height:100%; object-fit:cover; }
.look-pin{ position:absolute; transform:translate(-50%,-50%); z-index:2; }
.look-pin .pin-dot{ display:block; width:28px; height:28px; border-radius:50%; background:var(--white); box-shadow:var(--sh-2); position:relative; }
.look-pin .pin-dot::after{ content:''; position:absolute; inset:0; margin:auto; width:8px; height:8px; border-radius:50%; background:var(--ink); }
.look-pin .pin-dot::before{ content:''; position:absolute; inset:0; border-radius:50%; border:1.5px solid var(--white); animation:ping 2.6s var(--ease-out) infinite; }
.look-pin .pin-tip{ position:absolute; bottom:38px; left:50%; transform:translateX(-50%) translateY(6px); width:max-content; max-width:230px; background:var(--white); border-radius:var(--r-sm); box-shadow:var(--sh-lift); padding:10px; display:flex; gap:11px; align-items:center; opacity:0; pointer-events:none; transition:opacity .25s,transform .25s; }
.look-pin:hover{ z-index:6; }
.look-pin:hover .pin-tip{ opacity:1; transform:translateX(-50%) translateY(0); pointer-events:auto; }
.look-pin .pin-tip img{ width:48px; height:48px; border-radius:var(--r-xs); object-fit:cover; flex-shrink:0; }
.look-pin .pt-name{ display:block; font-weight:600; font-size:0.86rem; letter-spacing:-0.01em; }
.look-pin .pt-price{ font-size:0.82rem; color:var(--ink-2); font-weight:600; }
@media (max-width:900px){ .look-stage{ position:static; } }
/* Note pin on the look stage: a dark tooltip (no product card). */
.look-pin-note .pin-tip-note{ background:var(--ink); color:var(--white); display:block; max-width:210px; }
.look-pin-note .pin-tip-note .pt-name{ font-weight:500; font-size:0.8rem; line-height:1.35; }
@media (prefers-reduced-motion:reduce){ .look-pin .pin-dot::before{ animation:none; } }

/* ============================================================
   QUICK VIEW + recently-viewed trigger
   ============================================================ */
.qv-btn{ position:absolute; top:44%; left:50%; transform:translate(-50%,-50%) scale(.92); z-index:3; background:rgba(255, 255, 255, 0.84); backdrop-filter:blur(8px); border:0; border-radius:100px; padding:11px 18px; display:inline-flex; gap:8px; align-items:center; font-family:var(--sans); font-size:0.82rem; font-weight:600; color:var(--ink); box-shadow:var(--sh-2); opacity:0; transition:opacity .3s var(--ease),transform .3s var(--ease),background .2s; cursor:pointer; white-space:nowrap; }
.qv-btn svg{ width:17px; height:17px; stroke:var(--ink); fill:none; stroke-width:1.6; }
.qv-btn:hover{ background:var(--white); }
.product:hover .qv-btn{ opacity:1; transform:translate(-50%,-50%) scale(1); }
@media (hover:none){ .qv-btn{ display:none; } }

.qv{ position:fixed; inset:0; z-index:125; display:none; align-items:center; justify-content:center; padding:24px; }
.qv.open{ display:flex; }
.qv-back{ position:absolute; inset:0; background:rgba(14,14,16,.5); backdrop-filter:blur(5px); }
.qv-card{ position:relative; background:var(--canvas); border-radius:var(--r-lg); width:min(840px,95vw); max-height:90vh; overflow:hidden; display:grid; grid-template-columns:1fr 1fr; box-shadow:var(--sh-lift); }
.qv-media{ background:radial-gradient(circle at 50% 35%, var(--mist), var(--mist-2)); }
.qv-media img{ width:100%; height:100%; object-fit:cover; }
.qv-body{ padding:clamp(26px,3vw,40px); overflow-y:auto; }
.qv-close{ position:absolute; top:14px; right:14px; z-index:3; width:40px; height:40px; border-radius:50%; background:var(--white); box-shadow:var(--sh-1); border:0; font-size:1rem; }
.qv-body .pdp-cat{ margin-bottom:10px; }
.qv-body .qv-title{ font-size:clamp(1.6rem,2.4vw,2.1rem); font-weight:700; letter-spacing:-0.025em; margin-bottom:12px; }
.qv-body .pdp-price{ font-size:1.3rem; margin-bottom:22px; }
/* The card price markup (.was + sale) is copied into .qv-price; give the
   struck-through original a gap so the two prices aren't glued together. */
.qv-price .was{ color:var(--ink-3); text-decoration:line-through; font-weight:400; margin-right:9px; }
.qv-body .opt{ margin-bottom:20px; }
.qv-body .qv-link{ display:inline-block; margin-top:14px; font-size:0.86rem; font-weight:600; border-bottom:1px solid var(--ink); padding-bottom:2px; }
@media (max-width:680px){ .qv-card{ grid-template-columns:1fr; max-height:88vh; } .qv-media{ aspect-ratio:1/1; } }

/* ============================================================
   HERO CAROUSEL (wide, big imagery, auto-rotating)
   ============================================================ */
.hero-carousel{ position:relative; border-radius:var(--r-xl); overflow:hidden; margin-top:0; background:var(--mist); }
.hc-track{ display:flex; transition:transform .8s var(--ease-out); will-change:transform; }
.hc-slide{ flex:0 0 100%; min-width:0; display:grid; grid-template-columns:1.05fr 1fr; min-height:min(74vh,660px); background:var(--bg,var(--mist)); }
.hc-content{ padding:clamp(30px,5vw,78px); display:flex; flex-direction:column; justify-content:center; }
.hc-content .kicker{ margin-bottom:18px; }
.hc-title{ font-size:clamp(2.6rem,5.5vw,5rem); margin-bottom:18px; }
.hc-content p{ font-size:clamp(1rem,1.4vw,1.2rem); color:var(--ink-2); max-width:40ch; margin-bottom:24px; }
.hc-price{ display:flex; align-items:baseline; gap:13px; margin-bottom:28px; font-size:1.4rem; font-weight:700; }
.hc-price .was{ font-size:1rem; font-weight:400; color:var(--ink-3); text-decoration:line-through; }
.hc-cta{ display:flex; gap:13px; flex-wrap:wrap; }
.hc-media{ position:relative; display:grid; place-items:center; padding:clamp(20px,3vw,44px); text-decoration:none; }
.hc-media img{ width:min(82%,420px); aspect-ratio:4/5; object-fit:cover; border-radius:var(--r-lg); box-shadow:var(--sh-product); transition:transform .5s var(--ease-out); }
/* The hero image is a link to the product — lift it slightly on hover so it
   reads as clickable (tap also navigates on mobile). */
a.hc-media:hover img{ transform:scale(1.03); }
.hc-badge{ position:absolute; top:clamp(20px,3vw,40px); right:clamp(20px,3vw,40px); background:var(--accent); color:#fff; font-size:0.7rem; font-weight:700; letter-spacing:0.08em; text-transform:uppercase; padding:8px 14px; border-radius:100px; }
.hc-arrows{ position:absolute; right:clamp(16px,2vw,28px); bottom:clamp(16px,2vw,28px); display:flex; gap:10px; z-index:3; }
.hc-arrows button{ width:48px; height:48px; border-radius:50%; border:0; background:rgba(255, 255, 255, 0.82); backdrop-filter:blur(8px); box-shadow:var(--sh-1); display:grid; place-items:center; transition:background .25s,transform .25s; }
.hc-arrows button:hover{ background:var(--ink); }
.hc-arrows button:hover svg{ stroke:#fff; }
.hc-arrows svg{ width:20px; height:20px; stroke:var(--ink); fill:none; stroke-width:1.9; }
.hc-dots{ position:absolute; left:clamp(30px,5vw,78px); bottom:clamp(20px,3vw,38px); display:flex; gap:8px; z-index:3; }
.hc-dots button{ width:28px; height:4px; border-radius:4px; border:0; background:rgba(104, 98, 94, 0.3); transition:background .3s,width .3s; padding:0; }
.hc-dots button.on{ background:var(--ink); width:42px; }
@media (max-width:820px){
  /* Stack: image on top, then the content. Dots move into the normal flow
     between them (centred) instead of being absolutely positioned with a
     fragile vw-based offset that floated them in empty space. */
  .hc-slide{ grid-template-columns:1fr; grid-template-rows:auto auto auto; min-height:0; }
  /* Image block: full-width, flex-centred so the product sits dead-centre
     (it was drifting right inside the grid). */
  .hc-media{ order:-1; width:100%; aspect-ratio:auto; min-height:0;
    display:flex; align-items:center; justify-content:center;
    padding:clamp(20px,5vw,32px) 0 clamp(8px,2vw,16px); }
  .hc-media img{ width:auto; max-width:62%; height:auto; max-height:min(40vh,300px); aspect-ratio:4/5; margin:0 auto; }
  .hc-dots{ position:static; order:0; justify-content:center; margin:6px 0 0; }
  .hc-content{ order:1; padding-top:18px; padding-bottom:30px; text-align:left; }
}
@media (max-width:560px){
  /* On phones the hero title must shrink and break long words so it never
     pushes the page wider than the viewport (was overflowing ~28px). */
  .hc-title{ font-size:clamp(1.9rem,8vw,2.6rem); overflow-wrap:anywhere; margin-bottom:14px; }
  .hc-content{ padding-left:24px; padding-right:24px; }
  .hc-content .kicker{ margin-bottom:12px; }
  .hc-price{ margin-bottom:20px; }
  /* Hide the absolute prev/next arrows on phones — they sat on top of the
     Explore / Shop all CTA row. Dots + swipe still drive the carousel. */
  .hc-arrows{ display:none; }
  /* Stack the two CTAs full-width so neither gets clipped at the screen edge. */
  .hc-cta{ flex-direction:column; gap:10px; }
  .hc-cta .btn{ width:100%; justify-content:center; }
}

/* ============================================================
   BUNDLE card (named + per-item price)
   ============================================================ */
.bundle{ flex-wrap:wrap; }
.bundle-items{ display:flex; align-items:flex-start; gap:8px; flex-wrap:wrap; }
.bundle-item{ display:flex; flex-direction:column; gap:7px; width:128px; }
.bundle-item .bi-thumb{ aspect-ratio:1/1; border-radius:var(--r-sm); overflow:hidden; background:var(--white); box-shadow:var(--sh-1); transition:transform .35s var(--ease-out); }
.bundle-item:hover .bi-thumb{ transform:translateY(-4px); }
.bundle-item .bi-thumb img{ width:100%; height:100%; object-fit:cover; }
.bundle-item .bi-name{ font-size:0.82rem; font-weight:600; line-height:1.25; letter-spacing:-0.01em; }
.bundle-item .bi-price{ font-size:0.8rem; font-weight:600; color:var(--ink-2); }
.bundle-plus{ align-self:center; padding-top:42px; }

/* set-page: per-item variant + product link */
.si-body a{ display:inline-block; }
.si-body a:hover .si-name{ text-decoration:underline; }
.si-var{ margin-top:6px; display:flex; gap:7px; align-items:center; flex-wrap:wrap; }
.si-var select{ font-family:var(--sans); font-size:0.76rem; font-weight:500; border:1px solid var(--line-2); border-radius:100px; padding:5px 12px; background:var(--white); outline:none; color:var(--ink-2); }
.si-swatch{ width:18px; height:18px; border-radius:50%; cursor:pointer; box-shadow:inset 0 0 0 1px rgba(0,0,0,.12); }
.si-swatch.on{ box-shadow:0 0 0 1.5px var(--canvas),0 0 0 3px var(--ink); }

/* ============================================================
   FAVORITE (working)
   ============================================================ */
.fav.on{ opacity:1; transform:scale(1); background:var(--white); }
.fav.on svg{ fill:var(--accent); stroke:var(--accent); }
.product:hover .fav.on, .fav.on{ opacity:1; }

/* ============================================================
   STICKY BOTTOM CART BAR + DRAWER
   ============================================================ */
.cart-bar{ position:fixed; left:0; right:0; bottom:0; width:100%; max-width:100%; box-sizing:border-box; z-index:88; transform:translateY(140%); transition:transform .45s var(--ease-out); padding:0 var(--pad) calc(14px + env(safe-area-inset-bottom)); pointer-events:none; overflow:hidden; clip-path:inset(0); }
.cart-bar.show{ transform:translateY(0); }
.cart-bar .cb-inner{ max-width:640px; margin:0 auto; background:var(--ink); color:#fff; border-radius:100px; box-shadow:var(--sh-lift); display:flex; align-items:center; justify-content:space-between; gap:14px; padding:11px 11px 11px 22px; pointer-events:auto; }
.cb-left{ display:flex; align-items:center; gap:12px; font-size:0.92rem; min-width:0; }
.cb-count{ background:var(--accent); color:#fff; min-width:26px; height:26px; padding:0 7px; border-radius:100px; display:grid; place-items:center; font-size:0.8rem; font-weight:700; flex-shrink:0; }
.cb-total{ font-weight:700; white-space:nowrap; }
.cb-label{ opacity:.7; }
.cb-go{ background:#fff; color:var(--ink); border:0; border-radius:100px; padding:12px 22px; font-weight:600; font-size:0.88rem; white-space:nowrap; flex-shrink:0; }

.drawer{ position:fixed; inset:0; z-index:115; visibility:hidden; overflow:hidden; clip-path:inset(0); } /* clip-path:inset(0) hard-clips the off-canvas panel to the viewport box so its translateX(101%) can never extend the page width in any browser (contain/overflow alone leaked in some engines) */
.drawer.open{ visibility:visible; }
.drawer-back{ position:absolute; inset:0; background:rgba(14,14,16,.42); opacity:0; transition:opacity .35s; }
.drawer.open .drawer-back{ opacity:1; }
.drawer-panel{ position:absolute; top:0; right:0; bottom:0; width:min(430px,94vw); background:var(--canvas); display:flex; flex-direction:column; transform:translateX(101%); transition:transform .42s var(--ease-out); box-shadow:var(--sh-lift); }
.drawer.open .drawer-panel{ transform:none; }
.drawer-head{ display:flex; justify-content:space-between; align-items:center; padding:22px 24px; border-bottom:1px solid var(--line); }
.drawer-head h3{ font-size:1.2rem; font-weight:700; letter-spacing:-0.02em; }
.drawer-close{ background:var(--mist); border:0; width:38px; height:38px; border-radius:50%; font-size:1rem; }
.drawer-items{ flex:1; overflow-y:auto; padding:4px 24px; }
.drawer-empty{ padding:64px 10px; text-align:center; color:var(--ink-3); }
.drawer-empty svg{ width:40px; height:40px; stroke:var(--line-2); fill:none; stroke-width:1.4; margin-bottom:14px; }
.di{ display:flex; gap:14px; padding:16px 0; border-bottom:1px solid var(--line); }
.di img{ width:66px; height:66px; border-radius:var(--r-sm); object-fit:cover; flex-shrink:0; background:var(--mist); }
.di-body{ flex:1; min-width:0; display:flex; flex-direction:column; gap:3px; }
.di-top{ display:flex; justify-content:space-between; gap:10px; }
.di-name{ font-weight:600; font-size:0.95rem; letter-spacing:-0.01em; }
.di-price{ font-weight:600; font-size:0.9rem; white-space:nowrap; }
.di-qty{ display:inline-flex; align-items:center; gap:12px; margin-top:6px; background:var(--mist); border-radius:100px; padding:4px; width:max-content; }
.di-qty button{ width:27px; height:27px; border:0; background:var(--white); border-radius:50%; font-size:1rem; box-shadow:var(--sh-1); }
.di-qty span{ font-size:0.85rem; font-weight:600; min-width:14px; text-align:center; }
.di-remove{ background:none; border:0; color:var(--ink-3); font-size:0.72rem; font-weight:600; align-self:flex-start; margin-top:4px; cursor:pointer; }
.di-remove:hover{ color:var(--accent); }
.drawer-foot{ padding:20px 24px calc(22px + env(safe-area-inset-bottom)); border-top:1px solid var(--line); }
.drawer-foot .sub{ display:flex; justify-content:space-between; align-items:baseline; margin-bottom:6px; }
.drawer-foot .sub .st{ font-size:1.15rem; font-weight:700; }
.drawer-foot .ship{ font-size:0.8rem; color:var(--ink-2); margin-bottom:14px; }
.size-table{ width:100%; border-collapse:collapse; margin:16px 0 28px; font-size:0.9rem; }
.size-table th, .size-table td{ text-align:left; padding:11px 12px; border-bottom:1px solid var(--line); }
.size-table th{ font-size:0.68rem; text-transform:uppercase; letter-spacing:0.06em; color:var(--ink-3); font-weight:600; }
.size-table tr td:first-child{ font-weight:600; }
.size-table tr.hi td{ background:var(--mist); }
.guide-body h4{ font-size:1.02rem; font-weight:700; margin:10px 0 8px; letter-spacing:-0.01em; }
.guide-tip{ display:flex; gap:12px; margin-top:13px; }
.guide-tip .gt-n{ width:24px; height:24px; border-radius:50%; background:var(--ink); color:#fff; display:grid; place-items:center; font-size:0.72rem; font-weight:700; flex-shrink:0; }
.guide-tip p{ font-size:0.9rem; color:var(--ink-2); }
.guide-note{ margin-top:24px; padding:16px 18px; background:var(--mist); border-radius:var(--r-sm); font-size:0.88rem; color:var(--ink-2); }
.gallery-fav{ position:absolute; top:16px; right:16px; z-index:4; width:46px; height:46px; border-radius:50%; background:rgba(255, 255, 255, 0.80); backdrop-filter:blur(6px); box-shadow:var(--sh-1); }
.gallery-fav:hover{ background:var(--white); }
.gallery-fav.on{ background:var(--white); }
.pdp-deliver{ font-size:0.86rem; color:var(--ink-2); margin-top:12px; }
.pdp-deliver svg{ stroke:var(--ink-2); }
.notifybox{ margin:24px 0 8px; padding:18px 20px; background:var(--mist,#f3f0ea); border-radius:var(--r-sm,12px); }
.notifybox .notify-title{ font-size:0.92rem; font-weight:600; margin-bottom:10px; color:var(--ink); }
.notifybox .notify-msg{ font-size:0.85rem; color:var(--ink-2); margin-top:10px; display:flex; align-items:center; gap:8px; }
.notify{ display:flex; gap:10px; margin:4px 0 14px; }
.notifybox .notify{ margin:0; }
.notify input{ flex:1; min-width:0; border:1px solid var(--line-2); border-radius:100px; padding:14px 18px; font-family:var(--sans); font-size:0.95rem; outline:none; transition:border-color .2s; }
.notify input:focus{ border-color:var(--ink); }
.notify .btn{ flex-shrink:0; }
.fav-tag{ background:var(--accent); }

/* ============================================================
   FREE-SHIP PROGRESS (in announce) · SOCIAL PROOF · GIFT · AUTH
   ============================================================ */
.ship-track{ display:inline-block; width:110px; height:5px; border-radius:5px; background:rgba(255,255,255,.26); vertical-align:middle; margin:0 10px; overflow:hidden; }
.ship-track i{ display:block; height:100%; width:0; background:#fff; border-radius:5px; transition:width .5s var(--ease-out); }

.social-proof{ display:flex; gap:20px; flex-wrap:wrap; margin-top:20px; padding-top:18px; border-top:1px solid var(--line); }
.social-proof span{ display:inline-flex; gap:7px; align-items:center; font-size:0.86rem; color:var(--ink-2); }
.social-proof b{ color:var(--ink); font-weight:700; }
.social-proof svg{ width:16px; height:16px; stroke:var(--ink-3); fill:none; stroke-width:1.6; }

.gift{ border:1px solid var(--line); border-radius:var(--r); padding:4px 18px; margin:20px 0; }
.gift-head{ display:flex; align-items:center; gap:12px; padding:14px 0; cursor:pointer; }
.gift-head .gi{ width:36px; height:36px; border-radius:50%; background:var(--mist); display:grid; place-items:center; flex-shrink:0; }
.gift-head .gi svg{ width:18px; height:18px; stroke:var(--ink); fill:none; stroke-width:1.5; }
.gift-head .gt{ flex:1; }
.gift-head .gt b{ font-weight:600; display:block; }
.gift-head .gt span{ font-size:0.82rem; color:var(--ink-3); }
.gift-check{ width:22px; height:22px; border:1.6px solid var(--line-2); border-radius:6px; display:grid; place-items:center; flex-shrink:0; transition:all .2s; }
.gift-check svg{ width:13px; height:13px; stroke:#fff; fill:none; stroke-width:2.4; opacity:0; }
.gift.on .gift-check{ background:var(--ink); border-color:var(--ink); }
.gift.on .gift-check svg{ opacity:1; }
.gift-body{ max-height:0; overflow:hidden; transition:max-height .35s var(--ease-out); }
.gift.on .gift-body{ max-height:160px; }
.gift-body textarea{ width:100%; border:1px solid var(--line-2); border-radius:var(--r-sm); padding:12px 14px; font-family:var(--sans); font-size:0.92rem; resize:none; outline:none; margin:4px 0 16px; }

/* AUTH pages */
.auth-wrap{ display:grid; grid-template-columns:1.05fr 1fr; min-height:100vh; }
.auth-aside{ position:relative; overflow:hidden; background:var(--ink); color:#fff; padding:clamp(36px,4vw,64px); display:flex; flex-direction:column; justify-content:space-between; }
.auth-aside .aa-img{ position:absolute; inset:0; }
.auth-aside .aa-img img{ width:100%; height:100%; object-fit:cover; opacity:.9; }
.auth-aside::after{ content:''; position:absolute; inset:0; background:linear-gradient(160deg, rgba(20,18,16,.55), rgba(20,18,16,.15)); }
.auth-aside > *{ position:relative; z-index:2; }
.auth-aside .brand{ font-size:1.7rem; }
.auth-aside .aa-quote{ font-size:clamp(1.8rem,2.6vw,2.6rem); font-weight:760; letter-spacing:-0.03em; line-height:1.05; max-width:16ch; }
.auth-aside .aa-sub{ color:#c9c3be; margin-top:14px; max-width:34ch; }
.auth-main{ display:flex; align-items:center; justify-content:center; padding:clamp(28px,5vw,64px); }
.auth-card{ width:min(400px,100%); }
.auth-card .brand{ font-size:1.5rem; margin-bottom:30px; display:inline-block; }
.auth-card h1{ font-size:clamp(1.9rem,3vw,2.4rem); font-weight:760; letter-spacing:-0.03em; margin-bottom:8px; }
.auth-card .sub{ color:var(--ink-2); margin-bottom:28px; }
.auth-form{ display:flex; flex-direction:column; gap:15px; }
.auth-form .row{ display:flex; justify-content:space-between; align-items:center; font-size:0.86rem; }
.auth-form .row a{ font-weight:600; color:var(--accent); }
.auth-check{ display:inline-flex; align-items:center; gap:9px; color:var(--ink-2); cursor:pointer; }
.auth-check input{ width:17px; height:17px; accent-color:var(--ink); }
.auth-sep{ display:flex; align-items:center; gap:14px; color:var(--ink-3); font-size:0.8rem; margin:6px 0; }
.auth-sep::before, .auth-sep::after{ content:''; flex:1; height:1px; background:var(--line); }
.auth-social{ display:flex; gap:10px; }
.auth-social button{ flex:1; border:1px solid var(--line-2); background:var(--white); border-radius:100px; padding:12px; font-weight:600; font-size:0.88rem; display:inline-flex; align-items:center; justify-content:center; gap:8px; }
.auth-social button:hover{ border-color:var(--ink); }
.auth-foot{ text-align:center; margin-top:24px; font-size:0.9rem; color:var(--ink-2); }
.auth-foot a{ font-weight:600; color:var(--ink); border-bottom:1px solid var(--ink); }
.auth-back{ font-size:0.84rem; color:var(--ink-3); margin-bottom:24px; display:inline-flex; gap:7px; align-items:center; }
@media (max-width:820px){ .auth-wrap{ grid-template-columns:1fr; } .auth-aside{ display:none; } }

/* ---- Full-screen auth screen (logged-out My Account) ---- */
body.ababa-auth .site-head,
body.ababa-auth .announce,
body.ababa-auth .site-foot,
body.ababa-auth .mobile-nav,
body.ababa-auth .page-head,
body.ababa-auth .crumb,
body.ababa-auth .woocommerce-breadcrumb,
body.ababa-auth .entry-title,
body.ababa-auth .page-title,
body.ababa-auth h1.entry-title { display:none !important; }
body.ababa-auth { background:var(--canvas); margin:0 !important; padding:0 !important; }
/* Strip ALL page wrappers' spacing/width so the auth screen owns the viewport. */
body.ababa-auth .wrap,
body.ababa-auth .page-body,
body.ababa-auth .content-area,
body.ababa-auth main,
body.ababa-auth .site-main,
body.ababa-auth #content,
body.ababa-auth #primary,
body.ababa-auth .woocommerce,
body.ababa-auth .woocommerce-account,
body.ababa-auth .woocommerce-account .woocommerce{
	margin:0 !important; padding:0 !important; max-width:none !important; width:100% !important;
}
body.ababa-auth .auth-wrap{ min-height:100vh; height:100vh; }
body.ababa-auth .woocommerce-notices-wrapper{ position:absolute; top:16px; left:50%; transform:translateX(-50%); max-width:400px; width:90%; z-index:5; }

/* ---- Login / Register toggle (Ababa shows ONE card at a time) ---- */
.auth-main #ababa-register{ display:none; }
.auth-main.show-register #ababa-register{ display:block; margin-top:0 !important; }
.auth-main.show-register > .auth-card:first-of-type{ display:none; }

/* ============================================================
   ACCOUNT (tabs · addresses · orders · password)
   ============================================================ */
.account{ display:grid; grid-template-columns:240px 1fr; gap:clamp(28px,4vw,56px); padding-bottom:var(--rhythm); align-items:start; }
.acc-nav,
.woocommerce-account .woocommerce-MyAccount-navigation.acc-nav,
.account > .acc-nav{ position:sticky; top:90px; display:flex !important; flex-direction:column; align-items:stretch; gap:4px; width:100% !important; float:none !important; margin:0 !important; }
.acc-nav button,
.acc-nav a,
.acc-nav li > a,
.acc-nav .woocommerce-MyAccount-navigation-link a{ width:100% !important; box-sizing:border-box; align-self:stretch; text-align:left; background:none; border:0; padding:12px 16px; border-radius:var(--r-sm); font-size:0.95rem; font-weight:500; color:var(--ink-2); display:flex; gap:11px; align-items:center; white-space:nowrap; transition:background .2s,color .2s; text-decoration:none; }
.acc-nav button:hover,
.acc-nav a:hover{ color:var(--ink); }
.acc-nav button.on,
.acc-nav a.on{ background:var(--ink); color:#fff; }
.acc-nav button svg,
.acc-nav a svg{ width:18px; height:18px; stroke:currentColor; fill:none; stroke-width:1.6; flex-shrink:0; }
.acc-nav .acc-logout{ margin-top:8px; color:var(--ink-3); }
/* Logged-in My Account: hide WordPress's own page title / breadcrumb so only the
   Ababa "Hello, name" .page-head shows (avoids the duplicate "My account" title). */
body.ababa-account .entry-header,
body.ababa-account header.entry-header,
body.ababa-account .entry-title,
body.ababa-account .page > .entry-title,
body.ababa-account .woocommerce-breadcrumb,
body.ababa-account .page-body > .page-title:not(.display){ display:none !important; }

.acc-panel{ display:none; } .acc-panel.on{ display:block; }
.acc-panel h2,
.acc-panel-head h2{ font-size:1.6rem; font-weight:760; letter-spacing:-0.025em; margin-bottom:6px; }
.acc-panel .psub,
.acc-panel-head .psub{ color:var(--ink-2); margin-bottom:26px; }

/* ---- WooCommerce Account ENDPOINTS -> Ababa look (Profile Details, Addresses) ---- */
/* Edit-account + address forms: Ababa field styling, no WC boxes/floats. */
.woocommerce-MyAccount-content form.edit-account,
.woocommerce-MyAccount-content form.woocommerce-EditAccountForm,
.woocommerce-MyAccount-content form.edit-address,
.woocommerce-MyAccount-content .woocommerce-address-fields__field-wrapper{
	max-width:560px; display:flex; flex-direction:column; gap:16px;
}
.woocommerce-MyAccount-content .form-row,
.woocommerce-MyAccount-content p.woocommerce-form-row{
	float:none !important; width:100% !important; margin:0 !important; padding:0 !important; box-sizing:border-box;
}
/* First/last name on one row (Ababa acc-row) */
.woocommerce-MyAccount-content form.edit-account{ display:grid; grid-template-columns:1fr 1fr; gap:16px; max-width:560px; }
.woocommerce-MyAccount-content form.edit-account > .form-row-wide,
.woocommerce-MyAccount-content form.edit-account > fieldset,
.woocommerce-MyAccount-content form.edit-account > p:last-of-type,
.woocommerce-MyAccount-content form.edit-account > .clear{ grid-column:1 / -1; }
.woocommerce-MyAccount-content .clear{ display:none !important; }
.woocommerce-MyAccount-content label{ display:block; font-size:0.82rem !important; font-weight:600 !important; color:var(--ink-2) !important; margin-bottom:7px !important; }
.woocommerce-MyAccount-content input.input-text,
.woocommerce-MyAccount-content input[type="text"],
.woocommerce-MyAccount-content input[type="email"],
.woocommerce-MyAccount-content input[type="tel"],
.woocommerce-MyAccount-content input[type="password"],
.woocommerce-MyAccount-content select,
.woocommerce-MyAccount-content .select2-selection{
	width:100% !important; box-sizing:border-box; font-family:var(--sans,inherit) !important; font-size:1rem !important;
	color:var(--ink) !important; border:1px solid var(--line-2,#dcdcdc) !important; border-radius:var(--r-sm,14px) !important;
	background:var(--white,#fff) !important; padding:14px 16px !important; min-height:0 !important; line-height:1.3 !important;
}
.woocommerce-MyAccount-content input:focus,
.woocommerce-MyAccount-content select:focus{ outline:none !important; border-color:var(--ink) !important; box-shadow:0 0 0 3px rgba(0,0,0,.06) !important; }
/* Password-change fieldset -> clean section, no border box */
.woocommerce-MyAccount-content fieldset{ border:0 !important; padding:0 !important; margin:8px 0 0 !important; display:flex; flex-direction:column; gap:16px; }
.woocommerce-MyAccount-content fieldset legend{ font-weight:700; font-size:1rem; padding:0; margin-bottom:4px; }
.woocommerce-MyAccount-content #account_display_name_description,
.woocommerce-MyAccount-content #account_display_name_description em{ font-size:0.8rem; color:var(--ink-3); font-style:normal; }
/* Save buttons -> Ababa black pill */
.woocommerce-MyAccount-content button[type="submit"],
.woocommerce-MyAccount-content .woocommerce-Button,
.woocommerce-MyAccount-content input.button{
	align-self:flex-start; justify-self:start; background:var(--ink,#1b1b1b) !important; color:#fff !important;
	border:0 !important; border-radius:100px !important; font-family:var(--sans,inherit) !important; font-weight:600 !important;
	font-size:0.96rem !important; padding:14px 30px !important; cursor:pointer; transition:transform .25s, opacity .25s;
}
.woocommerce-MyAccount-content button[type="submit"]:hover,
.woocommerce-MyAccount-content .woocommerce-Button:hover{ transform:translateY(-2px); opacity:.92; }
/* Addresses landing: two cards (billing / shipping) side by side, Ababa style */
.woocommerce-MyAccount-content .woocommerce-Addresses,
.woocommerce-MyAccount-content .woocommerce-Addresses.col2-set,
.woocommerce-MyAccount-content .u-columns.addresses{
	display:grid !important; grid-template-columns:1fr 1fr; gap:20px; margin:18px 0 0; width:100%; float:none !important;
}
/* Clear WooCommerce's float-based two-column layout so cards align in the grid. */
.woocommerce-MyAccount-content .woocommerce-Addresses::before,
.woocommerce-MyAccount-content .woocommerce-Addresses::after,
.woocommerce-MyAccount-content .col2-set::before,
.woocommerce-MyAccount-content .col2-set::after{ content:none !important; display:none !important; }
.woocommerce-MyAccount-content .woocommerce-Address,
.woocommerce-MyAccount-content .u-column1,
.woocommerce-MyAccount-content .u-column2,
.woocommerce-MyAccount-content .u-column1.woocommerce-Address,
.woocommerce-MyAccount-content .u-column2.woocommerce-Address{
	float:none !important; width:100% !important; max-width:none !important; margin:0 !important; clear:none !important;
	border:1px solid var(--line,#eee); border-radius:var(--r,20px); padding:24px; box-sizing:border-box;
}
@media (max-width:760px){
	.woocommerce-MyAccount-content .woocommerce-Addresses,
	.woocommerce-MyAccount-content .woocommerce-Addresses.col2-set{ grid-template-columns:1fr; }
}
.woocommerce-MyAccount-content .woocommerce-Address-title{ display:flex; justify-content:space-between; align-items:center; gap:12px; margin-bottom:12px; }
.woocommerce-MyAccount-content .woocommerce-Address-title h3{ font-size:1.05rem; font-weight:700; letter-spacing:-0.01em; margin:0; white-space:nowrap; }
.woocommerce-MyAccount-content .woocommerce-Address-title .edit{
	flex-shrink:0; white-space:nowrap; font-size:0.82rem; font-weight:600; color:var(--ink); text-decoration:none;
	border:1px solid var(--line-2,#dcdcdc); padding:7px 16px; border-radius:100px;
}
.woocommerce-MyAccount-content .woocommerce-Address-title .edit:hover{ background:var(--ink); color:#fff; }
.woocommerce-MyAccount-content address{ font-style:normal; color:var(--ink-2); line-height:1.7; }
/* WC's "The following addresses will be used…" intro — Ababa shows its own psub. */
.woocommerce-MyAccount-content > .woocommerce-Address ~ p,
.woocommerce-MyAccount-content > p.myaccount-intro,
.woocommerce-MyAccount-content .woocommerce-Addresses + p,
body.ababa-account .woocommerce-MyAccount-content > p:first-of-type:not(.psub){ display:none; }
.acc-row{ display:flex; gap:16px; } .acc-row .field{ flex:1; min-width:0; }
.acc-row .field input{ min-width:0; width:100%; }
.addr-grid{ display:grid; grid-template-columns:1fr 1fr; gap:16px; }
.addr-card{ border:1px solid var(--line); border-radius:var(--r); padding:20px 22px; position:relative; }
.addr-card.main{ border-color:var(--ink); }
.addr-top{ display:flex; justify-content:space-between; align-items:center; margin-bottom:10px; gap:10px; }
.addr-card h4{ font-weight:700; }
.addr-badge{ font-size:0.62rem; font-weight:700; letter-spacing:0.06em; text-transform:uppercase; background:var(--ink); color:#fff; padding:4px 9px; border-radius:100px; }
.addr-card p{ color:var(--ink-2); font-size:0.9rem; line-height:1.55; }
.addr-actions{ display:flex; gap:16px; margin-top:14px; font-size:0.84rem; font-weight:600; }
.addr-actions button{ background:none; border:0; color:var(--ink-2); cursor:pointer; padding:0; }
.addr-actions button:hover{ color:var(--ink); }
.addr-actions button.del:hover{ color:var(--accent); }
.addr-add{ border:1.5px dashed var(--line-2); border-radius:var(--r); display:flex; flex-direction:column; align-items:center; justify-content:center; gap:10px; min-height:170px; color:var(--ink-2); cursor:pointer; font-weight:600; transition:all .2s; }
.addr-add:hover{ border-color:var(--ink); color:var(--ink); background:var(--mist); }
.addr-add .plus{ width:40px; height:40px; border-radius:50%; background:var(--mist); display:grid; place-items:center; font-size:1.4rem; }
.order{ border:1px solid var(--line); border-radius:var(--r); overflow:hidden; margin-bottom:16px; }
.order-head{ display:flex; justify-content:space-between; align-items:center; gap:14px; padding:16px 22px; background:var(--mist); flex-wrap:wrap; }
.order-no{ font-weight:600; } .order-date{ font-size:0.82rem; color:var(--ink-3); }
.order-status{ font-size:0.74rem; font-weight:700; padding:6px 12px; border-radius:100px; }
.st-shipped{ background:#e2ebf6; color:#0052ab; }
.st-delivered{ background:#daece0; color:#005b16; }
.st-prep{ background:#deebf9; color:var(--accent-d); }
.order-body{ padding:20px 22px; }
.order-items{ display:flex; gap:12px; flex-wrap:wrap; margin-bottom:20px; align-items:center; }
.order-items img{ width:54px; height:54px; border-radius:var(--r-xs); object-fit:cover; background:var(--mist); }
.order-items .oi-total{ margin-left:auto; font-weight:700; }
.track{ display:flex; }
.track-step{ flex:1; text-align:center; position:relative; font-size:0.74rem; color:var(--ink-3); }
.track-step::before{ content:''; position:absolute; top:9px; left:-50%; width:100%; height:2px; background:var(--line); z-index:0; }
.track-step:first-child::before{ display:none; }
.track-dot{ width:20px; height:20px; border-radius:50%; background:var(--white); border:2px solid var(--line); margin:0 auto 9px; position:relative; z-index:1; }
.track-step.done .track-dot{ background:var(--ink); border-color:var(--ink); }
.track-step.done{ color:var(--ink); font-weight:600; }
.track-step.done::before{ background:var(--ink); }
.order-track-link{ margin-top:16px; font-size:0.86rem; font-weight:600; border-bottom:1px solid var(--ink); padding-bottom:2px; display:inline-block; }
.addr-dialog{ position:relative; background:var(--canvas); border-radius:var(--r-lg); width:min(480px,95vw); max-height:88vh; overflow-y:auto; box-shadow:var(--sh-lift); padding:clamp(26px,3vw,38px); }
.addr-dialog .qv-close{ top:16px; right:16px; }
.addr-dialog .qv-title{ margin-bottom:20px; }
.addr-dialog .auth-form{ gap:14px; }

/* ============================================================
   404 · CONTACT · FAQ · ORDER DETAIL
   ============================================================ */
.error-page{ min-height:62vh; display:flex; flex-direction:column; align-items:center; justify-content:center; text-align:center; padding:clamp(48px,8vw,110px) var(--pad); }
.error-page .ecode{ font-size:clamp(6rem,20vw,13rem); font-weight:800; letter-spacing:-0.05em; line-height:0.85; background:linear-gradient(120deg,var(--ink),var(--accent)); -webkit-background-clip:text; background-clip:text; -webkit-text-fill-color:transparent; }
.error-page h1{ font-size:clamp(1.8rem,3.5vw,2.6rem); font-weight:760; letter-spacing:-0.03em; margin:18px 0 10px; }
.error-page p{ color:var(--ink-2); max-width:42ch; margin-bottom:28px; }
.error-actions{ display:flex; gap:13px; flex-wrap:wrap; justify-content:center; }

.contact-grid{ display:grid; grid-template-columns:1fr 1fr; gap:clamp(30px,4vw,64px); align-items:start; padding-bottom:var(--rhythm); }
.contact-grid > *{ min-width:0; }
.contact-info{ display:flex; flex-direction:column; gap:22px; }
.ci-item{ display:flex; gap:15px; }
.ci-item .ci-ic{ width:44px; height:44px; border-radius:50%; background:var(--mist); display:grid; place-items:center; flex-shrink:0; }
.ci-item .ci-ic svg{ width:20px; height:20px; stroke:var(--ink); fill:none; stroke-width:1.6; }
.ci-item h4{ font-weight:700; margin-bottom:3px; }
.ci-item p{ color:var(--ink-2); font-size:0.92rem; line-height:1.5; }
.contact-map{ aspect-ratio:16/7; border-radius:var(--r); overflow:hidden; margin-top:6px; background:repeating-linear-gradient(135deg,#eeebe5 0 1px,transparent 1px 12px),var(--mist); display:grid; place-items:center; color:var(--ink-3); font-size:0.8rem; font-weight:600; letter-spacing:0.08em; text-transform:uppercase; }

.faq-wrap{ max-width:760px; padding-bottom:var(--rhythm); }
.faq-cats{ display:flex; gap:9px; flex-wrap:wrap; margin-bottom:26px; }

.od-grid{ display:grid; grid-template-columns:1.4fr 0.9fr; gap:clamp(28px,4vw,52px); align-items:start; padding-bottom:var(--rhythm); }
.od-grid > *{ min-width:0; }
.od-box{ border:1px solid var(--line); border-radius:var(--r); padding:22px 24px; margin-bottom:18px; }
.od-box h3{ font-size:0.78rem; font-weight:600; letter-spacing:0.06em; text-transform:uppercase; color:var(--ink-3); margin-bottom:14px; }
.od-line{ display:flex; gap:14px; padding:14px 0; border-bottom:1px solid var(--line); }
.od-line:last-child{ border-bottom:0; }
.od-line img{ width:60px; height:60px; border-radius:var(--r-xs); object-fit:cover; background:var(--mist); }
.od-line .odl-body{ flex:1; min-width:0; }
.od-line .odl-name{ font-weight:600; }
.od-line .odl-meta{ font-size:0.82rem; color:var(--ink-3); }
.od-line .odl-price{ font-weight:600; white-space:nowrap; }
.od-tot{ display:flex; justify-content:space-between; font-size:0.92rem; color:var(--ink-2); padding:6px 0; }
.od-tot.grand{ font-size:1.1rem; font-weight:700; color:var(--ink); border-top:1px solid var(--line); margin-top:8px; padding-top:14px; }
@media (max-width:760px){ .contact-grid, .od-grid{ grid-template-columns:1fr; }
  /* Once the contact layout stacks, the form spans full width — so its inner
     name/email row must go single-column too, else the fields look cramped. */
  .contact-grid .form-grid{ grid-template-columns:1fr; }
}

/* ============================================================
   CHECKOUT STEPPER · SHIPPING · BLOG · ARTICLE
   ============================================================ */
.stepper{ display:flex; margin-bottom:clamp(28px,4vw,44px); }
.stp{ flex:1; text-align:center; position:relative; font-size:0.8rem; color:var(--ink-3); font-weight:600; }
.stp::before{ content:''; position:absolute; top:15px; left:-50%; width:100%; height:2px; background:var(--line); z-index:0; }
.stp:first-child::before{ display:none; }
.stp .sd{ width:32px; height:32px; border-radius:50%; background:var(--white); border:2px solid var(--line); margin:0 auto 9px; display:grid; place-items:center; font-weight:700; position:relative; z-index:1; }
.stp.done .sd, .stp.active .sd{ background:var(--ink); border-color:var(--ink); color:#fff; }
.stp.done::before, .stp.active::before{ background:var(--ink); }
.stp.active, .stp.done{ color:var(--ink); }
.co-step-pane{ display:none; } .co-step-pane.on{ display:block; }
.co-step-pane h2{ font-size:1.4rem; font-weight:760; letter-spacing:-0.025em; margin-bottom:20px; }
.co-nav{ display:flex; justify-content:space-between; gap:12px; margin-top:26px; flex-wrap:wrap; }
.ship-opt{ display:flex; align-items:center; gap:14px; border:1px solid var(--line-2); border-radius:var(--r); padding:16px 18px; cursor:pointer; margin-bottom:12px; transition:border-color .2s,background .2s; }
.ship-opt.on{ border-color:var(--ink); background:var(--mist); }
.ship-opt .rd{ width:20px; height:20px; border-radius:50%; border:2px solid var(--line-2); flex-shrink:0; display:grid; place-items:center; }
.ship-opt.on .rd{ border-color:var(--ink); } .ship-opt.on .rd::after{ content:''; width:10px; height:10px; border-radius:50%; background:var(--ink); }
.ship-opt .so-b{ flex:1; } .ship-opt .so-b b{ font-weight:600; display:block; } .ship-opt .so-b span{ font-size:0.84rem; color:var(--ink-3); }
.ship-opt .so-p{ font-weight:700; white-space:nowrap; }

.blog-feat{ display:grid; grid-template-columns:1.2fr 1fr; gap:clamp(24px,3vw,48px); align-items:center; margin-bottom:clamp(40px,5vw,72px); }
.blog-feat .bf-media{ aspect-ratio:4/3; border-radius:var(--r-lg); overflow:hidden; background:var(--mist); }
.blog-feat .bf-media img{ width:100%; height:100%; object-fit:cover; }
.blog-feat h2{ font-size:clamp(1.8rem,3.2vw,2.8rem); font-weight:760; letter-spacing:-0.03em; margin:14px 0; line-height:1.05; }
.blog-feat p{ color:var(--ink-2); margin-bottom:22px; max-width:46ch; }
.blog-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:clamp(22px,2.6vw,40px); }
.bpost{ display:flex; flex-direction:column; gap:13px; }
.bpost .bp-media{ aspect-ratio:4/3; border-radius:var(--r); overflow:hidden; background:var(--mist); }
.bpost .bp-media img{ width:100%; height:100%; object-fit:cover; transition:transform .6s var(--ease-out); }
.bpost:hover .bp-media img{ transform:scale(1.05); }
.bp-cat{ font-size:0.7rem; font-weight:600; letter-spacing:0.08em; text-transform:uppercase; color:var(--accent); }
.bpost h3{ font-size:1.2rem; font-weight:700; letter-spacing:-0.02em; line-height:1.22; }
.bp-meta{ font-size:0.82rem; color:var(--ink-3); }
.article{ max-width:720px; margin:0 auto; padding-bottom:var(--rhythm); }
.article .art-cover{ aspect-ratio:16/9; border-radius:var(--r-lg); overflow:hidden; background:var(--mist); margin:22px 0 30px; }
.article .art-cover img{ width:100%; height:100%; object-fit:cover; }
.article .art-lead{ font-size:1.26rem; color:var(--ink); font-weight:500; line-height:1.5; margin-bottom:24px; }
.article p{ font-size:1.08rem; line-height:1.75; color:var(--ink-2); margin-bottom:20px; }
.article h2{ font-size:1.5rem; font-weight:760; letter-spacing:-0.02em; margin:32px 0 14px; color:var(--ink); }
.article .art-meta{ display:flex; gap:14px; align-items:center; font-size:0.86rem; color:var(--ink-3); margin-top:8px; }
@media (max-width:860px){ .blog-grid{ grid-template-columns:repeat(2,1fr); } .blog-feat{ grid-template-columns:1fr; } }
@media (max-width:560px){ .blog-grid{ grid-template-columns:1fr; } }
@media (max-width:760px){
  .account{ grid-template-columns:1fr; }
  /* Match the high-specificity desktop sticky rule so the nav actually drops its
     sticky positioning on mobile — otherwise it stayed pinned and overlapped the
     content below as you scrolled. Becomes a horizontal scrolling tab strip. */
  .acc-nav,
  .woocommerce-account .woocommerce-MyAccount-navigation.acc-nav,
  .account > .acc-nav{ position:static !important; top:auto; flex-direction:row; overflow-x:auto; scrollbar-width:none; }
  .acc-nav a, .acc-nav button{ width:auto !important; white-space:nowrap; }
  /* In the horizontal strip Sign out must sit level with the other tabs — its
     desktop top-gap pushed it out of line. */
  .acc-nav .acc-logout{ margin-top:0; }
  .addr-grid{ grid-template-columns:1fr; }
  .acc-row{ flex-direction:column; }
}

/* ============================================================
   PROFILE MENU · PDP FAV · FAV PAGE · always-on favs
   ============================================================ */
.profile-menu{ position:fixed; z-index:120; background:var(--canvas); border:1px solid var(--line); border-radius:var(--r); box-shadow:var(--sh-lift); padding:8px; min-width:210px; opacity:0; transform:translateY(-8px); pointer-events:none; transition:opacity .22s,transform .22s; }
.profile-menu.open{ opacity:1; transform:none; pointer-events:auto; }
.profile-menu a{ display:flex; align-items:center; gap:11px; padding:11px 13px; border-radius:var(--r-sm); font-size:0.92rem; font-weight:500; }
.profile-menu a:hover{ background:var(--mist); }
.profile-menu a svg{ width:18px; height:18px; stroke:var(--ink); fill:none; stroke-width:1.6; }
.profile-menu .pm-count{ margin-left:auto; font-size:0.74rem; font-weight:600; color:var(--ink-3); background:var(--mist); padding:2px 8px; border-radius:100px; }
.profile-menu .pm-sep{ height:1px; background:var(--line); margin:6px 4px; }

.fav-btn{ width:56px; flex:0 0 auto; border:1px solid var(--line-2); background:var(--white); border-radius:100px; display:grid; place-items:center; transition:all .2s; cursor:pointer; }
.fav-btn svg{ width:22px; height:22px; stroke:var(--ink); fill:none; stroke-width:1.5; transition:all .2s; }
.fav-btn:hover{ border-color:var(--ink); }
.fav-btn.on{ border-color:var(--accent); background:#ecf3fc; }
.fav-btn.on svg{ fill:var(--accent); stroke:var(--accent); }

.rail-pedestal .fav, .set-card .fav{ opacity:1; transform:none; }
.set-card .fav{ z-index:3; }
.set-card .fav svg{ stroke:var(--ink); }
.set-card .fav.on svg{ fill:var(--accent); stroke:var(--accent); }

.fav-empty{ text-align:center; padding:80px 20px; color:var(--ink-3); }
.fav-empty svg{ width:46px; height:46px; stroke:var(--line-2); fill:none; stroke-width:1.3; margin-bottom:16px; }
.fav-empty h3{ font-size:1.6rem; font-weight:700; color:var(--ink); margin-bottom:10px; letter-spacing:-0.02em; }
.fav-empty .btn{ margin-top:18px; }
.fav-remove{ position:absolute; top:14px; right:14px; z-index:3; width:34px; height:34px; border-radius:50%; background:var(--white); box-shadow:var(--sh-1); border:0; display:grid; place-items:center; font-size:0.9rem; opacity:1; }
.fav-remove svg{ width:15px; height:15px; stroke:var(--ink); fill:none; stroke-width:1.8; }

/* hero centered (simpler, product-forward) */
.hero-head.hero-centered{ flex-direction:column; align-items:center; text-align:center; }
.hero-centered .hero-title{ max-width:none; }
.hero-centered .lede{ max-width:52ch; margin:20px auto 0; }
.hero-cta-row{ display:flex; gap:13px; flex-wrap:wrap; justify-content:center; margin-top:26px; }
.hero-cta-row .hero-chips{ margin:0; }

/* slider arrows + horizontal tracks */
.sec-actions{ display:flex; gap:16px; align-items:center; }
.slider-nav{ display:flex; gap:8px; }
.slider-nav button{ width:46px; height:46px; border-radius:50%; border:1px solid var(--line-2); background:var(--white); display:grid; place-items:center; transition:all .25s var(--ease); }
.slider-nav button svg{ width:18px; height:18px; stroke:var(--ink); fill:none; stroke-width:1.9; transition:stroke .25s; }
.slider-nav button:hover:not(:disabled){ background:var(--ink); border-color:var(--ink); }
.slider-nav button:hover:not(:disabled) svg{ stroke:var(--white); }
.slider-nav button:disabled{ opacity:.32; }
/* Flex (not grid) horizontal scrollers. A grid scroller's container takes its
   intrinsic min-width from the sum of all tracks in some browsers, which made
   the cards extend the whole page width. Flex with `flex:0 0 <w>` children and
   `min-width:0` on the container keeps the scroll strictly inside the box. */
.hrow{ display:flex; flex-wrap:nowrap; gap:clamp(16px,2vw,26px); overflow-x:auto; scroll-snap-type:x proximity; scrollbar-width:none; padding:6px 0 12px; min-width:0; max-width:100%; contain:layout paint; }
.hrow::-webkit-scrollbar{ display:none; }
.hrow > *{ scroll-snap-align:start; flex:0 0 clamp(232px,23vw,288px); }
.bento-row{ display:flex; flex-wrap:nowrap; gap:16px; overflow-x:auto; scroll-snap-type:x proximity; scrollbar-width:none; padding:6px 0 12px; min-width:0; max-width:100%; contain:layout paint; }
.bento-row::-webkit-scrollbar{ display:none; }
.bento-row > *{ scroll-snap-align:start; flex:0 0 clamp(220px,25vw,310px); height:300px; }
.bento-row .bcell{ scroll-snap-align:start; grid-row:auto !important; grid-column:auto !important; }
.rev-verified{ font-size:0.66rem; font-weight:600; color:#1d7d3e; border:1px solid #a9d0b0; padding:2px 8px; border-radius:100px; }
.rev-date{ font-size:0.78rem; color:var(--ink-3); }
.rev-card .rc-stars{ color:var(--ink); font-size:0.82rem; letter-spacing:2px; margin-bottom:6px; }
.rev-card p{ color:var(--ink-2); font-size:0.94rem; }

/* homepage: testimonials + UGC */
.tgrid{ display:grid; grid-template-columns:repeat(3,1fr); gap:18px; }
.ugc{ display:grid; grid-template-columns:repeat(6,1fr); gap:12px; }
.ugc a{ aspect-ratio:1/1; border-radius:var(--r-sm); overflow:hidden; position:relative; background:var(--mist); }
.ugc img{ width:100%; height:100%; object-fit:cover; transition:transform .6s var(--ease-out); }
.ugc a:hover img{ transform:scale(1.08); }
.ugc a .ig{ position:absolute; inset:0; display:grid; place-items:center; opacity:0; transition:opacity .3s; color:var(--white); }
.ugc a:hover .ig{ opacity:1; }
.ugc a::after{ content:''; position:absolute; inset:0; background:rgba(20,20,22,0); transition:background .3s; }
.ugc a:hover::after{ background:rgba(20,20,22,.22); }

/* hero shoppable card + switcher */
.hero-shop{ position:absolute; left:clamp(14px,3vw,34px); bottom:clamp(14px,3vw,30px); z-index:5; background:rgba(255, 255, 255, 0.86); backdrop-filter:blur(14px); border-radius:var(--r); box-shadow:var(--sh-2); padding:16px 18px; display:flex; flex-direction:column; gap:13px; min-width:236px; }
.hs-info{ display:flex; flex-direction:column; gap:3px; }
.hs-cat{ font-size:0.68rem; font-weight:600; letter-spacing:0.08em; text-transform:uppercase; color:var(--ink-3); }
.hs-name{ font-size:1.12rem; font-weight:600; letter-spacing:-0.02em; }
.hs-buy{ display:flex; justify-content:space-between; align-items:center; gap:12px; }
.hs-price{ font-size:1.05rem; font-weight:700; }
.hs-buy .btn{ padding:10px 18px; font-size:0.82rem; }
.hero-switch{ position:absolute; right:clamp(14px,3vw,34px); bottom:clamp(14px,3vw,30px); z-index:5; display:flex; gap:10px; }
.hero-switch button{ width:58px; height:58px; border-radius:var(--r-xs); overflow:hidden; border:1px solid var(--line); background:var(--white); padding:3px; transition:box-shadow .25s, transform .25s; }
.hero-switch button img{ width:100%; height:100%; object-fit:cover; border-radius:7px; }
.hero-switch button.on{ box-shadow:0 0 0 2px var(--ink); }
.hero-switch button:hover{ transform:translateY(-3px); }

/* tiny toast */
.toast{ position:fixed; left:50%; bottom:28px; translate:-50% 20px; z-index:90; background:var(--ink); color:var(--white); padding:13px 20px; border-radius:100px; font-size:0.88rem; font-weight:500; box-shadow:var(--sh-lift); opacity:0; pointer-events:none; transition:opacity .3s, translate .3s; display:flex; align-items:center; gap:10px; }
.toast.show{ opacity:1; translate:-50% 0; }
.toast .tk{ width:20px; height:20px; border-radius:50%; background:#2e9e52; display:grid; place-items:center; color:#fff; font-size:0.7rem; }

@media (max-width:720px){ .reviews{ grid-template-columns:1fr } .bundle{ grid-template-columns:1fr; } .bundle-side{ text-align:left; align-items:flex-start } .tgrid{ grid-template-columns:1fr } .ugc{ grid-template-columns:repeat(3,1fr) } }
@media (max-width:560px){ .hero-shop{ left:12px; right:12px; bottom:12px; min-width:0 } .hero-switch{ top:14px; bottom:auto; right:12px } .chip-b{ display:none } .ugc{ grid-template-columns:repeat(2,1fr) } }

/* ============================================================
   HERO — floating product on white
   ============================================================ */
.hero{ position:relative; padding-top:clamp(40px,6vw,80px); padding-bottom:clamp(20px,3vw,40px); overflow:hidden; }
.hero-head{ display:flex; justify-content:space-between; align-items:flex-end; gap:30px; flex-wrap:wrap; }
.hero-title{ max-width:14ch; }
.hero-title .accent{ -webkit-text-fill-color:transparent; background:linear-gradient(120deg, var(--ink), var(--accent)); -webkit-background-clip:text; background-clip:text; }
.hero-side{ max-width:34ch; padding-bottom:8px; }
.hero-side .lede{ margin-bottom:22px; }
.hero-stage{
  position:relative; margin-top:clamp(28px,4vw,52px); border-radius:var(--r-lg);
  background:linear-gradient(180deg, #f0f0f0 0%, #dedede 100%);
  min-height:min(64vh,580px); display:grid; place-items:center; padding:clamp(30px,5vw,60px);
  overflow:hidden;
}
.hero-product{ position:relative; width:min(370px,62vw); aspect-ratio:3/4; }
.hero-product .ph{ position:absolute; inset:0; border-radius:var(--r); background:linear-gradient(158deg, var(--white) 0%, #f3f3f3 100%); box-shadow:var(--sh-product); border:1px solid #dedede; }
.hero-product::after{   /* contact shadow */
  content:''; position:absolute; left:8%; right:8%; bottom:-26px; height:46px;
  background:radial-gradient(50% 100% at 50% 0%, rgba(20,20,22,.26), transparent 70%);
  filter:blur(8px); z-index:-1;
}
@media (prefers-reduced-motion:no-preference){ .hero-product{ animation:float 7s ease-in-out infinite; } }
@keyframes float{ 0%,100%{ transform:translateY(0) } 50%{ transform:translateY(-14px) } }
.spec-chip{
  position:absolute; background:rgba(255, 255, 255, 0.82); backdrop-filter:blur(10px);
  box-shadow:var(--sh-2); border-radius:100px; padding:11px 16px; display:flex; align-items:center; gap:10px;
  font-size:0.84rem; font-weight:600; white-space:nowrap;
}
.spec-chip .dot{ width:8px; height:8px; border-radius:50%; background:var(--accent); }
.spec-chip small{ font-weight:500; color:var(--ink-3); }
.chip-a{ top:14%; left:-2%; } .chip-b{ top:46%; right:-3%; } .chip-c{ bottom:12%; left:4%; }
@media (prefers-reduced-motion:no-preference){
  .chip-a{ animation:float 6s ease-in-out infinite .4s } .chip-b{ animation:float 6.6s ease-in-out infinite .9s } .chip-c{ animation:float 7.2s ease-in-out infinite .2s }
}
.hero-foot{ display:flex; justify-content:space-between; align-items:center; gap:20px; margin-top:26px; flex-wrap:wrap; }
.hero-stats{ display:flex; gap:clamp(24px,4vw,56px); }
.hero-stat .n{ font-size:1.7rem; font-weight:760; letter-spacing:-0.03em; }
.hero-stat .l{ font-size:0.76rem; color:var(--ink-3); font-weight:500; }

/* ============================================================
   SHOWCASE RAIL — products on pedestals, scroll-snap
   ============================================================ */
.rail{ display:flex; flex-wrap:nowrap; gap:22px; overflow-x:auto; scroll-snap-type:x proximity; padding:8px 0 28px; scrollbar-width:none; min-width:0; max-width:100%; contain:layout paint; }
.rail > *{ flex:0 0 clamp(260px,30vw,360px); }
/* contain:layout paint isolates the scroller so its flex children's total width
   can never bleed into the page width (the real cause of the mobile sideways
   scroll). It excludes `size` so the rail still grows to its content height. */
/* Rails stay INSIDE the .wrap padding (no negative margin-inline). The old
   full-bleed trick (margin-inline:-pad) let the horizontal scroller's content
   extend the page width in some browsers, so the whole site could be dragged
   to the right. Keeping the rail within the gutter makes that impossible while
   it still scrolls horizontally on its own. */
.rail::-webkit-scrollbar{ display:none; }
.rail-card{ scroll-snap-align:start; }
.rail-pedestal{
  position:relative; aspect-ratio:1/1; border-radius:var(--r-lg); overflow:hidden;
  background:linear-gradient(180deg, var(--mist) 0%, var(--mist-2) 100%);
  display:grid; place-items:center; transition:transform .5s var(--ease-out), box-shadow .5s var(--ease-out);
}
.rail-card:hover .rail-pedestal{ transform:translateY(-8px); box-shadow:var(--sh-lift); }
.rail-pedestal .ph{ width:70%; height:70%; border-radius:var(--r-sm); }
.rail-pedestal .idx{ position:absolute; top:18px; left:20px; font-size:0.74rem; font-weight:700; letter-spacing:0.04em; color:var(--ink-3); }
.rail-pedestal .plus{ position:absolute; bottom:16px; right:16px; width:44px; height:44px; border-radius:50%; background:var(--white); box-shadow:var(--sh-1); display:flex; align-items:center; justify-content:center; font-size:1.3rem; transition:background .3s,color .3s,transform .3s; }
.rail-card:hover .plus{ background:var(--ink); color:var(--white); transform:rotate(90deg); }

/* ============================================================
   BENTO — asymmetric category mosaic
   ============================================================ */
.bento{ display:grid; grid-template-columns:repeat(4,1fr); grid-auto-rows:200px; gap:18px; }
.bcell{ position:relative; border-radius:var(--r); overflow:hidden; background:var(--mist); display:flex; flex-direction:column; justify-content:flex-end; padding:26px; }
.bcell .ph{ position:absolute; inset:0; transition:transform .8s var(--ease-out); }
.bcell:hover .ph{ transform:scale(1.05); }
.bcell .bc-body{ position:relative; z-index:2; }
.bcell h3{ font-size:1.7rem; font-weight:760; letter-spacing:-0.03em; }
.bcell .bc-meta{ font-size:0.78rem; font-weight:500; color:var(--ink-3); display:flex; align-items:center; gap:8px; }
.bcell .arrow{ position:absolute; top:22px; right:22px; z-index:2; width:40px; height:40px; border-radius:50%; background:var(--white); box-shadow:var(--sh-1); display:flex; align-items:center; justify-content:center; transition:transform .3s var(--ease); }
.bcell:hover .arrow{ transform:translate(3px,-3px); }
.bcell.tall{ grid-row:span 2; }
.bcell.wide{ grid-column:span 2; }
.bcell.dark{ background:var(--ink); color:var(--white); }
.bcell.dark .bc-meta{ color:#929292; }
.bcell.dark .arrow{ background:#242424; }
.bcell.dark .arrow svg{ stroke:var(--white); }

/* ============================================================
   FEATURE — big split statement
   ============================================================ */
.feature{ display:grid; grid-template-columns:1fr 1fr; gap:clamp(28px,4vw,64px); align-items:center; }
.feature.flip .feature-media{ order:2; }
.feature-media{ aspect-ratio:5/6; border-radius:var(--r-lg); overflow:hidden; background:var(--mist); }
.feature-media .ph{ width:100%; height:100%; }
.feature-body{ max-width:46ch; }
.feature-body .kicker{ margin-bottom:22px; }
.feature-body h2{ margin-bottom:22px; }
.feature-points{ list-style:none; margin:28px 0 32px; display:flex; flex-direction:column; gap:14px; }
.feature-points li{ display:flex; gap:14px; align-items:flex-start; font-size:0.98rem; color:var(--ink-2); }
.feature-points b{ color:var(--ink); font-weight:600; }
.feature-points .mk{ flex-shrink:0; width:24px; height:24px; border-radius:50%; background:var(--ink); color:var(--white); display:flex; align-items:center; justify-content:center; font-size:0.7rem; font-weight:700; margin-top:1px; }

/* marquee band */
.band{ background:var(--ink); color:var(--white); border-radius:var(--r-xl); overflow:hidden; padding:clamp(40px,5vw,64px) 0; }
.band-track{ display:flex; gap:64px; width:max-content; white-space:nowrap; animation:slide 32s linear infinite; }
.band-track span{ font-size:clamp(2rem,4vw,3.4rem); font-weight:760; letter-spacing:-0.03em; display:inline-flex; align-items:center; gap:64px; }
.band-track .dot{ width:12px; height:12px; border-radius:50%; background:var(--accent); }
@keyframes slide{ to{ transform:translateX(-50%) } }
@media (prefers-reduced-motion:reduce){ .band-track{ animation:none } }

/* promise row */
.promise{ display:grid; grid-template-columns:repeat(4,1fr); gap:20px; }
.promise-cell{ display:flex; flex-direction:column; gap:8px; padding:28px; background:var(--mist); border-radius:var(--r); }
.promise-cell .pi{ width:38px; height:38px; border-radius:50%; background:var(--white); box-shadow:var(--sh-1); display:flex; align-items:center; justify-content:center; margin-bottom:6px; }
.promise-cell .pi svg{ width:19px; height:19px; stroke:var(--ink); fill:none; stroke-width:1.6; }
.promise-cell h4{ font-size:1.05rem; font-weight:600; }
.promise-cell p{ font-size:0.86rem; color:var(--ink-2); }

.grid-4{ display:grid; grid-template-columns:repeat(4,1fr); gap:clamp(18px,2vw,30px); }

/* ============================================================
   SHOP / LISTING
   ============================================================ */
.page-head{ padding-top:clamp(40px,5vw,76px); padding-bottom:clamp(30px,4vw,52px); }
.crumb{ display:flex; gap:8px; align-items:center; font-size:0.78rem; font-weight:500; color:var(--ink-3); margin-bottom:24px; }
.crumb a:hover{ color:var(--ink); }
.page-head-row{ display:flex; justify-content:space-between; align-items:flex-end; gap:30px; flex-wrap:wrap; }
.page-title{ margin-bottom:14px; }
.page-head-row .lede{ max-width:42ch; }
.count-pill{ font-size:0.78rem; font-weight:600; color:var(--ink-2); background:var(--mist); padding:9px 16px; border-radius:100px; white-space:nowrap; }

.shop-toolbar{ position:sticky; top:66px; z-index:20; display:flex; justify-content:space-between; align-items:center; gap:16px; padding:16px 0; margin-bottom:14px; background:rgba(253, 253, 253, 0.80); backdrop-filter:blur(12px); flex-wrap:wrap; }
.pill-row{ display:flex; gap:9px; flex-wrap:wrap; }
.pill{ font-size:0.8rem; font-weight:500; border:1px solid var(--line-2); background:var(--white); padding:9px 16px; border-radius:100px; display:inline-flex; gap:8px; align-items:center; transition:all .25s; }
.pill:hover{ border-color:var(--ink); }
.pill.on{ background:var(--ink); color:var(--white); border-color:var(--ink); }
.pill .x{ opacity:.6; }
.sort{ display:flex; align-items:center; gap:8px; font-size:0.82rem; color:var(--ink-2); }
.sort select{ font-family:var(--sans); font-size:0.85rem; font-weight:600; border:1px solid var(--line-2); background:var(--white); border-radius:100px; padding:9px 16px; outline:none; }
.grid-3{ display:grid; grid-template-columns:repeat(3,1fr); gap:clamp(20px,2.4vw,40px) clamp(18px,2vw,30px); }
.grid-3 .product:nth-child(7n+1){ grid-column:span 1; }
.load-row{ display:flex; flex-direction:column; align-items:center; gap:18px; margin-top:clamp(52px,6vw,84px); }
.load-bar{ width:min(280px,60vw); height:3px; border-radius:3px; background:var(--line); overflow:hidden; }
.load-bar i{ display:block; width:38%; height:100%; background:var(--ink); border-radius:3px; }

/* ============================================================
   PRODUCT DETAIL
   ============================================================ */
.pdp{ display:grid; grid-template-columns:1.12fr 0.88fr; gap:clamp(30px,4vw,72px); align-items:start; padding-top:clamp(20px,3vw,36px); }
.pdp > *{ min-width:0; }
.gallery{ position:sticky; top:90px; display:flex; flex-direction:column; gap:14px; }
.gallery-main{ aspect-ratio:1/1; border-radius:var(--r-lg); overflow:hidden; background:radial-gradient(120% 120% at 50% 10%, var(--mist), var(--mist-2)); display:grid; place-items:center; }
.gallery-main .ph{ width:74%; height:74%; border-radius:var(--r); }
.thumbs{ display:grid; grid-template-columns:repeat(4,1fr); gap:14px; }
.thumb{ aspect-ratio:1/1; border-radius:var(--r-sm); overflow:hidden; background:var(--mist); cursor:pointer; transition:box-shadow .25s, transform .25s; }
.thumb .ph{ width:100%; height:100%; }
.thumb.on{ box-shadow:0 0 0 2px var(--ink); }
.thumb:hover{ transform:translateY(-3px); }
.pdp-info{ padding-top:6px; }
.pdp-cat{ font-size:0.76rem; font-weight:600; letter-spacing:0.06em; text-transform:uppercase; color:var(--ink-3); margin-bottom:14px; display:flex; gap:10px; align-items:center; flex-wrap:wrap; }
.pdp-cat span{ white-space:nowrap; }
.stars{ color:var(--ink); letter-spacing:1px; }
.pdp-title{ margin-bottom:18px; }
.pdp-price{ display:flex; align-items:baseline; gap:14px; font-size:1.6rem; font-weight:700; }
.pdp-price .was{ font-size:1.1rem; font-weight:400; color:var(--ink-3); text-decoration:line-through; }
.pdp-price .save{ font-size:0.74rem; font-weight:700; color:var(--accent); background:#e2eefa; padding:5px 10px; border-radius:100px; white-space:nowrap; }
.pdp-desc{ color:var(--ink-2); margin:22px 0 32px; max-width:46ch; font-size:1.02rem; }
.opt{ margin-bottom:28px; }
.opt-head{ display:flex; justify-content:space-between; align-items:baseline; margin-bottom:13px; }
.opt-head .t{ font-size:0.78rem; font-weight:600; letter-spacing:0.04em; text-transform:uppercase; color:var(--ink-2); }
.opt-head .v{ font-size:0.9rem; font-weight:500; color:var(--ink); }
.color-row{ display:flex; gap:12px; }
.color-btn{ width:34px; height:34px; border-radius:50%; border:0; box-shadow:inset 0 0 0 1px rgba(0,0,0,.1); cursor:pointer; position:relative; transition:transform .2s; }
.color-btn:hover{ transform:scale(1.08); }
.color-btn.on{ box-shadow:0 0 0 2px var(--canvas), 0 0 0 4px var(--ink); }
/* segmented size control */
.seg{ display:inline-flex; background:var(--mist); border-radius:100px; padding:5px; gap:4px; }
.seg button{ border:0; background:none; font-family:var(--sans); font-size:0.86rem; font-weight:600; color:var(--ink-2); padding:11px 20px; border-radius:100px; transition:all .25s var(--ease); white-space:nowrap; }
.seg button.on{ background:var(--white); color:var(--ink); box-shadow:var(--sh-1); }
.buy-row{ display:flex; flex-wrap:wrap; gap:12px; margin:32px 0 16px; }
.qty{ display:flex; align-items:center; border:1px solid var(--line-2); border-radius:100px; }
.qty button{ width:48px; height:54px; background:none; border:0; font-size:1.2rem; color:var(--ink); }
.qty input{ width:38px; text-align:center; border:0; background:none; font-family:var(--sans); font-weight:600; font-size:1rem; outline:none; }
.buy-row .btn{ flex:1; }

/* ---- WooCommerce add-to-cart form styled as Ababa .buy-row ---- */
.pdp-info form.cart{ display:flex; flex-wrap:wrap; align-items:center; gap:12px; margin:32px 0 16px; }
.pdp-info form.cart .quantity{ display:flex; align-items:center; border:1px solid var(--line-2); border-radius:100px; overflow:hidden; }
.pdp-info form.cart .quantity input.qty{ width:60px; height:54px; text-align:center; border:0; background:none; font-family:var(--sans); font-weight:600; font-size:1rem; outline:none; -moz-appearance:textfield; }
.pdp-info form.cart .quantity input.qty::-webkit-outer-spin-button,
.pdp-info form.cart .quantity input.qty::-webkit-inner-spin-button{ -webkit-appearance:none; margin:0; }
/* Ababa −/+ stepper buttons injected around the WooCommerce qty input. */
/* Ababa pill stepper: the wrapper is the pill; the number input is bare. */
.quantity.ababa-stepped{ display:inline-flex; align-items:center; border:1px solid var(--line-2); border-radius:100px; overflow:hidden; }
.quantity.ababa-stepped .qbtn{ width:44px; height:52px; flex-shrink:0; background:none; border:0; font-size:1.25rem; line-height:1; color:var(--ink); cursor:pointer; display:inline-flex; align-items:center; justify-content:center; transition:color .2s; padding:0; }
.quantity.ababa-stepped .qbtn:hover{ color:var(--accent); }
.quantity.ababa-stepped input.qty,
.quantity.ababa-stepped input[type="number"]{ width:40px !important; height:52px; text-align:center; border:0 !important; border-radius:0 !important; background:none !important; box-shadow:none !important; outline:none; padding:0; margin:0; font-family:var(--sans); font-weight:600; font-size:1rem; -moz-appearance:textfield; appearance:textfield; }
.quantity.ababa-stepped input.qty::-webkit-outer-spin-button,
.quantity.ababa-stepped input.qty::-webkit-inner-spin-button{ -webkit-appearance:none; margin:0; }
.pdp-info form.cart button.single_add_to_cart_button{ flex:1; min-width:200px; display:inline-flex; align-items:center; justify-content:center; gap:8px; font-family:var(--sans); font-weight:600; font-size:1rem; letter-spacing:-0.01em; padding:0 26px; height:56px; border:0; border-radius:100px; background:var(--ink); color:var(--white); cursor:pointer; transition:opacity .25s var(--ease), transform .15s var(--ease); }
.pdp-info form.cart button.single_add_to_cart_button:hover{ opacity:.9; }
.pdp-info form.cart button.single_add_to_cart_button:active{ transform:scale(.985); }
.pdp-info form.cart button.single_add_to_cart_button.disabled{ opacity:.45; cursor:not-allowed; }
/* Variation selects (native, kept as source of truth; styled but compact) */
.pdp-info .variations{ width:100%; margin:0 0 4px; border-collapse:collapse; }
.pdp-info .variations td,.pdp-info .variations th{ display:block; text-align:left; padding:0; }
.pdp-info .variations tr{ display:block; margin-bottom:16px; }
.pdp-info .variations .label label{ font-size:0.78rem; font-weight:600; letter-spacing:0.04em; text-transform:uppercase; color:var(--ink-2); margin-bottom:8px; display:inline-block; }
.pdp-info .variations select{ width:100%; max-width:280px; height:46px; padding:0 16px; border:1px solid var(--line-2); border-radius:12px; background:var(--white); font-family:var(--sans); font-size:0.92rem; color:var(--ink); cursor:pointer; }
.pdp-info .woocommerce-variation-add-to-cart{ display:flex; flex-wrap:wrap; align-items:center; gap:12px; width:100%; }
.pdp-info .reset_variations{ font-size:0.82rem; color:var(--ink-3); }
.pdp-info .woocommerce-variation-price{ width:100%; font-weight:700; font-size:1.2rem; margin:4px 0; }
.pdp-info .woocommerce-variation-price .price del{ color:var(--ink-3); font-weight:400; font-size:0.95rem; }
/* When a color swatch is shown, hide the redundant native color <select> visually but keep it usable */
.pdp-info .variations tr.ababa-has-swatch{ position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); margin:-1px; padding:0; border:0; }

.pdp-note{ font-size:0.86rem; color:var(--ink-2); display:flex; gap:9px; align-items:center; }
.pdp-note .grn{ width:8px; height:8px; border-radius:50%; background:#2e9e52; box-shadow:0 0 0 4px rgba(46, 158, 82, 0.20); }
.acc{ margin-top:36px; border-top:1px solid var(--line); }
.acc details{ border-bottom:1px solid var(--line); }
.acc summary{ display:flex; justify-content:space-between; align-items:center; gap:16px; padding:20px 0; cursor:pointer; list-style:none; font-size:1.02rem; font-weight:600; }
.acc summary .plus{ flex-shrink:0; } /* keep the + clear of long question text */
.acc summary::-webkit-details-marker{ display:none; }
.acc summary .plus{ font-size:1.3rem; font-weight:300; transition:transform .3s var(--ease); }
.acc details[open] summary .plus{ transform:rotate(45deg); }
.acc .acc-body{ padding:0 0 22px; color:var(--ink-2); font-size:0.94rem; max-width:54ch; }
.acc .acc-body ul{ margin-left:18px; display:flex; flex-direction:column; gap:7px; }

/* ============================================================
   CART / CHECKOUT
   ============================================================ */
/* Only the inner section is the 2-column grid. The wrapping <form class="checkout">
   must NOT also become a grid (that double-grid squashed the summary column). */
form.checkout{ display:block; }
section.checkout,
.checkout:not(form){ display:grid; grid-template-columns:1.45fr 0.9fr; gap:clamp(36px,5vw,80px); align-items:start; padding-top:clamp(30px,4vw,52px); }
.checkout > *{ min-width:0; }
.co-step{ font-size:0.76rem; font-weight:600; letter-spacing:0.04em; text-transform:uppercase; color:var(--ink-3); margin-bottom:10px; display:flex; align-items:center; gap:10px; }
.co-step .n{ width:22px; height:22px; border-radius:50%; background:var(--ink); color:var(--white); display:flex; align-items:center; justify-content:center; font-size:0.66rem; }
.co-h{ margin-bottom:26px; }
.co-section{ margin-bottom:42px; }
.form-grid{ display:grid; grid-template-columns:1fr 1fr; gap:16px; }
.form-grid .full{ grid-column:1/-1; }
.pay-row{ display:flex; gap:10px; align-items:center; margin-top:16px; flex-wrap:wrap; }
.pay-pill{ font-size:0.7rem; font-weight:600; border:1px solid var(--line-2); padding:8px 13px; border-radius:100px; color:var(--ink-2); }
.summary{ position:sticky; top:90px; width:100%; box-sizing:border-box; background:var(--mist); border-radius:var(--r-lg); padding:clamp(24px,3vw,34px); }
.co-line{ display:flex; gap:15px; padding:18px 0; border-bottom:1px solid var(--line); }
.co-line:first-of-type{ padding-top:0; }
.co-line .ph{ width:76px; aspect-ratio:1/1; border-radius:var(--r-sm); flex-shrink:0; }
.co-line-body{ flex:1; min-width:0; display:flex; flex-direction:column; gap:5px; }
.co-line-top{ display:flex; justify-content:space-between; gap:12px; align-items:baseline; }
.co-line .nm{ font-size:1.02rem; font-weight:600; letter-spacing:-0.015em; flex:1 1 auto; min-width:0; }
.co-line .nm a{ color:inherit; text-decoration:none; }
.co-line .nm a:hover{ text-decoration:underline; text-underline-offset:2px; }
.co-line-thumb{ flex-shrink:0; line-height:0; }
.co-line .pr{ font-size:0.95rem; font-weight:600; white-space:nowrap; flex:0 0 auto; }
.co-line .vr{ font-size:0.78rem; color:var(--ink-3); font-weight:500; }
.co-line-foot{ display:flex; align-items:center; justify-content:space-between; gap:12px; margin-top:8px; }
.co-qty{ display:inline-flex; align-items:center; gap:12px; background:var(--white); border-radius:100px; padding:5px; width:max-content; box-shadow:var(--sh-1); }
.co-qty button{ width:28px; height:28px; border:0; background:none; border-radius:50%; font-size:1.05rem; color:var(--ink); cursor:pointer; transition:background .2s; }
.co-qty button:hover{ background:var(--mist); }
.co-qty span,
.co-qty .qnum{ display:inline-block; font-size:0.86rem; font-weight:600; min-width:14px; text-align:center; }
.co-remove{ background:none; border:0; padding:0; color:var(--ink-3); font-size:0.78rem; font-weight:600; cursor:pointer; text-decoration:underline; text-underline-offset:2px; transition:color .2s; }
.co-remove:hover{ color:var(--accent,#c0392b); }
.promo{ display:flex; gap:10px; margin:22px 0; }
.promo input{ flex:1; background:var(--white); border:1px solid var(--line-2); border-radius:100px; padding:13px 18px; font-family:var(--sans); font-size:0.92rem; outline:none; }
.promo button{ background:var(--white); border:1px solid var(--ink); border-radius:100px; padding:0 22px; font-size:0.85rem; font-weight:600; }
.totals{ display:flex; flex-direction:column; gap:13px; margin-top:22px; }
.totals .t{ display:flex; justify-content:space-between; font-size:0.94rem; color:var(--ink-2); }
.totals .t span:last-child{ font-weight:600; color:var(--ink); }
.totals .t.grand{ margin-top:8px; padding-top:18px; border-top:1px solid var(--line); font-size:1.15rem; font-weight:700; color:var(--ink); }
.totals .t.grand span:last-child{ font-size:1.3rem; }
.co-trust{ display:flex; gap:16px; margin-top:22px; font-size:0.74rem; font-weight:500; color:var(--ink-3); flex-wrap:wrap; }

/* ============================================================
   RESPONSIVE
   ============================================================ */
@media (max-width:1080px){
  .grid-4{ grid-template-columns:repeat(2,minmax(0,1fr)); }
  .grid-3{ grid-template-columns:repeat(2,minmax(0,1fr)); }
  .promise{ grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media (max-width:900px){
  .head-inner{ height:60px; }
  .brand{ justify-self:start; }
  .burger{ display:flex; }
  .hero-head{ flex-direction:column; align-items:flex-start; }
  .bento{ grid-template-columns:repeat(2,1fr); }
  .bcell.wide{ grid-column:span 2; }
  .bcell.tall{ grid-row:auto; }
  .feature{ grid-template-columns:1fr; }
  .feature.flip .feature-media{ order:0; }
  .feature-media{ aspect-ratio:4/3; }
  .pdp{ grid-template-columns:1fr; }
  .gallery{ position:static; }
  /* On the product page the gallery must stay ABOVE the info. The .pdp-info
     box also carries the `summary` class, so scope the order flip to checkout
     only — otherwise the product photo wrongly dropped below the title/price. */
  .pdp .gallery{ order:0; }
  .pdp .pdp-info{ position:static; order:1; }
  /* Match the high-specificity desktop selector (.checkout:not(form)) so the
     two-column checkout actually collapses to one column on mobile — otherwise
     the form + summary stayed side-by-side, squashed, and overflowed. */
  section.checkout,
  .checkout:not(form){ grid-template-columns:1fr; gap:clamp(24px,5vw,40px); }
  .checkout .summary{ position:static; order:-1; }
  .foot-grid{ grid-template-columns:1fr 1fr; }
  .foot-brand{ grid-column:1/-1; }
}
@media (max-width:560px){
  .grid-4{ grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; }
  .grid-3{ grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px; }
  .bento{ grid-template-columns:1fr; grid-auto-rows:180px; }
  .bcell.wide{ grid-column:auto; }
  .promise{ grid-template-columns:1fr; }
  .form-grid{ grid-template-columns:1fr; }
  .sec-head{ flex-direction:column; align-items:flex-start; gap:6px; }
  .hero-stats{ flex-wrap:wrap; gap:20px 32px; }
  .foot-grid{ grid-template-columns:1fr; }
  .thumbs{ grid-template-columns:repeat(4,1fr); }
}


/* ── Empty cart panel (checkout) ──────────────────────────────────── */
.checkout-empty{ display:block !important; min-height:46vh; padding:clamp(48px,7vw,96px) 0; }
.co-empty{ max-width:460px; margin:0 auto; display:flex; flex-direction:column; align-items:center; text-align:center; gap:14px; }
.co-empty-ic{ width:84px; height:84px; border-radius:50%; display:flex; align-items:center; justify-content:center; background:var(--surface,#f4f2ee); color:var(--ink,#1a1a1a); margin-bottom:4px; }
.co-empty h2{ margin:0; }
.co-empty .psub{ margin:0; color:var(--ink-3,#777); }
.co-empty .btn{ margin-top:8px; }

/* ── Blog: empty state + article extras (blockquote, lists) ───────────── */
.blog-empty{ text-align:center; padding:clamp(60px,8vw,110px) 20px; max-width:520px; margin:0 auto; }
.blog-empty h3{ font-size:1.7rem; font-weight:760; letter-spacing:-0.02em; color:var(--ink); margin-bottom:12px; }
.blog-empty .lede{ margin-bottom:22px; }
.article blockquote{ border-left:3px solid var(--ink); margin:26px 0; padding:4px 0 4px 22px; }
.article blockquote p{ font-size:1.18rem; font-style:italic; color:var(--ink); margin:0; }
.article ul, .article ol{ margin:0 0 20px 22px; color:var(--ink-2); line-height:1.75; }
.article li{ margin-bottom:8px; }
.article h3{ font-size:1.22rem; font-weight:700; letter-spacing:-0.02em; margin:26px 0 12px; color:var(--ink); }
.blog-feat h2 a{ color:inherit; }
.blog-feat .bf-media{ display:block; }

/* ── Set / bundle: out-of-stock states ────────────────────────────── */
.si-oos{ font-size:0.72rem; font-weight:600; letter-spacing:0.04em; text-transform:uppercase; color:#b32d2e; white-space:nowrap; }
.set-oos-note{ margin-top:10px; font-size:0.85rem; color:#b32d2e; line-height:1.5; }
#sbBtn[disabled]{ opacity:0.5; cursor:not-allowed; }

/* ── Cart drawer: extra bits for the WooCommerce flow ─────────────── */
.di-sub{ font-size:0.8rem; color:var(--ink-3); line-height:1.4; }
.drawer-cont{ display:block; text-align:center; margin-top:12px; font-size:0.85rem; font-weight:600; color:var(--ink-2); }
.drawer-cont:hover{ color:var(--ink); }
.drawer-foot .btn-block{ display:block; text-align:center; }

/* ── Checkout saved-address cards (selectable + edit/delete) ───────── */
.addr-card.co-pick{ cursor:pointer; text-align:left; transition:border-color .2s, box-shadow .2s; }
.addr-card.co-pick:hover{ border-color:var(--ink-2,#555); }
.addr-card.co-pick.on{ border-color:var(--ink); box-shadow:0 0 0 1px var(--ink); }
.addr-card.co-pick .addr-actions{ margin-top:12px; }
/* Don't let action-button clicks bubble visually into the card selection. */
.addr-card.co-pick .addr-actions button{ position:relative; z-index:2; }

/* ── Highlights as a horizontal product slider (standard .product cards) ── */
.rail-products .product{ scroll-snap-align:start; }
.rail-products .product .product-media{ aspect-ratio:4/5; }
/* Match the card size of the grid sections (Best sellers / On sale) so every
   product card across the home page is the same width. */
.rail-products{ grid-auto-columns:clamp(248px,25vw,306px); gap:clamp(18px,2vw,30px); }
.hrow{ grid-auto-columns:clamp(248px,25vw,306px); }

/* ── Out-of-stock states on cards + Quick View ────────────────────── */
.product-flag.oos{ background:#6b6b6b; color:#fff; }
.quick-add-oos{ position:absolute; left:14px; right:14px; bottom:14px; text-align:center; padding:12px 0; border-radius:100px;
  background:rgba(255,255,255,.92); color:#6b6b6b; font-size:0.85rem; font-weight:600; letter-spacing:0.02em; cursor:not-allowed;
  opacity:0; transform:translateY(8px); transition:opacity .3s, transform .3s; }
.product:hover .quick-add-oos{ opacity:1; transform:none; }
.qv-card.qv-oos .qv-add, .qv-oos .qv-add{ background:#e5e3df; color:#8a8a8a; cursor:not-allowed; pointer-events:none; }

/* ── Quick View variation picker extras ───────────────────────────── */
.qv-oos-note{ margin-top:10px; font-size:0.82rem; color:#b32d2e; }
.qv-colors .color-btn.on{ outline:2px solid var(--ink); outline-offset:2px; }
.qv-seg button.on{ background:var(--white); color:var(--ink); box-shadow:var(--sh-1); }

/* ── Loved review card: product the review is for (thumbnail + name) ── */
.rc-product{ display:flex; align-items:center; gap:11px; margin-top:16px; padding-top:14px; border-top:1px solid var(--line); text-decoration:none; }
a.rc-product{ transition:opacity .2s; }
a.rc-product:hover{ opacity:.8; }
.rc-thumb{ width:42px; height:42px; border-radius:var(--r-sm,10px); overflow:hidden; flex-shrink:0; background:var(--mist); }
.rc-thumb img{ width:100%; height:100%; object-fit:cover; display:block; }
.rc-pmeta{ display:flex; flex-direction:column; min-width:0; line-height:1.3; }
.rc-plabel{ font-size:0.64rem; font-weight:600; letter-spacing:0.07em; text-transform:uppercase; color:var(--ink-3); }
.rc-pname{ font-size:0.86rem; font-weight:600; color:var(--ink); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }

/* ── Loved testimonials as a horizontal slider when >3 are featured ── */
.rail-reviews{ grid-auto-columns:clamp(300px,32vw,400px); gap:18px; }
.rail-reviews .rev-card{ scroll-snap-align:start; }

/* ── Loved heading: pill sits with the title (so the slider arrows own the
      right side of the section header cleanly) ───────────────────────── */
.loved-head{ display:flex; align-items:center; flex-wrap:wrap; gap:10px 16px; }
.loved-head .kicker{ flex-basis:100%; }
.loved-head h2{ margin:0; }
.loved-head .count-pill{ align-self:center; }

/* ── Footer social buttons (links from WooCommerce → Ababa → Social links) ── */
.foot-social{ display:flex; flex-wrap:wrap; gap:10px; margin-top:22px; }
.foot-social-btn{ width:40px; height:40px; border-radius:50%; display:grid; place-items:center;
  border:1px solid rgba(255,255,255,.18); color:#c4c4c4; transition:background .22s, border-color .22s, color .22s; }
/* Icons inherit the button colour via currentColor (the outline Instagram glyph
   uses stroke="currentColor"; the solid glyphs use fill="currentColor"). Setting
   `color` is enough — do NOT force fill/stroke on every node, or outline icons
   (which rely on fill:none) turn into solid blobs on the white hover background. */
/* Scope under .foot-col so this beats the generic `.foot-col a:hover{color:#fff}`
   rule — otherwise the icon would turn white on the white hover background. */
.foot-col .foot-social-btn:hover{ background:#fff; border-color:#fff; color:#161616; }
.foot-social-btn svg{ width:19px; height:19px; }

/* ── Footer newsletter inline message ─────────────────────────────── */
.foot-news-msg{ margin-top:12px; font-size:0.85rem; min-height:1.2em; }
.foot-news-msg.ok{ color:#7fd49a; }
.foot-news-msg.err{ color:#e8a0a0; }

/* ── About page (page-about.php) ──────────────────────────────────── */
.about-story{ display:grid; grid-template-columns:1fr 1fr; gap:clamp(28px,4vw,64px); align-items:center; padding:clamp(20px,3vw,40px) var(--pad) clamp(40px,5vw,72px); }
.about-story-media{ aspect-ratio:4/5; border-radius:var(--r-lg); overflow:hidden; background:var(--mist); }
.about-story-media img{ width:100%; height:100%; object-fit:cover; }
.about-story-body p{ color:var(--ink-2); font-size:1.06rem; line-height:1.75; margin-bottom:18px; }
.about-story-body p:last-child{ margin-bottom:0; }
.about-values{ padding-bottom:clamp(40px,5vw,72px); }
.about-cta .btn{ margin-top:8px; }
@media (max-width:760px){ .about-story{ grid-template-columns:1fr; } .about-story-media{ aspect-ratio:16/10; } }

/* ── Order received / order-detail header row (title + status pill) ── */
.page-head-row{ display:flex; justify-content:space-between; align-items:flex-start; gap:18px; flex-wrap:wrap; }
.page-head-row .order-status{ flex-shrink:0; margin-top:6px; }
@media (max-width:760px){ .od-grid{ grid-template-columns:1fr; } }

/* ── Checkout step validation (invalid field / area highlight) ──────── */
.co-invalid{ border-color:#d4504e !important; }
input.co-invalid, select.co-invalid{ box-shadow:0 0 0 1px #d4504e; }
.co-saved-addr.co-invalid, #ababa-shipping-methods.co-invalid{ outline:1px solid #d4504e; outline-offset:4px; border-radius:var(--r); }
.co-addr-empty.co-invalid{ color:#d4504e; }

/* ── Header: wide search bar + category rail ────────────────────────── */

/* Prominent search bar filling the centre column of the header. */
.head-search{
  display:flex; align-items:center; gap:11px;
  background:var(--mist); border:1px solid transparent; border-radius:100px;
  padding:11px 18px; width:100%; max-width:560px; justify-self:center;
  transition:border-color .2s, background .2s, box-shadow .2s;
}
.head-search:focus-within{ background:var(--white); border-color:var(--line-2); box-shadow:var(--sh-1); }
.head-search .hs-ic{ display:flex; color:var(--ink-3); flex:0 0 auto; }
.head-search .hs-ic svg{ width:18px; height:18px; stroke:currentColor; fill:none; stroke-width:1.7; }
.head-search .hs-input{ border:0; background:none; outline:none; font-size:0.92rem; color:var(--ink); width:100%; min-width:0; }
.head-search .hs-input::placeholder{ color:var(--ink-3); }
.hs-icon-btn{ display:none; }

/* Category rail — slim navigation band under the header bar. */
.head-rail{ border-top:1px solid rgba(227,227,227,0.55); }
.rail-nav{
  display:flex; align-items:center; gap:clamp(14px,2vw,26px);
  max-width:var(--maxw); margin:0 auto; padding:9px var(--pad);
  overflow-x:auto; scrollbar-width:none; contain:layout paint;
}
.rail-nav::-webkit-scrollbar{ display:none; }
.rail-nav a{
  font-size:0.82rem; font-weight:500; color:var(--ink-2); white-space:nowrap;
  position:relative; padding:2px 0; transition:color .2s;
}
.rail-nav a:hover{ color:var(--ink); }
.rail-nav a.is-active{ color:var(--ink); }
.rail-nav a.is-active::after{
  content:""; position:absolute; left:0; right:0; bottom:-3px; height:2px;
  background:var(--ink); border-radius:2px;
}
.rail-nav .rail-all{ font-weight:600; color:var(--ink); }
.rail-nav .rail-new{ color:var(--ink); font-weight:600; }
.rail-nav .rail-sale{ color:var(--accent); font-weight:600; }
.rail-sep{ width:1px; height:14px; background:var(--line); flex:0 0 auto; }
/* On phones the category rail is hidden — its long, horizontally-scrolling row
   of links was extending the page width, and the same categories already live
   in the hamburger menu. Keeps the mobile header to one clean row. */
@media (max-width:700px){ .head-rail{ display:none; } }

/* On narrower screens, collapse the bar to its icon; the rail stays scrollable. */
@media (max-width:860px){
  .head-search{ display:none; }
  .hs-icon-btn{ display:inline-flex; }
  .head-inner{ grid-template-columns:1fr auto; }
}
