/* ============================================================
   GemsGlitz Luxury Design Layer
   Palette: ink #0f0e0c · ivory #faf8f4 · champagne gold #c9a55f
   Fonts: Cormorant Garamond (display) · Jost (UI)
   ============================================================ */

:root{
  --gg-ink:#0f0e0c;
  --gg-ink-2:#171512;
  --gg-ink-3:#221f1a;
  --gg-ivory:#faf8f4;
  --gg-paper:#fffdf9;
  --gg-gold:#c9a55f;
  --gg-gold-deep:#a8853f;
  --gg-gold-text:#8a6c2c; /* AA-contrast gold for small text on ivory/paper */
  --gg-gold-pale:#e9d9b8;
  --gg-text:#2a2723;
  --gg-muted:#6f6960;
  --gg-hairline:rgba(15,14,12,.12);
  --gg-hairline-light:rgba(250,248,244,.16);
  --gg-serif:'Cormorant Garamond',Georgia,'Times New Roman',serif;
  --gg-sans:'Jost',-apple-system,'Segoe UI',sans-serif;
  --gg-shadow:0 18px 50px -18px rgba(15,14,12,.22);
  --gg-ease:cubic-bezier(.22,.61,.36,1);
}

/* ---------- Sitewide base ---------- */
body.gg-lux{
  font-family:var(--gg-sans);
  color:var(--gg-text);
  background:var(--gg-ivory);
  font-weight:300;
  letter-spacing:.01em;
}
body.gg-lux h1,body.gg-lux h2,body.gg-lux h3,body.gg-lux h4,
body.gg-lux .entry-title,body.gg-lux .product_title,
body.gg-lux .woocommerce-loop-product__title{
  font-family:var(--gg-serif);
  font-weight:500;
  color:var(--gg-ink);
  letter-spacing:.005em;
}
body.gg-lux a{transition:color .25s var(--gg-ease)}

/* selection */
body.gg-lux ::selection{background:var(--gg-gold-pale);color:var(--gg-ink)}

/* ---------- Top announcement bar ---------- */
.gg-topbar{
  background:linear-gradient(90deg,#0f0e0c,#26221a 50%,#0f0e0c);
  color:var(--gg-gold-pale);
  text-align:center;
  font-family:var(--gg-sans);
  font-size:12px;
  letter-spacing:.22em;
  text-transform:uppercase;
  padding:9px 14px;
  position:relative;
  z-index:101;
}
.gg-topbar strong{color:#fff;font-weight:500}

/* ---------- Header ----------
   Kadence's own sticky header is disabled (it rendered a placeholder + fixed bar, and our
   announcement bar above it left a ~37px empty band and pushed the real header over the hero).
   Re-implemented with position:sticky, which works correctly in normal flow. */
body.gg-lux .site-main-header-wrap{
  position:sticky;top:0;z-index:100;
  background:rgba(250,248,244,.94);
  backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
  border-bottom:1px solid var(--gg-hairline);
  transition:box-shadow .35s var(--gg-ease),background .35s var(--gg-ease);
}
body.gg-lux.gg-scrolled .site-main-header-wrap{
  box-shadow:0 10px 30px -18px rgba(15,14,12,.35);
  background:rgba(250,248,244,.985);
}
/* the logo is a 512px square with built-in padding, so 72px rendered the mark tiny */
body.gg-lux .custom-logo-link img,
body.gg-lux img.custom-logo{max-height:88px!important}
body.gg-lux.gg-scrolled .custom-logo-link img,
body.gg-lux.gg-scrolled img.custom-logo{max-height:64px!important}
/* Mobile: at 110x73 the logo crowded the MENU button and cart on a 390px viewport. */
@media (max-width:880px){
  body.gg-lux .custom-logo-link img,
  body.gg-lux img.custom-logo,
  body.gg-lux .site-header-item img.custom-logo{max-height:54px!important;width:auto!important}
}
@media (max-width:420px){
  body.gg-lux .custom-logo-link img,
  body.gg-lux img.custom-logo,
  body.gg-lux .site-header-item img.custom-logo{max-height:46px!important}
}

body.gg-lux #masthead{
  background:rgba(250,248,244,.92);
  backdrop-filter:blur(10px);
  -webkit-backdrop-filter:blur(10px);
  border-bottom:1px solid var(--gg-hairline);
  transition:box-shadow .35s var(--gg-ease),background .35s var(--gg-ease);
}
body.gg-lux.gg-scrolled #masthead{
  box-shadow:0 10px 30px -18px rgba(15,14,12,.35);
  background:rgba(250,248,244,.98);
}
body.gg-lux #masthead .site-header-row,
body.gg-lux #masthead .site-main-header-inner-wrap{border:0}
body.gg-lux .main-navigation .primary-menu-container>ul>li>a{
  font-family:var(--gg-sans);
  font-size:12.5px;
  font-weight:400;
  letter-spacing:.18em;
  text-transform:uppercase;
  color:var(--gg-ink);
  position:relative;
}
body.gg-lux .main-navigation .primary-menu-container>ul>li>a:after{
  content:"";
  position:absolute;left:1.2em;right:1.2em;bottom:8px;height:1px;
  background:var(--gg-gold);
  transform:scaleX(0);transform-origin:left;
  transition:transform .3s var(--gg-ease);
}
body.gg-lux .main-navigation .primary-menu-container>ul>li>a:hover:after,
body.gg-lux .main-navigation .primary-menu-container>ul>li.current-menu-item>a:after{transform:scaleX(1)}
body.gg-lux .main-navigation .primary-menu-container>ul>li>a:hover{color:var(--gg-gold-deep)}

/* ============================================================
   NAVIGATION — desktop bar, dropdown panel, cart, search
   ============================================================ */

/* --- top-level links --- */
body.gg-lux .main-navigation .primary-menu-container>ul{gap:2px}
body.gg-lux .main-navigation .primary-menu-container>ul>li>a{
  padding:10px 18px;
  font-size:12px;
  letter-spacing:.22em;
}
body.gg-lux .main-navigation .primary-menu-container>ul>li>a:after{
  left:18px;right:18px;bottom:4px;
  background:linear-gradient(90deg,transparent,var(--gg-gold),transparent);
  height:1px;
}
/* dropdown caret: quieter, and it rotates when open */
body.gg-lux .main-navigation .dropdown-nav-toggle svg,
body.gg-lux .main-navigation .dropdown-nav-special-toggle svg{
  width:9px;height:9px;opacity:.55;transition:transform .3s var(--gg-ease),opacity .3s var(--gg-ease);
}
body.gg-lux .main-navigation li:hover>a .dropdown-nav-toggle svg{opacity:1;transform:rotate(180deg)}

/* --- dropdown panel --- */
body.gg-lux .main-navigation ul ul,
body.gg-lux .header-navigation ul ul{
  min-width:238px!important;
  background:var(--gg-paper)!important;
  border:1px solid var(--gg-hairline)!important;
  border-top:2px solid var(--gg-gold)!important;
  border-radius:0!important;
  box-shadow:0 24px 50px -22px rgba(15,14,12,.45)!important;
  padding:8px 0!important;
  margin-top:6px;
}
body.gg-lux .main-navigation ul ul li{border:0}
body.gg-lux .main-navigation ul ul li a{
  font-family:var(--gg-sans)!important;
  font-size:11.5px!important;
  letter-spacing:.2em!important;
  text-transform:uppercase;
  color:var(--gg-text)!important;
  padding:13px 22px!important;
  border:0!important;
  position:relative;
  transition:color .25s var(--gg-ease),background .25s var(--gg-ease),padding-left .25s var(--gg-ease);
}
/* gold marker slides in on hover */
body.gg-lux .main-navigation ul ul li a:before{
  content:"";position:absolute;left:12px;top:50%;width:6px;height:1px;
  background:var(--gg-gold);transform:scaleX(0);transform-origin:left;
  transition:transform .28s var(--gg-ease);
}
body.gg-lux .main-navigation ul ul li a:hover{
  background:rgba(201,165,95,.07)!important;
  color:var(--gg-gold-text)!important;
  padding-left:32px!important;
}
body.gg-lux .main-navigation ul ul li a:hover:before{transform:scaleX(1)}

/* --- cart: the default glyph was ~90px and dominated the header --- */
body.gg-lux .header-cart-wrap .kadence-header-cart-wrap,
body.gg-lux .header-cart-wrap>a{display:inline-flex;align-items:center;gap:.6em}
body.gg-lux .header-cart-wrap svg,
body.gg-lux .kadence-header-cart svg{
  width:23px!important;height:23px!important;
  stroke-width:1.4;
}
body.gg-lux .header-cart-label{
  font-family:var(--gg-sans)!important;
  font-size:11.5px!important;letter-spacing:.2em!important;text-transform:uppercase;
  font-weight:400!important;color:var(--gg-ink)!important;
}
body.gg-lux .header-cart-wrap .header-cart-total{
  /* a11y: #fff on the gold fill is 2.33-3.45:1; ink on gold is 8.3:1 */
  background:linear-gradient(135deg,var(--gg-gold),var(--gg-gold-deep))!important;
  color:var(--gg-ink)!important;
  font-family:var(--gg-sans)!important;
  font-size:10px!important;font-weight:500;letter-spacing:0;
  min-width:17px;height:17px;line-height:17px;
  border-radius:50%;
  top:-6px;right:-9px;
}
body.gg-lux .header-cart-wrap>a:hover .header-cart-label{color:var(--gg-gold-text)!important}

/* --- search toggle (injected) --- */
.gg-search-toggle{
  background:none;border:0;padding:8px;margin:0 2px 0 10px;cursor:pointer;
  color:var(--gg-ink);display:inline-flex;align-items:center;
  transition:color .25s var(--gg-ease),transform .25s var(--gg-ease);
}
.gg-search-toggle:hover{color:var(--gg-gold-text);transform:scale(1.08)}
.gg-search-overlay{
  position:fixed;inset:0;z-index:9999;
  background:rgba(15,14,12,.94);
  backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);
  display:flex;align-items:center;justify-content:center;
  opacity:0;visibility:hidden;transition:opacity .35s var(--gg-ease),visibility .35s;
}
.gg-search-overlay.gg-open{opacity:1;visibility:visible}
.gg-search-box{width:min(680px,88vw);text-align:center;transform:translateY(14px);transition:transform .4s var(--gg-ease)}
.gg-search-overlay.gg-open .gg-search-box{transform:none}
.gg-search-box .gg-eyebrow{color:var(--gg-gold);margin-bottom:18px}
.gg-search-box input[type=search]{
  width:100%;background:transparent!important;border:0!important;border-bottom:1px solid rgba(201,165,95,.45)!important;
  color:var(--gg-ivory)!important;font-family:var(--gg-serif)!important;
  font-size:clamp(24px,4vw,40px)!important;text-align:center;padding:14px 6px!important;
}
.gg-search-box input[type=search]:focus{border-bottom-color:var(--gg-gold)!important;box-shadow:none!important}
.gg-search-box input::placeholder{color:rgba(250,248,244,.5)}
.gg-search-hint{margin-top:16px;font-size:11.5px;letter-spacing:.2em;text-transform:uppercase;color:rgba(250,248,244,.5)}
.gg-search-close{
  position:absolute;top:26px;right:30px;background:none;border:0;cursor:pointer;
  color:rgba(250,248,244,.7);font-size:26px;line-height:1;padding:8px;
}
.gg-search-close:hover{color:var(--gg-gold)}

/* ============================================================
   MOBILE DRAWER — Kadence default rendered olive blocks with
   oversized serif text; rebuild it in the brand palette.
   ============================================================ */
body.gg-lux #mobile-drawer .drawer-inner,
body.gg-lux .popup-drawer .drawer-inner{
  background:linear-gradient(170deg,#141210,#0f0e0c)!important;
  color:var(--gg-ivory);
}
body.gg-lux .popup-drawer .drawer-header{padding:18px 20px}
body.gg-lux .popup-drawer .drawer-toggle,
body.gg-lux .popup-drawer .menu-toggle-close{color:var(--gg-gold-pale)!important}
body.gg-lux .popup-drawer .drawer-toggle svg{width:20px;height:20px}
/* kill the coloured blocks */
body.gg-lux #mobile-drawer .mobile-navigation ul li,
body.gg-lux .popup-drawer .mobile-navigation ul li{
  background:transparent!important;border:0!important;
  border-bottom:1px solid rgba(250,248,244,.10)!important;
  margin:0!important;
}
body.gg-lux #mobile-drawer .mobile-navigation ul li a,
body.gg-lux .popup-drawer .mobile-navigation ul li a{
  background:transparent!important;
  font-family:var(--gg-sans)!important;
  font-size:13px!important;
  font-weight:400!important;
  letter-spacing:.22em!important;
  text-transform:uppercase!important;
  color:var(--gg-ivory)!important;
  text-align:left!important;
  padding:18px 22px!important;
  border:0!important;
  transition:color .25s var(--gg-ease),padding-left .25s var(--gg-ease);
}
body.gg-lux #mobile-drawer .mobile-navigation ul li a:hover,
body.gg-lux #mobile-drawer .mobile-navigation ul li a:active,
body.gg-lux .popup-drawer .mobile-navigation ul li a:hover{
  color:var(--gg-gold)!important;padding-left:30px!important;
}
/* submenu items sit quieter and indented */
body.gg-lux #mobile-drawer .mobile-navigation ul ul li a,
body.gg-lux .popup-drawer .mobile-navigation ul ul li a{
  font-size:11.5px!important;color:rgba(250,248,244,.68)!important;
  padding-left:40px!important;letter-spacing:.18em!important;
}
body.gg-lux #mobile-drawer .mobile-navigation ul ul,
body.gg-lux .popup-drawer .mobile-navigation ul ul{background:rgba(0,0,0,.25)!important}
body.gg-lux #mobile-drawer .drawer-nav-drop-wrap,
body.gg-lux .popup-drawer .drawer-nav-drop-wrap{
  background:transparent!important;border:0!important;color:var(--gg-gold)!important;
}
/* the sub-menu toggle carried a 4px WHITE border-left, which rendered as a bright bar
   next to "Shop" on the dark drawer */
body.gg-lux .drawer-nav-drop-wrap button,
body.gg-lux .drawer-nav-drop-wrap .drawer-sub-toggle,
body.gg-lux #mobile-drawer .drawer-sub-toggle{
  border:0!important;
  border-left:1px solid rgba(250,248,244,.10)!important;
  background:transparent!important;
  color:var(--gg-gold)!important;
}
/* links were centre-aligned containers with non-block anchors, so the text sat far
   right of the drawer edge — make each row a full-width left-aligned block */
