/* =========================================================================
   PCE pc-theme — Dark + Gold "row-apple" styling for shop list & product pages.
   Loaded after newerp-shop.css; scoped to .pc-theme so it only restyles the
   shop list (.pc-collection) and product detail (.pc-product).
   Mirrors the previous Commerce7 collection / product templates.
   Responsive: desktop / iPad / mobile.
   ========================================================================= */

/* =========================================================================
   GLOBAL UNIFICATION — remap the plugin's own palette/buttons to pc-theme so
   every page (cart, checkout, account, club, auth, tasting) matches the
   dark + gold "row-apple" aesthetic without editing each template.
   ========================================================================= */
:root{
  --newerp-bg:            #171717;
  --newerp-bg-card:       #1b1b1b;
  --newerp-bg-input:      #1f1f1f;
  --newerp-text:          #f3f5f9;
  --newerp-text-muted:    #a8b0bf;
  --newerp-primary:       #B19B6A;
  --newerp-primary-hover: #c4ab7d;
  --newerp-primary-text:  #1a1a1a;
  --newerp-accent:        #B19B6A;
  --newerp-border:        #2a2a2a;
  --newerp-radius:        14px;
  --newerp-radius-sm:     10px;
  --newerp-shadow:        0 14px 40px rgba(0,0,0,.55);
  --newerp-font:          "SF Pro Text","Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Arial,sans-serif;
}

/* Headings → display serif-ish font, gold accents (cart/checkout/account/club/tasting/auth) */
.newerp-cart h1, .newerp-cart h2,
.newerp-checkout h1, .newerp-checkout h2,
.newerp-account h1, .newerp-account h2,
.newerp-club h1, .newerp-club h2,
.newerp-tasting h1, .newerp-tasting h2{
  font-family:"SF Pro Display","Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Arial,sans-serif;
  letter-spacing:-.01em;
}

/* Buttons → gold gradient pill, matching .pc-btn */
.newerp-btn{ border-radius:999px; font-weight:700; }

/* CRITICAL: <a>-based buttons inherit the Hub theme's gold link colour, which
   makes the label invisible on the gold fill. Force white on all gold buttons
   (both <a> and <button>), beating the theme with container scope + !important. */
