/* The domain's photographs set the colours; the page stays light in every OS theme. */
:root {
  color-scheme:light;
  --forest:#284638; --deep:#18271e; --cream:#f7f7f2; --paper:#eeeee7;
  --copper:#625642; --ink:#283c30; --muted:#505b50; --line:#bec4b7;
  --on-forest:#fff; --gold:#e5e7db; --surface:#fff; --field:#fff;
  --reserved:#dbded5; --reserved-ink:#535c50; --sage:#e5e9de;
  --serif:'Cormorant Garamond',Georgia,serif; --sans:'DM Sans',Arial,sans-serif;
  --gutter:clamp(24px,4.5vw,86px); --rail:24px; --header:104px;
  --ease:cubic-bezier(.22,1,.36,1); --motion:500ms;
  font-family:var(--sans); color:var(--ink); background:var(--cream);
  scroll-behavior:smooth; scroll-snap-type:y proximity;
}
*,*::before,*::after { box-sizing:border-box; }
body { margin:0; font-size:16px; line-height:1.6; }
body.modal-open { overflow:hidden; }
button,input,select,textarea { font:inherit; color:inherit; }
button,a,input,select,textarea { -webkit-tap-highlight-color:transparent; }
button,a { touch-action:manipulation; }
button { border:0; cursor:pointer; }
button:disabled { cursor:default; opacity:.45; }
a { color:inherit; text-decoration:none; }
img { display:block; max-width:100%; height:auto; }
figure,p,ul,dl { margin:0; }
ul { padding:0; list-style:none; }
h1,h2,h3 { margin:0; font-weight:400; }
h1,h2 { font-family:var(--serif); line-height:.96; letter-spacing:-.045em; }
h1 { font-size:clamp(68px,11.5vw,182px); }
h2 { font-size:clamp(48px,5.8vw,88px); }
h3 { font-family:var(--serif); font-size:28px; line-height:1.1; }
p + p { margin-top:1em; }
strong { font-weight:600; }
:focus-visible { outline:3px solid var(--forest); outline-offset:5px; }
.hero :focus-visible,.site-header.is-hero :focus-visible { outline-color:#fff; }
::selection { background:var(--forest); color:#fff; }
[hidden] { display:none!important; }
.sr-only,.icon-defs { position:absolute; width:1px; height:1px; overflow:hidden; clip-path:inset(50%); white-space:nowrap; }
.skip-link { position:fixed; top:10px; left:20px; transform:translateY(-180%); z-index:100; background:var(--cream); color:var(--forest); padding:12px 20px; }
.skip-link:focus { transform:none; }
.icon { width:24px; height:24px; fill:none; stroke:currentColor; stroke-width:1.4; stroke-linecap:round; stroke-linejoin:round; flex:none; }
.icon.reverse { transform:rotate(180deg); }
.text-link { display:inline-flex; align-items:center; gap:18px; padding:10px 0; font-size:16px; background:transparent; line-height:1.5; }
.text-link .icon { transition:transform 250ms var(--ease); }
.button { display:inline-flex; align-items:center; justify-content:center; gap:25px; padding:17px 24px; min-height:56px; background:var(--forest); color:#fff; font-size:16px; line-height:1.4; transition:transform 120ms var(--ease),background-color 200ms; }
.button-cream { background:var(--cream); color:var(--forest); }
.button:active { transform:scale(.97); }
.icon-button { display:inline-flex; justify-content:center; align-items:center; width:48px; height:48px; background:var(--paper); border-radius:50%; flex:none; transition:transform 250ms,background-color 250ms,color 250ms; }
.actions { display:flex; align-items:center; gap:30px; flex-wrap:wrap; margin-top:30px; }

.site-header { position:fixed; z-index:30; top:0; left:0; right:0; height:var(--header); padding:8px var(--gutter); display:flex; align-items:center; justify-content:space-between; gap:25px; background:var(--cream); transition:background-color 200ms,color 200ms,transform 280ms cubic-bezier(.25,1,.5,1); }
.site-header.is-away:not(:focus-within) { transform:translateY(-100%); }
.site-header.is-hero { background:transparent; color:#fff; }
.brand { display:block; flex:none; background:transparent; }
.brand img { width:220px; height:auto; aspect-ratio:466/137; object-fit:contain; }
.site-header.is-hero .brand img { filter:brightness(0) invert(1); }
.header-links { display:none; gap:32px; margin-left:auto; font-size:16px; }
.header-links a { padding:12px 0; }
.header-book { display:flex; align-items:center; gap:15px; padding:13px 17px; font-size:14px; background:var(--forest); color:#fff; }
.site-header.is-hero .header-book { background:var(--cream); color:var(--forest); }
.section-nav { position:fixed; z-index:35; right:3px; top:50%; transform:translateY(-50%); display:flex; flex-direction:column; color:var(--forest); }
.section-nav.is-hero { color:#fff; }
.section-nav a { position:relative; display:grid; place-items:center; width:26px; height:32px; }
.section-nav a::after { content:''; width:5px; height:5px; background:currentColor; border-radius:50%; opacity:.4; transition:opacity 300ms,transform 300ms var(--ease); }
.section-nav a[aria-current]::after { opacity:1; transform:scale(1.7); }
.section-nav a span { position:absolute; right:35px; padding:7px 13px; background:var(--forest); color:#fff; white-space:nowrap; font-size:14px; opacity:0; visibility:hidden; pointer-events:none; transform:translateX(5px); transition:opacity 250ms,transform 250ms,visibility 250ms; }
.section-nav a:focus-visible span { opacity:1; visibility:visible; transform:none; }

.panel { position:relative; min-height:100svh; padding:calc(var(--header) + 28px) calc(var(--gutter) + var(--rail)) 64px var(--gutter); display:flex; align-items:center; scroll-snap-align:start; }
.section-inner { width:100%; max-width:1760px; margin-inline:auto; min-width:0; }
.section-heading { display:flex; flex-direction:column; align-items:start; gap:25px; margin-bottom:36px; }
.section-heading > p,.gallery-intro { max-width:33ch; }
.gallery-intro p + p { margin-top:12px; font-size:14px; }
.reveal { opacity:1; transform:none; }
@media (prefers-reduced-motion:no-preference) {
  .motion-ready .reveal:not(.is-visible) { opacity:0; transform:translateY(16px); }
  .motion-ready .reveal { transition:opacity var(--motion) var(--ease),transform var(--motion) var(--ease); transition-delay:var(--delay,0ms); }
  .hero-content { animation:arrive 1.1s var(--ease) both; }
  .hero-poster img { animation:open-view 1.8s var(--ease) both; }
  @keyframes arrive { from { opacity:0; transform:translateY(24px); } to { opacity:1; transform:none; } }
  @keyframes open-view { from { transform:scale(1.045); } to { transform:scale(1); } }
}

.hero { color:#fff; background:var(--deep); isolation:isolate; padding-top:calc(var(--header) + 62px); padding-bottom:120px; min-height:100svh; }
.hero-poster,.hero-video,.youtube-background,.hero-shade { position:absolute; inset:0; width:100%; height:100%; z-index:-3; overflow:hidden; }
.hero-poster img { width:100%; height:100%; object-fit:cover; object-position:50% 50%; }
.hero-video { object-fit:cover; opacity:0; transition:opacity 600ms; }
.hero-video.is-playing { opacity:1; }
.youtube-background { z-index:-2; }
.youtube-background iframe { position:absolute; width:max(100%,177.78svh); height:max(100%,56.25vw); left:50%; top:50%; transform:translate(-50%,-50%); border:0; pointer-events:none; opacity:0; transition:opacity 600ms; }
.youtube-background.is-playing iframe { opacity:1; }
/* Neutral photographic scrim preserves sunlight. taste-skill-ignore gradient */
.hero-shade { z-index:-1; background:linear-gradient(90deg,rgba(0,0,0,.44),rgba(0,0,0,.12) 62%,rgba(0,0,0,.04)); } /* taste-skill-ignore: neutral photo scrim */
.hero-content { align-self:center; }
.hero h1 { max-width:10ch; }
.hero-intro { margin-top:28px; max-width:38ch; font-size:18px; line-height:1.55; }
.hero-discover { color:#fff; }
.hero-discover span { font-size:24px; }
.hero-bottom { position:absolute; bottom:28px; left:var(--gutter); right:calc(var(--gutter) + var(--rail)); display:flex; align-items:center; justify-content:space-between; gap:15px; font-size:14px; }
.hero-bottom > span:nth-child(2) { display:none; }
.hero-bottom a { display:grid; place-items:center; width:48px; height:48px; font-size:28px; }
.desktop-break { display:none; }

.about { background:var(--cream); }
.about-layout { display:grid; gap:36px; }
.about-photo { position:relative; margin-left:calc(-1 * var(--gutter)); margin-right:calc(-1 * (var(--gutter) + var(--rail))); }
.about-photo img { width:100%; height:360px; object-fit:cover; object-position:50% 50%; }
.about-photo figcaption { margin:14px var(--gutter) 0; font-size:14px; }
.about-copy > p { margin-top:26px; max-width:43ch; }
.key-figures { display:grid; grid-template-columns:1fr 1fr; gap:26px; margin:30px 0 20px; }
.key-figures dt { font-family:var(--serif); font-size:48px; line-height:1; letter-spacing:-.035em; }
.key-figures dt span { font-size:26px; }
.key-figures dd { font-size:14px; margin:7px 0 0; }

.equipment { background:var(--paper); }
.equipment-intro { display:grid; gap:30px; align-items:center; }
.equipment-intro p { margin-top:25px; max-width:37ch; }
.equipment-photo img { width:100%; height:300px; object-fit:cover; object-position:50% 58%; }
.equipment-photo figcaption { font-size:14px; margin-top:12px; }
.amenities { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:30px 18px; padding:30px 20px; margin-top:35px; background:var(--sage); }
.amenities li { display:flex; flex-direction:column; align-items:center; gap:16px; font-size:14px; text-align:center; }
.amenities .icon { width:52px; height:52px; stroke-width:1.1; color:var(--forest); }
.equipment-columns { display:grid; gap:12px; margin-top:30px; align-items:start; }
.equipment-group { background:var(--cream); padding:19px 20px; }
.equipment-group h3 { font-family:var(--serif); font-size:26px; line-height:1.15; }
.equipment-columns ul { padding-top:22px; font-size:16px; }
.equipment-columns li + li { margin-top:12px; }

.photos { background:var(--surface); }
.photo-filters { display:flex; gap:10px; flex-wrap:wrap; margin:0 0 30px; }
.photo-filters button { background:var(--paper); padding:12px 18px; min-height:48px; font-size:14px; transition:background-color 250ms,color 250ms,transform 250ms; }
.photo-filters button[aria-pressed="true"] { background:var(--forest); color:#fff; }
.photo-filters button:active { transform:scale(.96); }
.photo-mosaic { display:grid; grid-template-columns:minmax(0,1fr); gap:24px; }
.gallery-item { position:relative; display:block; overflow:hidden; background:var(--paper); }
.gallery-item img { width:100%; aspect-ratio:1.25; object-fit:cover; transition:transform 500ms var(--ease); }
.gallery-item > span { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:15px 18px; font-size:16px; background:var(--paper); }
.gallery-item .icon { width:22px; height:22px; }
.photo-dining img { object-position:center 48%; }
.photo-reception img { object-position:center 54%; }

.availability { background:var(--cream); }
.booking-layout { display:grid; gap:38px; }
.booking-copy > p { margin-top:24px; max-width:39ch; }
.booking-photo { margin-top:26px; }
.booking-photo img { width:100%; aspect-ratio:1.9; object-fit:cover; }
.booking-copy .quiet-note { font-size:14px; }
.booking-copy .text-link { margin-top:8px; }
.calendar-card { padding:24px 12px; background:var(--surface); min-width:0; }
.calendar-controls { display:flex; align-items:center; justify-content:space-between; gap:10px; margin-bottom:24px; }
#month-select { border:0; padding:8px 2px; background:var(--surface); font-size:16px; font-weight:500; max-width:calc(100% - 110px); }
.calendar-table { width:100%; table-layout:fixed; border-collapse:collapse; text-align:center; font-size:14px; }
.calendar-table th { padding:3px 0 16px; font-weight:400; }
.calendar-table td { height:43px; padding:1px; }
.calendar-table button { border:1px solid transparent; background:transparent; color:var(--ink); width:100%; min-height:41px; padding:5px 0; font-size:14px; font-variant-numeric:tabular-nums; }
.calendar-table button.is-today { border-color:var(--forest); }
.calendar-table button:disabled { opacity:.65; color:var(--reserved-ink); text-decoration:line-through; background:transparent; }
.calendar-table button.is-booked { background:var(--reserved); color:var(--reserved-ink); }
.calendar-table button.is-between { background:var(--sage); }
.calendar-table button.is-selected { background:var(--forest); color:#fff; }
.calendar-table button:focus-visible { outline-offset:-2px; }
.calendar-legend { display:flex; gap:20px; flex-wrap:wrap; margin-top:25px; font-size:14px; }
.calendar-legend span { display:flex; gap:8px; align-items:center; }
.calendar-legend i { width:12px; height:12px; display:block; }
.legend-booked { background:var(--reserved); }
.legend-selected { background:var(--forest); }
.date-selection { min-height:48px; margin-top:22px; padding:14px; background:var(--cream); font-size:14px; line-height:1.5; }
.calendar-actions { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:12px; margin-top:20px; }
.calendar-actions .button { width:100%; padding-inline:12px; }
#clear-dates { font-size:14px; }

.pricing { background:var(--paper); }
.pricing-banner { margin-bottom:38px; }
.pricing-banner img { width:100%; height:270px; object-fit:cover; object-position:50% 54%; }
.pricing-layout { display:grid; gap:32px; }
.price-grid { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:25px 20px; }
.price-item { padding:0; }
.price-item h3 { font:500 16px var(--sans); margin-bottom:8px; }
.price-amount { display:block; font-family:var(--serif); color:var(--ink); font-size:28px; line-height:1.1; }
.price-unit { display:block; margin-top:6px; font-size:14px; }
.pricing-note { font-size:14px; margin-top:25px; max-width:48ch; }
.included { background:var(--cream); padding:28px; }
.included h3 { font-size:28px; margin-bottom:20px; }
.included li { font-size:16px; margin-top:8px; }
.included p { font-size:14px; margin-top:20px; }
.included .text-link { margin-top:18px; }

.reviews { background:var(--sage); }
.review-layout { display:grid; gap:35px; }
.review-photo img { width:100%; aspect-ratio:1.4; object-fit:cover; }
.review-carousel { max-width:540px; margin:28px 0 0; }
.review-slide { min-height:100px; }
.review-example { display:inline-block; font-size:14px; color:var(--ink); padding:10px 13px; background:var(--cream); margin-bottom:20px; }
.review-slide blockquote { font-family:var(--serif); font-size:24px; line-height:1.3; margin:0; }
.review-author { font-size:14px; margin-top:20px; }
.review-rating { margin-bottom:14px; }
.review-controls { display:flex; align-items:center; justify-content:start; gap:24px; margin-top:24px; }
#review-count { font-size:14px; font-variant-numeric:tabular-nums; }

.contact { background:var(--surface); }
.contact-heading { display:flex; flex-direction:column; gap:25px; margin-bottom:40px; }
.contact-heading p { max-width:40ch; }
.contact-layout { display:grid; gap:36px; }
.contact-name { font-family:var(--serif); font-size:28px; margin-bottom:15px; }
.contact-details address { font-style:normal; display:flex; flex-direction:column; align-items:start; gap:8px; font-size:18px; }
.contact-details address > span { font-size:16px; margin-bottom:8px; }
.contact-details address a { overflow-wrap:anywhere; }
.map-preview { margin-top:30px; width:100%; height:220px; position:relative; background:var(--paper); overflow:hidden; }
.map-preview button { position:relative; width:100%; height:100%; display:flex; align-items:center; justify-content:center; gap:15px; background:transparent; font-size:16px; }
.map-preview button > .icon { width:36px; height:36px; }
.map-small { display:block; font-size:14px; margin-top:5px; }
.map-preview iframe { position:relative; width:100%; height:100%; border:0; background:var(--paper); }
.map-link { font-size:14px; margin-top:8px; }
.form-grid { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:20px; }
.field { min-width:0; }
.field label { display:block; margin-bottom:7px; font-size:14px; font-weight:500; }
.field label span { font-size:14px; font-weight:400; }
.field input,.field textarea { display:block; width:100%; min-width:0; border:1px solid var(--line); border-radius:0; background:var(--field); padding:12px; font-size:16px; min-height:48px; line-height:1.4; }
.field input[type="date"] { min-width:0; padding-inline:8px; font-size:16px; }
.field textarea { resize:vertical; min-height:110px; }
.field textarea::placeholder { color:var(--muted); opacity:1; font-size:14px; }
.field-wide { grid-column:1/-1; }
.field input[aria-invalid="true"],.field textarea[aria-invalid="true"] { border-color:var(--forest); }
.form-note { font-size:14px; line-height:1.5; margin:16px 0 22px; }
.form-feedback { font-size:16px; margin-top:20px; }
.form-feedback:empty { display:none; }
.form-feedback a { display:inline-block; margin-top:10px; text-decoration:underline; text-underline-offset:4px; }
.form-feedback.is-error { color:#813b25; }
.honeypot { position:absolute; width:1px; height:1px; overflow:hidden; clip-path:inset(50%); }
.site-footer { margin-top:52px; padding-top:12px; display:flex; flex-direction:column; gap:20px; font-size:14px; }
.footer-brand { display:flex; flex-direction:column; align-items:flex-start; gap:4px; min-width:0; align-self:start; }
.footer-brand img { width:220px; height:auto; aspect-ratio:466/137; object-fit:contain; flex:none; }
.footer-brand-copy { display:grid; gap:4px; min-width:0; }
.footer-name { font-family:var(--serif); font-size:24px; line-height:1.15; letter-spacing:-.02em; }
.footer-location { font-size:14px; color:var(--muted); }
.footer-end { display:flex; align-items:center; justify-content:space-between; gap:24px; }
.footer-copyright { font-size:14px; white-space:nowrap; }
.footer-top { display:inline-flex; align-items:center; gap:12px; min-height:44px; font-size:14px; }
.footer-top .icon { width:20px; height:20px; transform:rotate(-90deg); }

.lightbox { max-width:none; max-height:none; width:100vw; height:100svh; padding:75px 24px 24px; margin:0; border:0; background:var(--deep); color:#fff; }
.lightbox::backdrop { background:var(--deep); }
.lightbox[open] { display:flex; flex-direction:column; justify-content:center; }
.lightbox figure { min-height:0; display:flex; flex-direction:column; align-items:center; flex:1; justify-content:center; }
.lightbox figure img { min-height:0; max-height:calc(100svh - 210px); max-width:100%; width:auto; height:auto; object-fit:contain; touch-action:pan-y pinch-zoom; user-select:none; }
.lightbox figcaption { font-size:16px; text-align:center; padding-top:18px; }
.lightbox-close { position:absolute; right:24px; top:18px; }
.lightbox-controls { display:flex; align-items:center; justify-content:center; gap:25px; padding-top:20px; font-size:14px; }
.lightbox .icon-button { background:#35473a; color:#fff; }
.lightbox :focus-visible { outline-color:#fff; }

@media (hover:hover) and (pointer:fine) {
  .section-nav a:hover span { opacity:1; visibility:visible; transform:none; }
  .button:hover { background:#3a5741; color:#fff; transform:translateY(-2px); }
  .text-link:hover .icon { transform:translateX(6px); }
  .gallery-item:hover { color:var(--forest); }
  .gallery-item:hover img { transform:scale(1.025); }
  .icon-button:not(:disabled):hover { background:var(--forest); color:#fff; transform:scale(1.06); }
  .photo-filters button:hover { background:var(--forest); color:#fff; }
  .calendar-table button:not(:disabled):hover { border-color:var(--forest); }
}
@media (min-width:768px) {
  :root { --header:120px; --rail:30px; scroll-snap-type:y mandatory; }
  :root.relaxed-snap { scroll-snap-type:y proximity; }
  .panel { min-height:100svh; height:100svh; padding-top:calc(var(--header) + 30px); padding-bottom:65px; }
  .panel.is-tall { height:auto; }
  .brand img { width:248px; height:auto; }
  .header-book { font-size:16px; gap:24px; padding:15px 22px; }
  .section-nav { right:9px; }
  .section-nav a { width:30px; height:34px; }
  .hero { padding-top:calc(var(--header) + 35px); padding-bottom:105px; }
  .hero h1 { font-size:clamp(90px,11.5vw,182px); }
  .hero-intro { font-size:20px; }
  .hero-bottom > span:nth-child(2) { display:block; }
  .desktop-break { display:initial; }
  .section-heading { flex-direction:row; align-items:end; justify-content:space-between; gap:45px; margin-bottom:40px; }
  .about { padding-left:0; }
  .about-layout { grid-template-columns:minmax(0,1.18fr) minmax(0,.82fr); align-items:center; gap:clamp(34px,5vw,80px); }
  .about-photo { margin:0; }
  .about-photo img { height:65svh; min-height:490px; object-position:43% 50%; }
  .about-photo figcaption { margin-left:var(--gutter); }
  .about-copy h2 { font-size:clamp(46px,5.6vw,86px); }
  .equipment-intro { grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr); gap:6vw; }
  .equipment-photo img { height:340px; }
  .amenities { grid-template-columns:repeat(7,minmax(0,1fr)); gap:15px; padding:34px 24px; }
  .equipment-columns { grid-template-columns:1fr 1fr 1fr; gap:18px; }
  .photo-mosaic { grid-template-columns:repeat(2,minmax(0,1fr)); gap:28px; }
  .gallery-item img { aspect-ratio:1.4; }
  .photo-landscape { grid-column:1/-1; }
  .photo-landscape img { aspect-ratio:2.5; object-position:50% 48%; }
  .photo-mosaic.is-filtered .photo-landscape { grid-column:auto; }
  .photo-mosaic.is-filtered .photo-landscape img { aspect-ratio:1.4; }
  .photo-reception img { object-position:50% 55%; }
  .booking-layout { grid-template-columns:minmax(0,1fr) minmax(0,1fr); align-items:center; gap:7vw; }
  .booking-copy h2 { font-size:clamp(52px,6.2vw,90px); }
  .calendar-card { width:100%; max-width:580px; margin-left:auto; padding:30px; }
  .calendar-table td { height:52px; }
  .calendar-table button { min-height:48px; font-size:16px; }
  .calendar-actions .button { width:auto; }
  .pricing-banner img { height:280px; object-position:50% 52%; }
  .pricing-layout { grid-template-columns:minmax(0,1.2fr) minmax(0,.8fr); gap:5vw; }
  .price-grid { gap:32px; }
  .price-amount { font-size:28px; }
  .review-layout { grid-template-columns:1.05fr 1fr; gap:6vw; align-items:center; }
  .review-photo img { height:56svh; min-height:420px; aspect-ratio:auto; object-position:55% 50%; }
  .review-copy h2 { font-size:clamp(48px,5.6vw,86px); }
  .review-slide blockquote { font-size:24px; }
  .contact-heading { flex-direction:row; justify-content:space-between; align-items:end; gap:35px; }
  .contact-layout { grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr); gap:8vw; }
  .contact-details address { font-size:20px; }
  .site-footer { flex-direction:row; align-items:center; justify-content:space-between; gap:32px; }
  .footer-end { gap:40px; }
  .lightbox { padding:65px 80px 24px; }
}
@media (min-width:1100px) {
  .header-links { display:flex; }
  .site-header { gap:24px; }
  .hero-content { padding-top:12px; }
  .hero h1 { line-height:.88; }
  .hero-intro { margin-top:35px; }
  .key-figures { gap:28px 40px; }
  .about-copy { padding-block:30px; }
  .amenities .icon { width:56px; height:56px; }
  .equipment-photo img { height:360px; }
  .calendar-card { padding:36px; }
  .price-grid { grid-template-columns:repeat(3,minmax(0,1fr)); }
}
@media (max-width:420px) {
  .brand img { width:clamp(154px,50vw,194px); height:auto; }
  .header-book { padding:12px; font-size:14px; gap:10px; }
  .header-book .icon { width:19px; height:19px; }
  .hero h1 { font-size:clamp(54px,15vw,63px); }
  .hero .actions { align-items:start; gap:18px; }
  .hero .button { font-size:14px; padding-inline:18px; }
  .hero-intro { font-size:16px; }
  .about-photo img { height:310px; }
  .form-grid { grid-template-columns:minmax(0,1fr); }
  .field-wide { grid-column:auto; }
  .calendar-card { padding-inline:8px; }
  .price-amount { font-size:26px; }
  .photo-filters { gap:8px; }
  .photo-filters button { padding:12px 13px; }
}
@media (prefers-reduced-motion:reduce) {
  :root { scroll-behavior:auto; scroll-snap-type:y proximity; }
  *,*::before,*::after { animation:none!important; transition:none!important; scroll-behavior:auto!important; }
  .reveal { opacity:1!important; transform:none!important; }
  .hero-video,.youtube-background { display:none!important; }
}
@media print {
  :root { scroll-snap-type:none; }
  .panel { height:auto; min-height:0; padding:25px; break-inside:avoid; }
  .site-header,.section-nav,.hero-video,.youtube-background,.hero-bottom,.map-preview,.lightbox { display:none; }
  .hero { min-height:500px; }
  .reveal { opacity:1!important; transform:none!important; }
}

/* WordPress integration and real, expandable guest reviews. */
.d64-v2 { padding:0; }
.preview-ribbon { position:relative; z-index:45; padding:12px 24px; background:#284638; color:#fff; font:14px var(--sans); }
.preview-ribbon a { margin-left:20px; text-decoration:underline; }
.review-expand,.review-write { font-size:14px; }
.review-write { margin-top:18px; }
.review-slide blockquote { overflow-wrap:anywhere; font-size:24px; }
.price-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }

/* Full album, guest review page and mobile navigation. */
.mobile-menu-open { display:none; }
.mobile-menu { width:100vw; max-width:none; height:100dvh; max-height:none; border:0; margin:0; padding:20px; background:var(--cream); color:var(--ink); overscroll-behavior:contain; }
.mobile-menu[open] { display:flex; flex-direction:column; gap:24px; }
.mobile-menu-heading { display:flex; justify-content:space-between; align-items:center; gap:12px; }
.mobile-menu-heading p { font-size:16px; }
.mobile-menu .text-link { min-height:44px; }
.mobile-menu nav { display:grid; gap:2px; }
.mobile-menu nav a { font:28px/1.15 var(--serif); min-height:46px; padding:8px 0; }
.mobile-menu .button { margin-top:auto; flex-shrink:0; }
.album-launch { margin-top:32px; }
.photo-album { width:100vw; max-width:none; height:100dvh; max-height:none; border:0; margin:0; padding:0; background:var(--cream); color:var(--ink); overscroll-behavior:contain; }
.photo-album::backdrop { background:var(--deep); }
.album-browser { max-width:1440px; margin:auto; padding:24px var(--gutter) 48px; }
.album-heading { position:sticky; top:0; z-index:2; display:flex; justify-content:space-between; align-items:start; gap:24px; margin-bottom:28px; padding-block:12px; background:var(--cream); }
.album-heading h2 { font-size:clamp(30px,4vw,56px); line-height:1.05; letter-spacing:-.025em; }
.album-heading h1 { font-size:clamp(48px,7vw,100px); }
.album-heading p { margin-top:16px; max-width:44ch; }
.album-close { min-height:48px; padding:12px; gap:10px; background:var(--forest); color:#fff; flex:none; }
.album-close span { font-size:24px; line-height:1; }
.album-filters { margin-bottom:16px; }
.album-result { font-size:14px; margin-bottom:24px; }
.album-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:24px; }
.album-photo { display:block; min-width:0; overflow:hidden; background:var(--paper); }
.album-photo img { width:100%; aspect-ratio:1.35; object-fit:cover; transition:transform 220ms var(--ease); }
.album-photo > span { display:flex; justify-content:space-between; align-items:start; gap:12px; padding:14px; font-size:14px; }
.album-photo > span > span { flex:none; font-size:20px; }
.album-viewer figure { margin:16px 0; }
.album-full-image { width:100%; height:min(65dvh,760px); object-fit:contain; touch-action:pan-y pinch-zoom; user-select:none; }
.album-viewer figcaption { margin-top:16px; text-align:center; font-size:16px; }
.album-controls { display:flex; justify-content:center; align-items:center; gap:24px; }
.album-back { min-height:48px; }
.is-viewing .album-heading > div { display:none; }
.is-viewing .album-heading { justify-content:end; margin-bottom:0; }
.visitor-document { scroll-snap-type:none; scroll-padding-top:0; }
.visitor-page { background:var(--cream); }
.visitor-header,.visitor-main,.visitor-footer { width:100%; max-width:1600px; margin:auto; padding-inline:var(--gutter); }
.visitor-header { display:flex; align-items:center; justify-content:space-between; gap:20px; padding-block:16px; }
.visitor-home { min-height:48px; }
.visitor-main { padding-block:32px 80px; }
.review-page-layout { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:7vw; }
.review-page-intro h1 { font-size:clamp(54px,6.5vw,100px); }
.review-page-intro > p { margin-top:24px; max-width:39ch; }
.review-page-photo { margin-top:32px; }
.review-page-photo img { width:100%; height:340px; object-fit:cover; }
.review-page-intro > a { margin-top:16px; }
.review-form-panel { padding:32px; background:var(--surface); min-width:0; }
.review-form-panel h2 { font-size:36px; letter-spacing:-.025em; }
.review-help { font-size:16px; margin-top:16px; }
#guest-review-form { display:grid; gap:24px; margin-top:28px; }
.field-hint { font-size:14px; margin-top:7px; }
.review-consent { display:flex; align-items:start; gap:12px; min-height:44px; padding-block:8px; cursor:pointer; font-size:14px; }
.review-consent input { width:20px; height:20px; margin:2px 0 0; flex:none; accent-color:var(--forest); }
#guest-review-form .form-note { margin:0; }
#review-feedback:not(:empty) { padding:18px; background:var(--sage); margin-top:24px; }
#review-feedback.is-error { background:var(--paper); }
.visitor-footer { display:flex; justify-content:space-between; gap:20px; padding-block:24px; font-size:14px; }
.album-page .visitor-main { padding-top:8px; }
.album-page .album-browser { padding-inline:0; }
@media (max-width:1000px) {
  .album-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .review-page-layout { gap:32px; }
  .review-form-panel { padding:24px; }
}
@media (max-width:767px) {
  :root { --gutter:20px; --rail:0px; --header:88px; scroll-snap-type:none; }
  .section-nav { display:none; }
  .panel { min-height:0; padding:64px var(--gutter); scroll-snap-align:none; }
  .hero { min-height:100svh; padding-top:calc(var(--header) + 38px); padding-bottom:110px; }
  .site-header { height:var(--header); gap:16px; }
  .brand img { width:clamp(154px,50vw,194px); height:auto; }
  .nav-ready .mobile-menu-open { display:inline-flex; align-items:center; justify-content:center; gap:12px; min-height:48px; padding:10px 0 10px 16px; background:transparent; font-size:16px; color:inherit; }
  .mobile-menu-open span { font-size:22px; }
  .nav-ready .site-header .header-book { display:none; }
  h2 { font-size:clamp(42px,12vw,58px); }
  .hero h1 { font-size:clamp(54px,15vw,76px); }
  .hero-bottom { right:var(--gutter); }
  .about-photo { margin-inline:calc(-1 * var(--gutter)); }
  .about-photo img { height:320px; }
  .section-heading { gap:20px; margin-bottom:28px; }
  .contact-heading { gap:20px; margin-bottom:32px; }
  .contact-layout { gap:32px; }
  .form-grid { grid-template-columns:minmax(0,1fr); }
  .calendar-card { padding:22px 6px; }
  .calendar-table td { height:48px; }
  .calendar-table button { min-height:46px; }
  .map-preview { height:190px; }
  .gallery-item > span { padding:14px; font-size:14px; }
  .album-launch .button { width:100%; justify-content:space-between; gap:10px; }
  .album-heading { gap:16px; }
  .album-heading h2 { font-size:30px; max-width:10ch; }
  .album-heading p { font-size:14px; }
  .album-close { padding:10px; font-size:14px; gap:6px; }
  .album-grid { gap:16px; }
  .album-photo > span { padding:10px; font-size:14px; }
  .album-photo img { aspect-ratio:1; }
  .album-filters { gap:8px; }
  .album-filters button { font-size:14px; padding:12px; }
  .album-full-image { height:55dvh; }
  .visitor-header { padding-block:10px; gap:16px; }
  .visitor-home { font-size:14px; gap:8px; }
  .visitor-main { padding-top:24px; padding-bottom:48px; }
  .review-page-layout { grid-template-columns:minmax(0,1fr); gap:32px; }
  .review-page-intro h1 { font-size:56px; }
  .review-page-photo { margin-top:24px; }
  .review-page-photo img { height:180px; }
  .review-page-intro > a { font-size:14px; }
  .review-form-panel { padding:24px 20px; }
  .review-form-panel h2 { font-size:32px; }
  #guest-review-form .button { width:100%; }
  .visitor-footer { flex-wrap:wrap; font-size:14px; }
}

/* Motion is brief, optional and never delays keyboard navigation. */
.gallery-item > span,.album-photo > span { position:relative; }
.icon-button { transition:transform 120ms var(--ease),background-color 200ms,color 200ms; }
.icon-button:active { transform:scale(.96); }
.keyboard-motion *,.keyboard-motion *::before,.keyboard-motion *::after { transition:none!important; animation:none!important; }
.keyboard-motion .reveal { opacity:1!important; transform:none!important; }
.motion-ready .reveal.is-filtering { transition:none; }
@media (hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference) {
  .album-photo:hover img { transform:scale(1.025); }
}
@media (max-width:767px) and (prefers-reduced-motion:no-preference) {
  .motion-ready .reveal:not(.is-visible) { transform:translateY(8px); }
  .motion-ready .reveal { transition-duration:350ms; transition-delay:0ms; }
}

/* Header entrance moves its contents, independently of the scrolling bar. */
.header-links a { position:relative; }
.header-links a::after { content:""; position:absolute; left:0; right:0; bottom:6px; height:2px; background:currentColor; transform:scaleX(0); transform-origin:left; transition:transform 180ms var(--ease); }
.header-links a:focus-visible::after { transform:scaleX(1); }
.header-book .icon { transition:transform 180ms var(--ease); }
@media (prefers-reduced-motion:no-preference) {
  .site-header > .brand,.site-header > .header-links,.site-header > .header-book,.site-header > .mobile-menu-open { animation:header-arrive 280ms var(--ease) both; }
  .site-header > .header-links,.site-header > .mobile-menu-open { animation-delay:40ms; }
  .site-header > .header-book { animation-delay:80ms; }
  @keyframes header-arrive { from { opacity:0; transform:translateY(8px); } to { opacity:1; transform:none; } }
}
@media (hover:hover) and (pointer:fine) {
  .header-links a:hover::after { transform:scaleX(1); }
  .header-book:hover .icon { transform:translateX(4px); }
}
@media (max-width:767px) {
  .panel { scroll-margin-top:var(--header); }
}

/* The signature closes the last section, with a small page-bottom inset. */
.contact { flex-direction:column; align-items:stretch; padding-bottom:24px; }
.contact-inner { display:flex; flex-direction:column; flex:1 0 auto; }
.contact-inner > .contact-heading,.contact-inner > .contact-layout,.contact-inner > .site-footer { flex-shrink:0; }
.contact .site-footer { margin-top:auto; padding-top:52px; }

/* The horizontal wordmark keeps the return link usable on small visitor pages. */
@media (max-width:767px) {
  .visitor-header { gap:16px; }
  .visitor-header .brand img { width:clamp(146px,44vw,180px); }
  .visitor-header .visitor-home { min-width:0; max-width:146px; text-align:right; }
}

/* Availability stays public; days are information, never booking controls. */
.calendar-table .calendar-day { display:flex; align-items:center; justify-content:center; min-height:41px; width:100%; padding:5px 0; font-size:14px; font-variant-numeric:tabular-nums; }
.calendar-table .calendar-day.is-booked { background:var(--reserved); color:var(--reserved-ink); }
.calendar-table .calendar-day.is-past { opacity:.65; text-decoration:line-through; }
.calendar-table .calendar-day.is-today { outline:1px solid var(--forest); outline-offset:-1px; }
.legend-free { background:var(--surface); outline:1px solid var(--forest); }
@media(max-width:767px) { .calendar-table .calendar-day { min-height:46px; } }

/* A single phone number in Contact, with the location alongside it. */
.contact-layout { align-items:start; }
.contact-details address .contact-phone { display:inline-flex; align-items:center; min-height:48px; margin-top:12px; font-size:28px; line-height:1.2; }
.contact-map .map-preview { margin-top:0; }
