@charset "utf-8";

/*
Theme Name: Hiboxa - Luxury Outdoor Resort HTML5 Template
Author: Metropolitanthemes
Version: 1.0.0

%%%%%%% Table of CSS %%%%%%%

1. General
   1.1 Typography
   1.2 Spacing
   1.3 Buttons
   1.4 Section Title
   1.5 Helpers & Reveals
2. Preloader
3. Header
4. Offcanvas Menu
5. Custom Select
6. Forms
7. Booking Bar
8. Floating Leaves
   8.1 Placements
9. Hero Slider Controls
10. Editorial Hero
11. Welcome Stem
12. Stay Cards
13. Stay Collection
14. Why Outdoors
15. Grounds Rail
16. Rituals Split
17. Reviews
   17.1 Source Filter
   17.2 Pull-Quote Stage
   17.3 Platform Panels
18. Monstera Band
19. Journal Feature
20. Spa Hero
21. Peace Split And Checkerboard
   21.1 Peace Split
   21.2 Checkerboard
22. Ritual Day
23. Card Rails And Counters
   23.1 Card Rail
   23.2 Counter Band
24. Reviews Two And Video Band
   24.1 Reviews Two
   24.2 Video Band
25. Best Time To Visit
26. Journal List And Photo Ribbon
   26.1 Journal List
   26.2 Photo Ribbon
27. Canopy Hero
28. Canopy About And Villa Carousel
   28.1 Collage
   28.2 Villa Carousel
29. Intro Video And Herbarium
   29.1 Intro Video
   29.2 Herbarium Plates
30. Garden Table And Counter Box
   30.1 Menu
   30.2 Counter Box
31. Blog Cards
32. Sub Header
33. Stays Page
34. Stay Details
   34.1 Gallery And Blocks
   34.2 Rate Calendar
   34.3 Hosts, Rules, Cancellation
   34.4 Detail Widget
35. Stay Builder
36. Rituals Page
37. Filters, Places And Dining
   37.1 Filter Bars
   37.2 Places
   37.3 Dining
38. Offers, About, Team And Gallery
   38.1 Offers
   38.2 About
   38.3 Team
   38.4 Gallery
39. Contact, Journal And Article
   39.1 Contact
   39.2 Journal
   39.3 Article
40. Account, Error And Coming Soon
   40.1 Account
   40.2 Error Page
   40.3 Coming Soon
41. Footer
   41.1 Footer One
   41.2 Footer Two
42. Back To Top
43. Cursor
44. Dappled Canopy
*/

/*======================
1. General
========================*/
:root {
  --hx-color-forest: #325853;
  --hx-color-forest-rgb: 50, 88, 83;
  --hx-color-forest-deep: #1D3531;
  --hx-color-forest-deep-rgb: 29, 53, 49;
  --hx-color-coral: #F59288;
  --hx-color-coral-rgb: 245, 146, 136;
  --hx-color-coral-text: #C4584B;
  --hx-color-mist: #F3F6F4;
  --hx-color-mist-rgb: 243, 246, 244;
  --hx-color-blush: #FBEDE9;
  --hx-color-blush-rgb: 251, 237, 233;
  --hx-color-sage: #7C9A93;
  --hx-color-sage-rgb: 124, 154, 147;
  --hx-color-body: #5F6E6A;
  --hx-color-white: #FFFFFF;
  --hx-color-white-rgb: 255, 255, 255;
  --hx-color-line: #DCE5E1;
  --hx-color-line-2: #C5D3CD;
  --hx-ff-heading: 'Fraunces', Georgia, serif;
  --hx-ff-body: 'Figtree', sans-serif;
  --hx-fs-h1: clamp(46px, 5.4vw, 88px);
  --hx-fs-h2: clamp(34px, 3.7vw, 58px);
  --hx-fs-h3: 28px;
  --hx-fs-h4: 22px;
  --hx-fs-h5: 18px;
  --hx-fs-h6: 16px;
  --hx-leaf: 140px;
  --hx-leaf-sm: 60px;
  --hx-radius: 0px;
  --hx-shadow: 0 24px 60px rgba(29, 53, 49, 0.08);
  --hx-shadow-lg: 0 40px 90px rgba(29, 53, 49, 0.16);
  --hx-ease: cubic-bezier(0.22, 0.61, 0.36, 1);
}

*,
*::before,
*::after {
  box-sizing: border-box;
}
/* :root, not html: Bootstrap sets :root { scroll-behavior: smooth }, which outranks html and would turn every
   instant jump (ScrollTrigger's re-measuring, back to top) into a glide */
:root {
  scroll-behavior: auto;
}
body {
  margin: 0;
  font-family: var(--hx-ff-body);
  font-size: 16px;
  line-height: 1.7;
  color: var(--hx-color-body);
  background: var(--hx-color-mist);
  -webkit-font-smoothing: antialiased;
  overflow-x: hidden;
}
body.oc-open {
  overflow: hidden;
}
img {
  max-width: 100%;
  height: auto;
  display: block;
}
a {
  color: var(--hx-color-forest);
  text-decoration: none;
  transition: color 0.3s var(--hx-ease);
}
a:hover {
  color: var(--hx-color-coral-text);
}
button {
  padding: 0;
  border: 0;
  background: none;
  color: inherit;
  font-family: inherit;
  cursor: pointer;
}
::selection {
  background: var(--hx-color-coral);
  color: var(--hx-color-forest-deep);
}
.main-root {
  display: block;
  overflow: hidden;
}

/*----- 1.1 Typography -----*/
h1, h2, h3, h4, h5, h6 {
  margin: 0;
  color: var(--hx-color-forest);
  font-family: var(--hx-ff-heading);
  font-weight: 400;
  font-optical-sizing: auto;
}
h1 {
  font-size: var(--hx-fs-h1);
  font-weight: 300;
  line-height: 1.02;
  letter-spacing: -0.025em;
}
h2 {
  font-size: var(--hx-fs-h2);
  font-weight: 300;
  line-height: 1.08;
  letter-spacing: -0.02em;
}
h3 {
  font-size: var(--hx-fs-h3);
  line-height: 1.2;
  letter-spacing: -0.01em;
}
h4 {
  font-size: var(--hx-fs-h4);
  line-height: 1.3;
}
h5 {
  font-size: var(--hx-fs-h5);
  line-height: 1.4;
}
h6 {
  font-size: var(--hx-fs-h6);
  line-height: 1.4;
}
h1 em,
h2 em,
h3 em {
  font-style: italic;
  font-weight: 300;
  color: var(--hx-color-coral-text);
}
p {
  margin: 0 0 18px;
}
p:last-child {
  margin-bottom: 0;
}
.hx-lead {
  font-size: 19px;
  line-height: 1.7;
  color: var(--hx-color-body);
}
.hx-small {
  font-size: 13px;
  line-height: 1.6;
}
.hx-serif {
  font-family: var(--hx-ff-heading);
}
.is-dark h1, .is-dark h2, .is-dark h3, .is-dark h4, .is-dark h5, .is-dark h6 {
  color: var(--hx-color-white);
}
.is-dark {
  color: rgba(var(--hx-color-white-rgb), 0.78);
}
.is-dark h1 em, .is-dark h2 em, .is-dark h3 em {
  color: var(--hx-color-coral);
}

/*----- 1.2 Spacing -----*/
.sec-pt-120 {
  padding-top: 120px;
}
.sec-pb-120 {
  padding-bottom: 120px;
}
.sec-pt-90 {
  padding-top: 90px;
}
.sec-pb-90 {
  padding-bottom: 90px;
}
.hx-bg-white {
  background: var(--hx-color-white);
}
.hx-bg-mist {
  background: var(--hx-color-mist);
}
.hx-bg-blush {
  background: var(--hx-color-blush);
}
.hx-bg-forest {
  background: var(--hx-color-forest);
}
.hx-bg-deep {
  background: var(--hx-color-forest-deep);
}

/*----- 1.3 Buttons -----*/
.hx-btn {
  position: relative;
  display: inline-flex;
  align-items: center;
  gap: 14px;
  padding: 18px 30px;
  border: 1px solid var(--hx-color-coral);
  border-radius: var(--hx-radius);
  background: var(--hx-color-coral);
  color: var(--hx-color-forest-deep);
  font-family: var(--hx-ff-body);
  font-size: 13px;
  font-weight: 700;
  line-height: 1;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  white-space: nowrap;
  box-shadow: 0 14px 30px rgba(var(--hx-color-coral-rgb), 0.32);
  transition: background 0.35s var(--hx-ease), color 0.35s var(--hx-ease), border-color 0.35s var(--hx-ease), box-shadow 0.35s var(--hx-ease), transform 0.35s var(--hx-ease);
}
.hx-btn:hover,
.hx-btn:focus-visible {
  background: var(--hx-color-forest);
  border-color: var(--hx-color-forest);
  color: var(--hx-color-white);
  box-shadow: 0 18px 36px rgba(var(--hx-color-forest-rgb), 0.28);
  transform: translateY(-2px);
}
.hx-btn .btn-ic {
  position: relative;
  display: inline-block;
  width: 13px;
  height: 13px;
  overflow: hidden;
  font-size: 12px;
}
.hx-btn .btn-ic i {
  position: absolute;
  top: 0;
  left: 0;
  transition: transform 0.4s var(--hx-ease);
}
.hx-btn .btn-ic i + i {
  transform: translateX(-120%);
}
.hx-btn:hover .btn-ic i:first-child {
  transform: translateX(120%);
}
.hx-btn:hover .btn-ic i + i {
  transform: translateX(0);
}
.hx-btn.is-outline {
  background: transparent;
  border-color: var(--hx-color-forest);
  color: var(--hx-color-forest);
  box-shadow: none;
}
.hx-btn.is-outline:hover {
  background: var(--hx-color-forest);
  color: var(--hx-color-white);
}
.hx-btn.is-light {
  background: transparent;
  border-color: rgba(var(--hx-color-white-rgb), 0.55);
  color: var(--hx-color-white);
  box-shadow: none;
}
.hx-btn.is-light:hover {
  background: var(--hx-color-white);
  border-color: var(--hx-color-white);
  color: var(--hx-color-forest);
}
.hx-btn.is-forest {
  background: var(--hx-color-forest);
  border-color: var(--hx-color-forest);
  color: var(--hx-color-white);
  box-shadow: 0 14px 30px rgba(var(--hx-color-forest-rgb), 0.22);
}
.hx-btn.is-forest:hover {
  background: var(--hx-color-coral);
  border-color: var(--hx-color-coral);
  color: var(--hx-color-forest-deep);
}
.hx-btn.is-block {
  width: 100%;
  justify-content: center;
}
.hx-btn:disabled {
  opacity: 0.5;
  pointer-events: none;
}
/* text link: a coral hairline draws under it (the hover accent) */
.hx-link {
  position: relative;
  display: inline-flex;
  align-items: center;
  gap: 10px;
  padding-bottom: 6px;
  color: var(--hx-color-forest);
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 0.16em;
  text-transform: uppercase;
}
.hx-link::after {
  content: "";
  position: absolute;
  left: 0;
  bottom: 0;
  width: 100%;
  height: 1px;
  background: var(--hx-color-coral);
  transform: scaleX(0.3);
  transform-origin: left;
  transition: transform 0.5s var(--hx-ease);
}
.hx-link:hover::after {
  transform: scaleX(1);
}
.hx-link i {
  font-size: 11px;
  transition: transform 0.4s var(--hx-ease);
}
.hx-link:hover i {
  transform: translateX(4px);
}
.is-dark .hx-link {
  color: var(--hx-color-white);
}

/*----- 1.4 Section Title -----*/
.hx-eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 14px;
  margin-bottom: 20px;
  color: var(--hx-color-forest);
  font-family: var(--hx-ff-body);
  font-size: 12px;
  font-weight: 700;
  line-height: 1.4;
  letter-spacing: 0.28em;
  text-transform: uppercase;
}
.hx-eyebrow::before {
  content: "";
  flex: 0 0 auto;
  width: 34px;
  height: 1px;
  background: var(--hx-color-coral);
}
.is-dark .hx-eyebrow {
  color: var(--hx-color-coral);
}
.section-head {
  margin-bottom: 60px;
}
.section-head .title + .hx-lead {
  margin-top: 22px;
}
.section-head.is-center {
  max-width: 760px;
  margin-left: auto;
  margin-right: auto;
  text-align: center;
}
.section-head.is-center .hx-eyebrow::after {
  content: "";
  width: 34px;
  height: 1px;
  background: var(--hx-color-coral);
}
.section-head.is-split {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 40px;
}
.section-head.is-split .head-copy {
  max-width: 640px;
}

/*----- 1.5 Helpers & Reveals -----*/
.hx-reset {
  margin: 0;
  padding: 0;
  list-style: none;
}
.visually-hidden-label {
  position: absolute;
  width: 1px;
  height: 1px;
  margin: -1px;
  padding: 0;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
  border: 0;
}
/* the leaf cut: two opposite corners rounded, taken from the logo's leaves */
.leaf {
  border-radius: 0 var(--hx-leaf) 0 var(--hx-leaf);
  overflow: hidden;
}
.leaf-alt {
  border-radius: var(--hx-leaf) 0 var(--hx-leaf) 0;
  overflow: hidden;
}
.leaf-sm {
  border-radius: 0 var(--hx-leaf-sm) 0 var(--hx-leaf-sm);
  overflow: hidden;
}
.hx-cover {
  position: relative;
  overflow: hidden;
}
.hx-cover img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 1.1s var(--hx-ease);
}
.hx-zoom:hover .hx-cover img,
.hx-cover.hx-zoom:hover img {
  transform: scale(1.06);
}
.hx-watermark {
  position: absolute;
  pointer-events: none;
  user-select: none;
  max-width: none;
}
/* word rise: the splitter wraps words in .w > .wi; each word rises inside its own clip */
.hx-lines .w {
  display: inline-block;
  overflow: hidden;
  vertical-align: top;
  /* room inside the mask for glyphs that lean or hang past the word (italics, descenders), taken back by the
     margin so the words keep their places */
  padding: 0 0.22em 0.16em 0.1em;
  margin: 0 -0.22em -0.16em -0.1em;
}
.hx-lines .wi {
  display: inline-block;
}
.hx-draw {
  display: block;
  height: 1px;
  background: var(--hx-color-coral);
  transform-origin: left center;
}
.hx-draw.is-vertical {
  width: 1px;
  height: auto;
  transform-origin: center top;
}

/*======================
2. Preloader
========================*/
/* Preloader: the script is written on left to right by a soft-edged mask, then the
   blooms open from their stem and the sprig grows over the last letters */
.hx-preloader {
  position: fixed;
  inset: 0;
  z-index: 9999;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--hx-color-mist);
}
.no-js .hx-preloader {
  display: none;
}
/* with the script running, the lockup stays hidden until the fonts have arrived (no flicker of another face) */
.js:not(.fonts-ready) .hx-preloader .pre-lockup {
  visibility: hidden;
}
.hx-preloader .pre-lockup {
  position: relative;
  width: 360px;
  height: 132px;
}
.hx-preloader .pre-bloom {
  position: absolute;
  left: 6px;
  top: 8px;
  height: 115px;
  width: auto;
  transform-origin: 60% 100%;
}
.hx-preloader .pre-word {
  position: absolute;
  left: 61px;
  top: 12px;
  width: 268px;
  --p: 112%;
  -webkit-mask-image: linear-gradient(90deg, #000 calc(var(--p) - 14%), transparent var(--p));
  mask-image: linear-gradient(90deg, #000 calc(var(--p) - 14%), transparent var(--p));
}
.hx-preloader .pre-sprig {
  position: absolute;
  left: 220px;
  top: 3px;
  width: 135px;
}
.hx-preloader .pre-line {
  position: absolute;
  left: 50%;
  bottom: 30%;
  width: 120px;
  height: 1px;
  margin-left: -60px;
  background: rgba(var(--hx-color-forest-rgb), 0.18);
  overflow: hidden;
}
.hx-preloader .pre-line i {
  position: absolute;
  inset: 0;
  background: var(--hx-color-coral);
  transform: scaleX(0);
  transform-origin: left;
}

/*======================
3. Header
========================*/
/* Menu toggle and nav on the left, the logo centred,
   the rest on the right. Fixed from the first frame, so it never shifts the page. */
.hx-header {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 900;
  transition: background 0.45s var(--hx-ease), box-shadow 0.45s var(--hx-ease), transform 0.45s var(--hx-ease);
}
.container-wide {
  max-width: 1680px;
  margin: 0 auto;
  padding: 0 40px;
}
.hx-header .header-inner {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;
  gap: 30px;
  padding: 18px 0;
  transition: padding 0.45s var(--hx-ease);
}
.hx-header.is-scrolled .header-inner {
  padding: 8px 0;
}
.hx-header .header-left {
  display: flex;
  align-items: center;
  gap: 36px;
}
.hx-header .header-right {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 34px;
}
.hx-logo {
  display: block;
}
.hx-logo img {
  width: 226px;
  transition: width 0.45s var(--hx-ease);
}
.hx-logo .logo-light {
  display: none;
}
.hx-header.is-scrolled {
  background: rgba(var(--hx-color-white-rgb), 0.97);
  box-shadow: 0 12px 40px rgba(var(--hx-color-forest-deep-rgb), 0.08);
}
.hx-header.is-scrolled .hx-logo img {
  width: 172px;
}
.header-progress {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  height: 1px;
  background: var(--hx-color-coral);
  transform: scaleX(0);
  transform-origin: left;
  opacity: 0;
  transition: opacity 0.4s;
}
.hx-header.is-scrolled .header-progress {
  opacity: 1;
}
/* menu toggle: three brush-length lines */
.hx-menu-toggle {
  position: relative;
  display: inline-flex;
  flex-direction: column;
  justify-content: center;
  gap: 6px;
  width: 46px;
  height: 46px;
  padding: 0 10px;
  border: 1px solid rgba(var(--hx-color-forest-rgb), 0.25);
  background: transparent;
  transition: border-color 0.3s, background 0.3s;
}
.hx-menu-toggle span {
  display: block;
  height: 1.5px;
  background: var(--hx-color-forest);
  transition: width 0.4s var(--hx-ease), background 0.3s;
}
.hx-menu-toggle span:nth-child(1) {
  width: 24px;
}
.hx-menu-toggle span:nth-child(2) {
  width: 16px;
}
.hx-menu-toggle span:nth-child(3) {
  width: 20px;
}
.hx-menu-toggle:hover span {
  width: 24px;
}
.hx-menu-toggle:hover {
  border-color: var(--hx-color-coral);
}
/* nav */
.hx-nav > ul {
  display: flex;
  align-items: center;
  gap: 32px;
}
.hx-nav > ul > li {
  position: relative;
}
.hx-nav > ul > li > a {
  position: relative;
  display: flex;
  align-items: center;
  gap: 7px;
  padding: 14px 0;
  color: var(--hx-color-forest);
  font-size: 15px;
  font-weight: 600;
  transition: color 0.3s;
}
.hx-nav > ul > li > a i {
  font-size: 9px;
  opacity: 0.7;
  transition: transform 0.35s var(--hx-ease);
}
.hx-nav > ul > li:hover > a,
.hx-nav > ul > li.active > a {
  color: var(--hx-color-coral-text);
}
.hx-nav > ul > li:hover > a i {
  transform: rotate(180deg);
}
.hx-nav .sub-menu {
  position: absolute;
  top: 100%;
  left: -28px;
  z-index: 5;
  min-width: 250px;
  margin: 0;
  padding: 16px 0;
  list-style: none;
  background: var(--hx-color-white);
  border-top: 2px solid var(--hx-color-coral);
  box-shadow: var(--hx-shadow-lg);
  opacity: 0;
  visibility: hidden;
  transform: translateY(14px);
  transition: opacity 0.35s var(--hx-ease), transform 0.35s var(--hx-ease), visibility 0.35s;
}
/* the first level hangs from the header's lower edge; an invisible bridge
   keeps it open while the pointer crosses the gap */
.hx-nav > ul > li > .sub-menu {
  top: calc(100% + 18px);
}
.hx-nav > ul > li > .sub-menu::before {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: 100%;
  height: 22px;
}
.hx-header.is-scrolled .hx-nav > ul > li > .sub-menu {
  top: calc(100% + 8px);
}
.hx-nav li:hover > .sub-menu,
.hx-nav li:focus-within > .sub-menu {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
}
.hx-nav .sub-menu li {
  position: relative;
}
.hx-nav .sub-menu a {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 9px 28px;
  color: var(--hx-color-body);
  font-size: 14px;
  font-weight: 500;
  transition: color 0.3s, padding 0.35s var(--hx-ease);
}
.hx-nav .sub-menu a i {
  font-size: 9px;
}
.hx-nav .sub-menu a:hover,
.hx-nav .sub-menu li.active > a {
  color: var(--hx-color-coral-text);
  padding-left: 34px;
}
.hx-nav .sub-menu .sub-menu {
  top: -18px;
  left: 100%;
}
/* the right-hand menus open the same way as the left-hand ones (to the right); being nearer the edge they are a
   little narrower and start a little further left, so a third level still fits on the screen */
.hx-nav.nav-right .sub-menu {
  min-width: 210px;
}
.hx-nav.nav-right > ul > li > .sub-menu {
  left: -48px;
}
.header-book {
  padding: 15px 22px;
  box-shadow: none;
}
.header-call {
  display: flex;
  align-items: center;
  gap: 12px;
  color: var(--hx-color-forest);
}
.header-call .call-ic {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 38px;
  height: 38px;
  background: var(--hx-color-coral);
  color: var(--hx-color-forest-deep);
  font-size: 14px;
}
.header-call .call-text {
  display: flex;
  flex-direction: column;
  font-family: var(--hx-ff-heading);
  font-size: 17px;
  line-height: 1.2;
}
.header-call .call-text small {
  font-family: var(--hx-ff-body);
  font-size: 12px;
  color: var(--hx-color-body);
}
/* style two: white over the dark photo until the page scrolls */
.header-style-two:not(.is-scrolled) .hx-logo .logo-main {
  display: none;
}
.header-style-two:not(.is-scrolled) .hx-logo .logo-light {
  display: block;
}
.header-style-two:not(.is-scrolled) .hx-nav > ul > li > a,
.header-style-two:not(.is-scrolled) .header-call {
  color: var(--hx-color-white);
}
.header-style-two:not(.is-scrolled) .hx-nav > ul > li:hover > a,
.header-style-two:not(.is-scrolled) .hx-nav > ul > li.active > a {
  color: var(--hx-color-coral);
}
.header-style-two:not(.is-scrolled) .header-call .call-text small {
  color: rgba(var(--hx-color-white-rgb), 0.7);
}
.header-style-two:not(.is-scrolled) .hx-menu-toggle {
  border-color: rgba(var(--hx-color-white-rgb), 0.4);
}
.header-style-two:not(.is-scrolled) .hx-menu-toggle span {
  background: var(--hx-color-white);
}
/* style three: a forest top bar, then the boxed white header over the photo */
.header-style-three {
  padding: 0;
}
/* top bar: phone and email, the reception's live status, the
   compact rating line, currency and socials. It folds away once the page scrolls. */
.header-topbar {
  position: relative;
  z-index: 6;
  background: var(--hx-color-forest);
  color: rgba(var(--hx-color-white-rgb), 0.82);
  font-size: 13.5px;
  transition: margin 0.45s var(--hx-ease), opacity 0.3s;
}
.topbar-inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  min-height: 46px;
}
.topbar-inner p {
  margin: 0;
}
/* only the bar's own lists run in a row - never the currency dropdown's list */
.topbar-inner > ul,
.topbar-social {
  display: flex;
  align-items: center;
  gap: 26px;
}
.topbar-inner i {
  margin-right: 8px;
  color: var(--hx-color-coral);
}
.topbar-inner a {
  color: rgba(var(--hx-color-white-rgb), 0.82);
}
.topbar-inner a:hover {
  color: var(--hx-color-coral);
}
.topbar-left,
.topbar-right {
  display: flex;
  align-items: center;
  gap: 26px;
}
.topbar-status b {
  color: var(--hx-color-white);
  font-weight: 600;
}
.topbar-status.is-open i {
  color: #7ED3A7;
}
.topbar-status span {
  display: none;
}
.topbar-rating {
  display: flex;
  align-items: center;
  gap: 16px;
  padding-right: 26px;
  border-right: 1px solid rgba(var(--hx-color-white-rgb), 0.18);
}
.topbar-rating span {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
.topbar-rating b {
  color: var(--hx-color-white);
  font-family: var(--hx-ff-heading);
  font-size: 15px;
  font-weight: 500;
}
.topbar-rating i {
  margin: 0;
  color: var(--hx-color-white);
}
.topbar-rating img {
  width: 16px;
}
.topbar-social {
  gap: 14px !important;
}
.topbar-social i {
  margin: 0;
  color: rgba(var(--hx-color-white-rgb), 0.82);
}
.topbar-social a:hover i {
  color: var(--hx-color-coral);
}
/* the currency switch, sized for the bar */
.header-topbar .topbar-currency.hx-select .select-button {
  min-width: 0;
  height: 30px;
  padding: 0 10px;
  border-color: rgba(var(--hx-color-white-rgb), 0.28);
  color: var(--hx-color-white);
  font-size: 12.5px;
}
.topbar-currency.hx-select .select-button i {
  margin: 0;
  color: var(--hx-color-coral);
}
/* the list opens from the button's right edge, so it never runs off the page */
.header-topbar .topbar-currency.hx-select .select-list {
  left: auto;
  right: 0;
  min-width: 150px;
}
/* over a photograph the bar is a darker veil with a hairline */
.header-style-two .header-topbar {
  background: rgba(var(--hx-color-forest-deep-rgb), 0.55);
  border-bottom: 1px solid rgba(var(--hx-color-white-rgb), 0.14);
}
.hx-header.is-scrolled .header-topbar {
  margin-top: -47px;
  opacity: 0;
  pointer-events: none;
}
.header-style-three .header-box {
  position: relative;
  margin-top: 0;
  background: var(--hx-color-white);
  box-shadow: var(--hx-shadow);
  transition: box-shadow 0.4s;
}
.header-style-three .header-main {
  background: linear-gradient(to bottom, var(--hx-color-forest) 50%, transparent 50%);
  transition: background 0.4s;
}
.header-style-three .box-inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 30px;
  padding: 16px 30px;
}
.header-style-three .hx-logo img {
  width: 190px;
}
.header-style-three .header-icons {
  display: flex;
  gap: 12px;
}
.header-style-three .icon-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 46px;
  height: 46px;
  border: 1px solid rgba(var(--hx-color-forest-rgb), 0.25);
  color: var(--hx-color-forest);
  font-size: 15px;
  transition: background 0.3s, color 0.3s, border-color 0.3s;
}
.header-style-three .icon-btn:hover {
  background: var(--hx-color-coral);
  border-color: var(--hx-color-coral);
  color: var(--hx-color-forest-deep);
}
.header-style-three.is-scrolled {
  padding: 0;
  background: transparent;
  box-shadow: none;
}
.header-style-three.is-scrolled .header-box {
  box-shadow: 0 16px 40px rgba(var(--hx-color-forest-deep-rgb), 0.14);
}
.header-style-three.is-scrolled .header-main {
  background: transparent;
}
.header-style-three.is-scrolled .hx-logo img {
  width: 160px;
}
.header-style-three .hx-nav > ul {
  gap: 28px;
}

