/*
Theme Name: Villa Criel
Theme URI: https://www.villa-criel-sur-mer.nl
Author: Villa Criel
Author URI: https://www.villa-criel-sur-mer.nl
Description: Een ingetogen, editorial thema voor de verkoop van een karakteristiek vakantiehuis aan de Normandische kust. Gebouwd met Bootstrap 5, Bootstrap Icons en ACF Pro-integratie.
Version: 1.0.0
Requires at least: 6.0
Tested up to: 6.5
Requires PHP: 7.4
License: GPL v2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: villa-criel
Tags: custom-menu, editor-style, featured-images, threaded-comments, translation-ready
*/

/* ==========================================================================
   Villa Criel — Custom theme styles
   Design direction: editorial, literary, 1930s Normandy.
   Typography: Fraunces (display) + EB Garamond (body).
   ========================================================================== */

/* -------- 1. Design tokens ------------------------------------------------ */
:root {
  /* Palette — inspired by the villa: cream walls, blue shutters, garden moss,
     terracotta roof, muted gold weathervane */
  --vc-cream:       #F4EFE6;
  --vc-cream-deep:  #EAE1CC;
  --vc-paper:       #FBF8F1;
  --vc-ink:         #1F2328;
  --vc-ink-soft:    #3A403C;
  --vc-ink-muted:   #7A746A;
  --vc-shutter:     #7A96A4;
  --vc-shutter-deep:#4E6975;
  --vc-moss:        #8A9164;
  --vc-moss-deep:   #5E6540;
  --vc-terracotta:  #B5553C;
  --vc-terracotta-dark:#8A3F2C;
  --vc-gold:        #B88A3E;
  --vc-rule:        #D6CCB8;

  /* Typography */
  --vc-display: "Fraunces", "Playfair Display", Georgia, serif;
  --vc-serif:   "EB Garamond", "Garamond", Georgia, serif;
  --vc-smcaps:  "Fraunces", serif;

  /* Rhythm */
  --vc-section-pad: clamp(4rem, 9vw, 9rem);
  --vc-container:   78rem;
}

/* -------- 2. Base --------------------------------------------------------- */
html { scroll-behavior: smooth; }

body.villa-criel {
  font-family: var(--vc-serif);
  font-size: 1.125rem;
  line-height: 1.65;
  color: var(--vc-ink-soft);
  background: var(--vc-cream);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
  font-feature-settings: "kern", "liga", "onum";
}

/* subtle paper grain — adds atmosphere */
body.villa-criel::before {
  content: "";
  position: fixed; inset: 0;
  pointer-events: none;
  z-index: 1;
  opacity: .035;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='220' height='220'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 0  0 0 0 0 0  0 0 0 0 0  0 0 0 .7 0'/></filter><rect width='100%25' height='100%25' filter='url(%23n)'/></svg>");
  mix-blend-mode: multiply;
}

body.villa-criel > * { position: relative; z-index: 2; }

/* Typography */
.villa-criel h1, .villa-criel h2, .villa-criel h3, .villa-criel h4,
.villa-criel .display, .villa-criel .h-display {
  font-family: var(--vc-display);
  color: var(--vc-ink);
  font-weight: 400;
  letter-spacing: -0.01em;
  line-height: 1.05;
  font-variation-settings: "SOFT" 50, "WONK" 0, "opsz" 144;
}

.villa-criel .h-display-xl {
  font-size: clamp(2.75rem, 7.5vw, 6.25rem);
  font-weight: 350;
  letter-spacing: -0.025em;
}

.villa-criel .h-display-lg {
  font-size: clamp(2.25rem, 5vw, 4rem);
  font-weight: 400;
}

.villa-criel .h-display-md {
  font-size: clamp(1.75rem, 3.4vw, 2.625rem);
  font-weight: 400;
  line-height: 1.15;
}

.villa-criel .eyebrow {
  font-family: var(--vc-smcaps);
  font-size: .78rem;
  letter-spacing: .22em;
  text-transform: uppercase;
  color: var(--vc-moss-deep);
  font-weight: 500;
  font-variation-settings: "opsz" 9;
}

.villa-criel .chapter-number {
  font-family: var(--vc-display);
  font-style: italic;
  color: var(--vc-terracotta);
  font-size: 1.05rem;
  letter-spacing: .08em;
  font-feature-settings: "smcp", "onum";
}

.villa-criel .lede {
  font-family: var(--vc-display);
  font-size: clamp(1.25rem, 1.8vw, 1.55rem);
  line-height: 1.45;
  color: var(--vc-ink);
  font-weight: 300;
  font-style: italic;
  font-variation-settings: "opsz" 36;
}

.villa-criel p { margin-bottom: 1.1em; }

.villa-criel a {
  color: var(--vc-shutter-deep);
  text-decoration-color: rgba(78,105,117,.35);
  text-underline-offset: 3px;
  text-decoration-thickness: 1px;
  transition: color .2s, text-decoration-color .2s;
}
.villa-criel a:hover {
  color: var(--vc-terracotta);
  text-decoration-color: var(--vc-terracotta);
}

/* Ornamental divider */
.villa-criel .ornament {
  display: flex; align-items: center; justify-content: center;
  gap: 1rem; color: var(--vc-gold);
  margin: 0 auto;
}
.villa-criel .ornament::before,
.villa-criel .ornament::after {
  content: ""; height: 1px; flex: 0 0 4rem;
  background: linear-gradient(90deg, transparent, var(--vc-rule), transparent);
}
.villa-criel .ornament i { font-size: 1rem; }

