:root {
  --ink: #10221d;
  --green: #0d2922;
  --green-2: #123d32;
  --green-3: #1d5748;
  --paper: #f3efe5;
  --sun: #f2c957;
  --coral: #d98263;
  --white: #fffdf7;
  --muted: #aebbb4;
  --line: rgba(255,255,255,.18);
  --hero-surface: #1f493e;
  --hero-shade-rgb: 6,22,18;
  --room-shade-rgb: 7,24,20;
  --footer-surface: #071914;
  --paper-copy: #52615a;
  --paper-copy-strong: #4a554f;
  --footer-copy: #70827a;
  --ink-rgb: 16,34,29;
  --serif: "Songti SC", "STSong", "Noto Serif CJK SC", Georgia, serif;
  --sans: "PingFang SC", "Microsoft YaHei", Arial, sans-serif;
}

* { box-sizing: border-box; }
[hidden] { display: none !important; }
html { scroll-behavior: smooth; background: var(--green); }
body { margin: 0; color: var(--white); background: var(--green); font-family: var(--sans); font-size: 15px; line-height: 1.8; }
img { display: block; width: 100%; height: 100%; object-fit: cover; }
img[data-load-error="true"] { visibility: hidden; }
a { color: inherit; text-decoration: none; }
button { color: inherit; font: inherit; }
h1,h2,h3,p,figure,dl,dd { margin: 0; }
h1,h2,h3 { font-family: var(--serif); font-weight: 400; }
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }
.skip-link { position: fixed; z-index: 100; left: 12px; top: 12px; transform: translateY(-160%); padding: 8px 14px; background: var(--sun); color: var(--ink); }
.skip-link:focus { transform: translateY(0); }
:where(a, button, summary):focus-visible { outline: 3px solid var(--sun); outline-offset: 4px; }
.guide-page :where(a, button, summary):focus-visible,
.local-page :where(a, button, summary):focus-visible { outline-color: var(--green-3); }
.content-error { min-height: 100svh; padding: 18vh 24px 64px; display: grid; align-content: start; gap: 18px; background: var(--paper); color: var(--ink); }
.content-error > p:first-child { color: var(--green-3); font-size: 10px; font-weight: 600; letter-spacing: .2em; text-transform: uppercase; }
.content-error h1 { max-width: 640px; font-size: clamp(42px, 9vw, 88px); line-height: 1.15; }
.content-error > p:last-child { max-width: 560px; color: var(--paper-copy); }

.site-header { position: absolute; z-index: 30; width: 100%; top: 0; left: 0; color: var(--white); }
.utility-bar { height: calc(45px + env(safe-area-inset-top)); padding: env(safe-area-inset-top) 15px 0; display: flex; justify-content: space-between; align-items: center; border-bottom: 1px solid rgba(255,255,255,.55); font-size: 11px; letter-spacing: .08em; }
.utility-bar a { text-decoration: underline; text-underline-offset: 4px; }
.nav-shell { height: 72px; padding: 0 15px; display: grid; grid-template-columns: 64px 1fr 92px; align-items: center; border-bottom: 1px solid rgba(255,255,255,.32); }
.menu-button { width: 44px; height: 44px; padding: 12px 9px; display: grid; align-content: center; gap: 7px; border: 0; background: transparent; cursor: pointer; }
.menu-button span:not(.sr-only) { display: block; width: 24px; height: 1px; background: currentColor; transition: transform .25s ease; }
.menu-button span:nth-child(2) { width: 17px; }
.menu-button[aria-expanded="true"] span:first-child { transform: translateY(4px) rotate(45deg); }
.menu-button[aria-expanded="true"] span:nth-child(2) { width: 24px; transform: translateY(-4px) rotate(-45deg); }
.wordmark { min-width: 0; max-width: 100%; justify-self: center; text-align: center; display: grid; line-height: 1; }
.wordmark small { margin-bottom: 7px; font-size: 8px; letter-spacing: .25em; text-transform: uppercase; }
.wordmark strong { max-width: 100%; font-family: var(--serif); font-weight: 400; font-size: 19px; line-height: 1.12; letter-spacing: .16em; overflow-wrap: anywhere; }
.nav-guide { justify-self: end; font-size: 11px; letter-spacing: .04em; white-space: nowrap; }
.nav-guide span { color: var(--sun); font-size: 14px; }
.menu-panel { position: absolute; width: calc(100% - 30px); left: 15px; top: calc(117px + env(safe-area-inset-top)); padding: 28px; display: grid; gap: 0; background: var(--paper); color: var(--ink); box-shadow: 0 20px 50px rgba(0,0,0,.28); }
.menu-panel[hidden] { display: none; }
.menu-panel a { padding: 15px 0; border-bottom: 1px solid rgba(var(--ink-rgb),.18); font: 24px/1.2 var(--serif); }

