/* Fonts, self-hosted (SIL Open Font License, see fonts/OFL-*.txt): Latin subsets from Google Fonts */
@font-face{font-family:'Gloock';font-style:normal;font-weight:400;font-display:swap;src:url(fonts/gloock-latin.woff2) format('woff2')}
@font-face{font-family:'Onest';font-style:normal;font-weight:400 600;font-display:swap;src:url(fonts/onest-latin.woff2) format('woff2')}
:root{--green:#616d56;--green-d:#4a5441;--gold:#e8c57e;--gold-d:#ddb466;--cream:#f3e8d8;--cream-photo:#f6e8cb;--sage:#53604b;--sand:#ddd4c1;--line:#d6ccb8;--ink:var(--sage);--muted:var(--sage);--soft:#e4dcc9}
/* Colours from the old Wix site: cream #f3e8d8 (page background, and all text on photos, green panels and the footer);
   sage #5e6d55 (all text on cream). --ink and --muted are the text colour on cream; --cream is the text colour on green.
   --cream-photo #f6e8cb: text over banner photos, a warmer cream with the same brightness as #f3e8d8 (so the same
   WCAG contrast) that doesn't read as white against a photo. Set it to var(--cream) to go back. */
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--cream);color:var(--ink);font-family:'Onest',system-ui,sans-serif;-webkit-font-smoothing:antialiased;line-height:1.5}
img{max-width:100%;display:block;height:auto}picture{display:contents}picture>source{display:none}   /* <picture> (WebP + JPG) lays out like its <img> */
a{color:inherit}a:hover{color:var(--green-d)}   /* links are sage like the text: underlined in running text, darker on hover */
h1,h2,h3{font-family:'Gloock',Georgia,serif;font-weight:400;margin:0;text-wrap:balance}
p{margin:0;text-wrap:pretty}
[hidden]{display:none!important}
.wrap{max-width:1280px;margin:0 auto}
.pad{padding-left:clamp(20px,4.5vw,56px);padding-right:clamp(20px,4.5vw,56px)}
.inset{margin-left:clamp(0px,1.5vw,24px);margin-right:clamp(0px,1.5vw,24px);border-radius:clamp(0px,.5vw,6px);overflow:hidden}
.eyebrow{display:block;font-size:13px;letter-spacing:.14em;text-transform:uppercase;color:var(--sage);font-weight:600}
.lead{font-size:clamp(18px,1.8vw,21px);line-height:1.6;color:var(--ink)}
.body{font-size:17px;line-height:1.7}
.stack{display:flex;flex-direction:column;gap:20px}
.row{display:flex;flex-wrap:wrap;gap:12px}
.between{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:20px 40px}
.section{padding-top:clamp(64px,9vw,104px);padding-bottom:clamp(64px,9vw,104px)}
.h1{font-size:clamp(40px,6vw,72px);line-height:1.03}
.h2{font-size:clamp(32px,4vw,48px);line-height:1.08}
.btn{display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:0 24px;border-radius:999px;font:500 15px 'Onest',sans-serif;text-decoration:none;background:var(--green);color:var(--cream);border:1px solid var(--green);cursor:pointer;text-align:center}
.btn:hover{background:var(--green-d);border-color:var(--green-d);color:var(--cream)}
.btn-line{background:transparent;color:var(--ink);border-color:var(--ink)}.btn-line:hover{background:var(--ink);border-color:var(--ink);color:var(--cream)}
.btn-light{background:var(--cream);color:var(--ink);border-color:var(--cream)}.btn-light:hover{background:var(--sand);border-color:var(--sand);color:var(--ink)}
.todo{border:1.5px dashed #b3894f;background:#f7eedb;color:#6b4a1c;border-radius:4px;padding:10px 14px;font-size:14px;line-height:1.45}
/* header */
header.site{position:sticky;top:0;z-index:30;background:var(--cream);border-bottom:1px solid #e2d9c6}
.hdr{display:flex;align-items:center;justify-content:space-between;gap:16px;padding-top:12px;padding-bottom:12px;transition:padding .25s ease}
.brand{display:flex;align-items:center;gap:16px;text-decoration:none}
.brand picture,.foot-logo picture{display:contents}   /* the <img> inside is the flex item */
.logo{width:112px;height:auto;flex:none;filter:drop-shadow(0 1px 2px rgba(47,53,41,.18));transition:width .25s ease,margin .25s ease,filter .25s ease}
.brand b{display:block;font-family:'Gloock',serif;font-weight:400;font-size:25px;line-height:1.1;transition:font-size .25s ease}
.brand small{display:block;font-size:13.5px;color:var(--sage);letter-spacing:.03em;margin-top:2px}
/* Header shrinks once the page is scrolled (class set in site.js) */
header.site.is-scrolled .hdr{padding-top:8px;padding-bottom:8px}header.site.is-scrolled .logo{width:60px}header.site.is-scrolled .brand b{font-size:21px}
nav.main{display:flex;align-items:center;gap:18px;font-size:15px}   /* 18px keeps the menu on one line beside the 112px logo */
nav.main a{text-decoration:none}
nav.main a.btn{color:var(--cream)}
nav.main a[aria-current=page]{color:var(--sage);text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:7px}   /* the page you're on (tools/build.py) */
.menu-btn{display:none}
.mobile-nav{display:none;flex-direction:column;padding:0 20px 16px;font-size:18px}
.mobile-nav a{padding:14px 0;border-top:1px solid #e2d9c6;text-decoration:none}
.mobile-nav a[aria-current=page]{color:var(--sage);font-weight:600}
@media (max-width:1280px){nav.main{display:none}.menu-btn{display:inline-flex;min-height:44px;padding:0 18px}body.menu-open .mobile-nav{display:flex}}   /* the full menu only fits on one line above 1280px */
@media (max-width:767px){.hdr{padding-top:10px;padding-bottom:10px}.logo{width:68px}header.site.is-scrolled .logo{width:46px}}   /* phones: 68px, 46px when scrolled */
@media (max-width:480px){.brand{gap:12px}.brand small{display:none}.brand b{font-size:19px}header.site.is-scrolled .brand b{font-size:18px}}
.enquire-bar{display:none}
.preview-bar{background:var(--sage);color:var(--cream);font-size:13px;line-height:1.4;text-align:center;padding:6px 16px}.preview-bar a{color:var(--cream);text-decoration:underline;font-weight:600}@media print{.preview-bar{display:none}}   /* only on builds that aren't live (tools/build.py preview_pass) */
@media (max-width:900px){.enquire-bar{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:40;gap:10px;padding:10px 14px calc(10px + env(safe-area-inset-bottom));background:rgba(241,233,217,.97);border-top:1px solid var(--line)}.enquire-bar .btn{flex:1;padding:0 12px}.enquire-bar .btn-line{flex:0 0 auto}body.has-bar{padding-bottom:76px}}
/* hero */
.hero{position:relative;height:clamp(460px,80vh,720px);margin-top:clamp(0px,1.5vw,24px);background:var(--green)}.hero>img,.hero>picture>img{width:100%;height:100%;object-fit:cover}
.hero:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(20,24,16,.2) 0%,rgba(20,24,16,0) 30%,rgba(20,24,16,.76) 100%)}
.hero-copy{position:absolute;z-index:1;left:clamp(20px,4.5vw,56px);right:clamp(20px,4.5vw,56px);bottom:clamp(28px,4vw,52px);display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:24px;color:var(--cream)}
.hero-copy h1{font-size:clamp(38px,6.2vw,76px);line-height:1.02;max-width:820px}
.hero-copy p{font-size:clamp(16px,1.6vw,19px);max-width:560px;margin-top:16px}
.hero .back{position:absolute;z-index:1;top:20px;left:clamp(20px,4.5vw,56px);color:var(--cream);text-decoration:none;font-size:14px;font-weight:500}
.hero-kind{font-size:13px;letter-spacing:.14em;text-transform:uppercase;font-weight:600;margin-bottom:14px;display:block}
/* stops */
.stops{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:6px 14px;font-size:13.5px;color:var(--muted)}
.stops li{display:flex;align-items:center;gap:8px}
.stops li:before{content:"";width:7px;height:7px;border-radius:50%;background:var(--green);flex:none}
.hero .stops{color:var(--cream);font-size:15px;margin-top:14px}.hero .stops li:before{background:var(--cream)}
/* cards */
.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr));gap:40px 28px}
.card{display:flex;flex-direction:column;gap:10px;text-decoration:none}
.card:hover{color:var(--ink)}.card:hover img{opacity:.9}
.card-img{position:relative;margin-bottom:4px}
.card-img img{width:100%;height:auto;aspect-ratio:4/3;object-fit:cover;border-radius:4px;transition:opacity .2s}
.badge{position:absolute;top:12px;left:12px;background:var(--cream);padding:5px 10px;border-radius:3px;font-size:12px;font-weight:600;letter-spacing:.06em;text-transform:uppercase}
.card h3{font-size:24px;line-height:1.15}
.card .price{font-weight:600;font-size:15px}
.card .price small{font-weight:400;color:var(--muted);font-size:13px}
.chip{font:500 14px 'Onest',sans-serif;cursor:pointer;min-height:44px;padding:0 18px;border-radius:999px;border:1px solid var(--green);background:transparent;color:var(--ink)}
.chip.on{background:var(--green);color:var(--cream)}
/* Premium Périgord's gallery pill: the gold of the Included tags (text 4.8:1); selected = darker gold, darker text (5.9:1), bold and a dark ring */
.chip-gold{background:var(--gold);border-color:var(--gold-d);color:var(--green-d);font-weight:600;transition:background .15s}
.chip-gold:hover{background:var(--gold-d);color:#3d4636}
.chip-gold.on{background:#d4a650;border-color:#2b3226;color:#2b3226;box-shadow:0 0 0 1px #2b3226}
.map-slot{height:clamp(180px,24vw,300px);border:1.5px dashed #9ea58f;border-radius:4px;background:repeating-linear-gradient(45deg,#e9e0cd 0 10px,#f1e9d9 10px 20px);display:flex;flex-direction:column;justify-content:flex-end;gap:6px;padding:20px}
.map-slot b{font-size:15px}.map-slot span{font-size:14px;color:var(--muted)}
/* panels */
.panel-green{background:var(--green);color:var(--cream)}
.panel-dark{background:var(--green-d);color:var(--cream)}
.panel-sand{background:var(--sand)}
.panel-green .eyebrow,.panel-dark .eyebrow{color:var(--cream)}
.split{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,440px),1fr))}.split>img,.split>picture>img{width:100%;height:100%;min-height:420px;object-fit:cover}
.split-copy{display:flex;flex-direction:column;justify-content:center;gap:22px;padding:clamp(36px,5vw,64px) clamp(24px,5vw,60px)}
.reasons{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:22px 28px;padding-top:24px;border-top:1px solid rgba(241,233,217,.3)}
.reasons b{display:block;font-family:'Gloock',serif;font-weight:400;font-size:19px;margin-bottom:4px}
.reasons span{font-size:14.5px;line-height:1.55;color:var(--cream)}
.two{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,380px),1fr));gap:40px 64px;align-items:center}
.tiles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.tiles img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:3px}
.steps>div{display:grid;grid-template-columns:48px 1fr;gap:12px;align-items:baseline;padding:20px 0;border-top:1px solid #b9b09b;font-size:18px}
.steps b{font-family:'Gloock',serif;font-weight:400;font-size:30px;color:var(--sage)}
/* reviews */
.reviews{display:grid;grid-auto-flow:column;grid-auto-columns:min(86%,400px);gap:24px;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;align-items:start;margin:0 calc(-1*clamp(20px,4.5vw,56px));padding:0 clamp(20px,4.5vw,56px);scroll-padding:0 clamp(20px,4.5vw,56px)}
.reviews::-webkit-scrollbar{display:none}
.review{margin:0;display:flex;flex-direction:column;gap:14px;padding:30px 30px 28px;background:#ebe2d0;border-radius:6px;scroll-snap-align:start}
.rv-mark{font-family:'Gloock',serif;font-size:64px;line-height:.6;height:28px;color:var(--sage)}
.review blockquote{margin:0;font-size:16.5px;line-height:1.7;color:var(--ink);display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:7;overflow:hidden}
.review.open blockquote{display:block}
.rv-more{align-self:flex-start;border:0;background:none;padding:0;font:500 14.5px 'Onest',sans-serif;color:var(--ink);text-decoration:underline;text-underline-offset:3px;cursor:pointer;min-height:32px}
.rv-more:hover{color:var(--sage)}
.review figcaption{font-family:'Gloock',serif;font-size:19px;color:var(--ink);padding-top:14px;border-top:1px solid var(--line);margin-top:auto}
.review figcaption span{display:block;font-family:'Onest',sans-serif;font-size:14px;margin-top:2px}
.rv-btn{width:48px;height:48px;border-radius:50%;border:1px solid var(--ink);background:transparent;color:var(--ink);font-size:18px;cursor:pointer}
.rv-btn:hover{background:var(--ink);color:var(--cream)}
/* instagram */
.ig{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(46%,180px),1fr));gap:10px}
.ig a{display:block;border-radius:3px;overflow:hidden}.ig img{width:100%;aspect-ratio:1;object-fit:cover}.ig a:hover img{opacity:.85}
/* trip page */
.facts{display:flex;flex-wrap:wrap;border-top:1px solid var(--line);border-left:1px solid var(--line)}
.facts>div{flex:1 1 170px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);padding:18px 20px;display:flex;flex-direction:column;gap:6px}
.facts dt,.facts span.k{font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--sage);font-weight:600}
.facts dd{margin:0;font-size:15.5px;line-height:1.4}
.intro-row{display:flex;flex-wrap:wrap;gap:40px 64px;align-items:flex-start}
.intro{flex:1 1 480px;min-width:0;max-width:760px;display:flex;flex-direction:column;gap:20px}
.intro p{font-size:clamp(17px,1.5vw,19px);line-height:1.7}
.trip-side{flex:0 1 340px;min-width:260px;position:sticky;top:96px;display:flex;flex-direction:column;gap:22px}
.price-box{background:var(--green);color:var(--cream);border-radius:6px;padding:28px;display:flex;flex-direction:column;gap:14px}
.price-box .amount{font-family:'Gloock',serif;font-size:34px;line-height:1.1}
.price-box .todo{background:rgba(247,238,219,.12);color:var(--cream);border-color:#e8c48f}
.price-box small{font-size:14px;color:var(--cream);line-height:1.5}
.price-box .price-solo{font-size:15px;line-height:1.5}
.price-box a:not(.btn){text-align:center;text-decoration:none;font-size:15px}.price-box a:not(.btn):hover{color:#fff}
.days{max-width:900px;display:flex;flex-direction:column}
.day{display:grid;grid-template-columns:minmax(64px,90px) minmax(0,1fr);gap:8px 24px;padding:26px 0;border-top:1px solid var(--line)}
.day>span{font-family:'Gloock',serif;font-size:20px;color:var(--sage);padding-top:3px}
.day>div{display:flex;flex-direction:column;gap:10px;min-width:0}
.day h3{font-size:clamp(22px,2.2vw,26px);line-height:1.2;display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 14px}
.dist{font:600 13px 'Onest',sans-serif;background:#e2d9c6;padding:4px 10px;border-radius:999px;white-space:nowrap}
.day p{font-size:16px;line-height:1.7;color:var(--ink)}
.day p a{color:var(--sage)}
/* A photo in a day's card (data/trip-photos.json 'days'), above the day's route map */
.day-photo{margin:4px 0 0}.day-photo img{display:block;width:100%;aspect-ratio:3/2;object-fit:cover;border-radius:4px}
.day-photo figcaption{margin-top:8px;font-size:14px;color:var(--muted)}
.tonight{font-size:14.5px;font-weight:500;color:var(--sage);align-self:flex-start}
.meal{font:600 13px 'Onest',sans-serif;background:#e2d9c6;padding:4px 10px;border-radius:999px;align-self:flex-start;margin-top:-2px}   /* same small style as .dist */
/* An experience included that day (e.g. a tasting): same small pill as .meal, on its own line, in gold with dark green text (4.8:1) */
.included{display:inline-flex;align-items:center;gap:6px;font:600 13px 'Onest',sans-serif;background:var(--gold);color:var(--green-d);padding:4px 11px 4px 9px;border-radius:999px;align-self:flex-start}
.included svg{width:15px;height:15px;flex:none;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
a.included{text-decoration:none;transition:background .15s}a.included:hover{background:var(--gold-d);color:#3d4636}   /* darker text keeps 5:1 on the darker gold */
a.included:focus-visible{outline:2px solid var(--green-d);outline-offset:2px}
.facts dd.included-row{display:flex;flex-wrap:wrap;gap:6px 8px;margin-top:4px}
.facts-included{flex-basis:100%!important}   /* the pills get the whole row of the key facts box */
.day{scroll-margin-top:100px}   /* links to a day (key facts pills) stop below the sticky header */
span.tonight a{color:inherit;text-underline-offset:3px}
.tonight small{font-size:13px;font-weight:400}   /* e.g. star rating and availability after the hotel names */   /* two possible hotels: each name links to its own site */
/* A new holiday's cards (data/trips.json "new": true) */
.ribbon-new{position:absolute;top:12px;right:12px;background:var(--gold);color:var(--green-d);padding:5px 10px;border-radius:3px;font-size:12px;font-weight:600;letter-spacing:.06em;text-transform:uppercase}
.strip{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr));gap:10px}
/* route maps */
.route-map{height:clamp(340px,46vw,540px);border-radius:4px;background:#e4dcc9;z-index:0}
.route-legend{display:flex;flex-wrap:wrap;gap:8px 22px;font-size:14px;color:var(--muted);margin-top:12px}
.route-legend i{display:inline-block;width:26px;height:0;border-top:4px solid #4a5441;vertical-align:middle;margin-right:8px}.route-legend i.d{border-top:3px dashed #4a5441}
.route{display:flex;flex-direction:column;gap:10px;margin-top:6px;min-height:340px}
.rt-opts{display:flex;flex-wrap:wrap;gap:8px}
.rt-opt{font:500 14px 'Onest',sans-serif;cursor:pointer;min-height:40px;padding:0 16px;border-radius:999px;border:1px solid var(--green);background:transparent;color:var(--ink)}
.rt-opt.on{background:var(--green);color:var(--cream)}
.rt-map{height:clamp(220px,32vw,300px);border-radius:4px;background:#e4dcc9;z-index:0}
.rt-stats{display:flex;flex-wrap:wrap;gap:4px 22px;font-size:14.5px;color:var(--muted)}.rt-stats b{color:var(--ink);font-weight:600}
.rt-ele{display:grid;grid-template-columns:auto minmax(0,1fr);gap:10px}
.rt-axis{display:flex;flex-direction:column;justify-content:space-between;font-size:12px;color:var(--muted);text-align:right;padding-bottom:22px}
.rt-plot{position:relative}
.rt-plot svg{display:block;width:100%;height:96px;cursor:crosshair;touch-action:pan-y}
.rt-area{fill:#cfd3c0}.rt-line{fill:none;stroke:#4a5441;stroke-width:2;vector-effect:non-scaling-stroke}.rt-grid{stroke:#c9bfa9;stroke-dasharray:3 4;vector-effect:non-scaling-stroke}
.rt-cur{stroke:var(--ink);stroke-width:1;vector-effect:non-scaling-stroke;opacity:0}
.rt-lab{position:absolute;top:-4px;transform:translate(-50%,-100%);background:var(--ink);color:var(--cream);font-size:12px;padding:3px 8px;border-radius:3px;white-space:nowrap;pointer-events:none;opacity:0}
.rt-km{display:flex;justify-content:space-between;font-size:12px;color:var(--muted);margin-top:4px}
.rt-note{font-size:14px!important;color:var(--muted)!important}
.rt-pin{display:flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:50%;background:#4a5441;color:var(--cream);font:600 12px 'Onest',sans-serif;border:2px solid #fff;box-shadow:0 1px 3px rgba(0,0,0,.3)}
.rt-pin.stop{width:16px;height:16px;margin:5px;background:#f1e9d9;border:3px solid #4a5441}
.leaflet-container{font-family:'Onest',sans-serif}.leaflet-tile-pane{filter:saturate(.55) sepia(.18) contrast(.95)}
.strip img{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:3px}
/* A labelled food section (data/trip-photos.json 'food_section'): 3 across, 2 on tablets and phones, taller boxes so a whole plate or glass shows */
.food-grid{grid-template-columns:repeat(3,minmax(0,1fr));max-width:1040px;width:100%}
.food-grid img{aspect-ratio:4/5}
@media (max-width:900px){.food-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
.food-grid .place-tag{white-space:normal;border-radius:10px;align-items:flex-start}.food-grid .place-tag svg{margin-top:2px}   /* labels wrap rather than cut off on narrow tiles */
/* gallery */
.masonry{column-width:280px;column-gap:10px}
.g-item{display:block;width:100%;padding:0;margin:0 0 10px;border:0;background:#e2d9c6;border-radius:3px;overflow:hidden;cursor:zoom-in;break-inside:avoid}
.g-item img{width:100%}.g-item:hover{opacity:.88}
.lightbox{position:fixed;inset:0;z-index:60;background:rgba(24,28,20,.94);display:flex;align-items:center;justify-content:center;padding:clamp(12px,4vw,56px)}
.lightbox img{max-width:100%;max-height:100%;object-fit:contain}
.lightbox button{position:absolute;border:0;background:rgba(241,233,217,.92);color:var(--ink);cursor:pointer;font:500 14px 'Onest',sans-serif}
.lb-prev,.lb-next{top:50%;transform:translateY(-50%);width:48px;height:48px;border-radius:50%;font-size:22px!important}
.lb-prev{left:12px}.lb-next{right:12px}.lb-close{top:12px;right:12px;min-height:44px;padding:0 16px;border-radius:999px}
.lb-count{position:absolute;left:0;right:0;bottom:16px;text-align:center;color:var(--cream);font-size:13px}
/* Place tags on photos (town name + map pin), bottom-left, small enough to stay clear of the main subject */
.g-item,.strip a{position:relative;display:block}
.place-tag{position:absolute;left:8px;bottom:8px;display:inline-flex;align-items:center;gap:4px;max-width:calc(100% - 16px);padding:3px 9px 3px 7px;border-radius:999px;background:rgba(24,28,20,.62);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);color:var(--cream);font:500 12px/1.3 'Onest',system-ui,sans-serif;text-shadow:0 1px 1px rgba(0,0,0,.35);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;pointer-events:none}
.place-tag svg{flex:none}
.town-filter{gap:6px;padding-bottom:20px;margin-top:-8px}
.chip-sm{min-height:36px;padding:0 14px;font-size:13px}
/* Gallery: "What you'll eat" (a holiday's Food view, groups from data/meals.json). Included groups use the gold of the
   Included tags; each chip shows its photo count. A <select> replaces the chips when they would wrap to more than two lines. */
.meal-filter{padding-bottom:16px;margin-top:-8px}
.filter-label{display:block;font:600 13px 'Onest',sans-serif;letter-spacing:.14em;text-transform:uppercase;color:var(--sage);margin-bottom:8px}
.meal-chips{gap:6px}
.meal-chips .chip{display:inline-flex;align-items:center;gap:8px;text-align:left;padding:5px 12px 5px 14px;line-height:1.2}
.meal-chips .mc{display:flex;flex-direction:column}.meal-chips .mc b{font-weight:inherit}
.meal-chips .mc small{font-size:11px;font-weight:600;letter-spacing:.02em;opacity:.9}   /* "Included · Day 1" */
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}   /* for screen readers only */
.chip .n{font-size:12px;font-weight:600;line-height:20px;min-width:22px;padding:0 6px;border-radius:999px;background:rgba(83,96,75,.12);text-align:center}
.chip.on .n{background:rgba(243,232,216,.22)}
.chip-gold .n,.chip-gold.on .n{background:rgba(43,50,38,.12)}
.meal-select{display:block;max-width:520px}
.meal-select select{font:500 16px 'Onest',sans-serif;min-height:46px;padding:0 12px;border:1px solid var(--green);border-radius:4px;background:#fff;color:var(--ink);width:100%}
.meal-filter.use-select .meal-chips,.meal-filter:not(.use-select) .meal-select{display:none}
.meal-note{margin-top:10px;font-size:15px;color:var(--ink)}
.general-tag{background:rgba(24,28,20,.42);font-weight:400}   /* subtler than a town tag */
.food-tag{background:rgba(150,72,40,.8)}   /* warm terracotta for food, vs dark for scenery */
@media (min-width:700px){.strip[data-food-photos]{grid-template-columns:repeat(3,minmax(0,1fr))}}   /* 1–2 food photos keep a third of the width */
.g-item .place-tag{bottom:6px;left:6px}
.g-wide{aspect-ratio:2/1;object-fit:cover}
.g-crop{object-fit:cover}   /* a guest panorama cropped to its tile shape (3:2); full width in the lightbox */
.lb-where{display:block;font-size:13px;opacity:.85;margin-top:2px}
/* Guest photos: "Sally H. · Premium Périgord · September 2026", with the place on a second line */
.guest-tag{position:absolute;left:6px;bottom:6px;max-width:calc(100% - 12px);padding:4px 10px 5px;border-radius:10px;background:rgba(24,28,20,.66);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);color:var(--cream);font:500 12px/1.35 'Onest',system-ui,sans-serif;text-align:left;text-shadow:0 1px 1px rgba(0,0,0,.35);pointer-events:none}
.nw{white-space:nowrap}
.guest-tag small{display:block;font-size:11.5px;font-weight:400;opacity:.92}
.pending-badge{position:absolute;top:6px;left:6px;padding:2px 8px;border-radius:999px;background:var(--gold);color:var(--green-d);font:600 11px/1.4 'Onest',sans-serif;pointer-events:none}
.guest-strip{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(46%,180px),1fr));gap:18px 10px;margin-top:24px}
.guest-tile{margin:0;position:relative;min-width:0}
.guest-tile a{display:block;color:inherit;text-decoration:none}.guest-tile a:hover img{opacity:.88}
.guest-tile img{display:block;width:100%;height:auto;aspect-ratio:1;object-fit:cover;border-radius:3px}
.guest-tile figcaption{margin-top:8px;font-size:13px;line-height:1.4;color:var(--muted);display:flex;flex-direction:column;gap:2px}
.guest-tile .guest-where{color:var(--ink);font-weight:500}
.guest-tile .pending-badge{top:6px;left:6px}
.guest-more{margin-top:18px}.guest-more a{font-weight:500;color:var(--sage)}
.sample-badge{display:inline-block;margin-left:6px;padding:1px 7px;border-radius:999px;background:var(--gold);color:var(--green-d);font:600 11px/1.5 'Onest',sans-serif;vertical-align:middle;letter-spacing:.02em}
.lightbox{flex-direction:column;gap:10px}
.lightbox img{max-height:calc(100% - 64px)}
.lb-place{margin:0;color:var(--cream);font:500 15px 'Onest',sans-serif;text-align:center}
@media (max-width:600px){.place-tag{font-size:11px;padding:2px 8px 2px 6px;left:6px;bottom:6px}}
/* forms */
.form{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,200px),1fr));gap:16px 18px;background:var(--cream);border-radius:6px;padding:clamp(20px,3vw,32px)}
.form .full{grid-column:1/-1}
.form label.f{display:flex;flex-direction:column;gap:6px;font-size:14px;font-weight:500}
.form input:not([type=radio]),.form select,.form textarea{font:inherit;font-size:16px;min-height:46px;padding:0 12px;border:1px solid #b9b09b;border-radius:4px;background:#fff;color:var(--ink);width:100%}
.form textarea{padding:12px;resize:vertical;min-height:120px}
.form fieldset{border:0;margin:0;padding:0;display:flex;flex-direction:column;gap:8px;font-size:14px;font-weight:500}
.form legend{padding:0 0 6px}
.pills{display:flex;flex-wrap:wrap;gap:8px}
.pills label{position:relative}
.pills input{position:absolute;opacity:0;width:1px;height:1px}
.pills span{display:inline-flex;align-items:center;min-height:44px;padding:0 16px;border-radius:999px;border:1px solid var(--green);cursor:pointer;font-weight:500}
.pills input:checked+span{background:var(--green);color:var(--cream)}
.pills input:focus-visible+span{outline:2px solid var(--ink);outline-offset:2px}
.book-steps{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr));gap:32px 36px}
.book-steps>div{display:flex;flex-direction:column;gap:12px;padding-top:20px;border-top:2px solid var(--green)}
.book-steps b{font-family:'Gloock',serif;font-weight:400;font-size:30px;color:var(--sage)}
.book-steps h2{font-size:24px}
.book-steps p{font-size:15.5px;line-height:1.65;color:var(--ink)}
.enquire-wrap{display:flex;flex-wrap:wrap;gap:40px 64px;padding:clamp(40px,6vw,72px) clamp(20px,4.5vw,56px);scroll-margin-top:80px}
.enquire-wrap>div{flex:1 1 300px;min-width:0;display:flex;flex-direction:column;gap:18px}
.enquire-wrap>form{flex:2 1 460px;min-width:0}
.legal{max-width:820px;display:flex;flex-direction:column;gap:18px;font-size:16.5px;line-height:1.7}
/* footer */
footer.site{background:var(--green-d);color:var(--cream)}
.foot{display:flex;flex-direction:column;gap:clamp(32px,4vw,44px);padding-top:clamp(48px,6vw,72px);padding-bottom:clamp(36px,4vw,48px)}
.foot-cols{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:40px 32px}   /* four columns across the full width; they wrap on narrower screens */
@media (max-width:600px){.foot-cols{flex-direction:column}}   /* phones: stacked */
.foot a{text-decoration:none;transition:color .2s ease}.foot a:hover{color:#fff}
.foot-brand{display:flex;flex-direction:column;align-items:center;gap:14px;text-align:center;padding-bottom:clamp(28px,4vw,40px);border-bottom:1px solid rgba(241,233,217,.18)}   /* centred logo block, then a thin divider */
.foot-logo{display:flex;flex-direction:column;align-items:center;gap:12px;color:var(--cream)}
.foot-logo img{width:110px;height:auto;flex:none;filter:drop-shadow(0 2px 6px rgba(0,0,0,.25))}
.foot-logo b{display:block;font-family:'Gloock',serif;font-weight:400;font-size:25px;line-height:1.1;white-space:nowrap}
.foot-logo small{display:block;font-size:13.5px;color:var(--cream);margin-top:3px}
.foot-brand p{margin:0;font-size:15px;line-height:1.6;color:var(--cream)}
.social{display:flex;align-items:center;gap:10px}
.foot .social .h{margin:0 4px 0 0}
.social a{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:50%;color:var(--cream);transition:transform .15s ease,filter .15s ease}
.social-ig{background:linear-gradient(45deg,#F58529,#DD2A7B 40%,#8134AF 72%,#515BD4)}
.social-fb{background:#1877F2}
.foot .social a:hover{color:#fff;transform:translateY(-2px);filter:brightness(1.08)}
@media (prefers-reduced-motion:reduce){.social a{transition:none}.foot .social a:hover{transform:none}}
.social svg{width:20px;height:20px}
.foot-col{display:flex;flex-direction:column;align-items:flex-start;font-size:15px}
.foot-col>a{white-space:nowrap;line-height:22px;padding:6px 0}   /* even spacing; footer links never wrap */
.foot .h{white-space:nowrap;font-size:12px;line-height:18px;letter-spacing:.14em;text-transform:uppercase;color:var(--cream);font-weight:600;margin-bottom:10px}
.foot-base{border-top:1px solid rgba(241,233,217,.18);padding-top:20px;padding-bottom:28px;font-size:13px;color:var(--cream);display:flex;flex-wrap:wrap;gap:8px 24px;justify-content:space-between}
.foot-base a{text-decoration:none}.foot-base a:hover{color:#fff}

.region{display:flex;flex-direction:column;gap:14px}
.region-map{height:clamp(300px,40vw,460px);border-radius:4px;background:#e4dcc9;z-index:0}
.region-key{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:8px 24px;font-size:14.5px}
.region-key a{display:flex;align-items:center;gap:8px;text-decoration:none;font-weight:500;min-height:32px}
.region-key i{width:22px;height:4px;border-radius:2px;flex:none}
.region-key .soon{color:var(--muted);flex-basis:100%}
/* 404 page: links to every holiday */
.nf-cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr));gap:24px 48px;margin:8px 0 12px}
.nf-cols h2{font-size:clamp(24px,2.6vw,30px);margin:0 0 10px}.nf-cols h2 a{color:inherit;text-underline-offset:4px}
.nf-cols ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}
.nf-cols li a{display:inline-flex;align-items:center;min-height:40px;color:var(--ink);font-weight:500;text-underline-offset:3px}
.map-switch{display:flex;flex-wrap:wrap;gap:8px}   /* homepage: Walking / Cycling pills above the route map */

/* ---- Homepage: full-width hero, walking/cycling panels, trust strip, direct line, review grid ---- */
.hero-full{margin-top:0;height:clamp(540px,88vh,860px);border-radius:0}
.hero-page{height:clamp(420px,65vh,680px)}/* the same banner on the holiday,Walking/Cycling holidays and About pages,a little shorter */
.hero-home>img,a little shorter */
.hero-home>picture>img{object-position:var(--focus,50% 20%)}   /* focal points: data/homepage.json 'hero_versions' */
/* Banner photos at natural brightness: no dimming, only a soft shade behind the text block (bottom left), fading out
   well before the rest of the photo. --shade (0-1, default .5) sets its strength, --shade-y and --shade-w its height and
   width; a page whose banner text would miss WCAG AA sets just enough on its <section> (homepage, Vezere, Cycling in
   the Dordogne, River Valley). */
.hero-full:after{background:radial-gradient(ellipse max(var(--shade-w,55%),480px) 75% at max(30%,calc((100% - 1280px)/2 + 380px)) var(--shade-y,88%),rgba(20,24,16,var(--shade,.5)) 0%,rgba(20,24,16,calc(var(--shade,.5) * .75)) 45%,rgba(20,24,16,0) 100%)}
.hero-full .hero-copy{left:max(clamp(20px,4.5vw,56px),calc((100% - 1280px)/2 + 56px));right:max(clamp(20px,4.5vw,56px),calc((100% - 1280px)/2 + 56px));text-shadow:0 1px 2px rgba(0,0,0,.4),0 2px 18px rgba(0,0,0,.35)}
.hero-full .back{left:max(clamp(20px,4.5vw,56px),calc((100% - 1280px)/2 + 56px));background:rgba(20,24,16,.62);padding:5px 12px;margin-left:-12px;border-radius:999px}   /* in line with the text; a small chip keeps it readable on a bright photo */
.hero-facts{max-width:none!important;font-size:clamp(14px,1.3vw,16px)!important;font-weight:500;letter-spacing:.01em}
.hero-btns{margin-top:26px;text-shadow:none}
.btn-ghost{background:transparent;color:var(--cream);border-color:var(--cream)}.btn-ghost:hover{background:var(--cream);border-color:var(--cream);color:var(--ink)}
.duo{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,340px),1fr));gap:clamp(12px,1.6vw,20px);margin-top:clamp(24px,3vw,40px)}
.duo-panel{position:relative;display:block;aspect-ratio:4/3;border-radius:6px;overflow:hidden;color:var(--cream-photo);text-decoration:none;background:var(--green)}
.duo-panel img{width:100%;height:100%;object-fit:cover;transition:transform .5s ease}
.duo-panel:hover img{transform:scale(1.03)}
/* Walking / Cycling panels: photos at natural brightness; only a soft shade behind the text (bottom left) */
.duo-panel:after{content:"";position:absolute;inset:0;background:radial-gradient(ellipse 95% 62% at 18% 100%,rgba(20,24,16,var(--shade,.5)) 0%,rgba(20,24,16,calc(var(--shade,.5) * .75)) 45%,rgba(20,24,16,0) 100%)}
.duo-panel .photo-credit{z-index:2;top:10px;bottom:auto;right:10px}
.duo-copy{position:absolute;z-index:1;left:clamp(18px,2.4vw,32px);right:clamp(18px,2.4vw,32px);bottom:clamp(18px,2.4vw,30px);display:flex;flex-direction:column;align-items:flex-start;gap:10px}
.duo-copy h2{font-size:clamp(28px,3vw,40px);line-height:1.05}
.duo-copy h2{text-shadow:0 1px 14px rgba(0,0,0,.45)}.duo-copy p{font-size:16px;line-height:1.5;max-width:min(420px,58%);text-shadow:0 1px 8px rgba(0,0,0,.45)}
.duo-copy .btn{margin-top:6px}
.trust ul{list-style:none;margin:clamp(28px,4vw,44px) 0 0;padding:18px 0;display:flex;flex-wrap:wrap;justify-content:center;gap:14px clamp(20px,3vw,44px);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.trust li{display:flex;align-items:center;gap:9px;font-size:15px;font-weight:500;color:var(--ink)}
.trust svg{width:22px;height:22px;flex:none;fill:none;stroke:var(--green);stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.direct{display:flex;flex-direction:column;gap:10px}
.direct-label{font-size:13px;letter-spacing:.12em;text-transform:uppercase;font-weight:600;color:var(--cream)}
.direct-pills{display:flex;flex-wrap:wrap;gap:10px}
.direct-pills .pill{font-size:14.5px;padding:0 16px;min-height:44px}.direct-pills .pill:hover{color:var(--ink)}
.reviews-grid{grid-auto-flow:row;grid-auto-columns:auto;grid-template-columns:repeat(auto-fit,minmax(min(100%,max(260px,calc((100% - 48px) / 3))),1fr));overflow:visible;margin:0;padding:0}
@media (min-width:601px) and (max-width:1100px){.hero-home>img,.hero-home>picture>img{object-position:var(--focus-tablet,var(--focus,18% 20%))}}
@media (max-width:600px){.hero-full{height:auto;background:var(--green-d)}.hero-full>img,.hero-full>picture>img{height:42vh;height:42svh;min-height:260px}.hero-home>img,.hero-home>picture>img{object-position:var(--focus-phone,12% 50%)}.hero-full:after{display:none}.hero-full .back{margin-left:-4px}.hero-full .hero-copy{position:static;padding:16px 20px 18px;gap:0;text-shadow:none}.hero-full .hero-copy p{font-size:15px;margin-top:8px;line-height:1.45}.hero-full .hero-facts{font-size:13px!important}.hero-btns{margin-top:14px;flex-wrap:nowrap;gap:8px}.hero-btns .btn{min-height:44px;padding:0 10px;font-size:14px;flex:1 1 0}.hero-full .hero-copy h1{font-size:30px;line-height:1.05}.duo-panel{aspect-ratio:auto;background:var(--green-d)}.duo-panel img{height:auto;aspect-ratio:4/3}.duo-panel:after{display:none}.duo-copy{position:static;padding:18px 20px 22px}.duo-copy p{max-width:none;text-shadow:none}}
.legal h2{font-size:clamp(26px,3vw,34px);margin-top:8px}.legal h3{font-size:22px;margin-top:14px}
.legal-table{border-collapse:collapse;width:100%;max-width:520px;font-size:16px}.legal-table th,.legal-table td{text-align:left;padding:10px 14px;border-bottom:1px solid var(--line)}.legal-table th{font-weight:600;color:var(--sage)}
.form .check{display:flex;align-items:flex-start;gap:10px;font-size:15px;font-weight:500;line-height:1.5}.form .check input{width:20px;min-height:0;height:20px;margin:2px 0 0;padding:0;flex:none;accent-color:var(--sage)}.form .check a{color:var(--sage)}
.form-note{margin:0;padding:12px 16px;border-left:3px solid var(--green);background:#e8dfcc;font-size:15px;line-height:1.55}
.form-privacy{margin:12px 0 0;font-size:13.5px;line-height:1.5;color:var(--muted)}.form-privacy a{color:var(--sage)}
/* Enquiry forms (site.js sends them to /api/enquiry): Turnstile's managed widget renders 72px high, so its space is kept from the start (no layout shift) */
.form-send .cf-turnstile{min-height:72px;margin:0 0 16px}.form-send noscript .form-note{margin:0 0 16px}
.form-result{font-size:16px;line-height:1.55;border-radius:4px;outline:none}.form-result:not(:empty){padding:14px 18px;border-left:4px solid var(--sage);background:#e8dfcc;color:var(--ink)}.form-result.is-error:not(:empty){border-left-color:#8a3b2a}.form-result:focus-visible{outline:2px solid var(--sage);outline-offset:2px}
.form .field-error{font-size:14px;font-weight:600;color:#8a3b2a}.form input[aria-invalid=true],.form select[aria-invalid=true],.form textarea[aria-invalid=true]{border-color:#8a3b2a;border-width:2px}
.form.is-sent{align-content:start}.form.is-sent>:not(.form-result){display:none}
.tiles .tile{position:relative;display:block;border-radius:3px;overflow:hidden}
.food-facts{margin:4px 0 0;font-size:14.5px;font-weight:500;letter-spacing:.01em;color:var(--cream)}
.food-link{align-self:flex-start;color:var(--cream);font-weight:500;text-underline-offset:4px}.food-link:hover{color:#fff}
/* Credits for photos we didn't take (data/photo-credits.json): small, bottom-right, clear of the bottom-left place tag */
.photo-credit{position:absolute;right:6px;bottom:6px;max-width:calc(100% - 12px);padding:2px 7px;border-radius:3px;background:rgba(24,28,20,.72);color:var(--cream);font:400 10.5px/1.35 'Onest',system-ui,sans-serif;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;pointer-events:none;text-decoration:none}
.g-item .photo-credit,.strip .photo-credit{top:6px;bottom:auto}
.hero-credit{z-index:2;top:12px;bottom:auto;right:12px;pointer-events:auto}.hero-credit:hover{background:rgba(24,28,20,.8);color:#fff}
.card-img .photo-credit{bottom:8px;right:8px}
.lb-credit{margin:0;color:var(--cream);font:400 12.5px 'Onest',sans-serif;text-align:center}
.credit-list{list-style:none;margin:8px 0 0;padding:0;display:flex;flex-direction:column;gap:14px}
.credit-row{display:flex;gap:16px;align-items:center;padding-bottom:14px;border-bottom:1px solid var(--line)}
.credit-row img{width:120px;aspect-ratio:4/3;object-fit:cover;border-radius:3px;flex:none}
.credit-row b{display:block;font-weight:600}.credit-row span{display:block;font-size:14.5px;color:var(--muted)}.credit-row a{color:var(--sage)}
@media (max-width:600px){.credit-row img{width:84px}.photo-credit{font-size:10px}}
/* Gallery columns placed by site.js (so a town never sits next to itself); plain CSS columns without JS */
.masonry.js-cols{column-width:auto;columns:auto;display:flex;gap:10px;align-items:flex-start}.g-col{flex:1 1 0;min-width:0}.g-item img{height:auto}
@media (max-width:600px){.tiles{grid-template-columns:repeat(2,minmax(0,1fr))}}   /* 6 food photos: 3x2, 2x3 on phones */
/* Homepage 'Who you'll be dealing with': photo at its natural 4:3 (never cropped), intro beside it, the four points in a row below */
.about-block{display:flex;flex-direction:column;gap:clamp(28px,3.5vw,44px);padding:clamp(20px,3vw,40px)}
.about-top{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:clamp(24px,4vw,56px);align-items:center}
.home-about{display:block;width:100%;height:auto;aspect-ratio:4/3;border-radius:4px}
.about-intro{display:flex;flex-direction:column;gap:20px}
.about-points{grid-template-columns:repeat(4,minmax(0,1fr))}
@media (max-width:1100px){.about-points{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:820px){.about-block{padding:0 0 28px}.about-top{grid-template-columns:1fr}.home-about{border-radius:0}.about-intro,.about-points,.about-more{margin-left:20px;margin-right:20px}}   /* phones: photo edge to edge, text below */
@media (min-width:821px) and (max-width:1200px){.about-intro{gap:16px}.about-intro h2{font-size:30px!important}.about-intro .body{font-size:15.5px;line-height:1.6}.about-intro .direct-pills .pill{font-size:14px;padding:0 14px}}   /* keep the text no taller than the photo */
@media (max-width:600px){.about-points{grid-template-columns:1fr}}
/* Homepage 'Walk all day. Eat very well.': text ~35%, photo grid ~65%, square tiles, snug padding */
.food-panel{padding-top:clamp(40px,4.5vw,56px);padding-bottom:clamp(40px,4.5vw,56px)}
.food-two{display:grid;grid-template-columns:minmax(0,35fr) minmax(0,65fr);gap:clamp(28px,3.2vw,40px);align-items:center}
@media (min-width:1101px){.food-panel{padding-left:32px;padding-right:32px}}
@media (max-width:1100px){.food-two{grid-template-columns:1fr}}
/* 'Who you'll be dealing with' points as cream cards with terracotta line icons */
.about-points{border-top:0;padding-top:0;gap:16px}
.point-card{display:flex;flex-direction:column;gap:8px;padding:24px 22px 26px;background:var(--cream);border-radius:6px;color:var(--ink)}
.point-card svg{width:30px;height:30px;margin-bottom:6px;fill:none;stroke:#b0663a;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.about-points .point-card b{font-size:23px;line-height:1.15;margin:0;color:var(--ink)}
.about-points .point-card span{font-size:16px;line-height:1.55;color:var(--ink)}
.about-more{align-self:flex-start}
/* Holiday pages: "Highlights" panel (cards share the homepage .point-card style) and "Also available" chips */
.highlights{padding:clamp(28px,4vw,48px) clamp(20px,4vw,48px) clamp(32px,4.5vw,52px);margin-bottom:clamp(48px,7vw,80px);display:flex;flex-direction:column;gap:clamp(20px,2.5vw,28px)}
.highlights h2{font-size:clamp(28px,3.2vw,38px);color:var(--cream)}
.hl-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
.hl-card{gap:6px}
.hl-card h3{font-size:22px;line-height:1.2;color:var(--ink)}
.hl-en{margin-top:-2px;font-size:14px;font-style:italic;color:var(--muted)}
.hl-card p{margin:4px 0 0;font-size:16px;line-height:1.55;color:var(--ink)}
@media (max-width:1100px){.hl-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:600px){.hl-grid{grid-template-columns:1fr}}
.also{display:flex;flex-direction:column;gap:10px}
.also b{font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--sage)}
.also ul{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:8px}
.also li{padding:6px 14px;border:1px solid var(--line);border-radius:999px;background:#e8dfcc;font-size:14px;line-height:1.35;color:var(--ink)}
/* Holiday description: standfirst and side note (Plus Beaux Villages trial) */
.intro .lead,.standfirst{font-family:'Gloock',Georgia,serif;font-size:clamp(22px,2.1vw,27px);line-height:1.35;color:var(--ink)}
.panel-green .standfirst{color:var(--cream)}   /* e.g. About: More than a holiday */
.side-note{margin-top:4px;padding:18px 20px 20px;border:1px solid var(--line);border-radius:6px;display:flex;flex-direction:column;gap:4px}
.side-note b{font-family:'Gloock',Georgia,serif;font-weight:400;font-size:19px;line-height:1.25}
.side-note i{font-size:14px;color:var(--muted)}
.intro .side-note p{margin:6px 0 0;font-size:15.5px;line-height:1.6}
/* FAQ page (/faq): jump list and <details> accordions, filled in by tools/build.py from data/faq.json */
.faq-page{display:flex;flex-direction:column;gap:clamp(36px,5vw,56px);max-width:900px}
.faq-jump{display:none;flex-wrap:wrap;gap:8px}
.faq-jump a{padding:6px 14px;border:1px solid var(--green);border-radius:999px;font-size:14px;font-weight:500;color:var(--sage);text-decoration:none}
.faq-jump a:hover{background:var(--green);color:var(--cream)}
@media (min-width:900px){.faq-jump{display:flex}}   /* desktop only */
.faq-group{display:flex;flex-direction:column;scroll-margin-top:100px}
.faq-group h2{font-size:clamp(26px,3vw,34px);margin-bottom:10px}
.faq{border-top:1px solid var(--line)}
.faq:last-child{border-bottom:1px solid var(--line)}
.faq summary{display:flex;justify-content:space-between;align-items:baseline;gap:16px;padding:16px 2px;cursor:pointer;list-style:none;font-size:17px;font-weight:600;line-height:1.4;color:var(--ink)}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";flex:none;font:400 24px/1 'Onest',sans-serif;color:#b0663a}
.faq[open] summary::after{content:"−"}
.faq summary:focus-visible{outline:2px solid var(--green);outline-offset:2px}
.faq-a{padding:0 2px 18px;display:flex;flex-direction:column;gap:10px;max-width:760px}
.faq-a p,.faq-a li{font-size:16px;line-height:1.65;color:var(--ink)}
.faq-a ul{margin:0;padding-left:22px;display:flex;flex-direction:column;gap:4px}
.faq-a a,.faq-note a{color:var(--sage);font-weight:500;text-underline-offset:3px}
.faq-note{font-size:15px}
.facts-faq{margin-top:12px}
/* Call / WhatsApp pills and the inline WhatsApp icon (built from data/contact.json by tools/build.py) */
:root{--wa-icon:currentColor}   /* WhatsApp icon colour: set to #25D366 for WhatsApp green */
.pill{gap:9px;white-space:nowrap;padding:0 20px;min-height:46px}
.pill .ic{width:18px;height:18px;flex:none}
.pill .ic-wa,.wa-inline .ic-wa{color:var(--wa-icon)}
.pill-row{gap:10px}
.wa-inline{display:inline-flex;align-items:center;justify-content:center;vertical-align:middle;width:24px;height:24px;margin:-4px -2px -4px 3px;border-radius:50%}
.wa-inline .ic{width:18px;height:18px}
.wa-inline:hover{background:rgba(0,0,0,.06)}
.price-box{padding-left:24px;padding-right:24px}
.price-box .pill-row .pill{flex:1 1 auto;padding:0 12px}   /* room for the email pill without smaller text */
.foot-pills{margin-top:-6px;display:flex;flex-direction:column;align-items:flex-start;gap:10px}   /* Get in touch: the three pills, stacked; first pill's text level with the first links */
.foot-col .social{margin-top:20px}   /* a little more room above than between the pills */
.foot .pill{font-size:14.5px;padding:0 16px}
.foot .pill:hover{color:var(--ink)}   /* .foot a:hover would otherwise turn the text white on the white hover fill */
@media (max-width:767px){.foot-logo img{width:88px}}
/* Optional "badge" header, off by default: add class="logo-badge" to <body>. At the top of the page the logo hangs a
   third of its height below the bar, over the hero, with a soft shadow; it tucks back into the bar when scrolled. */
body.logo-badge header.site:not(.is-scrolled) .logo{margin-bottom:calc(-112px / 3 - 12px);filter:drop-shadow(0 6px 14px rgba(20,24,16,.3))}
body.logo-badge .hero .back{top:64px}   /* clear of the hanging logo */
@media (max-width:767px){body.logo-badge header.site:not(.is-scrolled) .logo{margin-top:-5px;margin-bottom:calc(-68px / 3 - 20px)}body.logo-badge .hero .back{top:44px}}
/* About: "Our mission" closing band, full width, centred at a comfortable reading width */
.mission-band{margin-top:clamp(40px,6vw,72px);padding:clamp(56px,8vw,104px) 20px}
.mission-inner{max-width:720px;margin:0 auto;display:flex;flex-direction:column;align-items:center;gap:18px;text-align:center}
.mission-band h2.eyebrow{font-family:'Onest',sans-serif}
.mission-band .body{color:var(--cream);margin:0}
.mission-band .row{justify-content:center;margin-top:10px}
/* Walking / Cycling holidays: the lead line over the banner photo, in the holiday pages' serif lead style */
/* About: a cream gap between the "Our mission" band and the footer so the two greens don't merge */
.mission-band{margin-bottom:64px}
@media (max-width:767px){.mission-band{margin-bottom:40px}}
/* Walking / Cycling holidays: three points under the banner, in the homepage strip's line-icon style */
.points{list-style:none;margin:clamp(28px,4vw,44px) 0 0;padding:clamp(20px,2.6vw,30px) 0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px clamp(20px,3vw,44px);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.points li{display:flex;flex-direction:column;gap:10px}
.points svg{width:44px;height:44px;flex:none;fill:none;stroke:var(--green);stroke-width:2px;vector-effect:non-scaling-stroke;stroke-linecap:round;stroke-linejoin:round}   /* the drawing fills ~2/3 of the box: ~30px icon, same 2px line */
.points svg *{vector-effect:non-scaling-stroke}
.points h2,.points h3{font-size:clamp(19px,1.7vw,22px);line-height:1.25}
.points p{margin:4px 0 0;font-size:15.5px;line-height:1.55;color:var(--ink)}
@media (max-width:600px){.points{grid-template-columns:1fr;gap:18px}.points li{flex-direction:row;align-items:flex-start;gap:14px}.points svg{width:38px;height:38px;margin-top:-2px}}   /* phones: one per row, icon on the left */
.rv-holiday{color:var(--ink);font-weight:400}/* optional second line under a reviewer's name */
/* About page */
.hero-page>img,/* optional second line under a reviewer's name */
/* About page */
.hero-page>picture>img{object-position:var(--focus,50% 50%)}   /* each banner's focal point: 'focus' in data/trip-photos.json */
@media (min-width:601px) and (max-width:900px){.hero-page>img,.hero-page>picture>img{object-position:var(--focus-tablet,var(--focus,50% 50%))}}
@media (max-width:600px){.hero-page>img,.hero-page>picture>img{object-position:var(--focus-phone,50% 50%)}}
.story{padding-top:clamp(48px,7vw,88px)}
.story-text{max-width:820px;display:flex;flex-direction:column;gap:16px}
.timeline{list-style:none;margin:clamp(32px,4vw,44px) 0 0;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:28px}
.timeline li{position:relative;padding-top:32px;display:flex;flex-direction:column;gap:6px}
.timeline li::before{content:"";position:absolute;top:0;left:0;width:14px;height:14px;box-sizing:border-box;border-radius:50%;border:2px solid var(--green);background:var(--cream)}
.timeline li::after{content:"";position:absolute;top:6px;left:18px;right:-24px;border-top:2px solid var(--green)}   /* joins this dot to the next */
.timeline li:last-child::after{display:none}
.timeline b{font-family:'Gloock',Georgia,serif;font-weight:400;font-size:20px;line-height:1.2;color:var(--ink)}
.timeline span{font-size:15.5px;line-height:1.55;color:var(--ink)}
@media (max-width:600px){.timeline{grid-template-columns:1fr;gap:22px}.timeline li{padding:0 0 0 30px}.timeline li::before{top:4px}.timeline li::after{top:22px;left:6px;right:auto;bottom:-26px;border-top:0;border-left:2px solid var(--green)}}   /* phones: vertical */
.about-cassie{padding-top:clamp(48px,7vw,88px);padding-bottom:clamp(48px,7vw,88px)}
/* Hello, I'm Cassie: the text beside the two photos, which share one height (nothing cropped, nothing pinned while scrolling) */
@media (min-width:901px){.about-cassie{display:grid;grid-template-columns:minmax(0,4fr) minmax(0,7fr);gap:clamp(32px,4vw,56px);align-items:center}}
.about-cassie-text h2{font-size:clamp(30px,3.4vw,40px)}
.hello-photos{display:flex;gap:12px;align-items:flex-start}
.hello-photos figure{margin:0;min-width:0}
.hello-photos img{display:block;width:100%;height:auto;border-radius:4px}
@media (max-width:900px){.hello-photos{margin-top:28px}}
@media (max-width:600px){.hello-photos{flex-direction:column}.hello-photos figure{flex:none!important;width:100%}.hello-photos figure+figure{width:70%}}   /* phones: one above the other, big enough to see */
.favs{display:flex;flex-direction:column;gap:16px;padding-bottom:clamp(48px,7vw,88px)}   /* About: Cassie's favourites, one card per holiday */
.fav-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(16px,2vw,24px);margin-top:12px}
.fav-card{position:relative;display:flex;flex-direction:column;background:var(--soft);border-radius:6px;overflow:hidden}   /* position: keeps a photo credit on its own photo */
.fav-card img{width:100%;height:auto;aspect-ratio:3/2;object-fit:cover}
.fav-card>div{padding:16px 18px 20px;display:flex;flex-direction:column;gap:6px}
.fav-card h3{font-size:21px;line-height:1.2}.fav-card h3 a{text-decoration:none}.fav-card h3 a:hover{text-decoration:underline;text-underline-offset:3px}
.fav-card p{font-size:15.5px;line-height:1.55}
.fav-card .photo-credit{top:8px;bottom:auto;right:8px}   /* on the photo, not the text below it */
@media (max-width:1100px){.fav-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:600px){.fav-grid{grid-template-columns:1fr}}
.why .points{margin-top:24px}
.points-4{grid-template-columns:repeat(4,minmax(0,1fr))}
.points-4 h3{font-size:clamp(18px,1.45vw,20px)}   /* four across: each heading fits on one line */
@media (max-width:1100px){.points-4{grid-template-columns:repeat(2,minmax(0,1fr))}}   /* tablets: 2 x 2 */
@media (max-width:600px){.points-4{grid-template-columns:1fr}}
.behind{padding-top:clamp(56px,8vw,96px)}
.behind-head{margin-bottom:clamp(18px,2.4vw,28px)}   /* "Behind the scenes": same heading size as "What our guests say" */
.behind .strip{padding:0 clamp(0px,1.5vw,24px)}
.behind-trip{padding-top:clamp(48px,7vw,80px)}   /* holiday pages: after "What to expect" */

/* About: Our story photo beside the text (above it on phones); photos shown at their natural shape */
.story-top{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:clamp(28px,4vw,56px);align-items:center}
.story-photo{width:100%;height:auto;border-radius:4px}
@media (max-width:900px){.story-top{grid-template-columns:1fr}.story-photo{order:-1}}
.strip-even{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:24px 10px;padding:0 clamp(0px,1.5vw,24px)}   /* Behind the scenes: rows of three, all the same size */
.strip-even figure{margin:0;min-width:0;grid-column:span 2}
.strip-even figure:nth-child(3n+1):nth-last-child(2){grid-column:2/span 2}   /* a last row of two or one sits in the middle */
.strip-even figure:nth-child(3n+1):last-child{grid-column:3/span 2}
.strip-even[data-n="4"] figure:nth-child(odd){grid-column:2/span 2}   /* four photos: two rows of two */
.strip-even[data-n="4"] figure:nth-child(even){grid-column:4/span 2}
.strip-even img{display:block;width:100%;height:auto;aspect-ratio:1/1;object-fit:cover;border-radius:3px}   /* square, centred on each photo's 'focus' */
.strip-even figcaption{margin-top:8px;font-size:14px;color:var(--muted);padding:0 4px}
.strip-wide figure:nth-child(-n+3) img{aspect-ratio:16/9}   /* About: the top row is wide, so the four at dinner all fit */
@media (max-width:700px){.strip-even{grid-template-columns:1fr;gap:20px}.strip-even figure{grid-column:1/-1!important}.strip-even img{aspect-ratio:var(--ar,auto)}}   /* phones: one above the other, uncropped */

/* Homepage banner, version B (data/homepage.json 'hero_version': "B"): the old site's split band. The heading, lead line
   and buttons sit in cream on a site-green panel on the left; the photo fills the right at full brightness, no shade.
   Below 901px it stacks like the phone layout: photo on top, green panel beneath. */
.hero-split{background:var(--green)}
.hero-split:after{display:none}
.hero-split .hero-copy{text-shadow:none}
@media (min-width:901px){
  .hero-split{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);height:clamp(500px,74vh,720px)}.hero-split>img,.hero-split>picture>img{grid-column:2;grid-row:1;height:100%}
  .hero-split .hero-copy{position:static;grid-column:1;grid-row:1;align-self:center;display:block;
    padding:clamp(56px,6vw,88px) clamp(28px,3.5vw,56px) clamp(40px,5vw,72px) max(clamp(20px,4.5vw,56px),calc((100vw - 1280px)/2 + 56px))}
  .hero-split .hero-copy h1{font-size:clamp(40px,4.3vw,64px)}
}
@media (min-width:601px) and (max-width:900px){
  .hero-split{height:auto}.hero-split>img,.hero-split>picture>img{height:46vh;height:46svh;min-height:300px}
  .hero-split .hero-copy{position:static;padding:28px clamp(20px,4.5vw,56px) 32px}
}

/* Banner text over a photo uses --cream-photo (phones and the split band keep --cream: their text is on green) */
.hero .back{color:var(--cream-photo)}
@media (min-width:601px){
  .hero-full:not(.hero-split) .hero-copy{color:var(--cream-photo)}
  .hero-full:not(.hero-split) .stops li:before{background:var(--cream-photo)}
  .hero-full:not(.hero-split) .btn-ghost{color:var(--cream-photo);border-color:var(--cream-photo)}
  .hero-full:not(.hero-split) .btn-ghost:hover{background:var(--cream-photo);color:var(--ink)}
  .hero-full:not(.hero-split) .btn-light{background:var(--cream-photo);border-color:var(--cream-photo)}
}
.rt-mark{font:600 12px 'Onest',sans-serif;color:var(--green-d);padding:2px 7px;border-radius:4px}   /* labelled points on a day map (hotels near the end) */
/* Homepage banner: the H1 is the small line above the big headline (a <p class="hero-title"> that looks exactly like the old h1) */
.hero-copy h1.hero-kind{font:600 13px/1.4 'Onest',sans-serif;letter-spacing:.14em;text-transform:uppercase;max-width:none;margin:0 0 14px}
.hero-copy p.hero-title{font-family:'Gloock',Georgia,serif;font-weight:400;font-size:clamp(38px,6.2vw,76px);line-height:1.02;max-width:820px;margin:0;text-wrap:balance}
@media (max-width:600px){.hero-full .hero-copy p.hero-title{font-size:30px;line-height:1.05;margin:0}.hero-full .hero-copy h1.hero-kind{font-size:12px;margin-bottom:10px}}   /* as the phone h1 rule above */
/* Key facts: a short note under a value (e.g. "Optional walk on day 7 (6 km)") */
.facts-note{display:block;font-size:13px;line-height:1.4;margin-top:4px;color:var(--muted)}
/* Walking / Cycling holidays: "Compare" table (stacks into cards on phones), "How it works", reviews */
.compare-wrap{margin-top:24px}
.compare-table{width:100%;border-collapse:collapse;font-size:15.5px;color:var(--ink)}
.compare-table th,.compare-table td{text-align:left;padding:14px 12px;border-bottom:1px solid var(--line);vertical-align:top}
.compare-table thead th{font-size:12px;letter-spacing:.1em;text-transform:uppercase;font-weight:600;color:var(--sage);border-bottom:2px solid var(--line)}
.compare-table tbody th{font-family:'Gloock',Georgia,serif;font-weight:400;font-size:18px}
.compare-table a{color:var(--sage);text-underline-offset:3px}
.compare-note{margin-top:12px;font-size:14px;color:var(--muted)}
@media (max-width:760px){
  .compare-table thead{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
  .compare-table,.compare-table tbody,.compare-table tr,.compare-table th,.compare-table td{display:block;width:100%}
  .compare-table tr{background:#ebe2d0;border-radius:6px;padding:16px 18px;margin-bottom:12px}
  .compare-table th,.compare-table td{border:0;padding:4px 0}
  .compare-table tbody th{font-size:20px;padding-bottom:8px}
  .compare-table td{display:flex;justify-content:space-between;gap:16px}
  .compare-table td::before{content:attr(data-label);font-size:12px;letter-spacing:.08em;text-transform:uppercase;font-weight:600;color:var(--sage);flex:none}
  .compare-table td{text-align:right}
}
.steps{list-style:none;margin:24px 0 16px;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr));gap:16px;counter-reset:step}
.steps li{counter-increment:step;background:#ebe2d0;border-radius:6px;padding:22px 22px 24px;display:flex;flex-direction:column;gap:8px;color:var(--ink)}
.steps li::before{content:counter(step);font:400 30px/1 'Gloock',Georgia,serif;color:#b0663a}
.steps b{font-size:17px}
.steps span{font-size:15.5px;line-height:1.6}
.quotes{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));gap:16px;margin-top:24px}
.guest-say .body{margin-top:12px;color:var(--ink)}
.quote{margin:0;background:#ebe2d0;border-radius:6px;padding:26px 26px 24px;display:flex;flex-direction:column;gap:14px}
.quote blockquote{margin:0;font-size:16px;line-height:1.7;color:var(--ink)}
.quote figcaption{font-family:'Gloock',serif;font-size:18px;color:var(--ink);padding-top:12px;border-top:1px solid var(--line);margin-top:auto}
.quote figcaption span{display:block;font-family:'Onest',sans-serif;font-size:14px;margin-top:2px}
.trip-faq-list{margin-top:20px;max-width:900px}
.trip-faq .faq-note{margin-top:16px}
.faq{scroll-margin-top:100px}
/* Gallery intro */
.gallery-intro{max-width:820px;color:var(--ink);padding-bottom:24px}
.gallery-intro a{color:var(--sage)}
/* The villages guide */
.guide-head{max-width:900px}
.byline{font-size:14px;color:var(--muted)}
.guide-body{max-width:860px;display:flex;flex-direction:column;gap:18px;padding-bottom:clamp(64px,9vw,104px)}
.guide-body>p,.village p,.guide-table p{font-size:17px;line-height:1.7;color:var(--ink)}
.guide-body a:not(.btn){color:var(--sage);text-underline-offset:3px}
.guide-body .h2{font-size:clamp(28px,3.2vw,38px);margin-top:18px}
.guide-sub{border-top:1px solid var(--line);padding-top:28px}
.village{display:flex;flex-direction:column;gap:14px;scroll-margin-top:100px}
.village figure{margin:0;position:relative}
.village .photo-credit{top:8px;bottom:auto;right:8px}   /* credits for photos we didn't take: on the photo, top right */
.village img{display:block;width:100%;height:auto;aspect-ratio:3/2;object-fit:cover;border-radius:4px}
.village figcaption{margin-top:8px;font-size:14px;color:var(--muted)}
.village .visit-on{font-size:15.5px;font-weight:500}
.guide-table{display:flex;flex-direction:column;gap:14px;margin-top:18px}
.related-holidays a{color:var(--sage);text-underline-offset:3px}
@media (min-width:901px){.hero-split .hero-copy p.hero-title{font-size:clamp(40px,4.3vw,64px)}}   /* homepage version B, as its h1 rule */
.hl-link{margin-top:8px;font-size:15px;font-weight:500;color:var(--sage);text-underline-offset:3px}   /* e.g. the villages guide */
.compare-more{margin-top:14px;font-size:16px;color:var(--ink)}
.compare-more a{color:var(--sage);font-weight:500;text-underline-offset:3px}
/* Price box: length pills (as the map's Walking / Cycling pills, in cream on the green box) and the price for that length */
.length-pills{display:flex;flex-wrap:wrap;gap:6px}
.price-box .chip{border-color:rgba(243,232,216,.7);color:var(--cream)}
.price-box .chip:hover{border-color:var(--cream)}
.price-box .chip.on{background:var(--cream);border-color:var(--cream);color:var(--green-d)}
.price-box .chip:focus-visible{outline:2px solid var(--cream);outline-offset:2px}
.chip-static{display:inline-flex;align-items:center;cursor:default}
.price-box .price-label{margin-bottom:-8px}
.price-live{display:flex;flex-direction:column;gap:6px}
.price-box .price-note{font-size:14px;line-height:1.5;margin:2px 0 0}
.price-box a.price-solo{text-align:left;font-size:15px;text-decoration:underline;text-underline-offset:3px;color:var(--cream)}
/* "2027 prices": lengths across, the chosen one highlighted; cards on phones */
.prices{scroll-margin-top:100px}
.price-table-wrap{margin-top:24px;max-width:900px}
.price-table{width:100%;border-collapse:collapse;font-size:16px;color:var(--ink)}
.price-table th,.price-table td{padding:14px 12px;text-align:left;border-bottom:1px solid var(--line)}
.price-table thead th{font-family:'Gloock',Georgia,serif;font-weight:400;font-size:19px}
.price-table thead th span{display:block;font-family:'Onest',sans-serif;font-size:13px;color:var(--muted)}
.price-table tbody th{font-weight:500;font-size:15px}
.price-table .on{background:#ebe2d0}
.price-table td{font-variant-numeric:tabular-nums}
.price-cards{display:none}
.price-notes{list-style:none;margin:16px 0 0;padding:0;display:flex;flex-direction:column;gap:6px;font-size:15px;line-height:1.55;color:var(--ink);max-width:900px}
.price-notes b{font-weight:600}
@media (max-width:640px){
  .price-table-wrap{display:none}
  .price-cards{display:grid;gap:10px;margin-top:20px}
  .price-card{border:1px solid var(--line);border-radius:6px;padding:14px 16px;color:var(--ink)}
  .price-card.on{background:#ebe2d0;border-color:#ebe2d0}
  .price-card b{display:block;font-family:'Gloock',Georgia,serif;font-weight:400;font-size:19px;margin-bottom:6px}
  .price-card b span{font-family:'Onest',sans-serif;font-size:13px;color:var(--muted)}
  .price-card p{display:flex;justify-content:space-between;gap:12px;font-size:15px;padding:4px 0;margin:0}
}
/* Premium holidays (data/holiday-facts.json 'collection'): the tagline under the name */
.hero-copy .hero-tagline{font-family:'Gloock',Georgia,serif;font-size:clamp(22px,2.6vw,32px);line-height:1.15;margin-top:6px;max-width:820px}
@media (max-width:600px){.hero-full .hero-copy .hero-tagline{font-size:20px;margin-top:4px}}
.card-tagline{font-family:'Gloock',Georgia,serif;font-size:17px;color:var(--ink);margin-top:-4px}
.cmp-tagline{display:block;font-family:'Onest',sans-serif;font-size:13px;color:var(--muted);margin-top:2px}
/* Practical information on the holiday pages (tools/tripinfo.py, data/practical.json) */
.climb{font:600 13px 'Onest',sans-serif;background:#e2d9c6;padding:4px 10px;border-radius:999px;white-space:nowrap}   /* a day's climb, beside its distance */
.facts-link{display:block;width:fit-content;margin-top:4px;font-size:14px;color:var(--sage);text-underline-offset:3px;align-self:flex-start}
.glance{max-width:900px;display:flex;flex-direction:column;gap:12px}
.glance-h{font-size:clamp(22px,2.2vw,26px)}
.glance-table{width:100%;border-collapse:collapse;font-size:15px;line-height:1.45}
.glance-table th,.glance-table td{text-align:left;padding:10px 12px 10px 0;border-bottom:1px solid var(--line);vertical-align:top}
.glance-table thead th{font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--sage);font-weight:600;border-bottom-color:var(--ink)}
.glance-table tbody th{font:400 17px 'Gloock',serif;color:var(--sage);white-space:nowrap}
.glance-table td[data-label=Distance],.glance-table td[data-label=Climb]{white-space:nowrap}
.glance-note{font-size:13.5px;color:var(--muted)}
@media (max-width:700px){   /* phones: each day becomes a small card, no sideways scrolling */
  .glance-table thead{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
  .glance-table tr{display:block;padding:12px 0;border-bottom:1px solid var(--line)}
  .glance-table th,.glance-table td{display:block;padding:2px 0;border:0;white-space:normal!important}
  .glance-table tbody th{margin-bottom:2px}
  .glance-table td[data-label=Route]{font-weight:600}
  .glance-table td:not([data-label=Route])::before{content:attr(data-label);display:inline-block;min-width:88px;font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--sage);font-weight:600}
}
.inc-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));gap:24px 48px;max-width:900px}
.inc-grid h3{font-size:clamp(20px,2vw,24px);margin-bottom:12px}
.inc-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}
.inc-list li{position:relative;padding-left:28px;font-size:16px;line-height:1.5}
.inc-list li::before{position:absolute;left:2px;top:0;font-weight:700}
.inc-yes li::before{content:"✓";color:var(--green)}
.inc-no li::before{content:"–";color:#b0663a}
.practical .faq-a p b{font-weight:600}
.price-actions{display:flex;flex-direction:column;gap:10px}
.btn-line-light{background:transparent;color:var(--cream);border-color:var(--cream)}
.btn-line-light:hover{background:rgba(243,232,216,.14);color:var(--cream)}
/* Optional extra days after the day-by-day (Castles & Caves: walks added for the longer versions) */
.extra-days{max-width:900px;display:flex;flex-direction:column;gap:10px;margin-top:28px;padding-top:24px;border-top:2px solid var(--gold)}
.extra-h{font-size:clamp(22px,2.2vw,26px)}.extra-lead{font-size:16px;line-height:1.6;max-width:760px}
.day[data-extra]>span{font-size:17px}
.review figcaption span.rv-trip,.quote figcaption span.rv-trip{display:inline;font-family:'Onest',sans-serif;font-size:14px;margin:0}   /* "Name · Holiday" on one line */
.region-inset{width:clamp(130px,30%,230px);background:var(--cream);border:2px solid var(--cream);border-radius:6px;box-shadow:0 1px 6px rgba(43,50,38,.35);overflow:hidden;margin:0 10px 10px 0!important}   /* a far-away route (the Ardèche) in the corner of a region map */
.region-inset-label{display:block;padding:3px 8px;font:500 12px/1.35 'Onest',sans-serif;color:var(--ink)}
.region-inset-map{width:100%;height:clamp(100px,22vh,160px)}
.region-inset[hidden]{display:none}
@media (max-width:600px){.region-inset{width:118px;margin:0 6px 6px 0!important}.region-inset-label{font-size:10.5px;padding:2px 6px}.region-inset-map{height:84px}}   /* phones: a smaller inset */
.review figcaption span.sample-badge,.quote figcaption span.sample-badge{display:inline-block;width:auto;margin:0 0 0 8px;font:600 11px/1.5 'Onest',sans-serif}   /* a placeholder review (preview only) */
@media (min-width:761px){.duo{grid-template-columns:1.6fr 1fr}.duo-panel{aspect-ratio:auto;height:clamp(360px,34vw,500px)}}   /* homepage: walking (first) gets the wider panel */
.more-hol{margin-top:20px}.more-hol a{font-weight:500;color:var(--sage)}
.fx:empty,.fx-note:empty{display:none}.price-live .fx{display:block;font-size:14px;margin-top:4px}.price .fx{margin-left:.3em}.price-table .fx,.price-card .fx{display:block;font-size:13px;font-weight:400}.fx-note{font-size:14px;margin-top:12px;color:var(--muted)}   /* approximate prices in the visitor's currency (Worker) */
.reply-time,.form-reply{font-size:14px;color:var(--muted);margin:10px 0 0;max-width:62ch}.foot-reply{font-size:13px;margin:10px 0 0;max-width:36ch}
.gt-list{margin:0;padding-left:1.2em;display:grid;gap:8px;font-size:17px;line-height:1.6}.gt-table-wrap{overflow-x:auto}.gt-table{width:100%;border-collapse:collapse;font-size:15px;line-height:1.5}.gt-table th,.gt-table td{text-align:left;vertical-align:top;padding:12px 14px 12px 0;border-bottom:1px solid rgba(83,96,75,.25)}.gt-table thead th{font-size:13px;letter-spacing:.06em;text-transform:uppercase;font-weight:500}.gt-table tbody th{font-weight:500}.gt-table a{color:var(--sage)}@media (max-width:700px){.gt-table thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}.gt-table,.gt-table tbody,.gt-table tr,.gt-table th,.gt-table td{display:block}.gt-table tr{padding:12px 0;border-bottom:1px solid rgba(83,96,75,.25)}.gt-table th,.gt-table td{border:0;padding:2px 0}.gt-table td::before{content:attr(data-label);display:block;font-size:12px;letter-spacing:.06em;text-transform:uppercase;opacity:.8}}
.price-box .box-reply{font-size:13px;line-height:1.45;margin:4px 0 0;color:var(--cream)}
/* Walking holidays chooser */
.chooser-filters{display:flex;flex-wrap:wrap;gap:8px;margin-top:18px}.chooser-table tbody th .cmp-tagline{display:block;margin-top:4px;font-family:'Onest',sans-serif;font-size:14px;color:var(--ink)}.chooser-table td{font-size:15px}.chooser-table tr[hidden]{display:none}
/* Most Beautiful Villages: the seven villages at a glance */
.glance7-list{list-style:none;margin:20px 0 0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,250px),1fr));gap:12px;counter-reset:v}.glance7-list li{counter-increment:v}.glance7-list a{display:flex;flex-direction:column;gap:4px;height:100%;padding:16px 18px;background:#ebe2d0;border-radius:6px;color:var(--ink);text-decoration:none}.glance7-list b{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:4px}.glance7-list a:hover b,.glance7-list a:focus-visible b{text-decoration-thickness:2px}.glance7-list b{font-family:'Gloock',Georgia,serif;font-weight:400;font-size:20px;color:var(--sage)}.glance7-list b::before{content:counter(v) '. '}.glance7-list span{font-size:15px;line-height:1.45}
.strip-3{grid-template-columns:repeat(2,1fr)}@media (min-width:700px){.strip-3{grid-template-columns:repeat(3,1fr)}}
/* Cycling in the Dordogne: e-bikes */
.ebike-list{margin:8px 0 0;padding-left:1.2em;display:grid;gap:8px;font-size:17px;line-height:1.6;color:var(--ink)}.ebike .body{max-width:68ch}
/* Guide pages */
.guide-date{font-size:14px;color:var(--muted)}.guide-photo{margin:12px 0 0}.guide-photo img{width:100%;height:auto;max-height:520px;object-fit:cover;border-radius:4px}.guide-photo figcaption,.gems-photos figcaption{font-size:14px;color:var(--muted);margin-top:8px}.guide-sec .gt-list{color:var(--ink)}.guide-sec .compare-wrap{margin-top:8px}.grades,.months{margin:8px 0 0;display:grid;gap:14px}.grades dt,.months dt{font-family:'Gloock',Georgia,serif;font-size:20px;color:var(--sage)}.grades dd,.months dd{margin:2px 0 0;font-size:17px;line-height:1.6;color:var(--ink)}.gems-photos{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr));gap:12px}.gems-photos img{width:100%;height:auto;aspect-ratio:4/3;object-fit:cover;border-radius:4px}.guide-faq{margin-top:40px}.guide-faq .faq{margin-top:16px}
.ebike h2,.glance7 h2{margin-bottom:14px}.ebike .faq-note{margin-top:14px}
.gem-note p{max-width:820px;margin:0 0 clamp(40px,6vw,64px);padding:18px 22px;background:#ebe2d0;border-left:4px solid var(--sage);border-radius:4px;font-size:17px;line-height:1.6;color:var(--ink)}.gem-note a{color:var(--sage);font-weight:500;text-underline-offset:3px;white-space:nowrap}.gems-photos .gem-fig:only-child{max-width:620px}.gem-fig img{width:100%;height:auto;aspect-ratio:4/3;object-fit:cover;border-radius:4px}.gem-fig figcaption{font-size:14px;color:var(--muted);margin-top:8px}   /* Cassie's hidden gems */
/* The local team behind the routes (data/site.json) */
.hero-local{font-size:clamp(15px,1.4vw,18px);font-weight:500;margin-top:6px}.local-line{font-weight:500;color:var(--sage);border-left:3px solid var(--sage);padding-left:14px}.why-short{margin-top:16px;padding:16px 18px;background:#ebe2d0;border-radius:6px;color:var(--ink);font-size:15px}.why-short b{display:block;font-family:'Gloock',Georgia,serif;font-weight:400;font-size:19px;color:var(--sage);margin-bottom:8px}.why-short ul{list-style:none;margin:0 0 10px;padding:0;display:grid;gap:8px}.why-short li{display:flex;gap:10px;align-items:center}.why-short svg{width:20px;height:20px;flex:none;fill:none;stroke:var(--sage);stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}.why-short a{color:var(--sage);font-weight:500;text-underline-offset:3px}.local-why{margin-top:20px}
.dist,.climb{white-space:normal}.dist .u,.climb .u{white-space:nowrap}.climb{display:inline-block;max-width:100%;border-radius:12px;line-height:1.45}   /* both units: the pill may wrap between figures on phones */
@media (max-width:600px){.place-tag{font-size:12px}.photo-credit{font-size:12px}}.photo-credit{font-size:12px}.guest-tag small{font-size:12px}   /* legible text: nothing under 12px (Lighthouse, 10 Oct 2026) */
.points .pt-h{display:block;font-family:'Gloock',Georgia,serif;font-weight:400;font-size:clamp(19px,1.7vw,22px);line-height:1.25;margin:0}
.rv-stars{display:block;color:var(--sage);font-size:15px;letter-spacing:2px;margin-bottom:6px}.rv-google{margin:8px 0 0;font-size:14px}.rv-google a,.rv-trip a{color:var(--sage);text-underline-offset:3px}   /* a review with a rating and a Google source (data/reviews.json) */
.fav-note{display:block;margin-top:6px;font-size:13px;color:var(--muted)}