body.gg-lux #mobile-drawer .mobile-navigation,
body.gg-lux #mobile-drawer .mobile-navigation ul,
body.gg-lux #mobile-drawer .mobile-navigation ul li,
body.gg-lux .popup-drawer .mobile-navigation,
body.gg-lux .popup-drawer .mobile-navigation ul,
body.gg-lux .popup-drawer .mobile-navigation ul li{
  text-align:left!important;width:100%;max-width:none;
}
body.gg-lux #mobile-drawer .mobile-navigation ul li a,
body.gg-lux .popup-drawer .mobile-navigation ul li a{
  display:block;width:100%;
}
/* The nav sits in two flex wrappers that were `width:auto` + `justify-content:center`, so the
   whole menu shrank to its text width and floated in the middle of the drawer. Stretch them. */
body.gg-lux .popup-drawer .drawer-content,
body.gg-lux .popup-drawer .drawer-content.mobile-drawer-content{
  padding-left:0!important;padding-right:0!important;
  max-width:none!important;width:100%!important;
  justify-content:flex-start!important;text-align:left!important;
}
body.gg-lux .popup-drawer .drawer-content .site-header-item,
body.gg-lux .popup-drawer .drawer-content .site-header-focus-item{
  width:100%!important;justify-content:flex-start!important;text-align:left!important;
}
body.gg-lux .popup-drawer .mobile-menu-container,
body.gg-lux .popup-drawer .drawer-menu-container{width:100%!important}
/* stretching the content pulled the nav up under the absolutely-positioned close button —
   reserve clearance so the first rows can't sit beneath the X */
body.gg-lux .popup-drawer .drawer-content,
body.gg-lux .popup-drawer .drawer-content.mobile-drawer-content{padding-top:136px!important}
/* Absolute-positioning this header (to clear the X off the menu) turned it into a full-width
   invisible layer that swallowed taps on the rows beneath — the search row was unclickable.
   Let pointer events pass through the container; only the close button stays interactive. */
body.gg-lux #mobile-drawer .drawer-header,
body.gg-lux .popup-drawer .drawer-header{
  position:absolute;top:0;right:0;left:0;z-index:2;padding:22px 18px;
  pointer-events:none;                 /* container must not swallow taps on the rows below */
}
/* The close button was the element actually intercepting: unconstrained, its hit box reached
   down over the first drawer rows. Pin it to a 44px target (accessible minimum) in the corner. */
body.gg-lux #mobile-drawer .drawer-header .drawer-toggle,
body.gg-lux #mobile-drawer .drawer-header .menu-toggle-close,
body.gg-lux .popup-drawer .drawer-header .drawer-toggle,
body.gg-lux .popup-drawer .drawer-header .menu-toggle-close{
  pointer-events:auto;
  width:44px;height:44px;padding:0!important;
  display:inline-flex;align-items:center;justify-content:center;
  margin-left:auto;
}
/* the default close glyph is oversized for a 300px drawer */
body.gg-lux .popup-drawer .drawer-toggle svg,
body.gg-lux .popup-drawer .menu-toggle-close svg{width:19px!important;height:19px!important}
/* drawer footer bits */
body.gg-lux .popup-drawer .drawer-content{padding-bottom:24px}

/* search row inside the mobile drawer (the desktop toggle is hidden at this width) */
.gg-drawer-search{
  display:flex;align-items:center;gap:.7em;width:100%;
  background:transparent;border:0;
  border-bottom:1px solid rgba(250,248,244,.10);
  padding:18px 22px;cursor:pointer;text-align:left;
  font-family:var(--gg-sans);font-size:13px;letter-spacing:.22em;text-transform:uppercase;
  color:var(--gg-gold-pale);
  transition:color .25s var(--gg-ease),padding-left .25s var(--gg-ease);
}
.gg-drawer-search:hover,.gg-drawer-search:active{color:var(--gg-gold);padding-left:30px}
.gg-drawer-search svg{flex:0 0 auto}

/* search row inside the drawer (desktop's toggle is hidden on phones) */
body.gg-lux .gg-drawer-search{
  display:flex;align-items:center;gap:.7em;width:100%;
  background:transparent;border:0;
  border-bottom:1px solid rgba(250,248,244,.10);
  color:var(--gg-gold)!important;
  font-family:var(--gg-sans);font-size:13px;letter-spacing:.22em;text-transform:uppercase;
  padding:18px 22px;cursor:pointer;text-align:left;
  transition:color .25s var(--gg-ease),padding-left .25s var(--gg-ease);
}
body.gg-lux .gg-drawer-search:hover,
body.gg-lux .gg-drawer-search:active{color:var(--gg-gold-pale)!important;padding-left:30px}
body.gg-lux .gg-drawer-search svg{flex:0 0 auto}

/* --- mobile header toggle: was a heavy solid gold block --- */
body.gg-lux .mobile-toggle-open-container .menu-toggle-open,
body.gg-lux .menu-toggle-open{
  background:transparent!important;
  color:var(--gg-ink)!important;
  border:1px solid var(--gg-hairline)!important;
  border-radius:0!important;
  padding:9px 14px!important;
  box-shadow:none!important;
  transition:border-color .25s var(--gg-ease),color .25s var(--gg-ease);
}
body.gg-lux .menu-toggle-open:hover,
body.gg-lux .menu-toggle-open:focus{
  background:transparent!important;
  border-color:var(--gg-gold)!important;
  color:var(--gg-gold-text)!important;
}
body.gg-lux .menu-toggle-open .menu-toggle-label{
  font-family:var(--gg-sans)!important;
  font-size:11px!important;letter-spacing:.22em!important;text-transform:uppercase;
  font-weight:400!important;margin-right:.6em;
}
body.gg-lux .menu-toggle-open .menu-toggle-icon svg,
body.gg-lux .menu-toggle-open svg{width:17px!important;height:17px!important}
/* mobile cart matches the desktop treatment (its glyph was still the oversized default) */
body.gg-lux .mobile-header-cart .header-cart-total,
body.gg-lux .site-header-item .header-cart-total{
  background:linear-gradient(135deg,var(--gg-gold),var(--gg-gold-deep))!important;color:var(--gg-ink)!important;
}
body.gg-lux .mobile-header-cart svg,
body.gg-lux .site-header-mobile-section svg.kadence-svg-icon,
body.gg-lux .mobile-header-cart .kadence-svg-icon{
  width:23px!important;height:23px!important;
}
body.gg-lux .mobile-header-cart .header-cart-total,
body.gg-lux .mobile-header-cart .header-cart-label{
  font-family:var(--gg-sans)!important;font-size:10px!important;
  min-width:17px;height:17px;line-height:17px;border-radius:50%;
}

/* ---------- Buttons (global) ---------- */
body.gg-lux .button,
body.gg-lux button[type=submit],
body.gg-lux input[type=submit],
body.gg-lux .single_add_to_cart_button,
body.gg-lux .wp-block-button__link,
body.gg-lux .checkout-button{
  font-family:var(--gg-sans)!important;
  font-weight:400!important;
  letter-spacing:.16em!important;
  text-transform:uppercase!important;
  font-size:12.5px!important;
  border-radius:0!important;
  background:var(--gg-ink)!important;
  color:var(--gg-ivory)!important;
  border:1px solid var(--gg-ink)!important;
  padding:.95em 2.1em!important;
  position:relative;
  overflow:hidden;
  transition:background .3s var(--gg-ease),color .3s var(--gg-ease),border-color .3s var(--gg-ease)!important;
}
body.gg-lux .button:hover,
body.gg-lux button[type=submit]:hover,
body.gg-lux input[type=submit]:hover,
body.gg-lux .single_add_to_cart_button:hover,
body.gg-lux .wp-block-button__link:hover,
body.gg-lux .checkout-button:hover{
  background:var(--gg-gold-text)!important;
  border-color:var(--gg-gold-text)!important;
  color:#fff!important;
}

