/* ============================================================
   THE SH LUXE — Editorial luxury storefront
   Tokens → base → header → components → sections → product → pages
   ============================================================ */

/* ---------- Design tokens (single source of truth) ---------- */
@import url('tokens.css');

/* ---------- Reset / base ---------- */
*,*::before,*::after{box-sizing:border-box;}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;}
/* Touch responsiveness: taps on controls are never zoom gestures — fire the
   click immediately (kills any double-tap-to-zoom click delay on phones). */
a,button,input,select,textarea,label{touch-action:manipulation;}
/* Instant pressed feedback on touch screens — the tap visibly registers the
   moment the finger lands, even while the next page is still loading. */
@media(hover:none){
  a:active,button:active{opacity:.55;transition:opacity 0s;}
}
body{
  margin:0;
  font-family:var(--sans);
  font-weight:400;
  font-size:16px;
  line-height:var(--lh-body,1.65);
  color:var(--near-black);
  background:var(--ivory);
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}
img{display:block;max-width:100%;height:auto;}
a{color:inherit;text-decoration:none;}
button{font-family:inherit;cursor:pointer;}
h1,h2,h3,h4{margin:0;font-family:var(--serif);font-weight:500;line-height:1.1;letter-spacing:-.01em;}
p{margin:0;}

::selection{background:var(--espresso);color:var(--ivory);}
:focus-visible{outline:2px solid var(--near-black);outline-offset:3px;}

.wrap{max-width:var(--maxw);margin-inline:auto;padding-inline:var(--pad);}
.section{padding-block:var(--section-y);}
.rule{border:0;border-top:1px solid var(--border);margin:0;}
.measure{max-width:62ch;}

/* ---------- Typography helpers ---------- */
.eyebrow{
  font-family:var(--sans);font-weight:500;font-size:.72rem;
  letter-spacing:.22em;text-transform:uppercase;color:var(--warm-grey);
  display:inline-flex;gap:.7em;align-items:center;
}
.eyebrow .num{color:var(--gold);}
.display{font-size:var(--h1);letter-spacing:var(--track-head,normal);}
.h-section{font-size:var(--h2);letter-spacing:var(--track-head,normal);}
.h-sub{font-size:var(--h3);}
.serif-it{font-style:italic;}
.lead{font-size:1.08rem;color:var(--near-black);}
.muted{color:var(--warm-grey);}
.meta{font-size:.8rem;letter-spacing:.02em;color:var(--warm-grey);}

/* ---------- Link-arrow / buttons ---------- */
.arrow{
  font-family:var(--sans);font-weight:500;font-size:.82rem;letter-spacing:.06em;
  text-transform:uppercase;display:inline-flex;align-items:center;gap:.6em;
  color:var(--near-black);position:relative;padding-bottom:4px;
}
.arrow::after{content:"";position:absolute;left:0;bottom:0;height:1px;width:100%;
  background:currentColor;transform:scaleX(1);transform-origin:left;transition:transform .4s var(--ease);}
.arrow .a{transition:transform .35s var(--ease);}
.arrow:hover .a{transform:translateX(5px);}
.arrow--light{color:var(--ivory);}

.btn{
  font-family:var(--btn-font-family,var(--sans));font-weight:500;font-size:.8rem;letter-spacing:var(--btn-track,.08em);
  text-transform:uppercase;display:inline-flex;align-items:center;justify-content:center;
  gap:.6em;padding:15px 30px;border:var(--btn-border,1px) solid var(--near-black);background:transparent;
  color:var(--near-black);transition:background var(--dur) var(--ease),color var(--dur) var(--ease);
}
.btn:hover{background:var(--near-black);color:var(--ivory);}
.btn--fill{background:var(--near-black);color:var(--ivory);}
.btn--fill:hover{background:transparent;color:var(--near-black);}
.btn--ivory{border-color:var(--ivory);color:var(--ivory);}
.btn--ivory:hover{background:var(--ivory);color:var(--near-black);}
.btn--wa{border-color:var(--espresso);}
.btn--block{width:100%;}

/* ---------- Announcement bar ---------- */
.announce{
  background:var(--charcoal);color:var(--ivory);text-align:center;
  font-size:.7rem;letter-spacing:.18em;text-transform:uppercase;padding:9px 16px;font-weight:400;
}
.announce span{opacity:.85;}

/* ---------- Header ---------- */
.header-group{position:sticky;top:0;z-index:80;}
.site-header{background:var(--ivory);
  border-bottom:1px solid var(--border);transition:background .4s var(--ease),border-color .4s var(--ease);}
.header-inner{display:flex;align-items:center;justify-content:space-between;gap:24px;
  padding-block:20px;}
.logo{font-family:var(--serif);font-weight:500;font-size:var(--logo-size,1.5rem);letter-spacing:.18em;
  text-transform:uppercase;white-space:nowrap;}
.logo small{font-size:.55em;letter-spacing:.3em;display:block;line-height:1;color:var(--warm-grey);margin-top:2px;}
.nav{display:flex;gap:26px;align-items:center;}
.nav a{font-family:var(--nav-font,var(--sans));font-weight:500;font-size:.8rem;letter-spacing:.04em;position:relative;padding-block:6px;color:var(--near-black);}
.nav a::after{content:"";position:absolute;left:0;bottom:0;height:1px;width:0;background:currentColor;transition:width .35s var(--ease);}
.nav a:hover::after,.nav a[aria-current="page"]::after{width:100%;}
.utils{display:flex;gap:20px;align-items:center;}
.icon-btn{background:none;border:0;padding:4px;color:var(--near-black);display:inline-flex;position:relative;}
.icon-btn svg{width:20px;height:20px;stroke:currentColor;fill:none;stroke-width:1.4;}
.wish-count{position:absolute;top:-4px;right:-6px;background:var(--near-black);color:var(--ivory);
  font-size:.58rem;font-weight:600;min-width:15px;height:15px;border-radius:50%;display:none;
  align-items:center;justify-content:center;padding:0 3px;}
.wish-count.on{display:inline-flex;}
.utils .btn{padding:11px 20px;font-size:.72rem;}
/* Currency switcher */
.header-currency{font-family:var(--sans);font-weight:500;font-size:.74rem;letter-spacing:.06em;color:var(--near-black);background:transparent;border:1px solid var(--border);border-radius:2px;padding:7px 22px 7px 9px;cursor:pointer;appearance:none;-webkit-appearance:none;background-image:linear-gradient(45deg,transparent 50%,currentColor 50%),linear-gradient(135deg,currentColor 50%,transparent 50%);background-position:calc(100% - 12px) 52%,calc(100% - 8px) 52%;background-size:4px 4px,4px 4px;background-repeat:no-repeat;}
.header-currency:hover{border-color:var(--near-black);}
.header-transparent .site-header .header-currency{color:var(--ivory);border-color:rgba(245,241,235,.45);}
.header-transparent .header-group.scrolled .site-header .header-currency{color:var(--near-black);border-color:var(--border);}
.drawer-cur{display:flex;align-items:center;gap:10px;font-size:.85rem;letter-spacing:.06em;text-transform:uppercase;color:var(--warm-grey);padding:8px 0;}
.drawer-cur select{font-family:inherit;font-size:.95rem;padding:8px 10px;border:1px solid var(--border);background:transparent;border-radius:2px;color:var(--near-black);}
.burger,.m-icon{display:none;background:none;border:0;padding:4px;color:var(--near-black);}
.burger svg,.m-icon svg{width:22px;height:22px;stroke:currentColor;fill:none;stroke-width:1.4;}

/* Transparent-over-hero variant (homepage): header-group overlays the hero */
.header-transparent .header-group{position:absolute;top:0;left:0;right:0;}
.header-transparent .site-header{background:transparent;border-color:transparent;}
.header-transparent .site-header .logo,
.header-transparent .site-header .nav a,
.header-transparent .site-header .icon-btn,
.header-transparent .site-header .burger{color:var(--ivory);}
.header-transparent .site-header .logo small{color:rgba(245,241,235,.7);}
/* Dropdown links sit on the ivory panel, so they must stay dark even while the
   transparent header paints the top-level nav ivory (else: invisible text). */
.header-transparent .site-header .nav .nav-drop a{color:var(--near-black);}
.header-transparent .site-header .btn{border-color:var(--ivory);color:var(--ivory);}
.header-transparent .site-header .btn:hover{background:var(--ivory);color:var(--near-black);}
/* On scroll → pin solid */
.header-transparent .header-group.scrolled{position:fixed;}
.header-transparent .header-group.scrolled .announce{transform:translateY(-100%);position:absolute;width:100%;}
.header-transparent .header-group.scrolled .site-header{background:var(--ivory);border-color:var(--border);}
.header-transparent .header-group.scrolled .site-header .logo,
.header-transparent .header-group.scrolled .site-header .nav a,
.header-transparent .header-group.scrolled .site-header .icon-btn,
.header-transparent .header-group.scrolled .site-header .burger{color:var(--near-black);}
.header-transparent .header-group.scrolled .site-header .logo small{color:var(--warm-grey);}
.header-transparent .header-group.scrolled .site-header .btn{border-color:var(--near-black);color:var(--near-black);}
.header-transparent .header-group.scrolled .site-header .btn:hover{background:var(--near-black);color:var(--ivory);}

/* ---------- Mobile drawer ---------- */
.drawer{position:fixed;inset:0;z-index:120;background:var(--ivory);
  transform:translateX(-100%);transition:transform .5s var(--ease);
  display:flex;flex-direction:column;padding:24px var(--pad);overflow-y:auto;}
.drawer.open{transform:none;}
.drawer-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:36px;}
.drawer nav{display:flex;flex-direction:column;}
.drawer nav a{font-family:var(--serif);font-size:1.9rem;font-weight:500;padding:14px 0;border-bottom:1px solid var(--border);}
.drawer .drawer-utils{margin-top:auto;padding-top:32px;display:flex;flex-direction:column;gap:14px;}
.drawer .drawer-utils a{font-size:.85rem;letter-spacing:.06em;text-transform:uppercase;color:var(--warm-grey);}
body.no-scroll{overflow:hidden;}

