/*============================================================================================*/
/* BODEO theme layer — palette, typography and components on top of the Paradise base styles  */
/*============================================================================================*/
:root {
  --ivory: #F4EEE5;
  --olive: #3F4938;
  --olive-dark: #2E362A;
  --espresso: #3A211B;
  --sand: #D8C7AE;
  --sand-light: #E8DFD0;
  --terracotta: #C96F5B;
  --terracotta-dark: #B25D4A;
  --sage: #A8AD96;
  --champagne: #C9A96B;
  --serif: 'Cormorant Garamond', Georgia, 'Times New Roman', serif;
  --sans: 'Montserrat', Helvetica, Arial, sans-serif;
}

/* ---------- Typography ---------- */
body { background: var(--ivory); color: var(--espresso); font-family: var(--sans); }
main { background: var(--ivory); }
h1, h2, h3, .title h2, .title h3, .hero .wrapper h1, .hero .wrapper h3, .box_item_info h2, .box_cat_rooms .info h3, .box_contents .wrapper h2, .box_contents_in h2 {
  font-family: var(--serif); letter-spacing: -0.01em; font-weight: 600; color: var(--espresso);
}
.title h2, .title h3 { font-size: 2.75rem; line-height: 1.1; }
.title h3 { font-size: 2.2rem; }
.title small { color: var(--terracotta); letter-spacing: 3px; font-weight: 600; }
.hero .wrapper h1, .hero .wrapper h3 { color: #fff; text-transform: none; font-weight: 500; font-size: 4.2rem; line-height: 1.05; letter-spacing: -0.01em; }
.hero .wrapper h1 em, .hero .wrapper h3 em { font-style: italic; color: var(--champagne); }
@media (max-width: 767px) { .hero .wrapper h1, .hero .wrapper h3 { font-size: 2.6rem; } .title h2 { font-size: 2.2rem; } }
.hero .wrapper small { color: var(--champagne); }
.hero .wrapper p { font-weight: 300; }
p.lead { font-family: var(--serif); font-size: 1.45rem; line-height: 1.4; color: var(--olive); }
a { color: var(--olive); }
a:hover { color: var(--terracotta); }
strong { color: var(--espresso); }
.bg_white { background: #fff; }
.bg_sand { background: var(--sand); }
.bg_olive { background: var(--olive); color: #fff; }
.bg_olive h2, .bg_olive h3, .bg_olive p { color: #fff; }
.bg_olive .title small { color: var(--champagne); }
.text_terracotta { color: var(--terracotta) !important; }
.text_olive { color: var(--olive) !important; }
.text_muted { color: #8a7f74; }

/* ---------- Buttons ---------- */
a.btn_1, .btn_1 { background: var(--olive); color: #fff; border-radius: 30px; font-weight: 600; letter-spacing: .3px; gap: 8px; }
a.btn_1:hover, .btn_1:hover { background: var(--olive-dark); color: #fff; }
a.btn_1.outline, .btn_1.outline { border-color: var(--olive); color: var(--olive); background: transparent; }
a.btn_1.outline:hover, .btn_1.outline:hover { background: var(--olive); color: #fff; border-color: var(--olive); }
a.btn_1.outline.white, .btn_1.outline.white { border-color: #fff; color: #fff; }
a.btn_1.outline.white:hover, .btn_1.outline.white:hover { background: #fff; color: var(--espresso); }
a.btn_1.terracotta, .btn_1.terracotta { background: var(--terracotta); }
a.btn_1.terracotta:hover, .btn_1.terracotta:hover { background: var(--terracotta-dark); }
a.btn_1.btn_wa, .btn_1.btn_wa { background: #25D366; color: #fff; }
a.btn_1.btn_wa:hover, .btn_1.btn_wa:hover { background: #1DA851; }
a.btn_1.btn_wa i { font-size: 1.15em; }
.btn_1.small { padding: 10px 18px; font-size: .85rem; }
.btn_1.large { padding: 17px 34px; font-size: 1rem; }
.btn_1:disabled { opacity: .6; cursor: not-allowed; }
.animated_link { color: var(--espresso); }
.hp_field { position: absolute; left: -9999px; opacity: 0; height: 0; width: 0; }

/* ---------- Header ---------- */
header.bodeo_header { background: rgba(244, 238, 229, .96); backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px); border-bottom: 1px solid var(--sand-light); padding: 12px 0; }
header.bodeo_header .logo_normal img, header.bodeo_header .logo_sticky img { height: 56px; width: auto; }
header.bodeo_header .logo_sticky { display: none !important; }
header.bodeo_header .logo_normal { display: block !important; }
header.bodeo_header nav ul.main_nav { display: flex; justify-content: flex-end; align-items: center; gap: 26px; }
header.bodeo_header nav ul.main_nav li { margin: 0; display: flex; align-items: center; }
header.bodeo_header nav ul li a { color: var(--espresso) !important; font-weight: 500; font-size: .9rem; }
header.bodeo_header nav ul li.active a.animated_link { color: var(--terracotta) !important; }
header.bodeo_header nav ul li a.animated_link:before { background-color: var(--terracotta) !important; }
header.bodeo_header nav ul li a.btn_1 { color: #fff !important; padding: 11px 20px; font-size: .85rem; }
header.bodeo_header .hamburger__inner, header.bodeo_header .hamburger__inner::before, header.bodeo_header .hamburger__inner::after { background-color: var(--espresso) !important; }
header.bodeo_header .hamburger_2 { top: 0; }
@media (max-width: 1199px) { header.bodeo_header nav ul.main_nav { gap: 18px; } header.bodeo_header nav ul li a { font-size: .82rem; } }
@media (max-width: 991px) { header.bodeo_header nav ul.main_nav li.desk { display: none; } header.bodeo_header nav ul li:first-child { display: flex; } }
@media (max-width: 575px) { header.bodeo_header nav ul.main_nav li.wa_li { display: none; } header.bodeo_header .logo_normal img { height: 46px; } }
.nav_panel { background: var(--ivory); }
.nav_panel .logo_panel img { width: 170px; height: auto; }
.nav_panel .sidebar-navigation nav ul li a small { color: var(--terracotta); font-size: .7rem; font-weight: 500; letter-spacing: 1px; }
.nav_panel .panel_footer { padding: 20px 0 0; }
.nav_panel .panel_footer .phone_element { margin-top: 0; }

/* Hero sits under the fixed header: offset content slightly */
.hero.full-height .wrapper, .hero.medium-height .wrapper, .hero.small-height .wrapper { padding-top: 60px; }
.hero .wrapper .hero_actions { display: flex; gap: 12px; justify-content: center; flex-wrap: wrap; margin-top: 28px; }
.hero .wrapper .hero_wa { margin-top: 22px; font-size: .95rem; }
.hero .wrapper .hero_wa a { color: #fff; border-bottom: 1px solid rgba(255,255,255,.5); padding-bottom: 2px; }
.hero .wrapper .hero_wa a:hover { color: var(--champagne); border-color: var(--champagne); }
.hero .wrapper .hero_meta { display: flex; gap: 22px; justify-content: center; flex-wrap: wrap; margin-top: 22px; font-size: .95rem; opacity: .9; }
.hero .wrapper .hero_meta span i { color: var(--champagne); margin-right: 5px; }
.hero .wrapper .breadcrumb_hero { font-size: .8rem; letter-spacing: 2px; text-transform: uppercase; opacity: .85; margin-bottom: 14px; }
.hero .wrapper .breadcrumb_hero a { color: #fff; }
.hero.villa_hero .wrapper h1 { margin-bottom: 4px; }

/* ---------- Discovery / search ---------- */
.find_bodeo { position: relative; z-index: 3; margin-top: -70px; }
.find_bodeo .find_box { background: #fff; border-radius: 16px; box-shadow: 0 20px 50px rgba(58,33,27,.12); padding: 26px 26px 18px; border: 1px solid var(--sand-light); }
.find_bodeo .find_box label { font-size: .72rem; letter-spacing: 2px; text-transform: uppercase; color: var(--terracotta); font-weight: 600; display: block; margin-bottom: 6px; }
.find_bodeo .find_box .form-control, .find_bodeo .find_box .form-select { height: 50px; border: 1px solid var(--sand-light); border-radius: 8px; background: var(--ivory); color: var(--espresso); font-size: .95rem; box-shadow: none; }
.find_bodeo .find_box .form-control:focus, .find_bodeo .find_box .form-select:focus { border-color: var(--olive); }
.find_bodeo .find_box .btn_1 { height: 50px; width: 100%; justify-content: center; border-radius: 8px; }
@media (max-width: 991px) { .find_bodeo { margin-top: -40px; } }

/* ---------- Villa cards ---------- */
.villa_card { display: block; background: #fff; border-radius: 16px; overflow: hidden; border: 1px solid var(--sand-light); transition: all .3s ease; height: 100%; color: var(--espresso); position: relative; }
.villa_card:hover { transform: translateY(-4px); box-shadow: 0 18px 40px rgba(58,33,27,.12); color: var(--espresso); }
.villa_card figure { margin: 0; position: relative; overflow: hidden; aspect-ratio: 4/3; }
.villa_card figure img { width: 100%; height: 100%; object-fit: cover; transition: transform .6s ease; }
.villa_card:hover figure img { transform: scale(1.05); }
.villa_card figure .badge_pool { position: absolute; top: 14px; left: 14px; background: rgba(255,255,255,.92); color: var(--olive); font-size: .72rem; font-weight: 600; letter-spacing: 1px; text-transform: uppercase; padding: 6px 11px; border-radius: 20px; }
.villa_card figure .badge_avail { position: absolute; top: 14px; right: 14px; font-size: .72rem; font-weight: 600; letter-spacing: 1px; text-transform: uppercase; padding: 6px 11px; border-radius: 20px; color: #fff; }
.villa_card figure .badge_avail.yes { background: var(--olive); }
.villa_card figure .badge_avail.no { background: var(--terracotta); }
.villa_card .villa_card_body { padding: 22px 24px 24px; }
.villa_card .villa_card_body small { color: var(--terracotta); text-transform: uppercase; letter-spacing: 2px; font-size: .7rem; font-weight: 600; display: block; margin-bottom: 4px; }
.villa_card .villa_card_body h3 { font-family: var(--serif); font-size: 1.75rem; margin-bottom: 8px; font-weight: 600; }
.villa_card .villa_facts { display: flex; gap: 16px; flex-wrap: wrap; font-size: .82rem; color: #6f6259; margin-bottom: 14px; }
.villa_card .villa_facts span i { color: var(--olive); margin-right: 4px; }
.villa_card .villa_highlights { list-style: none; padding: 0; margin: 0 0 18px; display: flex; flex-wrap: wrap; gap: 6px; }
.villa_card .villa_highlights li { background: var(--ivory); border: 1px solid var(--sand-light); border-radius: 20px; font-size: .74rem; padding: 4px 10px; color: var(--olive); }
.villa_card .villa_card_footer { display: flex; justify-content: space-between; align-items: center; border-top: 1px solid var(--sand-light); padding-top: 16px; }
.villa_card .villa_card_footer .price { font-size: .8rem; color: #8a7f74; }
.villa_card .villa_card_footer .price strong { color: var(--espresso); font-size: .95rem; }
.villa_card .villa_card_footer .view { color: var(--terracotta); font-weight: 600; font-size: .85rem; }
.villa_card .villa_card_footer .view i { transition: transform .3s; }
.villa_card:hover .villa_card_footer .view i { transform: translateX(4px); }

/* Filters */
.villa_filters { background: #fff; border: 1px solid var(--sand-light); border-radius: 14px; padding: 18px 20px; margin-bottom: 30px; }
.villa_filters .form-select, .villa_filters .form-control { height: 46px; border-radius: 8px; border-color: var(--sand-light); font-size: .9rem; background-color: var(--ivory); }
.villa_filters .chip { display: inline-flex; align-items: center; gap: 6px; padding: 8px 14px; border: 1px solid var(--sand-light); border-radius: 30px; font-size: .82rem; cursor: pointer; background: var(--ivory); color: var(--olive); user-select: none; }
.villa_filters .chip input { display: none; }
.villa_filters .chip.on { background: var(--olive); color: #fff; border-color: var(--olive); }
.villa_filters .chip i { font-size: 1rem; }
.result_note { color: #8a7f74; font-size: .9rem; }
.result_note strong { color: var(--olive); }

/* ---------- Philosophy ---------- */
.philosophy_grid { display: grid; grid-template-columns: repeat(5, 1fr); gap: 18px; }
@media (max-width: 991px) { .philosophy_grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 575px) { .philosophy_grid { grid-template-columns: 1fr; } }
.philosophy_item { background: #fff; border: 1px solid var(--sand-light); border-radius: 16px; padding: 30px 22px; text-align: center; }
.philosophy_item i { font-size: 2rem; color: var(--terracotta); display: block; margin-bottom: 12px; }
.philosophy_item h4 { font-family: var(--serif); font-size: 1.6rem; margin-bottom: 6px; }
.philosophy_item p { font-size: .88rem; margin: 0; color: #6f6259; }

/* Why BODEO */
.box_facilities i { color: var(--terracotta); }
.box_facilities h3 { font-family: var(--serif); font-size: 1.6rem; }
.box_facilities .num { font-family: var(--serif); font-size: 3rem; color: var(--sand); line-height: 1; display: block; margin-bottom: 8px; }

/* Experiences */
.exp_card { display: block; position: relative; border-radius: 16px; overflow: hidden; aspect-ratio: 3/4; color: #fff; }
.exp_card img { width: 100%; height: 100%; object-fit: cover; transition: transform .7s ease; }
.exp_card:hover img { transform: scale(1.06); }
.exp_card .exp_overlay { position: absolute; inset: 0; background: linear-gradient(to top, rgba(58,33,27,.85) 0%, rgba(58,33,27,.1) 60%); }
.exp_card .exp_text { position: absolute; left: 22px; right: 22px; bottom: 22px; }
.exp_card .exp_text i { font-size: 1.6rem; color: var(--champagne); display: block; margin-bottom: 6px; }
.exp_card .exp_text h3 { color: #fff; font-family: var(--serif); font-size: 1.7rem; margin-bottom: 4px; }
.exp_card .exp_text p { color: rgba(255,255,255,.85); font-size: .85rem; margin: 0; }
.exp_row { display: flex; align-items: center; gap: 40px; margin-bottom: 70px; }
.exp_row:nth-child(even) { flex-direction: row-reverse; }
.exp_row figure { flex: 1; margin: 0; border-radius: 16px; overflow: hidden; aspect-ratio: 4/3; }
.exp_row figure img { width: 100%; height: 100%; object-fit: cover; }
.exp_row .exp_body { flex: 1; }
.exp_row .exp_body i { color: var(--terracotta); font-size: 1.8rem; }
@media (max-width: 991px) { .exp_row, .exp_row:nth-child(even) { flex-direction: column; gap: 20px; } }

/* ---------- CTA bands ---------- */
.cta_band { border-radius: 20px; padding: 60px 50px; position: relative; overflow: hidden; }
.cta_band.olive { background: var(--olive); color: #fff; }
.cta_band.olive h2 { color: #fff; font-family: var(--serif); font-size: 2.6rem; }
.cta_band.olive p { color: rgba(255,255,255,.85); }
.cta_band.sand { background: var(--sand); }
.cta_band.sand h2 { font-family: var(--serif); font-size: 2.6rem; }
.cta_band .deco { position: absolute; right: -40px; bottom: -60px; width: 320px; opacity: .12; pointer-events: none; }
@media (max-width: 767px) { .cta_band { padding: 40px 26px; } .cta_band.olive h2, .cta_band.sand h2 { font-size: 2rem; } }
.wa_cta_box { background: #fff; border: 1px solid var(--sand-light); border-radius: 20px; padding: 44px; text-align: center; }
.wa_cta_box .wa_icon { width: 64px; height: 64px; border-radius: 50%; background: #25D366; color: #fff; display: inline-flex; align-items: center; justify-content: center; font-size: 1.8rem; margin-bottom: 14px; }
.wa_cta_box h2 { font-family: var(--serif); font-size: 2.4rem; }

/* ---------- Villa details ---------- */
.quick_facts { background: #fff; border: 1px solid var(--sand-light); border-radius: 16px; display: flex; flex-wrap: wrap; margin-top: -50px; position: relative; z-index: 3; box-shadow: 0 18px 40px rgba(58,33,27,.08); }
.quick_facts > div { flex: 1 1 140px; padding: 20px 18px; text-align: center; border-right: 1px solid var(--sand-light); }
.quick_facts > div:last-child { border-right: 0; }
.quick_facts i { font-size: 1.5rem; color: var(--terracotta); display: block; margin-bottom: 4px; }
.quick_facts strong { display: block; font-size: 1.05rem; color: var(--espresso); }
.quick_facts small { color: #8a7f74; font-size: .72rem; text-transform: uppercase; letter-spacing: 1.5px; }
@media (max-width: 767px) { .quick_facts > div { flex: 1 1 33%; border-bottom: 1px solid var(--sand-light); } }
.villa_overview p { font-size: 1.02rem; line-height: 1.75; }
.highlights_list { list-style: none; padding: 0; margin: 0; }
.highlights_list li { padding: 10px 0 10px 30px; position: relative; border-bottom: 1px dashed var(--sand-light); }
.highlights_list li:before { content: ''; position: absolute; left: 0; top: 17px; width: 14px; height: 14px; border-radius: 50%; background: var(--terracotta); opacity: .85; }
.room_facilities_list ul li i { color: var(--terracotta); }
.room_facilities_list ul li { font-size: .92rem; }
.amenity_grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px 20px; }
@media (max-width: 767px) { .amenity_grid { grid-template-columns: repeat(2, 1fr); } }
.amenity_grid div { display: flex; align-items: center; gap: 10px; font-size: .92rem; padding: 8px 0; }
.amenity_grid div i { font-size: 1.3rem; color: var(--terracotta); width: 26px; text-align: center; }
.included_list { list-style: none; padding: 0; margin: 0; }
.included_list li { padding: 8px 0; display: flex; gap: 10px; align-items: center; }
.included_list li i { color: var(--olive); font-size: 1.1rem; }
.gallery_grid { display: grid; grid-template-columns: repeat(4, 1fr); grid-auto-rows: 200px; gap: 10px; }
.gallery_grid a { display: block; overflow: hidden; border-radius: 12px; position: relative; }
.gallery_grid a:nth-child(1) { grid-column: span 2; grid-row: span 2; }
.gallery_grid a img { width: 100%; height: 100%; object-fit: cover; transition: transform .6s; }
.gallery_grid a:hover img { transform: scale(1.05); }
.gallery_grid a span { position: absolute; left: 10px; bottom: 10px; background: rgba(58,33,27,.7); color: #fff; font-size: .7rem; letter-spacing: 1px; text-transform: uppercase; padding: 4px 9px; border-radius: 12px; }
@media (max-width: 767px) { .gallery_grid { grid-template-columns: repeat(2, 1fr); grid-auto-rows: 150px; } }
.map_wrap { border-radius: 16px; overflow: hidden; border: 1px solid var(--sand-light); }
.map_wrap iframe { width: 100%; height: 340px; border: 0; display: block; }
.section_nav { position: sticky; top: 82px; z-index: 5; background: rgba(244,238,229,.96); backdrop-filter: blur(6px); border-bottom: 1px solid var(--sand-light); }
.section_nav ul { list-style: none; display: flex; gap: 26px; margin: 0; padding: 0; overflow-x: auto; white-space: nowrap; }
.section_nav ul li a { display: block; padding: 14px 0; font-size: .82rem; letter-spacing: 1px; text-transform: uppercase; font-weight: 600; color: var(--olive); }
.section_nav ul li a:hover { color: var(--terracotta); }
.section_nav ul li a.wa { color: #25D366; }
.villa_side_card { position: sticky; top: 140px; background: #fff; border-radius: 16px; border: 1px solid var(--sand-light); padding: 26px; }
.villa_side_card .price_line { font-size: .85rem; color: #8a7f74; margin-bottom: 14px; }
.villa_side_card .price_line strong { font-size: 1.3rem; color: var(--espresso); font-family: var(--serif); }
.villa_side_card .btn_1 { width: 100%; justify-content: center; margin-bottom: 10px; }
.villa_side_card ul { list-style: none; padding: 0; margin: 16px 0 0; font-size: .82rem; color: #6f6259; }
.villa_side_card ul li { padding: 4px 0; }
.villa_side_card ul li i { color: var(--olive); margin-right: 6px; }
.accordion .card { border: 1px solid var(--sand-light) !important; background: #fff; border-radius: 12px !important; margin-bottom: 10px; }
.accordion .card .card-header { background: transparent; border: 0; }
.accordion .card .card-header a { color: var(--espresso); font-family: var(--serif); font-size: 1.25rem; }
.accordion .card .card-header a .indicator { color: var(--terracotta); }
.accordion .card .card-body p:last-child { margin-bottom: 0; }

/* ---------- Availability calendar ---------- */
.avail_wrap { background: #fff; border: 1px solid var(--sand-light); border-radius: 20px; padding: 28px; }
.avail_head { display: flex; justify-content: space-between; align-items: center; gap: 12px; flex-wrap: wrap; margin-bottom: 18px; }
.avail_head .nav_btns button { width: 40px; height: 40px; border-radius: 50%; border: 1px solid var(--sand-light); background: var(--ivory); color: var(--espresso); margin-left: 6px; }
.avail_head .nav_btns button:hover { background: var(--olive); color: #fff; border-color: var(--olive); }
.avail_head .nav_btns button:disabled { opacity: .35; }
.avail_months { display: grid; grid-template-columns: 1fr 1fr; gap: 28px; }
@media (max-width: 767px) { .avail_months { grid-template-columns: 1fr; } }
.cal_month h4 { font-family: var(--serif); text-align: center; font-size: 1.4rem; margin-bottom: 12px; }
.cal_grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 4px; }
.cal_grid .dow { font-size: .68rem; text-transform: uppercase; letter-spacing: 1px; text-align: center; color: #8a7f74; padding: 4px 0 8px; }
.cal_grid .day { aspect-ratio: 1; display: flex; align-items: center; justify-content: center; border-radius: 10px; font-size: .9rem; cursor: pointer; position: relative; background: var(--ivory); color: var(--espresso); border: 1px solid transparent; user-select: none; }
.cal_grid .day.empty { background: transparent; cursor: default; }
.cal_grid .day.past { color: #c9bfb2; cursor: not-allowed; background: transparent; text-decoration: line-through; }
.cal_grid .day.blocked { background: repeating-linear-gradient(135deg, #f3e3df, #f3e3df 4px, #ecd3cd 4px, #ecd3cd 8px); color: #b58b80; cursor: not-allowed; }
.cal_grid .day.checkout_only { background: linear-gradient(135deg, var(--ivory) 50%, #f3e3df 50%); }
.cal_grid .day:not(.past):not(.blocked):not(.empty):hover { border-color: var(--olive); }
.cal_grid .day.in_range { background: #e3e6dc; color: var(--olive); border-radius: 0; }
.cal_grid .day.start, .cal_grid .day.end { background: var(--olive); color: #fff; font-weight: 600; }
.cal_grid .day.start { border-radius: 10px 0 0 10px; }
.cal_grid .day.end { border-radius: 0 10px 10px 0; }
.cal_grid .day.start.end { border-radius: 10px; }
.cal_grid .day.today:after { content: ''; position: absolute; bottom: 5px; width: 4px; height: 4px; border-radius: 50%; background: var(--terracotta); }
.cal_legend { display: flex; gap: 18px; flex-wrap: wrap; font-size: .78rem; color: #8a7f74; margin-top: 16px; }
.cal_legend span:before { content: ''; display: inline-block; width: 14px; height: 14px; border-radius: 4px; vertical-align: -2px; margin-right: 6px; background: var(--ivory); border: 1px solid var(--sand-light); }
.cal_legend span.l_blocked:before { background: repeating-linear-gradient(135deg, #f3e3df, #f3e3df 3px, #ecd3cd 3px, #ecd3cd 6px); }
.cal_legend span.l_sel:before { background: var(--olive); }
.avail_summary { margin-top: 22px; padding: 18px 20px; border-radius: 14px; background: var(--ivory); display: flex; justify-content: space-between; align-items: center; gap: 14px; flex-wrap: wrap; }
.avail_summary .dates strong { font-family: var(--serif); font-size: 1.25rem; display: block; }
.avail_summary .dates small { color: #8a7f74; }
.avail_summary .guests_ctl { display: flex; align-items: center; gap: 8px; }
.avail_summary .guests_ctl button { width: 34px; height: 34px; border-radius: 50%; border: 1px solid var(--sand-light); background: #fff; }
.avail_summary .guests_ctl input { width: 44px; text-align: center; border: 0; background: transparent; font-weight: 600; }
.avail_result { margin-top: 18px; padding: 22px 24px; border-radius: 14px; display: none; }
.avail_result.yes { background: #eef2e8; border: 1px solid #cfd9c2; display: block; }
.avail_result.no { background: #f8e9e5; border: 1px solid #ecd3cd; display: block; }
.avail_result.err { background: #fff5e6; border: 1px solid #f1dcb4; display: block; }
.avail_result h4 { font-family: var(--serif); font-size: 1.5rem; margin-bottom: 4px; }
.avail_result h4 i { margin-right: 6px; }
.avail_result.yes h4 { color: var(--olive); }
.avail_result.no h4 { color: var(--terracotta); }
.avail_result .actions { display: flex; gap: 10px; flex-wrap: wrap; margin-top: 14px; }
.avail_disclaimer { font-size: .78rem; color: #8a7f74; margin-top: 14px; }
.villa_picker { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 14px; }
.villa_picker a { display: flex; gap: 12px; align-items: center; background: #fff; border: 1px solid var(--sand-light); border-radius: 14px; padding: 10px; color: var(--espresso); transition: all .25s; }
.villa_picker a img { width: 70px; height: 70px; object-fit: cover; border-radius: 10px; }
.villa_picker a strong { display: block; font-family: var(--serif); font-size: 1.15rem; line-height: 1.1; }
.villa_picker a small { color: #8a7f74; font-size: .75rem; }
.villa_picker a:hover, .villa_picker a.on { border-color: var(--olive); box-shadow: 0 8px 20px rgba(58,33,27,.08); }
.villa_picker a.on { background: var(--olive); color: #fff; }
.villa_picker a.on small { color: rgba(255,255,255,.8); }

/* ---------- Contact ---------- */
.contact_info ul li i { color: var(--terracotta); }
.contact_info ul li h4 { font-family: var(--serif); font-size: 1.35rem; }
.form-floating > .form-control, .form-floating > .form-select { border-color: var(--sand-light); background: #fff; border-radius: 8px; box-shadow: none; }
.form-floating > .form-control:focus, .form-floating > .form-select:focus { border-color: var(--olive); }
.form-floating > label { color: #8a7f74; }
.text-danger { color: var(--terracotta) !important; font-size: .8rem; }
.sent_box { background: #fff; border: 1px solid var(--sand-light); border-radius: 20px; padding: 44px; text-align: center; }
.sent_box .ok_icon { width: 70px; height: 70px; border-radius: 50%; background: var(--olive); color: #fff; font-size: 2rem; display: inline-flex; align-items: center; justify-content: center; margin-bottom: 16px; }
.sent_box h2 { font-family: var(--serif); }

/* ---------- Testimonials ---------- */
.box_overlay .comment { font-family: var(--serif); font-size: 1.35rem; line-height: 1.4; }
.box_overlay .pic h4 small { color: var(--champagne); }
.carousel_testimonials .box_overlay .pic figure { display: none; }
.box_overlay .pic h4 { margin-left: 0; }

/* ---------- Journal ---------- */
.box_contents .wrapper small { color: var(--terracotta); }
.box_contents figure em { background: var(--terracotta); }
.box_contents_in h2 { font-size: 2rem; }
.box_contents_in h3 { font-family: var(--serif); font-size: 1.6rem; }
.journal_cats { display: flex; gap: 8px; flex-wrap: wrap; justify-content: center; margin-bottom: 36px; }
.journal_cats a { padding: 8px 16px; border-radius: 30px; border: 1px solid var(--sand-light); font-size: .82rem; color: var(--olive); background: #fff; }
.journal_cats a.on, .journal_cats a:hover { background: var(--olive); color: #fff; border-color: var(--olive); }
.page_body h2, .page_body h3 { font-family: var(--serif); margin-top: 30px; }
.page_body ul { padding-left: 20px; }
.page_body ul li { margin-bottom: 8px; }

/* ---------- Footer ---------- */
footer { background: var(--espresso); }
footer .footer_bg .gradient_over { background: linear-gradient(to bottom, transparent, var(--espresso)); }
footer .footer_logo { background: var(--ivory); border-radius: 14px; padding: 10px; width: 140px; height: auto; margin-bottom: 14px; }
footer .footer_tagline { font-family: var(--serif); font-size: 1.35rem; color: var(--champagne); margin-bottom: 18px; }
footer .footer_contact { list-style: none; padding: 0; margin: 0 0 20px; }
footer .footer_contact li { padding: 4px 0; font-size: .9rem; color: rgba(255,255,255,.8); }
footer .footer_contact li i { color: var(--champagne); margin-right: 8px; width: 16px; display: inline-block; }
footer .footer_contact li a { color: #fff; }
footer .footer_contact li a:hover { color: var(--champagne); }
footer h5 { font-family: var(--serif); font-size: 1.4rem; color: var(--champagne); }
footer .footer_links ul li a { color: rgba(255,255,255,.85); }
footer .footer_links ul li a:hover { color: var(--champagne); }
footer #newsletter p { font-size: .8rem; color: rgba(255,255,255,.6); }
footer #newsletter .form-control { background: rgba(255,255,255,.10); border: 1px solid rgba(255,255,255,.22); color: #fff; padding-right: 48px; }
/* Bootstrap's default grey placeholder vanishes on the dark footer - give it real contrast. */
footer #newsletter .form-control::placeholder { color: rgba(255,255,255,.72); opacity: 1; }
footer #newsletter .form-control::-webkit-input-placeholder { color: rgba(255,255,255,.72); }
footer #newsletter .form-control::-moz-placeholder { color: rgba(255,255,255,.72); opacity: 1; }
footer #newsletter .form-control:focus { background: rgba(255,255,255,.14); border-color: var(--champagne); color: #fff; box-shadow: 0 0 0 2px rgba(212,175,120,.25); }
/* Browser autofill paints its own yellow/white box - keep it on-theme. */
footer #newsletter .form-control:-webkit-autofill { -webkit-text-fill-color: #fff; -webkit-box-shadow: 0 0 0 1000px #4a2c24 inset; caret-color: #fff; }
footer #newsletter button { color: var(--champagne); }
footer .copy { background: #2b1814; font-size: .8rem; color: rgba(255,255,255,.6); }
footer .copy .legal_links a { color: rgba(255,255,255,.7); margin-left: 16px; }
footer .copy .legal_links a:hover { color: var(--champagne); }
@media (max-width: 767px) { footer .copy .legal_links { margin-top: 8px; } footer .copy .legal_links a { margin: 0 12px 0 0; } }
#message-newsletter .ok, #message-newsletter .bad { display: block; font-size: .82rem; padding: 8px 12px; border-radius: 8px; margin-bottom: 10px; }
#message-newsletter .ok { background: rgba(37,211,102,.15); color: #9be7b8; }
#message-newsletter .bad { background: rgba(201,111,91,.2); color: #f0b8ab; }
.social ul li a:hover { color: var(--champagne); }

/* ---------- Mobile WhatsApp bar ---------- */
.wa_mobile_bar { display: none; position: fixed; left: 0; right: 0; bottom: 0; z-index: 9990; background: #fff; border-top: 1px solid var(--sand-light); padding: 10px 12px calc(10px + env(safe-area-inset-bottom)); gap: 10px; box-shadow: 0 -8px 24px rgba(58,33,27,.1); }
.wa_mobile_bar a { flex: 1; display: flex; align-items: center; justify-content: center; gap: 8px; padding: 13px; border-radius: 30px; font-weight: 600; font-size: .9rem; }
.wa_mobile_bar .wa_mobile_primary { background: #25D366; color: #fff; flex: 1.4; }
.wa_mobile_bar .wa_mobile_secondary { background: var(--ivory); color: var(--olive); border: 1px solid var(--sand-light); }
@media (max-width: 991px) { .wa_mobile_bar { display: flex; } body { padding-bottom: 70px; } .progress-wrap { bottom: 90px; } footer { padding-bottom: 0; } }

/* ---------- Cookie bar ---------- */
.cookie_bar { position: fixed; left: 16px; right: 16px; bottom: 16px; z-index: 9995; background: var(--espresso); color: #fff; border-radius: 16px; padding: 16px 20px; display: flex; gap: 16px; align-items: center; justify-content: space-between; flex-wrap: wrap; box-shadow: 0 10px 30px rgba(0,0,0,.25); max-width: 900px; margin: 0 auto; }
.cookie_bar p { margin: 0; font-size: .85rem; flex: 1 1 320px; }
.cookie_bar p a { color: var(--champagne); text-decoration: underline; }
.cookie_bar div { display: flex; gap: 8px; }
.cookie_bar .btn_1.outline { border-color: rgba(255,255,255,.5); color: #fff; }
.cookie_bar[hidden] { display: none; }
@media (max-width: 991px) { .cookie_bar { bottom: 82px; } }

/* ---------- Misc ---------- */
.preloader_logo { position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); }
#preloader { background: var(--ivory); }
[data-loader='circle-side'] { border-color: var(--sand); border-top-color: var(--olive); }
.marquee { background: var(--sand); color: var(--espresso); }
.marquee .content { font-family: var(--serif); font-size: 2rem; font-style: italic; }
.rounded-img { border-radius: 16px; }
.pinned_over_content .title small { color: var(--champagne); }
.pattern_2 { background-image: none; }
.box_cat_rooms .info small { color: var(--champagne); }
.error_page h1 { font-family: var(--serif); font-size: 7rem; color: var(--sand); }
.error_page h2 { font-family: var(--serif); }
.pill { display: inline-block; padding: 5px 12px; border-radius: 20px; font-size: .72rem; letter-spacing: 1px; text-transform: uppercase; font-weight: 600; background: var(--sand); color: var(--espresso); }
.dest_card { display: block; position: relative; border-radius: 16px; overflow: hidden; aspect-ratio: 4/3; color: #fff; }
.dest_card img { width: 100%; height: 100%; object-fit: cover; transition: transform .7s; }
.dest_card:hover img { transform: scale(1.05); }
.dest_card .dest_text { position: absolute; inset: 0; background: linear-gradient(to top, rgba(58,33,27,.85), rgba(58,33,27,0) 60%); padding: 22px; display: flex; flex-direction: column; justify-content: flex-end; }
.dest_card .dest_text h3 { color: #fff; font-family: var(--serif); font-size: 1.9rem; margin: 0; }
.dest_card .dest_text small { color: var(--champagne); letter-spacing: 2px; text-transform: uppercase; font-size: .7rem; font-weight: 600; }
.stat_row { display: flex; gap: 40px; flex-wrap: wrap; margin-top: 30px; }
.stat_row div strong { font-family: var(--serif); font-size: 2.6rem; color: var(--terracotta); display: block; line-height: 1; }
.stat_row div span { font-size: .8rem; text-transform: uppercase; letter-spacing: 1.5px; color: #8a7f74; }
.list_ok ul li h5 { font-family: var(--serif); font-size: 1.4rem; }
.list_ok ul li:before { color: var(--terracotta); }

/* ---------- Philosophy band ---------- */
.philosophy_band .wrapper { min-height: 520px; }
.philosophy_band .title h2 { font-size: 3.4rem; color: #fff; }
.philosophy_band .title h2 em { color: var(--champagne); font-style: italic; }
.philosophy_band .title small { color: var(--champagne); }
@media (max-width: 767px) { .philosophy_band .wrapper { min-height: 380px; } .philosophy_band .title h2 { font-size: 2.2rem; } }

/* ---------- Single-property showcase ---------- */
.find_villa { display: flex; align-items: center; gap: 10px; height: 50px; }
.find_villa img { width: 50px; height: 50px; object-fit: cover; border-radius: 8px; }
.find_villa strong { display: block; font-family: var(--serif); font-size: 1.15rem; line-height: 1.1; }
.find_villa small { color: #8a7f74; font-size: .72rem; }
.showcase_media { display: grid; grid-template-columns: 1fr; gap: 10px; }
.showcase_main { display: block; border-radius: 18px; overflow: hidden; aspect-ratio: 4/3; }
.showcase_main img, .showcase_thumbs img { width: 100%; height: 100%; object-fit: cover; transition: transform .7s ease; display: block; }
.showcase_main:hover img, .showcase_thumbs a:hover img { transform: scale(1.04); }
.showcase_thumbs { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; }
.showcase_thumbs a { display: block; border-radius: 12px; overflow: hidden; aspect-ratio: 4/3; }
.fact_row { display: flex; gap: 8px; margin: 22px 0 22px; flex-wrap: wrap; }
.fact_row > div { flex: 1 1 100px; background: #fff; border: 1px solid var(--sand-light); border-radius: 12px; padding: 12px 10px; text-align: center; }
.fact_row i { color: var(--terracotta); font-size: 1.2rem; display: block; margin-bottom: 2px; }
.fact_row strong { display: block; font-family: var(--serif); font-size: 1.4rem; line-height: 1.1; color: var(--espresso); }
.fact_row span { font-size: .68rem; letter-spacing: 1.2px; text-transform: uppercase; color: #8a7f74; }
.villa_highlights { list-style: none; padding: 0; margin: 0; display: flex; flex-wrap: wrap; gap: 6px; }
.villa_highlights li { background: #fff; border: 1px solid var(--sand-light); border-radius: 20px; font-size: .78rem; padding: 5px 12px; color: var(--olive); }
.villa_feature { padding: 0 0 70px; margin-bottom: 70px; border-bottom: 1px solid var(--sand-light); }
.villa_feature:last-of-type { border-bottom: 0; margin-bottom: 0; padding-bottom: 0; }
.villa_feature:nth-of-type(even) .row { flex-direction: row-reverse; }
.pill_yes { background: var(--olive); color: #fff; } .pill_no { background: var(--terracotta); color: #fff; }
.why_list > div { display: flex; gap: 18px; padding: 18px 0; border-bottom: 1px solid var(--sand-light); }
.why_list > div:last-child { border-bottom: 0; }
.why_list span { font-family: var(--serif); font-size: 2rem; color: var(--sand); line-height: 1; min-width: 44px; }
.why_list h4 { font-family: var(--serif); font-size: 1.45rem; margin-bottom: 4px; }
.why_list p { margin: 0; font-size: .92rem; color: #6f6259; }
.why_media { position: relative; }
.why_media img:first-child { width: 100%; aspect-ratio: 4/3; object-fit: cover; }
.why_media .why_media_small { position: absolute; right: -16px; bottom: -30px; width: 42%; aspect-ratio: 1; object-fit: cover; border: 6px solid var(--ivory); box-shadow: 0 16px 40px rgba(58,33,27,.15); }
@media (max-width: 991px) { .why_media { margin-bottom: 40px; } }
.dest_feature { display: block; border-radius: 18px; overflow: hidden; aspect-ratio: 4/3; }
.dest_feature img { width: 100%; height: 100%; object-fit: cover; transition: transform .7s; }
.dest_feature:hover img { transform: scale(1.04); }

/* ---------- Footer (static, no reveal) ---------- */
footer { position: relative; z-index: 2; }
footer .footer_bg { padding-top: 160px; }
@media (max-width: 991px) { footer .footer_bg { padding-top: 120px; } }

/* ---------- Contact cards ---------- */
.contact_cards { display: flex; flex-direction: column; gap: 10px; margin-bottom: 16px; }
.contact_card { display: flex; align-items: center; gap: 16px; background: #fff; border: 1px solid var(--sand-light); border-radius: 14px; padding: 14px 18px; color: var(--espresso); transition: all .25s; }
a.contact_card:hover { border-color: var(--olive); transform: translateX(3px); color: var(--espresso); }
.contact_card i { width: 46px; height: 46px; border-radius: 50%; background: var(--ivory); color: var(--terracotta); display: inline-flex; align-items: center; justify-content: center; font-size: 1.25rem; flex-shrink: 0; }
.contact_card span { display: flex; flex-direction: column; line-height: 1.3; }
.contact_card small { font-size: .68rem; letter-spacing: 1.5px; text-transform: uppercase; color: #8a7f74; font-weight: 600; }
.contact_card strong { font-size: 1rem; }
.contact_card em { font-style: normal; font-size: .8rem; color: #8a7f74; margin-top: 2px; }

/* ---------- Testimonial card: stacked, centred ---------- */
.carousel_testimonials .box_overlay { display: flex; flex-direction: column; align-items: center; text-align: center; padding: 40px 36px; }
.carousel_testimonials .box_overlay .comment { font-size: 1.45rem; margin-bottom: 18px; }
.carousel_testimonials .box_overlay .pic { width: auto; float: none; margin: 0; padding: 0; border: 0; }
.carousel_testimonials .box_overlay .pic h4 { margin: 0; font-family: var(--sans); font-size: .95rem; letter-spacing: .5px; }
.carousel_testimonials .box_overlay .pic h4 small { display: block; margin-top: 4px; font-size: .78rem; }
@media (max-width: 767px) { .carousel_testimonials .box_overlay { padding: 28px 20px; } .carousel_testimonials .box_overlay .comment { font-size: 1.2rem; } }
.carousel_testimonials .box_overlay .pic, .carousel_testimonials .box_overlay .pic h4 { position: static !important; left: auto; top: auto; text-align: center; }
.carousel_testimonials .box_overlay .pic h4 small { color: var(--champagne); }

/* ---------- Journal cards: equal height ---------- */
.box_contents { display: flex; flex-direction: column; height: 100%; }
.box_contents figure { aspect-ratio: 16/10; overflow: hidden; margin: 0; }
.box_contents figure img { width: 100%; height: 100%; object-fit: cover; }
.item.col-xl-4 { display: flex; margin-bottom: 30px; }
.box_contents .wrapper { flex: 1; }

/* ---------- Header always visible; section nav sits below it ---------- */
header.reveal_header.headroom--unpinned, header.reveal_header.slideUp { transform: none !important; animation: none !important; }
header.bodeo_header { min-height: 80px; }
.section_nav { top: 80px; }
@media (max-width: 575px) { .section_nav { top: 70px; } }

/* ---------- Instant reveal: no preloader, short hero stagger ---------- */
#preloader { display: none !important; }
.is-transitioned .slide-animated.one { transition-delay: .05s !important; }
.is-transitioned .slide-animated.two { transition-delay: .15s !important; }
.is-transitioned .slide-animated.three { transition-delay: .25s !important; }
.is-transitioned .slide-animated.four { transition-delay: .35s !important; }
.slide-animated { transition-duration: .5s !important; }

/* ---------- Cinematic hero: slow pan/zoom + cross-fade (video feel, no video) ---------- */
.hero_cinema { position: relative; overflow: hidden; background: var(--espresso); }
.hero_cinema .hero_slides { position: absolute; inset: 0; }
.hero_cinema .hero_slide { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: 0; will-change: transform, opacity; animation: heroFade 24s ease-in-out infinite, heroPan 24s ease-in-out infinite; }
.hero_cinema .hero_slide.s1 { animation-delay: 0s, 0s; }
.hero_cinema .hero_slide.s2 { animation-delay: 8s, 8s; }
.hero_cinema .hero_slide.s3 { animation-delay: 16s, 16s; }
.hero_cinema .wrapper { position: relative; z-index: 2; }
@keyframes heroFade { 0% { opacity: 0; } 6% { opacity: 1; } 33% { opacity: 1; } 41% { opacity: 0; } 100% { opacity: 0; } }
@keyframes heroPan { 0% { transform: scale(1.02) translate(0, 0); } 41% { transform: scale(1.14) translate(-1.5%, -1.5%); } 100% { transform: scale(1.14) translate(-1.5%, -1.5%); } }
@media (prefers-reduced-motion: reduce) { .hero_cinema .hero_slide { animation: none; opacity: 0; } .hero_cinema .hero_slide.s1 { opacity: 1; } }

/* ---------- Single hero photo: continuous slow zoom ---------- */
.hero_cinema .hero_slide.s1 { opacity: 1; animation: heroZoom 28s ease-in-out infinite alternate; }
@keyframes heroZoom { 0% { transform: scale(1) translate(0, 0); } 100% { transform: scale(1.16) translate(-1.5%, -2%); } }
@media (prefers-reduced-motion: reduce) { .hero_cinema .hero_slide.s1 { animation: none; transform: none; } }