/* gg buttons */
.gg-btn{
  display:inline-block;
  font-family:var(--gg-sans);
  font-size:12.5px;
  letter-spacing:.18em;
  text-transform:uppercase;
  font-weight:400;
  padding:15px 34px;
  position:relative;
  overflow:hidden;
  text-decoration:none;
  transition:all .32s var(--gg-ease);
  cursor:pointer;
}
.gg-btn:after{
  content:"";
  position:absolute;top:0;left:-80%;width:50%;height:100%;
  background:linear-gradient(105deg,transparent,rgba(255,255,255,.35),transparent);
  transform:skewX(-20deg);
  transition:left .55s var(--gg-ease);
}
.gg-btn:hover:after{left:130%}
.gg-btn-gold{background:linear-gradient(135deg,var(--gg-gold),var(--gg-gold-deep));color:#fff!important;border:1px solid transparent}
.gg-btn-gold:hover{box-shadow:0 12px 30px -10px rgba(168,133,63,.55);transform:translateY(-2px)}
.gg-btn-ghost{background:transparent;color:var(--gg-ivory)!important;border:1px solid var(--gg-hairline-light)}
.gg-btn-ghost:hover{border-color:var(--gg-gold);color:var(--gg-gold-pale)!important}
.gg-btn-dark{background:var(--gg-ink);color:var(--gg-ivory)!important;border:1px solid var(--gg-ink)}
.gg-btn-dark:hover{background:var(--gg-gold-deep);border-color:var(--gg-gold-deep);transform:translateY(-2px)}

/* ---------- Reveal animations ---------- */
.gg-reveal{opacity:0;transform:translateY(26px);transition:opacity .8s var(--gg-ease),transform .8s var(--gg-ease)}
.gg-reveal.gg-in{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){
  .gg-reveal{opacity:1;transform:none;transition:none}
  .gg-btn:after,.gg-marquee-track,.gg-spark,.gg-hero-scrollcue{animation:none!important}
}

/* Sentence case on our display headings (theme forces capitalize) */
.gg-hero-title,.gg-sec-title,.gg-promo-title,.gg-card-title,.gg-col-title,
.gg-ed-item h3,.gg-hero-sub,.gg-sec-sub,.gg-col-sub,.gg-promo-sub{
  text-transform:none!important;
}

/* ---------- Archive / shop title band ---------- */
body.gg-lux .entry-hero .entry-hero-container-inner,
body.gg-lux .entry-hero.product-archive-hero-section,
body.gg-lux section.entry-hero{
  background:
    radial-gradient(700px 300px at 75% 20%,rgba(201,165,95,.14),transparent 60%),
    linear-gradient(160deg,#131110,#0f0e0c)!important;
  border-bottom:1px solid rgba(201,165,95,.3);
}
body.gg-lux .entry-hero .entry-title,
body.gg-lux .entry-hero h1{color:var(--gg-ivory)!important;font-family:var(--gg-serif);font-weight:500}
body.gg-lux .entry-hero .kadence-breadcrumbs,
body.gg-lux .entry-hero .kadence-breadcrumbs a,
body.gg-lux .entry-hero .breadcrumb-item{color:rgba(250,248,244,.65)!important}
body.gg-lux .entry-hero .kadence-breadcrumbs a:hover{color:var(--gg-gold)!important}

/* ---------- Homepage: strip theme chrome ---------- */
body.gg-home .entry-header,body.gg-home .entry-footer{display:none}
body.gg-home .content-area{padding:0;margin:0;max-width:none}
/* Full-bleed applies to the PAGE CONTENT only. Scoping this to .site-main matters: Kadence also
   uses .site-container for the header and footer rows, so the unscoped version stretched those
   edge-to-edge on the homepage while every other page kept them centred at 1290px. */
body.gg-home .site-main .content-container,
body.gg-home .site-main > .site-container,
body.gg-home .content-area > .site-container{padding-left:0;padding-right:0;max-width:100%}
body.gg-home .entry-content-wrap{padding:0}
body.gg-home .entry-content{margin:0;max-width:none}
body.gg-home article.entry,body.gg-home .content-bg{background:transparent;box-shadow:none;border:0}
body.gg-home .site-content{padding:0}
.gg-home-wrap{overflow-x:clip}
/* Reset only the VERTICAL margins here. The `margin:0` shorthand this replaced also zeroed the
   left/right auto margins, which silently left-aligned every max-width section on screens wider
   than ~1276px (measured L=0 / R=220 at 1440). Horizontal centring must stay `auto`. */
.gg-home-wrap>section{margin-top:0;margin-bottom:0;margin-left:auto;margin-right:auto}

/* ---------- Hero ---------- */
.gg-hero{
  position:relative;
  background:
    radial-gradient(1100px 520px at 78% 18%,rgba(201,165,95,.16),transparent 60%),
    radial-gradient(700px 420px at 12% 88%,rgba(201,165,95,.08),transparent 60%),
    linear-gradient(160deg,#131110 0%,#0f0e0c 45%,#181410 100%);
  color:var(--gg-ivory);
  overflow:hidden;
}
.gg-hero-glow{
  position:absolute;inset:0;pointer-events:none;
  background:radial-gradient(560px 320px at 72% 42%,rgba(201,165,95,.14),transparent 65%);
  animation:gg-glow 9s ease-in-out infinite alternate;
}
@keyframes gg-glow{from{opacity:.55}to{opacity:1}}
.gg-hero-inner{
  max-width:1220px;margin:0 auto;
  padding:96px 28px 110px;
  display:grid;grid-template-columns:1.15fr .85fr;gap:56px;align-items:center;
}
.gg-eyebrow{
  font-family:var(--gg-sans);
  font-size:11.5px;letter-spacing:.34em;text-transform:uppercase;
  color:var(--gg-gold-text);margin:0 0 22px;
}
.gg-hero .gg-eyebrow,.gg-eyebrow-light{color:var(--gg-gold)}
.gg-hero-title{
  font-family:var(--gg-serif);
  font-size:clamp(44px,6vw,78px);
  line-height:1.04;
  font-weight:500;
  color:var(--gg-ivory)!important;
  margin:0 0 26px;
}
.gg-hero-title em{
  font-style:italic;
  background:linear-gradient(100deg,var(--gg-gold-pale),var(--gg-gold) 45%,var(--gg-gold-pale) 80%);
  background-size:200% 100%;
  -webkit-background-clip:text;background-clip:text;
  -webkit-text-fill-color:transparent;color:transparent;
  animation:gg-shimmer 5.5s linear infinite;
}
@keyframes gg-shimmer{to{background-position:-200% 0}}
.gg-hero-sub{
  font-size:17px;line-height:1.75;color:rgba(250,248,244,.72);
  max-width:52ch;margin:0 0 36px;font-weight:300;
}
.gg-hero-ctas{display:flex;gap:16px;flex-wrap:wrap}

/* medallion */
.gg-hero-medallion{position:relative;justify-self:center;text-align:center}
.gg-medallion-frame{
  width:min(380px,72vw);aspect-ratio:1;
  /* It has an explicit width but had no auto margins, so wherever the parent was WIDER it
     pinned left. On mobile the medallion column stretches to 345px while the frame is
     250px — the sphere sat 85px left of centre while the hero title above it was dead
     centre. No-op on desktop, where the parent hugs the frame exactly. */
  margin-left:auto;margin-right:auto;
  border-radius:50%;
  padding:10px;
  background:linear-gradient(140deg,var(--gg-gold-pale),var(--gg-gold-deep) 55%,#6d5526);
  box-shadow:0 40px 90px -30px rgba(0,0,0,.75),0 0 80px rgba(201,165,95,.18);
  position:relative;
}
.gg-medallion-frame:before{
  content:"";position:absolute;inset:-14px;border-radius:50%;
  border:1px solid rgba(201,165,95,.35);
}
.gg-medallion-img,.gg-medallion-frame img{
  width:100%;height:100%;object-fit:cover;border-radius:50%;display:block;
}
.gg-medallion-caption{
  display:inline-block;margin-top:26px;
  font-family:var(--gg-sans);font-size:12px;letter-spacing:.2em;text-transform:uppercase;
  color:rgba(250,248,244,.75)!important;text-decoration:none;
  border-bottom:1px solid rgba(201,165,95,.5);
  padding-bottom:6px;
}
.gg-medallion-caption:hover{color:var(--gg-gold-pale)!important}

/* sparkles */
.gg-hero-sparkles{position:absolute;inset:0;pointer-events:none;overflow:hidden}
.gg-spark{
  position:absolute;
  color:var(--gg-gold-pale);
  opacity:0;
  animation:gg-twinkle var(--dur,4s) ease-in-out var(--delay,0s) infinite;
  font-size:var(--size,12px);
  line-height:1;
}
@keyframes gg-twinkle{
  0%,100%{opacity:0;transform:scale(.4) rotate(0deg)}
  50%{opacity:var(--peak,.85);transform:scale(1) rotate(45deg)}
}
/* scroll cue */
.gg-hero-scrollcue{
  position:absolute;left:50%;bottom:22px;transform:translateX(-50%);
  width:22px;height:36px;border:1px solid rgba(250,248,244,.35);border-radius:12px;
}
.gg-hero-scrollcue span{
  position:absolute;left:50%;top:7px;width:3px;height:7px;margin-left:-1.5px;
  background:var(--gg-gold);border-radius:2px;
  animation:gg-cue 1.8s ease-in-out infinite;
}
@keyframes gg-cue{0%{opacity:0;transform:translateY(0)}35%{opacity:1}100%{opacity:0;transform:translateY(12px)}}

/* ---------- Marquee ---------- */
.gg-marquee{
  background:var(--gg-paper);
  border-top:1px solid rgba(201,165,95,.35);
  border-bottom:1px solid var(--gg-hairline);
  overflow:hidden;white-space:nowrap;
  padding:15px 0;
}
.gg-marquee-track{
  display:inline-flex;align-items:center;gap:34px;
  animation:gg-marquee 38s linear infinite;
  will-change:transform;
}
.gg-marquee:hover .gg-marquee-track{animation-play-state:paused}
@keyframes gg-marquee{to{transform:translateX(-33.333%)}}
.gg-mq-item{
  font-family:var(--gg-sans);font-size:12px;letter-spacing:.26em;text-transform:uppercase;
  color:var(--gg-muted);
}
.gg-mq-dot{color:var(--gg-gold);font-size:11px}

/* ---------- Sections shared ---------- */
.gg-section{max-width:1220px;margin:0 auto;padding:92px 28px}
.gg-sec-head{text-align:center;max-width:640px;margin:0 auto 54px}
.gg-sec-title{
  font-family:var(--gg-serif);font-size:clamp(30px,3.6vw,46px);
  font-weight:500;margin:0;color:var(--gg-ink);line-height:1.15;
}
.gg-sec-title-light{color:var(--gg-ivory)!important}
.gg-sec-sub{color:var(--gg-muted);font-size:15.5px;line-height:1.7;margin:16px 0 0}
.gg-center{text-align:center;margin-top:52px}

/* ---------- Collections ---------- */
.gg-collections{padding-top:84px}
.gg-collections-grid{display:grid;grid-template-columns:1fr 1fr;gap:28px}
.gg-col-card{
  position:relative;display:block;text-decoration:none;
  background:var(--gg-paper);
  border:1px solid var(--gg-hairline);
  overflow:hidden;
  transition:box-shadow .4s var(--gg-ease),transform .4s var(--gg-ease);
}
.gg-col-card:hover{box-shadow:var(--gg-shadow);transform:translateY(-4px)}
.gg-col-media{display:block;overflow:hidden;aspect-ratio:4/3;position:relative}
.gg-col-media img{width:100%;height:100%;object-fit:cover;display:block;transition:transform 1.1s var(--gg-ease)}
.gg-col-card:hover .gg-col-media img{transform:scale(1.06)}
.gg-col-media:after{
  content:"";position:absolute;inset:0;
  background:linear-gradient(180deg,transparent 55%,rgba(15,14,12,.16));
  pointer-events:none;
}
.gg-col-body{display:block;padding:26px 28px 30px;text-align:center}
.gg-col-title{display:block;font-family:var(--gg-serif);font-size:27px;font-weight:500;color:var(--gg-ink)}
.gg-col-sub{display:block;color:var(--gg-muted);font-size:14px;margin:8px 0 14px;line-height:1.6}
.gg-col-link{
  display:inline-block;font-size:12px;letter-spacing:.2em;text-transform:uppercase;
  color:var(--gg-gold-text);border-bottom:1px solid rgba(168,133,63,.4);padding-bottom:4px;
  transition:letter-spacing .3s var(--gg-ease);
}
.gg-col-card:hover .gg-col-link{letter-spacing:.26em}

/* ---------- Featured cards ---------- */
.gg-cards-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:24px}
.gg-card{
  display:block;text-decoration:none;background:var(--gg-paper);
  border:1px solid var(--gg-hairline);
  transition:box-shadow .4s var(--gg-ease),transform .4s var(--gg-ease),border-color .4s var(--gg-ease);
  position:relative;
}
.gg-card:hover{box-shadow:var(--gg-shadow);transform:translateY(-5px);border-color:rgba(201,165,95,.5)}
.gg-card-media{display:block;position:relative;overflow:hidden;aspect-ratio:1}
.gg-card-media img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .9s var(--gg-ease)}
.gg-card:hover .gg-card-media img{transform:scale(1.07)}
.gg-card-media:before{
  content:"";position:absolute;top:0;left:-75%;width:50%;height:100%;z-index:2;
  background:linear-gradient(105deg,transparent,rgba(255,255,255,.32),transparent);
  transform:skewX(-20deg);
  transition:left .7s var(--gg-ease);
  pointer-events:none;
}
.gg-card:hover .gg-card-media:before{left:125%}
.gg-card-cta{
  position:absolute;left:0;right:0;bottom:0;z-index:3;
  background:rgba(15,14,12,.82);color:var(--gg-ivory);
  font-size:11.5px;letter-spacing:.22em;text-transform:uppercase;text-align:center;
  padding:12px 0;
  transform:translateY(100%);
  transition:transform .38s var(--gg-ease);
}
.gg-card:hover .gg-card-cta{transform:none}
.gg-card-body{display:block;padding:18px 18px 22px;text-align:center}
.gg-card-cat{display:block;font-size:10.5px;letter-spacing:.26em;text-transform:uppercase;color:var(--gg-gold-text);margin-bottom:7px}
.gg-card-title{
  display:block;font-family:var(--gg-serif);font-size:18.5px;font-weight:500;color:var(--gg-ink);
  line-height:1.3;min-height:2.6em;
}
.gg-card-price{display:block;margin-top:8px;font-size:14.5px;color:var(--gg-text);letter-spacing:.04em}
.gg-card-price del{color:var(--gg-muted);margin-right:8px}

/* ---------- Editorial dark band ---------- */
.gg-editorial{
  background:
    radial-gradient(900px 420px at 85% 0%,rgba(201,165,95,.10),transparent 60%),
    linear-gradient(170deg,#14120f,#0f0e0c);
  color:var(--gg-ivory);
}
.gg-editorial-inner{max-width:1220px;margin:0 auto;padding:96px 28px}
.gg-ed-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:44px;margin-top:10px}
.gg-ed-item{border-top:1px solid var(--gg-hairline-light);padding-top:26px}
.gg-ed-num{
  font-family:var(--gg-serif);font-style:italic;font-size:15px;color:var(--gg-gold);
  display:block;margin-bottom:14px;letter-spacing:.1em;
}
.gg-ed-item h3{font-family:var(--gg-serif);font-size:23px;font-weight:500;color:var(--gg-ivory)!important;margin:0 0 12px}
.gg-ed-item p{color:rgba(250,248,244,.65);font-size:14.5px;line-height:1.75;margin:0 0 18px}
.gg-ed-link{
  font-size:11.5px;letter-spacing:.2em;text-transform:uppercase;
  color:var(--gg-gold)!important;text-decoration:none;
  border-bottom:1px solid rgba(201,165,95,.4);padding-bottom:4px;
}
.gg-ed-link:hover{color:var(--gg-gold-pale)!important}

/* ---------- Promo: a jewel-box moment, not a flat cream slab ---------- */
.gg-promo{
  position:relative;overflow:hidden;
  background:
    radial-gradient(900px 420px at 50% 0%,rgba(201,165,95,.16),transparent 62%),
    linear-gradient(168deg,#151210 0%,#0f0e0c 52%,#191410 100%);
  border-top:1px solid rgba(201,165,95,.3);
}
.gg-promo-glow{
  position:absolute;inset:0;pointer-events:none;
  background:radial-gradient(520px 300px at 50% 46%,rgba(201,165,95,.15),transparent 68%);
  animation:gg-glow 8s ease-in-out infinite alternate;
}
.gg-promo-sparkles{position:absolute;inset:0;pointer-events:none;overflow:hidden}
.gg-promo-inner{
  position:relative;z-index:2;
  max-width:720px;margin-left:auto;margin-right:auto;
  padding:92px 28px;
  display:flex;justify-content:center;
}
/* the card */
.gg-promo-card{
  position:relative;width:100%;
  padding:52px 40px 46px;
  text-align:center;
  background:linear-gradient(180deg,rgba(250,248,244,.045),rgba(250,248,244,.015));
  border:1px solid rgba(201,165,95,.28);
  backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px);
  display:flex;flex-direction:column;align-items:center;
}
/* gold corner ornaments */
.gg-promo-corner{position:absolute;width:22px;height:22px;pointer-events:none}
.gg-promo-corner-tl{top:-1px;left:-1px;border-top:2px solid var(--gg-gold);border-left:2px solid var(--gg-gold)}
.gg-promo-corner-tr{top:-1px;right:-1px;border-top:2px solid var(--gg-gold);border-right:2px solid var(--gg-gold)}
.gg-promo-corner-bl{bottom:-1px;left:-1px;border-bottom:2px solid var(--gg-gold);border-left:2px solid var(--gg-gold)}
.gg-promo-corner-br{bottom:-1px;right:-1px;border-bottom:2px solid var(--gg-gold);border-right:2px solid var(--gg-gold)}

.gg-promo .gg-eyebrow{margin:0 0 18px}
.gg-promo-title{
  font-family:var(--gg-serif);
  font-size:clamp(30px,4.4vw,50px);
  font-weight:500;line-height:1.12;
  color:var(--gg-ivory)!important;
  margin:0 0 16px;text-transform:none;
}
.gg-promo-title em{
  font-style:italic;
  background:linear-gradient(100deg,var(--gg-gold-pale),var(--gg-gold) 45%,var(--gg-gold-pale) 80%);
  background-size:200% 100%;
  -webkit-background-clip:text;background-clip:text;
  -webkit-text-fill-color:transparent;color:transparent;
  animation:gg-shimmer 5.5s linear infinite;
}
.gg-promo-sub{
  color:rgba(250,248,244,.66);margin:0 0 28px;font-size:15.5px;line-height:1.7;
  max-width:44ch;margin-left:auto;margin-right:auto;
}
/* click-to-copy code chip */
button.gg-code{
  display:inline-flex;flex-direction:column;align-items:center;gap:5px;
  font-family:var(--gg-sans);
  background:linear-gradient(135deg,rgba(201,165,95,.16),rgba(168,133,63,.10));
  border:1px dashed rgba(201,165,95,.6);
  color:var(--gg-gold-pale);
  padding:15px 34px;margin:0 0 30px;cursor:pointer;
  transition:background .3s var(--gg-ease),border-color .3s var(--gg-ease),transform .3s var(--gg-ease);
}
button.gg-code:hover{background:linear-gradient(135deg,rgba(201,165,95,.26),rgba(168,133,63,.16));border-color:var(--gg-gold);transform:translateY(-2px)}
.gg-code-text{font-size:21px;font-weight:500;letter-spacing:.3em;color:#fff;text-indent:.3em}
.gg-code-hint{font-size:10px;letter-spacing:.22em;text-transform:uppercase;color:rgba(250,248,244,.62)}
button.gg-code.gg-copied{border-color:var(--gg-gold);border-style:solid}
button.gg-code.gg-copied .gg-code-hint{color:var(--gg-gold)}
.gg-promo-cta{margin:0 0 22px}
.gg-promo-fine{
  margin:0;font-size:11.5px;letter-spacing:.12em;text-transform:uppercase;
  color:rgba(250,248,244,.58);
}

@media (max-width:600px){
  .gg-promo-inner{padding:64px 18px}
  .gg-promo-card{padding:38px 20px 34px}
  .gg-code-text{font-size:18px;letter-spacing:.24em}
  .gg-promo-fine{letter-spacing:.08em;line-height:1.7}
}

/* ---------- WooCommerce: shop grid ---------- */
body.gg-lux.woocommerce ul.products li.product,
body.gg-lux ul.products li.product{
  background:var(--gg-paper);
  border:1px solid var(--gg-hairline);
  padding:0 0 20px;
  text-align:center;
  transition:box-shadow .4s var(--gg-ease),transform .4s var(--gg-ease),border-color .4s var(--gg-ease);
}
body.gg-lux ul.products li.product:hover{
  box-shadow:var(--gg-shadow);transform:translateY(-5px);border-color:rgba(201,165,95,.5);
}
body.gg-lux ul.products li.product a img{
  margin:0;transition:transform .9s var(--gg-ease);
}
body.gg-lux ul.products li.product .woocommerce-LoopProduct-link{display:block;overflow:hidden}
body.gg-lux ul.products li.product:hover a img{transform:scale(1.06)}
body.gg-lux ul.products li.product .woocommerce-loop-product__title{
  font-size:17.5px;padding:16px 14px 4px;line-height:1.35;
}
body.gg-lux ul.products li.product .price{
  color:var(--gg-text)!important;font-size:14.5px;letter-spacing:.04em;display:block;margin:4px 0 12px;
}
body.gg-lux ul.products li.product .price del{color:var(--gg-muted);opacity:.75}
body.gg-lux ul.products li.product .button,
body.gg-lux ul.products li.product .added_to_cart{
  margin-top:4px;
}
body.gg-lux .woocommerce-result-count{color:var(--gg-muted);font-size:13px;letter-spacing:.06em}
body.gg-lux .woocommerce-ordering select{
  border:1px solid var(--gg-hairline);background:var(--gg-paper);
  font-family:var(--gg-sans);font-size:13px;padding:8px 12px;
}
body.gg-lux .woocommerce-breadcrumb,body.gg-lux .kadence-breadcrumbs{
  font-size:11.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--gg-muted);
}
body.gg-lux span.onsale{
  background:var(--gg-gold-deep)!important;color:var(--gg-ink)!important;
  border-radius:0!important;font-size:10.5px!important;letter-spacing:.18em;text-transform:uppercase;
  padding:6px 12px!important;min-height:0!important;min-width:0!important;line-height:1.4!important;
}

/* archive title band */
body.gg-lux.archive.woocommerce .archive-title,
body.gg-lux.post-type-archive-product .entry-header,
body.gg-lux.tax-product_cat .entry-header{border:0}

/* ---------- PDP ---------- */
body.gg-lux.single-product div.product .product_title{font-size:clamp(28px,3vw,40px);line-height:1.15}
body.gg-lux.single-product div.product p.price{
  /* a11y: gold-deep on white is 3.45:1 at 22px (not WCAG-large) -> use 4.93:1 gold-text */
  font-family:var(--gg-sans);font-size:22px;color:var(--gg-gold-text)!important;letter-spacing:.05em;margin:14px 0 20px;
}
body.gg-lux.single-product div.product .woocommerce-product-details__short-description{
  color:var(--gg-muted);line-height:1.8;font-size:15.5px;
}
body.gg-lux.single-product div.product .woocommerce-product-gallery{
  border:1px solid var(--gg-hairline);background:var(--gg-paper);
}
body.gg-lux.single-product .related.products>h2,
body.gg-lux.single-product .up-sells>h2{
  font-family:var(--gg-serif);text-align:center;font-size:32px;margin-bottom:34px;
}
/* ---------- Interactive product viewer (PDP) ---------- */
body.gg-lux .woocommerce-product-gallery{position:relative;overflow:hidden}
body.gg-lux .woocommerce-product-gallery__image img,
body.gg-lux .woocommerce-product-gallery__wrapper img{
  transition:transform .45s var(--gg-ease);
  will-change:transform;
  backface-visibility:hidden;
}
body.gg-lux .woocommerce-product-gallery.gg-tilt-on .woocommerce-product-gallery__image img,
body.gg-lux .woocommerce-product-gallery.gg-tilt-on .woocommerce-product-gallery__wrapper img{
  transition:transform .12s linear;
}
/* specular highlight that follows the pointer — never intercepts clicks */
.gg-sheen{
  position:absolute;inset:0;z-index:3;pointer-events:none;
  opacity:0;transition:opacity .35s var(--gg-ease);
  background:radial-gradient(320px circle at var(--gg-sx,50%) var(--gg-sy,50%),
             rgba(255,255,255,.30), rgba(255,255,255,.08) 42%, transparent 68%);
  mix-blend-mode:screen;
}
body.gg-lux .woocommerce-product-gallery.gg-tilt-on .gg-sheen{opacity:1}
/* "move to view" affordance */
.gg-view-hint{
  position:absolute;left:14px;bottom:14px;z-index:4;pointer-events:none;
  background:rgba(15,14,12,.78);color:var(--gg-gold-pale);
  font-family:var(--gg-sans);font-size:10.5px;letter-spacing:.2em;text-transform:uppercase;
  padding:8px 13px;display:inline-flex;align-items:center;gap:.5em;
  transition:opacity .5s var(--gg-ease),transform .5s var(--gg-ease);
}
.gg-view-ico{color:var(--gg-gold)}
.gg-view-sep{margin:0 .55em;color:var(--gg-gold)}
.gg-view-hint-out{opacity:0;transform:translateY(6px)}
/* decorative "click to enlarge" cue — replaces Woo's magnifier, must not intercept the click */
.gg-zoom-badge{
  position:absolute;top:14px;right:14px;z-index:4;pointer-events:none;
  width:38px;height:38px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  background:rgba(250,248,244,.92);color:var(--gg-ink);
  border:1px solid rgba(15,14,12,.10);
  box-shadow:0 6px 18px -8px rgba(15,14,12,.45);
  transition:background .3s var(--gg-ease),color .3s var(--gg-ease),transform .3s var(--gg-ease);
}
body.gg-lux .woocommerce-product-gallery.gg-tilt-on .gg-zoom-badge{
  background:var(--gg-ink);color:var(--gg-gold-pale);transform:scale(1.06);
}
/* the gallery itself is the click target for the lightbox */
body.gg-lux .woocommerce-product-gallery__image > a{cursor:zoom-in;display:block}
/* 360 spin stage (dormant until a product supplies >= 8 turntable frames) */
.gg-spin-stage{position:relative;z-index:2;cursor:grab;touch-action:pan-y;background:var(--gg-paper)}
.gg-spin-stage.gg-spin-active{cursor:grabbing}
.gg-spin-img{width:100%;height:auto;display:block;user-select:none;-webkit-user-drag:none}
@media (prefers-reduced-motion:reduce){
  .gg-sheen,.gg-view-hint{display:none}
  body.gg-lux .woocommerce-product-gallery__image img{transition:none;transform:none!important}
}

/* ---------- Variation form (PDP) ---------- */
/* Woo renders these as a table with the label in one cell and a narrow select in the next,
   which reads as two disconnected columns. Stack them into full-width labelled fields. */
body.gg-lux .variations{width:100%;border:0;margin:0 0 18px;display:block}
body.gg-lux .variations tbody,
body.gg-lux .variations tr{display:block;width:100%}
body.gg-lux .variations th,
body.gg-lux .variations td{display:block;width:100%;padding:0;border:0;text-align:left}
body.gg-lux .variations th.label{margin:0 0 7px}
body.gg-lux .variations tr + tr{margin-top:16px}
body.gg-lux .variations label{
  font-family:var(--gg-sans);font-size:11.5px;letter-spacing:.18em;text-transform:uppercase;
  color:var(--gg-muted);font-weight:400;margin:0;
}
body.gg-lux .variations td.value{position:relative}
body.gg-lux .variations select{
  width:100%;
  appearance:none;-webkit-appearance:none;-moz-appearance:none;
  padding:13px 40px 13px 15px;
  border:1px solid var(--gg-hairline);
  background:var(--gg-paper);
  font-family:var(--gg-sans);font-size:14.5px;color:var(--gg-text);
  border-radius:0;cursor:pointer;
}
/* The chevron that used to live here (a border-drawn caret on td.value:after) is now
 * drawn on the select itself, further down, so one rule covers these AND the shop
 * sorter. It also fixes a bug: this arrow was centred on the CELL, and the size cell
 * is taller than its select because it also holds the "Clear" link - so the caret
 * rendered below the field instead of inside it. */
body.gg-lux .variations select:focus{border-color:var(--gg-gold);box-shadow:0 0 0 3px rgba(201,165,95,.18);outline:none}
body.gg-lux .woocommerce-variation-price{margin:6px 0 14px}
body.gg-lux .woocommerce-variation-price .price{font-size:20px;color:var(--gg-gold-text)!important}
body.gg-lux .reset_variations{
  font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--gg-muted);
  display:inline-block;margin-top:8px;
}
/* disabled Add to Cart (before options are chosen) should read as "waiting", not broken */
body.gg-lux .single_add_to_cart_button.disabled,
body.gg-lux .single_add_to_cart_button:disabled{
  background:transparent!important;color:var(--gg-muted)!important;
  border:1px solid var(--gg-hairline)!important;cursor:not-allowed;opacity:1!important;
}

/* ---------- Ring size guide (PDP) ---------- */
.gg-size-guide{
  margin:20px 0 4px;border:1px solid var(--gg-hairline);background:var(--gg-paper);
}
.gg-size-guide summary{
  cursor:pointer;list-style:none;padding:14px 18px;
  font-family:var(--gg-sans);font-size:12px;letter-spacing:.16em;text-transform:uppercase;
  color:var(--gg-text);display:flex;align-items:center;gap:.6em;
  transition:color .25s var(--gg-ease);
}
.gg-size-guide summary::-webkit-details-marker{display:none}
.gg-size-guide summary:after{
  content:"+";margin-left:auto;font-size:16px;color:var(--gg-gold-text);line-height:1;
}
.gg-size-guide[open] summary:after{content:"\2212"}
.gg-size-guide summary:hover{color:var(--gg-gold-text)}
.gg-size-ico{color:var(--gg-gold)}
.gg-size-body{padding:4px 18px 20px;border-top:1px solid var(--gg-hairline)}
.gg-size-lead{font-size:14px;color:var(--gg-muted);margin:14px 0 12px;line-height:1.7}
.gg-size-steps{margin:0 0 16px;padding-left:1.2em}
.gg-size-steps li{font-size:14px;line-height:1.75;color:var(--gg-text);margin-bottom:8px}
.gg-size-table{width:100%;border-collapse:collapse;margin:0 0 14px;font-size:14px}
.gg-size-table th{
  font-family:var(--gg-sans);font-size:11px;letter-spacing:.14em;text-transform:uppercase;
  color:var(--gg-muted);font-weight:400;text-align:left;
  padding:9px 10px;border-bottom:1px solid var(--gg-hairline);
}
.gg-size-table td{padding:9px 10px;border-bottom:1px solid var(--gg-hairline);color:var(--gg-text)}
.gg-size-table tbody tr:last-child td{border-bottom:0}
.gg-size-table tbody tr:hover{background:rgba(201,165,95,.07)}
.gg-size-tips{font-size:13px;color:var(--gg-muted);line-height:1.7;margin:0}
.gg-size-tips a{color:var(--gg-gold-text);border-bottom:1px solid rgba(168,133,63,.4)}
@media (max-width:520px){
  .gg-size-table{font-size:13px}
  .gg-size-table th,.gg-size-table td{padding:8px 6px}
}

.gg-trust{
  margin-top:22px;padding:16px 0 0;border-top:1px solid var(--gg-hairline);
  display:flex;flex-wrap:wrap;gap:10px 24px;
}
.gg-trust-item{font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--gg-muted)}
.gg-trust-item a{color:var(--gg-muted);text-decoration:none;border-bottom:1px solid rgba(168,133,63,.35)}
.gg-trust-item a:hover{color:var(--gg-gold-deep)}
.gg-trust-ico{color:var(--gg-gold)}
body.gg-lux .woocommerce-tabs ul.tabs li a{
  font-family:var(--gg-sans);font-size:12.5px;letter-spacing:.16em;text-transform:uppercase;
}