/* ---------- Product card ---------- */
/* min-width:0 lets a card shrink to its grid track — without it the one-line
   nowrap title forces the track wider than a phone screen and the 2-column
   grid blows out sideways (live mobile bug, fixed 2026-07-05). */
.product-card{display:block;position:relative;min-width:0;}
.pc-media{position:relative;overflow:hidden;background:var(--stone);aspect-ratio:4/5;}
.pc-media img{width:100%;height:100%;object-fit:cover;transition:opacity .7s var(--ease),transform 1.4s var(--ease),filter .85s var(--ease);}
.pc-media .alt{position:absolute;inset:0;opacity:0;}
.pc-wish{position:absolute;top:14px;right:14px;z-index:2;background:rgba(245,241,235,.85);
  border:0;width:34px;height:34px;border-radius:50%;display:flex;align-items:center;justify-content:center;
  opacity:0;transform:translateY(-4px);transition:opacity .3s,transform .3s,background .3s;}
.pc-wish.active{opacity:1;transform:none;}
/* Hover reveals only on devices that HAVE hover (mouse). On touch screens a
   hover-reveal steals the first tap (tap 1 = "hover", tap 2 = click), so the
   wishlist heart is simply always visible there instead. */
@media(hover:hover){
  .product-card:hover .pc-media .alt{opacity:1;}
  .product-card:hover .pc-media img{transform:scale(var(--img-zoom,1.05));}
  .product-card:hover .pc-wish{opacity:1;transform:none;}
}
@media(hover:none){
  .pc-wish{opacity:1;transform:none;background:rgba(245,241,235,.92);}
}
.pc-wish svg{width:16px;height:16px;stroke:var(--near-black);fill:none;stroke-width:1.4;}
.pc-wish.active svg{fill:var(--near-black);}
.pc-body{padding-top:16px;}
.pc-brand{font-size:.72rem;letter-spacing:.2em;text-transform:uppercase;font-weight:500;color:var(--warm-grey);}
.pc-name{font-family:var(--serif);font-size:1.2rem;font-weight:500;margin-top:3px;line-height:1.2;}
/* "one line" title style — clamp to 2 lines (shows more of long titles) with a
   reserved height so every card caption, and therefore every card, is equal. */
.pc-name--line{font-size:1.05rem;line-height:1.3;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;min-height:2.6em;}
.pc-details{font-size:.78rem;color:var(--warm-grey);margin-top:5px;line-height:1.5;}
.pc-spec{font-size:.8rem;color:var(--warm-grey);margin-top:2px;}

/* ---------- Loading skeletons (product grids) ----------
   Shown while listings fetch; replaced by real cards on first render. Quiet
   ivory shimmer over stone — no spinners. Reduced-motion → static tiles. */
.pc-skel{pointer-events:none;}
.sk{position:relative;overflow:hidden;background:var(--stone);border-radius:2px;}
.sk::after{content:"";position:absolute;inset:0;transform:translateX(-100%);
  background:linear-gradient(90deg,transparent,rgba(245,241,235,.6),transparent);
  animation:sk-shimmer 1.5s var(--ease) infinite;}
.pc-skel .pc-media.sk{aspect-ratio:4/5;border-radius:0;}
.sk-line{height:.7rem;}
.sk-brand{width:38%;height:.6rem;margin-top:2px;}
.sk-title{width:82%;height:.95rem;margin-top:14px;}
.sk-price{width:30%;margin-top:14px;}
@keyframes sk-shimmer{100%{transform:translateX(100%);}}
@media(prefers-reduced-motion:reduce){.sk::after{animation:none;}}
.pc-ref{font-size:.72rem;color:var(--warm-grey);margin-top:2px;letter-spacing:.04em;}
.pc-price{font-size:.95rem;font-weight:500;letter-spacing:.02em;margin-top:10px;}
.pc-price.request{color:var(--warm-grey);font-weight:400;font-style:italic;font-family:var(--serif);font-size:1rem;}

/* Product grid layouts (columns are token-driven per breakpoint) */
.product-grid{display:grid;grid-template-columns:repeat(var(--cols-d,4),1fr);gap:40px 28px;}
.product-grid.cols-3{grid-template-columns:repeat(3,1fr);}

/* Horizontal carousel */
.carousel-wrap{position:relative;}
.carousel{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(280px,320px);
  gap:28px;overflow-x:auto;scroll-snap-type:x mandatory;padding-bottom:8px;
  scrollbar-width:none;}
.carousel::-webkit-scrollbar{display:none;}
.carousel .product-card{scroll-snap-align:start;}
/* Prev/next arrows (desktop) */
.carousel-arrow{position:absolute;top:38%;transform:translateY(-50%);z-index:6;
  width:46px;height:46px;border-radius:50%;background:var(--bg);border:1px solid var(--border);
  display:flex;align-items:center;justify-content:center;cursor:pointer;
  transition:opacity .25s var(--ease),background .2s,border-color .2s;box-shadow:0 2px 14px rgba(27,25,23,.08);}
.carousel-arrow:hover{background:var(--near-black);border-color:var(--near-black);}
.carousel-arrow:hover svg{stroke:var(--ivory);}
.carousel-arrow svg{width:20px;height:20px;stroke:var(--near-black);fill:none;stroke-width:1.5;}
.carousel-arrow.prev{left:-14px;} .carousel-arrow.next{right:-14px;}
.carousel-arrow.disabled{opacity:0;pointer-events:none;}
.carousel-wrap.no-scroll .carousel-arrow{display:none;}
@media (max-width:760px){ .carousel-arrow{display:none;} }  /* swipe on mobile */

/* ---------- Section header row ---------- */
.sec-head{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;margin-bottom:40px;}
.sec-head .h-section{max-width:16ch;}

/* ---------- Hero ---------- */
.hero{position:relative;min-height:100svh;display:flex;align-items:flex-end;
  color:var(--ivory);overflow:hidden;}
.hero-media{position:absolute;inset:0;}
.hero-media img{width:100%;height:100%;object-fit:cover;}
/* Owner-adjustable darkening (theme editor → Hero → Overlay opacity) — sits on
   top of the fixed gradient below so busy photos can be calmed for legibility. */
.hero-scrim{position:absolute;inset:0;}
.hero::after{content:"";position:absolute;inset:0;
  background:linear-gradient(180deg,rgba(27,25,23,.28) 0%,rgba(27,25,23,0) 30%,rgba(27,25,23,.55) 100%);}
.hero-inner{position:relative;z-index:2;padding-bottom:clamp(48px,9vh,110px);max-width:720px;}
.hero .display{color:var(--ivory);}
.hero p{color:rgba(245,241,235,.9);margin-top:22px;max-width:46ch;font-size:1.1rem;}
/* Hero CTA = outlined ivory button on ALL widths (owner choice, 2026-07-05):
   the busy collage hero needs more presence than the underlined text link,
   which .arrow keeps everywhere else. Fills ivory on hover. */
.hero .arrow{margin-top:34px;border:1px solid rgba(245,241,235,.85);padding:14px 26px;
  transition:background var(--dur) var(--ease),color var(--dur) var(--ease),border-color var(--dur) var(--ease);}
.hero .arrow::after{display:none;}
.hero .arrow:hover{background:var(--ivory);color:var(--near-black);border-color:var(--ivory);}

/* ---------- Split image + text ---------- */
.split{display:grid;grid-template-columns:1fr 1fr;align-items:center;gap:clamp(32px,6vw,90px);}
.split.reverse .split-media{order:2;}
.split-media img{width:100%;aspect-ratio:4/5;object-fit:cover;}
.split-text{max-width:44ch;}
.split-text .eyebrow{margin-bottom:20px;}
.split-text .arrow{margin-top:30px;}

/* ---------- Shop by house (asymmetrical editorial grid) ---------- */
.houses{display:grid;grid-template-columns:repeat(12,1fr);grid-auto-rows:1fr;gap:20px;}
.house{position:relative;overflow:hidden;display:block;background:var(--stone);}
.house img{width:100%;height:100%;object-fit:cover;transition:transform 1.2s var(--ease);}
.house:hover img{transform:scale(1.05);}
.house::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(27,25,23,0) 40%,rgba(27,25,23,.6));}
.house-label{position:absolute;left:26px;bottom:24px;z-index:2;color:var(--ivory);}
.house-label .h-sub{color:var(--ivory);font-size:1.7rem;}
.house-label .meta{color:rgba(245,241,235,.75);}
.house.a{grid-column:span 7;grid-row:span 2;}
.house.b{grid-column:span 5;}
.house.c{grid-column:span 5;}
.house.d{grid-column:span 4;grid-row:span 2;}
.house.e{grid-column:span 8;}

/* ---------- Collection tiles ---------- */
.tiles{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;}
.tile{position:relative;display:block;overflow:hidden;background:var(--stone);aspect-ratio:3/4;}
.tile img{width:100%;height:100%;object-fit:cover;transition:transform 1.2s var(--ease);}
.tile:hover img{transform:scale(1.04);}
.tile-cap{position:absolute;inset:auto 0 0 0;padding:24px;color:var(--ivory);
  background:linear-gradient(180deg,transparent,rgba(27,25,23,.65));}
.tile-cap .h-sub{color:var(--ivory);}

/* ---------- Dark feature (private sourcing / dark sections) ---------- */
.dark{background:var(--espresso);color:var(--ivory);}
.dark--charcoal{background:var(--charcoal);}
.dark h1,.dark h2,.dark h3{color:var(--ivory);}
.dark .eyebrow{color:rgba(245,241,235,.6);}
.dark .muted{color:rgba(245,241,235,.65);}
.feature-split{display:grid;grid-template-columns:1.1fr .9fr;gap:clamp(32px,6vw,90px);align-items:center;}
.feature-text{max-width:42ch;}
.feature-text p{margin-top:22px;color:rgba(245,241,235,.8);}
.feature-text .btn{margin-top:34px;}
.feature-media img{width:100%;aspect-ratio:4/5;object-fit:cover;}

