/* ============================================================
   KHADIZA DREAMS — product.css
   Used only by: product.html
   Depends on: styles.css (tokens, buttons, cards, rail, footer)
   ============================================================ */


/* ============================================================
   1. BREADCRUMBS
   ============================================================ */
.crumbs{
  padding-block:24px;
  font-size:10.5px;
  letter-spacing:.18em;
  text-transform:uppercase;
  color:var(--muted);
}
.crumbs a{ transition:color .3s; }
.crumbs a:hover{ color:var(--ink); }
.crumbs span{ margin-inline:9px; opacity:.45; }


/* ============================================================
   2. PRODUCT LAYOUT (two columns)
   ============================================================ */
.product{
  display:grid;
  grid-template-columns:minmax(0, 1.05fr) minmax(0, 1fr);
  gap:clamp(32px, 5vw, 80px);
  align-items:start;
  padding-bottom:clamp(56px, 7vw, 96px);
}


/* ============================================================
   3. GALLERY
   ============================================================ */
.gallery{
  position:relative;
  display:flex;
  flex-direction:column;
  gap:14px;
}

.gallery__radio{
  position:absolute;
  width:1px;
  height:1px;
  opacity:0;
  pointer-events:none;
}

.gallery__main{
  position:relative;
  aspect-ratio:3 / 4;
  overflow:hidden;
  background:var(--soft);
  border-radius:var(--radius);
}

.gallery__img{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  object-fit:cover;
  opacity:0;
  transition:opacity .5s var(--ease), transform 1.2s var(--ease-out);
}

#gallery-1:checked ~ .gallery__main .gallery__img--1,
#gallery-2:checked ~ .gallery__main .gallery__img--2,
#gallery-3:checked ~ .gallery__main .gallery__img--3,
#gallery-4:checked ~ .gallery__main .gallery__img--4{
  opacity:1;
}

.gallery__main:hover .gallery__img{
  transform:scale(1.03);
}

/* badge overlay on main image */
.gallery__badge{
  position:absolute;
  top:16px;
  left:16px;
  z-index:2;
  padding:7px 13px;
  background:var(--ink);
  color:var(--paper);
  font-size:9px;
  letter-spacing:.18em;
  text-transform:uppercase;
  line-height:1;
}

/* thumbnails */
.gallery__thumbs{
  display:grid;
  grid-template-columns:repeat(4, 1fr);
  gap:10px;
}

.gallery__thumb{
  position:relative;
  display:block;
  aspect-ratio:3 / 4;
  overflow:hidden;
  background:var(--soft);
  border:1px solid transparent;
  border-radius:var(--radius);
  cursor:pointer;
  transition:border-color .3s var(--ease), opacity .3s;
}

.gallery__thumb:hover{ opacity:.85; }

.gallery__thumb img{
  width:100%;
  height:100%;
  object-fit:cover;
}

#gallery-1:checked ~ .gallery__thumbs .gallery__thumb:nth-child(1),
#gallery-2:checked ~ .gallery__thumbs .gallery__thumb:nth-child(2),
#gallery-3:checked ~ .gallery__thumbs .gallery__thumb:nth-child(3),
#gallery-4:checked ~ .gallery__thumbs .gallery__thumb:nth-child(4){
  border-color:var(--ink);
}


/* ============================================================
   4. INFO PANEL
   ============================================================ */
.pinfo{
  display:flex;
  flex-direction:column;
  gap:22px;
  position:sticky;
  top:calc(var(--header-h) + 28px);
}

.pinfo__eyebrow{
  font-size:10px;
  letter-spacing:.26em;
  text-transform:uppercase;
  color:var(--gold);
}

.pinfo__title{
  font-size:clamp(28px, 3.6vw, 44px);
  font-weight:300;
  line-height:1.08;
  letter-spacing:-.005em;
}

.pinfo__rating{
  display:flex;
  align-items:center;
  gap:10px;
  font-size:12.5px;
  color:var(--muted);
}

.pinfo__stars{
  display:inline-flex;
  gap:2px;
  color:var(--gold);
}

.pinfo__stars svg{
  width:14px;
  height:14px;
  fill:currentColor;
}

.pinfo__rating a{
  color:var(--ink);
  border-bottom:1px solid var(--line-dark);
  padding-bottom:1px;
  transition:border-color .3s;
}
.pinfo__rating a:hover{ border-color:var(--ink); }

.pinfo__price{
  font-family:var(--font-display);
  font-size:clamp(24px, 2.4vw, 32px);
  font-weight:500;
  color:var(--ink);
  line-height:1;
}

.pinfo__price-note{
  display:block;
  margin-top:6px;
  font-family:var(--font-body);
  font-size:11.5px;
  letter-spacing:.04em;
  color:var(--muted);
  font-weight:300;
}

.pinfo__text{
  max-width:52ch;
  font-size:14.5px;
  font-weight:300;
  line-height:1.8;
  color:var(--ink-soft);
}

.pinfo__divider{
  height:1px;
  background:var(--line);
  margin-block:4px;
}

