:root{
  --cream:#F1ECDB;
  --cream-2:#E8E1C7;
  --sand:#E4DBC0;
  --sand-line:#D3C7A2;
  --forest:#152720;
  --forest-2:#1E3629;
  --forest-3:#2B4837;
  --sage:#7C9179;
  --sage-soft:#C3CDB4;
  --brass:#9C7A2E;
  --brass-soft:#C9A557;
  --ink:#1B241D;
  --muted:#5C6558;
  --muted-on-dark:#AEBDAC;
  --white:#FBF8EE;
  --line:#D9CEA9;
  --danger:#9B4A3A;
  --success:#4C7A5D;
  --shadow:0 24px 60px -28px rgba(21,39,32,0.45);
  --radius-sm:4px;
  --radius:12px;
  --radius-lg:22px;
  --font-display:'Bodoni Moda', 'Iowan Old Style', Georgia, serif;
  --font-body:'Work Sans', -apple-system, 'Segoe UI', Roboto, sans-serif;
  --font-mono:'IBM Plex Mono', 'SFMono-Regular', Menlo, Consolas, monospace;
}

*,*::before,*::after{ box-sizing:border-box; }
html{ color-scheme:light; }
body{
  margin:0;
  background:var(--cream);
  color:var(--ink);
  font-family:var(--font-body);
  font-size:16px;
  line-height:1.55;
  -webkit-font-smoothing:antialiased;
}
img{ max-width:100%; }
h1,h2,h3,h4{ font-family:var(--font-display); color:var(--forest); margin:0; font-weight:700; text-wrap:balance; }
/* Bodoni Moda ajusta sus trazos finos al tamaño (eje opsz): en títulos grandes quedan casi invisibles.
   Fijar un tamaño óptico bajo mantiene los trazos finos más gruesos y legibles. */
h1,h2,h3,h4,.brand-mark,.service-lead,.service-quote,.lead-block p{ font-variation-settings:"opsz" 11; }
p{ margin:0; }
a{ color:inherit; }
button{ font-family:inherit; }
ul{ margin:0; padding:0; list-style:none; }
.container{ max-width:1180px; margin-inline:auto; padding-inline:clamp(1.25rem,4vw,2.5rem); }
.eyebrow{
  font-family:var(--font-mono); font-size:0.7rem; letter-spacing:0.16em; text-transform:uppercase;
  color:var(--brass); font-weight:600;
}
.eyebrow.on-dark{ color:var(--brass-soft); }
.mono{ font-family:var(--font-mono); font-variant-numeric:tabular-nums; }
[hidden]{ display:none !important; }
:focus-visible{ outline:2px solid var(--brass); outline-offset:2px; }
@media (prefers-reduced-motion:reduce){ *{ animation:none !important; transition:none !important; scroll-behavior:auto !important; } }