/*======================
4. Offcanvas Menu
========================*/
.hx-offcanvas {
  position: fixed;
  top: 0;
  left: 0;
  bottom: 0;
  z-index: 1000;
  display: flex;
  flex-direction: column;
  width: 460px;
  max-width: 100%;
  padding: 34px 44px 40px;
  overflow-x: hidden;
  overflow-y: auto;
  background: var(--hx-color-mist);
  transform: translateX(-102%);
  transition: transform 0.65s var(--hx-ease);
}
.hx-offcanvas.is-open {
  transform: translateX(0);
}
.hx-offcanvas .oc-leaves {
  right: -6px;
  bottom: -6px;
  width: 118px;
  opacity: 0.5;
}
.hx-offcanvas-overlay {
  position: fixed;
  inset: 0;
  z-index: 999;
  background: rgba(var(--hx-color-forest-deep-rgb), 0.55);
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.5s, visibility 0.5s;
}
.hx-offcanvas-overlay.is-open {
  opacity: 1;
  visibility: visible;
}
.offcanvas-head {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 34px;
}
.offcanvas-head img {
  width: 180px;
}
.offcanvas-close {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 46px;
  height: 46px;
  border: 1px solid rgba(var(--hx-color-forest-rgb), 0.25);
  background: transparent;
  color: var(--hx-color-forest);
  font-size: 16px;
  transition: background 0.3s, color 0.3s, transform 0.5s var(--hx-ease);
}
.offcanvas-close:hover {
  background: var(--hx-color-coral);
  border-color: var(--hx-color-coral);
  color: var(--hx-color-forest-deep);
  transform: rotate(90deg);
}
.offcanvas-nav {
  position: relative;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 28px 30px;
}
.oc-group .oc-label {
  display: block;
  margin-bottom: 10px;
  padding-bottom: 8px;
  border-bottom: 1px solid var(--hx-color-line-2);
  color: var(--hx-color-coral-text);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.24em;
  text-transform: uppercase;
}
.oc-group a {
  display: block;
  padding: 4px 0;
  color: var(--hx-color-forest);
  font-family: var(--hx-ff-heading);
  font-size: 17px;
  line-height: 1.35;
}
.oc-group a:hover,
.oc-group a.is-current {
  color: var(--hx-color-coral-text);
}
.oc-group a.is-current {
  font-style: italic;
}
.offcanvas-foot {
  position: relative;
  margin-top: auto;
  padding-top: 34px;
}
.offcanvas-foot .oc-currency {
  max-width: 200px;
  margin-bottom: 28px;
}
.offcanvas-foot .oc-currency label {
  display: block;
  margin-bottom: 8px;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.2em;
  text-transform: uppercase;
}
.offcanvas-foot .label {
  display: block;
  margin-bottom: 6px;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.2em;
  text-transform: uppercase;
}
.offcanvas-foot .oc-contact {
  display: block;
  color: var(--hx-color-forest);
  font-family: var(--hx-ff-heading);
  font-size: 22px;
  line-height: 1.4;
}
.hx-social {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-top: 22px;
}
.hx-social a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 42px;
  height: 42px;
  background: var(--hx-color-forest);
  color: var(--hx-color-white);
  font-size: 14px;
  transition: background 0.3s, color 0.3s, transform 0.35s var(--hx-ease);
}
.hx-social a:hover {
  background: var(--hx-color-coral);
  color: var(--hx-color-forest-deep);
  transform: translateY(-3px);
}

/*======================
5. Custom Select
========================*/
/* Native selects stay in the form (value, name, submit); a styled button and
   listbox are drawn over them and keep them in sync. */
.hx-select {
  position: relative;
}
.hx-select > select {
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  padding: 0 !important;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  border: 0 !important;
}
.hx-select .select-button {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  width: 100%;
  height: 36px;
  padding: 0;
  font-size: 18px;
  font-weight: 500;
  text-align: left;
  color: var(--hx-color-forest);
}
.hx-select .select-button .select-value {
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
}
.hx-select .select-button i {
  flex-shrink: 0;
  font-size: 10px;
  color: var(--hx-color-coral-text);
  transition: transform 0.35s var(--hx-ease);
}
.hx-select.is-open .select-button i {
  transform: rotate(180deg);
}
.hx-select .select-list {
  position: absolute;
  top: calc(100% + 18px);
  left: -30px;
  z-index: 30;
  min-width: calc(100% + 60px);
  max-height: 340px;
  padding: 10px 0;
  overflow-x: hidden;
  overflow-y: auto;
  list-style: none;
  background-color: var(--hx-color-white);
  border-top: 2px solid var(--hx-color-coral);
  box-shadow: var(--hx-shadow-lg);
  opacity: 0;
  visibility: hidden;
  transform: translateY(10px);
  transition: opacity 0.3s var(--hx-ease), transform 0.3s var(--hx-ease), visibility 0.3s;
}
.hx-select.opens-up .select-list {
  top: auto;
  bottom: calc(100% + 18px);
  border-top: 0;
  border-bottom: 2px solid var(--hx-color-coral);
  transform: translateY(-10px);
}
.hx-select.is-open .select-list {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
}
.hx-select .select-option {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  padding: 10px 26px;
  font-size: 16px;
  color: var(--hx-color-forest);
  white-space: nowrap;
  cursor: pointer;
  transition: background-color 0.2s var(--hx-ease), color 0.2s var(--hx-ease);
}
.hx-select .select-option .option-meta {
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--hx-color-forest);
}
.hx-select .select-option .option-meta.is-none {
  color: var(--hx-color-body);
}
.hx-select .select-option.is-focused,
.hx-select .select-option:hover {
  background-color: var(--hx-color-mist);
}
.hx-select .select-option.is-disabled {
  cursor: not-allowed;
  opacity: 0.45;
}
.hx-select .select-option.is-disabled:hover {
  background-color: transparent;
}
.hx-select .select-option.is-selected {
  color: var(--hx-color-coral-text);
}
.hx-select .select-option.is-selected::after {
  content: "\f00c";
  font-family: "Font Awesome 6 Free";
  font-weight: 900;
  font-size: 11px;
  color: var(--hx-color-coral-text);
}
/* the currency switch keeps its outlined box */
.hx-currency.hx-select .select-button {
  width: auto;
  min-width: 98px;
  height: 44px;
  padding: 0 14px;
  gap: 10px;
  border: 1px solid var(--hx-color-line-2);
  font-size: 14px;
  font-weight: 600;
  letter-spacing: 0.06em;
  transition: border-color 0.3s var(--hx-ease);
}
/* the chevron sits in the button's flow, after the flag and code (the absolute
   rule above is for the native select's icon, which the custom select hides) */
.hx-currency.hx-select .select-button i {
  position: static;
  margin: 0;
}
/* the flag and code never shrink under the chevron */
.hx-currency.hx-select .select-value {
  display: inline-flex;
  flex-shrink: 0;
  align-items: center;
  overflow: visible;
}
.hx-currency.hx-select:hover .select-button,
.hx-currency.hx-select.is-open .select-button {
  border-color: var(--hx-color-coral);
}
.hx-currency.hx-select .select-list {
  top: calc(100% + 8px);
  left: 0;
  min-width: 100%;
}
/* near the foot of the screen the list opens upwards - drop the top offset,
   or top and bottom together squash it to nothing */
.hx-currency.hx-select.opens-up .select-list {
  top: auto;
  bottom: calc(100% + 8px);
}
.hx-currency.hx-select .select-option {
  padding: 8px 18px;
  font-size: 14.5px;
}
.hx-select > i {
  display: none;
}
.hx-offcanvas .oc-currency.hx-select .select-button {
  width: 160px;
}

/*======================
6. Forms
========================*/
/* Custom checkboxes and radios: the native input stays for keyboard and form */
.hx-check {
  position: relative;
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 6px 0;
  font-size: 15.5px;
  color: var(--hx-color-forest);
  cursor: pointer;
}
.hx-check input {
  position: absolute;
  opacity: 0;
  width: 1px;
  height: 1px;
}
.hx-check .check-box {
  position: relative;
  flex-shrink: 0;
  width: 20px;
  height: 20px;
  border: 1.5px solid var(--hx-color-line-2);
  background-color: var(--hx-color-white);
  transition: border-color 0.25s var(--hx-ease), background-color 0.25s var(--hx-ease);
}
.hx-check .check-box::after {
  position: absolute;
  content: "";
  left: 6px;
  top: 2px;
  width: 5px;
  height: 10px;
  border: solid var(--hx-color-forest);
  border-width: 0 2px 2px 0;
  transform: rotate(45deg) scale(0);
  transition: transform 0.25s var(--hx-ease);
}
.hx-check.is-radio .check-box {
  border-radius: 50%;
}
.hx-check.is-radio .check-box::after {
  left: 4px;
  top: 4px;
  width: 9px;
  height: 9px;
  border: 0;
  border-radius: 50%;
  background-color: var(--hx-color-forest);
  transform: scale(0);
}
.hx-check input:checked + .check-box {
  border-color: var(--hx-color-coral);
  background-color: var(--hx-color-coral);
}
.hx-check input:checked + .check-box::after {
  transform: rotate(45deg) scale(1);
}
.hx-check.is-radio input:checked + .check-box::after {
  transform: scale(1);
}
.hx-check input:focus-visible + .check-box {
  outline: 2px solid var(--hx-color-coral-text);
  outline-offset: 2px;
}
.hx-check .check-label {
  flex: 1 1 auto;
}
.hx-check .check-count {
  font-size: 13px;
  color: var(--hx-color-body);
}
.hx-check.is-empty {
  opacity: 0.45;
}
/* Budget slider */
.filter-range input[type="range"] {
  width: 100%;
  height: 24px;
  margin: 0;
  background: transparent;
  cursor: pointer;
  -webkit-appearance: none;
  appearance: none;
}
.filter-range input[type="range"]::-webkit-slider-runnable-track {
  height: 3px;
  background: linear-gradient(90deg, var(--hx-color-coral) var(--hx-fill, 100%), var(--hx-color-line-2) var(--hx-fill, 100%));
}
.filter-range input[type="range"]::-moz-range-track {
  height: 3px;
  background: var(--hx-color-line-2);
}
.filter-range input[type="range"]::-moz-range-progress {
  height: 3px;
  background: var(--hx-color-coral);
}
.filter-range input[type="range"]::-webkit-slider-thumb {
  width: 20px;
  height: 20px;
  margin-top: -8.5px;
  border: 2px solid var(--hx-color-white);
  border-radius: 50%;
  background-color: var(--hx-color-coral-text);
  box-shadow: 0 2px 8px rgba(var(--hx-color-forest-deep-rgb), 0.25);
  -webkit-appearance: none;
  appearance: none;
}
.filter-range input[type="range"]::-moz-range-thumb {
  width: 18px;
  height: 18px;
  border: 2px solid var(--hx-color-white);
  border-radius: 50%;
  background-color: var(--hx-color-coral-text);
}
.filter-range .range-read {
  display: flex;
  justify-content: space-between;
  margin-top: 8px;
  font-size: 14px;
}
.filter-range .range-read b {
  font-weight: 600;
  color: var(--hx-color-forest);
}
/* a select dressed as a bordered field (filters, sort, planner) */
.filter-select.hx-select .select-button {
  height: 50px;
  padding: 0 18px;
  border: 1px solid var(--hx-color-line-2);
  background-color: var(--hx-color-white);
  font-size: 15.5px;
  transition: border-color 0.3s var(--hx-ease);
}
.filter-select.hx-select:hover .select-button,
.filter-select.hx-select.is-open .select-button {
  border-color: var(--hx-color-coral);
}
.filter-select.hx-select .select-list {
  top: calc(100% + 6px);
  left: 0;
  min-width: 100%;
}
.filter-select.hx-select.opens-up .select-list {
  bottom: calc(100% + 6px);
}
.filter-select.hx-select .select-option {
  padding: 9px 18px;
  font-size: 15px;
}

/* Number stepper: minus / field / plus */
.hx-stepper {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  padding: 7px 0;
  clear: left;
}
.hx-stepper .stepper-label {
  font-size: 12.5px;
  line-height: 1.35;
  color: var(--hx-color-body);
}
.hx-stepper .stepper-label b {
  display: block;
  font-size: 15.5px;
  font-weight: 600;
  color: var(--hx-color-forest);
}
.hx-stepper .stepper-ctrl {
  display: flex;
  flex-shrink: 0;
  align-items: center;
  border: 1px solid var(--hx-color-line-2);
  background-color: var(--hx-color-mist);
}
.hx-stepper .stepper-ctrl button {
  width: 36px;
  height: 38px;
  font-size: 11px;
  color: var(--hx-color-forest);
  transition: background-color 0.25s var(--hx-ease);
}
.hx-stepper .stepper-ctrl button:hover:not(:disabled) {
  background-color: var(--hx-color-coral);
}
.hx-stepper .stepper-ctrl button:disabled {
  opacity: 0.35;
  cursor: not-allowed;
}
.hx-stepper .stepper-ctrl input {
  width: 38px;
  height: 38px;
  padding: 0;
  border: 0;
  background: transparent;
  font-size: 16px;
  font-weight: 600;
  text-align: center;
  color: var(--hx-color-forest);
  -moz-appearance: textfield;
  appearance: textfield;
}
.hx-stepper .stepper-ctrl input::-webkit-outer-spin-button,
.hx-stepper .stepper-ctrl input::-webkit-inner-spin-button {
  margin: 0;
  -webkit-appearance: none;
}
/* On / off switch */
.hx-switch {
  position: relative;
  display: flex;
  align-items: center;
  gap: 12px;
  font-size: 15px;
  color: var(--hx-color-forest);
  cursor: pointer;
}
.hx-switch input {
  position: absolute;
  opacity: 0;
  width: 1px;
  height: 1px;
}
.hx-switch .switch-track {
  position: relative;
  flex-shrink: 0;
  width: 40px;
  height: 22px;
  border-radius: 11px;
  background-color: var(--hx-color-line-2);
  transition: background-color 0.3s var(--hx-ease);
}
.hx-switch .switch-track::after {
  position: absolute;
  content: "";
  left: 3px;
  top: 3px;
  width: 16px;
  height: 16px;
  border-radius: 50%;
  background-color: var(--hx-color-white);
  box-shadow: 0 1px 3px rgba(var(--hx-color-forest-deep-rgb), 0.25);
  transition: transform 0.3s var(--hx-ease);
}
.hx-switch input:checked + .switch-track {
  background-color: var(--hx-color-coral);
}
.hx-switch input:checked + .switch-track::after {
  transform: translateX(18px);
}
.hx-switch input:focus-visible + .switch-track {
  outline: 2px solid var(--hx-color-coral-text);
  outline-offset: 2px;
}

/* Text fields */
.hx-input {
  display: block;
  width: 100%;
  height: 50px;
  padding: 0 18px;
  border: 1px solid var(--hx-color-line-2);
  border-radius: 0;
  background-color: var(--hx-color-mist);
  font-family: var(--hx-ff-body);
  font-size: 15.5px;
  color: var(--hx-color-forest);
  transition: border-color 0.3s var(--hx-ease), box-shadow 0.3s var(--hx-ease);
}
.hx-input:focus {
  outline: none;
  border-color: var(--hx-color-coral-text);
  box-shadow: 0 0 0 3px rgba(var(--hx-color-coral-rgb), 0.2);
}
.hx-input::placeholder {
  color: #93A29D;
}
textarea.hx-input {
  height: auto;
  min-height: 140px;
  padding: 14px 18px;
  line-height: 1.6;
  resize: vertical;
}
input[type="date"].hx-input::-webkit-calendar-picker-indicator {
  opacity: 0.6;
  cursor: pointer;
}
/* A field with its icon: the icon sits inside, on the left */
.hx-field {
  position: relative;
  clear: left;
}
.hx-field .field-icon,
.filter-select .field-icon,
.hx-subscribe .field-icon {
  position: absolute;
  top: 0;
  left: 0;
  z-index: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 48px;
  height: 50px;
  font-size: 15px;
  color: var(--hx-color-coral-text);
  pointer-events: none;
}
.hx-field .hx-input,
.hx-field textarea.hx-input {
  padding-left: 48px;
}
.filter-select.has-icon.hx-select .select-button {
  padding-left: 48px;
}
.hx-subscribe.has-icon .field-icon {
  width: 54px;
  height: 60px;
}
.hx-subscribe.has-icon input {
  padding-left: 54px;
}
/* a field always starts below its floated label */
.plan-label + * {
  clear: left;
}
/* What an AJAX form says after sending */
.form-status {
  margin: 14px 0 0;
  font-size: 14.5px;
}
.form-status:empty {
  display: none;
}
.form-status.is-success {
  color: var(--hx-color-forest);
}
.form-status.is-error {
  color: var(--hx-color-coral-text);
}

/*======================
7. Booking Bar
========================*/
/* The boxed availability bar, quoting live from the Rate Engine */
.booking-bar {
  position: relative;
  z-index: 4;
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr)) auto;
  align-items: end;
  column-gap: 30px;
  padding: 32px 36px 24px;
  background: var(--hx-color-white);
  box-shadow: var(--hx-shadow-lg);
}
.booking-bar .bb-field label {
  display: block;
  margin-bottom: 6px;
  color: var(--hx-color-forest);
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 0.06em;
}
.booking-bar .hx-input,
.booking-bar .filter-select.hx-select .select-button {
  height: 48px;
  padding-left: 30px;
  border: 0;
  border-bottom: 1px solid var(--hx-color-line-2);
  background: transparent;
  font-size: 15px;
}
.booking-bar .hx-input:focus {
  box-shadow: none;
  border-bottom-color: var(--hx-color-coral-text);
}
/* the whole date field opens the picker; its own calendar glyph would double the icon */
.hx-field input[type="date"] {
  position: relative;
}
.hx-field input[type="date"]::-webkit-calendar-picker-indicator {
  position: absolute;
  inset: 0;
  width: auto;
  height: auto;
  opacity: 0;
  cursor: pointer;
}
.booking-bar .field-icon {
  width: 22px;
  height: 48px;
  justify-content: flex-start;
  font-size: 14px;
}
.booking-bar .filter-select.has-icon.hx-select .select-button {
  padding-left: 30px;
}
.booking-bar .filter-select.hx-select:hover .select-button,
.booking-bar .filter-select.hx-select.is-open .select-button {
  border-color: var(--hx-color-coral-text);
}
.booking-bar .bb-submit .hx-btn {
  height: 58px;
}
.booking-bar .bb-quote {
  grid-column: 1 / -1;
  margin: 20px 0 0;
  padding-top: 16px;
  border-top: 1px dashed var(--hx-color-line-2);
  font-size: 14px;
}
.booking-bar .bb-quote b {
  color: var(--hx-color-forest);
  font-family: var(--hx-ff-heading);
  font-size: 17px;
  font-weight: 500;
}
.booking-bar .bb-quote .bb-season {
  color: var(--hx-color-coral-text);
}
/* the dark variant sits on a forest band (Home 3) */
.booking-bar.is-dark {
  background: transparent;
  box-shadow: none;
  padding: 0;
}
.booking-bar.is-dark .bb-field label {
  color: var(--hx-color-white);
}
.booking-bar.is-dark .hx-input,
.booking-bar.is-dark .filter-select.hx-select .select-button {
  border-bottom-color: rgba(var(--hx-color-white-rgb), 0.35);
  color: var(--hx-color-white);
}
.booking-bar.is-dark .field-icon,
.booking-bar.is-dark .select-button i {
  color: var(--hx-color-coral);
}
.booking-bar.is-dark input[type="date"].hx-input::-webkit-calendar-picker-indicator {
  filter: invert(1);
}
.booking-bar.is-dark .bb-quote {
  border-top-color: rgba(var(--hx-color-white-rgb), 0.2);
  color: rgba(var(--hx-color-white-rgb), 0.75);
}
.booking-bar.is-dark .bb-quote b {
  color: var(--hx-color-white);
}

