:root{--paper:#f4efdf;--ink:#3f493f;--muted:#837e70;--line:#d8ceb8;--red:#b9654d;--sage:#738365;--card:#fffbed}
*{box-sizing:border-box}[hidden]{display:none!important}html{scroll-behavior:smooth}body{margin:0;overflow-x:hidden;background:var(--paper);color:var(--ink);font:15px/1.9 "Hiragino Sans","Noto Sans CJK SC","PingFang SC",sans-serif}button,input,select{font:inherit}a{color:inherit}button{color:inherit}.room-header{position:sticky;top:0;z-index:20;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:28px;padding:15px clamp(24px,5.5vw,84px);border-bottom:1px solid var(--line);background:#faf6e9eb;backdrop-filter:blur(13px)}.wordmark{display:flex;align-items:center;gap:12px;width:max-content;text-decoration:none;letter-spacing:3px}.seal{display:grid;place-items:center;width:36px;height:36px;border-radius:3px;color:#fff8e8;background:var(--red);font:18px serif}.wordmark small{display:block;margin-top:-2px;color:var(--muted);font:8px monospace;letter-spacing:3px}.room-header nav{display:flex;gap:30px}.room-header nav a,.back{color:var(--muted);font-size:12px;text-decoration:none}.room-header nav a:hover,.back:hover{color:var(--red)}.back{justify-self:end}
.room-main{max-width:1440px;margin:auto;padding:68px clamp(24px,5.5vw,84px) 110px}.room-intro{display:flex;justify-content:space-between;gap:50px;align-items:end;margin-bottom:42px}.room-intro>div{min-width:0}.room-eyebrow,.section-kicker{margin:0;color:var(--red);font:10px monospace;letter-spacing:2.7px}.room-intro h1{margin:14px 0 0;font:400 clamp(38px,4.3vw,62px)/1.2 Georgia,"Noto Serif CJK SC",serif;letter-spacing:.5px;overflow-wrap:anywhere}.room-intro h1 span{font-family:"Noto Serif CJK SC","Songti SC",serif}.room-subtitle{margin:10px 0 0;color:var(--muted);font:20px "Noto Serif CJK SC",serif;letter-spacing:2px}.intro-facts{flex:0 0 auto;list-style:none;margin:0;padding:0;text-align:right;color:#5f6459}.intro-facts li+li{margin-top:4px}.media-gallery{margin-bottom:88px}.gallery-heading{display:flex;align-items:end;justify-content:space-between;margin-bottom:18px}.gallery-heading h2{margin:6px 0 0;font:400 22px/1.5 "Noto Serif CJK SC",serif}.gallery-heading>span{font:12px monospace;color:var(--muted)}.media-stage{position:relative;height:min(62vw,690px);min-height:380px;overflow:hidden;border-radius:6px;background:#e8e2d3}.media-frame,.media-frame img,.media-frame video{width:100%;height:100%}.media-frame img,.media-frame video{display:block;object-fit:cover}.media-frame [data-fit=contain]{object-fit:contain;background:#fffbed}.media-arrow{position:absolute;top:50%;z-index:2;display:grid;place-items:center;width:48px;height:48px;border:1px solid #fff7;border-radius:50%;background:#fffbeddf;color:var(--ink);font:32px/1 serif;box-shadow:0 4px 20px #342b1d18;cursor:pointer;transform:translateY(-50%)}.media-arrow:hover{background:#fff}.media-arrow.prev{left:22px}.media-arrow.next{right:22px}.media-expand{position:absolute;right:20px;bottom:20px;border:1px solid #fff7;border-radius:20px;padding:9px 15px;background:#fffbeded;font-size:11px;cursor:pointer}.media-caption{position:absolute;left:20px;bottom:20px;display:flex;align-items:center;gap:10px;padding:8px 13px;border-radius:3px;background:#fffbeded;font-size:11px}.media-caption span{color:var(--muted)}.media-thumbs{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:9px;margin-top:10px}.media-thumb{position:relative;aspect-ratio:3/2;padding:0;border:2px solid transparent;border-radius:3px;overflow:hidden;background:#e5dfd0;cursor:pointer;opacity:.72}.media-thumb:hover,.media-thumb[aria-current=true]{opacity:1}.media-thumb[aria-current=true]{border-color:var(--red)}.media-thumb img{width:100%;height:100%;display:block;object-fit:cover}.media-thumb span{position:absolute;right:5px;bottom:4px;padding:1px 6px;border-radius:8px;background:#292d28bd;color:white;font-size:9px}
.property-reviews{display:flex;align-items:stretch;gap:10px;margin:-20px 0 42px;padding:12px;border:1px solid var(--line);border-radius:6px;background:#faf6e9}.property-reviews-label{min-width:230px;padding:10px 18px 8px 8px;border-right:1px solid var(--line);display:flex;flex-direction:column;justify-content:center}.property-reviews-label strong{margin-top:5px;font:400 17px/1.4 "Noto Serif CJK SC",serif}.property-reviews-label small{margin-top:5px;color:var(--muted);font-size:9px}.property-review-card{min-width:220px;display:grid;grid-template-columns:auto 1fr;align-items:center;gap:5px 16px;padding:12px 17px;border:1px solid #d9cdb6;border-radius:4px;background:var(--card);text-decoration:none;transition:transform .2s,box-shadow .2s}.property-review-card:hover{transform:translateY(-2px);box-shadow:0 8px 20px #5d554517}.property-review-card span{color:#ff5a5f;font:600 11px Arial,sans-serif}.property-review-card b{justify-self:end;color:#986b32;font:600 17px Georgia,serif}.property-review-card em,.property-review-card i{font-style:normal;font-size:9px}.property-review-card em{color:var(--muted)}.property-review-card i{justify-self:end;color:var(--red)}.property-review-card.google-review span{color:#4285f4}.property-review-card.review-empty{min-width:310px}.property-review-card.review-empty span{color:var(--sage)}.property-review-card.review-empty b{font:500 13px/1.4 inherit;color:var(--ink)}.property-review-card.review-empty em{grid-column:1/-1}.property-review-card.review-empty:hover{transform:none;box-shadow:none}
.room-layout{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(330px,.72fr);gap:clamp(42px,6vw,92px);align-items:start}.room-content>section{scroll-margin-top:100px;border-top:1px solid var(--line);padding:36px 0;margin-bottom:64px}.room-content>section:first-child{border:0;padding-top:0}.room-content h2{margin:8px 0 23px;font:400 clamp(26px,2.5vw,36px)/1.45 "Noto Serif CJK SC",serif}.room-content h3{margin:0 0 7px;font-size:16px;font-weight:500}.room-content p{max-width:72ch;margin:0 0 14px;color:#6e6b5f}.room-content .lead{font-size:17px;color:#555c50}.specs{display:grid;grid-template-columns:repeat(3,1fr);gap:1px!important;padding:1px!important;background:var(--line)}.specs div{padding:20px 22px;background:#faf6e9}.specs small{display:block;color:var(--muted);font-size:10px;letter-spacing:1px}.specs b{font-weight:500}.space-list article{display:grid;grid-template-columns:60px 1fr;gap:20px;padding:22px 0;border-bottom:1px dashed var(--line)}.space-list article>span{color:var(--red);font:20px Georgia,serif}.space-list p{margin:0}.floor-plan{display:grid;grid-template-columns:.85fr 1.15fr;gap:40px;align-items:center}.plan-button{position:relative;padding:0;border:1px solid var(--line);border-radius:4px;overflow:hidden;background:var(--card);cursor:zoom-in}.plan-button img{display:block;width:100%}.plan-button span{position:absolute;right:12px;bottom:12px;padding:7px 10px;border-radius:18px;background:#fffbedeb;font-size:10px}.amenity-columns{display:grid;grid-template-columns:repeat(3,1fr);gap:25px}.amenity-columns h3{padding-bottom:10px;border-bottom:1px solid var(--line)}.amenity-columns ul,.rules ul{margin:0;padding-left:1.15em;color:#6d6b60}.amenity-columns li,.rules li{margin:5px 0}.note{font-size:12px!important;color:var(--muted)!important}.transit{display:grid;grid-template-columns:1fr 1fr;gap:0 28px;margin:24px 0;padding:0;list-style:none}.transit li{display:flex;justify-content:space-between;gap:15px;padding:10px 0;border-bottom:1px dotted var(--line)}.transit b{font-size:12px;font-weight:400;color:var(--muted);white-space:nowrap}
.booking{position:sticky;top:104px;padding:28px 28px 25px;border:1px solid #d1c6ae;border-radius:8px;background:var(--card);box-shadow:0 16px 42px #5d55451b}.booking h2{margin:7px 0 0;font:400 27px "Noto Serif CJK SC",serif}.room-id{margin:2px 0 20px;color:var(--muted);font:10px monospace;letter-spacing:.5px}.room-default-price{margin:-8px 0 18px;color:var(--red);font-size:13px;font-weight:600}.booking form{display:grid;gap:13px}.booking .row{display:grid;grid-template-columns:1fr 1fr;gap:10px}.booking label{display:grid;gap:5px;color:var(--muted);font-size:10px}.booking input,.booking select{width:100%;min-width:0;padding:11px 10px;border:1px solid #d8cdb6;border-radius:3px;background:#faf6e9;color:var(--ink);font-size:12px}.booking button[type=submit]{border:0;border-radius:3px;padding:14px;background:var(--sage);color:white;cursor:pointer}.booking button:disabled{opacity:.48;cursor:wait}.quote{padding:13px;background:#f3ead7;border-radius:3px}.quote .total{display:flex;justify-content:space-between;align-items:center}.quote .total b{font-size:21px}.quote .total span,.quote .adr,.quote .policy{font-size:10px;color:var(--muted)}.quote ol{padding:8px 0;margin:7px 0;border-block:1px solid var(--line);list-style:none}.quote li{display:flex;justify-content:space-between;font-size:10px}.guest-fields{display:grid;gap:10px;padding-top:12px;border-top:1px solid var(--line)}.guest-fields>p{margin:0;color:var(--muted);font-size:10px}.status{margin:0;padding:9px;border-radius:3px;background:#f2ead7;font-size:11px}.status[data-kind=error]{background:#f3dfd7;color:#9b4937}.status[data-kind=done]{background:#dfe9d7;color:#4f6c43}.booking-footnote{margin:15px 0 0;color:var(--muted);font-size:10px;text-align:center}.room-footer{display:flex;justify-content:space-between;gap:20px;padding:28px clamp(24px,5.5vw,84px);border-top:1px solid var(--line);color:var(--muted);font:9px monospace;letter-spacing:1px;text-transform:uppercase}
.inquiry-copy{margin:18px 0;color:var(--muted);font-size:13px}.inquiry-button{display:block;padding:14px;border-radius:3px;background:var(--sage);color:#fff;text-align:center;text-decoration:none}.inquiry-button:hover{filter:brightness(.94)}
.media-lightbox{width:100vw;max-width:none;height:100vh;max-height:none;margin:0;padding:50px 70px;border:0;background:#252722f5;color:white}.media-lightbox::backdrop{background:#222a}.media-lightbox>div{height:calc(100vh - 100px);display:grid;place-items:center}.media-lightbox img,.media-lightbox video{display:block;max-width:100%;max-height:100%;object-fit:contain}.media-lightbox .media-arrow{position:fixed}.media-lightbox .prev{left:18px}.media-lightbox .next{right:18px}.lightbox-close{position:fixed;right:21px;top:16px;z-index:3;width:42px;height:42px;border:1px solid #fff7;border-radius:50%;background:#fff1;color:white;font-size:27px;cursor:pointer}.media-lightbox>p{position:fixed;left:24px;bottom:12px;margin:0;font-size:12px}
@media(max-width:900px){.room-header{grid-template-columns:1fr auto}.room-header nav{display:none}.room-main{padding-top:42px}.room-intro{display:block}.intro-facts{margin-top:22px;text-align:left}.property-reviews{flex-wrap:wrap}.property-reviews-label{width:100%;border-right:0;border-bottom:1px solid var(--line);padding:7px 8px 14px}.property-review-card{flex:1}.media-stage{height:56vw;min-height:300px}.media-thumbs{grid-template-columns:repeat(5,1fr)}.room-layout{grid-template-columns:1fr}.booking{position:relative;top:auto;grid-row:1}.floor-plan{grid-template-columns:1fr}.amenity-columns{grid-template-columns:1fr 1fr}.room-footer{display:block}.room-footer span{display:block;margin:4px 0}}
@media(max-width:600px){.room-header{padding:12px 18px}.back{font-size:0}.back:after{content:'地图 ↗';font-size:11px}.room-main{padding:36px 18px 70px}.room-intro h1{font-size:36px}.room-intro h1 span{display:block}.room-subtitle{font-size:16px}.property-reviews{display:grid;margin-top:-18px;padding:9px}.property-review-card,.property-review-card.review-empty{min-width:0;width:100%}.media-gallery{margin-bottom:55px}.gallery-heading h2{font-size:18px}.media-stage{height:65vw;min-height:240px}.media-arrow{width:38px;height:38px}.media-arrow.prev{left:10px}.media-arrow.next{right:10px}.media-expand{right:10px;bottom:10px}.media-caption{left:10px;bottom:10px}.media-thumbs{display:flex;overflow-x:auto;scroll-snap-type:x mandatory}.media-thumb{min-width:92px;scroll-snap-align:start}.room-layout{gap:36px}.booking{padding:24px 20px}.specs{grid-template-columns:1fr 1fr}.amenity-columns,.transit{grid-template-columns:1fr}.room-content>section{margin-bottom:48px}.floor-plan{gap:18px}.media-lightbox{padding:50px 12px}.media-lightbox .prev{left:7px}.media-lightbox .next{right:7px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
.wordmark{display:block;width:84px;height:74px;overflow:hidden;letter-spacing:0}.wordmark img{display:block;width:74px;height:74px;margin-left:5px;object-fit:contain;mix-blend-mode:multiply;transform:scale(1.42)}
@media(max-width:600px){.room-header{padding-block:4px}.wordmark{width:66px;height:58px}.wordmark img{width:58px;height:58px;margin-left:4px;transform:scale(1.42)}}

/* Keep each room's Airbnb score directly above official direct booking. */
.booking .booking-reviews{margin:-15px -15px 22px;padding:10px;display:grid;grid-template-columns:1fr;gap:8px;border-color:#d8cdb6;background:#f7f0df}
.booking .booking-reviews .property-reviews-label{min-width:0;padding:3px 5px 9px;border-right:0;border-bottom:1px solid var(--line)}
.booking .booking-reviews .property-reviews-label strong{font-size:14px}
.booking .booking-reviews .property-reviews-label small{font-size:8px}
.booking .booking-reviews .property-review-card{min-width:0;width:100%;padding:11px 13px;background:#fffbed}
.booking .booking-reviews .property-review-card span{font-size:12px}
.booking .booking-reviews .property-review-card b{font-size:19px}
@media(max-width:600px){.booking .booking-reviews{margin:-12px -8px 20px}}
@media(max-width:600px){.booking form>.row{grid-template-columns:1fr}}
/* Compact, horizontally draggable gallery. */
.media-gallery{margin-bottom:52px}.media-stage{height:min(42vw,480px);min-height:300px;cursor:grab;touch-action:pan-y;user-select:none}.media-stage.is-dragging,.media-thumbs.is-dragging{cursor:grabbing}.media-frame img{pointer-events:none}.media-thumbs{display:flex;grid-template-columns:none;gap:9px;padding-bottom:5px;overflow-x:auto;overscroll-behavior-inline:contain;scroll-snap-type:x proximity;scrollbar-width:thin;cursor:grab}.media-thumb{flex:0 0 clamp(116px,12vw,168px);scroll-snap-align:start}.media-thumb img{pointer-events:none}
@media(max-width:600px){.media-stage{height:65vw;min-height:240px}.media-thumbs{display:flex}}
.media-frame[data-kind=video]{background:#20211f}
.media-frame video[data-fit=contain]{object-fit:contain;background:#20211f}
.availability-calendar{border:1px solid var(--line);border-radius:4px;background:#faf6e9}.availability-calendar summary{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 11px;cursor:pointer;font-size:11px;list-style:none}.availability-calendar summary::-webkit-details-marker{display:none}.availability-calendar summary>span:after{content:' ▾';color:var(--muted)}.availability-calendar:not([open]) summary>span:after{content:' ▸'}.availability-calendar summary b{font-size:9px;font-weight:500;text-align:right}.availability-calendar summary b[data-kind=avail]{color:#587148}.availability-calendar summary b[data-kind=closed]{color:#a75443}.availability-calendar summary b[data-kind=checking]{color:var(--muted)}.calendar-toolbar{display:grid;grid-template-columns:34px 1fr 34px;align-items:center;padding:8px 10px 6px;border-top:1px solid var(--line)}.calendar-toolbar strong{text-align:center;font-size:12px;font-weight:500}.calendar-toolbar button{height:28px;border:1px solid var(--line);border-radius:3px;background:var(--card);cursor:pointer}.calendar-toolbar button:disabled{opacity:.35}.calendar-week,.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:3px;padding-inline:10px}.calendar-week{padding-block:4px;color:var(--muted);font-size:8px;text-align:center}.calendar-grid{padding-bottom:9px;min-height:154px}.calendar-day{display:grid;place-items:center;gap:0;min-width:0;height:31px;padding:2px 0;border:1px solid transparent;border-radius:3px;background:#e5ebdc;color:#4f6447;cursor:pointer;font-size:10px;line-height:1}.calendar-day small{font-size:7px}.calendar-day.status-closed,.calendar-day.status-expired{background:#eee9de;color:#aaa294}.calendar-day.status-restricted{background:#f1e4cb;color:#8d6f42}.calendar-day.status-unknown{background:#eee9de;color:#aaa294}.calendar-day:disabled{cursor:not-allowed}.calendar-day.is-in-range{border-color:#738365}.calendar-day.is-checkin{box-shadow:inset 0 0 0 1px #53664a}.calendar-loading{grid-column:1/-1;align-self:center;text-align:center;color:var(--muted);font-size:9px}.calendar-error{color:#a75443}.calendar-legend{display:flex;gap:12px;padding:7px 10px 9px;border-top:1px dotted var(--line);color:var(--muted);font-size:8px}.calendar-legend span{display:flex;align-items:center;gap:4px}.calendar-legend i{width:8px;height:8px;border-radius:2px;background:#e5ebdc}.calendar-legend .is-closed{background:#eee9de}.calendar-legend .is-restricted{background:#f1e4cb}
.calendar-day.is-confirmed-avail{border-color:#53664a;background:#dce9d3;color:#40583a}.calendar-day.is-confirmed-closed{border-color:#b96b58;background:#f1ddd5;color:#9c4d3d}
.room-header>.header-tools{display:flex;align-items:center;justify-self:end;gap:12px}.room-header>.header-tools .back{white-space:nowrap}
.quote .fee{display:flex;justify-content:space-between;margin:7px 0 0;font-size:10px;color:var(--muted)}.quote .fee strong{color:var(--ink);font-weight:500}
.guest-feedback blockquote{margin:0 0 15px;padding:18px 22px;border-left:3px solid var(--red);background:#faf6e9}.guest-feedback blockquote p{font-size:15px;color:var(--ink)}.guest-feedback blockquote footer{font-size:11px;color:var(--muted)}.guest-feedback>a,.source-booking{display:inline-block;margin-top:10px;color:var(--red);text-decoration:none;border-bottom:1px solid currentColor;padding-bottom:4px}.transport-figure{margin:24px 0}.transport-figure img{display:block;max-width:100%;max-height:520px;object-fit:contain;border:1px solid var(--line);border-radius:4px;background:white}.transport-figure figcaption{margin-top:8px;color:var(--muted);font-size:11px}.source-description{margin-bottom:52px;padding:18px 20px;border:1px solid var(--line);border-radius:4px;background:#faf6e9}.source-description summary{cursor:pointer;color:var(--red)}.source-description p{margin:14px 0;color:var(--muted);font-size:12px;line-height:1.8}
.guest-feedback .review-rating{margin-right:16px;font-weight:600}.guest-feedback blockquote+blockquote{margin-top:10px}
.booking .guest-feedback.booking-reviews{display:block;margin:-15px -15px 22px;padding:14px;border:1px solid var(--line);border-radius:5px;background:#f7f0df}.booking .guest-feedback h2{margin:5px 0 15px;font-size:19px;font-weight:400}.booking .guest-feedback blockquote{padding:12px 13px}.booking .guest-feedback blockquote p{font-size:12px;line-height:1.6}.booking .guest-feedback a{font-size:11px;line-height:1.6}
.currency-select{margin-top:10px}.currency-note{font-size:11px;line-height:1.5;color:#716f64;margin:5px 0 14px}