/* ---------- Sell with us ---------- */
.sell-grid{display:grid;grid-template-columns:1fr 1fr;gap:clamp(32px,6vw,80px);align-items:center;}
.sell-points{list-style:none;margin:32px 0 0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:1px;
  background:var(--border);border:1px solid var(--border);}
.sell-points li{background:var(--ivory);padding:22px 24px;}
.sell-points b{font-family:var(--serif);font-weight:500;font-size:1.15rem;display:block;margin-bottom:4px;}
.sell-points span{font-size:.85rem;color:var(--warm-grey);}

/* ---------- Authenticity (3 columns) ---------- */
.trust{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--border);
  border-block:1px solid var(--border);}
.trust > div{background:var(--ivory);padding:clamp(28px,4vw,48px) clamp(20px,3vw,40px);}
.trust .num{font-family:var(--serif);font-size:1.1rem;color:var(--gold);}
.trust h3{font-size:1.7rem;margin:14px 0 12px;}
.trust p{color:var(--warm-grey);font-size:.95rem;}

/* ---------- Journal ---------- */
.journal-grid{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:36px 28px;}
.article{display:block;}
.article-media{overflow:hidden;background:var(--stone);aspect-ratio:3/2;}
.article.lead .article-media{aspect-ratio:4/5;}
.article-media img{width:100%;height:100%;object-fit:cover;transition:transform 1.2s var(--ease);}
.article:hover .article-media img{transform:scale(1.04);}
.article-cat{font-size:.7rem;letter-spacing:.2em;text-transform:uppercase;color:var(--gold);margin-top:18px;}
.article h3{font-size:1.5rem;margin-top:8px;max-width:22ch;}
.article.lead h3{font-size:2.2rem;}
.article .meta{margin-top:10px;}

/* ---------- Newsletter ---------- */
.news{text-align:center;max-width:620px;margin-inline:auto;}
.news .h-section{margin-bottom:16px;}
.news form{display:flex;gap:0;border-bottom:1px solid var(--near-black);margin-top:34px;}
.news input{flex:1;border:0;background:transparent;padding:14px 4px;font-family:var(--sans);font-size:1rem;color:var(--near-black);}
.news input:focus{outline:none;}
.news button{background:none;border:0;font-weight:500;font-size:.78rem;letter-spacing:.1em;text-transform:uppercase;padding:0 8px;}
.news .meta{margin-top:16px;}

/* ---------- Footer ---------- */
.site-footer{background:var(--charcoal);color:var(--ivory);padding-block:clamp(56px,7vw,90px) 32px;border-top:1px solid rgba(245,241,235,.1);}
.footer-top{display:grid;grid-template-columns:1.6fr 1fr 1fr 1fr;gap:40px;padding-bottom:48px;
  border-bottom:1px solid rgba(245,241,235,.14);}
.footer-brand .logo{color:var(--ivory);}
.footer-brand p{color:rgba(245,241,235,.6);margin-top:18px;max-width:34ch;font-size:.9rem;}
.footer-col h4{font-family:var(--sans);font-weight:500;font-size:.72rem;letter-spacing:.18em;
  text-transform:uppercase;color:rgba(245,241,235,.5);margin-bottom:18px;}
.footer-col a{display:block;color:rgba(245,241,235,.82);font-size:.9rem;padding:6px 0;}
.footer-col a:hover{color:var(--ivory);}
.footer-bottom{display:flex;justify-content:space-between;align-items:center;gap:16px;padding-top:24px;
  font-size:.78rem;color:rgba(245,241,235,.5);flex-wrap:wrap;}

/* ---------- Page hero (inner pages) ---------- */
.page-head{padding-block:clamp(20px,3vw,40px) clamp(24px,4vw,48px);}
.page-head .eyebrow{margin-bottom:18px;}
.page-head .display{font-size:clamp(2.4rem,5vw,4.2rem);}
.page-head p{margin-top:20px;color:var(--warm-grey);max-width:56ch;}

/* Compact header for product-listing pages — tidier, so more products show up */
.page-head--compact{padding-block:clamp(12px,1.8vw,22px) clamp(14px,2vw,24px);}
.page-head--compact .eyebrow{margin-bottom:8px;}
.page-head--compact .display{font-size:clamp(1.9rem,3.4vw,3rem);}
.page-head--compact > p{margin-top:10px;}
.page-head--compact .collection-count{font-size:.82rem;}
.breadcrumb{font-size:.75rem;letter-spacing:.04em;color:var(--warm-grey);margin-bottom:14px;}
.breadcrumb a:hover{color:var(--near-black);}

/* ---------- Collection toolbar / filters ---------- */
.toolbar{display:flex;justify-content:space-between;align-items:center;gap:20px;
  padding-block:20px;border-top:1px solid var(--border);border-bottom:1px solid var(--border);flex-wrap:wrap;}
.filters{display:flex;gap:8px;flex-wrap:wrap;}
.chip{border:1px solid var(--border);background:transparent;padding:8px 16px;font-size:.75rem;
  letter-spacing:.06em;text-transform:uppercase;color:var(--warm-grey);transition:.25s;}
.chip:hover{border-color:var(--near-black);color:var(--near-black);}
.chip.active{background:var(--near-black);border-color:var(--near-black);color:var(--ivory);}
.select{border:1px solid var(--border);background:transparent;padding:8px 14px;font-family:var(--sans);
  font-size:.75rem;letter-spacing:.06em;text-transform:uppercase;color:var(--near-black);}

/* ============================================================
   PRODUCT PAGE
   ============================================================ */
.pdp{display:grid;grid-template-columns:minmax(0,680px) 1fr;gap:clamp(32px,5vw,58px);align-items:start;}
.gallery{display:grid;grid-template-columns:1fr 1fr;gap:4px;}
.gallery .g-item{background:var(--stone);overflow:hidden;}
.gallery .g-item img{width:100%;height:100%;object-fit:cover;}
.gallery .g-item.full{grid-column:1/-1;aspect-ratio:4/5;}
.gallery .g-item:not(.full){aspect-ratio:1/1;}
.pdp-info{position:sticky;top:132px;}
.pdp-brand{font-size:.78rem;letter-spacing:.22em;text-transform:uppercase;font-weight:500;}
.pdp-title{font-size:clamp(1.8rem,3vw,2.6rem);margin:10px 0 14px;line-height:1.08;}
.pdp-attrs{font-size:.95rem;color:var(--warm-grey);line-height:1.7;}
.pdp-price{font-size:1.3rem;font-weight:500;margin:22px 0;padding-block:22px;
  border-block:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;gap:14px;}
.pdp-price.request{font-family:var(--serif);font-style:italic;font-weight:500;font-size:1.5rem;color:var(--espresso);}
/* Wishlist heart beside the price (replaces the old boxed button) */
.pdp-heart{flex:0 0 auto;width:40px;height:40px;border:1px solid var(--border);border-radius:50%;
  background:transparent;display:flex;align-items:center;justify-content:center;cursor:pointer;
  transition:border-color .25s var(--ease);}
.pdp-heart:hover{border-color:var(--near-black);}
.pdp-heart svg{width:18px;height:18px;stroke:var(--near-black);fill:none;stroke-width:1.4;}
.pdp-heart.active svg{fill:var(--near-black);}
/* Share + heart pair beside the price (share reuses the heart's circle look) */
.pdp-pactions{flex:0 0 auto;display:flex;align-items:center;gap:10px;}
.pdp-share svg{width:16px;height:16px;stroke-linecap:round;stroke-linejoin:round;}
.pdp-actions{display:flex;flex-direction:column;gap:12px;margin-bottom:28px;}
.pdp-actions .row{display:flex;gap:12px;}
.pdp-actions .row .btn{flex:1;}
.wa-ico{width:17px;height:17px;fill:currentColor;}
.pdp-reassure{font-size:.8rem;color:var(--warm-grey);display:flex;flex-direction:column;gap:8px;}
.pdp-reassure div{display:flex;gap:9px;align-items:flex-start;}
.pdp-reassure .tick{color:var(--gold);}

/* Specifications (always open) + Description (click to expand), moved up into
   the info column beside the photo. */
.pdp-extra{margin-top:34px;}
.pdp-spec{padding-top:26px;border-top:1px solid var(--border);}
.pdp-block-h{font-family:var(--serif);font-weight:400;font-size:1.35rem;margin:0 0 10px;letter-spacing:.01em;}
.pdp-descblock .disc{border-top:1px solid var(--border);}

/* Disclosure blocks (light, not heavy accordions) */
.disclosures{margin-top:clamp(40px,6vw,72px);border-top:1px solid var(--border);}
.disc{border-bottom:1px solid var(--border);}
.disc > button{width:100%;display:flex;justify-content:space-between;align-items:center;gap:16px;
  background:none;border:0;padding:24px 0;text-align:left;font-family:var(--serif);font-size:1.35rem;
  font-weight:500;color:var(--near-black);}
.disc .plus{position:relative;width:15px;height:15px;flex:none;}
.disc .plus::before,.disc .plus::after{content:"";position:absolute;background:var(--near-black);}
.disc .plus::before{left:0;top:7px;width:15px;height:1px;}
.disc .plus::after{left:7px;top:0;width:1px;height:15px;transition:transform .3s var(--ease);}
.disc[open] .plus::after{transform:rotate(90deg);opacity:0;}
.disc-body{padding:0 0 28px;color:var(--warm-grey);max-width:64ch;font-size:.95rem;line-height:1.75;}
.disc-body ul{margin:0;padding-left:18px;}
.disc-body li{margin-bottom:6px;}
.spec-table{width:100%;border-collapse:collapse;}
.spec-table td{padding:10px 0;border-bottom:1px solid var(--border);font-size:.9rem;vertical-align:top;}
.spec-table td:first-child{color:var(--near-black);width:38%;}
.spec-table td:last-child{color:var(--warm-grey);}