/*======================
8. Floating Leaves
========================*/
/* Monstera cut-outs that blow in from the edge, then float, drift and sway on
   their own slow rhythm, and lean away from the cursor by their depth. Three
   nested layers keep the motions apart: .float-leaf (cursor depth) > .leaf-in
   (entrance) > img (float). Each section sets where its leaves sit. */
.has-leaves {
  position: relative;
}
.has-leaves > .container {
  position: relative;
  z-index: 2;
}
.hx-leaves {
  position: absolute;
  inset: 0;
  z-index: 1;
  overflow: hidden;
  pointer-events: none;
}
.hx-leaves.is-free {
  overflow: visible;
}
.float-leaf {
  position: absolute;
  display: block;
  width: 180px;
}
.float-leaf .leaf-in,
.float-leaf img {
  display: block;
  width: 100%;
}
.float-leaf img {
  height: auto;
  filter: drop-shadow(0 22px 26px rgba(var(--hx-color-forest-deep-rgb), 0.28));
}
/* leaves further back: smaller, softer and a little lighter */
.float-leaf.is-far img {
  opacity: 0.85;
  filter: blur(1.5px) drop-shadow(0 12px 18px rgba(var(--hx-color-forest-deep-rgb), 0.2));
}

/*----- 8.1 Placements -----*/
/* Home 1 and team: the sage band, five leaves at three depths */
.monstera-band .float-leaf.is-a {
  left: 2%;
  top: -40px;
  width: 200px;
  rotate: -14deg;
}
.monstera-band .float-leaf.is-b {
  left: 7%;
  bottom: 24px;
  width: 160px;
  rotate: 18deg;
}
.monstera-band .float-leaf.is-c {
  right: 4%;
  bottom: -50px;
  width: 240px;
}
.monstera-band .float-leaf.is-d {
  right: 3%;
  top: 26px;
  width: 110px;
  rotate: 150deg;
}
.monstera-band .float-leaf.is-e {
  left: 11%;
  top: 44%;
  width: 86px;
  rotate: -60deg;
}
/* Home 3: the forest counter box, leaves spilling over its edges */
.counter-box .hx-leaves {
  z-index: 3;
}
.counter-box .float-leaf.layer-far {
  left: -60px;
  top: -90px;
  width: 140px;
  opacity: 0.8;
}
.counter-box .float-leaf.layer-mid {
  right: -70px;
  top: -40px;
  width: 220px;
}
.counter-box .float-leaf.layer-near {
  left: 38%;
  bottom: -120px;
  width: 190px;
  rotate: 160deg;
}
/* deep forest bands: dining reservations, the about counters */
.reserve-band .float-leaf.is-a {
  right: 3%;
  top: -30px;
  width: 200px;
}
.reserve-band .float-leaf.is-b {
  left: -40px;
  bottom: -40px;
  width: 150px;
  rotate: 35deg;
}
.counter-band .float-leaf.is-a {
  left: -30px;
  top: -40px;
  width: 170px;
  rotate: 25deg;
}
.counter-band .float-leaf.is-b {
  right: -20px;
  bottom: -60px;
  width: 210px;
  rotate: -20deg;
}
/* light sections: the spa questions, contact, offers */
.spa-faq .float-leaf.is-a {
  right: -50px;
  bottom: -70px;
  width: 230px;
  rotate: -30deg;
}
.spa-faq .float-leaf.is-b {
  left: -40px;
  bottom: 60px;
  width: 150px;
  rotate: 40deg;
}
.contact-page .float-leaf.is-a {
  left: -60px;
  top: -40px;
  width: 180px;
  rotate: 30deg;
}
.contact-page .float-leaf.is-b {
  right: -50px;
  bottom: 30px;
  width: 220px;
  rotate: -15deg;
}
.offers-page .float-leaf.is-a {
  right: -50px;
  top: -50px;
  width: 190px;
  rotate: -25deg;
}
.offers-page .float-leaf.is-b {
  left: -50px;
  bottom: 120px;
  width: 150px;
  rotate: 60deg;
}
/* full-screen pages: 404 and coming soon */
.hx-error .float-leaf.is-a {
  left: 4%;
  top: 180px;
  width: 200px;
  rotate: -18deg;
}
.hx-error .float-leaf.is-b {
  right: 5%;
  bottom: 60px;
  width: 240px;
}
.hx-soon .float-leaf.is-a {
  left: 5%;
  top: 12%;
  width: 180px;
  rotate: -20deg;
}
.hx-soon .float-leaf.is-b {
  right: 4%;
  bottom: 8%;
  width: 240px;
}
.hx-soon .soon-inner {
  position: relative;
  z-index: 2;
}

/*======================
9. Hero Slider Controls
========================*/
/* Shared by the three home heroes: set title lines, arrows, a count with a
   progress line between its numbers, and a caption for the view on screen. */
.title-line {
  display: block;
  white-space: nowrap;
}
/* Home 1's lines share a half-width column, so the size follows the container
   steps; each range is sized for its widest viewport with room to spare. */
.hero-editorial .hero-title {
  font-size: var(--hx-fs-h1);
}
.hero-controls {
  display: flex;
  align-items: center;
  gap: 26px;
}
.hero-arrows {
  display: flex;
  flex: none;
  gap: 10px;
}
.hero-arrow {
  display: inline-flex;
  flex: none;
  align-items: center;
  justify-content: center;
  width: 54px;
  height: 54px;
  border: 1px solid var(--hx-color-line-2);
  color: var(--hx-color-forest);
  font-size: 14px;
  transition: background 0.3s, border-color 0.3s, color 0.3s;
}
.hero-arrow:hover {
  background: var(--hx-color-forest);
  border-color: var(--hx-color-forest);
  color: var(--hx-color-white);
}
.hero-count {
  display: inline-flex;
  flex: none;
  align-items: center;
  gap: 14px;
  color: var(--hx-color-sage);
  font-family: var(--hx-ff-heading);
  font-size: 16px;
}
.hero-count b {
  color: var(--hx-color-forest);
  font-size: 30px;
  font-weight: 300;
  line-height: 1;
}
.hero-progress {
  display: block;
  width: 90px;
  height: 1px;
  background: var(--hx-color-line-2);
}
.hero-progress i {
  display: block;
  width: 33%;
  height: 100%;
  background: var(--hx-color-coral);
  transition: width 0.8s var(--hx-ease);
}
.hero-caption {
  min-width: 0;
  color: var(--hx-color-forest);
  font-family: var(--hx-ff-heading);
  font-size: 17px;
  font-style: italic;
  line-height: 1.4;
}
/* on a photograph */
.is-dark .hero-arrow {
  border-color: rgba(var(--hx-color-white-rgb), 0.4);
  color: var(--hx-color-white);
}
.is-dark .hero-arrow:hover {
  background: var(--hx-color-coral);
  border-color: var(--hx-color-coral);
  color: var(--hx-color-forest-deep);
}
.is-dark .hero-count {
  color: rgba(var(--hx-color-white-rgb), 0.7);
}
.is-dark .hero-count b,
.is-dark .hero-caption {
  color: var(--hx-color-white);
}
.is-dark .hero-progress {
  background: rgba(var(--hx-color-white-rgb), 0.3);
}
/* centred: arrows either side of the count, the caption beneath */
.hero-controls.is-centred {
  flex-wrap: wrap;
  justify-content: center;
  row-gap: 16px;
}
.hero-controls.is-centred .hero-caption {
  flex: 0 0 100%;
  text-align: center;
}

/*======================
10. Editorial Hero
========================*/
/* flow-root: the booking bar's negative bottom margin must not collapse through the hero, so the hero ends
   above the bar's foot and the next section's ground runs under it */
.hero-editorial {
  position: relative;
  display: flow-root;
  padding: 222px 0 0;
  background: var(--hx-color-mist);
}
.hx-petals {
  position: absolute;
  inset: 0;
  z-index: 3;
  width: 100%;
  height: 100%;
  pointer-events: none;
}
.hero-editorial .hero-row {
  position: relative;
  z-index: 2;
}
/* the copy is centred on the pictures beside it (the row centres its columns) */
.hero-copy {
  position: relative;
  max-width: 610px;
  padding: 0;
}
.hero-title {
  margin-bottom: 28px;
}
.hero-lead {
  max-width: 480px;
  margin-bottom: 40px;
}
.hero-copy .hero-controls {
  flex-wrap: wrap;
  row-gap: 16px;
  margin-top: 54px;
}
.hero-copy .hero-caption {
  flex: 1 0 220px;
}
.hero-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 16px;
}
.hero-media {
  position: relative;
  height: 690px;
  margin-left: 30px;
}
.hero-main {
  position: absolute;
  top: 0;
  right: 0;
  width: 80%;
  height: 100%;
}
.hero-main .hero-swiper {
  height: 100%;
}
.hero-main .swiper-slide img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
/* the next view waits in the inset; a click moves the slider on */
.hero-inset {
  position: absolute;
  left: 0;
  bottom: 120px;
  z-index: 2;
  width: 40%;
  height: 280px;
  border: 10px solid var(--hx-color-mist);
  background: var(--hx-color-mist);
}
.hero-inset img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  opacity: 0;
  transition: opacity 1.2s var(--hx-ease), transform 1.1s var(--hx-ease);
}
.hero-inset img.is-shown {
  opacity: 1;
}
.hero-inset:hover img.is-shown {
  transform: scale(1.06);
}
.peek-label {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 40px 22px 18px;
  background: linear-gradient(to top, rgba(var(--hx-color-forest-deep-rgb), 0.7), transparent);
  color: var(--hx-color-white);
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.18em;
  text-transform: uppercase;
}
.peek-label i {
  transition: transform 0.4s var(--hx-ease);
}
.hero-inset:hover .peek-label i {
  transform: translateX(6px);
}
.hero-bloom {
  left: 2%;
  top: -34px;
  z-index: 1;
  height: 230px;
  transform-origin: 60% 100%;
}
.hero-vertical {
  position: absolute;
  top: 50%;
  right: -46px;
  color: var(--hx-color-forest);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.34em;
  text-transform: uppercase;
  writing-mode: vertical-rl;
  transform: translateY(-50%) rotate(180deg);
}
/* the booking bar sits under the hero's pictures and hangs over the top of the section below, which slides
   under it (that section's top padding grows by the same overlap) */
.hero-editorial .booking-bar {
  margin-top: 60px;
  margin-bottom: -100px;
}
.hero-editorial + .welcome-stem {
  padding-top: 220px;
}

/*======================
11. Welcome Stem
========================*/
.welcome-copy {
  max-width: 560px;
}
.welcome-copy .title {
  margin-bottom: 26px;
}
.welcome-copy .hx-lead {
  margin-bottom: 18px;
}
.welcome-copy .hx-link {
  margin-top: 16px;
}
.welcome-media {
  position: relative;
  height: 600px;
}
.welcome-media .hx-cover {
  display: block;
  height: 100%;
}
.welcome-media .wm-tall {
  position: absolute;
  top: 0;
  right: 0;
  width: 74%;
  height: 520px;
}
.welcome-media .wm-small {
  position: absolute;
  left: 0;
  bottom: 0;
  width: 44%;
  height: 270px;
  border: 10px solid var(--hx-color-white);
}
.ghost-year {
  position: absolute;
  right: 0;
  bottom: -18px;
  color: transparent;
  font-family: var(--hx-ff-heading);
  font-size: 118px;
  font-style: italic;
  font-weight: 300;
  line-height: 1;
  -webkit-text-stroke: 1px rgba(var(--hx-color-coral-rgb), 0.8);
}
/* five services hang from one branch, in a shallow V */
.stem-row {
  position: relative;
  margin-top: 100px;
}
.stem-line {
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
  background: var(--hx-color-line-2);
}
.stem-list {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: 20px;
}
.stem-item {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
}
.stem-stalk {
  display: block;
  width: 1px;
  background: var(--hx-color-coral);
}
.stem-item.is-1 .stem-stalk,
.stem-item.is-5 .stem-stalk {
  height: 28px;
}
.stem-item.is-2 .stem-stalk,
.stem-item.is-4 .stem-stalk {
  height: 76px;
}
.stem-item.is-3 .stem-stalk {
  height: 124px;
}
.stem-bud {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 104px;
  height: 104px;
  margin-bottom: 18px;
  border-radius: 50%;
  background: var(--hx-color-mist);
  color: var(--hx-color-forest);
  font-size: 42px;
  transition: background 0.4s var(--hx-ease), color 0.4s var(--hx-ease), transform 0.4s var(--hx-ease);
}
.stem-bud i {
  line-height: 1;
}
.stem-item:hover .stem-bud {
  background: var(--hx-color-forest);
  color: var(--hx-color-coral);
  transform: translateY(-6px);
}
.stem-label {
  color: var(--hx-color-coral-text);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.24em;
  text-transform: uppercase;
}

/*======================
12. Stay Cards
========================*/
/* one card for every list of stays; its specs read like a herbarium label */
.stay-card {
  position: relative;
  display: flex;
  flex-direction: column;
  background: var(--hx-color-white);
  /* the card follows its photograph's leaf cut, so no white shows above the curve */
  border-top-right-radius: var(--hx-leaf);
  transition: box-shadow 0.5s var(--hx-ease), transform 0.5s var(--hx-ease);
}
.stay-card:hover {
  box-shadow: var(--hx-shadow-lg);
  transform: translateY(-6px);
}
.stay-card .stay-media {
  position: relative;
  display: block;
  height: 280px;
}
.stay-card .stay-media .hx-cover {
  display: block;
  height: 100%;
}
.stay-badge {
  position: absolute;
  left: 18px;
  top: 18px;
  z-index: 2;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 8px 14px;
  border-radius: 0 14px 0 14px;
  background: rgba(var(--hx-color-white-rgb), 0.94);
  color: var(--hx-color-forest);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.18em;
  text-transform: uppercase;
}
.stay-badge i {
  color: var(--hx-color-coral-text);
  font-size: 14px;
  line-height: 1;
}
.stay-body {
  display: flex;
  flex: 1 1 auto;
  flex-direction: column;
  padding: 26px 28px 26px;
}
.stay-name {
  margin-bottom: 18px;
  font-size: 25px;
}
.stay-name a {
  color: var(--hx-color-forest);
  background: linear-gradient(var(--hx-color-coral), var(--hx-color-coral)) left bottom / 0 1px no-repeat;
  transition: background-size 0.5s var(--hx-ease), color 0.3s;
}
.stay-card:hover .stay-name a {
  background-size: 100% 1px;
}
.stay-specs {
  display: grid;
  grid-template-columns: repeat(3, auto);
  justify-content: start;
  gap: 0;
  margin: 0 0 22px;
}
.stay-specs div {
  padding: 0 20px;
  border-left: 1px solid var(--hx-color-line);
}
.stay-specs div:first-child {
  padding-left: 0;
  border-left: 0;
}
.stay-specs dt {
  color: var(--hx-color-coral-text);
  font-size: 10.5px;
  font-weight: 700;
  letter-spacing: 0.22em;
  text-transform: uppercase;
}
.stay-specs dd {
  margin: 2px 0 0;
  color: var(--hx-color-forest);
  font-family: var(--hx-ff-heading);
  font-size: 17px;
}
.stay-foot {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  margin-top: auto;
  padding-top: 18px;
  border-top: 1px solid var(--hx-color-line);
}
.stay-price {
  font-size: 13.5px;
}
.stay-price b {
  color: var(--hx-color-forest);
  font-family: var(--hx-ff-heading);
  font-size: 24px;
  font-weight: 400;
}
.stay-foot .hx-link {
  font-size: 12px;
}

/*======================
13. Stay Collection
========================*/
.stay-collection {
  position: relative;
  overflow: hidden;
  background: var(--hx-color-mist);
}
.collection-leaves {
  right: -260px;
  top: -40px;
  width: 1300px;
  opacity: 0.6;
}
.collection-side {
  position: sticky;
  top: 130px;
  padding-right: 20px;
}
.collection-side .section-head {
  margin-bottom: 34px;
}
.collection-tabs {
  margin-bottom: 36px;
  border-top: 1px solid var(--hx-color-line-2);
}
.collection-tab {
  position: relative;
  display: grid;
  grid-template-columns: 46px 1fr;
  width: 100%;
  padding: 20px 0 18px;
  border: 0;
  border-bottom: 1px solid var(--hx-color-line-2);
  background: transparent;
  text-align: left;
}
.collection-tab::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: -1px;
  height: 1px;
  background: var(--hx-color-coral);
  transform: scaleX(0);
  transform-origin: left;
  transition: transform 0.6s var(--hx-ease);
}
.collection-tab.is-active::after {
  transform: scaleX(1);
}
.collection-tab .tab-count {
  grid-row: 1 / span 2;
  padding-top: 9px;
  color: var(--hx-color-coral-text);
  font-family: var(--hx-ff-heading);
  font-size: 15px;
  font-style: italic;
}
.collection-tab .tab-name {
  color: rgba(var(--hx-color-forest-rgb), 0.42);
  font-family: var(--hx-ff-heading);
  font-size: 31px;
  font-weight: 300;
  line-height: 1.25;
  transition: color 0.4s var(--hx-ease), transform 0.5s var(--hx-ease);
}
.collection-tab .tab-from {
  font-size: 13px;
  opacity: 0.75;
}
.collection-tab .tab-from b {
  color: var(--hx-color-forest);
  font-weight: 600;
}
.collection-tab:hover .tab-name,
.collection-tab.is-active .tab-name {
  color: var(--hx-color-forest);
}
.collection-tab.is-active .tab-name {
  font-style: italic;
  transform: translateX(6px);
}
.collection-panel {
  position: relative;
  display: grid;
  grid-template-columns: 1.1fr 1fr;
  gap: 30px;
  align-items: start;
}
.collection-panel[hidden] {
  display: none;
}
.collection-panel .stay-card:first-child {
  grid-row: span 2;
}
.collection-panel .stay-card:first-child .stay-media {
  height: 580px;
}
.collection-panel .stay-card:nth-child(2) {
  margin-top: 50px;
}
.collection-panel .stay-card:not(:first-child) .stay-media {
  height: 200px;
}

/*======================
14. Why Outdoors
========================*/
/* a white call-to-action card laid over a full-height photograph */
.why-outdoors {
  position: relative;
  background: var(--hx-color-mist);
}
.why-photo {
  position: relative;
  z-index: 0;
  width: calc(50% + 360px);
  height: 760px;
  margin-left: auto;
}
.why-swiper {
  height: 100%;
}
.why-swiper .swiper-slide img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transform: scale(1.04);
  transition: transform 7s linear;
}
.why-swiper .swiper-slide-active img {
  transform: scale(1);
}
/* a soft forest scrim under the controls keeps them legible on any photograph */
.why-photo::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 2;
  background: linear-gradient(to top, rgba(var(--hx-color-forest-deep-rgb), 0.55), transparent 38%);
  pointer-events: none;
}
/* the controls end on the grid's right edge, not the photo's: the photo is
   50% + 360px of the band and runs to the page edge, so the grid edge sits
   (100% - 360px - container / 2 + 12px) in from the photo's right */
.why-controls {
  position: absolute;
  right: calc(100% - 1008px);
  bottom: 44px;
  z-index: 3;
}
.why-outdoors .container {
  position: relative;
  z-index: 1;
  margin-top: -660px;
  /* the container lies over the photo; only the card takes the pointer, so
     the photo's arrows under the container's empty area stay clickable */
  pointer-events: none;
}
.why-outdoors .why-card {
  pointer-events: auto;
}
.why-card {
  position: relative;
  max-width: 600px;
  padding: 62px 58px 58px;
  overflow: hidden;
  background: var(--hx-color-white);
  border-bottom: 6px solid var(--hx-color-coral);
  box-shadow: var(--hx-shadow-lg);
}
.why-plane {
  position: absolute;
  left: -40px;
  bottom: -50px;
  color: rgba(var(--hx-color-forest-rgb), 0.05);
  font-size: 300px;
  line-height: 1;
  pointer-events: none;
}
.why-card .title {
  margin-bottom: 14px;
}
.why-lead {
  margin-bottom: 26px;
  color: var(--hx-color-coral-text);
  font-size: 17px;
}
.why-list {
  position: relative;
  margin-bottom: 36px;
}
/* each feature is a tab for its photograph */
.why-item {
  position: relative;
  display: grid;
  grid-template-columns: 70px 1fr;
  gap: 22px;
  width: 100%;
  padding: 22px 0;
  border-top: 1px solid var(--hx-color-line);
  text-align: left;
  cursor: pointer;
}
.why-copy {
  display: block;
}
.why-bar {
  position: absolute;
  left: 92px;
  right: 0;
  bottom: -1px;
  height: 2px;
  overflow: hidden;
}
.why-bar i {
  display: block;
  height: 100%;
  background: var(--hx-color-coral);
  transform: scaleX(0);
  transform-origin: left;
}
.why-ic {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 70px;
  height: 70px;
  border-radius: 50%;
  background: var(--hx-color-white);
  color: var(--hx-color-forest);
  font-size: 30px;
  box-shadow: 0 12px 30px rgba(var(--hx-color-forest-deep-rgb), 0.1);
  transition: background 0.4s var(--hx-ease), color 0.4s var(--hx-ease);
}
.why-item:hover .why-ic,
.why-item.is-active .why-ic {
  background: var(--hx-color-forest);
  color: var(--hx-color-coral);
}
.why-title {
  display: block;
  margin-bottom: 6px;
  color: var(--hx-color-forest);
  font-family: var(--hx-ff-heading);
  font-size: 21px;
  line-height: 1.3;
  transition: color 0.3s;
}
.why-item.is-active .why-title {
  color: var(--hx-color-coral-text);
}
.why-text {
  display: block;
  color: var(--hx-color-body);
  font-size: 14.5px;
  line-height: 1.7;
}

