/* =========================================================
   PRODUCT DETAIL PAGE
   ========================================================= */

.pdp{padding-block:2.5rem 1rem;}
.pdp-layout{
  display:grid;
  grid-template-columns:.9fr 1fr;
  gap:3.5rem;
}

/* ---- Gallery ---- */
.gallery{
  display:grid;
  grid-template-columns:84px 1fr;
  gap:1rem;
}
.gallery-thumbs{
  display:flex;flex-direction:column;gap:.75rem;
}
.gallery-thumbs button{
  border:1px solid var(--stone-200);
  border-radius:var(--radius-md);
  background:var(--cream-100);
  aspect-ratio:1/1;
  display:flex;align-items:center;justify-content:center;
  padding:.5rem;
  transition:border-color .18s var(--ease);
}
.gallery-thumbs button.is-active{border-color:var(--gold-500);border-width:2px;}
.gallery-thumbs svg{width:70%;height:70%;}
.gallery-main{
  position:relative;
  background:var(--cream-100);
  border:1px solid var(--stone-200);
  border-radius:var(--radius-lg);
  aspect-ratio:1/1.05;
  display:flex;align-items:center;justify-content:center;
  overflow:hidden;
}
.gallery-main svg{width:52%;height:78%;transition:transform .4s var(--ease);}
.gallery-main:hover svg{transform:scale(1.06);}
.gallery-main .product-badge{top:1rem;left:1rem;}

/* ---- Product info ---- */
.pdp-info .brand-link{
  font-size:.8rem;color:var(--gold-600);font-weight:700;letter-spacing:.02em;
}
.pdp-info h1{
  font-family:var(--font-display);
  font-size:clamp(1.7rem,3vw,2.3rem);
  color:var(--navy-900);
  margin-block:.5rem .6rem;
  line-height:1.15;
}
.pdp-rating{display:flex;align-items:center;gap:.7rem;margin-bottom:1.1rem;}
.pdp-rating .rating{color:var(--gold-500);}
.pdp-rating a{font-size:.82rem;color:var(--ink-500);text-decoration:underline;}

.pdp-price{
  display:flex;align-items:baseline;gap:.75rem;
  padding-bottom:1.25rem;
  margin-bottom:1.25rem;
  border-bottom:1px solid var(--stone-200);
}
.pdp-price .now{font-family:var(--font-display);font-size:2rem;color:var(--navy-900);font-weight:600;}
.pdp-price .was{font-size:1rem;color:var(--ink-300);text-decoration:line-through;}
.pdp-price .save{
  background:var(--wine-700);color:var(--white);
  font-size:.72rem;font-weight:700;
  padding:.25rem .55rem;border-radius:3px;
}

.pdp-highlights{display:flex;flex-direction:column;gap:.6rem;margin-bottom:1.5rem;}
.pdp-highlights li{display:flex;gap:.6rem;font-size:.9rem;color:var(--ink-700);align-items:flex-start;}
.pdp-highlights svg{flex:none;color:var(--success);margin-top:.2rem;}

.option-block{margin-bottom:1.5rem;}
.option-block > span{
  display:block;font-size:.82rem;font-weight:700;color:var(--navy-900);margin-bottom:.65rem;
}
.option-chips{display:flex;flex-wrap:wrap;gap:.6rem;}
.option-chip{
  border:1px solid var(--stone-200);
  border-radius:var(--radius-sm);
  padding:.6rem 1rem;
  font-size:.85rem;font-weight:600;
  color:var(--navy-900);
  background:var(--white);
  position:relative;
}
.option-chip:hover{border-color:var(--gold-500);}
.option-chip.is-active{
  border-color:var(--navy-900);
  background:var(--navy-900);
  color:var(--cream-50);
}
.option-chip .diff{display:block;font-size:.7rem;opacity:.7;font-weight:500;}

.qty-row{
  display:flex;align-items:center;gap:1rem;
  margin-bottom:1.4rem;
}
.qty-row .qty-stepper{border-color:var(--stone-200);height:3rem;}
.qty-row .qty-stepper button{width:2.5rem;height:2.98rem;font-size:1.2rem;}
.qty-row .qty-stepper input{width:2.4rem;}
.stock-status{display:flex;align-items:center;gap:.4rem;font-size:.85rem;color:var(--success);font-weight:600;}
.stock-status svg{flex:none;}

.pdp-actions{display:flex;gap:1rem;margin-bottom:1.5rem;}
.pdp-actions .btn-navy, .pdp-actions .btn-gold{flex:1;padding-block:1rem;font-size:.95rem;}
.pdp-actions .icon-square{
  width:3.4rem;height:3.4rem;flex:none;
  border:1px solid var(--stone-200);
  border-radius:var(--radius-sm);
  display:flex;align-items:center;justify-content:center;
  color:var(--navy-900);
  background:var(--white);
}
.pdp-actions .icon-square:hover{border-color:var(--wine-700);color:var(--wine-700);}
.pdp-actions .icon-square.is-active{background:var(--wine-700);border-color:var(--wine-700);color:var(--white);}

.fulfillment{
  border:1px solid var(--stone-200);
  border-radius:var(--radius-md);
  padding:1.1rem 1.25rem;
  display:flex;flex-direction:column;gap:.9rem;
  margin-bottom:1.5rem;
}
.fulfillment-row{display:flex;gap:.85rem;align-items:flex-start;}
.fulfillment-row svg{flex:none;color:var(--gold-600);margin-top:.15rem;}
.fulfillment-row strong{display:block;font-size:.86rem;color:var(--navy-900);}
.fulfillment-row span{font-size:.8rem;color:var(--ink-500);}