/* Sticky mobile WhatsApp bar */
.wa-sticky{position:fixed;left:0;right:0;bottom:0;z-index:70;display:none;gap:10px;
  padding:12px var(--pad) calc(12px + env(safe-area-inset-bottom));background:var(--ivory);
  border-top:1px solid var(--border);}
.wa-sticky .btn{flex:1;padding:15px;}

/* ---------- Push opt-in bell (below the footer) ---------- */
.push-optin{text-align:center;padding:22px var(--pad) calc(22px + env(safe-area-inset-bottom));background:var(--bg-2);}
.push-optin-btn{font-size:.8rem;letter-spacing:.08em;color:var(--near-black);
  background:transparent;border:1px solid var(--border);border-radius:100px;
  padding:11px 22px;cursor:pointer;transition:background .25s,color .25s;}
.push-optin-btn:hover{background:var(--near-black);color:var(--ivory);}
.push-optin-btn:disabled{opacity:.7;cursor:default;background:transparent;color:var(--warm-grey);}
.push-optin-hint{max-width:34rem;margin:0 auto;font-size:.8rem;line-height:1.55;color:var(--warm-grey);}
.push-optin-hint b{color:var(--near-black);font-weight:600;}
body.has-tabbar .push-optin{padding-bottom:calc(22px + 64px);} /* clear the mobile tab bar */

/* ---------- Mobile bottom tab bar (app-like nav, phones only) ---------- */
.tabbar{display:none;}
@media(max-width:768px){
  .tabbar{position:fixed;left:0;right:0;bottom:0;z-index:75;display:flex;
    background:var(--ivory);border-top:1px solid var(--border);
    padding:6px 0 calc(6px + env(safe-area-inset-bottom));}
  .tabbar-item{flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;
    padding:4px 0;color:var(--warm-grey);text-decoration:none;
    font-size:.6rem;letter-spacing:.1em;text-transform:uppercase;}
  .tabbar-item.on{color:var(--near-black);}
  .tabbar-ic{position:relative;display:flex;}
  .tabbar-ic svg{width:22px;height:22px;stroke:currentColor;fill:none;stroke-width:1.4;}
  .tabbar-wc{top:-6px;right:-8px;}
  body.has-tabbar{padding-bottom:64px;}
}

/* ---------- Toast ---------- */
.toast{position:fixed;bottom:28px;left:50%;transform:translate(-50%,20px);z-index:200;
  background:var(--near-black);color:var(--ivory);padding:13px 22px;font-size:.8rem;letter-spacing:.04em;
  opacity:0;pointer-events:none;transition:opacity .3s,transform .3s;}
.toast.show{opacity:1;transform:translate(-50%,0);}

/* ---------- Reveal ---------- */
.reveal{opacity:0;transform:translateY(var(--reveal-shift,14px));transition:opacity calc(.8s * var(--anim,1)) var(--ease),transform calc(.8s * var(--anim,1)) var(--ease);}
.reveal.in{opacity:1;transform:none;}
html[data-anim="off"] .reveal{opacity:1;transform:none;transition:none;}

/* ---------- Empty state ---------- */
.empty{text-align:center;padding-block:clamp(48px,8vw,96px);}
.empty .h-sub{margin-bottom:12px;}
.empty p{color:var(--warm-grey);margin-bottom:24px;}

/* ---------- Forms (enquire / sell / account) ---------- */
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:22px 28px;}
.field{display:flex;flex-direction:column;gap:8px;}
.field.full{grid-column:1/-1;}
.field label{font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:var(--warm-grey);}
.field input,.field textarea,.field select{
  border:0;border-bottom:1px solid var(--border);background:transparent;padding:12px 2px;
  font-family:var(--sans);font-size:1rem;color:var(--near-black);}
.field textarea{resize:vertical;min-height:110px;}
.field input:focus,.field textarea:focus,.field select:focus{outline:none;border-color:var(--near-black);}

/* ============================================================
   RESPONSIVE
   ============================================================ */
@media (max-width:1024px){
  .product-grid{grid-template-columns:repeat(var(--cols-t,3),1fr);}
  .journal-grid{grid-template-columns:1fr 1fr;}
  .article.lead{grid-column:1/-1;}
  .article.lead .article-media{aspect-ratio:16/9;}
  .footer-top{grid-template-columns:1fr 1fr;gap:32px;}
}

@media (max-width:900px){
  .nav{display:none;}
  .utils .u-desktop{display:none;}
  .burger,.m-icon{display:inline-flex;}
  .header-inner{display:grid;grid-template-columns:1fr auto 1fr;}
  .header-inner .logo{justify-self:center;text-align:center;grid-column:2;}
  .header-inner .burger{grid-column:1;justify-self:start;}
  .header-inner .utils{grid-column:3;justify-self:end;}
  .pdp{grid-template-columns:1fr;gap:0;}
  .pdp-info{position:static;margin-top:32px;}
  .feature-split,.sell-grid{grid-template-columns:1fr;gap:36px;}
  .feature-media{order:-1;}
}

@media (max-width:760px){
  .product-grid,.product-grid.cols-3{grid-template-columns:repeat(var(--cols-m,2),1fr);gap:28px 16px;}
  .split{grid-template-columns:1fr;gap:28px;}
  .split.reverse .split-media{order:-1;}
  .houses{display:flex;flex-direction:column;}
  .house{aspect-ratio:3/2;}
  .house.a,.house.d{aspect-ratio:4/5;}
  .tiles{grid-template-columns:1fr;}
  .trust{grid-template-columns:1fr;}
  .journal-grid{grid-template-columns:1fr;}
  .sell-points{grid-template-columns:1fr;}
  .form-grid{grid-template-columns:1fr;}
  .gallery{grid-template-columns:1fr;}
  .gallery .g-item:not(.full){aspect-ratio:4/5;}
  .wa-sticky{display:flex;}
  body.has-wa-bar{padding-bottom:78px;}
  /* phones: the permanent bottom bar is the ONLY action home — every in-flow
     CTA block hides, sold/reserved included (owner, 2026-07-05: sold pieces
     follow the same design as enquire; their bar = Alternatives + Source Similar). */
  .pdp-actions{display:none;}
  .sec-head{flex-direction:column;align-items:flex-start;gap:16px;}
  .footer-top{grid-template-columns:1fr 1fr;}
  .footer-brand{grid-column:1/-1;}
}

@media (max-width:460px){
  .product-grid,.product-grid.cols-3{grid-template-columns:repeat(var(--cols-m,2),1fr);}
  .carousel{grid-auto-columns:82%;}
  .footer-top{grid-template-columns:1fr;}
}

/* ---------- Mobile hero & chrome polish (owner spec, 2026-07-05) ----------
   Phones only — the approved desktop design is untouched. */
@keyframes announce-ticker{from{transform:translateX(0);}to{transform:translateX(-100%);}}
@media (max-width:760px){
  /* 1. Announcement bar: one line, gently scrolling ticker (no wrap to 2 lines) */
  .announce{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:8px 0;}
  .announce .announce-msg{display:inline-block;padding-left:100%;animation:announce-ticker 16s linear infinite;}
  /* 2+4. Transparent header kept; stronger top gradient for logo/icon legibility,
     and a deeper lower-third gradient behind the hero copy */
  .hero::after{background:linear-gradient(180deg,
    rgba(27,25,23,.55) 0%, rgba(27,25,23,0) 30%,
    rgba(27,25,23,0) 52%, rgba(27,25,23,.72) 100%);}
  /* 3. Logo higher + slightly smaller (80% of the editor's logo-size setting) */
  .header-inner{padding-block:12px;}
  .header-inner .logo{font-size:calc(var(--logo-size,1.5rem)*.8);}
  /* 5. Small eyebrow, heading ~48–58px */
  .hero .eyebrow{font-size:.6rem;letter-spacing:.26em;}
  .hero .display{font-size:clamp(44px,13vw,58px);line-height:1.06;}
  .hero p{font-size:.95rem;margin-top:16px;}
  /* 6. CTA button (outlined at all widths now) — just tighter spacing on phones */
  .hero .arrow{padding:14px 24px;margin-top:26px;}
}
@media (prefers-reduced-motion:reduce){
  .announce .announce-msg{animation:none;padding-left:0;}
}

@media (prefers-reduced-motion:reduce){
  *{animation:none!important;transition:none!important;scroll-behavior:auto!important;}
  .reveal{opacity:1;transform:none;}
}

/* ============================================================
   EXTENDED SYSTEM — identity, SH Edit, filters, PDP, search,
   supporting pages, admin editor
   ============================================================ */

/* ---------- Logo system ---------- */
.logo--compact{font-size:1.15rem;letter-spacing:.16em;}
.logo--compact small{display:none;}
.monogram{font-family:var(--serif);font-weight:500;font-size:1.4rem;letter-spacing:.05em;
  width:44px;height:44px;border:1px solid currentColor;display:inline-flex;align-items:center;justify-content:center;}
.logo--light,.logo--light small{color:var(--ivory);}
.logo--dark,.logo--dark small{color:var(--near-black);}
.logo-specimen{display:flex;flex-wrap:wrap;gap:20px;}
.logo-swatch{border:1px solid var(--border);padding:26px;display:flex;flex-direction:column;gap:14px;align-items:flex-start;min-width:200px;}
.logo-swatch.on-dark{background:var(--charcoal);}
.logo-swatch .meta{font-size:.7rem;letter-spacing:.14em;text-transform:uppercase;}
.logo-swatch.on-dark .meta{color:rgba(245,241,235,.6);}
/* Product image watermark */
.watermark{position:absolute;right:14px;bottom:14px;z-index:2;font-family:var(--serif);
  font-size:.7rem;letter-spacing:.18em;text-transform:uppercase;color:rgb(245,241,235);
  opacity:var(--wm-opacity,.72);mix-blend-mode:overlay;pointer-events:none;}