/* -------- 3. Navigation --------------------------------------------------- */
.villa-criel .vc-nav {
  position: fixed; inset: 0 0 auto 0;
  z-index: 1020;
  padding: 1.25rem 0;
  background: transparent;
  transition: background .35s ease, padding .35s ease, box-shadow .35s ease;
}
.villa-criel .vc-nav.is-scrolled {
  background: rgba(251,248,241,.94);
  backdrop-filter: saturate(1.2) blur(10px);
  padding: .65rem 0;
  box-shadow: 0 1px 0 rgba(31,35,40,.06);
}

.villa-criel .vc-nav__wrap {
  display: flex; align-items: center; justify-content: space-between;
  max-width: var(--vc-container);
  margin: 0 auto; padding: 0 1.5rem;
}
.villa-criel .vc-brand {
  font-family: var(--vc-display);
  font-size: 1.25rem;
  font-style: italic;
  font-weight: 400;
  color: var(--vc-ink);
  text-decoration: none;
  letter-spacing: .01em;
}
.villa-criel .vc-nav.is-scrolled .vc-brand { color: var(--vc-ink); }
.villa-criel .vc-brand small {
  font-family: var(--vc-smcaps);
  display: block; font-size: .62rem;
  letter-spacing: .28em; text-transform: uppercase;
  font-style: normal; color: var(--vc-moss-deep);
  margin-top: .1rem; font-weight: 500;
}
.villa-criel .vc-nav.is-transparent .vc-brand,
.villa-criel .vc-nav.is-transparent .vc-nav__links a {
  color: var(--vc-paper);
}
.villa-criel .vc-nav.is-transparent .vc-brand small {
  color: rgba(251,248,241,.75);
}

.villa-criel .vc-nav__links {
  display: flex; gap: 2.25rem; list-style: none;
  margin: 0; padding: 0;
  font-family: var(--vc-smcaps);
  font-size: .78rem;
  letter-spacing: .2em;
  text-transform: uppercase;
  font-weight: 500;
}
.villa-criel .vc-nav__links a {
  color: var(--vc-ink);
  text-decoration: none;
  padding: .25rem 0;
  position: relative;
  transition: color .25s;
}
.villa-criel .vc-nav__links a::after {
  content: ""; position: absolute; left: 0; right: 0; bottom: -2px;
  height: 1px; background: currentColor;
  transform: scaleX(0); transform-origin: left;
  transition: transform .3s ease;
}
.villa-criel .vc-nav__links a:hover::after { transform: scaleX(1); }

.villa-criel .vc-nav__cta {
  font-family: var(--vc-smcaps);
  font-size: .72rem; letter-spacing: .22em;
  text-transform: uppercase; font-weight: 500;
  padding: .55rem 1.1rem;
  border: 1px solid currentColor;
  border-radius: 999px;
  text-decoration: none;
  color: var(--vc-ink);
  transition: all .25s;
}
.villa-criel .vc-nav.is-transparent .vc-nav__cta { color: var(--vc-paper); }
.villa-criel .vc-nav__cta:hover {
  background: var(--vc-ink);
  color: var(--vc-paper);
  border-color: var(--vc-ink);
}
.villa-criel .vc-nav.is-transparent .vc-nav__cta:hover {
  background: var(--vc-paper);
  color: var(--vc-ink);
  border-color: var(--vc-paper);
}

.villa-criel .vc-nav__toggle {
  display: none; background: none; border: 0;
  font-size: 1.4rem; color: inherit; cursor: pointer;
  padding: .25rem .5rem;
}

@media (max-width: 960px) {
  .villa-criel .vc-nav__links,
  .villa-criel .vc-nav__cta { display: none; }
  .villa-criel .vc-nav__toggle { display: inline-flex; color: var(--vc-ink); }
  .villa-criel .vc-nav.is-transparent .vc-nav__toggle { color: var(--vc-paper); }
  .villa-criel .vc-nav.is-open .vc-nav__links {
    display: flex;
    position: absolute; top: 100%; left: 0; right: 0;
    flex-direction: column;
    background: var(--vc-paper);
    padding: 1.5rem 2rem 2rem;
    gap: 1.25rem;
    box-shadow: 0 10px 30px rgba(31,35,40,.1);
    align-items: flex-start;
  }
  .villa-criel .vc-nav.is-open .vc-nav__links a { color: var(--vc-ink); }
}

/* -------- 4. Hero --------------------------------------------------------- */
.villa-criel .vc-hero {
  position: relative;
  min-height: 100vh;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  overflow: hidden;
  color: var(--vc-paper);
}
.villa-criel .vc-hero__bg {
  position: absolute; inset: 0;
  background-size: cover;
  background-position: center 40%;
  transform: scale(1.05);
  animation: vc-hero-zoom 14s ease-out forwards;
}
@keyframes vc-hero-zoom {
  to { transform: scale(1); }
}
.villa-criel .vc-hero__bg::after {
  content: "";
  position: absolute; inset: 0;
  background:
    linear-gradient(180deg, rgba(15,20,25,.25) 0%, rgba(15,20,25,0) 35%, rgba(15,20,25,0) 55%, rgba(15,20,25,.72) 100%);
}

