/* =============== Variables de Tema =============== */
:root {
  --primary: #5d3fd3;
  --accent:  #f4c430;
  --dark:    #1b1b2f;
  --light:   #f8f8ff;
  --text:    #222;
  --transition: 0.4s ease;
}

/* =============== Reset & Base =============== */
* { margin:0; padding:0; box-sizing:border-box; }
body {
  font-family:'Roboto', sans-serif;
  background:var(--light);
  color:var(--text);
  overflow-x:hidden;
}
.container { width:90%; max-width:1200px; margin:0 auto; }

/* =============== Preloader =============== */
#preloader {
  position:fixed; inset:0; background:#fff; z-index:2000;
  display:flex; align-items:center; justify-content:center;
}
.spinner {
  width:50px; height:50px;
  border:5px solid #eee; border-top-color:var(--primary);
  border-radius:50%; animation:spin 1s linear infinite;
}
@keyframes spin { to{ transform:rotate(360deg); } }

/* =============== Navbar =============== */
.navbar {
  position:fixed; top:0; width:100%;
  background:rgba(27,27,47,0.85); backdrop-filter:blur(8px);
  z-index:1000; padding:1rem 0;
}
.navbar .logo img { height:50px; }
.menu { display:flex; gap:2rem; }
.menu ul { list-style:none; display:flex; gap:2rem; }
.nav-link {
  color:var(--light); text-decoration:none; font-weight:500;
  position:relative; transition:color var(--transition);
}
.nav-link::after {
  content:''; position:absolute; left:0; bottom:-4px;
  width:0; height:2px; background:var(--accent);
  transition:width var(--transition);
}
.nav-link:hover, .nav-link.active { color:var(--accent); }
.nav-link:hover::after, .nav-link.active::after { width:100%; }

/* Mobile menu */
.menu-toggle {
  display:none; background:none; border:none;
  color:var(--light); font-size:1.5rem;
}
@media(max-width:768px){
  .menu { position:absolute; top:100%; left:0;
    width:100%; flex-direction:column; background:var(--dark);
    max-height:0; overflow:hidden; transition:max-height var(--transition);
  }
  .menu.open { max-height:300px; }
  .menu-toggle { display:block; }
}

/* =============== Hero =============== */
.hero {
  position:relative; height:100vh; overflow:hidden;
}
.hero-slides { position:relative; height:100%; }
.slide {
  position:absolute; inset:0;
  background-size:cover; background-position:center;
  opacity:0; transition:opacity 1s ease;
}
.slide.active { opacity:1; }
.hero-overlay {
  position:absolute; inset:0;
  background:rgba(0,0,0,0.5);
}
.hero-content {
  position:absolute; inset:0;
  display:flex; flex-direction:column;
  justify-content:center; align-items:center; text-align:center;
  color:var(--light); padding:0 1rem;
}
.hero-content h1 {
  font-family:'Libre Baskerville', serif;
  font-size:3rem; margin-bottom:0.5rem;
}
.hero-content p {
  font-size:1.2rem; margin-bottom:1.5rem;
}
.btn {
  padding:0.8rem 2rem; border:none; border-radius:50px;
  cursor:pointer; transition:transform var(--transition);
}
.cta-main {
  background:var(--accent); color:var(--dark); font-weight:600;
}
.cta-main:hover { transform:translateY(-3px) scale(1.05); }

/* =============== Services =============== */
.section-title {
  text-align:center; font-size:2.5rem;
  margin:3rem 0 1.5rem; color:var(--dark);
}
.service-grid {
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(220px,1fr));
  gap:2rem;
}
.service-card {
  background:#fff; padding:2rem; border-radius:1rem;
  box-shadow:0 5px 15px rgba(0,0,0,0.1);
  text-align:center; transition:transform var(--transition);
  opacity:0; transform:translateY(20px);
}
.service-card.animate-on-scroll.active {
  opacity:1; transform:translateY(0);
}
.service-card .icon {
  font-size:2.5rem; color:var(--primary);
  margin-bottom:1rem;
}
.service-card h3 { margin-bottom:0.5rem; }
.service-card p { font-size:0.95rem; }

/* Hover */
.service-card:hover {
  transform:translateY(-10px);
  box-shadow:0 10px 20px rgba(0,0,0,0.15);
}

/* =============== Gallery =============== */
.gallery-grid {
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(200px,1fr));
  gap:1rem; margin-bottom:3rem;
}
.gallery-item {
  width:100%; border-radius:0.5rem;
  object-fit:cover; height:200px;
  opacity:0; transform:scale(0.9);
  transition:opacity var(--transition), transform var(--transition);
}
.gallery-item.animate-on-scroll.active {
  opacity:1; transform:scale(1);
}

/* =============== Testimonials =============== */
.testimonials {
  background:var(--dark); color:var(--light);
  padding:3rem 0;
}
.testimonial-slider {
  position:relative; max-width:700px; margin:0 auto;
}
.testimonial {
  position:absolute; inset:0; opacity:0;
  transition:opacity 1s ease;
  padding:1rem 2rem; text-align:center;
}
.testimonial.active { opacity:1; }
.testimonial p { font-style:italic; margin-bottom:1rem; }
.testimonial span { font-weight:700; }

/* =============== WhatsApp =============== */
.whatsapp-fixed {
  position:fixed; bottom:2rem; right:2rem;
  background:#25D366; color:#fff; width:60px; height:60px;
  border-radius:50%; display:flex; align-items:center;
  justify-content:center; font-size:1.8rem;
  box-shadow:0 8px 30px rgba(37,211,102,0.4);
  transition:transform var(--transition);
}
.whatsapp-fixed:hover {
  transform:scale(1.1);
}

/* =============== Footer =============== */
.footer {
  background:var(--dark); color:var(--light);
  padding:2rem 0 1rem;
}
.footer-grid {
  display:grid; grid-template-columns:repeat(auto-fit,minmax(200px,1fr));
  gap:1.5rem; margin-bottom:1.5rem;
}
.footer h3 { margin-bottom:0.5rem; }
.footer a { color:var(--light); text-decoration:none; }
.footer a:hover { color:var(--accent); }
.copy { text-align:center; font-size:0.9rem; }

/* =============== Modal =============== */
.modal {
  position:fixed; inset:0; background:rgba(0,0,0,0.7);
  display:none; align-items:center; justify-content:center;
  padding:1rem; z-index:1500;
}
.modal.active { display:flex; }
.modal-content {
  background:#fff; padding:2rem; border-radius:1rem;
  position:relative; max-width:400px; width:100%;
}
.modal-close {
  position:absolute; top:1rem; right:1rem; background:none;
  border:none; font-size:1.5rem; cursor:pointer;
}
.modal-content input, .modal-content textarea {
  width:100%; padding:0.8rem; margin-bottom:1rem;
  border:1px solid #ccc; border-radius:0.5rem;
}
.modal-content .btn {
  width:100%; background:var(--primary); color:#fff;
  font-size:1rem; border-radius:50px;
}

/* =============== Utilities =============== */
.animate-on-scroll { opacity:0; transform:translateY(20px); }
.active { opacity:1 !important; transform:translateY(0) !important; }

/* =============== Responsive =============== */
@media(max-width:600px){
  .hero-content h1 { font-size:2rem; }
  .section-title { font-size:2rem; }
}
