:root{--navy:#102033;--gold:#a78a46;--paper:#faf9f6;--ink:#1b1b1b}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font:1rem/1.65 Arial,sans-serif}a{color:inherit}button{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button:focus-visible,a:focus-visible,[tabindex]:focus-visible{outline:3px solid var(--gold);outline-offset:5px}[hidden]{display:none!important}h1,h2,h3{font-family:Georgia,serif;font-weight:400;line-height:1.15}.wrap{width:min(1280px,90%);margin-inline:auto}.detail-header{background:var(--navy);color:#fff;padding:20px 0}.detail-header nav{display:flex;justify-content:space-between;align-items:center;gap:24px}.brand{text-align:center;text-decoration:none;line-height:1.15;flex-shrink:0}.brand b{display:block;font:2rem Georgia,serif;letter-spacing:.08em}.brand span{display:block;letter-spacing:.17em;font-size:.875rem}.header-links{display:flex;gap:28px;align-items:center}.header-links a{text-decoration:none;font-size:.875rem}.header-links a:hover{text-decoration:underline}.btn{display:inline-flex;align-items:center;justify-content:center;text-align:center;min-height:48px;padding:14px 22px;background:var(--gold);border:1px solid var(--gold);color:#fff;text-decoration:none;font-size:.875rem;letter-spacing:.04em;text-transform:uppercase}.btn:hover{background:#897039}.back-link{display:inline-flex;align-items:center;min-height:44px;margin:22px 0 20px;font-size:.875rem;text-underline-offset:5px}.eyebrow{margin:0 0 10px;text-transform:uppercase;font-size:.875rem;letter-spacing:.16em;color:#806636}h1{font-size:clamp(2.6rem,5vw,4.5rem);margin:0;color:var(--navy)}.tagline{font:clamp(1.2rem,2vw,1.6rem)/1.5 Georgia,serif;margin:12px 0 24px;color:#55514a}.facts{list-style:none;display:flex;flex-wrap:wrap;gap:10px;margin:0 0 32px;padding:0}.facts li{padding:7px 14px;border:1px solid #d4ccb9;background:#fff;font-size:.875rem}.apartment-layout{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(280px,1fr);gap:clamp(26px,4vw,58px);align-items:start}.gallery{min-width:0}.gallery-stage{position:relative;aspect-ratio:4/3;background:#202121;touch-action:pan-y;overflow:hidden}.gallery-photo{width:100%;height:100%;margin:0}.gallery-photo svg{display:block;width:100%;height:100%}.gallery-controls{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:12px}.gallery-controls button{border:1px solid #b5a991;background:transparent;min-width:48px;min-height:48px;cursor:pointer;color:var(--navy);font-size:1.25rem}.gallery-controls button:hover{background:#e8e2d5}.gallery-status{margin:0;text-align:center;font-size:.875rem;line-height:1.5}.gallery-status span{display:block;color:#635d54}.thumbnails{display:flex;gap:10px;overflow-x:auto;margin-top:16px;padding:5px 5px 10px;scrollbar-color:var(--gold) #e8e2d5;scrollbar-width:thin}.thumbnail{position:relative;flex:0 0 85px;aspect-ratio:1;background:#202121;border:3px solid transparent;padding:0;cursor:pointer;overflow:hidden}.thumbnail svg{display:block;width:100%;height:100%}.thumbnail[aria-pressed=true]{border-color:var(--gold);outline:1px solid var(--gold);outline-offset:2px}.thumbnail:hover{border-color:#cdb578}.presentation h2{font-size:1.8rem;color:var(--navy);margin:0 0 20px}.presentation p{margin:0 0 18px}.amenities{margin-top:32px;padding-top:25px;border-top:1px solid #dcd5c8}.amenities h2{font-size:1.5rem}.amenities ul{padding-left:20px;margin:0;display:grid;gap:8px}.amenities li::marker{color:var(--gold)}.rating{margin-top:28px;padding:20px 22px;background:#f0ece3;border-left:3px solid var(--gold)}.rating p{margin:0}.rating strong{color:var(--navy)}.rating .stars{color:#8a6b2c;letter-spacing:.12em}.rating small{font-size:.875rem}.reservation{margin:56px 0 38px;padding:32px 36px;background:var(--navy);color:#fff;display:flex;justify-content:space-between;align-items:center;gap:32px}.reservation h2{font-size:1.8rem;margin:0 0 12px}.reservation p{margin:0;max-width:620px}.reservation-actions{display:flex;flex-direction:column;gap:14px;flex-shrink:0;text-align:center}.reservation-actions>a:not(.btn){font-size:1rem;text-underline-offset:5px}.apartment-nav{display:flex;justify-content:space-between;gap:24px;margin:0 0 50px}.apartment-nav a{min-height:44px;text-underline-offset:6px;display:flex;align-items:center}.footer{background:#202121;color:#ddd;padding:30px 0;font-size:.875rem}.footer .wrap{display:flex;justify-content:space-between;gap:24px;flex-wrap:wrap}.footer a{text-underline-offset:4px}.footer-brand{font:1.25rem Georgia,serif;letter-spacing:.08em;color:#fff}
@media(max-width:900px){.apartment-layout{grid-template-columns:1fr}.gallery-stage{max-height:600px;aspect-ratio:4/3}.presentation{padding-top:8px}.amenities ul{grid-template-columns:1fr 1fr;column-gap:32px}.reservation{margin-top:38px}.gallery-controls{margin-top:14px}.thumbnail{flex-basis:90px}.header-links{gap:18px}}
@media(max-width:600px){.detail-header{padding:16px 0}.brand b{font-size:1.7rem}.brand span{font-size:.75rem}.header-links>a:not(.btn){display:none}.header-links .btn{padding:12px 15px;font-size:.75rem}.back-link{margin:15px 0}.eyebrow{font-size:.75rem;letter-spacing:.12em}.tagline{margin-bottom:20px}.facts{gap:8px;margin-bottom:24px}.facts li{padding:6px 10px}.gallery-stage{aspect-ratio:1}.thumbnail{flex-basis:70px}.gallery-status{font-size:.875rem}.presentation h2{font-size:1.65rem}.amenities ul{grid-template-columns:1fr}.reservation{padding:26px 22px;display:block}.reservation h2{font-size:1.65rem}.reservation-actions{margin-top:24px}.apartment-nav{flex-direction:column;gap:10px;margin-bottom:34px}.footer .wrap{display:block}.footer .wrap>div+div{margin-top:18px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}

/* Main frames follow their photo's own ratio and never add letterboxing. */
.apartment-page main.wrap{width:min(1400px,94%)}
.apartment-layout{grid-template-columns:minmax(0,2.25fr) minmax(260px,.9fr)}
.gallery-stage{display:flex;justify-content:center;align-items:flex-start;aspect-ratio:auto;max-height:none;background:transparent;overflow:visible}
.gallery-photo{width:min(100%,calc(71vh * var(--photo-ratio)));width:min(100%,calc(71svh * var(--photo-ratio)));height:auto;aspect-ratio:var(--photo-ratio);margin:0 auto}
.gallery-photo-open{display:block;position:relative;width:100%;border:0;padding:0;background:transparent;cursor:zoom-in;line-height:0;color:white}
.gallery-photo svg{display:block;width:100%;height:auto}
.enlarge-hint{position:absolute;right:14px;bottom:14px;padding:9px 13px;background:#102033d9;color:white;font-size:.875rem;line-height:1.4;border:1px solid #ffffff70}
.thumbnail{background:transparent}
.thumbnail svg{overflow:hidden}
.photo-viewer{position:fixed;inset:0;width:100%;height:100%;height:100dvh;max-width:none;max-height:none;margin:0;padding:20px 24px;border:0;background:var(--paper);color:var(--ink);overflow:hidden}
.photo-viewer[open]{display:grid;grid-template-rows:auto minmax(0,1fr) auto;gap:12px}
.photo-viewer::backdrop{background:#faf9f6f5}
.viewer-toolbar{display:flex;align-items:center;justify-content:space-between;gap:16px;font:1.35rem/1.3 Georgia,serif;color:var(--navy)}
.viewer-toolbar button,.viewer-controls button{min-width:48px;min-height:48px;border:1px solid #b5a991;background:transparent;color:var(--navy);padding:10px 16px;cursor:pointer;font:1rem/1.4 Arial,sans-serif}
.viewer-toolbar button:hover,.viewer-controls button:hover{background:#e8e2d5}
.viewer-photo{display:flex;align-items:center;justify-content:center;min-height:0;min-width:0;overflow:hidden;touch-action:pan-y pinch-zoom}
.viewer-frame{width:min(calc(100vw - 48px),calc((100vh - 176px) * var(--photo-ratio)));width:min(calc(100vw - 48px),calc((100dvh - 176px) * var(--photo-ratio)));aspect-ratio:var(--photo-ratio)}
.viewer-frame svg{display:block;width:100%;height:auto}
.viewer-controls{display:flex;align-items:center;justify-content:center;gap:24px;min-height:64px}
.viewer-status{margin:0;text-align:center;font-size:1rem;line-height:1.5}
.viewer-status span{display:block;color:#635d54;font-size:.875rem}
@media(max-width:900px){.apartment-layout{grid-template-columns:1fr}.gallery-stage{aspect-ratio:auto;max-height:none}.gallery-photo{width:min(100%,calc(76vh * var(--photo-ratio)));width:min(100%,calc(76svh * var(--photo-ratio)))}}
@media(max-width:600px){.enlarge-hint{right:10px;bottom:10px;padding:8px 11px}.photo-viewer{padding:14px 12px}.viewer-toolbar{font-size:1.1rem}.viewer-toolbar button{padding:10px 12px}.viewer-frame{width:min(calc(100vw - 24px),calc((100vh - 160px) * var(--photo-ratio)));width:min(calc(100vw - 24px),calc((100dvh - 160px) * var(--photo-ratio)))}.viewer-controls{gap:12px}.viewer-status{font-size:.875rem}.viewer-status span{font-size:.875rem}}

/* Native listing photographs retain their full aspect ratio. */
.gallery-photo img.apartment-image,.viewer-frame img.apartment-image{display:block;width:100%;height:auto}
.thumbnail img.apartment-image{display:block;width:100%;height:100%;object-fit:cover}
.reservation{align-items:flex-start}
.reservation-copy{flex:1;min-width:0}
.nightly-rate{display:flex;flex-direction:column;gap:4px;margin:20px 0 10px}
.nightly-rate span{font-size:.875rem;letter-spacing:.04em;color:#e3d1a3}
.nightly-rate strong{font:1.8rem/1.3 Georgia,serif}
.reservation p.rate-note{font-size:.875rem;line-height:1.6;color:#d2d7de;margin-bottom:18px}
.reservation-links{display:flex;flex-wrap:wrap;gap:12px 24px;margin-top:22px;font-size:.875rem;text-underline-offset:4px}
.booking-form{flex:0 1 430px;min-width:0}
.booking-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.booking-fields label{display:flex;flex-direction:column;gap:6px;font-size:.875rem}
.booking-fields input,.booking-fields select{min-width:0;width:100%;min-height:48px;padding:10px;border:1px solid #bdb59f;border-radius:0;background:#fff;color:var(--navy);font:1rem/1.4 Arial,sans-serif;color-scheme:light}
.booking-fields input:focus-visible,.booking-fields select:focus-visible{outline:3px solid #dec688;outline-offset:3px}
.booking-form .btn{width:100%;margin-top:20px;cursor:pointer}
.reservation p.booking-note{font-size:.875rem;line-height:1.5;color:#d2d7de;margin-top:12px}
.stay-conditions{margin:-14px 0 38px;padding:20px 24px;border:1px solid #d4ccb9;background:#fff}
.stay-conditions summary{cursor:pointer;color:var(--navy);min-height:32px;line-height:1.6}
.stay-conditions ul{padding-left:20px;display:grid;gap:10px;font-size:.875rem}
.stay-conditions p{font-size:.875rem;margin-bottom:0}
@media(max-width:900px){.reservation{flex-direction:column;gap:28px}.booking-form{width:100%;flex:auto}.reservation-copy{width:100%}}
@media(max-width:600px){.booking-form{margin-top:24px}.booking-fields{gap:12px}.booking-fields input,.booking-fields select{padding:9px 7px}.stay-conditions{padding:18px}.nightly-rate strong{font-size:1.7rem}}
