:root {
    --black:    #f7f4ee;
    --dark:     #ede9e1;
    --dark-2:   #e4e0d7;
    --dark-3:   #d8d4cb;
    --gold:     #929090;
    --gold-l:   #aeacac;
    --gold-d:   #6e6a6a;
    --white:    #1a1714;
    --white-2:  #4a4540;
    --gray:     rgba(26,23,20,.42);
    --serif:    'Cormorant Garamond', Georgia, serif;
    --sans:     'Montserrat', Arial, sans-serif;
    --ease:     0.65s cubic-bezier(.25,.46,.45,.94);
    --fast:     0.3s ease;
}

*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

html { scroll-behavior: smooth; font-size: 16px; }

body {
    background: var(--black);
    color: var(--white);
    font-family: var(--sans);
    font-weight: 300;
    line-height: 1.7;
    overflow-x: hidden;
    cursor: none;
}

::selection { background: var(--gold); color: var(--black); }
img { display: block; width: 100%; height: 100%; object-fit: cover; }
a   { text-decoration: none; color: inherit; }

/* ── CURSOR ───────────────────────────────── */
.cur {
    position: fixed;
    pointer-events: none;
    z-index: 10000;
    border-radius: 50%;
    transform: translate(-50%,-50%);
}
.cur-dot  { width:6px;  height:6px;  background:var(--gold); transition: transform .1s; }
.cur-ring { width:38px; height:38px; border:1px solid var(--gold); opacity:.55; transition: all .15s ease; }

/* ── PRELOADER ────────────────────────────── */
#preloader {
    position: fixed; inset: 0;
    background: var(--black);
    z-index: 9999;
    display: flex; flex-direction: column;
    align-items: center; justify-content: center;
    gap: 1.8rem;
}
.pre-logo {
    font-family: var(--serif);
    font-size: clamp(2rem,5vw,3.8rem);
    font-weight: 300; letter-spacing: .5em;
    color: var(--gold);
    opacity: 0; transform: translateY(18px);
    animation: fadeUp 1s ease forwards .3s;
}
.pre-line {
    width: 0; height: 1px;
    background: linear-gradient(90deg, transparent, var(--gold), transparent);
    animation: growLine 1.1s ease forwards .85s;
}
.pre-sub {
    font-size: .62rem; letter-spacing: .4em; text-transform: uppercase;
    color: var(--gray);
    opacity: 0;
    animation: fadeUp .8s ease forwards 1.25s;
}
@keyframes fadeUp  { to { opacity:1; transform:translateY(0); } }
@keyframes growLine{ to { width:200px; } }

/* ── NAV ─────────────────────────────────── */
.nav {
    position: fixed; top: 0; left: 0; right: 0;
    z-index: 1000;
    padding: 2rem 4rem;
    display: flex; align-items: center; justify-content: space-between;
    transition: var(--ease);
}
.nav.sc {
    padding: 1.1rem 4rem;
    background: rgba(247,244,238,.96);
    backdrop-filter: blur(22px);
    border-bottom: 1px solid rgba(184,146,74,.18);
}
.nav-logo {
    font-family: var(--serif);
    font-size: 1.35rem; font-weight: 400;
    letter-spacing: .3em; color: var(--gold);
}
.nav-logo b { font-weight: 600; }
.nav-links { display:flex; list-style:none; gap:3rem; align-items:center; }
.nav-links > li > a {
    font-size: .68rem; letter-spacing: .2em; text-transform: uppercase;
    color: var(--white-2); position: relative; transition: color var(--fast);
}
.nav-links > li > a::after {
    content:''; position:absolute; bottom:-4px; left:0;
    width:0; height:1px; background:var(--gold);
    transition: width var(--fast);
}
.nav-links > li > a:hover { color:var(--gold); }
.nav-links > li > a:hover::after { width:100%; }
/* White text when floating over the dark hero photo */
.nav:not(.sc) .nav-links > li > a { color: rgba(255,255,255,.82); }
.nav-cta {
    font-size:.63rem; letter-spacing:.25em; text-transform:uppercase;
    padding:.7rem 1.8rem;
    border:1px solid var(--gold); color:var(--gold);
    transition: all var(--fast);
}
.nav-cta:hover { background:var(--gold); color:var(--black); }
.nav-burger {
    display:none; flex-direction:column; gap:6px; cursor:pointer;
}
.nav-burger span { display:block; width:28px; height:1px; background:var(--gold); transition:var(--fast); }

/* ── MOBILE NAV ───────────────────────────── */
.mob-nav {
    display:none; position:fixed; inset:0;
    background:var(--black); z-index:999;
    flex-direction:column; align-items:center; justify-content:flex-start;
    gap:0;
    overflow-y:auto; overflow-x:hidden;
    padding:5rem 2rem 3rem;
    -webkit-overflow-scrolling:touch;
}
.mob-nav.open { display:flex; }
.mob-nav a {
    font-family:var(--serif); font-size:2.4rem; font-weight:300;
    letter-spacing:.08em; transition: color var(--fast);
}
.mob-nav > a:not(.mob-svc-link) { padding:.8rem 0; }
.mob-nav a:hover { color:var(--gold); }