/* ---------- Buttons ---------- */
.btn{
  display:inline-flex; align-items:center; gap:0.5rem; justify-content:center;
  font-family:var(--font-mono); font-size:0.82rem; letter-spacing:0.04em; text-transform:uppercase; font-weight:600;
  padding:0.85rem 1.5rem; border-radius:999px; border:1px solid transparent; cursor:pointer;
  background:var(--brass); color:var(--forest); transition:transform .15s ease, background .15s ease, box-shadow .15s ease;
  text-decoration:none; white-space:nowrap;
}
.btn:hover{ background:var(--brass-soft); transform:translateY(-1px); }
.btn-outline{ background:transparent; border-color:var(--forest); color:var(--forest); }
.btn-outline:hover{ background:var(--forest); color:var(--cream); }
.btn-ghost{ background:transparent; border-color:rgba(251,248,238,0.4); color:var(--cream); }
.btn-ghost:hover{ background:rgba(251,248,238,0.12); border-color:var(--cream); }
.btn-block{ width:100%; }
.btn-sm{ padding:0.55rem 1rem; font-size:0.72rem; }
.btn-danger{ background:var(--danger); color:var(--white); }
.btn-danger:hover{ background:#b5594a; }
.btn[disabled]{ opacity:0.6; cursor:default; transform:none !important; }

/* ---------- Header ---------- */
.site-header{ position:sticky; top:0; z-index:50; background:var(--forest); border-bottom:1px solid rgba(251,248,238,0.1); }
.header-inner{
  max-width:1180px; margin-inline:auto; padding-inline:clamp(1.25rem,4vw,2.5rem);
  height:76px; display:flex; align-items:center; gap:clamp(1rem,3vw,2.5rem);
}
.brand{ background:none; border:0; cursor:pointer; display:flex; flex-direction:column; align-items:flex-start; padding:0; line-height:1; text-decoration:none; }
.brand-mark{ font-family:var(--font-display); font-size:1.5rem; letter-spacing:0.05em; color:var(--cream); font-weight:700; }
.brand-sub{ font-family:var(--font-mono); font-size:0.58rem; letter-spacing:0.24em; color:var(--brass-soft); margin-top:3px; }
.main-nav{ display:flex; gap:clamp(0.5rem,2vw,1.75rem); margin-left:0.5rem; flex:1; }
.nav-link{
  background:none; border:0; cursor:pointer; color:var(--muted-on-dark); text-decoration:none;
  font-size:0.92rem; padding:0.4rem 0.1rem; position:relative;
}
.nav-link::after{
  content:""; position:absolute; left:0; right:0; bottom:-2px; height:2px; background:var(--brass);
  transform:scaleX(0); transform-origin:left; transition:transform .2s ease;
}
.nav-link:hover{ color:var(--cream); }
.nav-link.active{ color:var(--cream); }
.nav-link.active::after{ transform:scaleX(1); }
.nav-cta{ flex-shrink:0; }
.lang-switch{ display:flex; gap:2px; margin-left:auto; flex-shrink:0; }
.lang-switch button{
  background:none; border:0; color:var(--muted-on-dark); cursor:pointer;
  font-family:var(--font-mono); font-size:0.72rem; letter-spacing:0.08em; font-weight:600;
  padding:0.35rem 0.55rem; border-radius:999px;
}
.lang-switch button:hover{ color:var(--cream); }
.lang-switch button.active{ color:var(--forest); background:var(--brass-soft); }
.nav-toggle{
  display:none; width:38px; height:38px; border:0; background:none; cursor:pointer; flex-direction:column;
  align-items:center; justify-content:center; gap:5px; flex-shrink:0;
}
.nav-toggle span{ width:22px; height:2px; background:var(--cream); transition:transform .2s ease, opacity .2s ease; }
.nav-toggle.open span:nth-child(1){ transform:translateY(7px) rotate(45deg); }
.nav-toggle.open span:nth-child(2){ opacity:0; }
.nav-toggle.open span:nth-child(3){ transform:translateY(-7px) rotate(-45deg); }
.mobile-nav{
  display:none; flex-direction:column; background:var(--forest-2); padding:0.5rem clamp(1.25rem,4vw,2.5rem) 1.25rem;
  border-top:1px solid rgba(251,248,238,0.1);
}
.mobile-nav.open{ display:flex; }
.mobile-nav a{
  background:none; border:0; color:var(--muted-on-dark); text-align:left; padding:0.7rem 0; font-size:1rem;
  border-bottom:1px solid rgba(251,248,238,0.08); cursor:pointer; text-decoration:none; display:block;
}
.mobile-nav a.active{ color:var(--cream); }
@media (max-width:1240px){
  .nav-cta{ display:none; }
}
@media (max-width:1040px){
  .main-nav{ display:none; }
  .nav-toggle{ display:flex; }
}

/* ---------- Bands ---------- */
.band-forest{ background:var(--forest); color:var(--cream); }
.band-forest h2, .band-forest h3, .band-forest h4{ color:var(--cream); }
.band-forest2{ background:var(--forest-2); color:var(--cream); }
.band-forest2 h2, .band-forest2 h3, .band-forest2 h4{ color:var(--cream); }
.band-cream{ background:var(--cream); }
.band-sand{ background:var(--sand); }
.pad{ padding-block:clamp(3.5rem,7vw,6rem); }
.section-head{ max-width:640px; margin-bottom:clamp(2rem,4vw,3rem); }
.section-head h2{ font-size:clamp(1.9rem,3vw,2.7rem); margin-top:0.5rem; }
.section-head p{ color:var(--muted); margin-top:0.75rem; font-size:1.02rem; }
.band-forest .section-head p, .band-forest2 .section-head p{ color:var(--muted-on-dark); }

/* ---------- Hero ---------- */
.hero{ padding-top:clamp(3rem,6vw,4.5rem); padding-bottom:0; position:relative; }
.hero-grid{ display:grid; grid-template-columns:1.05fr 0.85fr; gap:clamp(2rem,5vw,4rem); align-items:center; }
.hero h1{ font-size:clamp(2.5rem,4.6vw,4.2rem); color:var(--cream); line-height:1.06; margin-top:0.9rem; }
.hero .lede{ color:var(--muted-on-dark); font-size:1.08rem; max-width:46ch; margin-top:1.25rem; }
.hero-actions{ display:flex; gap:0.9rem; margin-top:2rem; flex-wrap:wrap; }
.hero-art{ width:100%; aspect-ratio:1/1; }
.hero-art svg{ width:100%; height:100%; }

.quick-search{
  background:var(--white); border-radius:var(--radius-lg); box-shadow:var(--shadow);
  margin-top:clamp(2.5rem,5vw,3.5rem); transform:translateY(50%); padding:clamp(1.25rem,3vw,1.75rem);
  display:grid; grid-template-columns:auto repeat(3,1fr) auto; gap:0.9rem; align-items:end;
  border:1px solid var(--line);
}
.qs-toggle{ display:flex; background:var(--sand); border-radius:999px; padding:4px; }
.qs-toggle button{
  border:0; background:none; padding:0.6rem 1.1rem; border-radius:999px; cursor:pointer; font-size:0.85rem;
  color:var(--muted); font-weight:600;
}
.qs-toggle button.active{ background:var(--forest); color:var(--cream); }
.field label{ display:block; font-family:var(--font-mono); font-size:0.65rem; letter-spacing:0.1em; text-transform:uppercase; color:var(--muted); margin-bottom:0.4rem; }
select.input, input.input, textarea.input{
  width:100%; padding:0.7rem 0.8rem; border-radius:var(--radius-sm); border:1px solid var(--line);
  background:var(--cream); color:var(--ink); font-family:var(--font-body); font-size:0.92rem;
}
select.input:focus, input.input:focus, textarea.input:focus{ outline:2px solid var(--brass); outline-offset:1px; }
.hero-spacer{ height:clamp(4rem,8vw,6.5rem); }
@media (max-width:980px){
  .hero-grid{ grid-template-columns:1fr; }
  .hero-art{ max-width:340px; margin-inline:auto; }
  .quick-search{ grid-template-columns:1fr 1fr; transform:translateY(30%); }
  .qs-toggle{ grid-column:1/-1; justify-content:center; }
  .qs-submit{ grid-column:1/-1; }
  .hero-spacer{ height:10rem; }
}

/* ---------- Property cards ---------- */
.cards-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:1.5rem; }
@media (max-width:980px){ .cards-grid{ grid-template-columns:1fr 1fr; } }
@media (max-width:640px){ .cards-grid{ grid-template-columns:1fr; } }

