/* The public facility page (lib/facilitypage.js). Home9 tokens from app.css:
   white paper, ink, walnut (--pine) for actions, green for "open".
   One bold element: the "Book a stay" band (steel-deep), where a guest picks a
   kind of stay by tab and reserves a specific spot or room. Everything around
   it stays quiet: sentence-case headings above content, soft panels instead
   of hairline rules, three radii by role (4px controls, 8px tiles, 14px big
   surfaces). Phone first; wider layouts are the min-width blocks. */
.fp{--gut:16px;--steel:#0E2747;--steel-2:#1B3B68;--steel-ink:#E9EEEF;--steel-mute:#A9B6B9;
  --r-s:4px;--r-m:8px;--r-l:14px;
  max-width:1240px;margin:0 auto;padding:0 var(--gut) 96px;font-variant-numeric:tabular-nums}
.fp h1,.fp h2,.fp h3{font-family:var(--serif);letter-spacing:-.018em;color:var(--ink)}
.fp img{display:block;width:100%;height:100%;object-fit:cover}
.fp picture{display:block;width:100%;height:100%}
.fp a:focus-visible,.fp button:focus-visible,.fp summary:focus-visible{outline:3px solid var(--accent,#1E88E5);outline-offset:2px}

/* ---- hero ------------------------------------------------------------------ */
.fp-hero{display:flex;flex-direction:column-reverse;gap:20px;padding-top:12px}
.fp-crumbs{font-size:13px;color:var(--ink-3);display:flex;gap:8px;margin-bottom:12px}
.fp-crumbs a{color:var(--ink-3)}
.fp h1{font-size:34px;line-height:1.02;margin:0 0 10px;font-weight:800;overflow-wrap:anywhere;letter-spacing:-.03em}
.fp-lede{font-size:19px;line-height:1.35;color:var(--ink);margin:0 0 10px;max-width:30ch;font-weight:600}
.fp-tagline{font-size:15px;color:var(--pine);font-weight:700;margin:0 0 4px}
.fp-addr{font-size:14px;color:var(--ink-3);margin:0 0 20px}

.fp-mosaic{position:relative;margin:0 calc(var(--gut) * -1);aspect-ratio:4/3;background:var(--surface-2)}
.fp-mosaic figure{margin:0;overflow:hidden;background:var(--surface-2)}
.fp-m-main{height:100%}
.fp-m-side{display:none}
.fp-m-all{position:absolute;right:12px;bottom:12px;background:rgba(255,255,255,.94);color:var(--ink);font-size:13.5px;font-weight:700;
  padding:9px 14px;border-radius:var(--r-s);box-shadow:0 2px 10px rgba(20,24,26,.18)}
.fp-m-all:hover{text-decoration:none;background:#fff}

.fp-book{background:var(--paper);border:1px solid var(--line);border-radius:var(--r-l);padding:16px;box-shadow:var(--shadow)}
.fp-book-row{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.fp-book label{display:flex;flex-direction:column;gap:5px;font-size:13px;font-weight:700;color:var(--ink-2);min-width:0}
.fp-book label:nth-child(3){grid-column:1/-1}
.fp-book input,.fp-book select{font:inherit;font-size:16px;font-weight:600;color:var(--ink);min-height:48px;padding:8px 10px;
  border:1px solid var(--line);border-radius:var(--r-s);background:var(--surface-2);width:100%;min-width:0}
.fp-go{width:100%;justify-content:center;min-height:52px;margin-top:12px;font-size:16px;border-radius:var(--r-s)}
.fp-book-note{margin:10px 0 0;font-size:13px;color:var(--ink-3)}
.fp-call{font-size:14.5px;margin:14px 0 0;color:var(--ink-2)}
.fp-call a{font-weight:700}

/* ---- sticky section bar ---------------------------------------------------- */
.fp-index{position:sticky;top:var(--fp-top,60px);z-index:40;margin:32px calc(var(--gut) * -1) 0;background:rgba(255,255,255,.96);
  backdrop-filter:saturate(1.4) blur(8px);border-bottom:1px solid var(--line)}
.fp-index-in{display:flex;gap:4px;overflow-x:auto;padding:8px var(--gut);scrollbar-width:none;-webkit-overflow-scrolling:touch}
.fp-index-in::-webkit-scrollbar{display:none}
.fp-index a{flex:none;padding:8px 13px;font-size:14px;font-weight:650;color:var(--ink-2);white-space:nowrap;border-radius:999px}
.fp-index a:hover{background:var(--surface-2);text-decoration:none;color:var(--ink)}
.fp-index a[aria-current="true"]{background:var(--ink);color:#fff}

/* ---- sections -------------------------------------------------------------- */
.fp-secs{display:grid;grid-template-columns:minmax(0,1fr)}
.fp-sec{padding:44px 0 4px;scroll-margin-top:calc(var(--fp-top,60px) + 64px);min-width:0}
.fp-label{font-size:26px;line-height:1.1;margin:0 0 18px;font-weight:800;letter-spacing:-.025em}
.fp-body{min-width:0}
.fp-sub,.fp-note{font-size:14px;color:var(--ink-3)}
.fp-sub a{text-decoration:underline;text-underline-offset:2px}
.fp-note{margin:8px 0 0}
.fp-prose p{font-size:17px;line-height:1.65;max-width:60ch;margin:0 0 14px;color:var(--ink-2)}
.fp-prose p:first-child{font-size:19px;line-height:1.5;color:var(--ink)}
.fp-h3{font-size:17px;margin:0 0 10px}
.fp-two{display:grid;gap:28px}

.fp-points{list-style:none;padding:0;margin:0;display:grid;gap:10px}
.fp-points li{background:var(--surface-2);border-radius:var(--r-m);padding:14px 16px}
.fp-points h3{font-size:16px;margin:0 0 4px}
.fp-points p{margin:0;color:var(--ink-2);font-size:14.5px;line-height:1.5}

/* ---- book a stay: the band ------------------------------------------------- */
.fp-band{position:relative;margin:28px calc(var(--gut) * -1) 0;padding:34px var(--gut) 30px;background:var(--steel);color:var(--steel-ink)}
.fp-band .fp-label{color:#fff}
.fp-band a:not(.btn){color:#1565C0}
/* Phone: one row per kind of stay, stacked, so every price and count is in view. */
.fp-tabs{display:grid;gap:8px;margin:0 0 16px}
.fp-tabs::-webkit-scrollbar{display:none}
.fp-tab{text-align:left;display:grid;grid-template-columns:1fr auto;grid-template-areas:"name price" "open price";gap:2px 12px;align-items:center;
  padding:13px 14px;border-radius:var(--r-m);border:1px solid rgba(255,255,255,.14);background:var(--steel-2);color:var(--steel-ink);cursor:pointer;font:inherit}
.fp-tab:hover{border-color:rgba(255,255,255,.34)}
.fp-tab[aria-selected="true"]{background:#fff;color:var(--ink);border-color:#fff}
.fp-tab-name{grid-area:name;font-weight:750;font-size:15px;line-height:1.25}
.fp-tab-price{grid-area:price;font-family:var(--serif);font-weight:800;font-size:20px;line-height:1}
.fp-tab-price small{font-family:var(--sans);font-size:12.5px;font-weight:600;margin-left:1px}
.fp-tab-open{grid-area:open;font-size:12.5px;font-weight:750;color:#7FD89E}
.fp-tab[aria-selected="true"] .fp-tab-open{color:var(--ok)}
.fp-tab-open.is-none{color:var(--steel-mute)}
.fp-tab[aria-selected="true"] .fp-tab-open.is-none{color:var(--ink-3)}

.fp-panel{background:#fff;color:var(--ink);border-radius:var(--r-l);overflow:hidden;display:grid}
.fp-panel + .fp-panel{margin-top:14px}
.fp-panel[hidden]{display:none}
.fp-panel a:not(.btn){color:var(--pine)}
.fp-panel-info{display:grid}
.fp-panel-img{aspect-ratio:16/10;background:var(--surface-2)}
.fp-panel-copy{padding:18px 18px 4px}
.fp-panel-copy h3{font-size:23px;margin:0 0 8px;line-height:1.15}
.fp-panel-copy p{margin:0 0 10px;color:var(--ink-2);font-size:15.5px;line-height:1.55}
.fp-badge{display:inline-block;vertical-align:4px;font-family:var(--sans);font-size:12px;font-weight:750;color:var(--pine);background:var(--pine-l);padding:2px 8px;border-radius:999px;letter-spacing:0}
.fp-facts{list-style:none;padding:0;margin:0 0 12px;display:flex;flex-wrap:wrap;gap:6px}
.fp-facts li{font-size:13px;font-weight:650;color:var(--ink-2);background:var(--surface-2);padding:4px 10px;border-radius:999px}
.fp-ticks{list-style:none;padding:0;margin:4px 0 10px;display:grid;grid-template-columns:1fr;gap:6px;font-size:14.5px;color:var(--ink-2)}
.fp-ticks li{padding-left:24px;position:relative}
.fp-ticks li::before{content:"";position:absolute;left:2px;top:.34em;width:12px;height:7px;border-left:2.5px solid var(--ok);border-bottom:2.5px solid var(--ok);transform:rotate(-45deg)}
.fp-more{font-weight:700}

.fp-panel-book{padding:16px 18px 18px;background:var(--surface-2)}
.fp-rates{width:100%;border-collapse:collapse;margin:0 0 6px;table-layout:fixed}
.fp-rates th{font-size:12.5px;font-weight:650;color:var(--ink-3);text-align:left;padding:0 0 2px}
.fp-rates td{font-family:var(--serif);font-size:24px;font-weight:800;padding:0 4px 0 0;white-space:nowrap;letter-spacing:-.02em}
.fp-adds{list-style:none;padding:0;margin:0 0 14px;font-size:13.5px;color:var(--ink-2)}
.fp-adds li{padding:2px 0}
.fp-when{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px;margin:0 0 10px;padding-top:12px;border-top:1px solid var(--line);font-size:14px;color:var(--ink-2)}
.fp-when strong{font-family:var(--serif);font-size:18px;color:var(--ok)}
.fp-when a{font-weight:700}
.fp-doors{list-style:none;padding:0;margin:0;display:grid;gap:8px}
.fp-doorcard{display:grid;grid-template-columns:1fr auto;grid-template-areas:"no go" "facts go" "price go";column-gap:12px;align-items:center;
  background:#fff;border:1px solid var(--line);border-left:4px solid var(--ok);border-radius:var(--r-m);padding:11px 12px 11px 14px}
.fp-door-no{grid-area:no;font-family:var(--serif);font-size:19px;font-weight:800;line-height:1.1}
.fp-door-facts{grid-area:facts;font-size:13px;color:var(--ink-3)}
.fp-door-price{grid-area:price;font-family:var(--serif);font-size:18px;font-weight:800;margin-top:2px}
.fp-door-price small{font-family:var(--sans);font-size:12.5px;font-weight:550;color:var(--ink-3)}
.fp-door-price .fp-door-extra{display:block;margin-top:2px;font-size:12px;line-height:1.35}
.fp-panel{scroll-margin-top:calc(var(--fp-top,64px) + 70px)}
.fp-doorcard{scroll-margin:calc(var(--fp-top,64px) + 70px) 0 120px}
.fp-doorcard.is-picked{border-color:var(--ink);border-left-color:var(--ok);box-shadow:0 0 0 2px var(--ink)}
.fp-doorcard .btn{grid-area:go;min-height:46px;min-width:100px;justify-content:center;border-radius:var(--r-s);font-size:15px}
.fp-none{margin:0;padding:12px 14px;background:#fff;border-radius:var(--r-m);font-size:14.5px;color:var(--ink-2)}
.fp-foot{margin:10px 0 0;font-size:12.5px;color:var(--ink-3)}

/* ---- map ------------------------------------------------------------------- */
.fp-sec .sitemap{margin-top:12px;border-radius:var(--r-l);overflow:hidden}

/* ---- amenities + details --------------------------------------------------- */
.fp-amen{list-style:none;padding:0;margin:0;display:grid;gap:4px 24px}
.fp-amen li{padding:10px 0 10px 28px;position:relative;display:flex;flex-direction:column;gap:2px}
.fp-amen li::before{content:"";position:absolute;left:3px;top:15px;width:12px;height:7px;border-left:2.5px solid var(--pine);border-bottom:2.5px solid var(--pine);transform:rotate(-45deg)}
.fp-amen strong{font-size:15.5px}
.fp-amen span{font-size:14px;color:var(--ink-2)}
.fp-spec,.fp-pol{margin:0;background:var(--surface-2);border-radius:var(--r-l);padding:4px 18px}
.fp-spec div,.fp-pol div{display:grid;grid-template-columns:minmax(110px,42%) 1fr;gap:12px;padding:11px 0;border-bottom:1px solid var(--line)}
.fp-spec div:last-child,.fp-pol div:last-child{border-bottom:0}
.fp-spec dt,.fp-pol dt{font-size:14px;font-weight:700;color:var(--ink-2)}
.fp-spec dd,.fp-pol dd{margin:0;font-size:15px}

/* ---- photos ---------------------------------------------------------------- */
.fp-gallery{list-style:none;padding:0 var(--gut);margin:0 calc(var(--gut) * -1);display:grid;grid-auto-flow:column;grid-auto-columns:82%;gap:10px;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:thin}
.fp-gallery li{scroll-snap-align:start}
.fp-gallery a{display:block;aspect-ratio:4/3;overflow:hidden;background:var(--surface-2);border-radius:var(--r-m)}
.fp-gallery p{font-size:13px;color:var(--ink-2);margin:6px 0 0}

.fp-who{list-style:none;padding:0;margin:0;display:grid;gap:10px}
.fp-who li{border:1px solid var(--line);border-radius:var(--r-m);padding:16px}
.fp-who h3{font-size:17px;margin:0 0 4px}
.fp-who p{margin:0;color:var(--ink-2);font-size:15px;line-height:1.5}

.fp-where{font-size:17px;line-height:1.5;margin:0 0 12px}
.fp-drive{border-collapse:collapse;width:100%;max-width:440px;margin:0}
.fp-drive caption{text-align:left;font-size:14px;font-weight:700;color:var(--ink-2);padding-bottom:6px}
.fp-drive th,.fp-drive td{text-align:left;padding:9px 0;border-top:1px solid var(--line);font-size:15px}
.fp-drive th{font-weight:700}

.fp-faq{border-bottom:1px solid var(--line)}
.fp-faq:first-child{border-top:1px solid var(--line)}
.fp-faq summary{cursor:pointer;list-style:none;padding:15px 34px 15px 0;font-weight:700;font-size:16px;position:relative}
.fp-faq summary::-webkit-details-marker{display:none}
.fp-faq summary::after{content:"+";position:absolute;right:6px;top:12px;font-size:22px;font-weight:500;color:var(--pine)}
.fp-faq[open] summary::after{content:"−"}
.fp-faq p{margin:0 0 14px;color:var(--ink-2);max-width:62ch}

.vh{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.fp-source{padding-top:28px}

/* ---- phone booking bar ----------------------------------------------------- */
.fp-bar{position:fixed;left:0;right:0;bottom:0;z-index:50;display:flex;align-items:center;justify-content:space-between;gap:12px;
  padding:10px var(--gut,16px) calc(10px + env(safe-area-inset-bottom));background:var(--paper);border-top:1px solid var(--line);box-shadow:0 -6px 20px rgba(20,24,26,.08)}
.fp-bar div{display:flex;flex-direction:column;font-size:14px;line-height:1.25;font-variant-numeric:tabular-nums}
.fp-bar strong{font-family:var(--serif);font-size:19px}
.fp-bar p{margin:0;white-space:nowrap}
.fp-bar span{font-size:12.5px;color:var(--ok);font-weight:700}
.fp-bar .btn{min-height:48px;padding:0 22px;border-radius:var(--r-s)}
body:has(.fp-bar) .h9foot{padding-bottom:80px}

/* ---- tablet ---------------------------------------------------------------- */
@media (min-width:720px){
  .fp{--gut:24px}
  .fp-book-row{grid-template-columns:1fr 1fr 1fr}
  .fp-book label:nth-child(3){grid-column:auto}
  .fp-mosaic{margin:0;border-radius:var(--r-l);overflow:hidden}
  .fp-points{grid-template-columns:1fr 1fr}
  .fp-amen{grid-template-columns:1fr 1fr}
  .fp-who{grid-template-columns:repeat(3,1fr)}
  .fp-gallery{grid-auto-flow:row;grid-template-columns:repeat(3,1fr);grid-auto-columns:auto;overflow:visible;padding:0;margin:0;gap:18px 14px}
  /* The first photo leads at double size: 1 + 2 beside it + rows of 3 fills a
     7-photo set with no orphan, and reads as a gallery rather than a grid. */
  .fp-g-lead2 li:first-child{grid-column:span 2}
  .fp-g-lead2 li:first-child a{aspect-ratio:auto;height:calc(100% - 26px)}
  .fp-g-lead3 li:first-child{grid-column:1 / -1}
  .fp-g-lead3 li:first-child a{aspect-ratio:21/8}
  .fp-band{margin-left:0;margin-right:0;border-radius:var(--r-l);padding:36px 28px 30px}
  .fp-tabs{grid-auto-flow:column;grid-auto-columns:minmax(0,1fr)}
  .fp-tab{grid-template-areas:"name name" "price open";gap:6px 10px;align-items:end}
  .fp-ticks{grid-template-columns:1fr 1fr}
  .fp-doors{grid-template-columns:repeat(auto-fill,minmax(250px,1fr))}
}

/* ---- desktop --------------------------------------------------------------- */
@media (min-width:960px){
  .fp-hero{display:grid;grid-template-columns:minmax(0,.92fr) minmax(0,1.08fr);gap:40px;align-items:stretch;padding-top:28px}
  .fp h1{font-size:46px}
  .fp-lede{font-size:22px}
  .fp-mosaic{aspect-ratio:auto;min-height:460px;height:100%}
  .fp-mosaic-3{display:grid;grid-template-columns:2fr 1fr;grid-template-rows:1fr 1fr;gap:8px;background:transparent}
  .fp-mosaic-3 .fp-m-main{grid-row:1 / span 2}
  .fp-mosaic-3 .fp-m-side{display:block}
  .fp-index{margin:40px 0 0;border-radius:0}
  .fp-index-in{padding:8px 0}
  .fp-secs{grid-template-columns:minmax(0,1fr) minmax(0,1fr);column-gap:56px}
  .fp-sec{grid-column:1 / -1;padding:60px 0 4px}
  .fp-sec.fp-half{grid-column:auto}
  .fp-label{font-size:32px;margin-bottom:22px}
  .fp-two{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:56px;align-items:start}
  .fp-two-wide{grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr)}
  .fp-points{grid-template-columns:1fr}
  .fp-band{padding:44px 40px 40px;margin-top:36px}
  .fp-band .fp-label{margin-bottom:20px}
  .fp-panel{grid-template-columns:minmax(0,1fr) minmax(0,1.05fr)}
  .fp-panel-info{grid-template-rows:auto 1fr}
  .fp-panel-img{aspect-ratio:16/9}
  .fp-panel-copy{padding:22px 26px 14px}
  .fp-panel-book{padding:24px 26px}
  .fp-doors{grid-template-columns:1fr}
  .fp-bar{display:none}
  body:has(.fp-bar) .h9foot{padding-bottom:0}
}
@media (prefers-reduced-motion:no-preference){
  .fp-tab{transition:background-color .15s,border-color .15s,color .15s}
}

/* ---- availability calendars (lib/calendar.js) ---------------------------------
   One card per rental unit / ground spot, two months side by side. Green = an
   open night; a linked green date starts a booking from it. Struck grey =
   booked. A green date without a link is open but too short a gap for the
   minimum stay. */
.fp-cal-top{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 20px;margin-bottom:18px}
.fp-cal-nav{display:flex;align-items:center;gap:10px;font-size:16px}
.fp-cal-step{display:inline-grid;place-items:center;width:36px;height:36px;border:1px solid var(--line);border-radius:50%;
  font-size:22px;line-height:1;color:var(--ink);background:var(--paper)}
a.fp-cal-step:hover{text-decoration:none;border-color:var(--ink)}
span.fp-cal-step{color:var(--line);border-color:var(--line-2)}
.fp-cal-key{margin:0;display:flex;align-items:center;flex-wrap:wrap;gap:4px 14px}
.fp-cal-key>span{display:inline-flex;align-items:center;gap:6px;white-space:nowrap}
.fp-cal-key .k{display:inline-block;width:12px;height:12px;border-radius:3px}
.k-open{background:var(--ok-l);box-shadow:inset 0 0 0 1px rgba(23,122,61,.35)}
.k-taken{background:var(--surface-2);box-shadow:inset 0 0 0 1px var(--line)}
.fp-cals{list-style:none;align-items:start;margin:0 0 28px;padding:0;display:grid;gap:14px;grid-template-columns:repeat(auto-fill,minmax(min(100%,440px),1fr))}
.fp-cal{border:1px solid var(--line);border-radius:var(--r-m);padding:14px;background:var(--paper)}
.fp-cal-shut{margin:0 0 28px;padding:12px 14px;border-radius:var(--r-m);background:var(--surface-2);font-size:14px;color:var(--ink-2)}
.fp-cals+.fp-cal-shut{margin-top:-14px}
.fp-cal-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 10px;margin-bottom:10px}
.fp-cal-head h4{margin:0;font-size:16px;font-family:var(--serif)}
.fp-cal-head span{font-size:13px;color:var(--ink-3)}
.fp-cal-status{flex-basis:100%;font-weight:600}
.fp-cal-status.is-open{color:var(--ok)}
.fp-cal-months{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.fp-month{width:100%;border-collapse:collapse;table-layout:fixed;font-size:12.5px;text-align:center}
.fp-month caption{font-weight:700;font-size:13px;color:var(--ink-2);padding-bottom:6px;text-align:left}
.fp-month th{font-weight:600;color:var(--ink-3);font-size:11px;padding:2px 0}
.fp-month td{padding:1px;height:28px}
.fp-month td>a,.fp-month td>span:first-child{display:grid;place-items:center;height:26px;border-radius:var(--r-s)}
.fp-month td.is-past{color:var(--ink-3)}  /* no opacity: past dates stay readable (WCAG 1.4.3, was ~2.5:1); no chip = not bookable */
.fp-month td.is-taken>span:first-child{background:var(--surface-2);color:var(--ink-3);text-decoration:line-through}
.fp-month td.is-open>a,.fp-month td.is-open>span{background:var(--ok-l);color:var(--ok);font-weight:600}
.fp-month td.is-open>a:hover{background:var(--ok);color:#fff;text-decoration:none}
.fp-month td.is-short>span{font-weight:400;opacity:.75}
.fp-month td.is-today>a,.fp-month td.is-today>span{box-shadow:inset 0 0 0 2px var(--ok)}
/* Two months side by side leave a phone 20px cells; stack them instead. */
@media(max-width:560px){.fp-cal-months{grid-template-columns:1fr;gap:18px}}
@media(max-width:400px){.fp-cal{padding:12px 10px}.fp-cal-months{gap:8px}.fp-month{font-size:11.5px}.fp-month td{height:25px}.fp-month td>a,.fp-month td>span:first-child{height:23px}}

/* Monthly rentals: Reserve, or apply to rent (routes/apply.js). */
.fp-door-go{grid-area:go;display:flex;flex-direction:column;align-items:stretch;gap:6px;text-align:center}
.fp-apply{font-size:13px;font-weight:650;color:var(--pine);text-decoration:underline;text-underline-offset:3px}
/* The property's single public calendar: two months, roomier cells. */
.fp-cal-one{max-width:760px}
.fp-cal-one .fp-month td{height:36px}
.fp-cal-one .fp-month td>a,.fp-cal-one .fp-month td>span:first-child{height:33px;font-size:14px}

/* ---- Mobile fixes (2026-10-17 audit) ---- */
.fp-month th{font-size:12px}
@media(max-width:700px){
  /* Calendar days and section tabs big enough to tap. */
  .fp-month td{height:42px}
  .fp-month td>a,.fp-month td>span:first-child{height:40px}
  .fp-index a{padding:12px 15px}
}

/* Reviews (lib/reviews.js) */
.rv-head{display:flex;align-items:baseline;gap:14px;flex-wrap:wrap;margin-bottom:10px}
.rv-big{font:800 34px/1 var(--display,inherit);margin:0}.rv-big span{color:#c98a1b}
.rv-head p:last-child{margin:0;color:var(--ink-2)}
.rv-aspects{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:6px 22px;margin:0 0 18px}
.rv-aspects div{display:flex;justify-content:space-between;align-items:center;gap:10px}.rv-aspects dt{font-size:14px}.rv-aspects dd{margin:0;display:flex;align-items:center;gap:8px;font-size:13px;font-weight:600}
.rv-bar{display:inline-block;width:90px;height:4px;border-radius:2px;background:var(--line)}.rv-bar i{display:block;height:100%;border-radius:2px;background:var(--ink)}
.rv-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:22px}
.rv-who{margin:0}.rv-stars{margin:2px 0 6px;color:#c98a1b;letter-spacing:1px;font-size:14px}.rv-stars span{color:var(--line)}
.rv-body{margin:0;line-height:1.55}.rv-reply{margin:8px 0 0;padding:8px 12px;background:var(--surface-2);font-size:14px;border-radius:var(--r-s)}

/* ===== v2 listing layout (Airbnb / Hipcamp order) =============================== */
.fp-v2 .fp-top{padding-top:14px}
.fp-v2 .fp-top h1{font-size:30px;margin:0 0 8px}
.fp-topline{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 16px}
.fp-topline p{margin:0;display:flex;flex-wrap:wrap;gap:6px;align-items:center;font-size:14.5px;color:var(--ink-2)}
.fp-topline p a{color:var(--ink);font-weight:600;text-decoration:underline;text-underline-offset:2px}
.fp-rate{font-weight:700;color:var(--ink)!important;text-decoration:none!important}
.fp-new{font-weight:700}
.fp-v2 .fp-acts{display:flex;gap:8px}

.fp-shots{position:relative;margin:16px calc(var(--gut) * -1) 0}
.fp-shots .fp-gallery{list-style:none;margin:0;padding:0;display:flex;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;gap:0}
.fp-shots .fp-gallery::-webkit-scrollbar{display:none}
.fp-shots .fp-gallery li{flex:0 0 100%;scroll-snap-align:start;aspect-ratio:4/3;background:var(--surface-2);margin:0}
.fp-shots .fp-gallery a{display:block;width:100%;height:100%;cursor:zoom-in}
.fp-shots-n{position:absolute;right:12px;bottom:12px;background:rgba(20,24,26,.72);color:#fff;font-size:12.5px;font-weight:700;padding:4px 10px;border-radius:999px}
.fp-shots-all{display:none}
.promo-stk-lg{top:14px;left:14px;right:auto;font-size:14px;padding:7px 13px}

.fp-main{display:grid;grid-template-columns:minmax(0,1fr);gap:0}
.fp-sum{padding:22px 0 8px;border-bottom:1px solid var(--line)}
.fp-sum-t{font-size:22px!important;margin:0 0 4px;font-weight:750}
.fp-facts-line{margin:0 0 18px;color:var(--ink-2);font-size:15px}
.fp-host{display:flex;align-items:center;gap:14px;padding:16px 0;border-top:1px solid var(--line)}
.fp-av{flex:none;display:grid;place-items:center;width:44px;height:44px;border-radius:50%;background:var(--ink);color:#fff;font-weight:800;font-size:18px}
.fp-host div{flex:1;min-width:0;display:flex;flex-direction:column;line-height:1.3}
.fp-host div span{font-size:13.5px;color:var(--ink-3)}
.fp-msg{flex:none}
.fp-visit{margin:-6px 0 0;padding:0 0 14px;font-size:14px;color:var(--ink-3)}
.fp-visit a{font-weight:600}
.fp-hl{list-style:none;margin:0;padding:16px 0 10px;border-top:1px solid var(--line);display:grid;gap:16px}
.fp-hl li{display:flex;gap:14px;align-items:flex-start}
.fp-hl-i{flex:none;width:26px;height:26px;display:grid;place-items:center;border-radius:50%;background:var(--ok-l,#e6f2ea);color:var(--ok,#1f7a46);font-weight:900;font-size:14px}
.fp-hl div{display:flex;flex-direction:column;gap:2px}.fp-hl span{font-size:14px;color:var(--ink-3)}

.fp-aside{padding:20px 0 0}
.fp-card{border:1px solid var(--line);border-radius:var(--r-l);padding:20px;box-shadow:0 6px 24px rgba(20,24,26,.10);background:var(--paper,#fff)}
.fp-card-price{margin:0 0 4px;font-size:15px;color:var(--ink-2)}
.fp-card-price strong{font-size:24px;color:var(--ink);font-family:var(--serif)}
.fp-card-price .was{font-size:16px}
.fp-card-rate{margin:0 0 12px;font-size:14px}
.fp-dbox{display:grid;grid-template-columns:1fr 1fr;border:1px solid var(--ink-3,#888);border-radius:var(--r-m);overflow:hidden;margin:12px 0}
.fp-db{display:flex;flex-direction:column;padding:8px 12px;font-size:10.5px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--ink);min-width:0}
.fp-db+.fp-db{border-left:1px solid var(--line)}
.fp-db-w{grid-column:1/-1;border-left:0!important;border-top:1px solid var(--line)}
.fp-db input,.fp-db select{border:0;padding:2px 0 0;font:inherit;font-size:15px;font-weight:500;letter-spacing:0;text-transform:none;background:transparent;color:var(--ink);min-width:0;width:100%;min-height:28px}
.fp-reserve{display:flex;width:100%;justify-content:center;min-height:50px;font-size:16px;border-radius:var(--r-m)}
.fp-nocharge{text-align:center;font-size:13.5px;color:var(--ink-3);margin:8px 0 12px}
.fp-chosen{font-weight:700;font-size:14px;margin:0 0 6px}
.fp-card .lines{width:100%;font-size:14px}
.fp-cancel{margin:12px 0 0;font-size:14px;color:var(--ok,#1f7a46);font-weight:650}
.fp-card-none{font-size:14.5px}
.fp-apply-l{font-size:13.5px;margin:10px 0 0;color:var(--ink-3)}
.fp-card-help{font-size:13.5px;color:var(--ink-3);text-align:center;margin:12px 0 0}
.fp-card-help a{text-decoration:underline;text-underline-offset:2px}  /* links in a sentence need more than color (WCAG 1.4.1) */

.fp-clamp{max-height:9.6em;overflow:hidden;position:relative}
.fp-clamp.is-open{max-height:none}
.fp-more-btn{border:0;background:none;padding:0;font:inherit;font-weight:700;text-decoration:underline;cursor:pointer;color:var(--ink)}
.fp-know{display:grid;gap:22px}
.fp-know h3{font-size:16px;margin:0 0 8px}
.fp-know ul{list-style:none;margin:0;padding:0;display:grid;gap:6px;font-size:14.5px;color:var(--ink-2)}
.fp-v2 .fp-rest .fp-secs{grid-template-columns:minmax(0,1fr)}
.fp-v2 .fp-rest .fp-sec{grid-column:auto!important}
.fp-v2 .fp-bar p{display:flex;gap:6px;align-items:baseline}
.fp-v2 .fp-bar div a{font-size:13px;font-weight:700;color:var(--ink);text-decoration:underline}

@media (min-width:720px){
  .fp-shots{margin:20px 0 0;border-radius:var(--r-l);overflow:hidden}
  .fp-know{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media (min-width:960px){
  .fp-v2 .fp-top h1{font-size:34px}
  .fp-shots .fp-gallery{display:grid;grid-template-columns:2fr 1fr 1fr;grid-template-rows:200px 200px;gap:8px;overflow:visible}
  .fp-shots .fp-gallery li{aspect-ratio:auto;flex:none}
  .fp-shots .fp-gallery li:first-child{grid-row:1/span 2}
  .fp-shots .fp-gallery li.fp-shot-more{display:none}
  .fp-shots-1 .fp-gallery{grid-template-columns:1fr;grid-template-rows:440px}
  .fp-shots-2 .fp-gallery{grid-template-columns:1fr 1fr;grid-template-rows:420px}.fp-shots-2 .fp-gallery li:first-child{grid-row:auto}
  .fp-shots-3 .fp-gallery{grid-template-columns:2fr 1fr}
  .fp-shots-4 .fp-gallery{grid-template-columns:2fr 1fr 1fr}.fp-shots-4 .fp-gallery li:nth-child(4){grid-column:2/span 2}
  .fp-shots-n{display:none}
  .fp-shots-all{display:inline-flex;gap:6px;align-items:center;position:absolute;right:16px;bottom:16px;background:#fff;border:1px solid var(--ink);border-radius:var(--r-m);
    padding:8px 14px;font:inherit;font-size:14px;font-weight:700;cursor:pointer;color:var(--ink)}
  .fp-main{grid-template-columns:minmax(0,1fr) 380px;column-gap:72px;align-items:start}
  .fp-sum{grid-column:1;grid-row:1}
  .fp-rest{grid-column:1;grid-row:2;min-width:0}
  .fp-aside{grid-column:2;grid-row:1/span 2;align-self:stretch;padding-top:32px}
  .fp-card{position:sticky;top:calc(var(--fp-top,68px) + 20px)}
  .fp-v2 .fp-index{margin:24px 0 0}
  .fp-v2 .fp-band{margin-left:0;margin-right:0}
}

/* All-photos panel (opens under the photo grid) */
.fp-photos{margin:18px 0 0;padding:18px 0 4px;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.fp-photos[hidden]{display:none}
.fp-ph-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}
.fp-ph-head h2{font-size:22px;margin:0}.fp-ph-head h2 span{font-size:15px;color:var(--ink-3);font-weight:600;margin-left:4px}
.fp-ph-stage{position:relative;border-radius:var(--r-l);overflow:hidden;background:#111}
.fp-ph-track{list-style:none;margin:0;padding:0;display:flex;overflow-x:auto;scroll-snap-type:x mandatory;scroll-behavior:smooth;scrollbar-width:none}
.fp-ph-track::-webkit-scrollbar{display:none}
.fp-ph-slide{flex:0 0 100%;scroll-snap-align:center;position:relative;aspect-ratio:3/2;max-height:72vh;margin:0}
.fp-ph-slide a{display:block;width:100%;height:100%;cursor:zoom-in}
.fp-ph-slide img{object-fit:contain!important;background:#111}
.fp-ph-cap{position:absolute;left:0;right:0;bottom:0;margin:0;padding:28px 16px 12px;color:#fff;font-size:14px;background:linear-gradient(transparent,rgba(0,0,0,.65))}
.fp-ph-prev,.fp-ph-next{position:absolute;top:50%;transform:translateY(-50%);width:44px;height:44px;border-radius:50%;border:0;background:rgba(255,255,255,.92);
  color:var(--ink);font-size:26px;line-height:44px;cursor:pointer;box-shadow:0 2px 10px rgba(0,0,0,.25);padding:0}
.fp-ph-prev{left:12px}.fp-ph-next{right:12px}
.fp-ph-prev:disabled,.fp-ph-next:disabled{opacity:0;pointer-events:none}
.fp-ph-n{position:absolute;top:12px;right:12px;background:rgba(20,24,26,.72);color:#fff;font-size:12.5px;font-weight:700;padding:4px 10px;border-radius:999px}
.fp-ph-thumbs{display:flex;gap:8px;overflow-x:auto;padding:10px 0 6px;scrollbar-width:thin}
.fp-ph-thumbs button{flex:0 0 auto;width:88px;height:62px;padding:0;border:2px solid transparent;border-radius:var(--r-m);overflow:hidden;cursor:pointer;opacity:.6;background:var(--surface-2)}
.fp-ph-thumbs button[aria-current="true"]{border-color:var(--ink);opacity:1}
.fp-ph-thumbs button:hover{opacity:1}
@media (max-width:719px){.fp-ph-prev,.fp-ph-next{display:none}.fp-ph-slide{aspect-ratio:4/3}}
/* Section menu fits the left column */
.fp-v2 .fp-index-in{gap:2px;justify-content:space-between}
.fp-v2 .fp-index a{padding:8px 11px;font-size:14px}
@media (max-width:959px){.fp-v2 .fp-index-in{justify-content:flex-start}}
.fp-card-promo{margin:-2px 0 6px;font-size:13px;font-weight:650;color:#B4231A}
/* Amenity icons */
.fp-amen-i li{display:flex;gap:12px;align-items:flex-start}
.fp-amen-i li::before{display:none!important}
.fp-amen-i .am-i{flex:none;margin-top:1px;color:var(--ink)}
.fp-amen-i div{display:flex;flex-direction:column;gap:2px}
.fp-ticks-i li{display:flex;gap:9px;align-items:flex-start;padding-left:0!important}
.fp-ticks-i li::before{display:none!important}
.fp-ticks-i .am-i{flex:none;margin-top:1px;color:var(--ok,#1f7a46)}
.fp-v2 .fp-amen-i li,.fp-amen.fp-amen-i li{flex-direction:row!important;display:flex!important;align-items:flex-start;gap:12px}
.fp-amen.fp-amen-i li{padding-left:0}
/* Amenities full width; details merged into Things to know */
.fp-amen-wrap .fp-amen{grid-template-columns:repeat(auto-fill,minmax(220px,1fr))}
.fp-know-h{margin:26px 0 10px}
.fp-spec-all{margin:0}
.fp-pay .pm-list{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px 18px}
.fp-pay p{margin:10px 0 0}
.fp-know{grid-template-columns:repeat(auto-fit,minmax(200px,1fr))!important}

/* Google Maps embeds */
.gmap{position:relative;width:100%;aspect-ratio:16/9;max-height:420px;border-radius:14px;overflow:hidden;border:1px solid var(--line);background:#e9eef0;margin:0 0 10px}
.gmap iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
.gmap-town{aspect-ratio:21/8;margin:10px 0 18px}
.gmap-sm{aspect-ratio:16/7;margin-top:16px}
.gmap-links{margin:0 0 18px;font-size:14px}
.gmap-links a{font-weight:650}
.vsw-g{margin:8px 0 0;font-size:12.5px}.vsw-g a{display:inline!important;border:0!important;padding:0!important;color:#1a5fb4!important;font-weight:700}
@media (max-width:640px){.gmap,.gmap-town{aspect-ratio:4/3}}
/* Sticky mini header (desktop) once the photos are out of view */
.fp-mini{position:fixed;left:0;right:0;top:var(--fp-top,68px);z-index:45;background:rgba(255,255,255,.97);backdrop-filter:blur(8px);border-bottom:1px solid var(--line);box-shadow:0 4px 14px rgba(20,24,26,.06);transform:translateY(-6px);opacity:0;transition:opacity .15s,transform .15s}
.fp-mini.on{opacity:1;transform:none}
.fp-mini-in{max-width:1240px;margin:0 auto;padding:10px 16px;display:flex;align-items:center;gap:22px}
.fp-mini-t{display:flex;flex-direction:column;line-height:1.25;min-width:0}
.fp-mini-t strong{font-size:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fp-mini-t span{font-size:12.5px;color:var(--ink-3)}
.fp-mini-nav{display:flex;gap:4px}
.fp-mini-nav a{padding:6px 10px;border-radius:999px;font-size:13.5px;font-weight:650;color:var(--ink-2);text-decoration:none}
.fp-mini-nav a:hover{background:var(--surface-2)}
.fp-mini-buy{margin-left:auto;display:flex;align-items:center;gap:14px}
.fp-mini-p{font-size:13.5px;color:var(--ink-2);white-space:nowrap}.fp-mini-p strong{font-size:17px;color:var(--ink)}
@media (max-width:959px){.fp-mini{display:none!important}}
.fp-mini{pointer-events:none}.fp-mini.on{pointer-events:auto}
@media (min-width:960px){body:has(.fp-mini.on) .fp-index{top:calc(var(--fp-top,68px) + 62px)}body:has(.fp-mini.on) .fp-card{top:calc(var(--fp-top,68px) + 82px)}}
.fp-card.is-flash{animation:fpflash .6s ease}@keyframes fpflash{0%{box-shadow:0 0 0 3px rgba(30,136,229,.35)}100%{box-shadow:0 6px 24px rgba(20,24,26,.10)}}
/* About: the details as fact tiles */
.fp-facts-h{margin:26px 0 12px}
.fp-factgrid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:10px}
.fp-factgrid li{display:flex;gap:12px;align-items:flex-start;padding:12px 14px;border:1px solid var(--line);border-radius:12px;background:#fff}
.fp-factgrid .am-i{flex:none;margin-top:2px;color:var(--ink)}
.fp-factgrid div{display:flex;flex-direction:column;gap:2px;min-width:0}
.fp-factgrid span{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--ink-3)}
.fp-factgrid strong{font-size:14.5px;font-weight:600;line-height:1.35}

/* Light-blue theme (2026-10-17): "Where you can stay" band light, dark text */
.fp-band{background:#E3F1FD;color:var(--ink)}
.fp-band .fp-label{color:var(--ink)}
.fp-band a:not(.btn){color:#1565C0}
.fp-tab{background:#fff;color:var(--ink);border:1px solid #C5DEF5}
.fp-tab:hover{border-color:#1E88E5}
.fp-tab[aria-selected="true"]{background:#1976D2;color:#fff;border-color:#1976D2}
.fp-tab-open{color:var(--ok)}
.fp-tab[aria-selected="true"] .fp-tab-open{color:#fff}
.fp-tab[aria-selected="true"] .fp-tab-price small,.fp-tab[aria-selected="true"] .was{color:rgba(255,255,255,.85)}
.fp-tab-open.is-none{color:var(--ink-3)}

/* Phone pass 2 (2026-10-17): the "Available" card squeezed its price into a
   narrow column beside a 100px Reserve button. Stack it; full-width button. */
@media(max-width:560px){
  .fp-doorcard{grid-template-columns:minmax(0,1fr);grid-template-areas:"no" "facts" "price" "go";row-gap:4px}
  .fp-doorcard .btn{width:100%;margin-top:8px}
}

/* ===== Phone pass 3 (2026-10-19): the property page was ~9,300px tall on a
   phone. Fact tiles go two-up, "Who stays here" swipes, sections and the
   calendar tighten. Nothing is removed. */
@media(max-width:719px){
  .fp-sec{padding:30px 0 2px}
  .fp-label{font-size:23px;margin:0 0 14px}
  .fp-prose p{font-size:16px;line-height:1.6}
  .fp-prose p:first-child{font-size:17px}
  .fp-sum-t{font-size:20px!important}
  .fp-hl{gap:12px}
  .fp-card{box-shadow:0 2px 12px rgba(20,24,26,.07);padding:18px 16px}
  /* Details: two tiles per row, label over value. */
  .fp-factgrid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
  .fp-factgrid li{flex-direction:column;gap:6px;padding:11px 12px}
  .fp-factgrid span{font-size:11px}
  .fp-factgrid strong{font-size:14px}
  .fp-points li{padding:12px 14px}
  /* Who stays here: a sideways row. */
  .fp-who{grid-auto-flow:column;grid-auto-columns:78%;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;
    margin:0 calc(var(--gut) * -1);padding:0 var(--gut) 4px;scroll-padding:0 var(--gut)}
  .fp-who::-webkit-scrollbar{display:none}
  .fp-who li{scroll-snap-align:start;padding:14px}
  .fp-who h3{font-size:16px}.fp-who p{font-size:14.5px}
  .fp-amen li{padding:7px 0}
  .fp-know{gap:18px}
  /* Calendar: still both months, smaller cells. */
  .fp-cal-one .fp-month td,.fp-month td{height:36px}
  .fp-cal-one .fp-month td>a,.fp-cal-one .fp-month td>span:first-child,.fp-month td>a,.fp-month td>span:first-child{height:33px;font-size:13.5px}
  .fp-cal-top{margin-bottom:12px}
  /* "Where you can stay" band */
  .fp-band{padding:26px var(--gut) 24px;margin-top:22px}
  .fp-panel-img{aspect-ratio:16/9}
  .fp-panel-copy{padding:16px 16px 2px}
  .fp-panel-copy h3{font-size:20px}
  .fp-panel-book{padding:14px 16px 16px}
  .fp-index{margin-top:22px}
}

/* ===== Phone = booking + basics (2026-10-19): price, dates, Reserve, what
   it is, amenities, rules, where. Calendar, site map, "who stays here",
   driving distances and feature boxes are desktop extras. */
@media(max-width:719px){
  #availability,#who,#map,.fp-drive,.fp-points,.gmap-links,.fp-amen span,.fp-pay>p,.fp-facts-h~.fp-factgrid li:nth-child(n+7){display:none!important}
  .fp-index a[href="#availability"],.fp-index a[href="#who"],.fp-index a[href="#map"]{display:none}
  .fp-amen li{padding:5px 0}
}
@media(max-width:719px){
  /* Phone photo strip is swipe-only (app.js): no zoom cursor, no photo panel. */
  .fp-shots .fp-gallery a{cursor:default;-webkit-touch-callout:none}
  #all-photos,.fp-photos{display:none!important}
}

/* ===== Phone = book fast (2026-10-19, Colton: "extremely simple … high booking
   turnover"; photos kept zooming while scrolling past them). The photo strip
   only swipes: its links take no touches, so no tap, long-press preview or
   double-tap can open or zoom a photo. Desktop-only sections go. */
@media(max-width:719px){
  .fp-shots .fp-gallery a{pointer-events:none;-webkit-user-select:none;user-select:none}
  .fp-shots .fp-gallery img{-webkit-user-drag:none}
  .fp-index,#faq,#policies,.fp-factgrid,#overview h3:has(+.fp-factgrid),#location .gmap{display:none!important}
}

/* ===== Clean pass (2026-10-19, Colton: "the facilities page doesnt look good
   on mobile or web"). "Where you can stay" was a blue band holding white
   panels holding grey boxes holding a green-edged card, with a second
   Reserve box beside the booking card. Now: plain section, quiet tabs, one
   bordered card per kind, its price and one Reserve. */
.fp-band{background:none!important;color:var(--ink);padding-left:0!important;padding-right:0!important;margin-left:0!important;margin-right:0!important;border-radius:0!important}
.fp-tab{background:#fff;color:var(--ink);border:1px solid var(--line);box-shadow:none}
.fp-tab:hover{border-color:var(--ink-3)}
.fp-tab[aria-selected="true"]{background:#F3F8FD;color:var(--ink);border-color:var(--ink);box-shadow:inset 0 0 0 1px var(--ink)}
.fp-tab[aria-selected="true"] .fp-tab-open{color:var(--ok)}
.fp-tab[aria-selected="true"] .fp-tab-price small,.fp-tab[aria-selected="true"] .was{color:var(--ink-3)}
.fp-tab-price{font-size:18px}
.fp-panel{border:1px solid var(--line);border-radius:var(--r-l)}
.fp-panel-book{background:#fff;border-top:1px solid var(--line);display:flex;flex-direction:column;justify-content:flex-start}
.fp-adds,.fp-door-no,.fp-door-facts{display:none}
.fp-when{border-top:0;padding-top:0;margin-bottom:12px}
.fp-when strong{font-family:var(--sans);font-size:14px}
.fp-doorcard{grid-template-areas:"price go";border:0;border-radius:0;padding:0;background:none}
.fp-doorcard.is-picked{box-shadow:none}
.fp-door-price{font-size:22px;margin:0}
.fp-foot{font-size:12.5px;color:var(--ink-3);margin:12px 0 0}
@media(min-width:960px){.fp-panel-book{border-top:0;border-left:1px solid var(--line)}}

/* Phone: the booking card is the whole job. Its "Stay in" menu carries each
   kind's price, so "Where you can stay" goes; so do crumbs, fine print and
   the line-by-line breakdown (checkout shows it). */
@media(max-width:719px){
  #stay,.fp-crumbs,.fp-card-help,.fp-card .lines,.fp-apply-l,.fp-chosen{display:none!important}
  .fp-card{margin-top:4px}
  .fp-card .fp-nocharge{margin-bottom:0}
}

/* Phone: kinds of stay inside the booking card (app.js moves them in). */
@media(max-width:719px){
  .fp-card.has-pick .fp-card-price,.fp-card.has-pick .fp-db-w{display:none!important}
  .fp-card.has-pick .fp-dbox .fp-db:nth-child(-n+2){border-bottom:0}
  .fp-pick-h{margin:0 0 10px;font-size:17px;font-weight:800;color:var(--ink)}
  .fp-card .fp-tabs{display:grid;grid-template-columns:1fr;gap:8px;margin:0 0 14px}
  .fp-card .fp-tab{display:grid;grid-template-columns:76px minmax(0,1fr) auto;grid-template-areas:"ph name name" "ph feat feat" "ph open price";
    gap:2px 12px;align-items:center;padding:8px 12px 8px 8px;border-radius:14px;min-height:76px}
  .fp-tab-ph{grid-area:ph;width:76px;height:64px;border-radius:9px;overflow:hidden;background:var(--surface-2)}
  .fp-tab-ph img{width:100%;height:100%;object-fit:cover;display:block}
  .fp-card .fp-tab-name{font-size:15px}
  .fp-tab-feat{grid-area:feat;font-size:12.5px;color:var(--ink-3);line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
  .fp-card .fp-tab-open{font-size:12px}
  .fp-card .fp-tab-price{font-size:17px;text-align:right}
  .fp-card .fp-tab-price .was{font-size:13px}
}

/* Highlights moved into "About this place" (Colton, 2026-10-19: "find a
   better location … where it fits into the content"): the pitch, then the
   three reasons. Desktop: three across. Phone: a short stacked list. */
#overview .fp-hl{border-top:0;padding:4px 0 0;margin:22px 0 22px}
#overview .fp-hl strong{font-size:15.5px;color:var(--ink)}
#overview .fp-hl span{font-size:14px;line-height:1.5;color:var(--ink-2)}
@media(min-width:720px){
  #overview .fp-hl{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
  #overview .fp-hl li{flex-direction:column;gap:10px;padding:16px;border:1px solid var(--line);border-radius:var(--r-m,12px);background:#fff}
}
@media(max-width:719px){#overview .fp-hl{gap:14px;margin-top:18px}}

/* About this place on phones: show much more before "Show more" (Colton,
   2026-10-19), and fade the last line instead of slicing it. */
@media(max-width:719px){
  .fp-clamp{max-height:26em}
  .fp-clamp:not(.is-open)::after{content:"";position:absolute;left:0;right:0;bottom:0;height:3em;background:linear-gradient(rgba(255,255,255,0),#fff);pointer-events:none}
}
/* Phone: the tagline wraps to its own line; drop the dot that led it. */
@media(max-width:719px){
  .fp-topline p>a+span[aria-hidden]{display:none}
  .fp-topline p>a+span[aria-hidden]+span{flex-basis:100%}
}

/* Safari (Colton 2026-10-19: "when scrolling down … the photos expand longer").
   The frames got their height from aspect-ratio and the photo inside was
   height:100% of that; older Safari treats that height as unknown, so each
   lazy photo loading during the scroll stretched its frame to the photo's own
   height. Now the link fills the frame absolutely, so only the frame decides. */

.fp-shots .fp-gallery li{position:relative;overflow:hidden}
.fp-shots .fp-gallery a{position:absolute;inset:0}
.fp-panel-img{position:relative;overflow:hidden}
.fp-panel-img>picture{position:absolute;inset:0}
.fp picture img,.fp-shots img{width:100%;height:100%;object-fit:cover;display:block}
@media(max-width:719px){.fp-shots .fp-gallery{align-items:flex-start}.fp-shots .fp-gallery li{aspect-ratio:auto;height:75vw}}

/* Phone photos (Colton 2026-10-19): a little shorter, and a tap opens the
   full-screen viewer (app.js) — so the links take touches again. */
@media(max-width:719px){
  .fp-shots .fp-gallery li{height:62vw}
  .fp-shots .fp-gallery a{pointer-events:auto;cursor:zoom-in}
}

/* Location address: a link to the maps app plus "Copy" (Colton 2026-10-19).
   Phones drop "Get directions" and the empty driving-distance column. */
.fp-where{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.fp-where-a{color:inherit!important;text-decoration:none}
.fp-where-a strong{text-decoration:underline;text-underline-offset:3px}
.fp-copy{flex:none;border:1px solid var(--line);background:#fff;border-radius:999px;padding:7px 14px;font:inherit;font-size:13.5px;font-weight:700;color:var(--ink);cursor:pointer;min-height:36px}
@media(max-width:719px){
  .fp-where{margin:0}
  .fp-where+p,#location .fp-two>div:has(.fp-drive){display:none!important}
  .fp-where-a{-webkit-user-select:text;user-select:text}
  #location{padding-bottom:0}
  #location .fp-two{gap:0}
}
@media(max-width:719px){main.fp{padding-bottom:28px!important}main.fp+.fp-bar+.h9foot,main.fp~.h9foot{margin-top:0}}

/* Narrow phones (≤360px): "Available" ran into the price in the stay rows and
   the date boxes cut the year. Smaller thumb, no struck-through old price in
   the rows (the card's promo line still says it), tighter date boxes. */
@media(max-width:360px){
  .fp-card .fp-tab{grid-template-columns:60px minmax(0,1fr) auto;gap:2px 10px;padding:8px 10px 8px 8px}
  .fp-tab-ph{width:60px;height:56px}
  .fp-card .fp-tab-price .was{display:none}
  .fp-card .fp-tab-price{font-size:16px}
  .fp-card .fp-dbox .fp-db{padding-left:9px;padding-right:6px}
  .fp-card .fp-dbox input{letter-spacing:-.02em}
  .fp-card{padding-left:12px!important;padding-right:12px!important}
}
/* Short stay picked at a monthly place: the booking runs the minimum (note). */
.fp-min-note{margin:8px 0 12px;padding:10px 12px;border-radius:10px;background:#E3F1FD;color:#0d3c6e;font-size:13.5px;line-height:1.45}
.fp-min-note strong{color:#0d47a1}
.fp-door-price small{display:block;margin-top:2px;white-space:nowrap}
/* Tablets: the swipe photo was 4:3 across the whole width (~576px tall at 768). */
@media (min-width:720px) and (max-width:959px){.fp-shots .fp-gallery li{aspect-ratio:16/9}}
.fp-min-note span{display:block}.fp-min-note span+span{margin-top:3px}
.fp-wait{display:block;text-align:center;margin-top:10px}