/* quantity + forms */
body.gg-lux .quantity .qty{border:1px solid var(--gg-hairline);background:var(--gg-paper)}
body.gg-lux .cart .variations select{
  border:1px solid var(--gg-hairline);background:var(--gg-paper);padding:9px 12px;font-family:var(--gg-sans);
}

/* ---------- Cart / checkout light harmony ---------- */
body.gg-lux .woocommerce-cart-form,
body.gg-lux .cart_totals,
body.gg-lux #order_review{font-family:var(--gg-sans)}
body.gg-lux .cart_totals h2,body.gg-lux #order_review_heading{font-family:var(--gg-serif)}

/* ============================================================
   FOOTER — Kadence's own footer is hidden (3 empty widget areas +
   a lone italic copyright line). Ours renders via wp_footer, with
   gg-footer-legal.php's disclosures folded into the same dark block.
   ============================================================ */
body.gg-lux #colophon,
body.gg-lux .site-footer{display:none!important}

.gg-footer{
  background:linear-gradient(170deg,#141210,#0f0e0c);
  border-top:1px solid rgba(201,165,95,.3);
  color:rgba(250,248,244,.66);
}
.gg-footer-inner{
  max-width:1220px;margin:0 auto;padding:64px 28px 46px;
  display:grid;grid-template-columns:1.6fr 1fr 1fr 1fr;gap:44px;
}
.gg-footer-brand{max-width:34ch}
.gg-footer-mark{
  font-family:var(--gg-serif);font-size:26px;font-weight:500;letter-spacing:.02em;
  color:var(--gg-ivory);margin:0 0 12px;
}
.gg-footer-tag{font-size:14px;line-height:1.75;margin:0 0 16px;color:rgba(250,248,244,.6)}
.gg-footer-mail{
  font-size:12.5px;letter-spacing:.12em;color:var(--gg-gold)!important;
  border-bottom:1px solid rgba(201,165,95,.4);padding-bottom:3px;text-decoration:none;
}
.gg-footer-mail:hover{color:var(--gg-gold-pale)!important}
.gg-footer-h{
  font-family:var(--gg-sans);font-size:11px;letter-spacing:.26em;text-transform:uppercase;
  color:var(--gg-gold);margin:0 0 16px;
}
.gg-footer-col ul{list-style:none;margin:0;padding:0}
.gg-footer-col li{margin:0 0 11px}
.gg-footer-col a{
  font-size:14px;color:rgba(250,248,244,.66)!important;text-decoration:none;
  transition:color .25s var(--gg-ease),padding-left .25s var(--gg-ease);
  display:inline-block;
}
.gg-footer-col a:hover{color:var(--gg-gold)!important;padding-left:5px}

/* the injected legal strip becomes the footer's lower band */
body.gg-lux .gg-footer-legal{
  background:#0f0e0c;
  color:rgba(250,248,244,.5)!important;
  border-top:1px solid rgba(250,248,244,.10);
  max-width:none!important;
  padding:26px 0 30px!important;
  opacity:1!important;
  font-size:12.5px!important;line-height:1.75!important;
}
body.gg-lux .gg-footer-legal > div{max-width:1220px;margin:0 auto;padding:0 28px}
body.gg-lux .gg-footer-legal p{max-width:1220px;margin:0 auto 8px!important;padding:0 28px;color:rgba(250,248,244,.5)}
body.gg-lux .gg-footer-legal a,
body.gg-lux .gg-footer-legal .cmplz-manage-consent{
  color:rgba(250,248,244,.78)!important;border-bottom-color:rgba(201,165,95,.35)!important;
}
body.gg-lux .gg-footer-legal a:hover,
body.gg-lux .gg-footer-legal .cmplz-manage-consent:hover{color:var(--gg-gold)!important}
body.gg-lux .gg-footer-legal strong{color:rgba(250,248,244,.72)}

.gg-copyright{
  background:#0f0e0c;border-top:1px solid rgba(250,248,244,.08);
  padding:20px 28px 26px;text-align:center;
}
.gg-copyright p{
  margin:0;font-family:var(--gg-sans);font-size:11.5px;letter-spacing:.16em;
  text-transform:uppercase;color:rgba(250,248,244,.42);
}

@media (max-width:980px){
  .gg-footer-inner{grid-template-columns:1fr 1fr 1fr;gap:34px;padding:52px 24px 38px}
  .gg-footer-brand{grid-column:1 / -1;max-width:none}
}
@media (max-width:600px){
  .gg-footer-inner{grid-template-columns:1fr 1fr;gap:28px 20px;padding:42px 20px 32px}
  .gg-footer-mark{font-size:23px}
  body.gg-lux .gg-footer-legal p,
  body.gg-lux .gg-footer-legal > div{padding:0 20px}
  .gg-copyright{padding:18px 20px 24px}
  .gg-copyright p{letter-spacing:.12em;font-size:11px}
}

/* ---------- Footer (legacy Kadence rules, kept for non-gg pages) ---------- */
body.gg-lux #colophon,body.gg-lux .site-footer{
  background:linear-gradient(180deg,#131110,#0f0e0c);
  color:rgba(250,248,244,.7);
}
body.gg-lux .site-footer .site-footer-wrap,
body.gg-lux .site-top-footer-wrap,
body.gg-lux .site-middle-footer-wrap,
body.gg-lux .site-bottom-footer-wrap,
body.gg-lux .site-footer .site-footer-row-container-inner,
body.gg-lux .site-footer .site-footer-row{background:transparent!important;border:0}
body.gg-lux .site-footer .widget-title,
body.gg-lux .site-footer h2,body.gg-lux .site-footer h3,body.gg-lux .site-footer h4{
  font-family:var(--gg-serif);color:var(--gg-ivory)!important;font-size:19px;font-weight:500;
  margin-bottom:16px;
}
body.gg-lux .site-footer,body.gg-lux .site-footer p,body.gg-lux .site-footer li,
body.gg-lux .site-footer .textwidget{color:rgba(250,248,244,.62);font-size:14px;line-height:1.8}
body.gg-lux .site-footer a{color:rgba(250,248,244,.78)!important;text-decoration:none}
body.gg-lux .site-footer a:hover{color:var(--gg-gold)!important}
body.gg-lux .site-footer ul li{list-style:none;margin:0 0 9px}
body.gg-lux .site-middle-footer-wrap{border-top:1px solid rgba(201,165,95,.28)!important}
body.gg-lux .site-bottom-footer-wrap{
  border-top:1px solid var(--gg-hairline-light)!important;
  font-size:12px;letter-spacing:.1em;
}
body.gg-lux .site-footer .widget{margin-bottom:1.2em}

/* ---------- Blog: archive cards + single post ---------- */
body.gg-lux .loop-entry{
  background:var(--gg-paper);
  border:1px solid var(--gg-hairline);
  transition:box-shadow .4s var(--gg-ease),transform .4s var(--gg-ease);
}
body.gg-lux .loop-entry:hover{box-shadow:var(--gg-shadow);transform:translateY(-4px)}
body.gg-lux .loop-entry .entry-title{font-size:21px;line-height:1.35}
body.gg-lux .loop-entry .entry-title a{color:var(--gg-ink)}
body.gg-lux .loop-entry .entry-title a:hover{color:var(--gg-gold-deep)}
body.gg-lux .loop-entry .entry-taxonomies a{color:var(--gg-gold-text)}
body.gg-lux .loop-entry .entry-meta,
body.gg-lux .single-post .entry-meta{
  font-size:11.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--gg-muted);
}
body.gg-lux .loop-entry .post-thumbnail img{transition:transform .9s var(--gg-ease)}
body.gg-lux .loop-entry:hover .post-thumbnail img{transform:scale(1.05)}
body.gg-lux.single-post .entry-content{font-size:16.5px;line-height:1.85;color:var(--gg-text)}
body.gg-lux.single-post .entry-content h2,
body.gg-lux.single-post .entry-content h3{margin-top:1.6em}
body.gg-lux.single-post .entry-content a{color:var(--gg-gold-text);text-decoration:underline;text-underline-offset:2px}
body.gg-lux.single-post .entry-content img{border:1px solid var(--gg-hairline)}
body.gg-lux.single-post .entry-content blockquote{
  border-left:2px solid var(--gg-gold);
  font-family:var(--gg-serif);font-style:italic;font-size:1.15em;color:var(--gg-ink);
}