/*======================
15. Grounds Rail
========================*/
/* the green card is the rail's control panel: title, text, counter and arrows */
.grounds-rail {
  overflow: hidden;
}
.grounds-inner {
  display: grid;
  grid-template-columns: 430px minmax(0, 1fr);
  align-items: stretch;
  gap: 34px;
  padding-left: max(24px, calc((100vw - 1320px) / 2 + 12px));
}
.grounds-panel {
  position: relative;
  display: flex;
  flex-direction: column;
  padding: 54px 46px 46px;
  overflow: hidden;
  background: var(--hx-color-forest);
  color: rgba(var(--hx-color-white-rgb), 0.76);
}
.grounds-panel .panel-ic {
  display: block;
  margin-bottom: 28px;
  color: var(--hx-color-coral);
  font-size: 54px;
  line-height: 1;
}
.grounds-panel .panel-ghost {
  position: absolute;
  right: 18px;
  top: 10px;
  color: transparent;
  font-family: var(--hx-ff-heading);
  font-size: 170px;
  font-style: italic;
  font-weight: 300;
  line-height: 1;
  -webkit-text-stroke: 1px rgba(var(--hx-color-white-rgb), 0.14);
}
.grounds-panel .hx-eyebrow {
  color: var(--hx-color-coral);
}
.grounds-panel .title {
  margin-bottom: 18px;
  color: var(--hx-color-white);
  font-size: 46px;
}
.grounds-panel .title em {
  color: var(--hx-color-coral);
}
.rail-controls {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-top: auto;
  padding-top: 40px;
}
.rail-count {
  color: rgba(var(--hx-color-white-rgb), 0.6);
  font-family: var(--hx-ff-heading);
  font-size: 18px;
}
.rail-count b {
  color: var(--hx-color-white);
  font-size: 36px;
  font-weight: 300;
}
.rail-arrows {
  display: flex;
  gap: 10px;
}
.rail-arrows button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 52px;
  height: 52px;
  border: 1px solid rgba(var(--hx-color-white-rgb), 0.35);
  background: transparent;
  color: var(--hx-color-white);
  font-size: 14px;
  transition: background 0.3s, border-color 0.3s, color 0.3s;
}
.rail-arrows button:hover {
  background: var(--hx-color-coral);
  border-color: var(--hx-color-coral);
  color: var(--hx-color-forest-deep);
}
.rail-arrows button:disabled {
  opacity: 0.35;
}
.rail-progress {
  display: block;
  height: 1px;
  margin-top: 26px;
  background: rgba(var(--hx-color-white-rgb), 0.2);
}
.rail-progress i {
  display: block;
  width: 12.5%;
  height: 100%;
  background: var(--hx-color-coral);
  transition: width 0.6s var(--hx-ease);
}
.grounds-swiper {
  width: 100%;
  min-width: 0;
}
.grounds-swiper .swiper-slide {
  width: 360px;
}
.rail-photo {
  position: relative;
  display: block;
  height: 540px;
}
.rail-photo .hx-cover {
  display: block;
  height: 100%;
}
.grounds-swiper .swiper-slide:nth-child(even) .rail-photo {
  height: 440px;
  margin-top: 100px;
}
.rail-photo::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(to top, rgba(var(--hx-color-forest-deep-rgb), 0.65), transparent 45%);
  opacity: 0;
  transition: opacity 0.5s var(--hx-ease);
}
/* centred, with side room for the leaf's rounded bottom-left corner (it
   clipped a left-set caption) */
.rail-cap {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 28px;
  z-index: 2;
  padding: 0 64px;
  text-align: center;
  color: var(--hx-color-white);
  font-family: var(--hx-ff-heading);
  font-size: 23px;
  font-style: italic;
  opacity: 0;
  transform: translateY(12px);
  transition: opacity 0.5s var(--hx-ease), transform 0.5s var(--hx-ease);
}
.rail-photo:hover::after,
.rail-photo:hover .rail-cap,
.rail-photo:focus-visible .rail-cap {
  opacity: 1;
  transform: none;
}
.rail-photo:hover img {
  transform: scale(1.05);
}

/*======================
16. Rituals Split
========================*/
.rituals-split {
  position: relative;
  overflow: hidden;
}
.split-sprig {
  right: 3%;
  top: 70px;
  width: 230px;
  opacity: 0.9;
  transform-origin: 0 100%;
}
.rituals-split .title {
  margin-bottom: 22px;
}
/* a spa price list with dotted leaders */
.ritual-prices {
  margin: 30px 0 40px;
}
.ritual-prices li {
  display: flex;
  align-items: baseline;
  gap: 14px;
  padding: 15px 0;
  border-bottom: 1px solid rgba(var(--hx-color-coral-rgb), 0.4);
}
.ritual-prices .rp-name {
  color: var(--hx-color-forest);
  font-family: var(--hx-ff-heading);
  font-size: 21px;
}
.ritual-prices .rp-dots {
  flex: 1 1 auto;
  min-width: 20px;
  border-bottom: 1px dotted rgba(var(--hx-color-forest-rgb), 0.35);
  transform: translateY(-5px);
}
.ritual-prices .rp-meta {
  font-size: 14px;
  white-space: nowrap;
}
.ritual-prices .rp-meta b {
  color: var(--hx-color-forest);
  font-family: var(--hx-ff-heading);
  font-size: 21px;
  font-weight: 400;
}
.split-media {
  position: relative;
}
.split-photo {
  height: 490px;
}
.split-photo .hx-cover {
  display: block;
  height: 100%;
}
.play-btn {
  position: absolute;
  left: 50%;
  top: 50%;
  z-index: 2;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 98px;
  height: 98px;
  margin: -49px 0 0 -49px;
  border-radius: 50%;
  background: var(--hx-color-white);
  color: var(--hx-color-coral-text);
  font-size: 22px;
  box-shadow: 0 0 0 16px rgba(var(--hx-color-white-rgb), 0.28);
  transition: transform 0.4s var(--hx-ease), background 0.3s, color 0.3s;
}
.play-btn::before {
  content: "";
  position: absolute;
  inset: -16px;
  border: 1px solid rgba(var(--hx-color-white-rgb), 0.7);
  border-radius: 50%;
  animation: hx-ring 2.6s ease-out infinite;
}
.play-btn:hover {
  background: var(--hx-color-coral);
  color: var(--hx-color-forest-deep);
  transform: scale(1.06);
}
@keyframes hx-ring {
  0% {
    opacity: 0.9;
    transform: scale(0.85);
  }
  100% {
    opacity: 0;
    transform: scale(1.5);
  }
}
@media (prefers-reduced-motion: reduce) {
  .play-btn::before {
    animation: none;
  }
}

/*======================
17. Reviews
========================*/
/*----- 17.1 Source Filter -----*/
/* typographic tabs, not chips: a hairline under the one that is on */
.review-filter {
  display: flex;
  justify-content: center;
  flex-wrap: wrap;
  gap: 0;
  margin-bottom: 46px;
}
.review-filter .filter-btn {
  position: relative;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 8px 26px;
  border: 0;
  border-left: 1px solid var(--hx-color-line-2);
  background: transparent;
  color: rgba(var(--hx-color-forest-rgb), 0.55);
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  transition: color 0.3s;
}
.review-filter .filter-btn:first-child {
  border-left: 0;
}
.review-filter .filter-btn::after {
  content: "";
  position: absolute;
  left: 26px;
  right: 26px;
  bottom: 0;
  height: 1px;
  background: var(--hx-color-coral);
  transform: scaleX(0);
  transition: transform 0.45s var(--hx-ease);
}
.review-filter .filter-btn.is-active,
.review-filter .filter-btn:hover {
  color: var(--hx-color-forest);
}
.review-filter .filter-btn.is-active::after {
  transform: scaleX(1);
}
.review-filter .filter-btn span {
  color: var(--hx-color-coral-text);
  font-family: var(--hx-ff-heading);
  font-size: 15px;
  font-style: italic;
  letter-spacing: 0;
  text-transform: none;
}
.review-filter .filter-btn img {
  width: 17px;
}

/*----- 17.2 Pull-Quote Stage -----*/
.quote-stage {
  position: relative;
  max-width: 1000px;
  margin: 0 auto 80px;
  padding: 74px 90px 46px;
  border-radius: 0 var(--hx-leaf) 0 var(--hx-leaf);
  background: var(--hx-color-white);
  text-align: center;
}
.quote-stage .frame-bloom {
  left: -46px;
  bottom: -24px;
  height: 230px;
}
.quote-stage .frame-sprig {
  right: -34px;
  top: -40px;
  width: 250px;
  transform: rotate(8deg);
}
.quote-list {
  display: grid;
}
.quote-item {
  grid-area: 1 / 1;
  margin: 0;
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.7s var(--hx-ease), visibility 0.7s;
}
.quote-item.is-current {
  opacity: 1;
  visibility: visible;
}
.quote-item.is-filtered {
  display: none;
}
.quote-text {
  margin: 0 0 38px;
  color: var(--hx-color-forest);
  font-family: var(--hx-ff-heading);
  font-size: clamp(24px, 2.5vw, 36px);
  font-style: italic;
  font-weight: 300;
  line-height: 1.38;
}
.quote-by {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-wrap: wrap;
  gap: 16px 18px;
  text-align: left;
}
.quote-avatar {
  width: 64px;
  height: 64px;
  border-radius: 50%;
  object-fit: cover;
  object-position: center top;
}
.by-copy b {
  display: block;
  color: var(--hx-color-forest);
  font-family: var(--hx-ff-heading);
  font-size: 20px;
  font-weight: 400;
}
.by-copy span {
  font-size: 13.5px;
}
.by-source {
  display: flex;
  flex-direction: column;
  gap: 3px;
  padding-left: 18px;
  border-left: 1px solid var(--hx-color-line);
  font-size: 12.5px;
}
.source-mark {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  color: var(--hx-color-forest);
  font-weight: 700;
}
.source-mark img {
  width: 17px;
}
.source-mark.is-google i {
  color: #4285F4;
}
.quote-rating i,
.score-symbols i {
  margin-right: 2px;
  color: #F4B400;
  font-size: 12px;
}
.quote-rating.is-bubbles i,
.score-symbols.is-bubbles i {
  color: #00AA6C;
}
.quote-rating i.is-empty,
.score-symbols i.is-empty {
  opacity: 0.35;
}
.quote-nav {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 22px;
  margin-top: 38px;
}
.quote-nav button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 48px;
  height: 48px;
  border: 1px solid var(--hx-color-line-2);
  background: transparent;
  color: var(--hx-color-forest);
  font-size: 13px;
  transition: background 0.3s, border-color 0.3s, color 0.3s;
}
.quote-nav button:hover {
  background: var(--hx-color-coral);
  border-color: var(--hx-color-coral);
  color: var(--hx-color-forest-deep);
}
.quote-count {
  color: var(--hx-color-body);
  font-family: var(--hx-ff-heading);
  font-size: 16px;
}
.quote-count b {
  color: var(--hx-color-forest);
  font-size: 24px;
  font-weight: 400;
}

/*----- 17.3 Platform Panels -----*/
.review-panel {
  height: 100%;
  padding: 40px 40px 34px;
  background: var(--hx-color-white);
  border-top: 2px solid var(--hx-color-coral);
}
.review-panel .panel-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  margin-bottom: 26px;
  padding-bottom: 24px;
  border-bottom: 1px solid var(--hx-color-line);
}
.review-panel .panel-logo {
  width: auto;
  max-width: 170px;
  height: 46px;
  object-fit: contain;
  object-position: left center;
}
.review-panel .panel-score {
  display: grid;
  grid-template-columns: auto auto;
  align-items: center;
  column-gap: 14px;
  text-align: left;
}
.review-panel .score-value {
  grid-row: span 2;
  color: var(--hx-color-forest);
  font-family: var(--hx-ff-heading);
  font-size: 58px;
  font-weight: 300;
  line-height: 1;
}
.review-panel .score-symbols i {
  font-size: 15px;
}
.review-panel .score-count {
  font-size: 13px;
}
.panel-bars li {
  display: grid;
  grid-template-columns: 18px 1fr 42px;
  align-items: center;
  gap: 14px;
  padding: 5px 0;
  font-size: 13px;
}
.panel-bars .bar-label {
  color: var(--hx-color-forest);
  font-weight: 700;
}
.panel-bars .bar-track {
  position: relative;
  height: 5px;
  background: var(--hx-color-mist);
}
.panel-bars .bar-track i {
  position: absolute;
  left: 0;
  top: 0;
  bottom: 0;
  width: 0;
  background: var(--hx-color-forest);
  transition: width 1.2s var(--hx-ease);
}
.review-panel[data-source="tripadvisor"] .bar-track i {
  background: #00AA6C;
}
.panel-bars .bar-pct {
  text-align: right;
}
.panel-links {
  display: flex;
  gap: 28px;
  margin-top: 26px;
}

/*======================
18. Monstera Band
========================*/
/* the sage band with its monstera cut-outs */
.monstera-band {
  position: relative;
  overflow: hidden;
  background: linear-gradient(rgba(var(--hx-color-sage-rgb), 0.9), rgba(var(--hx-color-sage-rgb), 0.9)), url("../img/package-cta-gallery/bg.jpg") center / cover no-repeat;
}
.band-copy {
  position: relative;
  z-index: 2;
  max-width: 920px;
  margin: 0 auto;
  text-align: center;
}
.band-copy .hx-eyebrow {
  color: var(--hx-color-blush);
}
.band-copy .hx-eyebrow::before {
  background: var(--hx-color-blush);
}
.band-title {
  margin-bottom: 42px;
  color: var(--hx-color-white);
  font-size: clamp(30px, 3.3vw, 50px);
  font-weight: 300;
  line-height: 1.24;
}
.band-actions {
  display: flex;
  justify-content: center;
  flex-wrap: wrap;
  gap: 16px;
}

/*======================
19. Journal Feature
========================*/
.story-feature .story-media {
  display: block;
  height: 450px;
  margin-bottom: 28px;
}
.story-media .hx-cover,
.story-thumb .hx-cover {
  display: block;
  height: 100%;
}
.story-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 6px 22px;
  margin-bottom: 10px;
  font-size: 13px;
}
.story-meta i {
  margin-right: 7px;
  color: var(--hx-color-coral-text);
}
.story-title {
  margin-bottom: 12px;
}
.story-title a {
  color: var(--hx-color-forest);
  background: linear-gradient(var(--hx-color-coral), var(--hx-color-coral)) left 94% / 0 1px no-repeat;
  transition: background-size 0.6s var(--hx-ease), color 0.3s;
}
.story-title a:hover {
  color: var(--hx-color-forest);
  background-size: 100% 1px;
}
.story-feature .story-title {
  font-size: 34px;
  font-weight: 300;
  line-height: 1.2;
}
.story-row {
  display: grid;
  grid-template-columns: 170px minmax(0, 1fr);
  align-items: center;
  gap: 26px;
  margin-bottom: 34px;
  padding-bottom: 34px;
  border-bottom: 1px solid var(--hx-color-line);
}
.story-row:last-child {
  margin-bottom: 0;
}
.story-thumb {
  display: block;
  height: 170px;
}
.story-row .story-title {
  font-size: 22px;
}
.story-row p {
  font-size: 14.5px;
}

/*======================
20. Spa Hero
========================*/
/* Home 2: full-bleed photographs with centred copy */
.hero-spa {
  position: relative;
  padding: 270px 0 0;
  background: linear-gradient(to bottom, var(--hx-color-forest-deep) calc(100% - 140px), var(--hx-color-mist) calc(100% - 140px));
}
.hero-spa .spa-media {
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
  bottom: 140px;
  overflow: hidden;
}
.hero-spa .hero-swiper {
  height: 100%;
}
.hero-spa .spa-media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  animation: hx-breathe 22s ease-in-out infinite alternate;
}
.hero-spa .spa-media::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 2;
  background: linear-gradient(180deg, rgba(var(--hx-color-forest-deep-rgb), 0.55), rgba(var(--hx-color-forest-rgb), 0.55) 60%, rgba(var(--hx-color-forest-deep-rgb), 0.75));
}
@keyframes hx-breathe {
  from {
    transform: scale(1);
  }
  to {
    transform: scale(1.08);
  }
}
@media (prefers-reduced-motion: reduce) {
  .hero-spa .spa-media img {
    animation: none;
  }
}
.hero-spa .container {
  position: relative;
  z-index: 4;
}
.spa-copy {
  max-width: 860px;
  margin: 0 auto 100px;
  text-align: center;
}
.spa-copy h1 {
  margin-bottom: 24px;
}
.spa-copy .hx-lead {
  max-width: 560px;
  margin: 0 auto 40px;
  color: rgba(var(--hx-color-white-rgb), 0.85);
}
.spa-copy .hx-eyebrow::after {
  content: "";
  width: 34px;
  height: 1px;
  background: var(--hx-color-coral);
}
.spa-copy .hero-actions {
  justify-content: center;
}
.spa-copy .hero-controls {
  margin-top: 56px;
}
.hero-spa + section {
  background: var(--hx-color-mist);
}

/*======================
21. Peace Split And Checkerboard
========================*/
/*----- 21.1 Peace Split -----*/
.peace-media {
  position: relative;
  height: 580px;
}
.peace-main {
  position: absolute;
  left: 0;
  top: 0;
  width: 86%;
  height: 100%;
}
.peace-main .hx-cover {
  display: block;
  height: 100%;
}
.peace-bloom {
  right: 0;
  top: -30px;
  height: 200px;
  transform-origin: 60% 100%;
}
.peace-stamp {
  position: absolute;
  right: 0;
  bottom: 50px;
  display: flex;
  flex-direction: column;
  width: 190px;
  padding: 30px 28px;
  background: var(--hx-color-forest);
  color: rgba(var(--hx-color-white-rgb), 0.8);
  font-size: 14px;
  line-height: 1.45;
  border-radius: 0 40px 0 40px;
  box-shadow: var(--hx-shadow-lg);
}
.peace-stamp b {
  color: var(--hx-color-coral);
  font-family: var(--hx-ff-heading);
  font-size: 58px;
  font-weight: 300;
  line-height: 1;
}
.peace-copy {
  padding-left: 30px;
}
.peace-copy .title {
  margin-bottom: 24px;
}
.peace-copy .hx-btn {
  margin-top: 20px;
}

/*----- 21.2 Checkerboard -----*/
/* core features: text tiles with ghost numerals alternate with photographs */
.checker-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 24px;
}
.checker-tile {
  position: relative;
  min-height: 300px;
  padding: 44px 40px;
  overflow: hidden;
  background: var(--hx-color-white);
  border: 1px solid var(--hx-color-line);
  transition: box-shadow 0.5s var(--hx-ease), transform 0.5s var(--hx-ease), border-color 0.5s;
}
.checker-tile:hover {
  border-color: transparent;
  box-shadow: var(--hx-shadow-lg);
  transform: translateY(-6px);
}
.checker-tile .tile-num {
  position: absolute;
  right: 18px;
  top: 6px;
  color: transparent;
  font-family: var(--hx-ff-heading);
  font-size: 96px;
  font-style: italic;
  font-weight: 300;
  line-height: 1;
  -webkit-text-stroke: 1px rgba(var(--hx-color-forest-rgb), 0.14);
}
.checker-tile .tile-ic {
  display: block;
  margin-bottom: 26px;
  color: var(--hx-color-forest);
  font-size: 52px;
  line-height: 1;
  transition: color 0.4s;
}
.checker-tile:hover .tile-ic {
  color: var(--hx-color-coral-text);
}
.checker-tile .tile-title {
  margin-bottom: 14px;
  font-size: 25px;
}
.checker-tile p {
  font-size: 14.5px;
}
.checker-photo {
  min-height: 300px;
}
.checker-photo .hx-cover {
  display: block;
  height: 100%;
}
.checker-photo:hover img {
  transform: scale(1.06);
}

/*======================
22. Ritual Day
========================*/
.rituals-menu {
  position: relative;
  overflow: hidden;
}
.rituals-menu .container {
  position: relative;
  z-index: 1;
}
/* the vine lives on the photograph's left edge and the gutter beside it */
.vine-anchor {
  position: relative;
}
.vine-art {
  left: -92px;
  top: 128px;
  z-index: 2;
  width: 140px;
  pointer-events: none;
}
.slot-tabs {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  margin-bottom: 40px;
  border-top: 1px solid rgba(var(--hx-color-forest-rgb), 0.18);
  border-bottom: 1px solid rgba(var(--hx-color-forest-rgb), 0.18);
}
.slot-tab {
  position: relative;
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 22px 10px;
  border: 0;
  background: transparent;
  color: rgba(var(--hx-color-forest-rgb), 0.55);
  font-family: var(--hx-ff-heading);
  font-size: 24px;
  text-align: left;
  transition: color 0.3s;
}
.slot-tab i {
  color: var(--hx-color-coral-text);
  font-size: 16px;
}
.slot-tab span {
  margin-left: auto;
  font-family: var(--hx-ff-body);
  font-size: 12px;
  letter-spacing: 0.08em;
}
.slot-tab::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: -1px;
  height: 2px;
  background: var(--hx-color-coral);
  transform: scaleX(0);
  transform-origin: left;
  transition: transform 0.5s var(--hx-ease);
}
.slot-tab:hover,
.slot-tab.is-active {
  color: var(--hx-color-forest);
}
.slot-tab.is-active {
  font-style: italic;
}
.slot-tab.is-active::after {
  transform: scaleX(1);
}
.slot-panel {
  display: grid;
  grid-template-columns: 5fr 7fr;
  gap: 50px;
  align-items: start;
}
.slot-panel[hidden] {
  display: none;
}
.slot-photo {
  height: 520px;
}
.slot-photo .hx-cover {
  display: block;
  height: 100%;
}
.ritual-list {
  border-top: 1px solid rgba(var(--hx-color-forest-rgb), 0.14);
}
.ritual-row {
  border-bottom: 1px solid rgba(var(--hx-color-forest-rgb), 0.14);
}
.ritual-pick {
  position: relative;
  display: grid;
  grid-template-columns: 30px minmax(0, 1fr) auto 110px;
  align-items: center;
  gap: 20px;
  padding: 22px 20px;
  cursor: pointer;
  transition: background 0.35s var(--hx-ease);
}
.ritual-pick input {
  position: absolute;
  opacity: 0;
  width: 1px;
  height: 1px;
}
.pick-box {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  border: 1.5px solid rgba(var(--hx-color-forest-rgb), 0.4);
  border-radius: 0 10px 0 10px;
  color: transparent;
  font-size: 12px;
  transition: background 0.3s, border-color 0.3s, color 0.3s;
}
.ritual-pick input:checked + .pick-box {
  background: var(--hx-color-forest);
  border-color: var(--hx-color-forest);
  color: var(--hx-color-white);
}
.ritual-pick input:focus-visible + .pick-box {
  outline: 2px solid var(--hx-color-coral-text);
  outline-offset: 3px;
}
.ritual-name {
  display: block;
  color: var(--hx-color-forest);
  font-family: var(--hx-ff-heading);
  font-size: 21px;
  line-height: 1.3;
}
.ritual-desc {
  display: block;
  font-size: 14px;
}
.ritual-time {
  font-size: 13px;
  text-align: right;
  white-space: nowrap;
}
.ritual-time b {
  display: block;
  color: var(--hx-color-forest);
  font-size: 15px;
}
.ritual-price {
  text-align: right;
}
.ritual-price b {
  color: var(--hx-color-forest);
  font-family: var(--hx-ff-heading);
  font-size: 22px;
  font-weight: 400;
}
.ritual-row:hover .ritual-pick,
.ritual-row.is-picked .ritual-pick {
  background: rgba(var(--hx-color-white-rgb), 0.75);
}
.ritual-row.is-picked .ritual-pick {
  box-shadow: inset 3px 0 0 var(--hx-color-coral);
}
.ritual-row.is-clash .ritual-pick {
  box-shadow: inset 3px 0 0 var(--hx-color-coral-text);
  background: rgba(var(--hx-color-coral-rgb), 0.16);
}
/* my ritual day */
.day-summary {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 24px 36px;
  margin-top: 46px;
  padding: 30px 36px;
  background: var(--hx-color-white);
  box-shadow: var(--hx-shadow);
}
.sum-cell span {
  display: block;
  color: var(--hx-color-coral-text);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.22em;
  text-transform: uppercase;
}
.sum-cell b {
  color: var(--hx-color-forest);
  font-family: var(--hx-ff-heading);
  font-size: 24px;
  font-weight: 400;
}
.sum-cell.is-wide b {
  font-size: 18px;
}
.sum-cell.is-total b {
  font-size: 34px;
  font-weight: 300;
}
.day-summary .hx-stepper {
  gap: 16px;
}
.day-summary .day-book {
  margin-left: auto;
}
.hx-btn.is-disabled {
  opacity: 0.45;
  cursor: not-allowed;
  box-shadow: none;
}
.day-clash {
  flex: 1 0 100%;
  margin: 0;
  color: var(--hx-color-coral-text);
  font-size: 14px;
}