.property-card{
  background:var(--white); border:1px solid var(--line); border-radius:var(--radius-lg); overflow:hidden;
  cursor:pointer; transition:transform .18s ease, box-shadow .18s ease; display:flex; flex-direction:column;
  text-align:left; width:100%; padding:0; text-decoration:none; color:inherit;
}
.property-card:hover{ transform:translateY(-4px); box-shadow:var(--shadow); }
.pc-media{ position:relative; aspect-ratio:4/3; background:var(--forest); }
.pc-media svg, .pc-media img{ width:100%; height:100%; display:block; object-fit:cover; }
.pc-badges{ position:absolute; inset:0.75rem 0.75rem auto; display:flex; justify-content:space-between; align-items:flex-start; }
.pill{
  font-family:var(--font-mono); font-size:0.62rem; letter-spacing:0.06em; text-transform:uppercase; font-weight:600;
  padding:0.35rem 0.6rem; border-radius:999px; background:rgba(251,248,238,0.92); color:var(--forest);
}
.pill.op-alquiler{ background:var(--brass); color:var(--forest); }
.pill.status-reservado{ background:var(--danger); color:var(--white); }
.pill.status-vendido, .pill.status-alquilado{ background:var(--forest-3); color:var(--cream); }
.pc-body{ padding:1.2rem 1.25rem 1.4rem; display:flex; flex-direction:column; gap:0.6rem; flex:1; }
.pc-ref{ font-family:var(--font-mono); font-size:0.68rem; letter-spacing:0.1em; text-transform:uppercase; color:var(--brass); font-weight:600; }
.pc-title{ font-size:1.15rem; }
.pc-loc{ font-family:var(--font-mono); font-size:0.75rem; color:var(--muted); display:flex; align-items:center; gap:0.35rem; }
.pc-loc svg{ stroke:var(--brass); flex-shrink:0; }
.pc-desc{ color:var(--muted); font-size:0.88rem; line-height:1.5; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
.pc-specs{ display:flex; gap:0.5rem 0.75rem; font-family:var(--font-mono); font-size:0.76rem; color:var(--ink); flex-wrap:wrap; align-items:center; }
.pc-specs span{ display:inline-flex; align-items:center; gap:0.3rem; }
.pc-specs svg{ width:16px; height:16px; stroke:var(--sage); flex-shrink:0; }
.pc-specs .spec-extras{ gap:0.45rem; padding-left:0.75rem; border-left:1px solid var(--line); }
.pc-specs .spec-extras:empty{ display:none; }
.pc-footer{ margin-top:auto; padding-top:0.7rem; border-top:1px solid var(--line); display:flex; justify-content:space-between; align-items:center; }
.pc-price{ font-family:var(--font-mono); font-size:1.1rem; font-weight:600; color:var(--brass); }
.pc-price small{ font-size:0.68rem; color:var(--muted); font-weight:400; }
.pc-arrow{ color:var(--forest); font-size:0.85rem; }

/* ---------- Services (dark band, home) ---------- */
.services-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:1.5rem; }
@media (max-width:860px){ .services-grid{ grid-template-columns:1fr; } }
.service-card{ border:1px solid rgba(251,248,238,0.16); border-radius:var(--radius); padding:1.6rem 1.4rem; display:flex; flex-direction:column; text-decoration:none; color:inherit; transition:border-color .18s ease, background .18s ease; }
.service-card:hover{ border-color:var(--brass-soft); background:rgba(251,248,238,0.04); }
.service-card svg{ width:26px; height:26px; stroke:var(--brass-soft); margin-bottom:1rem; }
.service-card h4{ font-size:1.05rem; margin-bottom:0.5rem; }
.service-card p{ color:var(--muted-on-dark); font-size:0.92rem; }
.service-more{ margin-top:auto; padding-top:1.1rem; font-family:var(--font-mono); font-size:0.78rem; color:var(--brass-soft); }

/* ---------- Página de servicios ---------- */
.service-block{ scroll-margin-top:76px; }
.service-layout{ display:grid; grid-template-columns:0.8fr 1.2fr; gap:clamp(2rem,5vw,4.5rem); align-items:start; }
@media (max-width:900px){ .service-layout{ grid-template-columns:1fr; } }
.service-intro{ position:sticky; top:100px; }
@media (max-width:900px){ .service-intro{ position:static; } }
.service-num{ display:block; font-size:0.85rem; color:var(--brass); margin-bottom:0.75rem; letter-spacing:0.1em; }
.band-forest .service-num{ color:var(--brass-soft); }
.service-intro h2{ font-size:clamp(1.7rem,2.6vw,2.3rem); }
.service-lead{ font-family:var(--font-display); font-size:1.15rem; line-height:1.45; color:var(--forest); margin-top:1rem; }
.band-forest .service-lead{ color:var(--cream); }
.service-intro .zone-tags{ margin-top:1.5rem; }
.service-body > p{ color:var(--ink); font-size:1.02rem; line-height:1.7; margin-bottom:1.1rem; }
.band-forest .service-body > p{ color:var(--muted-on-dark); }
.service-body > h3{ font-size:1.2rem; margin:1.75rem 0 0.75rem; }
.service-quote{ margin:1.75rem 0; padding:0.25rem 0 0.25rem 1.25rem; border-left:3px solid var(--brass); font-family:var(--font-display); font-style:italic; font-size:1.25rem; line-height:1.4; color:var(--forest); }
.band-forest .service-quote{ color:var(--cream); }
.legal-list{ display:grid; grid-template-columns:1fr 1fr; gap:0 2rem; margin:1.5rem 0; }
@media (max-width:620px){ .legal-list{ grid-template-columns:1fr; } }
.legal-list li{ padding:0.7rem 0 0.7rem 1.1rem; border-top:1px solid var(--sand-line); position:relative; font-size:0.95rem; }
.legal-list li::before{ content:""; position:absolute; left:0; top:1.2rem; width:5px; height:5px; border-radius:50%; background:var(--brass); }

