/* The two hotel editions share structure, with independent colour palettes. */
:root { color-scheme:light; font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif; }
* { box-sizing:border-box; }
html { scroll-behavior:smooth; scroll-padding-top:82px; }
body { margin:0; -webkit-text-size-adjust:100%; -webkit-font-smoothing:antialiased; }
.hotel-guide { --ink:#253a35; --muted:#586963; --accent:#216354; --deep:#153d39; --soft:#edf3ec; --paper:#fffef9; --line:#dce3d9; --warm:#ecb574; background:#e9ede7; color:var(--ink); font-size:19px; line-height:1.85; }
.theme-shuilu { --ink:#423a30; --muted:#6b6052; --accent:#8b5736; --deep:#593d2e; --soft:#f5eee1; --paper:#fffdf7; --line:#e6ddce; --warm:#eac69b; background:#ede8de; }
button,input,select { font:inherit; }
button,a,summary { -webkit-tap-highlight-color:transparent; touch-action:manipulation; }
a { color:var(--accent); text-underline-offset:4px; }
button { cursor:pointer; }
a:focus-visible,button:focus-visible,summary:focus-visible,video:focus-visible { outline:3px solid #bb7627; outline-offset:4px; }
[hidden] { display:none !important; }
h1,h2,h3,p,figure { margin:0; }
h1,h2,h3 { text-wrap:balance; }
img,video { display:block; max-width:100%; height:auto; }
img { width:100%; }
section,article,div,nav,figure { min-width:0; }
strong { font-weight:700; }
.page { width:min(100%,820px); margin:auto; background:var(--paper); }
.skip-link { position:fixed; top:-100px; left:12px; z-index:100; padding:12px; background:white; }
.skip-link:focus { top:12px; }
.masthead { display:flex; align-items:center; justify-content:space-between; gap:16px; padding:18px 32px; border-bottom:1px solid var(--line); }
.brand { display:flex; align-items:center; gap:10px; font-size:18px; line-height:1.3; font-weight:700; text-decoration:none; color:var(--ink); }
.brand img { width:38px; height:38px; border-radius:10px; }
.brand small { display:block; margin-top:4px; font-size:12px; font-weight:400; color:var(--muted); }
.masthead-phone { display:flex; align-items:center; min-height:44px; font-size:16px; white-space:nowrap; text-decoration:none; font-weight:600; }
.edition-switch { display:grid; grid-template-columns:1fr 1fr; padding:0 32px; }
.edition-switch a { padding:16px 8px 12px; border-bottom:2px solid transparent; font-size:17px; text-align:center; text-decoration:none; color:var(--muted); }
.edition-switch a[aria-current=page] { color:var(--accent); border-color:var(--accent); font-weight:700; }
.cover { padding:28px 40px 24px; background:var(--paper); }
.cover-location { font-size:14px; letter-spacing:.12em; color:var(--accent); }
.cover-location span { margin-left:14px; font-size:12px; letter-spacing:.04em; color:var(--muted); }
.cover h1 { font-size:36px; line-height:1.45; margin:10px 0 8px; letter-spacing:-.025em; }
.cover-line { margin:16px 0; font-size:31px; line-height:1.5; font-weight:500; color:var(--accent); }
.cover-intro { max-width:620px; font-size:19px; line-height:1.75; color:var(--muted); }
.offer { margin-top:20px; padding:24px; background:var(--accent); color:#fff; border-radius:14px; }
.offer-top { display:flex; align-items:baseline; justify-content:space-between; flex-wrap:wrap; gap:4px 10px; font-size:15px; color:#e8ecdf; }
.offer-top a { font-size:14px; color:#f5d6aa; white-space:nowrap; }
.price-row { display:grid; grid-template-columns:1fr 1fr; gap:18px; margin:18px 0; }
.price-row>div+div { border-left:1px solid #ffffff30; padding-left:22px; }
.price-row span { display:block; font-size:16px; color:#e0e8df; }
.price-row strong { display:block; font-size:44px; line-height:1.4; font-variant-numeric:tabular-nums; font-weight:650; }
.price-row small { font-size:17px; margin:0 3px; font-weight:400; }
.offer-perks { padding-top:14px; border-top:1px solid #ffffff30; font-size:18px; line-height:1.8; color:#fff; }
.offer-foot { margin-top:12px; color:#e1e7dd; font-size:15px; line-height:1.7; }
.offer-ask { display:block; margin-top:14px; color:#fff3d9; font-size:16px; }
.stay-numbers { display:grid; grid-template-columns:repeat(3,1fr); gap:8px; margin:20px 0; text-align:center; }
.stay-numbers span { font-size:15px; color:#f1e4d2; }
.stay-numbers span+span { border-left:1px solid #ffffff30; }
.stay-numbers strong { display:block; font-size:38px; color:white; line-height:1.35; }
.jumpbar { position:sticky; z-index:20; top:0; display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:8px; padding:10px 20px; background:var(--paper); border-block:1px solid var(--line); }
.jumpbar a { display:grid; place-items:center; min-height:48px; color:var(--ink); background:var(--soft); border:1px solid var(--line); font-size:18px; font-weight:600; text-decoration:none; border-radius:8px; }
.jumpbar a:hover,.jumpbar a:focus-visible,.jumpbar a[aria-current=location] { background:var(--accent); color:white; border-color:var(--accent); }
.cover-photo { margin:28px 40px 0; }
.cover-photo img { border-radius:10px; object-fit:contain; }
.cover-photo figcaption { font-size:13px; color:var(--muted); padding-top:10px; letter-spacing:.03em; }
.chapter { padding:48px 40px; border-bottom:1px solid var(--line); }
.chapter:nth-of-type(even) { background:var(--soft); }
.chapter-heading { margin-bottom:24px; }
.kicker { font-size:14px; letter-spacing:.09em; color:var(--accent); font-weight:600; margin-bottom:10px; }
h2 { font-size:28px; line-height:1.55; letter-spacing:-.025em; }
h3 { font-size:23px; line-height:1.5; }
.chapter>p,.disclosure-body>p,.hotel-panel>p { margin:16px 0; color:var(--muted); }
.benefits { padding:0; margin:0; list-style:none; }
.benefits li { position:relative; padding:20px 0 20px 28px; border-bottom:1px solid var(--line); }
.benefits li:last-child { border-bottom:0; padding-bottom:0; }
.benefits li::before { content:""; position:absolute; left:3px; top:30px; width:8px; height:12px; border:solid var(--accent); border-width:0 2px 2px 0; transform:rotate(45deg); }
.benefits strong { display:block; font-size:21px; margin-bottom:6px; }
.benefits span { display:block; color:var(--muted); font-size:18px; }
.hotel-picker { display:grid; grid-template-columns:1fr 1fr; gap:10px; margin:24px 0 12px; }
.hotel-picker button { padding:16px 12px; text-align:left; border:1px solid var(--line); border-radius:12px; background:var(--paper); color:var(--ink); }
.hotel-picker button strong { display:block; font-size:19px; }
.hotel-picker button small { display:block; font-size:13px; margin-top:4px; color:var(--muted); }
.hotel-picker button[aria-pressed=true] { background:var(--deep); border-color:var(--deep); color:#fff; }
.hotel-picker button[aria-pressed=true] small { color:#e4e8dc; }
.picker-status { font-size:14px; margin-bottom:24px; color:var(--muted); }
.hotel-panel { margin-top:24px; }
.hotel-panel-heading { margin-bottom:18px; }
.hotel-panel-heading h3 { font-size:28px; }
.hotel-sentence { font-size:18px; color:var(--accent); margin-top:8px; }
.photo { margin:20px 0; }
.photo img { height:auto; object-fit:contain; border-radius:10px; }
.photo figcaption { padding:10px 2px 0; font-size:15px; color:var(--muted); line-height:1.65; }
.room-facts { padding:20px; background:var(--paper); border-left:3px solid var(--accent); margin:20px 0; }
.room-facts>span { display:block; color:var(--accent); font-size:14px; }
.room-facts>strong { display:block; font-size:20px; }
.room-facts p { margin-top:8px; font-size:18px; color:var(--muted); }
.surcharge,.mobility { padding:22px; margin:24px 0; border:1px solid #d9b882; background:#fbefd9; border-radius:12px; color:#5d4021; }
.surcharge strong,.mobility strong { font-size:21px; }
.surcharge p,.mobility p { font-size:18px; line-height:1.85; margin-top:8px; }
.disclosure { margin:16px 0; border:1px solid var(--line); border-radius:12px; background:var(--paper); overflow:hidden; }
.disclosure>summary { display:flex; align-items:center; justify-content:space-between; gap:16px; min-height:62px; padding:18px 20px; font-size:19px; font-weight:650; line-height:1.55; list-style:none; cursor:pointer; }
.disclosure>summary::-webkit-details-marker,.meal-card>summary::-webkit-details-marker { display:none; }
.disclosure>summary>span { font-size:24px; font-weight:400; color:var(--accent); flex:none; }
.disclosure[open]>summary { border-bottom:1px solid var(--line); }
.disclosure[open]>summary>span { transform:rotate(45deg); }
.disclosure-body { padding:20px; }
.disclosure-body>.disclosure { border-radius:8px; }
.room+.room { margin-top:32px; padding-top:24px; border-top:1px solid var(--line); }
.room>p { color:var(--muted); margin:10px 0 16px; }
.film { width:min(100%,460px); margin:28px auto; }
.film-title { margin-bottom:14px; }
.real-label { display:inline-block; color:var(--accent); background:var(--soft); padding:3px 9px; border:1px solid var(--line); border-radius:5px; font-size:12px; letter-spacing:.03em; margin-bottom:8px; }
.film video { width:100%; aspect-ratio:9/16; object-fit:contain; background:#17211c; border-radius:10px; }
.film figcaption { font-size:17px; color:var(--muted); margin-top:12px; }
.video-file { display:inline-block; font-size:15px; padding:8px 0; }
.film-error { font-size:16px; margin-top:10px; color:#a43c28; }
.meal-clock { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); border-block:1px solid var(--line); margin:24px 0; padding:18px 0; text-align:center; }
.meal-clock span { font-size:15px; color:var(--muted); }
.meal-clock strong { display:block; font-size:23px; color:var(--ink); }
.meal-clock span+span { border-left:1px solid var(--line); }
.menu-picker { padding:18px 0; }
.menu-picker>strong { display:block; margin-bottom:14px; font-size:20px; }
.people-options { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:8px; }
.people-options button { min-width:0; min-height:48px; padding:6px; border:1px solid var(--line); border-radius:8px; color:var(--ink); background:var(--paper); font-size:18px; }
.people-options button[aria-pressed=true] { background:var(--deep); color:#fff; border-color:var(--deep); }
.menu-current { font-size:15px; margin-top:14px; color:var(--muted); }
.meal-card { border:1px solid var(--line); border-radius:10px; margin:12px 0; overflow:hidden; }
.meal-card-header { display:flex; align-items:center; justify-content:space-between; gap:10px; padding:16px; background:var(--soft); cursor:pointer; list-style:none; }
.meal-card-title span { font-size:13px; color:var(--muted); }
.meal-card-title strong { display:block; font-size:21px; line-height:1.5; }
.meal-count { font-size:14px; font-weight:500; color:var(--accent); }
.meal-count::after { content:" ＋"; }
.meal-card[open] .meal-count::after { content:" −"; }
.meal-items,.dish-list { padding:0; margin:0; list-style:none; }
.meal-item,.dish-list li { display:flex; gap:10px; padding:12px 16px; font-size:18px; line-height:1.6; border-top:1px solid var(--line); }
.meal-tag { flex:none; color:var(--accent); font-size:14px; padding-top:3px; }
.meal-name { overflow-wrap:anywhere; }
.soup { background:var(--soft); padding:16px; margin:18px 0; }
.days { padding:0; margin:24px 0; list-style:none; }
.days li { display:grid; grid-template-columns:68px minmax(0,1fr); gap:16px; padding:22px 0; border-bottom:1px solid var(--line); }
.days li>span { color:var(--accent); font-size:15px; font-weight:700; padding-top:3px; }
.days h3 { font-size:21px; }
.days p { font-size:18px; color:var(--muted); margin-top:8px; }
.outing+.outing { padding-top:24px; margin-top:24px; border-top:1px solid var(--line); }
.outing>p { color:var(--muted); margin-top:10px; font-size:18px; }
.credit { font-size:14px; line-height:1.8; overflow-wrap:anywhere; color:var(--muted); }
.note { font-size:16px; color:var(--muted); line-height:1.8; margin:18px 0; }
.travel { margin:0; }
.travel>div { display:grid; grid-template-columns:80px minmax(0,1fr); gap:16px; padding:20px 0; border-bottom:1px solid var(--line); }
.travel dt { font-weight:700; font-size:17px; color:var(--accent); }
.travel dd { margin:0; font-size:18px; color:var(--muted); }
.contact { background:var(--deep); color:#fff; padding:44px 40px; }
.contact .kicker { color:#e8c899; }
.contact>p:not(.kicker) { margin:16px 0 24px; color:#e4e9df; font-size:18px; }
.contact-number { display:block; padding:20px; background:#efd1a4; color:#283a30; text-decoration:none; border-radius:12px; margin:24px 0; text-align:center; }
.contact-number small { display:block; font-size:15px; }
.contact-number strong { display:block; font-size:32px; letter-spacing:.025em; font-variant-numeric:tabular-nums; }
.qr-card { background:white; border-radius:14px; padding:26px; color:var(--ink); text-align:center; max-width:460px; margin:24px auto 0; }
.qr-card h3 { font-size:22px; }
.qr-card p { font-size:15px; color:var(--muted); margin:10px 0; }
.qr-card a { display:block; }
.qr-card img { max-width:330px; margin:12px auto; -webkit-touch-callout:default; user-select:auto; }
.footer { padding:30px 30px 140px; text-align:center; background:var(--paper); }
.footer a { font-size:16px; }
.footer p { color:var(--muted); font-size:14px; margin:14px 0 8px; }
.footer small { color:var(--muted); font-size:12px; }
.booking-dock { position:fixed; z-index:40; bottom:0; left:50%; transform:translateX(-50%); width:min(100%,820px); display:grid; grid-template-columns:1fr 1.35fr; gap:10px; padding:10px max(14px,env(safe-area-inset-right)) calc(10px + env(safe-area-inset-bottom)) max(14px,env(safe-area-inset-left)); background:var(--paper); border-top:1px solid var(--line); }
.booking-dock a { display:flex; flex-direction:column; align-items:center; justify-content:center; min-height:58px; padding:6px 10px; text-decoration:none; line-height:1.45; border-radius:10px; }
.dock-wechat { background:var(--soft); border:1px solid var(--line); color:var(--ink); }
.dock-wechat span { font-size:18px; font-weight:600; }
.dock-wechat small { font-size:12px; color:var(--muted); }
.dock-phone { background:var(--accent); color:white; }
.dock-phone span { font-size:13px; }
.dock-phone strong { font-size:20px; font-variant-numeric:tabular-nums; letter-spacing:.03em; }
@media(max-width:600px) {
  .masthead { padding:calc(14px + env(safe-area-inset-top)) 20px 14px; }
  .edition-switch { padding:0 20px; }
  .cover { padding:20px 20px 24px; }
  .cover h1 { font-size:30px; }
  .cover-line { font-size:28px; }
  .cover-location { font-size:13px; }
  .cover-location span { font-size:11px; margin-left:10px; }
  .offer { padding:20px; margin-top:18px; }
  .price-row strong { font-size:34px; }
  .price-row small { font-size:15px; }
  .price-row>div+div { padding-left:16px; }
  .jumpbar { padding:8px 20px; }
  .jumpbar a { font-size:18px; }
  .cover-photo { margin:24px 20px 0; }
  .chapter { padding:32px 20px; }
  h2 { font-size:25px; }
  .hotel-picker { gap:8px; }
  .hotel-picker button { padding:13px 10px; }
  .hotel-picker button strong { font-size:18px; }
  .hotel-picker button small { font-size:12px; }
  .hotel-panel-heading h3 { font-size:26px; }
  .disclosure>summary { padding:16px; font-size:18px; }
  .disclosure-body { padding:16px; }
  .benefits strong { font-size:20px; }
  .film { margin:24px auto; }
  .days li { grid-template-columns:56px minmax(0,1fr); gap:12px; }
  .travel>div { grid-template-columns:70px minmax(0,1fr); gap:12px; }
  .contact { padding:38px 22px; }
  .contact-number { padding:18px 10px; }
  .contact-number strong { font-size:29px; }
  .qr-card { padding:22px 16px; }
}
@media(max-width:360px) {
  .masthead { padding-inline:16px; }
  .brand { gap:7px; font-size:17px; }
  .brand small { font-size:10px; }
  .masthead-phone { font-size:14px; }
  .cover,.chapter,.contact { padding-inline:18px; }
  .cover h1 { font-size:28px; }
  .offer { padding:16px; }
  .price-row { gap:10px; }
  .price-row>div+div { padding-left:12px; }
  .price-row strong { font-size:34px; }
  .price-row small { font-size:13px; margin:0 2px; }
  .people-options { grid-template-columns:repeat(4,minmax(0,1fr)); }
  .days li,.travel>div { grid-template-columns:1fr; gap:8px; }
  .booking-dock { gap:8px; }
  .dock-phone strong { font-size:18px; }
  .contact-number strong { font-size:26px; }
}
@media(prefers-reduced-motion:reduce) { html { scroll-behavior:auto; } }