.age-notice{
  display:flex;gap:.7rem;align-items:flex-start;
  background:var(--cream-100);
  border:1px dashed var(--stone-200);
  border-radius:var(--radius-md);
  padding:1rem 1.1rem;
  font-size:.82rem;color:var(--ink-700);
}
.age-notice svg{flex:none;color:var(--wine-700);}

/* ---- Tabs ---- */
.pdp-tabs{margin-top:3.5rem;}
.tab-list{
  display:flex;gap:2rem;
  border-bottom:1px solid var(--stone-200);
  overflow-x:auto;
}
.tab-btn{
  background:none;border:none;
  padding:.9rem .1rem;
  font-size:.92rem;font-weight:700;
  color:var(--ink-500);
  border-bottom:2px solid transparent;
  white-space:nowrap;
}
.tab-btn.is-active{color:var(--navy-900);border-color:var(--gold-500);}
.tab-panel{display:none;padding-block:2rem;max-width:78ch;}
.tab-panel.is-active{display:block;}
.tab-panel p{color:var(--ink-700);margin-bottom:1rem;}
.spec-table{width:100%;border-collapse:collapse;max-width:520px;}
.spec-table tr{border-bottom:1px solid var(--stone-200);}
.spec-table td{padding:.7rem 0;font-size:.88rem;}
.spec-table td:first-child{color:var(--ink-500);width:40%;}
.spec-table td:last-child{color:var(--navy-900);font-weight:600;}

.review-summary{display:flex;gap:3rem;margin-bottom:2rem;flex-wrap:wrap;}
.review-score{text-align:center;}
.review-score strong{font-family:var(--font-display);font-size:3rem;color:var(--navy-900);display:block;}
.review-score .rating{justify-content:center;margin:.4rem 0;}
.review-score span{font-size:.8rem;color:var(--ink-500);}
.review-bars{flex:1;min-width:220px;display:flex;flex-direction:column;gap:.5rem;}
.review-bar-row{display:grid;grid-template-columns:3.5rem 1fr 2rem;align-items:center;gap:.7rem;font-size:.78rem;color:var(--ink-500);}
.review-bar-track{height:8px;background:var(--cream-100);border-radius:99px;overflow:hidden;}
.review-bar-fill{height:100%;background:var(--gold-500);}
.review-list{display:flex;flex-direction:column;gap:1.75rem;}
.review-item{border-bottom:1px solid var(--stone-200);padding-bottom:1.75rem;}
.review-item .rating{margin-bottom:.5rem;}
.review-item h4{font-size:.92rem;color:var(--navy-900);margin-bottom:.3rem;}
.review-item .review-person{margin-top:.75rem;}
.review-flash{margin-bottom:1.25rem;padding:.8rem 1rem;border:1px solid #9ccdaf;background:#edf8f1;color:#176d43;border-radius:var(--radius-sm);}
.review-form{max-width:640px;margin:1.5rem 0 2rem;padding:1.25rem;border:1px solid var(--stone-200);border-radius:var(--radius-md);background:var(--white);}
.review-form h3{font-family:var(--font-display);color:var(--navy-900);margin-bottom:1rem;}
.review-form label:not(.star-rating label){display:block;font-size:.86rem;font-weight:700;color:var(--navy-900);margin:1rem 0 .45rem;}
.review-form textarea{width:100%;resize:vertical;border:1px solid var(--stone-200);border-radius:var(--radius-sm);padding:.75rem;font:inherit;color:var(--ink-700);}
.review-form .btn{margin-top:1rem;}
.star-rating{border:0;padding:0;margin:0;display:flex;flex-direction:row-reverse;justify-content:flex-end;gap:.15rem;}
.star-rating legend{font-size:.86rem;font-weight:700;color:var(--navy-900);margin-bottom:.35rem;}
.star-rating input{position:absolute;opacity:0;}
.star-rating label{font-size:1.65rem;line-height:1;color:var(--stone-200);cursor:pointer;}
.star-rating input:checked ~ label,.star-rating label:hover,.star-rating label:hover ~ label{color:var(--gold-500);}
.field-error{margin-top:.45rem!important;color:#a92b25!important;font-size:.8rem;}
.review-signin{margin:1.25rem 0 2rem;padding:1rem;background:var(--cream-100);border-radius:var(--radius-sm);}
.review-signin a{color:var(--navy-900);font-weight:700;text-decoration:underline;}

/* ---- Related products ---- */
.related{margin-top:1rem;padding-block:3.5rem;border-top:1px solid var(--stone-200);}

/* ---- Sticky mobile add to cart ---- */
.sticky-atc{
  position:fixed;left:0;right:0;bottom:0;
  background:var(--white);
  border-top:1px solid var(--stone-200);
  padding:.85rem 1.1rem;
  display:none;
  align-items:center;
  gap:1rem;
  z-index:70;
  box-shadow:0 -10px 25px rgba(14,27,46,.08);
  transform:translateY(100%);
  transition:transform .25s var(--ease);
}
.sticky-atc.is-visible{transform:translateY(0);}
.sticky-atc .info{flex:1;min-width:0;}
.sticky-atc .info strong{display:block;font-size:.85rem;color:var(--navy-900);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.sticky-atc .info span{font-size:.85rem;color:var(--gold-600);font-weight:700;}
.sticky-atc .btn{flex:none;}

@media (max-width:900px){
  .pdp-layout{grid-template-columns:1fr;gap:2rem;}
  .sticky-atc{display:flex;}
  .pdp{padding-bottom:5.5rem;}
}
@media (max-width:520px){
  .gallery{grid-template-columns:1fr;}
  .gallery-thumbs{flex-direction:row;overflow-x:auto;}
  .gallery-thumbs button{min-width:64px;}
  .review-summary{gap:1.5rem;}
}
