.property-page {background:var(--ivory);color:var(--espresso);font-synthesis:none}
html:has(.property-page) {background:var(--ivory);scrollbar-gutter:stable}
.property-page .header {color:var(--espresso);border-color:var(--sky);animation:none}
.property-page .desktop-nav button,.property-page .desktop-nav summary {color:var(--espresso)}
.property-page .property-dropdown {box-shadow:none;border-bottom:1px solid var(--sky)}
.property-page .menu-open:not([hidden]) {color:var(--espresso)}
.property-page .header.mobile-header {--mobile-header-ink:var(--espresso)}
.property-page .header.mobile-header::after {background:var(--sky);opacity:1}
.property-page .skip-link {color:var(--ivory);z-index:40}
.property-page :focus-visible {outline-color:var(--espresso)}
.property-page .header :focus-visible {outline-color:var(--espresso)}
.property-page button {font-weight:400}
.property-top {position:relative;padding-top:100px}
.property-shell {width:calc(100% - 2 * var(--edge));max-width:1440px;margin-inline:auto}
.property-intro {padding-top:24px;padding-bottom:32px}
.property-back {display:inline-flex;align-items:center;gap:10px;min-height:44px;font-size:13px;color:var(--clay)}
.property-heading {display:flex;justify-content:space-between;align-items:flex-end;gap:24px;margin-top:20px}
.property-kicker {font:400 12px/1.5 "Neue Montreal";letter-spacing:.16em;margin:0 0 12px;text-transform:uppercase}
.property-heading h1 {font:400 clamp(52px,5.2vw,82px)/1.02 Saonara;margin:0}
.property-price-block {text-align:right;padding-bottom:4px}
.property-price {font:400 clamp(30px,2.8vw,44px)/1.15 Saonara;margin:0 0 9px;white-space:nowrap}
.property-summary {font:350 17px/1.5 "Neue Montreal Text";margin:0}
.property-layout {display:grid;grid-template-columns:minmax(0,1.65fr) minmax(340px,1fr);gap:clamp(32px,3.4vw,64px);align-items:start}
.property-gallery {min-width:0;--gallery-progress:0}
.gallery-frame {display:block;position:relative;width:100%;aspect-ratio:8/5;padding:0;border:0;border-radius:0;background:var(--limestone);overflow:hidden;cursor:zoom-in;isolation:isolate}
.gallery-frame:focus-visible {outline:2px solid var(--espresso);outline-offset:5px}
.gallery-stack {position:absolute;inset:0;display:block}
.gallery-frame img {position:absolute;inset:0;display:block;width:100%;height:100%;object-fit:cover;object-position:var(--crop,50% 50%);opacity:0}
.gallery-frame img:first-child {opacity:1}
.gallery-rooms {display:flex;align-items:flex-start;justify-content:space-between;flex-wrap:wrap;gap:0 14px;margin:26px 0 0;padding:0;list-style:none}
.room-button {border:0;background:none;color:var(--espresso);padding:6px 0 12px;min-height:44px;font:400 15px/1.5 "Neue Montreal";cursor:pointer}
.room-button span {display:block;position:relative;padding-block:4px 8px}
.room-button span::after {content:"";position:absolute;left:0;bottom:0;height:1px;width:100%;background:var(--sky);transform-origin:left;transform:scaleX(0)}
.room-button[aria-current="true"] span::after {transform:scaleX(var(--gallery-progress))}
.gallery-status {margin:0}
.property-information h2 {font:400 clamp(34px,3vw,46px)/1.1 Saonara;margin:0 0 16px}
.property-description {font:350 18px/1.55 "Neue Montreal Text";margin:0 0 28px;max-width:31ch}
.property-facts {display:grid;grid-template-columns:1fr 1fr;gap:25px 22px;margin:0 0 26px}
.property-facts>div {min-width:0}
.property-facts dt {font:400 14px/1.4 "Neue Montreal";margin-bottom:8px}
.property-facts dd {font:400 clamp(28px,2.7vw,38px)/1.2 Saonara;margin:0}
.property-facts sup {font-size:.6em;line-height:0;vertical-align:baseline;position:relative;top:-.55em}
.property-facts .floor-note {display:block;font:350 14px/1.5 "Neue Montreal Text";margin-top:4px}
.property-equipment {font:350 15px/1.7 "Neue Montreal Text";margin:0 0 22px}
.property-energy {border-top:1px solid var(--sky);padding-top:18px}
.property-energy h3 {font:400 15px/1.5 "Neue Montreal";margin:0 0 8px}
.property-energy p {font:350 14px/1.65 "Neue Montreal Text";margin:3px 0;overflow-wrap:break-word}
.property-visit {display:inline-flex;align-items:center;gap:12px;position:relative;margin-top:30px;min-height:48px;padding:10px 0 14px;background:none;border:0;color:inherit;font:400 16px/1.5 "Neue Montreal";text-align:left;cursor:default}
.property-visit span:first-child {position:relative}
.property-visit span:first-child::after {content:"";position:absolute;top:calc(100% + 9px);left:0;height:1px;width:22px;background:var(--sky);transition: width var(--line-duration) var(--ease-reveal)}
.property-visit:focus-visible span:first-child::after {width:100%}
@media(hover:hover) {.property-visit:hover span:first-child::after {width:100%}}
.property-footer {display:flex;justify-content:space-between;align-items:center;gap:20px;border-top:1px solid var(--sky);padding-block:22px 30px;margin-top:52px}
.property-footer .footer-brand {font:400 20px/1.3 Saonara;letter-spacing:.08em}
.property-footer .footer-city {font:350 14px/1.5 "Neue Montreal Text"}
.property-viewer {position:fixed;inset:0;max-width:none;max-height:none;width:100%;height:100dvh;margin:0;padding:0;border:0;background:var(--espresso);color:var(--ivory);overflow:hidden}
.property-viewer::backdrop {background:var(--espresso)}
.property-viewer[open] {display:flex;align-items:center;justify-content:center}
.property-viewer img {display:block;max-width:calc(100% - env(safe-area-inset-left,0px) - env(safe-area-inset-right,0px));width:100%;height:100%;object-fit:contain;padding:calc(70px + env(safe-area-inset-top,0px)) max(12px,env(safe-area-inset-right,0px)) max(16px,env(safe-area-inset-bottom,0px)) max(12px,env(safe-area-inset-left,0px))}
.viewer-close {position:absolute;z-index:1;top:max(12px,env(safe-area-inset-top,0px));right:max(20px,env(safe-area-inset-right,0px));min-height:44px;padding:8px 4px;border:0;background:none;color:var(--ivory);font:400 15px/1.5 "Neue Montreal";cursor:pointer}
.viewer-close:focus-visible {outline-color:var(--sky)}
body.viewer-is-open {overflow:hidden}
@media(max-width:1279px) {.property-top {padding-top:82px}}
@media(max-width:1119px) {
 .property-shell {max-width:820px}
 .property-layout {grid-template-columns:minmax(0,1fr);gap:36px}
 .property-information {max-width:650px}
 .property-description {max-width:43ch}
 .property-heading h1 {font-size:64px}
 .property-information h2 {font-size:42px}
 .property-facts dd {font-size:36px}
 .property-facts .floor-note {display:inline;margin-left:5px}
}
@media(max-width:767px) {
 .property-page {--edge:clamp(20px,5.65vw,24px)}
 .property-intro {padding-top:8px;padding-bottom:24px}
 .property-back {font-size:12px}
 .property-heading {display:block;margin-top:14px}
 .property-kicker {font-size:10px;letter-spacing:.13em;margin-bottom:10px}
 .property-heading h1 {font-size:clamp(43px,12.8vw,57px);line-height:1.03}
 .property-price-block {text-align:left;padding:0;margin-top:16px}
 .property-price {font-size:32px;margin-bottom:6px}
 .property-summary {font-size:15px;line-height:1.5}
 .gallery-frame {aspect-ratio:4/3}
 .gallery-frame img {object-position:var(--mobile-crop,var(--crop,50% 50%))}
 .gallery-rooms {display:grid;grid-template-columns:repeat(3,max-content);justify-content:start;gap:0 clamp(16px,5vw,24px);margin-top:22px}
 .room-button {font-size:15px;padding:2px 0 7px;min-height:44px}
 .gallery-rooms li:nth-child(4)::before {content:none}
 .property-layout {gap:32px}
 .property-information h2 {font-size:35px;margin-bottom:14px}
 .property-description {font-size:16px;line-height:1.65;margin-bottom:26px}
 .property-facts {gap:24px 20px;margin-bottom:24px}
 .property-facts dt {font-size:13px;margin-bottom:7px}
 .property-facts dd {font-size:32px}
 .property-facts .floor-note {display:block;font-size:13px;margin:3px 0 0}
 .property-equipment {font-size:14px;line-height:1.75}
 .property-energy h3 {font-size:14px}
 .property-energy p {font-size:13px;line-height:1.75}
 .property-visit {margin-top:22px;font-size:15px}
 .property-footer {margin-top:42px;padding-block:22px max(26px,env(safe-area-inset-bottom,0px));gap:16px}
 .property-footer .footer-brand {font-size:17px}
 .property-footer .footer-city {font-size:13px}
}
@media(max-width:350px) {.gallery-rooms {column-gap:18px}.room-button {font-size:14px}.property-price {font-size:30px}}
@media(max-width:350px) {html[lang="en"] .gallery-rooms {grid-template-columns:repeat(2,max-content)}}
@media(max-height:540px) and (orientation:landscape) {.property-top {padding-top:62px}.property-viewer img {padding-top:56px}}