.hero { height: 100vh; height: clamp(640px, 100svh, 940px); position: relative; overflow: hidden; background: var(--hero-surface); }
.hero-image { position: absolute; inset: 0; object-position: 52% center; }
.hero-shade { position: absolute; inset: 0; background: linear-gradient(to bottom, rgba(var(--hero-shade-rgb),.18) 0%, rgba(var(--hero-shade-rgb),.02) 26%, rgba(var(--hero-shade-rgb),.64) 67%, rgba(var(--hero-shade-rgb),.86) 100%); }
.hero-copy { position: absolute; left: 15px; right: 15px; top: calc(175px + env(safe-area-inset-top)); text-align: center; display: grid; justify-items: center; }
.eyebrow { font-size: 10px; font-weight: 600; letter-spacing: .18em; text-transform: uppercase; }
.eyebrow.light { color: rgba(255,255,255,.82); }
.hero h1 { max-width: 360px; margin-top: 16px; font-size: clamp(34px, 10.5vw, 42px); line-height: 1.28; letter-spacing: .015em; text-wrap: balance; }
.hero-copy > p:last-of-type { max-width: 335px; margin-top: 22px; color: rgba(255,255,255,.88); font-size: 13px; line-height: 1.9; }
.outline-link { margin-top: 26px; min-width: 174px; padding: 10px 18px; border: 1px solid rgba(255,255,255,.85); font-weight: 600; font-size: 12px; letter-spacing: .12em; }
.hero-index { position: absolute; bottom: 20px; left: 15px; right: 15px; font-size: 10px; letter-spacing: .14em; text-align: center; }

.section-dark { background: var(--green); color: var(--white); }
.story { padding-top: 84px; overflow: hidden; }
.portrait-stage { width: 58%; height: 535px; margin-left: 15px; position: relative; }
.portrait-stage img { object-position: 52% center; }
.portrait-stage p { position: absolute; left: calc(100% + 18px); bottom: 0; width: 130px; color: var(--muted); font-family: var(--serif); font-size: 13px; line-height: 1.5; }
.portrait-stage p span { display: block; margin-bottom: 8px; color: var(--sun); font: 10px/1 var(--sans); letter-spacing: .14em; }
.section-copy { padding: 0 15px; margin-top: 70px; }
.section-copy.compact { margin-top: 0; }
.section-label { margin-bottom: 22px; display: flex; align-items: center; gap: 12px; color: rgba(255,255,255,.74); font-size: 11px; font-weight: 600; letter-spacing: .2em; text-transform: uppercase; }
.section-label span { width: 29px; height: 1px; background: var(--sun); }
.section-label.dark { color: rgba(var(--ink-rgb),.72); }
.section-label.dark span { background: var(--green-3); }
.section-copy h2, .arrival-head h2, .closing h2, .guide-section h2, .guide-contact h2 { font-size: clamp(34px, 9vw, 42px); line-height: 1.42; letter-spacing: .01em; }
.body-copy { margin: 28px 0 0 14%; max-width: 305px; color: var(--muted); line-height: 2; }
.wide-photo { width: calc(100% - 30px); margin: 80px 15px 0; }
.wide-photo img { height: 245px; object-position: center 58%; }
.wide-photo figcaption, .guide-photo figcaption { padding-top: 12px; display: flex; justify-content: space-between; color: var(--muted); font-size: 10px; letter-spacing: .08em; }

