@font-face{font-family:'League Spartan'; src:url('assets/fonts/LeagueSpartan-Thin.woff2') format('woff2'); font-weight:100; font-style:normal; font-display:swap;}
@font-face{font-family:'League Spartan'; src:url('assets/fonts/LeagueSpartan-ExtraLight.woff2') format('woff2'); font-weight:200; font-style:normal; font-display:swap;}
@font-face{font-family:'League Spartan'; src:url('assets/fonts/LeagueSpartan-Light.woff2') format('woff2'); font-weight:300; font-style:normal; font-display:swap;}
@font-face{font-family:'League Spartan'; src:url('assets/fonts/LeagueSpartan-Regular.woff2') format('woff2'); font-weight:400; font-style:normal; font-display:swap;}
@font-face{font-family:'League Spartan'; src:url('assets/fonts/LeagueSpartan-Medium.woff2') format('woff2'); font-weight:500; font-style:normal; font-display:swap;}
@font-face{font-family:'League Spartan'; src:url('assets/fonts/LeagueSpartan-SemiBold.woff2') format('woff2'); font-weight:600; font-style:normal; font-display:swap;}
@font-face{font-family:'League Spartan'; src:url('assets/fonts/LeagueSpartan-Bold.woff2') format('woff2'); font-weight:700; font-style:normal; font-display:swap;}
@font-face{font-family:'League Spartan'; src:url('assets/fonts/LeagueSpartan-ExtraBold.woff2') format('woff2'); font-weight:800; font-style:normal; font-display:swap;}
@font-face{font-family:'League Spartan'; src:url('assets/fonts/LeagueSpartan-Black.woff2') format('woff2'); font-weight:900; font-style:normal; font-display:swap;}

:root{
  --tinta:#0a0a0a;
  --papel:#ffffff;
  --piedra:#f4f3f0;
  --grafito:#6b6b66;
  --linea:#dedcd4;
  --azul:#4a6e8c;
  --dorado:#c19a4b;
}
*{box-sizing:border-box; margin:0; padding:0;}
html{scroll-behavior:smooth;}
@media (prefers-reduced-motion: reduce){
  html{scroll-behavior:auto;}
  *{animation-duration:0.001ms !important; animation-iteration-count:1 !important; transition-duration:0.001ms !important;}
}
body{
  font-family:'League Spartan', sans-serif;
  color:var(--tinta);
  background:var(--papel);
  line-height:1.6;
  font-weight:400;
  -webkit-font-smoothing:antialiased;
}
h1,h2,h3{font-family:'League Spartan', sans-serif; font-weight:700; letter-spacing:-0.01em;}
h1{font-weight:800;}
a{color:inherit; text-decoration:none;}
img,svg{display:block; max-width:100%;}
ul{list-style:none;}
:focus-visible{outline:2px solid var(--tinta); outline-offset:3px;}
.contenedor{max-width:1120px; margin:0 auto; padding:0 24px;}

/* --- cabecera --- */
.cabecera{
  position:sticky; top:0; z-index:50;
  background:rgba(255,255,255,0.92);
  backdrop-filter:blur(6px);
  border-bottom:1px solid var(--linea);
}
.barra-nav{
  display:flex; align-items:center; justify-content:space-between;
  padding:18px 24px; max-width:1120px; margin:0 auto;
}
.marca-doble{font-family:'League Spartan', sans-serif; font-weight:700; font-size:20px; letter-spacing:0.02em;}
.marca-doble span{color:var(--grafito); font-family:'League Spartan', sans-serif; font-weight:400; font-size:13px; margin:0 6px;}
.logo-cabecera{height:34px; width:auto; display:block;}
.nav-enlaces{display:flex; gap:32px; font-size:14px;}
.nav-enlaces a{position:relative; padding:4px 0;}
.nav-enlaces a::after{
  content:''; position:absolute; left:0; bottom:0; width:0; height:1px; background:var(--tinta);
  transition:width 0.25s ease;
}
.nav-enlaces a:hover::after, .nav-enlaces a:focus-visible::after{width:100%;}
.btn-menu{display:none; background:none; border:none; font-size:22px; cursor:pointer; color:var(--tinta);}

