/*
Theme Name: The Meridian Collection
Theme URI: https://themeridiancollection.com
Author: Mercer Management
Author URI: https://mercermgt.com
Description: Native WordPress hospitality theme for The Meridian Collection with no ACF Pro dependency. Includes custom post types, meta boxes, Customizer controls, seeded demo content, interactive maps, booking links, reviews, and event-focused homepage sections.
Version: 1.5.3
Requires at least: 6.4
Tested up to: 6.7
Requires PHP: 8.1
License: Proprietary
License URI: https://themeridiancollection.com/license
Text Domain: meridian
Tags: hotel, hospitality, luxury, custom-header, custom-logo, featured-images

ACF Pro Required: No
roomMaster Integration: iVRS API
CRM: Revinate
*/

/* ============================================
   MERIDIAN COLLECTION — DESIGN SYSTEM
   ============================================ */

:root {
  --navy: #0B1D3A;
  --navy-deep: #060F1F;
  --navy-mid: #112B52;
  --gold: #C5A258;
  --gold-light: #D4B76A;
  --gold-pale: #E8D5A0;
  --alabaster: #F5F0E8;
  --alabaster-light: #FAF7F2;
  --white: #FFFFFF;
  --charcoal: #2A2A2A;
  --slate: #6B7B8D;
  --green: #34A853;
  --font-display: 'Cormorant Garamond', serif;
  --font-body: 'Outfit', sans-serif;
  --transition: cubic-bezier(.25,.46,.45,.94);
}

/* RESET */
*, *::before, *::after { margin: 0; padding: 0; box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  font-family: var(--font-body);
  color: var(--charcoal);
  background: var(--alabaster-light);
  overflow-x: hidden;
  -webkit-font-smoothing: antialiased;
}
img { max-width: 100%; height: auto; }
a { text-decoration: none; color: inherit; }

/* ============================================
   SCROLL REVEAL — IntersectionObserver driven
   ============================================ */
.reveal { opacity: 0; transform: translateY(32px); transition: opacity .8s var(--transition), transform .8s var(--transition); }
.reveal.visible { opacity: 1; transform: translateY(0); }
.reveal-left { opacity: 0; transform: translateX(-40px); transition: opacity .8s ease, transform .8s ease; }
.reveal-left.visible { opacity: 1; transform: translateX(0); }
.reveal-right { opacity: 0; transform: translateX(40px); transition: opacity .8s ease, transform .8s ease; }
.reveal-right.visible { opacity: 1; transform: translateX(0); }
.reveal-scale { opacity: 0; transform: scale(.95); transition: opacity .7s ease, transform .7s ease; }
.reveal-scale.visible { opacity: 1; transform: scale(1); }
.stagger-1 { transition-delay: .1s; }
.stagger-2 { transition-delay: .2s; }
.stagger-3 { transition-delay: .3s; }
.stagger-4 { transition-delay: .4s; }
.stagger-5 { transition-delay: .5s; }
.stagger-6 { transition-delay: .6s; }

/* ============================================
   ANIMATED LOGO
   ============================================ */
.nav-logo { display: flex; align-items: center; gap: 10px; text-decoration: none; }
.nav-logo-svg { height: 28px; width: auto; }
.nav-logo-svg .logo-m {
  fill: none; stroke: var(--gold); stroke-width: 1.2;
  stroke-linecap: round; stroke-linejoin: round;
  stroke-dasharray: 200; stroke-dashoffset: 200;
  animation: drawLogo 2s ease-out .5s forwards;
}
.nav-logo-svg .logo-line { stroke: var(--gold); stroke-width: .5; opacity: 0; animation: logoLineIn .8s ease 2s forwards; }
.nav-logo-svg .logo-compass { fill: var(--gold); opacity: 0; animation: compassIn .6s ease 1.8s forwards; transform-origin: center; }
@keyframes drawLogo { to { stroke-dashoffset: 0; } }
@keyframes logoLineIn { to { opacity: .4; } }
@keyframes compassIn { 0% { opacity: 0; transform: scale(.3) rotate(-90deg); } 100% { opacity: 1; transform: scale(1) rotate(0deg); } }

/* ============================================
   PRELOADER
   ============================================ */
.preloader {
  position: fixed; inset: 0; z-index: 10000;
  background: var(--navy-deep);
  display: flex; align-items: center; justify-content: center; flex-direction: column; gap: 16px;
  transition: opacity 1s, visibility 1s;
}
.preloader.hidden { opacity: 0; visibility: hidden; pointer-events: none; }
.preloader-logo { font-family: var(--font-display); font-size: 20px; letter-spacing: 12px; text-transform: uppercase; color: var(--gold); font-weight: 300; }
.preloader-sub { font-size: 9px; letter-spacing: 4px; text-transform: uppercase; color: rgba(197,162,88,.4); font-weight: 200; }
.preloader-bar { width: 120px; height: 1px; background: rgba(197,162,88,.1); overflow: hidden; position: relative; }
.preloader-bar::after { content: ''; position: absolute; left: -100%; top: 0; width: 100%; height: 100%; background: var(--gold); animation: preload 1.4s ease-in-out forwards; }
@keyframes preload { to { left: 0; } }
.preloader-mark .logo-m { fill: none; stroke: var(--gold); stroke-width: 1.5; stroke-linecap: round; stroke-linejoin: round; stroke-dasharray: 300; stroke-dashoffset: 300; animation: drawLogo 1.8s ease-out .2s forwards; }
.preloader-mark .logo-compass { fill: var(--gold); opacity: 0; animation: compassIn .6s ease 1.4s forwards; transform-origin: center; }



/* ============================================
   ACCESSIBILITY HELPERS
   ============================================ */
.screen-reader-text {
  position:absolute !important;
  width:1px; height:1px;
  padding:0; margin:-1px;
  overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0;
}
.screen-reader-text:focus,
.skip-link:focus {
  clip:auto !important; width:auto; height:auto; margin:0; overflow:visible;
}
.skip-link {
  position:absolute; top:12px; left:12px; z-index:10001;
  padding:12px 16px; background:var(--white); color:var(--navy);
  border:2px solid var(--gold); text-decoration:none;
}
:focus-visible {
  outline:3px solid var(--gold);
  outline-offset:3px;
}

/* ============================================
   NAV
   ============================================ */
.site-nav {
  position: fixed; top: 0; left: 0; right: 0; z-index: 1000;
  padding: 18px 48px;
  display: flex; align-items: center; justify-content: space-between;
  transition: all .5s; background: transparent;
}
.site-nav.scrolled {
  background: rgba(11,29,58,.97);
  backdrop-filter: blur(24px);
  padding: 12px 48px;
  box-shadow: 0 4px 40px rgba(0,0,0,.25);
}
.site-nav.scrolled .nav-logo-svg { height: 22px; }
.nav-links { display: flex; gap: 0; align-items: center; }
.nav-item { position: relative; padding: 8px 14px; cursor: pointer; }
.nav-item > a, .nav-item > span, .nav-trigger {
  font-size: 9px; letter-spacing: 2.5px; text-transform: uppercase;
  color: rgba(255,255,255,.88); text-decoration: none; font-weight: 300;
  transition: color .3s; cursor: pointer;
}
.nav-item:hover > a, .nav-item:hover > span, .nav-item:hover > .nav-trigger, .nav-trigger[aria-expanded="true"] { color: var(--gold); }
.nav-trigger { background:none; border:none; padding:0; font-family:var(--font-body); }
.nav-cta-wrap { margin-left: 12px; }
.nav-cta {
  display: inline-block; padding: 8px 22px;
  border: 1px solid var(--gold); color: var(--gold);
  font-size: 9px; letter-spacing: 2.5px; text-transform: uppercase;
  font-weight: 300; transition: all .3s; font-family: var(--font-body);
}
.nav-cta:hover { background: var(--gold); color: var(--navy); }

/* MEGA MENU */
.mega-menu {
  position: absolute; top: 100%; left: 50%;
  transform: translateX(-50%) translateY(8px);
  background: rgba(11,29,58,.98); backdrop-filter: blur(30px);
  border: 1px solid rgba(197,162,88,.06); border-top: 2px solid var(--gold);
  padding: 28px 36px; min-width: 520px;
  opacity: 0; visibility: hidden;
  transition: all .3s cubic-bezier(.4,0,.2,1);
  pointer-events: none; display: flex; gap: 36px;
}
.nav-item:hover .mega-menu, .nav-item.open .mega-menu { opacity: 1; visibility: visible; pointer-events: auto; transform: translateX(-50%) translateY(0); }
.mega-col { min-width: 130px; }
.mega-col h6 { font-size: 8px; letter-spacing: 3px; text-transform: uppercase; color: var(--gold); margin-bottom: 12px; font-weight: 400; font-family: var(--font-body); }
.mega-col a { display: block; font-size: 11px; color: rgba(255,255,255,.86); text-decoration: none; font-weight: 300; margin-bottom: 8px; transition: all .2s; font-family: var(--font-body); line-height: 1.4; }
.mega-col a:hover { color: var(--gold); transform: translateX(3px); }
.mega-col a .ext { font-size: 7px; opacity: .3; margin-left: 2px; }
.mega-divider { width: 1px; background: rgba(255,255,255,.04); align-self: stretch; }