.facts { padding: 100px 0 60px; }
.fact-list { margin-top: 52px; padding: 0 15px; }
.fact-list > div { min-height: 142px; padding: 20px 0; display: grid; grid-template-columns: minmax(0,1.25fr) minmax(0,1fr); gap: 16px; align-items: center; border-top: 1px solid var(--line); }
.fact-list > div:last-child { border-bottom: 1px solid var(--line); }
.fact-list dt { display: grid; grid-template-columns: 88px 1fr; align-items: center; }
.fact-list strong { color: rgba(242,201,87,.2); font: 84px/.9 var(--serif); letter-spacing: -.07em; }
.fact-list dt span { margin-left: -10px; font: 18px/1.5 var(--serif); }
.fact-list dd { color: var(--muted); font-size: 12px; line-height: 1.8; }

.stay { padding: 88px 0 105px; overflow: hidden; }
.room-composition { position: relative; min-height: 860px; margin-top: 52px; }
.room-main { width: calc(100% - 30px); height: 605px; margin: 0 15px; position: relative; }
.room-main img { object-position: center; }
.room-main figcaption { position: absolute; left: 0; right: 0; bottom: 0; padding: 70px 20px 20px; display: grid; gap: 3px; background: linear-gradient(transparent,rgba(var(--room-shade-rgb),.9)); }
.room-main figcaption span { font: 25px/1.3 var(--serif); }
.room-main figcaption small { color: rgba(255,255,255,.76); font-size: 11px; }
.room-inset { position: absolute; width: 67%; height: 320px; right: 0; top: 560px; padding: 12px 0 0 12px; background: var(--green); }
.room-inset img { object-position: center 78%; }
.room-inset figcaption { position: absolute; right: calc(100% + 13px); top: 44px; width: 95px; color: var(--muted); font-family: var(--serif); font-size: 13px; line-height: 1.6; }
.text-link { margin: 42px 15px 0; padding-bottom: 8px; display: flex; justify-content: space-between; border-bottom: 1px solid rgba(255,255,255,.75); font-size: 12px; letter-spacing: .08em; }
.text-link span { color: var(--sun); }

.moments { padding: 92px 0 110px; overflow: hidden; }
.moment-strip { margin-top: 54px; padding: 0 15px; display: flex; gap: 12px; overflow-x: auto; overscroll-behavior-inline: contain; scroll-snap-type: x mandatory; scrollbar-width: none; -webkit-overflow-scrolling: touch; }
.moment-strip::-webkit-scrollbar { display: none; }
.moment-strip figure { flex: 0 0 82%; scroll-snap-align: start; }
.moment-strip img { height: 455px; }
.moment-strip figure:nth-child(2) img { object-position: 55% center; }
.moment-strip figure:nth-child(3) img { object-position: 50% center; }
.moment-strip figcaption { padding-top: 13px; display: flex; justify-content: space-between; font: 19px/1.4 var(--serif); }
.moment-strip figcaption span { padding-top: 5px; color: var(--muted); font: 10px/1.4 var(--sans); letter-spacing: .12em; }

