.property-page { padding-top: 134px; padding-bottom: 96px; }
.property-back { display: inline-flex; align-items: center; gap: 10px; color: #475d43; font-size: .84rem; margin-bottom: 36px; text-decoration: none; }
.property-back:hover { text-decoration: underline; }
.property-header { display: flex; align-items: flex-end; justify-content: space-between; gap: 24px; margin-bottom: 32px; }
.property-header .eyebrow { margin-bottom: 12px; }
.property-header h1 { font-family: "Noto Serif", Georgia, serif; font-weight: 400; font-size: clamp(2.8rem, 5vw, 4.25rem); line-height: 1.15; letter-spacing: -.045em; margin: 0 0 13px; }
.property-intro { max-width: 620px; color: #626a60; font-size: 1rem; line-height: 1.7; margin: 0; }
.property-location { flex-shrink: 0; color: #475d43; font-size: .85rem; padding-bottom: 5px; }
.property-location::before { content: ""; display: inline-block; width: 6px; height: 6px; margin-right: 8px; background: #475d43; border-radius: 50%; vertical-align: middle; }
.property-grid-detail { display: grid; grid-template-columns: minmax(0, 1fr) 335px; align-items: start; gap: 54px; }
.property-content, .property-gallery { min-width: 0; }
.gallery-frame { position: relative; background: #e5e5da; overflow: hidden; }
.gallery-main { display: block; aspect-ratio: 16 / 11; padding: 0; width: 100%; border: 0; background: transparent; cursor: zoom-in; }
.gallery-main img { display: block; width: 100%; height: 100%; object-fit: cover; }
.gallery-main:focus-visible { outline: 3px solid #fff; outline-offset: -6px; }
.gallery-count { position: absolute; top: 17px; right: 17px; background: #f6f4ee; color: #242c25; padding: 7px 12px; font-size: .75rem; pointer-events: none; }
.gallery-navigation { position: absolute; right: 16px; bottom: 16px; display: flex; gap: 8px; }
.gallery-arrow, .photo-arrow { display: inline-flex; align-items: center; justify-content: center; width: 44px; height: 44px; padding: 0; border: 0; border-radius: 50%; background: #f6f4ee; color: #242c25; font-size: 1.15rem; cursor: pointer; }
.gallery-arrow:hover { background: #fff; }
.gallery-description { display: flex; align-items: center; justify-content: space-between; gap: 20px; padding: 16px 0; font-size: .79rem; color: #626a60; }
.gallery-show-all { padding: 5px 0; border: 0; border-bottom: 1px solid #a3ad9c; background: transparent; color: #475d43; font: inherit; font-weight: 600; flex-shrink: 0; cursor: pointer; }
.gallery-thumbnails { display: flex; gap: 9px; overflow-x: auto; padding: 4px 3px 10px; scrollbar-width: thin; scrollbar-color: #bbc1b2 transparent; }
.gallery-thumbnail { flex: 0 0 calc((100% - 45px) / 6); min-width: 72px; aspect-ratio: 4 / 3; padding: 0; border: 0; background: #e5e5da; cursor: pointer; opacity: .68; }
.gallery-thumbnail img { width: 100%; height: 100%; display: block; object-fit: cover; }
.gallery-thumbnail[aria-pressed="true"] { opacity: 1; outline: 2px solid #475d43; outline-offset: 2px; }
.gallery-thumbnail:hover { opacity: 1; }
.property-section { margin-top: 40px; padding-top: 35px; border-top: 1px solid #dcded2; }
.property-section h2 { margin: 0 0 20px; font-family: "Noto Serif", Georgia, serif; font-size: clamp(1.5rem, 3vw, 1.8rem); font-weight: 400; letter-spacing: -.03em; line-height: 1.4; }
.property-section p { color: #626a60; line-height: 1.85; font-size: .93rem; max-width: 64ch; margin: 0 0 15px; }
.property-features { list-style: none; padding: 0; margin: 0; display: grid; grid-template-columns: 1fr 1fr; gap: 20px 24px; }
.property-features li { display: flex; align-items: flex-start; gap: 12px; font-size: .87rem; line-height: 1.6; }
.property-features li::before { content: "✓"; color: #475d43; font-size: .9rem; font-weight: 600; }
.booking-panel { position: sticky; top: 112px; padding: 30px; border: 1px solid #dcded2; background: #eeeee5; }
.booking-panel h2 { font-family: "Noto Serif", Georgia, serif; font-size: 1.6rem; font-weight: 400; line-height: 1.35; letter-spacing: -.025em; margin: 16px 0; }
.booking-panel > p { color: #626a60; line-height: 1.8; font-size: .85rem; margin: 0 0 24px; }
.booking-panel .button { width: 100%; }
.booking-platform { display: block; text-align: center; font-size: .7rem; line-height: 1.6; color: #626a60; margin: 12px 0 24px; }
.booking-listing { padding-top: 23px; border-top: 1px solid #d2d6c9; }
.booking-listing span { font-size: .69rem; color: #626a60; display: block; margin-bottom: 6px; }
.booking-listing strong { display: block; color: #242c25; font-size: .88rem; font-weight: 600; line-height: 1.5; margin-bottom: 14px; }
.booking-listing p { margin: 0 0 17px; font-size: .78rem; line-height: 1.8; color: #626a60; }
.booking-review-link { display: inline-block; font-size: .78rem; color: #475d43; text-underline-offset: 4px; }
.property-return { margin-top: 28px; }
.photo-dialog { width: 100vw; max-width: none; height: 100dvh; max-height: none; margin: 0; padding: 24px 32px; border: 0; background: #172018; color: #f6f4ee; }
.photo-dialog[open] { display: flex; flex-direction: column; }
.photo-dialog::backdrop { background: #172018; }
.photo-dialog-header { display: flex; align-items: center; justify-content: space-between; gap: 24px; flex-shrink: 0; }
.photo-dialog-header h2 { font-family: "Noto Serif", Georgia, serif; font-size: 1.2rem; font-weight: 400; margin: 0; }
.photo-close { display: flex; align-items: center; gap: 12px; min-height: 44px; padding: 8px 13px; border: 1px solid #66725e; background: transparent; color: #f6f4ee; font: inherit; font-size: .8rem; cursor: pointer; }
.photo-close span[aria-hidden] { font-size: 1.3rem; }
.photo-dialog-stage { position: relative; display: flex; align-items: center; justify-content: center; flex: 1; min-height: 0; padding: 24px 66px 0; }
.photo-dialog-stage figure { display: flex; flex-direction: column; align-items: center; justify-content: center; margin: 0; max-height: 100%; }
.photo-dialog-stage img { max-width: 100%; max-height: calc(100dvh - 168px); height: auto; object-fit: contain; }
.photo-dialog-caption { margin-top: 16px; text-align: center; font-size: .82rem; line-height: 1.5; color: #d7dece; }
.photo-arrow { position: absolute; top: calc(50% - 22px); }
.photo-arrow.previous { left: 0; }
.photo-arrow.next { right: 0; }
.photo-dialog button:focus-visible { outline: 3px solid #dce6c9; outline-offset: 4px; }
@media (max-width: 1100px) {
    .property-grid-detail { grid-template-columns: minmax(0, 1fr) 300px; gap: 30px; }
    .booking-panel { padding: 24px; }
}
@media (max-width: 1000px) {
    .property-page { padding-top: 152px; }
    .booking-panel { top: 139px; }
}
@media (max-width: 820px) {
    .property-page { padding-bottom: 64px; }
    .property-back { margin-bottom: 27px; }
    .property-header { display: block; }
    .property-location { display: block; padding-top: 18px; }
    .property-grid-detail { display: flex; flex-direction: column; gap: 34px; }
    .property-content { display: contents; }
    .property-gallery { width: 100%; order: 1; }
    .booking-panel { width: 100%; position: static; order: 2; padding: 28px; }
    .property-section { width: 100%; margin-top: 0; }
    .property-overview { order: 3; }
    .property-amenities { order: 4; }
    .property-booking-notes { order: 5; }
    .gallery-main { aspect-ratio: 4 / 3; }
    .booking-panel h2 { margin-top: 12px; }
    .booking-panel .button { max-width: 320px; }
    .booking-platform { text-align: left; }
    .booking-listing strong { margin-bottom: 8px; }
}
@media (max-width: 480px) {
    .property-page { padding-top: 145px; }
    .property-header h1 { font-size: 2.6rem; }
    .property-intro { font-size: .92rem; }
    .property-features { grid-template-columns: 1fr; gap: 17px; }
    .gallery-description { gap: 12px; font-size: .73rem; }
    .gallery-thumbnail { flex-basis: 76px; }
    .photo-dialog { padding: 16px; }
    .photo-dialog-header h2 { font-size: 1rem; }
    .photo-dialog-stage { padding: 20px 0 60px; }
    .photo-dialog-stage img { max-height: calc(100dvh - 220px); }
    .photo-arrow { top: auto; bottom: 0; }
    .photo-arrow.previous { left: calc(50% - 55px); }
    .photo-arrow.next { right: calc(50% - 55px); }
}