/* ---------- Options ---------- */
.option{
  display:flex;
  flex-direction:column;
  gap:12px;
}

.option__head{
  display:flex;
  align-items:baseline;
  justify-content:space-between;
  gap:12px;
}

.option__label{
  font-size:10px;
  font-weight:500;
  letter-spacing:.22em;
  text-transform:uppercase;
  color:var(--ink);
}

.option__value{
  font-size:12.5px;
  font-weight:300;
  color:var(--muted);
}

/* swatches (finish) */
.swatches-lg{
  display:flex;
  gap:10px;
}

.swatch-lg{
  position:relative;
  display:block;
  width:34px;
  height:34px;
  border-radius:50%;
  border:1px solid var(--line);
  cursor:pointer;
  transition:transform .3s var(--ease), box-shadow .3s;
}

.swatch-lg input{
  position:absolute;
  opacity:0;
  pointer-events:none;
}

.swatch-lg:hover{ transform:scale(1.06); }

.swatch-lg:has(input:checked){
  box-shadow:0 0 0 2px var(--paper), 0 0 0 3px var(--ink);
}

/* size row (used on ring products — kept here for reuse) */
.sizes{
  display:flex;
  flex-wrap:wrap;
  gap:8px;
}

.size{
  position:relative;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:44px;
  height:44px;
  padding:0 12px;
  border:1px solid var(--line);
  border-radius:var(--radius);
  font-size:12.5px;
  cursor:pointer;
  transition:border-color .25s var(--ease), background .25s, color .25s;
}

.size input{
  position:absolute;
  opacity:0;
  pointer-events:none;
}

.size:hover{ border-color:var(--ink); }

.size:has(input:checked){
  background:var(--ink);
  color:var(--paper);
  border-color:var(--ink);
}

/* ---------- Quantity stepper ---------- */
.stepper{
  display:inline-flex;
  align-items:center;
  border:1px solid var(--line);
  border-radius:var(--radius);
}

.stepper__btn{
  width:44px;
  height:44px;
  display:grid;
  place-items:center;
  font-size:16px;
  line-height:1;
  transition:background .25s, color .25s;
}

.stepper__btn:hover{
  background:var(--soft);
  color:var(--gold);
}

.stepper__input{
  width:44px;
  height:44px;
  text-align:center;
  border:0;
  background:transparent;
  font-size:13.5px;
  font-weight:400;
  outline:none;
  -moz-appearance:textfield;
  appearance:textfield;
}
.stepper__input::-webkit-outer-spin-button,
.stepper__input::-webkit-inner-spin-button{
  -webkit-appearance:none;
  margin:0;
}

/* ---------- Actions ---------- */
.pactions{
  display:flex;
  gap:12px;
  flex-wrap:wrap;
  align-items:stretch;
}

.pactions .btn{
  flex:1 1 auto;
  min-width:0;
}

.pactions__wish{
  display:grid;
  place-items:center;
  width:52px;
  height:52px;
  border:1px solid var(--line);
  border-radius:var(--radius);
  color:var(--ink);
  transition:background .3s, color .3s, border-color .3s;
  flex:0 0 auto;
}

.pactions__wish:hover{
  background:var(--ink);
  border-color:var(--ink);
  color:var(--paper);
}

.pactions__wish svg{
  width:20px;
  height:20px;
  fill:none;
  stroke:currentColor;
  stroke-width:1.3;
}

.pactions__wish[aria-pressed="true"] svg{
  fill:var(--rose);
  stroke:var(--rose);
}

.pactions__wish[aria-pressed="true"]{
  border-color:var(--rose);
}

/* ---------- Stock note ---------- */
.pinfo__stock{
  display:inline-flex;
  align-items:center;
  gap:9px;
  font-size:11.5px;
  letter-spacing:.06em;
  color:var(--ink-soft);
}

.pinfo__stock::before{
  content:'';
  display:block;
  width:8px;
  height:8px;
  border-radius:50%;
  background:#6ea06e;
  box-shadow:0 0 0 3px rgba(110,160,110,.18);
}

/* ---------- Trust list ---------- */
.ptrust{
  display:grid;
  grid-template-columns:1fr;
  gap:12px;
  padding:22px 0 0;
  border-top:1px solid var(--line);
}

.ptrust__item{
  display:flex;
  align-items:center;
  gap:12px;
  font-size:12.5px;
  color:var(--ink-soft);
}

.ptrust__item svg{
  flex-shrink:0;
  width:18px;
  height:18px;
  color:var(--gold);
  fill:none;
  stroke:currentColor;
  stroke-width:1.2;
  stroke-linecap:round;
  stroke-linejoin:round;
}


/* ============================================================
   5. ACCORDION (uses native <details>)
   ============================================================ */
.accordion{
  margin-top:8px;
  border-top:1px solid var(--line);
}

.acc{
  border-bottom:1px solid var(--line);
}

