.public-property-page { min-height:100vh; padding-top:2.25rem; background:#fff; }
.public-nav__link--anchor { text-decoration:none; cursor:pointer; }
.public-property-main { width:calc(100% - 8rem); max-width:1360px; margin:0 auto 4rem; }
.public-property-title-row { display:flex; align-items:flex-end; justify-content:space-between; gap:2rem; margin-bottom:1.35rem; }
.public-property-title-block { display:flex; align-items:center; gap:1.25rem; min-width:0; }
.public-property-logo { flex:0 0 auto; display:grid; place-items:center; width:110px; height:110px; padding:.35rem; overflow:hidden; /*border:1px solid rgba(7,51,68,.09);*/ border-radius:14px; background:#fff; }
.public-property-logo img { display:block; max-width:100%; max-height:100%; width:auto; height:auto; object-fit:contain; }
.public-property-kicker { display:block; margin-bottom:.35rem; color:var(--brand-primary); font-size:.78rem; font-weight:800; letter-spacing:.08em; text-transform:uppercase; }
.public-property-title-row h1 { margin:0 0 .4rem; color:var(--brand-dark); font-size:clamp(2rem,4vw,3.2rem); font-weight:600; letter-spacing:-.025em; }
.public-property-location { display:flex; align-items:center; gap:.45rem; color:var(--app-text-muted); font-size:.92rem; }
.public-property-location i { color:var(--brand-primary); }
.public-property-back { display:inline-flex; align-items:center; gap:.45rem; color:var(--brand-dark); font-size:.85rem; font-weight:700; text-decoration:none; }
.public-property-gallery { position:relative; display:grid; grid-template-columns:1.7fr 1fr; gap:5px; height:520px; overflow:hidden; border-radius:24px; background:#e9ecef; }
.public-property-gallery--single { grid-template-columns:1fr; }
.public-property-gallery a { display:block; min-width:0; overflow:hidden; }
.public-property-gallery img { width:100%; height:100%; display:block; object-fit:cover; transition:transform .25s ease; }
.public-property-gallery a:hover img { transform:scale(1.015); }
.public-property-gallery__side { display:grid; grid-template-columns:1fr 1fr; grid-template-rows:1fr 1fr; gap:5px; }
.public-property-gallery__count { position:absolute; left:1rem; bottom:1rem; padding:.55rem .8rem; border-radius:999px; background:rgba(255,255,255,.94); color:var(--brand-dark); box-shadow:0 6px 20px rgba(7,51,68,.14); font-size:.8rem; font-weight:700; text-decoration:none; }
.public-property-layout { display:grid; grid-template-columns:minmax(0,1fr) 360px; align-items:start; gap:4rem; margin-top:2.4rem; }
.public-property-content { min-width:0; }
.public-property-intro { padding-bottom:2.2rem; border-bottom:1px solid var(--app-border); }
.public-property-slogan { margin:0 0 1rem; color:var(--brand-dark); font-size:1.35rem; font-weight:600; font-style:oblique; }
/*
    .public-property-slogan:before {
        font-family: Georgia, serif;
        content: "“";
        position: absolute;
        top: 10px;
        left: 10px;
        font-size: 5em;
        color: #405158;
        font-weight: normal;
    }

    .public-property-slogan:after {
        font-family: Georgia, serif;
        content: "”";
        position: absolute;
        bottom: -110px;
        line-height: 100px;
        right: -32px;
        font-size: 25em;
        color: rgba(238, 238, 238, 0.8);
        font-weight: normal;
    }
*/
.public-property-facts-row { display:flex; align-items:center; justify-content:space-between; gap:1.25rem 2rem; margin-bottom:1.5rem; }
.public-property-facts { display:flex; flex-wrap:wrap; gap:.7rem 1.25rem; color:var(--brand-dark); font-size:.9rem; }
.public-property-facts span { display:inline-flex; align-items:center; gap:.42rem; }
.public-property-facts i { color:var(--brand-primary); }
.public-property-lead { margin:0 0 1rem; color:var(--brand-dark); font-size:1.05rem; line-height:1.65; font-weight:500; }
.public-property-description { color:#49575d; font-size:.94rem; line-height:1.75; white-space:pre-line; }
.public-property-section { padding:2.3rem 0; border-bottom:1px solid var(--app-border); }
.public-property-section h2 { margin:0 0 1.35rem; color:var(--brand-dark); font-size:1.55rem; font-weight:600; }
.public-property-amenities { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:.9rem 2rem; }
.public-property-amenities div { display:flex; align-items:center; gap:.6rem; color:#405158; font-size:.92rem; }
.public-property-amenities i { color:var(--brand-primary); }
.public-property-room-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:1rem; }
.public-property-room-card { min-height:150px; padding:1.2rem; border:1px solid var(--app-border); border-radius:16px; background:#fff; }
.public-property-room-card__icon { color:var(--brand-primary); font-size:1.25rem; margin-bottom:.9rem; }
.public-property-room-card h3,.public-property-bath-card h3 { margin:0 0 .4rem; color:var(--brand-dark); font-size:1rem; font-weight:700; }
.public-property-room-card p,.public-property-bath-card p { margin:0; color:var(--app-text-muted); font-size:.8rem; line-height:1.45; }
.public-property-room-card span { display:block; margin-top:.65rem; color:var(--app-text-muted); font-size:.78rem; }
.public-property-bath-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:1rem; }
.public-property-bath-card { display:flex; gap:.85rem; padding:1rem 1.1rem; border:1px solid var(--app-border); border-radius:14px; }
.public-property-bath-card>i { margin-top:.12rem; color:var(--brand-primary); font-size:1.1rem; }
.public-property-location-copy { margin:-.6rem 0 1rem; color:var(--app-text-muted); }
.public-property-map { height:360px; overflow:hidden; border:1px solid var(--app-border); border-radius:18px; }
.public-property-map .leaflet-control-layers { border:0; border-radius:10px; box-shadow:0 4px 16px rgba(7,51,68,.16); color:var(--brand-dark); font-size:.78rem; font-weight:700; }
.public-property-map .leaflet-control-layers-base label { margin:0; }
.public-property-map-fullscreen-control { background:#fff; }
.public-property-map-fullscreen-button { display:grid; place-items:center; width:30px; height:30px; padding:0; border:0; background:#fff; color:var(--brand-dark); cursor:pointer; font-size:.84rem; }
.public-property-map-fullscreen-button:hover { background:#f4f7f7; }
.public-property-map:fullscreen { width:100vw; height:100vh; border:0; border-radius:0; }
.public-property-map:-webkit-full-screen { width:100vw; height:100vh; border:0; border-radius:0; }
.public-property-map--fullscreen-fallback { position:fixed !important; inset:0; z-index:99999; width:100vw !important; height:100vh !important; border:0; border-radius:0; }
body.public-property-map-fullscreen-open { overflow:hidden; }
.public-property-booking-card { position:sticky; top:1.5rem; padding:1.4rem; border:1px solid rgba(7,51,68,.13); border-radius:20px; background:#fff; box-shadow:0 14px 40px rgba(7,51,68,.11); }
.public-property-price { display:flex; align-items:baseline; gap:.35rem; margin-bottom:1.15rem; color:var(--brand-dark); }
.public-property-price strong { font-size:1.65rem; }
.public-property-price span { color:var(--app-text-muted); font-size:.85rem; }
.public-property-price--pending strong { font-size:1.05rem; }
.public-property-booking-dates { display:grid; grid-template-columns:1fr 1fr; overflow:hidden; margin-bottom:1rem; border:1px solid var(--app-border); border-radius:12px; }
.public-property-booking-dates div { padding:.75rem; }
.public-property-booking-dates div+div { border-left:1px solid var(--app-border); }
.public-property-booking-dates span { display:block; margin-bottom:.2rem; color:var(--app-text-muted); font-size:.65rem; font-weight:800; text-transform:uppercase; letter-spacing:.06em; }
.public-property-booking-dates strong { display:block; color:var(--brand-dark); font-size:.78rem; font-weight:600; }
.public-property-booking-button { width:100%; padding:.82rem 1rem; border:0; border-radius:12px; background:var(--brand-primary); color:#fff; font-weight:800; }
.public-property-booking-card>p { margin:.75rem 0 0; color:var(--app-text-muted); font-size:.72rem; text-align:center; }
.public-property-booking-info { display:flex; flex-direction:column; gap:.45rem; margin-top:1rem; padding-top:1rem; border-top:1px solid var(--app-border); color:#526168; font-size:.78rem; }
.public-property-booking-info span { display:flex; align-items:center; gap:.45rem; }
.public-property-booking-info i { color:var(--brand-primary); }
.featured-property-card-link { display:block; color:inherit; text-decoration:none; border-radius:18px; }
.featured-property-card-link:hover,.featured-property-card-link:focus { color:inherit; }
.featured-property-card-link:hover .featured-property-card { transform:translateY(-2px); box-shadow:0 16px 34px rgba(7,51,68,.12); }
.featured-property-card { transition:transform .2s ease,box-shadow .2s ease; }
@media (max-width:1100px) { .public-property-main { width:calc(100% - 3rem); } .public-property-gallery { height:430px; } .public-property-layout { grid-template-columns:1fr; gap:2rem; } .public-property-booking-card { position:static; } .public-property-room-grid { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media (max-width:760px) { .public-property-main { width:calc(100% - 1.5rem); } .public-property-title-row { align-items:flex-start; flex-direction:column; gap:.7rem; } .public-property-title-block { align-items:flex-start; } .public-property-logo { width:92px; height:68px; } .public-property-gallery { display:block; height:300px; border-radius:16px; } .public-property-gallery__side { display:none; } .public-property-amenities,.public-property-room-grid,.public-property-bath-grid { grid-template-columns:1fr; } .public-property-header .public-nav { display:none; } }

.public-property-summary-rating { display:inline-flex; align-items:center; gap:.42rem; flex:0 0 auto; color:var(--brand-dark); font-weight:700; text-decoration:none; white-space:nowrap; }
.public-property-summary-rating strong { font-size:1.18rem; line-height:1; }
.public-property-rating-count { color:var(--app-text-muted); font-size:.78rem; font-weight:600; }
.public-property-summary-rating:hover { color:var(--brand-primary); }
.public-property-ratings { position:relative; }
.public-property-ratings__heading { display:flex; align-items:flex-end; justify-content:space-between; gap:2rem; margin-bottom:1.4rem; }
.public-property-ratings__heading h2 { margin:.15rem 0 0; }
.public-property-ratings__eyebrow { display:block; color:var(--brand-primary); font-size:.72rem; font-weight:800; letter-spacing:.08em; text-transform:uppercase; }
.public-property-ratings__headline-score { display:flex; align-items:center; gap:.45rem; color:var(--brand-dark); white-space:nowrap; }
.public-property-ratings__headline-score strong { font-size:1.5rem; line-height:1; }

.public-property-ratings__criteria { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:.75rem; margin-bottom:1.7rem; }
.public-property-rating-criterion { display:flex; align-items:center; justify-content:space-between; gap:1rem; padding:.85rem 1rem; border:1px solid var(--app-border); border-radius:14px; background:#fff; }
.public-property-rating-criterion span { color:#526168; font-size:.82rem; font-weight:600; }
.public-property-rating-criterion strong { color:var(--brand-dark); font-size:1rem; }
.public-property-reviews-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:1.2rem 1.5rem; }
.public-property-review { min-width:0; padding:1.2rem; border:1px solid rgba(7,51,68,.1); border-radius:18px; background:#fff; }
.public-property-review__author { display:flex; align-items:center; gap:.75rem; margin-bottom:.75rem; }
.public-property-review__avatar-link { flex:0 0 auto; text-decoration:none; }
.public-property-review__avatar { display:grid; place-items:center; width:44px; height:44px; object-fit:cover; background:#eef3f4; color:var(--brand-primary); }
.public-property-review__avatar--fallback { font-size:.95rem; }
.public-property-review__author>div { min-width:0; display:flex; flex-direction:column; }
.public-property-review__author-name { overflow:hidden; color:var(--brand-dark); font-size:.9rem; font-weight:800; text-decoration:none; text-overflow:ellipsis; white-space:nowrap; }
.public-property-review__author-name:hover { color:var(--brand-primary); }
.public-property-review__author span { color:var(--app-text-muted); font-size:.72rem; }
.public-property-review__score { display:flex; align-items:center; gap:.42rem; margin-bottom:.65rem; }
.public-property-review__score strong { color:var(--brand-dark); font-size:.72rem; font-weight:800; }
.public-property-review__text { display:-webkit-box; overflow:hidden; margin:0; color:#405158; font-size:.88rem; line-height:1.58; -webkit-box-orient:vertical; -webkit-line-clamp:5; }
.public-property-review-response { margin-top:1rem; padding:.9rem 1rem; border-left:3px solid rgba(15,116,139,.25); border-radius:0 12px 12px 0; background:#f6f9f9; }
.public-property-review-response__author { display:flex; align-items:center; gap:.55rem; margin-bottom:.45rem; }
.public-property-review-response__avatar { width:30px; height:30px; object-fit:cover; }
.public-property-review-response__author>div { display:flex; flex-direction:column; min-width:0; }
.public-property-review-response__author strong { color:var(--brand-dark); font-size:.75rem; }
.public-property-review-response__author span { color:var(--app-text-muted); font-size:.68rem; }
.public-property-review-response p { margin:0; color:#526168; font-size:.78rem; line-height:1.5; }
.public-property-ratings__show-all { margin-top:1.4rem; padding:.72rem 1rem; border:1px solid var(--brand-dark); border-radius:12px; background:#fff; color:var(--brand-dark); font-size:.82rem; font-weight:800; }
.public-property-ratings__show-all:hover { background:#f5f8f8; }
.public-property-ratings-modal .modal-content { overflow:hidden; border:0; border-radius:22px; box-shadow:0 24px 70px rgba(7,51,68,.24); }
.public-property-ratings-modal .modal-header { align-items:flex-start; padding:1.5rem 1.6rem 1.2rem; border-bottom:1px solid var(--app-border); }
.public-property-ratings-modal .modal-title { display:flex; align-items:center; gap:.55rem; margin:.15rem 0 0; color:var(--brand-dark); font-size:1.55rem; font-weight:700; }
.public-property-ratings-modal .modal-body { padding:1.4rem 1.6rem 1.8rem; }
.public-property-ratings__criteria--modal { margin-bottom:1.2rem; }
.public-property-reviews-list { display:flex; flex-direction:column; gap:1rem; }
.public-property-review--modal { padding:1.15rem 1.2rem; border:1px solid rgba(7,51,68,.13); border-radius:16px; background:#fff; box-shadow:0 3px 12px rgba(7,51,68,.035); }
.public-property-review__modal-head { display:grid; grid-template-columns:minmax(220px,.9fr) minmax(330px,1.1fr); align-items:start; gap:1.4rem; margin-bottom:.7rem; }
.public-property-review__modal-author .public-property-review__author { margin-bottom:.55rem; }
.public-property-review__modal-author .public-property-review__score { margin-bottom:0; }
.public-property-review__criteria-compact { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:.55rem 1rem; align-self:center; padding:.15rem 0; }
.public-property-review__criterion-compact { display:flex; align-items:center; justify-content:flex-start; gap:.42rem; min-width:0; color:#526168; font-size:.76rem; }
.public-property-review__criterion-compact i { width:1.05rem; color:var(--brand-primary); font-size:.78rem; text-align:center; }
.public-property-review__criterion-compact strong { color:var(--brand-dark); font-size:.76rem; font-weight:800; }
.public-property-review--modal .public-property-review__text { display:block; overflow:visible; -webkit-line-clamp:unset; }
.public-property-review--modal .public-property-review-response { max-width:760px; }

@media (max-width:760px) {
    .public-property-facts-row { align-items:flex-start; flex-direction:column; gap:.8rem; }
    .public-property-summary-rating { align-self:flex-start; }
    .public-property-ratings__heading { align-items:flex-start; flex-direction:column; gap:.8rem; }
    .public-property-ratings__criteria { grid-template-columns:1fr 1fr; }
    .public-property-reviews-grid { grid-template-columns:1fr; }
    .public-property-ratings-modal .modal-dialog { margin:.5rem; }
    .public-property-review__modal-head { grid-template-columns:1fr; gap:.85rem; }
    .public-property-review__criteria-compact { grid-template-columns:repeat(2,minmax(0,1fr)); gap:.5rem .8rem; }
}