/*======================
23. Card Rails And Counters
========================*/
/*----- 23.1 Card Rail -----*/
.rail-nav {
  display: flex;
  gap: 10px;
}
.rail-nav button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 54px;
  height: 54px;
  border: 1px solid var(--hx-color-line-2);
  background: var(--hx-color-white);
  color: var(--hx-color-forest);
  font-size: 14px;
  transition: background 0.3s, border-color 0.3s, color 0.3s;
}
.rail-nav button:hover {
  background: var(--hx-color-forest);
  border-color: var(--hx-color-forest);
  color: var(--hx-color-white);
}
.rail-nav button.swiper-button-disabled {
  opacity: 0.4;
}
.rail-swiper .swiper-slide {
  height: auto;
}
.rail-swiper .stay-card {
  height: 100%;
  border: 1px solid var(--hx-color-line);
}
.rail-swiper .stay-card:hover {
  transform: none;
}

/*----- 23.2 Counter Band -----*/
.counter-band {
  position: relative;
  overflow: hidden;
}
.counter-leaves {
  left: 50%;
  top: 50%;
  width: 1600px;
  opacity: 0.1;
  transform: translate(-50%, -50%);
}
.counter-item {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: 4px;
  padding-left: 28px;
  border-left: 1px solid rgba(var(--hx-color-white-rgb), 0.16);
  color: rgba(var(--hx-color-white-rgb), 0.72);
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 0.16em;
  text-transform: uppercase;
}
.counter-item i {
  margin-bottom: 14px;
  color: var(--hx-color-coral);
  font-size: 46px;
  line-height: 1;
}
.counter-item b {
  color: var(--hx-color-white);
  font-family: var(--hx-ff-heading);
  font-size: 68px;
  font-weight: 300;
  letter-spacing: -0.02em;
  line-height: 1;
  text-transform: none;
}
.counter-item b::after {
  content: "+";
  color: var(--hx-color-coral);
  font-size: 36px;
  vertical-align: top;
}

/*======================
24. Reviews Two And Video Band
========================*/
/*----- 24.1 Reviews Two -----*/
.reviews-two .title {
  margin-bottom: 30px;
}
.review-filter.is-left {
  justify-content: flex-start;
  margin-bottom: 30px;
}
.review-filter.is-left .filter-btn:first-child {
  padding-left: 0;
}
.review-filter.is-left .filter-btn:first-child::after {
  left: 0;
}
.quote-stage.is-left {
  max-width: none;
  margin: 0;
  padding: 56px 56px 40px;
  text-align: left;
}
.quote-stage.is-left .quote-by {
  justify-content: flex-start;
}
.quote-stage.is-left .quote-nav {
  justify-content: flex-start;
}
.quote-stage.is-left .frame-sprig {
  right: -20px;
  top: -44px;
  width: 210px;
}
.review-colophon.is-stacked {
  display: grid;
  gap: 24px;
}
.review-colophon.is-stacked .review-panel {
  padding: 30px 32px 26px;
}
.review-colophon.is-stacked .panel-head {
  margin-bottom: 18px;
  padding-bottom: 18px;
}
.review-colophon.is-stacked .score-value {
  font-size: 48px;
}
.review-colophon.is-stacked .panel-bars li {
  padding: 3px 0;
}
.review-colophon.is-stacked .panel-links {
  margin-top: 16px;
}

/*----- 24.2 Video Band -----*/
.video-band {
  position: relative;
  height: 620px;
  overflow: hidden;
}
.video-band .video-bg {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.video-band::after {
  content: "";
  position: absolute;
  inset: 0;
  background: rgba(var(--hx-color-forest-deep-rgb), 0.25);
}

/*======================
25. Best Time To Visit
========================*/
.month-chart {
  display: grid;
  grid-template-columns: repeat(12, minmax(0, 1fr));
  gap: 8px;
  align-items: end;
}
.month-col {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
  padding: 16px 4px 14px;
  border: 0;
  background: transparent;
  color: var(--hx-color-body);
  transition: background 0.35s var(--hx-ease), box-shadow 0.35s var(--hx-ease);
}
.month-col .m-rain {
  font-size: 11.5px;
}
.month-col .rain-bar {
  position: relative;
  display: flex;
  align-items: flex-end;
  width: 34px;
  height: 200px;
  background: rgba(var(--hx-color-forest-rgb), 0.06);
  border-radius: 0 12px 0 12px;
  overflow: hidden;
}
.month-col .rain-bar i {
  display: block;
  width: 100%;
  background: var(--hx-color-forest);
  border-radius: 0 12px 0 0;
}
.month-col[data-band="green-season"] .rain-bar i {
  background: var(--hx-color-sage);
}
.month-col[data-band="dry-season"] .rain-bar i {
  background: var(--hx-color-coral);
}
.month-col[data-band="festive"] .rain-bar i {
  background: var(--hx-color-coral-text);
}
.month-col .m-name {
  margin-top: 6px;
  color: var(--hx-color-forest);
  font-family: var(--hx-ff-heading);
  font-size: 21px;
}
.month-col .m-temp {
  font-size: 13px;
  font-weight: 700;
}
.month-col .m-bloom {
  font-size: 11.5px;
  line-height: 1.3;
  text-align: center;
  min-height: 30px;
}
.month-col .m-season {
  color: var(--hx-color-coral-text);
  font-size: 9.5px;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  text-align: center;
}
.month-col.is-best::before {
  content: "\f06c";
  position: absolute;
  top: -14px;
  left: 50%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  margin-left: -14px;
  border-radius: 50%;
  background: var(--hx-color-coral);
  color: var(--hx-color-forest-deep);
  font-family: "Font Awesome 6 Free";
  font-size: 12px;
  font-weight: 900;
}
.month-col.is-best .m-name {
  font-style: italic;
}
.month-col:hover,
.month-col.is-picked {
  background: var(--hx-color-white);
  box-shadow: var(--hx-shadow);
}
.chart-key {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 10px 30px;
  margin: 26px 0 50px;
  font-size: 13px;
}
.chart-key span {
  display: inline-flex;
  align-items: center;
  gap: 9px;
}
.chart-key span::before {
  content: "";
  width: 14px;
  height: 14px;
  border-radius: 0 5px 0 5px;
  background: var(--hx-color-forest);
}
.chart-key .key-green::before {
  background: var(--hx-color-sage);
}
.chart-key .key-dry::before {
  background: var(--hx-color-coral);
}
.chart-key .key-festive::before {
  background: var(--hx-color-coral-text);
}
.chart-key .key-best::before {
  border-radius: 50%;
  background: var(--hx-color-coral);
  box-shadow: inset 0 0 0 4px var(--hx-color-mist);
  border: 1px solid var(--hx-color-coral);
}
.month-pick {
  display: grid;
  grid-template-columns: 220px minmax(0, 1fr) 320px;
  align-items: center;
  gap: 40px;
  padding: 40px 44px;
  background: var(--hx-color-white);
  border-radius: 0 var(--hx-leaf-sm) 0 var(--hx-leaf-sm);
  box-shadow: var(--hx-shadow);
}
.pick-month h3 {
  font-size: 44px;
  font-style: italic;
  font-weight: 300;
}
.pick-month .hx-eyebrow {
  margin-bottom: 6px;
}
.pick-facts {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 16px 30px;
  margin: 0;
}
.pick-facts dt {
  color: var(--hx-color-coral-text);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.2em;
  text-transform: uppercase;
}
.pick-facts dd {
  margin: 0;
  color: var(--hx-color-forest);
  font-family: var(--hx-ff-heading);
  font-size: 18px;
}
.pick-total {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 6px;
  padding-left: 36px;
  border-left: 1px solid var(--hx-color-line);
  font-size: 13.5px;
}
.pick-total strong {
  color: var(--hx-color-forest);
  font-family: var(--hx-ff-heading);
  font-size: 46px;
  font-weight: 300;
  line-height: 1.1;
}
.pick-total .hx-btn {
  margin-top: 10px;
}

/*======================
26. Journal List And Photo Ribbon
========================*/
/*----- 26.1 Journal List -----*/
.journal-list .title {
  margin-bottom: 30px;
}
.story-list {
  border-top: 1px solid var(--hx-color-line);
}
.story-line {
  position: relative;
  display: grid;
  grid-template-columns: 70px minmax(0, 1fr) 30px;
  align-items: center;
  gap: 20px;
  padding: 28px 0;
  border-bottom: 1px solid var(--hx-color-line);
}
.story-line::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: -1px;
  height: 1px;
  background: var(--hx-color-coral);
  transform: scaleX(0);
  transform-origin: left;
  transition: transform 0.6s var(--hx-ease);
}
.story-line.is-active::after {
  transform: scaleX(1);
}
.line-num {
  color: var(--hx-color-coral-text);
  font-family: var(--hx-ff-heading);
  font-size: 26px;
  font-style: italic;
}
.line-meta {
  display: block;
  margin-bottom: 4px;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.16em;
  text-transform: uppercase;
}
.line-title {
  font-size: 27px;
  font-weight: 300;
}
.line-title a {
  color: var(--hx-color-forest);
}
.story-line.is-active .line-title a {
  font-style: italic;
}
.line-arrow {
  color: var(--hx-color-coral-text);
  opacity: 0;
  transform: translateX(-10px);
  transition: opacity 0.4s, transform 0.4s var(--hx-ease);
}
.story-line.is-active .line-arrow {
  opacity: 1;
  transform: none;
}
.story-frame {
  position: sticky;
  top: 130px;
  height: 440px;
}
.story-frame .hx-cover {
  display: block;
  height: 100%;
}

/*----- 26.2 Photo Ribbon -----*/
.photo-ribbon {
  display: grid;
  grid-template-columns: repeat(6, minmax(0, 1fr));
}
.ribbon-item {
  position: relative;
  display: block;
  aspect-ratio: 1 / 1;
  overflow: hidden;
}
.ribbon-item img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 1s var(--hx-ease);
}
.ribbon-item i {
  position: absolute;
  left: 50%;
  top: 50%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 54px;
  height: 54px;
  margin: -27px 0 0 -27px;
  border-radius: 0 16px 0 16px;
  background: var(--hx-color-coral);
  color: var(--hx-color-forest-deep);
  opacity: 0;
  transform: scale(0.7);
  transition: opacity 0.4s, transform 0.4s var(--hx-ease);
}
.ribbon-item::after {
  content: "";
  position: absolute;
  inset: 0;
  background: rgba(var(--hx-color-forest-deep-rgb), 0.45);
  opacity: 0;
  transition: opacity 0.4s;
}
.ribbon-item:hover img {
  transform: scale(1.08);
}
.ribbon-item:hover::after,
.ribbon-item:hover i,
.ribbon-item:focus-visible i {
  opacity: 1;
  transform: none;
}
.ribbon-item i {
  z-index: 2;
}

/*======================
27. Canopy Hero
========================*/
/* Home 3: the boxed header over a full-bleed slider, copy on the left */
.hero-canopy {
  position: relative;
  min-height: 780px;
  padding: 240px 0 60px;
  overflow: hidden;
  background: var(--hx-color-forest-deep);
}
.canopy-swiper {
  position: absolute !important;
  inset: 0;
  z-index: 0;
}
.canopy-swiper .swiper-slide img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.hero-canopy::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
  background: linear-gradient(90deg, rgba(var(--hx-color-forest-deep-rgb), 0.82) 0%, rgba(var(--hx-color-forest-rgb), 0.45) 55%, rgba(var(--hx-color-forest-deep-rgb), 0.2) 100%);
  pointer-events: none;
}
.hero-canopy .container {
  position: relative;
  z-index: 4;
}
.canopy-copy {
  max-width: 660px;
}
.canopy-copy h1 {
  margin-bottom: 24px;
}
.canopy-copy .hx-lead {
  max-width: 500px;
  margin-bottom: 40px;
  color: rgba(var(--hx-color-white-rgb), 0.85);
}
.hero-canopy .hero-controls {
  justify-content: flex-end;
  margin-top: 64px;
}
.hero-canopy .hero-caption {
  margin-right: auto;
  font-size: 18px;
}
.hero-canopy .hero-progress {
  width: 160px;
}
/* the full-width forest booking band */
.booking-band {
  padding: 34px 0 26px;
  background: var(--hx-color-forest);
}

/*======================
28. Canopy About And Villa Carousel
========================*/
/*----- 28.1 Collage -----*/
.canopy-about {
  position: relative;
  overflow: hidden;
}
/* the photograph covers the whole section; the veil is a gradient of opacity -
   near-solid mist behind the collage, thinning to the right so the photograph
   shows behind the copy, and fading out at the top and bottom edges */
.about-ground {
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.canopy-about::after {
  content: "";
  position: absolute;
  inset: 0;
  background:
    linear-gradient(180deg, rgba(var(--hx-color-mist-rgb), 1) 0%, rgba(var(--hx-color-mist-rgb), 0) 16%, rgba(var(--hx-color-white-rgb), 0) 84%, rgba(var(--hx-color-white-rgb), 1) 100%),
    linear-gradient(90deg, rgba(var(--hx-color-mist-rgb), 0.96) 0%, rgba(var(--hx-color-mist-rgb), 0.88) 38%, rgba(var(--hx-color-mist-rgb), 0.42) 70%, rgba(var(--hx-color-mist-rgb), 0.18) 100%);
  pointer-events: none;
}
.canopy-about .container {
  position: relative;
  z-index: 1;
}
.about-collage {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 22px;
}
.collage-col {
  display: grid;
  gap: 22px;
}
.collage-col.is-offset {
  padding-top: 30px;
}
/* the tiles take the mirrored leaf cut, so with the photos' cut every outer
   and inner corner of the 2 x 2 collage is rounded */
.collage-tile {
  padding: 40px 30px;
  border-radius: var(--hx-leaf-sm) 0 var(--hx-leaf-sm) 0;
  background: var(--hx-color-white);
  text-align: center;
  transition: transform 0.5s var(--hx-ease), box-shadow 0.5s var(--hx-ease);
}
.collage-tile:hover {
  box-shadow: var(--hx-shadow-lg);
  transform: translateY(-6px);
}
.collage-tile i {
  display: block;
  margin-bottom: 16px;
  color: var(--hx-color-forest);
  font-size: 46px;
  line-height: 1;
}
.collage-tile h3 {
  margin-bottom: 10px;
  font-size: 24px;
}
.collage-tile p {
  font-size: 14px;
}
.collage-tile.is-forest {
  background: var(--hx-color-forest);
  color: rgba(var(--hx-color-white-rgb), 0.78);
}
.collage-tile.is-forest i {
  color: var(--hx-color-coral);
}
.collage-tile.is-forest h3 {
  color: var(--hx-color-white);
}
.collage-photo {
  height: 250px;
}
.collage-photo .hx-cover {
  display: block;
  height: 100%;
}
/* the copy panel fills its column, so it ends on the grid's right edge */
.about-copy {
  padding: 50px 40px;
  background: rgba(var(--hx-color-mist-rgb), 0.82);
}
.about-copy .title {
  margin-bottom: 22px;
}
.about-copy .hx-btn {
  margin-top: 16px;
}

/*----- 28.2 Villa Carousel -----*/
.villa-stage {
  position: relative;
}
.villa-photo {
  display: block;
  height: 520px;
  overflow: hidden;
  border-radius: 0 var(--hx-leaf) 0 var(--hx-leaf);
}
.villa-photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transform: scale(1.06);
  transition: transform 1.2s var(--hx-ease), filter 0.8s;
  filter: saturate(0.6) brightness(0.85);
}
.villa-swiper .swiper-slide-active .villa-photo img {
  transform: scale(1);
  filter: none;
}
.villa-prev,
.villa-next {
  position: absolute;
  top: 50%;
  z-index: 3;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 58px;
  height: 58px;
  margin-top: -29px;
  background: var(--hx-color-white);
  color: var(--hx-color-forest);
  box-shadow: var(--hx-shadow);
  transition: background 0.3s, color 0.3s;
}
.villa-prev {
  left: calc(50% - 30vw);
}
.villa-next {
  right: calc(50% - 30vw);
  background: var(--hx-color-forest);
  color: var(--hx-color-white);
}
.villa-prev:hover,
.villa-next:hover {
  background: var(--hx-color-coral);
  color: var(--hx-color-forest-deep);
}
.villa-caption {
  position: relative;
  z-index: 2;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 30px;
  max-width: 720px;
  margin: -70px auto 0;
  padding: 32px 40px;
  background: var(--hx-color-white);
  box-shadow: var(--hx-shadow-lg);
}
.villa-name {
  margin-bottom: 4px;
  font-size: 30px;
}
.villa-name a {
  color: var(--hx-color-forest);
}
.villa-caption p {
  margin: 0;
  font-size: 14px;
}
.villa-price {
  text-align: right;
}
.villa-price b {
  display: block;
  color: var(--hx-color-forest);
  font-family: var(--hx-ff-heading);
  font-size: 40px;
  font-weight: 300;
  line-height: 1;
}
.villa-price span {
  font-size: 12px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
}

/*======================
29. Intro Video And Herbarium
========================*/
/*----- 29.1 Intro Video -----*/
.intro-video {
  position: relative;
  overflow: hidden;
}
.intro-leaves {
  position: absolute;
  right: 0;
  top: 0;
  bottom: 0;
  width: 32%;
  background: url("../img/icon/pattern-03.jpg") center / cover no-repeat;
  opacity: 0.9;
}
.intro-video .container {
  position: relative;
  z-index: 1;
}
.intro-copy .title {
  margin-bottom: 24px;
}
.intro-copy p {
  max-width: 520px;
  margin-bottom: 36px;
}
.intro-media {
  position: relative;
}
.intro-photo {
  height: 480px;
}
.intro-photo .hx-cover {
  display: block;
  height: 100%;
}

/*----- 29.2 Herbarium Plates -----*/
/* the six features as specimen plates on a hairline grid - no cards */
.plate-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  border-top: 1px solid var(--hx-color-line-2);
  border-left: 1px solid var(--hx-color-line-2);
}
.plate {
  position: relative;
  padding: 46px 40px 44px;
  border-right: 1px solid var(--hx-color-line-2);
  border-bottom: 1px solid var(--hx-color-line-2);
  transition: background 0.5s var(--hx-ease);
}
.plate:hover {
  background: var(--hx-color-mist);
}
.plate-no {
  position: absolute;
  right: 26px;
  top: 22px;
  color: var(--hx-color-coral-text);
  font-family: var(--hx-ff-heading);
  font-size: 15px;
  font-style: italic;
}
.plate i {
  display: block;
  margin-bottom: 22px;
  color: var(--hx-color-forest);
  font-size: 48px;
  line-height: 1;
  transition: transform 0.5s var(--hx-ease), color 0.4s;
}
.plate:hover i {
  color: var(--hx-color-coral-text);
  transform: translateY(-4px);
}
.plate h3 {
  margin-bottom: 12px;
  font-size: 24px;
}
.plate p {
  font-size: 14.5px;
}

/*======================
30. Garden Table And Counter Box
========================*/
/*----- 30.1 Menu -----*/
.garden-table {
  position: relative;
  overflow: hidden;
}
.table-donut {
  left: -40px;
  top: 60px;
  width: 170px;
  opacity: 0.12;
}
.table-whisk {
  right: 2%;
  top: 44%;
  width: 190px;
  opacity: 0.7;
}
.garden-table .container {
  position: relative;
  z-index: 1;
}
.menu-tabs {
  display: flex;
  flex-wrap: wrap;
  gap: 4px 0;
}
.menu-tab {
  position: relative;
  display: inline-flex;
  align-items: center;
  gap: 9px;
  padding: 10px 20px;
  border-left: 1px solid var(--hx-color-line-2);
  color: rgba(var(--hx-color-forest-rgb), 0.55);
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  transition: color 0.3s;
}
.menu-tab:first-child {
  border-left: 0;
}
.menu-tab i {
  color: var(--hx-color-coral-text);
}
.menu-tab::after {
  content: "";
  position: absolute;
  left: 20px;
  right: 20px;
  bottom: 0;
  height: 1px;
  background: var(--hx-color-coral);
  transform: scaleX(0);
  transition: transform 0.45s var(--hx-ease);
}
.menu-tab:hover,
.menu-tab.is-active {
  color: var(--hx-color-forest);
}
.menu-tab.is-active::after {
  transform: scaleX(1);
}
.menu-list {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 26px 60px;
}
.menu-panel[hidden] {
  display: none;
}
.dish {
  display: grid;
  grid-template-columns: 96px minmax(0, 1fr);
  align-items: center;
  gap: 24px;
}
.dish-img {
  width: 96px;
  height: 96px;
  object-fit: cover;
  border-radius: 0 28px 0 28px;
}
.dish-name {
  display: flex;
  align-items: baseline;
  gap: 12px;
  margin-bottom: 6px;
  font-size: 22px;
}
.dish-dots {
  flex: 1 1 auto;
  border-bottom: 1px dotted rgba(var(--hx-color-forest-rgb), 0.35);
  transform: translateY(-5px);
}
.dish-name b {
  font-weight: 400;
}
.dish p {
  font-size: 14px;
}
.table-gallery {
  position: relative;
  margin-top: 90px;
  padding-bottom: 120px;
}
.table-gallery::before {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  top: 50%;
  bottom: 0;
  background: var(--hx-color-white);
}
.table-photo {
  position: relative;
  display: block;
  height: 330px;
}
.table-photo .hx-cover {
  display: block;
  height: 100%;
}
.table-photo:hover img {
  transform: scale(1.06);
}