.nav-desplegable{position:relative;}
.nav-desplegable summary{cursor:pointer; list-style:none; position:relative; padding:4px 0;}
.nav-desplegable summary::-webkit-details-marker{display:none;}
.nav-desplegable summary::after{
  content:''; position:absolute; left:0; bottom:0; width:0; height:1px; background:var(--tinta);
  transition:width 0.25s ease;
}
.nav-desplegable summary:hover::after, .nav-desplegable summary:focus-visible::after{width:100%;}
.nav-desplegable-menu{
  position:absolute; top:calc(100% + 12px); left:0; min-width:170px;
  background:var(--papel); border:1px solid var(--linea);
  box-shadow:0 8px 24px rgba(10,10,10,0.08);
  padding:8px 0; display:flex; flex-direction:column;
}
.nav-desplegable-menu a{padding:10px 16px; white-space:nowrap;}
.nav-desplegable-menu a:hover, .nav-desplegable-menu a:focus-visible{background:var(--piedra);}

@media (max-width:760px){
  .nav-enlaces{
    display:none; position:absolute; top:100%; left:0; right:0;
    background:var(--papel); border-bottom:1px solid var(--linea);
    flex-direction:column; gap:0; padding:8px 24px 16px;
  }
  .nav-enlaces.abierto{display:flex;}
  .nav-enlaces a{padding:12px 0; border-bottom:1px solid var(--linea);}
  .btn-menu{display:block;}
  .nav-desplegable summary{padding:12px 0; border-bottom:1px solid var(--linea);}
  .nav-desplegable-menu{
    position:static; border:none; box-shadow:none; padding:0 0 4px 16px;
  }
  .nav-desplegable-menu a{padding:10px 0; border-bottom:none;}
}

/* --- migas de pan --- */
.migas{font-size:13px; color:var(--grafito); padding:20px 24px 0; max-width:1120px; margin:0 auto;}
.migas a{border-bottom:1px solid transparent;}
.migas a:hover, .migas a:focus-visible{border-color:var(--grafito);}

/* --- hero --- */
.hero{padding:100px 24px 90px; text-align:center; border-bottom:1px solid var(--linea);}
.hero .ojo{font-size:13px; letter-spacing:0.14em; text-transform:uppercase; color:var(--azul); margin-bottom:20px;}
.hero h1{font-size:clamp(34px, 6vw, 62px); line-height:1.05; max-width:820px; margin:0 auto 24px;}
.hero p{max-width:540px; margin:0 auto; color:var(--grafito); font-size:17px;}
.hero-carrusel{
  position:relative; overflow:hidden; padding:0;
  min-height:560px; display:flex; align-items:center; justify-content:center;
}
.hero-fondo{position:absolute; inset:0;}
.hero-fondo img{width:100%; height:100%; object-fit:cover; display:block; opacity:1; transition:opacity 0.6s ease;}
.hero-fondo img.desvanecida{opacity:0;}
.hero-capa{position:absolute; inset:0; background:rgba(10,10,10,0.55);}
.hero-contenido{position:relative; z-index:1; padding:100px 24px 90px;}
.hero-contenido--compacto{padding-top:56px;}
.hero-carrusel .hero-contenido .ojo{color:var(--papel); opacity:0.85;}
.hero-carrusel .hero-contenido h1{color:var(--papel);}
.hero-carrusel .hero-contenido p{color:rgba(255,255,255,0.9);}