/* ── HERO ─────────────────────────────────── */
.hero {
    position:relative; height:100vh; min-height:680px;
    display:flex; align-items:flex-end; overflow:hidden;
}
.hero-bg { position:absolute; inset:0; z-index:0; }
.hero-bg img { transition: transform 8s ease; transform-origin:center; }
.hero-bg-ov {
    position:absolute; inset:0;
    background: linear-gradient(
        to bottom,
        rgba(5,5,5,.15) 0%,
        rgba(5,5,5,.05) 40%,
        rgba(5,5,5,.72) 78%,
        rgba(5,5,5,.97) 100%
    );
}
.hero-content {
    position:relative; z-index:1;
    padding: 0 4rem 7rem;
    max-width:900px;
}
.hero-label {
    font-size:.63rem; letter-spacing:.45em; text-transform:uppercase;
    color:var(--gold); margin-bottom:1.5rem;
    display:flex; align-items:center; gap:1rem;
    opacity:0; transform:translateY(18px);
}
.hero-label::before { content:''; display:block; width:38px; height:1px; background:var(--gold); }
.hero-title {
    font-family:var(--serif);
    font-size:clamp(3.5rem,7.5vw,7.5rem);
    font-weight:300; line-height:1.04; letter-spacing:.02em;
    margin-bottom:2rem;
    color:#f7f4ee;
    text-shadow:0 2px 26px rgba(5,5,5,.55), 0 1px 3px rgba(5,5,5,.35);
    opacity:0; transform:translateY(28px);
}
.hero-title em { font-style:italic; color:var(--gold-l); }
.hero-sub {
    font-size:.8rem; letter-spacing:.13em;
    color:rgba(245,244,240,.58); max-width:420px;
    margin-bottom:3rem;
    opacity:0; transform:translateY(18px);
}
.hero-ctas {
    display:flex; gap:1.5rem; align-items:center;
    opacity:0; transform:translateY(18px);
}
.btn-gold {
    display:inline-block;
    font-size:.63rem; letter-spacing:.3em; text-transform:uppercase;
    padding:1.1rem 3rem; background:var(--gold); color:var(--black);
    font-weight:500; transition: all var(--fast);
}
.btn-gold:hover { background:var(--gold-l); transform:translateY(-2px); }
.btn-ghost {
    display:inline-flex; align-items:center; gap:.8rem;
    font-size:.63rem; letter-spacing:.25em; text-transform:uppercase;
    color:var(--white-2); transition: color var(--fast);
}
.btn-ghost svg {
    width:32px; height:32px;
    border:1px solid rgba(74,69,64,.3); border-radius:50%;
    padding:7px; transition: all var(--fast);
}
.btn-ghost:hover { color:var(--gold); }
.btn-ghost:hover svg { border-color:var(--gold); transform:translateX(4px); }
/* Keep hero ghost button white — it sits over a dark photo */
.hero .btn-ghost { color: rgba(255,255,255,.82); }
.hero .btn-ghost svg { border-color: rgba(255,255,255,.32); }
.hero-scroll {
    position:absolute; bottom:3rem; right:4rem;
    display:flex; flex-direction:column; align-items:center; gap:.7rem;
    opacity:0;
}
.hero-scroll span {
    font-size:.58rem; letter-spacing:.3em; text-transform:uppercase;
    color: rgba(255,255,255,.5); writing-mode:vertical-rl;
}
.hero-scroll-line {
    width:1px; height:58px;
    background:linear-gradient(to bottom, transparent, var(--gold));
    animation: scrollPulse 2s ease-in-out infinite;
}
@keyframes scrollPulse {
    0%,100% { opacity:.3; transform:scaleY(.5) translateY(-8px); }
    50%      { opacity:1;  transform:scaleY(1) translateY(0); }
}

/* ── REVEAL ───────────────────────────────── */
.rv {
    opacity:0; transform:translateY(36px);
    transition: opacity .85s ease, transform .85s ease;
}
.rv.on  { opacity:1; transform:translateY(0); }
.rv.d1  { transition-delay:.1s; }
.rv.d2  { transition-delay:.2s; }
.rv.d3  { transition-delay:.3s; }
.rv.d4  { transition-delay:.4s; }

/* ── SECTION COMMONS ──────────────────────── */
section { overflow:hidden; }
.s-label {
    font-size:.6rem; letter-spacing:.45em; text-transform:uppercase;
    color:var(--gold); display:flex; align-items:center; gap:1rem;
    margin-bottom:1.1rem;
}
.s-label::before { content:''; display:block; width:28px; height:1px; background:var(--gold); }
.s-title {
    font-family:var(--serif);
    font-size:clamp(2.4rem,4vw,4rem);
    font-weight:300; line-height:1.1; letter-spacing:.02em;
}
.s-title em { font-style:italic; color:var(--gold); }
.s-divider { width:58px; height:1px; background:var(--gold); margin:2rem 0; }

/* ── PHILOSOPHY ───────────────────────────── */
.philosophy {
    padding:10rem 4rem;
    display:grid; grid-template-columns:1fr 2fr; gap:5rem; align-items:center;
    background:var(--black);
}
.phil-num {
    font-family:var(--serif); font-size:14rem; font-weight:300;
    line-height:.8; color:rgba(184,146,74,.13);
}
.phil-quote {
    font-family:var(--serif);
    font-size:clamp(1.55rem,2.4vw,2.3rem);
    font-weight:300; line-height:1.45; letter-spacing:.02em;
    margin-bottom:2.5rem;
}
.phil-quote em { font-style:italic; color:var(--gold); }
.phil-text {
    font-size:.83rem; color:rgba(26,23,20,.55);
    line-height:1.95; max-width:620px;
}
.phil-text + .phil-text { margin-top:1.15rem; }
.phil-welcome {
    font-family:var(--serif);
    font-size:1.1rem; font-weight:300; font-style:italic;
    color:var(--gold); letter-spacing:.02em;
    margin-top:2rem;
}

