/* ============================================================
   VIEWS — property detail, gallery, lightbox, shortlist panel
   ============================================================ */

/* ---- Page transition curtain ------------------------------ */
.curtain{
  position:fixed; inset:0; z-index:calc(var(--z-view) + 5);
  background:var(--forest);
  transform:scaleY(0); transform-origin:50% 100%;
  pointer-events:none;
}
.curtain.is-in{ transform:scaleY(1); transform-origin:50% 100%; transition:transform .55s var(--ease-inout); }
.curtain.is-out{ transform:scaleY(0); transform-origin:50% 0; transition:transform .55s var(--ease-inout); }

/* ---- Property view ---------------------------------------- */
.pview{
  position:fixed; inset:0; z-index:var(--z-view);
  background:var(--paper);
  overflow-y:auto; overscroll-behavior:contain;
  visibility:hidden; opacity:0;
  transition:opacity .4s var(--ease), visibility .4s;
}
.pview.is-open{ visibility:visible; opacity:1; }

.pview__bar{
  position:sticky; top:0; z-index:6;
  background:rgba(251,248,241,.9);
  backdrop-filter:blur(16px) saturate(1.2);
  border-bottom:1px solid var(--line);
}
.pview__bar-inner{
  height:clamp(58px,7vh,74px);
  display:flex; align-items:center; justify-content:space-between; gap:20px;
}
.pview__back{ display:flex; align-items:center; gap:12px; font-size:var(--t-micro); letter-spacing:var(--track-label); text-transform:uppercase; font-weight:500; }
.pview__back i{ font-style:normal; transition:transform var(--dur) var(--ease); display:inline-block; }
.pview__back:hover i{ transform:translateX(-4px); }
.pview__bar-title{ font:300 1.15rem/1 var(--serif); letter-spacing:-.02em; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.pview__bar-actions{ display:flex; align-items:center; gap:10px; }

/* Hero gallery */
.pgal{ position:relative; background:var(--forest); }
.pgal__stage{
  position:relative;
  height:clamp(420px,78vh,900px);
  overflow:hidden;
}
.pgal__slide{
  position:absolute; inset:0;
  opacity:0; transition:opacity .9s var(--ease-soft);
}
.pgal__slide.is-on{ opacity:1; }
.pgal__slide img{ width:100%; height:100%; object-fit:cover; filter:saturate(.88) contrast(1.03); }
.pgal__nav{
  position:absolute; inset:auto 0 0 0; z-index:3;
  display:flex; justify-content:space-between; align-items:flex-end; gap:20px;
  padding:clamp(18px,2.6vw,34px);
  background:linear-gradient(0deg,rgba(9,26,20,.72),transparent);
  color:var(--ink-on-dark);
}
.pgal__caption{ font-size:var(--t-micro); letter-spacing:var(--track-label); text-transform:uppercase; color:var(--ink-on-dark-65); }
.pgal__controls{ display:flex; align-items:center; gap:12px; }
.pgal__counter{ font-size:var(--t-micro); letter-spacing:.16em; color:var(--ink-on-dark-65); min-width:52px; text-align:center; }
.pgal__thumbs{
  display:flex; gap:8px; overflow-x:auto;
  padding:10px var(--gutter);
  background:var(--forest);
}
.pgal__thumbs button{
  flex:0 0 88px; aspect-ratio:4/3; overflow:hidden; opacity:.42;
  transition:opacity var(--dur) var(--ease);
}
.pgal__thumbs button.is-on,.pgal__thumbs button:hover{ opacity:1; }
.pgal__thumbs img{ width:100%; height:100%; object-fit:cover; }
.pgal__expand{
  position:absolute; top:clamp(16px,2.4vw,28px); right:clamp(16px,2.4vw,28px); z-index:3;
}

/* Property masthead block */
.pview__masthead{
  display:grid; grid-template-columns:minmax(0,1.25fr) minmax(0,.75fr);
  gap:clamp(28px,4vw,80px); align-items:start;
  padding-block:clamp(40px,5vw,76px);
  border-bottom:1px solid var(--line);
}
.pview__title{ font:300 clamp(2.2rem,4.6vw,4.4rem)/.98 var(--serif); letter-spacing:-.035em; margin-bottom:16px; }
.pview__place{ display:flex; flex-wrap:wrap; gap:10px 24px; align-items:center; margin-bottom:22px; }
.pview__price{
  display:grid; gap:6px; padding:clamp(20px,2.4vw,30px);
  border:1px solid var(--line-2); background:var(--paper-2);
}
.pview__price strong{ font:300 clamp(1.8rem,3vw,2.8rem)/1 var(--serif); letter-spacing:-.02em; }
.pview__price-actions{ display:grid; gap:9px; margin-top:16px; }

.pview__body{
  display:grid; grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);
  gap:clamp(32px,5vw,90px); align-items:start;
  padding-block:clamp(40px,5vw,76px);
}
.pview__main{ display:grid; gap:clamp(36px,4.6vw,72px); }
.pview__aside{ display:grid; gap:clamp(24px,3vw,40px); position:sticky; top:calc(var(--header-h) + 28px); }
.pblock{ display:grid; gap:clamp(16px,2vw,24px); }
.pblock__head{ display:flex; align-items:baseline; justify-content:space-between; gap:20px; padding-bottom:14px; border-bottom:1px solid var(--line); }
.pblock p{ font-size:var(--t-small); line-height:1.82; color:var(--ink-70); max-width:64ch; }
.pblock p + p{ margin-top:-6px; }

