MoShow commited on
Commit
ced4f2a
·
verified ·
1 Parent(s): f1081fe

apply a neutrosophic gris layout style

Browse files
components/culture-grid.js CHANGED
@@ -1,23 +1,31 @@
 
1
  class CustomCultureGrid extends HTMLElement {
2
  connectedCallback() {
3
  this.attachShadow({ mode: 'open' });
4
  this.shadowRoot.innerHTML = `
5
  <style>
6
  .culture-item {
7
- transition: transform 0.3s ease;
 
 
8
  }
9
  .culture-item:hover {
10
- transform: scale(1.03);
 
11
  }
12
  .culture-overlay {
13
  transition: opacity 0.3s ease;
 
 
 
 
14
  }
15
  </style>
16
- <section class="py-16 px-4 md:px-8 lg:px-16 bg-black">
17
  <div class="container mx-auto max-w-7xl">
18
- <h2 class="text-4xl font-bold text-center mb-12 text-yellow-500 px-4">African Cultural Heritage</h2>
19
  <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6 md:gap-8">
20
- ${this.generateCultureItems()}
21
  </div>
22
  </div>
23
  </section>
@@ -26,24 +34,27 @@ ${this.generateCultureItems()}
26
 
27
  generateCultureItems() {
28
  const cultures = [
29
- { title: 'Adinkra Symbols', desc: 'Ancient wisdom encoded in visual language', img: 'http://static.photos/black/640x360/1' },
30
- { title: 'Griot Storytelling', desc: 'Oral traditions preserving history', img: 'http://static.photos/people/640x360/2' },
31
  { title: 'Kente Cloth', desc: 'Vibrant patterns with deep meaning', img: 'http://static.photos/textures/640x360/3' },
32
- { title: 'Maasai Beadwork', desc: 'Colorful communication through art', img: 'http://static.photos/education/640x360/4' },
33
  { title: 'Yoruba Mythology', desc: 'Cosmology of the Orishas', img: 'http://static.photos/abstract/640x360/5' },
34
  { title: 'Ndebele Art', desc: 'Geometric expressions of identity', img: 'http://static.photos/craft/640x360/6' }
35
  ];
36
 
37
  return cultures.map(culture => `
38
- <div class="culture-item relative rounded-xl overflow-hidden glow-hover h-full">
39
- <img src="${culture.img}" alt="${culture.title}" class="w-full h-64 object-cover">
40
- <div class="culture-overlay absolute inset-0 bg-black bg-opacity-70 flex flex-col justify-center items-center opacity-0 p-4">
41
- <h3 class="text-2xl font-bold text-yellow-500 mb-2">${culture.title}</h3>
42
- <p class="text-white text-center">${culture.desc}</p>
43
- <button class="mt-4 bg-yellow-500 text-black px-4 py-2 rounded-full text-sm font-bold">Learn More</button>
 
 
 
44
  </div>
45
  </div>
46
  `).join('');
47
  }
48
  }
49
- customElements.define('custom-culture-grid', CustomCultureGrid);
 
1
+
2
  class CustomCultureGrid extends HTMLElement {
3
  connectedCallback() {
4
  this.attachShadow({ mode: 'open' });
5
  this.shadowRoot.innerHTML = `
6
  <style>
7
  .culture-item {
8
+ transition: all 0.4s ease;
9
+ background: white;
10
+ border: 1px solid rgba(148, 163, 184, 0.2);
11
  }
12
  .culture-item:hover {
13
+ transform: translateY(-5px);
14
+ box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
15
  }
16
  .culture-overlay {
17
  transition: opacity 0.3s ease;
18
+ background: rgba(255, 255, 255, 0.95);
19
+ }
20
+ .culture-item:hover .culture-overlay {
21
+ opacity: 1;
22
  }
23
  </style>
24
+ <section class="py-16 px-4 md:px-8 lg:px-16 bg-slate-100 neutrosophic-grid">
25
  <div class="container mx-auto max-w-7xl">
26
+ <h2 class="text-4xl font-bold text-center mb-12 text-slate-700 px-4 tracking-tight">African Cultural Heritage</h2>
27
  <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6 md:gap-8">
28
+ ${this.generateCultureItems()}
29
  </div>
30
  </div>
31
  </section>
 
34
 
35
  generateCultureItems() {
36
  const cultures = [
37
+ { title: 'Adinkra Symbols', desc: 'Ancient wisdom encoded in visual language', img: 'http://static.photos/monochrome/640x360/1' },
38
+ { title: 'Griot Storytelling', desc: 'Oral traditions preserving history', img: 'http://static.photos/minimal/640x360/2' },
39
  { title: 'Kente Cloth', desc: 'Vibrant patterns with deep meaning', img: 'http://static.photos/textures/640x360/3' },
40
+ { title: 'Maasai Beadwork', desc: 'Colorful communication through art', img: 'http://static.photos/indoor/640x360/4' },
41
  { title: 'Yoruba Mythology', desc: 'Cosmology of the Orishas', img: 'http://static.photos/abstract/640x360/5' },
42
  { title: 'Ndebele Art', desc: 'Geometric expressions of identity', img: 'http://static.photos/craft/640x360/6' }
43
  ];
44
 
45
  return cultures.map(culture => `
46
+ <div class="culture-item relative rounded-lg overflow-hidden h-full group">
47
+ <img src="${culture.img}" alt="${culture.title}" class="w-full h-64 object-cover grayscale hover:grayscale-0 transition-all duration-500">
48
+ <div class="culture-overlay absolute inset-0 flex flex-col justify-center items-center opacity-0 p-6 backdrop-blur-sm">
49
+ <h3 class="text-2xl font-bold text-slate-800 mb-2">${culture.title}</h3>
50
+ <p class="text-slate-600 text-center text-sm leading-relaxed">${culture.desc}</p>
51
+ <button class="mt-4 bg-slate-700 text-white px-6 py-2 rounded-md text-sm font-medium hover:bg-slate-800 transition-colors">Learn More</button>
52
+ </div>
53
+ <div class="p-4 bg-white border-t border-slate-100">
54
+ <h3 class="text-lg font-semibold text-slate-700">${culture.title}</h3>
55
  </div>
56
  </div>
57
  `).join('');
58
  }
59
  }
60
+ customElements.define('custom-culture-grid', CustomCultureGrid);
components/footer.js CHANGED
@@ -1,44 +1,55 @@
 
1
  class CustomFooter extends HTMLElement {
2
  connectedCallback() {
3
  this.attachShadow({ mode: 'open' });
4
  this.shadowRoot.innerHTML = `
5
  <style>
6
  .footer-link:hover {
7
- color: #FACC15;
8
  transform: translateX(5px);
9
  }
 
 
 
 
 
 
 
 
 
 
10
  </style>
11
- <footer class="bg-black border-t border-yellow-500 py-12 px-4 md:px-8">
12
  <div class="container mx-auto max-w-7xl">
13
  <div class="grid grid-cols-1 md:grid-cols-4 gap-8 md:gap-12">
14
- <div>
15
- <h3 class="text-xl font-bold text-yellow-500 mb-4">AfroFuturAI</h3>
16
- <p class="text-gray-400">Bridging tradition and technology for a brighter African future.</p>
17
  </div>
18
  <div>
19
- <h4 class="text-lg font-semibold text-white mb-4">Explore</h4>
20
- <ul class="space-y-2">
21
  ${this.generateLinks(['Home', 'Traditions', 'Innovations', 'Community'])}
22
  </ul>
23
  </div>
24
  <div>
25
- <h4 class="text-lg font-semibold text-white mb-4">Resources</h4>
26
- <ul class="space-y-2">
27
  ${this.generateLinks(['Research Papers', 'API Docs', 'Case Studies', 'Open Source'])}
28
  </ul>
29
  </div>
30
  <div>
31
- <h4 class="text-lg font-semibold text-white mb-4">Connect</h4>
32
  <div class="flex space-x-4 mb-4">
33
- <a href="#" class="text-gray-400 hover:text-yellow-500"><i data-feather="twitter"></i></a>
34
- <a href="#" class="text-gray-400 hover:text-yellow-500"><i data-feather="instagram"></i></a>
35
- <a href="#" class="text-gray-400 hover:text-yellow-500"><i data-feather="linkedin"></i></a>
36
- <a href="#" class="text-gray-400 hover:text-yellow-500"><i data-feather="github"></i></a>
37
  </div>
38
- <p class="text-gray-400">contact@afrofuturai.org</p>
39
  </div>
40
  </div>
41
- <div class="border-t border-gray-800 mt-8 pt-8 text-center text-gray-500">
42
  <p>© 2023 AfroFuturAI Nexus. All rights reserved.</p>
43
  </div>
44
  </div>
@@ -49,11 +60,11 @@ class CustomFooter extends HTMLElement {
49
  generateLinks(links) {
50
  return links.map(link => `
51
  <li>
52
- <a href="#" class="footer-link text-gray-400 transition-all duration-300 flex items-center">
53
  <i data-feather="chevron-right" class="w-4 h-4 mr-1"></i> ${link}
54
  </a>
55
  </li>
56
  `).join('');
57
  }
58
  }
59
- customElements.define('custom-footer', CustomFooter);
 
1
+
2
  class CustomFooter extends HTMLElement {
3
  connectedCallback() {
4
  this.attachShadow({ mode: 'open' });
5
  this.shadowRoot.innerHTML = `
6
  <style>
7
  .footer-link:hover {
8
+ color: #475569;
9
  transform: translateX(5px);
10
  }
11
+ .footer-link {
12
+ transition: all 0.3s ease;
13
+ }
14
+ .social-icon {
15
+ transition: all 0.3s ease;
16
+ }
17
+ .social-icon:hover {
18
+ color: #475569;
19
+ transform: translateY(-2px);
20
+ }
21
  </style>
22
+ <footer class="bg-slate-50 border-t border-slate-200 py-12 px-4 md:px-8">
23
  <div class="container mx-auto max-w-7xl">
24
  <div class="grid grid-cols-1 md:grid-cols-4 gap-8 md:gap-12">
25
+ <div>
26
+ <h3 class="text-xl font-bold text-slate-700 mb-4 tracking-tight">AfroFuturAI</h3>
27
+ <p class="text-slate-500 text-sm leading-relaxed">Bridging tradition and technology for a brighter African future.</p>
28
  </div>
29
  <div>
30
+ <h4 class="text-lg font-semibold text-slate-700 mb-4">Explore</h4>
31
+ <ul class="space-y-3">
32
  ${this.generateLinks(['Home', 'Traditions', 'Innovations', 'Community'])}
33
  </ul>
34
  </div>
35
  <div>
36
+ <h4 class="text-lg font-semibold text-slate-700 mb-4">Resources</h4>
37
+ <ul class="space-y-3">
38
  ${this.generateLinks(['Research Papers', 'API Docs', 'Case Studies', 'Open Source'])}
39
  </ul>
40
  </div>
41
  <div>
42
+ <h4 class="text-lg font-semibold text-slate-700 mb-4">Connect</h4>
43
  <div class="flex space-x-4 mb-4">
44
+ <a href="#" class="social-icon text-slate-400"><i data-feather="twitter" class="w-5 h-5"></i></a>
45
+ <a href="#" class="social-icon text-slate-400"><i data-feather="instagram" class="w-5 h-5"></i></a>
46
+ <a href="#" class="social-icon text-slate-400"><i data-feather="linkedin" class="w-5 h-5"></i></a>
47
+ <a href="#" class="social-icon text-slate-400"><i data-feather="github" class="w-5 h-5"></i></a>
48
  </div>
49
+ <p class="text-slate-500 text-sm">contact@afrofuturai.org</p>
50
  </div>
51
  </div>
52
+ <div class="border-t border-slate-200 mt-8 pt-8 text-center text-slate-400 text-sm">
53
  <p>© 2023 AfroFuturAI Nexus. All rights reserved.</p>
54
  </div>
55
  </div>
 
60
  generateLinks(links) {
61
  return links.map(link => `
62
  <li>
63
+ <a href="#" class="footer-link text-slate-500 text-sm flex items-center hover:text-slate-700">
64
  <i data-feather="chevron-right" class="w-4 h-4 mr-1"></i> ${link}
65
  </a>
66
  </li>
67
  `).join('');
68
  }
69
  }
70
+ customElements.define('custom-footer', CustomFooter);
components/hero.js CHANGED
@@ -1,33 +1,69 @@
 
1
  class CustomHero extends HTMLElement {
2
  connectedCallback() {
3
  this.attachShadow({ mode: 'open' });
4
  this.shadowRoot.innerHTML = `
5
  <style>
6
  .hero-bg {
7
- background: linear-gradient(rgba(0, 0, 0, 0.7), rgba(0, 0, 0, 0.7)),
8
- url('http://static.photos/technology/1200x630/10');
9
  background-size: cover;
10
  background-position: center;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
11
  }
12
  </style>
13
- <section class="hero-bg min-h-screen flex items-center justify-center text-center px-4 md:px-8">
14
- <div class="max-w-4xl mx-auto px-4">
15
- <h1 class="text-5xl md:text-7xl font-bold mb-6 text-yellow-500 text-outline leading-tight">AfroFuturAI Nexus</h1>
16
- <p class="text-xl md:text-2xl mb-8 text-white max-w-2xl mx-auto">Where Ancient Wisdom Meets Artificial Intelligence</p>
17
- <div class="flex flex-col sm:flex-row justify-center gap-4">
18
- <button class="bg-yellow-500 hover:bg-yellow-600 text-black font-bold py-3 px-6 rounded-full transition-all transform hover:scale-105">
 
 
19
  Explore Traditions
20
  </button>
21
- <button class="border-2 border-yellow-500 hover:bg-yellow-500 hover:text-black text-yellow-500 font-bold py-3 px-6 rounded-full transition-all transform hover:scale-105">
22
  Discover AI
23
  </button>
24
  </div>
25
  <div class="mt-16 float-animation">
26
- <i data-feather="chevron-down" class="text-yellow-500 w-12 h-12"></i>
27
  </div>
28
  </div>
29
  </section>
30
  `;
31
  }
32
  }
33
- customElements.define('custom-hero', CustomHero);
 
1
+
2
  class CustomHero extends HTMLElement {
3
  connectedCallback() {
4
  this.attachShadow({ mode: 'open' });
5
  this.shadowRoot.innerHTML = `
6
  <style>
7
  .hero-bg {
8
+ background: linear-gradient(135deg, #f1f5f9 0%, #e2e8f0 50%, #f8fafc 100%);
 
9
  background-size: cover;
10
  background-position: center;
11
+ position: relative;
12
+ }
13
+ .hero-bg::before {
14
+ content: '';
15
+ position: absolute;
16
+ top: 0;
17
+ left: 0;
18
+ right: 0;
19
+ bottom: 0;
20
+ background-image:
21
+ linear-gradient(rgba(100, 116, 139, 0.03) 1px, transparent 1px),
22
+ linear-gradient(90deg, rgba(100, 116, 139, 0.03) 1px, transparent 1px);
23
+ background-size: 60px 60px;
24
+ pointer-events: none;
25
+ }
26
+ .geometric-accent {
27
+ position: absolute;
28
+ width: 200px;
29
+ height: 200px;
30
+ border: 2px solid rgba(100, 116, 139, 0.2);
31
+ border-radius: 50%;
32
+ top: 10%;
33
+ right: 10%;
34
+ pointer-events: none;
35
+ }
36
+ .geometric-accent-2 {
37
+ position: absolute;
38
+ width: 100px;
39
+ height: 100px;
40
+ border: 1px solid rgba(100, 116, 139, 0.15);
41
+ bottom: 20%;
42
+ left: 10%;
43
+ transform: rotate(45deg);
44
+ pointer-events: none;
45
  }
46
  </style>
47
+ <section class="hero-bg min-h-screen flex items-center justify-center text-center px-4 md:px-8 relative overflow-hidden">
48
+ <div class="geometric-accent"></div>
49
+ <div class="geometric-accent-2"></div>
50
+ <div class="max-w-4xl mx-auto px-4 relative z-10">
51
+ <h1 class="text-5xl md:text-7xl font-bold mb-6 text-slate-700 text-outline leading-tight tracking-tight">AfroFuturAI Nexus</h1>
52
+ <p class="text-xl md:text-2xl mb-8 text-slate-500 max-w-2xl mx-auto font-light">Where Ancient Wisdom Meets Artificial Intelligence</p>
53
+ <div class="flex flex-col sm:flex-row justify-center gap-4">
54
+ <button class="bg-slate-700 hover:bg-slate-800 text-white font-semibold py-3 px-8 rounded-lg transition-all transform hover:scale-105 shadow-lg">
55
  Explore Traditions
56
  </button>
57
+ <button class="border-2 border-slate-400 hover:bg-slate-200 hover:border-slate-500 text-slate-600 font-semibold py-3 px-8 rounded-lg transition-all transform hover:scale-105 bg-white bg-opacity-50">
58
  Discover AI
59
  </button>
60
  </div>
61
  <div class="mt-16 float-animation">
62
+ <i data-feather="chevron-down" class="text-slate-400 w-12 h-12"></i>
63
  </div>
64
  </div>
65
  </section>
66
  `;
67
  }
68
  }
69
+ customElements.define('custom-hero', CustomHero);
components/navbar.js CHANGED
@@ -1,3 +1,4 @@
 
1
  class CustomNavbar extends HTMLElement {
2
  connectedCallback() {
3
  this.attachShadow({ mode: 'open' });
@@ -13,27 +14,27 @@ class CustomNavbar extends HTMLElement {
13
  height: 2px;
14
  bottom: -2px;
15
  left: 0;
16
- background-color: #FACC15;
17
  transition: width 0.3s ease;
18
  }
19
  .nav-link:hover::after {
20
  width: 100%;
21
  }
22
  </style>
23
- <nav class="bg-black border-b border-yellow-500 py-4 px-4 md:px-8 sticky top-0 z-50 backdrop-blur-sm bg-opacity-90">
24
  <div class="container mx-auto max-w-7xl flex justify-between items-center">
25
- <div class="flex items-center space-x-2">
26
- <i data-feather="globe" class="text-yellow-500"></i>
27
- <span class="text-xl font-bold text-yellow-500">AfroFuturAI</span>
28
  </div>
29
  <div class="hidden md:flex space-x-8">
30
- <a href="#" class="nav-link text-white hover:text-yellow-500">Home</a>
31
- <a href="#" class="nav-link text-white hover:text-yellow-500">Traditions</a>
32
- <a href="#" class="nav-link text-white hover:text-yellow-500">Innovations</a>
33
- <a href="#" class="nav-link text-white hover:text-yellow-500">Community</a>
34
- <a href="#" class="nav-link text-white hover:text-yellow-500">About</a>
35
  </div>
36
- <button class="md:hidden text-white">
37
  <i data-feather="menu"></i>
38
  </button>
39
  </div>
@@ -41,4 +42,4 @@ class CustomNavbar extends HTMLElement {
41
  `;
42
  }
43
  }
44
- customElements.define('custom-navbar', CustomNavbar);
 
1
+
2
  class CustomNavbar extends HTMLElement {
3
  connectedCallback() {
4
  this.attachShadow({ mode: 'open' });
 
14
  height: 2px;
15
  bottom: -2px;
16
  left: 0;
17
+ background-color: #64748b;
18
  transition: width 0.3s ease;
19
  }
20
  .nav-link:hover::after {
21
  width: 100%;
22
  }
23
  </style>
24
+ <nav class="bg-white border-b border-slate-300 py-4 px-4 md:px-8 sticky top-0 z-50 backdrop-blur-md bg-opacity-95">
25
  <div class="container mx-auto max-w-7xl flex justify-between items-center">
26
+ <div class="flex items-center space-x-2">
27
+ <i data-feather="grid" class="text-slate-600"></i>
28
+ <span class="text-xl font-bold text-slate-700 tracking-tight">AfroFuturAI</span>
29
  </div>
30
  <div class="hidden md:flex space-x-8">
31
+ <a href="#" class="nav-link text-slate-600 hover:text-slate-900 font-medium">Home</a>
32
+ <a href="#" class="nav-link text-slate-600 hover:text-slate-900 font-medium">Traditions</a>
33
+ <a href="#" class="nav-link text-slate-600 hover:text-slate-900 font-medium">Innovations</a>
34
+ <a href="#" class="nav-link text-slate-600 hover:text-slate-900 font-medium">Community</a>
35
+ <a href="#" class="nav-link text-slate-600 hover:text-slate-900 font-medium">About</a>
36
  </div>
37
+ <button class="md:hidden text-slate-700">
38
  <i data-feather="menu"></i>
39
  </button>
40
  </div>
 
42
  `;
43
  }
44
  }
45
+ customElements.define('custom-navbar', CustomNavbar);
components/tech-showcase.js CHANGED
@@ -1,3 +1,4 @@
 
1
  class CustomTechShowcase extends HTMLElement {
2
  connectedCallback() {
3
  this.attachShadow({ mode: 'open' });
@@ -5,19 +6,25 @@ class CustomTechShowcase extends HTMLElement {
5
  <style>
6
  .tech-card {
7
  transition: all 0.3s ease;
8
- background: rgba(255, 255, 255, 0.05);
9
- backdrop-filter: blur(10px);
 
10
  }
11
  .tech-card:hover {
12
- transform: translateY(-10px);
13
- box-shadow: 0 10px 25px rgba(250, 204, 21, 0.3);
 
 
 
 
 
14
  }
15
  </style>
16
- <section class="py-16 px-4 md:px-8 afro-pattern bg-cover bg-center">
17
  <div class="container mx-auto max-w-7xl">
18
- <h2 class="text-4xl font-bold text-center mb-12 text-yellow-500 px-4">AI Innovations</h2>
19
  <div class="grid grid-cols-1 md:grid-cols-3 gap-6 md:gap-8 px-4">
20
- ${this.generateTechCards()}
21
  </div>
22
  </div>
23
  </section>
@@ -35,17 +42,17 @@ ${this.generateTechCards()}
35
  ];
36
 
37
  return techs.map(tech => `
38
- <div class="tech-card p-6 rounded-xl border border-yellow-500 h-full flex flex-col">
39
- <div class="text-yellow-500 mb-4">
40
- <i data-feather="${tech.icon}" class="w-10 h-10"></i>
41
  </div>
42
- <h3 class="text-xl font-bold text-white mb-2">${tech.title}</h3>
43
- <p class="text-gray-300">${tech.desc}</p>
44
- <button class="mt-4 text-yellow-500 flex items-center">
45
- Learn more <i data-feather="arrow-right" class="ml-2 w-4 h-4"></i>
46
  </button>
47
  </div>
48
  `).join('');
49
  }
50
  }
51
- customElements.define('custom-tech-showcase', CustomTechShowcase);
 
1
+
2
  class CustomTechShowcase extends HTMLElement {
3
  connectedCallback() {
4
  this.attachShadow({ mode: 'open' });
 
6
  <style>
7
  .tech-card {
8
  transition: all 0.3s ease;
9
+ background: rgba(255, 255, 255, 0.7);
10
+ backdrop-filter: blur(12px);
11
+ border: 1px solid rgba(148, 163, 184, 0.3);
12
  }
13
  .tech-card:hover {
14
+ transform: translateY(-8px);
15
+ box-shadow: 0 20px 40px rgba(0, 0, 0, 0.08);
16
+ border-color: rgba(100, 116, 139, 0.5);
17
+ }
18
+ .icon-circle {
19
+ background: linear-gradient(135deg, #f1f5f9 0%, #e2e8f0 100%);
20
+ border: 1px solid rgba(148, 163, 184, 0.3);
21
  }
22
  </style>
23
+ <section class="py-16 px-4 md:px-8 bg-white">
24
  <div class="container mx-auto max-w-7xl">
25
+ <h2 class="text-4xl font-bold text-center mb-12 text-slate-700 px-4 tracking-tight">AI Innovations</h2>
26
  <div class="grid grid-cols-1 md:grid-cols-3 gap-6 md:gap-8 px-4">
27
+ ${this.generateTechCards()}
28
  </div>
29
  </div>
30
  </section>
 
42
  ];
43
 
44
  return techs.map(tech => `
45
+ <div class="tech-card p-8 rounded-xl h-full flex flex-col group">
46
+ <div class="icon-circle w-14 h-14 rounded-lg flex items-center justify-center mb-5 group-hover:scale-110 transition-transform">
47
+ <i data-feather="${tech.icon}" class="w-6 h-6 text-slate-600"></i>
48
  </div>
49
+ <h3 class="text-xl font-bold text-slate-800 mb-3">${tech.title}</h3>
50
+ <p class="text-slate-500 leading-relaxed text-sm">${tech.desc}</p>
51
+ <button class="mt-6 text-slate-600 flex items-center text-sm font-medium group-hover:text-slate-900 transition-colors">
52
+ Learn more <i data-feather="arrow-right" class="ml-2 w-4 h-4 group-hover:translate-x-1 transition-transform"></i>
53
  </button>
54
  </div>
55
  `).join('');
56
  }
57
  }
58
+ customElements.define('custom-tech-showcase', CustomTechShowcase);
index.html CHANGED
@@ -30,8 +30,8 @@
30
  }
31
  </script>
32
  </head>
33
- <body class="bg-black text-white font-sans">
34
- <custom-navbar></custom-navbar>
35
  <custom-hero></custom-hero>
36
  <custom-culture-grid></custom-culture-grid>
37
  <custom-tech-showcase></custom-tech-showcase>
 
30
  }
31
  </script>
32
  </head>
33
+ <body class="bg-slate-50 text-slate-800 font-sans">
34
+ <custom-navbar></custom-navbar>
35
  <custom-hero></custom-hero>
36
  <custom-culture-grid></custom-culture-grid>
37
  <custom-tech-showcase></custom-tech-showcase>
style.css CHANGED
@@ -1,9 +1,10 @@
 
1
  @keyframes pulse-glow {
2
  0%, 100% {
3
- box-shadow: 0 0 5px rgba(250, 204, 21, 0.5);
4
  }
5
  50% {
6
- box-shadow: 0 0 20px rgba(250, 204, 21, 0.8);
7
  }
8
  }
9
 
@@ -15,11 +16,33 @@
15
  transform: translateY(-10px);
16
  }
