/* PULP · Shop features CSS
 * Drawer, Quick View, Sticky ATC, Free shipping bar,
 * Predictive search, Urgency bar.
 */

/* =========================================================
 * MINI-CART DRAWER
 * ========================================================= */
.pulp-drawer{
  position: fixed; top: 0; right: 0;
  width: min(420px, 90vw); height: 100%;
  background: var(--pulp-ink); color: var(--pulp-paper);
  border-left: 1px solid var(--pulp-rule);
  transform: translateX(100%);
  transition: transform .28s cubic-bezier(.4,0,.2,1);
  z-index: 9200; overflow-y: auto;
  display: flex; flex-direction: column;
}
.pulp-drawer.is-open{ transform: translateX(0); }
.pulp-drawer__back{
  position: fixed; inset: 0; background: rgba(0,0,0,.55);
  opacity: 0; pointer-events: none;
  transition: opacity .25s; z-index: 9100;
}
.pulp-drawer.is-open ~ .pulp-drawer__back,
.pulp-drawer__back.is-open{ opacity: 1; pointer-events: auto; }
.pulp-drawer__head{
  display: flex; justify-content: space-between; align-items: center;
  padding: 20px 22px;
  border-bottom: 1px solid var(--pulp-rule);
}
.pulp-drawer__close{
  font-size: 12px; line-height: 1; padding: 8px 12px;
  border: 1px solid var(--pulp-paper); color: var(--pulp-paper);
  background: transparent; font-family: var(--pulp-ff-slab);
  letter-spacing: .04em; text-transform: uppercase;
  cursor: pointer; transition: background .15s, color .15s;
}
.pulp-drawer__close:hover{ background: var(--pulp-paper); color: var(--pulp-ink); }
.pulp-drawer__body{ padding: 16px 22px 24px; flex: 1; }
.pulp-drawer .woocommerce-mini-cart{ list-style: none; padding: 0; margin: 0; }
.pulp-drawer .mini_cart_item{
  display: grid; grid-template-columns: 60px 1fr auto;
  gap: 12px; padding: 14px 0;
  border-bottom: 1px dashed var(--pulp-rule);
}
.pulp-drawer .mini_cart_item a:not(.remove){
  font-family: var(--pulp-ff-slab); text-transform: uppercase;
  font-size: 14px; color: var(--pulp-paper); line-height: 1.1;
}
.pulp-drawer .mini_cart_item img{ width: 60px; height: 60px; object-fit: cover; }
.pulp-drawer .mini_cart_item .quantity{
  font-family: var(--pulp-ff-mono); font-size: 11px;
  letter-spacing: .15em; color: var(--pulp-paper-mute);
}
.pulp-drawer .mini_cart_item .remove{
  color: var(--pulp-paper-mute);
  font-family: var(--pulp-ff-mono); font-size: 16px;
  position: relative; top: 0; right: 0;
}
.pulp-drawer .woocommerce-mini-cart__total{
  display: flex; justify-content: space-between;
  padding: 18px 0 14px;
  border-top: 1px solid var(--pulp-rule);
  margin-top: 14px;
}
.pulp-drawer .woocommerce-mini-cart__total strong{
  font-family: var(--pulp-ff-slab); font-size: 16px; text-transform: uppercase;
}
.pulp-drawer .woocommerce-mini-cart__total .amount{
  font-family: var(--pulp-ff-slab); font-size: 22px; color: var(--pulp-blood);
}
.pulp-drawer .woocommerce-mini-cart__buttons{ display: flex; flex-direction: column; gap: 8px; margin-top: 14px; }
.pulp-drawer .woocommerce-mini-cart__buttons .button{
  display: block; text-align: center;
  background: var(--pulp-blood); color: var(--pulp-paper);
  font-family: var(--pulp-ff-slab); text-transform: uppercase;
  padding: 14px; border-radius: 0; border: 0;
}
.pulp-drawer .woocommerce-mini-cart__buttons .button.checkout{
  background: var(--pulp-paper); color: var(--pulp-ink);
}
.pulp-drawer .woocommerce-mini-cart__empty-message{
  text-align: center; padding: 40px 20px;
  font-family: var(--pulp-ff-editor); font-style: italic;
  font-size: 22px; color: var(--pulp-paper-dim);
}