.day-entry { padding: 90px 15px 76px; color: var(--ink); background: var(--paper); }
.day-entry-photo { margin: 0; }
.day-entry-photo img { height: 330px; object-position: center 62%; }
.day-entry-photo figcaption { padding-top: 11px; color: var(--paper-copy); font-size: 10px; letter-spacing: .08em; }
.day-entry-copy { margin-top: 60px; }
.day-entry-copy h2 { font-size: clamp(34px, 9vw, 42px); line-height: 1.42; letter-spacing: .01em; }
.day-entry-copy > p:not(.section-label) { margin: 25px 0 0 15%; color: var(--paper-copy); }
.text-link.dark-link { margin: 38px 0 0; border-color: rgba(var(--ink-rgb),.55); }
.text-link.dark-link span { color: var(--coral); }

.arrival { padding: 78px 15px 100px; position: relative; color: var(--ink); background: var(--white); border-top: 1px solid rgba(var(--ink-rgb),.28); }
.arrival::before { content: ""; position: absolute; top: -1px; left: 15px; width: 92px; height: 6px; background: var(--green); }
.arrival-head > p:last-child { margin: 24px 0 0 15%; max-width: 300px; color: var(--paper-copy); }
.arrival-list { list-style: none; margin: 58px 0 0; padding: 0; border-top: 1px solid rgba(var(--ink-rgb),.28); }
.arrival-list li { min-height: 150px; padding: 26px 0; display: grid; grid-template-columns: 42px 1fr 24px; gap: 12px; border-bottom: 1px solid rgba(var(--ink-rgb),.28); }
.arrival-no { color: var(--coral); font-size: 10px; letter-spacing: .12em; }
.arrival-list h3 { margin-bottom: 8px; font-size: 26px; }
.arrival-list p { color: var(--paper-copy); font-size: 12px; line-height: 1.8; }
.arrival-list a { align-self: start; color: var(--green-3); font-size: 20px; }
.solid-link { margin-top: 34px; padding: 15px 18px; display: block; background: var(--green); color: white; text-align: center; font-size: 12px; letter-spacing: .1em; }

.closing { padding: 100px 0 90px; }
.closing-image { width: calc(100% - 30px); height: 510px; margin: 0 15px; }
.closing-image img { object-position: 58% center; }
.closing-copy { margin-top: 62px; padding: 0 15px; }
.closing-copy > p:last-child { margin-top: 22px; color: var(--muted); }
.footer { padding: 72px 15px calc(28px + env(safe-area-inset-bottom)); color: var(--white); background: var(--footer-surface); border-top: 1px solid rgba(255,255,255,.18); }
.footer-brand { display: grid; gap: 10px; }
.footer-brand small { color: var(--muted); font-size: 9px; letter-spacing: .18em; text-transform: uppercase; }
.footer-brand strong { font: 34px/1.3 var(--serif); letter-spacing: .08em; }
.footer-links { margin: 48px 0; display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }
.footer-links a { padding-bottom: 6px; border-bottom: 1px solid rgba(255,255,255,.35); font-size: 12px; }
.footer > p { color: var(--footer-copy); font-size: 9px; }

