:root{--paper:#fbf9f6;--paper-deep:#f4f0e9;--ink:#2e2a28;--ink-soft:#5a534e;--heather:#5b4a73;--heather-dark:#453659;--heather-tint:#ece7f0;--moss:#6c7a57;--moss-dark:#55623f;--line:#e4ddd2;--placeholder:#e9e5df;--radius:10px;--radius-lg:14px}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--paper);color:var(--ink);font-family:"Source Sans 3","Segoe UI",Arial,sans-serif;font-size:1.0625rem;line-height:1.65}
img{max-width:100%;height:auto;display:block}
h1,h2,h3{font-family:"Fraunces",Georgia,serif;font-weight:600;line-height:1.15;margin:0 0 .5em}
h1{font-size:clamp(2rem,5vw,3rem)}
h2{font-size:clamp(1.5rem,3.5vw,2.1rem)}
h3{font-size:1.2rem}
p{margin:0 0 1em}
a{color:var(--heather);text-decoration-thickness:1px;text-underline-offset:2px}
a:hover{color:var(--heather-dark)}
a:focus-visible,button:focus-visible,input:focus-visible,textarea:focus-visible{outline:3px solid var(--heather);outline-offset:2px;border-radius:3px}
.container{width:min(1080px,100% - 2.5rem);margin-inline:auto}
.skip-link{position:absolute;left:-9999px;top:0;background:var(--heather);color:#fff;padding:.6rem 1rem;z-index:100}
.skip-link:focus{left:0;color:#fff}
.tartan{height:10px;background-color:var(--heather);background-image:repeating-linear-gradient(90deg,transparent 0 38px,rgba(251,249,246,.45) 38px 40px,transparent 40px 56px,rgba(108,122,87,.95) 56px 64px,transparent 64px 70px,rgba(69,54,89,.9) 70px 78px),repeating-linear-gradient(0deg,transparent 0 3px,rgba(46,42,40,.14) 3px 5px)}
.site-header{background:var(--paper);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:50}
.header-inner{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.8rem 0;flex-wrap:wrap}
.brand{text-decoration:none;color:var(--ink);display:flex;flex-direction:column;line-height:1.2}
.brand-name{font-family:"Fraunces",Georgia,serif;font-weight:700;font-size:1.5rem;color:var(--heather-dark)}
.brand-tag{font-size:.76rem;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-soft)}
.nav-toggle{display:none;background:none;border:1px solid var(--line);border-radius:var(--radius);padding:.5rem .9rem;font:inherit;color:var(--ink);cursor:pointer}
.site-nav ul{list-style:none;display:flex;flex-wrap:wrap;gap:.25rem 1.25rem;margin:0;padding:0}
.site-nav a{text-decoration:none;color:var(--ink);font-weight:600;font-size:.96rem;padding:.35rem 0}
.site-nav a:hover{color:var(--heather-dark)}
.site-nav a[aria-current=page]{color:var(--heather-dark);box-shadow:0 2px 0 var(--heather)}
@media (max-width:900px){
.nav-toggle{display:inline-block}
.site-nav{display:none;width:100%}
.site-nav.open{display:block}
.site-nav ul{flex-direction:column;gap:0;padding:.5rem 0 1rem}
.site-nav a{display:block;padding:.6rem .25rem;border-bottom:1px solid var(--line);font-size:1.05rem}
.site-nav a[aria-current=page]{box-shadow:none;border-left:4px solid var(--heather);padding-left:.6rem}
}
main{padding-bottom:3rem}
section{padding:3rem 0 0}
.page-title{padding-top:2.5rem}
.lede{font-size:1.15rem;color:var(--ink-soft);max-width:68ch}
.hero{display:grid;gap:2rem;align-items:center;grid-template-columns:1fr;padding-top:2.5rem}
@media (min-width:860px){.hero{grid-template-columns:6fr 7fr}}
.kicker{text-transform:uppercase;letter-spacing:.16em;font-size:.8rem;font-weight:600;color:var(--moss-dark);margin-bottom:.9rem}
.tagline{font-family:"Fraunces",Georgia,serif;font-style:italic;font-size:1.25rem;color:var(--heather-dark);max-width:34ch}
.hero img{border-radius:var(--radius-lg);width:100%;aspect-ratio:4/3;object-fit:cover}
.actions{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:1.5rem}
.button{display:inline-block;background:var(--heather);color:#fff;font-weight:600;text-decoration:none;padding:.75rem 1.5rem;border:0;border-radius:999px;font-size:1.02rem;cursor:pointer}
.button:hover,.button:focus-visible{background:var(--heather-dark);color:#fff}
.button.ghost{background:transparent;color:var(--heather-dark);box-shadow:inset 0 0 0 2px var(--heather)}
.button.ghost:hover{background:var(--heather-tint)}
.rule{border:0;height:1px;background:var(--line);margin:3rem 0 0}
.cards{display:grid;gap:1.5rem;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));padding:0;margin:1.5rem 0 0;list-style:none}
.card{background:#fff;border:1px solid var(--line);border-radius:var(--radius-lg);overflow:hidden;transition:transform .18s ease,border-color .18s ease}
.card:hover{transform:translateY(-4px);border-color:var(--heather)}
@media (prefers-reduced-motion:reduce){.card,.card:hover{transform:none;transition:none}}
.card img{width:100%}
.card a.card-link{text-decoration:none;color:inherit}
.card-body{padding:1rem 1.15rem 1.2rem}
.card-body h3{margin-bottom:.35em;font-size:1.1rem}
.card-body p{margin:0;font-size:.95rem}
.ped-link{background:none;border:0;padding:0;font:inherit;font-weight:600;color:var(--heather);cursor:pointer;text-decoration:underline;text-underline-offset:2px}
.about-grid{display:grid;gap:2.5rem;grid-template-columns:1fr}
@media (min-width:860px){.about-grid{grid-template-columns:7fr 4fr;align-items:start}}
.prose{max-width:68ch}
.portrait img{border-radius:var(--radius-lg);width:100%}
.portrait figcaption{font-size:.9rem;color:var(--ink-soft);margin-top:.6rem}
figure{margin:0}
.callout{background:var(--heather-tint);border-left:4px solid var(--heather);border-radius:var(--radius);padding:1.35rem 1.5rem;margin:2rem 0 0}
.callout :last-child{margin-bottom:0}
.gallery{display:grid;gap:1rem;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));padding:0;margin:1.5rem 0 0;list-style:none}
.gallery button{display:block;width:100%;padding:0;border:0;background:none;cursor:zoom-in;border-radius:var(--radius)}
.gallery img{border-radius:var(--radius);aspect-ratio:1/1;width:100%;object-fit:cover}
.panel{background:var(--paper-deep);border:1px dashed var(--line);border-radius:var(--radius-lg);padding:1.75rem;text-align:center;color:var(--ink-soft);max-width:620px;margin-top:1.5rem}
.form-grid{display:grid;gap:1.25rem;grid-template-columns:1fr;max-width:720px;margin-top:1.5rem}
@media (min-width:640px){.form-grid{grid-template-columns:1fr 1fr}.form-grid .full{grid-column:1/-1}}
label,legend{font-weight:600;display:block;margin-bottom:.35rem}
.hint{font-weight:400;color:var(--ink-soft);font-size:.9rem;display:block}
input[type=text],input[type=email],input[type=tel],textarea{width:100%;font:inherit;color:var(--ink);background:#fff;border:1px solid #c9c0b4;border-radius:var(--radius);padding:.65rem .8rem}
textarea{min-height:8.5rem;resize:vertical}
fieldset{border:1px solid var(--line);border-radius:var(--radius);padding:1rem 1.15rem 1.15rem;margin:0}
.choice{display:flex;align-items:flex-start;gap:.6rem;font-weight:400;margin:.4rem 0}
.choice input{width:1.15rem;height:1.15rem;margin-top:.25rem;accent-color:var(--heather);flex-shrink:0}
.lightbox{position:fixed;inset:0;background:rgba(46,42,40,.92);display:none;align-items:center;justify-content:center;z-index:200;padding:2rem}
.lightbox.open{display:flex}
.lightbox img{max-width:min(92vw,1100px);max-height:82vh;width:auto;height:auto;border-radius:var(--radius)}
.lightbox p{position:absolute;bottom:1.25rem;left:50%;transform:translateX(-50%);color:#f4f0e9;font-size:.95rem;text-align:center;max-width:80vw}
.lightbox button{position:absolute;background:rgba(251,249,246,.12);color:#fff;border:1px solid rgba(251,249,246,.4);border-radius:999px;width:2.75rem;height:2.75rem;font-size:1.2rem;line-height:1;cursor:pointer}
.lightbox button:hover{background:rgba(251,249,246,.28)}
.lb-close{top:1.25rem;right:1.25rem}
.lb-prev{left:1rem;top:50%;transform:translateY(-50%)}
.lb-next{right:1rem;top:50%;transform:translateY(-50%)}
.site-footer{margin-top:3rem;background:var(--paper-deep);border-top:1px solid var(--line)}
.footer-inner{display:grid;gap:2rem;padding:2.5rem 0 2rem;grid-template-columns:1fr}
@media (min-width:760px){.footer-inner{grid-template-columns:1.3fr 1fr 1.2fr}}
.site-footer h2{font-size:1.05rem}
.site-footer ul{list-style:none;margin:0;padding:0}
.site-footer li{margin-bottom:.45rem}
.footer-brand{font-family:"Fraunces",Georgia,serif;font-weight:700;font-size:1.3rem;color:var(--heather-dark);margin-bottom:.25rem}
.footer-note{font-size:.92rem;color:var(--ink-soft)}
.footer-meta{border-top:1px solid var(--line);padding:1.1rem 0 1.3rem;font-size:.88rem;color:var(--ink-soft);display:flex;flex-wrap:wrap;gap:.5rem 1.5rem;justify-content:space-between}
img.img-missing{background:var(--placeholder);object-fit:contain;padding:12%;opacity:.9}
.calendar-wrap{overflow-x:auto;margin-top:1.5rem}
table.calendar{border-collapse:collapse;width:100%;max-width:720px;background:#fff;border:1px solid var(--line);border-radius:var(--radius-lg);overflow:hidden}
.calendar caption{caption-side:top;text-align:left;font-family:"Fraunces",Georgia,serif;font-weight:600;font-size:1.15rem;padding:0 0 .6rem}
.calendar th{background:var(--heather);color:#fff;font-size:.82rem;letter-spacing:.08em;text-transform:uppercase;padding:.5rem .25rem;font-weight:600}
.calendar td{border:1px solid var(--line);width:14.28%;padding:0;vertical-align:top}
.calendar .day{display:block;min-height:3.4rem;padding:.35rem .45rem;font-size:.92rem}
.calendar .day b{font-weight:600;display:block}
.calendar .day small{display:block;font-size:.72rem;letter-spacing:.02em;margin-top:.15rem}
.calendar .open{background:#eef2e7}
.calendar .open small{color:var(--moss-dark)}
.calendar .booked{background:var(--heather-tint)}
.calendar .booked small{color:var(--heather-dark)}
.calendar .closed{background:var(--paper-deep);color:var(--ink-soft)}
.calendar .closed small{color:var(--ink-soft)}
.calendar .blank{background:var(--paper)}
.cal-legend{display:flex;flex-wrap:wrap;gap:.75rem 1.5rem;list-style:none;margin:.9rem 0 0;padding:0;font-size:.9rem;color:var(--ink-soft)}
.cal-legend span{display:inline-block;width:.9rem;height:.9rem;border-radius:3px;border:1px solid var(--line);margin-right:.4rem;vertical-align:-.1em}
.cal-legend .sw-open{background:#eef2e7}
.cal-legend .sw-booked{background:var(--heather-tint)}
.cal-legend .sw-closed{background:var(--paper-deep)}
@media (prefers-reduced-motion:no-preference){.fade main{animation:fadeIn .5s ease-out}@keyframes fadeIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}}
@media (max-width:400px){body{font-size:1rem}.container{width:min(1080px,100% - 1.75rem)}.actions .button{width:100%;text-align:center}}