/* Local review: preserve native Saonara 400; reinforce only property numerals. */
.property-page .property-price,
.property-page .property-facts dd { -webkit-text-stroke: .2px currentColor; }
.property-page .property-facts .floor-note { -webkit-text-stroke: 0; }
/* Ivory property pages only. Closed header, mobile panel and home stay unchanged. */
@media (min-width:1280px) {
 .property-page .property-dropdown {background:var(--limestone);box-shadow:none;border-bottom:1px solid var(--sky)}
}

/* Content adaptations only: the reviewed Arcades layout and numeric stroke stay native. */
.property-heading>div:first-child {min-width:0}
.property-price .price-period {font:400 15px/1.5 "Neue Montreal";-webkit-text-stroke:0;white-space:nowrap}
.property-page .property-facts dd.fact-text {font:350 20px/1.4 "Neue Montreal Text";-webkit-text-stroke:0;overflow-wrap:break-word}
.property-page .room-button {text-align:left}
.property-page .gallery-rooms li {max-width:100%}
@media(max-width:767px) {
 .property-page .gallery-rooms {display:flex;flex-wrap:wrap;gap:0 24px}
 .property-page .room-button {white-space:normal}
 .property-page[data-property-id="les-arcades"] .gallery-rooms::after {content:"";flex-basis:100%;order:1}
 .property-page[data-property-id="les-arcades"] .gallery-rooms li:nth-child(n+4) {order:2}
 .property-page .property-facts dd.fact-text {font-size:18px}
}
@media(max-width:350px) {.property-page .gallery-rooms {column-gap:18px}}