.villa-criel .vc-hero__content {
  position: relative; z-index: 2;
  max-width: var(--vc-container);
  margin: 0 auto;
  padding: 0 1.5rem var(--vc-section-pad);
  width: 100%;
}
.villa-criel .vc-hero__eyebrow {
  font-family: var(--vc-smcaps);
  font-size: .82rem; letter-spacing: .32em;
  text-transform: uppercase;
  color: rgba(251,248,241,.88);
  margin-bottom: 1.5rem;
  font-weight: 500;
  display: inline-flex; align-items: center; gap: .75rem;
}
.villa-criel .vc-hero__eyebrow::before {
  content: ""; width: 2.5rem; height: 1px; background: var(--vc-gold);
}
.villa-criel .vc-hero h1 {
  color: var(--vc-paper);
  max-width: 22ch;
  margin-bottom: 1.5rem;
}
.villa-criel .vc-hero h1 em {
  font-style: italic;
  font-variation-settings: "opsz" 144, "WONK" 1;
  color: var(--vc-cream);
}
.villa-criel .vc-hero__meta {
  font-family: var(--vc-display);
  font-style: italic;
  font-size: 1.2rem;
  color: rgba(251,248,241,.9);
  margin-bottom: 2rem;
  max-width: 42ch;
}

.villa-criel .vc-hero__foot {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 2rem;
  flex-wrap: wrap;
}
.villa-criel .vc-price-stamp {
  display: inline-block;
  background: var(--vc-terracotta);
  color: var(--vc-paper);
  padding: 1.1rem 1.6rem 1rem;
  font-family: var(--vc-display);
  transform: rotate(-2deg);
  box-shadow: 0 8px 28px rgba(0,0,0,.25);
  position: relative;
  border-radius: 2px;
}
.villa-criel .vc-price-stamp::after {
  content: ""; position: absolute; inset: 3px;
  border: 1px solid rgba(255,255,255,.35);
  pointer-events: none;
  border-radius: 2px;
}
.villa-criel .vc-price-stamp__top {
  display: block;
  font-family: var(--vc-smcaps);
  font-size: .7rem; letter-spacing: .3em;
  text-transform: uppercase;
  font-weight: 500;
  opacity: .9;
  margin-bottom: .25rem;
}
.villa-criel .vc-price-stamp__price {
  display: block;
  font-size: 1.85rem;
  font-weight: 500;
  letter-spacing: -0.01em;
  line-height: 1;
}
.villa-criel .vc-price-stamp__note {
  display: block;
  font-family: var(--vc-smcaps);
  font-size: .68rem; letter-spacing: .25em;
  text-transform: uppercase;
  opacity: .85;
  margin-top: .4rem;
}

.villa-criel .vc-hero__scroll {
  font-family: var(--vc-smcaps);
  font-size: .72rem; letter-spacing: .25em;
  text-transform: uppercase;
  color: rgba(251,248,241,.8);
  text-decoration: none;
  display: inline-flex;
  flex-direction: column;
  align-items: center;
  gap: .5rem;
}
.villa-criel .vc-hero__scroll i {
  font-size: 1rem;
  animation: vc-bob 2.2s ease-in-out infinite;
}
@keyframes vc-bob {
  0%, 100% { transform: translateY(0); }
  50%      { transform: translateY(6px); }
}

/* -------- 5. Sections ----------------------------------------------------- */
.villa-criel section { padding: var(--vc-section-pad) 0; }
.villa-criel .vc-container {
  max-width: var(--vc-container);
  margin: 0 auto;
  padding: 0 1.5rem;
}
.villa-criel .vc-narrow {
  max-width: 44rem;
  margin: 0 auto;
}

.villa-criel .vc-section-head {
  text-align: center;
  margin-bottom: clamp(2.5rem, 5vw, 4.5rem);
}
.villa-criel .vc-section-head .chapter-number { display: block; margin-bottom: .75rem; }
.villa-criel .vc-section-head h2 { margin-bottom: 1rem; }
.villa-criel .vc-section-head .lede { margin-top: 1.5rem; }

/* Alternating tones */
.villa-criel .vc-tone-paper  { background: var(--vc-paper); }
.villa-criel .vc-tone-cream  { background: var(--vc-cream); }
.villa-criel .vc-tone-deep   { background: var(--vc-cream-deep); }
.villa-criel .vc-tone-ink    { background: var(--vc-ink); color: rgba(251,248,241,.8); }
.villa-criel .vc-tone-ink h2, .villa-criel .vc-tone-ink h3 { color: var(--vc-paper); }
.villa-criel .vc-tone-ink .chapter-number { color: var(--vc-gold); }
.villa-criel .vc-tone-ink .eyebrow { color: var(--vc-gold); }

/* Intro / about */
.villa-criel .vc-intro {
  position: relative;
}
.villa-criel .vc-intro__grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: clamp(2rem, 5vw, 5rem);
  align-items: center;
}
.villa-criel .vc-intro__text h2 { margin-bottom: 1.5rem; }
.villa-criel .vc-intro__text .drop::first-letter {
  font-family: var(--vc-display);
  float: left;
  font-size: 4.8em;
  line-height: .85;
  padding-right: .12em;
  padding-top: .08em;
  color: var(--vc-terracotta);
  font-style: italic;
  font-variation-settings: "opsz" 144;
  font-weight: 400;
}
.villa-criel .vc-intro__img {
  aspect-ratio: 4/5;
  background-size: cover; background-position: center;
  border-radius: 2px;
  box-shadow: 0 30px 60px -30px rgba(0,0,0,.35);
  position: relative;
}
.villa-criel .vc-intro__img::after {
  content: ""; position: absolute;
  inset: 10px;
  border: 1px solid rgba(255,255,255,.5);
  pointer-events: none;
}

@media (max-width: 820px) {
  .villa-criel .vc-intro__grid { grid-template-columns: 1fr; }
  .villa-criel .vc-intro__img { aspect-ratio: 3/4; max-width: 28rem; margin: 0 auto; }
}