.features{ display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px 28px; }
.features li{
  display:flex; gap:11px; align-items:flex-start;
  font-size:var(--t-small); color:var(--ink-70); padding:7px 0;
  border-bottom:1px solid var(--line);
}
.features li::before{ content:"—"; color:var(--ink-38); flex:none; }

/* Editorial split gallery inside body */
.pview__strip{ display:grid; grid-template-columns:1fr 1fr; gap:clamp(12px,1.4vw,20px); }
.pview__strip figure{ overflow:hidden; aspect-ratio:4/3; background:var(--paper-2); }
.pview__strip img{ width:100%; height:100%; object-fit:cover; transition:transform 1.1s var(--ease); filter:saturate(.86); }
.pview__strip figure:hover img{ transform:scale(1.04); }
.pview__strip figure:first-child{ grid-column:1/-1; aspect-ratio:16/9; }

/* Investment notes */
.invest{ background:var(--forest); color:var(--ink-on-dark); padding:clamp(26px,3.4vw,44px); display:grid; gap:24px; }
.invest__stats{ display:grid; grid-template-columns:repeat(3,1fr); gap:18px; padding-bottom:22px; border-bottom:1px solid var(--line-dark); }
.invest__stats .stat__value{ font-size:clamp(1.5rem,2.2vw,2.1rem); }
.invest ul{ display:grid; gap:13px; }
.invest li{ font-size:var(--t-small); line-height:1.7; color:var(--ink-on-dark-65); display:flex; gap:12px; }
.invest li::before{ content:"—"; color:var(--ink-on-dark-40); flex:none; }
.invest__disclaimer{ font-size:10px; line-height:1.6; color:var(--ink-on-dark-40); letter-spacing:.04em; }

/* Diligence board */
.diligence{ border-top:1px solid var(--line); }
.diligence__row{
  display:flex; justify-content:space-between; align-items:center; gap:20px;
  padding:14px 0; border-bottom:1px solid var(--line);
  font-size:var(--t-small);
}

