/* ── the property page, second cut: gallery stage + thumbnail carousel, facts strip, highlights, full gallery, drive times, services, sticky agent ── */
.pv{padding-top:clamp(84px,9vw,104px)}
.pv__in{gap:clamp(26px,3.6vw,52px)}
/* the stage */
.pvh{display:grid;gap:12px}
.pvh__stage{position:relative;height:clamp(380px,56vw,760px);border-radius:var(--r);overflow:hidden;background:var(--ice);isolation:isolate}
.pvh__stage>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block;will-change:transform}
.pvh__zoom{position:absolute;inset:0;border:0;background:none;cursor:zoom-in;z-index:1}
.glassbtn{display:inline-flex;align-items:center;gap:9px;padding:12px 16px;border-radius:999px;border:0;cursor:pointer;
  font:600 12px/1 var(--ui);letter-spacing:.06em;text-transform:uppercase;color:var(--ink);
  background:linear-gradient(165deg,rgba(255,255,255,.94),rgba(255,255,255,.76));
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.95),inset 0 1.5px 0 #FFFFFF,0 10px 24px -12px rgba(17,19,24,.45);transition:transform .35s var(--e),box-shadow .35s var(--e)}
.glassbtn:hover{transform:translateY(-1px);box-shadow:inset 0 0 0 1px rgba(255,255,255,.95),inset 0 1.5px 0 #FFFFFF,0 16px 30px -14px rgba(17,19,24,.5)}
.glassbtn b{font-weight:600;color:var(--pewter)}
.pvh__tools{position:absolute;right:16px;top:16px;z-index:2;display:flex;gap:8px}
.pvh__count{position:absolute;left:16px;bottom:16px;z-index:2;padding:10px 14px;cursor:default}
.pvh__count b{color:var(--ink)}
.pvh__nav{position:absolute;top:50%;transform:translateY(-50%);z-index:2;width:48px;height:48px;padding:0;justify-content:center;border-radius:50%}
.pvh__nav:hover{transform:translateY(-50%)}
.pvh__nav--p{left:16px}.pvh__nav--n{right:16px}
.pvh__nav i{display:block;width:9px;height:9px;border-right:1.5px solid var(--ink);border-bottom:1.5px solid var(--ink);transform:translateX(-2px) rotate(-45deg)}
.pvh__nav--p i{transform:translateX(2px) rotate(135deg)}
.ic-ph{position:relative;width:14px;height:11px;border:1.5px solid currentColor;border-radius:2px}
.ic-ph::after{content:"";position:absolute;left:2px;top:2px;width:3px;height:3px;border-radius:50%;background:currentColor}
.ic-sh{position:relative;width:12px;height:12px;border:1.5px solid currentColor;border-top-color:transparent;border-radius:2px}
.ic-sh::before{content:"";position:absolute;left:50%;top:-5px;width:1.5px;height:11px;background:currentColor;transform:translateX(-50%)}
.ic-sh::after{content:"";position:absolute;left:50%;top:-5px;width:6px;height:6px;border-left:1.5px solid currentColor;border-top:1.5px solid currentColor;transform:translateX(-50%) rotate(45deg)}
/* the thumbnails: a strip that scrolls, the active one ringed */
.pvh__thumbs{display:flex;gap:10px;overflow-x:auto;scroll-snap-type:x proximity;padding:4px 2px 8px;scrollbar-width:none}
.pvh__thumbs::-webkit-scrollbar{display:none}
.pvh__th{flex:0 0 auto;width:148px;height:98px;border-radius:12px;overflow:hidden;border:0;padding:0;background:var(--ice);cursor:pointer;scroll-snap-align:center;position:relative;
  box-shadow:0 0 0 1px rgba(17,19,24,.06);transition:box-shadow .3s var(--e-soft),transform .45s var(--e)}
.pvh__th img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .8s var(--e),opacity .3s}
.pvh__th:not(.is-on) img{opacity:.78}
.pvh__th:hover img{transform:scale(1.05);opacity:1}
.pvh__th.is-on{box-shadow:0 0 0 2px var(--ink)}
.pvh__th.is-on img{opacity:1}
/* the head */
.pv__head{max-width:none;gap:18px}
.pv__price{align-items:baseline}
.pv__price span{color:var(--pewter);text-transform:none;letter-spacing:0;font:500 15px/1 var(--ui)}
.pv__strip{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));border-radius:22px;padding:8px;max-width:820px;margin-top:6px}
.pv__strip .counter{padding:16px 20px}
.pv__strip .counter b{font-size:clamp(24px,2.4vw,34px)}
/* highlights */
.pv__hl{display:grid;gap:14px}
.pv__chips{display:flex;flex-wrap:wrap;gap:8px}
.pv__chips span{padding:11px 15px;border-radius:999px;font:600 12px/1 var(--ui);letter-spacing:.05em;text-transform:uppercase;color:var(--ink);
  background:linear-gradient(180deg,rgba(255,255,255,.95),rgba(240,243,247,.8));box-shadow:inset 0 0 0 1px rgba(17,19,24,.07),0 6px 16px -12px rgba(17,19,24,.3)}
/* the full gallery */
.pvgl{display:grid;gap:14px}
.pvgl__grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}
.pvgl__it{position:relative;border:0;padding:0;border-radius:14px;overflow:hidden;background:var(--ice);cursor:zoom-in;aspect-ratio:3/2}
.pvgl__it:nth-child(3n+1){grid-column:span 2;aspect-ratio:16/8}
.pvgl__it img{width:100%;height:100%;object-fit:cover;display:block;transition:transform 1s var(--e)}
.pvgl__it:hover img{transform:scale(1.04)}
.pvgl__it span{position:absolute;left:12px;bottom:12px;padding:8px 11px;border-radius:999px;font:600 11px/1 var(--ui);letter-spacing:.06em;color:var(--ink);
  background:rgba(255,255,255,.86);box-shadow:inset 0 0 0 1px rgba(255,255,255,.95)}