html[data-wmpos="bottom-left"] .watermark{right:auto;left:14px;}
html[data-wmpos="center"] .watermark{right:auto;bottom:auto;left:50%;top:50%;transform:translate(-50%,-50%);}
/* Global → Animations switches (undefined = on, matching the pre-wired shop) */
html[data-imgswap="off"] .pc-media .alt{display:none;}
html[data-linku="off"] .arrow::after{display:none;}
html[data-fade="off"] .reveal{opacity:1;transform:none;transition:none;}

/* ---------- The SH Edit ---------- */
.edit-feature{position:relative;overflow:hidden;background:var(--charcoal);color:var(--ivory);}
.edit-feature-grid{display:grid;grid-template-columns:1fr 1fr;min-height:520px;}
.edit-feature-media{position:relative;overflow:hidden;}
.edit-feature-media img{width:100%;height:100%;object-fit:cover;}
.edit-feature-body{padding:clamp(40px,6vw,84px);display:flex;flex-direction:column;justify-content:center;}
.edit-feature-body .eyebrow{color:rgba(245,241,235,.6);}
.edit-num{font-family:var(--serif);font-style:italic;font-size:1.2rem;color:var(--gold);margin-bottom:14px;}
.edit-feature-body h2{color:var(--ivory);font-size:clamp(2rem,3.6vw,3rem);}
.edit-feature-body p{color:rgba(245,241,235,.75);margin-top:18px;max-width:42ch;}
.edit-feature-body .arrow{margin-top:30px;}
.edit-mini{display:grid;grid-auto-flow:column;grid-auto-columns:120px;gap:12px;margin-top:34px;overflow-x:auto;scrollbar-width:none;}
.edit-mini::-webkit-scrollbar{display:none;}
.edit-mini a{display:block;aspect-ratio:var(--ratio-product);overflow:hidden;background:var(--espresso);}
.edit-mini img{width:100%;height:100%;object-fit:cover;}

.edit-archive{display:grid;grid-template-columns:repeat(2,1fr);gap:clamp(24px,4vw,56px);}
.edit-card{display:block;}
.edit-card-media{aspect-ratio:var(--ratio-landscape);overflow:hidden;background:var(--stone);position:relative;}
.edit-card-media img{width:100%;height:100%;object-fit:cover;transition:transform 1.2s var(--ease);}
.edit-card:hover .edit-card-media img{transform:scale(var(--img-zoom));}
.edit-card .edit-num{color:var(--gold);margin:20px 0 6px;}
.edit-card h3{font-size:clamp(1.6rem,2.6vw,2.2rem);}
.edit-card p{color:var(--warm-grey);margin-top:10px;max-width:48ch;}

/* Edition (single) header */
.edition-hero{position:relative;min-height:64vh;display:flex;align-items:flex-end;color:var(--ivory);overflow:hidden;}
.edition-hero img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;}
.edition-hero::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(27,25,23,.15),rgba(27,25,23,.7));}
.edition-hero .inner{position:relative;z-index:2;padding-bottom:clamp(40px,7vh,80px);max-width:640px;}
.edition-hero h1{color:var(--ivory);font-size:clamp(2.4rem,5vw,4.4rem);}

/* ---------- Collection page upgrades ---------- */
.collection-hero{display:grid;grid-template-columns:1.1fr .9fr;gap:clamp(28px,5vw,72px);align-items:end;}
.collection-hero .cover{aspect-ratio:var(--ratio-landscape);overflow:hidden;background:var(--stone);}
.collection-hero .cover img{width:100%;height:100%;object-fit:cover;}
.collection-count{font-size:.8rem;letter-spacing:.04em;color:var(--warm-grey);}
.toolbar .left{display:flex;align-items:center;gap:16px;}
.btn-filter{display:inline-flex;align-items:center;gap:9px;border:1px solid var(--border);
  background:none;padding:9px 18px;font-size:.75rem;letter-spacing:.06em;text-transform:uppercase;color:var(--near-black);}
.btn-filter svg{width:15px;height:15px;stroke:currentColor;fill:none;stroke-width:1.4;flex:none;}

/* Filter drawer */
.filter-drawer{position:fixed;top:0;right:0;bottom:0;width:min(420px,92vw);z-index:130;background:var(--bg);
  transform:translateX(100%);transition:transform .45s var(--ease);display:flex;flex-direction:column;
  border-left:1px solid var(--border);}
.filter-drawer.open{transform:none;}
.filter-overlay{position:fixed;inset:0;z-index:125;background:rgba(27,25,23,.35);opacity:0;pointer-events:none;transition:opacity .35s;}
.filter-overlay.open{opacity:1;pointer-events:auto;}
.filter-head{display:flex;justify-content:space-between;align-items:center;padding:22px var(--pad);border-bottom:1px solid var(--border);}
.filter-head h3{font-size:1.4rem;}
.filter-body{overflow-y:auto;padding:8px var(--pad) 20px;flex:1;}
.filter-group{border-bottom:1px solid var(--border);padding:18px 0;}
.filter-group > summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;align-items:center;
  font-family:var(--sans);font-weight:500;font-size:.78rem;letter-spacing:.12em;text-transform:uppercase;}
.filter-group > summary::-webkit-details-marker{display:none;}
.filter-group[open] > summary .chev{transform:rotate(180deg);}
.filter-group .chev{transition:transform .3s;font-size:.7rem;color:var(--warm-grey);}
.filter-options{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px;}
.filter-opt{border:1px solid var(--border);background:none;padding:7px 14px;font-size:.75rem;color:var(--warm-grey);cursor:pointer;transition:.2s;}
.filter-opt:hover{border-color:var(--near-black);color:var(--near-black);}
.filter-opt.active{background:var(--near-black);border-color:var(--near-black);color:var(--ivory);}
.filter-foot{padding:18px var(--pad);border-top:1px solid var(--border);display:flex;gap:12px;}
.filter-foot .btn{flex:1;}
.active-filters{display:flex;flex-wrap:wrap;gap:8px;padding-top:18px;}
.active-filters .pill{display:inline-flex;align-items:center;gap:8px;border:1px solid var(--border);
  padding:6px 12px;font-size:.72rem;letter-spacing:.04em;text-transform:uppercase;color:var(--near-black);}
.active-filters .pill button{background:none;border:0;font-size:1rem;line-height:1;color:var(--warm-grey);cursor:pointer;}
.active-filters .clear{background:none;border:0;font-size:.72rem;letter-spacing:.04em;text-transform:uppercase;
  color:var(--warm-grey);text-decoration:underline;cursor:pointer;}

/* Sourcing CTA band + related editorial */
.sourcing-band{border-block:1px solid var(--border);text-align:center;}
.sourcing-band .h-sub{margin-bottom:12px;}
.sourcing-band p{color:var(--warm-grey);max-width:52ch;margin:0 auto 24px;}

/* ---------- Product page — storytelling & condition ---------- */
.pdp-story{margin-top:26px;display:flex;flex-direction:column;gap:20px;}
.story-block .lbl{font-size:.7rem;letter-spacing:.18em;text-transform:uppercase;color:var(--gold);margin-bottom:7px;}
.story-block p{font-family:var(--serif);font-size:1.2rem;line-height:1.5;color:var(--espresso);font-style:italic;}
.rarity{display:inline-flex;align-items:center;gap:10px;font-size:.75rem;letter-spacing:.14em;text-transform:uppercase;color:var(--warm-grey);margin-top:4px;}
.rarity .dots{display:inline-flex;gap:4px;}
.rarity .dot{width:7px;height:7px;border-radius:50%;border:1px solid var(--espresso);}
.rarity .dot.on{background:var(--espresso);}

.condition-head{display:flex;align-items:baseline;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:6px;}
.grade{display:inline-flex;align-items:center;gap:10px;}
.grade b{font-family:var(--serif);font-size:1.6rem;font-weight:500;}
.grade .tag{font-size:.68rem;letter-spacing:.16em;text-transform:uppercase;color:var(--ivory);background:var(--espresso);padding:4px 10px;}
.condition-grid{width:100%;border-collapse:collapse;}
.condition-grid td{padding:12px 0;border-bottom:1px solid var(--border);font-size:.9rem;vertical-align:top;}
.condition-grid td:first-child{width:34%;color:var(--near-black);}
.condition-grid td:last-child{color:var(--warm-grey);}

/* Private client services */
.services{list-style:none;margin:0;padding:0;border-top:1px solid var(--border);}
.services li{border-bottom:1px solid var(--border);}
.services a{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px 0;font-size:.92rem;color:var(--near-black);}
.services a:hover{color:var(--espresso);}
.services .arr{color:var(--warm-grey);transition:transform .3s var(--ease);}
.services a:hover .arr{transform:translateX(5px);}

/* Sold banner + state */
.sold-banner{background:var(--espresso);color:var(--ivory);text-align:center;padding:14px 20px;
  font-family:var(--serif);font-style:italic;font-size:1.15rem;}
.sold-flag{position:absolute;top:14px;left:14px;z-index:2;background:var(--charcoal);color:var(--ivory);
  font-size:.62rem;letter-spacing:.18em;text-transform:uppercase;padding:5px 10px;}
.product-card.is-sold .pc-media img{filter:grayscale(.25);}
.pc-price.sold{color:var(--warm-grey);font-style:italic;font-family:var(--serif);font-size:1rem;}

/* ---------- Full-screen gallery / lightbox ---------- */
.pdp .gallery .g-item{position:relative;cursor:zoom-in;}
.g-num{position:absolute;left:12px;top:12px;z-index:2;font-size:.68rem;letter-spacing:.1em;color:var(--ivory);
  background:rgba(27,25,23,.5);padding:3px 8px;}
.g-cap{position:absolute;left:12px;bottom:12px;z-index:2;font-size:.68rem;letter-spacing:.06em;color:var(--ivory);
  background:rgba(27,25,23,.5);padding:3px 8px;}