/* Map */
.pmap{ background:var(--forest); color:var(--ink-on-dark); overflow:hidden; }
.pmap svg{ display:block; width:100%; height:auto; padding-block:clamp(8px,1.4vw,18px); }
.pmap__bar{
  display:flex; flex-wrap:wrap; gap:16px 24px;
  align-items:flex-end; justify-content:space-between;
  padding:clamp(16px,2vw,24px);
  border-top:1px solid var(--line-dark);
}
.pmap__place{ display:grid; gap:7px; }
.pmap__place strong{ font:300 clamp(1.4rem,2vw,1.9rem)/1 var(--serif); letter-spacing:-.025em; }
.pmap__place > span:last-child{
  font-size:var(--t-small); color:var(--ink-on-dark-65);
}
.pmap__bar .link{ color:var(--ink-on-dark); }
.map-node--muted{ opacity:.8; }

/* Related */
.related{ background:var(--paper-2); padding-block:clamp(48px,6vw,90px); }
.related__grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:clamp(18px,2.2vw,34px); }

/* ---- Lightbox --------------------------------------------- */
.lightbox{
  position:fixed; inset:0; z-index:var(--z-lightbox);
  background:rgba(9,26,20,.96);
  display:grid; grid-template-rows:auto 1fr auto;
  visibility:hidden; opacity:0;
  transition:opacity .4s var(--ease), visibility .4s;
}
.lightbox.is-open{ visibility:visible; opacity:1; }
.lightbox__bar{ display:flex; justify-content:space-between; align-items:center; gap:20px; padding:clamp(14px,2vw,24px) var(--gutter); color:var(--ink-on-dark); }
.lightbox__stage{ position:relative; display:grid; place-items:center; padding:0 var(--gutter); min-height:0; }
.lightbox__stage img{ max-width:100%; max-height:100%; object-fit:contain; }
.lightbox__foot{ display:flex; justify-content:center; align-items:center; gap:16px; padding:clamp(14px,2vw,24px) var(--gutter); color:var(--ink-on-dark); }

/* ---- Shortlist panel -------------------------------------- */
.panel-scrim{
  position:fixed; inset:0; z-index:calc(var(--z-panel) - 1);
  background:rgba(9,26,20,.5); backdrop-filter:blur(3px);
  opacity:0; visibility:hidden; transition:opacity .45s var(--ease), visibility .45s;
}
.panel-scrim.is-on{ opacity:1; visibility:visible; }
.panel{
  position:fixed; top:0; right:0; bottom:0; z-index:var(--z-panel);
  width:min(520px,100%);
  background:var(--paper);
  display:flex; flex-direction:column;
  transform:translateX(101%);
  transition:transform .65s var(--ease-inout);
  box-shadow:var(--shadow-lift);
}
.panel.is-open{ transform:none; }
.panel__head{
  display:flex; justify-content:space-between; align-items:center; gap:20px;
  padding:clamp(20px,3vw,30px); border-bottom:1px solid var(--line);
}
.panel__body{ flex:1; overflow-y:auto; overscroll-behavior:contain; padding:clamp(20px,3vw,30px); display:grid; gap:20px; align-content:start; }
.panel__foot{ padding:clamp(20px,3vw,30px); border-top:1px solid var(--line); display:grid; gap:12px; }
.mini{
  display:grid; grid-template-columns:96px minmax(0,1fr) auto;
  gap:16px; align-items:center;
  padding-bottom:20px; border-bottom:1px solid var(--line);
}
.mini__media{ aspect-ratio:1; overflow:hidden; background:var(--paper-2); }
.mini__media img{ width:100%; height:100%; object-fit:cover; }
.mini h4{ font:300 1.15rem/1.1 var(--serif); letter-spacing:-.02em; margin-bottom:6px; }
.mini span{ font-size:9px; letter-spacing:.16em; text-transform:uppercase; color:var(--ink-55); display:block; }
.mini strong{ font-size:var(--t-small); font-weight:500; display:block; margin-top:7px; }
.mini__remove{ font-size:18px; line-height:1; color:var(--ink-38); transition:color var(--dur-fast); align-self:start; }
.mini__remove:hover{ color:var(--clay); }
.panel__empty{ display:grid; gap:14px; padding-block:clamp(30px,6vh,60px); text-align:center; justify-items:center; }