/*----- 30.2 Counter Box -----*/
.canopy-counters {
  position: relative;
  background: var(--hx-color-white);
}
.counter-box {
  position: relative;
  padding: 80px 70px;
  background: var(--hx-color-forest-deep);
}
.counter-box .row {
  position: relative;
  z-index: 2;
}

/*======================
31. Blog Cards
========================*/
.blog-card {
  display: flex;
  flex-direction: column;
  height: 100%;
  background: var(--hx-color-white);
  border: 1px solid var(--hx-color-line);
  transition: box-shadow 0.5s var(--hx-ease), transform 0.5s var(--hx-ease);
}
.blog-card:hover {
  box-shadow: var(--hx-shadow-lg);
}
.blog-media {
  position: relative;
  display: block;
  height: 250px;
}
.blog-media .hx-cover {
  display: block;
  height: 100%;
}
.blog-cat {
  position: absolute;
  left: 18px;
  bottom: 18px;
  padding: 7px 14px;
  border-radius: 0 12px 0 12px;
  background: var(--hx-color-coral);
  color: var(--hx-color-forest-deep);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.18em;
  text-transform: uppercase;
}
.blog-body {
  display: flex;
  flex: 1 1 auto;
  flex-direction: column;
  padding: 26px 28px 28px;
}
.blog-body .story-title {
  font-size: 23px;
}
.blog-body p {
  font-size: 14.5px;
}
.blog-body .hx-link {
  align-self: flex-start;
  margin-top: auto;
}

/*======================
32. Sub Header
========================*/
/* a photo band with a forest veil, h1 on the left and the
   breadcrumb box at the foot on the right */
.hx-subheader {
  position: relative;
  padding: 270px 0 130px;
  overflow: hidden;
  background: var(--hx-color-forest-deep);
}
.subheader-media {
  position: absolute;
  inset: 0;
}
.subheader-media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.subheader-media::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(90deg, rgba(var(--hx-color-forest-deep-rgb), 0.88) 0%, rgba(var(--hx-color-forest-rgb), 0.62) 60%, rgba(var(--hx-color-forest-rgb), 0.4) 100%);
}
.subheader-inner {
  position: relative;
  z-index: 1;
  max-width: 780px;
}
.subheader-inner .hx-eyebrow {
  color: var(--hx-color-coral);
}
.subheader-inner h1 {
  color: var(--hx-color-white);
  font-size: clamp(42px, 4.6vw, 74px);
}
.subheader-lead {
  max-width: 600px;
  margin: 22px 0 0;
  color: rgba(var(--hx-color-white-rgb), 0.85);
  font-size: 18px;
}
.subheader-crumbs {
  position: absolute;
  right: max(12px, calc((100vw - 1320px) / 2 + 12px));
  bottom: 0;
  z-index: 2;
  padding: 18px 30px;
  border-radius: 34px 0 0 0;
  background: var(--hx-color-mist);
}
.subheader-crumbs ol {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  font-size: 14px;
  font-weight: 600;
}
.subheader-crumbs li + li::before {
  content: "/";
  margin: 0 12px;
  color: var(--hx-color-coral-text);
}
.subheader-crumbs a {
  color: var(--hx-color-body);
}
.subheader-crumbs a:hover {
  color: var(--hx-color-coral-text);
}
.subheader-crumbs li[aria-current] {
  color: var(--hx-color-forest);
}

/*======================
33. Stays Page
========================*/
.results-bar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  margin: 60px 0 34px;
  padding-bottom: 22px;
  border-bottom: 1px solid var(--hx-color-line-2);
}
.results-summary {
  margin: 0;
  font-size: 15px;
}
.results-summary b {
  color: var(--hx-color-forest);
  font-family: var(--hx-ff-heading);
  font-size: 19px;
  font-weight: 500;
}
.results-tools {
  display: flex;
  align-items: center;
  gap: 16px;
}
.sort-select {
  width: 240px;
}
.view-toggle {
  display: flex;
  gap: 6px;
}
.view-toggle a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 50px;
  height: 50px;
  border: 1px solid var(--hx-color-line-2);
  background: var(--hx-color-white);
  color: var(--hx-color-forest);
}
.view-toggle a.is-active,
.view-toggle a:hover {
  background: var(--hx-color-forest);
  border-color: var(--hx-color-forest);
  color: var(--hx-color-white);
}
.stay-total {
  display: block;
  margin-top: 2px;
  font-size: 12.5px;
}
.stay-total b {
  color: var(--hx-color-forest);
  font-weight: 700;
}
.results-empty {
  padding: 70px 30px;
  background: var(--hx-color-white);
  text-align: center;
}
.results-empty i {
  margin-bottom: 16px;
  color: var(--hx-color-coral-text);
  font-size: 34px;
}
.results-empty h3 {
  margin-bottom: 10px;
}
/* list view: image-left rows with a price column */
.stay-results.is-list {
  display: grid;
  gap: 26px;
}
.stay-row {
  display: grid;
  grid-template-columns: 380px minmax(0, 1fr) 240px;
  background: var(--hx-color-white);
  transition: box-shadow 0.5s var(--hx-ease);
}
.stay-row:hover {
  box-shadow: var(--hx-shadow-lg);
}
.row-media {
  display: block;
  min-height: 280px;
}
.row-media .hx-cover {
  display: block;
  height: 100%;
}
.row-body {
  padding: 34px 36px;
}
.row-type {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 10px;
  color: var(--hx-color-coral-text);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.2em;
  text-transform: uppercase;
}
.row-body .stay-name {
  font-size: 28px;
  margin-bottom: 12px;
}
.row-body p {
  font-size: 14.5px;
  margin-bottom: 20px;
}
.row-body .stay-specs {
  margin: 0;
}
.row-price {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  justify-content: center;
  gap: 2px;
  padding: 30px;
  border-left: 1px solid var(--hx-color-line);
  font-size: 13px;
}
.row-price > b {
  color: var(--hx-color-forest);
  font-family: var(--hx-ff-heading);
  font-size: 40px;
  font-weight: 300;
  line-height: 1.1;
}
.row-price .hx-btn {
  margin-top: 18px;
  padding: 15px 22px;
}

/*======================
34. Stay Details
========================*/
/*----- 34.1 Gallery And Blocks -----*/
.detail-gallery {
  position: relative;
  padding-top: 60px;
}
.title-card {
  position: absolute;
  left: 0;
  top: 0;
  z-index: 2;
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 30px;
  width: min(560px, 92%);
  padding: 30px 34px;
  background: var(--hx-color-white);
  box-shadow: var(--hx-shadow);
}
.title-card .hx-eyebrow {
  margin-bottom: 8px;
}
.title-card-name {
  font-size: 32px;
  font-weight: 400;
}
.title-card-price {
  margin: 0;
  text-align: right;
}
.title-card-price b {
  display: block;
  color: var(--hx-color-forest);
  font-family: var(--hx-ff-heading);
  font-size: 36px;
  font-weight: 300;
  line-height: 1;
}
.title-card-price span {
  font-size: 11px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
}
.gallery-main {
  display: block;
  height: 500px;
}
.gallery-main .hx-cover,
.gallery-thumbs .hx-cover {
  display: block;
  height: 100%;
}
.gallery-thumbs {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 14px;
  margin-top: 14px;
}
.gallery-thumbs a {
  display: block;
  height: 130px;
}
.gallery-thumbs a:hover img {
  transform: scale(1.08);
}
.detail-block {
  margin-top: 64px;
}
.block-title {
  margin-bottom: 22px;
  padding-bottom: 16px;
  border-bottom: 1px solid var(--hx-color-line-2);
  font-size: 30px;
}
.block-lead {
  margin-bottom: 26px;
}
.stay-specs.is-large {
  grid-template-columns: repeat(5, auto);
  margin-top: 30px;
}
.stay-specs.is-large dd {
  font-size: 22px;
}
.amenity-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 14px;
}
.amenity-grid li {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 12px;
  padding: 22px 20px;
  background: var(--hx-color-white);
  color: var(--hx-color-forest);
  font-size: 14.5px;
  font-weight: 600;
  transition: background 0.4s, color 0.4s;
}
.amenity-grid i {
  color: var(--hx-color-coral-text);
  font-size: 30px;
  line-height: 1;
}
.amenity-grid li:hover {
  background: var(--hx-color-forest);
  color: var(--hx-color-white);
}
.amenity-grid li:hover i {
  color: var(--hx-color-coral);
}

/*----- 34.2 Rate Calendar -----*/
.rate-strip {
  display: grid;
  grid-template-columns: repeat(12, minmax(0, 1fr));
  gap: 6px;
}
.rs-cell {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 4px;
  padding: 16px 4px 14px;
  background: var(--hx-color-white);
  border-bottom: 3px solid var(--hx-color-forest);
  text-align: center;
}
.rs-cell[data-band="green-season"] {
  border-bottom-color: var(--hx-color-sage);
}
.rs-cell[data-band="dry-season"] {
  border-bottom-color: var(--hx-color-coral);
}
.rs-cell[data-band="festive"] {
  border-bottom-color: var(--hx-color-coral-text);
}
.rs-month {
  color: var(--hx-color-forest);
  font-family: var(--hx-ff-heading);
  font-size: 17px;
}
.rs-rate {
  color: var(--hx-color-forest);
  font-size: 13.5px;
}
.rs-season {
  font-size: 9.5px;
  font-weight: 700;
  letter-spacing: 0.08em;
  line-height: 1.2;
  text-transform: uppercase;
}
.rs-cell.is-low {
  background: var(--hx-color-forest);
}
.rs-cell.is-low .rs-month,
.rs-cell.is-low .rs-rate {
  color: var(--hx-color-white);
}
.rs-cell.is-low .rs-season {
  color: var(--hx-color-coral);
}

/*----- 34.3 Hosts, Rules, Cancellation -----*/
.host-card {
  height: 100%;
  padding: 36px 30px;
  background: var(--hx-color-white);
  text-align: center;
}
.host-avatar {
  position: relative;
  display: inline-block;
  margin-bottom: 18px;
}
.host-avatar img {
  width: 104px;
  height: 104px;
  border-radius: 50%;
  object-fit: cover;
  object-position: center top;
}
.host-avatar i {
  position: absolute;
  right: -2px;
  top: 4px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 30px;
  height: 30px;
  border: 3px solid var(--hx-color-white);
  border-radius: 50%;
  background: var(--hx-color-forest);
  color: var(--hx-color-white);
  font-size: 11px;
}
.host-card h4 {
  margin-bottom: 4px;
  font-size: 24px;
}
.host-role {
  display: block;
  margin-bottom: 14px;
  color: var(--hx-color-coral-text);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.18em;
  text-transform: uppercase;
}
.host-card p {
  font-size: 14.5px;
}
.rules-grid {
  display: grid;
  grid-template-columns: 260px minmax(0, 1fr);
  gap: 40px;
  align-items: start;
}
.rules-times {
  display: grid;
  gap: 14px;
}
.rules-times div {
  padding: 20px 24px;
  background: var(--hx-color-forest);
  color: rgba(var(--hx-color-white-rgb), 0.7);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.18em;
  text-transform: uppercase;
}
.rules-times b {
  display: block;
  color: var(--hx-color-white);
  font-family: var(--hx-ff-heading);
  font-size: 40px;
  font-weight: 300;
  letter-spacing: 0;
}
.rules-list li {
  padding: 14px 0 14px 30px;
  border-bottom: 1px solid var(--hx-color-line);
  position: relative;
}
.rules-list li::before {
  content: "";
  position: absolute;
  left: 0;
  top: 24px;
  width: 14px;
  height: 1px;
  background: var(--hx-color-coral);
}
.cl-track {
  position: relative;
  display: flex;
  height: 10px;
  margin: 30px 0 20px;
  background: var(--hx-color-line);
}
.cl-seg {
  display: block;
  height: 100%;
  transition: width 0.8s var(--hx-ease);
}
.cl-seg.is-free {
  background: var(--hx-color-forest);
}
.cl-seg.is-half {
  background: var(--hx-color-coral);
}
.cl-seg.is-none {
  background: var(--hx-color-coral-text);
}
.cl-today {
  position: absolute;
  left: 0;
  top: -8px;
  width: 2px;
  height: 26px;
  background: var(--hx-color-forest-deep);
}
.cl-today span {
  position: absolute;
  left: 0;
  bottom: 100%;
  margin-bottom: 4px;
  font-style: normal;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  white-space: nowrap;
}
.cl-stages {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 20px;
}
.cl-stages li {
  padding-top: 12px;
  border-top: 3px solid var(--hx-color-forest);
  font-size: 13.5px;
}
.cl-stages li.is-half {
  border-top-color: var(--hx-color-coral);
}
.cl-stages li.is-none {
  border-top-color: var(--hx-color-coral-text);
}
.cl-stages b {
  display: block;
  color: var(--hx-color-forest);
  font-family: var(--hx-ff-heading);
  font-size: 19px;
  font-weight: 400;
}
.cl-stages li.is-now b::after {
  content: " \00b7  Now";
  color: var(--hx-color-coral-text);
  font-family: var(--hx-ff-body);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
}
.detail-block .review-panel {
  padding: 30px 28px;
}
.detail-block .review-panel .panel-head {
  flex-direction: column;
  align-items: flex-start;
  gap: 16px;
}
.map-frame {
  height: 380px;
}
.map-frame iframe {
  display: block;
  width: 100%;
  height: 100%;
  border: 0;
  filter: saturate(0.7);
}

/*----- 34.4 Detail Widget -----*/
.detail-widget {
  position: sticky;
  top: 120px;
  padding: 34px 30px 28px;
  background: var(--hx-color-white);
  border-top: 3px solid var(--hx-color-coral);
  box-shadow: var(--hx-shadow);
}
.dw-head {
  margin-bottom: 22px;
  padding-bottom: 18px;
  border-bottom: 1px solid var(--hx-color-line);
}
.dw-head .hx-eyebrow {
  margin-bottom: 6px;
}
.dw-from {
  margin: 0;
  font-size: 13px;
}
.dw-from b {
  color: var(--hx-color-forest);
  font-family: var(--hx-ff-heading);
  font-size: 38px;
  font-weight: 300;
}
.dw-label {
  display: block;
  margin-bottom: 6px;
  color: var(--hx-color-forest);
  font-size: 13px;
  font-weight: 700;
}
.detail-widget .hx-input {
  height: 48px;
  padding-left: 40px;
  font-size: 14px;
}
.detail-widget .field-icon {
  width: 40px;
  height: 48px;
}
.dw-extras {
  margin: 18px 0 0;
  padding: 16px 0 0;
  border: 0;
  border-top: 1px solid var(--hx-color-line);
}
.dw-extras legend {
  float: none;
  width: auto;
  margin-bottom: 6px;
  color: var(--hx-color-coral-text);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.2em;
  text-transform: uppercase;
}
.dw-extras .hx-check {
  font-size: 14px;
}
.dw-extras .check-count {
  font-size: 12px;
  white-space: nowrap;
}
.dw-lines {
  margin: 18px 0 14px;
  padding: 14px 0 0;
  border-top: 1px solid var(--hx-color-line);
}
.dw-lines li {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  padding: 5px 0;
  font-size: 14px;
}
.dw-lines li b {
  color: var(--hx-color-forest);
}
.dw-lines li[hidden] {
  display: none;
}
.dw-lines li[data-line="long"] b {
  color: var(--hx-color-coral-text);
}
.dw-lines li.is-total {
  margin-top: 8px;
  padding-top: 12px;
  border-top: 1px dashed var(--hx-color-line-2);
  color: var(--hx-color-forest);
  font-weight: 700;
}
.dw-lines li.is-total b {
  font-family: var(--hx-ff-heading);
  font-size: 28px;
  font-weight: 400;
}
.dw-deposit {
  margin-bottom: 16px;
  padding: 12px 14px;
  background: var(--hx-color-blush);
  font-size: 13px;
  line-height: 1.55;
}
.dw-deposit b {
  color: var(--hx-color-forest);
}
.dw-warn {
  color: var(--hx-color-coral-text);
  font-size: 13.5px;
}
.dw-note {
  margin: 12px 0 0;
  font-size: 12.5px;
  text-align: center;
}
.dw-note i {
  margin-right: 6px;
  color: var(--hx-color-coral-text);
}

/*======================
35. Stay Builder
========================*/
/* three numbered steps beside a live summary */
.builder-step {
  position: relative;
  margin-bottom: 30px;
  padding: 44px 44px 40px;
  background: var(--hx-color-white);
}
.builder-step .step-no {
  position: absolute;
  right: 34px;
  top: 22px;
  color: transparent;
  font-family: var(--hx-ff-heading);
  font-size: 74px;
  font-style: italic;
  font-weight: 300;
  line-height: 1;
  -webkit-text-stroke: 1px rgba(var(--hx-color-coral-rgb), 0.9);
}
.step-title {
  margin-bottom: 26px;
  padding-right: 70px;
  font-size: 34px;
}
.step-lead {
  max-width: 480px;
  margin: -14px 0 24px;
  padding-right: 70px;
  font-size: 15px;
}
.field-label {
  display: block;
  margin-bottom: 7px;
  color: var(--hx-color-forest);
  font-size: 13px;
  font-weight: 700;
}
.hx-stepper.is-boxed {
  padding: 10px 16px;
  border: 1px solid var(--hx-color-line-2);
  background: var(--hx-color-mist);
}
.step-warn {
  margin: 18px 0 0;
  color: var(--hx-color-coral-text);
  font-size: 14px;
}
.extras-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
}
.extras-grid .hx-check {
  flex-wrap: wrap;
  padding: 16px 18px;
  border: 1px solid var(--hx-color-line-2);
  background: var(--hx-color-mist);
  transition: border-color 0.3s, background 0.3s;
}
.extras-grid .hx-check:hover {
  border-color: var(--hx-color-coral);
}
.extras-grid .check-count {
  flex: 1 0 100%;
  padding-left: 32px;
}
.ritual-picks {
  margin-top: 22px;
  padding: 20px 22px;
  background: var(--hx-color-blush);
}
.picks-label {
  display: block;
  margin-bottom: 8px;
  color: var(--hx-color-coral-text);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.2em;
  text-transform: uppercase;
}
.ritual-picks li {
  display: flex;
  justify-content: space-between;
  gap: 14px;
  padding: 7px 0;
  border-bottom: 1px solid rgba(var(--hx-color-coral-rgb), 0.35);
  font-size: 14.5px;
}
.ritual-picks li b {
  color: var(--hx-color-forest);
}
.ritual-picks .hx-link {
  margin-top: 14px;
}
.coupon-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 10px;
}
.coupon-note {
  margin: 8px 0 0;
  font-size: 13px;
}
.coupon-note.is-ok {
  color: var(--hx-color-forest);
  font-weight: 600;
}
.coupon-note.is-bad {
  color: var(--hx-color-coral-text);
}
.builder-submit {
  margin-top: 28px;
}
.summary-card {
  position: sticky;
  top: 120px;
  padding: 34px 32px;
  background: var(--hx-color-white);
  border-top: 3px solid var(--hx-color-coral);
  box-shadow: var(--hx-shadow);
}
.sc-stay {
  display: grid;
  grid-template-columns: 110px minmax(0, 1fr);
  align-items: center;
  gap: 18px;
  margin-bottom: 22px;
  padding-bottom: 22px;
  border-bottom: 1px solid var(--hx-color-line);
}
.sc-img {
  display: block;
  height: 100px;
}
.sc-img img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.sc-stay .hx-eyebrow {
  margin-bottom: 4px;
}
.sc-name {
  font-size: 24px;
}
.sc-spec {
  margin: 2px 0 0;
  font-size: 13px;
}
.sc-facts {
  display: grid;
  gap: 10px;
  margin: 0 0 18px;
}
.sc-facts div {
  display: grid;
  grid-template-columns: 70px minmax(0, 1fr);
  gap: 12px;
  font-size: 14px;
}
.sc-facts dt {
  color: var(--hx-color-coral-text);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  padding-top: 2px;
}
.sc-facts dd {
  margin: 0;
  color: var(--hx-color-forest);
  font-weight: 600;
}
.night-list {
  margin-bottom: 16px;
  border: 1px solid var(--hx-color-line);
}
.night-list summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 12px 16px;
  color: var(--hx-color-forest);
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  cursor: pointer;
  list-style: none;
}
.night-list summary::-webkit-details-marker {
  display: none;
}
.night-list[open] summary i {
  transform: rotate(180deg);
}
.night-list ul {
  max-height: 220px;
  overflow-y: auto;
  padding: 0 16px 10px;
}
.night-list li {
  display: flex;
  justify-content: space-between;
  padding: 6px 0;
  border-top: 1px dashed var(--hx-color-line);
  font-size: 13px;
}
.night-list em {
  margin-left: 6px;
  color: var(--hx-color-coral-text);
  font-size: 11px;
  font-style: normal;
}
.sc-lines li {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  padding: 5px 0;
  font-size: 14px;
}
.sc-lines b {
  color: var(--hx-color-forest);
}
.sc-lines .is-save b {
  color: var(--hx-color-coral-text);
}
.sc-lines .is-extra span::before {
  content: "+ ";
  color: var(--hx-color-coral-text);
}
.sc-total {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  margin-top: 12px;
  padding-top: 14px;
  border-top: 1px dashed var(--hx-color-line-2);
  color: var(--hx-color-forest);
  font-weight: 700;
  font-size: 14px;
}
.sc-total b {
  font-family: var(--hx-ff-heading);
  font-size: 38px;
  font-weight: 300;
}
.sc-deposit {
  margin: 14px 0 8px;
  padding: 12px 14px;
  background: var(--hx-color-blush);
  font-size: 13.5px;
}
.sc-deposit b {
  color: var(--hx-color-forest);
}
.sc-cancel {
  margin: 0;
  font-size: 13px;
}