/* ---------- CTA band ---------- */
.cta-band{ text-align:center; }
.cta-band h2{ font-size:clamp(2rem,3.4vw,2.8rem); color:var(--cream); }
.cta-band p{ color:var(--muted-on-dark); margin-top:0.8rem; max-width:50ch; margin-inline:auto; }
.cta-actions{ display:flex; gap:1rem; justify-content:center; margin-top:1.75rem; flex-wrap:wrap; }

/* ---------- Footer ---------- */
.footer{ padding-block:3.5rem 2.25rem; }
.footer-grid{ display:grid; grid-template-columns:1.4fr 1fr 1fr; gap:2.5rem; }
@media (max-width:760px){ .footer-grid{ grid-template-columns:1fr; gap:2rem; } }
.footer h5{ font-family:var(--font-mono); font-size:0.7rem; letter-spacing:0.1em; text-transform:uppercase; color:var(--brass-soft); margin-bottom:1rem; }
.footer p, .footer li{ color:var(--muted-on-dark); font-size:0.92rem; }
.footer li{ margin-bottom:0.55rem; }
.footer li a{ text-decoration:none; }
.footer li a:hover{ color:var(--cream); }
.footer-brand .brand-mark{ font-size:1.6rem; }
.footer-bottom{ border-top:1px solid rgba(251,248,238,0.12); margin-top:2.5rem; padding-top:1.5rem; display:flex; justify-content:space-between; gap:1rem; flex-wrap:wrap; font-size:0.78rem; color:var(--muted-on-dark); }

.footer-admin{ color:var(--muted-on-dark); text-decoration:none; opacity:0.7; }
.footer-admin:hover{ opacity:1; color:var(--cream); }

/* ---------- Catalogo filters ---------- */
.filters{ background:var(--sand); border:1px solid var(--sand-line); border-radius:var(--radius-lg); padding:clamp(1.25rem,3vw,1.75rem); margin-bottom:2.5rem; }
.filters-grid{ display:grid; grid-template-columns:repeat(6,1fr); gap:1rem; align-items:end; }
@media (max-width:980px){ .filters-grid{ grid-template-columns:1fr 1fr 1fr; } }
@media (max-width:620px){ .filters-grid{ grid-template-columns:1fr 1fr; } }
.filters-foot{ display:flex; justify-content:space-between; align-items:center; margin-top:1.1rem; flex-wrap:wrap; gap:0.75rem; }
.results-count{ font-family:var(--font-mono); font-size:0.85rem; color:var(--muted); }
.empty-state{ text-align:center; padding:3.5rem 1rem; color:var(--muted); font-family:var(--font-mono); font-size:0.9rem; border:1px dashed var(--line); border-radius:var(--radius); }
.loader{ text-align:center; padding:3.5rem 1rem; color:var(--muted); }
.spinner{ width:28px; height:28px; border-radius:50%; border:3px solid var(--sand-line); border-top-color:var(--brass); margin:0 auto 1rem; animation:spin .8s linear infinite; }
@keyframes spin{ to{ transform:rotate(360deg); } }

/* ---------- Quienes somos ---------- */
.lead-block{ max-width:760px; }
.lead-block p{ font-family:var(--font-display); font-size:clamp(1.3rem,2vw,1.7rem); font-weight:500; line-height:1.45; color:var(--forest); }
.lead-block p::first-letter{ font-size:3.2em; float:left; line-height:0.85; padding-right:0.1em; padding-top:0.05em; color:var(--brass); font-weight:700; }

.pillars-grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:2rem; }
@media (max-width:980px){ .pillars-grid{ grid-template-columns:1fr 1fr; } }
@media (max-width:560px){ .pillars-grid{ grid-template-columns:1fr; } }
.pillar h4{ font-size:1.1rem; margin-bottom:0.5rem; }
.pillar p{ color:var(--muted-on-dark); font-size:0.95rem; }
.pillar .rule{ width:36px; height:2px; background:var(--brass-soft); margin-bottom:1rem; }

.zone-tags{ display:flex; flex-wrap:wrap; gap:0.6rem; }
.zone-tags span{ font-family:var(--font-mono); font-size:0.8rem; padding:0.5rem 0.9rem; background:var(--sand); border:1px solid var(--sand-line); border-radius:999px; }
.band-forest .zone-tags span{ background:transparent; border-color:rgba(251,248,238,0.25); color:var(--cream); }

