// ServiciosV5 — Luxury Soft, composición editorial con agrupamiento por categorías
 
const ServiciosV5 = ({ setPage }) => {
  const [open, setOpen] = React.useState(null);
  const [filter, setFilter] = React.useState('Todos');
  const [visible, setVisible] = React.useState({});
  const refs = React.useRef({});
 
  // Intersection Observer para animar la aparición de los bloques de categorías
  React.useEffect(() => {
    const observer = new IntersectionObserver(
      (entries) => {
        entries.forEach(entry => {
          if (entry.isIntersecting) {
            setVisible(prev => ({ ...prev, [entry.target.getAttribute('data-key')]: true }));
          }
        });
      },
      { threshold: 0.08 }
    );
 
    Object.values(refs.current).forEach(el => {
      if (el) observer.observe(el);
    });
    return () => observer.disconnect();
  }, []);
 
  const services = [
    { id: 'facial', name: 'Limpieza Facial Profunda', price: '$25.000', alt: '2 por $40.000', duration: '60 min', tag: 'Más solicitado',
      category: 'Cosmetología',
      img: 'uploads/facial_service.png',
      desc: 'Limpieza profunda que remueve impurezas, células muertas y exceso de sebo. Incluye vapor facial, extracción, mascarilla hidratante y protector solar final.',
      benefits: ['Poros desobstruidos', 'Piel hidratada y luminosa', 'Reducción de imperfecciones', 'Mascarilla personalizada', 'Extracción sin daño', 'Resultados desde la primera sesión'] },
    { id: 'relajacion', name: 'Masaje de Relajación', price: '$30.000', alt: null, duration: '60 min', tag: 'Favorito',
      category: 'Masoterapia',
      img: 'uploads/massage_service.png',
      desc: 'Una hora de bienestar total. Técnicas suaves y envolventes que liberan la tensión acumulada, relajan el sistema nervioso y reconectan el cuerpo con la calma.',
      benefits: ['Reduce el estrés', 'Alivia tensión muscular', 'Mejora la circulación', 'Libera endorfinas', 'Sueño reparador', 'Bienestar total'] },
    { id: 'express', name: 'Masaje Express', price: '$20.000', alt: null, duration: '30 min', tag: 'Ideal para comenzar',
      category: 'Masoterapia',
      img: 'uploads/massage_service.png',
      desc: 'Ideal si buscas regalarte una pausa de bienestar en poco tiempo. 30 minutos que liberan tensiones, relajan la mente y renuevan tus energías.',
      benefits: ['Disminuye estrés', 'Relaja cuerpo y mente', 'Mejora bienestar general', 'Rápido y efectivo', 'Sin cita previa disponible', 'Precio accesible'] },
    { id: 'piernas', name: 'Masaje de Piernas Cansadas', price: '$20.000', alt: null, duration: '30 min', tag: null,
      category: 'Masoterapia',
      img: 'uploads/massage_service.png',
      desc: 'Alivia pesadez, cansancio y tensión en las piernas. Ideal para quienes permanecen mucho tiempo de pie o sentadas.',
      benefits: ['Alivia pesadez', 'Activa la circulación', 'Reduce inflamación', 'Drena líquidos', 'Piernas ligeras', 'Efecto inmediato'] },
    { id: 'descontracturante', name: 'Masaje Descontracturante', price: 'desde $25.000', alt: null, duration: '60 min', tag: null,
      category: 'Masoterapia',
      img: 'uploads/massage_service.png',
      desc: 'Indicado para dolor muscular intenso y contracturas. Trabaja zonas específicas con presión profunda y técnicas terapéuticas.',
      benefits: ['Libera contracturas', 'Alivia dolor cervical', 'Mejora rango de movimiento', 'Técnica terapéutica', 'Ideal post-estrés', 'Efecto duradero'] },
    { id: 'lash', name: 'Lash Lifting', price: 'Consultar', alt: null, duration: '45 min', tag: '20% OFF',
      category: 'Cosmetología',
      img: 'uploads/lash_service.png',
      desc: 'Curvatura y definición desde la raíz sin extensiones. Ojos más abiertos y definidos de forma natural. Duración de 6 a 8 semanas.',
      benefits: ['Sin extensiones', 'Duración 6–8 semanas', 'Efecto natural', 'No daña las pestañas', 'Resistente al agua', 'Sin mantenimiento diario'] },
    { id: 'reductor', name: 'Tratamiento Reductor', price: '$220.000', alt: 'Pack 10 sesiones', duration: '10 sesiones', tag: 'Pack completo',
      category: 'Corporales',
      img: 'uploads/body_treatment.png',
      desc: 'Programa completo de transformación corporal. Masajes reductores, aparatología avanzada, drenaje linfático y seguimiento semanal.',
      benefits: ['10 sesiones', 'Masajes reductores', 'Aparatología', 'Drenaje linfático', 'Tratamiento reafirmante', 'Seguimiento semanal'] },
    { id: 'giftcard', name: 'Gift Card', price: 'A tu medida', alt: null, duration: '—', tag: null,
      category: 'Otros Servicios',
      img: 'uploads/gift_card_beauty.png',
      desc: 'El regalo perfecto. Elige el servicio o el monto y la gift card digital llega al instante por email. Válida por 6 meses.',
      benefits: ['Válida 6 meses', 'Canjeable en todo', 'Llega por email', 'Mensaje personalizado', 'Compra online', 'Ideal para regalar'] },
  ];
 
  const CheckIcon = () => (
    <svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="#88C9C1" strokeWidth="2.5" strokeLinecap="round" strokeLinejoin="round">
      <polyline points="20 6 9 17 4 12"/>
    </svg>
  );
 
  // Group services by category
  const allCategories = ['Cosmetología', 'Masoterapia', 'Corporales', 'Otros Servicios'];
  const categoriesOrder = filter === 'Todos' ? allCategories : [filter];
  const servicesByCategory = {};
  services.forEach(s => {
    const cat = s.category || 'Otros Servicios';
    if (!servicesByCategory[cat]) {
      servicesByCategory[cat] = [];
    }
    servicesByCategory[cat].push(s);
  });
 
  return (
    <div style={{ minHeight: '100vh', background: '#FAFAF8', paddingTop: 88, paddingBottom: 120 }}>
      <style>{`
        @import url('https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,300;0,400;0,500;1,300;1,400&family=Outfit:wght@300;400;500;600&display=swap');
        @keyframes svcFadeUp { from { opacity:0; transform:translateY(40px); } to { opacity:1; transform:translateY(0); } }
        
        .svc5-promo-card { transition: all 0.3s cubic-bezier(0.16,1,0.3,1) !important; }
        .svc5-promo-card:hover { transform: translateY(-4px) !important; box-shadow: 0 12px 28px rgba(136,201,193,0.15) !important; border-color: #88C9C1 !important; }
        
        .svc5-category-block {
          background: #fff !important;
          border: 1px solid rgba(136, 201, 193, 0.22) !important;
          border-radius: 24px !important;
          padding: 36px 32px !important;
          margin-bottom: 40px !important;
          box-shadow: 0 8px 32px rgba(136, 201, 193, 0.04) !important;
          transition: opacity 0.8s cubic-bezier(0.16, 1, 0.3, 1), transform 0.8s cubic-bezier(0.16, 1, 0.3, 1) !important;
        }
        
        .svc5-item-row {
          display: flex !important;
          align-items: flex-start !important;
          gap: 32px !important;
          padding-bottom: 32px !important;
          border-bottom: 1px solid rgba(136, 201, 193, 0.12) !important;
        }
        .svc5-item-row:last-child {
          border-bottom: none !important;
          padding-bottom: 0 !important;
        }
        
        .svc5-item-img {
          width: 150px !important;
          height: 110px !important;
          border-radius: 12px !important;
          overflow: hidden !important;
          flex-shrink: 0 !important;
          background: linear-gradient(135deg, #E8F5F3, #FCE8EC) !important;
        }
        .svc5-item-img img {
          width: 100% !important;
          height: 100% !important;
          object-fit: cover !important;
          transition: transform 0.6s cubic-bezier(0.16, 1, 0.3, 1) !important;
        }
        .svc5-item-img:hover img {
          transform: scale(1.06) !important;
        }
        
        .svc5-book-btn {
          background: transparent !important;
          border: 1.5px solid rgba(136,201,193,0.7) !important;
          color: #88C9C1 !important;
          font-family: 'Outfit',sans-serif !important;
          text-transform: uppercase !important;
          letter-spacing: 1.5px !important;
          border-radius: 40px !important;
          cursor: pointer !important;
          transition: all 0.3s cubic-bezier(0.16,1,0.3,1) !important;
        }
        .svc5-book-btn:hover {
          background: #88C9C1 !important;
          color: #fff !important;
          border-color: #88C9C1 !important;
          transform: translateY(-2px) !important;
          box-shadow: 0 6px 18px rgba(136,201,193,0.3) !important;
        }
        
        .svc5-toggle-btn {
          background: none !important;
          border: none !important;
          padding: 0 !important;
          cursor: pointer !important;
          font-family: 'Outfit',sans-serif !important;
          font-size: 11px !important;
          letter-spacing: 1px !important;
          text-transform: uppercase !important;
          color: #777 !important;
          transition: color 0.2s !important;
        }
        .svc5-toggle-btn:hover {
          color: #88C9C1 !important;
        }
        .svc5-benefits-in {
          animation: svcFadeUp 0.4s cubic-bezier(0.16,1,0.3,1) both !important;
        }
        
        .svc5-desc-mobile-only { display: none !important; }
        
        @media(max-width:820px){
          .svc5-promo-grid { grid-template-columns: 1fr !important; gap: 16px !important; }
        }
        @media(max-width:640px){
          .svc5-item-row {
            flex-direction: column !important;
            gap: 16px !important;
          }
          .svc5-item-img {
            width: 100% !important;
            height: 160px !important;
          }
          .svc5-category-block {
            padding: 24px 20px !important;
            margin-bottom: 24px !important;
          }
          .svc5-desc-desktop { display: none !important; }
          .svc5-desc-mobile-only { display: block !important; margin-bottom: 16px !important; }
        }
      `}</style>
 
      {/* ─── Hero Header ─────────────────────────────────────── */}
      <div style={{ textAlign: 'center', padding: '64px 24px 80px', animation: 'svcFadeUp 1s cubic-bezier(0.16,1,0.3,1) both' }}>
        <div style={{ fontFamily: "'Outfit',sans-serif", fontSize: 10, letterSpacing: 6, color: '#88C9C1', textTransform: 'uppercase', fontWeight: 600, marginBottom: 20 }}>
          Experiencias de Bienestar
        </div>
        <h1 style={{ fontFamily: "'Cormorant Garamond',serif", fontSize: 'clamp(52px,7vw,96px)', fontWeight: 300, fontStyle: 'italic', color: '#1a1a1a', margin: '0 0 28px', lineHeight: 0.9, letterSpacing: '-0.01em' }}>
          El arte de<br/>
          <span style={{ color: '#88C9C1' }}>cuidarte</span>
        </h1>
        <p style={{ fontFamily: "'Outfit',sans-serif", fontSize: 16, fontWeight: 300, color: '#666', maxWidth: 480, margin: '0 auto 40px', lineHeight: 1.85 }}>
          Tratamientos diseñados para nutrir tu piel, relajar tu cuerpo y reconectar con tu bienestar. Cada sesión es un acto de amor propio.
        </p>
        <div style={{ width: 40, height: 1, background: 'linear-gradient(90deg,transparent,#C9A96E,transparent)', margin: '0 auto' }}/>
      </div>
 
      {/* ─── Banner de Promociones ─────────────────────────── */}
      <div style={{ maxWidth: 1200, margin: '-20px auto 80px', padding: '0 32px', animation: 'svcFadeUp 1.2s cubic-bezier(0.16,1,0.3,1) both' }}>
        <div style={{
          background: 'linear-gradient(135deg, #FCE8EC 0%, #FAFAF8 50%, #E8F5F3 100%)',
          borderRadius: '24px',
          padding: '40px 32px',
          border: '1px solid rgba(136, 201, 193, 0.25)',
          boxShadow: '0 8px 32px rgba(136, 201, 193, 0.06)'
        }}>
          <div style={{ textAlign: 'center', marginBottom: '32px' }}>
            <span style={{ fontFamily: "'Outfit', sans-serif", fontSize: '10px', letterSpacing: '3px', color: '#88C9C1', fontWeight: 600, textTransform: 'uppercase', display: 'block', marginBottom: '8px' }}>
              Propuestas Especiales
            </span>
            <h2 style={{ fontFamily: "'Cormorant Garamond', serif", fontSize: '32px', color: '#1a1a1a', fontWeight: 500, fontStyle: 'italic', margin: 0 }}>
              Promociones Destacadas
            </h2>
          </div>
          
          <div className="svc5-promo-grid" style={{ display: 'grid', gridTemplateColumns: 'repeat(3, 1fr)', gap: '24px' }}>
            {[
              { title: 'Dúo Limpieza Facial', badge: 'Dos Personas', price: '$40.000', original: '$50.000', desc: 'Reserva para ti y un acompañante. Incluye dos limpiezas faciales profundas completas.', targetId: 'facial' },
              { title: 'Lash Lifting Radiante', badge: 'Mirada Perfecta', price: 'Consultar', original: null, desc: 'Curvatura natural y definición desde la raíz. Destaca tu mirada sin necesidad de extensiones.', targetId: 'lash' },
              { title: 'Tratamiento Reductor', badge: '10 Sesiones', price: '$220.000', original: '$250.000', desc: 'Plan intensivo reductor y reafirmante con aparatología avanzada y masajes drenantes.', targetId: 'reductor' }
            ].map((promo, idx) => (
              <div key={idx} 
                className="svc5-promo-card"
                onClick={() => {
                  const targetEl = document.querySelector(`[data-key="${promo.targetId}"]`);
                  if (targetEl) {
                    targetEl.scrollIntoView({ behavior: 'smooth', block: 'center' });
                  }
                }}
                style={{
                  background: '#fff',
                  borderRadius: '16px',
                  padding: '24px',
                  border: '1px solid rgba(136, 201, 193, 0.15)',
                  display: 'flex',
                  flexDirection: 'column',
                  justifyContent: 'space-between',
                  boxShadow: '0 4px 12px rgba(0,0,0,0.01)',
                  cursor: 'pointer'
                }}
              >
                <div>
                  <span style={{ 
                    fontFamily: "'Outfit', sans-serif", 
                    fontSize: '9px', 
                    fontWeight: 600, 
                    letterSpacing: '1px', 
                    color: '#2d6a61', 
                    background: '#E8F5F3', 
                    padding: '4px 10px', 
                    borderRadius: '20px', 
                    display: 'inline-block', 
                    marginBottom: '16px',
                    textTransform: 'uppercase'
                  }}>
                    {promo.badge}
                  </span>
                  <h3 style={{ fontFamily: "'Cormorant Garamond', serif", fontSize: '22px', fontWeight: 600, color: '#1a1a1a', marginBottom: '8px' }}>
                    {promo.title}
                  </h3>
                  <p style={{ fontFamily: "'Outfit', sans-serif", fontSize: '13px', color: '#666', lineHeight: '1.5', marginBottom: '20px' }}>
                    {promo.desc}
                  </p>
                </div>
                
                <div style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center', marginTop: '12px', paddingTop: '12px', borderTop: '1px solid rgba(0,0,0,0.04)' }}>
                  <div>
                    {promo.original && (
                      <span style={{ fontFamily: "'Outfit', sans-serif", fontSize: '11px', color: '#999', textDecoration: 'line-through', marginRight: '6px' }}>
                        {promo.original}
                      </span>
                    )}
                    <span style={{ fontFamily: "'Outfit', sans-serif", fontSize: '16px', fontWeight: 600, color: '#C9A96E' }}>
                      {promo.price}
                    </span>
                  </div>
                  <span style={{ fontFamily: "'Outfit', sans-serif", fontSize: '11px', color: '#88C9C1', fontWeight: 600, letterSpacing: '1.5px', textTransform: 'uppercase' }}>
                    Ver más →
                  </span>
                </div>
              </div>
            ))}
          </div>
        </div>
      </div>
 
      {/* ─── Filters ───────────────────────────────────────────── */}
      <div style={{ maxWidth: 1200, margin: '0 auto 40px', padding: '0 32px', display: 'flex', flexWrap: 'wrap', gap: '8px', justifyContent: 'center', animation: 'svcFadeUp 1.4s cubic-bezier(0.16,1,0.3,1) both' }}>
        {['Todos', ...allCategories].map(cat => (
          <button
            key={cat}
            onClick={() => setFilter(cat)}
            style={{
              padding: '8px 20px',
              borderRadius: '40px',
              fontFamily: "'Outfit', sans-serif",
              fontSize: '12px',
              fontWeight: 600,
              textTransform: 'uppercase',
              letterSpacing: '1px',
              cursor: 'pointer',
              border: filter === cat ? '1.5px solid #88C9C1' : '1.5px solid rgba(136, 201, 193, 0.3)',
              background: filter === cat ? '#88C9C1' : 'transparent',
              color: filter === cat ? '#fff' : '#2d6a61',
              transition: 'all 0.3s'
            }}
          >
            {cat}
          </button>
        ))}
      </div>

      {/* ─── Services List (grouped by category) ─────────────── */}
      <div style={{ maxWidth: 1200, margin: '0 auto', padding: '0 32px' }}>
        {categoriesOrder.map(categoryName => {
          const servicesInCat = servicesByCategory[categoryName] || [];
          if (servicesInCat.length === 0) return null;
          const isVis = visible[categoryName];
          
          return (
            <div
              key={categoryName}
              data-key={categoryName}
              ref={el => { refs.current[categoryName] = el; }}
              className={`svc5-category-block`}
              style={{
                opacity: isVis ? 1 : 0,
                transform: isVis ? 'translateY(0)' : 'translateY(40px)',
              }}
            >
              <h2 style={{
                fontFamily: "'Cormorant Garamond', serif",
                fontSize: '28px',
                fontWeight: 600,
                fontStyle: 'italic',
                color: '#1a1a1a',
                marginBottom: '28px',
                borderBottom: '1.5px solid rgba(136, 201, 193, 0.15)',
                paddingBottom: '12px',
                display: 'flex',
                alignItems: 'center',
                gap: '8px'
              }}>
                <span style={{ fontSize: '20px' }}>🌿</span> {categoryName}
              </h2>
              
              <div style={{ display: 'flex', flexDirection: 'column', gap: '32px' }}>
                {servicesInCat.map(s => (
                  <div 
                    key={s.id} 
                    data-key={s.id} 
                    className="svc5-item-row"
                  >
                    {/* Image */}
                    <div className="svc5-item-img">
                      <img
                        src={s.img}
                        alt={s.name}
                        onError={e => { e.target.src = `https://picsum.photos/seed/${s.id}/400/300`; }}
                      />
                    </div>
                    
                    {/* Details */}
                    <div style={{ flex: 1, display: 'flex', flexDirection: 'column', justifyContent: 'space-between', alignSelf: 'stretch' }}>
                      <div>
                        <div style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'flex-start', flexWrap: 'wrap', gap: '8px', marginBottom: '6px' }}>
                          <h3 style={{ fontFamily: "'Cormorant Garamond', serif", fontSize: '22px', fontWeight: 600, color: '#1a1a1a', margin: 0 }}>
                            {s.name}
                          </h3>
                          <span style={{ fontFamily: "'Outfit', sans-serif", fontSize: '18px', fontWeight: 600, color: '#C9A96E' }}>
                            {s.price}
                          </span>
                        </div>
                        
                        <div style={{ display: 'flex', gap: '12px', alignItems: 'center', marginBottom: '12px', flexWrap: 'wrap' }}>
                          {s.tag && (
                            <span style={{ 
                              fontFamily: "'Outfit', sans-serif", 
                              fontSize: '9px', 
                              fontWeight: 600, 
                              letterSpacing: '1px', 
                              textTransform: 'uppercase', 
                              color: '#2d6a61', 
                              background: '#E8F5F3', 
                              padding: '2px 8px', 
                              borderRadius: '4px' 
                            }}>
                              {s.tag}
                            </span>
                          )}
                          <span style={{ fontFamily: "'Outfit', sans-serif", fontSize: '11px', color: '#88C9C1', fontWeight: 500 }}>
                            ⏱ {s.duration}
                          </span>
                          {s.alt && (
                            <span style={{ fontFamily: "'Outfit', sans-serif", fontSize: '11px', color: '#C9A96E', fontWeight: 500 }}>
                              • {s.alt}
                            </span>
                          )}
                        </div>
                        
                        <p className="svc5-desc-desktop" style={{ fontFamily: "'Outfit', sans-serif", fontSize: '14px', color: '#666', lineHeight: '1.6', margin: '0 0 16px' }}>
                          {s.desc}
                        </p>
                      </div>
                      
                      <div>
                        <div style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center', flexWrap: 'wrap', gap: '12px' }}>
                          <button className="svc5-toggle-btn" onClick={() => setOpen(open === s.id ? null : s.id)} style={{ borderBottom: '1px dashed #777', paddingBottom: '2px' }}>
                            {open === s.id ? 'Ocultar detalles ▲' : 'Ver beneficios ▼'}
                          </button>
                          <button 
                            className="svc5-book-btn" 
                            onClick={() => {
                              localStorage.setItem('eadq_selected_service_name', s.name);
                              setPage('agenda');
                            }}
                            style={{ padding: '10px 24px', fontSize: '11px' }}
                          >
                            Reservar sesión
                          </button>
                        </div>
                        
                        {open === s.id && (
                          <div className="svc5-benefits-in" style={{ 
                            marginTop: '20px', 
                            background: '#F8FBFB', 
                            padding: '20px', 
                            borderRadius: '16px', 
                            border: '1px solid rgba(136, 201, 193, 0.15)' 
                          }}>
                            <p className="svc5-desc-mobile-only" style={{ fontFamily: "'Outfit', sans-serif", fontSize: '14px', color: '#666', lineHeight: '1.6' }}>
                              {s.desc}
                            </p>
                            <div style={{ display: 'grid', gridTemplateColumns: 'repeat(auto-fill, minmax(140px, 1fr))', gap: '10px 20px' }}>
                              {s.benefits.map(b => (
                                <div key={b} style={{ display: 'flex', alignItems: 'flex-start', gap: 10, fontFamily: "'Outfit', sans-serif", fontSize: '13px', fontWeight: 300, color: '#444', lineHeight: 1.5 }}>
                                  <span style={{ marginTop: 2, flexShrink: 0 }}><CheckIcon /></span>
                                  <span>{b}</span>
                                </div>
                              ))}
                            </div>
                          </div>
                        )}
                      </div>
                    </div>
                  </div>
                ))}
              </div>
            </div>
          );
        })}
      </div>
 
      {/* ─── Bottom CTA ─────────────────────────────────────── */}
      <div style={{ textAlign: 'center', marginTop: 120, padding: '0 24px' }}>
        <div style={{ fontFamily: "'Cormorant Garamond',serif", fontStyle: 'italic', fontSize: 28, color: '#1a1a1a', marginBottom: 8, fontWeight: 300 }}>
          ¿No sabes cuál elegir?
        </div>
        <p style={{ fontFamily: "'Outfit',sans-serif", fontSize: 14, color: '#888', marginBottom: 32 }}>
          Escríbenos y te ayudamos a encontrar el tratamiento ideal para ti.
        </p>
        <a href="https://wa.me/56983059044" target="_blank" rel="noopener" style={{ display: 'inline-flex', alignItems: 'center', gap: 10, textDecoration: 'none', background: '#25D366', color: '#fff', fontFamily: "'Outfit',sans-serif", fontSize: 11, letterSpacing: 2, textTransform: 'uppercase', padding: '14px 32px', borderRadius: 40, boxShadow: '0 4px 20px rgba(37,211,102,0.3)', transition: 'all 0.3s' }}
          onMouseEnter={e => { e.currentTarget.style.transform='translateY(-2px)'; e.currentTarget.style.boxShadow='0 8px 28px rgba(37,211,102,0.45)'; }}
          onMouseLeave={e => { e.currentTarget.style.transform='none'; e.currentTarget.style.boxShadow='0 4px 20px rgba(37,211,102,0.3)'; }}
        >
          Consultar por WhatsApp
        </a>
      </div>
    </div>
  );
};
 
Object.assign(window, { ServiciosV5 });