/* Guide */
.subpage-header { position: relative; background: var(--green); }
.guide-page { background: var(--paper); color: var(--ink); }
.guide-hero { padding: 74px 15px 90px; color: var(--white); background: var(--green); }
.guide-title .eyebrow { color: var(--sun); }
.guide-title h1 { margin-top: 22px; font-size: clamp(68px, 23vw, 92px); line-height: .92; letter-spacing: -.04em; }
.guide-title > p:last-child { margin: 32px 0 0 25%; color: var(--muted); line-height: 1.9; }
.guide-mosaic { position: relative; height: 660px; margin-top: 60px; }
.guide-mosaic-main { width: 79%; height: 540px; object-position: 50% center; }
.guide-mosaic-small { position: absolute; right: 0; bottom: 0; width: 50%; height: 260px; border: 10px solid var(--green); object-position: center; }
.guide-jump { display: grid; grid-template-columns: 1fr 1fr; border-bottom: 1px solid rgba(var(--ink-rgb),.3); }
.guide-jump a { min-height: 88px; padding: 19px 15px; display: grid; align-content: center; gap: 5px; border-top: 1px solid rgba(var(--ink-rgb),.3); border-right: 1px solid rgba(var(--ink-rgb),.3); font: 19px/1.2 var(--serif); }
.guide-jump a:nth-child(2n) { border-right: 0; }
.guide-jump span { color: var(--coral); font: 9px/1 var(--sans); letter-spacing: .1em; }
.guide-section { padding: 92px 15px 100px; border-bottom: 1px solid rgba(var(--ink-rgb),.22); }
.guide-section > header > p { margin-bottom: 20px; color: var(--green-3); font-size: 10px; font-weight: 600; letter-spacing: .18em; }
.guide-detail { margin-top: 54px; display: grid; grid-template-columns: 100px 1fr; gap: 20px; }
.guide-key { display: grid; align-content: start; }
.guide-key strong { color: var(--coral); font: 72px/.9 var(--serif); }
.guide-key span { margin-top: 10px; font: 13px/1.5 var(--serif); }
.guide-content { padding-top: 6px; }
.guide-content h3 { margin-bottom: 14px; font-size: 22px; }
.guide-content p { color: var(--paper-copy); font-size: 13px; line-height: 1.9; }
.guide-content a, .content-copy { margin-top: 22px; padding: 0 0 5px; display: inline-block; color: inherit; background: none; border: 0; border-bottom: 1px solid var(--green); font-size: 11px; letter-spacing: .08em; cursor: pointer; }
.guide-content .note { margin-top: 18px; padding-left: 13px; border-left: 2px solid var(--coral); }
.guide-photo { margin-top: 62px; }
.guide-photo img { height: 300px; }
.guide-section.dark-band { color: var(--white); background: var(--green); }
.guide-section.dark-band > header > p { color: var(--sun); }
.checkin-times { margin-top: 55px; }
.checkin-times > div { padding: 26px 0; display: grid; grid-template-columns: 110px 1fr; border-top: 1px solid var(--line); }
.checkin-times > div:last-child { border-bottom: 1px solid var(--line); }
.checkin-times dt { color: var(--sun); font: 38px/1 var(--serif); }
.checkin-times dd { display: grid; gap: 8px; }
.checkin-times dd strong { font-family: var(--serif); font-size: 19px; font-weight: 400; }
.checkin-times dd span { color: var(--muted); font-size: 12px; }
.guide-section.dark-band .guide-photo figcaption { color: var(--muted); }
.guide-photo.portrait { width: 75%; margin-left: auto; }
.guide-photo.portrait img { height: 520px; }
.guide-photo.detail img { height: 250px; object-position: center; }
.rule-lines { list-style: none; margin: 54px 0 0; padding: 0; }
.rule-lines li { min-height: 90px; display: flex; justify-content: space-between; align-items: center; gap: 20px; border-top: 1px solid rgba(var(--ink-rgb),.25); }
.rule-lines li:last-child { border-bottom: 1px solid rgba(var(--ink-rgb),.25); }
.rule-lines span { color: var(--paper-copy); font-size: 12px; }
.rule-lines strong { font: 18px/1.4 var(--serif); font-weight: 400; text-align: right; }
.faq-list { margin-top: 52px; border-top: 1px solid rgba(var(--ink-rgb),.28); }
.faq-list details { border-bottom: 1px solid rgba(var(--ink-rgb),.28); }
.faq-list summary { padding: 24px 36px 24px 0; position: relative; list-style: none; cursor: pointer; font: 19px/1.5 var(--serif); }
.faq-list summary::-webkit-details-marker { display: none; }
.faq-list summary::after { content: "+"; position: absolute; right: 2px; top: 22px; color: var(--coral); font: 22px/1 var(--sans); }
.faq-list details[open] summary::after { content: "−"; }
.faq-list details p { max-width: 440px; padding: 0 36px 26px 0; color: var(--paper-copy); font-size: 13px; }
.guide-contact { padding: 76px 15px 92px; background: var(--paper); border-top: 14px solid var(--sun); }
.guide-contact .section-label.dark span { height: 4px; background: var(--sun); }
.guide-contact > p:not(.section-label) { margin: 25px 0 0 15%; max-width: 300px; color: var(--paper-copy-strong); }
.contact-actions { margin-top: 40px; padding-left: 15px; display: grid; border-left: 5px solid var(--sun); }
.contact-actions a { padding: 18px 0; display: flex; justify-content: space-between; border-top: 1px solid rgba(var(--ink-rgb),.4); font: 19px/1.4 var(--serif); }
.contact-actions a:last-child { border-bottom: 1px solid rgba(var(--ink-rgb),.4); }
.contact-actions a::after { content: "↗"; font-family: var(--sans); }
.back-home { margin-top: 55px; display: inline-block; font-size: 11px; letter-spacing: .08em; }