/* =========================================================
 * FREE SHIPPING BAR
 * ========================================================= */
.pulp-free-ship{
  padding: 14px 22px; background: var(--pulp-ink-2);
  border-bottom: 1px solid var(--pulp-rule);
}
.pulp-free-ship__label{
  font-family: var(--pulp-ff-mono); font-size: 11px;
  letter-spacing: .18em; text-transform: uppercase;
  color: var(--pulp-paper-dim); margin-bottom: 8px;
}
.pulp-free-ship[data-reached="1"] .pulp-free-ship__label{ color: var(--pulp-cyan); }
.pulp-free-ship__track{ height: 4px; background: var(--pulp-rule); position: relative; }
.pulp-free-ship__bar{
  height: 4px; background: var(--pulp-blood);
  transition: width .4s cubic-bezier(.4,0,.2,1);
}
.pulp-free-ship[data-reached="1"] .pulp-free-ship__bar{ background: var(--pulp-cyan); }

/* In Woo cart/checkout pages */
.woocommerce-cart .pulp-free-ship,
.woocommerce-checkout .pulp-free-ship{
  border: 1px solid var(--pulp-rule); margin-bottom: 18px;
}

/* =========================================================
 * QUICK VIEW
 * ========================================================= */
.pulp-qv-back{
  position: fixed; inset: 0;
  background: rgba(0,0,0,.78);
  z-index: 9300; opacity: 0; pointer-events: none;
  transition: opacity .2s;
  display: flex; align-items: center; justify-content: center;
  padding: 24px;
}
.pulp-qv-back.is-open{ opacity: 1; pointer-events: auto; }
.pulp-qv-modal{
  background: var(--pulp-ink-2);
  border: 1px solid var(--pulp-rule);
  max-width: 980px; width: 100%;
  max-height: 92vh; overflow: auto;
  position: relative;
}
.pulp-qv-close{
  position: absolute; top: 14px; right: 14px;
  color: var(--pulp-paper); font-family: var(--pulp-ff-slab);
  font-size: 14px; padding: 6px 10px;
  border: 1px solid var(--pulp-paper); background: var(--pulp-ink);
  z-index: 5; cursor: pointer; letter-spacing: .04em;
}
.pulp-qv-close:hover{ background: var(--pulp-paper); color: var(--pulp-ink); }
.pulp-qv-grid{ display: grid; grid-template-columns: 1fr 1fr; gap: 0; }
.pulp-qv-img{
  aspect-ratio: 3/4; overflow: hidden;
  background: var(--pulp-ink);
  display: flex; align-items: center; justify-content: center;
}
.pulp-qv-img img{ width: 100%; height: 100%; object-fit: cover; }
.pulp-qv-info{ padding: 32px; }
.pulp-qv-stamps{ display: flex; gap: 8px; margin-bottom: 8px; flex-wrap: wrap; }
.pulp-qv-loading{
  padding: 80px; text-align: center;
  font-family: var(--pulp-ff-mono); letter-spacing: .22em;
  color: var(--pulp-paper-dim);
}
.pulp-qv-info .quantity{ margin-right: 8px; display: inline-block; }
.pulp-qv-info .quantity input{ width: 70px; background: var(--pulp-ink); border: 1px solid var(--pulp-rule); color: var(--pulp-paper); padding: 12px; }

/* Quick view trigger on loop */
.pulp-qv-btn{
  display: block;
  width: calc(100% - 36px);
  margin: 0 18px 18px;
  padding: 10px;
  border: 1px solid var(--pulp-rule);
  color: var(--pulp-paper);
  background: transparent;
  font-family: var(--pulp-ff-mono); font-size: 11px;
  letter-spacing: .18em; text-transform: uppercase;
  cursor: pointer;
  transition: background .15s, color .15s, border-color .15s;
}
.pulp-qv-btn:hover{
  background: var(--pulp-paper); color: var(--pulp-ink); border-color: var(--pulp-paper);
}

@media (max-width: 720px){
  .pulp-qv-grid{ grid-template-columns: 1fr; }
  .pulp-qv-img{ aspect-ratio: 16/10; max-height: 40vh; }
  .pulp-qv-info{ padding: 24px; }
}