17
  }
 
 
 
 
 
 
 
 
 
 
18
  .afro-pattern {
19
- background-image: url('http://static.photos/abstract/1200x630/42');
20
- background-size: cover;
21
- background-blend-mode: overlay;
22
- background-attachment: fixed;
 
 
 
 
 
 
 
 
 
 
 
 
23
  background-position: center;
24
  }
25
 
@@ -54,8 +77,9 @@
54
  max-width: 1280px;
55
  }
56
  }
 
57
  .glow-hover:hover {
58
- animation: pulse-glow 1.5s infinite;
59
  }
60
 
61
  .float-animation {
@@ -63,5 +87,17 @@
63
  }
64
 
65
  .text-outline {
66
- text-shadow: 2px 2px 0 #FACC15, -2px -2px 0 #FACC15;
67
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
  @keyframes pulse-glow {
3
  0%, 100% {
4
+ box-shadow: 0 0 5px rgba(100, 116, 139, 0.4);
5
  }
6
  50% {
7
+ box-shadow: 0 0 20px rgba(100, 116, 139, 0.7);
8
  }
9
  }
10
 
 
16
  transform: translateY(-10px);
17
  }
18
  }
19
+
20
+ @keyframes grid-move {
21
+ 0% {
22
+ background-position: 0 0;
23
+ }
24
+ 100% {
25
+ background-position: 50px 50px;
26
+ }
27
+ }
28
+
29
  .afro-pattern {
30
+ background-color: #f8fafc;
31
+ background-image:
32
+ linear-gradient(rgba(148, 163, 184, 0.1) 1px, transparent 1px),
33
+ linear-gradient(90deg, rgba(148, 163, 184, 0.1) 1px, transparent 1px);
34
+ background-size: 50px 50px;
35
+ background-position: center;
36
+ }
37
+
38
+ .neutrosophic-grid {
39
+ background-color: #f1f5f9;
40
+ background-image:
41
+ linear-gradient(rgba(71, 85, 105, 0.15) 1px, transparent 1px),
42
+ linear-gradient(90deg, rgba(71, 85, 105, 0.15) 1px, transparent 1px),
43
+ linear-gradient(rgba(71, 85, 105, 0.05) 1px, transparent 1px),
44
+ linear-gradient(90deg, rgba(71, 85, 105, 0.05) 1px, transparent 1px);
45
+ background-size: 100px 100px, 100px 100px, 20px 20px, 20px 20px;
46
  background-position: center;
47
  }
48
 
 
77
  max-width: 1280px;
78
  }
79
  }
80
+
81
  .glow-hover:hover {
82
+ animation: pulse-glow 2s infinite;
83
  }
84
 
85
  .float-animation {
 
87
  }
88
 
89
  .text-outline {
90
+ text-shadow: 2px 2px 0 rgba(71, 85, 105, 0.3), -2px -2px 0 rgba(71, 85, 105, 0.1);
91
+ }
92
+
93
+ .gris-card {
94
+ background: rgba(255, 255, 255, 0.6);
95
+ backdrop-filter: blur(12px);
96
+ border: 1px solid rgba(148, 163, 184, 0.3);
97
+ box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05), 0 2px 4px -1px rgba(0, 0, 0, 0.03);
98
+ }
99
+
100
+ .gris-card:hover {
101
+ border-color: rgba(100, 116, 139, 0.5);
102
+ box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.08), 0 4px 6px -2px rgba(0, 0, 0, 0.04);
103
+ }