/* MOBILE NAV */
.hamburger { display: none; background: none; border: none; cursor: pointer; padding: 4px; z-index: 1001; }
.hamburger span { display: block; width: 22px; height: 1.5px; background: var(--gold); margin: 5px 0; transition: all .3s; }
.hamburger.active span:nth-child(1) { transform: rotate(45deg) translate(5px,5px); }
.hamburger.active span:nth-child(2) { opacity: 0; }
.hamburger.active span:nth-child(3) { transform: rotate(-45deg) translate(5px,-5px); }
.mobile-menu {
  position: fixed; inset: 0; background: rgba(6,15,31,.98); z-index: 999;
  display: flex; flex-direction: column; padding: 80px 32px 32px;
  overflow-y: auto; transform: translateX(100%);
  transition: transform .4s cubic-bezier(.4,0,.2,1);
  backdrop-filter: blur(20px);
}
.mobile-menu.open { transform: translateX(0); }
.mobile-menu a { display: block; font-size: 14px; color: rgba(255,255,255,.88); padding: 10px 0; border-bottom: 1px solid rgba(255,255,255,.03); font-weight: 200; letter-spacing: 1px; transition: all .2s; }
.mobile-menu a:hover { color: var(--gold); padding-left: 8px; }
.mobile-menu .mm-heading { font-size: 9px; letter-spacing: 3px; text-transform: uppercase; color: var(--gold); margin-top: 20px; margin-bottom: 8px; font-weight: 400; }

/* ============================================
   HERO — VIDEO
   ============================================ */
.hero { height: 100vh; position: relative; display: flex; align-items: center; justify-content: center; overflow: hidden; }
.hero-video { position: absolute; inset: 0; z-index: 0; }
.hero-video video { width: 100%; height: 100%; object-fit: cover; }
.hero-video .fallback-bg { position: absolute; inset: 0; background-size: cover; background-position: center; z-index: -1; }
.hero-overlay { position: absolute; inset: 0; background: linear-gradient(180deg, rgba(6,15,31, calc(var(--hero-overlay-strength) * .72)) 0%, rgba(6,15,31, calc(var(--hero-overlay-strength) * .18)) 35%, rgba(6,15,31, var(--hero-overlay-strength)) 100%); z-index: 1; }
.hero-content { position: relative; z-index: 2; text-align: center; color: var(--white); max-width: 800px; padding: 0 24px; }
.hero-eyebrow { font-size: 9px; letter-spacing: 10px; text-transform: uppercase; color: var(--gold); margin-bottom: 16px; font-weight: 300; opacity: 0; animation: heroFade 1.2s ease .6s forwards; text-shadow: 0 8px 24px rgba(0,0,0,calc(var(--hero-text-shadow-opacity) * .55)); }
.hero-title { font-family: var(--font-display); font-size: clamp(36px,6.5vw,76px); font-weight: 300; line-height: 1.05; margin-bottom: 16px; opacity: 0; animation: heroFade 1.2s ease .8s forwards; text-shadow: 0 18px 42px rgba(0,0,0,var(--hero-text-shadow-opacity)); }
.hero-title em { font-style: italic; color: var(--gold-light); }
.hero-sub { font-size: 14px; font-weight: 300; color: rgba(255,255,255,.92); max-width: 520px; margin: 0 auto 36px; line-height: 1.75; letter-spacing: .3px; opacity: 0; animation: heroFade 1.2s ease 1s forwards; text-shadow: 0 10px 28px rgba(0,0,0,calc(var(--hero-text-shadow-opacity) * .72)); }
@keyframes heroFade { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } }

/* ============================================
   SECTION UTILITIES
   ============================================ */
.section { padding: 90px 48px; }
.se { font-size: 9px; letter-spacing: 6px; text-transform: uppercase; color: var(--gold); font-weight: 400; margin-bottom: 10px; }
.st { font-family: var(--font-display); font-size: clamp(26px,3.5vw,44px); font-weight: 300; color: var(--navy); line-height: 1.15; margin-bottom: 12px; }
.ss { font-size: 12px; color: var(--slate); font-weight: 300; line-height: 1.7; max-width: 460px; margin-bottom: 40px; }

/* ============================================
   BOOKING BAR
   ============================================ */
.booking-bar {
  position: relative; z-index: 3;
  background: rgba(11,29,58,.94); backdrop-filter: blur(30px);
  border: 1px solid rgba(197,162,88,.08);
  padding: 20px 24px;
  display: flex; align-items: flex-end; gap: 12px;
  max-width: 860px; margin: -52px auto 0;
}
.bf { flex: 1; }
.bf label { display: block; font-size: 8px; letter-spacing: 3px; text-transform: uppercase; color: var(--gold); margin-bottom: 4px; font-weight: 400; }
.bf input, .bf select {
  width: 100%; background: transparent; border: none;
  border-bottom: 1px solid rgba(255,255,255,.06);
  padding: 6px 0; color: var(--white); font-family: var(--font-body);
  font-size: 12px; font-weight: 200; outline: none;
  transition: border-color .3s;
}
.bf input:focus, .bf select:focus { border-bottom-color: var(--gold); }
.bf select option { background: var(--navy); color: var(--white); }
.book-btn {
  padding: 11px 28px; background: var(--gold); color: var(--navy);
  border: none; cursor: pointer; font-family: var(--font-body);
  font-size: 9px; letter-spacing: 3px; text-transform: uppercase;
  font-weight: 500; white-space: nowrap; transition: all .3s;
}
.book-btn:hover { background: var(--gold-light); transform: translateY(-1px); }

/* ============================================
   PROPERTIES GRID
   ============================================ */
.pg { display: grid; grid-template-columns: repeat(3, 1fr); gap: 2px; }

.pc {
  position: relative;
  height: 420px;
  min-height: 420px;
  overflow: hidden;
  cursor: pointer;
  background: #d9d4cb;
}

.pc-media {
  position: absolute;
  inset: 0;
  z-index: 0;
  background-position: center;
  background-size: cover;
  background-repeat: no-repeat;
  transition: transform 1s var(--transition);
}

.pc:hover .pc-media { transform: scale(1.06); }

.po {
  position: absolute;
  inset: 0;
  z-index: 2;
  background: linear-gradient(180deg, rgba(6,15,31,0) 22%, rgba(6,15,31,.28) 52%, rgba(6,15,31,.92) 100%);
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  padding: 30px 28px 26px;
  transition: background .6s;
}

.pc:hover .po { background: linear-gradient(180deg, rgba(6,15,31,.04) 8%, rgba(6,15,31,.34) 48%, rgba(6,15,31,.95) 100%); }

.ploc { font-size: 8px; letter-spacing: 3px; text-transform: uppercase; color: var(--gold); margin-bottom: 8px; }

.pn { font-family: var(--font-display); font-size: clamp(26px, 2.2vw, 34px); font-weight: 400; color: var(--white); margin-bottom: 6px; line-height: 1.05; text-wrap: balance; }

.pd { font-size: 10px; color: rgba(255,255,255,.88); font-weight: 300; line-height: 1.55; max-width: 34ch; max-height: 0; overflow: hidden; transition: max-height .6s var(--transition), opacity .5s; opacity: 0; }

.pc:hover .pd { max-height: 80px; opacity: 1; }

.ptag {
  position: absolute;
  top: 16px;
  right: 16px;
  z-index: 3;
  background: rgba(11,29,58,.85);
  backdrop-filter: blur(12px);
  padding: 4px 12px;
  color: var(--gold);
  font-size: 8px;
  font-weight: 300;
  border: 1px solid rgba(197,162,88,.12);
  letter-spacing: 1px;
}

/* ============================================
   ACCESSIBILITY WIDGET
   ============================================ */