@media (max-height: 540px) and (orientation: landscape) {
 .property-top { padding-top: calc(var(--low-header-height) + env(safe-area-inset-top)); }
 .property-viewer img { padding-block-start: calc(49px + env(safe-area-inset-top)); }
 .viewer-close { top: max(3px, env(safe-area-inset-top)); }
}
@media (max-width: 1279px) and (max-height: 540px) and (orientation: landscape) {
 .property-page { --edge: max(clamp(18px, 4.3vw, 42px), env(safe-area-inset-left), env(safe-area-inset-right)); }
 .property-intro { padding-block: 6px 18px; }
 .property-heading { display: flex; gap: 12px 18px; margin-top: 6px; }
 .property-heading h1 { font-size: clamp(36px, 7vw, 53px); text-wrap: balance; }
 .property-kicker { margin-bottom: 6px; font-size: 11px; }
 .property-price-block { text-align: right; margin: 0; }
 .property-price { font-size: clamp(26px, 4.6vw, 33px); margin-block-end: 3px; }
 .property-summary { font-size: 14px; }
 .property-layout { gap: 25px; }
 .property-gallery { width: min(100%, calc(var(--landscape-frame-height) * 1.6)); }
 .gallery-frame { aspect-ratio: 8 / 5; }
 .gallery-frame img { object-position: var(--mobile-crop, var(--crop, 50% 50%)); }
 .property-page .gallery-rooms { display: flex; gap: 0 17px; margin-top: 5px; }
 .property-page[data-property-id="les-arcades"] .gallery-rooms::after { content: none; }
 .property-page[data-property-id="les-arcades"] .gallery-rooms li:nth-child(n+4) { order: 0; }
 .property-page .room-button { font-size: 14px; }
 .property-information h2 { font-size: clamp(32px, 5vw, 42px); }
 .property-description { margin-bottom: 18px; }
 .property-facts { gap: 18px; }
}
@media (min-width: 768px) and (max-width: 1279px) and (max-height: 540px) and (orientation: landscape) {
 .property-layout { grid-template-columns: minmax(0, 1.17fr) minmax(0, 1fr); column-gap: clamp(18px, 3.2vw, 34px); }
 .property-information { min-width: 0; }
}

/* Discreet demonstration credit on property and catalogue footers. */
.property-footer { flex-wrap: wrap; }
.property-footer__demo { flex-basis: 100%; font: 350 12px/1.5 "Neue Montreal Text", sans-serif; opacity: .78; margin-top: -8px; }
