
  :root{
    --cream:#FAF5EC;
    --sand:#E9DCC3;
    --navy:#1E3A4C;
    --brick:#A8462E;
    --sage:#77835F;
    --ink:#2B2620;
    --ink-soft:#5B5348;
  }
  *{margin:0;padding:0;box-sizing:border-box;}
  html{scroll-behavior:smooth;}
  body{
    background:var(--cream);
    color:var(--ink);
    font-family:'Work Sans', sans-serif;
    font-weight:400;
    line-height:1.6;
    overflow-x:hidden;
  }
  h1,h2,h3,.brand{
    font-family:'Fraunces', serif;
    font-weight:450;
    letter-spacing:-0.01em;
  }
  a{color:inherit;text-decoration:none;}
  img{max-width:100%;display:block;}

  /* ---- Nav ---- */
  header{
    position:fixed; top:0; left:0; right:0; z-index:50;
    display:flex; align-items:center; justify-content:space-between;
    padding:22px 6vw;
    background:rgba(250,245,236,0.86);
    backdrop-filter:blur(6px);
    border-bottom:1px solid rgba(43,38,32,0.08);
  }
  .brand{font-size:1.35rem; letter-spacing:0.02em;}
  nav a{
    margin-left:28px; font-size:0.92rem; color:var(--ink-soft);
    transition:color .2s;
  }
  nav a:hover{color:var(--brick);}
  .nav-toggle{display:none;}

  /* ---- Hero ---- */
  .hero{
    min-height:100vh;
    display:flex; flex-direction:column; justify-content:center;
    padding:120px 6vw 80px;
    position:relative;
  }
  .hero-eyebrow{
    font-size:0.82rem; letter-spacing:0.14em; text-transform:uppercase;
    color:var(--brick); margin-bottom:18px; font-weight:500;
  }
  .hero h1{
    font-size:clamp(2.6rem, 6vw, 5rem);
    max-width:14ch; line-height:1.02;
    font-weight:450;
  }
  .hero p{
    max-width:46ch; margin-top:26px; font-size:1.08rem; color:var(--ink-soft);
  }
  .hero-cta{
    margin-top:38px; display:inline-flex; align-items:center; gap:10px;
    padding:14px 26px; background:var(--navy); color:var(--cream);
    border-radius:2px; font-size:0.92rem; letter-spacing:0.02em;
    width:fit-content; transition:transform .25s, background .25s;
  }
  .hero-cta:hover{background:var(--brick); transform:translateY(-2px);}

  /* signature map motif */
  .route{
    position:absolute; right:6vw; top:50%; transform:translateY(-50%);
    width:min(38vw,420px);
  }
  .route svg{width:100%; height:auto;}
  .route-label{
    font-size:0.72rem; letter-spacing:0.08em; text-transform:uppercase;
    fill:var(--ink-soft); font-family:'Work Sans',sans-serif;
  }
  @media (max-width:880px){ .route{display:none;} }

  /* ---- Intro band ---- */
  .intro{
    padding:90px 6vw; max-width:820px;
    border-top:1px solid rgba(43,38,32,0.1);
  }
  .intro h2{font-size:clamp(1.6rem,3vw,2.1rem); font-weight:450; line-height:1.25;}
  .intro h2 em{font-style:italic; color:var(--brick);}

  /* ---- Property sections ---- */
  .property{
    padding:70px 6vw;
    display:grid; grid-template-columns:1fr 1fr; gap:64px;
    align-items:center;
    border-top:1px solid rgba(43,38,32,0.1);
  }
  .property.reverse .visual{order:2;}
  .property.reverse .content{order:1;}
  .visual{
    aspect-ratio:4/5; border-radius:2px; position:relative; overflow:hidden;
    display:flex; align-items:flex-end; padding:26px;
  }
  .visual span.tag{
    background:rgba(250,245,236,0.92); color:var(--ink);
    padding:7px 14px; font-size:0.78rem; letter-spacing:0.05em; text-transform:uppercase;
    border-radius:2px;
  }
  .v-deauville{background:linear-gradient(160deg,#C97B5E 0%, #A8462E 55%, #7C3A26 100%);}
  .v-marbella{background:linear-gradient(160deg,#9CAE85 0%, #77835F 55%, #4E5A3D 100%);}
  .v-trouville{background:linear-gradient(160deg,#3E5A6E 0%, #1E3A4C 55%, #122530 100%);}

  .content .eyebrow{
    font-size:0.8rem; letter-spacing:0.12em; text-transform:uppercase;
    color:var(--ink-soft); margin-bottom:10px;
  }
  .content h3{font-size:clamp(1.8rem,3vw,2.4rem); margin-bottom:6px;}
  .content .place{font-size:0.98rem; color:var(--brick); margin-bottom:20px; font-style:italic;}
  .content p{color:var(--ink-soft); margin-bottom:18px;}
  .facts{
    display:flex; flex-wrap:wrap; gap:10px; margin-bottom:24px;
  }
  .facts span{
    font-size:0.82rem; background:var(--sand); padding:7px 13px; border-radius:20px;
    color:var(--ink);
  }
  .property-cta{
    display:inline-block; font-size:0.9rem; padding:12px 22px;
    border:1px solid var(--ink); border-radius:2px; transition:all .2s;
  }
  .property-cta:hover{background:var(--ink); color:var(--cream);}

  /* ---- Contact ---- */
  .contact{
    padding:100px 6vw; border-top:1px solid rgba(43,38,32,0.1);
    background:var(--navy); color:var(--cream);
  }
  .contact-wrap{max-width:720px; margin:0 auto;}
  .contact h2{font-size:clamp(2rem,4vw,2.8rem); margin-bottom:14px;}
  .contact > .contact-wrap > p{color:#C9D3D9; max-width:52ch; margin-bottom:44px;}
  form{display:grid; gap:20px;}
  .row{display:grid; grid-template-columns:1fr 1fr; gap:20px;}
  @media (max-width:640px){ .row{grid-template-columns:1fr;} .property{grid-template-columns:1fr; gap:32px;} .property.reverse .visual{order:1;} .property.reverse .content{order:2;} }
  label{font-size:0.8rem; letter-spacing:0.05em; text-transform:uppercase; color:#AEBBC2; display:block; margin-bottom:8px;}
  input, select, textarea{
    width:100%; background:transparent; border:none; border-bottom:1px solid rgba(255,255,255,0.35);
    color:var(--cream); font-family:'Work Sans',sans-serif; font-size:1rem; padding:10px 2px;
    transition:border-color .2s;
  }
  input:focus, select:focus, textarea:focus{outline:none; border-bottom-color:var(--cream);}
  select option{color:var(--ink);}
  textarea{resize:vertical; min-height:90px;}
  .submit-btn{
    margin-top:10px; justify-self:start;
    padding:15px 32px; background:var(--brick); color:var(--cream);
    border:none; border-radius:2px; font-family:'Work Sans',sans-serif; font-size:0.95rem;
    letter-spacing:0.02em; cursor:pointer; transition:background .2s, transform .2s;
  }
  .submit-btn:hover{background:#C4573A; transform:translateY(-2px);}
  .form-note{font-size:0.8rem; color:#93A2AA; margin-top:6px;}

  footer{
    padding:36px 6vw; text-align:center; font-size:0.82rem; color:var(--ink-soft);
  }

  @media (prefers-reduced-motion: reduce){
    html{scroll-behavior:auto;}
    *{transition:none !important;}
  }

html{scroll-padding-top:110px}a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--brick);outline-offset:5px}button,input,select,textarea{font:inherit}.language{border:1px solid var(--sand);padding:7px 10px}.nav-toggle{background:none;border:1px solid var(--sand);color:var(--ink);padding:9px 12px}.property h2{font-size:clamp(1.8rem,3vw,2.4rem);margin-bottom:8px}.visual{min-height:320px}.visual:before{content:'';position:absolute;width:70%;height:70%;border:1px solid #ffffff40;border-radius:50% 50% 0 0;top:15%;left:15%}.visual .visual-label{position:absolute;top:42%;left:12%;right:12%;text-align:center;font:2.2rem Fraunces,serif;color:var(--cream)}.transport,.faq{padding:70px 6vw;border-top:1px solid #2b26201a}.transport h2,.faq h2{font-size:clamp(1.8rem,3vw,2.6rem);margin-bottom:20px}.transport-grid{display:grid;grid-template-columns:1fr 1fr;gap:28px}.transport article{background:#e9dcc370;padding:28px}.transport h3{font-size:1.5rem;margin-bottom:15px}.transport p{margin:12px 0;color:var(--ink-soft)}.transport a,.faq a,.contact-links a{text-decoration:underline}.transport-note{font-size:.82rem}.faq{max-width:1000px;margin:auto}details{padding:20px 0;border-bottom:1px solid #2b262020}summary{cursor:pointer;font-weight:500}details p{margin-top:15px;color:var(--ink-soft)}.contact-links{margin-bottom:25px;display:flex;flex-wrap:wrap;gap:20px}.result{border:1px solid #ffffff40;padding:22px;margin-top:20px}.result[hidden]{display:none}.result textarea{min-height:230px;resize:vertical}.form-note{line-height:1.7}.copy-btn{background:none;border:1px solid #ffffff70;padding:12px 20px;color:var(--cream);cursor:pointer}.result-actions{display:flex;gap:14px;flex-wrap:wrap;margin-top:15px}.result-actions a{background:var(--brick);padding:12px 20px}.contact input{color-scheme:dark}footer a{margin:0 10px;text-decoration:underline}.rules{border-left:3px solid var(--brick);padding:14px 18px;background:#ffffff0a;margin-bottom:25px}.arrival-info{font-size:.85rem}.skip-link{position:absolute;left:10px;top:-80px;background:var(--cream);padding:12px;z-index:100}.skip-link:focus{top:10px}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}@media(max-width:880px){.hero{min-height:75vh}.property{gap:30px}}@media(max-width:700px){header{padding:16px 5vw;flex-wrap:wrap}.nav-toggle{display:block}header nav{display:none;width:100%;padding-top:20px}header nav.open{display:flex;flex-wrap:wrap;gap:18px}nav a{margin:0}.hero{padding:120px 6vw 60px;min-height:650px}.transport-grid{grid-template-columns:1fr}.property{grid-template-columns:1fr}.property.reverse .visual{order:1}.property.reverse .content{order:2}.visual{aspect-ratio:4/3}.contact{padding:65px 6vw}.intro{padding:60px 6vw}.transport,.faq{padding:55px 6vw}}
.villa-visual{min-width:0}.villa-open{display:block;position:relative;width:100%;padding:0;border:0;background:none;cursor:pointer}.villa-open>img{width:100%;aspect-ratio:4/5;object-fit:cover}.villa-open>span{position:absolute;bottom:25px;left:25px;background:var(--cream);padding:12px 18px;color:var(--ink)}.villa-info{font-size:.87rem;margin:15px 0 24px}.villa-map{grid-column:1/-1}.villa-map iframe{width:100%;height:330px;border:0}#villa-gallery{margin:auto;max-width:850px;width:92vw;max-height:94vh;overflow:auto;background:var(--cream);color:var(--ink);border:0;padding:22px}#villa-gallery::backdrop{background:#152b37c4}#villa-close{display:block;margin-left:auto;background:none;border:0;font-size:30px;cursor:pointer}#villa-photo{height:55vh;width:100%;object-fit:contain;background:#e9dcc366}.villa-controls{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:12px 0}.villa-controls button{background:none;border:1px solid var(--sand);padding:8px 15px;cursor:pointer}.villa-controls p{font-size:13px}.villa-thumbs{display:flex;gap:8px;overflow:auto;padding-bottom:10px}.villa-thumbs button{flex:0 0 70px;border:2px solid transparent;padding:2px;background:none;cursor:pointer}.villa-thumbs button[aria-pressed="true"]{border-color:var(--brick)}.villa-thumbs img{width:100%;height:60px;object-fit:cover}@media(max-width:700px){.villa-open>img{aspect-ratio:4/3}#villa-photo{height:45vh}}
.villa-open>img{aspect-ratio:4/3;object-fit:cover}

.brand{font-size:clamp(17px,2.1vw,26px)}.detail-link{display:block;margin:24px 0 12px;color:var(--brick,#A8462E);text-underline-offset:5px}.detail-intro{max-width:1100px;margin:auto;padding:90px 6vw 65px}.detail-intro h1{font-family:Fraunces,serif;font-size:clamp(36px,5vw,65px);line-height:1.15;font-weight:400;margin:22px 0}.detail-intro>p:last-child{max-width:760px;font-size:18px;line-height:1.8}.related{padding:60px 8vw}.related a{display:block;margin:18px 0}.detail-intro .eyebrow{margin-top:35px}@media(max-width:700px){.brand{max-width:220px}.detail-intro{padding-top:55px}}