.newerp-shop a.newerp-btn--primary, .newerp-shop .newerp-btn--primary,
.newerp-cart a.newerp-btn--primary, .newerp-cart .newerp-btn--primary,
.newerp-checkout a.newerp-btn--primary, .newerp-checkout .newerp-btn--primary,
.newerp-account a.newerp-btn--primary, .newerp-account .newerp-btn--primary,
.newerp-club a.newerp-btn--primary, .newerp-club .newerp-btn--primary,
.newerp-auth a.newerp-btn--primary, .newerp-auth .newerp-btn--primary,
.newerp-tasting a.newerp-btn--primary, .newerp-tasting .newerp-btn--primary,
.pc-theme a.pc-btn, .pc-theme .pc-btn{
  color:#fff !important;
}
/* Ghost / outline buttons sit on a dark transparent fill → keep light label */
.pc-theme .pc-btn--ghost,
.newerp-shop a.newerp-btn--outline, .newerp-shop .newerp-btn--outline,
.newerp-cart a.newerp-btn--outline, .newerp-cart .newerp-btn--outline,
.newerp-checkout a.newerp-btn--outline, .newerp-checkout .newerp-btn--outline,
.newerp-account a.newerp-btn--outline, .newerp-account .newerp-btn--outline,
.newerp-club a.newerp-btn--outline, .newerp-club .newerp-btn--outline,
.newerp-auth a.newerp-btn--outline, .newerp-auth .newerp-btn--outline,
.newerp-tasting a.newerp-btn--outline, .newerp-tasting .newerp-btn--outline{
  color:var(--newerp-text) !important;
}
.pc-theme .pc-btn--ghost:hover,
.newerp-cart a.newerp-btn--outline:hover, .newerp-shop a.newerp-btn--outline:hover{
  color:var(--newerp-primary) !important;
}
.newerp-btn--primary{
  background:linear-gradient(180deg,#B19B6A,#9e8a5f);
  color:#fff; text-transform:uppercase; letter-spacing:.06em; font-weight:800;
  font-size:.82rem; box-shadow:none;
  transition:transform .15s ease, box-shadow .15s ease, filter .15s ease;
}
/* Match .pc-btn:hover exactly (shop list + cart drawer use .pc-btn) so the
   cart-page "Proceed to checkout" hover is identical to the slide-out drawer. */
.newerp-btn--primary:hover{ transform:translateY(-1px); box-shadow:0 8px 22px rgba(177,155,106,.32); }
.newerp-btn--primary:disabled{ opacity:.55; filter:grayscale(.4); transform:none; box-shadow:none; }
.newerp-btn--outline{ border-radius:999px; }
.newerp-btn--outline:hover{ border-color:var(--newerp-primary); color:var(--newerp-primary); }

/* Inputs / selects / textareas → rounded, dark, gold focus ring */
.newerp-cart input, .newerp-cart select, .newerp-cart textarea,
.newerp-checkout input, .newerp-checkout select, .newerp-checkout textarea,
.newerp-account input, .newerp-account select, .newerp-account textarea,
.newerp-club input, .newerp-club select, .newerp-club textarea,
.newerp-auth input, .newerp-auth select, .newerp-auth textarea,
.newerp-tasting input, .newerp-tasting select, .newerp-tasting textarea{
  border-radius:12px;
}
.newerp-cart input:focus, .newerp-checkout input:focus, .newerp-account input:focus,
.newerp-club input:focus, .newerp-auth input:focus, .newerp-tasting input:focus,
.newerp-cart textarea:focus, .newerp-checkout textarea:focus, .newerp-auth textarea:focus{
  outline:0; border-color:var(--newerp-primary); box-shadow:0 0 0 2px rgba(177,155,106,.28);
}

/* Cards / panels rounded a touch more for the modern look */
.newerp-cart, .newerp-checkout, .newerp-account, .newerp-club, .newerp-auth, .newerp-tasting{
  --newerp-radius:14px;
}

/* Full-bleed dark background — these pages may sit on a LIGHT theme page
   template; paint an edge-to-edge dark backdrop while keeping content centered.
   (box-shadow + clip-path is the classic full-bleed trick: no horizontal overflow.) */
.newerp-cart, .newerp-checkout, .newerp-account, .newerp-club, .newerp-auth, .newerp-tasting{
  position:relative;
  background:#171717;
  color:var(--newerp-text);
  box-shadow:0 0 0 100vmax #171717;
  clip-path:inset(0 -100vmax);
}

/* Alerts → dark, so they don't show as light boxes over the dark theme
   (container-scoped for specificity over the Hub theme defaults). */
.newerp-shop .newerp-alert, .newerp-cart .newerp-alert, .newerp-checkout .newerp-alert,
.newerp-account .newerp-alert, .newerp-club .newerp-alert, .newerp-auth .newerp-alert,
.newerp-tasting .newerp-alert, .pc-theme .newerp-alert{
  background:#1f1f1f; border:1px solid #2a2a2a; color:var(--newerp-text);
}
.newerp-shop .newerp-alert--info, .newerp-cart .newerp-alert--info, .newerp-checkout .newerp-alert--info,
.newerp-account .newerp-alert--info, .newerp-club .newerp-alert--info, .newerp-auth .newerp-alert--info,
.newerp-tasting .newerp-alert--info, .pc-theme .newerp-alert--info{
  background:rgba(177,155,106,.14); border-color:rgba(177,155,106,.40); color:#d9c39a;
}
.newerp-shop .newerp-alert--error, .newerp-cart .newerp-alert--error, .newerp-checkout .newerp-alert--error,
.newerp-account .newerp-alert--error, .newerp-club .newerp-alert--error, .newerp-auth .newerp-alert--error,
.newerp-tasting .newerp-alert--error, .pc-theme .newerp-alert--error{
  background:rgba(239,68,68,.14); border-color:rgba(239,68,68,.40); color:#f1a3a3;
}
.newerp-shop .newerp-alert--success, .newerp-cart .newerp-alert--success, .newerp-checkout .newerp-alert--success,
.newerp-account .newerp-alert--success, .newerp-club .newerp-alert--success, .newerp-auth .newerp-alert--success,
.newerp-tasting .newerp-alert--success, .pc-theme .newerp-alert--success{
  background:rgba(74,222,128,.14); border-color:rgba(74,222,128,.40); color:#9fe3ba;
}

.pc-theme{
  --bg:#171717; --text:#f3f5f9; --muted:#a8b0bf; --border:#262c37;
  --shadow:0 14px 40px rgba(0,0,0,.55);
  --accent:#B19B6A; --accent-press:#9e8a5f;
  --gutter:28px; --media-aspect:3 / 4; --radius:20px;
  /* 列表页左右留空与产品页一致: 内容 80vw 居中(两侧各 10vw); 平板以下回落到 gutter */
  --shop-side:10vw;
  --sans:"SF Pro Text","Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Arial,sans-serif;
  --display:"SF Pro Display","Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Arial,sans-serif;
}

/* Break out of the base .newerp-shop 1200px box → full width, dark.
   Full-bleed dark backdrop (matches cart/club/etc.) so the shop background is
   uniformly #171717 edge-to-edge regardless of the theme page template. */
.pc-theme.newerp-shop,
.pc-theme.pc-product{
  max-width:none;
  margin:0;
  padding:0;
  background:#171717;
  color:var(--text);
  font-family:var(--sans);
  line-height:1.6;
  position:relative;
  box-shadow:0 0 0 100vmax #171717;
  clip-path:inset(0 -100vmax);
}

/* ===== Shop header — horizontal: title (left) + search/sort (right) ===== */
.pc-shophead{
  box-sizing:border-box; width:100vw; max-width:100vw;
  margin-left:calc(50% - 50vw); margin-right:calc(50% - 50vw);
  /* Cap content at 1200px centered (aligns with the featured inner). */
  padding:48px var(--shop-side) 0;
  display:flex; align-items:flex-end; justify-content:space-between; gap:24px 40px; flex-wrap:wrap;
}
.pc-shophead__intro{ display:flex; flex-direction:column; gap:14px; min-width:0; }
.pc-hero__eyebrow{
  display:inline-flex; align-items:center; gap:14px; align-self:flex-start;
  font:700 12px/1 var(--sans); letter-spacing:.30em; text-transform:uppercase; color:var(--accent);
}
.pc-hero__eyebrow::after{
  content:""; width:40px; height:1px; background:linear-gradient(90deg,var(--accent),transparent);
}
.pc-shophead__title{
  margin:0; font-family:var(--display); font-weight:600;
  font-size:clamp(40px,4.8vw,68px); line-height:1; letter-spacing:-.02em; color:var(--text);
}
/* Search + sort pill — sits on the right of the header row */
.pc-search{
  display:flex; align-items:center; gap:0; height:56px; flex:0 1 460px; max-width:460px; min-width:260px;
  margin:0; padding:0 8px 0 6px;
  background:#1b1b1b; border:1px solid #36363a; border-radius:999px;
  box-shadow:0 10px 30px rgba(0,0,0,.38); transition:border-color .15s ease, box-shadow .15s ease;
}
.pc-search:focus-within{ border-color:var(--accent); box-shadow:0 0 0 2px rgba(177,155,106,.22), 0 14px 38px rgba(0,0,0,.42); }
.pc-search__go{
  display:flex; align-items:center; justify-content:center; width:48px; height:48px; flex:0 0 auto;
  /* !important beats the Hub theme's default gold <button> fill. */
  border:0 !important; border-radius:999px; background:transparent !important; box-shadow:none !important;
  color:var(--muted); cursor:pointer; transition:color .15s ease;
}
.pc-search__go:hover{ color:var(--accent); background:transparent !important; transform:none; }
.pc-search__input{
  flex:1 1 auto; min-width:0; height:100%; border:0 !important; background:transparent !important; box-shadow:none !important;
  color:var(--text); font:500 16px var(--sans); padding:0 12px;
}
.pc-search__input::placeholder{ color:var(--muted); }
.pc-search__input:focus{ outline:0; }
.pc-search__input::-webkit-search-cancel-button{ -webkit-appearance:none; }
.pc-search__divider{ flex:0 0 auto; width:1px; height:30px; background:#36363a; margin:0 4px; }
/* Sort dropdown (native <details>, theme-proof) */
.pc-sort{ flex:0 0 auto; position:relative; }
.pc-sort__btn{
  list-style:none; cursor:pointer; display:inline-flex; align-items:center; gap:7px;
  height:46px; padding:0 16px; border-radius:999px; white-space:nowrap;
  color:var(--muted); font:600 13.5px var(--sans); transition:color .15s ease;
}
.pc-sort__btn::-webkit-details-marker,
.pc-sort__btn::marker{ display:none; content:""; }
.pc-sort__btn:hover{ color:var(--text); }
.pc-sort[open] .pc-sort__btn{ color:var(--text); }
.pc-sort[open] .pc-sort__btn svg{ transform:rotate(180deg); }
.pc-sort__btn svg{ transition:transform .15s ease; }
.pc-sort__menu{
  position:absolute; right:0; top:calc(100% + 12px); min-width:210px; z-index:60;
  background:#1b1b1b; border:1px solid #36363a; border-radius:14px;
  box-shadow:0 16px 44px rgba(0,0,0,.55); padding:6px;
}
.pc-sort__opt{
  display:block; padding:10px 13px; border-radius:9px; text-decoration:none; white-space:nowrap;
  color:var(--muted); font:600 13px var(--sans); transition:background .12s ease, color .12s ease;
}
.pc-sort__opt:hover{ background:#262626; color:var(--text); }
.pc-sort__opt.is-active{ color:var(--accent); }

/* ===== Category pills ===== */
.pc-cats{
  box-sizing:border-box; width:100vw; max-width:100vw;
  margin-left:calc(50% - 50vw); margin-right:calc(50% - 50vw);
  padding:26px var(--shop-side) 6px;
  display:flex; flex-wrap:wrap; justify-content:flex-start; gap:10px;
}
.pc-cats__pill{
  display:inline-flex; align-items:center; height:38px; padding:0 20px;
  border-radius:999px; border:1px solid #34343a; background:transparent;
  color:var(--muted); text-decoration:none;
  font:700 11.5px/1 var(--sans); letter-spacing:.12em; text-transform:uppercase;
  transition:color .15s ease, border-color .15s ease, background .15s ease;
}
/* 2026-10-30: 主题的全局 a:hover 会把文字染成金色, 与选中胶囊的金色底同色 → 悬停时文字"消失"; 这里用 !important 钉住 */
.pc-cats__pill:hover{ color:var(--text) !important; border-color:var(--accent); background:rgba(255,255,255,.06); }
.pc-cats__pill.is-active{ background:var(--accent); border-color:var(--accent); color:#1a1a1a; }
.pc-cats__pill.is-active:hover{ color:#1a1a1a !important; background:var(--accent); }
/* Product page (customer request, 2026-10-24): same category links, restyled as a
   single-line underline tab strip aligned to the 80vw product column (.product-split /
   .pc-breadcrumb) instead of the collection's 1200px pill block. Overflow scrolls sideways. */
.pc-catbar{
  width:80vw; max-width:80vw; margin-left:calc(50% - 40vw); margin-right:0;
  padding:40px 0 0; display:flex; align-items:stretch; gap:20px;
  border-bottom:1px solid #2a2a2e;
}
.pc-cats--product{
  flex:1 1 auto; min-width:0; width:auto; max-width:none; margin:0;
  padding:0; gap:0; flex-wrap:nowrap; overflow-x:auto; overscroll-behavior-x:contain;
  scrollbar-width:none; -webkit-overflow-scrolling:touch;
  /* fade the clipped edge so it reads as scrollable */
  -webkit-mask-image:linear-gradient(90deg,#000 calc(100% - 28px),transparent); mask-image:linear-gradient(90deg,#000 calc(100% - 28px),transparent);
}
.pc-cats--product::-webkit-scrollbar{ display:none; }
/* Inline search at the right end of the strip → submits to /shop/?q= */
.pc-catbar__search{
  flex:0 0 auto; display:flex; align-items:center; gap:6px; margin-bottom:-1px;
  border-bottom:2px solid transparent; transition:border-color .15s ease;
}
.pc-catbar__search:focus-within{ border-bottom-color:var(--accent); }
.pc-catbar__input{
  width:170px; height:42px; min-width:0; padding:0 !important; margin:0 !important;
  border:0 !important; background:transparent !important; box-shadow:none !important; border-radius:0 !important;
  color:var(--text); font:500 13px/1 var(--sans);
}
.pc-catbar__input::placeholder{ color:var(--muted); }
.pc-catbar__input:focus{ outline:0; }
.pc-catbar__input::-webkit-search-cancel-button{ -webkit-appearance:none; }
.pc-catbar__go{
  flex:0 0 auto; display:flex; align-items:center; justify-content:center; width:28px; height:42px;
  padding:0 !important; margin:0 !important; border:0 !important; background:transparent !important; box-shadow:none !important;
  color:var(--muted); cursor:pointer;
}
.pc-catbar__go:hover{ color:var(--accent); background:transparent !important; transform:none; }
.pc-cats--product .pc-cats__pill{
  flex:0 0 auto; height:42px; padding:0 16px; margin-bottom:-1px;
  border:0; border-bottom:2px solid transparent; border-radius:0; background:transparent;
  font-size:11px; letter-spacing:.14em; white-space:nowrap;
}
.pc-cats--product .pc-cats__pill:first-child{ padding-left:0; }
.pc-cats--product .pc-cats__pill:hover{ color:var(--text) !important; background:transparent; border-bottom-color:#4a4a52; }
.pc-cats--product .pc-cats__pill.is-active{ background:transparent; color:var(--accent); border-bottom-color:var(--accent); }
.pc-cats--product .pc-cats__pill.is-active:hover{ color:var(--accent) !important; background:transparent; }
.pc-breadcrumb.pc-breadcrumb--below-cats{ padding-top:24px; }

/* ===== Featured (hero) — 1200px centered ===== */
/* Full-bleed to match the 3-up rows so the featured product is as wide as the
   grid below it (aligned left/right edges, ~site-nav margins). */
/* Featured: capped at 1200px centered (production value), full-bleed wrapper so
   the inner can reach 1200 past the theme's narrower content container. */
.pc-featured{
  box-sizing:border-box; width:100vw; max-width:100vw;
  margin-left:calc(50% - 50vw); margin-right:calc(50% - 50vw);
  padding:28px 0;
}
.pc-featured__inner{ max-width:none; margin:0; padding:0 var(--shop-side); display:grid; gap:28px; }
.pc-featured__inner--pair{ grid-template-columns:repeat(2,minmax(0,1fr)); }
.pc-featured__inner--single{ grid-template-columns:minmax(0,760px); justify-content:center; }

/* ===== Rows: full-bleed 3-up grid ===== */
/* Break out of the theme's centered content container (~1200px) so the 3-up
   row spans the full viewport width. Featured above stays centered. */
.pc-rows{
  box-sizing:border-box;
  width:100vw;
  max-width:100vw;
  margin-left:calc(50% - 50vw);
  margin-right:calc(50% - 50vw);
  padding:8px var(--shop-side) 64px;
  display:grid; gap:28px;
  grid-template-columns:repeat(3,minmax(0,1fr));
}

/* ===== Card (image left / content right) ===== */
.pc-theme .pc-row{
  display:grid; grid-template-columns:minmax(150px,42%) 1fr; gap:22px;
  border:1px solid rgba(255,255,255,.06); border-radius:var(--radius);
  box-shadow:var(--shadow); padding:22px; align-items:center; height:100%;
  background:#1b1b1b; list-style:none; margin:0;
}
/* Hero cards: two side by side on page 1 (one centred when the result has a single product).
   Each is half the 80vw row, image column 42%, image height capped. */
.pc-theme .pc-row--hero{ grid-template-columns:minmax(0,42%) 1fr; gap:24px; padding:24px; }
.pc-row--hero .pc-row__media-link{ aspect-ratio:auto; height:clamp(280px,24vw,400px); }

/* Media — controlled, uniform card image size (contain so bottles aren't cropped) */
.pc-row__media{ position:relative; display:grid; align-content:center; }
/* Image box uses aspect-ratio 3/4 (production --media-aspect), so card height
   scales proportionally with card width — short on narrow cards, tall on the
   wide hero — instead of a fixed pixel block that looks flat on big screens. */
/* Box height comes purely from aspect-ratio; the image is absolutely positioned
   to fill it with object-fit:contain — whole image always visible (no crop),
   and a tall/placeholder image can never blow up the card height. */
.pc-row__media-link{ position:relative; width:100%; aspect-ratio:var(--media-aspect); overflow:hidden; }
.pc-row__img{ position:absolute; inset:0; width:100%; height:100%; object-fit:contain; padding:6%; box-sizing:border-box; }

/* Content */
.pc-row__content{ display:grid; grid-template-rows:auto 1fr auto; min-width:0; gap:6px; padding-right:clamp(10px,1.2vw,20px); }
.pc-row--hero .pc-row__content{ padding-right:clamp(16px,2vw,32px); }
.pc-row__eyebrow{ color:var(--muted); font:600 12px/1.3 var(--sans); letter-spacing:.04em; text-transform:uppercase; }
.pc-row__title{ margin:.2em 0 0; font-family:var(--display); font-weight:700;
  font-size:clamp(19px,1.5vw,24px); line-height:1.18; letter-spacing:-.01em; }
.pc-row__title a{ color:var(--text); text-decoration:none; }
.pc-row__title a:hover{ color:var(--accent); }
.pc-row--hero .pc-row__title{ font-size:clamp(22px,2vw,30px); line-height:1.2; }
.pc-row--hero .pc-row__title a{ color:var(--accent); }

.pc-row__teaser{
  color:var(--muted); margin:clamp(10px,1.1vw,15px) 0; line-height:1.6;
  display:-webkit-box; -webkit-box-orient:vertical; -webkit-line-clamp:3; overflow:hidden;
}
.pc-row__teaser:empty{ display:none; }
.pc-row--hero .pc-row__teaser{ -webkit-line-clamp:4; }

/* Foot: price on its own line, then qty + add-to-cart on the next line */
.pc-row__foot{ display:flex; flex-direction:column; align-items:flex-start; gap:12px; }
.pc-row--hero .pc-row__foot{ margin-top:14px; }
.pc-row__cta{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; }

/* Compact quantity stepper for cards — buttons/field stretch to fill the
   bordered box (no gap between +/- and the top/bottom border) */
.pc-qty--sm{ height:44px; align-items:stretch; }
.pc-qty--sm .pc-qty__btn{ width:36px; height:auto; font-size:18px; }
.pc-qty--sm .pc-qty__field{ width:46px; height:auto; font-size:15px; }

/* ===== Price ===== */
.pc-price{ color:var(--text); font-weight:800; font-size:18px; font-family:var(--sans); }
.pc-price--xl{ font-size:24px; }
.pc-price--sale{ color:#fff; }
.pc-price--strike{ color:#c5cbd7; opacity:.55; text-decoration:line-through; font-weight:600; font-size:14px; margin-left:8px; }

/* ===== Gold pill button ===== */
.pc-theme .pc-btn{
  display:inline-flex; align-items:center; justify-content:center;
  height:44px; padding:0 22px; border:0; border-radius:999px; cursor:pointer;
  color:#fff; font:800 13px/1 var(--sans); letter-spacing:.06em; text-transform:uppercase;
  background:linear-gradient(180deg,var(--accent),var(--accent-press));
  transition:transform .15s ease, box-shadow .15s ease, filter .15s ease; text-decoration:none;
}
.pc-theme .pc-btn:hover{ transform:translateY(-1px); box-shadow:0 8px 22px rgba(177,155,106,.32); }
/* Solid-gold <a> buttons (e.g. "Choose amount", drawer + cart "Proceed to
   Checkout") must look IDENTICAL to the 3-up <button> "Add to cart" — including
   on hover. The Hub theme's link-hover otherwise swaps the typeface/weight and
   paints them gold/underlined. Lock colour + decoration + the full typography
   across rest/hover/focus. font-size is left to .pc-btn / .pc-btn--lg so the
   large variant keeps its size. Uses the explicit stack (not var(--sans)) so it
   also works inside .newerp-cart where that var isn't defined.
   Excludes ghost buttons (they intentionally go gold on hover). */
.pc-theme a.pc-btn:not(.pc-btn--ghost),
.pc-theme a.pc-btn:not(.pc-btn--ghost):hover,
.pc-theme a.pc-btn:not(.pc-btn--ghost):focus,
.newerp-cart a.newerp-btn--primary,
.newerp-cart a.newerp-btn--primary:hover,
.newerp-cart a.newerp-btn--primary:focus{
  color:#fff !important;
  text-decoration:none !important;
  font-family:"SF Pro Text","Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Arial,sans-serif !important;
  font-weight:800 !important;
  letter-spacing:.06em !important;
  text-transform:uppercase !important;
  /* CONFIRMED via headless probe: the Hub theme bumps link line-height
     13px → 18px on :hover, which grows the content-height cart "Proceed"
     button (the "放大"). Pin font-size + line-height across rest/hover/focus
     so the label can't change size. (.pc-btn group below; cart group keeps its
     own line-height value.) */
  font-size:13px !important;
}
.pc-theme a.pc-btn:not(.pc-btn--ghost),
.pc-theme a.pc-btn:not(.pc-btn--ghost):hover,
.pc-theme a.pc-btn:not(.pc-btn--ghost):focus{ line-height:1 !important; }
/* Large variant ("Proceed to Checkout") keeps its 14px at rest AND hover. */
.pc-theme a.pc-btn--lg:not(.pc-btn--ghost),
.pc-theme a.pc-btn--lg:not(.pc-btn--ghost):hover,
.pc-theme a.pc-btn--lg:not(.pc-btn--ghost):focus{ font-size:14px !important; }
/* Cart proceed button (content height) — freeze line-height so the hover
   bump can't make it taller. 'normal' = its rest value. */
.newerp-cart a.newerp-btn--primary,
.newerp-cart a.newerp-btn--primary:hover,
.newerp-cart a.newerp-btn--primary:focus{ line-height:normal !important; }
/* Lift is the ONLY hover transform — block any theme scale-up. */
.pc-theme a.pc-btn:not(.pc-btn--ghost):hover,
.newerp-cart a.newerp-btn--primary:hover{ transform:translateY(-1px) !important; }
.pc-theme .pc-btn--lg{ height:52px; padding:0 30px; font-size:14px; }
.pc-theme .pc-btn--ghost{
  background:transparent; border:1px solid #3a3a3a; color:var(--text);
  text-transform:none; letter-spacing:0; font-weight:600;
}
.pc-theme .pc-btn--ghost:hover{ border-color:var(--accent); box-shadow:none; }
/* Cart-drawer "View Cart" (ghost <a>): keep it stable on hover — the Hub theme
   otherwise bumps line-height (enlarge) and flips the text gold. Lock size +
   text colour across rest/hover/focus; keep only the border accent + 1px lift. */
.pc-cart-drawer a.pc-btn--ghost,
.pc-cart-drawer a.pc-btn--ghost:hover,
.pc-cart-drawer a.pc-btn--ghost:focus{
  color:var(--text) !important;
  text-decoration:none !important;
  font-size:13px !important;
  line-height:1 !important;
}
.pc-cart-drawer a.pc-btn--ghost:hover{ transform:translateY(-1px) !important; }
.pc-theme .pc-btn--disabled,
.pc-theme .pc-btn[disabled]{ opacity:.55; cursor:not-allowed; filter:grayscale(.4); }
.pc-theme .pc-btn--disabled:hover{ transform:none; box-shadow:none; }

/* ===== Badges ===== */
.pc-badge{
  position:absolute; top:10px; left:10px; z-index:2;
  padding:5px 11px; border-radius:999px; font:800 11px/1 var(--sans);
  letter-spacing:.05em; text-transform:uppercase;
}
.pc-badge--sale{ background:var(--accent); color:#1a1a1a; }
.pc-badge--oos{ background:#444; color:#eee; }
.pc-badge--low{ background:#b4975a; color:#1a1a1a; }

/* =========================================================================
   Product detail — split image left / info right
   ========================================================================= */
/* Align the breadcrumb with the product-split (same 80vw left edge) so it sits
   neatly above the product image instead of orphaned in the theme container. */
.pc-breadcrumb{
  width:80vw; max-width:80vw; margin-left:calc(50% - 40vw); margin-right:0;
  padding:52px 0 0;
  color:var(--muted); font-size:13px;
}
.pc-breadcrumb a{ color:var(--muted); text-decoration:none; }
.pc-breadcrumb a:hover{ color:var(--accent); }
.pc-breadcrumb__sep{ margin:0 8px; opacity:.5; }
.pc-breadcrumb__current{ color:var(--text); }

.product-split{
  /* Fluid full-bleed like the shop list (.pc-rows): break out of the theme's
     constrained content container so the image scales with the viewport
     (~39% vw, matching production) instead of capping at the container width.
     80vw centered + 50/50 split → each column ~40vw, image ~38-39% vw. */
  width:80vw; max-width:80vw; margin-left:calc(50% - 40vw); margin-right:0;
  display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:48px;
  padding:24px 0 64px; align-items:start;
}
.product-split__img{ display:grid; gap:14px; align-content:start; position:sticky; top:24px; }
.product-img-box{ position:relative; border-radius:var(--radius); overflow:hidden; box-shadow:var(--shadow); background:#1b1b1b; }
/* Product images are tall bottle shots (e.g. 900×3000): capped height + contain so the
   whole bottle is visible above the fold instead of a 1800px-tall neck crop (2026-10-24). */
.product-img-box img{ width:100%; height:auto; max-height:min(72vh, 720px); object-fit:contain; display:block; }
.product-thumbs{ display:flex; flex-wrap:wrap; gap:10px; }
.product-thumb{ width:72px; height:72px; padding:0; border:1px solid #333; border-radius:10px; overflow:hidden; background:#1b1b1b; cursor:pointer; }
.product-thumb img{ width:100%; height:100%; object-fit:cover; }
.product-thumb:hover{ border-color:var(--accent); }

.product-split__info{ display:grid; grid-auto-rows:min-content; gap:16px; align-content:start; }
.prod-eyebrow{ color:var(--muted); font:600 13px/1 var(--sans); letter-spacing:.05em; text-transform:uppercase; }
.prod-title{ margin:0; font-family:var(--display); font-weight:800;
  font-size:clamp(30px,4vw,52px); line-height:1.15; letter-spacing:-.01em; color:var(--accent); }
.prod-subtitle{ font-weight:600; font-size:16px; line-height:1.4; color:var(--muted); }
.prod-price{ display:flex; align-items:baseline; gap:10px; flex-wrap:wrap; }
.prod-deposit{ color:var(--muted); font-size:13px; }
.prod-stock{ font-size:14px; font-weight:600; }
.prod-stock--in-stock{ color:#7fcaa0; }
.prod-stock--low-stock{ color:#d9be86; }
.prod-stock--out-of-stock{ color:#d98a8a; }
.product-teaser{ color:var(--muted); line-height:1.7; }
.product-teaser p{ margin:0 0 .8em; }

/* Cart cta */
.product-cart .cta{ display:flex; flex-wrap:wrap; align-items:center; gap:14px; }
.pc-qty{ display:inline-flex; align-items:stretch; border:1px solid #575759; border-radius:12px; overflow:hidden; height:52px; }
.pc-qty__btn{ width:46px; height:auto; border:0; background:#1f1f1f; color:var(--text); font-size:20px; cursor:pointer; }
.pc-qty__btn:hover{ background:#2a2a2a; }
.pc-qty__field{
  width:60px; height:52px; border:0; border-left:1px solid #575759; border-right:1px solid #575759;
  background:#171717; color:#e9edf6; text-align:center; font:700 16px/1 var(--sans); -moz-appearance:textfield;
}
.pc-qty__field::-webkit-outer-spin-button,
.pc-qty__field::-webkit-inner-spin-button{ -webkit-appearance:none; margin:0; }
.pc-qty__field:focus{ outline:0; }

/* Details / specs / notes */
.product-details{ margin-top:8px; display:grid; gap:24px; border-top:1px solid rgba(255,255,255,.08); padding-top:24px; }
.product-specs{ display:grid; grid-template-columns:auto 1fr; gap:8px 18px; margin:0; }
.product-specs dt{ color:var(--muted); font-weight:600; }
.product-specs dd{ margin:0; color:var(--text); }
.product-note h3{ margin:0 0 .4em; font-family:var(--display); color:var(--accent); font-size:18px; font-weight:700; }
.product-note p{ margin:0; color:var(--muted); line-height:1.7; }
/* Rich-text body from the ERP editor (headings / paragraphs / lists / quotes). */
.product-richtext{ color:var(--muted); line-height:1.7; }
.product-richtext h1,.product-richtext h2,.product-richtext h3,.product-richtext h4{
  font-family:var(--display); color:var(--accent); font-weight:700; margin:1.1em 0 .4em; line-height:1.25; }
.product-richtext h1{ font-size:24px; } .product-richtext h2{ font-size:21px; } .product-richtext h3{ font-size:18px; } .product-richtext h4{ font-size:16px; }
.product-richtext p{ margin:0 0 .9em; color:var(--muted); line-height:1.7; }
.product-richtext :first-child{ margin-top:0; }
.product-richtext :last-child{ margin-bottom:0; }
.product-richtext strong{ color:var(--text); font-weight:700; }
.product-richtext em{ font-style:italic; }
.product-richtext ul,.product-richtext ol{ margin:0 0 .9em; padding-left:1.4em; }
.product-richtext li{ margin:.2em 0; }
.product-richtext ul{ list-style:disc; } .product-richtext ol{ list-style:decimal; }
.product-richtext a{ color:var(--accent); text-decoration:underline; }
.product-richtext blockquote{ margin:0 0 .9em; padding-left:1em; border-left:3px solid rgba(177,155,106,.5); color:var(--text); font-style:italic; }
.product-awards{ margin:0; padding-left:18px; color:var(--muted); }

/* ===== Recommended ===== */
.pc-recommended{ max-width:80vw; margin:0 auto; padding:64px 0 64px; }
/* Centered serif heading with a gold accent rule (matches the shop hero look). */
.pc-recommended__title{
  text-align:center; font-family:var(--display); font-weight:600; color:var(--text);
  font-size:clamp(24px,2.6vw,34px); letter-spacing:-.01em; margin:0 0 30px;
}
.pc-recommended__title::after{
  content:""; display:block; width:54px; height:2px; margin:16px auto 0;
  background:linear-gradient(90deg,transparent,var(--accent),transparent);
}

/* ===== Pagination (dark) ===== */
.pc-theme .newerp-pagination{ display:flex; justify-content:center; gap:8px; padding:0 var(--gutter) 56px; }
.pc-theme .newerp-pagination__link{
  min-width:42px; height:42px; padding:0 12px; display:inline-flex; align-items:center; justify-content:center;
  border:1px solid #3a3a3a; border-radius:10px; color:var(--text); text-decoration:none; font-weight:600;
}
.pc-theme .newerp-pagination__link:hover{ border-color:var(--accent); }
.pc-theme .newerp-pagination__link.is-current{ background:var(--accent); border-color:var(--accent); color:#1a1a1a; }

/* ===== Empty / alert spacing inside dark theme ===== */
.pc-theme .newerp-shop__empty{ max-width:80vw; margin:0 auto; padding:48px var(--gutter); text-align:center; color:var(--muted); }
/* Search / category with no hits: more breathing room, then 3 random wines below (2026-10-24). */
.pc-theme .newerp-shop__empty--roomy{ margin-top:36px; padding:112px var(--gutter) 96px; }
.pc-theme .newerp-shop__empty--roomy p{ font-size:17px; margin:0 0 22px; }
.pc-recommended--empty{ padding-top:0; border-top:1px solid #2a2a2e; }
.pc-recommended--empty .pc-recommended__title{ padding-top:56px; }
.pc-theme .newerp-alert{ max-width:80vw; margin:24px auto; }

/* =========================================================================
   Responsive — iPad & mobile
   ========================================================================= */

/* iPad landscape / small desktop: 3 → 2 columns */
/* 80vw content at 1280–1500px leaves ~360px per card: tighten the card so the CTA stays on one line. */
@media (min-width:981px) and (max-width:1500px){
  .pc-theme .pc-row:not(.pc-row--hero){ grid-template-columns:minmax(120px,38%) 1fr; gap:16px; padding:18px; }
  .pc-row:not(.pc-row--hero) .pc-btn{ white-space:nowrap; padding-left:18px; padding-right:18px; }
}
@media (max-width:1200px){
  .pc-rows{ grid-template-columns:repeat(2,minmax(0,1fr)); }
}

/* iPad portrait & below: cards stack image-over-content, center text */
@media (max-width:980px){
  .pc-theme{ --shop-side:var(--gutter); }
  .pc-recommended, .pc-theme .newerp-shop__empty, .pc-theme .newerp-alert{ max-width:100%; }
  .pc-recommended{ padding-left:0; padding-right:0; } /* .pc-rows 自带内边距, 不再叠加 */
  .pc-theme .pc-row{ grid-template-columns:1fr; gap:16px; padding:18px; text-align:center; }
  .pc-row__content, .pc-row--hero .pc-row__content{ padding-right:0; }
  .pc-featured__inner--pair, .pc-featured__inner--single{ grid-template-columns:1fr; }
  .pc-theme .pc-row--hero{ grid-template-columns:1fr; gap:18px; padding:22px; }
  .pc-row--hero .pc-row__media-link{ height:auto; aspect-ratio:4 / 3; }
  .pc-row__media-link{ aspect-ratio:4 / 3; }
  .pc-row__title{ font-size:clamp(20px,4vw,26px); }
  .pc-row--hero .pc-row__title{ font-size:clamp(26px,5vw,34px); }
  .pc-row__teaser{ -webkit-line-clamp:4; }
  .pc-row__foot{ align-items:center; }

  .product-split{ grid-template-columns:1fr; gap:24px; width:100vw; max-width:100vw; margin-left:calc(50% - 50vw); padding-left:18px; padding-right:18px; }
  .prod-title, .prod-subtitle, .product-teaser{ text-align:center; }
  .product-cart .cta{ justify-content:center; }
  .prod-price{ justify-content:center; }
  .prod-stock{ text-align:center; }

  /* Tablet & below: widen the shop blocks (the desktop 80vw is too narrow here) */
  .pc-shophead, .pc-featured, .pc-cats, .pc-rows{
    width:auto; max-width:100%; margin-left:0; margin-right:0;
    padding-left:var(--gutter); padding-right:var(--gutter);
  }
  .pc-catbar{ width:100vw; max-width:100vw; margin-left:calc(50% - 50vw); padding-left:18px; padding-right:18px; }
  .pc-cats--product{ width:auto; max-width:none; margin:0; padding:0; }
  .pc-cats--product .pc-cats__pill:first-child{ padding-left:0; }
  .pc-catbar__input{ width:140px; }
}

/* Category dropdown exists only on phones (see the 700px block). */
.pc-catsel{ display:none; }

/* Phones: single column everywhere, compact CTAs */
@media (max-width:700px){
  .pc-shophead{ flex-direction:column; align-items:stretch; gap:18px; padding:36px 18px 0; }
  .pc-search{ flex-basis:auto; max-width:100%; }
  /* Category pills → full-width dropdown on phones (no sideways scrolling). */
  .pc-cats{ display:none; }
  .pc-catsel{ display:block; margin:18px 18px 0; }
  .pc-catsel--product{ margin-top:14px; }
  .pc-catbar{ padding:28px 18px 0; border-bottom:0; }
  .pc-catbar__search{ flex:1 1 auto; height:48px; padding:0 14px; border:1px solid #34343a; border-radius:999px; background:#1b1b1b; margin:0; }
  .pc-catbar__search:focus-within{ border-color:var(--accent); }
  .pc-catbar__input{ flex:1 1 auto; width:auto; font-size:14px; }
  .product-img-box img{ max-height:60vh; }
  .pc-breadcrumb.pc-breadcrumb--below-cats{ padding-top:18px; }
  .pc-catsel__btn{
    width:100%; box-sizing:border-box; justify-content:space-between; height:48px; padding:0 18px;
    border:1px solid #34343a; background:#1b1b1b; color:var(--text);
  }
  .pc-catsel__label{ font:700 11px/1 var(--sans); letter-spacing:.14em; text-transform:uppercase; color:var(--muted); }
  .pc-catsel__current{ flex:1; text-align:right; margin-right:4px; color:var(--accent); font-weight:700; }
  .pc-catsel__menu{ left:0; right:0; min-width:0; max-height:60vh; overflow:auto; }
  .pc-catsel__menu .pc-sort__opt{ white-space:normal; padding:12px 14px; font-size:14px; }

  .pc-rows{ grid-template-columns:1fr; padding:8px 18px 48px; gap:18px; }
  .pc-theme .newerp-shop__empty--roomy{ margin:22px 18px 0; padding:72px 18px 56px; }
  /* Featured card = same width/padding/type as the cards below it. */
  .pc-featured{ padding:18px 18px 0; }
  .pc-featured__inner{ padding:0; max-width:none; }
  .pc-theme .pc-row--hero{ padding:18px; gap:16px; }
  .pc-row--hero .pc-row__title{ font-size:clamp(20px,4vw,26px); }
  .pc-row--hero .pc-row__teaser{ -webkit-line-clamp:4; }
  .pc-row--hero .pc-row__foot{ margin-top:0; }

  .pc-row__foot{ flex-direction:column; align-items:center; gap:10px; }
  .pc-row__cta .pc-btn{ width:100%; }

  .product-split{ max-width:100%; width:100%; padding:18px 18px 48px; }
  .product-cart .cta{ flex-direction:column; align-items:center; gap:12px; }
  .pc-qty, .product-cart .cta .pc-btn{ width:100%; }
  .pc-qty{ justify-content:space-between; }
  .pc-qty__field{ flex:1 1 auto; }
  .product-specs{ grid-template-columns:1fr; gap:2px 0; }
  .product-specs dt{ margin-top:8px; }
}

/* =========================================================================
   Slide-out Cart Drawer
   ========================================================================= */
.pc-cart-drawer{ position:fixed; inset:0; z-index:99999; visibility:hidden; pointer-events:none; }
.pc-cart-drawer.is-open{ visibility:visible; pointer-events:auto; }
.pc-cart-drawer__overlay{
  position:absolute; inset:0; background:rgba(0,0,0,.55);
  opacity:0; transition:opacity .3s ease; will-change:opacity;
}
.pc-cart-drawer.is-open .pc-cart-drawer__overlay{ opacity:1; }
.pc-cart-drawer__panel{
  position:absolute; top:0; right:0; height:100%; width:420px; max-width:92vw;
  background:#171717; color:#f3f5f9; box-shadow:-12px 0 40px rgba(0,0,0,.6);
  display:flex; flex-direction:column;
  transform:translateX(100%);
  transition:transform .34s cubic-bezier(.22,1,.36,1); /* easeOutQuint — smooth glide */
  will-change:transform; backface-visibility:hidden;
  font-family:"SF Pro Text","Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Arial,sans-serif;
}
.pc-cart-drawer.is-open .pc-cart-drawer__panel{ transform:translateX(0); }
/* lock body scroll without the layout shift (scrollbar-gutter compensation set in JS) */
body.pc-cart-open{ overflow:hidden; }

.pc-cart-drawer__head{
  display:flex; align-items:flex-start; justify-content:space-between; gap:12px;
  padding:22px 24px 16px; border-bottom:1px solid rgba(255,255,255,.08);
}
.pc-cart-drawer__title{ margin:0; font-family:"SF Pro Display","Inter",sans-serif; font-size:22px; font-weight:800; color:#f3f5f9; letter-spacing:-.01em; }
.pc-cart-drawer__ship{ margin-top:4px; font-size:12px; color:#B19B6A; font-weight:600; letter-spacing:.03em; }
.pc-cart-drawer__close{ background:none; border:0; color:#a8b0bf; font-size:28px; line-height:1; cursor:pointer; padding:0 4px; }
.pc-cart-drawer__close:hover{ color:#f3f5f9; }

.pc-cart-drawer__body{ flex:1 1 auto; overflow-y:auto; padding:8px 24px; }
.pc-cart-drawer__loading,
.pc-cart-drawer__empty{ padding:48px 8px; text-align:center; color:#a8b0bf; }

.pc-cart-line{ display:grid; grid-template-columns:56px 1fr auto; gap:14px; align-items:center; padding:16px 0; border-bottom:1px solid rgba(255,255,255,.06); }
/* 2026-10-30: 容器不能用 grid(自动行高会被瘦高图撑到 187px, img 的 height:100% 跟着变 187) → block + img 填满 + contain */
.pc-cart-line__img{ width:56px; height:76px; border-radius:10px; overflow:hidden; background:#1f1f1f; display:block; }
/* full bottle fits (contain), beat any theme img sizing that crops to the neck */
/* 2026-10-30: 瘦高酒瓶图(如 661×2202)在 56×76 框里 height:auto 会撑到 187px 被裁成只剩瓶颈(max-height:100% 不生效) → 直接填满框 + contain */
.pc-cart-line__img img{ width:100% !important; height:100% !important; max-width:100% !important; max-height:100% !important; object-fit:contain !important; object-position:center; display:block; }
.pc-cart-line__name{ font-weight:600; font-size:14px; line-height:1.3; }
.pc-cart-line__variant{ margin:3px 0 0; font-size:12px; font-weight:600; color:#B19B6A; }
.pc-cart-line__price{ color:#a8b0bf; font-size:13px; margin:2px 0 8px; }
.pc-cart-line__controls{ display:flex; align-items:center; gap:12px; flex-wrap:wrap; }
.pc-cart-line__remove{ background:none; border:0; color:#a8b0bf; font-size:12px; cursor:pointer; text-decoration:underline; padding:0; }
.pc-cart-line__remove:hover{ color:#d98a8a; }
.pc-cart-line__total{ font-weight:800; font-size:15px; white-space:nowrap; }

.pc-cart-drawer__foot{ flex:0 0 auto; padding:18px 24px 24px; border-top:1px solid rgba(255,255,255,.10); background:#1a1a1a; }
.pc-cart-drawer__totals{ margin:0 0 14px; }
.pc-cart-drawer__totals > div{ display:flex; justify-content:space-between; align-items:baseline; padding:4px 0; }
.pc-cart-drawer__totals dt{ color:#cdd3de; font-size:14px; }
.pc-cart-drawer__totals dd{ margin:0; font-weight:700; font-size:14px; }
.pc-cart-drawer__totals .is-muted dt,
.pc-cart-drawer__totals .is-muted dd{ color:#8b93a3; font-weight:500; font-size:13px; }
.pc-cart-drawer__grand{ border-top:1px solid rgba(255,255,255,.10); margin-top:6px; padding-top:10px !important; }
.pc-cart-drawer__grand dt{ font-weight:800 !important; color:#f3f5f9 !important; font-size:16px !important; }
.pc-cart-drawer__grand dd{ font-weight:800 !important; font-size:18px !important; color:#B19B6A; }
.pc-cart-drawer__help{ font-size:12px; color:#8b93a3; line-height:1.5; margin:0 0 14px; }
.pc-cart-drawer__actions{ display:grid; gap:10px; }
.pc-cart-drawer__btn{ width:100%; }

@media (max-width:480px){
  .pc-cart-drawer__panel{ width:100vw; max-width:100vw; }
}

/* Qty stepper + drawer close buttons: keep dark/subtle (override Hub theme's
   default gold button background that bleeds onto bare <button>s). */
.pc-theme .pc-qty__btn,
.pc-cart-drawer .pc-qty__btn,
.newerp-cart .pc-qty__btn{
  background:#1f1f1f !important; color:#f3f5f9 !important; border-radius:0 !important;
}
.pc-theme .pc-qty__btn:hover,
.pc-cart-drawer .pc-qty__btn:hover,
.newerp-cart .pc-qty__btn:hover{ background:#2a2a2a !important; }
.pc-theme .pc-qty__field,
.pc-cart-drawer .pc-qty__field,
.newerp-cart .pc-qty__field{ background:#171717 !important; color:#e9edf6 !important; }
/* The cart container's global `.newerp-cart input{border-radius:12px}` rounds
   the middle qty number, leaving curved gaps beside the +/- buttons. Flatten it
   so the stepper reads as one seamless pill like the shop card. */
.newerp-cart .pc-qty__field{ border-radius:0 !important; }
.pc-cart-drawer__close{ background:none !important; box-shadow:none !important; }
.pc-cart-drawer__close:hover{ background:none !important; }
.pc-cart-line__remove{ background:none !important; box-shadow:none !important; }

/* Cart drawer upsell ("Giving a gift?" suggested add-on) */
.pc-cart-upsell{ margin:4px 0 16px; padding:14px; border:1px solid rgba(177,155,106,.30); border-radius:12px; background:rgba(177,155,106,.06); }
.pc-cart-upsell__heading{ font-weight:700; font-size:13px; color:#B19B6A; margin-bottom:10px; }
.pc-cart-upsell__card{ display:grid; grid-template-columns:44px 1fr auto; gap:12px; align-items:center; }
.pc-cart-upsell__img{ width:44px; height:60px; border-radius:8px; overflow:hidden; background:#1f1f1f; display:block; }
.pc-cart-upsell__img img{ width:100% !important; height:100% !important; max-width:100% !important; max-height:100% !important; object-fit:contain !important; object-position:center; display:block; }
.pc-cart-upsell__name{ font-weight:600; font-size:13px; line-height:1.3; }
.pc-cart-upsell__price{ color:#a8b0bf; font-size:13px; margin-top:2px; }

/* ── Gift card: recipient form (product detail) ─────────────────────── */
.pc-giftform{ margin:0 0 16px; padding:16px; border:1px solid rgba(177,155,106,.30); border-radius:14px; background:rgba(177,155,106,.06); }
.pc-giftform__intro{ margin:0 0 12px; font-size:13px; color:#a8b0bf; line-height:1.5; }
.pc-giftform__grid{ display:grid; grid-template-columns:1fr 1fr; gap:12px; }
.pc-giftform__field{ display:flex; flex-direction:column; gap:5px; }
.pc-giftform__field--full{ grid-column:1 / -1; }
.pc-giftform__field > span{ font-size:12px; font-weight:600; letter-spacing:.02em; color:#B19B6A; }
.pc-giftform__field input,
.pc-giftform__field textarea{
  background:#171717; color:#e9edf6; border:1px solid #2a2a2a; border-radius:8px;
  padding:9px 11px; font:14px/1.4 var(--sans, sans-serif); width:100%; box-sizing:border-box;
}
.pc-giftform__field input:focus,
.pc-giftform__field textarea:focus{ outline:none; border-color:#B19B6A; }
.pc-giftform__field textarea{ resize:vertical; }
@media (max-width:560px){ .pc-giftform__grid{ grid-template-columns:1fr; } }

/* ── Gift card: denomination selector (product detail) ─────────────── */
.pc-denoms{ margin:0 0 16px; }
.pc-denoms__label{ display:block; margin:0 0 10px; font-size:12px; font-weight:600; letter-spacing:.04em; text-transform:uppercase; color:#B19B6A; }
.pc-denoms__pills{ display:flex; flex-wrap:wrap; gap:10px; }
.pc-denoms__pill{
  min-width:72px; padding:11px 18px; border:1px solid #575759; border-radius:12px;
  background:#1f1f1f; color:var(--text); font-size:15px; font-weight:600; cursor:pointer;
  transition:border-color .15s ease, background .15s ease, color .15s ease, transform .05s ease;
}
.pc-denoms__pill:hover{ border-color:#B19B6A; }
.pc-denoms__pill:active{ transform:scale(.97); }
.pc-denoms__pill.is-active{ border-color:#B19B6A; background:#B19B6A; color:#1a1a1a; }

/* ── Gift card: checkout redemption section ─────────────────────────── */
.newerp-checkout__giftcard{ margin-top:4px; }
.newerp-checkout__giftcard [data-newerp-giftcard-error]{ margin-top:8px; font-size:13px; }
.newerp-checkout__total-row [data-newerp-total="giftcard"]{ color:#B19B6A; }

/* ── Gift card: confirmation page codes ────────────────────────────── */
.newerp-order-confirmation__giftcards{ margin:28px 0 0; padding:20px; border:1px solid rgba(177,155,106,.30); border-radius:14px; background:rgba(177,155,106,.06); }
.newerp-order-confirmation__giftcard-list{ list-style:none; margin:14px 0 0; padding:0; display:flex; flex-direction:column; gap:10px; }
.newerp-order-confirmation__giftcard{ display:flex; flex-wrap:wrap; align-items:baseline; gap:8px 14px; padding:12px 14px; background:#171717; border-radius:10px; }
.newerp-order-confirmation__giftcard-code{ font-family:"JetBrains Mono","Courier New",monospace; font-size:17px; font-weight:700; letter-spacing:.10em; color:#fff; }
.newerp-order-confirmation__giftcard-amount{ font-weight:700; color:#B19B6A; }
.newerp-order-confirmation__giftcard-to{ font-size:12px; color:#a8b0bf; }
.pc-theme .pc-cart-upsell__btn{ height:38px; padding:0 16px; font-size:12px; }

/* ── Member-only wine: hidden price + login/join CTA ───────────────────── */
.pc-row__member-only,
.prod-price--member-only{ display:flex; flex-direction:column; gap:10px; align-items:flex-start; }
/* Phones/tablets centre the whole card, so centre the note + Login button too. */
@media (max-width:980px){ .pc-row__member-only{ align-items:center; width:100%; text-align:center; } .pc-row__member-only .pc-btn{ min-width:160px; justify-content:center; } }
.pc-member-note{ margin:0; color:var(--newerp-text-muted); font-size:13px; line-height:1.45; }
.prod-price--member-only .pc-member-note{ font-size:15px; }
.pc-member-note__levels{ display:block; margin-top:2px; opacity:.85; }
.pc-btn--sm{ padding:8px 16px; font-size:13px; }

/* =========================================================================
   Wine Club — club description + benefits + terms (signup summary sidebar).
   Mirrors Commerce7's tier blurb above the "Next shipment" preview.
   ========================================================================= */
.newerp-club-about{
  margin-top: 18px;
  padding-top: 18px;
  border-top: 1px solid var(--newerp-border);
}
.newerp-club-about__desc{
  margin: 0 0 14px;
  font-size: .85rem;
  line-height: 1.55;
  color: var(--newerp-text-muted);
}
.newerp-club-about__heading{
  margin: 0 0 8px;
  font-size: .8rem;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--newerp-primary);
}
.newerp-club-about__list{
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.newerp-club-about__item{
  position: relative;
  padding-left: 20px;
  font-size: .82rem;
  line-height: 1.45;
  color: var(--newerp-text);
}
.newerp-club-about__item::before{
  content: '';
  position: absolute;
  left: 0;
  top: .5em;
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: var(--newerp-primary);
}
.newerp-club-about__terms{
  margin: 14px 0 0;
  font-size: .72rem;
  font-style: italic;
  line-height: 1.5;
  color: var(--newerp-text-muted);
}

/* =========================================================================
   Wine Club — "Next shipment" preview panel (club signup summary sidebar).
   Mirrors Commerce7's upcoming-shipment card: date, wine line items, subtotal.
   ========================================================================= */
.newerp-club-nextship{
  margin-top: 18px;
  padding-top: 18px;
  border-top: 1px solid var(--newerp-border);
}
.newerp-club-nextship__title{
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 10px;
  margin: 0 0 4px;
  font-size: 1rem;
  color: var(--newerp-text);
}
.newerp-club-nextship__date{
  font-size: .85rem;
  font-weight: 600;
  color: var(--newerp-primary);
  white-space: nowrap;
}
.newerp-club-nextship__note{
  margin: 0 0 12px;
  font-size: .8rem;
  color: var(--newerp-text-muted);
}
.newerp-club-nextship__items{
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.newerp-club-nextship__item{
  display: grid;
  grid-template-columns: 28px 44px 1fr auto;
  align-items: center;
  gap: 10px;
}
.newerp-club-nextship__qty{
  font-variant-numeric: tabular-nums;
  font-weight: 600;
  color: var(--newerp-text-muted);
  font-size: .9rem;
}
.newerp-club-nextship__thumb{
  width: 44px;
  height: 44px;
  border-radius: var(--newerp-radius-sm);
  background: var(--newerp-bg-input);
  overflow: hidden;
  display: flex;
  align-items: center;
  justify-content: center;
}
.newerp-club-nextship__thumb img{
  width: 100%;
  height: 100%;
  object-fit: contain;
}
.newerp-club-nextship__name{
  font-size: .85rem;
  line-height: 1.3;
  color: var(--newerp-text);
}
.newerp-club-nextship__price{
  font-variant-numeric: tabular-nums;
  font-size: .85rem;
  color: var(--newerp-text);
  white-space: nowrap;
}
.newerp-club-nextship__subtotal{
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-top: 20px;
  padding-top: 18px;
  padding-bottom: 4px;
  border-top: 1px solid var(--newerp-border);
  font-weight: 700;
  color: var(--newerp-text);
}
/* Breathing room around the Confirm membership button (was cramped against subtotal) */
#newerp-club-submit{
  margin: 22px 0 10px;
}

/* =========================================================================
   Wine Club — member-centre renewal: expiry reminder, auto-renew, renew panel.
   ========================================================================= */
.newerp-account .newerp-alert--warning,
.newerp-club .newerp-alert--warning{
  background: rgba(177,155,106,.12);
  border: 1px solid var(--newerp-primary);
  color: #e9dcc0;
}
.newerp-subscription__reminder{
  margin: 14px 0 0;
  font-weight: 600;
}
.newerp-chip{
  display: inline-block;
  margin-left: 8px;
  padding: 2px 10px;
  border-radius: 999px;
  font-size: .72rem;
  font-weight: 600;
  letter-spacing: .02em;
  background: var(--newerp-bg-input);
  color: var(--newerp-text-muted);
  vertical-align: middle;
}
.newerp-chip--ok{
  background: rgba(76,160,118,.18);
  color: #8fd3ab;
}
.newerp-subscription__renewal-box{
  margin: 6px 0 8px;
  padding: 18px;
  border: 1px solid var(--newerp-border);
  border-radius: var(--newerp-radius);
  background: var(--newerp-bg-card);
}
.newerp-subscription__autorenew{
  display: flex;
  align-items: flex-start;
  gap: 10px;
  margin-bottom: 16px;
}
.newerp-subscription__autorenew input[type="checkbox"]{
  margin-top: 3px;
  flex: 0 0 auto;
}
.newerp-subscription__autorenew .newerp-form__hint{
  display: block;
  margin-top: 2px;
}
.newerp-subscription__autorenew-status{
  color: #8fd3ab;
  font-weight: 700;
}
.newerp-subscription__renew-toggle{
  width: 100%;
}
.newerp-subscription__renew-panel{
  margin-top: 16px;
  padding-top: 16px;
  border-top: 1px solid var(--newerp-border);
}

/* Club signup — Ship/Pickup delivery toggle */
.newerp-club-signup__delivery{
  display: flex;
  gap: 12px;
  flex-wrap: wrap;
  margin-bottom: 14px;
}
.newerp-club-signup__delivery .newerp-radio{
  flex: 1 1 160px;
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 12px 14px;
  border: 1px solid var(--newerp-border);
  border-radius: var(--newerp-radius-sm);
  background: var(--newerp-bg-input);
  cursor: pointer;
}

/* Gift card: one recipient form per card (2026-10-24) */
.pc-giftform__summary{ margin:-4px 0 12px; font-size:13px; color:var(--accent); }
.pc-giftform__list{ display:grid; gap:12px; }
.pc-giftform__card{ padding:12px; border:1px solid rgba(177,155,106,.22); border-radius:12px; background:rgba(0,0,0,.18); }
.pc-giftform__cardhead{ display:flex; align-items:center; justify-content:space-between; margin:0 0 10px; }
.pc-giftform__cardtitle{ font:700 11px/1 var(--sans); letter-spacing:.14em; text-transform:uppercase; color:var(--accent); }
.pc-giftform__remove{ width:26px; height:26px; border:1px solid #3a3a3a; border-radius:50%; background:transparent; color:var(--muted); font-size:16px; line-height:1; cursor:pointer; padding:0; }
.pc-giftform__remove:hover{ color:var(--text); border-color:var(--accent); }
.pc-giftform__add{ margin:12px 0 0; padding:0; border:0; background:transparent; color:var(--accent); font:600 13px var(--sans); cursor:pointer; }
.pc-giftform__add:hover{ text-decoration:underline; }
.pc-giftform__add span{ display:inline-flex; width:20px; height:20px; align-items:center; justify-content:center; border:1px solid var(--accent); border-radius:50%; margin-right:6px; font-size:14px; }
.pc-cart-line__gift-to{ color:var(--muted); font-size:12.5px; }
.pc-cart-line__gift-to span{ color:var(--text); }