/* --- bloques de entorno (home) --- */
.entornos{border-bottom:1px solid var(--linea);}
.bloque-entorno{
  display:grid; grid-template-columns:1fr 1fr; align-items:stretch;
  border-bottom:1px solid var(--linea);
}
.bloque-entorno:last-child{border-bottom:none;}
.bloque-entorno.invertido{direction:rtl;}
.bloque-entorno.invertido > *{direction:ltr;}
@media (max-width:800px){
  .bloque-entorno, .bloque-entorno.invertido{grid-template-columns:1fr; direction:ltr;}
}
.entorno-foto{
  background:repeating-linear-gradient(135deg, var(--piedra) 0 2px, transparent 2px 14px);
  border-right:1px solid var(--linea);
  display:flex; align-items:center; justify-content:center;
  font-size:12px; letter-spacing:0.06em; text-transform:uppercase; color:var(--grafito);
  min-height:320px; text-align:center; padding:20px;
  overflow:hidden;
}
.entorno-foto:has(img){padding:0;}
.entorno-foto img{width:100%; height:100%; object-fit:cover; display:block;}
.bloque-entorno.invertido .entorno-foto{border-right:none; border-left:1px solid var(--linea);}
@media (max-width:800px){
  .entorno-foto{border:none; border-bottom:1px solid var(--linea);}
}
.entorno-texto{padding:64px 56px; display:flex; flex-direction:column; justify-content:center; gap:16px;}
@media (max-width:800px){.entorno-texto{padding:48px 28px;}}
.entorno-texto .ojo{font-size:13px; letter-spacing:0.14em; text-transform:uppercase; color:var(--azul);}
.entorno-texto h2{font-size:clamp(26px, 3.4vw, 36px);}
.entorno-texto p{color:var(--grafito); font-size:15px; max-width:440px;}
.logo-entorno{height:48px; width:auto; margin-bottom:4px;}

/* --- sección genérica con cabecera --- */
.seccion{padding:96px 24px; border-bottom:1px solid var(--linea);}
.seccion-piedra{background:var(--piedra);}
.cabecera-seccion{
  display:flex; align-items:flex-end; justify-content:space-between; gap:24px;
  flex-wrap:wrap; margin-bottom:56px;
}
.cabecera-seccion .ojo{font-size:13px; letter-spacing:0.14em; text-transform:uppercase; color:var(--azul); margin-bottom:12px;}
.cabecera-seccion h2{font-size:clamp(28px, 4vw, 42px); max-width:600px;}
.cabecera-seccion .lugar{font-size:15px; max-width:340px; color:var(--grafito); line-height:1.6;}

/* --- alojamientos: dos accesos --- */
.rejilla-alojamientos{
  display:grid; grid-template-columns:1fr 1fr; gap:1px;
  background:var(--linea); border:1px solid var(--linea);
}
@media (max-width:700px){.rejilla-alojamientos{grid-template-columns:1fr;}}
.tarjeta-localidad{
  background:var(--papel); display:block; position:relative;
}
.tarjeta-localidad .entorno-foto{border:none; height:260px; min-height:0;}
.tarjeta-localidad-cuerpo{padding:32px 32px 40px;}
.tarjeta-localidad-cuerpo .logo-tarjeta{height:36px; width:auto; margin-bottom:14px;}
.tarjeta-localidad h3{font-size:26px; margin-bottom:8px;}
.tarjeta-localidad p{color:var(--grafito); font-size:14px; margin-bottom:20px;}
.enlace-ver{
  font-size:13px; letter-spacing:0.03em; border-bottom:1px solid var(--tinta); padding-bottom:2px;
  display:inline-block; transition:opacity 0.2s ease;
}
.tarjeta-localidad:hover .enlace-ver, .tarjeta-localidad:focus-visible .enlace-ver{opacity:0.6;}
.tarjeta-experiencia .enlace-ver{margin-top:auto; padding-top:6px;}

/* --- rejilla de apartamentos (páginas de detalle) --- */
.rejilla-apartamentos{
  display:grid; grid-template-columns:repeat(auto-fit, minmax(280px, 1fr)); gap:1px;
  background:var(--linea); border:1px solid var(--linea);
}
.rejilla-apartamentos--2col{grid-template-columns:repeat(2, 1fr);}
@media (max-width:640px){.rejilla-apartamentos--2col{grid-template-columns:1fr;}}
.tarjeta-apto{background:var(--papel); padding:32px 28px; display:flex; flex-direction:column; gap:16px;}
.galeria-apto{display:grid; grid-template-columns:repeat(3, 1fr); gap:4px;}
.galeria-apto--4{grid-template-columns:repeat(4, 1fr);}
.foto-marcador{
  aspect-ratio:4/3;
  background:repeating-linear-gradient(135deg, var(--piedra) 0 2px, transparent 2px 14px);
  border:1px solid var(--linea);
  display:flex; align-items:center; justify-content:center;
  font-size:11px; letter-spacing:0.04em; text-transform:uppercase; color:var(--grafito);
  text-align:center; padding:8px;
}
.foto-apto{width:100%; height:96px; overflow:hidden; border:1px solid var(--linea); padding:0; background:none; cursor:pointer; display:block;}
.foto-apto img{width:100%; height:100%; object-fit:cover; display:block;}
@media (min-width:600px){.foto-apto{height:150px;}}
@media (min-width:900px){.foto-apto{height:180px;}}

