From 5164a86e0bf76e144eb637760477504bc220ce82 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20FAMIBELLE-PRONZOLA?= Date: Wed, 5 Nov 2025 22:34:50 +0400 Subject: [PATCH] feat: change design --- CHANGELOG.md | 30 ++++ src/assets/css/styles.css | 312 ++++++++++++++++++++++++++------------ 2 files changed, 243 insertions(+), 99 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 633305b..0830078 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,35 @@ # Changelog +## Version 2.1.0 - Design Afrofuturisme Caribéen (2025-11-05) + +### 🎨 Refonte Visuelle Complète - Style Afrofuturisme Caribéen +- ✅ **Palette de couleurs enrichie** : Couleurs plus vibrantes et chaudes + - Or plus éclatant (#FDB813), vert émeraude saturé (#00D66C) + - Ajout de turquoise caraïbes, jaune soleil, orange flamme, violet nuit + - Nuances chaudes dans les noirs et gris +- ✅ **Formes organiques** : Remplacement des angles droits par des border-radius asymétriques + - Border-radius à 4 valeurs pour créer des formes naturelles (ex: 35px 15px 35px 15px) + - Toutes les cartes, boutons, et éléments UI ont des formes douces +- ✅ **Patterns géométriques SVG caribéens** : + - Motifs de cercles concentriques sur le body (réseau décentralisé) + - Ondulations organiques dans le hero (vagues des Caraïbes) + - Losanges pour la section Fédiverse + - Carrés en rotation pour la section Projects (textiles traditionnels) +- ✅ **Animations organiques fluides** : + - Animation `floatOrganic` : mouvement flotant avec rotation subtile + - Animation `breathe` : pulsation douce + - Animation `shimmer` : gradients animés sur textes et bordures + - Toutes les icônes ont des animations continues +- ✅ **Effets avancés sur les cartes** : + - Hover avec rotation légère et scale + - Box-shadows plus prononcées et colorées + - Bordures animées avec gradients + - Transitions avec cubic-bezier personnalisées +- ✅ **Boutons avec effets lumineux** : + - Gradients à 3 couleurs animés + - Effet de brillance au survol (shimmer) + - Transformations organiques (scale + translateY) + ## Version 2.0.0 - Migration vers 11ty (2025-11-05) ### Dernières améliorations de contenu (Phase 2) diff --git a/src/assets/css/styles.css b/src/assets/css/styles.css index 8581394..42f3e5d 100644 --- a/src/assets/css/styles.css +++ b/src/assets/css/styles.css @@ -5,24 +5,34 @@ } :root { - /* Couleurs du logo OKI */ - --or-oki: #E8A625; - --noir-oki: #000000; - --vert-oki: #00A854; - --rouge-oki: #ED1C4C; - --blanc-creme: #F7F7F2; + /* Couleurs du logo OKI - Enrichies */ + --or-oki: #FDB813; /* Or plus vibrant et chaud */ + --noir-oki: #0D0D0D; /* Noir profond avec nuance chaude */ + --vert-oki: #00D66C; /* Vert émeraude plus saturé */ + --rouge-oki: #FF1654; /* Rouge corail plus vif */ + --blanc-creme: #FFF8E7; /* Blanc crème plus chaud */ + + /* Palette Afrofuturiste Caribéenne */ + --turquoise-caraibes: #00CED1; /* Bleu turquoise des Caraïbes */ + --jaune-soleil: #FFD700; /* Jaune soleil éclatant */ + --orange-flamme: #FF6B35; /* Orange chaleureux */ + --violet-nuit: #6B2D5C; /* Violet nuit tropicale */ + --bleu-ocean: #0077BE; /* Bleu océan profond */ /* Couleurs dérivées pour le design */ - --noir-profond: #1A1A1A; - --gris-sombre: #2A2A2A; - --or-clair: #F5BD4F; - --vert-clair: #00C569; - --rouge-clair: #FF2D5F; + --noir-profond: #1A0F1A; /* Noir avec nuance violette */ + --gris-sombre: #2D1B2E; /* Gris avec nuance chaude */ + --or-clair: #FFE066; /* Or lumineux */ + --vert-clair: #66FFAA; /* Vert lime vibrant */ + --rouge-clair: #FF6B9D; /* Rose corail */ } body { font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif; - background: linear-gradient(135deg, var(--noir-oki) 0%, var(--gris-sombre) 100%); + background: + url('data:image/svg+xml;utf8,'), + linear-gradient(135deg, var(--noir-oki) 0%, var(--gris-sombre) 100%); + background-size: 200px 200px, 100%; color: var(--blanc-creme); min-height: 100vh; overflow-x: hidden; @@ -52,10 +62,13 @@ nav { .logo { font-size: 1.8rem; font-weight: 900; - background: linear-gradient(135deg, var(--or-oki), var(--or-clair)); + background: linear-gradient(135deg, var(--or-oki), var(--jaune-soleil), var(--or-clair)); + background-size: 200% 100%; -webkit-background-clip: text; -webkit-text-fill-color: transparent; + background-clip: text; text-decoration: none; + animation: shimmer 4s ease-in-out infinite; } .logo-image { @@ -110,6 +123,9 @@ nav { align-items: center; position: relative; overflow: hidden; + background: + url('data:image/svg+xml;utf8,') bottom center / 100% 200px no-repeat, + linear-gradient(180deg, transparent 0%, rgba(107, 45, 92, 0.15) 100%); } .hero-content { @@ -135,9 +151,12 @@ nav { } .accent-text { - background: linear-gradient(135deg, var(--or-oki), var(--rouge-oki)); + background: linear-gradient(135deg, var(--or-oki), var(--orange-flamme), var(--rouge-oki)); + background-size: 200% 100%; -webkit-background-clip: text; -webkit-text-fill-color: transparent; + background-clip: text; + animation: shimmer 5s ease-in-out infinite; } .hero p { @@ -158,10 +177,11 @@ nav { .tag { padding: 0.5rem 1rem; - background: rgba(232, 166, 37, 0.2); - border-radius: 20px; + background: rgba(253, 184, 19, 0.25); + border-radius: 25px 15px 25px 15px; /* Forme organique asymétrique */ font-size: 0.9rem; - border: 1px solid var(--or-oki); + border: 2px solid var(--or-oki); + box-shadow: 0 4px 15px rgba(253, 184, 19, 0.2); } .cta-buttons { @@ -174,23 +194,43 @@ nav { .btn { padding: 1rem 2rem; border: none; - border-radius: 50px; + border-radius: 30px 50px 30px 50px; /* Forme organique de galet */ font-size: 1.1rem; - font-weight: 600; + font-weight: 700; cursor: pointer; - transition: all 0.3s ease; + transition: all 0.4s cubic-bezier(0.34, 1.56, 0.64, 1); text-decoration: none; display: inline-block; + box-shadow: 0 8px 25px rgba(0, 0, 0, 0.3); } .btn-primary { - background: linear-gradient(135deg, var(--or-oki), var(--or-clair)); + background: linear-gradient(135deg, var(--or-oki), var(--jaune-soleil), var(--or-clair)); + background-size: 200% 100%; color: var(--noir-oki); + position: relative; + overflow: hidden; +} + +.btn-primary::before { + content: ''; + position: absolute; + top: 0; + left: -100%; + width: 100%; + height: 100%; + background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.3), transparent); + transition: left 0.5s ease; +} + +.btn-primary:hover::before { + left: 100%; } .btn-primary:hover { - transform: translateY(-3px); - box-shadow: 0 10px 30px rgba(232, 166, 37, 0.4); + transform: translateY(-5px) scale(1.05); + box-shadow: 0 15px 40px rgba(253, 184, 19, 0.5); + background-position: 100% 0; } .btn-secondary { @@ -227,7 +267,9 @@ nav { /* Fediverse Services Section */ .fediverse { padding: 4rem 2rem; - background: var(--noir-profond); + background: + url('data:image/svg+xml;utf8,') 0 0 / 150px 150px, + var(--noir-profond); } .section-container { @@ -256,13 +298,14 @@ nav { } .service-card { - background: rgba(0, 168, 84, 0.1); - border: 2px solid var(--vert-oki); - border-radius: 20px; + background: rgba(0, 214, 108, 0.15); + border: 3px solid var(--vert-oki); + border-radius: 35px 15px 35px 15px; /* Forme organique asymétrique */ padding: 2rem; - transition: all 0.3s ease; + transition: all 0.4s cubic-bezier(0.34, 1.56, 0.64, 1); position: relative; overflow: hidden; + box-shadow: 0 10px 30px rgba(0, 214, 108, 0.2); } .service-card::before { @@ -271,8 +314,10 @@ nav { top: 0; left: 0; right: 0; - height: 4px; - background: linear-gradient(90deg, var(--vert-oki), var(--or-oki)); + height: 5px; + background: linear-gradient(90deg, var(--vert-oki), var(--turquoise-caraibes), var(--or-oki)); + background-size: 200% 100%; + animation: shimmer 3s ease-in-out infinite; } .service-card:hover { @@ -284,6 +329,8 @@ nav { .service-icon { font-size: 2.5rem; margin-bottom: 1rem; + display: inline-block; + animation: floatOrganic 4s ease-in-out infinite; } .service-card h3 { @@ -322,7 +369,9 @@ nav { /* Web Projects Section */ .projects { padding: 4rem 2rem; - background: linear-gradient(135deg, var(--noir-profond) 0%, var(--gris-sombre) 100%); + background: + url('data:image/svg+xml;utf8,') 0 0 / 180px 180px, + linear-gradient(135deg, var(--noir-profond) 0%, var(--gris-sombre) 100%); } .projects h2 { @@ -339,14 +388,15 @@ nav { } .project-card { - background: rgba(0, 0, 0, 0.3); - border-radius: 20px; - padding: 1.5rem; - transition: all 0.3s ease; - border: 2px solid transparent; + background: rgba(107, 45, 92, 0.2); + border-radius: 25px 40px 25px 40px; /* Forme organique */ + padding: 2rem; + transition: all 0.4s cubic-bezier(0.34, 1.56, 0.64, 1); + border: 3px solid transparent; text-align: center; display: block; cursor: pointer; + box-shadow: 0 8px 25px rgba(0, 0, 0, 0.4); } .project-card:hover { @@ -371,6 +421,8 @@ nav { .project-icon { font-size: 3rem; margin-bottom: 1rem; + display: inline-block; + animation: breathe 3s ease-in-out infinite; } /* Mission Section */ @@ -403,23 +455,27 @@ nav { } .value-card { - background: rgba(255, 255, 255, 0.05); + background: rgba(253, 184, 19, 0.1); padding: 2rem; - border-radius: 15px; + border-radius: 30px 20px 30px 20px; /* Forme organique */ text-align: center; - transition: all 0.3s ease; - border: 1px solid rgba(232, 166, 37, 0.2); + transition: all 0.4s cubic-bezier(0.34, 1.56, 0.64, 1); + border: 3px solid rgba(253, 184, 19, 0.4); + box-shadow: 0 6px 20px rgba(253, 184, 19, 0.15); } .value-card:hover { - transform: translateY(-5px); - background: rgba(232, 166, 37, 0.1); + transform: translateY(-8px) rotate(2deg); /* Animation organique */ + background: rgba(253, 184, 19, 0.2); border-color: var(--or-oki); + box-shadow: 0 12px 35px rgba(253, 184, 19, 0.3); } .value-icon { font-size: 3rem; margin-bottom: 1rem; + display: inline-block; + animation: floatOrganic 5s ease-in-out infinite; } .value-card h3 { @@ -435,13 +491,14 @@ nav { } .hosting-banner { - background: rgba(232, 166, 37, 0.1); - border: 2px solid var(--or-oki); - border-radius: 20px; - padding: 2rem; + background: rgba(253, 184, 19, 0.15); + border: 3px solid var(--or-oki); + border-radius: 40px 20px 40px 20px; /* Forme organique */ + padding: 2.5rem; max-width: 900px; margin: 0 auto 3rem; text-align: center; + box-shadow: 0 10px 30px rgba(253, 184, 19, 0.2); } .hosting-banner h3 { @@ -490,23 +547,24 @@ nav { } .partner-card { - background: rgba(0, 0, 0, 0.3); - border: 2px solid transparent; - border-radius: 20px; - padding: 2rem; + background: rgba(107, 45, 92, 0.15); + border: 3px solid transparent; + border-radius: 35px 20px 35px 20px; /* Forme organique */ + padding: 2.5rem; text-align: center; - transition: all 0.3s ease; + transition: all 0.4s cubic-bezier(0.34, 1.56, 0.64, 1); text-decoration: none; color: inherit; display: flex; flex-direction: column; align-items: center; + box-shadow: 0 8px 25px rgba(0, 0, 0, 0.4); } .partner-card:hover { - transform: translateY(-5px); - border-color: var(--or-oki); - box-shadow: 0 20px 40px rgba(232, 166, 37, 0.2); + transform: translateY(-8px) rotate(-2deg); /* Animation organique */ + border-color: var(--turquoise-caraibes); + box-shadow: 0 20px 45px rgba(0, 206, 209, 0.3); } .partner-logo-container { @@ -629,34 +687,35 @@ footer { display: flex; align-items: center; justify-content: center; - padding: 1rem; - background: rgba(232, 166, 37, 0.2); - border: 2px solid var(--or-oki); + padding: 1.2rem; + background: rgba(253, 184, 19, 0.25); + border: 3px solid var(--or-oki); color: var(--blanc-creme); text-decoration: none; - border-radius: 12px; - font-weight: 600; + border-radius: 25px 15px 25px 15px; /* Forme organique */ + font-weight: 700; font-size: 1.1rem; - transition: all 0.3s ease; + transition: all 0.4s cubic-bezier(0.34, 1.56, 0.64, 1); cursor: pointer; + box-shadow: 0 6px 20px rgba(253, 184, 19, 0.2); } .donation-amount:hover { background: var(--or-oki); color: var(--noir-oki); - transform: translateY(-3px); - box-shadow: 0 5px 15px rgba(232, 166, 37, 0.4); + transform: translateY(-5px) scale(1.05); + box-shadow: 0 10px 30px rgba(253, 184, 19, 0.5); } .donation-amount.monthly { - background: rgba(0, 168, 84, 0.2); + background: rgba(0, 214, 108, 0.25); border-color: var(--vert-oki); } .donation-amount.monthly:hover { background: var(--vert-oki); color: var(--blanc-creme); - box-shadow: 0 5px 15px rgba(0, 168, 84, 0.4); + box-shadow: 0 10px 30px rgba(0, 214, 108, 0.5); } input[type="number"]::-webkit-inner-spin-button, @@ -688,10 +747,10 @@ input[type="number"]:focus { .custom-amount-input { padding: 0.8rem; - border: 2px solid var(--or-oki); + border: 3px solid var(--or-oki); background: rgba(255, 255, 255, 0.1); color: var(--blanc-creme); - border-radius: 10px; + border-radius: 20px 10px 20px 10px; /* Forme organique */ flex: 1; min-width: 0; font-size: 1rem; @@ -711,10 +770,10 @@ input[type="number"]:focus { .custom-donation-btn { padding: 0.8rem 1.2rem; border: none; - border-radius: 10px; - font-weight: 600; + border-radius: 20px 10px 20px 10px; /* Forme organique */ + font-weight: 700; cursor: pointer; - transition: all 0.3s; + transition: all 0.4s cubic-bezier(0.34, 1.56, 0.64, 1); white-space: nowrap; flex-shrink: 0; } @@ -739,26 +798,68 @@ input[type="number"]:focus { animation: fadeInUp 0.8s ease forwards; } -/* Animations */ +/* Animations Organiques Afrofuturistes */ @keyframes fadeInUp { from { opacity: 0; - transform: translateY(30px); + transform: translateY(40px) scale(0.95) rotate(-2deg); } to { opacity: 1; - transform: translateY(0); + transform: translateY(0) scale(1) rotate(0deg); } } @keyframes pulse { 0%, 100% { - opacity: 0.3; + opacity: 0.4; transform: scale(1); + filter: hue-rotate(0deg); + } + 33% { + opacity: 0.7; + transform: scale(1.3); + filter: hue-rotate(30deg); + } + 66% { + opacity: 1; + transform: scale(1.6); + filter: hue-rotate(60deg); + } +} + +@keyframes floatOrganic { + 0%, 100% { + transform: translateY(0) rotate(0deg); + } + 25% { + transform: translateY(-15px) rotate(2deg); } 50% { + transform: translateY(-25px) rotate(0deg); + } + 75% { + transform: translateY(-15px) rotate(-2deg); + } +} + +@keyframes shimmer { + 0% { + background-position: -200% center; + } + 100% { + background-position: 200% center; + } +} + +@keyframes breathe { + 0%, 100% { + transform: scale(1); opacity: 1; - transform: scale(1.5); + } + 50% { + transform: scale(1.05); + opacity: 0.9; } } @@ -858,25 +959,28 @@ input[type="number"]:focus { } .public-card { - background: rgba(0, 0, 0, 0.3); - border: 2px solid transparent; - border-radius: 20px; - padding: 2rem; + background: rgba(107, 45, 92, 0.2); + border: 3px solid transparent; + border-radius: 40px 20px 40px 20px; /* Forme organique */ + padding: 2.5rem; text-align: center; - transition: all 0.3s ease; + transition: all 0.4s cubic-bezier(0.34, 1.56, 0.64, 1); display: flex; flex-direction: column; + box-shadow: 0 10px 30px rgba(0, 0, 0, 0.4); } .public-card:hover { - transform: translateY(-5px); - border-color: var(--or-oki); - box-shadow: 0 20px 40px rgba(232, 166, 37, 0.2); + transform: translateY(-10px) scale(1.02); + border-color: var(--turquoise-caraibes); + box-shadow: 0 25px 50px rgba(0, 206, 209, 0.4); } .public-icon { font-size: 3.5rem; margin-bottom: 1rem; + display: inline-block; + animation: breathe 4s ease-in-out infinite; } .public-card h3 { @@ -892,11 +996,12 @@ input[type="number"]:focus { } .public-benefits { - background: rgba(232, 166, 37, 0.1); - border-radius: 10px; + background: rgba(253, 184, 19, 0.15); + border-radius: 25px 15px 25px 15px; /* Forme organique */ padding: 1.5rem; margin-bottom: 2rem; text-align: left; + border: 2px solid rgba(253, 184, 19, 0.3); } .public-benefits h4 { @@ -922,9 +1027,10 @@ input[type="number"]:focus { .publics-footer { text-align: center; margin-top: 4rem; - padding: 2rem; - background: rgba(232, 166, 37, 0.1); - border-radius: 15px; + padding: 2.5rem; + background: rgba(253, 184, 19, 0.15); + border-radius: 35px 20px 35px 20px; /* Forme organique */ + border: 2px solid rgba(253, 184, 19, 0.3); } /* FAQ Section */ @@ -945,20 +1051,24 @@ input[type="number"]:focus { } .faq-item { - background: rgba(255, 255, 255, 0.05); - border: 2px solid rgba(232, 166, 37, 0.2); - border-radius: 10px; - margin-bottom: 1rem; + background: rgba(255, 255, 255, 0.08); + border: 3px solid rgba(253, 184, 19, 0.3); + border-radius: 25px 15px 25px 15px; /* Forme organique */ + margin-bottom: 1.5rem; overflow: hidden; - transition: all 0.3s ease; + transition: all 0.4s cubic-bezier(0.34, 1.56, 0.64, 1); + box-shadow: 0 6px 20px rgba(0, 0, 0, 0.3); } .faq-item:hover { border-color: var(--or-oki); + transform: translateX(5px); + box-shadow: 0 8px 25px rgba(253, 184, 19, 0.3); } .faq-item.active { border-color: var(--or-oki); + box-shadow: 0 10px 35px rgba(253, 184, 19, 0.4); } .faq-question { @@ -1032,22 +1142,26 @@ input[type="number"]:focus { } .engagement-card { - background: rgba(232, 166, 37, 0.1); - border: 2px solid var(--or-oki); - border-radius: 20px; - padding: 2rem; + background: rgba(253, 184, 19, 0.15); + border: 3px solid var(--or-oki); + border-radius: 35px 20px 35px 20px; /* Forme organique */ + padding: 2.5rem; text-align: center; - transition: all 0.3s ease; + transition: all 0.4s cubic-bezier(0.34, 1.56, 0.64, 1); + box-shadow: 0 10px 30px rgba(253, 184, 19, 0.2); } .engagement-card:hover { - transform: translateY(-5px); - box-shadow: 0 20px 40px rgba(232, 166, 37, 0.3); + transform: translateY(-10px) rotate(1deg); /* Animation organique */ + box-shadow: 0 25px 50px rgba(253, 184, 19, 0.4); + border-color: var(--jaune-soleil); } .engagement-icon { font-size: 3rem; margin-bottom: 1rem; + display: inline-block; + animation: floatOrganic 3.5s ease-in-out infinite; } .engagement-card h3 {