/* ---------- Round 5: refined header ---------- */
body.gg-lux .custom-logo-link img,
body.gg-lux img.custom-logo{
  max-height:72px!important;width:auto!important;
  mix-blend-mode:multiply; /* melts the logo's off-white box into the header */
  transition:max-height .3s var(--gg-ease);
}
body.gg-lux.gg-scrolled .custom-logo-link img,
body.gg-lux.gg-scrolled img.custom-logo{max-height:56px!important}
body.gg-lux #masthead .site-main-header-inner-wrap{min-height:0}
body.gg-lux #masthead .site-header-row{min-height:0}

/* ---------- Round 5: forms & focus ---------- */
body.gg-lux input[type=text],
body.gg-lux input[type=email],
body.gg-lux input[type=tel],
body.gg-lux input[type=password],
body.gg-lux input[type=search],
body.gg-lux input[type=number],
body.gg-lux textarea,
body.gg-lux select{
  border:1px solid var(--gg-hairline);
  background:var(--gg-paper);
  border-radius:0;
  font-family:var(--gg-sans);
  padding:11px 14px;
  color:var(--gg-text);
  transition:border-color .25s var(--gg-ease),box-shadow .25s var(--gg-ease);
}
body.gg-lux input:focus,
body.gg-lux textarea:focus,
body.gg-lux select:focus{
  border-color:var(--gg-gold);
  box-shadow:0 0 0 3px rgba(201,165,95,.18);
  outline:none;
}
/* a11y: gold #c9a55f on white is 2.33:1 — below the 3:1 required for focus indicators.
   gold-text #8a6c2c measures 4.93:1, and the ink companion ring keeps it visible on dark. */
body.gg-lux :focus-visible{
  outline:2px solid var(--gg-gold-text);
  outline-offset:2px;
  box-shadow:0 0 0 4px rgba(15,14,12,.25);
}
/* on dark sections the pale gold is the readable one */
body.gg-lux .gg-hero :focus-visible,
body.gg-lux .gg-editorial :focus-visible,
body.gg-lux .gg-promo :focus-visible,
body.gg-lux .gg-footer :focus-visible,
body.gg-lux .popup-drawer :focus-visible,
body.gg-lux .gg-search-overlay :focus-visible{
  outline-color:var(--gg-gold-pale);
  box-shadow:0 0 0 4px rgba(250,248,244,.18);
}
body.gg-lux .form-row label{font-size:12.5px;letter-spacing:.08em;color:var(--gg-muted)}

/* cart + checkout tables */
body.gg-lux .shop_table{border:1px solid var(--gg-hairline)!important;border-radius:0}
body.gg-lux .shop_table th{
  font-family:var(--gg-sans);font-size:12px;letter-spacing:.14em;text-transform:uppercase;
  color:var(--gg-muted);
}
body.gg-lux .shop_table td,body.gg-lux .shop_table th{border-color:var(--gg-hairline)!important}
body.gg-lux .cart_totals .order-total .amount,
body.gg-lux .order-total .amount{color:var(--gg-gold-deep)}
body.gg-lux .coupon .input-text{min-width:160px}
body.gg-lux .woocommerce-message,
body.gg-lux .woocommerce-info,
body.gg-lux .woocommerce-error{
  border-top-color:var(--gg-gold)!important;
  background:var(--gg-paper);
  font-family:var(--gg-sans);
}

/* account forms */
body.gg-lux .woocommerce-form-login,
body.gg-lux .woocommerce-form-register{
  border:1px solid var(--gg-hairline)!important;border-radius:0!important;
  background:var(--gg-paper);
}

/* ---------- Round 5: medallion shine + card image fade ---------- */
.gg-medallion-frame:after{
  content:"";position:absolute;inset:0;border-radius:50%;
  background:conic-gradient(from 0deg,transparent 0deg,rgba(255,255,255,.28) 24deg,transparent 60deg,transparent 360deg);
  animation:gg-orbit 7s linear infinite;
  pointer-events:none;
}
@keyframes gg-orbit{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){.gg-medallion-frame:after{animation:none;display:none}}

/* ---------- Round 5: back to top ---------- */
.gg-top{
  position:fixed;right:22px;bottom:22px;z-index:900;
  width:46px;height:46px;border-radius:50%;
  background:var(--gg-ink);color:var(--gg-gold-pale);
  border:1px solid rgba(201,165,95,.45);
  display:flex;align-items:center;justify-content:center;
  cursor:pointer;font-size:17px;line-height:1;
  opacity:0;transform:translateY(14px);pointer-events:none;visibility:hidden;
  transition:opacity .35s var(--gg-ease),transform .35s var(--gg-ease),background .25s var(--gg-ease);
  box-shadow:0 10px 28px -12px rgba(15,14,12,.5);
}
.gg-top.gg-top-show{opacity:1;transform:none;pointer-events:auto;visibility:visible}
.gg-top:hover{background:var(--gg-gold-deep);color:var(--gg-gold-pale)}
@media (max-width:880px){.gg-top{right:14px;bottom:14px;width:42px;height:42px}}

/* ---------- Round 9: search form + results ---------- */
/* the submit button was clipping its own label ("SEA…") on the 404/search form */
body.gg-lux .search-form,
body.gg-lux .wp-block-search__inside-wrapper{display:flex;align-items:stretch;gap:10px}
/* Kadence wraps the input in a <label>, so the label is the flex child that must grow */
body.gg-lux .search-form label{flex:1 1 auto;min-width:0;display:block;margin:0}
body.gg-lux .search-form .search-field,
body.gg-lux .wp-block-search__input{width:100%;flex:1 1 auto;min-width:0}
body.gg-lux .search-form .search-submit,
body.gg-lux .wp-block-search__button{
  flex:0 0 auto;white-space:nowrap;width:auto!important;
  padding:.95em 1.6em!important;letter-spacing:.12em!important;
  display:inline-flex;align-items:center;gap:.55em;
}
/* Kadence overlays a decorative magnifier (a SIBLING div, not a child of the input) on top of the
   submit — it collided with the "Search" label. The label alone is clearer. */
body.gg-lux .search-form .kadence-search-icon-wrap{display:none}

/* product results: a post date is meaningless on a piece of jewelry */
body.gg-lux .search-results .loop-entry.type-product .entry-meta,
body.gg-lux .search-results .loop-entry.type-product .posted-on{display:none}
/* product results stand out from article results */
body.gg-lux .search-results .loop-entry.type-product .entry-title:before{
  content:"Jewelry";
  display:block;font-family:var(--gg-sans);font-size:10.5px;letter-spacing:.26em;
  text-transform:uppercase;color:var(--gg-gold-text);margin-bottom:6px;
}

/* ---------- Round 11: empty cart ---------- */
body.gg-lux .cart-empty,
body.gg-lux .wc-empty-cart-message .cart-empty{
  font-family:var(--gg-serif)!important;
  font-size:clamp(24px,2.8vw,34px)!important;
  font-weight:500;
  color:var(--gg-ink)!important;
  text-align:center;
  margin:8px 0 22px;
}
body.gg-lux .return-to-shop{text-align:center;margin-bottom:6px}
.gg-empty-cart{
  margin:44px auto 8px;max-width:1100px;
  padding-top:40px;border-top:1px solid var(--gg-hairline);
  text-align:center;
}
.gg-empty-cart .gg-eyebrow{margin-bottom:10px}
.gg-empty-cart .gg-sec-title{font-size:clamp(22px,2.4vw,30px);margin-bottom:28px}
.gg-empty-cart .gg-card-title{font-size:16px;min-height:0}
.gg-empty-cart-cta{margin:30px 0 0;display:flex;gap:12px;justify-content:center;flex-wrap:wrap}
@media (max-width:880px){
  .gg-empty-cart{margin-top:32px;padding-top:30px}
  .gg-empty-cart .gg-cards-grid{grid-template-columns:repeat(2,1fr);gap:14px}
}

/* ---------- Round 10: shop block inside blog posts ---------- */
.gg-post-shop{
  margin:56px 0 8px;padding:38px 32px 42px;
  background:var(--gg-paper);
  border:1px solid var(--gg-hairline);
  border-top:2px solid var(--gg-gold);
  text-align:center;
}
.gg-post-shop .gg-eyebrow{margin-bottom:12px}
.gg-post-shop .gg-sec-title{font-size:clamp(24px,2.6vw,32px);margin-bottom:28px}
.gg-cards-3{grid-template-columns:repeat(3,1fr)}
.gg-post-shop .gg-card-title{font-size:16.5px;min-height:0}
.gg-post-shop-cta{margin:30px 0 0}
@media (max-width:880px){
  .gg-post-shop{padding:30px 18px 34px;margin:40px 0 4px}
  .gg-cards-3{grid-template-columns:repeat(2,1fr);gap:14px}
  .gg-post-shop .gg-card:nth-child(3){display:none}
}

/* ---------- Round 9: 404 recovery ---------- */
.gg-404{background:var(--gg-paper);border-top:1px solid var(--gg-hairline)}
.gg-404-inner{max-width:820px;margin:0 auto;padding:64px 28px 78px;text-align:center}
.gg-404-links{display:flex;flex-wrap:wrap;gap:14px;justify-content:center;margin-top:30px}
.gg-404-link{
  display:inline-block;padding:13px 22px;
  border:1px solid var(--gg-hairline);background:var(--gg-ivory);
  font-size:12px;letter-spacing:.16em;text-transform:uppercase;
  color:var(--gg-text)!important;text-decoration:none;
  transition:border-color .3s var(--gg-ease),color .3s var(--gg-ease),transform .3s var(--gg-ease);
}
.gg-404-link:hover{border-color:var(--gg-gold);color:var(--gg-gold-text)!important;transform:translateY(-2px)}