/* Image frame */
.villa-criel .vc-frame {
  background-size: cover;
  background-position: center;
  border-radius: 2px;
  box-shadow: 0 20px 45px -25px rgba(0,0,0,.3);
  overflow: hidden;
  position: relative;
}

/* Editorial asymmetric gallery */
.villa-criel .vc-gallery-edit {
  display: grid;
  gap: 1.25rem;
  grid-template-columns: repeat(12, 1fr);
  grid-auto-rows: 11vw;
}
.villa-criel .vc-gallery-edit > * {
  background-size: cover;
  background-position: center;
  border-radius: 2px;
  box-shadow: 0 10px 35px -20px rgba(0,0,0,.3);
  transition: transform .5s ease;
}
.villa-criel .vc-gallery-edit > *:hover {
  transform: scale(1.02);
  box-shadow: 0 20px 55px -20px rgba(0,0,0,.4);
  z-index: 2;
}

.villa-criel .vc-ge-a { grid-column: 1 / span 7; grid-row: span 3; }
.villa-criel .vc-ge-b { grid-column: 8 / span 5; grid-row: span 2; }
.villa-criel .vc-ge-c { grid-column: 8 / span 5; grid-row: 3 / span 2; }
.villa-criel .vc-ge-d { grid-column: 1 / span 4; grid-row: span 2; }
.villa-criel .vc-ge-e { grid-column: 5 / span 4; grid-row: span 2; }
.villa-criel .vc-ge-f { grid-column: 9 / span 4; grid-row: span 2; }

@media (max-width: 900px) {
  .villa-criel .vc-gallery-edit { grid-template-columns: repeat(6, 1fr); grid-auto-rows: 22vw; }
  .villa-criel .vc-ge-a { grid-column: 1 / span 6; grid-row: span 2; }
  .villa-criel .vc-ge-b { grid-column: 1 / span 3; grid-row: span 1; }
  .villa-criel .vc-ge-c { grid-column: 4 / span 3; grid-row: span 1; }
  .villa-criel .vc-ge-d { grid-column: 1 / span 3; grid-row: span 1; }
  .villa-criel .vc-ge-e { grid-column: 4 / span 3; grid-row: span 1; }
  .villa-criel .vc-ge-f { grid-column: 1 / span 6; grid-row: span 2; }
}

/* Two-column feature (image + text) */
.villa-criel .vc-feature {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: clamp(2rem, 5vw, 5rem);
  align-items: center;
}
.villa-criel .vc-feature--reverse > :first-child { order: 2; }
.villa-criel .vc-feature__img {
  aspect-ratio: 4/5;
  background-size: cover; background-position: center;
  border-radius: 2px;
  box-shadow: 0 30px 60px -30px rgba(0,0,0,.35);
}
.villa-criel .vc-feature__img--wide { aspect-ratio: 5/4; }
@media (max-width: 820px) {
  .villa-criel .vc-feature { grid-template-columns: 1fr; }
  .villa-criel .vc-feature--reverse > :first-child { order: 0; }
}

/* Pull quote */
.villa-criel .vc-pullquote {
  text-align: center;
  max-width: 40rem;
  margin: 0 auto;
  padding: 2rem 0;
}
.villa-criel .vc-pullquote blockquote {
  font-family: var(--vc-display);
  font-size: clamp(1.5rem, 2.6vw, 2.1rem);
  font-style: italic;
  line-height: 1.3;
  color: var(--vc-ink);
  margin: 0;
  font-variation-settings: "opsz" 96;
  font-weight: 300;
}
.villa-criel .vc-pullquote blockquote::before { content: "“"; color: var(--vc-terracotta); margin-right: .1em;}
.villa-criel .vc-pullquote blockquote::after  { content: "”"; color: var(--vc-terracotta); margin-left: .1em; }
.villa-criel .vc-pullquote cite {
  display: block;
  margin-top: 1.25rem;
  font-style: normal;
  font-family: var(--vc-smcaps);
  letter-spacing: .22em;
  text-transform: uppercase;
  font-size: .75rem;
  color: var(--vc-moss-deep);
  font-weight: 500;
}

/* -------- 6. Specifications table ---------------------------------------- */
.villa-criel .vc-specs {
  background: var(--vc-ink);
  color: var(--vc-cream);
}
.villa-criel .vc-specs h2 { color: var(--vc-paper); }
.villa-criel .vc-specs .eyebrow { color: var(--vc-gold); }

.villa-criel .vc-specs__grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1px;
  background: rgba(251,248,241,.12);
  border: 1px solid rgba(251,248,241,.12);
  border-radius: 2px;
  overflow: hidden;
}
.villa-criel .vc-spec {
  background: var(--vc-ink);
  padding: 2rem 1.75rem;
  display: flex;
  flex-direction: column;
  gap: .5rem;
  min-height: 10rem;
}
.villa-criel .vc-spec__icon {
  color: var(--vc-gold);
  font-size: 1.6rem;
  margin-bottom: .25rem;
}
.villa-criel .vc-spec__label {
  font-family: var(--vc-smcaps);
  font-size: .72rem;
  letter-spacing: .22em;
  text-transform: uppercase;
  color: rgba(251,248,241,.55);
  font-weight: 500;
}
.villa-criel .vc-spec__value {
  font-family: var(--vc-display);
  font-size: 1.45rem;
  color: var(--vc-paper);
  font-weight: 400;
  line-height: 1.2;
  font-variation-settings: "opsz" 36;
}
.villa-criel .vc-spec__sub {
  font-family: var(--vc-serif);
  font-size: .95rem;
  color: rgba(251,248,241,.65);
  font-style: italic;
}