/* --- visor de foto ampliada --- */
.visor-foto{position:fixed; inset:0; margin:auto; border:none; padding:0; background:transparent; max-width:92vw; max-height:88vh;}
.visor-foto::backdrop{background:rgba(10,10,10,0.85);}
.visor-foto img{display:block; max-width:92vw; max-height:88vh; width:auto; height:auto;}
.visor-cerrar{
  position:absolute; top:8px; right:8px;
  width:36px; height:36px; border:1px solid var(--linea); background:var(--papel);
  font-size:20px; line-height:1; cursor:pointer;
}
.visor-cerrar:hover{background:var(--tinta); color:var(--papel);}
.visor-prev,.visor-next{
  position:absolute; top:50%; transform:translateY(-50%);
  width:40px; height:40px; border:1px solid var(--linea); background:var(--papel);
  font-size:20px; line-height:1; cursor:pointer;
}
.visor-prev{left:8px;}
.visor-next{right:8px;}
.visor-prev:hover,.visor-next:hover{background:var(--tinta); color:var(--papel);}
@media (max-width:600px){.visor-prev,.visor-next{width:44px; height:44px;}}
.tarjeta-apto h3{font-size:22px;}
.tarjeta-apto .detalle{font-size:14px; color:var(--grafito); display:flex; flex-wrap:wrap; gap:8px 14px;}
.tarjeta-apto .precio{font-size:15px; margin-top:auto; padding-top:14px; border-top:1px solid var(--linea);}
.fila-botones{display:flex; gap:10px; flex-wrap:wrap;}
.boton{display:inline-block; padding:10px 18px; border:1px solid var(--tinta); font-size:13px; letter-spacing:0.03em; transition:background 0.2s ease, color 0.2s ease;}
.boton:hover, .boton:focus-visible{background:var(--dorado); border-color:var(--dorado); color:var(--papel);}

/* --- experiencias --- */
.rejilla-experiencias{display:grid; grid-template-columns:repeat(auto-fit, minmax(240px, 1fr)); gap:1px; background:var(--linea); border:1px solid var(--linea);}
.tarjeta-experiencia{background:var(--papel); padding:32px 28px; display:flex; flex-direction:column; gap:10px;}
.tarjeta-experiencia .ojo{font-size:12px; letter-spacing:0.1em; text-transform:uppercase; color:var(--azul);}
.tarjeta-experiencia h3{font-size:19px;}
.tarjeta-experiencia p{font-size:14px; color:var(--grafito);}

