/* Canonical refinement tokens: documented in DESIGN.md. */
:root{--paper:#f6f3e9;--ink:#303b32;--green:#526b50;--muted:#626c5c;--line:#d6d9cb;--surface:#fffdf7;--room-surface:#ebe5d8;--error:#a43e32;--focus:#98602f;--thumb:#929f87;--thumb-hover:#657b5f;--thumb-active:#40553e;--track:#eeeee4;--page-max:1200px;--body-size:16px;--control-radius:4px}
html{scrollbar-gutter:stable;scroll-padding-top:28px}*{scrollbar-color:var(--thumb) var(--track);scrollbar-width:auto}::-webkit-scrollbar{width:12px;height:12px}::-webkit-scrollbar-track{background:var(--track)}::-webkit-scrollbar-thumb{background:var(--thumb);border:3px solid var(--track);border-radius:10px}::-webkit-scrollbar-thumb:hover{background:var(--thumb-hover)}::-webkit-scrollbar-thumb:active{background:var(--thumb-active)}
body{font-size:var(--body-size);line-height:2;color:var(--ink);line-break:strict;overflow-wrap:break-word}body:before{opacity:.07}a,button,summary,select{cursor:pointer}a:active,button:active{opacity:.8}a:focus-visible,button:focus-visible,summary:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid var(--focus);outline-offset:5px}
header{max-width:1480px;margin:auto;padding:30px 4%;min-height:112px}header .brand small{font-size:9px;letter-spacing:.14em}nav{gap:36px;font-size:14px}nav button{width:46px;height:46px;font-size:13px;background:var(--surface)}nav button:hover{background:var(--line)}
.hero{margin:0 24px;height:clamp(540px,72vh,780px);min-height:0}.hero-copy{justify-content:flex-end;align-items:flex-start;text-align:left;padding:65px 6% 112px}.hero h1{font-size:clamp(42px,5vw,74px);line-height:1.5;margin:20px 0;letter-spacing:.035em}.hero-copy p{font-size:12px;letter-spacing:.22em}.hero-copy span{font-size:16px}.hero-note{font-size:13px;right:6%;bottom:35px}.scroll{bottom:38px;left:6%;font-size:10px}.hero-shade{background:linear-gradient(180deg,transparent 15%,#15211620 40%,#172319a6)}
.wrap{max-width:var(--page-max);padding-left:48px;padding-right:48px}.about{grid-template-columns:1.15fr 1fr;gap:7%;padding-top:120px;padding-bottom:135px}.painting{min-width:0}.painting img{display:block;aspect-ratio:1559/1009;object-fit:contain}.painting p{font-size:22px;margin-top:24px}.eyebrow{font-size:12px;letter-spacing:.16em;margin-bottom:22px}h2{font-size:clamp(30px,3vw,40px);line-height:1.75}.intro p:not(.eyebrow){font-size:16px;line-height:2.25}.intro .sign{font-size:24px!important;margin-top:30px}
.room-story{max-width:1380px;margin:0 auto;padding:80px 6%;background:var(--room-surface);border-radius:0 56px 56px 0}.room-story-inner{max-width:1190px;grid-template-columns:.85fr 1.45fr;gap:7%;align-items:start}.room-story-copy{padding-top:24px;position:sticky;top:40px}.room-story-copy h2{font-size:34px;line-height:1.8}.room-story-copy>p:not(.eyebrow){font-size:16px;line-height:2.2;max-width:380px}.room-story-copy p.hand{font-size:24px}.room-story-photos{grid-template-columns:1fr 1fr;gap:18px}.room-story-photos img{aspect-ratio:1.12;border-radius:0!important}.room-story-photos img:first-child{grid-column:1/-1;aspect-ratio:1.45}.pencil-line{background:var(--green);height:2px;width:100px}
.access{padding-top:135px;padding-bottom:125px}.access .section-title{margin-bottom:55px}.map-paper{background:var(--surface);box-shadow:none}.faq{gap:8%;padding-top:85px;padding-bottom:110px}.faq .hand{font-size:22px}.questions details{padding:24px 0}.questions summary{font-size:16px;line-height:1.9;min-height:32px}.questions details p{font-size:15px;line-height:2.1;color:var(--muted);margin-bottom:0}.questions summary:hover{color:var(--green)}.questions summary::-webkit-details-marker{display:none}
.book{bottom:24px;right:32px;min-height:60px;padding:15px 30px;font-size:15px;background:var(--green);box-shadow:0 4px 18px #23351f20}.book:hover{background:var(--thumb-active)}.castle-footer p{font-size:16px}.castle-footer a{font-size:15px}.castle-footer small{font-size:12px}
.skip-link{position:fixed;top:12px;left:20px;transform:translateY(-180%);z-index:99;padding:10px 20px;background:var(--surface);color:var(--ink);border:2px solid var(--green)}.skip-link:focus{transform:translateY(0)}
/* Reservation uses the same paper, typography and control rhythm. */
.reservation{max-width:var(--page-max);padding:24px 48px 110px}.back-link{font-size:14px}.back-link:hover{text-decoration:underline}.reservation-heading{padding:45px 0 65px}.reservation-heading h1{font-size:44px;line-height:1.6}.reservation-heading>p:last-child{font-size:16px;color:var(--muted)}.booking-layout{grid-template-columns:.85fr 1.3fr;gap:7%}.booking-aside{position:sticky;top:30px;padding-top:30px}.booking-aside img{aspect-ratio:1559/1009;object-fit:contain}.booking-aside>.hand{font-size:27px}.booking-aside>p:not(.hand){font-size:15px;line-height:2.2}.preview-note{font-size:13px;color:var(--muted)}.booking-paper{padding:36px 40px 42px;background:var(--surface);border-color:var(--line);box-shadow:none}.booking-steps{gap:30px}.booking-steps li{font-size:14px;color:var(--muted)}.booking-steps [aria-current]{color:var(--green);font-weight:500}form h2,#review h2{font-size:27px;margin:30px 0 24px}form>label,.field-grid>label{font-size:15px;gap:9px;margin-bottom:24px}input,select,textarea{font-size:16px;line-height:1.6;min-height:52px;padding:13px 14px;border-radius:var(--control-radius);color:var(--ink);border-color:var(--thumb);background:white}input:hover,select:hover,textarea:hover{border-color:var(--green)}textarea{resize:none;min-height:150px;overflow-y:auto}.field-help{font-size:13px;line-height:1.9;color:var(--muted);min-height:24px}.booking-primary{background:var(--green);min-height:56px;font-size:16px;border-radius:var(--control-radius)}.booking-primary:hover{background:var(--thumb-active)}.booking-primary:disabled{background:var(--line);color:var(--muted);opacity:1;cursor:not-allowed}.booking-edit{font:15px/2 'Noto Sans JP',sans-serif;padding:8px 14px}.booking-edit:hover{text-decoration:underline}.review-notice{font-size:15px;background:var(--room-surface)}#review-list dt{font-size:14px;color:var(--muted)}#review-list dd{font-size:16px}.field-error{display:block;color:var(--error);font-size:13px;line-height:1.7;margin-top:2px}.field-error:empty{display:none}[aria-invalid=true]{border:2px solid var(--error)}.form-errors{font-size:14px;color:var(--error);margin-bottom:20px}.form-errors:empty{display:none}
@media(max-width:800px){header{padding:23px 22px;min-height:96px;align-items:center}header .brand>span{font-size:23px}header .brand small{font-size:7px}nav{gap:12px}nav button{width:44px;height:44px}.hero{margin:0 12px;height:650px;max-height:82svh;min-height:510px}.hero-copy{padding:35px 24px 120px}.hero h1{font-size:clamp(32px,6vw,48px);letter-spacing:0}.hero-copy p{font-size:10px}.hero-copy span{font-size:14px}.hero-note{left:24px;right:auto;bottom:70px;font-size:12px}.scroll{left:24px;bottom:33px}.wrap{padding-left:26px;padding-right:26px}.about{grid-template-columns:1fr;padding-top:75px;padding-bottom:80px;gap:40px}.painting{max-width:540px}.intro{max-width:540px}.intro p:not(.eyebrow){font-size:16px}h2{font-size:30px}.room-story{margin:0 12px;padding:46px 24px;border-radius:0 30px 30px 0}.room-story-inner{grid-template-columns:1fr;gap:22px}.room-story-copy{position:static;padding:0}.room-story-copy h2{font-size:29px}.room-story-copy>p:not(.eyebrow){max-width:none;margin:22px 0}.room-story-photos{gap:12px}.room-story-photos img:first-child{aspect-ratio:1.2}.access{padding-top:80px;padding-bottom:85px}.access h2{font-size:28px}.faq{grid-template-columns:1fr;gap:20px;padding-top:60px;padding-bottom:75px}.book{bottom:max(12px,env(safe-area-inset-bottom));left:16px;right:16px;justify-content:center;min-height:56px;font-size:15px}.reservation{padding:18px 22px 65px}.reservation-heading{padding:35px 0}.reservation-heading h1{font-size:31px}.booking-layout{grid-template-columns:1fr;gap:28px}.booking-aside{position:static;padding:0;grid-template-columns:120px 1fr}.booking-aside>.hand{font-size:21px}.booking-aside>p:not(.hand){font-size:14px}.preview-note{font-size:12px}.booking-paper{padding:24px 20px}.field-grid{gap:14px}.field-grid select{font-size:16px}.booking-steps{gap:24px}.booking-steps li{font-size:12px}.castle-footer{min-height:530px}.castle-footer small{font-size:11px}}
@media(max-width:390px){header{padding:20px 16px}header .brand>span{font-size:21px}.hero h1{font-size:31px}.hero-copy{padding-left:20px;padding-right:18px}.booking-aside{grid-template-columns:95px 1fr}.field-grid{grid-template-columns:1fr}.guest-counts{grid-template-columns:1fr 1fr}.booking-steps{gap:18px}.room-story-photos{grid-template-columns:1fr}.room-story-photos img:first-child{grid-column:auto}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}}
@media(forced-colors:active){*{scrollbar-color:auto}.book,.booking-primary{border:2px solid ButtonText}.field-error{color:CanvasText}}

.booking-aside{background:var(--paper)}
.reservation-heading h1,.booking-aside>.hand{ text-wrap:balance }
@media(max-width:800px){.booking-aside>.hand{font-size:19px}.reservation-heading h1{font-size:29px}}

/* Map caption retained beneath the selected illustration. */
.access .map-word{color:var(--green);margin:0 0 18px}
.map-word{font-size:48px;font-weight:600;letter-spacing:.36em;padding-left:.36em;line-height:1.3;margin:0}
@media(max-width:650px){.map-word{font-size:40px}}

/* Keep the complete futon stacks in the desktop hero crop. */
@media(min-width:801px){.hero>img{object-position:50% 100%}}

.room-story-copy h2 .keep-word{display:inline-block;white-space:nowrap}

/* Route remains aligned to the illustration at every screen width. */
.route-map{position:relative;isolation:isolate}.walking-route{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.route-underlay,.route-dots{fill:none;stroke-linecap:round;stroke-linejoin:round}.route-underlay{stroke:var(--surface);stroke-width:16}.route-dots{stroke:var(--green);stroke-width:8;stroke-dasharray:1 19}.route-start{fill:var(--green);stroke:var(--surface);stroke-width:5}.walking-time{position:absolute;left:49%;top:55%;font-family:'Noto Sans JP',sans-serif;font-size:clamp(14px,2.4vw,30px);font-weight:600;line-height:1.5;background:var(--surface);color:var(--green);border:1px solid var(--line);padding:.3em .65em;white-space:nowrap;pointer-events:none}

.map-schematic{position:absolute;bottom:12px;left:18px;background:var(--surface);color:var(--muted);font-size:12px;line-height:1.5;padding:2px 7px}

/* Override the generic last paragraph rule on section titles. */
.access .section-title>.map-word:last-child{font-size:48px;color:var(--green);text-align:center;line-height:1.3;letter-spacing:.36em;margin:0}
@media(max-width:650px){.access .section-title>.map-word:last-child{font-size:40px}}
.walking-time{left:48%;top:57%}

/* Clear route endpoints and an explicit external-map action. */
.route-start-label,.route-end-label{position:absolute;font-size:clamp(12px,1.4vw,18px);line-height:1.5;color:var(--green);background:var(--surface);padding:3px 8px;white-space:nowrap;border:1px solid var(--line)}
.route-start-label{left:72%;top:80%}.route-end-label{left:44%;top:42%}.map-open{text-align:right;margin:20px 0 0}.map-open a{display:inline-block;font-size:15px;padding:10px 0;color:var(--green);text-decoration:underline;text-underline-offset:6px}.map-open a:hover{color:var(--ink)}
.reservation{padding-top:12px}.reservation-heading{padding:18px 0 30px}.reservation-heading .eyebrow{margin-bottom:12px}.reservation-heading h1{margin:0 0 12px}.reservation-heading>p:last-child{margin:0}.booking-aside{padding-top:15px}
@media(max-width:800px){.reservation-heading{padding:18px 0 24px}.booking-aside{padding-top:0}.route-start-label{left:67%;top:83%}.route-end-label{left:44%;top:39%}.map-open{text-align:center;margin-top:14px}}

@media(max-width:800px){.route-start-label{left:auto;right:2%;top:83%;font-size:12px}.route-end-label{font-size:12px}}