/* ---------- Round 5: smooth scroll ---------- */
@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}

/* ---------- Complianz harmony ---------- */
body.gg-lux #cmplz-cookiebanner-container .cmplz-cookiebanner{
  font-family:var(--gg-sans)!important;border:1px solid var(--gg-hairline);
  background:var(--gg-paper)!important;border-radius:0!important;
  box-shadow:0 18px 50px -18px rgba(15,14,12,.35)!important;
}
body.gg-lux .cmplz-cookiebanner .cmplz-header .cmplz-title{font-family:var(--gg-serif)!important;color:var(--gg-ink)!important}
body.gg-lux .cmplz-cookiebanner .cmplz-btn{
  border-radius:0!important;font-family:var(--gg-sans)!important;
  letter-spacing:.12em!important;text-transform:uppercase!important;font-size:11.5px!important;
}
body.gg-lux .cmplz-cookiebanner .cmplz-btn.cmplz-accept{
  background:var(--gg-ink)!important;color:var(--gg-ivory)!important;border:1px solid var(--gg-ink)!important;
}
body.gg-lux .cmplz-cookiebanner .cmplz-btn.cmplz-accept:hover{background:var(--gg-gold-deep)!important;border-color:var(--gg-gold-deep)!important}
body.gg-lux .cmplz-cookiebanner .cmplz-btn.cmplz-deny,
body.gg-lux .cmplz-cookiebanner .cmplz-btn.cmplz-view-preferences{
  background:transparent!important;color:var(--gg-text)!important;border:1px solid var(--gg-hairline)!important;
}

/* ---------- Responsive ---------- */
@media (max-width:1024px){
  .gg-cards-grid{grid-template-columns:repeat(3,1fr)}
  .gg-hero-inner{gap:40px}
}
@media (max-width:880px){
  .gg-hero-inner{grid-template-columns:1fr;padding:64px 22px 88px;text-align:center}
  .gg-hero-copy{order:1}
  .gg-hero-medallion{order:0}
  .gg-medallion-frame{width:min(260px,64vw)}
  .gg-hero-ctas{justify-content:center}
  .gg-hero-sub{margin-left:auto;margin-right:auto}
  .gg-collections-grid{grid-template-columns:1fr}
  .gg-cards-grid{grid-template-columns:repeat(2,1fr);gap:16px}
  .gg-ed-grid{grid-template-columns:1fr;gap:30px}
  .gg-section{padding:64px 20px}
  .gg-editorial-inner{padding:70px 20px}
  .gg-promo-inner{padding:70px 20px}
  .gg-topbar{font-size:10.5px;letter-spacing:.14em}
}
@media (max-width:480px){
  .gg-cards-grid{grid-template-columns:1fr 1fr;gap:12px}
  .gg-card-title{font-size:15.5px}
  .gg-card-cta{display:none}
  .gg-btn{padding:14px 26px;font-size:11.5px}
  .gg-hero-title{font-size:clamp(36px,11vw,44px)}
}


/* a11y: Kadence renders the mobile toggle icon white on #d0a95e (2.21:1, needs 3:1). */
body.gg-lux .mobile-toggle-open-container .menu-toggle-open,
body.gg-lux .menu-toggle-open .menu-toggle-icon,
body.gg-lux .menu-toggle-open svg{color:var(--gg-ink)!important}


/* ---------------------------------------------------------------------------
 * Mobile conversion fixes.
 * 1. The quantity input rendered ~13.6px wide on a 390px viewport — Woo's
 *    default sizing collapses inside the flex row, leaving an untappable
 *    sliver. Give it a real box and a 44px touch target.
 * 2. Add to cart sat roughly four viewport-heights down the product page on
 *    mobile, below the whole gallery and description. A sticky bar carries it
 *    with the user once the real button scrolls out of view.
 * ------------------------------------------------------------------------- */
body.gg-lux .quantity{display:inline-flex;align-items:center}
body.gg-lux .quantity .qty{
  width:auto;min-width:76px;height:48px;padding:0 10px;
  text-align:center;font-size:16px;                 /* 16px stops iOS zoom-on-focus */
  -moz-appearance:textfield;appearance:textfield;
}
body.gg-lux .quantity .qty::-webkit-outer-spin-button,
body.gg-lux .quantity .qty::-webkit-inner-spin-button{opacity:1;height:44px}

@media (max-width:880px){
  body.gg-lux .quantity{width:100%}
  body.gg-lux .quantity .qty{min-width:100%;height:52px}
  body.gg-lux form.cart .single_add_to_cart_button{width:100%;margin-top:12px;padding:16px 22px}
}

/* Sticky mobile add-to-cart */
.gg-sticky-atc{
  position:fixed;left:0;right:0;bottom:0;z-index:120;
  display:none;align-items:center;gap:12px;
  padding:10px 14px calc(10px + env(safe-area-inset-bottom,0px));
  background:rgba(250,248,244,.97);
  -webkit-backdrop-filter:saturate(180%) blur(12px);backdrop-filter:saturate(180%) blur(12px);
  border-top:1px solid var(--gg-hairline);
  box-shadow:0 -6px 24px rgba(15,14,12,.10);
  transform:translateY(110%);transition:transform .28s cubic-bezier(.4,0,.2,1);
}
.gg-sticky-atc.gg-atc-show{transform:none}
.gg-sticky-atc .gg-atc-meta{flex:1 1 auto;min-width:0}
.gg-sticky-atc .gg-atc-name{
  display:block;font-family:var(--gg-serif);font-size:14px;line-height:1.25;color:var(--gg-ink);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.gg-sticky-atc .gg-atc-price{display:block;font-size:13px;color:var(--gg-gold-text);margin-top:2px}
.gg-sticky-atc .gg-atc-btn{
  flex:0 0 auto;min-height:48px;padding:0 24px;border:0;cursor:pointer;
  background:var(--gg-ink);color:var(--gg-ivory);
  font-family:var(--gg-sans);font-size:11.5px;letter-spacing:.16em;text-transform:uppercase;
  transition:background .2s ease;
}
.gg-sticky-atc .gg-atc-btn:hover{background:var(--gg-gold-deep)}
.gg-sticky-atc .gg-atc-btn:focus-visible{outline:2px solid var(--gg-gold-text);outline-offset:2px}

@media (max-width:880px){
  body.gg-has-atc .gg-sticky-atc{display:flex}
  /* keep back-to-top clear of the bar instead of hidden behind it */
  body.gg-has-atc .gg-top{bottom:82px}
}
@media (prefers-reduced-motion:reduce){
  .gg-sticky-atc{transition:none}
}

/* The consent banner and the sticky bar compete for the bottom strip, and the banner
   must stay reachable. Yield to it rather than stacking on top. */
body.gg-consent-open .gg-sticky-atc{transform:translateY(110%);pointer-events:none}
body.gg-has-atc.gg-consent-open .gg-top{bottom:14px}


/* ---------------------------------------------------------------------------
 * Breathing room around the logo. The mark sat flush against the header edge
 * and hard up against the nav / MENU button, which reads cramped on a luxury
 * layout. Space it on all four sides, tightening as the viewport narrows.
 * ------------------------------------------------------------------------- */
/* Kadence wraps the mark in `a.brand`, NOT `.custom-logo-link`, and renders a
   SECOND branding block (.mobile-site-branding) for the mobile header — the
   desktop one is still in the DOM at 0x0. Both have to be styled. */
body.gg-lux .site-branding,
body.gg-lux .header-branding{
  padding:16px 28px;
  display:flex;align-items:center;
}
body.gg-lux .site-branding a.brand,
body.gg-lux .header-branding a.brand{
  display:inline-flex;align-items:center;
  padding:4px 6px;
  transition:opacity .25s ease;
}
body.gg-lux .site-branding a.brand:hover{opacity:.82}
body.gg-lux .site-branding a.brand:focus-visible{
  outline:2px solid var(--gg-gold-text);outline-offset:4px;
}
/* the header shrinks on scroll — let the padding shrink with it so the
   sticky bar doesn't stay unnecessarily tall */
body.gg-lux.gg-scrolled .site-branding,
body.gg-lux.gg-scrolled .header-branding{padding-top:10px;padding-bottom:10px}

@media (max-width:1024px){
  body.gg-lux .site-branding,
  body.gg-lux .header-branding{padding:14px 20px}
}
@media (max-width:880px){
  body.gg-lux .site-branding,
  body.gg-lux .mobile-site-branding{padding:10px 14px}
  body.gg-lux .site-branding a.brand{padding:3px 5px}
}
@media (max-width:420px){
  body.gg-lux .site-branding,
  body.gg-lux .mobile-site-branding{padding:9px 10px}
}


/* ---------------------------------------------------------------------------
 * Product description typography.
 * Kadence applies text-transform:capitalize to headings, which turned the
 * sentence-case copy in the DB into "Is This The Right One For You?" — Title
 * Case On Every Word reads wrong for this brand. The stored text is correct;
 * only the transform is at fault, so undo the transform rather than the copy.
 * h3 also inherited the h2 size, leaving the section structure flat.
 * ------------------------------------------------------------------------- */
body.gg-lux .woocommerce-Tabs-panel--description h2,
body.gg-lux .woocommerce-Tabs-panel--description h3,
body.gg-lux #tab-description h2,
body.gg-lux #tab-description h3,
body.gg-lux .woocommerce-product-details__short-description strong{
  text-transform:none!important;
}
body.gg-lux .woocommerce-Tabs-panel--description h2,
body.gg-lux #tab-description h2{
  font-size:clamp(24px,2.4vw,31px);line-height:1.2;margin:0 0 18px;
}
body.gg-lux .woocommerce-Tabs-panel--description h3,
body.gg-lux #tab-description h3{
  font-size:19px;line-height:1.3;letter-spacing:.01em;
  margin:34px 0 10px;padding-top:18px;
  border-top:1px solid var(--gg-hairline);   /* gives each section a visible start */
  color:var(--gg-ink);
}
body.gg-lux .woocommerce-Tabs-panel--description h3:first-of-type,
body.gg-lux #tab-description h3:first-of-type{border-top:0;padding-top:0}
body.gg-lux .woocommerce-Tabs-panel--description p,
body.gg-lux #tab-description p{max-width:68ch;line-height:1.72}
body.gg-lux .woocommerce-Tabs-panel--description ul,
body.gg-lux #tab-description ul{max-width:68ch;line-height:1.7;padding-left:1.1em}
body.gg-lux .woocommerce-Tabs-panel--description li,
body.gg-lux #tab-description li{margin-bottom:7px}

/* Short description: the above-fold summary. Make the spec bullets scan. */
body.gg-lux .woocommerce-product-details__short-description ul{
  list-style:none;margin:14px 0;padding:0;
}
body.gg-lux .woocommerce-product-details__short-description li{
  position:relative;padding-left:20px;margin-bottom:7px;
  font-size:14.5px;line-height:1.5;color:var(--gg-muted);
}
body.gg-lux .woocommerce-product-details__short-description li::before{
  content:"";position:absolute;left:2px;top:.62em;
  width:5px;height:5px;transform:rotate(45deg);background:var(--gg-gold);
}
body.gg-lux .woocommerce-product-details__short-description li strong{color:var(--gg-ink)}
body.gg-lux .woocommerce-product-details__short-description p:last-child strong{
  color:var(--gg-gold-text);letter-spacing:.02em;
}


/* ---------------------------------------------------------------------------
 * Mobile CLS on variable product pages measured 0.2434 — a Core Web Vitals
 * failure. Cause is not a missing image dimension: .entry-summary grows +325px
 * at ~2.7s when WooCommerce populates FORM.variations_form. Reserve the space
 * up front so the growth has nowhere to push.
 * ------------------------------------------------------------------------- */
/* Reserve the variation form's height. Note `single-product` is a class on <body>, so
   `body.gg-lux .single-product` (with a space) matches nothing — that was the first
   attempt and it silently did nothing.
   DO NOT add `.single_variation_wrap{display:none}` here. I tried it: it does NOT fix the
   measured mobile CLS (that turned out to be a full page RELOAD tearing down the DOM, not
   an element resizing), and on desktop the rule was still computing `display:none`, which
   puts the add-to-cart button at risk. Never gamble the buy button on a metric fix. */
body.gg-lux.single-product form.variations_form{min-height:504px}
@media (min-width:881px){
  body.gg-lux.single-product form.variations_form{min-height:430px}
}
/* simple products have no variation table — don't reserve space they never use */
body.gg-lux.single-product form.cart:not(.variations_form){min-height:0}

/* Cart reassurance + continue-shopping */
body.gg-lux .gg-trust-cart{
  margin:26px 0 6px;padding-top:22px;border-top:1px solid var(--gg-hairline);
  display:flex;flex-wrap:wrap;gap:14px 26px;justify-content:center;
}
body.gg-lux .gg-cart-back{
  margin:10px 0 0;text-align:center;
  font-size:12px;letter-spacing:.14em;text-transform:uppercase;
}
body.gg-lux .gg-cart-back a{color:var(--gg-muted);text-decoration:none}
body.gg-lux .gg-cart-back a:hover{color:var(--gg-gold-text);text-decoration:underline}

/* Shop cards: Kadence renders the short description into its own .product-excerpt, so the
   `woocommerce_short_description` filter never touches it. Drop the spec bullets here —
   they belong on the product page — and clamp the lead paragraph. */
body.gg-lux ul.products li.product .product-excerpt ul{display:none}
body.gg-lux ul.products li.product .product-excerpt p{
  margin:0;font-size:13.5px;line-height:1.55;color:var(--gg-muted);
  display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;
}
body.gg-lux ul.products li.product .product-excerpt p:last-child{margin-top:8px}

body.gg-lux .gg-loop-excerpt{
  margin:6px 0 10px;font-size:13.5px;line-height:1.55;color:var(--gg-muted);
  display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;
}
body.gg-lux ul.products li.product{display:flex;flex-direction:column}
body.gg-lux ul.products li.product .button{margin-top:auto}