/* =========================================================
 * STICKY ADD-TO-CART
 * ========================================================= */
.pulp-sticky-atc{
  position: fixed; left: 0; right: 0; bottom: 0;
  z-index: 6500;
  background: var(--pulp-ink-2);
  border-top: 1px solid var(--pulp-blood);
  transform: translateY(100%);
  transition: transform .22s cubic-bezier(.4,0,.2,1);
}
.pulp-sticky-atc.is-visible{ transform: translateY(0); }
.pulp-sticky-atc__inner{
  display: flex; justify-content: space-between; align-items: center;
  padding: 12px 32px; gap: 16px;
}
.pulp-sticky-atc__info{ display: flex; gap: 14px; align-items: center; }
.pulp-sticky-atc__info img{ width: 50px; height: 50px; object-fit: cover; }
@media (max-width: 640px){
  .pulp-sticky-atc__info img{ width: 42px; height: 42px; }
  .pulp-sticky-atc__inner{ padding: 10px 16px; }
}

/* =========================================================
 * PREDICTIVE SEARCH
 * ========================================================= */
.pulp-search-wrap{ position: relative; }
.pulp-search-dropdown{
  position: absolute; top: 100%; left: 0; right: 0;
  background: var(--pulp-ink); border: 1px solid var(--pulp-rule);
  border-top: 0; max-height: 480px; overflow: auto;
  display: none; z-index: 7600;
  box-shadow: 0 8px 24px rgba(0,0,0,.4);
}
.pulp-search-dropdown.is-open{ display: block; }
.pulp-search-list{ list-style: none; padding: 0; margin: 0; }
.pulp-search-list li{ border-bottom: 1px dashed var(--pulp-rule); }
.pulp-search-list a{
  display: flex; gap: 12px; padding: 12px 14px;
  align-items: center; color: var(--pulp-paper);
  text-decoration: none;
}
.pulp-search-list a:hover{ background: var(--pulp-ink-2); }
.pulp-search-list img{ width: 50px; height: 50px; object-fit: cover; }
.pulp-search-empty{
  padding: 24px; text-align: center;
  font-family: var(--pulp-ff-mono); letter-spacing: .22em;
  color: var(--pulp-paper-mute);
}
.pulp-search-all{
  display: block; padding: 14px; text-align: center;
  font-family: var(--pulp-ff-slab); text-transform: uppercase;
  letter-spacing: .04em; font-size: 13px;
  background: var(--pulp-blood); color: var(--pulp-paper);
  text-decoration: none;
}
.pulp-search-all:hover{ background: var(--pulp-paper); color: var(--pulp-blood); }

/* =========================================================
 * URGENCY BAR
 * ========================================================= */
.pulp-urgency-bar{ background: var(--pulp-yellow); color: var(--pulp-ink); }
.pulp-urgency-bar a{
  display: block; padding: 8px 32px;
  font-family: var(--pulp-ff-mono); font-size: 11px;
  letter-spacing: .22em; text-transform: uppercase;
  text-align: center; color: var(--pulp-ink); text-decoration: none;
}
.pulp-urgency-bar a:hover{ background: var(--pulp-ink); color: var(--pulp-yellow); }

/* =========================================================
 * LIVE VIEWERS (single product)
 * ========================================================= */
.pulp-viewers{
  display: inline-flex; align-items: center; gap: 6px;
  font-family: var(--pulp-ff-mono); font-size: 11px;
  letter-spacing: .18em; text-transform: uppercase;
  color: var(--pulp-cyan);
}
.pulp-viewers::before{
  content: "●"; animation: pulp-pulse 1.4s ease-in-out infinite;
}
@keyframes pulp-pulse{ 0%, 100%{ opacity: 1; } 50%{ opacity: .35; } }

/* =========================================================
 * Add-to-cart sparkle (used by pulp.js)
 * ========================================================= */
.pulp-pulse{ animation: pulp-pulse-btn .6s ease; }
@keyframes pulp-pulse-btn{
  0%{ box-shadow: 0 0 0 0 rgba(212,0,26,.7); }
  100%{ box-shadow: 0 0 0 12px rgba(212,0,26,0); }
}
