:root { --paper:#f5f3ee; --ink:#2c2e28; --muted:#74746a; --line:#d9d8ce; --olive:#545e45; --header-h:86px; font-family:'DM Sans',Arial,sans-serif; color:var(--ink); background:var(--paper); }
* { box-sizing:border-box; }
html { scroll-behavior:smooth; scroll-padding-top:28px; }
body { margin:0; }
[x-cloak] { display:none!important; }
a { color:inherit; text-decoration:none; }
button,input,select,textarea { font:inherit; color:inherit; }
button { cursor:pointer; background:none; border:0; }
button:disabled { cursor:not-allowed; opacity:.45; }
button,a,input,select,textarea { -webkit-tap-highlight-color:transparent; }
button:focus-visible,a:focus-visible { outline:2px solid var(--olive); outline-offset:6px; }
img { display:block; max-width:100%; }
svg { display:block; }
p,h1,h2,h3 { margin:0; }
em { font-family:'Cormorant Garamond',Georgia,serif; font-weight:400; }
.sr-only { position:absolute; width:1px; height:1px; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; }
.skip-link { position:fixed; top:12px; left:12px; padding:12px 18px; background:var(--paper); z-index:11000; transform:translateY(-200%); }
.skip-link:focus { transform:translateY(0); }
.site-header { height:86px; padding:0 4.3%; display:flex; align-items:center; justify-content:space-between; gap:32px; }
.brand { display:block; width:196px; flex-shrink:0; }
.brand-wordmark { display:block; font-family:'Times New Roman',Times,'Liberation Serif',serif; font-size:32px; font-weight:400; font-style:normal; line-height:1; letter-spacing:.045em; white-space:nowrap; }
.brand-tagline { display:block; margin-top:8px; font-size:9px; font-weight:400; line-height:1.3; letter-spacing:.055em; text-transform:uppercase; color:var(--muted); white-space:nowrap; }
.site-header nav { display:flex; align-items:center; gap:34px; font-size:13px; }
.site-header nav a,.header-contact { padding:12px 0; }
.site-header nav a:hover,.header-contact:hover { color:var(--olive); }
.header-contact { font-size:13px; }
.split-hero { --split-a:25%; --split-b:50%; --split-c:75%; position:relative; min-height:560px; height:calc(100svh - 158px); max-height:900px; isolation:isolate; overflow:hidden; color:#fffdf7; background:#252a25; }
.hero-panel { position:absolute; inset:0; overflow:hidden; transition:clip-path .65s cubic-bezier(.22,.68,0,1); }
.hero-panel-breakfast { clip-path:polygon(0 0,calc(var(--split-a) + 6%) 0,calc(var(--split-a) - 6%) 100%,0 100%); }
.hero-panel-restaurant { clip-path:polygon(calc(var(--split-a) + 6%) 0,calc(var(--split-b) + 6%) 0,calc(var(--split-b) - 6%) 100%,calc(var(--split-a) - 6%) 100%); }
.hero-panel-room { clip-path:polygon(calc(var(--split-b) + 6%) 0,calc(var(--split-c) + 6%) 0,calc(var(--split-c) - 6%) 100%,calc(var(--split-b) - 6%) 100%); }
.hero-panel-coffee { clip-path:polygon(calc(var(--split-c) + 6%) 0,100% 0,100% 100%,calc(var(--split-c) - 6%) 100%); }
.hero-photo { position:absolute; inset:0; overflow:hidden; }
.hero-photo img { position:absolute; height:100%; width:38%; max-width:none; object-fit:cover; transition:transform .8s cubic-bezier(.22,.68,0,1),left .65s cubic-bezier(.22,.68,0,1),width .65s cubic-bezier(.22,.68,0,1),filter .65s ease; }
.hero-photo::after { content:''; position:absolute; inset:0; background:#151b176e; transition:opacity .65s ease; }
.hero-panel-breakfast .hero-photo img { left:0; object-position:66% 56%; }
.hero-panel-breakfast .hero-photo::after { background:linear-gradient(90deg,#24251d99,#24251d55); }
.hero-panel-restaurant .hero-photo img { left:calc(var(--split-a) - 6%); object-position:40% 50%; }
.hero-panel-restaurant .hero-photo::after { background:linear-gradient(90deg,#182118a6,#18211870); }
.hero-panel-room .hero-photo img { left:calc(var(--split-b) - 6%); object-position:50% 50%; }
.hero-panel-room .hero-photo::after { background:#111b1985; }
.hero-panel-coffee .hero-photo img { right:0; width:38%; object-position:0% 50%; }
.hero-panel-coffee .hero-photo::after { background:linear-gradient(180deg,#111b1926 0%,#111b194d 30%,#111b1980 50%,#111b1973 58%,#111b1940 72%,#111b191a 100%); }
.hero-copy { position:absolute; top:50%; transform:translateY(-50%); width:19.2%; display:flex; flex-direction:column; align-items:flex-start; transition:left .65s cubic-bezier(.22,.68,0,1),width .65s cubic-bezier(.22,.68,0,1); }
.hero-panel-breakfast .hero-copy { left:3.3%; width:calc(var(--split-a) - 6.6%); }
.hero-panel-restaurant .hero-copy { left:calc(var(--split-a) + 2.9%); width:calc(var(--split-b) - var(--split-a) - 5.8%); }
.hero-panel-room .hero-copy { left:calc(var(--split-b) + 2.9%); width:calc(var(--split-c) - var(--split-b) - 5.8%); }
.hero-panel-coffee .hero-copy { left:calc(var(--split-c) + 2.9%); width:calc(100% - var(--split-c) - 5.8%); }
.eyebrow { font-size:10px; line-height:1.5; font-weight:500; text-transform:uppercase; letter-spacing:.18em; }
.hero-copy .eyebrow { color:#eee9dd; margin-bottom:25px; }
.hero-copy h2 { font-size:clamp(34px,4.6vw,80px); font-weight:400; letter-spacing:-.045em; line-height:1.04; }
.hero-copy h2 em { font-size:1em; letter-spacing:inherit; white-space:nowrap; }
.hero-panel-coffee h2 em { white-space:normal; }
.breakfast-heading em > span { display:block; }
.hero-copy .breakfast-heading { line-height:1.03; letter-spacing:-.055em; }
.breakfast-amp { display:inline-block; font-size:1.16em; line-height:.85; }
.hero-link { display:inline-flex; align-items:center; max-width:100%; min-height:44px; gap:18px; padding:12px 0; margin-top:22px; border-bottom:1px solid #fff6; color:#fffdf7; font-size:13px; font-weight:500; line-height:1.3; transition:border-color .2s; }
.hero-link svg { width:18px; height:18px; flex-shrink:0; fill:none; stroke:currentColor; stroke-width:1.2; transition:transform .25s; }
.hero-link:hover { border-color:#fffdf7; }
.hero-link:hover svg { transform:translateX(3px); }
.hero-link:focus-visible { outline-color:white; }
.hero-footnote { position:absolute; bottom:26px; left:4.3%; right:4.3%; display:flex; justify-content:space-between; font-size:9px; letter-spacing:.14em; text-transform:uppercase; color:#fff9; pointer-events:none; }
@media(min-width:761px) {
  .split-hero[data-active="breakfast"] { --split-a:29%; --split-b:52%; --split-c:76%; }
  .split-hero[data-active="restaurant"] { --split-a:23%; --split-b:53%; --split-c:76%; }
  .split-hero[data-active="room"] { --split-a:24%; --split-b:48%; --split-c:78%; }
  .split-hero[data-active="coffee"] { --split-a:24%; --split-b:49%; --split-c:72%; }
  .split-hero[data-active="breakfast"] .hero-panel-breakfast img,
  .split-hero[data-active="restaurant"] .hero-panel-restaurant img,
  .split-hero[data-active="room"] .hero-panel-room img,
  .split-hero[data-active="coffee"] .hero-panel-coffee img { transform:scale(1.045); }
  .split-hero[data-active="breakfast"] .hero-panel-breakfast .hero-photo::after,
  .split-hero[data-active="restaurant"] .hero-panel-restaurant .hero-photo::after,
  .split-hero[data-active="room"] .hero-panel-room .hero-photo::after,
  .split-hero[data-active="coffee"] .hero-panel-coffee .hero-photo::after { opacity:.84; }
}
.location-line { min-height:72px; padding:20px 4.3%; display:flex; align-items:center; justify-content:space-between; gap:24px; border-bottom:1px solid var(--line); font-size:11px; color:var(--muted); }
.location-line a { color:var(--ink); }
.location-line a span { margin-left:28px; }
.section-wrap { width:91.4%; max-width:1600px; margin:0 auto; }
.rooms-section { padding:112px 0 88px; }
.section-heading { display:flex; justify-content:space-between; align-items:flex-end; gap:36px; }
.section-heading .eyebrow { color:var(--muted); margin-bottom:27px; }
.section-heading h2,.coffee-copy h2 { font-size:clamp(40px,4.4vw,66px); font-weight:400; letter-spacing:-.055em; line-height:1.08; }
.section-heading h2 em,.coffee-copy h2 em { font-size:1.13em; }
.section-heading > p { color:var(--muted); font-size:14px; line-height:1.8; padding-bottom:8px; }
.room-search { display:grid; grid-template-columns:1.25fr 1fr 1.05fr 1.2fr; gap:0; align-items:center; border-top:1px solid var(--line); border-bottom:1px solid var(--line); margin-top:48px; padding:22px 0; }
.room-search .search-field { position:relative; display:block; border-right:1px solid var(--line); padding:0 23px; min-width:0; }
.room-search .search-field:first-child { padding-left:0; }
.search-field-label { font-size:10px; color:var(--muted); display:block; margin-bottom:8px; }
.room-search input,.room-search select { width:100%; padding:3px 0; height:29px; border:0; background:transparent; border-radius:0; font-size:14px; outline-offset:5px; color:var(--ink); min-width:0; }
.room-search input:focus-visible,.room-search select:focus-visible { outline:1px solid var(--olive); }
.search-field-trigger { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:3px 0; width:100%; height:29px; text-align:left; font-size:14px; }
.search-field-trigger svg { width:18px; height:18px; flex-shrink:0; fill:none; stroke:var(--olive); stroke-width:1.4; stroke-linecap:round; stroke-linejoin:round; }
.search-field-trigger[aria-expanded="true"] { color:var(--olive); }
.search-field-trigger:focus-visible { outline-offset:5px; outline-width:1px; }
.search-picker { position:absolute; top:calc(100% + 20px); left:0; width:336px; max-width:calc(100vw - 44px); padding:22px; z-index:50; background:#faf9f5; border:1px solid var(--line); border-radius:3px; box-shadow:0 12px 36px #2c2e2814; }
.calendar-heading { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:20px; }
.calendar-heading h3 { font-family:'Cormorant Garamond',Georgia,serif; font-size:26px; font-weight:400; letter-spacing:-.025em; }
.calendar-navigation { display:flex; gap:4px; }
.calendar-navigation button { display:grid; place-items:center; width:32px; height:32px; padding:6px; border-radius:50%; }
.calendar-navigation button:hover:not(:disabled) { background:#eaece3; }
.calendar-navigation svg { width:18px; height:18px; fill:none; stroke:var(--olive); stroke-width:1.4; stroke-linecap:round; stroke-linejoin:round; }
.calendar-weekdays,.calendar-days { display:grid; grid-template-columns:repeat(7,minmax(0,1fr)); gap:4px; }
.calendar-weekdays { color:var(--muted); font-size:10px; text-align:center; margin-bottom:9px; }
.calendar-weekdays span { padding:6px 0; }
.calendar-day { padding:0; aspect-ratio:1; border:1px solid transparent; border-radius:50%; font-size:12px; font-variant-numeric:tabular-nums; }
.calendar-day:hover:not(:disabled),.calendar-day:focus-visible { background:#eaece3; outline-offset:1px; }
.calendar-day.is-today { border-color:#a7ae98; }
.calendar-day.is-outside-month { color:#929488; }
.calendar-day:disabled { color:#b1b1a7; opacity:1; }
.calendar-day.is-selected,.calendar-day.is-selected:hover,.calendar-day.is-selected:focus-visible { background:var(--olive); color:#fffdf7; border-color:var(--olive); }
.calendar-footer { display:flex; align-items:center; justify-content:space-between; margin-top:16px; padding-top:14px; border-top:1px solid var(--line); font-size:10px; color:var(--muted); }
.calendar-footer button { padding:5px 0; font-size:11px; color:var(--olive); }
.search-time-picker { left:23px; width:300px; }
.time-picker-heading { margin-bottom:16px; }
.time-picker-heading h3 { font-size:13px; font-weight:500; }
.time-picker-heading span { display:block; margin-top:7px; color:var(--muted); font-size:10px; }
.time-options { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); align-content:start; gap:7px; max-height:240px; overflow-y:auto; overscroll-behavior:contain; scrollbar-width:thin; scrollbar-color:#b3b8a6 transparent; padding:3px; }
.time-options button { padding:11px 7px; min-height:40px; border:1px solid var(--line); border-radius:2px; font-size:12px; font-variant-numeric:tabular-nums; }
.time-options button:hover,.time-options button:focus-visible { border-color:var(--olive); background:#eaece3; outline-offset:0; outline-width:1px; }
.time-options button.is-selected,.time-options button.is-selected:hover,.time-options button.is-selected:focus-visible { color:#fffdf7; background:var(--olive); border-color:var(--olive); }
.search-button { margin-left:24px; display:flex; align-items:center; justify-content:center; gap:10px; padding:17px 18px; background:var(--olive); color:white; font-size:12px; }
.search-button:hover:not(:disabled) { background:#414b34; }
.search-messages { color:#9c4933; font-size:12px; line-height:1.6; }
.search-messages p { padding-top:14px; }
.room-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:42px 28px; margin-top:40px; }
.room-item { min-width:0; }
.room-photo-button { position:relative; display:block; padding:0; width:100%; overflow:hidden; }
.room-photo-button img { width:100%; height:auto; aspect-ratio:1.36; object-fit:cover; transition:transform .6s ease; }
.room-photo-button:hover:not(:disabled) img { transform:scale(1.025); }
.room-caption { display:flex; justify-content:space-between; align-items:flex-start; gap:12px; padding-top:19px; }
.room-caption h3 { font-size:21px; font-weight:500; letter-spacing:-.045em; }
.room-caption p { font-size:11px; color:var(--muted); margin-top:6px; }
.text-link { display:inline-flex; align-items:center; justify-content:space-between; gap:24px; padding:5px 0 7px; border-bottom:1px solid currentColor; font-size:12px; line-height:1.5; }
.text-link span { font-size:18px; line-height:1; }
.text-link:hover { color:var(--olive); }
.room-caption .text-link { margin-top:0; }
.room-availability { color:#985940; font-size:11px; margin-top:15px; }
.room-availability.is-free { color:#567149; }
.next-slot { margin-top:10px; font-size:11px; }
.coffee-section { display:grid; grid-template-columns:1fr 1fr; background:#e8e8dd; }
.coffee-picture { overflow:hidden; }
.coffee-picture img { width:100%; height:100%; min-height:570px; object-fit:cover; object-position:40% 50%; }
.coffee-copy { display:flex; align-items:flex-start; justify-content:center; flex-direction:column; padding:80px 11%; }
.coffee-copy .eyebrow { color:var(--muted); margin-bottom:34px; }
.coffee-copy p:not(.eyebrow) { font-size:14px; line-height:1.8; color:#66685b; margin-top:25px; }
.coffee-copy .text-link { margin-top:42px; min-width:206px; }
.menu-line { display:flex; align-items:center; justify-content:space-between; gap:28px; padding:55px 0; border-bottom:1px solid var(--line); }
.menu-line p { font-size:clamp(22px,2.6vw,38px); letter-spacing:-.045em; }
.site-footer { padding:64px 0 24px; }
.footer-top { display:grid; grid-template-columns:1fr 1fr 1fr; gap:28px; font-size:12px; line-height:1.8; color:var(--muted); }
.footer-top nav { display:flex; align-items:flex-end; flex-direction:column; gap:9px; color:var(--ink); }
.footer-bottom { display:flex; justify-content:space-between; gap:28px; margin-top:64px; color:var(--muted); font-size:9px; }
.overflow-hidden { overflow:hidden; }
.vs-booking-dialog { border-radius:4px; font-family:'DM Sans',Arial,sans-serif; }
.vs-booking-header h2 { font-weight:500; letter-spacing:-.045em; }
.vs-booking-eyebrow { font-weight:500; color:var(--olive); }
.vs-booking-field input,.vs-booking-field select,.vs-booking-field textarea { font-family:'DM Sans',Arial,sans-serif; border-radius:2px; }
.vs-booking-primary { background:var(--olive); border-radius:2px; }
.vs-booking-primary:hover:not(:disabled) { background:#414b34; }
.vs-booking-coffee-cta { border-radius:2px; }
.legacy-dialog { position:fixed; inset:0; z-index:10000; padding:24px; background:#151715b8; display:flex; align-items:center; justify-content:center; }
.legacy-dialog-inner { position:relative; width:min(840px,100%); max-height:calc(100dvh - 48px); background:#fff; overflow-y:auto; padding:28px; }
.legacy-dialog-inner h2 { font-size:26px; font-weight:500; margin:0 48px 18px 0; }
.legacy-close { position:absolute; top:20px; right:20px; }
.legacy-dialog-inner iframe { border:0; width:100%; min-height:650px; }
@media(max-width:1050px) {
  .site-header { padding:0 32px; }
  .split-hero { min-height:540px; }
  .hero-copy .eyebrow { font-size:9px; }
  .rooms-section { padding-top:80px; }
  .room-search .search-field { padding:0 15px; }
  .search-time-picker { left:15px; }
  .search-button { margin-left:16px; padding:17px 12px; font-size:11px; }
  .room-grid { gap:24px; }
  .room-caption { flex-direction:column; }
  .room-caption .text-link { margin-top:5px; }
  .coffee-copy { padding:56px 9%; }
  .coffee-picture img { min-height:490px; }
}
@media(max-width:760px) {
  .site-header { height:74px; padding:0 22px; gap:20px; }
  .brand { width:124px; }
  .brand-wordmark { font-size:21px; letter-spacing:.03em; }
  .brand-tagline { margin-top:5px; font-size:8px; letter-spacing:.1em; }
  .brand-tagline-separator { display:none; }
  .brand-tagline-services { display:block; margin-top:2px; font-size:8px; letter-spacing:.045em; }
  .site-header nav { gap:20px; font-size:11px; }
  .header-contact { display:none; }
  .split-hero { height:1120px; min-height:1120px; max-height:none; }
  .hero-panel { transition:none; }
  .hero-panel-breakfast { clip-path:polygon(0 0,100% 0,100% 20.5%,0 29.5%); }
  .hero-panel-restaurant { clip-path:polygon(0 29.5%,100% 20.5%,100% 45.5%,0 54.5%); }
  .hero-panel-room { clip-path:polygon(0 54.5%,100% 45.5%,100% 70.5%,0 79.5%); }
  .hero-panel-coffee { clip-path:polygon(0 79.5%,100% 70.5%,100% 100%,0 100%); }
  .hero-photo img { width:100%!important; height:35%; left:0!important; transform:none; transition:none; }
  .hero-panel-breakfast .hero-photo img { top:0; object-position:50% 65%; }
  .hero-panel-restaurant .hero-photo img { top:20.5%; object-position:50% 50%; }
  .hero-panel-room .hero-photo img { top:45.5%; object-position:50% 50%; }
  .hero-panel-coffee .hero-photo img { top:70.5%; object-position:0% 15%; }
  .hero-panel-coffee .hero-photo::after { background:linear-gradient(180deg,#111b1926 0%,#111b1940 62%,#111b1980 75%,#111b1990 85%,#111b1933 100%); }
  .hero-copy { width:calc(100% - 64px)!important; left:32px!important; transform:none; transition:none; }
  .hero-panel-breakfast .hero-copy { top:4.2%; }
  .hero-panel-restaurant .hero-copy { top:33%; align-items:flex-end; text-align:right; }
  .hero-panel-room .hero-copy { top:56.5%; }
  .hero-panel-coffee .hero-copy { top:82.5%; align-items:flex-end; text-align:right; }
  .hero-copy .eyebrow { margin-bottom:12px; }
  .hero-copy h2 { font-size:clamp(54px,14.5vw,80px); }
  .hero-copy .breakfast-heading { font-size:clamp(44px,12.5vw,68px); }
  .hero-link { margin-top:12px; }
  .hero-footnote { display:none; }
  .location-line { font-size:10px; min-height:62px; padding:18px 22px; }
  .location-line a span { margin-left:12px; }
  .section-wrap { width:calc(100% - 44px); }
  .rooms-section { padding:66px 0; }
  .section-heading { align-items:flex-start; flex-direction:column; gap:20px; }
  .section-heading .eyebrow { margin-bottom:20px; }
  .section-heading h2,.coffee-copy h2 { font-size:47px; }
  .section-heading > p { font-size:12px; padding:0; }
  .room-search { grid-template-columns:1fr 1fr; margin-top:30px; padding:0; }
  .room-search .search-field { padding:18px 0; border-bottom:1px solid var(--line); border-right:0; }
  .room-search .search-field:nth-child(2n) { padding-left:20px; border-left:1px solid var(--line); }
  .room-search .search-field:nth-child(3) { grid-column:1/-1; }
  .search-field-label { font-size:11px; }
  .room-search input,.room-search select { font-size:16px; padding-right:15px; height:32px; }
  .search-field-trigger { font-size:16px; height:32px; padding-right:15px; }
  .search-field-trigger svg { width:17px; height:17px; }
  .search-picker { top:calc(100% + 8px); padding:20px; }
  .search-time-picker { left:auto; right:0; }
  .search-button { grid-column:1/-1; margin:18px 0; padding:16px 18px; font-size:13px; }
  .room-grid { grid-template-columns:1fr 1fr; gap:32px 18px; margin-top:28px; }
  .room-photo-button img { aspect-ratio:1; }
  .room-caption { padding-top:14px; gap:10px; }
  .room-caption h3 { font-size:20px; }
  .room-caption p { font-size:10px; line-height:1.7; max-width:160px; }
  .room-caption .text-link { font-size:11px; }
  .coffee-section { grid-template-columns:1fr; }
  .coffee-picture img { min-height:0; height:340px; object-position:40% 56%; }
  .coffee-copy { padding:46px 32px 54px; }
  .coffee-copy .eyebrow { margin-bottom:26px; }
  .coffee-copy p:not(.eyebrow) { font-size:13px; }
  .coffee-copy .text-link { margin-top:28px; }
  .menu-line { padding:38px 0; align-items:flex-start; flex-direction:column; gap:20px; }
  .menu-line p { font-size:29px; }
  .site-footer { padding-top:40px; }
  .footer-top { grid-template-columns:1fr 1fr; font-size:11px; }
  .footer-top .brand { grid-column:1/-1; margin-bottom:10px; }
  .footer-top nav { align-items:flex-end; gap:10px; }
  .footer-bottom { margin-top:42px; }
  .vs-booking-field input,.vs-booking-field select,.vs-booking-field textarea { font-size:16px; }
}
@media(max-width:380px) {
  .site-header { padding:0 18px; }
  .site-header nav { gap:12px; font-size:10px; }
  .brand { width:114px; }
  .brand-wordmark { font-size:19px; }
  .hero-copy { left:24px!important; width:calc(100% - 48px)!important; }
  .location-line { padding:18px; gap:15px; font-size:9px; }
  .section-wrap { width:calc(100% - 36px); }
}
@media(prefers-reduced-motion:reduce) {
  html { scroll-behavior:auto; }
  *,*::before,*::after { animation:none!important; transition:none!important; }
  .split-hero[data-active] { --split-a:34%; --split-b:67%; }
  .split-hero[data-active] .hero-photo img { transform:none; }
  .split-hero[data-active] .hero-photo::after { opacity:1; }
}