@media (max-width: 860px) { .villa-criel .vc-specs__grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 500px) { .villa-criel .vc-specs__grid { grid-template-columns: 1fr; } }

.villa-criel .vc-rooms {
  display: flex; flex-wrap: wrap;
  justify-content: center;
  gap: .5rem 1.5rem;
  margin-top: 3rem;
  padding: 2rem 0 0;
  border-top: 1px solid rgba(251,248,241,.15);
  font-family: var(--vc-display);
  font-style: italic;
  color: rgba(251,248,241,.85);
}
.villa-criel .vc-rooms span { display: inline-flex; align-items: center; gap: .5rem; }
.villa-criel .vc-rooms i { color: var(--vc-gold); font-size: .75rem; }

/* -------- 7. Contact ----------------------------------------------------- */
.villa-criel .vc-contact { text-align: center; }
.villa-criel .vc-contact h2 { margin-bottom: 1rem; }
.villa-criel .vc-contact .lede { margin-bottom: 2.5rem; }
.villa-criel .vc-contact__cards {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 1.5rem;
  max-width: 44rem;
  margin: 0 auto;
}
.villa-criel .vc-contact__card {
  background: var(--vc-paper);
  border: 1px solid var(--vc-rule);
  padding: 2.25rem 1.5rem;
  border-radius: 2px;
  text-decoration: none;
  color: var(--vc-ink);
  transition: transform .3s, box-shadow .3s, border-color .3s;
  display: flex; flex-direction: column; align-items: center; gap: .6rem;
}
.villa-criel .vc-contact__card:hover {
  transform: translateY(-4px);
  border-color: var(--vc-terracotta);
  box-shadow: 0 20px 40px -20px rgba(181,85,60,.35);
  color: var(--vc-terracotta-dark);
}
.villa-criel .vc-contact__card i { font-size: 1.8rem; color: var(--vc-terracotta); }
.villa-criel .vc-contact__card .label {
  font-family: var(--vc-smcaps);
  font-size: .7rem; letter-spacing: .24em;
  text-transform: uppercase;
  color: var(--vc-ink-muted);
  font-weight: 500;
}
.villa-criel .vc-contact__card .value {
  font-family: var(--vc-display);
  font-size: 1.2rem;
  font-style: italic;
  font-variation-settings: "opsz" 36;
  word-break: break-all;
}
@media (max-width: 560px) {
  .villa-criel .vc-contact__cards { grid-template-columns: 1fr; }
}

.villa-criel .vc-disclaimer {
  margin-top: 3rem;
  font-family: var(--vc-smcaps);
  font-size: .75rem;
  letter-spacing: .2em;
  text-transform: uppercase;
  color: var(--vc-ink-muted);
  font-weight: 500;
}

/* -------- 8. Footer ------------------------------------------------------ */
.villa-criel .vc-footer {
  background: var(--vc-ink);
  color: rgba(251,248,241,.55);
  padding: 3.5rem 0 2.5rem;
  text-align: center;
  font-size: .9rem;
}
.villa-criel .vc-footer__mark {
  font-family: var(--vc-display);
  font-style: italic;
  font-size: 1.6rem;
  color: var(--vc-paper);
  margin-bottom: .35rem;
}
.villa-criel .vc-footer__place {
  font-family: var(--vc-smcaps);
  letter-spacing: .22em;
  text-transform: uppercase;
  font-size: .72rem;
  color: var(--vc-gold);
  margin-bottom: 1.5rem;
  font-weight: 500;
}
.villa-criel .vc-footer__rule {
  max-width: 3rem;
  height: 1px;
  background: rgba(251,248,241,.25);
  margin: 0 auto 1.5rem;
  border: 0;
}

/* -------- 9. Reveal animation -------------------------------------------- */
.villa-criel .reveal {
  opacity: 0;
  transform: translateY(18px);
  transition: opacity .9s cubic-bezier(.2,.7,.25,1), transform .9s cubic-bezier(.2,.7,.25,1);
}
.villa-criel .reveal.is-in { opacity: 1; transform: none; }

@media (prefers-reduced-motion: reduce) {
  .villa-criel .reveal { opacity: 1; transform: none; transition: none; }
  .villa-criel .vc-hero__bg { animation: none; transform: none; }
  .villa-criel .vc-hero__scroll i { animation: none; }
  html { scroll-behavior: auto; }
}

/* -------- 10. Lightbox --------------------------------------------------- */
.villa-criel .vc-lightbox {
  position: fixed; inset: 0; z-index: 1100;
  background: rgba(15,18,20,.94);
  display: none;
  align-items: center; justify-content: center;
  padding: 2rem;
  cursor: zoom-out;
}
.villa-criel .vc-lightbox.is-open { display: flex; }
.villa-criel .vc-lightbox img {
  max-width: 100%; max-height: 100%;
  object-fit: contain;
  box-shadow: 0 30px 80px rgba(0,0,0,.5);
  animation: vc-fadein .25s ease;
}
@keyframes vc-fadein { from { opacity: 0; transform: scale(.98);} to { opacity: 1; transform: none; } }
.villa-criel .vc-lightbox__close {
  position: absolute; top: 1.25rem; right: 1.25rem;
  background: none; border: 0; color: var(--vc-paper);
  font-size: 1.8rem; cursor: pointer; opacity: .8;
}
.villa-criel .vc-lightbox__close:hover { opacity: 1; }

/* Clickable gallery items */
.villa-criel [data-lightbox] { cursor: zoom-in; }

/* ==========================================================================
   v1.1 additions — language switcher, contact form, mobile refinements
   ========================================================================== */