.wear-marker{position:absolute;z-index:3;width:26px;height:26px;border-radius:50%;border:1px solid var(--ivory);
  background:rgba(27,25,23,.55);color:var(--ivory);font-size:.7rem;display:flex;align-items:center;justify-content:center;
  transform:translate(-50%,-50%);cursor:help;}
.wear-marker span{position:absolute;bottom:130%;left:50%;transform:translateX(-50%);white-space:nowrap;
  background:var(--near-black);color:var(--ivory);font-size:.68rem;letter-spacing:.02em;padding:5px 9px;opacity:0;
  pointer-events:none;transition:opacity .25s;}
@media(hover:hover){.wear-marker:hover span{opacity:1;}}
/* Touch screens can't hover — condition labels stay visible. */
@media(hover:none){.wear-marker span{opacity:1;}}
.lightbox{position:fixed;inset:0;z-index:200;background:rgba(20,18,16,.96);display:none;flex-direction:column;}
.lightbox.open{display:flex;}
.lb-stage{flex:1;display:flex;align-items:center;justify-content:center;overflow:hidden;position:relative;}
.lb-stage img{max-width:92vw;max-height:82vh;object-fit:contain;transition:transform .35s var(--ease);cursor:zoom-in;}
.lb-stage img.zoomed{cursor:zoom-out;transform:scale(2.2);}
.lb-top{display:flex;justify-content:space-between;align-items:center;padding:18px 24px;color:var(--ivory);}
.lb-top .count{font-size:.8rem;letter-spacing:.1em;}
.lb-close,.lb-nav{background:none;border:0;color:var(--ivory);cursor:pointer;padding:8px;}
.lb-close svg,.lb-nav svg{width:26px;height:26px;stroke:currentColor;fill:none;stroke-width:1.3;}
.lb-nav{position:absolute;top:50%;transform:translateY(-50%);z-index:3;}
.lb-nav.prev{left:14px;} .lb-nav.next{right:14px;}
.lb-thumbs{display:flex;gap:8px;justify-content:center;padding:16px;overflow-x:auto;}
.lb-thumbs img{width:54px;height:64px;object-fit:cover;opacity:.5;cursor:pointer;transition:opacity .25s;}
.lb-thumbs img.active{opacity:1;outline:1px solid var(--ivory);}

/* ---------- Predictive search ---------- */
.search-pop{position:relative;}
.predict{position:absolute;top:calc(100% + 10px);right:0;width:min(440px,86vw);background:var(--bg);
  border:1px solid var(--border);z-index:90;max-height:70vh;overflow-y:auto;display:none;}
.predict.open{display:block;}
.predict .p-head{padding:12px 16px;border-bottom:1px solid var(--border);}
.predict .p-head input{width:100%;border:0;background:none;font-family:var(--sans);font-size:.95rem;color:var(--near-black);}
.predict .p-head input:focus{outline:none;}
.predict-row{display:flex;gap:12px;align-items:center;padding:12px 16px;border-bottom:1px solid var(--border);}
.predict-row:hover{background:var(--bg-3);}
.predict-row img{width:44px;height:54px;object-fit:cover;background:var(--stone);flex:none;}
.predict-row .pr-brand{font-size:.66rem;letter-spacing:.16em;text-transform:uppercase;color:var(--warm-grey);}
.predict-row .pr-name{font-family:var(--serif);font-size:1.05rem;line-height:1.2;}
.predict-row .pr-meta{font-size:.75rem;color:var(--warm-grey);margin-left:auto;text-align:right;white-space:nowrap;}
.predict .p-empty{padding:20px 16px;}
.predict .p-empty p{color:var(--warm-grey);font-size:.88rem;margin-bottom:12px;}
.predict-suggest{padding:12px 16px;}
.predict-suggest .lbl{font-size:.66rem;letter-spacing:.16em;text-transform:uppercase;color:var(--warm-grey);margin-bottom:8px;}
.predict-suggest a{display:inline-block;font-size:.8rem;border:1px solid var(--border);padding:5px 11px;margin:0 6px 6px 0;color:var(--near-black);}

/* ---------- Supporting pages: prose, faq, guide, contact ---------- */
.prose{max-width:var(--maxw-narrow);}
.prose h2{font-size:var(--h3);margin:40px 0 14px;}
.prose h3{font-size:var(--h4);margin:28px 0 10px;}
.prose p{color:var(--warm-grey);margin-bottom:16px;line-height:1.8;}
.prose ul{color:var(--warm-grey);padding-left:20px;margin-bottom:16px;}
.prose li{margin-bottom:8px;}
.prose a{text-decoration:underline;}
.prose ol{color:var(--warm-grey);padding-left:20px;margin-bottom:16px;}
.prose blockquote{margin:32px 0;padding:4px 0 4px 20px;border-left:2px solid var(--gold);font-family:var(--serif);font-size:1.3rem;line-height:1.55;color:var(--text);}
.prose blockquote p{margin-bottom:8px;color:inherit;font-family:inherit;font-size:inherit;line-height:inherit;}
.prose hr{border:none;border-top:1px solid var(--border);margin:40px 0;}
.prose img{max-width:100%;height:auto;display:block;margin:32px 0;}
/* Sized story photos (inline width:%) keep a readable size on phones —
   min-width wins over the inline width, so no !important needed. */
@media (max-width:640px){ .prose img{min-width:60%;} }
.faq-item{border-bottom:1px solid var(--border);}
.faq-item summary{list-style:none;cursor:pointer;padding:22px 0;font-family:var(--serif);font-size:1.3rem;
  display:flex;justify-content:space-between;gap:16px;align-items:center;}
.faq-item summary::-webkit-details-marker{display:none;}
.faq-item summary .plus{position:relative;width:14px;height:14px;flex:none;}
.faq-item summary .plus::before,.faq-item summary .plus::after{content:"";position:absolute;background:var(--near-black);}
.faq-item summary .plus::before{top:6px;left:0;width:14px;height:1px;}
.faq-item summary .plus::after{left:6px;top:0;width:1px;height:14px;transition:transform .3s;}
.faq-item[open] summary .plus::after{transform:rotate(90deg);opacity:0;}
.faq-item .a{padding:0 0 24px;color:var(--warm-grey);max-width:62ch;line-height:1.75;}
.contact-grid{display:grid;grid-template-columns:1fr 1fr;gap:clamp(32px,6vw,80px);}
.contact-methods{list-style:none;margin:0;padding:0;}
.contact-methods li{border-top:1px solid var(--border);padding:20px 0;}
.contact-methods li:last-child{border-bottom:1px solid var(--border);}
.contact-methods .lbl{font-size:.7rem;letter-spacing:.16em;text-transform:uppercase;color:var(--warm-grey);margin-bottom:6px;}
.contact-methods b{font-family:var(--serif);font-weight:500;font-size:1.3rem;}

/* Condition guide grade legend */
.grade-legend{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:1px;background:var(--border);border:1px solid var(--border);}
.grade-legend > div{background:var(--bg);padding:24px;}
.grade-legend b{font-family:var(--serif);font-size:1.5rem;font-weight:500;display:block;margin-bottom:6px;}
.grade-legend span{font-size:.85rem;color:var(--warm-grey);}

/* ---------- States: 404 / maintenance / loading / error ---------- */
.state-full{min-height:70vh;display:flex;align-items:center;justify-content:center;text-align:center;}
.state-full .inner{max-width:520px;}
.state-full .big{font-family:var(--serif);font-size:clamp(4rem,12vw,9rem);line-height:.9;color:var(--espresso);}
.state-full p{color:var(--warm-grey);margin:18px 0 28px;}
.skeleton{background:linear-gradient(100deg,var(--stone) 30%,var(--parchment) 50%,var(--stone) 70%);
  background-size:200% 100%;animation:sk 1.4s var(--ease) infinite;}
@keyframes sk{to{background-position:-200% 0;}}
.sk-card{margin-bottom:16px;}
.sk-card .sk-img{aspect-ratio:var(--ratio-product);}
.sk-line{height:12px;margin-top:12px;width:70%;}
.sk-line.short{width:40%;}
.error-note{border:1px solid var(--border);border-left:3px solid var(--espresso);background:var(--bg-3);
  padding:16px 20px;font-size:.9rem;color:var(--warm-grey);}

/* ---------- Admin theme editor ---------- */
.admin{display:grid;grid-template-columns:340px 1fr;min-height:100vh;}
.admin-panel{border-right:1px solid var(--border);background:var(--bg-3);overflow-y:auto;height:100vh;position:sticky;top:0;}
.admin-panel .ap-head{padding:22px 24px;border-bottom:1px solid var(--border);}
.admin-panel .ap-head .logo{font-size:1.15rem;}
.admin-panel .ap-status{font-size:.7rem;letter-spacing:.1em;text-transform:uppercase;margin-top:6px;color:var(--gold);}
.ap-section{border-bottom:1px solid var(--border);padding:18px 24px;}
.ap-section h4{font-family:var(--sans);font-weight:500;font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:var(--warm-grey);margin-bottom:14px;}
.ap-field{margin-bottom:14px;}
.ap-field label{display:block;font-size:.75rem;color:var(--near-black);margin-bottom:6px;}
.ap-field input[type=color]{width:38px;height:26px;border:1px solid var(--border);padding:0;background:none;vertical-align:middle;}
.ap-field input[type=range]{width:100%;}
.ap-field input[type=text],.ap-field select{width:100%;border:1px solid var(--border);background:var(--bg);padding:8px 10px;font-family:var(--sans);font-size:.85rem;}
.ap-row{display:flex;gap:10px;align-items:center;justify-content:space-between;}
.admin-stage{display:flex;flex-direction:column;height:100vh;}
.admin-bar{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 22px;border-bottom:1px solid var(--border);background:var(--bg);}
.device-toggle{display:flex;gap:4px;border:1px solid var(--border);}
.device-toggle button{background:none;border:0;padding:8px 16px;font-size:.72rem;letter-spacing:.06em;text-transform:uppercase;color:var(--warm-grey);cursor:pointer;}
.device-toggle button.active{background:var(--near-black);color:var(--ivory);}
.admin-actions{display:flex;gap:10px;align-items:center;}
.admin-frame-wrap{flex:1;overflow:auto;background:var(--stone);display:flex;justify-content:center;padding:28px;}
.admin-frame{background:var(--bg);border:1px solid var(--border);width:100%;height:100%;transition:width .4s var(--ease),height .4s var(--ease);}
.admin-frame.tablet{width:768px;} .admin-frame.mobile{width:390px;}
.badge{font-size:.62rem;letter-spacing:.12em;text-transform:uppercase;padding:4px 9px;border:1px solid var(--border);color:var(--warm-grey);}
.badge.draft{background:var(--espresso);color:var(--ivory);border-color:var(--espresso);}
.badge.live{background:var(--gold);color:var(--charcoal);border-color:var(--gold);}
.revision-list{list-style:none;margin:0;padding:0;}
.revision-list li{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid var(--border);font-size:.8rem;}
.revision-list button{background:none;border:0;color:var(--espresso);text-decoration:underline;font-size:.75rem;cursor:pointer;}

