:root {
  --paper:#faf7f1; --ink:#342e27; --muted:#716759; --line:#dfd5c6;
  --surface:#f3ecdf; --gold:#866943; --gutter:clamp(24px,5vw,80px);
  font-synthesis:none;
}
* { box-sizing:border-box }
html { scroll-behavior:smooth; scroll-padding-top:100px }
body { margin:0; background:var(--paper); color:var(--ink); font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif; font-size:16px; line-height:1.6; -webkit-font-smoothing:antialiased }
a { color:inherit }
button,input,select,textarea { font:inherit }
a,button,input,select,textarea { outline-offset:5px }
:focus-visible { outline:2px solid #ad8044 }
button { cursor:pointer }
img { display:block; max-width:100%; height:auto }
figure { margin:0 }
/* Scroll moves a warm perimeter reflection; the photograph stays fully visible. */
.scroll-scene { --light-angle:0deg; --light-x:50%; --light-y:50% }
.light-stage { position:relative; isolation:isolate; padding:3px; background:#e4d7bf; box-shadow:0 22px 70px #87653712 }
.light-stage img { position:relative; z-index:1 }
.light-trace { position:absolute; inset:-2px; pointer-events:none; background:conic-gradient(from var(--light-angle),#e3d4b9 0deg,#e3d4b9 230deg,#bd9860 265deg,#fff9dc 285deg,#b68c51 302deg,#e3d4b9 330deg); z-index:0 }
.light-stage:before { content:''; position:absolute; inset:-22px; z-index:-1; pointer-events:none; opacity:.48; filter:blur(22px); background:conic-gradient(from var(--light-angle),transparent 0deg,transparent 245deg,#d1ab6580 275deg,#f7e2b5a0 290deg,transparent 325deg) }
.light-stage:after { content:''; position:absolute; inset:3px; z-index:2; pointer-events:none; mix-blend-mode:screen; opacity:.2; background:radial-gradient(ellipse at var(--light-x) var(--light-y),#ffeac2 0%,transparent 42%) }
@media(prefers-reduced-motion:reduce) { .light-trace { background:#d7c6a9 }.light-stage:before,.light-stage:after { display:none } }
header { display:flex; align-items:center; justify-content:space-between; gap:24px; padding:22px var(--gutter); background:var(--paper); color:var(--ink); border-bottom:1px solid var(--line) }
.brand { font-size:19px; font-weight:650; letter-spacing:-.6px; text-decoration:none; line-height:1.3 }
.brand span { display:block; margin-top:6px; font-size:9px; font-weight:500; letter-spacing:2.3px; color:var(--muted); text-transform:uppercase }
nav { display:flex; gap:32px; align-items:center; font-size:13px }
nav a { text-decoration:none }
nav>a:not(.button) { color:var(--muted) }
nav>a:hover { color:var(--ink) }
.button { display:inline-flex; align-items:center; justify-content:center; gap:24px; min-height:52px; padding:15px 25px; border:1px solid transparent; border-radius:999px; background:var(--ink); color:#fff; text-decoration:none; font-size:14px; font-weight:600; line-height:1.3; transition:background .2s,transform .2s,box-shadow .2s }
.button:hover { background:#554738; transform:translateY(-2px); box-shadow:0 8px 24px #00000014 }
header .button,.hero .button { background:#785b37; color:#fffaf2 }
header .button:hover,.hero .button:hover { background:#61482a }
.button.small { min-height:40px; padding:11px 19px; font-size:12px }
.button:disabled { opacity:.5; cursor:not-allowed; transform:none; box-shadow:none }
.notice { padding:8px 20px; text-align:center; font-size:11px; letter-spacing:.3px; background:var(--surface); color:var(--muted) }
.hero { background:var(--paper); color:var(--ink); padding:70px var(--gutter) 0 }
.hero-copy { max-width:1000px; margin:auto; text-align:center; padding-bottom:44px }
.eyebrow { margin:0 0 20px; font-size:11px; line-height:1.5; font-weight:650; letter-spacing:2.4px; text-transform:uppercase }
.hero .eyebrow { color:var(--gold) }
.hero h1 { font-size:clamp(52px,7.4vw,108px); line-height:1.02; letter-spacing:-.065em; font-weight:620; margin:0 0 24px }
em { font-style:normal; color:var(--muted) }
.hero h1 em { color:var(--gold) }
.intro { max-width:600px; margin:0 auto 28px; color:var(--muted); font-size:18px; line-height:1.6; letter-spacing:-.2px }
.hero-actions { display:flex; align-items:center; justify-content:center; gap:25px }
.hero-secondary { font-size:14px; text-decoration:none; color:#665139; padding:12px 0 }
.hero-secondary:hover { color:var(--ink) }
.hero-note { font-size:12px; color:var(--muted); margin:19px 0 0 }
.hero figure { max-width:1280px; margin:auto }
.hero figure img,.story img { width:100%; height:auto; aspect-ratio:auto; object-fit:contain; border-radius:0; clip-path:none }
.hero figcaption { display:flex; justify-content:space-between; gap:20px; padding:14px 0; font-size:10px; letter-spacing:1.4px; color:var(--muted) }
.hero figcaption span:first-child { color:var(--gold) }
.section { padding:100px max(var(--gutter),calc((100vw - 1240px)/2)) }
h2 { font-size:clamp(34px,4.4vw,62px); line-height:1.08; letter-spacing:-.05em; font-weight:620; margin:0 0 24px }
.section-heading { display:flex; justify-content:space-between; align-items:end; gap:40px; margin-bottom:48px }
.section-heading h2 { margin:0 }
.section-heading>p { max-width:310px; color:var(--muted); font-size:15px; margin:0 }
.experience { background:var(--paper); border-top:1px solid var(--line) }
.steps { display:grid; grid-template-columns:repeat(3,1fr); gap:48px }
.steps article { border-top:1px solid var(--line); padding-top:26px }
.steps article>span { font-size:12px; color:#847969; font-weight:650; letter-spacing:1px }
.steps h3 { font-size:23px; letter-spacing:-.6px; font-weight:600; margin:18px 0 12px }
.steps p { margin:0; color:var(--muted); font-size:15px; line-height:1.7 }
.packages-section { background:var(--paper) }
.cards { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:22px; align-items:stretch }
.card { padding:36px; border:1px solid var(--line); border-radius:18px; background:#fffdf9; display:flex; flex-direction:column; min-width:0; box-shadow:0 10px 35px #1b181003 }
.card.featured { background:#f0e6d5; color:var(--ink); border-color:#bfa57e; box-shadow:0 18px 45px #735c3410 }
.package-top,.card-body { padding:0 }
.package-top .eyebrow { display:block; color:#706553; font-size:10px; letter-spacing:1.3px; margin-bottom:18px }
.featured .package-top .eyebrow { color:var(--gold) }
.duration { display:flex; align-items:baseline; gap:9px; font-size:42px; line-height:1; font-weight:600; letter-spacing:-2px; margin:0 0 23px }
.duration span { font-size:17px; font-weight:400; letter-spacing:-.2px; color:var(--muted) }
.featured .duration span { color:var(--muted) }
.card-body { display:flex; flex-direction:column; flex:1 }
.price-heading { display:flex; flex-direction:column; gap:16px }
.price-heading h3 { margin:0; font-size:17px; font-weight:550; letter-spacing:-.3px }
.price-heading strong { font-size:54px; line-height:1; font-weight:600; letter-spacing:-3px }
.card p { margin:20px 0 0; font-size:14px; line-height:1.7; color:var(--muted); min-height:96px }
.card.featured p { color:#675b4b }
.card ul { border-top:1px solid var(--line); margin:26px 0; padding:23px 0 0; list-style:none; font-size:13px; line-height:1.6 }
.card li { position:relative; padding-left:21px; margin-bottom:10px }
.card li:before { content:'✓'; position:absolute; left:0; color:#8a7656 }
.featured ul { border-color:#d4c2a5 }
.featured li:before { color:var(--gold) }
.text-link { display:inline-flex; align-items:center; justify-content:space-between; gap:20px; font-size:14px; font-weight:550; text-decoration:none; padding:12px 0; border-bottom:1px solid #8f8777 }
.card .text-link { white-space:nowrap; gap:12px; margin-top:auto; border:1px solid #dcd7cc; border-radius:999px; padding:13px 18px; font-size:13px; justify-content:space-between; transition:background .2s }
.card .text-link:hover { background:#f1eee6 }
.featured .text-link { background:#785b37; color:#fffaf2; border-color:#785b37 }
.featured .text-link:hover { background:#61482a }
.caption { color:var(--muted); font-size:12px; line-height:1.7 }
.pricing-note { display:grid; grid-template-columns:1fr 2fr; gap:48px; border-top:1px solid var(--line); padding-top:26px; margin-top:35px; font-size:13px; color:var(--muted) }
.pricing-note strong { color:var(--ink); font-weight:550 }
.pricing-note p { margin:0 }
.story { background:var(--paper); color:var(--ink); padding:100px var(--gutter); display:grid; grid-template-columns:1.25fr 1fr; align-items:center; gap:clamp(40px,6vw,100px) }
.story>div { max-width:490px }
.story .eyebrow,.story h2 em { color:var(--gold) }
.story h2 { font-size:clamp(34px,3.8vw,56px) }
.story p:not(.eyebrow) { color:var(--muted); font-size:15px; line-height:1.75 }
.story p.caption { font-size:11px; color:var(--muted); margin-top:20px }
.story .text-link { color:#665139; border-color:#bfa57e; margin-top:8px }
.story figcaption { color:var(--muted); font-size:10px; letter-spacing:1.3px; margin-top:16px }
.booking { display:grid; grid-template-columns:1fr 1fr; gap:72px; align-items:start; background:var(--paper) }
.booking>div>p:not(.eyebrow) { font-size:15px; color:var(--muted); max-width:510px }
.booking form { padding:36px; background:#fffdf9; border:1px solid var(--line); border-radius:18px; box-shadow:0 12px 45px #00000003 }
.booking form h3 { font-size:28px; letter-spacing:-1px; font-weight:550; line-height:1.2; margin:0 0 28px }
label { display:block; font-size:13px; font-weight:500; margin:18px 0 8px }
input,select,textarea { width:100%; min-width:0; border:1px solid #d5d2cb; background:#fffdf9; color:var(--ink); padding:13px 14px; border-radius:8px; font-size:15px; line-height:1.4 }
input:focus,select:focus,textarea:focus { border-color:#95805d }
textarea { resize:vertical }
.form-row { display:grid; grid-template-columns:1fr 1fr; gap:18px }
.consent { display:block; font-size:12px; line-height:1.7; font-weight:400; margin:23px 0 }
.consent input { width:16px; height:16px; vertical-align:middle; margin:0 6px 2px 0; accent-color:#39372e }
.optional { color:var(--muted); font-weight:400 }
form small { display:block; font-size:12px; color:var(--muted) }
form .button { width:100%; margin-bottom:14px }
.trap { position:absolute; left:-10000px; width:1px; height:1px; overflow:hidden }
#form-status,#admin-status { font-size:14px }
.calendar { margin-top:22px; padding:23px; border:1px solid #dcd8cf; border-radius:12px; background:#fffefa }
.month-bar { display:flex; justify-content:space-between; align-items:center; margin-bottom:15px }
.month-bar h3 { font-size:17px; letter-spacing:-.4px; font-weight:550; margin:0 }
.month-bar button { border:0; border-radius:50%; background:#f0eee7; color:var(--ink); width:40px; height:40px }
.weekdays,.calendar-days { display:grid; grid-template-columns:repeat(7,minmax(0,1fr)); gap:5px }
.weekdays { text-align:center; font-size:11px; color:var(--muted); margin-bottom:10px }
.calendar-days { grid-template-rows:repeat(6,42px) }
#calendar-status { min-height:3.2em }
.calendar-days button { min-height:42px; padding:6px 0; border:1px solid transparent; border-radius:6px; background:#f0eee7; color:var(--ink); font-size:13px }
.calendar-days button:hover:not(:disabled),.calendar-days button.selected { background:#785b37; color:#fff }
.calendar-days button:disabled { background:#f8f7f3; color:#aaa69c; cursor:default }
.calendar-days button.unavailable { background:repeating-linear-gradient(45deg,#e5e2db,#e5e2db 3px,#f5f3ed 3px,#f5f3ed 7px); text-decoration:line-through }
.calendar small,#calendar-status { font-size:11px; color:var(--muted) }
.local { background:var(--paper); border-top:1px solid var(--line); display:grid; grid-template-columns:1.1fr 1fr; gap:80px }
.local h2 { font-size:clamp(34px,3.5vw,52px) }
.local p { color:#65625a; font-size:15px }
.local p.eyebrow { font-size:11px; color:var(--ink) }
.towns { display:flex; flex-wrap:wrap; gap:8px; margin:25px 0 }
.towns span { font-size:12px; border:1px solid #c6c0b3; border-radius:30px; padding:7px 15px }
.venue-list { align-self:center }
.venue-list>a { display:flex; align-items:center; justify-content:space-between; gap:20px; padding:23px 0; text-decoration:none; border-top:1px solid #c9c3b6; font-size:17px; font-weight:500; line-height:1.5 }
.venue-list>p:last-child,.local p.caption { font-size:12px }
.faq { max-width:1020px; margin:auto; padding-left:var(--gutter); padding-right:var(--gutter) }
.faq h2 { margin-bottom:42px }
details { border-bottom:1px solid var(--line) }
summary { cursor:pointer; font-size:16px; font-weight:500; list-style:none; padding:23px 35px 23px 0; position:relative }
summary::-webkit-details-marker { display:none }
summary:after { content:'+'; position:absolute; right:0; top:18px; font-size:24px; font-weight:300; color:#827864 }
details[open] summary:after { content:'−' }
details p { font-size:15px; color:var(--muted); margin:0 35px 25px 0 }
footer { background:var(--surface); color:var(--muted); border-top:1px solid var(--line); padding:52px var(--gutter); display:grid; grid-template-columns:1.2fr 1fr 1fr; gap:32px; font-size:13px }
footer .brand { color:var(--ink) }
footer p { margin:0 }
footer small { grid-column:1/-1; font-size:11px; color:var(--muted); border-top:1px solid var(--line); padding-top:26px; margin-top:10px }
.prose { max-width:850px; padding:90px 25px; margin:auto }
.prose h1,.section>h1 { font-size:clamp(38px,5vw,64px); line-height:1.08; letter-spacing:-.05em; font-weight:600; margin:0 0 35px }
.prose h2 { font-size:30px; margin:40px 0 18px }
.prose p { line-height:1.85 }
.prose .button { margin-top:25px }
.skip { position:absolute; top:-100px }
.skip:focus { top:0; background:white; padding:10px; z-index:20 }
.table-wrap { overflow:auto }
table { width:100%; border-collapse:collapse; font-size:13px }
td,th { padding:16px; text-align:left; border-bottom:1px solid var(--line); vertical-align:top }
td button { padding:9px; border:1px solid var(--line); border-radius:5px; background:#eae6dc; color:var(--ink); margin:3px }
#manual-booking { max-width:500px }
@media(min-width:1600px) {
 header,.hero,footer { padding-left:max(var(--gutter),calc((100vw - 1360px)/2)); padding-right:max(var(--gutter),calc((100vw - 1360px)/2)) }
 .story { padding-left:max(var(--gutter),calc((100vw - 1360px)/2)); padding-right:max(var(--gutter),calc((100vw - 1360px)/2)) }
}
@media(max-width:1050px) {
 nav { gap:20px }
 .card { padding:27px }
 .booking { gap:38px }
 .story { grid-template-columns:1fr; gap:40px }
 .story>div { max-width:760px }
 .story figure { max-width:100%; width:100% }
 .local { gap:40px }
}
@media(max-width:760px) {
 html { scroll-padding-top:25px }
 header { padding:19px var(--gutter); gap:15px }
 .brand { font-size:16px; letter-spacing:-.5px }
 .brand span { font-size:8px; letter-spacing:1.3px }
 nav>a:not(.button) { display:none }
 .button.small { font-size:11px; padding:10px 14px; min-height:40px; white-space:nowrap }
 .notice { font-size:10px }
 .hero { padding-top:48px }
 .hero h1 { font-size:clamp(45px,10vw,72px); letter-spacing:-.06em }
 .hero .eyebrow { font-size:9px; letter-spacing:1.8px }
 .hero-copy { padding-bottom:32px }
 .intro { font-size:16px; max-width:430px }
 .hero-actions { gap:20px }
 .hero-actions .button { font-size:13px; padding:14px 19px }
 .hero-secondary { font-size:13px }
 .hero-note { font-size:11px }
 .hero figcaption { font-size:8px; letter-spacing:.8px; padding:12px 0; flex-wrap:wrap; gap:5px }
 .section { padding-top:65px; padding-bottom:65px }
 .section-heading { display:block; margin-bottom:32px }
 .section-heading>p { margin-top:24px; max-width:480px }
 h2 { font-size:38px }
 .steps { grid-template-columns:1fr; gap:28px }
 .steps article { padding-top:20px }
 .steps h3 { margin:12px 0 9px }
 .cards { grid-template-columns:1fr; gap:20px }
 .card { padding:32px; border-radius:16px }
 .card p { min-height:0; margin-top:18px }
 .package-top { display:flex; align-items:center; justify-content:space-between; gap:16px; border-bottom:1px solid var(--line); margin-bottom:26px; padding-bottom:20px }
 .package-top .eyebrow { max-width:170px; margin:0 }
 .duration { margin:0; font-size:35px; white-space:nowrap }
 .duration span { font-size:15px }
 .featured .package-top { border-color:#d4c2a5 }
 .price-heading { gap:15px }
 .price-heading strong { font-size:54px }
 .pricing-note { grid-template-columns:1fr; gap:12px; margin-top:28px }
 .story { padding-top:60px; padding-bottom:60px; gap:30px }
 .story h2 { font-size:38px }
 .booking,.local { grid-template-columns:1fr; gap:36px }
 .booking form { padding:28px }
 .form-row { grid-template-columns:1fr; gap:0 }
 .calendar { padding:18px }
 .calendar-days button { min-height:39px }
 .calendar-days { grid-template-rows:repeat(6,39px) }
 .local h2 { font-size:38px }
 summary { font-size:15px }
 footer { grid-template-columns:1fr; gap:25px; padding-top:40px; padding-bottom:40px }
 footer small { grid-column:auto }
 .prose { padding-top:55px }
}
@media(max-width:370px) {
 :root { --gutter:18px }
 .brand { font-size:14px }
 .brand span { letter-spacing:1px; font-size:7px }
 .button.small { padding:10px 11px }
 .card,.booking form { padding:25px }
 .hero-actions { gap:14px }
}
@media(prefers-reduced-motion:reduce) { html { scroll-behavior:auto } *,*:before,*:after { transition:none!important; animation:none!important } }

.card .text-link span { flex-shrink:0 }
@media (min-width:761px) and (max-width:950px) {
 .cards { grid-template-columns:1fr; max-width:620px; margin-inline:auto }
 .card { padding:36px }
 .card p { min-height:0 }
 .package-top { display:flex; align-items:center; justify-content:space-between; gap:20px }
 .duration { margin:0; white-space:nowrap }
 .card .text-link { min-height:50px }
}

.field-error { color:#963c2c; font-size:13px; margin:7px 0 16px; line-height:1.5 }
[aria-invalid="true"] { border-color:#963c2c; outline-color:#963c2c }
#form-status.form-error { color:#823023; background:#faeee9; border:1px solid #ddb7aa; padding:16px; border-radius:8px }
#form-status.form-success { color:#34583f; background:#edf3eb; padding:16px; border-radius:8px }