/* -------- 11. Navigation right side (lang + CTA) ------------------------- */
.villa-criel .vc-nav__right {
	display: flex;
	align-items: center;
	gap: 1.25rem;
}

.villa-criel .vc-lang-switch {
	font-family: var(--vc-smcaps);
	font-size: .72rem;
	letter-spacing: .18em;
	text-transform: uppercase;
	font-weight: 500;
	text-decoration: none;
	color: var(--vc-ink);
	display: inline-flex;
	align-items: center;
	gap: .4rem;
	padding: .4rem .1rem;
	transition: color .25s;
	min-height: 44px;                     /* touch target */
}
.villa-criel .vc-lang-switch__current {
	color: var(--vc-terracotta);
	font-weight: 500;
}
.villa-criel .vc-lang-switch__sep {
	opacity: .45;
}
.villa-criel .vc-lang-switch__other {
	opacity: .7;
	transition: opacity .25s, color .25s;
}
.villa-criel .vc-lang-switch:hover .vc-lang-switch__other {
	opacity: 1;
	color: var(--vc-terracotta);
}
.villa-criel .vc-nav.is-transparent .vc-lang-switch {
	color: var(--vc-paper);
}
.villa-criel .vc-nav.is-transparent .vc-lang-switch__current {
	color: var(--vc-cream);
}

/* Mobile: keep lang switch + CTA visible, move other nav into toggleable menu */
@media (max-width: 960px) {
	.villa-criel .vc-nav__right {
		gap: .75rem;
	}
	.villa-criel .vc-nav.is-open .vc-nav__right {
		position: relative;                   /* keep lang switch visible above menu */
		z-index: 2;
	}
	.villa-criel .vc-nav__toggle {
		min-width: 44px;
		min-height: 44px;
		display: inline-flex;
		align-items: center;
		justify-content: center;
	}
}

/* -------- 12. Contact form ---------------------------------------------- */
.villa-criel .vc-form-wrap {
	text-align: left;
	margin: 0 auto 2.5rem;
}

.villa-criel .vc-alert {
	display: flex;
	align-items: center;
	gap: .75rem;
	padding: 1rem 1.25rem;
	border-radius: 2px;
	margin-bottom: 1.5rem;
	font-family: var(--vc-serif);
	font-size: 1.05rem;
	line-height: 1.5;
	text-align: left;
}
.villa-criel .vc-alert i {
	font-size: 1.3rem;
	flex-shrink: 0;
}
.villa-criel .vc-alert--success {
	background: #E8EFE0;
	color: var(--vc-moss-deep);
	border-left: 3px solid var(--vc-moss);
}
.villa-criel .vc-alert--error {
	background: #F2E0DC;
	color: var(--vc-terracotta-dark);
	border-left: 3px solid var(--vc-terracotta);
}

.villa-criel .vc-form {
	background: var(--vc-paper);
	border: 1px solid var(--vc-rule);
	padding: clamp(1.5rem, 3vw, 2.75rem);
	border-radius: 2px;
	box-shadow: 0 30px 60px -40px rgba(0,0,0,.18);
}

.villa-criel .vc-form__legend {
	font-family: var(--vc-display);
	color: var(--vc-ink);
	margin: 0 0 1.75rem;
	font-weight: 400;
	font-style: italic;
	font-variation-settings: "opsz" 48;
}

.villa-criel .vc-form__row {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 1.25rem;
	margin-bottom: 1.25rem;
}
@media (max-width: 600px) {
	.villa-criel .vc-form__row { grid-template-columns: 1fr; }
}

.villa-criel .vc-field {
	margin-bottom: 1.25rem;
	display: flex;
	flex-direction: column;
}

.villa-criel .vc-field label,
.villa-criel .vc-field legend {
	font-family: var(--vc-smcaps);
	font-size: .72rem;
	letter-spacing: .18em;
	text-transform: uppercase;
	color: var(--vc-moss-deep);
	font-weight: 500;
	margin-bottom: .5rem;
}
.villa-criel .vc-req {
	color: var(--vc-terracotta);
	margin-left: .25rem;
	font-weight: 400;
}
.villa-criel .vc-opt {
	color: var(--vc-ink-muted);
	font-weight: 400;
	text-transform: none;
	letter-spacing: .02em;
	font-family: var(--vc-serif);
	font-style: italic;
	font-size: .82rem;
	margin-left: .4rem;
}

.villa-criel .vc-form input[type="text"],
.villa-criel .vc-form input[type="email"],
.villa-criel .vc-form input[type="tel"],
.villa-criel .vc-form textarea {
	font-family: var(--vc-serif);
	font-size: 1.05rem;
	line-height: 1.5;
	color: var(--vc-ink);
	background: var(--vc-cream);
	border: 1px solid var(--vc-rule);
	padding: .85rem 1rem;
	border-radius: 2px;
	width: 100%;
	min-height: 48px;                     /* touch target */
	transition: border-color .2s, background .2s, box-shadow .2s;
	-webkit-appearance: none;
	appearance: none;
}
.villa-criel .vc-form textarea {
	resize: vertical;
	min-height: 8rem;
	line-height: 1.6;
}
.villa-criel .vc-form input:hover,
.villa-criel .vc-form textarea:hover {
	border-color: var(--vc-ink-muted);
}
.villa-criel .vc-form input:focus,
.villa-criel .vc-form textarea:focus {
	outline: none;
	border-color: var(--vc-terracotta);
	background: var(--vc-paper);
	box-shadow: 0 0 0 3px rgba(181,85,60,.15);
}
.villa-criel .vc-form input:invalid:not(:placeholder-shown),
.villa-criel .vc-form textarea:invalid:not(:placeholder-shown) {
	border-color: rgba(181,85,60,.5);
}