/* ---------------------------------------------------------------------------
 * Product gallery CLS (measured 0.2255 on mobile, once the Guest Mode reload
 * was removed and the number became real).
 *
 * Cause: the gallery is 387px at 3.9s and 1271px at 5.5s — the images enter the
 * DOM late (lazy-load), pushing .entry-summary from y=618 to y=1502. The three
 * .woocommerce-product-gallery__image WRAPPERS *are* in the server HTML.
 *
 * ⛔ REVERTED — DO NOT RE-ADD. I tried:
 *     .woocommerce-product-gallery__image{aspect-ratio:1/1}
 *     .woocommerce-product-gallery__image > a, ... img{height:100%;object-fit:cover}
 *   It did NOT change the CLS (still 0.2255) and it made the gallery TALLER,
 *   1271px -> 2405px, with an intermediate 1944px image. A net regression.
 *
 * Still unresolved. The real cause is that LiteSpeed lazy-load holds the gallery
 * images out of the DOM until ~5s; reserving space on the wrappers does not help
 * because the wrappers themselves are what resize. The correct fix is to exclude
 * the product-gallery images from LiteSpeed lazy-load (media-lazy_exc — note it
 * wants the filename STEM, no extension), which is a cache-config change to make
 * deliberately rather than another CSS guess.
 */


/* ---------------------------------------------------------------------------
 * Product gallery: kill the JS-locked height.
 *
 * WooCommerce's gallery script measures the gallery while its slides are still
 * stacked and writes the result inline — `style="…height: 1270.59px"`. FlexSlider
 * then clips to a single 324px slide, but the inline height stays. Net effect on
 * every product page:
 *   - in-flow content needs 389px (324 slider + 65 thumbs) but the box is 1271px,
 *     leaving ~880px of dead whitespace under the gallery;
 *   - the 387px -> 1271px jump when that inline height lands pushed .entry-summary
 *     from y=618 to y=1502, which is the whole of the measured 0.2255 mobile CLS.
 * Overriding to auto fixes both. !important is required: the height is inline.
 * ------------------------------------------------------------------------- */
body.gg-lux.single-product .woocommerce-product-gallery{height:auto!important}


/* ---------------------------------------------------------------------------
 * Gallery layout repair, required by the height:auto override above.
 *
 * The theme pulls the thumbnail strip UP with a negative margin, which only
 * worked because WooCommerce's inline height left ~880px of slack underneath.
 * With the box sized to its content the strip landed ON TOP of the main image
 * (thumbs began at y=506 while the slider still ran to y=538). Clear the pull
 * and give the strip real separation.
 * ------------------------------------------------------------------------- */
body.gg-lux.single-product .woocommerce-product-gallery .flex-control-thumbs,
body.gg-lux.single-product .woocommerce-product-gallery ol.flex-control-nav{
  margin-top:14px!important;
  position:relative;
  z-index:3;
  gap:8px;
}
body.gg-lux.single-product .woocommerce-product-gallery .flex-control-thumbs li{
  margin-top:0!important;
}
body.gg-lux.single-product .woocommerce-product-gallery .woocommerce-product-gallery__wrap{
  margin-top:0!important;
}

/* The "move to view" hint is a POINTER affordance — on a touch screen there is no
   hover, and it was sitting over the thumbnails. Anchor it to the image, and hide
   it wherever hover isn't available. */
body.gg-lux.single-product .gg-view-hint{bottom:auto;top:calc(324px - 46px)}
@media (hover:none),(pointer:coarse),(max-width:880px){
  body.gg-lux .gg-view-hint,
  body.gg-lux .gg-sheen{display:none!important}
}


/* ---------------------------------------------------------------------------
 * Category archive intro. The description ran the full 1242px container as a
 * single centred block at 18px — a ~180-character measure, far past the ~75 that
 * stays readable, and it sat flush under the title with no separation.
 * ------------------------------------------------------------------------- */
body.gg-lux .archive-description,
body.gg-lux .term-description,
body.gg-lux .taxonomy-description{
  max-width:62ch;
  margin:0 auto;
  padding:26px 20px 4px;
  text-align:center;
  font-size:16.5px;
  line-height:1.75;
  letter-spacing:.005em;
  color:var(--gg-muted);
}
/* The archive hero carries a DARK background IMAGE — every ancestor is
   background-color:transparent, so a contrast calculation against the computed
   background lies (it reported 5.07 against the body's #f7f7f7 while the text was
   actually sitting on near-black). The title is already ivory; match it. */