.acc__head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:14px;
  padding:18px 0;
  font-size:10.5px;
  font-weight:500;
  letter-spacing:.22em;
  text-transform:uppercase;
  color:var(--ink);
  cursor:pointer;
  list-style:none;
}

.acc__head::-webkit-details-marker{ display:none; }

.acc__head::after{
  content:'';
  flex-shrink:0;
  width:9px;
  height:9px;
  border-right:1.2px solid var(--ink);
  border-bottom:1.2px solid var(--ink);
  transform:rotate(45deg);
  transition:transform .35s var(--ease);
  margin-right:3px;
}

.acc[open] .acc__head::after{
  transform:rotate(-135deg);
}

.acc__body{
  padding-bottom:22px;
  font-size:13.5px;
  line-height:1.85;
  color:var(--ink-soft);
}

.acc__body p + p{ margin-top:10px; }

.acc__body ul{
  display:flex;
  flex-direction:column;
  gap:8px;
  padding-left:2px;
}

.acc__body li{
  position:relative;
  padding-left:16px;
}

.acc__body li::before{
  content:'';
  position:absolute;
  left:0;
  top:.72em;
  width:6px;
  height:1px;
  background:var(--gold);
}


/* ============================================================
   6. RELATED SECTION
   ============================================================ */
.related{
  padding-block:clamp(56px, 7vw, 96px);
  background:var(--soft);
}

/* reuse .rail from styles.css, override arrow position */
.related .rail-nav{
  top:calc(50% - 90px);
}


/* ============================================================
   7. REVIEWS
   ============================================================ */
.reviews{
  padding-block:clamp(56px, 7vw, 96px);
}

.reviews__summary{
  display:grid;
  grid-template-columns:minmax(0, 260px) minmax(0, 1fr);
  gap:clamp(28px, 4vw, 64px);
  align-items:center;
  padding-bottom:clamp(36px, 4vw, 56px);
  border-bottom:1px solid var(--line);
}

.reviews__score{
  display:flex;
  flex-direction:column;
  gap:10px;
}

.reviews__number{
  font-family:var(--font-display);
  font-size:clamp(46px, 5.5vw, 68px);
  font-weight:300;
  line-height:1;
  color:var(--ink);
}

.reviews__stars{
  display:inline-flex;
  gap:3px;
  color:var(--gold);
}

.reviews__stars svg{
  width:16px;
  height:16px;
  fill:currentColor;
}

.reviews__count{
  font-size:12.5px;
  color:var(--muted);
}

.reviews__bars{
  display:flex;
  flex-direction:column;
  gap:10px;
}

.reviews__bar{
  display:grid;
  grid-template-columns:32px 1fr 40px;
  align-items:center;
  gap:14px;
  font-size:11.5px;
  color:var(--muted);
}

.reviews__bar-track{
  height:4px;
  background:var(--soft);
  border-radius:2px;
  overflow:hidden;
}

.reviews__bar-fill{
  height:100%;
  background:var(--gold);
  border-radius:2px;
}

.reviews__list{
  display:grid;
  grid-template-columns:repeat(3, 1fr);
  gap:clamp(20px, 2.8vw, 40px);
  padding-top:clamp(36px, 4vw, 56px);
}

.review{
  display:flex;
  flex-direction:column;
  gap:14px;
  padding:clamp(22px, 2.6vw, 32px);
  background:var(--soft);
  border-radius:var(--radius);
}

.review__stars{
  display:inline-flex;
  gap:3px;
  color:var(--gold);
}

.review__stars svg{
  width:13px;
  height:13px;
  fill:currentColor;
}

.review__text{
  font-size:13.5px;
  line-height:1.75;
  color:var(--ink-soft);
}

.review__author{
  margin-top:auto;
  padding-top:6px;
  font-size:10.5px;
  letter-spacing:.18em;
  text-transform:uppercase;
  color:var(--ink);
}

.review__author span{
  display:block;
  margin-top:4px;
  font-size:10px;
  letter-spacing:.12em;
  color:var(--muted);
}


/* ============================================================
   8. RESPONSIVE
   ============================================================ */
@media (max-width:1024px){
  .product{
    grid-template-columns:1fr;
    gap:36px;
  }
  .pinfo{
    position:static;
    top:auto;
  }

  .reviews__summary{
    grid-template-columns:1fr;
    gap:28px;
  }
  .reviews__list{
    grid-template-columns:1fr;
  }
}

@media (max-width:640px){
  .gallery__thumbs{
    grid-template-columns:repeat(4, 1fr);
    gap:8px;
  }

  .pactions{
    flex-direction:column;
    align-items:stretch;
  }
  .pactions__wish{
    width:100%;
    height:52px;
  }

  .pinfo__title{ font-size:clamp(24px, 7vw, 32px); }
  .pinfo__price{ font-size:26px; }

  .stepper{ width:100%; justify-content:space-between; }
  .stepper__input{ flex:1; }

  .reviews__bar{
    grid-template-columns:26px 1fr 34px;
    gap:10px;
  }
}

@media (max-width:420px){
  .gallery__thumbs{ gap:6px; }
}