/* =========================================================
   Prop Haven — Backlot (permanent dark theme)
   Brand: wine #6B003E (dominant), gold #FECC02 (sparing accent)
   ========================================================= */

@font-face{font-family:'Fraunces';font-style:normal;font-weight:500;font-display:swap;src:url('../fonts/fraunces-500.woff2') format('woff2');}
@font-face{font-family:'Fraunces';font-style:normal;font-weight:600;font-display:swap;src:url('../fonts/fraunces-600.woff2') format('woff2');}
@font-face{font-family:'Fraunces';font-style:italic;font-weight:500;font-display:swap;src:url('../fonts/fraunces-500-italic.woff2') format('woff2');}
@font-face{font-family:'Work Sans';font-style:normal;font-weight:400;font-display:swap;src:url('../fonts/work-sans-400.woff2') format('woff2');}
@font-face{font-family:'Work Sans';font-style:normal;font-weight:600;font-display:swap;src:url('../fonts/work-sans-600.woff2') format('woff2');}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:400;font-display:swap;src:url('../fonts/plex-mono-400.woff2') format('woff2');}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:600;font-display:swap;src:url('../fonts/plex-mono-600.woff2') format('woff2');}
@font-face{font-family:'Work Sans';font-style:normal;font-weight:700;font-display:swap;src:url('../fonts/work-sans-700.woff2') format('woff2');}
@font-face{font-family:'Work Sans';font-style:normal;font-weight:900;font-display:swap;src:url('../fonts/work-sans-900.woff2') format('woff2');}

:root{
  --ph-bg:#1B0512;
  --ph-surface:#2A0A1C;
  --ph-surface-raised:#3B0C28;
  --ph-ink:#F6EFEF;
  --ph-ink-soft:#CBA6BD;
  --ph-wine:#6B003E;
  --ph-wine-light:#8A1058;
  --ph-wine-tint:#3D0022;
  --ph-gold:#FECC02;
  --ph-gold-soft:#FED94D;
  --ph-gold-ink:#1D1206;
  --ph-line:#5A1C40;
  --ph-radius:10px;
}

/* --- WooCommerce store notice ("refundable deposit…") ---
   WooCommerce pins this as a fixed bar that floats over the page and sits on
   top of content at the bottom of the viewport. The message is genuinely
   useful for renters, so keep it — but restyle it to match the theme and
   reserve space for it so it never covers the footer or product cards. */
.woocommerce-store-notice,
p.woocommerce-store-notice,
.woocommerce-store-notice.demo_store
{
  position:fixed !important;
  left:0;right:0;bottom:0;top:auto !important;
  margin:0 !important;
  padding:12px 56px 12px 24px !important;
  background:var(--ph-wine) !important;
  color:rgba(255,255,255,.9) !important;
  border-top:1px solid var(--ph-line) !important;
  font-family:'Work Sans',sans-serif !important;
  font-size:13.5px !important;
  line-height:1.45 !important;
  text-align:center;
  box-shadow:0 -6px 24px rgba(0,0,0,.35);
  z-index:9998 !important; /* below the header (9999) so it never overlaps it */
}
.woocommerce-store-notice a{color:var(--ph-gold) !important;text-decoration:none;}
.woocommerce-store-notice a:hover{text-decoration:underline;}
.woocommerce-store-notice a.woocommerce-store-notice__dismiss-link,
.woocommerce-store-notice__dismiss-link
{
  position:absolute !important;
  right:16px !important;top:50% !important;transform:translateY(-50%) !important;
  width:26px !important;height:26px !important;
  min-width:26px !important;
  display:inline-flex !important;align-items:center !important;justify-content:center !important;
  border-radius:50% !important;
  border:none !important;
  color:rgba(255,255,255,.8) !important;
  font-size:0 !important;
  background:rgba(255,255,255,.12) !important;
  transition:background-color .2s ease,color .2s ease;
}
.woocommerce-store-notice a.woocommerce-store-notice__dismiss-link::before,
.woocommerce-store-notice__dismiss-link::before
{
  content:"" !important;
  display:block !important;
  width:12px !important;height:12px !important;
  flex:none !important;
  background-color:currentColor !important;
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='3' stroke-linecap='round'%3E%3Cline x1='18' y1='6' x2='6' y2='18'/%3E%3Cline x1='6' y1='6' x2='18' y2='18'/%3E%3C/svg%3E") no-repeat center/contain;
  mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='3' stroke-linecap='round'%3E%3Cline x1='18' y1='6' x2='6' y2='18'/%3E%3Cline x1='6' y1='6' x2='18' y2='18'/%3E%3C/svg%3E") no-repeat center/contain;
}
.woocommerce-store-notice a.woocommerce-store-notice__dismiss-link:hover,
.woocommerce-store-notice__dismiss-link:hover
{
  background:var(--ph-gold) !important;
  color:var(--ph-gold-ink) !important;
}
/* reserve space so the fixed bar never sits on top of the footer */
body.woocommerce-demo-store{padding-bottom:52px;}
@media (max-width:600px){
  .woocommerce-store-notice{font-size:12.5px !important;padding:10px 48px 10px 16px !important;}
  body.woocommerce-demo-store{padding-bottom:64px;}
}

/* --- base typography --- */
h1,h2,h3,h4,.ph-serif{
  font-family:'Fraunces',serif;
  font-weight:600;
  letter-spacing:-.01em;
  text-wrap:balance;
}
.ph-mono{font-family:'IBM Plex Mono',monospace;}
a{transition:color .2s ease, background-color .2s ease, border-color .2s ease, box-shadow .2s ease;}

