/* ---------- Design tokens : Minimal Luxe ---------- */
:root{
  --ink:#22262b;
  --navy:#1c2b3a;
  --navy-soft:#3c5169;
  --cream:#faf7f1;
  --cream-deep:#f2ede1;
  --line:#e4ddcd;
  --gold:#a8863f;
  --gold-soft:#cdb37c;
  --white:#ffffff;
  --radius:2px;
  --radius-lg:20px;
  --shadow-soft:0 20px 60px -30px rgba(28,43,58,.35);
  --font-head:"Fraunces", serif;
  --font-body:"Inter", system-ui, sans-serif;
  --maxw:1240px;
  --gap-section: clamp(64px, 9vw, 140px);
}
*,*::before,*::after{box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{
  margin:0;
  font-family:var(--font-body);
  font-weight:400;
  color:var(--ink);
  background:var(--cream);
  line-height:1.7;
  -webkit-font-smoothing:antialiased;
  letter-spacing:.01em;
}
img{max-width:100%;display:block;}
main img:not(.brand-logo){border-radius:var(--radius-lg);}
a{color:inherit;text-decoration:none;}
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 24px;}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);}
.skip-link{position:absolute;left:-999px;top:0;background:var(--navy);color:#fff;padding:10px 16px;z-index:200;}
.skip-link:focus{left:10px;top:10px;}

h1,h2,h3,h4{font-family:var(--font-head);font-weight:400;line-height:1.12;margin:0 0 .5em;color:var(--navy);letter-spacing:-0.01em;}
h1{font-size:clamp(2.4rem,6vw,4.2rem); font-weight:400;}
h2{font-size:clamp(1.7rem,3.6vw,2.6rem);}
h3{font-size:1.25rem;font-weight:500;}
em, .accent{font-style:italic;color:var(--gold);}
p{margin:0 0 1.2em;color:var(--navy-soft);}
.lead{font-size:1.2rem;color:var(--navy-soft);font-weight:300;line-height:1.6;}

.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:.6em;
  padding:1em 2em;border-radius:999px;font-weight:500;text-decoration:none;
  border:1px solid transparent;transition:all .3s cubic-bezier(.4,0,.2,1);
  font-size:.85rem;letter-spacing:.06em;text-transform:uppercase;
}
.btn-primary{background:var(--navy);color:#fff;}
.btn-primary:hover{background:var(--gold);}
.btn-accent{background:var(--gold);color:#fff;}
.btn-accent:hover{background:var(--navy);}
.btn-outline{background:transparent;border-color:currentColor;color:var(--navy);}
.btn-outline:hover{background:var(--navy);color:#fff;border-color:var(--navy);}

/* ---------- Header ---------- */
.site-header{position:fixed;top:0;left:0;right:0;width:100%;z-index:100;background:transparent;transition:background .4s ease, box-shadow .4s ease;}
.site-header.scrolled{background:rgba(28,43,58,.94);backdrop-filter:blur(10px);box-shadow:0 1px 0 rgba(0,0,0,.15);}
.topbar{background:var(--navy);color:#fff;font-size:.78rem;letter-spacing:.03em;}
.topbar-inner{display:flex;justify-content:space-between;padding:9px 24px;gap:12px;flex-wrap:wrap;}
.topbar-item{color:#fff;text-decoration:none;opacity:.85;}
.nav-inner{display:flex;align-items:center;justify-content:space-between;padding:22px 24px;}
.brand{display:flex;align-items:center;gap:12px;text-decoration:none;}
.brand-logo{height:44px;width:auto;filter:brightness(0) invert(1);}

.nav-toggle{display:flex;flex-direction:column;justify-content:center;gap:6px;width:40px;height:40px;background:none;border:0;cursor:pointer;}
.nav-toggle span{display:block;width:100%;height:1px;background:#fff;transition:background .4s ease;}

.primary-nav{
  position:fixed;inset:0 0 0 26%;background:var(--navy);color:#fff;
  transform:translateX(100%);transition:transform .45s cubic-bezier(.4,0,.2,1);
  display:flex;flex-direction:column;justify-content:center;padding:40px 48px;z-index:150;
}
.primary-nav.open{transform:translateX(0);}
.primary-nav ul{list-style:none;margin:0 0 32px;padding:0;display:flex;flex-direction:column;gap:18px;}
.primary-nav a{text-decoration:none;color:#fff;font-size:1.3rem;font-family:var(--font-head);font-weight:300;}
.nav-cta{align-self:flex-start;}
@media(min-width:900px){.nav-cta.btn-outline{color:#fff;border-color:rgba(255,255,255,.6);}
}

@media(min-width:900px){
  .nav-toggle{display:none;}
  .primary-nav{position:static;transform:none;background:none;color:inherit;flex-direction:row;align-items:center;padding:0;gap:36px;}
  .primary-nav ul{flex-direction:row;gap:30px;margin:0;}
  .primary-nav a{color:rgba(255,255,255,.85);font-size:.82rem;font-weight:500;font-family:var(--font-body);letter-spacing:.04em;text-transform:uppercase;transition:color .25s ease;}
  .primary-nav a:hover, .primary-nav a[aria-current]{color:var(--gold-soft);}
}

/* ---------- Hero ---------- */
.hero{position:relative;color:#fff;padding:min(30vh,240px) 0 110px;background:linear-gradient(180deg,rgba(20,32,44,.35) 0%,rgba(20,32,44,.75) 100%),var(--navy) center/cover;}
.hero.has-image{background-image:linear-gradient(180deg,rgba(20,32,44,.25) 20%,rgba(20,32,44,.8) 100%),var(--hero-img);background-size:cover;background-position:center;}
.hero .eyebrow{color:var(--gold-soft);}
.hero h1{color:#fff;font-weight:300;}
.hero p{max-width:46ch;color:rgba(255,255,255,.88);}
.hero-actions{display:flex;gap:16px;flex-wrap:wrap;margin-top:32px;}

/* ---------- Sections ---------- */
section{padding:var(--gap-section) 0;}
.section-alt{background:var(--cream-deep);}
.section-blue{background:var(--navy);color:#fff;}
.section-blue h2, .section-blue h3{color:#fff;}
.section-blue p{color:rgba(255,255,255,.75);}
.eyebrow{text-transform:uppercase;letter-spacing:.18em;font-size:.72rem;font-weight:600;color:var(--gold);margin-bottom:1em;display:inline-block;}

.grid{display:grid;gap:36px;}
@media(min-width:700px){
  .grid-2{grid-template-columns:1fr 1fr;}
  .grid-3{grid-template-columns:repeat(3,1fr);}
  .grid-4{grid-template-columns:repeat(4,1fr);}
}

.card{background:transparent;overflow:hidden;transition:transform .4s ease;}
.card .img-wrap{overflow:hidden;border-radius:var(--radius-lg);}
.card img{aspect-ratio:4/5;object-fit:cover;width:100%;transition:transform .6s cubic-bezier(.4,0,.2,1);}
.card:hover img{transform:scale(1.05);}
.card-body{padding:22px 2px 0;}
.card-body h3{margin-bottom:.3em;}
.tag{display:inline-block;font-size:.7rem;letter-spacing:.08em;text-transform:uppercase;color:var(--gold);margin-bottom:.8em;font-weight:600;}

.feature{display:flex;flex-direction:column;gap:12px;}
.feature img{aspect-ratio:4/3;object-fit:cover;border-radius:var(--radius-lg);}

.split{display:grid;gap:48px;align-items:center;}
@media(min-width:800px){.split{grid-template-columns:1fr 1fr;}}
.split img{border-radius:var(--radius-lg);}

.divider{width:56px;height:1px;background:var(--gold);margin:0 0 1.6em;}

.badge-strip{display:flex;gap:48px;align-items:center;flex-wrap:wrap;justify-content:center;padding:32px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);}
.badge-strip p{margin:0;font-family:var(--font-head);font-style:italic;color:var(--navy-soft);font-size:1.05rem;}

/* ---------- Forms ---------- */
.form-grid{display:grid;gap:20px;}
@media(min-width:640px){.form-grid.cols-2{grid-template-columns:1fr 1fr;}}
label{display:block;font-weight:500;font-size:.78rem;letter-spacing:.05em;text-transform:uppercase;color:var(--navy-soft);margin-bottom:.6em;}
input,select,textarea{
  width:100%;padding:.85em 1em;border:none;border-bottom:1px solid var(--line);border-radius:0;
  font-family:inherit;font-size:1rem;background:transparent;transition:border-color .25s ease;
}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--gold);}
.booking-embed{background:var(--white);border:1px solid var(--line);border-radius:var(--radius-lg);padding:28px;min-height:280px;}

/* ---------- Reveal on scroll ---------- */
.reveal{opacity:0;transform:translateY(24px);transition:opacity .8s ease, transform .8s ease;}
.reveal.is-visible{opacity:1;transform:none;}

/* ---------- Footer ---------- */
.site-footer{background:var(--navy);color:#fff;margin-top:0;}
.footer-inner{display:grid;gap:36px;padding:80px 24px 48px;}
@media(min-width:800px){.footer-inner{grid-template-columns:1.2fr 1fr 1fr;}}
.footer-brand p{color:rgba(255,255,255,.6);}
.footer-nav ul{list-style:none;margin:0;padding:0;display:grid;gap:12px;}
.footer-nav a, .footer-contact a{color:#fff;text-decoration:none;opacity:.75;transition:opacity .25s ease;}
.footer-nav a:hover, .footer-contact a:hover{opacity:1;color:var(--gold-soft);}
.footer-contact{display:flex;flex-direction:column;gap:10px;}
.footer-bottom{border-top:1px solid rgba(255,255,255,.12);padding:22px 24px;display:flex;justify-content:space-between;flex-wrap:wrap;gap:8px;font-size:.78rem;opacity:.6;}
.footer-bottom a{color:#fff;}

/* ---------- Cookie consent ---------- */
.cookie-banner{position:fixed;left:0;right:0;bottom:0;z-index:200;background:var(--navy);color:#fff;padding:20px 24px;box-shadow:0 -6px 30px rgba(0,0,0,.2);}
.cookie-banner-inner{max-width:var(--maxw);margin:0 auto;display:flex;align-items:center;justify-content:space-between;gap:24px;flex-wrap:wrap;}
.cookie-banner p{margin:0;color:rgba(255,255,255,.85);font-size:.88rem;max-width:60ch;}
.cookie-banner a{color:var(--gold-soft);text-decoration:underline;}
.cookie-banner-actions{display:flex;gap:12px;flex-shrink:0;}
.cookie-banner .btn-outline{color:#fff;border-color:rgba(255,255,255,.5);}

.map-consent{background:var(--cream-deep);border:1px solid var(--line);border-radius:var(--radius-lg);padding:32px;text-align:center;min-height:280px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;}
.map-consent p{margin:0;color:var(--navy-soft);}

/* ---------- Reviews ---------- */
.review-card{display:flex;flex-direction:column;align-items:center;gap:6px;padding:36px 24px;border:1px solid var(--line);border-radius:var(--radius-lg);transition:border-color .3s ease, transform .3s ease;}
.review-card:hover{border-color:var(--gold);transform:translateY(-3px);}
.review-platform{text-transform:uppercase;letter-spacing:.1em;font-size:.75rem;font-weight:600;color:var(--navy-soft);}
.review-score{font-family:var(--font-head);font-size:2.4rem;color:var(--navy);}
.review-score small{font-size:1.1rem;color:var(--navy-soft);margin-left:2px;}
.review-count{font-size:.82rem;color:var(--gold);}

.reviews-consent{background:var(--cream-deep);border:1px solid var(--line);border-radius:var(--radius-lg);padding:32px;text-align:center;margin-bottom:24px;}
.reviews-consent p{margin:0 0 16px;color:var(--navy-soft);}

/* ---------- Press strip (Petit Futé + Booking Award) ---------- */
.press-strip{display:flex;align-items:center;gap:32px;justify-content:center;flex-wrap:wrap;padding:32px 0 48px;border-bottom:1px solid var(--line);margin-bottom:48px;text-align:left;}
.press-logo{height:80px;width:auto;border-radius:0;}
.press-quote{max-width:52ch;}
.press-quote p{margin:0 0 .4em;font-style:italic;color:var(--navy-soft);font-size:.92rem;}
.press-credit{font-style:normal !important;font-size:.78rem !important;color:var(--gold) !important;}

/* ---------- Review card icon ---------- */
.review-icon{margin-bottom:10px;display:flex;align-items:center;justify-content:center;}

.review-award{height:110px;width:auto;border-radius:0;margin:6px 0;}

.review-badge{display:flex;flex-direction:column;align-items:center;gap:6px;margin:8px 0;}
.review-badge-label{font-size:.78rem;font-weight:600;color:#FF385C;text-transform:uppercase;letter-spacing:.04em;}


/* ---------- Mobile nav open: lock background scroll ---------- */
body.nav-open{overflow:hidden;height:100vh;}

/* ---------- Mobile nav: backdrop, close button, always-opaque header ---------- */
.nav-backdrop{position:fixed;inset:0;background:rgba(18,38,63,.55);z-index:140;opacity:0;pointer-events:none;transition:opacity .35s ease;}
.nav-backdrop.open{opacity:1;pointer-events:auto;}
.nav-close{position:absolute;top:24px;right:24px;width:40px;height:40px;border:1px solid rgba(255,255,255,.4);border-radius:50%;background:none;color:#fff;font-size:1.6rem;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;}
body.nav-open .site-header{background:rgba(28,43,58,.98) !important;backdrop-filter:blur(10px);box-shadow:0 1px 0 rgba(0,0,0,.15);}
@media(min-width:900px){
  .nav-backdrop{display:none;}
  .nav-close{display:none;}
}