/* Radio group */
.villa-criel .vc-field--radios {
	border: 0;
	padding: 0;
	margin-bottom: 1.5rem;
}
.villa-criel .vc-radios {
	display: flex;
	flex-wrap: wrap;
	gap: .6rem;
}
.villa-criel .vc-radio {
	display: inline-flex;
	align-items: center;
	padding: .65rem 1rem;
	border: 1px solid var(--vc-rule);
	border-radius: 999px;
	background: var(--vc-cream);
	cursor: pointer;
	transition: border-color .2s, background .2s, color .2s;
	font-family: var(--vc-serif);
	font-size: .98rem;
	letter-spacing: 0;
	text-transform: none;
	color: var(--vc-ink-soft);
	margin: 0;
	min-height: 44px;
}
.villa-criel .vc-radio input {
	position: absolute;
	opacity: 0;
	pointer-events: none;
}
.villa-criel .vc-radio:hover {
	border-color: var(--vc-ink-muted);
}
.villa-criel .vc-radio:has(input:checked) {
	background: var(--vc-ink);
	color: var(--vc-paper);
	border-color: var(--vc-ink);
}
.villa-criel .vc-radio:has(input:focus-visible) {
	box-shadow: 0 0 0 3px rgba(181,85,60,.25);
}
.villa-criel .vc-radio span::before {
	content: "";
	display: inline-block;
	width: 8px; height: 8px;
	border-radius: 50%;
	background: var(--vc-terracotta);
	margin-right: .55rem;
	opacity: 0;
	transition: opacity .2s;
}
.villa-criel .vc-radio:has(input:checked) span::before {
	opacity: 1;
	background: var(--vc-gold);
}

/* Honeypot — hidden visually but not display:none (which bots skip) */
.villa-criel .vc-honeypot {
	position: absolute !important;
	left: -9999px !important;
	top: auto !important;
	width: 1px; height: 1px;
	overflow: hidden;
}

/* Submit button */
.villa-criel .vc-btn {
	font-family: var(--vc-smcaps);
	font-size: .78rem;
	letter-spacing: .2em;
	text-transform: uppercase;
	font-weight: 500;
	padding: 1.05rem 2rem;
	border: 0;
	border-radius: 999px;
	cursor: pointer;
	display: inline-flex;
	align-items: center;
	gap: .6rem;
	transition: transform .25s, box-shadow .25s, background .25s;
	min-height: 48px;
	position: relative;
}
.villa-criel .vc-btn--primary {
	background: var(--vc-ink);
	color: var(--vc-paper);
	box-shadow: 0 8px 20px -10px rgba(31,35,40,.5);
}
.villa-criel .vc-btn--primary:hover {
	background: var(--vc-terracotta);
	transform: translateY(-1px);
	box-shadow: 0 14px 28px -12px rgba(181,85,60,.5);
}
.villa-criel .vc-btn--primary:active {
	transform: translateY(0);
}
.villa-criel .vc-btn__icon {
	font-size: 1rem;
	transition: transform .25s;
}
.villa-criel .vc-btn:hover .vc-btn__icon {
	transform: translateX(3px);
}
.villa-criel .vc-btn__loading { display: none; }
.villa-criel .vc-btn.is-loading .vc-btn__label,
.villa-criel .vc-btn.is-loading .vc-btn__icon { display: none; }
.villa-criel .vc-btn.is-loading .vc-btn__loading {
	display: inline-flex;
	align-items: center;
	gap: .5rem;
}
.villa-criel .vc-btn.is-loading .vc-btn__loading::before {
	content: "";
	width: 14px; height: 14px;
	border: 2px solid rgba(251,248,241,.4);
	border-top-color: var(--vc-paper);
	border-radius: 50%;
	animation: vc-spin .7s linear infinite;
}
@keyframes vc-spin { to { transform: rotate(360deg); } }

.villa-criel .vc-form__privacy {
	margin: 1.5rem 0 0;
	font-family: var(--vc-serif);
	font-size: .88rem;
	color: var(--vc-ink-muted);
	display: flex;
	align-items: flex-start;
	gap: .5rem;
	font-style: italic;
	line-height: 1.5;
}
.villa-criel .vc-form__privacy i {
	color: var(--vc-moss);
	flex-shrink: 0;
	margin-top: 2px;
}

/* -------- 13. Footer additions ------------------------------------------ */
.villa-criel .vc-footer__line {
	margin-bottom: 1rem;
}
.villa-criel .vc-footer__alt a {
	font-family: var(--vc-smcaps);
	font-size: .72rem;
	letter-spacing: .22em;
	text-transform: uppercase;
	color: var(--vc-gold);
	text-decoration: none;
	display: inline-flex;
	align-items: center;
	gap: .15rem;
	padding: .5rem .5rem;
	transition: color .2s;
	min-height: 44px;
}
.villa-criel .vc-footer__alt a:hover {
	color: var(--vc-paper);
}

/* -------- 14. Mobile & tablet refinements ------------------------------- */

/* Skip link */
.villa-criel .vc-skip:focus {
	position: fixed;
	top: 1rem;
	left: 1rem;
	background: var(--vc-paper);
	color: var(--vc-ink);
	padding: .75rem 1.25rem;
	z-index: 9999;
	border-radius: 2px;
	box-shadow: 0 4px 12px rgba(0,0,0,.2);
	text-decoration: none;
	font-family: var(--vc-smcaps);
	font-size: .8rem;
	letter-spacing: .15em;
	text-transform: uppercase;
}

