/* Product page — the essence. Gallery + sticky buy column, accordions,
   register-interest ritual. Unhurried, garment-first. */
.pdp{display:grid;grid-template-columns:1fr 1fr;gap:0;align-items:start;max-width:1500px;margin:0 auto}
@media(max-width:900px){.pdp{grid-template-columns:1fr}}

/* gallery */
.gallery{position:relative;background:var(--bone-2)}
.gframe{position:relative;aspect-ratio:4/5;overflow:hidden;background:var(--bone-2)}
.gframe img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;
  transition:opacity .4s var(--e-out);cursor:zoom-in}
.gframe img.on{opacity:1}
.gzoom{position:absolute;inset:0;background-size:160%;background-repeat:no-repeat;opacity:0;
  transition:opacity .25s;pointer-events:none}
.gframe.zoom .gzoom{opacity:1}
.gcount{position:absolute;bottom:16px;left:16px;font-family:var(--sans);font-size:.72rem;
  letter-spacing:.14em;color:var(--ink);background:color-mix(in srgb,var(--bone) 82%,transparent);
  padding:5px 11px;z-index:3}
.gnav{position:absolute;top:50%;transform:translateY(-50%);width:44px;height:44px;border-radius:50%;
  background:color-mix(in srgb,var(--bone) 86%,transparent);border:1px solid var(--hair);cursor:pointer;
  display:flex;align-items:center;justify-content:center;z-index:3;transition:background .2s;color:var(--ink)}
.gnav:hover{background:var(--bone)}
.gnav.prev{left:14px}.gnav.next{right:14px}
.gdots{display:flex;gap:8px;justify-content:center;padding:14px 0;background:var(--bone-2)}
.gdots button{width:7px;height:7px;border-radius:50%;border:0;background:var(--stone);cursor:pointer;padding:0;transition:background .2s,transform .2s}
.gdots button.on{background:var(--ink);transform:scale(1.25)}
.gthumbs{display:none}
@media(min-width:901px){
  .gthumbs{display:grid;grid-template-columns:repeat(6,1fr);gap:6px;padding:6px;background:var(--bone-2)}
  .gthumbs button{aspect-ratio:4/5;border:1px solid transparent;padding:0;cursor:pointer;background:var(--bone);overflow:hidden}
  .gthumbs button img{width:100%;height:100%;object-fit:cover}
  .gthumbs button.on{border-color:var(--ink)}
  .gdots{display:none}
}

/* buy column */
.buy{padding:clamp(28px,4vw,72px) clamp(20px,4vw,64px);position:sticky;top:68px}
@media(max-width:900px){.buy{position:static;padding:32px var(--pad) 8px}}
.buy .fam{font-size:.72rem;letter-spacing:.2em;text-transform:uppercase;color:var(--blue);font-weight:600;margin-bottom:14px}
.buy h1{font-size:clamp(2rem,3.4vw,2.9rem);line-height:1.02;margin-bottom:10px}
.buy .vdesc{color:var(--muted);font-size:.95rem;margin-bottom:18px}
.buy .price{font-family:var(--serif);font-size:1.5rem;margin-bottom:6px}
.buy .prov{font-size:.95rem;line-height:1.62;color:var(--ink-soft);margin:20px 0 28px;max-width:46ch}
.sel-group{margin-bottom:22px}
.sel-label{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:10px}
.sel-label .lab{font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);font-weight:600}
.sel-label .val{font-size:.85rem;color:var(--ink)}
.swatches{display:flex;flex-wrap:wrap;gap:8px}
.swatch{width:34px;height:34px;border-radius:50%;border:1px solid var(--hair);cursor:pointer;position:relative;padding:0;
  transition:transform .15s}
.swatch:hover{transform:scale(1.08)}
.swatch.on{box-shadow:0 0 0 1px var(--bone),0 0 0 2px var(--ink)}
.sizes{display:flex;flex-wrap:wrap;gap:8px}
.size-btn{min-width:52px;padding:11px 14px;border:1px solid var(--hair);background:var(--paper);cursor:pointer;
  font-family:var(--sans);font-size:.85rem;letter-spacing:.04em;transition:border-color .2s,background .2s}