/* ── SERVICES ─────────────────────────────── */
.services { padding:6rem 4rem 10rem; background:var(--dark); }
.svc-head {
    display:flex; justify-content:space-between; align-items:flex-end;
    margin-bottom:5rem;
}
.svc-grid { display:flex; flex-direction:column; }

.svc-card {
    display:flex; flex-direction:row; height:520px;
    overflow:hidden; cursor:none; user-select:none;
    border-bottom:1px solid rgba(184,146,74,.13);
}
.svc-card:last-child { border-bottom:none; }
.svc-card:nth-child(even) { flex-direction:row-reverse; }

.svc-img-wrap {
    flex:0 0 62%; position:relative; overflow:hidden;
}
.svc-card-img {
    position:absolute; inset:0;
    transition: transform .85s cubic-bezier(.25,.46,.45,.94);
}
.svc-card:hover .svc-card-img { transform:scale(1.05); }
.svc-card-ov {
    position:absolute; inset:0;
    background:linear-gradient(to right,rgba(5,5,5,.28) 0%,transparent 55%);
    transition: background var(--fast);
}
.svc-card:nth-child(even) .svc-card-ov {
    background:linear-gradient(to left,rgba(5,5,5,.28) 0%,transparent 55%);
}

.svc-card-body {
    flex:1; display:flex; flex-direction:column; justify-content:center;
    padding:3.5rem 5rem; background:var(--dark);
    border-left:1px solid rgba(184,146,74,.13);
}
.svc-card:nth-child(even) .svc-card-body { border-left:none; border-right:1px solid rgba(184,146,74,.13); }

.svc-num { font-family:var(--serif); font-size:1rem; color:var(--gold); opacity:.55; margin-bottom:.5rem; }
.svc-name { font-family:var(--serif); font-size:2.2rem; font-weight:300; letter-spacing:.04em; margin-bottom:1.2rem; color:var(--white); }
.svc-desc {
    font-size:.8rem; color:var(--gray); line-height:1.9; margin-bottom:2rem;
}
.svc-link {
    display:inline-flex; align-items:center; gap:.5rem;
    font-size:.58rem; letter-spacing:.3em; text-transform:uppercase;
    color:var(--gold);
    transition: gap var(--fast);
}
.svc-link::after { content:'→'; font-size:.9rem; }
.svc-card:hover .svc-link { gap:.9rem; }

/* ── VILLAS ───────────────────────────────── */
.villas { padding:10rem 4rem; background:var(--black); }
.vil-card { position:relative; overflow:hidden; cursor:none; }
.vil-card:nth-child(1) { grid-row:span 2; height:710px; }
.vil-card:nth-child(2),
.vil-card:nth-child(3) { height:354px; }
.vil-card:hover .vil-card-img { transform:scale(1.05); }

/* ── STATS ────────────────────────────────── */
.stats {
    padding:7rem 4rem;
    background:var(--dark-2);
    display:grid; grid-template-columns:repeat(4,1fr); gap:2px;
}
.stat {
    padding:4rem 3rem;
    border-right:1px solid rgba(184,146,74,.22);
    text-align:center;
}
.stat:last-child { border-right:none; }
.stat-n {
    font-family:var(--serif);
    font-size:clamp(3rem,4vw,5rem);
    font-weight:300; color:var(--gold); line-height:1;
    margin-bottom:.5rem;
}
.stat-l { font-size:.63rem; letter-spacing:.28em; text-transform:uppercase; color:rgba(26,23,20,.5); }

/* ── FLEET ────────────────────────────────── */
.fleet { padding:10rem 0 10rem 4rem; background:var(--black); overflow:hidden; }
.car { flex:0 0 420px; height:520px; position:relative; overflow:hidden; }
.car:hover .car-img { transform:scale(1.05); }

/* ── EXPERIENCE ───────────────────────────── */
.exp {
    padding:10rem 4rem;
    background:var(--dark);
    display:grid; grid-template-columns:1fr 1fr; gap:8rem; align-items:center;
}
.exp-vis { position:relative; }
.exp-main { height:600px; overflow:hidden; position:relative; }
.exp-accent {
    position:absolute; width:55%; height:290px;
    bottom:-3.5rem; right:-3rem; overflow:hidden;
    border:3px solid var(--dark);
}
.exp-features { display:flex; flex-direction:column; gap:2.5rem; margin-top:3.5rem; }
.feature {
    display:flex; gap:1.8rem; align-items:flex-start;
    padding-bottom:2.5rem;
    border-bottom:1px solid rgba(184,146,74,.22);
}
.feature:last-child { border-bottom:none; padding-bottom:0; }
.feat-icon {
    width:46px; height:46px; flex-shrink:0;
    border:1px solid rgba(201,169,110,.28);
    display:flex; align-items:center; justify-content:center;
}
.feat-icon svg { width:18px; height:18px; stroke:var(--gold); fill:none; stroke-width:1.5; stroke-linecap:round; stroke-linejoin:round; }
.feat-title { font-family:var(--serif); font-size:1.18rem; font-weight:400; margin-bottom:.3rem; }
.feat-desc { font-size:.77rem; color:rgba(26,23,20,.58); line-height:1.85; }