/* ---------- Extended responsive ---------- */
@media (max-width:1024px){
  .edit-feature-grid{grid-template-columns:1fr;}
  .edit-feature-media{aspect-ratio:16/9;}
  .edit-archive{grid-template-columns:1fr;}
  .collection-hero{grid-template-columns:1fr;}
  .collection-hero .cover{order:-1;}
  .contact-grid{grid-template-columns:1fr;}
}
@media (max-width:900px){
  .admin{grid-template-columns:1fr;}
  .admin-panel{height:auto;position:static;max-height:none;}
  .admin-stage{height:auto;min-height:70vh;}
}

/* ============================================================
   CONFIG-DRIVEN STOREFRONT ADDITIONS (theme editor era)
   ============================================================ */
/* Button tokens (so colour/radius controls take effect) */
.btn{border-radius:var(--btn-radius,0);}
.btn--fill{background:var(--btn-bg,var(--near-black));color:var(--btn-text,var(--ivory));border-color:var(--btn-bg,var(--near-black));}
.btn--fill:hover{background:var(--btn-hover,transparent);color:var(--btn-text,var(--near-black));border-color:var(--btn-hover,var(--near-black));}
.product-card .pc-media,.tile,.house,.pc-media{border-radius:var(--radius,0);overflow:hidden;}

/* Header: nav dropdowns, currency, non-sticky */
.nav-item{position:relative;}
/* Plain inline — inline-flex blockified the link (padding counted into its
   height), making dropdown parents sit ~4px higher than their siblings. */
.nav-parent{display:inline;}
.nav-drop{position:absolute;top:100%;left:0;background:var(--bg);border:1px solid var(--border);
  min-width:190px;padding:8px 0;display:none;z-index:20;box-shadow:none;}
.nav-item:hover .nav-drop{display:block;}
.nav-drop a{display:block;padding:9px 18px;font-size:.8rem;color:var(--near-black);}
.nav-drop a:hover{background:var(--bg-3);}
.nav-drop a::after{display:none;}
.nav-caret{font-size:.6em;margin-left:4px;opacity:.55;display:inline-block;transform:translateY(-1px);}
/* Mobile drawer: parents with sub-items are an accordion — the label link
   navigates, the ▾ arrow button expands/collapses the indented sub-list. */
.drawer nav .drawer-group{border-bottom:1px solid var(--border);}
.drawer nav .drawer-row{display:flex;align-items:center;}
.drawer nav .drawer-row a{flex:1;border-bottom:0;min-width:0;}
.drawer-caret{background:transparent;border:0;align-self:stretch;width:52px;margin-right:-8px;
  display:flex;align-items:center;justify-content:center;cursor:pointer;
  font-size:1.05rem;color:var(--warm-grey);transition:transform .3s var(--ease);}
.drawer-caret.open{transform:rotate(180deg);}
.drawer nav a.drawer-sub{display:block;font-family:var(--sans);font-size:.95rem;font-weight:400;
  padding:10px 0 10px 22px;color:var(--warm-grey);border-bottom:1px solid var(--border);}
.drawer-subs{padding-bottom:4px;}
.drawer-subs .drawer-sub:last-child{border-bottom:0;}
.drawer-subs:not([hidden]){animation:drawerSub .28s var(--ease);}
@keyframes drawerSub{from{opacity:0;transform:translateY(-4px);}to{opacity:1;transform:none;}}
html[data-anim="off"] .drawer-subs:not([hidden]){animation:none;}
@media(prefers-reduced-motion:reduce){.drawer-subs:not([hidden]){animation:none;}}
.header-currency{border:1px solid var(--border);background:transparent;font-family:var(--sans);font-size:.72rem;
  letter-spacing:.06em;padding:6px 8px;color:inherit;}
.header-group.not-sticky{position:static;}

/* Announcement rotation / dismiss */
.announce{position:relative;transition:none;}
.announce-msg{transition:opacity .25s var(--ease);display:inline-block;}
.announce-x{position:absolute;right:14px;top:50%;transform:translateY(-50%);background:none;border:0;
  color:inherit;font-size:1rem;line-height:1;cursor:pointer;opacity:.7;}

/* Footer newsletter / social / accordion */
.footer-news{display:flex;gap:0;border-bottom:1px solid rgba(245,241,235,.3);margin-top:20px;max-width:320px;}
.footer-news input{flex:1;background:none;border:0;color:inherit;padding:10px 2px;font-family:var(--sans);font-size:.85rem;}
.footer-news input::placeholder{color:rgba(245,241,235,.5);}
.footer-news input:focus{outline:none;}
.footer-news button{background:none;border:0;color:inherit;font-size:.75rem;letter-spacing:.08em;text-transform:uppercase;padding:0 6px;}
.footer-social{margin-top:18px;color:rgba(245,241,235,.6);}
.footer-social.icons{display:flex;gap:16px;align-items:center;}
.footer-social.icons .fsoc{display:inline-flex;color:rgba(245,241,235,.72);transition:color .2s,transform .2s;}
.footer-social.icons .fsoc:hover{color:var(--ivory);transform:translateY(-1px);}
.footer-social.icons .fsoc svg{width:22px;height:22px;display:block;}
@media (max-width:760px){
  .footer-col.acc h4{cursor:pointer;display:flex;justify-content:space-between;align-items:center;}
  .footer-col.acc h4::after{content:'+';}
  .footer-col.acc.open h4::after{content:'–';}
  .footer-col.acc .footer-col-links{display:none;}
  .footer-col.acc.open .footer-col-links{display:block;}
}

/* Split hero + image banner + hero video */
.split-hero-grid{display:grid;grid-template-columns:1fr 1fr;min-height:80vh;}
.split-hero-media img{width:100%;height:100%;object-fit:cover;}
.split-hero-text{display:flex;flex-direction:column;justify-content:center;padding:clamp(32px,6vw,90px);}
.wrap-pad{padding-inline:clamp(24px,5vw,80px);}
.image-banner{position:relative;min-height:52vh;display:flex;align-items:center;overflow:hidden;}
.image-banner .ib-media{position:absolute;inset:0;}
.image-banner .ib-media img{width:100%;height:100%;object-fit:cover;}
.image-banner .ib-overlay{position:absolute;inset:0;}
.image-banner .ib-inner{position:relative;z-index:2;width:100%;}
@media (max-width:760px){ .split-hero-grid{grid-template-columns:1fr;} .split-hero-media{aspect-ratio:4/5;} }

/* Frozen breadcrumb bar (PDP) — pins just below the sticky header */
.crumb-bar{position:sticky;top:var(--crumb-top,64px);z-index:60;background:var(--bg);
  border-bottom:1px solid var(--border);}
.crumb-bar .breadcrumb{margin:0;padding-block:13px;}

/* Sticky listing toolbar (collection pages): brand chips + search + filter + sort */
.listing-tools{position:sticky;top:var(--crumb-top,64px);z-index:60;background:var(--bg);
  border-top:1px solid var(--border);border-bottom:1px solid var(--border);padding-block:12px;}
.lt-chips{display:flex;gap:8px;overflow-x:auto;scrollbar-width:none;padding-bottom:10px;}
.lt-chips::-webkit-scrollbar{display:none;}
.lt-chips .chip{white-space:nowrap;flex:0 0 auto;}
.lt-controls{display:flex;gap:10px;align-items:center;flex-wrap:wrap;}
.lt-search{flex:1 1 220px;min-width:0;display:flex;align-items:center;gap:9px;border:1px solid var(--border);
  border-radius:999px;padding:10px 16px;background:var(--bg-3);transition:border-color .2s;}
.lt-search:focus-within{border-color:var(--near-black);}
.lt-search svg{width:16px;height:16px;stroke:var(--warm-grey);fill:none;stroke-width:1.5;flex:none;}
.lt-search input{border:0;background:none;flex:1;min-width:0;font-family:var(--sans);font-size:.85rem;color:var(--near-black);}
.lt-search input:focus{outline:none;}
/* Rounded controls (as requested) */
.chip{border-radius:999px;}
.btn-filter{border-radius:999px;}
.select{border-radius:999px;cursor:pointer;}
@media (max-width:560px){
  .lt-controls{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);}
  .lt-search{grid-column:1 / -1;}
  .lt-controls .btn-filter{justify-content:center;}
  .lt-controls .select{width:100%;}
}

/* Swipeable product gallery (PDP) — big swipe image + thumbnail strip.
   min-width:0 everywhere so the horizontal scroller can shrink to the
   viewport instead of forcing page-wide overflow. */
.gallery-v2{display:flex;flex-direction:column;gap:10px;min-width:0;
  max-width:min(560px,62vh);margin-inline:auto;width:100%;}