/* Visual subpage: nearby and a day */
.local-page { background: var(--paper); color: var(--ink); }
.local-hero { padding: 75px 15px 92px; color: var(--white); background: var(--green); }
.local-hero-copy .eyebrow { color: var(--sun); }
.local-hero-copy h1 { margin-top: 22px; font-size: clamp(64px, 22vw, 90px); line-height: .94; letter-spacing: -.04em; }
.local-hero-copy > p:last-child { margin: 32px 0 0 25%; max-width: 320px; color: var(--muted); }
.local-hero-images { height: 690px; margin-top: 58px; position: relative; }
.local-hero-main { width: 76%; height: 590px; object-position: 52% center; }
.local-hero-side { position: absolute; right: 0; bottom: 0; width: 53%; height: 270px; border: 10px solid var(--green); object-position: center; }
.local-intro { padding: 92px 15px 110px; }
.local-intro-grid { display: grid; grid-template-columns: 95px 1fr; gap: 14px; }
.local-intro-grid > strong { color: rgba(217,130,99,.34); font: 78px/.9 var(--serif); letter-spacing: -.08em; }
.local-intro-grid h2, .day-plan h2, .nearby h2, .local-closing h2 { font-size: clamp(34px, 9vw, 42px); line-height: 1.42; letter-spacing: .01em; }
.local-intro-grid p { margin-top: 28px; color: var(--paper-copy); }
.local-wide-photo { margin-top: 68px; }
.local-wide-photo img { height: 270px; object-position: center 64%; }
.local-wide-photo figcaption, .day-detail figcaption, .nearby-images figcaption { padding-top: 11px; color: var(--paper-copy); font-size: 10px; letter-spacing: .08em; }
.day-plan { padding: 100px 15px 110px; }
.day-lines { list-style: none; margin: 58px 0 0; padding: 0; border-top: 1px solid var(--line); }
.day-lines li { padding: 28px 0; display: grid; grid-template-columns: 76px 1fr; gap: 18px; border-bottom: 1px solid var(--line); }
.day-lines time { color: var(--sun); font: 21px/1.3 var(--serif); }
.day-lines h3 { font-size: 23px; }
.day-lines p { margin-top: 8px; color: var(--muted); font-size: 12px; }
.day-detail { width: 78%; margin: 72px 0 0 auto; }
.day-detail img { height: 440px; object-position: 48% center; }
.day-detail figcaption { color: var(--muted); }
.nearby { padding: 100px 15px 115px; }
.nearby-list { margin-top: 58px; border-top: 1px solid rgba(var(--ink-rgb),.28); }
.nearby-list article { padding: 28px 0; display: grid; grid-template-columns: 42px 1fr; gap: 12px; border-bottom: 1px solid rgba(var(--ink-rgb),.28); }
.nearby-list article > span { color: var(--coral); font-size: 10px; }
.nearby-list article div > p:first-child { color: var(--green-3); font-size: 10px; font-weight: 600; letter-spacing: .12em; }
.nearby-list h3 { margin-top: 8px; font-size: 27px; }
.nearby-list article div > p:last-child { margin-top: 9px; color: var(--paper-copy); font-size: 12px; }
.nearby-images { margin-top: 72px; display: grid; grid-template-columns: 1fr 1fr; gap: 38px 14px; align-items: end; }
.nearby-images figure:first-child { width: 78%; grid-column: 1 / -1; }
.nearby-images figure:first-child img { height: 390px; object-position: 58% center; }
.nearby-images figure:nth-child(2) img { height: 240px; object-position: 58% center; }
.nearby-images figure:nth-child(3) img { height: 300px; object-position: 48% center; }
.nearby-images[data-image-count="1"] { display: block; }
.nearby-images[data-image-count="1"] figure:first-child { width: 78%; }
.nearby-images[data-image-count="2"] figure:last-child { grid-column: 2; }
.local-closing { padding: 100px 15px 110px; }
.local-closing figure { height: 520px; }
.local-closing figure img { object-position: center; }
.local-closing > div { margin-top: 62px; }
.local-closing > div > p:not(.section-label) { margin-top: 24px; color: var(--muted); }
.local-closing .outline-link { width: 100%; margin-top: 34px; display: block; text-align: center; }

