/* Property detail: shared ImmoLosch tokens, photo-led overview. */
.property-detail-page { overflow-x:clip; background:var(--canvas); padding:28px 0 clamp(56px,6vw,88px); }
.property-detail-page .wrap { max-width:1320px; }
.property-detail__message { min-height:300px; padding:70px 0; color:var(--ink-70); }
.property-detail__message a { color:var(--brick); font-weight:var(--weight-bold); }
.property-detail__retry { padding:0; border:0; background:none; color:var(--brick); font:inherit; font-weight:var(--weight-bold); text-decoration:underline; text-underline-offset:2px; cursor:pointer; }
.pd-topbar { display:flex; align-items:center; justify-content:space-between; gap:24px; margin-bottom:20px; }
.pd-toplinks a:hover { color:var(--brick); }
.pd-toplinks { display:flex; flex:none; gap:24px; color:var(--ink); font-size:var(--type-ui); font-weight:var(--weight-medium); white-space:nowrap; }
.pd-carousel { width:100vw; margin-left:calc(50% - 50vw); }
.pd-carousel__stage { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,min(80vw,1480px)) minmax(0,1fr); height:clamp(440px,77vh,820px); background:var(--ivory-deep); overflow:hidden; }
.pd-carousel__peek { min-width:0; height:100%; overflow:hidden; }
.pd-carousel__peek img { display:block; width:100%; height:100%; object-fit:cover; opacity:.23; filter:saturate(.65); }
.pd-carousel__main { position:relative; min-width:0; height:100%; overflow:hidden; background:var(--ivory-deep); }
.pd-carousel__main>img { display:block; width:100%; height:100%; object-fit:contain; }
.pd-carousel__thumbs { position:relative; display:flex; gap:9px; max-width:1320px; overflow-x:auto; margin:12px auto 0; padding:3px 20px 8px; scrollbar-width:thin; scroll-snap-type:x proximity; }
.pd-carousel__thumbs button { flex:none; width:112px; height:76px; padding:3px; border:2px solid transparent; border-radius:3px; scroll-snap-align:center; }
.pd-carousel__thumbs button { opacity:.6; transition:opacity var(--motion-ui) var(--ease); }
.pd-carousel__thumbs button.is-active { opacity:1; border-bottom-color:var(--ink); }
.pd-carousel__thumbs button:hover { opacity:1; }
.pd-carousel__thumbs button:focus-visible { outline:2px solid var(--ink); outline-offset:2px; }
.pd-carousel__thumbs img { display:block; width:100%; height:100%; object-fit:cover; }
.pd-carousel--single .pd-carousel__stage { grid-template-columns:1fr; }
.pd-carousel--single .pd-carousel__peek { display:none; }
.pd-gallery-caption { display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:16px; padding-block:16px; border-bottom:1px solid var(--ink-12); }
.pd-place { display:flex; align-items:center; gap:7px; color:var(--ink-70); font-size:var(--type-metadata); }
.pd-place svg,.pd-facts svg { flex:none; width:17px; height:17px; fill:none; stroke:var(--ink); stroke-width:1.5; }
.pd-facts { display:flex; flex-wrap:wrap; gap:8px; }
.pd-facts>div { display:flex; align-items:center; gap:7px; padding:7px 10px; border:1px solid var(--ink-12); border-radius:var(--r); color:var(--ink); font-size:var(--type-caption); line-height:var(--line-caption); }
.pd-facts dt { display:flex; align-items:center; gap:5px; color:var(--ink-70); }
.pd-facts dd { font-weight:var(--weight-bold); white-space:nowrap; }
.pd-hero { display:grid; grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr); gap:clamp(28px,5vw,68px); align-items:start; padding-block:28px 32px; }
.pd-hero__content,.pd-overview { min-width:0; }
.pd-hero__meta { display:flex; flex-wrap:wrap; gap:9px; color:var(--brick); font-size:var(--type-metadata); font-weight:var(--weight-bold); letter-spacing:var(--tracking-body); text-transform:uppercase; }
.pd-hero h1 { margin-top:12px; color:var(--ink); font:var(--heading-weight,var(--weight-heading)) var(--heading-size,var(--type-display))/var(--heading-line,var(--line-display)) var(--heading-family,var(--sans)); letter-spacing:var(--heading-tracking,var(--tracking-editorial)); text-wrap:balance; overflow-wrap:anywhere; }
.pd-hero__price { margin-top:16px; color:var(--ink); font:var(--weight-heading) var(--type-h3)/var(--line-h3) var(--sans); letter-spacing:var(--tracking-heading); }
.pd-contact { margin-top:24px; padding-top:20px; border-top:1px solid var(--ink-12); }
.pd-agent { display:flex; align-items:center; flex-wrap:wrap; gap:12px; }
.pd-agent>img { width:48px; height:48px; flex:none; border-radius:50%; object-fit:cover; object-position:center 22%; }
.pd-agent__name { display:flex; flex-direction:column; gap:3px; color:var(--ink); font-size:var(--type-metadata); line-height:var(--line-metadata); }
.pd-agent__name span { color:var(--ink-55); font-size:var(--type-metadata); }
.pd-agent__links { display:flex; flex-direction:column; gap:5px; margin-left:auto; color:var(--ink-70); font-size:var(--type-metadata); }
.pd-agent__links a { overflow-wrap:anywhere; }
.pd-agent__links a:hover { color:var(--brick); }
.pd-hero__request { width:100%; margin-top:18px; }
.property-detail-page h2 { color:var(--ink); font:var(--heading-weight,var(--weight-heading)) var(--heading-size,var(--type-h2-editorial))/var(--heading-line,var(--line-h2-editorial)) var(--heading-family,var(--sans)); letter-spacing:var(--heading-tracking,var(--tracking-editorial)); }
.pd-overview>section+section { margin-top:22px; }
.pd-glance>p { max-width:var(--measure-body); margin-top:9px; color:var(--ink-70); font-size:var(--type-body-lg); line-height:var(--line-body-lg); }
.pd-description__full { white-space:pre-line; }
.pd-description__full[hidden],.pd-glance [data-description-preview][hidden] { display:none; }
.pd-description__toggle { margin-top:12px; color:var(--brick); font-size:var(--type-ui); font-weight:var(--weight-medium); line-height:var(--line-ui);}
.pd-description__toggle:hover { text-decoration:underline; text-underline-offset:4px; }
.pd-description__toggle:focus-visible { outline:2px solid var(--brick); outline-offset:4px; }
.pd-highlights { display:flex; flex-wrap:wrap; gap:8px 20px; margin-top:13px; }
.pd-highlights li { position:relative; padding-left:14px; color:var(--ink); font-size:var(--type-caption); }
.pd-highlights li::before { content:'•'; position:absolute; left:0; color:var(--brick); }
.pd-details dl { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:0 24px; margin-top:9px; }
.pd-details dl>div { display:flex; justify-content:space-between; align-items:baseline; gap:12px; padding:8px 0; border-bottom:1px solid var(--ink-12); font-size:var(--type-metadata); line-height:var(--line-metadata); }
.pd-details dl:has(>div:only-child) { grid-template-columns:1fr; }
.pd-details dt { color:var(--ink-55); }
.pd-details dd { color:var(--ink); font-weight:var(--weight-label); text-align:right; overflow-wrap:anywhere; }
.pd-section-head { display:flex; align-items:baseline; justify-content:space-between; gap:16px; margin-bottom:14px; }
.pd-section-head>span { color:var(--ink-55); font-size:var(--type-caption); }
.pd-section-head>a { color:var(--brick); font:var(--weight-medium) var(--type-ui)/var(--line-ui) var(--sans); }
.pd-section-head>a:hover { text-decoration:underline; text-underline-offset:4px; }
.pd-plans__grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(120px,1fr)); gap:10px; }
.pd-plans figure { min-width:0; }
.pd-plans figure a { display:grid; place-items:center; height:130px; border:1px solid var(--ink-12); border-radius:var(--r); background:var(--paper); overflow:hidden; }
.pd-plans figure img { width:100%; height:100%; object-fit:contain; }
.pd-plans figcaption { margin-top:5px; color:var(--ink-70); font-size:var(--type-caption); }
.pd-mortgage { padding:24px; background:var(--ivory-deep); border:1px solid var(--ivory-line); border-radius:var(--r-lg); }
.pd-mortgage__fields { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)) minmax(0,1.25fr); gap:0; margin-top:20px; }
.pd-mortgage__fields>label,.pd-mortgage__fields>div { min-width:0; padding:0 14px; border-left:1px solid var(--ink-12); color:var(--ink-70); font-size:var(--type-body); line-height:var(--line-body); }
.pd-mortgage__fields>:first-child { border-left:0; padding-left:0; }
.pd-mortgage__fields>:last-child { padding-right:0; }
.pd-mortgage__label { display:block; }
.pd-mortgage__input { display:flex; align-items:baseline; gap:4px; margin-top:8px; border-bottom:1px solid var(--ink-40); }
.pd-mortgage__fields input { width:100%; min-width:0; padding:3px 0; border:0; background:transparent; color:var(--ink); font:var(--weight-body) var(--type-body)/var(--line-body) var(--sans); }
.pd-mortgage__fields input:focus-visible { outline:2px solid var(--brick); outline-offset:3px; }
.pd-mortgage__input em { color:var(--ink-70); font-size:var(--type-body); font-style:normal; }
.pd-mortgage__fields strong { display:block; margin-top:10px; color:var(--ink); font-size:var(--type-body); }
.pd-mortgage__result strong { color:var(--brick); }
.pd-mortgage__note { margin-top:18px; color:var(--ink-55); font-size:var(--type-caption); line-height:var(--line-caption); }
.pd-layout,.pd-location,.pd-similar { padding-block:30px; border-bottom:1px solid var(--ink-12); }
.pd-layout dl { margin-top:15px; }
.pd-layout dl>div { display:grid; grid-template-columns:105px 1fr; gap:16px; padding:9px 0; border-bottom:1px solid var(--ink-12); font-size:var(--type-metadata); line-height:var(--line-metadata); }
.pd-layout dl>div:last-child { border-bottom:0; }
.pd-layout dt { color:var(--ink); font-weight:var(--weight-bold); }
.pd-layout dd { color:var(--ink-70); }
.pd-location__intro { display:flex; align-items:baseline; flex-wrap:wrap; gap:10px 20px; }
.pd-location__intro p { color:var(--ink-70); font-size:var(--type-lead); }
.pd-location__intro a { margin-left:auto; color:var(--brick); font-size:var(--type-ui); font-weight:var(--weight-medium); }
.pd-location__intro a:hover { text-decoration:underline; text-underline-offset:4px; }
.pd-location__map { position:relative; height:clamp(300px,35vw,460px); margin-top:20px; overflow:hidden; border:1px solid var(--ink-12); border-radius:var(--r); background:var(--ivory-deep); }
.pd-location__map-canvas { position:absolute; inset:0; }
.pd-location__map-label { position:absolute; left:12px; top:12px; padding:6px 9px; border:1px solid var(--ink-12); border-radius:3px; background:rgba(250,248,241,.96); color:var(--ink); font-size:var(--type-metadata); font-weight:var(--weight-label); pointer-events:none; }
.pd-location__map-fallback { position:absolute; inset:0; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:9px; padding:40px 20px; color:var(--ink); background:var(--ivory); font-size:var(--type-metadata); text-align:center; }
.pd-location__map-fallback[hidden] { display:none; }
.pd-location__map-fallback>svg { width:25px; height:25px; fill:none; stroke:currentColor; stroke-width:1.5; }
.pd-location__map-fallback>span { color:var(--ink-70); font-size:var(--type-metadata); }
.pd-location__map .maplibregl-ctrl-group { overflow:hidden; border:1px solid var(--ink-12); border-radius:4px; box-shadow:0 1px 4px rgba(15,38,68,.06); }
.pd-location__map .maplibregl-ctrl-group button { width:30px; height:30px; background:var(--ivory); }
.pd-location__map .maplibregl-ctrl-group button:hover { background:var(--ivory-deep); }
.pd-location__map .maplibregl-ctrl-group button:focus-visible { outline:2px solid var(--ink); outline-offset:-3px; }
.pd-location__map .maplibregl-ctrl-attrib { max-width:100%; padding:1px 5px; background:rgba(250,248,241,.92); font:var(--weight-body) var(--type-metadata)/var(--line-metadata) var(--sans); color:var(--ink-70); }
.pd-location__map .maplibregl-ctrl-attrib a { color:inherit; }
.pd-location__map:fullscreen { height:100%; border-radius:0; }
.pd-similar { border-bottom:0; }
.pd-similar__grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:clamp(16px,2vw,28px); }
.pd-similar__card { display:flex; flex-direction:column; min-width:0; overflow:hidden; border:1px solid var(--ink-12); border-radius:5px; background:#fff; box-shadow:0 6px 20px rgba(15,38,68,.06); }
.pd-similar__image { position:relative; aspect-ratio:16/10; overflow:hidden; background:var(--ivory-deep); }
.pd-similar__image img { width:100%; height:100%; object-fit:cover; transition:transform var(--motion-image) var(--ease); }
.pd-similar__card:hover img { transform:scale(1.025); }
.pd-similar__badge { position:absolute; top:16px; left:0; padding:8px 13px; border-radius:0 3px 3px 0; background:var(--brick); color:#fff; font-size:var(--type-metadata); font-weight:var(--weight-bold); letter-spacing:var(--tracking-body); line-height:var(--line-metadata); text-transform:uppercase; }
.pd-similar__badge--rent { background:#e2eafd; color:var(--ink); }
.pd-similar__body { display:flex; flex:1; flex-direction:column; min-width:0; padding:18px 20px 17px; }
.pd-similar__card strong { display:-webkit-box; overflow:hidden; color:var(--ink); font-size:var(--type-h4); line-height:var(--line-h4); -webkit-line-clamp:2; -webkit-box-orient:vertical; }
.pd-similar__card small { margin-top:7px; color:var(--ink-70); font-size:var(--type-caption); font-weight:var(--weight-medium); line-height:var(--line-caption); }
.pd-similar__card b { margin-top:12px; color:var(--ink); font-size:var(--type-h3); letter-spacing:var(--tracking-heading); }
.pd-similar__facts { display:flex; align-items:center; flex-wrap:wrap; gap:8px 15px; min-height:42px; margin-top:auto; padding-top:14px; border-top:1px solid var(--ink-12); color:var(--ink-70); font-size:var(--type-metadata); font-weight:var(--weight-label); }
.pd-similar__facts>span:not(.pd-similar__energy) { display:inline-flex; align-items:center; gap:6px; white-space:nowrap; }
.pd-similar__facts svg { width:19px; height:19px; fill:none; stroke:var(--ink); stroke-width:1.5; stroke-linecap:round; stroke-linejoin:round; }
.pd-similar__energy { display:inline-grid; place-items:center; min-width:26px; height:26px; margin-left:auto; padding-inline:5px; border-radius:4px; background:#eef0f4; color:var(--ink); font-size:var(--type-metadata); font-weight:var(--weight-bold); }
.pd-similar__card:hover strong { color:var(--brick); }
@media(max-width:1050px) {
  .pd-gallery-caption { align-items:flex-start; flex-direction:column; gap:12px; }
  .pd-hero { gap:30px; }
  .pd-agent__links { width:100%; margin-left:0; }
  .pd-details dl { grid-template-columns:1fr; }
  .pd-mortgage__fields { grid-template-columns:repeat(3,minmax(0,1fr)); gap:20px 0; }
  .pd-mortgage__fields>:nth-child(3n+1) { border-left:0; padding-left:0; }
}
@media(max-width:760px) {
  .property-detail-page { padding-top:22px; }
  .pd-topbar { align-items:flex-start; flex-direction:column; gap:14px; margin-bottom:18px; }
  .pd-toplinks { justify-content:space-between; width:100%; }
  .pd-carousel__stage { grid-template-columns:6vw minmax(0,88vw) 6vw; height:clamp(370px,65vh,650px); }
  .pd-carousel__thumbs { padding-inline:20px; }
  .pd-hero { grid-template-columns:1fr; gap:26px; padding-block:24px; }
  .pd-agent__links { width:auto; margin-left:auto; }
  .pd-overview { padding-top:24px; border-top:1px solid var(--ink-12); }
  .pd-details dl { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .pd-location__intro { align-items:flex-start; flex-direction:column; gap:7px; }
  .pd-location__intro a { margin-left:0; }
  .pd-similar__grid { gap:12px; }
  .pd-similar__body { padding:14px; }
}
@media(max-width:500px) {
  .pd-carousel__stage { grid-template-columns:1fr; height:clamp(320px,58vh,520px); }
  .pd-carousel__peek { display:none; }
  .pd-carousel__thumbs { gap:5px; margin-top:7px; padding-inline:12px; }
  .pd-carousel__thumbs button { width:84px; height:62px; }
  .pd-facts { gap:6px; }
  .pd-facts>div { padding:6px 8px; font-size:var(--type-caption); }
  .pd-agent__links { width:100%; margin-left:0; }
  .pd-details dl { grid-template-columns:1fr; }
  .pd-mortgage { padding:20px 16px; }
  .pd-mortgage__fields { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .pd-mortgage__fields>:nth-child(3n+1) { border-left:1px solid var(--ink-12); padding-left:14px; }
  .pd-mortgage__fields>:nth-child(2n+1) { border-left:0; padding-left:0; }
  .pd-layout dl>div { grid-template-columns:85px 1fr; gap:10px; }
  .pd-similar__grid { grid-template-columns:1fr; gap:20px; }
  .pd-similar .pd-section-head { align-items:flex-start; flex-direction:column; gap:10px; }
  .pd-location__map { height:320px; }
}
@media(prefers-reduced-motion:reduce) {
  .property-detail-page * { scroll-behavior:auto; }
  .pd-similar__image img { transition:none; }
  .pd-similar__card:hover img { transform:none; }
}

/* V5: full-width photo track, with the property content aligned to the page. */
.property-detail-page .wrap { max-width:var(--wrap); }
.pd-topbar { margin-bottom:16px; }
.pd-toplinks { width:100%; justify-content:space-between; }
.pd-carousel { --pd-photo-width:min(80vw,1440px); --pd-photo-gap:8px; width:var(--pd-viewport-width,100vw); margin-left:calc((100% - var(--pd-viewport-width,100vw)) / 2); }
.pd-carousel__stage { position:relative; display:block; height:clamp(340px,58vh,640px); background:var(--canvas); border-radius:0; touch-action:pan-y; }
.pd-carousel__stage:focus-visible { outline:none; }
.pd-carousel__track { position:absolute; top:0; left:calc(50% - var(--pd-photo-width) / 2); height:100%; display:flex; gap:var(--pd-photo-gap); transform:translateX(calc(0px - var(--pd-photo-width) - var(--pd-photo-gap))); }
.pd-carousel__slide { flex:0 0 var(--pd-photo-width); width:var(--pd-photo-width); height:100%; overflow:hidden; }
.pd-carousel__slide img { display:block; width:100%; height:100%; object-fit:cover; transition:transform var(--motion-ui) var(--ease); }
.pd-carousel__main { background:var(--canvas); }
.pd-carousel__peek { position:absolute; top:0; z-index:2; display:grid; place-items:center; width:calc((100% - var(--pd-photo-width)) / 2 - var(--pd-photo-gap)); height:100%; background:transparent; }
.pd-carousel__peek--previous { left:0; }
.pd-carousel__peek--next { right:0; }
.pd-carousel__peek-arrow { display:grid; place-items:center; width:42px; height:42px; border:1px solid rgba(245,242,232,.7); border-radius:50%; background:rgba(250,248,241,.92); box-shadow:0 3px 14px rgba(9,35,77,.12); color:var(--ink); transition:transform var(--motion-ui) var(--ease),background var(--motion-fast) var(--ease); }
.pd-carousel__peek-arrow svg { width:22px; height:22px; fill:none; stroke:currentColor; stroke-width:1.6; stroke-linecap:round; stroke-linejoin:round; }
.pd-carousel__peek:focus-visible { outline:none; }
.pd-carousel__peek:focus-visible .pd-carousel__peek-arrow,.pd-carousel__stage:focus-visible .pd-carousel__peek-arrow { outline:2px solid var(--ink); outline-offset:3px; }
.pd-carousel__footer { display:flex; align-items:center; gap:20px; width:min(calc(100% - var(--gut) - var(--gut)),calc(var(--wrap) - var(--gut) - var(--gut))); margin:12px auto 0; }
.pd-carousel__thumbs { flex:1; min-width:0; width:auto; max-width:none; margin:0; padding-inline:0; }
.pd-carousel__count { flex:none; color:var(--ink-70); font-size:var(--type-metadata); font-weight:var(--weight-medium); font-variant-numeric:tabular-nums; white-space:nowrap; }
.pd-carousel__thumbs button { width:84px; height:56px; }
.pd-carousel--single { --pd-photo-width:100%; width:100%; margin-left:0; }
.pd-carousel--single .pd-carousel__track { left:0; width:100%; transform:none; }
.pd-carousel--single .pd-carousel__main>img { object-fit:contain; }
@media(hover:hover) and (pointer:fine) {
 .pd-carousel__peek:hover .pd-carousel__peek-arrow { background:var(--canvas); }
 .pd-carousel__peek--previous:hover .pd-carousel__peek-arrow { transform:translateX(-4px); }
 .pd-carousel__peek--next:hover .pd-carousel__peek-arrow { transform:translateX(4px); }
 .pd-carousel__stage:has(.pd-carousel__peek--previous:hover) [data-gallery-prev] { transform:translateX(5px) scale(1.025); }
 .pd-carousel__stage:has(.pd-carousel__peek--next:hover) [data-gallery-next] { transform:translateX(-5px) scale(1.025); }
}
.pd-hero { grid-template-columns:minmax(280px,.75fr) minmax(0,1.25fr); }
.pd-overview { padding-left:32px; border-left:1px solid var(--ink-12); }
.pd-overview>section { padding-block:22px; margin:0; border-bottom:1px solid var(--ink-12); }
.pd-overview>section:first-child { padding-top:0; }
.pd-overview>section+section { margin-top:0; }
.pd-layout { width:auto; margin:0; background:var(--canvas); color:var(--ink); }
.pd-layout dt { color:var(--ink); }
.pd-layout dd { color:var(--ink-70); }
.pd-mortgage { width:100%; max-width:440px; margin-top:28px; }
.pd-mortgage__fields { grid-template-columns:repeat(2,minmax(0,1fr)); gap:18px; }
.pd-mortgage__fields>label,.pd-mortgage__fields>div { border:0; padding:0; }
.pd-mortgage__result { grid-column:1/-1; padding-top:16px!important; border-top:1px solid var(--ink-12)!important; }
.pd-mortgage__result strong { font-size:var(--type-h3); }
@media(max-width:760px) {
 .pd-carousel { --pd-photo-width:var(--pd-viewport-width,100vw); }
 .pd-carousel--single { --pd-photo-width:100%; }
 .pd-carousel__stage { height:clamp(270px,48vh,460px); }
 .pd-carousel__peek { display:grid; top:50%; width:48px; height:48px; transform:translateY(-50%); }
 .pd-carousel__peek--previous { left:10px; }
 .pd-carousel__peek--next { right:10px; }
 .pd-carousel--single .pd-carousel__peek { display:none; }
 .pd-carousel__footer { gap:12px; }
 .pd-hero { grid-template-columns:1fr; }
 .pd-overview { padding:24px 0 0; border-left:0; }
 .pd-mortgage { max-width:none; }
}
@media(prefers-reduced-motion:reduce) {
 .pd-carousel__slide img,.pd-carousel__peek-arrow { transition:none; }
 .pd-carousel__stage:has(.pd-carousel__peek:hover) .pd-carousel__slide img,.pd-carousel__peek:hover .pd-carousel__peek-arrow { transform:none; }
}

/* Property overview: gallery, title and facts, then information beside the contact. */
.pd-carousel__stage { height:clamp(300px,32vw,470px); }
.pd-carousel__slide { border-radius:4px; }
.pd-carousel__peek { top:50%; width:44px; height:44px; transform:translateY(-50%); }
.pd-carousel__peek--previous { left:calc((100% - var(--pd-photo-width)) / 2 + 22px); }
.pd-carousel__peek--next { right:calc((100% - var(--pd-photo-width)) / 2 + 22px); }
.pd-carousel__thumbs button { width:78px; height:50px; }
.pd-hero { grid-template-columns:minmax(0,1fr) 360px; gap:36px; padding-block:26px 24px; }
.pd-hero h1 { margin-top:8px; font-size:var(--heading-size,var(--type-display)); text-wrap:pretty; }
.pd-hero__price { margin-top:10px; font-size:var(--type-h3); }
.pd-keyfacts { display:flex; align-items:center; flex-wrap:wrap; gap:12px 20px; margin-top:18px; color:var(--ink); }
.pd-keyfacts li { display:flex; align-items:center; gap:7px; font-size:var(--type-metadata); line-height:var(--line-metadata); }
.pd-keyfacts svg,.pd-amenities svg,.pd-agent__links svg,.pd-resources svg { flex:none; width:20px; height:20px; fill:none; stroke:var(--ink); stroke-width:1.5; stroke-linecap:round; stroke-linejoin:round; }
.pd-keyfacts__energy { display:grid; place-items:center; width:22px; height:24px; border:1px solid var(--ink-40); border-radius:var(--r-sm); background:var(--ivory); font-size:var(--type-metadata); font-weight:var(--weight-bold); }
.pd-glance { margin-top:28px; }
.property-detail-page :is(.pd-glance,.pd-details)>h2,.property-detail-page :is(.pd-location__intro,.pd-section-head)>h2 { font:var(--heading-weight,var(--weight-heading)) var(--heading-size,var(--type-h2-editorial))/var(--heading-line,var(--line-h2-editorial)) var(--heading-family,var(--sans)); letter-spacing:var(--heading-tracking,var(--tracking-editorial)); }
.pd-glance>p { max-width:var(--measure-body); margin-top:9px; font-size:var(--type-body-lg); line-height:var(--line-body-lg); }
.pd-amenities { display:flex; flex-wrap:wrap; gap:14px 0; margin-top:20px; }
.pd-amenities li { display:flex; flex-direction:column; gap:9px; flex:1 1 120px; padding:0 18px; border-left:1px solid var(--ink-12); color:var(--ink-70); font-size:var(--type-metadata); line-height:var(--line-metadata); }
.pd-amenities li:first-child { padding-left:0; border-left:0; }
.pd-amenities svg { width:25px; height:25px; }
.pd-sidebar { min-width:0; }
.pd-contact { margin:0; padding:22px; border:1px solid var(--ink-12); border-radius:4px; background:rgba(255,255,255,.45); }
.pd-agent { gap:12px; }
.pd-agent>img { width:52px; height:52px; }
.pd-agent__name { font-size:var(--type-metadata); }
.pd-agent__name span { font-size:var(--type-metadata); }
.pd-agent__links { width:100%; gap:10px; margin:8px 0 0; color:var(--ink); font-size:var(--type-metadata); }
.pd-agent__links a { display:flex; align-items:center; gap:10px; min-width:0; }
.pd-agent__links svg { width:18px; height:18px; }
.pd-hero__request { min-height:44px; padding:10px 14px; gap:14px; font-size:var(--type-ui); }
.pd-contact__question { display:flex; align-items:center; justify-content:center; min-height:var(--control-height); margin-top:8px; padding:10px 14px; border:1px solid var(--ink); border-radius:var(--r-lg); color:var(--ink); font-size:var(--type-ui); font-weight:var(--weight-medium); }
.pd-contact__question:hover { background:var(--ink-08); }
.pd-contact__note { margin-top:15px; color:var(--ink-55); font-size:var(--type-caption); line-height:var(--line-caption); }
.pd-information { margin-top:30px; }
.pd-details__groups { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:24px; margin-top:12px; }
.pd-details__groups>div+div { padding-left:24px; border-left:1px solid var(--ink-12); }
.pd-details h3 { font:var(--heading-weight,var(--weight-heading)) var(--heading-size,var(--type-h3))/var(--heading-line,var(--line-h3)) var(--heading-family,var(--sans)); font-weight:var(--heading-weight,var(--weight-heading)); }
.pd-details dl { display:block; margin-top:4px; }
.pd-details dl>div { padding:6px 0; gap:12px; font-size:var(--type-metadata); }
.pd-details dt { color:var(--ink-70); }
.pd-details dd { font-weight:var(--weight-medium); }
.pd-room-layout { margin-top:20px; border-top:1px solid var(--ink-12); }
.pd-room-layout summary { display:flex; align-items:center; justify-content:space-between; min-height:44px; list-style:none; cursor:pointer; color:var(--ink); font-size:var(--type-h3); font-weight:var(--weight-heading); }
.pd-room-layout summary::-webkit-details-marker { display:none; }
.pd-room-layout summary span { font-size:var(--type-h3); font-weight:var(--weight-heading); }
.pd-room-layout[open] summary span { transform:rotate(45deg); }
.pd-room-layout .pd-layout { padding-block:0 12px; border-bottom:0; }
.pd-room-layout .pd-layout h2 { display:none; }
.pd-room-layout .pd-layout dl { margin-top:0; }
.pd-room-layout .pd-layout dl>div { font-size:var(--type-metadata); }
.pd-plans { margin-top:24px; }
.pd-resources { display:grid; gap:6px; margin-top:24px; padding:16px 22px; border:1px solid var(--ink-12); border-radius:4px; }
.pd-resources a,.pd-resources button { display:flex; align-items:center; gap:13px; min-height:44px; color:var(--ink); font:var(--weight-medium) var(--type-ui)/var(--line-ui) var(--sans); text-align:left; }
.pd-resources a:hover,.pd-resources button:hover { text-decoration:underline; text-underline-offset:4px; }
.pd-resources__status { color:var(--ink-55); font-size:var(--type-caption); line-height:var(--line-caption); }
.pd-resources__status:empty { display:none; }
.pd-location { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); align-items:start; gap:36px; padding-block:24px; border-top:1px solid var(--ink-12); }
.pd-location__intro { display:flex; flex-direction:column; align-items:flex-start; gap:10px; }
.pd-location__intro .pd-place { color:var(--ink); font-size:var(--type-metadata); }
.pd-location__intro .pd-location__note { max-width:var(--measure-body); color:var(--ink-70); font-size:var(--type-caption); line-height:var(--line-caption); }
.pd-location__intro a { display:inline-flex; align-items:center; gap:12px; margin:0; padding:8px 13px; border:1px solid var(--ink); border-radius:var(--r-lg); color:var(--ink); font-size:var(--type-ui); }
.pd-location__intro a:hover { background:var(--ink-08); text-decoration:none; }
.pd-location__map { height:210px; margin-top:0; }
.pd-location--text { grid-template-columns:1fr; }
.pd-similar { padding-block:24px 0; }
.pd-similar .pd-section-head>a { color:var(--ink); }
@media(max-width:1050px) {
 .pd-hero { grid-template-columns:minmax(0,1fr) 320px; gap:28px; }
 .pd-details__groups { grid-template-columns:1fr; gap:20px; }
 .pd-details__groups>div+div { padding-left:0; border-left:0; }
}
@media(max-width:760px) {
 .pd-carousel__stage { height:clamp(270px,48vh,460px); }
 .pd-carousel__peek--previous { left:12px; }
 .pd-carousel__peek--next { right:12px; }
 .pd-hero { grid-template-columns:1fr; gap:24px; padding-top:22px; }
 .pd-keyfacts { gap:12px 18px; }
 .pd-amenities li { flex:0 0 33.333%; padding-inline:12px; }
 .pd-amenities li:nth-child(3n+1) { border-left:0; padding-left:0; }
 .pd-contact { padding:20px; }
 .pd-location { grid-template-columns:1fr; gap:20px; }
 .pd-location__map { height:260px; }
}
.pd-resources__copy { width:100%; min-width:0; min-height:44px; padding:8px 10px; border:1px solid var(--ink-12); border-radius:var(--r); background:var(--paper); color:var(--ink); font:var(--weight-body) var(--type-body)/var(--line-body) var(--sans); }

/* Phones: a slim viewing bar while the contact card is still further down the page. */
.pd-stickybar { display:none; }
@media(max-width:760px) {
 .pd-stickybar { position:fixed; z-index:40; left:0; right:0; bottom:0; display:flex; align-items:center; justify-content:space-between; gap:12px; padding:10px var(--gut) calc(10px + env(safe-area-inset-bottom)); border-top:1px solid var(--ink-12); background:var(--canvas); box-shadow:0 -8px 24px rgba(9,35,77,.08); transition:transform var(--motion-ui) var(--ease); }
 .pd-stickybar.is-hidden { transform:translateY(110%); box-shadow:none; }
 .pd-stickybar__price { margin:0; color:var(--ink); font:var(--weight-heading) var(--type-h4)/var(--line-h4) var(--sans); }
 .pd-stickybar .btn { flex:0 1 auto; min-width:0; white-space:normal; text-align:center; }
 .pd-stickybar__price { flex:none; white-space:nowrap; }
}
@media(max-width:760px) and (prefers-reduced-motion:reduce) { .pd-stickybar { transition:none; } }

/* ---------------------------------------------------------------- filmstrip gallery
   Every photo has the same height and keeps its own shape (width = height × ratio),
   so nothing is cropped, stretched or framed by grey bars. Neighbours sit edge to edge
   at full strength; the strip is centred on the current photo by property-detail.js. */
.pd-carousel { --pd-stage-height:clamp(420px,68vh,760px); --pd-photo-gap:8px; --pd-photo-max:calc(var(--pd-viewport-width,100vw) - 160px); }
.pd-carousel__stage { height:var(--pd-stage-height); overflow:hidden; background:var(--canvas); }
.pd-carousel__track { left:0; width:max-content; transform:none; will-change:transform; }
.pd-carousel__slide { flex:0 0 auto; width:min(calc(var(--pd-stage-height) * var(--ratio,1.3333)), var(--pd-photo-max)); max-width:none; height:100%; border-radius:0; overflow:hidden; background:var(--ivory-deep); }
.pd-carousel__slide:not(.pd-carousel__main) { cursor:pointer; }
.pd-carousel__slide img { width:100%; height:100%; object-fit:cover; opacity:1; filter:none; }
.pd-carousel__peek { top:50%; width:44px; height:44px; transform:translateY(-50%); }
.pd-carousel__peek--previous { left:24px; right:auto; }
.pd-carousel__peek--next { right:24px; left:auto; }
.pd-carousel--single { --pd-photo-max:calc(100% - 0px); width:100%; margin-left:0; }
@media(hover:hover) and (pointer:fine) {
  .pd-carousel__stage:has(.pd-carousel__peek:hover) .pd-carousel__slide img { transform:none; }
}
@media(max-width:1050px) {
  .pd-carousel { --pd-stage-height:clamp(320px,56vh,560px); --pd-photo-max:calc(var(--pd-viewport-width,100vw) - 96px); }
}
@media(max-width:760px) {
  /* Phones: height follows the width, so a typical 4:3 photo fills the screen width
     less a small peek of its neighbours, uncropped. */
  .pd-carousel { --pd-photo-max:calc(var(--pd-viewport-width,100vw) - 48px); --pd-stage-height:calc(var(--pd-photo-max) * .68); --pd-photo-gap:6px; }
  .pd-carousel__peek--previous { left:12px; }
  .pd-carousel__peek--next { right:12px; }
}

/* When the map cannot be drawn (no WebGL, tiles unavailable), the area link takes one line. */
.pd-location__map.is-unavailable { height:auto; border:0; background:none; }
.pd-location__map.is-unavailable .pd-location__map-label { display:none; }
.pd-location__map.is-unavailable .pd-location__map-fallback { position:static; flex-direction:row; justify-content:flex-start; gap:10px; padding:14px 16px; border:1px solid var(--ink-12); border-radius:var(--r); }
.pd-location__map.is-unavailable .pd-location__map-fallback>span { margin-left:auto; }

/* Room layout is open by default, titled like the other detail sections. */
.pd-room-layout { padding-top:20px; }
.pd-room-layout > h2 { margin-bottom:6px; color:var(--ink); }
/* Without a map the area reads as a plain line; nothing links away from the site. */
.pd-location__map-fallback { cursor:default; }
.pd-location__map.is-unavailable .pd-location__map-fallback>span { margin-left:0; }

/* ---------------------------------------------------------------- calmer gallery controls
   Desktop: two small, quiet arrows and a thumbnail row without a scrollbar.
   Phones: the photos are swiped directly; only the counter remains below. */
.pd-carousel__peek-arrow { width:38px; height:38px; border:0; background:rgba(250,248,241,.86); box-shadow:0 1px 6px rgba(9,35,77,.14); }
.pd-carousel__peek-arrow svg { width:18px; height:18px; stroke-width:1.8; }
.pd-carousel__thumbs { scrollbar-width:none; gap:8px; }
.pd-carousel__thumbs::-webkit-scrollbar { display:none; }
.pd-carousel__thumbs button { padding:0; border:0; border-bottom:2px solid transparent; border-radius:0; }
.pd-carousel__thumbs button.is-active { border-bottom-color:var(--ink); }
@media(max-width:760px) and (pointer:coarse) {
  .pd-carousel__peek { display:none; }
  .pd-carousel__thumbs { display:none; }
  .pd-carousel__footer { justify-content:center; margin-top:10px; }
}