/* --- buttons --- */
.ph-btn{
  display:inline-flex;align-items:center;gap:8px;
  padding:14px 28px;
  border-radius:100px;
  background:var(--ph-gold);
  color:var(--ph-gold-ink) !important;
  font-family:'Work Sans',sans-serif;
  font-weight:600;font-size:14px;
  text-decoration:none;
  border:2px solid transparent;
  cursor:pointer;
  transition:all .2s ease;
}
.ph-btn:hover{background:#e6b800;transform:translateY(-1px);box-shadow:0 4px 16px rgba(254,204,2,.25);}
.ph-btn--wine{background:var(--ph-wine);color:#fff !important;border-color:var(--ph-wine);}
.ph-btn--wine:hover{background:var(--ph-wine-light);border-color:var(--ph-wine-light);box-shadow:0 4px 16px rgba(107,0,62,.3);}
.ph-btn--gold{background:var(--ph-gold);color:var(--ph-gold-ink) !important;}
.ph-btn--gold:hover{background:#e6b800;box-shadow:0 4px 16px rgba(254,204,2,.25);}
.ph-btn--ghost{
  background:transparent;
  color:var(--ph-ink) !important;
  border:2px solid var(--ph-line);
}
.ph-btn--ghost:hover{border-color:var(--ph-gold);color:var(--ph-gold) !important;background:rgba(254,204,2,.06);}

/* =========================================================
   HOMEPAGE (front-page.php)
   ========================================================= */
.ph-page.ph-home{padding-top:0;padding-bottom:40px;}
.ph-wrap{max-width:1240px;margin:0 auto;padding:0 32px;}
.ph-eyebrow{
  font-family:'Fraunces',serif;
  font-style:italic;
  font-weight:500;
  font-size:15px;
  color:var(--ph-gold);
  margin:0 0 12px;
  letter-spacing:.02em;
}

/* --- HERO --- */
.ph-hero{
  position:relative;
  padding:80px 0 72px;
  background:var(--ph-wine);
  overflow:hidden;
  width:100vw;
  margin-left:calc(50% - 50vw);
}
.ph-hero::before{
  content:"";
  position:absolute;
  inset:0;
  background:
    radial-gradient(ellipse 70% 80% at 75% 30%, rgba(254,204,2,.08), transparent 60%),
    radial-gradient(ellipse 50% 60% at 20% 80%, rgba(107,0,62,.4), transparent 50%);
  z-index:0;
}
.ph-hero-inner{
  position:relative;
  z-index:1;
  display:grid;
  grid-template-columns:1fr .8fr;
  gap:48px;
  align-items:center;
}
@media (max-width:900px){
  .ph-hero{padding:56px 0 48px;}
  .ph-hero-inner{grid-template-columns:1fr;gap:32px;}
}
.ph-hero .ph-eyebrow{color:var(--ph-gold-soft);}
.ph-hero h1{
  font-size:clamp(34px,4.4vw,56px);
  line-height:1.06;
  margin:0 0 20px;
  color:#fff;
}
.ph-hero p{
  font-size:16.5px;
  line-height:1.65;
  color:rgba(255,255,255,.72);
  max-width:44ch;
  margin:0 0 28px;
}
.ph-hero-ctas{display:flex;gap:14px;flex-wrap:wrap;}
.ph-hero-ctas .ph-btn{background:var(--ph-gold);color:var(--ph-gold-ink) !important;border-color:var(--ph-gold);}
.ph-hero-ctas .ph-btn:hover{background:#e6b800;border-color:#e6b800;}
.ph-hero-ctas .ph-btn--ghost{
  background:transparent;
  color:#fff !important;
  border-color:rgba(255,255,255,.35);
}
.ph-hero-ctas .ph-btn--ghost:hover{
  border-color:#fff;
  background:rgba(255,255,255,.08);
}

.ph-hero-photo{
  position:relative;
  aspect-ratio:3/4;
  border-radius:16px;
  overflow:hidden;
  box-shadow:0 24px 64px rgba(0,0,0,.4), 0 0 0 1px rgba(255,255,255,.06);
  background:var(--ph-wine-tint);
}
.ph-hero-photo img{
  width:100%;height:100%;
  object-fit:cover;
  display:block;
}

/* --- CATEGORY TILES --- */
.ph-cats{padding:72px 0 16px;}
.ph-section-head{
  display:flex;align-items:flex-end;justify-content:space-between;
  gap:20px;margin-bottom:32px;flex-wrap:wrap;
}
.ph-section-head h2{font-size:28px;margin:0;color:var(--ph-ink);}
.ph-cat-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit, minmax(155px,1fr));
  gap:12px;
}
.ph-cat-tile{
  position:relative;
  border-radius:var(--ph-radius);
  overflow:hidden;
  aspect-ratio:1/1;
  display:flex;
  align-items:flex-end;
  padding:18px;
  text-decoration:none;
  transition:transform .25s ease, box-shadow .25s ease;
  border:1px solid var(--ph-line);
}
.ph-cat-tile:nth-child(8n+1){background:linear-gradient(145deg, #4A0E30, #2A0518);}
.ph-cat-tile:nth-child(8n+2){background:linear-gradient(145deg, #3D1628, #1E0A14);}
.ph-cat-tile:nth-child(8n+3){background:linear-gradient(145deg, #52173A, #2E0A1E);}
.ph-cat-tile:nth-child(8n+4){background:linear-gradient(145deg, #401230, #220718);}
.ph-cat-tile:nth-child(8n+5){background:linear-gradient(145deg, #381428, #1B0512);}
.ph-cat-tile:nth-child(8n+6){background:linear-gradient(145deg, #4E1236, #280A1A);}
.ph-cat-tile:nth-child(8n+7){background:linear-gradient(145deg, #441030, #200814);}
.ph-cat-tile:nth-child(8n+8){background:linear-gradient(145deg, #3A1024, #1C0810);}
.ph-cat-tile:hover{
  transform:translateY(-3px);
  box-shadow:0 8px 24px rgba(0,0,0,.3);
  border-color:var(--ph-wine-light);
}
.ph-cat-tile img{
  position:absolute;
  inset:0;
  z-index:0;
  width:100%;
  height:100%;
  object-fit:cover;
  transition:transform .4s ease;
}
.ph-cat-tile:hover img{transform:scale(1.06);}
.ph-cat-tile::after{
  content:"";position:absolute;inset:0;
  background:linear-gradient(180deg,transparent 30%, rgba(0,0,0,.55));
  transition:opacity .25s ease;
}
.ph-cat-tile:hover::after{opacity:.8;}
.ph-cat-tile span{
  position:relative;z-index:1;
  font-family:'Fraunces',serif;
  font-weight:600;
  font-size:16px;
  color:#fff;
  text-shadow:0 1px 4px rgba(0,0,0,.3);
}

/* --- PRODUCT GRID --- */
.ph-products{padding:64px 0 72px;}
.ph-grid{
  display:grid;
  grid-template-columns:repeat(auto-fill, minmax(240px,1fr));
  gap:24px;
}
.ph-card{
  text-decoration:none;
  color:inherit;
  display:block;
  border-radius:var(--ph-radius);
  padding:12px 12px 16px;
  background:var(--ph-surface);
  border:1px solid transparent;
  transition:border-color .25s ease, transform .25s ease, box-shadow .25s ease;
}
.ph-card:hover{
  border-color:var(--ph-line);
  transform:translateY(-3px);
  box-shadow:0 12px 32px rgba(0,0,0,.3);
}
.ph-card-photo{
  aspect-ratio:4/5;
  width:100%;
  border-radius:calc(var(--ph-radius) - 4px);
  overflow:hidden;
  background:var(--ph-wine-tint);
  margin-bottom:14px;
}
.ph-card-photo img{
  width:100%;height:100%;
  object-fit:cover;
  display:block;
  transition:transform .4s ease;
}
.ph-card:hover .ph-card-photo img{transform:scale(1.05);}
.ph-card-cat{
  font-size:10.5px;
  text-transform:uppercase;
  letter-spacing:.08em;
  color:var(--ph-ink-soft);
  margin:0 0 2px;
  line-height:1.3;
}
.ph-card-title{
  font-family:'Fraunces',serif;
  font-weight:600;
  font-size:19px;
  margin:0 0 10px;
  color:var(--ph-ink);
  line-height:1.22;
}
.ph-card-row{display:flex;align-items:center;justify-content:space-between;}
.ph-card-price{
  font-family:'IBM Plex Mono',monospace;
  font-size:12.5px;
  font-weight:600;
  background:var(--ph-gold);
  color:var(--ph-gold-ink);
  padding:3px 10px;
  border-radius:6px;
}

/* --- LOYALTY CTA --- */
.ph-loyalty{
  margin:0 0 72px;
  padding:52px 44px;
  border-radius:16px;
  background:linear-gradient(135deg, var(--ph-wine), var(--ph-wine-light));
  color:#fff;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:32px;
  flex-wrap:wrap;
  border:1px solid rgba(255,255,255,.08);
}
.ph-loyalty h2{color:#fff;margin:0 0 8px;font-size:24px;}
.ph-loyalty p{margin:0;color:rgba(255,255,255,.7);max-width:46ch;}

@media (prefers-reduced-motion: reduce){
  .ph-card-photo img{transition:none;}
  .ph-cat-tile{transition:none;}
  .ph-card{transition:none;}
  .ph-btn{transition:none;}
}

/* =========================================================
   RESPONSIVE
   ========================================================= */
@media (max-width:600px){
  .ph-wrap{padding:0 20px;}
  .ph-hero{padding:44px 0 40px;}
  .ph-hero h1{font-size:32px;}
  .ph-hero-photo{aspect-ratio:1/1;border-radius:12px;}
  .ph-cats{padding:48px 0 8px;}
  .ph-cat-grid{grid-template-columns:repeat(auto-fit, minmax(130px,1fr));gap:10px;}
  .ph-cat-tile{aspect-ratio:4/3;padding:14px;}
  .ph-products{padding:48px 0 56px;}
  .ph-grid{grid-template-columns:repeat(auto-fill, minmax(160px,1fr));gap:14px;}
  .ph-card{padding:8px 8px 14px;}
  .ph-card-title{font-size:16px;}
  .ph-loyalty{padding:36px 24px;border-radius:14px;}
  .ph-loyalty h2{font-size:20px;}
  .ph-section-head h2{font-size:22px;}
  .ph-section-head{flex-direction:column;align-items:flex-start;gap:12px;}
}

/* =========================================================
   SHOP / PRODUCT-CATEGORY ARCHIVES
   (theme's WooCommerce loop — .cmsmasters_product markup)
   ========================================================= */

/* --- page title: no banner background ---
   The headline used to carry its own wine fill, which sat directly under the
   wine header and read as one oversized block. Drop the background entirely
   so the title sits on the page and the header reads as its own bar. */

/* The theme reserves a 50px invisible spacer to vertically centre the title
   against a banner image that no longer exists — collapse it. The 160px of
   padding on .headline_outer is the fixed-header clearance and must stay. */

/* Product archives run full-width: the theme puts a product-search widget in
   a right sidebar that squeezed the grid (858px) and clipped card prices.
   Force the content column full-width and hide that sidebar — the search now
   lives in the toolbar below instead. */

/* --- category "Browse" dropdown + toolbar search (functions.php) --- */
.ph-shop-filter{
  display:flex;
  align-items:center;
  gap:14px 20px;
  flex-wrap:wrap;
  margin:0 0 26px;
  border-bottom:1px solid var(--ph-line);
  padding-bottom:22px;
}
.ph-cat-select-wrap{
  position:relative;
  flex:0 0 auto;
}
/* Specificity note: the cart/checkout block later sets `.woocommerce select
   { background: ... !important }` — a shorthand that wipes background-image.
   Two classes here (0,2,0) outrank that (0,1,1), so the chevron survives. */
.ph-shop-filter .ph-cat-select,
.ph-cat-select
{
  -webkit-appearance:none !important;-moz-appearance:none !important;appearance:none !important;
  background-color:var(--ph-surface) !important;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23FECC02' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E") !important;
  background-repeat:no-repeat !important;
  background-position:right 18px center !important;
  color:var(--ph-ink) !important;
  border:1px solid var(--ph-line) !important;
  border-radius:100px !important;
  padding:12px 44px 12px 20px !important;
  font-family:'Work Sans',sans-serif !important;
  font-size:13.5px !important;
  font-weight:600 !important;
  line-height:1.3 !important;
  text-decoration:none !important;
  cursor:pointer;
  min-width:220px;
  height:auto !important;
  transition:border-color .2s ease;
}
.ph-shop-filter .ph-cat-select:hover,
.ph-shop-filter .ph-cat-select:focus,
.ph-cat-select:hover,
.ph-cat-select:focus
{border-color:var(--ph-gold) !important;outline:none !important;}
/* The open list is drawn by the OS, which mostly ignores author styling —
   forcing dark-on-dark here made the options unreadable. Use explicit,
   high-contrast values that survive both native and emulated rendering. */
.ph-cat-select option,
.ph-cat-select optgroup
{
  background-color:#2A0A1C;
  color:#FFFFFF;
  font-weight:500;
}
.ph-cat-select option:checked,
.ph-cat-select option:hover
{
  background-color:#6B003E;
  color:#FFFFFF;
}
.ph-shop-search{
  flex:0 0 250px;
  display:flex;
  position:relative;
  margin-left:auto;
}
.ph-shop-search-field{
  width:100%;
  background:var(--ph-surface);
  border:1px solid var(--ph-line);
  border-radius:100px;
  color:var(--ph-ink);
  font-family:'Work Sans',sans-serif;
  font-size:13.5px;
  padding:10px 44px 10px 18px;
}
.ph-shop-search-field::placeholder{color:var(--ph-ink-soft);opacity:.85;}
.ph-shop-search-field:focus{outline:none;border-color:var(--ph-gold);}
.ph-shop-search-btn{
  position:absolute;
  right:5px;top:50%;transform:translateY(-50%);
  display:flex;align-items:center;justify-content:center;
  width:32px;height:32px;
  padding:0;border:none;border-radius:50%;
  background:transparent;
  color:var(--ph-ink-soft);
  cursor:pointer;
  transition:color .2s ease, background-color .2s ease;
}
.ph-shop-search-btn:hover{color:var(--ph-gold-ink);background:var(--ph-gold);}
@media (max-width:720px){
  .ph-shop-search{flex-basis:100%;margin-left:0;}
}
.ph-filter-pill{
  display:inline-flex;
  align-items:center;
  gap:7px;
  padding:8px 16px;
  border-radius:100px;
  background:var(--ph-surface);
  border:1px solid var(--ph-line);
  color:var(--ph-ink-soft) !important;
  font-family:'Work Sans',sans-serif;
  font-size:13px;
  font-weight:600;
  text-decoration:none;
  line-height:1;
  transition:all .2s ease;
}
.ph-filter-pill:hover{
  border-color:var(--ph-wine-light);
  color:var(--ph-ink) !important;
  transform:translateY(-1px);
}
.ph-filter-pill.is-active{
  background:var(--ph-gold);
  border-color:var(--ph-gold);
  color:var(--ph-gold-ink) !important;
}
.ph-filter-count{
  font-family:'IBM Plex Mono',monospace;
  font-size:11px;
  font-weight:600;
  opacity:.6;
}
.ph-filter-pill.is-active .ph-filter-count{opacity:.7;}

/* --- sort row + result count --- */
.woocommerce-ordering select,
.woocommerce .woocommerce-ordering select
{
  background:var(--ph-surface) !important;
  color:var(--ph-ink) !important;
  border:1px solid var(--ph-line) !important;
  border-radius:100px !important;
  padding:10px 40px 10px 18px !important;
  font-family:'Work Sans',sans-serif !important;
  font-size:13px !important;
  font-weight:600 !important;
  cursor:pointer;
  -webkit-appearance:none;-moz-appearance:none;appearance:none;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23CBA6BD' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E") !important;
  background-repeat:no-repeat !important;
  background-position:right 16px center !important;
}
.woocommerce-ordering select option{
  background:var(--ph-surface) !important;
  color:var(--ph-ink) !important;
}
.woocommerce-result-count,
.woocommerce .woocommerce-result-count
{
  color:var(--ph-ink-soft) !important;
  font-size:13px !important;
  font-family:'IBM Plex Mono',monospace !important;
}

/* --- product search box (category archives) --- */
.search_bar_wrap{margin-bottom:20px;}
.woocommerce-product-search{position:relative;max-width:320px;}
.woocommerce-product-search .search_field{margin:0;position:relative;}
.woocommerce-product-search .search-field{
  width:100% !important;
  background:var(--ph-surface) !important;
  border:1px solid var(--ph-line) !important;
  border-radius:100px !important;
  color:var(--ph-ink) !important;
  font-family:'Work Sans',sans-serif !important;
  font-size:13.5px !important;
  padding:11px 46px 11px 18px !important;
}
.woocommerce-product-search .search-field::placeholder{color:var(--ph-ink-soft) !important;opacity:.8;}
.woocommerce-product-search .search-field:focus{
  border-color:var(--ph-gold) !important;
  outline:none !important;
}
.woocommerce-product-search button,
.woocommerce-product-search [type="submit"]
{
  position:absolute !important;
  right:4px;top:50%;transform:translateY(-50%);
  width:34px;height:34px;
  padding:0 !important;
  border:none !important;
  border-radius:50% !important;
  background:transparent !important;
  color:var(--ph-ink-soft) !important;
  font-size:0 !important;
  cursor:pointer;
}
.woocommerce-product-search button::before{
  content:"";
  display:block;
  width:16px;height:16px;
  margin:0 auto;
  background-color:var(--ph-ink-soft);
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cline x1='21' y1='21' x2='16.65' y2='16.65'/%3E%3C/svg%3E") no-repeat center/contain;
  mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cline x1='21' y1='21' x2='16.65' y2='16.65'/%3E%3C/svg%3E") no-repeat center/contain;
}

/* --- product cards: "Backlot" pcard (woocommerce/content-product.php) ---
   Matches the approved design artifact: dark card on the page background
   with a line border, wine/gold photo area, and a Day/Week toggle beside a
   gold price. The product loop <ul> is switched from the theme's float
   columns to a real CSS grid for even gutters. */
.woocommerce ul.products
{
  display:grid !important;
  grid-template-columns:repeat(4, minmax(0, 1fr));
  gap:26px !important;
  margin:0 !important;
  padding:0 !important;
  list-style:none !important;
}
.woocommerce ul.products::before,
.woocommerce ul.products::after
{content:none !important;display:none !important;}
.woocommerce ul.products li.product
{
  width:auto !important;
  margin:0 !important;
  padding:0 !important;
  float:none !important;
  clear:none !important;
  min-width:0;
}
@media (max-width:1024px){
  .woocommerce ul.products
{grid-template-columns:repeat(3, minmax(0, 1fr));}
}
@media (max-width:720px){
  .woocommerce ul.products
{grid-template-columns:repeat(2, minmax(0, 1fr));gap:16px !important;}
}

.pcard{
  display:flex;
  flex-direction:column;
  height:100%;
  background:var(--ph-bg);
  border:1px solid var(--ph-line);
  border-radius:var(--ph-radius);
  overflow:hidden;
  transition:border-color .25s ease, transform .25s ease, box-shadow .25s ease;
}
.pcard:hover{
  border-color:var(--ph-wine-light);
  transform:translateY(-3px);
  box-shadow:0 14px 34px rgba(0,0,0,.35);
}
.pcard-photo{
  position:relative;
  display:block;
  aspect-ratio:4/5;
  width:100%;
  overflow:hidden;
  background:radial-gradient(120% 100% at 30% 0%, var(--ph-wine), var(--ph-wine-tint) 65%);
}
.pcard-photo::after{
  content:"";
  position:absolute;inset:0;
  background:radial-gradient(50% 40% at 72% 8%, rgba(254,204,2,.22), transparent 72%);
  pointer-events:none;
}
.pcard-photo img{
  position:relative;
  z-index:1;
  width:100% !important;height:100% !important;
  max-width:100%;
  margin:0 !important;
  object-fit:cover;
  display:block;
  transition:transform .4s ease;
}
.pcard:hover .pcard-photo img{transform:scale(1.05);}
.pcard-body{
  display:flex;
  flex-direction:column;
  flex:1 1 auto;
  padding:15px 15px 16px;
}
.pcard-cat{
  font-size:10.5px;
  text-transform:uppercase;
  letter-spacing:.08em;
  color:var(--ph-ink-soft);
  margin:0 0 7px;
}
.pcard-title{
  font-family:'Fraunces',serif;
  font-weight:600;
  font-size:16px;
  line-height:1.22;
  margin:0 0 14px;
}
.pcard-title a{color:var(--ph-ink);text-decoration:none;}
.pcard-title a:hover{color:var(--ph-gold);}
.pcard-row{
  display:flex;
  align-items:center;
  justify-content:space-between;
  flex-wrap:wrap;
  gap:8px 10px;
  margin-top:auto;
}
.pcard-row .price{margin-left:auto;}
.duration{
  display:inline-flex;
  align-items:center;
  border-radius:100px;
  padding:3px;
  background:var(--ph-wine-tint);
  border:1px solid var(--ph-line);
  font-family:'IBM Plex Mono',monospace;
  font-size:11px;
}
.duration button,
.duration span
{
  padding:5px 11px;
  border-radius:100px;
  border:none;
  background:transparent;
  color:var(--ph-ink-soft);
  font-family:'IBM Plex Mono',monospace;
  font-size:11px;
  line-height:1;
  cursor:pointer;
  transition:background-color .18s ease, color .18s ease;
}
.duration button.active,
.duration span.active
{
  background:var(--ph-gold);
  color:var(--ph-gold-ink);
}
.duration--static{cursor:default;}
.duration--static span{cursor:default;}
.price{
  font-family:'IBM Plex Mono',monospace;
  font-size:15px;
  font-weight:600;
  color:var(--ph-gold);
  font-variant-numeric:tabular-nums;
  white-space:nowrap;
}
.price .woocommerce-Price-amount,
.price bdi
{color:var(--ph-gold) !important;}
.price .woocommerce-Price-currencySymbol{opacity:.75;font-weight:500;}

/* --- pagination ---
   The theme prints two shapes: on page 1 the links are direct children of
   .cmsmasters_wrap_pagination; on inner pages they're wrapped in
   <ul class="page-numbers"><li>. So make BOTH the wrap and that inner <ul>
   the flex row, and only pill the actual <a>/<span> links — never the <ul>
   (which also carries .page-numbers and was being styled as a stray box). */

/* hide any stray icon spans the theme prints outside the prev/next links */

/* pill = the real page links/labels only (a.page-numbers, span.page-numbers) */

/* active page — inverted (gold fill, dark text). Selector must out-specify
   the span.page-numbers pill rule above, which also carries !important. */

/* prev/next: label + chevron drawn entirely with pseudo-elements — the
   theme's own arrow <span> renders unreliably (abs-positioned glyph), so
   hide it and control order myself. ::before is the first flex item,
   ::after the last → "‹ Prev" and "Next ›". */

/* both label and chevron are flex items so they sit on the optical centre */

/* chevron glyph shared bits */

/* --- shop responsive --- */
@media (max-width:600px){
  .ph-filter-pill{padding:7px 13px;font-size:12px;}
  .pcard-title{font-size:14px;}
  .pcard-body{padding:12px 12px 14px;}
  .price{font-size:14px;}
  .duration button,.duration span{padding:5px 9px;}
}

/* --- shop toolbar order on small screens ---
   WooCommerce prints the result count before the sort control, so stacked on
   mobile you read "Showing 1-16 of 1159" before you can act on it. Put the
   control first and demote the count to a quiet line under it. */
@media (max-width:782px){
  
  
  
  
  
  .woocommerce-ordering select{width:100%;}
  .ph-shop-search{flex-basis:100% !important;margin-left:0 !important;}
  .ph-cat-select{width:100%;min-width:0;}
  .ph-cat-select-wrap{flex:1 1 100%;}
}

/* =========================================================
   SINGLE PRODUCT PAGE
   Audit found: breadcrumbs/SKU/category at ~1.5:1 contrast
   (near-invisible), and white variation select / qty / add-to-cart
   controls on the dark ground. All addressed below.
   ========================================================= */

/* --- breadcrumbs --- */
.single-product .woocommerce-breadcrumb,
.woocommerce-breadcrumb
{
  color:var(--ph-ink-soft) !important;
  font-size:13px !important;
  margin-bottom:22px !important;
}
.single-product .woocommerce-breadcrumb a,
.woocommerce-breadcrumb a
{
  color:var(--ph-ink-soft) !important;
  text-decoration:none;
}
.single-product .woocommerce-breadcrumb a:hover,
.woocommerce-breadcrumb a:hover
{color:var(--ph-gold) !important;}

/* --- gallery --- */

.single-product .woocommerce-product-gallery
{
  border-radius:var(--ph-radius);
  overflow:hidden;
  background:var(--ph-surface);
  border:1px solid var(--ph-line);
}
.single-product .images img,
.single-product .woocommerce-product-gallery img
{display:block;width:100%;height:auto;}

/* --- summary column --- */
.single-product .summary .product_title,
.single-product .summary h1
{
  font-family:'Fraunces',serif !important;
  font-weight:600 !important;
  color:var(--ph-ink) !important;
  font-size:30px !important;
  line-height:1.15 !important;
  margin:0 0 12px !important;
}
/* star ratings are meaningless for rentals (always 0) — hide site-wide */

.single-product .woocommerce-product-rating,
.single-product .star-rating
{display:none !important;}

.single-product .summary .price,
.single-product .summary p.price
{
  font-family:'IBM Plex Mono',monospace !important;
  color:var(--ph-gold) !important;
  font-size:22px !important;
  font-weight:600 !important;
  /* no bottom margin: .cmsmasters_product_info_wrap already spaces this from
     the short description. Having both produced a doubled 34px gap. */
  margin:0 !important;
}
.single-product .summary .price .woocommerce-Price-amount,
.single-product .summary .price bdi
{color:var(--ph-gold) !important;}
.single-product .summary .price del{color:var(--ph-ink-soft) !important;opacity:.6;}
.single-product .summary .price ins{text-decoration:none;}
.single-product .woocommerce-product-details__short-description,
.single-product .summary p
{color:var(--ph-ink-soft);line-height:1.7;}

/* --- variation form (Rent Duration) --- */
.single-product table.variations{
  width:100%;
  border-collapse:separate !important;
  border-spacing:0 !important;
  margin:0 0 18px !important;
  background:transparent !important;
}
.single-product table.variations tr,
.single-product table.variations td,
.single-product table.variations th
{
  border:none !important;
  background:transparent !important;
  padding:0 0 10px !important;
  display:block;
  width:100%;
}
.single-product table.variations th.label,
.single-product table.variations .label label
{
  color:var(--ph-ink) !important;
  font-family:'Work Sans',sans-serif !important;
  font-weight:600 !important;
  font-size:12px !important;
  text-transform:uppercase;
  letter-spacing:.07em;
  margin-bottom:6px;
}
.single-product .variations select,
.single-product select.qty,
.woocommerce div.product form.cart .variations select
{
  -webkit-appearance:none;-moz-appearance:none;appearance:none;
  width:100% !important;
  background-color:var(--ph-surface) !important;
  color:var(--ph-ink) !important;
  border:1px solid var(--ph-line) !important;
  border-radius:10px !important;
  padding:13px 44px 13px 16px !important;
  font-family:'Work Sans',sans-serif !important;
  font-size:14px !important;
  font-weight:600 !important;
  cursor:pointer;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23FECC02' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E") !important;
  background-repeat:no-repeat !important;
  background-position:right 16px center !important;
}
.single-product .variations select:focus{border-color:var(--ph-gold) !important;outline:none !important;}
.single-product .variations select option{background:var(--ph-surface) !important;color:var(--ph-ink) !important;}
.single-product .reset_variations{
  color:var(--ph-ink-soft) !important;
  font-size:12.5px;
  text-decoration:none;
}
.single-product .reset_variations:hover{color:var(--ph-gold) !important;}
.single-product .woocommerce-variation-price{margin:0 0 16px;}
.single-product .woocommerce-variation-price .price{font-size:20px !important;}

/* --- quantity + add to cart --- */
.single-product form.cart{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:12px;
  margin-bottom:24px;
}
.single-product .quantity{margin:0 !important;}
.single-product .quantity input.qty,
.woocommerce div.product form.cart .quantity input.qty
{
  width:78px !important;
  height:52px !important;
  background:var(--ph-surface) !important;
  color:var(--ph-ink) !important;
  border:1px solid var(--ph-line) !important;
  border-radius:10px !important;
  font-family:'IBM Plex Mono',monospace !important;
  font-size:15px !important;
  text-align:center !important;
  padding:0 !important;
}
.single-product .quantity input.qty:focus{border-color:var(--ph-gold) !important;outline:none !important;}
.single-product .single_add_to_cart_button,
.woocommerce div.product form.cart .single_add_to_cart_button,
.woocommerce div.product form.cart button.button.alt
{
  height:52px;
  padding:0 34px !important;
  border-radius:100px !important;
  background:var(--ph-gold) !important;
  color:var(--ph-gold-ink) !important;
  border:none !important;
  font-family:'Work Sans',sans-serif !important;
  font-weight:600 !important;
  font-size:14px !important;
  letter-spacing:.02em;
  text-transform:none !important;
  cursor:pointer;
  transition:background-color .2s ease, box-shadow .2s ease, transform .2s ease;
}
.single-product .single_add_to_cart_button:hover,
.woocommerce div.product form.cart .single_add_to_cart_button:hover
{
  background:#e6b800 !important;
  transform:translateY(-1px);
  box-shadow:0 6px 20px rgba(254,204,2,.25);
}
.single-product .single_add_to_cart_button.disabled,
.single-product .single_add_to_cart_button:disabled
{
  background:var(--ph-surface) !important;
  color:var(--ph-ink-soft) !important;
  cursor:not-allowed;
  opacity:1 !important;
}
.single-product .single_add_to_cart_button.disabled:hover{transform:none;box-shadow:none;}

/* --- summary column rhythm ---
   The theme's wrappers each carry their own margins, which stacked up into a
   ~126px dead gap between the price and the Rent Duration selector (the
   one-line short description alone occupied 91px). Normalise them so the
   column reads as evenly spaced blocks. */

.single-product .variations_form.cart{margin:0 0 20px !important;}

/* --- product meta (SKU / category / tags) --- */
.single-product .product_meta{
  margin-top:6px;
  padding-top:18px;
  border-top:1px solid var(--ph-line);
  font-size:13px;
  color:var(--ph-ink-soft) !important;
}
.single-product .product_meta > span{display:block;margin-bottom:7px;}
.single-product .product_meta .sku,
.single-product .product_meta a
{
  color:var(--ph-ink) !important;
  text-decoration:none;
}
.single-product .product_meta .sku{font-family:'IBM Plex Mono',monospace;}
.single-product .product_meta a:hover{color:var(--ph-gold) !important;}

/* --- description tabs --- */

.single-product .woocommerce-Tabs-panel
{
  padding:24px !important;
  background:var(--ph-surface);
  border:1px solid var(--ph-line);
  border-radius:0 10px 10px 10px;
  color:var(--ph-ink-soft);
  line-height:1.75;
  /* the theme reserves a tall panel regardless of content, leaving ~150px of
     empty space under a one-line description */
  min-height:0 !important;
  height:auto !important;
}

/* the theme pads every paragraph 20px at the bottom on top of its margin */

/* JS also flags whitespace-only paragraphs, which :empty can't match */

.single-product .woocommerce-Tabs-panel h2
{
  font-family:'Fraunces',serif !important;
  color:var(--ph-ink) !important;
  font-size:20px !important;
  margin:0 0 12px !important;
}

/* --- related products --- */
.single-product .related.products > h2,
.single-product .upsells.products > h2
{
  font-family:'Fraunces',serif !important;
  color:var(--ph-ink) !important;
  font-size:26px !important;
  margin:56px 0 26px !important;
}

/* --- notices (added to cart, errors) --- */
.woocommerce-message,
.woocommerce-info,
.woocommerce-error
{
  background:var(--ph-surface) !important;
  border:1px solid var(--ph-line) !important;
  border-left:3px solid var(--ph-gold) !important;
  border-radius:10px !important;
  color:var(--ph-ink) !important;
  padding:16px 20px !important;
  margin-bottom:22px !important;
}
.woocommerce-message a,
.woocommerce-info a,
.woocommerce-error a
{color:var(--ph-gold) !important;}
.woocommerce-message::before,
.woocommerce-info::before,
.woocommerce-error::before
{display:none !important;}
.woocommerce-message .button,
.woocommerce-info .button
{
  background:var(--ph-gold) !important;
  color:var(--ph-gold-ink) !important;
  border-radius:100px !important;
  padding:9px 20px !important;
  font-weight:600 !important;
}

@media (max-width:768px){
  .single-product .summary .product_title,
  .single-product .summary h1
{font-size:24px !important;}
  .single-product form.cart{gap:10px;}
  .single-product .single_add_to_cart_button{flex:1 1 auto;}
}

/* =========================================================
   CART / CHECKOUT / ACCOUNT
   The theme ships these with a coral table header and white
   form controls, which read as broken on the dark ground.
   ========================================================= */

/* --- shared: WooCommerce tables --- */
.woocommerce table.shop_table,
.woocommerce-cart table.cart,
.woocommerce-checkout table.shop_table
{
  background:transparent !important;
  border:1px solid var(--ph-line) !important;
  border-radius:12px !important;
  border-collapse:separate !important;
  border-spacing:0 !important;
  overflow:hidden;
  color:var(--ph-ink) !important;
}
.woocommerce table.shop_table thead th,
.woocommerce table.shop_table th
{
  background:var(--ph-wine-tint) !important;
  color:var(--ph-ink) !important;
  border:none !important;
  border-bottom:1px solid var(--ph-line) !important;
  font-family:'Work Sans',sans-serif !important;
  font-weight:600 !important;
  font-size:12px !important;
  text-transform:uppercase;
  letter-spacing:.06em;
  padding:14px 16px !important;
}
.woocommerce table.shop_table td{
  background:transparent !important;
  border:none !important;
  border-bottom:1px solid var(--ph-line) !important;
  color:var(--ph-ink) !important;
  padding:16px !important;
  vertical-align:middle;
}
.woocommerce table.shop_table tbody tr:last-child td{border-bottom:none !important;}
.woocommerce table.shop_table td a{color:var(--ph-ink) !important;text-decoration:none;}
.woocommerce table.shop_table td a:hover{color:var(--ph-gold) !important;}
.woocommerce table.shop_table .product-name a{font-weight:600;}
.woocommerce table.shop_table .amount,
.woocommerce table.shop_table .product-price,
.woocommerce table.shop_table .product-subtotal
{
  font-family:'IBM Plex Mono',monospace !important;
  color:var(--ph-gold) !important;
}
.woocommerce table.shop_table img{border-radius:8px;}
.woocommerce a.remove{
  color:var(--ph-ink-soft) !important;
  background:transparent !important;
  font-size:20px !important;
  line-height:1;
}
.woocommerce a.remove:hover{color:var(--ph-gold) !important;background:transparent !important;}

/* --- form controls across cart/checkout/account ---
   Scoped with :not() so these broad rules never clobber the custom controls
   defined earlier (category dropdown, toolbar search). Using the `background`
   shorthand here would also wipe their background-image chevrons. */
.woocommerce input[type="text"]:not(.ph-shop-search-field),
.woocommerce input[type="email"],
.woocommerce input[type="tel"],
.woocommerce input[type="password"],
.woocommerce input[type="number"],
.woocommerce input[type="search"]:not(.ph-shop-search-field),
.woocommerce textarea,
.woocommerce select:not(.ph-cat-select):not(.orderby),
.woocommerce .input-text:not(.ph-shop-search-field)
{
  background:var(--ph-surface) !important;
  color:var(--ph-ink) !important;
  border:1px solid var(--ph-line) !important;
  border-radius:10px !important;
  padding:12px 14px !important;
  font-family:'Work Sans',sans-serif !important;
  font-size:14px !important;
}
.woocommerce input::placeholder,
.woocommerce textarea::placeholder
{color:var(--ph-ink-soft) !important;opacity:.85;}
.woocommerce input:focus,
.woocommerce textarea:focus,
.woocommerce select:focus
{border-color:var(--ph-gold) !important;outline:none !important;}
.woocommerce label,
.woocommerce-checkout label
{color:var(--ph-ink) !important;font-size:13.5px;}
.woocommerce .quantity input.qty{
  background:var(--ph-surface) !important;
  color:var(--ph-ink) !important;
  border:1px solid var(--ph-line) !important;
  border-radius:10px !important;
  text-align:center;
}

/* --- buttons ---
   :not() guards keep these off the custom pills/buttons styled elsewhere. */
.woocommerce .button:not(.ph-btn):not(.ph-catalog-shortcode-btn):not(.ph-filter-pill),
.woocommerce button.button:not(.ph-btn),
.woocommerce input.button,
.woocommerce a.button:not(.ph-btn):not(.ph-catalog-shortcode-btn),
.woocommerce .checkout-button,
.woocommerce #place_order
{
  background:var(--ph-gold) !important;
  color:var(--ph-gold-ink) !important;
  border:none !important;
  border-radius:100px !important;
  padding:13px 28px !important;
  font-family:'Work Sans',sans-serif !important;
  font-weight:600 !important;
  font-size:14px !important;
  text-transform:none !important;
  transition:background-color .2s ease, transform .2s ease, box-shadow .2s ease;
}
.woocommerce .button:not(.ph-btn):not(.ph-catalog-shortcode-btn):not(.ph-filter-pill):hover,
.woocommerce button.button:not(.ph-btn):hover,
.woocommerce a.button:not(.ph-btn):not(.ph-catalog-shortcode-btn):hover,
.woocommerce .checkout-button:hover,
.woocommerce #place_order:hover
{
  background:#e6b800 !important;
  transform:translateY(-1px);
  box-shadow:0 6px 20px rgba(254,204,2,.25);
}
/* secondary buttons (Update cart, Apply coupon) read as outlined */
.woocommerce button[name="update_cart"],
.woocommerce button[name="apply_coupon"],
.woocommerce input[name="update_cart"]
{
  background:transparent !important;
  color:var(--ph-ink) !important;
  border:1px solid var(--ph-line) !important;
}
.woocommerce button[name="update_cart"]:hover,
.woocommerce button[name="apply_coupon"]:hover
{
  border-color:var(--ph-gold) !important;
  color:var(--ph-gold) !important;
  background:rgba(254,204,2,.06) !important;
  box-shadow:none;
}
.woocommerce button[disabled],
.woocommerce .button[disabled]
{opacity:.5 !important;cursor:not-allowed;}

/* --- cart totals / order review panels --- */
.cart_totals,
.cart-collaterals .cart_totals,
.woocommerce-checkout-review-order,
#order_review
{
  background:var(--ph-surface) !important;
  border:1px solid var(--ph-line) !important;
  border-radius:12px !important;
  padding:22px !important;
}
.cart_totals h2,
.woocommerce-checkout h3,
.woocommerce-billing-fields h3,
#order_review_heading
{
  font-family:'Fraunces',serif !important;
  color:var(--ph-ink) !important;
  font-size:20px !important;
  margin:0 0 16px !important;
}
.cart_totals table,
.cart_totals table.shop_table
{
  border:none !important;
  background:transparent !important;
}
.cart_totals th{background:transparent !important;color:var(--ph-ink-soft) !important;text-transform:none !important;font-size:13.5px !important;}
.cart_totals td{color:var(--ph-ink) !important;}
.cart_totals .order-total th,
.cart_totals .order-total td
{border-top:1px solid var(--ph-line) !important;}
.cart_totals .order-total .amount{font-size:18px !important;}
.coupon{display:flex;gap:10px;flex-wrap:wrap;align-items:center;}

/* --- account pages ---
   The theme paints these nav pills with its stock coral accent (#F15039)
   and a white default, so both need overriding, not just colouring. */
.woocommerce-MyAccount-navigation ul{
  list-style:none;margin:0 0 28px;padding:0;
  display:flex;flex-wrap:wrap;gap:8px;
}
.woocommerce-MyAccount-navigation li{margin:0 !important;list-style:none;}
.woocommerce .woocommerce-MyAccount-navigation li a,
.woocommerce-MyAccount-navigation li a
{
  display:block !important;
  padding:11px 20px !important;
  border-radius:100px !important;
  background:var(--ph-surface) !important;
  border:1px solid var(--ph-line) !important;
  color:var(--ph-ink-soft) !important;
  text-decoration:none !important;
  font-family:'Work Sans',sans-serif !important;
  font-size:13.5px !important;
  font-weight:600 !important;
  transition:all .2s ease;
}
.woocommerce .woocommerce-MyAccount-navigation li a:hover,
.woocommerce-MyAccount-navigation li a:hover
{
  border-color:var(--ph-gold) !important;
  color:var(--ph-ink) !important;
  background:rgba(254,204,2,.06) !important;
}
.woocommerce .woocommerce-MyAccount-navigation li.is-active a,
.woocommerce-MyAccount-navigation li.is-active a
{
  background:var(--ph-gold) !important;
  border-color:var(--ph-gold) !important;
  color:var(--ph-gold-ink) !important;
}
.woocommerce-MyAccount-content{color:var(--ph-ink-soft);}
.woocommerce-MyAccount-content a{color:var(--ph-gold) !important;}
.woocommerce form.login,
.woocommerce form.register,
.woocommerce-form-login,
.woocommerce-form-register
{
  background:var(--ph-surface) !important;
  border:1px solid var(--ph-line) !important;
  border-radius:12px !important;
  padding:24px !important;
}
.woocommerce .cart-empty,
.woocommerce .return-to-shop
{color:var(--ph-ink) !important;}

/* --- misc text --- */
.woocommerce .woocommerce-breadcrumb,
.woocommerce-cart-form__contents caption
{color:var(--ph-ink-soft) !important;}
.woocommerce-shipping-destination,
.woocommerce-shipping-calculator a
{color:var(--ph-ink-soft) !important;}

/* --- checkout: billing details + payment methods ---
   WooCommerce/gateways ship these with light panels; against the dark
   ground the gateway blurb rendered near-invisible and the terms link
   was dark grey on dark. */
.woocommerce-billing-fields,
.woocommerce-shipping-fields,
.woocommerce-additional-fields,
#customer_details .col-1,
#customer_details .col-2
{
  background:var(--ph-surface);
  border:1px solid var(--ph-line);
  border-radius:12px;
  padding:22px !important;
  margin-bottom:20px;
}
#customer_details{display:flex;gap:20px;flex-wrap:wrap;}
#customer_details .col-1,
#customer_details .col-2
{flex:1 1 320px;width:auto !important;float:none !important;}
/* shipping block is empty on this store — don't render an empty framed box */
.woocommerce-shipping-fields:not(:has(h3)):not(:has(input)):not(:has(.form-row)){
  display:none !important;
}
.woocommerce-shipping-fields:empty{display:none !important;}
.woocommerce-billing-fields h3,
.woocommerce-shipping-fields h3,
.woocommerce-additional-fields h3
{
  font-family:'Fraunces',serif !important;
  color:var(--ph-ink) !important;
  font-size:19px !important;
  margin:0 0 16px !important;
}
.woocommerce form .form-row label,
.woocommerce-billing-fields label,
.woocommerce-checkout .form-row label
{
  color:var(--ph-ink) !important;
  font-size:13px !important;
  font-weight:600 !important;
  margin-bottom:6px;
  display:block;
}
.woocommerce form .form-row .required{color:var(--ph-gold) !important;border:none;}
.woocommerce form .form-row{margin-bottom:14px;}
.woocommerce .select2-container--default .select2-selection--single,
.woocommerce .select2-selection
{
  background:var(--ph-surface) !important;
  border:1px solid var(--ph-line) !important;
  border-radius:10px !important;
  height:46px !important;
  padding:6px 8px !important;
}
.woocommerce .select2-container--default .select2-selection--single .select2-selection__rendered{
  color:var(--ph-ink) !important;
  line-height:32px !important;
}
.select2-dropdown,
.select2-container--default .select2-results__option
{
  background:#2A0A1C !important;
  color:#fff !important;
  border-color:var(--ph-line) !important;
}
.select2-container--default .select2-results__option--highlighted{
  background:var(--ph-wine) !important;
  color:#fff !important;
}
.select2-search--dropdown .select2-search__field{
  background:var(--ph-bg) !important;
  color:#fff !important;
  border:1px solid var(--ph-line) !important;
}

/* payment methods */
ul.wc_payment_methods,
.woocommerce-checkout #payment
{
  background:transparent !important;
  border-radius:12px !important;
}
.woocommerce-checkout #payment ul.payment_methods{
  border-bottom:1px solid var(--ph-line) !important;
  padding:0 0 16px !important;
}
.wc_payment_method label,
ul.payment_methods li label
{color:var(--ph-ink) !important;font-weight:600 !important;}
.woocommerce-checkout #payment div.payment_box,
.wc_payment_method .payment_box
{
  background:var(--ph-wine-tint) !important;
  border:1px solid var(--ph-line) !important;
  border-radius:10px !important;
  color:var(--ph-ink) !important;
  padding:14px 16px !important;
  font-size:13.5px !important;
}
.woocommerce-checkout #payment div.payment_box::before,
.wc_payment_method .payment_box::before
{
  border-bottom-color:var(--ph-wine-tint) !important;
}
.woocommerce-checkout #payment div.payment_box p{color:var(--ph-ink) !important;margin:0;}
/* privacy + terms text under payment */
.woocommerce-privacy-policy-text,
.woocommerce-privacy-policy-text p,
.woocommerce-terms-and-conditions-wrapper,
.woocommerce-terms-and-conditions-checkbox-text
{color:var(--ph-ink-soft) !important;}
.woocommerce-privacy-policy-link,
.woocommerce-terms-and-conditions-link,
.woocommerce-terms-and-conditions-wrapper a
{color:var(--ph-gold) !important;text-decoration:none;}
.woocommerce-privacy-policy-link:hover,
.woocommerce-terms-and-conditions-link:hover
{text-decoration:underline;}
.woocommerce form .form-row input[type="checkbox"],
.woocommerce-terms-and-conditions-wrapper input[type="checkbox"]
{
  width:17px;height:17px;accent-color:var(--ph-gold);margin-right:8px;
}
/* order review total: the theme colours the inner <strong>/<bdi> with its
   coral accent, so target every descendant, not just the .amount span */
.woocommerce-checkout-review-order .order-total td,
.woocommerce-checkout-review-order .order-total td *,
.woocommerce-checkout-review-order .cart-subtotal td *,
.cart_totals .order-total td,
.cart_totals .order-total td *
{
  color:var(--ph-gold) !important;
}
.woocommerce-checkout-review-order .order-total td strong{font-weight:600;}

/* =========================================================
   CONTACT (template-contact.php)
   ========================================================= */
.ph-contact{padding:8px 0 80px;}
.ph-contact-intro{max-width:56ch;margin-bottom:40px;}
.ph-contact-intro h1{font-size:clamp(28px,3.4vw,40px);margin:0 0 14px;color:var(--ph-ink);}
.ph-contact-lead{color:var(--ph-ink-soft);font-size:16px;line-height:1.7;margin:0;}
.ph-contact-grid{
  display:grid;
  grid-template-columns:minmax(260px,340px) 1fr;
  gap:28px;
  align-items:start;
  margin-bottom:44px;
}
@media (max-width:900px){.ph-contact-grid{grid-template-columns:1fr;}}
.ph-contact-details{display:flex;flex-direction:column;gap:12px;}
.ph-contact-card{
  display:flex;align-items:flex-start;gap:14px;
  padding:18px;
  border-radius:var(--ph-radius);
  background:var(--ph-surface);
  border:1px solid var(--ph-line);
  text-decoration:none;
  transition:border-color .2s ease, transform .2s ease;
}
.ph-contact-card:hover{border-color:var(--ph-gold);transform:translateY(-2px);}
.ph-contact-card--static{cursor:default;}
.ph-contact-card--static:hover{border-color:var(--ph-line);transform:none;}
.ph-contact-icon{
  flex:none;
  width:42px;height:42px;
  display:flex;align-items:center;justify-content:center;
  border-radius:50%;
  background:var(--ph-wine-tint);
  color:var(--ph-gold);
}
.ph-contact-meta{display:flex;flex-direction:column;gap:3px;min-width:0;}
.ph-contact-label{
  font-size:10.5px;text-transform:uppercase;letter-spacing:.09em;
  color:var(--ph-ink-soft);
}
.ph-contact-value{color:var(--ph-ink);font-size:14.5px;line-height:1.55;word-break:break-word;}
.ph-contact-form{
  background:var(--ph-surface);
  border:1px solid var(--ph-line);
  border-radius:var(--ph-radius);
  padding:28px;
}
.ph-contact-form h2{font-size:20px;margin:0 0 18px;color:var(--ph-ink);}
.ph-contact-form p{color:var(--ph-ink-soft);}
.ph-contact-fallback a{color:var(--ph-gold) !important;}
.ph-contact-map{
  border-radius:var(--ph-radius);
  overflow:hidden;
  border:1px solid var(--ph-line);
  line-height:0;
}
.ph-contact-map iframe{display:block;width:100%;filter:saturate(.9);}
.ph-contact-body{margin-top:36px;color:var(--ph-ink-soft);line-height:1.75;}

/* =========================================================
   FORMS & POLICIES (template-policies.php)
   ========================================================= */
.ph-policies{padding:8px 0 80px;}
.ph-policies-intro{max-width:58ch;margin-bottom:36px;}
.ph-policies-intro h1{font-size:clamp(28px,3.4vw,40px);margin:0 0 14px;color:var(--ph-ink);}
.ph-policies-lead{color:var(--ph-ink-soft);font-size:16px;line-height:1.7;margin:0;}
.ph-doc-grid{
  display:grid;
  grid-template-columns:repeat(auto-fill,minmax(300px,1fr));
  gap:14px;
}
.ph-doc-card{
  display:flex;align-items:center;gap:14px;
  padding:20px;
  border-radius:var(--ph-radius);
  background:var(--ph-surface);
  border:1px solid var(--ph-line);
  text-decoration:none;
  transition:border-color .2s ease, transform .2s ease, box-shadow .2s ease;
}
.ph-doc-card:hover{
  border-color:var(--ph-gold);
  transform:translateY(-2px);
  box-shadow:0 10px 26px rgba(0,0,0,.3);
}
.ph-doc-icon{
  flex:none;width:44px;height:44px;
  display:flex;align-items:center;justify-content:center;
  border-radius:10px;
  background:var(--ph-wine-tint);
  color:var(--ph-gold);
}
.ph-doc-text{display:flex;flex-direction:column;gap:4px;flex:1 1 auto;min-width:0;}
.ph-doc-title{
  font-family:'Fraunces',serif;font-weight:600;font-size:16px;
  color:var(--ph-ink);line-height:1.3;
}
.ph-doc-card:hover .ph-doc-title{color:var(--ph-gold);}
.ph-doc-desc{font-size:13px;color:var(--ph-ink-soft);line-height:1.55;}
.ph-doc-tag{
  flex:none;
  font-family:'IBM Plex Mono',monospace;font-size:10.5px;font-weight:600;
  letter-spacing:.06em;
  padding:4px 9px;border-radius:6px;
  background:var(--ph-wine-tint);
  border:1px solid var(--ph-line);
  color:var(--ph-ink-soft);
}
.ph-policies-help{
  margin-top:44px;padding:32px;
  border-radius:var(--ph-radius);
  background:linear-gradient(135deg,var(--ph-wine),var(--ph-wine-light));
  border:1px solid rgba(255,255,255,.08);
}
.ph-policies-help h2{color:#fff;margin:0 0 8px;font-size:22px;}
.ph-policies-help p{color:rgba(255,255,255,.75);margin:0 0 18px;max-width:52ch;}

/* =========================================================
   FULL CATALOG (template-catalog.php)
   ========================================================= */
.only-print{display:none;}
.ph-catalog-page{padding:56px 0 90px;}
.ph-catalog-head{
  display:flex;align-items:flex-end;justify-content:space-between;gap:24px;
  flex-wrap:wrap;margin-bottom:20px;padding-bottom:32px;border-bottom:1px solid var(--ph-line);
}
.ph-catalog-head h1{font-size:34px;margin:0 0 10px;color:var(--ph-ink);}
.ph-catalog-sub{color:var(--ph-ink-soft);max-width:52ch;margin:0;font-size:14.5px;}
.ph-catalog-group{margin-top:40px;}
.ph-catalog-cat-title{
  font-size:20px;color:var(--ph-gold);margin:0 0 14px;
  padding-bottom:8px;border-bottom:2px solid var(--ph-line);
}
.ph-catalog-table{width:100%;border-collapse:collapse;font-size:14px;}
.ph-catalog-table th{
  text-align:left;font-family:'Work Sans',sans-serif;font-weight:600;
  font-size:11px;text-transform:uppercase;letter-spacing:.06em;
  color:var(--ph-ink-soft) !important;padding:10px !important;
  background:var(--ph-wine-tint) !important;border-bottom:1px solid var(--ph-line) !important;
}
.ph-catalog-table td{padding:10px;border-bottom:1px solid var(--ph-line);color:var(--ph-ink);}
.ph-catalog-table tbody tr:hover{background:var(--ph-surface);}
/* SKU column (now 3rd, after image + item) muted */
.ph-catalog-table th:nth-child(3),.ph-catalog-table td:nth-child(3){color:var(--ph-ink-soft);}
/* price columns (4th + 5th) right-aligned */
.ph-catalog-table th:nth-child(4),.ph-catalog-table th:nth-child(5),
.ph-catalog-table td:nth-child(4),.ph-catalog-table td:nth-child(5)
{text-align:right;}
/* thumbnail column */
.ph-catalog-th-img{width:64px;padding:10px !important;}
.ph-catalog-td-img{width:64px;padding:8px 10px !important;}
.ph-catalog-thumb,
.ph-catalog-td-img img
{
  width:48px;height:48px;
  object-fit:cover;
  border-radius:6px;
  display:block;
  background:var(--ph-wine-tint);
}

@media print{
  .no-print{display:none !important;}
  .only-print{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px;font-size:12px;}
  body{background:#fff !important;color:#222 !important;}
  .ph-catalog-table tbody tr:hover{background:none;}
  .ph-catalog-group{page-break-inside:avoid;break-inside:avoid;}
  .ph-catalog-cat-title{color:#000 !important;border-bottom-color:#ccc !important;}
  .ph-catalog-table td{color:#222 !important;}
  .ph-catalog-table th{background:#f2f2f2 !important;color:#333 !important;}
  .ph-catalog-thumb,.ph-catalog-td-img img{
    width:40px !important;height:40px !important;
    -webkit-print-color-adjust:exact;print-color-adjust:exact;
  }
  .ph-wrap{max-width:none;padding:0;}
  a{color:inherit !important;text-decoration:none !important;}
}
/* --- Shop by category (v2.1): white photo cards, one distinct prop each --- */
.ph-cx{padding:80px 0 24px;}
.ph-cx-head{display:flex;justify-content:space-between;align-items:flex-end;gap:20px;flex-wrap:wrap;margin-bottom:28px;}
.ph-cx-eyebrow{font-family:'IBM Plex Mono',monospace;font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--ph-gold);margin:0 0 10px;display:flex;gap:10px;align-items:center;}
.ph-cx-eyebrow::before{content:"";width:24px;height:2px;background:currentColor;}
.ph-cx h2{font-family:'Work Sans',sans-serif;font-weight:900;font-size:clamp(34px,4.4vw,56px);letter-spacing:-.045em;line-height:.95;margin:0;color:var(--ph-ink);}
.ph-cx-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;}
.ph-cx-card{display:flex;flex-direction:column;border-radius:14px;overflow:hidden;background:var(--ph-surface);border:1px solid var(--ph-line);text-decoration:none !important;color:var(--ph-ink);transition:transform .25s ease,border-color .25s ease;}
.ph-cx-card:hover{transform:translateY(-4px);border-color:var(--ph-gold);}
.ph-cx-photo{display:flex;align-items:center;justify-content:center;aspect-ratio:4/3;background:#fff;padding:14px;}
.ph-cx-photo img{max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain;transition:transform .35s ease;}
.ph-cx-card:hover .ph-cx-photo img{transform:scale(1.06);}
.ph-cx-meta{display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto;column-gap:10px;padding:14px 16px 16px;align-items:baseline;}
.ph-cx-num{grid-row:1 / span 2;font-family:'IBM Plex Mono',monospace;font-size:12px;font-weight:600;color:var(--ph-gold);}
.ph-cx-name{font-family:'Work Sans',sans-serif;font-weight:900;font-size:20px;letter-spacing:-.03em;line-height:1.1;}
.ph-cx-count{font-family:'IBM Plex Mono',monospace;font-size:11px;letter-spacing:.06em;color:var(--ph-ink-soft);margin-top:2px;}
.ph-cx-all{background:var(--ph-gold);border-color:var(--ph-gold);color:var(--ph-gold-ink);justify-content:center;padding:22px;gap:6px;}
.ph-cx-all:hover{border-color:#fff;}
.ph-cx-allnum{font-family:'Work Sans',sans-serif;font-weight:900;font-size:clamp(40px,5vw,64px);letter-spacing:-.05em;line-height:.9;}
.ph-cx-alltxt{font-family:'IBM Plex Mono',monospace;font-size:12px;letter-spacing:.1em;text-transform:uppercase;}
.ph-cx-go{margin-top:14px;font-weight:700;font-size:15px;}
@media (max-width:900px){.ph-cx-grid{grid-template-columns:repeat(3,minmax(0,1fr));}}
@media (max-width:600px){
  .ph-cx{padding:52px 0 12px;}
  .ph-cx-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;}
  .ph-cx-photo{padding:10px;}
  .ph-cx-meta{padding:10px 12px 12px;column-gap:8px;}
  .ph-cx-name{font-size:16px;}
}
.ph-catalog-actions{display:flex;flex-wrap:wrap;gap:10px;}

/* --- v2.1.1 polish --- */
/* product photos: show the whole prop on white instead of cropping it */
.pcard-photo{background:#fff;}
.pcard-photo::after{display:none;}
.pcard-photo img{object-fit:contain !important;padding:8%;}
/* single product: keep tall photos from filling the whole phone screen */
@media (max-width:768px){
  .single-product .woocommerce-product-gallery img{max-height:62vh;width:100%;object-fit:contain;background:#fff;}
}
/* contact page: stop the cards running off the right edge on phones */
@media (max-width:900px){.ph-contact-grid{grid-template-columns:minmax(0,1fr);}}
.ph-contact-grid > *,.ph-contact-card,.ph-contact-card *{min-width:0;}
.ph-contact-card{overflow-wrap:anywhere;}
.ph-contact-form input,.ph-contact-form textarea,.ph-contact-form select{max-width:100%;box-sizing:border-box;}
/* full catalog list: fit phones (drop the SKU column, tighten cells) */
@media (max-width:600px){
  .ph-catalog-table{font-size:13px;table-layout:fixed;}
  .ph-catalog-table th:nth-child(3),.ph-catalog-table td:nth-child(3){display:none;}
  .ph-catalog-table th,.ph-catalog-table td{padding:8px 6px;overflow-wrap:anywhere;}
  .ph-catalog-table th:nth-child(1),.ph-catalog-table td:nth-child(1){width:52px;}
  .ph-catalog-table th:nth-child(4),.ph-catalog-table td:nth-child(4),.ph-catalog-table th:nth-child(5),.ph-catalog-table td:nth-child(5){width:84px;}
}

/* --- Product reviews (v2.2) --- */
.ph-reviews{color:var(--ph-ink);}
.ph-rev-top{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr) minmax(0,1fr);gap:28px;align-items:center;padding:24px;border:1px solid var(--ph-line);border-radius:14px;background:var(--ph-surface);margin-bottom:28px;}
.ph-rev-score{display:flex;flex-direction:column;gap:6px;}
.ph-rev-score b{font-family:'Work Sans',sans-serif;font-weight:900;font-size:64px;letter-spacing:-.05em;line-height:.9;}
.ph-rev-score b.is-empty{font-size:44px;color:var(--ph-gold);}
.ph-rev-score > span:last-child{font-family:'IBM Plex Mono',monospace;font-size:12px;color:var(--ph-ink-soft);}
.ph-stars{display:inline-flex;gap:3px;}
.ph-stars i{width:18px;height:18px;display:block;background:linear-gradient(90deg,var(--ph-gold) var(--f),rgba(246,239,239,.18) var(--f));
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2l3 6.9 7.5.7-5.7 5 1.7 7.4L12 18.3 5.5 22l1.7-7.4-5.7-5 7.5-.7z'/%3E%3C/svg%3E") center/contain no-repeat;
  mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2l3 6.9 7.5.7-5.7 5 1.7 7.4L12 18.3 5.5 22l1.7-7.4-5.7-5 7.5-.7z'/%3E%3C/svg%3E") center/contain no-repeat;}
.ph-rev-bars{list-style:none;margin:0;padding:0;display:grid;gap:7px;}
.ph-rev-bars li{display:grid;grid-template-columns:30px 1fr 28px;gap:10px;align-items:center;font-family:'IBM Plex Mono',monospace;font-size:12px;color:var(--ph-ink-soft);}
.ph-rev-bars li span:last-child{text-align:right;}
.ph-rev-bars i{display:block;height:8px;border-radius:99px;background:rgba(246,239,239,.1);overflow:hidden;}
.ph-rev-bars em{display:block;height:100%;background:var(--ph-gold);border-radius:99px;}
.ph-rev-eyebrow{font-family:'IBM Plex Mono',monospace;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--ph-gold);margin:0 0 6px;}
.ph-rev-ask p{margin:0 0 12px;font-size:14px;line-height:1.5;color:var(--ph-ink-soft);}
.ph-rev-ask .ph-rev-eyebrow{color:var(--ph-gold);}
.ph-rev-list{list-style:none;margin:0 0 28px;padding:0;display:grid;gap:12px;}
.ph-rev-list li .comment_container{display:flex;gap:14px;padding:18px;border:1px solid var(--ph-line);border-radius:12px;}
.ph-rev-list li img.avatar{width:44px;height:44px;border-radius:50%;flex:none;}
.ph-rev-list .comment-text{flex:1;min-width:0;}
.ph-rev-list .star-rating{float:none !important;margin:0 0 6px;color:var(--ph-gold);}
.ph-rev-list .meta{margin:0 0 6px;font-size:13px;color:var(--ph-ink-soft);}
.ph-rev-list .meta strong{color:var(--ph-ink);}
.ph-rev-list .woocommerce-review__verified{color:var(--ph-gold);font-style:normal;}
.ph-rev-list .description p{margin:0;line-height:1.6;}
.ph-rev-none{color:var(--ph-ink-soft);}
.ph-rev-form{padding:24px;border:1px solid var(--ph-line);border-radius:14px;}
.ph-rev-form .comment-reply-title{font-family:'Work Sans',sans-serif;font-weight:900;letter-spacing:-.03em;font-size:26px;margin:0 0 14px;display:block;}
.ph-rev-form label,.ph-rate legend{display:block;font-size:13px;font-weight:600;margin-bottom:6px;color:var(--ph-ink);}
.ph-rev-form input[type=text],.ph-rev-form input[type=email],.ph-rev-form textarea{width:100%;box-sizing:border-box;background:var(--ph-bg);border:1px solid var(--ph-line);border-radius:10px;color:var(--ph-ink);padding:12px 14px;font:inherit;}
.ph-rev-form input:focus,.ph-rev-form textarea:focus{outline:none;border-color:var(--ph-gold);}
.ph-rev-form .comment-form{display:grid;grid-template-columns:1fr 1fr;gap:14px 16px;}
.ph-rev-form .ph-rate,.ph-rev-form .comment-form-comment,.ph-rev-form .form-submit,.ph-rev-form .comment-form-cookies-consent,.ph-rev-form .must-log-in{grid-column:1 / -1;margin:0;}
.ph-rev-form .comment-form-author,.ph-rev-form .comment-form-email{margin:0;}
.ph-rate{border:0;padding:0;margin:0;}
.ph-rate-stars{display:inline-flex;flex-direction:row-reverse;gap:4px;}
.ph-rate-stars input{position:absolute;opacity:0;width:1px;height:1px;}
.ph-rate-stars label{font-size:34px;line-height:1;cursor:pointer;color:rgba(246,239,239,.22);margin:0;transition:color .15s,transform .15s;}
.ph-rate-stars label:hover,.ph-rate-stars label:hover ~ label,.ph-rate-stars input:checked ~ label{color:var(--ph-gold);}
.ph-rate-stars label:hover{transform:scale(1.12);}
.ph-rate-stars input:focus-visible + label{outline:2px solid var(--ph-gold);outline-offset:2px;border-radius:4px;}
.ph-rev-form .form-submit input[type=submit]{background:var(--ph-gold);color:var(--ph-gold-ink);border:0;border-radius:999px;padding:14px 26px;font-weight:700;cursor:pointer;}
@media (max-width:900px){.ph-rev-top{grid-template-columns:minmax(0,1fr);gap:18px;}}
@media (max-width:600px){.ph-rev-form .comment-form{grid-template-columns:minmax(0,1fr);}.ph-rev-score b{font-size:52px;}}