.a11y-fab {
  position: fixed; bottom: 84px; left: 16px; z-index: 9000;
  width: 40px; height: 40px; background: var(--navy);
  border: 1px solid rgba(197,162,88,.15); border-radius: 50%;
  cursor: pointer; display: flex; align-items: center; justify-content: center;
  box-shadow: 0 2px 12px rgba(0,0,0,.15); transition: all .3s;
}
.a11y-fab:hover { transform: scale(1.08); border-color: var(--gold); }
.a11y-fab svg { width: 18px; height: 18px; fill: var(--gold); }
.a11y-panel {
  position: fixed; bottom: 134px; left: 16px; z-index: 8998;
  width: 280px; background: var(--white);
  border: 1px solid rgba(0,0,0,.06);
  box-shadow: 0 12px 40px rgba(11,29,58,.12);
  transform: translateY(8px); opacity: 0; visibility: hidden;
  transition: all .3s cubic-bezier(.4,0,.2,1);
}
.a11y-panel.open { transform: translateY(0); opacity: 1; visibility: visible; }
.a11y-header { background: var(--navy); padding: 12px 16px; display: flex; align-items: center; justify-content: space-between; }
.a11y-header h5 { font-family: var(--font-display); font-size: 14px; color: var(--white); font-weight: 400; }
.a11y-header button { background: none; border: none; color: rgba(255,255,255,.85); cursor: pointer; font-size: 16px; }
.a11y-body { padding: 14px 16px; display: flex; flex-direction: column; gap: 10px; }
.a11y-row { display: flex; align-items: center; justify-content: space-between; }
.a11y-row label { font-size: 11px; color: var(--charcoal); font-weight: 300; }
.a11y-toggle { position: relative; width: 36px; height: 20px; background: rgba(0,0,0,.08); border-radius: 10px; cursor: pointer; transition: background .2s; border: none; padding: 0; }
.a11y-toggle.on { background: var(--gold); }
.a11y-toggle::after { content: ''; position: absolute; top: 2px; left: 2px; width: 16px; height: 16px; background: var(--white); border-radius: 50%; transition: transform .2s; box-shadow: 0 1px 3px rgba(0,0,0,.15); }
.a11y-toggle.on::after { transform: translateX(16px); }
.a11y-size { display: flex; gap: 4px; }
.a11y-size button { width: 28px; height: 28px; background: var(--alabaster-light); border: 1px solid rgba(0,0,0,.06); cursor: pointer; font-family: var(--font-body); font-weight: 400; color: var(--charcoal); transition: all .2s; font-size: 11px; display: flex; align-items: center; justify-content: center; }
.a11y-size button:hover, .a11y-size button.active { background: var(--navy); color: var(--gold); border-color: var(--navy); }
.a11y-reset { width: 100%; padding: 7px; background: transparent; border: 1px solid rgba(0,0,0,.06); color: var(--slate); font-family: var(--font-body); font-size: 9px; letter-spacing: 2px; text-transform: uppercase; cursor: pointer; transition: all .2s; }
.a11y-reset:hover { border-color: var(--gold); color: var(--gold); }