/* ── TESTIMONIALS ─────────────────────────── */
.testi { padding:10rem 4rem; background:var(--black); }
.testi-head { text-align:center; margin-bottom:6rem; }
.testi-head .s-label { justify-content:center; }
.testi-head .s-label::before { display:none; }
.testi-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:2px; }
.testi-card {
    background:var(--dark-2); padding:3.5rem;
    transition: background var(--fast);
}
.testi-card:hover { background:var(--dark-3); }
.stars { display:flex; gap:4px; margin-bottom:1.4rem; }
.stars span { color:var(--gold); font-size:.9rem; }
.testi-q {
    font-family:var(--serif); font-size:1.1rem; font-weight:300;
    font-style:italic; line-height:1.65; color:var(--white-2);
    margin-bottom:2.5rem;
}
.testi-q::before {
    content:'"'; font-size:3rem; color:var(--gold); opacity:.28;
    line-height:0; display:block; margin-bottom:.9rem;
}
.testi-author { display:flex; align-items:center; gap:1rem; }
.testi-av { width:44px; height:44px; border-radius:50%; overflow:hidden; border:1px solid rgba(201,169,110,.28); }
.testi-name { font-size:.77rem; font-weight:500; letter-spacing:.04em; margin-bottom:.18rem; }
.testi-loc  { font-size:.63rem; color:var(--gold); letter-spacing:.13em; }

/* ── BOOKING ──────────────────────────────── */
.booking {
    padding:10rem 4rem;
    background:var(--dark-2);
    position:relative; overflow:hidden;
}
.booking::before {
    content:'RÉSERVER';
    position:absolute;
    font-family:var(--serif); font-size:20vw; font-weight:300;
    color:rgba(184,146,74,.07);
    top:50%; left:50%; transform:translate(-50%,-50%);
    white-space:nowrap; pointer-events:none;
}
.book-inner {
    position:relative; z-index:1;
    max-width:900px; margin:0 auto; text-align:center;
}
.book-title {
    font-family:var(--serif);
    font-size:clamp(2.5rem,5vw,5rem);
    font-weight:300; line-height:1.1; margin-bottom:1.4rem;
}
.book-title em { font-style:italic; color:var(--gold); }
.book-sub {
    font-size:.83rem; color:rgba(26,23,20,.58);
    line-height:1.9; margin-bottom:4rem;
    max-width:480px; margin-left:auto; margin-right:auto;
}
.book-form {
    display:grid; grid-template-columns:repeat(3,1fr); gap:2px;
    margin-bottom:2px;
}
.f-field {
    background:rgba(0,0,0,.03);
    border:1px solid rgba(184,146,74,.25);
    padding:1.4rem 1.7rem;
    display:flex; flex-direction:column; gap:.35rem;
    transition: border-color var(--fast);
}
.f-field:focus-within { border-color:var(--gold); }
.f-label { font-size:.57rem; letter-spacing:.3em; text-transform:uppercase; color:var(--gold); }
.f-input {
    background:none; border:none; outline:none;
    color:var(--white); font-family:var(--sans);
    font-size:.88rem; font-weight:300;
}
.f-input::placeholder { color:rgba(26,23,20,.32); }
.f-input option { background:var(--dark-3); color:var(--white); }
.f-submit {
    grid-column:span 3;
    background:var(--gold); border:none;
    color:var(--black); font-family:var(--sans);
    font-size:.63rem; letter-spacing:.38em; text-transform:uppercase;
    font-weight:600; padding:1.75rem;
    cursor:pointer; width:100%; transition: all var(--fast);
}
.f-submit:hover { background:var(--gold-l); }
.book-contacts {
    margin-top:4rem;
    display:flex; justify-content:center; gap:4rem;
}
.book-contact { text-align:center; }
.bc-label { font-size:.58rem; letter-spacing:.28em; text-transform:uppercase; color:var(--gold); margin-bottom:.35rem; }
.bc-val { display:inline-block; font-family:var(--serif); font-size:1.08rem; font-weight:300; color:inherit; transition:color var(--fast); }
a.bc-val:hover { color:var(--gold); }

/* ── FOOTER ───────────────────────────────── */
footer {
    background:var(--black);
    padding:6rem 4rem 3rem;
    border-top:1px solid rgba(184,146,74,.2);
}
.ft-top {
    display:grid; grid-template-columns:2fr 1fr 1fr 1fr; gap:4rem;
    padding-bottom:5rem;
    border-bottom:1px solid rgba(26,23,20,.12);
    margin-bottom:3rem;
}
.ft-logo {
    font-family:var(--serif); font-size:1.9rem; font-weight:300;
    letter-spacing:.2em; color:var(--gold); margin-bottom:1.4rem;
}
.ft-tag { font-size:.78rem; color:rgba(26,23,20,.52); line-height:1.9; max-width:290px; margin-bottom:2rem; }
.ft-socials { display:flex; gap:.8rem; }
.ft-soc {
    width:40px; height:40px;
    border:1px solid rgba(201,169,110,.2);
    display:flex; align-items:center; justify-content:center;
    font-size:.68rem; color:var(--gray); transition: all var(--fast);
}
.ft-soc:hover { border-color:var(--gold); color:var(--gold); }
.ft-soc svg { width:16px; height:16px; fill:currentColor; }
.ft-col-t { font-size:.63rem; letter-spacing:.28em; text-transform:uppercase; color:var(--gold); margin-bottom:1.8rem; }
.ft-links { list-style:none; display:flex; flex-direction:column; gap:.85rem; }
.ft-links a { font-size:.78rem; color:rgba(26,23,20,.52); transition:color var(--fast); }
.ft-links a:hover { color:var(--gold); }
.ft-bot { display:flex; justify-content:space-between; align-items:center; }
.ft-copy { font-size:.63rem; color:rgba(26,23,20,.38); letter-spacing:.08em; }
.ft-legal { display:flex; gap:2rem; }
.ft-legal a { font-size:.63rem; color:rgba(26,23,20,.38); transition:color var(--fast); }
.ft-legal a:hover { color:var(--gold); }