/* location + drive times */
.pv__map{min-height:360px;grid-template-columns:1fr}
.pv__drive{list-style:none;margin:10px 0 0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px 18px;max-width:440px}
.pv__drive li{display:flex;justify-content:space-between;gap:12px;padding:9px 0;border-bottom:1px solid var(--rule);font:500 13px/1.3 var(--ui);color:var(--ink-2)}
.pv__drive b{font-weight:600;color:var(--ink);font-variant-numeric:tabular-nums;white-space:nowrap}
/* the agency's services */
.pv__svc{display:grid;gap:14px}
.pv__svc ul{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.pv__svc li{display:grid;grid-template-columns:1fr auto;gap:4px 18px;align-items:center;padding:16px 20px;border-radius:14px;background:var(--ice)}
.pv__svc li b{font:600 var(--t5)/1.25 var(--ui);letter-spacing:-.01em;color:var(--ink)}
.pv__svc li span{grid-column:1;font:400 13px/1.45 var(--ui);color:var(--pewter)}
.pv__svc li a{grid-column:2;grid-row:1/3;font:600 12px/1 var(--ui);letter-spacing:.05em;text-transform:uppercase;color:var(--ink);white-space:nowrap}
/* the agent card */
.pv__alt{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.pv__alt .btn{width:100%;padding-left:10px;padding-right:10px}
.linkbtn{border:0;background:none;padding:0;font:inherit;color:var(--ink);cursor:pointer;text-decoration:underline;text-underline-offset:2px}
.toast{position:fixed;left:50%;bottom:26px;transform:translateX(-50%);z-index:320;padding:12px 18px;border-radius:999px;font:600 12px/1 var(--ui);letter-spacing:.06em;text-transform:uppercase;color:var(--ink);
  background:rgba(255,255,255,.96);box-shadow:inset 0 0 0 1px rgba(17,19,24,.08),0 18px 40px -18px rgba(17,19,24,.45)}
@media (max-width:900px){
  .pvh__stage{height:auto;aspect-ratio:4/3}.pvh__tools{right:12px;top:12px}.pvh__tools .glassbtn{padding:10px 12px}
  .pvh__th{width:112px;height:76px}
  .pv__strip{grid-template-columns:repeat(2,minmax(0,1fr))}
  .pvgl__grid{grid-template-columns:1fr}.pvgl__it,.pvgl__it:nth-child(3n+1){grid-column:auto;aspect-ratio:3/2}
  .pv__drive{grid-template-columns:1fr}
  .pv__svc li{grid-template-columns:1fr}.pv__svc li a{grid-column:1;grid-row:auto;padding-top:6px}
  .pv__alt{grid-template-columns:1fr}
  .est__row{grid-template-columns:1fr}}

/* v17 · the stage fits the first screen; the thumbnails follow it */
.pvh__stage{height:clamp(300px,min(40vw,56vh),560px)}
.pvh__th{width:124px;height:82px}
@media (max-width:900px){.pvh__stage{height:auto;aspect-ratio:4/3}.pvh__th{width:104px;height:70px}}
/* v17 · figures never wrap */
.pv__facts dd,.pv__price span,.pv__strip .counter b{white-space:nowrap}
.pv__facts dd{font-size:clamp(17px,1.3vw,20px)}
/* v17 · the situation card: the map on the left, the words on the right — nothing over anything */
.pv__map{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:stretch;min-height:0;background:var(--ice)}
.pv__mapin{position:relative;inset:auto;min-height:320px}
.pv__mapin svg{position:absolute;inset:0;width:100%;height:100%}
.pv__mapcap{padding:clamp(22px,3vw,36px);align-content:center;gap:8px}
.pv__drive{max-width:none}
@media (max-width:900px){.pv__map{grid-template-columns:1fr}.pv__mapin{min-height:220px}}

/* v18 · the carousel: the active photo at its own landscape ratio, centred; the neighbours peek on both sides */
.pv{padding-top:clamp(74px,8vw,92px)}
.pvh{margin-top:-6px}
.pvc{position:relative;overflow:hidden;border-radius:var(--r);height:clamp(300px,min(56vh,40vw),600px);isolation:isolate;touch-action:pan-y}
.pvc__track{position:absolute;left:50%;top:0;height:100%;display:flex;column-gap:16px;will-change:transform;cursor:grab}
.pvc__track:active{cursor:grabbing}
.pvc__slide{flex:0 0 auto;height:100%;aspect-ratio:3/2;margin:0;border-radius:var(--r);overflow:hidden;background:var(--ice);
  opacity:.5;transform:scale(.92);transition:opacity .5s var(--e-soft),transform .7s var(--e);user-select:none}
.pvc__slide.is-on{opacity:1;transform:none;cursor:zoom-in}
.pvc__slide img{width:100%;height:100%;object-fit:cover;display:block;pointer-events:none;-webkit-user-drag:none}
.pvh__thumbs{justify-content:center}
@media (max-width:900px){.pvc{height:auto;aspect-ratio:3/2}.pvc__slide{opacity:.9;transform:none}.pvh__thumbs{justify-content:flex-start}}

/* v18b · slides shaped by their photographs; on a phone the carousel follows the current one */
.pvc__slide{aspect-ratio:16/9}
.pvc__slide img{object-fit:cover}
@media (max-width:900px){.pvc{aspect-ratio:auto;height:220px;transition:height .5s var(--e)}.pvc__slide{height:100%}}

/* v19 · no tools over the photo; the counter alone */
.pvh__tools{display:none}