.gv-stage{position:relative;min-width:0;}
.gv-main{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;min-width:0;
  aspect-ratio:var(--ratio-product,4 / 5);background:var(--stone);
  scrollbar-width:none;-webkit-overflow-scrolling:touch;}
.gv-main::-webkit-scrollbar{display:none;}
.gv-slide{position:relative;flex:0 0 100%;min-width:0;scroll-snap-align:start;overflow:hidden;cursor:zoom-in;}
.gv-slide img{width:100%;height:100%;object-fit:cover;}
.gv-arrow{position:absolute;top:50%;transform:translateY(-50%);z-index:3;width:42px;height:42px;border-radius:50%;
  background:rgba(245,241,235,.88);border:0;display:flex;align-items:center;justify-content:center;cursor:pointer;
  opacity:0;transition:opacity .25s;}
@media(hover:hover){.gv-stage:hover .gv-arrow{opacity:1;}}
/* Touch screens: arrows always visible — a hover-reveal would eat the first tap. */
@media(hover:none){.gv-arrow{opacity:1;}}
.gv-arrow svg{width:20px;height:20px;stroke:var(--near-black);fill:none;stroke-width:1.5;}
.gv-arrow.prev{left:14px;} .gv-arrow.next{right:14px;}
.gv-thumbs{display:flex;gap:8px;overflow-x:auto;scrollbar-width:none;padding-bottom:2px;min-width:0;}
.gv-thumbs::-webkit-scrollbar{display:none;}
.gv-thumb{flex:0 0 auto;width:66px;aspect-ratio:1 / 1;padding:0;border:1px solid var(--border);background:var(--stone);
  cursor:pointer;opacity:.55;transition:opacity .2s,border-color .2s;}
.gv-thumb.active{opacity:1;border-color:var(--near-black);}
.gv-thumb img{width:100%;height:100%;object-fit:cover;}
@media (max-width:760px){
  .gv-arrow{display:none;}
  .gv-thumb{width:56px;}
  /* fit the main image on screen: cap height, don't let 4:5 dominate */
  .gv-main{aspect-ratio:auto;height:56vh;max-height:none;}
}

/* Preview: selectable section outline */
[data-section-id]{position:relative;}
.sec-selected{outline:2px solid var(--gold);outline-offset:-2px;}
[data-section-id]:hover{outline:1px dashed rgba(154,135,99,.6);outline-offset:-1px;}


/* ---------- Shop Instagram (shop-instagram.html) ---------- */
.igshop-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:26px 20px;}
.igshop-tile{display:block;position:relative;}
.igshop-media{display:block;position:relative;overflow:hidden;background:var(--stone);aspect-ratio:1/1;}
.igshop-media img{width:100%;height:100%;object-fit:cover;display:block;transition:transform 1.2s var(--ease);}
/* Hover veil only where hover exists — on touch it would eat the first tap */
.igshop-view{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  background:rgba(27,25,23,.32);color:var(--ivory);font-family:var(--sans);font-size:.7rem;
  font-weight:500;letter-spacing:.2em;text-transform:uppercase;opacity:0;transition:opacity .4s var(--ease);}
@media(hover:hover){
  .igshop-tile:hover .igshop-media img{transform:scale(1.04);}
  .igshop-tile:hover .igshop-view{opacity:1;}
}
.igshop-price{position:absolute;left:12px;bottom:12px;padding:7px 14px;
  background:rgba(245,241,235,.94);color:var(--near-black);border:1px solid var(--border);
  font-family:var(--sans);font-size:.74rem;font-weight:500;letter-spacing:.08em;}
/* Loading shimmer while the feed is fetched */
.igshop-skel{aspect-ratio:1/1;background:linear-gradient(100deg,var(--stone) 40%,rgba(255,255,255,.5) 50%,var(--stone) 60%);
  background-size:200% 100%;animation:igshimmer 1.5s linear infinite;}
@keyframes igshimmer{to{background-position:-200% 0;}}
html[data-anim="off"] .igshop-skel{animation:none;}
@media(prefers-reduced-motion:reduce){.igshop-skel{animation:none;}}
/* Follow-us panel (shows until Instagram is connected) — charcoal for rhythm */
.igshop-fallback{max-width:680px;margin:8px auto 12px;text-align:center;background:var(--charcoal);
  color:var(--ivory);padding:clamp(48px,7vw,72px) clamp(24px,5vw,64px);}
.igshop-glyph{width:28px;height:28px;color:var(--ivory);opacity:.6;}
.igshop-eyebrow{font-size:.68rem;letter-spacing:.26em;text-transform:uppercase;color:var(--gold);margin:20px 0 12px;}
.igshop-fallback h2{font-family:var(--serif);font-weight:500;font-size:clamp(1.7rem,3vw,2.2rem);line-height:1.25;margin:0 0 14px;}
.igshop-fallback p{font-size:.92rem;line-height:1.8;opacity:.78;margin:0 auto 30px;max-width:46ch;}
.igshop-more{text-align:center;margin-top:44px;}
@media (max-width:720px){
  .igshop-grid{grid-template-columns:repeat(2,1fr);gap:18px 10px;}
  .igshop-price{left:8px;bottom:8px;padding:5px 10px;font-size:.66rem;letter-spacing:.06em;}
  .igshop-more{margin-top:32px;}
}

/* ============================================================
   MOTION PACK (owner-approved, 2026-07-05) — quiet-luxury motion.
   Every duration scales with --anim (theme intensity presets) and
   everything dies under prefers-reduced-motion / data-anim="off".
   ============================================================ */

/* 01 · Blur-up photo loading — JS (initBlurUp in site.js) puts .bu on images
   still loading and .bu-in once loaded; both classes are removed after the
   photo settles so no other transition is ever overridden long-term. */
img.bu{opacity:0;filter:blur(12px);}
img.bu-in{opacity:1;filter:blur(0);
  transition:opacity calc(.55s * var(--anim,1)) var(--ease),
             filter calc(.85s * var(--anim,1)) var(--ease),
             transform 1.4s var(--ease);}

/* 05 · Staggered reveals — cards deal in one after another. The grid container
   stays put (no block fade) so the stagger reads clearly. */
.product-grid.reveal,.journal-grid.reveal,.carousel-wrap.reveal{opacity:1;transform:none;}
.product-grid.reveal>.product-card,.journal-grid.reveal>.article,.carousel-wrap.reveal .carousel>*{
  opacity:0;transform:translateY(calc(12px * var(--anim,1)));
  transition:opacity calc(.7s * var(--anim,1)) var(--ease),transform calc(.7s * var(--anim,1)) var(--ease);}
.product-grid.reveal.in>.product-card,.journal-grid.reveal.in>.article,.carousel-wrap.reveal.in .carousel>*{
  opacity:1;transform:none;}
.product-grid.reveal.in>*:nth-child(2),.journal-grid.reveal.in>*:nth-child(2),.carousel-wrap.reveal.in .carousel>*:nth-child(2){transition-delay:.07s;}
.product-grid.reveal.in>*:nth-child(3),.journal-grid.reveal.in>*:nth-child(3),.carousel-wrap.reveal.in .carousel>*:nth-child(3){transition-delay:.14s;}
.product-grid.reveal.in>*:nth-child(4),.journal-grid.reveal.in>*:nth-child(4),.carousel-wrap.reveal.in .carousel>*:nth-child(4){transition-delay:.21s;}
.product-grid.reveal.in>*:nth-child(5),.journal-grid.reveal.in>*:nth-child(5),.carousel-wrap.reveal.in .carousel>*:nth-child(5){transition-delay:.28s;}
.product-grid.reveal.in>*:nth-child(6),.journal-grid.reveal.in>*:nth-child(6),.carousel-wrap.reveal.in .carousel>*:nth-child(6){transition-delay:.35s;}
.product-grid.reveal.in>*:nth-child(7),.journal-grid.reveal.in>*:nth-child(7),.carousel-wrap.reveal.in .carousel>*:nth-child(7){transition-delay:.42s;}
.product-grid.reveal.in>*:nth-child(n+8),.journal-grid.reveal.in>*:nth-child(n+8),.carousel-wrap.reveal.in .carousel>*:nth-child(n+8){transition-delay:.48s;}

/* (06 · gold hairline draw-in was here — removed 2026-07-05 at the owner's
   request after seeing it live; don't re-add without asking.) */

/* 04 · Lightbox photo crossfade (the main gallery already glides via scroll-snap). */
#lb-img{transition:opacity .3s var(--ease);}

/* Guards: with animation off or reduced motion, everything is simply visible. */
html[data-anim="off"] .product-grid.reveal>.product-card,
html[data-anim="off"] .journal-grid.reveal>.article,
html[data-anim="off"] .carousel-wrap.reveal .carousel>*{opacity:1;transform:none;transition:none;}
@media (prefers-reduced-motion:reduce){
  .product-grid.reveal>.product-card,.journal-grid.reveal>.article,.carousel-wrap.reveal .carousel>*{opacity:1;transform:none;}
  img.bu{opacity:1;filter:none;}
}

/* ---------- Compact newsletter band + Instagram strip (2026-07-05) ---------- */
/* Owner: "The Private List is too tall" — half the vertical rhythm, smaller serif. */
.section--news{padding-block:calc(var(--section-y)*.5);}
.news .h-section{font-size:clamp(1.55rem,2.6vw,2.2rem);}
.news form{margin-top:24px;}

/* Instagram strip — Shopify-style small square tiles (reuses .igshop-* looks) */
.section--igs{padding-block:calc(var(--section-y)*.6);}
.igs-head{text-align:center;margin-bottom:26px;}
.igs-sub{color:var(--warm-grey);margin-top:8px;font-size:.92rem;}
.igs-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;}
.igs-follow{text-align:center;margin-top:26px;}
@media (max-width:760px){
  .igs-grid{grid-template-columns:repeat(3,1fr);gap:6px;}
}