[data-reveal] { transition: transform .8s cubic-bezier(.2,.7,.2,1), filter .8s ease; }
.reveal-ready [data-reveal]:not(.is-visible) { transform: translateY(18px); filter: saturate(.75); }
.reveal-ready [data-reveal].is-visible { transform: translateY(0); filter: saturate(1); }

@media (min-width: 700px) {
  .utility-bar, .nav-shell { padding-left: 4vw; padding-right: 4vw; }
  .nav-shell { grid-template-columns: 1fr 1fr 1fr; }
  .wordmark strong { white-space: nowrap; }
  .menu-button { justify-self: start; }
  .hero { height: 100vh; height: clamp(720px, 100svh, 900px); }
  .hero-copy { top: 200px; }
  .hero h1 { max-width: 930px; font-size: 74px; line-height: 1.15; }
  .hero-copy > p:last-of-type { max-width: 540px; font-size: 15px; }
  .portrait-stage { width: 32vw; height: 690px; margin-left: 8vw; }
  .story .section-copy { width: 50%; margin: -260px 7vw 0 auto; }
  .section-copy h2, .arrival-head h2, .closing h2, .guide-section h2, .guide-contact h2, .day-entry h2, .local-intro h2, .day-plan h2, .nearby h2, .local-closing h2 { font-size: 56px; line-height: 1.3; }
  .wide-photo { width: 48%; margin: 160px 7vw 0 auto; }
  .wide-photo img { height: 380px; }
  .facts { padding: 150px 7vw 100px; display: grid; grid-template-columns: .8fr 1.2fr; gap: 8vw; }
  .facts .section-copy, .fact-list { padding: 0; }
  .fact-list { margin-top: 0; }
  .room-composition { min-height: 870px; margin: 70px auto 0; width: 86%; }
  .room-main { width: 60%; height: 780px; margin: 0; }
  .room-inset { width: 40%; height: 430px; right: 7%; top: 230px; padding: 14px; }
  .stay .section-copy, .moments .section-copy { width: 86%; margin-left: auto; margin-right: auto; padding: 0; }
  .stay .text-link { width: 35%; margin-left: 58%; }
  .moment-strip { padding-left: 7%; padding-right: 7%; gap: 18px; }
  .moment-strip figure { flex-basis: 39%; }
  .moment-strip img { height: 610px; }
  .day-entry { padding: 130px 7vw; display: grid; grid-template-columns: 1.15fr .85fr; gap: 8vw; align-items: center; }
  .day-entry-photo img { height: 620px; }
  .day-entry-copy { margin: 0; }
  .arrival { padding: 130px 7vw; display: grid; grid-template-columns: .8fr 1.2fr; gap: 8vw; }
  .arrival::before { left: 7vw; width: 12vw; }
  .arrival-list { margin-top: 0; }
  .solid-link { grid-column: 2; }
  .closing { padding: 140px 7vw; display: grid; grid-template-columns: 1.1fr .9fr; gap: 8vw; align-items: center; }
  .closing-image { width: 100%; height: 680px; margin: 0; }
  .closing-copy { margin: 0; padding: 0; }
  .footer { padding-left: 7vw; padding-right: 7vw; }
  .guide-hero { padding: 110px 7vw 130px; display: grid; grid-template-columns: .7fr 1.3fr; gap: 8vw; align-items: center; }
  .guide-title h1 { font-size: 118px; }
  .guide-mosaic { margin-top: 0; }
  .guide-jump { grid-template-columns: repeat(6,1fr); }
  .guide-jump a { border-right: 1px solid rgba(var(--ink-rgb),.3); }
  .guide-section { padding: 130px 7vw; }
  .guide-section > header { max-width: 760px; }
  .guide-detail { grid-template-columns: 170px 520px; }
  .guide-photo { width: 58%; margin-left: auto; }
  .guide-photo img { height: 520px; }
  .checkin-times { width: 65%; }
  .guide-photo.portrait { width: 42%; }
  .rule-lines { width: 70%; margin-left: auto; }
  .guide-photo.detail { width: 50%; }
  .faq-list { width: 70%; margin-left: auto; }
  .guide-contact { padding: 116px 7vw 124px; }
  .contact-actions { max-width: 700px; }
  .local-hero { padding: 110px 7vw 130px; display: grid; grid-template-columns: .72fr 1.28fr; gap: 7vw; align-items: center; }
  .local-hero-copy h1 { font-size: 112px; }
  .local-hero-images { margin: 0; }
  .local-intro { padding: 140px 7vw; }
  .local-intro-grid { grid-template-columns: minmax(120px, 170px) minmax(0, 650px); }
  .local-intro-grid > strong { font-size: 132px; }
  .local-wide-photo { width: 62%; margin: 110px 0 0 auto; }
  .local-wide-photo img { height: 520px; }
  .day-plan { padding: 140px 7vw; display: grid; grid-template-columns: .8fr 1.2fr; column-gap: 8vw; }
  .day-lines { margin-top: 0; }
  .day-detail { grid-column: 2; width: 64%; }
  .nearby { padding: 140px 7vw; }
  .nearby-head { max-width: 760px; }
  .nearby-list { width: 68%; margin-left: auto; }
  .nearby-images { grid-template-columns: 1.08fr .92fr .92fr; gap: 2.2vw; align-items: end; }
  .nearby-images figure:first-child { width: 100%; grid-column: auto; }
  .nearby-images figure:first-child img { height: 590px; }
  .nearby-images figure:nth-child(2) img { height: 430px; }
  .nearby-images figure:nth-child(3) img { height: 510px; }
  .local-closing { padding: 140px 7vw; display: grid; grid-template-columns: 1.1fr .9fr; gap: 8vw; align-items: center; }
  .local-closing figure { height: 720px; }
  .local-closing > div { margin: 0; }
}

@media (max-width: 349px) {
  .nav-shell { grid-template-columns: 54px 1fr 82px; }
  .wordmark strong { font-size: 17px; }
  .nav-guide { font-size: 10px; }
  .hero-copy { top: calc(165px + env(safe-area-inset-top)); }
  .portrait-stage { width: 62%; }
  .fact-list dt { grid-template-columns: 73px 1fr; }
  .fact-list strong { font-size: 70px; }
  .fact-list dt span { font-size: 16px; }
  .guide-detail { grid-template-columns: 82px 1fr; }
  .guide-key strong { font-size: 60px; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
  .reveal-ready [data-reveal]:not(.is-visible) { transform: none; filter: none; }
}