/* --- contacto --- */
.contacto{padding:96px 24px; text-align:center;}
.contacto h2{font-size:clamp(28px, 4vw, 40px); margin-bottom:16px;}
.contacto p{color:var(--grafito); max-width:480px; margin:0 auto 36px;}
.lista-contacto{display:flex; justify-content:center; gap:40px; flex-wrap:wrap; font-size:15px;}
.lista-contacto a{border-bottom:1px solid var(--linea); padding-bottom:2px;}
.lista-contacto a:hover, .lista-contacto a:focus-visible{border-color:var(--tinta);}
.nota-editor{font-size:12px; background:#fff8e1; color:#5a4a00; border:1px dashed #d9c46a; padding:8px 12px; margin-top:14px; display:inline-block;}

/* --- pie --- */
.pie{border-top:1px solid var(--linea); padding:32px 24px; display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:12px; font-size:13px; color:var(--grafito);}
.pie-legal{flex-basis:100%; display:flex; gap:18px; flex-wrap:wrap; padding-top:12px; margin-top:12px; border-top:1px solid var(--linea); font-size:12px;}
.pie-legal a, .pie-legal button{font:inherit; font-size:12px; color:var(--grafito); background:none; border:none; border-bottom:1px solid transparent; padding:0; cursor:pointer;}
.pie-legal a:hover, .pie-legal a:focus-visible, .pie-legal button:hover, .pie-legal button:focus-visible{color:var(--tinta); border-color:var(--linea);}

/* --- páginas legales --- */
.hero-legal{padding:64px 24px 20px; border-bottom:none;}
.contenido-legal{max-width:760px; margin:0 auto; padding:64px 24px 100px;}
.contenido-legal .actualizado{font-size:13px; color:var(--grafito); margin-bottom:40px;}
.contenido-legal h2{font-size:22px; margin:44px 0 14px;}
.contenido-legal h2:first-of-type{margin-top:0;}
.contenido-legal p{margin-bottom:16px;}
.contenido-legal ul{list-style:disc; padding-left:22px; margin-bottom:16px;}
.contenido-legal li{margin-bottom:6px;}
.contenido-legal a{border-bottom:1px solid var(--linea);}
.contenido-legal a:hover, .contenido-legal a:focus-visible{border-color:var(--tinta);}
.contenido-legal table{width:100%; border-collapse:collapse; margin-bottom:20px; font-size:14px;}
.contenido-legal th, .contenido-legal td{border:1px solid var(--linea); padding:10px 12px; text-align:left; vertical-align:top;}
.contenido-legal th{background:var(--piedra); font-weight:600;}
.aviso-pendiente{font-size:13px; background:#fff8e1; color:#5a4a00; border:1px dashed #d9c46a; padding:10px 14px; margin-bottom:16px; display:block;}

/* --- banner de cookies --- */
.banner-cookies{
  position:fixed; left:0; right:0; bottom:0; z-index:100;
  background:var(--papel); border-top:1px solid var(--linea);
  box-shadow:0 -4px 24px rgba(10,10,10,0.08);
  padding:20px 24px; display:none;
}
.banner-cookies.visible{display:block;}
.banner-cookies__interior{max-width:1120px; margin:0 auto; display:flex; gap:20px; align-items:center; flex-wrap:wrap; justify-content:space-between;}
.banner-cookies p{font-size:13px; color:var(--grafito); max-width:640px; margin:0;}
.banner-cookies p a{color:var(--tinta); border-bottom:1px solid var(--linea);}
.banner-cookies__acciones{display:flex; gap:10px; flex-wrap:wrap;}
.boton--relleno{background:var(--tinta); color:var(--papel);}
.boton--relleno:hover, .boton--relleno:focus-visible{background:var(--papel); color:var(--tinta);}
.boton--texto{border-color:transparent; padding:10px 6px;}
.boton--texto:hover, .boton--texto:focus-visible{background:transparent; color:var(--tinta); border-color:transparent; text-decoration:underline;}

.dialog-cookies{border:none; padding:0; max-width:520px; width:92vw; max-height:88vh; overflow:auto;}
.dialog-cookies::backdrop{background:rgba(10,10,10,0.55);}
.dialog-cookies__interior{padding:32px 28px;}
.dialog-cookies h2{font-size:20px; margin-bottom:8px;}
.dialog-cookies p{font-size:13px; color:var(--grafito); margin-bottom:20px;}
.opcion-cookie{display:flex; justify-content:space-between; align-items:flex-start; gap:16px; padding:14px 0; border-top:1px solid var(--linea);}
.opcion-cookie__texto strong{display:block; font-size:14px; margin-bottom:2px;}
.opcion-cookie__texto span{font-size:13px; color:var(--grafito);}
.opcion-cookie input[type="checkbox"]{width:18px; height:18px; flex-shrink:0; margin-top:2px;}
.dialog-cookies__acciones{display:flex; gap:10px; flex-wrap:wrap; margin-top:24px;}