body.gg-lux .entry-hero .archive-description,
body.gg-lux .entry-hero .term-description,
body.gg-lux .product-archive-hero-section .archive-description{
  color:rgba(250,248,244,.86);
}
body.gg-lux .entry-hero .archive-description a,
body.gg-lux .product-archive-hero-section .archive-description a{
  color:var(--gg-gold);text-decoration-color:rgba(201,165,95,.55);
}
body.gg-lux .entry-hero .archive-description a:hover{color:#e2c88c}
body.gg-lux .entry-hero .archive-description strong{color:#fff}
body.gg-lux .archive-description p{margin:0 0 14px}
body.gg-lux .archive-description p:last-child{margin-bottom:0}
body.gg-lux .archive-description strong{color:var(--gg-ink);font-weight:500}
/* a hairline flourish under the intro, so it reads as an opening rather than stray text */
body.gg-lux .archive-description::after{
  content:"";display:block;width:46px;height:1px;margin:22px auto 0;
  background:linear-gradient(90deg,transparent,var(--gg-gold),transparent);
}
@media (max-width:880px){
  body.gg-lux .archive-description,
  body.gg-lux .term-description{padding:20px 18px 2px;font-size:15.5px;line-height:1.7}
  body.gg-lux .archive-description::after{margin-top:18px}
}


/* ---------------------------------------------------------------------------
 * Gallery re-init shift (the last of the product-page CLS).
 *
 * Measured: gallery sits correctly at 432px, then at ~10.2s jumps to 1317px and
 * snaps back 120ms later — two shifts, 0.2255 down and 0.1808 up. Cause is
 * FlexSlider re-initialising: it unwraps ul.slides out of .flex-viewport for a
 * frame, so all three slides stack, then re-wraps them.
 *
 * While the slide list is a DIRECT child of the gallery it is un-wrapped, i.e.
 * exactly the moment that balloons. Show only the first slide then. The rule
 * self-disables the instant FlexSlider wraps it back inside .flex-viewport.
 *
 * Gated on html.gg-js (set inline in <head>, before paint): with JavaScript off
 * the stacked list IS the gallery and must stay fully visible.
 * ------------------------------------------------------------------------- */
html.gg-js body.gg-lux.single-product
  .woocommerce-product-gallery > .woocommerce-product-gallery__wrapper > *:not(:first-child){
  display:none;
}
/* The balloon actually happens INSIDE .flex-viewport: caught in the act, the viewport was
   1209px tall holding three 600px slides, before FlexSlider set its final 324px. Slides are
   square, so pinning the viewport to a 1:1 ratio makes the transient height identical to the
   settled one and there is nothing left to shift. If FlexSlider writes an inline height that
   value simply wins, and it is the correct one anyway. */
html.gg-js body.gg-lux.single-product .woocommerce-product-gallery .flex-viewport{
  aspect-ratio:1/1;
  overflow:hidden;
}


/* ---------------------------------------------------------------------------
 * Contrast fixes found by an alpha-aware audit (the naive version had missed
 * these: it treated any rgba() background as opaque and never flattened a
 * translucent foreground over it).
 * ------------------------------------------------------------------------- */

/* Footer copyright was rgba(250,248,244,.42) on #0f0e0c = 3.92:1, under the 4.5
   needed at 11px. Raising the alpha is enough; the colour stays on-brand. */
body.gg-lux .gg-copyright,
body.gg-lux .gg-copyright p{color:rgba(250,248,244,.62)}

/* The "Consider X instead" cross-sell links sit on white inside the description
   tab and inherited --gg-gold (#d0a95e) = 2.21:1. --gg-gold-text exists precisely
   for gold on a light background; use it and keep the underline as a second cue. */
body.gg-lux .woocommerce-Tabs-panel--description a,
body.gg-lux #tab-description a,
body.gg-lux .woocommerce-product-details__short-description a{
  color:var(--gg-gold-text);
  text-decoration:underline;
  text-underline-offset:2px;
  text-decoration-thickness:1px;
}
body.gg-lux .woocommerce-Tabs-panel--description a:hover,
body.gg-lux #tab-description a:hover{color:var(--gg-ink)}


/* ---------------------------------------------------------------------------
 * Kadence applies text-transform:capitalize to headings SITEWIDE, not just in the
 * product description tab (which is all my earlier fix covered). Every page was
 * rendering its sentence-case copy as Title Case On Every Word — "Where We Ship",
 * "How To Clean Ethical Jewelry", "What We Use", "Caring For It". Capitalising
 * function words like For / To / And / With reads wrong for this brand, and the
 * stored copy is already correct, so undo the transform rather than the text.
 *
 * `:not([class*="gg-"])` protects the custom components (.gg-sec-title etc.),
 * which set their own casing deliberately.
 * ------------------------------------------------------------------------- */
body.gg-lux .entry-content h1:not([class*="gg-"]),
body.gg-lux .entry-content h2:not([class*="gg-"]),
body.gg-lux .entry-content h3:not([class*="gg-"]),
body.gg-lux .entry-content h4:not([class*="gg-"]),
body.gg-lux .entry-content h5:not([class*="gg-"]),
body.gg-lux .entry-content h6:not([class*="gg-"]),
body.gg-lux .site-main article h2:not([class*="gg-"]),
body.gg-lux .site-main article h3:not([class*="gg-"]){
  text-transform:none!important;
}


/* ---------------------------------------------------------------------------
 * Line length on long-form pages. Measured 137-167 characters per line across
 * /materials/, /about-us/, /shipping-policy/, /terms/ and the FAQ — roughly twice
 * the ~75 that stays comfortable to read. Constrain the measure and centre the
 * column. Kadence row/column layouts set their own widths deliberately, and the
 * custom .gg-* components are already constrained, so both are excluded.
 *
 * ⛔ Use a FIXED width here, not `ch`. `ch` resolves against each element's OWN
 * font-size, so 68ch was 710px on a 17px paragraph but 1102px on a 32px Cormorant
 * heading — the headings sat 196px left of the body text and the column lost its
 * left edge entirely. One column width for every element in the block.
 * ------------------------------------------------------------------------- */
body.gg-lux .entry-content > p,
body.gg-lux .entry-content > ul,
body.gg-lux .entry-content > ol,
body.gg-lux .entry-content > h2:not([class*="gg-"]),
body.gg-lux .entry-content > h3:not([class*="gg-"]),
body.gg-lux .entry-content > h4:not([class*="gg-"]),
body.gg-lux .entry-content > blockquote,
body.gg-lux .entry-content > figure.wp-block-image{
  max-width:44rem;
  margin-left:auto;
  margin-right:auto;
}
/* NOTE: do NOT add `.wp-block-kadence-column p.kt-adv-heading{max-width:...}` here.
   Kadence appends a unique id to that class (`kt-adv-heading1184_53d9a8-c3`), so a bare
   `.kt-adv-heading` selector matches nothing — and if it were corrected to
   `[class*="kt-adv-heading"]` it would catch the decorative drop-cap letters (M / S / D on
   /materials/), which have no auto margins and would jump left. Text inside Kadence columns
   is already narrow because the columns constrain it. */
body.gg-lux .entry-content .wp-block-kadence-column li{
  max-width:66ch;
}
@media (max-width:880px){
  body.gg-lux .entry-content > p,
  body.gg-lux .entry-content > ul,
  body.gg-lux .entry-content > ol,
  body.gg-lux .entry-content > h2:not([class*="gg-"]),
  body.gg-lux .entry-content > h3:not([class*="gg-"]),
  body.gg-lux .entry-content > h4:not([class*="gg-"]){max-width:100%}
}


/* ---------------------------------------------------------------------------
 * 404 page. Every other template opens with the dark hero band; this one dropped
 * straight from the header into a bare white card holding a Title-Cased theme
 * heading and a 1178px unstyled search input — beside the on-brand recovery block
 * below it, the mismatch was the most obvious visual break on the site.
 * Give the error block the same centred, quiet treatment as the rest.
 * ------------------------------------------------------------------------- */
body.error404 .content-area{background:var(--gg-paper)}
body.error404 section.error{
  max-width:640px;
  margin:0 auto;
  padding:76px 24px 34px;
  text-align:center;
  background:none;
  border:0;
  box-shadow:none;
}
body.error404 section.error .page-title,
body.error404 section.error h1{
  font-family:var(--gg-serif);
  font-size:clamp(32px,4.6vw,52px);
  line-height:1.12;
  font-weight:400;
  text-transform:none!important;   /* theme title-cases it */
  color:var(--gg-ink);
  margin:0 0 16px;
}
body.error404 section.error p{
  font-size:15.5px;
  line-height:1.7;
  color:var(--gg-muted);
  max-width:46ch;
  margin:0 auto 26px;
}
/* search form: match the rest of the UI instead of the browser default */
body.error404 .search-form{
  display:flex;
  gap:0;
  max-width:460px;
  margin:0 auto;
  border:1px solid var(--gg-hairline);
  background:#fff;
}
body.error404 .search-form label,
body.error404 .search-form .search-field{flex:1 1 auto;margin:0}
body.error404 .search-form input[type="search"],
body.error404 .search-form .search-field{
  width:100%;
  border:0;
  background:transparent;
  padding:15px 18px;
  font-family:var(--gg-sans);
  font-size:15px;          /* 16px-ish keeps iOS from zooming on focus */
  color:var(--gg-ink);
}
body.error404 .search-form input[type="search"]:focus{outline:none}
body.error404 .search-form:focus-within{border-color:var(--gg-gold-text)}
body.error404 .search-form button,
body.error404 .search-form input[type="submit"]{
  flex:0 0 auto;
  border:0;
  cursor:pointer;
  background:var(--gg-ink);
  color:var(--gg-ivory);
  padding:0 26px;
  min-height:50px;
  font-family:var(--gg-sans);
  font-size:11.5px;
  letter-spacing:.18em;
  text-transform:uppercase;
  transition:background .2s ease;
}
body.error404 .search-form button:hover,
body.error404 .search-form input[type="submit"]:hover{background:var(--gg-gold-deep)}
/* the recovery block already carries the brand; just tighten the seam above it */
body.error404 .gg-404{padding-top:8px}
@media (max-width:880px){
  body.error404 section.error{padding:52px 20px 26px}
  body.error404 .search-form{max-width:100%}
}

/* the error block sat in a tall empty band; tighten the seams around it */
body.error404 .content-area{padding-top:0;padding-bottom:0}
body.error404 .content-container{padding-top:0;padding-bottom:0}
body.error404 .content-wrap{padding-bottom:0}


/* ---------------------------------------------------------------------------
 * Single-post reading measure. Measured: 16.5px body in a 704px column renders
 * ~92 characters per line on desktop — well past the 45-75 that stays readable,
 * and the 1.85 leading makes the block feel airy while running 16,000px long.
 * The 44rem cap set for the static pages was calibrated at 18px; posts are
 * smaller, so the same column holds far more characters. Size up slightly and
 * tighten the measure to land near 70.
 * On mobile the same text sat at ~42 chars because 32px of side padding narrows
 * a 390px screen to 326px; trim the gutter rather than shrink the type.
 * ------------------------------------------------------------------------- */
body.gg-lux.single-post .entry-content > p,
body.gg-lux.single-post .entry-content > ul,
body.gg-lux.single-post .entry-content > ol,
body.gg-lux.single-post .entry-content > blockquote{
  font-size:17.5px;
  line-height:1.75;
  max-width:38rem;
}
body.gg-lux.single-post .entry-content > h2{max-width:38rem}
body.gg-lux.single-post .entry-content > h3{max-width:38rem}

@media (max-width:880px){
  body.gg-lux.single-post .entry-content > p,
  body.gg-lux.single-post .entry-content > ul,
  body.gg-lux.single-post .entry-content > ol,
  body.gg-lux.single-post .entry-content > blockquote{
    font-size:16.5px;
    line-height:1.7;
    max-width:100%;
  }
  /* Mobile gutters stack four deep: .content-container 20px + .site-main +
   * .entry-content-wrap 24px, less the -16px side margin on .entry. Padding
   * .site-main here ADDED a fifth layer and cut the column to 294px, so trim the
   * innermost wrapper instead - the only one that is purely the article's own inset. */
  body.gg-lux.single-post .entry-content-wrap{padding-left:12px;padding-right:12px}

  /* Static pages carry 18px body copy, which in a 342px column is only ~41 characters
   * per line - short enough that the eye returns more often than it reads. Same gutter
   * trim, and step the type down to the size the posts use on this breakpoint. */
  body.gg-lux.page .entry-content-wrap{padding-left:12px;padding-right:12px}
  body.gg-lux.page .entry-content > p,
  body.gg-lux.page .entry-content > ul,
  body.gg-lux.page .entry-content > ol{font-size:16.5px;line-height:1.7}
}


/* ---------------------------------------------------------------------------
 * Dropdown affordance. Every <select> on the site computes appearance:none with
 * background-image:none - the theme suppresses the native arrow and never draws
 * a replacement, so the shop sorter AND the Material / Size selectors on every
 * variable product render as flat rectangles with no sign they open. Those two
 * sit on the buy path: both must be chosen before Add to Cart unlocks.
 * Draw the chevron ourselves and give the control real hover/focus states.
 * Specificity here (0,3,2) intentionally beats the earlier
 * `.woocommerce-ordering select` rule, whose `background:` shorthand would
 * otherwise reset background-image back to none.
 * ------------------------------------------------------------------------- */
body.gg-lux select:not([multiple]):not([size]){
  -webkit-appearance:none;-moz-appearance:none;appearance:none;
  background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%23a8853f' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  background-repeat:no-repeat;
  background-position:right 14px center;
  background-size:10px 6px;
  background-color:var(--gg-paper);
  padding-right:38px;
  border:1px solid var(--gg-hairline);
  border-radius:0;
  font-family:var(--gg-sans);
  font-weight:500;
  color:var(--gg-text);
  cursor:pointer;
  transition:border-color .25s var(--gg-ease),box-shadow .25s var(--gg-ease);
}
body.gg-lux select:not([multiple]):not([size]):hover{border-color:var(--gg-gold)}
body.gg-lux select:not([multiple]):not([size]):focus-visible{
  outline:none;
  border-color:var(--gg-gold-deep);
  box-shadow:0 0 0 3px rgba(201,165,95,.22);
}


/* ---------------------------------------------------------------------------
 * Cart thumbnail on mobile. Woo stacks each cell full-width, and the product
 * image stays at its desktop 60px in a 348px cell - a sixth of the source and,
 * with dark-background photography, an unreadable dark square. Give the piece
 * the room it needs to be recognised before the customer decides to keep it.
 * ------------------------------------------------------------------------- */
@media (max-width:880px){
  body.gg-lux .woocommerce-cart-form .cart_item td.product-thumbnail{text-align:center;padding-top:14px;padding-bottom:6px}
  body.gg-lux .woocommerce-cart-form .cart_item td.product-thumbnail img{width:120px;height:120px;max-width:120px}
}


/* ---------------------------------------------------------------------------
 * Product description panel: one column, one axis. The panel carries the
 * `entry-content` class, so the sitewide 44rem rule centred its paragraphs with
 * auto margins - but the `#tab-description h2/h3` rules above it (an ID selector,
 * higher specificity) kept every heading pinned to the left edge. Desktop showed
 * headings at x=94, paragraphs at x=328 and the h3 divider rules ending at 797:
 * three different widths in one block. Same ID specificity here so this wins;
 * left/right margins only, so the vertical rhythm those rules set is untouched.
 * ------------------------------------------------------------------------- */
body.gg-lux #tab-description > h2,
body.gg-lux #tab-description > h3,
body.gg-lux #tab-description > h4,
body.gg-lux #tab-description > p,
body.gg-lux #tab-description > ul,
body.gg-lux #tab-description > ol,
body.gg-lux #tab-description > blockquote{
  max-width:44rem;margin-left:auto;margin-right:auto;
}
/* Woo prints its own <h2>Description</h2> as the panel's first child, directly under
   a tab already labelled "Description". The product copy has its own h2 next. */
body.gg-lux #tab-description > h2:first-child{display:none}


/* ---------------------------------------------------------------------------
 * Product-card price alignment. The title reserves two lines, but the category
 * label above it wraps to two on the pendant cards ("LAB DIAMOND PENDANT
 * NECKLACES") and pushed title + price 17px lower than on the ring cards beside
 * them. Make the card a column and pin the price to the bottom: the grid already
 * stretches cards to equal height, so every price sits on the same line whatever
 * the label and title do.
 * ------------------------------------------------------------------------- */
.gg-card{display:flex;flex-direction:column}
.gg-card-media{flex:0 0 auto}
.gg-card-body{display:flex;flex-direction:column;flex:1 1 auto}
.gg-card-price{margin-top:auto;padding-top:8px}


/* ---------------------------------------------------------------------------
 * Mobile product breadcrumb. "Home / Lab Diamond Rings & Pendants / Lab Diamond
 * Rings / Eternal 1CT Lab Diamond Solitaire Ring" ran to three lines on a 390px
 * screen before the gallery even started. Reduce it to a single back-link to the
 * direct parent category - the only crumb a phone user acts on. Selecting "the
 * span right before the current-page crumb" needs :has(); browsers without it
 * keep the full trail, which is the safe fallback. Desktop is untouched.
 * ------------------------------------------------------------------------- */
@media (max-width:880px){
  body.gg-lux.single-product .kadence-breadcrumb-container > span,
  body.gg-lux.single-product .kadence-breadcrumb-container > .bc-delimiter{display:none}
  body.gg-lux.single-product .kadence-breadcrumb-container > span:has(+ .bc-delimiter + .kadence-bread-current){display:inline}
  body.gg-lux.single-product .kadence-breadcrumb-container > span:has(+ .bc-delimiter + .kadence-bread-current) a::before{content:"\2190\00a0\00a0"}
}


/* ---------------------------------------------------------------------------
 * Add-to-cart row. Woo floats the quantity box and the button side by side; on
 * mobile an earlier rule gave the qty INPUT min-width:100% while its container
 * stayed 114px, so the "+" stepper was pushed out over the button and the
 * size-guide toggle rendered inside the same bordered box. Lay the row out
 * explicitly: qty + button as one flex row on desktop, stacked full-width on
 * phones, size guide and trust list always on their own rows beneath.
 * ------------------------------------------------------------------------- */
body.gg-lux form.cart .woocommerce-variation-add-to-cart,
body.gg-lux form.cart:not(.variations_form){
  display:flex;flex-wrap:wrap;align-items:stretch;gap:12px;
}
body.gg-lux form.cart .quantity{
  flex:0 0 auto;display:inline-flex;align-items:stretch;width:auto;margin:0;
  border:1px solid var(--gg-hairline);background:var(--gg-paper);
}
body.gg-lux form.cart .quantity .minus,
body.gg-lux form.cart .quantity .plus{
  width:44px;height:auto;min-height:56px;border:0;background:transparent;
  font-size:18px;color:var(--gg-text);cursor:pointer;
}
body.gg-lux form.cart .quantity .qty{
  width:52px;min-width:0;height:auto;min-height:56px;border:0;border-left:1px solid var(--gg-hairline);border-right:1px solid var(--gg-hairline);
  padding:0 4px;text-align:center;font-size:16px;background:transparent;
}
body.gg-lux form.cart .single_add_to_cart_button{flex:1 1 220px;margin:0!important;min-height:56px}
body.gg-lux form.cart .gg-size-guide,
body.gg-lux form.cart .gg-trust,
body.gg-lux form.cart .woocommerce-variation{flex:0 0 100%}
@media (max-width:880px){
  body.gg-lux form.cart .quantity{flex:0 0 100%;justify-content:space-between}
  body.gg-lux form.cart .quantity .qty{flex:1 1 auto}
  body.gg-lux form.cart .single_add_to_cart_button{flex:0 0 100%}
}

/* Header cart count: a "0" badge on every page is a number that says nothing.
   Kadence marks the empty state, so hide the badge until there is something in it. */
body.gg-lux .header-cart-total.header-cart-is-empty-true{display:none}

/* The 01/02/03 numerals were removed from the markup; keep the rule inert but present
   so any cached HTML that still carries the span renders nothing. */
.gg-ed-num{display:none}


/* ---------------------------------------------------------------------------
 * Editorial band, split layout. The three "standards" used to sit as three text
 * columns on a dark slab - the one section of the homepage with no image at all.
 * Now a portrait (dark velvet, the pieces worn) on the left inside an offset gold
 * hairline frame, and the three points stacked on the right with their dividers.
 * `.gg-editorial-split` is only added when the image exists; without it the
 * original three-column grid still applies unchanged.
 * ------------------------------------------------------------------------- */
.gg-editorial-split .gg-editorial-inner{
  display:grid;grid-template-columns:minmax(0,5fr) minmax(0,6fr);gap:72px;align-items:center;
  padding-top:104px;padding-bottom:104px;
}
.gg-ed-figure{position:relative;margin:0;max-width:520px;justify-self:end;width:100%}
.gg-ed-figure .gg-ed-img{
  display:block;width:100%;height:auto;aspect-ratio:4/5;object-fit:cover;object-position:60% 30%;
  filter:saturate(.92) contrast(1.04);
}
.gg-ed-frame{
  position:absolute;inset:0;transform:translate(16px,16px);
  border:1px solid rgba(201,165,95,.55);pointer-events:none;
  transition:transform .8s var(--gg-ease);
}
.gg-ed-figure:hover .gg-ed-frame{transform:translate(10px,10px)}
.gg-ed-figure::after{           /* soft floor shadow, keeps the photo from floating */
  content:"";position:absolute;left:8%;right:8%;bottom:-18px;height:36px;
  background:radial-gradient(closest-side,rgba(0,0,0,.55),transparent);z-index:-1;
}
.gg-editorial-split .gg-sec-head-left{text-align:left;margin:0 0 26px}
.gg-editorial-split .gg-ed-grid{grid-template-columns:1fr;gap:0;margin-top:0}
.gg-editorial-split .gg-ed-item{padding:26px 0}
.gg-editorial-split .gg-ed-item:last-child{padding-bottom:0}
.gg-editorial-split .gg-ed-item p{max-width:46ch}
@media (max-width:1024px){
  .gg-editorial-split .gg-editorial-inner{gap:44px}
}
@media (max-width:880px){
  .gg-editorial-split .gg-editorial-inner{grid-template-columns:1fr;gap:40px;padding-top:64px;padding-bottom:64px}
  .gg-ed-figure{max-width:none;justify-self:stretch;width:calc(100% - 16px)}
  .gg-ed-figure .gg-ed-img{aspect-ratio:5/4;object-position:60% 25%}
  .gg-editorial-split .gg-ed-item{padding:22px 0}
}

/* ---------------------------------------------------------------------------
 * Journal row: three guides on the light ground between two dark bands.
 * ------------------------------------------------------------------------- */
.gg-journal{padding-top:96px}
.gg-journal-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:28px;margin-top:44px}
.gg-journal-card{
  display:flex;flex-direction:column;text-decoration:none;background:var(--gg-paper);
  border:1px solid var(--gg-hairline);position:relative;
  transition:transform .45s var(--gg-ease),box-shadow .45s var(--gg-ease),border-color .45s var(--gg-ease);
}
.gg-journal-card:hover{transform:translateY(-4px);box-shadow:var(--gg-shadow);border-color:rgba(201,165,95,.45)}
.gg-journal-media{display:block;aspect-ratio:3/2;overflow:hidden;background:var(--gg-ink-3)}
.gg-journal-media img{width:100%;height:100%;object-fit:cover;display:block;transition:transform 1.2s var(--gg-ease)}
.gg-journal-card:hover .gg-journal-media img{transform:scale(1.04)}
.gg-journal-body{display:flex;flex-direction:column;flex:1 1 auto;padding:22px 22px 24px}
.gg-journal-cat{font-size:10.5px;letter-spacing:.24em;text-transform:uppercase;color:var(--gg-gold-text);margin-bottom:10px}
.gg-journal-title{font-family:var(--gg-serif);font-size:21px;line-height:1.25;color:var(--gg-ink);font-weight:500;margin-bottom:10px}
.gg-journal-ex{font-size:14px;line-height:1.65;color:var(--gg-muted);margin-bottom:18px}
.gg-journal-more{
  margin-top:auto;font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--gg-gold-text);
  border-bottom:1px solid rgba(201,165,95,.4);padding-bottom:4px;align-self:flex-start;
}
.gg-sec-cta{text-align:center;margin:44px 0 0}
@media (max-width:880px){
  .gg-journal{padding-top:64px}
  .gg-journal-grid{grid-template-columns:1fr;gap:18px;margin-top:30px}
  .gg-journal-title{font-size:19px}
  .gg-sec-cta{margin-top:30px}
}
/* The "All articles" button was rendering flush against the cards: a sitewide
   paragraph reset outranks .gg-sec-cta. Section-scoped and explicit. */
.gg-journal p.gg-sec-cta{margin:44px 0 0!important}
@media (max-width:880px){.gg-journal p.gg-sec-cta{margin-top:30px!important}}