/*======================
36. Rituals Page
========================*/
.spa-photo {
  height: 560px;
}
.spa-photo .hx-cover {
  display: block;
  height: 100%;
}
.spa-intro .title {
  margin-bottom: 22px;
}
.pavilion-card {
  position: relative;
}
.pavilion-photo {
  display: block;
  height: 380px;
  margin-bottom: 24px;
}
.pavilion-photo .hx-cover {
  display: block;
  height: 100%;
}
.pavilion-no {
  display: block;
  margin-bottom: 6px;
  color: var(--hx-color-coral-text);
  font-family: var(--hx-ff-heading);
  font-size: 18px;
  font-style: italic;
}
.pavilion-card h3 {
  margin-bottom: 10px;
  font-size: 26px;
}
.faq-list {
  border-top: 1px solid var(--hx-color-line-2);
}
.faq-item {
  border-bottom: 1px solid var(--hx-color-line-2);
}
.faq-item summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  padding: 24px 0;
  color: var(--hx-color-forest);
  font-family: var(--hx-ff-heading);
  font-size: 22px;
  cursor: pointer;
  list-style: none;
}
.faq-item summary::-webkit-details-marker {
  display: none;
}
.faq-item summary i {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 38px;
  height: 38px;
  border-radius: 0 12px 0 12px;
  background: var(--hx-color-white);
  color: var(--hx-color-coral-text);
  font-size: 13px;
  transition: transform 0.4s var(--hx-ease), background 0.3s, color 0.3s;
}
.faq-item[open] summary i {
  background: var(--hx-color-forest);
  color: var(--hx-color-white);
  transform: rotate(45deg);
}
.faq-item p {
  max-width: 620px;
  padding: 0 0 24px;
  margin: 0;
}

/*======================
37. Filters, Places And Dining
========================*/
/*----- 37.1 Filter Bars -----*/
.is-filtered-out {
  display: none !important;
}
.hx-filter {
  display: flex;
  flex-wrap: wrap;
  gap: 4px 0;
}
.hx-filter.is-center {
  justify-content: center;
  margin-bottom: 44px;
}
.hx-filter .filter-btn {
  position: relative;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 8px 20px;
  border-left: 1px solid var(--hx-color-line-2);
  color: rgba(var(--hx-color-forest-rgb), 0.55);
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  transition: color 0.3s;
}
.hx-filter .filter-btn:first-child {
  border-left: 0;
}
.hx-filter .filter-btn::after {
  content: "";
  position: absolute;
  left: 20px;
  right: 20px;
  bottom: 0;
  height: 1px;
  background: var(--hx-color-coral);
  transform: scaleX(0);
  transition: transform 0.45s var(--hx-ease);
}
.hx-filter .filter-btn span {
  color: var(--hx-color-coral-text);
  font-family: var(--hx-ff-heading);
  font-size: 15px;
  font-style: italic;
  letter-spacing: 0;
  text-transform: none;
}
.hx-filter .filter-btn:hover,
.hx-filter .filter-btn.is-active {
  color: var(--hx-color-forest);
}
.hx-filter .filter-btn.is-active::after {
  transform: scaleX(1);
}
.hx-filter .filter-btn.is-empty {
  opacity: 0.4;
}
.filter-live {
  margin: 26px 0 0;
  font-size: 13px;
  text-align: center;
}
.filter-live:empty {
  display: none;
}

/*----- 37.2 Places -----*/
.map-wrap {
  position: relative;
}
.map-frame.is-tall {
  height: 520px;
}
.map-card {
  position: absolute;
  left: 40px;
  bottom: 40px;
  z-index: 2;
  max-width: 340px;
  padding: 30px;
  background: var(--hx-color-white);
  box-shadow: var(--hx-shadow-lg);
}
.map-card img {
  width: 160px;
  margin-bottom: 14px;
}
.map-card p {
  font-size: 14px;
}
.map-legend li {
  display: flex;
  gap: 12px;
  padding: 6px 0;
  border-top: 1px solid var(--hx-color-line);
  font-size: 13px;
}
.map-legend b {
  min-width: 60px;
  color: var(--hx-color-forest);
}
.place-card {
  height: 100%;
  background: var(--hx-color-white);
  transition: box-shadow 0.5s var(--hx-ease), transform 0.5s var(--hx-ease);
}
.place-card:hover {
  box-shadow: var(--hx-shadow-lg);
  transform: translateY(-6px);
}
.place-photo {
  display: block;
  height: 220px;
}
.place-photo .hx-cover {
  display: block;
  height: 100%;
}
.place-body {
  padding: 22px 24px 24px;
}
.place-cat {
  color: var(--hx-color-coral-text);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.2em;
  text-transform: uppercase;
}
.place-name {
  margin: 6px 0 10px;
  font-size: 22px;
}
.place-name a {
  color: var(--hx-color-forest);
}
.place-way {
  margin: 0;
  color: var(--hx-color-forest);
  font-size: 14px;
  font-weight: 600;
}
.place-way i {
  margin-right: 8px;
  color: var(--hx-color-coral-text);
}
.place-best {
  margin: 4px 0 0;
  font-size: 13px;
}
.pd-photo {
  height: 460px;
}
.pd-photo .hx-cover,
.pd-pair .hx-cover {
  display: block;
  height: 100%;
}
.pd-facts {
  grid-template-columns: repeat(4, auto) !important;
  margin: 30px 0 0 !important;
}
.pd-facts i {
  color: var(--hx-color-coral-text);
  font-size: 15px;
}
.pd-pair {
  display: block;
  height: 280px;
}
.pd-text {
  margin-top: 26px;
}
.way-steps li {
  display: grid;
  grid-template-columns: 60px minmax(0, 1fr);
  gap: 20px;
  padding: 20px 0;
  border-bottom: 1px solid var(--hx-color-line);
}
.step-dot {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 56px;
  height: 56px;
  border-radius: 0 18px 0 18px;
  background: var(--hx-color-forest);
  color: var(--hx-color-white);
  font-family: var(--hx-ff-heading);
  font-size: 18px;
  font-style: italic;
}
.way-steps h3 {
  margin-bottom: 4px;
  font-size: 21px;
}
.way-steps p {
  font-size: 14.5px;
}
.side-stack {
  position: sticky;
  top: 120px;
  display: grid;
  gap: 24px;
}
.side-card {
  padding: 32px 30px;
  background: var(--hx-color-white);
}
.side-title {
  margin-bottom: 18px;
  font-size: 24px;
}
.side-form .hx-field {
  margin-bottom: 14px;
}
.side-places li + li {
  border-top: 1px solid var(--hx-color-line);
}
.side-places a,
.side-recent a {
  display: grid;
  grid-template-columns: 70px minmax(0, 1fr);
  align-items: center;
  gap: 14px;
  padding: 12px 0;
  font-size: 13px;
  color: var(--hx-color-body);
}
.side-places img,
.side-recent img {
  width: 70px;
  height: 70px;
  object-fit: cover;
  border-radius: 0 18px 0 18px;
}
.side-places b,
.side-recent b {
  display: block;
  color: var(--hx-color-forest);
  font-family: var(--hx-ff-heading);
  font-size: 17px;
  font-weight: 400;
  line-height: 1.3;
}

/*----- 37.3 Dining -----*/
.tile-filter {
  display: grid;
  grid-template-columns: repeat(6, minmax(0, 1fr));
  gap: 14px;
  margin-bottom: 50px;
}
.tile-filter .filter-btn {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 10px;
  padding: 26px 10px 20px;
  background: var(--hx-color-white);
  color: var(--hx-color-forest);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  transition: background 0.35s, color 0.35s, transform 0.35s var(--hx-ease);
}
.tile-filter .filter-btn i {
  color: var(--hx-color-forest);
  font-size: 40px;
  line-height: 1;
  transition: color 0.35s;
}
.tile-filter .filter-btn span {
  color: var(--hx-color-coral-text);
  font-family: var(--hx-ff-heading);
  font-size: 14px;
  font-style: italic;
  letter-spacing: 0;
  text-transform: none;
}
.tile-filter .filter-btn:hover {
  transform: translateY(-4px);
}
.tile-filter .filter-btn.is-active {
  background: var(--hx-color-forest);
  color: var(--hx-color-white);
}
.tile-filter .filter-btn.is-active i,
.tile-filter .filter-btn.is-active span {
  color: var(--hx-color-coral);
}
.dish-card {
  height: 100%;
  padding-bottom: 20px;
  background: var(--hx-color-white);
}
.dish-photo {
  position: relative;
  display: block;
  height: 320px;
}
.dish-photo .hx-cover {
  display: block;
  height: 100%;
}
.dish-card:hover img {
  transform: scale(1.06);
}
.dish-badge {
  position: absolute;
  right: 16px;
  top: 16px;
  padding: 7px 12px;
  background: var(--hx-color-forest);
  color: var(--hx-color-white);
  font-family: var(--hx-ff-heading);
  font-size: 17px;
  font-weight: 400;
}
.dish-cat {
  display: block;
  margin: 20px 22px 4px;
  color: var(--hx-color-coral-text);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.2em;
  text-transform: uppercase;
}
.dish-title {
  margin: 0 22px;
  font-size: 22px;
}
.reserve-band {
  position: relative;
  overflow: hidden;
}
.reserve-band .container {
  position: relative;
  z-index: 1;
}
.reserve-form {
  padding: 40px;
  background: var(--hx-color-white);
}
.kitchen-status {
  display: inline-flex;
  flex-direction: column;
  margin-top: 16px;
  padding: 14px 20px;
  border-left: 3px solid var(--hx-color-coral);
  background: rgba(var(--hx-color-white-rgb), 0.08);
  font-size: 14px;
}
.kitchen-status b {
  font-size: 16px;
}
.is-dark .kitchen-status b {
  color: var(--hx-color-white);
}
.kitchen-status.is-open {
  border-left-color: #7ED3A7;
}
.hours-card {
  display: grid;
  grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr) auto;
  align-items: center;
  gap: 40px;
  padding: 50px 54px;
  background: var(--hx-color-mist);
  border-radius: 0 var(--hx-leaf-sm) 0 var(--hx-leaf-sm);
}
.hours-card .title {
  font-size: 40px;
}
.hours-card .kitchen-status {
  background: var(--hx-color-white);
}
.hours-list {
  display: grid;
  gap: 10px;
  margin: 0;
}
.hours-list div {
  display: flex;
  justify-content: space-between;
  gap: 20px;
  padding-bottom: 10px;
  border-bottom: 1px dotted var(--hx-color-line-2);
}
.hours-list dt {
  color: var(--hx-color-forest);
  font-family: var(--hx-ff-heading);
  font-size: 19px;
  font-weight: 400;
}
.hours-list dd {
  margin: 0;
  font-weight: 600;
}

/*======================
38. Offers, About, Team And Gallery
========================*/
/*----- 38.1 Offers -----*/
/* a large photo with a white card laid over its foot */
.offer-list {
  display: grid;
  gap: 90px;
}
.offer-card {
  position: relative;
}
.offer-photo {
  width: 90%;
  height: 520px;
}
.offer-photo .hx-cover {
  display: block;
  height: 100%;
}
.offer-body {
  position: relative;
  z-index: 2;
  width: 86%;
  margin: -150px 0 0 auto;
  padding: 44px 48px 40px;
  background: var(--hx-color-white);
  border-top: 4px solid var(--hx-color-forest);
  box-shadow: var(--hx-shadow-lg);
}
.offer-card.is-flip .offer-photo {
  margin-left: auto;
}
.offer-card.is-flip .offer-body {
  margin-left: 0;
}
.offer-flag {
  position: absolute;
  right: 40px;
  top: -18px;
  padding: 8px 16px;
  border-radius: 0 14px 0 14px;
  background: var(--hx-color-coral);
  color: var(--hx-color-forest-deep);
  font-size: 11.5px;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
}
.offer-card.is-upcoming .offer-flag {
  background: var(--hx-color-sage);
  color: var(--hx-color-white);
}
.offer-card.is-ended .offer-flag {
  background: var(--hx-color-line-2);
  color: var(--hx-color-forest);
}
.offer-card.is-ended .offer-photo img {
  filter: grayscale(0.7);
}
.offer-head {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 30px;
  padding-bottom: 22px;
  margin-bottom: 24px;
  border-bottom: 1px solid var(--hx-color-line);
}
.offer-name {
  font-size: 36px;
  font-weight: 300;
}
.offer-price {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  margin: 0;
  font-size: 12px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
}
.offer-price s {
  color: var(--hx-color-body);
  font-size: 15px;
  letter-spacing: 0;
}
.offer-price b {
  color: var(--hx-color-forest);
  font-family: var(--hx-ff-heading);
  font-size: 42px;
  font-weight: 300;
  letter-spacing: 0;
  line-height: 1.05;
}
.offer-cols {
  display: grid;
  grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr);
  gap: 40px;
}
.offer-terms {
  display: grid;
  gap: 10px;
  margin: 0;
}
.offer-terms div {
  display: flex;
  justify-content: space-between;
  gap: 20px;
  padding-bottom: 10px;
  border-bottom: 1px dotted var(--hx-color-line-2);
  font-size: 14px;
}
.offer-terms dt {
  color: var(--hx-color-coral-text);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.18em;
  text-transform: uppercase;
}
.offer-terms dd {
  margin: 0;
  color: var(--hx-color-forest);
  font-weight: 700;
  text-align: right;
}
.offer-foot {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  margin-top: 26px;
}
.offer-note {
  margin: 0;
  font-size: 13.5px;
}

/*----- 38.2 About -----*/
.film-photo {
  position: relative;
  height: 560px;
}
.film-photo .hx-cover {
  display: block;
  height: 100%;
}
.about-statement {
  max-width: 1000px;
  margin: 80px auto 90px;
  text-align: center;
}
.about-statement .hx-eyebrow::after {
  content: "";
  width: 34px;
  height: 1px;
  background: var(--hx-color-coral);
}
.statement-title {
  font-size: clamp(32px, 3.6vw, 56px);
  line-height: 1.2;
}
.statement-years {
  margin-top: 24px;
}
.statement-years b {
  color: var(--hx-color-coral-text);
  font-family: var(--hx-ff-heading);
  font-size: 26px;
  font-weight: 400;
}

/*----- 38.3 Team -----*/
.team-card {
  position: relative;
  height: 100%;
  padding: 18px 18px 26px;
  background: var(--hx-color-white);
  text-align: center;
  transition: box-shadow 0.5s var(--hx-ease), transform 0.5s var(--hx-ease);
}
.team-card:hover {
  box-shadow: var(--hx-shadow-lg);
  transform: translateY(-6px);
}
/* round portraits, ringed in coral */
.team-photo {
  display: block;
  width: 150px;
  height: 150px;
  margin: 18px auto 24px;
  border-radius: 50%;
  background: var(--hx-color-mist);
  box-shadow: 0 0 0 7px var(--hx-color-white), 0 0 0 8px var(--hx-color-coral);
}
.team-photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center top;
  transition: transform 1s var(--hx-ease);
  transform-origin: center top;
}
.team-card:hover .team-photo img {
  transform: scale(1.05);
}
.team-name {
  margin-bottom: 2px;
  font-size: 23px;
}
.team-role {
  display: block;
  color: var(--hx-color-coral-text);
  font-size: 11.5px;
  font-weight: 700;
  letter-spacing: 0.18em;
  text-transform: uppercase;
}
.team-years {
  margin: 12px 0 14px;
  font-size: 13.5px;
}
.team-years b {
  color: var(--hx-color-forest);
  font-family: var(--hx-ff-heading);
  font-size: 18px;
  font-weight: 500;
}
.team-social {
  display: flex;
  justify-content: center;
  gap: 8px;
}
.team-social a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  border: 1px solid var(--hx-color-line-2);
  color: var(--hx-color-forest);
  font-size: 13px;
  transition: background 0.3s, color 0.3s, border-color 0.3s;
}
.team-social a:hover {
  background: var(--hx-color-coral);
  border-color: var(--hx-color-coral);
  color: var(--hx-color-forest-deep);
}

/*----- 38.4 Gallery -----*/
.gallery-masonry {
  column-count: 3;
  column-gap: 20px;
}
.masonry-item {
  position: relative;
  display: block;
  margin-bottom: 20px;
  break-inside: avoid;
}
.masonry-item img {
  width: 100%;
  transition: transform 1s var(--hx-ease);
}
.masonry-item i {
  position: absolute;
  left: 50%;
  top: 50%;
  z-index: 2;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 54px;
  height: 54px;
  margin: -27px 0 0 -27px;
  border-radius: 0 16px 0 16px;
  background: var(--hx-color-coral);
  color: var(--hx-color-forest-deep);
  opacity: 0;
  transform: scale(0.7);
  transition: opacity 0.4s, transform 0.4s var(--hx-ease);
}
.masonry-item::after {
  content: "";
  position: absolute;
  inset: 0;
  background: rgba(var(--hx-color-forest-deep-rgb), 0.4);
  opacity: 0;
  transition: opacity 0.4s;
}
.masonry-item:hover img {
  transform: scale(1.06);
}
.masonry-item:hover::after,
.masonry-item:hover i,
.masonry-item:focus-visible i {
  opacity: 1;
  transform: none;
}

/*======================
39. Contact, Journal And Article
========================*/
/*----- 39.1 Contact -----*/
.contact-card {
  height: 100%;
  padding: 36px 30px;
  background: var(--hx-color-white);
  transition: box-shadow 0.5s var(--hx-ease), transform 0.5s var(--hx-ease);
}
.contact-card:hover {
  box-shadow: var(--hx-shadow-lg);
  transform: translateY(-6px);
}
.contact-card i {
  display: block;
  margin-bottom: 18px;
  color: var(--hx-color-coral-text);
  font-size: 40px;
  line-height: 1;
}
.contact-card h3 {
  margin-bottom: 8px;
  font-size: 23px;
}
.contact-card a,
.contact-card p {
  display: block;
  margin: 0 0 6px;
  color: var(--hx-color-forest);
  font-weight: 600;
}
.contact-card > span {
  font-size: 13px;
}
.contact-card.is-forest {
  background: var(--hx-color-forest);
  color: rgba(var(--hx-color-white-rgb), 0.75);
}
.contact-card.is-forest h3,
.contact-card.is-forest p,
.contact-card.is-forest b {
  color: var(--hx-color-white);
}
.contact-card.is-forest i {
  color: var(--hx-color-coral);
}
.office-state b {
  display: block;
  font-size: 15px;
}
.office-state span {
  display: block;
  font-size: 13px;
  font-weight: 400;
  opacity: 0.8;
}
.contact-main {
  margin-top: 90px;
}
.contact-main .title {
  margin-bottom: 30px;
}
.contact-main .map-frame.is-tall {
  height: 600px;
}

/*----- 39.2 Journal -----*/
.blog-tools {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  margin-bottom: 28px;
}
.blog-count {
  margin: 0;
  font-size: 14px;
}
.blog-count b {
  color: var(--hx-color-forest);
}
.post-feature {
  margin-bottom: 30px;
  background: var(--hx-color-white);
}
.post-feature-media {
  display: block;
  height: 420px;
}
.post-feature-media .hx-cover {
  display: block;
  height: 100%;
}
.post-feature-body {
  padding: 34px 38px 38px;
}
.post-feature-title {
  margin-bottom: 14px;
  font-size: 34px;
}
.post-feature-title a {
  color: var(--hx-color-forest);
}
.post-cat {
  color: var(--hx-color-coral-text);
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
}
.posts-empty {
  padding: 60px 30px;
  background: var(--hx-color-white);
  text-align: center;
}
.posts-empty i {
  margin-bottom: 14px;
  color: var(--hx-color-coral-text);
  font-size: 30px;
}
.hx-pagination {
  margin-top: 50px;
}
.hx-pagination ul {
  display: flex;
  gap: 8px;
}
.hx-pagination a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 52px;
  height: 52px;
  border: 1px solid var(--hx-color-line-2);
  background: var(--hx-color-white);
  color: var(--hx-color-forest);
  font-family: var(--hx-ff-heading);
  font-size: 18px;
  transition: background 0.3s, color 0.3s, border-color 0.3s;
}
.hx-pagination a.is-current,
.hx-pagination a:hover {
  background: var(--hx-color-forest);
  border-color: var(--hx-color-forest);
  color: var(--hx-color-white);
}
.blog-sidebar {
  position: sticky;
  top: 120px;
  display: grid;
  gap: 24px;
}
.side-cats li + li {
  border-top: 1px solid var(--hx-color-line);
}
.side-cats a {
  display: flex;
  justify-content: space-between;
  padding: 11px 0;
  color: var(--hx-color-forest);
  font-weight: 600;
}
.side-cats a span {
  color: var(--hx-color-coral-text);
  font-family: var(--hx-ff-heading);
  font-style: italic;
}
.side-cats a.is-active,
.side-cats a:hover {
  color: var(--hx-color-coral-text);
}
.side-recent li + li {
  border-top: 1px solid var(--hx-color-line);
}
.side-tags {
  margin: 0;
  line-height: 2;
}
.side-tags a {
  color: var(--hx-color-forest);
  font-family: var(--hx-ff-heading);
  font-size: 18px;
  background: linear-gradient(var(--hx-color-coral), var(--hx-color-coral)) left bottom / 0 1px no-repeat;
  transition: background-size 0.4s var(--hx-ease);
}
.side-tags a:hover {
  background-size: 100% 1px;
}
.side-promo {
  position: relative;
  min-height: 380px;
}
.side-promo img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.side-promo::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(to top, rgba(var(--hx-color-forest-deep-rgb), 0.9), rgba(var(--hx-color-forest-deep-rgb), 0.15));
}
.promo-copy {
  position: absolute;
  left: 30px;
  right: 30px;
  bottom: 30px;
  z-index: 1;
}
.promo-title {
  margin-bottom: 18px;
  color: var(--hx-color-white);
  font-family: var(--hx-ff-heading);
  font-size: 28px;
  line-height: 1.2;
}