/* Hero on mobile: rethink the footer stack */
@media (max-width: 640px) {
	.villa-criel .vc-hero {
		min-height: 100svh;                 /* small-viewport units — avoids URL bar jump */
	}
	.villa-criel .vc-hero__content {
		padding-bottom: 6rem;
	}
	.villa-criel .vc-hero__eyebrow {
		letter-spacing: .2em;
		font-size: .72rem;
	}
	.villa-criel .vc-hero__eyebrow::before { width: 1.5rem; }
	.villa-criel .vc-hero__meta {
		font-size: 1.05rem;
	}
	.villa-criel .vc-hero__foot {
		flex-direction: column;
		align-items: flex-start;
		gap: 1.5rem;
	}
	.villa-criel .vc-price-stamp {
		padding: .9rem 1.3rem .85rem;
	}
	.villa-criel .vc-price-stamp__price {
		font-size: 1.55rem;
	}
	.villa-criel .vc-hero__scroll { align-self: flex-end; }
}

/* iPhone/tall phones: respect safe-area-inset */
@supports(padding: max(0px)) {
	.villa-criel .vc-nav__wrap {
		padding-left: max(1.5rem, env(safe-area-inset-left));
		padding-right: max(1.5rem, env(safe-area-inset-right));
	}
}

/* Nav mobile layout tweak */
@media (max-width: 960px) {
	.villa-criel .vc-nav__wrap {
		gap: 1rem;
	}
	.villa-criel .vc-nav.is-scrolled {
		padding: .5rem 0;
	}
}

/* Section headings responsive */
@media (max-width: 560px) {
	.villa-criel section {
		padding: 4rem 0;
	}
	.villa-criel .vc-section-head {
		margin-bottom: 2.25rem;
	}
	.villa-criel .h-display-lg {
		font-size: clamp(1.85rem, 9vw, 2.4rem);
	}
	.villa-criel .h-display-md {
		font-size: clamp(1.5rem, 7vw, 1.9rem);
	}
	.villa-criel .lede {
		font-size: 1.08rem;
	}
	.villa-criel p {
		font-size: 1.02rem;
	}
}

/* Editorial gallery: tighter gap on mobile + better proportions */
@media (max-width: 600px) {
	.villa-criel .vc-gallery-edit {
		gap: .6rem;
		grid-auto-rows: 32vw;
	}
}

/* Intro drop-cap smaller on mobile */
@media (max-width: 560px) {
	.villa-criel .vc-intro__text .drop::first-letter {
		font-size: 3.8em;
	}
}

/* Pull-quote tighter on mobile */
@media (max-width: 560px) {
	.villa-criel .vc-pullquote blockquote {
		font-size: 1.25rem;
	}
}

/* Feature layouts: remove outer padding on images for mobile so they read bigger */
@media (max-width: 640px) {
	.villa-criel .vc-feature { gap: 2rem; }
	.villa-criel .vc-feature__img {
		aspect-ratio: 4/3;
	}
	.villa-criel .vc-intro__img {
		max-width: 100%;
		width: 100%;
	}
}

/* Specs: softer padding on phones */
@media (max-width: 500px) {
	.villa-criel .vc-spec {
		padding: 1.5rem 1.25rem;
		min-height: 8rem;
	}
	.villa-criel .vc-spec__value {
		font-size: 1.25rem;
	}
}

/* Rooms wrap tidier */
@media (max-width: 560px) {
	.villa-criel .vc-rooms {
		font-size: .98rem;
		gap: .4rem 1rem;
		margin-top: 2rem;
		padding-top: 1.5rem;
	}
}

/* Contact cards */
@media (max-width: 560px) {
	.villa-criel .vc-contact__cards {
		gap: .75rem;
	}
	.villa-criel .vc-contact__card {
		padding: 1.75rem 1.25rem;
	}
	.villa-criel .vc-contact__card .value {
		font-size: 1.05rem;
	}
}

/* Form tweaks */
@media (max-width: 560px) {
	.villa-criel .vc-form {
		padding: 1.5rem 1.25rem;
	}
	.villa-criel .vc-btn--primary {
		width: 100%;
		justify-content: center;
	}
	.villa-criel .vc-radios {
		flex-direction: column;
		align-items: stretch;
	}
	.villa-criel .vc-radio {
		justify-content: flex-start;
	}
}

/* Focus-visible — accessibility */
.villa-criel :focus-visible {
	outline: 2px solid var(--vc-terracotta);
	outline-offset: 2px;
	border-radius: 2px;
}
.villa-criel .vc-nav a:focus-visible {
	outline-offset: 4px;
}
.villa-criel .vc-form input:focus-visible,
.villa-criel .vc-form textarea:focus-visible {
	outline: none;                        /* replaced by focus ring */
}
.villa-criel [data-lightbox]:focus-visible {
	outline-offset: 4px;
}

/* Reduced-motion extras */
@media (prefers-reduced-motion: reduce) {
	.villa-criel .vc-btn__loading::before { animation: none; }
}

/* Print — still readable if the agent prints the page */
@media print {
	.villa-criel .vc-nav,
	.villa-criel .vc-hero__scroll,
	.villa-criel .vc-lightbox,
	.villa-criel .vc-form,
	.villa-criel .vc-footer__alt { display: none !important; }
	.villa-criel body { background: white; color: black; }
	.villa-criel .vc-hero { min-height: auto; page-break-after: avoid; }
	.villa-criel section { page-break-inside: avoid; padding: 1.5rem 0; }
}