body.a11y-high-contrast { filter: contrast(1.4); }
body.a11y-large-text { font-size: 120%; }
body.a11y-xl-text { font-size: 140%; }
body.a11y-dyslexia * { font-family: OpenDyslexic, 'Comic Sans MS', sans-serif !important; letter-spacing: .5px !important; word-spacing: 2px !important; }
body.a11y-reduce-motion *, body.a11y-reduce-motion *::before, body.a11y-reduce-motion *::after { animation-duration: 0s !important; transition-duration: 0s !important; }
body.a11y-underline-links a { text-decoration: underline !important; }
body.a11y-large-cursor { cursor: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32'%3E%3Ccircle cx='16' cy='16' r='10' fill='none' stroke='%23C5A258' stroke-width='3'/%3E%3Ccircle cx='16' cy='16' r='3' fill='%23C5A258'/%3E%3C/svg%3E") 16 16, auto; }

/* ============================================
   FOOTER
   ============================================ */
footer { background: var(--navy-deep); padding: 56px 48px 28px; color: rgba(255,255,255,.86); }
.ft { display: grid; grid-template-columns: 2fr 1fr 1fr 1fr; gap: 36px; margin-bottom: 36px; }
.fb p { font-size: 10px; line-height: 1.7; font-weight: 200; max-width: 240px; }
.fc h6 { font-size: 8px; letter-spacing: 3px; text-transform: uppercase; color: var(--gold); margin-bottom: 12px; font-weight: 400; }
.fc a { display: block; font-size: 10px; color: rgba(255,255,255,.86); font-weight: 300; margin-bottom: 6px; transition: color .3s; }
.fc a:hover { color: var(--gold); }
.fbot { border-top: 1px solid rgba(255,255,255,.12); padding-top: 16px; font-size: 9px; font-weight: 300; letter-spacing: 1px; display: flex; justify-content: space-between; color: rgba(255,255,255,.82); }

/* ============================================
   RESPONSIVE
   ============================================ */
@media (max-width: 1024px) {
  .pg { grid-template-columns: 1fr 1fr; }
  .ft { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 768px) {
  .site-nav { padding: 12px 16px; }
  .nav-links { display: none; }
  .hamburger { display: block; }
  .section { padding: 56px 16px; }
  .booking-bar { flex-direction: column; margin: -32px 12px 0; padding: 16px; gap: 10px; }
  .pg { grid-template-columns: 1fr; }
  .pc { height: 300px; }
  .ft { grid-template-columns: 1fr; }
  .email-form { flex-direction: column; }
}

/* ============================================
   WEDDINGS
   ============================================ */
.wedding-planner { max-width:1120px; margin:0 auto 22px; display:grid; grid-template-columns:1.05fr 1.25fr; gap:18px; align-items:stretch; }
.wedding-planner-copy { position:relative; overflow:hidden; background:var(--navy); color:var(--white); padding:30px; box-shadow:0 24px 60px rgba(11,29,58,.14); isolation:isolate; }
.wedding-planner-copy::before { content:''; position:absolute; inset:0; background-image:var(--planner-bg-image); background-size:cover; background-position:center; opacity:1; z-index:-2; }
.wedding-planner-copy::after { content:''; position:absolute; inset:0; background:linear-gradient(160deg, rgba(11,29,58, calc(var(--weddings-planner-overlay) + .14)) 0%, rgba(11,29,58, var(--weddings-planner-overlay)) 58%, rgba(6,15,31, calc(var(--weddings-planner-overlay) + .1)) 100%); z-index:-1; }
.wedding-planner-kicker { font-size:9px; letter-spacing:3px; text-transform:uppercase; color:rgba(197,162,88,.94); margin-bottom:12px; font-weight:500; }
.wedding-planner-copy h3 { font-family:var(--font-display); font-size:42px; line-height:1.02; font-weight:400; margin-bottom:12px; text-shadow:0 12px 30px rgba(0,0,0,.24); }
.wedding-planner-copy p { font-size:12px; line-height:1.75; color:rgba(255,255,255,.86); font-weight:300; max-width:33rem; }
.wedding-planner-note { margin-top:18px; padding-top:18px; border-top:1px solid rgba(255,255,255,.12); font-size:10px; letter-spacing:1.5px; text-transform:uppercase; color:var(--gold); }
.wedding-filter-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; }
.wedding-filter { appearance:none; text-align:left; background:rgba(255,255,255,.82); border:1px solid rgba(11,29,58,.08); padding:22px; min-height:150px; display:flex; flex-direction:column; gap:8px; cursor:pointer; transition:transform .3s ease, box-shadow .3s ease, border-color .3s ease, background .3s ease; }
.wedding-filter:hover, .wedding-filter.active { transform:translateY(-4px); border-color:rgba(197,162,88,.45); box-shadow:0 20px 45px rgba(11,29,58,.08); background:#fff; }
.wedding-filter-step { font-size:9px; letter-spacing:2px; text-transform:uppercase; color:var(--gold); }
.wedding-filter strong { font-family:var(--font-display); font-size:28px; font-weight:400; color:var(--navy); line-height:1.04; }
.wedding-filter span:last-child { font-size:11px; line-height:1.6; color:var(--slate); font-weight:300; }
.wedding-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:18px; max-width:1120px; margin:0 auto; }
.wedding-card { background:var(--white); border:1px solid rgba(0,0,0,.05); box-shadow:0 14px 40px rgba(11,29,58,.06); overflow:hidden; display:flex; flex-direction:column; transition:transform .35s ease, box-shadow .35s ease, opacity .25s ease; }
.wedding-card:hover { transform:translateY(-4px); box-shadow:0 20px 50px rgba(11,29,58,.1); }
.wedding-card.is-hidden { display:none; }
.wedding-media { aspect-ratio: 1.18 / 1; overflow:hidden; background:var(--alabaster); }
.wedding-media img { width:100%; height:100%; object-fit:cover; display:block; transition:transform .9s ease; }
.wedding-card:hover .wedding-media img { transform:scale(1.05); }
.wedding-body { padding:24px; display:flex; flex-direction:column; gap:10px; }
.wedding-meta { font-size:8px; letter-spacing:2.4px; text-transform:uppercase; color:var(--gold); font-weight:500; }
.wedding-title { font-family:var(--font-display); font-size:30px; line-height:1.08; font-weight:400; color:var(--navy); }
.wedding-submeta { display:flex; flex-wrap:wrap; gap:8px; }
.wedding-submeta span, .wedding-tags span { font-size:9px; letter-spacing:1.4px; text-transform:uppercase; color:var(--slate); padding:6px 9px; border:1px solid rgba(11,29,58,.08); background:rgba(11,29,58,.02); }
.wedding-tags { display:flex; flex-wrap:wrap; gap:8px; }
.wedding-copy { font-size:11px; line-height:1.7; color:var(--slate); font-weight:300; }
.wedding-link { display:inline-flex; align-items:center; gap:6px; color:var(--navy); font-size:10px; letter-spacing:2px; text-transform:uppercase; font-weight:500; }
.wedding-link:hover { color:var(--gold); }
.wedding-support .nav-cta { margin-top:4px; }

@media (max-width: 1024px) {
  .wedding-planner { grid-template-columns:1fr; }
  .wedding-grid { grid-template-columns:1fr 1fr; }
}
@media (max-width: 768px) {
  .wedding-filter-grid { grid-template-columns:1fr; }
  .wedding-grid { grid-template-columns:1fr; }
  .wedding-title { font-size:26px; }
  .wedding-planner-copy h3 { font-size:34px; }
}


.events-section { position:relative; }
.events-visual { max-width:1120px; margin:0 auto 22px; min-height:330px; position:relative; overflow:hidden; display:flex; align-items:flex-end; border:1px solid rgba(0,0,0,.05); box-shadow:0 20px 50px rgba(11,29,58,.08); background:var(--navy); }
.events-visual::before { content:''; position:absolute; inset:0; background-image:var(--events-bg-image); background-size:cover; background-position:center; }
.events-visual::after { content:''; position:absolute; inset:0; background:linear-gradient(180deg, rgba(6,15,31, calc(var(--events-overlay-strength) * .45)) 0%, rgba(6,15,31, var(--events-overlay-strength)) 100%); }
.events-visual-inner { position:relative; z-index:1; padding:34px; max-width:760px; }
.events-visual-copy { color:rgba(255,255,255,.88); max-width:620px; margin-bottom:0; }
.events-card { padding:24px; background:#fff; border:1px solid rgba(0,0,0,.05); box-shadow:0 12px 32px rgba(11,29,58,.04); }
.events-card:hover { transform:translateY(-3px); box-shadow:0 18px 40px rgba(11,29,58,.08); }
.email-section--visual { position:relative; overflow:hidden; background:var(--navy); padding:64px 48px; text-align:center; }
.email-section--visual::before { content:''; position:absolute; inset:0; background-image:var(--email-bg-image); background-size:cover; background-position:center; }
.email-section--visual::after { content:''; position:absolute; inset:0; background:linear-gradient(180deg, rgba(6,15,31, calc(var(--email-overlay-strength) * .4)) 0%, rgba(6,15,31, var(--email-overlay-strength)) 100%); }
.email-section-inner, .email-section--visual .email-form, .email-section--visual .email-success { position:relative; z-index:1; }

@media (max-width: 768px) {
  .events-visual { min-height:280px; }
  .events-visual-inner { padding:24px; }
}

.nav-trigger:focus-visible,
.nav-cta:focus-visible,
.hamburger:focus-visible,
.map-card:focus-visible,
.book-btn:focus-visible,
.wedding-filter:focus-visible,
.a11y-fab:focus-visible,
.a11y-toggle:focus-visible,
.a11y-reset:focus-visible,
.a11y-size button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
a:focus-visible,
button:focus-visible {
  outline: 3px solid var(--gold);
  outline-offset: 3px;
}
.booking-form { display:flex; align-items:flex-end; gap:12px; width:100%; }
.pc { position:relative; }
.pc-link-overlay { position:absolute; inset:0; z-index:4; }
.po { position:absolute; inset:0; z-index:2; }
.ptag { position:absolute; top:16px; right:16px; z-index:3; }
.pc-media { position:absolute; inset:0; z-index:0; }
.map-card { width:100%; text-align:left; background:#fff; border:none; cursor:pointer; }
.a11y-panel[hidden], .mobile-menu[hidden] { display:none !important; }
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior:auto !important; animation-duration:.01ms !important; animation-iteration-count:1 !important; transition-duration:.01ms !important; }
}


/* ===== ADDED FULL HTML PARITY SECTIONS ===== */

/* BOOKING AVAILABILITY PANEL */
.avail-panel{max-width:1060px;margin:0 auto;padding:0 20px;overflow:hidden;transition:all .5s}
.avail-panel.open{padding:32px 20px}
.avail-head{text-align:center;margin-bottom:4px}
.avail-head h3{font-family:var(--font-display);font-size:22px;font-weight:400;color:var(--navy)}
.avail-head p{font-size:10px;color:var(--slate);margin-top:3px;font-weight:300}
.avail-note{text-align:center;font-size:9px;color:var(--slate);font-weight:200;margin-bottom:20px}
.avail-note strong{color:var(--navy);font-weight:400}
.avail-modes{display:flex;justify-content:center;gap:4px;margin-bottom:20px}
.am-btn{padding:5px 16px;background:transparent;border:1px solid rgba(11,29,58,.06);color:var(--slate);font-family:var(--font-body);font-size:8px;letter-spacing:2px;text-transform:uppercase;cursor:pointer;transition:all .2s;font-weight:300}
.am-btn.active{background:var(--navy);color:var(--gold);border-color:var(--navy)}
.cg{display:flex;flex-direction:column}.cc{background:var(--white);border:1px solid rgba(0,0,0,.04);display:grid;grid-template-columns:240px 1fr;overflow:hidden;transition:all .3s;opacity:0;animation:cIn .5s ease forwards}.cc+.cc{border-top:none}.cc:nth-child(1){animation-delay:.1s}.cc:nth-child(2){animation-delay:.15s}.cc:nth-child(3){animation-delay:.2s}.cc:nth-child(4){animation-delay:.25s}.cc:nth-child(5){animation-delay:.3s}@keyframes cIn{to{opacity:1}from{opacity:0;transform:translateY(8px)}}.cc:hover{box-shadow:0 6px 24px rgba(11,29,58,.05);z-index:1;position:relative}.cl{padding:20px;border-right:1px solid rgba(0,0,0,.03);display:flex;flex-direction:column;justify-content:center}.cl .pt{font-size:7px;letter-spacing:2px;text-transform:uppercase;color:var(--gold);font-weight:500;margin-bottom:4px}.cl h3{font-family:var(--font-display);font-size:18px;font-weight:500;color:var(--navy);margin-bottom:2px}.cl .pl{font-size:9px;color:var(--slate);font-weight:200;margin-bottom:8px}.cl .pf{font-size:8px;color:var(--slate);font-weight:200;line-height:1.5}.cr{padding:16px;display:flex;flex-direction:column;gap:6px}.rr{display:grid;grid-template-columns:1fr 80px 72px 100px;align-items:center;padding:7px 10px;background:var(--alabaster-light);border:1px solid rgba(0,0,0,.02);gap:8px;transition:background .2s}.rr:hover{background:rgba(197,162,88,.03)}.rn{font-size:10px;font-weight:400;color:var(--navy)}.rn span{display:block;font-size:8px;font-weight:200;color:var(--slate);margin-top:1px}.rp{font-family:var(--font-display);font-size:18px;font-weight:600;color:var(--navy)}.rp small{font-size:8px;font-weight:300;color:var(--slate);font-family:var(--font-body)}.ra{display:flex;align-items:center;gap:3px;font-size:8px;font-weight:300;color:var(--slate)}.dot{width:5px;height:5px;border-radius:50%}.dot.g{background:#34A853}.dot.o{background:#F59E0B}.dot.r{background:#EF4444}.rb{padding:5px 10px;background:var(--navy);color:var(--gold);border:none;cursor:pointer;font-family:var(--font-body);font-size:7px;letter-spacing:1.5px;text-transform:uppercase;font-weight:400;transition:all .3s;text-align:center;text-decoration:none;display:inline-block;white-space:nowrap}.rb:hover{background:var(--gold);color:var(--navy)}
.ev{display:none;text-align:center;padding:28px;background:var(--white);border:1px solid rgba(0,0,0,.04)}.ev.active{display:block}.et{display:flex;gap:3px;margin-bottom:14px;justify-content:center;flex-wrap:wrap}.etb{padding:7px 16px;background:var(--alabaster-light);border:1px solid rgba(0,0,0,.04);cursor:pointer;font-size:9px;letter-spacing:1px;text-transform:uppercase;font-weight:300;color:var(--slate);transition:all .2s}.etb.active{background:var(--navy);color:var(--gold);border-color:var(--navy)}.ec{padding:32px;background:var(--alabaster-light);border:1px solid rgba(0,0,0,.03);min-height:160px;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:12px}.eu{font-family:'Courier New',monospace;font-size:9px;color:var(--slate);background:rgba(0,0,0,.03);padding:8px 14px;max-width:100%;overflow-x:auto;word-break:break-all}.el{padding:11px 32px;background:var(--gold);color:var(--navy);text-decoration:none;font-size:9px;letter-spacing:3px;text-transform:uppercase;font-weight:500;font-family:var(--font-body);transition:all .3s;display:inline-block}.el:hover{background:var(--gold-light);transform:translateY(-1px)}.ld{display:inline-flex;align-items:center;gap:4px;font-size:8px;letter-spacing:1px;text-transform:uppercase;color:#34A853;font-weight:400}.ld::before{content:'';width:5px;height:5px;border-radius:50%;background:#34A853;animation:blink 2s infinite}@keyframes blink{0%,100%{opacity:1}50%{opacity:.3}}
/* GALLERY */
.gallery-section{background:var(--navy-deep);padding:64px 48px}.gallery-track{display:flex;gap:12px;overflow-x:auto;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;scrollbar-width:none;padding:4px 0}.gallery-track::-webkit-scrollbar{display:none}.gallery-item{flex:0 0 320px;height:240px;scroll-snap-align:start;position:relative;overflow:hidden;border:1px solid rgba(197,162,88,.06)}.gallery-item img{width:100%;height:100%;object-fit:cover;transition:transform .6s}.gallery-item:hover img{transform:scale(1.04)}.gallery-item .gi-label{position:absolute;bottom:0;left:0;right:0;padding:12px 16px;background:linear-gradient(transparent,rgba(6,15,31,.85));font-size:10px;color:rgba(255,255,255,.65);font-weight:200}.gallery-item .gi-label strong{color:var(--gold);font-weight:400}
/* SEASON GUIDE */
.season-section{background:var(--white);padding:80px 48px}.season-grid{display:grid;grid-template-columns:1fr 1fr;gap:32px;max-width:900px;margin:0 auto}.season-card{padding:32px;border:1px solid rgba(0,0,0,.05);transition:all .3s}.season-card:hover{border-color:rgba(197,162,88,.2);transform:translateY(-2px)}.season-card .sc-region{font-size:8px;letter-spacing:3px;text-transform:uppercase;color:var(--gold);font-weight:400;margin-bottom:8px}.season-card h4{font-family:var(--font-display);font-size:24px;font-weight:400;color:var(--navy);margin-bottom:6px}.season-card .sc-temps{font-size:11px;color:var(--charcoal);font-weight:400;margin-bottom:10px}.season-card p{font-size:11px;color:var(--slate);font-weight:200;line-height:1.65;margin-bottom:10px}.season-card .sc-best{font-size:10px;color:var(--gold);font-weight:400}.season-months{display:flex;gap:3px;margin-top:10px}.season-months span{width:26px;height:20px;display:flex;align-items:center;justify-content:center;font-size:8px;border:1px solid rgba(0,0,0,.06);font-weight:300;color:var(--slate)}.season-months span.peak{background:rgba(197,162,88,.1);border-color:rgba(197,162,88,.3);color:var(--gold);font-weight:500}
/* TRIP PLANNER */
.planner-section{background:var(--alabaster);padding:80px 48px;position:relative}.planner-wrap{max-width:880px;margin:0 auto}.planner-steps{display:flex;gap:0;margin:0 0 28px;border-bottom:1px solid rgba(0,0,0,.06)}.tp-step{flex:1;padding:11px 6px;text-align:center;font-size:9px;letter-spacing:2px;text-transform:uppercase;color:var(--slate);font-weight:300;cursor:pointer;transition:all .2s;border-bottom:2px solid transparent}.tp-step.active{color:var(--navy);font-weight:500;border-bottom-color:var(--gold)}.tp-step.done{color:var(--green);border-bottom-color:var(--green)}.tp-step .tp-num{display:inline-flex;width:18px;height:18px;align-items:center;justify-content:center;border-radius:50%;font-size:8px;margin-right:3px;background:rgba(0,0,0,.04);transition:all .2s}.tp-step.active .tp-num{background:var(--gold);color:var(--navy)}.tp-step.done .tp-num{background:var(--green);color:var(--white)}.tp-panel{display:none;animation:tpIn .35s ease}.tp-panel.active{display:block}@keyframes tpIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.trip-styles{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:16px}.ts-card{padding:18px 12px;text-align:center;border:1px solid rgba(0,0,0,.05);background:var(--white);cursor:pointer;transition:all .2s}.ts-card:hover{border-color:rgba(197,162,88,.2)}.ts-card.selected{border:2px solid var(--gold);background:rgba(197,162,88,.03)}.ts-card .ts-icon{font-size:22px;margin-bottom:4px;display:block}.ts-card h5{font-family:var(--font-display);font-size:15px;font-weight:500;color:var(--navy);margin-bottom:2px}.ts-card p{font-size:8px;color:var(--slate);font-weight:200}.tp-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.tp-card{padding:14px;border:1px solid rgba(0,0,0,.05);background:var(--white);cursor:pointer;transition:all .15s;position:relative}.tp-card:hover{border-color:rgba(197,162,88,.2)}.tp-card.selected{border:2px solid var(--gold);background:rgba(197,162,88,.02)}.tp-card.selected::after{content:'✓';position:absolute;top:6px;right:8px;color:var(--gold);font-size:13px;font-weight:600}.tp-card .tp-tag{display:inline-block;padding:2px 7px;font-size:7px;letter-spacing:1px;text-transform:uppercase;font-weight:400;margin-bottom:5px;border-radius:2px}.tag-nj{background:rgba(56,138,221,.06);color:#185FA5}.tag-fl{background:rgba(29,158,117,.06);color:#0F6E56}.tag-fine{background:rgba(197,162,88,.08);color:#854F0B}.tag-cas{background:rgba(0,0,0,.03);color:var(--slate)}.tag-exp{background:rgba(83,74,183,.06);color:#534AB7}.tp-card h4{font-family:var(--font-display);font-size:16px;font-weight:500;color:var(--navy);margin-bottom:2px}.tp-card .tp-sub{font-size:9px;color:var(--slate);font-weight:200;margin-bottom:5px}.tp-card .tp-price{font-family:var(--font-display);font-size:18px;font-weight:600;color:var(--gold)}.tp-card .tp-price small{font-size:9px;font-weight:300;color:var(--slate);font-family:var(--font-body)}.tp-card.fw{grid-column:1/-1}.tp-label{font-size:11px;color:var(--charcoal);font-weight:400;margin-bottom:8px}.tp-rec{margin:0 0 10px;padding:12px;border:1px dashed rgba(197,162,88,.25);background:rgba(197,162,88,.02);font-size:10px;color:var(--charcoal);font-weight:300;line-height:1.5;display:none}.tp-rec.show{display:block}.tp-rec strong{color:var(--navy);font-weight:500}.tp-actions{display:flex;gap:6px;margin-top:20px}.tp-next{padding:9px 24px;background:var(--navy);color:var(--gold);border:none;cursor:pointer;font-family:var(--font-body);font-size:9px;letter-spacing:2px;text-transform:uppercase;font-weight:400;transition:all .2s}.tp-next:hover{background:var(--gold);color:var(--navy)}.tp-back{padding:9px 18px;background:transparent;border:1px solid rgba(0,0,0,.06);color:var(--slate);cursor:pointer;font-family:var(--font-body);font-size:9px;letter-spacing:2px;text-transform:uppercase;font-weight:300;transition:all .2s}.tp-back:hover{border-color:var(--gold);color:var(--gold)}.tp-summary{background:var(--white);border:1px solid rgba(0,0,0,.05);padding:24px}.tp-sum-sec{margin-bottom:14px}.tp-sum-sec h5{font-size:9px;letter-spacing:2px;text-transform:uppercase;color:var(--gold);margin-bottom:6px;font-weight:400}.tp-sum-item{display:flex;justify-content:space-between;padding:7px 10px;background:var(--alabaster-light);margin-bottom:3px;font-size:11px}.tp-sum-item span:last-child{color:var(--gold);font-weight:500}.tp-sum-empty{font-size:10px;color:var(--slate);font-weight:200;font-style:italic}.tp-total{display:flex;justify-content:space-between;padding:12px;border-top:1px solid rgba(0,0,0,.05);margin-top:6px;font-size:14px}.tp-total span:last-child{font-family:var(--font-display);font-weight:600;color:var(--gold);font-size:20px}.tp-share{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-top:16px}.tp-share-btn{padding:11px;text-align:center;cursor:pointer;font-family:var(--font-body);font-size:9px;letter-spacing:2px;text-transform:uppercase;font-weight:400;transition:all .2s;border:none}.tp-share-email{background:var(--navy);color:var(--gold)}.tp-share-book{background:var(--gold);color:var(--navy)}.tp-share-btn:hover{opacity:.85;transform:translateY(-1px)}
/* CHEF */
.chef-section{background:var(--alabaster);padding:80px 48px}.chef-grid{display:grid;grid-template-columns:1fr 1fr;gap:40px;max-width:900px;margin:0 auto;align-items:center}.chef-img{height:400px;overflow:hidden;position:relative}.chef-img img{width:100%;height:100%;object-fit:cover}.chef-img::after{content:'';position:absolute;inset:0;border:1px solid rgba(197,162,88,.12);margin:12px;pointer-events:none}.chef-info .ci-tag{font-size:8px;letter-spacing:3px;text-transform:uppercase;color:var(--gold);font-weight:400;margin-bottom:10px}.chef-info h3{font-family:var(--font-display);font-size:32px;font-weight:400;color:var(--navy);margin-bottom:4px}.chef-info .ci-title{font-size:11px;color:var(--slate);font-weight:300;margin-bottom:16px}.chef-info p{font-size:12px;color:var(--charcoal);font-weight:300;line-height:1.7;margin-bottom:12px}.chef-info .ci-link{font-size:10px;color:var(--gold);text-decoration:none;letter-spacing:1px;font-weight:400}.chef-info .ci-link::after{content:' →'}
/* GROUPS */
.group-section{background:linear-gradient(135deg,var(--navy) 0%,var(--navy-deep) 100%);padding:80px 48px;color:var(--white)}.group-wrap{max-width:960px;margin:0 auto;display:grid;grid-template-columns:1fr 1fr;gap:40px;align-items:start}.group-info h3{font-family:var(--font-display);font-size:34px;font-weight:300;margin-bottom:10px}.group-info>p{font-size:11px;color:rgba(255,255,255,.4);font-weight:200;line-height:1.7;margin-bottom:18px}.gv{display:flex;flex-direction:column;gap:8px}.gv-card{display:flex;gap:14px;padding:12px;border:1px solid rgba(255,255,255,.04);background:rgba(255,255,255,.02);transition:all .2s}.gv-card:hover{border-color:rgba(197,162,88,.1)}.gv-icon{width:40px;height:40px;display:flex;align-items:center;justify-content:center;background:rgba(197,162,88,.08);font-family:var(--font-display);font-size:16px;color:var(--gold);font-weight:600;flex-shrink:0}.gv-info h5{font-family:var(--font-display);font-size:15px;font-weight:500;margin-bottom:1px}.gv-info p{font-size:9px;color:rgba(255,255,255,.35);font-weight:200;margin:0;line-height:1.4}.gv-info .gv-cap{font-size:8px;color:var(--gold);margin-top:2px;font-weight:400}.group-form{background:rgba(255,255,255,.02);border:1px solid rgba(255,255,255,.04);padding:24px}.group-form h4{font-family:var(--font-display);font-size:20px;font-weight:400;margin-bottom:3px}.group-form .gf-sub{font-size:9px;color:rgba(255,255,255,.35);font-weight:200;margin-bottom:16px}.gf-row{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:8px}.gf-field{display:flex;flex-direction:column}.gf-field label{font-size:7px;letter-spacing:2px;text-transform:uppercase;color:var(--gold);margin-bottom:3px;font-weight:400}.gf-field input,.gf-field select,.gf-field textarea{background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.06);padding:8px 10px;color:var(--white);font-family:var(--font-body);font-size:10px;font-weight:200;outline:none;transition:border-color .3s;resize:none}.gf-field input:focus,.gf-field select:focus,.gf-field textarea:focus{border-color:var(--gold)}.gf-field input::placeholder,.gf-field textarea::placeholder{color:rgba(255,255,255,.15)}.gf-field select option{background:var(--navy);color:var(--white)}.gf-full{grid-column:1/-1}.gf-calc{padding:12px;border:1px solid rgba(197,162,88,.08);background:rgba(197,162,88,.03);margin:12px 0}.gf-calc h5{font-size:9px;letter-spacing:2px;text-transform:uppercase;color:var(--gold);margin-bottom:8px;font-weight:400}.gf-calc-row{display:flex;justify-content:space-between;padding:5px 0;font-size:10px;border-bottom:1px solid rgba(255,255,255,.03)}.gf-calc-row:last-child{border:none;padding-top:8px;font-size:12px;font-weight:500}.gf-calc-row span:last-child{color:var(--gold);font-family:var(--font-display);font-weight:600}.gf-submit{width:100%;padding:11px;background:var(--gold);color:var(--navy);border:none;cursor:pointer;font-family:var(--font-body);font-size:9px;letter-spacing:3px;text-transform:uppercase;font-weight:500;transition:all .3s;margin-top:6px}.gf-submit:hover{background:var(--gold-light);transform:translateY(-1px)}.gf-success{display:none;text-align:center;padding:20px;color:var(--gold);font-size:12px;font-weight:300}.gf-success strong{display:block;font-family:var(--font-display);font-size:20px;font-weight:400;color:var(--white);margin-bottom:4px}
/* CHATBOT */
.chat-fab{position:fixed;bottom:20px;right:20px;z-index:9000;width:52px;height:52px;background:var(--gold);border:none;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 6px 24px rgba(197,162,88,.4);transition:all .3s}.chat-fab:hover{transform:scale(1.06)}.chat-fab svg{width:20px;height:20px;fill:var(--navy)}.chat-fab .ci2{display:none}.chat-fab.active .ci1{display:none}.chat-fab.active .ci2{display:block}.chat-badge{position:absolute;top:-2px;right:-2px;width:14px;height:14px;background:#e53935;border-radius:50%;font-size:8px;color:white;display:flex;align-items:center;justify-content:center;font-weight:600;animation:pulse 2s infinite}.chatbot{position:fixed;bottom:84px;right:20px;z-index:8999;width:360px;max-height:480px;background:var(--white);border:1px solid rgba(197,162,88,.06);box-shadow:0 20px 60px rgba(11,29,58,.18);display:flex;flex-direction:column;transform:translateY(10px) scale(.96);opacity:0;visibility:hidden;transition:all .35s cubic-bezier(.4,0,.2,1)}.chatbot.open{transform:translateY(0) scale(1);opacity:1;visibility:visible}.ch{background:var(--navy);padding:14px 16px;display:flex;align-items:center;gap:10px}.ca{width:30px;height:30px;border-radius:50%;background:linear-gradient(135deg,var(--gold),var(--gold-light));display:flex;align-items:center;justify-content:center;font-family:var(--font-display);font-size:12px;color:var(--navy);font-weight:600}.chi h5{font-family:var(--font-display);font-size:13px;color:var(--white);font-weight:500}.chi span{font-size:8px;color:var(--gold);letter-spacing:1px;font-weight:300}.cm{flex:1;overflow-y:auto;padding:12px;display:flex;flex-direction:column;gap:8px;max-height:290px;min-height:220px}.cm::-webkit-scrollbar{width:2px}.cm::-webkit-scrollbar-thumb{background:var(--gold)}.msg{max-width:85%;padding:9px 11px;font-size:11px;line-height:1.5;font-weight:300;animation:mi .3s ease}@keyframes mi{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.msg.bot{background:var(--alabaster);color:var(--charcoal);align-self:flex-start;border-radius:2px 10px 10px 10px}.msg.user{background:var(--navy);color:var(--white);align-self:flex-end;border-radius:10px 2px 10px 10px}.msg.bot strong{color:var(--navy);font-weight:500}.msg .hc{display:inline-block;margin:2px;padding:2px 7px;background:rgba(197,162,88,.06);border:1px solid rgba(197,162,88,.15);font-size:9px;color:var(--gold);cursor:pointer;transition:all .2s;border-radius:2px}.msg .hc:hover{background:var(--gold);color:var(--navy)}.ti{display:inline-flex;gap:3px;padding:9px 11px;background:var(--alabaster);align-self:flex-start;border-radius:2px 10px 10px 10px}.ti span{width:4px;height:4px;border-radius:50%;background:var(--slate);animation:typ 1.2s infinite}.ti span:nth-child(2){animation-delay:.2s}.ti span:nth-child(3){animation-delay:.4s}@keyframes typ{0%,60%,100%{transform:translateY(0);opacity:.4}30%{transform:translateY(-4px);opacity:1}}.qa{padding:4px 12px;display:flex;flex-wrap:wrap;gap:3px}.qb{padding:3px 8px;background:transparent;border:1px solid rgba(11,29,58,.05);font-size:9px;color:var(--navy);font-family:var(--font-body);cursor:pointer;transition:all .2s;font-weight:300}.qb:hover{border-color:var(--gold);color:var(--gold)}.cia{display:flex;align-items:center;padding:10px 12px;border-top:1px solid rgba(11,29,58,.03);gap:6px}.cia input{flex:1;border:none;outline:none;font-family:var(--font-body);font-size:11px;font-weight:300;color:var(--charcoal);background:transparent}.cs{width:28px;height:28px;background:var(--navy);border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .3s}.cs:hover{background:var(--gold)}.cs svg{width:12px;height:12px;fill:var(--white)}
@media(max-width:1024px){.cc{grid-template-columns:1fr}.season-grid,.chef-grid,.group-wrap{grid-template-columns:1fr}.trip-styles{grid-template-columns:1fr 1fr}}
@media(max-width:768px){.gallery-section,.season-section,.planner-section,.chef-section,.group-section{padding:56px 16px}.gallery-item{flex:0 0 260px;height:180px}.tp-grid,.tp-share,.gf-row{grid-template-columns:1fr}.tp-card.fw{grid-column:auto}.chatbot{width:calc(100% - 24px);right:12px;bottom:76px}.rr{grid-template-columns:1fr 1fr;gap:4px}.rn{grid-column:1/-1}}


/* FIXED PARITY STYLES — OFFERS / REVIEWS / MAP */
.offers-section{background:var(--navy);padding:64px 48px}
.offers-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:16px;max-width:960px;margin:0 auto}
.offer-card{padding:28px;border:1px solid rgba(197,162,88,.12);background:rgba(197,162,88,.03);transition:all .4s}
.offer-card:hover{border-color:var(--gold);transform:translateY(-3px);box-shadow:0 12px 40px rgba(0,0,0,.2)}
.offer-card .oc-tag{font-size:8px;letter-spacing:2px;text-transform:uppercase;color:var(--gold);font-weight:400;margin-bottom:8px}
.offer-card h4{font-family:var(--font-display);font-size:22px;font-weight:400;color:var(--white);margin-bottom:6px}
.offer-card p{font-size:11px;color:rgba(255,255,255,.4);font-weight:200;line-height:1.6;margin-bottom:12px}
.offer-card .oc-code{display:inline-block;padding:4px 12px;background:rgba(197,162,88,.12);border:1px solid rgba(197,162,88,.25);font-family:'Courier New',monospace;font-size:12px;color:var(--gold);letter-spacing:2px}
.offer-card .oc-dates{font-size:9px;color:rgba(255,255,255,.25);margin-top:8px;font-weight:200}
.reviews-section{background:var(--alabaster-light);padding:72px 48px}
.reviews-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:16px;max-width:960px;margin:0 auto}
.review-card{padding:24px;border:1px solid rgba(0,0,0,.04);background:var(--white);transition:all .3s}
.review-card:hover{transform:translateY(-2px);box-shadow:0 8px 28px rgba(11,29,58,.06)}
.review-card .rc-stars{color:var(--gold);font-size:11px;letter-spacing:2px;margin-bottom:8px}
.review-card p{font-size:12px;color:var(--charcoal);font-weight:300;line-height:1.65;font-style:italic;margin-bottom:10px}
.review-card .rc-author{font-size:10px;color:var(--slate);font-weight:400}
.review-card .rc-prop{font-size:9px;color:var(--gold);letter-spacing:1px;text-transform:uppercase;font-weight:400}
.review-card .rc-badge{font-size:8px;color:var(--slate);font-weight:200;margin-top:4px}
.map-section{padding:72px 48px;background:var(--white)}
.map-wrap{max-width:1000px;margin:0 auto}
.map-regions{display:flex;gap:4px;margin-bottom:16px;flex-wrap:wrap}
.map-region-btn{padding:8px 20px;background:transparent;border:1px solid rgba(0,0,0,.06);color:var(--slate);font-family:var(--font-body);font-size:9px;letter-spacing:2px;text-transform:uppercase;cursor:pointer;transition:all .2s;font-weight:300}
.map-region-btn.active{background:var(--navy);color:var(--gold);border-color:var(--navy)}
.map-layout{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:16px;align-items:start}
.map-container{height:460px;border:1px solid rgba(0,0,0,.04);position:relative;z-index:1;overflow:hidden}
.map-sidebar{display:flex;flex-direction:column;gap:6px;max-height:460px;overflow-y:auto;scrollbar-width:thin}
.map-sidebar::-webkit-scrollbar{width:3px}
.map-sidebar::-webkit-scrollbar-thumb{background:var(--gold)}
.map-card{padding:14px 16px;background:var(--alabaster-light);border:1px solid rgba(0,0,0,.04);cursor:pointer;transition:all .25s;display:grid;grid-template-columns:auto 1fr;gap:12px;align-items:center;width:100%;text-align:left}
.map-card:hover,.map-card.active{border-color:var(--gold);background:rgba(197,162,88,.05);transform:translateX(3px)}
.map-card .mc-marker{width:32px;height:32px;display:flex;align-items:center;justify-content:center;background:var(--navy);color:var(--gold);font-family:var(--font-display);font-size:13px;font-weight:600;border-radius:50%;border:1.5px solid rgba(197,162,88,.3);transition:all .2s;flex-shrink:0}
.map-card.active .mc-marker{background:var(--gold);color:var(--navy);transform:scale(1.1)}
.map-card .mc-info h5{font-family:var(--font-display);font-size:15px;font-weight:500;color:var(--navy);margin-bottom:1px}
.map-card .mc-info .mc-loc{font-size:9px;color:var(--slate);font-weight:200}
.map-card .mc-info .mc-meta{display:flex;gap:8px;flex-wrap:wrap;margin-top:4px;font-size:9px;font-weight:300}
.map-card .mc-info .mc-from{color:var(--gold);font-weight:400}
.map-card .mc-info .mc-type{color:var(--slate)}
.map-distance{margin-top:12px;padding:10px 14px;background:var(--alabaster-light);border:1px solid rgba(0,0,0,.04);font-size:10px;color:var(--slate);font-weight:200;line-height:1.6}
.map-distance strong{color:var(--navy);font-weight:400}
.lbi-detail{display:none;background:var(--alabaster-light);border:1px solid rgba(0,0,0,.04);padding:16px 18px;margin-top:10px}
.lbi-detail.show{display:block;animation:cIn .4s ease}
.lbi-detail h6{font-size:8px;letter-spacing:3px;text-transform:uppercase;color:var(--gold);margin-bottom:8px;font-weight:400;font-family:var(--font-body)}
.lbi-detail .ld-row{display:flex;justify-content:space-between;gap:12px;font-size:10px;padding:4px 0;border-bottom:1px solid rgba(0,0,0,.03);font-weight:300;color:var(--charcoal)}
.lbi-detail .ld-row:last-child{border:none}
.lbi-detail .ld-row strong{color:var(--navy);font-weight:400}
.lbi-detail .ld-row .ld-dist{color:var(--slate);font-size:9px}
.lbi-detail .ld-note{font-size:9px;color:var(--slate);font-weight:200;margin-top:8px;line-height:1.5;font-style:italic}
.minimap-inset{position:absolute;bottom:8px;left:8px;width:130px;height:90px;z-index:1000;border:2px solid var(--navy);background:var(--white);box-shadow:0 2px 12px rgba(0,0,0,.2);opacity:0;transition:opacity .4s;pointer-events:none}
.minimap-inset.show{opacity:1;pointer-events:auto}
.leaflet-popup-content-wrapper{border-radius:0!important;box-shadow:0 8px 32px rgba(11,29,58,.15)!important;padding:0!important}
.leaflet-popup-content{margin:0!important;min-width:220px}
.leaflet-popup-tip{border-top-color:var(--white)!important}
.mp-popup{padding:0}
.mp-popup .mp-img{width:100%;height:120px;object-fit:cover;display:block}
.mp-popup .mp-body{padding:12px 14px}
.mp-popup .mp-tag{font-size:7px;letter-spacing:2px;text-transform:uppercase;color:var(--gold);font-weight:500;margin-bottom:4px;font-family:var(--font-body)}
.mp-popup h4{font-family:var(--font-display);font-size:17px;font-weight:500;color:var(--navy);margin-bottom:2px}
.mp-popup .mp-loc{font-size:9px;color:var(--slate);font-weight:200;margin-bottom:6px;font-family:var(--font-body)}
.mp-popup .mp-desc{font-size:10px;color:var(--charcoal);font-weight:300;line-height:1.5;margin-bottom:8px;font-family:var(--font-body)}
.mp-popup .mp-price{font-family:var(--font-display);font-size:18px;font-weight:600;color:var(--navy);margin-bottom:8px}
.mp-popup .mp-price span{font-size:10px;font-weight:300;color:var(--slate);font-family:var(--font-body)}
.mp-popup .mp-btn{display:block;width:100%;padding:8px;text-align:center;background:var(--navy);color:var(--gold);font-size:8px;letter-spacing:2px;text-transform:uppercase;text-decoration:none;font-family:var(--font-body);font-weight:400;transition:all .2s}
.mp-popup .mp-btn:hover{background:var(--gold);color:var(--navy)}
@media(max-width:1024px){.map-layout{grid-template-columns:1fr}.map-sidebar{max-height:none;flex-direction:row;flex-wrap:wrap}.map-card{min-width:180px;flex:1}}
@media(max-width:768px){.offers-section,.reviews-section,.map-section{padding:56px 16px}.offers-grid{grid-template-columns:1fr}.map-layout{grid-template-columns:1fr}.map-sidebar{flex-direction:column}.lbi-detail .ld-row{flex-direction:column;align-items:flex-start}}


/* ===== DINING + CHEF + JOURNAL HARDENING ===== */
.dining-section{background:var(--navy);color:var(--white)}
.dining-section .ss{color:rgba(255,255,255,.72)}
.dv{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.vc{padding:20px;border:1px solid rgba(255,255,255,.03);transition:all .4s;background:rgba(255,255,255,.01);cursor:pointer;text-decoration:none;color:inherit;display:block}
.vc:hover{border-color:rgba(197,162,88,.12);background:rgba(197,162,88,.03);transform:translateY(-3px)}
.vc .vt{font-size:8px;letter-spacing:2px;text-transform:uppercase;color:var(--gold);margin-bottom:5px;font-weight:400}
.vc h4{font-family:var(--font-display);font-size:18px;font-weight:400;margin-bottom:2px;color:var(--white)}
.vc .va{font-size:9px;letter-spacing:1.5px;text-transform:uppercase;color:rgba(255,255,255,.4);margin-bottom:6px}
.vc p{font-size:10px;color:rgba(255,255,255,.74);font-weight:200;line-height:1.55}
.vc .vl{margin-top:8px;font-size:9px;color:var(--gold);letter-spacing:1px;font-weight:300}.vc .vl::after{content:' →'}
.chef-section{background:var(--alabaster);padding:80px 48px}.chef-grid{display:grid;grid-template-columns:1fr 1fr;gap:40px;max-width:900px;margin:0 auto;align-items:center}.chef-img{height:400px;overflow:hidden;position:relative}.chef-img img{width:100%;height:100%;object-fit:cover}.chef-img::after{content:'';position:absolute;inset:0;border:1px solid rgba(197,162,88,.12);margin:12px;pointer-events:none}.chef-info .ci-tag{font-size:8px;letter-spacing:3px;text-transform:uppercase;color:var(--gold);font-weight:400;margin-bottom:10px}.chef-info h3{font-family:var(--font-display);font-size:32px;font-weight:400;color:var(--navy);margin-bottom:4px}.chef-info .ci-title{font-size:11px;color:var(--slate);font-weight:300;margin-bottom:16px}.chef-info p{font-size:12px;color:var(--charcoal);font-weight:300;line-height:1.7;margin-bottom:12px}.chef-info .ci-link{font-size:10px;color:var(--gold);text-decoration:none;letter-spacing:1px;font-weight:400}.chef-info .ci-link::after{content:' →'}
.blog-section{background:var(--white)}
.blog-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
.blog-card{cursor:pointer;transition:transform .5s}
.blog-card:hover{transform:translateY(-4px)}
.blog-card .blog-img{height:200px;overflow:hidden;margin-bottom:14px}
.blog-card .blog-img img{width:100%;height:100%;object-fit:cover;transition:transform .8s}
.blog-card:hover .blog-img img{transform:scale(1.05)}
.blog-card .blog-tag{font-size:8px;letter-spacing:2px;text-transform:uppercase;color:var(--gold);font-weight:500;margin-bottom:5px}
.blog-card h4{font-family:var(--font-display);font-size:18px;font-weight:400;color:var(--navy);line-height:1.3;margin-bottom:6px}
.blog-card h4 a{color:inherit;text-decoration:none}
.blog-card p{font-size:10px;color:var(--slate);font-weight:300;line-height:1.55}
.blog-card .blog-meta{margin-top:10px;font-size:9px;color:var(--slate);letter-spacing:1px;font-weight:300;text-transform:uppercase}
@media(max-width:1024px){.dv,.blog-grid{grid-template-columns:1fr 1fr}.chef-grid{grid-template-columns:1fr}}
@media(max-width:768px){.dining-section,.chef-section,.blog-section{padding:56px 16px}.dv,.blog-grid{grid-template-columns:1fr}.chef-img{height:280px}}


/* ============================================================
   IMAGE FAILSAFES + QUICK SWAP FRIENDLY MEDIA WRAPPERS
   ============================================================ */
.pc,
.gallery-item,
.chef-img,
.blog-card .blog-img,
.wedding-media {
  background-color: #d9d4cb;
}
.pc-media,
.gallery-item,
.chef-img,
.blog-card .blog-img,
.wedding-media {
  background-color: #d9d4cb;
  background-position: center;
  background-repeat: no-repeat;
  background-size: cover;
}
.pc-media {
  background-image:
    radial-gradient(circle at 18% 18%, rgba(255,255,255,.32) 0, rgba(255,255,255,0) 24%),
    radial-gradient(circle at 82% 20%, rgba(255,255,255,.18) 0, rgba(255,255,255,0) 18%),
    linear-gradient(135deg, #ebe5dc 0%, #d8dee8 58%, #c2ccd9 100%);
}
.pc-media::after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(255,255,255,.02) 0%, rgba(11,29,58,.06) 100%);
  pointer-events: none;
}
.pc img,
.gallery-item img,
.chef-img img,
.blog-card .blog-img img,
.wedding-media img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.pc.img-failed,
.gallery-item.img-failed,
.chef-img.img-failed,
.blog-card .blog-img.img-failed,
.wedding-media.img-failed {
  background-size: cover;
}
.pc.img-failed::before,
.gallery-item.img-failed::before,
.chef-img.img-failed::before,
.blog-card .blog-img.img-failed::before,
.wedding-media.img-failed::before {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(255,255,255,.06) 0%, rgba(11,29,58,.08) 100%);
  pointer-events: none;
}
.pc {
  min-height: 420px;
  background-position: center center;
  background-image: none;
}
.pc img { position: relative; z-index: 0; }
.gallery-item,
.chef-img,
.blog-card .blog-img,
.wedding-media { position: relative; }
.gallery-item .gi-label,
.po,
.ptag,
.chef-info,
.blog-card > *:not(.blog-img),
.wedding-body { position: relative; z-index: 1; }
.blog-card .blog-img { margin-bottom: 14px; }
@media (max-width: 768px) {
  .pc { min-height: 300px; }
}

/* ============================================
   FINAL POLISH + MOBILE FRIENDLY PASS v1.5.4
   ============================================ */
.email-section--visual {
  color: var(--white);
  min-height: 420px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 12px;
}
.email-section--visual h3 {
  font-family: var(--font-display);
  font-size: clamp(34px, 4vw, 54px);
  line-height: 1.02;
  font-weight: 400;
  color: var(--white);
  margin-bottom: 8px;
  text-shadow: 0 10px 30px rgba(0,0,0,.28);
}
.email-section--visual p {
  max-width: 760px;
  margin: 0 auto;
  color: rgba(255,255,255,.9);
  font-size: 18px;
  line-height: 1.5;
  font-weight: 300;
}
.email-form {
  width: min(760px, 100%);
  margin: 18px auto 0;
  display: flex;
  align-items: stretch;
  justify-content: center;
  gap: 10px;
}
.email-form input,
.email-form button {
  min-height: 56px;
  border-radius: 0;
}
.email-form input {
  flex: 1 1 420px;
  padding: 0 18px;
  border: 1px solid rgba(255,255,255,.28);
  background: rgba(255,255,255,.92);
  color: var(--navy);
  font-size: 18px;
}
.email-form input::placeholder {
  color: rgba(11,29,58,.65);
}
.email-form button {
  flex: 0 0 auto;
  padding: 0 22px;
  border: 1px solid var(--gold);
  background: var(--gold);
  color: var(--navy);
  font-size: 14px;
  letter-spacing: 2px;
  text-transform: uppercase;
  font-weight: 500;
  cursor: pointer;
}
.email-success {
  color: rgba(255,255,255,.96);
  font-size: 16px;
  line-height: 1.5;
  margin-top: 8px;
}
.pc {
  min-height: 420px;
}
.pc-media {
  background-color: #d9d4cb;
}
.pc .pd {
  max-width: 38ch;
}
.planner-steps {
  overflow-x: auto;
  scrollbar-width: thin;
}
.planner-steps::-webkit-scrollbar {
  height: 6px;
}
.tp-step {
  min-width: 120px;
}
.tp-actions {
  flex-wrap: wrap;
}
.season-card,
.events-card,
.offer-card,
.review-card,
.blog-card,
.wedding-card {
  border-radius: 0;
}
@media (max-width: 1024px) {
  .pc { min-height: 360px; }
}
@media (max-width: 768px) {
  .pc {
    min-height: 320px;
  }
  .po {
    padding: 22px 18px;
  }
  .pn {
    font-size: 36px;
    line-height: 1.02;
  }
  .pd {
    font-size: 12px;
    line-height: 1.55;
    max-height: none;
    opacity: 1;
  }
  .ptag {
    top: 12px;
    right: 12px;
  }
  .email-section--visual {
    padding: 56px 16px;
    min-height: 360px;
  }
  .email-section--visual p {
    font-size: 16px;
  }
  .email-form {
    flex-direction: column;
    width: min(100%, 420px);
  }
  .email-form input,
  .email-form button {
    width: 100%;
    min-height: 52px;
  }
  .planner-steps {
    gap: 8px;
    border-bottom: 0;
    padding-bottom: 6px;
  }
  .tp-step {
    flex: 0 0 auto;
    border: 1px solid rgba(0,0,0,.08);
    border-bottom: 1px solid rgba(0,0,0,.08);
    padding: 10px 12px;
    background: #fff;
  }
  .tp-step.active {
    border-color: rgba(197,162,88,.5);
    background: rgba(197,162,88,.08);
  }
  .tp-actions {
    flex-direction: column;
  }
  .tp-next,
  .tp-back {
    width: 100%;
    justify-content: center;
  }
  .season-months {
    flex-wrap: wrap;
  }
}
/* =========================================
   PROPERTY TILE FINAL FIX
========================================= */

.pg{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:24px;
}

.pc{
  position:relative;
  overflow:hidden;
  border-radius:24px;
  min-height:420px;
  cursor:pointer;
  background:#111;
}

.pc img{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  object-fit:cover;
  display:block;
  z-index:1;
}

.pc::before{
  content:"";
  position:absolute;
  inset:0;
  background:linear-gradient(to top, rgba(0,0,0,.72) 8%, rgba(0,0,0,.28) 42%, rgba(0,0,0,.08) 100%);
  z-index:2;
}

.po{
  position:absolute;
  left:0;
  right:0;
  bottom:0;
  z-index:3;
  padding:24px;
}

.ptag{
  position:absolute;
  top:16px;
  right:16px;
  z-index:4;
}

.ploc,
.pn,
.pd{
  position:relative;
  z-index:4;
}

.pn{
  margin:8px 0 8px;
  line-height:1.05;
}

.pd{
  margin:0;
}

@media (max-width: 1024px){
  .pg{
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:20px;
  }

  .pc{
    min-height:380px;
  }

  .pn{
    font-size:30px;
  }
}

@media (max-width: 768px){
  .pg{
    grid-template-columns:1fr;
    gap:18px;
  }

  .pc{
    min-height:320px;
  }

  .po{
    padding:22px 18px 18px;
  }

  .ploc{
    margin-bottom:6px;
    display:block;
  }

  .pn{
    font-size:30px;
  }

  .pd{
    max-height:none;
    opacity:1;
  }

  .ptag{
    top:12px;
    right:12px;
  }
}