/*----- 39.3 Article -----*/
.article-media {
  position: relative;
  margin-bottom: 30px;
}
.article-media > img:not(.hx-watermark) {
  width: 100%;
  height: 460px;
  object-fit: cover;
}
.post-gallery img {
  width: 100%;
  height: 460px;
  object-fit: cover;
}
.post-gallery-bar {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 16px;
  margin-top: 14px;
}
.post-gallery-bar button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 46px;
  height: 46px;
  border: 1px solid var(--hx-color-line-2);
  color: var(--hx-color-forest);
}
.post-gallery-bar button:hover {
  background: var(--hx-color-coral);
  border-color: var(--hx-color-coral);
}
.post-gallery-count {
  font-family: var(--hx-ff-heading);
}
.post-gallery-count b {
  color: var(--hx-color-forest);
  font-size: 22px;
  font-weight: 400;
}
.article-media.is-audio .audio-poster img {
  width: 100%;
  height: 380px;
  object-fit: cover;
}
.audio-frame {
  margin-top: 14px;
  background: var(--hx-color-white);
}
.audio-frame iframe {
  display: block;
  width: 100%;
  height: 166px;
  border: 0;
}
.article-media.is-quote {
  padding: 70px 60px;
  overflow: hidden;
  background: var(--hx-color-forest);
}
.article-media.is-quote .quote-bloom {
  right: 30px;
  bottom: -20px;
  height: 200px;
  opacity: 0.8;
}
.article-media.is-quote blockquote {
  position: relative;
  margin: 0 0 20px;
}
.article-media.is-quote blockquote p {
  color: var(--hx-color-white);
  font-family: var(--hx-ff-heading);
  font-size: clamp(24px, 2.6vw, 36px);
  font-style: italic;
  font-weight: 300;
  line-height: 1.35;
}
.article-media.is-quote figcaption {
  color: var(--hx-color-coral);
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 0.18em;
  text-transform: uppercase;
}
.article-media.is-link {
  display: flex;
  flex-direction: column;
  gap: 10px;
  padding: 60px 56px;
  background: var(--hx-color-blush);
  color: var(--hx-color-forest);
  transition: background 0.4s;
}
.article-media.is-link i {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 54px;
  height: 54px;
  margin-bottom: 10px;
  border-radius: 0 16px 0 16px;
  background: var(--hx-color-coral);
  color: var(--hx-color-forest-deep);
}
.link-host {
  color: var(--hx-color-coral-text);
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 0.1em;
}
.link-title {
  font-family: var(--hx-ff-heading);
  font-size: 32px;
  font-weight: 300;
}
.article-media.is-link:hover {
  background: var(--hx-color-white);
}
.post-meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px 24px;
  margin-bottom: 26px;
  padding-bottom: 20px;
  border-bottom: 1px solid var(--hx-color-line-2);
  font-size: 13.5px;
}
.post-meta i {
  margin-right: 7px;
  color: var(--hx-color-coral-text);
}
.post-content h2 {
  margin: 44px 0 16px;
  font-size: 34px;
}
.post-content h3 {
  margin: 34px 0 14px;
  font-size: 26px;
}
.post-content ul {
  margin: 0 0 20px;
  padding-left: 22px;
}
.post-content li {
  margin-bottom: 8px;
}
.post-content li::marker {
  color: var(--hx-color-coral-text);
}
.post-quote {
  margin: 36px 0;
  padding: 30px 36px;
  border-left: 3px solid var(--hx-color-coral);
  background: var(--hx-color-white);
}
.post-quote p {
  color: var(--hx-color-forest);
  font-family: var(--hx-ff-heading);
  font-size: 25px;
  font-style: italic;
  font-weight: 300;
  line-height: 1.4;
}
.post-quote cite {
  display: block;
  margin-top: 12px;
  color: var(--hx-color-coral-text);
  font-size: 12.5px;
  font-style: normal;
  font-weight: 700;
  letter-spacing: 0.16em;
  text-transform: uppercase;
}
.post-pair {
  margin: 10px 0 26px;
}
.post-pair a {
  display: block;
}
.post-pair img {
  width: 100%;
  height: 260px;
  object-fit: cover;
}
.post-foot {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  margin-top: 40px;
  padding: 22px 0;
  border-top: 1px solid var(--hx-color-line-2);
  border-bottom: 1px solid var(--hx-color-line-2);
}
.post-tags {
  margin: 0;
}
.post-tags b,
.post-share b {
  margin-right: 10px;
  color: var(--hx-color-forest);
  font-size: 12px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
}
.post-tags a {
  color: var(--hx-color-forest);
  font-family: var(--hx-ff-heading);
}
.post-share {
  display: flex;
  align-items: center;
  gap: 8px;
}
.post-share a,
.post-share button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 38px;
  height: 38px;
  border: 1px solid var(--hx-color-line-2);
  color: var(--hx-color-forest);
  font-size: 13px;
  transition: background 0.3s, color 0.3s, border-color 0.3s;
}
.post-share a:hover,
.post-share button:hover {
  background: var(--hx-color-coral);
  border-color: var(--hx-color-coral);
  color: var(--hx-color-forest-deep);
}
.share-note {
  font-size: 12.5px;
}
.author-box {
  display: grid;
  grid-template-columns: 120px minmax(0, 1fr);
  gap: 28px;
  margin: 44px 0;
  padding: 34px;
  background: var(--hx-color-white);
}
.author-box img {
  width: 120px;
  height: 130px;
  object-fit: cover;
  object-position: center top;
  border-radius: 0 30px 0 30px;
}
.author-name {
  margin-bottom: 8px;
  font-size: 25px;
}
.post-nav {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 20px;
  margin-bottom: 60px;
}
.post-nav a {
  display: flex;
  align-items: center;
  gap: 16px;
  padding: 18px;
  background: var(--hx-color-white);
  color: var(--hx-color-forest);
  transition: box-shadow 0.4s var(--hx-ease);
}
.post-nav a:hover {
  box-shadow: var(--hx-shadow);
}
.post-nav .nav-next {
  justify-content: flex-end;
  text-align: right;
}
.post-nav img {
  width: 70px;
  height: 70px;
  object-fit: cover;
  border-radius: 0 18px 0 18px;
}
.post-nav small {
  display: block;
  color: var(--hx-color-coral-text);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.18em;
  text-transform: uppercase;
}
.post-nav b {
  font-family: var(--hx-ff-heading);
  font-size: 17px;
  font-weight: 400;
  line-height: 1.3;
}
.comment-list {
  margin-bottom: 50px;
}
.comment {
  display: grid;
  grid-template-columns: 64px minmax(0, 1fr);
  gap: 20px;
  padding: 22px 0;
  border-bottom: 1px solid var(--hx-color-line);
}
.comment-children {
  grid-column: 2;
}
.comment-children .comment {
  border-bottom: 0;
  padding-bottom: 0;
}
.comment-avatar {
  width: 64px;
  height: 64px;
  border-radius: 50%;
  object-fit: cover;
}
.comment-head {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px 14px;
  margin-bottom: 6px;
  font-size: 13px;
}
.comment-head b {
  color: var(--hx-color-forest);
  font-family: var(--hx-ff-heading);
  font-size: 19px;
  font-weight: 400;
}
.comment-badge {
  padding: 3px 10px;
  border-radius: 0 8px 0 8px;
  background: var(--hx-color-blush);
  color: var(--hx-color-coral-text);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
}
.comment-reply {
  margin-left: auto;
  color: var(--hx-color-coral-text);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.16em;
  text-transform: uppercase;
}
.respond-note {
  font-size: 14px;
}

/*======================
40. Account, Error And Coming Soon
========================*/
/*----- 40.1 Account -----*/
.account-card {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  max-width: 1100px;
  margin: 0 auto;
  background: var(--hx-color-white);
  box-shadow: var(--hx-shadow);
}
.account-card.is-narrow {
  grid-template-columns: minmax(0, 1fr);
  max-width: 620px;
}
.account-visual {
  position: relative;
  min-height: 560px;
}
.account-visual img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.account-visual::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(to top, rgba(var(--hx-color-forest-deep-rgb), 0.85), transparent 60%);
}
.account-quote {
  position: absolute;
  left: 40px;
  right: 40px;
  bottom: 36px;
  z-index: 1;
  margin: 0;
  color: var(--hx-color-white);
  font-family: var(--hx-ff-heading);
  font-size: 24px;
  font-style: italic;
  font-weight: 300;
  line-height: 1.35;
}
.account-body {
  padding: 56px 54px;
}
.account-title {
  margin-bottom: 10px;
  font-size: 40px;
}
.account-lead {
  margin-bottom: 28px;
  font-size: 15px;
}
.account-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
}
.account-row .hx-link {
  font-size: 11.5px;
}
.account-switch {
  margin: 24px 0 0;
  padding-top: 20px;
  border-top: 1px solid var(--hx-color-line);
  font-size: 14px;
}
.account-switch a {
  color: var(--hx-color-coral-text);
  font-weight: 700;
}
.password-field .hx-input {
  padding-right: 52px;
}
.password-toggle {
  position: absolute;
  right: 0;
  top: 0;
  z-index: 2;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 50px;
  height: 50px;
  color: var(--hx-color-forest);
}
.match-note {
  display: block;
  margin-top: 6px;
  font-size: 12.5px;
}
.match-note.is-ok {
  color: var(--hx-color-forest);
}
.match-note.is-bad {
  color: var(--hx-color-coral-text);
}
.strength-meter {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-top: 10px;
  font-size: 12.5px;
}
.meter-bars {
  display: grid;
  grid-template-columns: repeat(4, 34px);
  gap: 4px;
}
.meter-bars i {
  height: 4px;
  background: var(--hx-color-line);
  transition: background 0.3s;
}
.strength-meter[data-level="1"] .meter-bars i:nth-child(-n+1),
.strength-meter[data-level="2"] .meter-bars i:nth-child(-n+2),
.strength-meter[data-level="3"] .meter-bars i:nth-child(-n+3),
.strength-meter[data-level="4"] .meter-bars i {
  background: var(--hx-color-coral);
}
.strength-meter[data-level="4"] .meter-bars i {
  background: var(--hx-color-forest);
}

/*----- 40.2 Error Page -----*/
.hx-error {
  position: relative;
  overflow: hidden;
  padding: 260px 0 140px;
  text-align: center;
}
.error-inner {
  position: relative;
  z-index: 1;
  max-width: 720px;
  margin: 0 auto;
}
.error-code {
  display: block;
  margin-bottom: 10px;
  color: transparent;
  font-family: var(--hx-ff-heading);
  font-size: clamp(120px, 18vw, 240px);
  font-style: italic;
  font-weight: 300;
  line-height: 0.9;
  -webkit-text-stroke: 1.5px var(--hx-color-coral);
}
.hx-error h1 {
  margin-bottom: 22px;
}
.hx-error .hx-lead {
  margin-bottom: 36px;
}
.hero-actions.is-center {
  justify-content: center;
}

/*----- 40.3 Coming Soon -----*/
.is-standalone {
  background: var(--hx-color-forest-deep);
}
.hx-soon {
  position: relative;
  min-height: 100vh;
  overflow: hidden;
}
.soon-bg {
  position: absolute;
  inset: 0;
}
.soon-bg img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.soon-bg::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(120deg, rgba(var(--hx-color-forest-deep-rgb), 0.92), rgba(var(--hx-color-forest-rgb), 0.55));
}
.soon-inner {
  position: relative;
  z-index: 4;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  gap: 50px;
  min-height: 100vh;
  max-width: 1320px;
  margin: 0 auto;
  padding: 50px 24px;
}
.soon-logo img {
  width: 210px;
}
.soon-panel {
  max-width: 720px;
}
.soon-title {
  margin-bottom: 20px;
}
.soon-lead {
  max-width: 560px;
  margin-bottom: 36px;
}
.soon-count {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 120px));
  gap: 14px;
  margin-bottom: 18px;
}
.soon-count div {
  padding: 20px 10px;
  border: 1px solid rgba(var(--hx-color-white-rgb), 0.2);
  border-radius: 0 24px 0 24px;
  background: rgba(var(--hx-color-white-rgb), 0.06);
  text-align: center;
}
.soon-count b {
  display: block;
  color: var(--hx-color-white);
  font-family: var(--hx-ff-heading);
  font-size: 48px;
  font-weight: 300;
  line-height: 1;
}
.soon-count span {
  font-size: 11.5px;
  font-weight: 700;
  letter-spacing: 0.18em;
  text-transform: uppercase;
}
.soon-date {
  margin-bottom: 28px;
}
.soon-date b {
  color: var(--hx-color-white);
}
.soon-panel .hx-subscribe {
  background: rgba(var(--hx-color-white-rgb), 0.1);
}
.soon-panel .hx-subscribe input {
  color: var(--hx-color-white);
}
.soon-panel .hx-subscribe input::placeholder {
  color: rgba(var(--hx-color-white-rgb), 0.65);
}
.soon-panel .field-icon {
  color: var(--hx-color-coral);
}
.soon-foot {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 20px;
}
.soon-foot .hx-social {
  margin: 0;
}
.soon-foot .hx-social a {
  background: rgba(var(--hx-color-white-rgb), 0.1);
}
.soon-foot .hx-link {
  color: var(--hx-color-white);
}

/*======================
41. Footer
========================*/
.hx-footer {
  position: relative;
}
.footer-title {
  margin-bottom: 22px;
  color: var(--hx-color-forest);
  font-family: var(--hx-ff-heading);
  font-size: 22px;
  font-weight: 400;
}
.footer-social {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
.footer-social a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  background: var(--hx-color-forest);
  color: var(--hx-color-white);
  font-size: 14px;
  transition: background 0.3s, color 0.3s, transform 0.35s var(--hx-ease);
}
.footer-social a:hover {
  background: var(--hx-color-white);
  color: var(--hx-color-forest);
  transform: translateY(-3px);
}
.hx-subscribe {
  position: relative;
  display: flex;
  flex-wrap: wrap;
  max-width: 600px;
  padding: 8px;
  background: var(--hx-color-mist);
}
.hx-subscribe input {
  flex: 1 1 200px;
  min-width: 0;
  height: 56px;
  padding: 0 20px;
  border: 0;
  background: transparent;
  color: var(--hx-color-forest);
  font-family: var(--hx-ff-body);
  font-size: 15px;
}
.hx-subscribe input:focus {
  outline: none;
}
.hx-subscribe.has-icon .field-icon {
  top: 8px;
  left: 8px;
  width: 50px;
  height: 56px;
}
.hx-subscribe.has-icon input {
  padding-left: 46px;
}
.hx-subscribe .form-status {
  flex: 1 0 100%;
  margin: 10px 12px 4px;
  text-align: left;
}

/*----- 41.1 Footer One -----*/
/* the light footer: centred logo and newsletter, then a coral bar */
.footer-style-one {
  background: var(--hx-color-white);
}
.footer-style-one .footer-main {
  position: relative;
  overflow: hidden;
  padding: 110px 0 70px;
}
.footer-style-one .footer-leaves {
  left: 50%;
  top: 0;
  width: 1500px;
  opacity: 0.55;
  transform: translateX(-50%);
}
.footer-style-one .footer-brand {
  position: relative;
  max-width: 700px;
  margin: 0 auto 80px;
  text-align: center;
}
.footer-style-one .footer-logo {
  display: inline-block;
  margin-bottom: 30px;
}
.footer-style-one .footer-logo img {
  width: 250px;
}
.footer-style-one .footer-brand p {
  margin-bottom: 36px;
}
.footer-style-one .hx-subscribe {
  margin: 0 auto;
}
.footer-style-one .footer-cols {
  position: relative;
  padding-top: 56px;
  border-top: 1px solid var(--hx-color-line);
}
.footer-list li {
  margin-bottom: 10px;
}
.footer-list a {
  color: var(--hx-color-body);
  background: linear-gradient(var(--hx-color-coral), var(--hx-color-coral)) left bottom / 0 1px no-repeat;
  transition: background-size 0.45s var(--hx-ease), color 0.3s;
}
.footer-list a:hover {
  color: var(--hx-color-forest);
  background-size: 100% 1px;
}
.footer-reach li {
  display: flex;
  gap: 14px;
  margin-bottom: 14px;
  line-height: 1.5;
}
.footer-reach i {
  flex: 0 0 auto;
  margin-top: 3px;
  color: var(--hx-color-coral-text);
  font-size: 17px;
}
.footer-reach a {
  color: var(--hx-color-body);
}
.footer-reach a:hover {
  color: var(--hx-color-coral-text);
}
.footer-style-one .footer-bar {
  padding: 18px 0;
  background: var(--hx-color-coral);
}
.footer-bar .bar-inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
}
.footer-bar .copyright {
  margin: 0;
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 0.16em;
  text-transform: uppercase;
}
.footer-style-one .footer-bar .copyright {
  color: var(--hx-color-forest-deep);
}

/*----- 41.2 Footer Two -----*/
/* the green footer with its leaf pattern, three columns */
.footer-style-two {
  background: var(--hx-color-forest) url("../img/icon/pattern-02.jpg") center / cover no-repeat;
  color: rgba(var(--hx-color-white-rgb), 0.78);
}
.footer-style-two .footer-main {
  padding: 110px 0 80px;
}
.footer-style-two .footer-title {
  color: var(--hx-color-white);
}
.footer-style-two .footer-logo {
  display: inline-block;
  margin-bottom: 26px;
}
.footer-style-two .footer-logo img {
  width: 230px;
}
.footer-style-two .footer-widget p {
  margin-bottom: 28px;
}
.footer-style-two .footer-social a {
  background: var(--hx-color-forest-deep);
}
.footer-style-two .footer-social a:hover {
  background: var(--hx-color-coral);
  color: var(--hx-color-forest-deep);
}
.footer-two-col {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px 24px;
}
.footer-two-col a {
  position: relative;
  padding-left: 18px;
  color: rgba(var(--hx-color-white-rgb), 0.82);
}
.footer-two-col a::before {
  content: "+";
  position: absolute;
  left: 0;
  color: var(--hx-color-coral);
}
.footer-two-col a:hover {
  color: var(--hx-color-coral);
}
.footer-contact li {
  display: flex;
  gap: 18px;
  padding: 18px 0;
  border-bottom: 1px solid rgba(var(--hx-color-white-rgb), 0.16);
}
.footer-contact li:first-child {
  padding-top: 0;
}
.footer-contact li:last-child {
  border-bottom: 0;
}
.footer-contact i {
  color: var(--hx-color-white);
  font-size: 34px;
  line-height: 1;
}
.footer-contact b {
  display: block;
  color: var(--hx-color-white);
  font-family: var(--hx-ff-heading);
  font-size: 19px;
  font-weight: 400;
}
.footer-contact a {
  color: rgba(var(--hx-color-white-rgb), 0.82);
}
.footer-contact a:hover {
  color: var(--hx-color-coral);
}
.footer-style-two .footer-bar {
  padding: 20px 0;
  background: var(--hx-color-coral);
}
.footer-style-two .footer-bar .copyright {
  color: var(--hx-color-forest-deep);
}
.bar-links {
  display: flex;
  gap: 26px;
}
.bar-links a {
  color: var(--hx-color-forest-deep);
  font-size: 14px;
  font-weight: 600;
}
/* Home 3: a newsletter row, and a light bar */
.footer-news {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 40px;
  margin-bottom: 70px;
  padding-bottom: 60px;
  border-bottom: 1px solid rgba(var(--hx-color-white-rgb), 0.16);
}
.footer-news .news-copy {
  max-width: 460px;
}
.footer-news .news-copy p {
  margin: 0;
}
.footer-news .hx-subscribe {
  flex: 1 1 auto;
  background: rgba(var(--hx-color-white-rgb), 0.1);
}
.footer-news .hx-subscribe input {
  color: var(--hx-color-white);
}
.footer-news .hx-subscribe input::placeholder {
  color: rgba(var(--hx-color-white-rgb), 0.6);
}
.footer-news .field-icon {
  color: var(--hx-color-coral);
}
.footer-style-two.is-three .footer-bar {
  background: var(--hx-color-mist);
}

/*======================
42. Back To Top
========================*/
/* a leaf-cut button whose coral fill rises with the page */
.hx-back-to-top {
  position: fixed;
  right: 28px;
  bottom: 28px;
  z-index: 800;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 54px;
  height: 54px;
  overflow: hidden;
  border-radius: 0 20px 0 20px;
  background: var(--hx-color-forest);
  color: var(--hx-color-white);
  font-size: 15px;
  box-shadow: var(--hx-shadow);
  opacity: 0;
  visibility: hidden;
  transform: translateY(16px);
  transition: opacity 0.4s var(--hx-ease), transform 0.4s var(--hx-ease), visibility 0.4s;
}
.hx-back-to-top.is-visible {
  opacity: 1;
  visibility: visible;
  transform: none;
}
.hx-back-to-top .btt-fill {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  height: 100%;
  background: var(--hx-color-coral);
  transform: scaleY(var(--hx-progress, 0));
  transform-origin: bottom;
}
.hx-back-to-top i {
  position: relative;
}
.hx-back-to-top:hover {
  color: var(--hx-color-forest-deep);
}

/*======================
43. Cursor
========================*/
/* A coral seed on the pointer and a leaf that trails it, turning along the pointer's path. Hidden until the script decides this is a pointer worth replacing: with JS off, or on a touch
   screen, the ordinary cursor is simply left alone. */
.hx-cursor-dot,
.hx-cursor-ring {
  position: fixed;
  left: 0;
  top: 0;
  z-index: 9999;
  pointer-events: none;
  opacity: 0;
  will-change: transform;
}
.hx-cursor-dot {
  width: 7px;
  height: 7px;
  margin: -3.5px 0 0 -3.5px;
  border-radius: 50%;
  background-color: var(--hx-color-coral);
}
.hx-cursor-ring {
  --turn: 0deg;
  width: 40px;
  height: 40px;
  margin: -20px 0 0 -20px;
}
/* the leaf: two rounded corners, two points, its axis on the diagonal (hence the -45deg) */
.hx-cursor-ring::before {
  position: absolute;
  content: "";
  inset: 0;
  border: 1.5px solid rgba(var(--hx-color-coral-rgb), 0.9);
  border-radius: 0 50%;
  transform: rotate(calc(var(--turn) - 45deg));
  transition: transform 0.45s var(--hx-ease), inset 0.4s var(--hx-ease), background-color 0.4s var(--hx-ease);
}
/* over something clickable the leaf opens out and takes a blush of coral */
.hx-cursor-ring.is-active::before {
  inset: -10px;
  background-color: rgba(var(--hx-color-coral-rgb), 0.16);
}
.hx-cursor-ring.is-drag::before {
  inset: -24px;
  background-color: var(--hx-color-coral);
}
/* over a slider that can be dragged the shape fills and says so */
.hx-cursor-ring::after {
  position: absolute;
  content: "Drag";
  inset: 0;
  display: grid;
  place-items: center;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: #FFFFFF;
  opacity: 0;
  transition: opacity 0.3s;
}
.hx-cursor-ring.is-drag::after {
  opacity: 1;
}
.hx-cursor-dot.is-drag {
  visibility: hidden;
}
html.has-cursor,
html.has-cursor * {
  cursor: none !important;
}
/* where the real cursor carries information the shape cannot (a caret in a field, whatever lives inside an embed)
   it stays, and the shape gets out of the way */
html.has-cursor :is(input, select, textarea, iframe, [contenteditable="true"]) {
  cursor: auto !important;
}

/*======================
44. Dappled Canopy
========================*/
/* WebGL: Sunlight through the rainforest canopy on the monstera band: round flecks of sun open and close as the leaves sway, under a slanting shaft of light; the pointer is a breath of wind through the leaves (JS block Dappled Canopy) */
.hx-gl {
  position: absolute;
  inset: 0;
  z-index: 1;
  width: 100%;
  height: 100%;
  pointer-events: none;
  opacity: 0;
  transition: opacity 1.6s ease;
  mix-blend-mode: screen;
}
.hx-gl.is-live {
  opacity: 1;
}
