/* ==================== */ /* COMPONENTE: GALERÍA PREMIUM MODERNA */ /* ==================== */ .gallery-premium { padding: 5rem clamp(1rem, 3vw, 2rem); max-width: var(--max-width); margin: 0 auto; background: linear-gradient(135deg, var(--primary) 0%, var(--surface) 100%); border-radius: 40px; margin-top: 2rem; margin-bottom: 2rem; position: relative; overflow: hidden; } /* Background decoration */ .gallery-premium::before { content: ""; position: absolute; top: 0; left: 0; right: 0; height: 100%; background: radial-gradient( circle at 20% 50%, rgba(var(--accent-rgb), 0.03) 0%, transparent 50% ); pointer-events: none; } .gallery-premium-header { text-align: center; margin-bottom: 4rem; position: relative; } .gallery-premium-subtitle { display: inline-flex; align-items: center; gap: 8px; background: rgba(var(--accent-rgb), 0.1); backdrop-filter: blur(10px); padding: 0.5rem 1.5rem; border-radius: 50px; color: var(--accent); font-size: 0.9rem; font-weight: 500; text-transform: uppercase; letter-spacing: 2px; margin-bottom: 1rem; border: 1px solid rgba(var(--accent-rgb), 0.2); } .gallery-premium-title { font-family: "Space Grotesk", sans-serif; font-size: clamp(2rem, 4vw, 3rem); font-weight: 700; margin-bottom: 1rem; background: linear-gradient( 135deg, var(--text-primary) 0%, var(--accent) 100% ); -webkit-background-clip: text; background-clip: text; color: transparent; } .gallery-premium-description { color: var(--text-secondary); font-size: 1.1rem; max-width: 600px; margin: 0 auto; } /* Grid de galería estilo Masonry */ .gallery-premium-container { column-count: 4; column-gap: 1.5rem; margin-bottom: 3rem; position: relative; } @media (max-width: 1200px) { .gallery-premium-container { column-count: 3; } } @media (max-width: 768px) { .gallery-premium-container { column-count: 2; } } @media (max-width: 480px) { .gallery-premium-container { column-count: 1; } } /* Items de galería */ .gallery-item { break-inside: avoid; margin-bottom: 1.5rem; position: relative; border-radius: 24px; overflow: hidden; cursor: pointer; transform: translateY(0); transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1); } .gallery-item:hover { transform: translateY(-10px); } .gallery-image-wrapper { position: relative; overflow: hidden; border-radius: 24px; background: var(--surface-light); } .gallery-image { width: 100%; height: auto; display: block; transition: transform 0.6s cubic-bezier(0.4, 0, 0.2, 1); } .gallery-item:hover .gallery-image { transform: scale(1.08); } /* Overlay moderno */ .gallery-overlay { position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: linear-gradient( 135deg, rgba(0, 0, 0, 0.85) 0%, rgba(0, 0, 0, 0.4) 50%, transparent 100% ); display: flex; flex-direction: column; justify-content: flex-end; padding: 1.5rem; opacity: 0; transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1); } .gallery-item:hover .gallery-overlay { opacity: 1; } .gallery-info { transform: translateY(20px); transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1); } .gallery-item:hover .gallery-info { transform: translateY(0); } .gallery-title { color: white; font-size: 1.1rem; font-weight: 700; margin-bottom: 0.25rem; display: flex; align-items: center; gap: 8px; } .gallery-title i { font-size: 0.9rem; opacity: 0; transform: translateX(-10px); transition: all 0.3s ease; } .gallery-item:hover .gallery-title i { opacity: 1; transform: translateX(0); } /* Badge de zoom */ .zoom-badge { position: absolute; top: 1rem; right: 1rem; background: rgba(255, 255, 255, 0.2); backdrop-filter: blur(10px); padding: 0.5rem; border-radius: 50%; width: 35px; height: 35px; display: flex; align-items: center; justify-content: center; opacity: 0; transform: scale(0); transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); } .gallery-item:hover .zoom-badge { opacity: 1; transform: scale(1); } .zoom-badge i { color: white; font-size: 1rem; } /* Contador de imágenes */ .gallery-stats { text-align: center; margin-top: 2rem; color: var(--text-secondary); font-size: 0.9rem; } /* Animaciones de entrada */ @keyframes fadeInUp { from { opacity: 0; transform: translateY(30px); } to { opacity: 1; transform: translateY(0); } } .gallery-item { animation: fadeInUp 0.6s ease-out forwards; opacity: 0; } /* Scroll reveal animation */ .gallery-item.revealed { animation: fadeInUp 0.6s ease-out forwards; }