/* ── WHATSAPP FLOTANTE ────────────────────────── */
.wa-btn {
    position:fixed; bottom:2.5rem; right:2.5rem; z-index:900;
    display:flex; flex-direction:column; align-items:flex-end; gap:.75rem;
    text-decoration:none;
}
.wa-tip {
    background:rgba(247,244,238,.97);
    backdrop-filter:blur(14px);
    border:1px solid rgba(184,146,74,.28);
    color:var(--white);
    font-size:.58rem; letter-spacing:.22em; text-transform:uppercase;
    padding:.65rem 1.15rem; white-space:nowrap;
    opacity:0; transform:translateY(6px);
    transition:opacity .3s ease, transform .3s ease;
    pointer-events:none;
}
.wa-btn:hover .wa-tip { opacity:1; transform:translateY(0); }
.wa-bubble {
    width:58px; height:58px;
    background:var(--white);
    border:1px solid rgba(184,146,74,.5);
    border-radius:50%;
    display:flex; align-items:center; justify-content:center;
    position:relative;
    transition:all var(--fast);
    box-shadow:0 6px 28px rgba(0,0,0,.14);
}
.wa-bubble::after {
    content:''; position:absolute; inset:-6px;
    border-radius:50%;
    border:1px solid rgba(184,146,74,.35);
    animation:waPulse 2.6s ease-in-out infinite;
}
@keyframes waPulse {
    0%   { transform:scale(1);    opacity:.7; }
    70%  { transform:scale(1.18); opacity:0; }
    100% { transform:scale(1.18); opacity:0; }
}
.wa-bubble svg { width:26px; height:26px; fill:var(--gold); transition:fill var(--fast); }
.wa-btn:hover .wa-bubble { background:var(--gold); border-color:var(--gold-d); }
.wa-btn:hover .wa-bubble svg { fill:var(--black); }
.wa-btn:hover .wa-bubble::after { animation:none; opacity:0; }
@media(max-width:600px){
    .wa-btn { bottom:1.5rem; right:1.5rem; }
    .wa-tip { display:none; }
}

/* ── SERVICE MODAL ───────────────────────────── */
.svc-modal {
    position:fixed; inset:0; z-index:3000;
    background:rgba(8,6,5,.97);
    display:flex; flex-direction:column;
    opacity:0; pointer-events:none;
    transition:opacity .42s ease;
    overflow-y:auto;
}
.svc-modal.open { opacity:1; pointer-events:all; }
.sm-close {
    width:38px; height:38px;
    border:1px solid rgba(184,146,74,.28); background:none; cursor:pointer;
    display:flex; align-items:center; justify-content:center;
    position:relative; transition:border-color var(--fast);
}
.sm-close:hover { border-color:var(--gold); }
.sm-close span { position:absolute; width:13px; height:1px; background:rgba(245,244,240,.6); transition:background var(--fast); }
.sm-close span:first-child { transform:rotate(45deg); }
.sm-close span:last-child  { transform:rotate(-45deg); }
.sm-close:hover span { background:var(--gold); }