/* ---------- Contacto ---------- */
.contact-grid{ display:grid; grid-template-columns:1fr 1fr; gap:clamp(2rem,4vw,3rem); align-items:start; }
@media (max-width:900px){ .contact-grid{ grid-template-columns:1fr; } }
.contact-grid.single{ grid-template-columns:minmax(0,560px); }
.contact-form{ background:var(--white); border:1px solid var(--line); border-radius:var(--radius-lg); padding:clamp(1.5rem,3vw,2.25rem); }
.form-row{ display:grid; grid-template-columns:1fr 1fr; gap:1rem; margin-bottom:1rem; }
@media (max-width:520px){ .form-row{ grid-template-columns:1fr; } }
.field-full{ margin-bottom:1rem; }
.field-full > label{ display:block; font-family:var(--font-mono); font-size:0.65rem; letter-spacing:0.1em; text-transform:uppercase; color:var(--muted); margin-bottom:0.4rem; }
textarea.input{ min-height:120px; resize:vertical; font-family:var(--font-body); }
.checkline{ display:flex; align-items:flex-start; gap:0.6rem; font-size:0.85rem; color:var(--muted); margin-bottom:1.25rem; }
.checkline input{ margin-top:0.3rem; }
.alert{ padding:0.9rem 1rem; border-radius:var(--radius-sm); font-size:0.88rem; margin-top:1rem; }
.alert-info{ background:var(--sand); border:1px solid var(--sand-line); color:var(--ink); }
.alert-success{ background:#E4EDE4; border:1px solid #BBD3BC; color:#2E5A34; }
.alert-error{ background:#F3E1DD; border:1px solid #E0B6AC; color:var(--danger); }

.info-card{ background:var(--white); border:1px solid var(--line); border-radius:var(--radius); padding:1.5rem 1.6rem; margin-bottom:1.5rem; }
.info-card h4{ font-size:1rem; margin-bottom:1rem; }
.info-row{ display:flex; justify-content:space-between; gap:1rem; padding-block:0.5rem; border-top:1px solid var(--line); font-size:0.9rem; }
.info-row:first-of-type{ border-top:0; }
.info-row .k{ color:var(--muted); }
.info-card a{ text-decoration:none; }
.info-card a:hover{ color:var(--brass); }

/* ---------- Ficha de inmueble ---------- */
.back-link{ display:inline-flex; align-items:center; gap:0.4rem; color:var(--muted); text-decoration:none; font-size:0.9rem; margin-bottom:1.75rem; }
.back-link:hover{ color:var(--forest); }
.detail-grid{ display:grid; grid-template-columns:1.1fr 0.9fr; gap:clamp(2rem,4vw,3.5rem); align-items:start; }
@media (max-width:900px){ .detail-grid{ grid-template-columns:1fr; } }
.detail-media{ aspect-ratio:4/3; border-radius:var(--radius-lg); overflow:hidden; background:var(--forest); position:relative; }
.detail-media svg, .detail-media img{ width:100%; height:100%; display:block; object-fit:cover; }
.detail-thumbs{ display:flex; gap:0.6rem; margin-top:0.75rem; flex-wrap:wrap; }
.detail-thumbs img{ width:72px; height:56px; object-fit:cover; border-radius:var(--radius-sm); cursor:pointer; border:2px solid transparent; opacity:0.75; }
.detail-thumbs img.active{ border-color:var(--brass); opacity:1; }
.detail-badges{ position:absolute; inset:1rem 1rem auto; display:flex; justify-content:space-between; }
.detail-price{ font-family:var(--font-mono); font-size:clamp(1.6rem,2.4vw,2rem); font-weight:700; color:var(--brass); margin-top:1.1rem; }
.detail-price small{ font-size:0.9rem; color:var(--muted); font-weight:400; }
.detail-specs{ display:grid; grid-template-columns:repeat(2,1fr); gap:1.1rem; margin:1.5rem 0; padding:1.25rem; background:var(--white); border-radius:var(--radius); border:1px solid var(--line); }
.detail-specs .k{ font-family:var(--font-mono); font-size:0.65rem; text-transform:uppercase; letter-spacing:0.06em; color:var(--muted); }
.detail-specs .v{ font-family:var(--font-mono); font-size:1rem; color:var(--forest); font-weight:600; margin-top:0.25rem; }
.detail-extras{ margin-bottom:1.5rem; }
.detail-extras .k{ font-family:var(--font-mono); font-size:0.65rem; text-transform:uppercase; letter-spacing:0.06em; color:var(--muted); margin-bottom:0.6rem; }
.detail-extras ul{ display:flex; flex-wrap:wrap; gap:0.5rem; }
.detail-extras li{ display:inline-flex; align-items:center; gap:0.45rem; padding:0.45rem 0.8rem; background:var(--white); border:1px solid var(--line); border-radius:999px; font-size:0.85rem; }
.detail-extras svg{ width:17px; height:17px; stroke:var(--brass); flex-shrink:0; }
.detail-desc{ color:var(--ink); font-size:1rem; line-height:1.65; margin-top:0.5rem; }
.detail-actions{ display:flex; gap:1rem; margin-top:2rem; flex-wrap:wrap; }

/* ---------- Promoción (galería y visor) ---------- */
.promo-hero{ padding-top:clamp(3rem,6vw,4.5rem); padding-bottom:0; }
.promo-hero h1{ font-size:clamp(2.2rem,4.4vw,3.8rem); color:var(--cream); margin-top:0.9rem; }
.promo-hero .lede{ color:var(--muted-on-dark); font-size:1.1rem; margin-top:1rem; max-width:50ch; }
.promo-hero-img{ display:block; width:100%; height:auto; aspect-ratio:21/9; object-fit:cover; border-radius:var(--radius-lg) var(--radius-lg) 0 0; margin-top:clamp(2rem,4vw,3rem); }

.gallery-group{ margin-top:clamp(2.5rem,5vw,4rem); }
.gallery-group h2{ font-size:clamp(1.5rem,2.4vw,2rem); margin-bottom:1.25rem; }
.gallery-grid{ display:grid; grid-template-columns:repeat(3,1fr); grid-auto-rows:clamp(190px,19vw,250px); grid-auto-flow:dense; gap:0.9rem; }
.gallery-item{ position:relative; display:block; overflow:hidden; border-radius:var(--radius); background:var(--forest); }
.gallery-item.wide{ grid-column:span 2; }
.gallery-item img{ width:100%; height:100%; object-fit:cover; display:block; transition:transform .4s ease; }
.gallery-item:hover img{ transform:scale(1.04); }
.gallery-cap{
  position:absolute; inset:auto 0 0 0; padding:1.6rem 0.9rem 0.7rem; color:var(--cream); font-size:0.8rem; line-height:1.3;
  background:linear-gradient(transparent, rgba(21,39,32,0.82)); opacity:0; transition:opacity .2s ease;
}
.gallery-item:hover .gallery-cap, .gallery-item:focus-visible .gallery-cap{ opacity:1; }
@media (hover:none){ .gallery-cap{ opacity:1; } }
@media (max-width:860px){ .gallery-grid{ grid-template-columns:1fr 1fr; } }
@media (max-width:560px){ .gallery-grid{ grid-template-columns:1fr; grid-auto-rows:220px; } .gallery-item.wide{ grid-column:auto; } }

.gallery-figure{ margin:0 0 1.5rem; }
.gallery-figure figcaption{ margin-top:0.6rem; color:var(--muted); font-size:0.88rem; }
.gallery-feature{ display:block; border:1px solid var(--line); border-radius:var(--radius); overflow:hidden; background:#fff; }
.gallery-feature img{ display:block; width:100%; height:auto; }
.eff-list{ display:grid; grid-template-columns:1fr 1fr; gap:1.4rem 1.8rem; }
@media (max-width:560px){ .eff-list{ grid-template-columns:1fr; } }
.eff-list h4{ font-size:1rem; margin-bottom:0.35rem; }
.eff-list p{ color:var(--muted); font-size:0.88rem; line-height:1.55; }
.back-link-dark{ color:var(--muted-on-dark); margin-bottom:1.25rem; }
.back-link-dark:hover{ color:var(--cream); }
.pc-photos{ font-family:var(--font-mono); font-size:0.72rem; color:var(--muted); }

/* ---------- Listado de promociones ---------- */
.promos-hero{ padding-block:clamp(3rem,6vw,4.5rem); }
.promos-hero h1{ font-size:clamp(2.2rem,4.4vw,3.6rem); color:var(--cream); margin-top:0.9rem; }
.promos-hero .lede{ color:var(--muted-on-dark); font-size:1.1rem; margin-top:1rem; max-width:50ch; }
.promos-body{ padding-top:clamp(2.5rem,5vw,4rem); }
.promo-list-cards{ display:flex; flex-direction:column; gap:2rem; }
.promo-list-cards .empty-state{ background:var(--white); }
.promo-showcase{
  display:grid; grid-template-columns:1.3fr 1fr; background:var(--white); border:1px solid var(--line);
  border-radius:var(--radius-lg); overflow:hidden; color:inherit; text-decoration:none;
  box-shadow:var(--shadow); transition:transform .2s ease;
}
.promo-showcase:hover{ transform:translateY(-4px); }
.promo-showcase:nth-child(even) .ps-media{ order:2; }
.ps-media{ display:grid; grid-template-columns:2fr 1fr; grid-template-rows:1fr 1fr; gap:3px; min-height:380px; background:var(--forest); }
.ps-media.single{ grid-template-columns:1fr; grid-template-rows:1fr; }
.ps-media img, .ps-media svg{ width:100%; height:100%; object-fit:cover; display:block; transition:transform .5s ease; }
.ps-media .ps-main{ grid-row:span 2; }
.ps-media{ overflow:hidden; }
.promo-showcase:hover .ps-media img{ transform:scale(1.03); }
.ps-body{ padding:clamp(1.5rem,3.2vw,2.75rem); display:flex; flex-direction:column; justify-content:center; gap:0.9rem; }
.ps-body h2{ font-size:clamp(1.7rem,2.6vw,2.3rem); }
.ps-lead{ color:var(--muted); font-size:1.02rem; line-height:1.6; }
.ps-tags{ display:flex; flex-wrap:wrap; gap:0.5rem; }
.ps-tags li{ font-family:var(--font-mono); font-size:0.72rem; padding:0.4rem 0.75rem; background:var(--sand); border:1px solid var(--sand-line); border-radius:999px; }
.ps-footer{ display:flex; align-items:center; justify-content:space-between; gap:1rem; margin-top:0.6rem; padding-top:1.1rem; border-top:1px solid var(--line); }
.ps-count{ font-family:var(--font-mono); font-size:0.78rem; color:var(--muted); }
@media (max-width:860px){
  .promo-showcase{ grid-template-columns:1fr; }
  .promo-showcase:nth-child(even) .ps-media{ order:0; }
  .ps-media{ min-height:260px; }
}

.lightbox{ position:fixed; inset:0; z-index:300; background:rgba(12,22,18,0.95); display:flex; flex-direction:column; align-items:center; justify-content:center; padding:3.5rem 1rem 1.5rem; }
.lightbox img{ max-width:min(96vw,1500px); max-height:76vh; object-fit:contain; border-radius:var(--radius-sm); }
.lb-cap{ color:var(--cream); margin-top:1rem; font-size:0.95rem; text-align:center; }
.lb-count{ color:var(--muted-on-dark); font-size:0.72rem; margin-top:0.3rem; }
.lb-btn{
  position:absolute; width:44px; height:44px; border-radius:50%; border:1px solid rgba(251,248,238,0.35);
  background:rgba(21,39,32,0.7); color:var(--cream); font-size:1.7rem; line-height:1; cursor:pointer;
  display:flex; align-items:center; justify-content:center;
}
.lb-btn:hover{ background:var(--brass); color:var(--forest); border-color:var(--brass); }
.lb-close{ top:1rem; right:1rem; }
.lb-prev{ left:1rem; top:50%; transform:translateY(-50%); }
.lb-next{ right:1rem; top:50%; transform:translateY(-50%); }

/* ---------- Bloques con fotos en inicio y servicios ---------- */
.hero-art img{ width:100%; height:100%; object-fit:cover; object-position:70% center; border-radius:var(--radius-lg); display:block; }
.promo-feature{ display:grid; grid-template-columns:0.8fr 1.2fr; gap:clamp(2rem,5vw,4rem); align-items:center; }
@media (max-width:900px){ .promo-feature{ grid-template-columns:1fr; } }
.promo-feature h2{ font-size:clamp(1.9rem,3vw,2.7rem); margin-top:0.5rem; }
.promo-feature p{ color:var(--muted); margin:0.9rem 0 1.5rem; font-size:1.02rem; }
.promo-mosaic{ display:grid; grid-template-columns:1.35fr 1fr; grid-template-rows:1fr 1fr; gap:0.8rem; aspect-ratio:16/10; }
.promo-tile{ display:block; overflow:hidden; border-radius:var(--radius); background:var(--forest); }
.promo-tile:first-child{ grid-row:span 2; }
.promo-tile img{ width:100%; height:100%; object-fit:cover; display:block; transition:transform .4s ease; }
.promo-tile:hover img{ transform:scale(1.04); }
.service-photos{ display:grid; grid-template-columns:1fr 1fr; gap:0.8rem; margin-top:1.75rem; }
.service-photos a{ display:block; overflow:hidden; border-radius:var(--radius); aspect-ratio:16/10; }
.service-photos img{ width:100%; height:100%; object-fit:cover; display:block; transition:transform .4s ease; }
.service-photos a:hover img{ transform:scale(1.04); }
.service-photos-cta{ margin-top:1.25rem; }
@media (max-width:560px){ .service-photos{ grid-template-columns:1fr; } }

/* ---------- Login ---------- */
.login-wrap{ min-height:60vh; display:flex; align-items:center; justify-content:center; padding-block:4rem; }
.login-card{
  background:var(--white); border:1px solid var(--line); border-radius:var(--radius-lg); box-shadow:var(--shadow);
  padding:2.5rem 2.25rem; width:100%; max-width:380px; text-align:center;
}
.login-card h2{ font-size:1.5rem; }
.login-card p{ color:var(--muted); margin-top:0.5rem; margin-bottom:1.75rem; font-size:0.92rem; }
.login-card .field{ text-align:left; margin-bottom:1rem; }
.login-back{ display:inline-block; margin-top:1.5rem; font-size:0.85rem; color:var(--muted); text-decoration:none; }
.login-back:hover{ color:var(--forest); }

/* ---------- Admin ---------- */
.admin-tabs{ display:flex; gap:0.6rem; margin-bottom:2rem; flex-wrap:wrap; }
.admin-tab{
  border:1px solid var(--line); background:var(--white); color:var(--muted); padding:0.65rem 1.25rem;
  border-radius:999px; cursor:pointer; font-family:var(--font-mono); font-size:0.78rem; text-transform:uppercase; letter-spacing:0.04em;
}
.admin-tab.active{ background:var(--forest); color:var(--cream); border-color:var(--forest); }
.tab-panel.hidden{ display:none; }
.form{ background:var(--white); border:1px solid var(--line); border-radius:var(--radius-lg); padding:clamp(1.5rem,3vw,2.25rem); max-width:760px; }
.form .form-row{ display:grid; grid-template-columns:1fr 1fr; gap:1rem; margin-bottom:1rem; }
@media (max-width:560px){ .form .form-row{ grid-template-columns:1fr; } }
.form .field{ margin-bottom:1rem; }
.form .field > label{ display:block; font-family:var(--font-mono); font-size:0.65rem; letter-spacing:0.1em; text-transform:uppercase; color:var(--muted); margin-bottom:0.4rem; }

.extras-grid{ display:grid; grid-template-columns:repeat(auto-fill,minmax(150px,1fr)); gap:0.5rem; }
.extra-option{ display:flex; align-items:center; gap:0.5rem; padding:0.55rem 0.7rem; border:1px solid var(--line); border-radius:var(--radius-sm); background:var(--cream); cursor:pointer; font-size:0.85rem; }
.extra-option svg{ width:18px; height:18px; stroke:var(--sage); flex-shrink:0; }
.extra-option:has(input:checked){ border-color:var(--brass); background:var(--white); }
.field-full > label.check-option{ display:flex; align-items:center; gap:0.5rem; font-family:var(--font-body); font-size:0.9rem; letter-spacing:0; text-transform:none; color:var(--ink); margin:0; cursor:pointer; }
.promo-list{ display:flex; flex-direction:column; gap:0.6rem; margin-bottom:0.75rem; }
.promo-row{ display:grid; grid-template-columns:1fr auto; gap:0.75rem; align-items:start; padding:0.65rem; border:1px solid var(--line); border-radius:var(--radius-sm); background:var(--cream); }
.promo-photo-row{ grid-template-columns:auto 84px 1fr auto; }
.promo-photo-row > img{ width:84px; height:64px; object-fit:cover; border-radius:var(--radius-sm); }
.promo-photo-row .drag-handle{ align-self:center; font-size:1.1rem; padding:0 0.2rem; }
.promo-row-fields{ display:grid; gap:0.4rem; min-width:0; }
.promo-row-fields textarea.input{ min-height:0; }
.pp-remove{ width:26px; height:26px; border-radius:50%; border:0; background:var(--forest); color:#fff; cursor:pointer; font-size:0.95rem; line-height:1; }
.pp-remove:hover{ background:var(--danger); }
details.translations.mini{ margin:0; padding:0.45rem 0.6rem; background:var(--white); }
details.translations.mini .input{ margin-top:0.4rem; }
@media (max-width:560px){ .promo-photo-row{ grid-template-columns:auto 64px 1fr auto; } .promo-photo-row > img{ width:64px; height:52px; } }
details.translations{ margin:0 0 1rem; padding:0.9rem 1rem; border:1px solid var(--line); border-radius:var(--radius-sm); background:var(--cream); }
details.translations summary{ cursor:pointer; font-family:var(--font-mono); font-size:0.72rem; letter-spacing:0.06em; text-transform:uppercase; color:var(--forest); font-weight:600; }
details.translations[open] summary{ margin-bottom:0.6rem; }
details.translations .field-full:last-child{ margin-bottom:0; }
.sortable-grid{ display:grid; grid-template-columns:repeat(auto-fill,minmax(96px,1fr)); gap:0.7rem; }
.photo-item{ position:relative; aspect-ratio:1/1; border-radius:var(--radius-sm); overflow:hidden; border:1px solid var(--line); cursor:grab; }
.photo-item img{ width:100%; height:100%; object-fit:cover; display:block; }
.photo-item .remove-btn{
  position:absolute; top:4px; right:4px; width:22px; height:22px; border-radius:50%; border:0;
  background:rgba(21,39,32,0.85); color:#fff; cursor:pointer; font-size:0.85rem; line-height:1;
}
.photo-item .photo-badge{
  position:absolute; bottom:4px; left:4px; background:rgba(251,248,238,0.9); color:var(--forest);
  font-family:var(--font-mono); font-size:0.62rem; padding:1px 6px; border-radius:999px;
}
.sortable-ghost{ opacity:0.35; }
.sortable-chosen{ box-shadow:var(--shadow); }

table.admin-table{ width:100%; border-collapse:collapse; background:var(--white); border-radius:var(--radius); overflow:hidden; }
table.admin-table th, table.admin-table td{ padding:0.85rem 1rem; border-bottom:1px solid var(--line); text-align:left; font-size:0.88rem; }
table.admin-table th{ font-family:var(--font-mono); font-size:0.68rem; text-transform:uppercase; letter-spacing:0.05em; color:var(--muted); background:var(--sand); }
table.admin-table .col-sub{ color:var(--muted); font-size:0.8rem; }
table.admin-table .thumb{ width:56px; max-width:56px; height:42px; object-fit:cover; border-radius:var(--radius-sm); display:block; }
table.admin-table .action-col{ text-align:right; white-space:nowrap; }
.status-select{ font-size:0.8rem; padding:0.4rem 0.5rem; min-width:118px; }
.status-select.status-disponible{ color:var(--success); }
.status-select.status-reservado{ color:#b8860b; }
.status-select.status-vendido, .status-select.status-alquilado{ color:var(--muted); }
.list-toolbar{ display:flex; justify-content:space-between; align-items:center; margin-bottom:1rem; flex-wrap:wrap; gap:0.75rem; }
.drag-handle{ cursor:grab; color:var(--muted); }
.reorder-col.hidden, .action-col.hidden{ display:none; }

.modal-overlay{
  position:fixed; inset:0; background:rgba(21,39,32,0.6); backdrop-filter:blur(2px);
  display:flex; align-items:center; justify-content:center; padding:1.25rem; z-index:200; overflow-y:auto;
}
.modal-box{
  background:var(--cream); border-radius:var(--radius-lg); max-width:720px; width:100%; max-height:88vh;
  overflow-y:auto; box-shadow:var(--shadow); position:relative; padding:clamp(1.5rem,3vw,2.25rem);
}
.modal-header{ display:flex; justify-content:space-between; align-items:center; margin-bottom:1.5rem; }
.modal-close{
  width:34px; height:34px; border-radius:50%; border:0; background:var(--white); color:var(--forest);
  font-size:1.15rem; cursor:pointer;
}

/* ---------- Misc ---------- */
.text-center{ text-align:center; }
.text-muted{ color:var(--muted); }
.mt-2{ margin-top:1.5rem; }
.mt-3{ margin-top:2.25rem; }