.size-btn:hover{border-color:var(--ink)}
.size-btn.on{background:var(--ink);color:var(--paper);border-color:var(--ink)}
.size-btn.oos{opacity:.4;text-decoration:line-through;cursor:not-allowed}
.fitline{font-size:.82rem;color:var(--muted);margin-top:10px}
.add{margin-top:8px}
.btn-add{width:100%;padding:18px;background:var(--ink);color:var(--paper);border:1px solid var(--ink);
  font-family:var(--sans);font-size:.82rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;cursor:pointer;
  position:relative;overflow:hidden;transition:color .3s}
.btn-add .fill{position:absolute;inset:0;background:var(--blue);transform:scaleX(0);transform-origin:left;
  transition:transform .5s var(--e-out);z-index:0}
.btn-add.added .fill{transform:scaleX(1)}
.btn-add span{position:relative;z-index:1}
.btn-add:hover{background:var(--blue);border-color:var(--blue)}
.btn-add.added{border-color:var(--blue)}
.buy-note{font-size:.76rem;color:var(--muted);text-align:center;margin-top:12px}

/* register interest (waitlist) */
.ri-wrap{margin-top:8px}
.ri-copy{font-size:.82rem;color:var(--muted);margin-top:12px;line-height:1.5}
.ri-form{margin-top:14px;display:none}
.ri-form.open{display:block;animation:riIn .35s var(--e-out)}
@keyframes riIn{from{opacity:0;transform:translateY(-6px)}to{opacity:1}}
.ri-done{display:none;align-items:center;gap:10px;margin-top:14px;color:var(--blue);font-size:.92rem}
.ri-done.show{display:flex}
.checkdraw{width:22px;height:22px;flex:0 0 auto}
.checkdraw path{stroke:var(--blue);stroke-width:2.4;fill:none;stroke-linecap:round;stroke-linejoin:round;
  stroke-dasharray:32;stroke-dashoffset:32;animation:draw .4s var(--e-out) forwards}
@keyframes draw{to{stroke-dashoffset:0}}

/* accordions */
.acc{border-top:1px solid var(--hair);margin-top:28px}
.acc-item{border-bottom:1px solid var(--hair)}
.acc-head{width:100%;background:none;border:0;cursor:pointer;padding:20px 2px;display:flex;
  justify-content:space-between;align-items:center;font-family:var(--sans);font-size:.78rem;
  letter-spacing:.14em;text-transform:uppercase;font-weight:600;color:var(--ink);text-align:left}
.acc-chev{transition:transform .25s var(--e-out);flex:0 0 auto}
.acc-item.open .acc-chev{transform:rotate(180deg)}
.acc-body{max-height:0;overflow:hidden;transition:max-height .25s var(--e-out)}
.acc-body .inner{padding:0 2px 22px;font-size:.9rem;color:var(--ink-soft);line-height:1.6}
.acc-body ul{margin:0;padding-left:18px}.acc-body li{margin-bottom:5px}

/* service furniture */
.svc{margin-top:26px;border-top:1px solid var(--hair);padding-top:20px}
.svc .icon-line{border-bottom:1px solid transparent}
.svc-phone{font-size:.82rem;color:var(--muted);margin-top:14px}
.svc-phone a{color:var(--ink);border-bottom:1px solid var(--hair)}

/* fullscreen viewer */
.viewer{position:fixed;inset:0;background:rgba(12,12,15,.94);z-index:200;display:none;align-items:center;justify-content:center}
.viewer.open{display:flex}
.viewer img{max-width:92vw;max-height:88vh;object-fit:contain}
.viewer .vclose{position:absolute;top:20px;right:24px;background:none;border:0;color:#fff;cursor:pointer}
.viewer .vnav{position:absolute;top:50%;transform:translateY(-50%);background:none;border:0;color:#fff;cursor:pointer;padding:20px}
.viewer .vnav.prev{left:8px}.viewer .vnav.next{right:8px}

/* complete the look + editorial band */
.ctl{max-width:var(--maxw);margin:0 auto;padding:var(--sec) var(--pad)}
.ctl h2{font-size:clamp(1.6rem,3vw,2.4rem);margin-bottom:8px}
.hub-band{background:var(--ink);color:var(--paper);display:grid;grid-template-columns:1fr 1fr;align-items:stretch}
@media(max-width:820px){.hub-band{grid-template-columns:1fr}}
.hub-band .hb-img{min-height:420px;background-size:cover;background-position:center}
.hub-band .hb-txt{padding:clamp(40px,6vw,88px)}
.hub-band .hb-txt h2{color:var(--paper)}