.sm-body {
    flex:1; padding:5rem 4rem 6rem;
    display:grid; grid-template-columns:1.3fr 1fr; gap:5rem;
    align-items:start; max-width:1440px; margin:0 auto; width:100%;
}
.sm-main-img { position:relative; height:580px; overflow:hidden; }
.sm-main-img img { width:100%; height:100%; object-fit:cover; transition:opacity .3s ease; }
.sm-arrow {
    position:absolute; top:50%; transform:translateY(-50%);
    background:rgba(8,6,5,.52); border:1px solid rgba(184,146,74,.22);
    width:46px; height:46px;
    display:flex; align-items:center; justify-content:center;
    cursor:pointer; transition:all var(--fast);
}
.sm-arrow:hover { background:var(--gold); border-color:var(--gold); }
.sm-arrow svg { width:15px; height:15px; stroke:rgba(245,244,240,.78); fill:none; stroke-width:1.5; }
.sm-arrow:hover svg { stroke:#f7f4ee; }
.sm-prev { left:1rem; } .sm-next { right:1rem; }
.sm-thumbs { display:flex; gap:3px; margin-top:3px; }
.sm-thumb {
    flex:1; height:70px; overflow:hidden; cursor:pointer;
    opacity:.38; border:1px solid transparent; transition:opacity var(--fast), border-color var(--fast);
}
.sm-thumb.active, .sm-thumb:hover { opacity:1; border-color:var(--gold); }
.sm-thumb img { width:100%; height:100%; object-fit:cover; }
.sm-title {
    font-family:var(--serif); font-size:clamp(1.9rem,3.2vw,3rem);
    font-weight:300; color:rgba(245,244,240,.92); line-height:1.08;
    margin-bottom:1.4rem; letter-spacing:.02em;
}
.sm-divider { width:38px; height:1px; background:var(--gold); margin-bottom:2rem; }
.sm-desc { font-size:.82rem; line-height:2; color:rgba(245,244,240,.48); margin-bottom:2.5rem; }
.sm-price {
    font-family:var(--serif); font-size:1.2rem;
    color:var(--gold); font-weight:300; margin-bottom:3rem;
    display:flex; align-items:center; gap:.85rem;
}
.sm-price::before { content:''; display:block; width:20px; height:1px; background:var(--gold); }
.sm-actions { display:flex; gap:.9rem; flex-wrap:wrap; }
.sm-pdf {
    display:inline-flex; align-items:center; gap:.65rem;
    font-size:.58rem; letter-spacing:.26em; text-transform:uppercase;
    padding:.9rem 1.7rem;
    border:1px solid rgba(184,146,74,.38); color:var(--gold);
    transition:all var(--fast);
}
.sm-pdf svg { width:13px; height:13px; stroke:currentColor; fill:none; stroke-width:1.5; }
.sm-pdf:hover { border-color:var(--gold); background:rgba(184,146,74,.08); }
.sm-book {
    display:inline-block;
    font-size:.58rem; letter-spacing:.26em; text-transform:uppercase; font-weight:500;
    padding:.9rem 2.2rem; background:var(--gold); color:#f7f4ee;
    transition:all var(--fast);
}
.sm-book:hover { background:var(--gold-l); }

@media(max-width:1024px){
    .sm-body { grid-template-columns:1fr; padding:3rem 2rem 4rem; gap:2.5rem; }
    .sm-main-img { height:360px; }
}
@media(max-width:600px){
    .sm-main-img { height:240px; }
    .sm-actions { flex-direction:column; }
}

/* ── LANG SELECTOR ───────────────────────────── */
.lang-sel { display:flex; align-items:center; gap:.35rem; }
.lang-sep { color:rgba(184,146,74,.3); font-size:.6rem; pointer-events:none; }
.lang-btn {
    background:none; border:none; cursor:pointer;
    font-family:var(--sans); font-size:.6rem; letter-spacing:.18em;
    text-transform:uppercase; color:rgba(26,23,20,.42);
    padding:.15rem 0; line-height:1; transition:color var(--fast);
    border-bottom:1px solid transparent;
}
.nav:not(.sc) .lang-btn { color:rgba(255,255,255,.48); }
.lang-btn:hover  { color:var(--gold); }
.lang-btn.active { color:var(--gold); border-bottom-color:var(--gold); }
.mob-lang {
    display:flex; gap:.6rem; align-items:center; justify-content:center;
    margin-top:2rem; padding-top:1.5rem;
    border-top:1px solid rgba(184,146,74,.15);
    width:100%; max-width:280px;
}
.mob-lang .lang-btn { font-size:.72rem; color:rgba(26,23,20,.45); }
.mob-lang .lang-sep { color:rgba(184,146,74,.35); }

/* ── RESPONSIVE ───────────────────────────── */
@media(max-width:1024px){
    .nav,.nav.sc { padding:1.5rem 2rem; }
    .nav-links,.nav-cta { display:none; }
    .nav-burger { display:flex; }
    .hero-content { padding:0 2rem 5rem; }
    .hero-scroll  { right:2rem; }
    .philosophy   { grid-template-columns:1fr; padding:6rem 2rem; gap:2rem; }
    .phil-num     { display:none; }
    .services     { padding:5rem 2rem 7rem; }
    .svc-head     { flex-direction:column; gap:1.5rem; align-items:flex-start; }
    .svc-card     { flex-direction:column !important; height:auto; }
    .svc-img-wrap { flex:0 0 260px; width:100%; }
    .svc-card-body { border-left:none !important; border-right:none !important; border-top:1px solid rgba(184,146,74,.13); padding:2.5rem 2rem; }
    .villas       { padding:6rem 2rem; }
    .vil-card:nth-child(1) { height:420px; }
    .stats        { grid-template-columns:repeat(2,1fr); padding:4rem 2rem; }
    .stat         { border-right:none; border-bottom:1px solid rgba(184,146,74,.22); }
    .stat:nth-child(odd)  { border-right:1px solid rgba(184,146,74,.22); }
    .stat:nth-child(3),.stat:nth-child(4) { border-bottom:none; }
    .fleet        { padding:6rem 0 6rem 2rem; }
    .car          { flex:0 0 300px; height:380px; }
    .exp          { grid-template-columns:1fr; padding:6rem 2rem; gap:4rem; }
    .exp-main     { height:400px; }
    .exp-accent   { display:none; }
    .testi        { padding:6rem 2rem; }
    .testi-grid   { grid-template-columns:1fr; }
    .booking      { padding:6rem 2rem; }
    .book-form    { grid-template-columns:1fr; }
    .f-submit     { grid-column:span 1; }
    .book-contacts{ flex-direction:column; gap:2rem; }
    .f-input      { font-size:1rem; }
    footer        { padding:4rem 2rem 2rem; }
    .ft-top       { grid-template-columns:1fr 1fr; gap:3rem; }
    .ft-bot       { flex-direction:column; gap:1rem; text-align:center; }
}
@media(max-width:600px){
    .ft-top { grid-template-columns:1fr; }
    .hero-title { font-size:clamp(2.8rem,11vw,4rem); }
}

/* ── NAV DROPDOWN ─────────────────────────── */
.nav-has-drop { position:relative; }
.nd-chevron { font-size:.65rem; margin-left:.3rem; opacity:.55; display:inline-block; transition:transform var(--fast); }
.nav-has-drop:hover .nd-chevron { transform:rotate(180deg); }
.nd-panel {
    position:absolute; top:calc(100% + 1.4rem); left:50%;
    transform:translateX(-50%) translateY(-8px);
    background:var(--dark-3); border:1px solid rgba(26,23,20,.12);
    border-top:2px solid var(--gold);
    padding:1.4rem 1rem;
    min-width:460px;
    display:grid; grid-template-columns:1fr 1fr; gap:.1rem;
    opacity:0; visibility:hidden; pointer-events:none;
    transition:opacity .26s ease, visibility .26s ease, transform .26s ease;
    z-index:200;
    box-shadow:0 16px 48px rgba(5,5,5,.18);
}
.nav-has-drop:hover .nd-panel,
.nd-panel.open {
    opacity:1; visibility:visible; pointer-events:all;
    transform:translateX(-50%) translateY(0);
}
.nd-item {
    display:flex; align-items:center; gap:.65rem;
    padding:.48rem .7rem; color:#000;
    font-size:.59rem; letter-spacing:.16em; text-transform:uppercase;
    color:rgba(245,244,240,.92); transition:color var(--fast), background var(--fast);
}
.nd-num { font-family:var(--serif); font-size:.78rem; color:var(--gold); opacity:.65; min-width:1.5rem; transition:opacity var(--fast); }
.nd-panel .nd-item,
.nav:not(.sc) .nd-panel .nd-item { color:#000; }
.nd-item:hover,
.nav:not(.sc) .nd-panel .nd-item:hover { color:#000; background:rgba(26,23,20,.06); }
.nd-item:hover .nd-num { opacity:1; }

/* mobile servicios sub-list */
.mob-svc-head { font-size:.55rem; letter-spacing:.28em; text-transform:uppercase; color:var(--gold); opacity:.6; padding:.6rem 0 .3rem; }
.mob-svc-link {
    display:block; padding:.45rem 0 .45rem 1.2rem;
    font-size:.72rem; letter-spacing:.12em; text-transform:uppercase;
    color:rgba(26,23,20,.55); transition:color var(--fast);
}
.mob-svc-link:hover { color:var(--gold); }
.mob-sep { height:1px; background:rgba(184,146,74,.15); margin:.7rem 0; width:100%; max-width:280px; }
/* catalog page mobile nav (uses ul/li) */
.mob-nav ul { list-style:none; padding:0; margin:0; width:100%; max-width:340px; }
.mob-nav li { margin:0; }
.mob-close {
    position:absolute; top:1.8rem; right:1.8rem;
    background:none; border:none; cursor:pointer;
    font-size:1.4rem; color:var(--gold); opacity:.65;
    transition:opacity var(--fast);
}
.mob-close:hover { opacity:1; }

/* ── CATALOG PAGE ─────────────────────────── */
.cat-hero {
    position:relative; height:62vh; min-height:460px;
    display:flex; align-items:flex-end; overflow:hidden;
}
.cat-hero-ov { position:absolute; inset:0; background:linear-gradient(to top,rgba(5,5,5,.88) 0%,rgba(5,5,5,.3) 55%,rgba(5,5,5,.06) 100%); }
.cat-hero-content { position:relative; z-index:1; padding:4rem; }
.cat-breadcrumb {
    display:flex; align-items:center; gap:.6rem;
    font-size:.57rem; letter-spacing:.22em; text-transform:uppercase;
    color:rgba(245,244,240,.35); margin-bottom:1rem;
}
.cat-breadcrumb a { color:rgba(245,244,240,.35); transition:color var(--fast); }
.cat-breadcrumb a:hover { color:var(--gold); }
.cat-svc-num { font-family:var(--serif); font-size:.85rem; color:var(--gold); opacity:.6; margin-bottom:.45rem; letter-spacing:.08em; }
.cat-title { font-family:var(--serif); font-size:clamp(2.2rem,4.5vw,3.8rem); font-weight:300; letter-spacing:.04em; color:#f5f4f0; margin-bottom:.7rem; }
.cat-subtitle { font-size:.78rem; color:rgba(245,244,240,.48); line-height:1.9; max-width:520px; }

.cat-section { padding:6rem 4rem 8rem; background:var(--black); }
.cat-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:2px; }

.cat-item { cursor:none; overflow:hidden; }
.cat-item-img { height:300px; overflow:hidden; }
.cat-item-img img { width:100%; height:100%; object-fit:cover; transition:transform .85s cubic-bezier(.25,.46,.45,.94); display:block; }
.cat-item:hover .cat-item-img img { transform:scale(1.06); }
.cat-item-body { padding:1.6rem 1.8rem 2rem; background:var(--dark); border-bottom:1px solid rgba(184,146,74,.1); }
.cat-item-tag { font-size:.54rem; letter-spacing:.26em; text-transform:uppercase; color:var(--gold); margin-bottom:.5rem; }
.cat-item-name { font-family:var(--serif); font-size:1.6rem; font-weight:300; color:var(--white); margin-bottom:.8rem; }
.cat-item-specs { display:flex; flex-wrap:wrap; gap:.4rem; margin-bottom:1.1rem; }
.cat-spec { font-size:.56rem; letter-spacing:.1em; text-transform:uppercase; background:rgba(184,146,74,.09); color:var(--white-2); padding:.22rem .6rem; }
/* ficha informativa: no navega ni abre lightbox */
.cat-item-static { cursor:default; }
.cat-item-static:hover .cat-item-img img { transform:none; }

/* ── LIGHTBOX EXTRAS (catalog items) ──────── */
.im-tag { font-size:.54rem; letter-spacing:.28em; text-transform:uppercase; color:var(--gold); opacity:.75; margin-bottom:.7rem; }
.im-specs { display:flex; flex-wrap:wrap; gap:.4rem; margin:1.8rem 0; }
.im-spec { font-size:.56rem; letter-spacing:.1em; text-transform:uppercase; padding:.22rem .65rem; border:1px solid rgba(245,244,240,.14); color:rgba(245,244,240,.5); }

/* color variant selector (lightbox) */
.im-colors { display:none; align-items:center; flex-wrap:wrap; gap:.5rem; margin-bottom:1.6rem; }
.im-colors-label { font-size:.54rem; letter-spacing:.28em; text-transform:uppercase; color:rgba(245,244,240,.45); margin-right:.4rem; }
.im-color {
    display:inline-flex; align-items:center; gap:.5rem;
    padding:.42rem .85rem; background:none; cursor:pointer;
    font-size:.56rem; letter-spacing:.12em; text-transform:uppercase;
    border:1px solid rgba(245,244,240,.14); color:rgba(245,244,240,.5);
    transition:all var(--fast);
}
.im-color:hover { border-color:rgba(146,144,144,.55); color:rgba(245,244,240,.8); }
.im-color.active { border-color:var(--gold); color:var(--gold); }
.im-color-dot { width:10px; height:10px; border-radius:50%; border:1px solid rgba(245,244,240,.3); flex:none; }

/* color dots on catalog card */
.cat-item-colors { display:flex; gap:.35rem; margin:0 0 .9rem; }
.cat-item-colors span { width:9px; height:9px; border-radius:50%; border:1px solid rgba(26,23,20,.25); }

/* catalog lightbox close (floating above sm-body) */
.cat-modal-close {
    position:fixed; top:1.8rem; right:1.8rem; z-index:3200;
    cursor:pointer;
}

/* catalog CTA strip */
.cat-cta {
    background:var(--dark);
    padding:7rem 4rem;
    text-align:center;
    border-top:1px solid rgba(184,146,74,.13);
}
.cat-cta-inner { max-width:560px; margin:0 auto; display:flex; flex-direction:column; align-items:center; gap:2rem; }
.cat-cta .s-label { justify-content:center; }
.cat-cta .s-title { text-align:center; }

@media(max-width:1024px){
    .nd-panel { display:none; }
    .cat-hero-content { padding:3rem 2rem; }
    .cat-section { padding:4rem 2rem 6rem; }
    .cat-grid { grid-template-columns:repeat(2,1fr); }
    .cat-cta { padding:5rem 2rem; }
}
@media(max-width:600px){
    .cat-grid { grid-template-columns:1fr; }
    .cat-item-img { height:240px; }
    .book-sub { margin-bottom:2rem; }
    .testi-head { margin-bottom:3rem; }
}

/* ── TABLET: 2-COL BOOKING FORM ───────────── */
@media(min-width:601px) and (max-width:1024px){
    .book-form { grid-template-columns:repeat(2,1fr); }
    .f-submit  { grid-column:span 2; }
}

/* ── SMALL PHONE (≤480px) ─────────────────── */
@media(max-width:480px){
    .nav,.nav.sc          { padding:1.2rem 1.5rem; }
    .hero-content         { padding:0 1.5rem 4rem; }
    .hero-scroll          { display:none; }
    .pre-logo             { font-size:1.7rem; letter-spacing:.28em; }
    .philosophy           { padding:4rem 1.5rem; }
    .services             { padding:4rem 1.5rem 6rem; }
    .svc-img-wrap         { flex:0 0 200px; }
    .svc-card-body        { padding:2rem 1.5rem; }
    .exp                  { padding:4rem 1.5rem; }
    .testi                { padding:5rem 1.5rem; }
    .testi-card           { padding:2.5rem 1.5rem; }
    .booking              { padding:5rem 1.5rem; }
    footer                { padding:3rem 1.5rem 2rem; }
    .cat-hero-content     { padding:2.5rem 1.5rem; }
    .cat-section          { padding:3rem 1.5rem 5rem; }
    .cat-cta              { padding:4rem 1.5rem; }
    .sm-body              { padding:3rem 1.5rem 4rem; }
}

/* ── TOUCH DEVICES: DISABLE CUSTOM CURSOR ── */
@media(hover:none),(pointer:coarse){
    body  { cursor:auto; }
    .cur  { display:none; }
}
