From 3cdf89a1f613c38e1f6e0344ae4b4fa2f51fa6a3 Mon Sep 17 00:00:00 2001 From: sahamone <98383205+sahamone@users.noreply.github.com> Date: Mon, 19 May 2025 21:39:25 +0200 Subject: [PATCH] Fix UI --- banquise-website/src/App.css | 790 ++++++++++++++++++++++++----------- 1 file changed, 550 insertions(+), 240 deletions(-) diff --git a/banquise-website/src/App.css b/banquise-website/src/App.css index b82c161..febed48 100644 --- a/banquise-website/src/App.css +++ b/banquise-website/src/App.css @@ -13,15 +13,15 @@ width: 100%; } -/* Navigation */ +/* ===== NAVIGATION ===== */ .navbar { display: flex; justify-content: space-between; align-items: center; padding: 0.8rem 2rem; - background-color: rgba(31, 93, 137, 0.95); /* #1F5D89 avec transparence */ + background-color: rgba(31, 93, 137, 0.95); color: white; - box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1); + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); width: 100%; box-sizing: border-box; z-index: 10; @@ -91,7 +91,7 @@ .login-button { display: flex; align-items: center; - background-color: rgba(105, 183, 226, 0.9); /* #69B7E2 */ + background-color: rgba(105, 183, 226, 0.9); color: white; border: none; padding: 0.6rem 1.2rem; @@ -122,6 +122,48 @@ margin-right: 0.5rem; } +.navbar-mobile-toggle { + display: none; + background: transparent; + border: none; + cursor: pointer; + padding: 5px; + z-index: 20; + width: 40px; + height: 40px; + position: relative; +} + +.navbar-mobile-toggle span { + display: block; + width: 25px; + height: 3px; + background-color: white; + margin: 5px auto; + transition: all 0.3s ease; +} + +.mobile-menu-overlay { + display: none; + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + background-color: rgba(0, 0, 0, 0.5); + z-index: 14; + visibility: hidden; + opacity: 0; + transition: opacity 0.3s ease, visibility 0.3s ease; +} + +.mobile-menu-overlay.active { + display: block; + visibility: visible; + opacity: 1; +} + +/* ===== MAIN CONTENT ===== */ .content { flex: 1; display: flex; @@ -146,8 +188,8 @@ .page-section { width: 100%; max-width: 1200px; - margin: 1rem auto; - padding: 2rem 2rem; + margin: 2rem auto; + padding: 2rem; position: relative; z-index: 3; display: flex; @@ -156,6 +198,7 @@ box-sizing: border-box; } +/* ===== HERO SECTION ===== */ .hero-section { min-height: calc(70vh - 72px); display: flex; @@ -163,7 +206,7 @@ justify-content: center; align-items: center; text-align: center; - padding-top: 2rem; + padding-top: 3rem; padding-bottom: 3rem; margin-top: 0; } @@ -188,6 +231,70 @@ text-shadow: 0 1px 4px rgba(0, 0, 0, 0.2); } +.hero-logo-container { + margin-bottom: 2rem; + width: 150px; + height: 150px; + border-radius: 50%; + background: rgba(255, 255, 255, 0.1); + padding: 1rem; + box-shadow: 0 10px 25px rgba(0, 0, 0, 0.2); + animation: gentle-float 6s ease-in-out infinite; +} + +.hero-logo { + width: 100%; + height: 100%; + object-fit: contain; + filter: drop-shadow(0 5px 15px rgba(0, 0, 0, 0.2)); +} + +.hero-tech-elements { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + pointer-events: none; + z-index: 1; +} + +.tech-element { + position: absolute; + font-size: 2.5rem; + color: rgba(255, 255, 255, 0.15); + animation: tech-float 10s ease-in-out infinite; +} + +.tech-element-1 { + top: 15%; + left: 10%; + animation-delay: 0s; +} + +.tech-element-2 { + top: 25%; + right: 15%; + animation-delay: 2s; +} + +.tech-element-3 { + bottom: 20%; + left: 15%; + animation-delay: 1s; +} + +.tech-element-4 { + bottom: 30%; + right: 10%; + animation-delay: 3s; +} + +@keyframes tech-float { + 0%, 100% { transform: translateY(0) rotate(0deg); opacity: 0.15; } + 50% { transform: translateY(-20px) rotate(10deg); opacity: 0.25; } +} + .cta-button { display: inline-flex; align-items: center; @@ -220,6 +327,7 @@ transform: translateX(3px); } +/* ===== SECTION STYLING ===== */ .section-divider { width: 80px; height: 4px; @@ -249,13 +357,74 @@ text-align: center; } +/* ===== TECH FEATURES SECTION ===== */ +.tech-features-section { + padding-top: 3rem; + padding-bottom: 4rem; + position: relative; + z-index: 2; +} + +.tech-features-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); + gap: 2rem; + width: 100%; +} + +.tech-feature-card { + background: rgba(31, 93, 137, 0.1); + border-radius: 12px; + padding: 2rem; + display: flex; + flex-direction: column; + align-items: center; + text-align: center; + transition: transform 0.3s ease, background-color 0.3s ease; + border: 1px solid rgba(255, 255, 255, 0.05); +} + +.tech-feature-card:hover { + transform: translateY(-5px); + background: rgba(31, 93, 137, 0.2); +} + +.tech-feature-icon { + font-size: 2.5rem; + margin-bottom: 1.5rem; + color: #A5F0FF; + background: rgba(31, 93, 137, 0.3); + width: 70px; + height: 70px; + display: flex; + align-items: center; + justify-content: center; + border-radius: 50%; + box-shadow: 0 5px 15px rgba(0, 0, 0, 0.1); +} + +.tech-feature-title { + font-size: 1.3rem; + margin-bottom: 1rem; + color: #F6F6F6; + font-family: var(--font-heading); + font-weight: 600; +} + +.tech-feature-description { + color: rgba(246, 246, 246, 0.85); + line-height: 1.6; + font-size: 1rem; +} + +/* ===== SERVICES SECTION ===== */ .services-section { position: relative; z-index: 2; - padding-top: 2rem; - padding-bottom: 4rem; + padding-top: 3rem; + padding-bottom: 5rem; margin-top: 0; - margin-bottom: 1rem; + margin-bottom: 0; } .icebergs-container { @@ -268,12 +437,14 @@ display: flex; justify-content: center; align-items: center; - margin: 2rem auto; + margin: 3rem auto; padding: 0; gap: 5%; + flex-wrap: wrap; } .iceberg { + position: relative; cursor: pointer; text-decoration: none; width: 250px; @@ -283,17 +454,13 @@ justify-content: center; transition: transform 0.3s ease; z-index: 3; - margin: 0; + margin: 1.5rem; } .iceberg:hover { transform: translateY(-10px) !important; } -.float-1, .float-2, .float-3 { - animation: none; -} - .iceberg img { width: 100%; height: auto; @@ -315,7 +482,7 @@ padding: 12px 20px; border-radius: 10px; text-align: center; - box-shadow: 0 4px 15px rgba(0, 0, 0, 0.15), 0 0 0 2px rgba(165, 240, 255, 0.5); /* #A5F0FF */ + box-shadow: 0 4px 15px rgba(0, 0, 0, 0.15), 0 0 0 2px rgba(165, 240, 255, 0.5); z-index: 4; font-family: var(--font-heading); letter-spacing: -0.01em; @@ -361,12 +528,13 @@ 50% { transform: translateY(-10px); } } +/* ===== ABOUT SECTION ===== */ .about-section { position: relative; background-color: rgba(31, 93, 137, 0.15); backdrop-filter: blur(10px); - margin: 1rem 0; - padding: 3rem 2rem; + margin: 0; + padding: 4rem 2rem; z-index: 2; border-top: 1px solid rgba(255, 255, 255, 0.1); border-bottom: 1px solid rgba(255, 255, 255, 0.1); @@ -383,7 +551,87 @@ width: 100%; } -/* Modern FAQ Accordion Styles */ +.about-image-container { + max-width: 180px; + margin: 0 auto 2rem; + position: relative; + z-index: 2; +} + +.about-logo { + width: 100%; + height: auto; + border-radius: 50%; + padding: 1rem; + background: rgba(255, 255, 255, 0.05); + border: 2px solid rgba(165, 240, 255, 0.3); + box-shadow: 0 10px 25px rgba(31, 93, 137, 0.3); + animation: gentle-float 6s ease-in-out infinite; +} + +@keyframes gentle-float { + 0%, 100% { + transform: translateY(0); + } + 50% { + transform: translateY(-10px); + } +} + +.about-intro { + text-align: center; + max-width: 800px; + margin: 0 auto 2.5rem; + color: #F6F6F6; + font-size: 1.1rem; + line-height: 1.6; + text-shadow: 0 1px 2px rgba(0, 0, 0, 0.1); +} + +.about-text { + flex: 1; + min-width: 300px; + max-width: 600px; + color: white; + text-align: left; +} + +.about-text h3 { + font-size: 2rem; + margin-bottom: 1.5rem; + color: white; + text-shadow: 0 1px 3px rgba(0, 0, 0, 0.2); +} + +.about-text p { + margin-bottom: 1.25rem; + line-height: 1.7; + font-size: 1.1rem; +} + +.about-image { + flex: 1; + min-width: 300px; + max-width: 500px; + display: flex; + justify-content: center; + align-items: center; +} + +.about-image img { + width: 100%; + height: auto; + border-radius: 12px; + box-shadow: 0 15px 30px rgba(0, 0, 0, 0.25); + transform: perspective(1000px) rotateY(-5deg); + transition: transform 0.5s ease; +} + +.about-image img:hover { + transform: perspective(1000px) rotateY(0); +} + +/* ===== ACCORDION STYLES ===== */ .accordion-group { width: 100%; display: flex; @@ -458,7 +706,7 @@ margin-bottom: 0; } -.accordion-content ul { +.accordion-content ul, .accordion-content ol { margin-top: 0.5rem; margin-bottom: 0.5rem; padding-left: 1.5rem; @@ -468,42 +716,6 @@ margin-bottom: 0.5rem; } -.about-image-container { - max-width: 180px; - margin: 0 auto 2rem; - position: relative; - z-index: 2; -} - -.about-logo { - width: 100%; - height: auto; - border-radius: 50%; - padding: 1rem; - background: rgba(255, 255, 255, 0.05); - border: 2px solid rgba(165, 240, 255, 0.3); - box-shadow: 0 10px 25px rgba(31, 93, 137, 0.3); - animation: gentle-float 6s ease-in-out infinite; -} - -@keyframes gentle-float { - 0%, 100% { - transform: translateY(0); - } - 50% { - transform: translateY(-10px); - } -} - -.about-intro { - text-align: center; - max-width: 800px; - margin: 0 auto 2rem; - color: #F6F6F6; - font-size: 1.1rem; - line-height: 1.6; -} - .accordion-cta { display: inline-flex; align-items: center; @@ -512,7 +724,7 @@ border: none; padding: 0.7rem 1.2rem; border-radius: 6px; - margin-top: 0.5rem; + margin-top: 1rem; text-decoration: none; font-weight: 600; transition: all 0.2s ease; @@ -521,6 +733,7 @@ .accordion-cta:hover { background-color: #2ba3f7; transform: translateY(-2px); + box-shadow: 0 4px 10px rgba(0, 0, 0, 0.15); } .accordion-cta-icon { @@ -528,77 +741,7 @@ font-size: 0.9rem; } -/* Media queries for responsive design */ -@media (max-width: 768px) { - .about-section { - padding: 2rem 1.2rem; - } - - .about-image-container { - max-width: 140px; - margin-bottom: 1.5rem; - } - - .accordion-header { - padding: 1rem 1.2rem; - font-size: 1rem; - } - - .accordion-item.active .accordion-content { - padding: 1.2rem; - } - - .accordion-toggle-icon { - font-size: 1.1rem; - } -} - -/* ...existing code... */ - -.about-text { - flex: 1; - min-width: 300px; - max-width: 600px; - color: white; - text-align: left; -} - -.about-text h3 { - font-size: 2rem; - margin-bottom: 1.5rem; - color: white; - text-shadow: 0 1px 3px rgba(0, 0, 0, 0.2); -} - -.about-text p { - margin-bottom: 1.25rem; - line-height: 1.7; - font-size: 1.1rem; -} - -.about-image { - flex: 1; - min-width: 300px; - max-width: 500px; - display: flex; - justify-content: center; - align-items: center; -} - -.about-image img { - width: 100%; - height: auto; - border-radius: 12px; - box-shadow: 0 15px 30px rgba(0, 0, 0, 0.25); - transform: perspective(1000px) rotateY(-5deg); - transition: transform 0.5s ease; -} - -.about-image img:hover { - transform: perspective(1000px) rotateY(0); -} - -/* Statistiques */ +/* ===== STATISTICS SECTION ===== */ .stats-section { background: linear-gradient(180deg, rgba(64, 180, 255, 0.2) 0%, rgba(31, 93, 137, 0) 100%); padding: 4rem 2rem; @@ -619,11 +762,13 @@ border-radius: 12px; padding: 2rem; text-align: center; - transition: transform 0.3s ease; + transition: transform 0.3s ease, background-color 0.3s ease; + border: 1px solid rgba(255, 255, 255, 0.05); } .stat-card:hover { transform: translateY(-5px); + background: rgba(31, 93, 137, 0.15); } .stat-icon { @@ -644,7 +789,7 @@ color: #A5F0FF; } -/* Fonctionnalités */ +/* ===== FEATURES SECTION ===== */ .features-section { background: linear-gradient(180deg, rgba(64, 180, 255, 0.2) 0%, rgba(31, 93, 137, 0) 100%); padding: 4rem 2rem; @@ -656,10 +801,11 @@ background: rgba(31, 93, 137, 0.1); border-radius: 12px; padding: 2rem; - transition: transform 0.3s ease; + transition: transform 0.3s ease, background-color 0.3s ease; } .feature-card:hover { + transform: translateY(-5px); background: rgba(64, 180, 255, 0.15); } @@ -683,7 +829,7 @@ line-height: 1.6; } -/* FAQ */ +/* ===== FAQ SECTION ===== */ .faq-section { background: rgba(31, 93, 137, 0.05); padding: 4rem 2rem; @@ -714,86 +860,80 @@ line-height: 1.6; } -/* Pied de page */ -.footer { - background-color: #1F5D89; - color: white; - padding: 4rem 2rem 2rem; - position: relative; - z-index: 3; - border-top: 1px solid rgba(255, 255, 255, 0.1); - width: 100%; - box-sizing: border-box; -} - -.footer-content { - display: flex; - flex-wrap: wrap; - justify-content: space-between; - max-width: 1200px; - margin: 0 auto; -} - -.footer-column { - flex: 1; - min-width: 250px; - margin-bottom: 2rem; +/* ===== CODE BACKGROUND ===== */ +.code-background { + position: absolute; + bottom: 5%; + right: 5%; text-align: left; - padding: 0 1.5rem; + color: rgba(255, 255, 255, 0.1); + font-family: 'Courier New', monospace; + font-size: 0.9rem; + line-height: 1.6; + pointer-events: none; + z-index: 1; } -.footer-column h4 { - font-size: 1.2rem; - margin-bottom: 1.5rem; - color: #A5F0FF; - position: relative; - padding-bottom: 0.75rem; +.code-line { + white-space: nowrap; } -.footer-column h4:after { - content: ''; +/* ===== WAVES EFFECT ===== */ +.waves { position: absolute; bottom: 0; left: 0; - width: 40px; - height: 2px; - background-color: #A5F0FF; + width: 100%; + height: 200px; + overflow: hidden; + z-index: 1; + pointer-events: none; } -.footer-column ul { - list-style: none; - padding: 0; - margin: 0; +.wave { + position: absolute; + bottom: 0; + left: 0; + width: 100%; + height: 100px; + background: url('data:image/svg+xml,') repeat-x; + background-size: 1200px 100px; + animation: wave 10s linear infinite; } -.footer-column ul li { - margin-bottom: 0.8rem; +.wave1 { + opacity: 0.3; + animation: wave 20s linear infinite; + z-index: 1; } -.footer-column a { - color: rgba(246, 246, 246, 0.8); /* #F6F6F6 */ - text-decoration: none; - transition: all 0.2s; - display: inline-block; +.wave2 { + opacity: 0.5; + animation-delay: -5s; + animation: waveReverse 15s linear infinite; + bottom: -10px; + z-index: 2; } -.footer-column a:hover { - color: #F6F6F6; - transform: translateX(3px); +.wave3 { + opacity: 0.7; + animation-delay: -2s; + animation: wave 12s linear infinite; + bottom: -20px; + z-index: 3; } -.footer-bottom { - border-top: 1px solid rgba(255, 255, 255, 0.1); - padding-top: 1.5rem; - margin-top: 2rem; - text-align: center; - font-size: 0.9rem; - color: rgba(255, 255, 255, 0.7); - max-width: 1200px; - margin-left: auto; - margin-right: auto; +@keyframes wave { + 0% { background-position: 0; } + 100% { background-position: 1200px; } } +@keyframes waveReverse { + 0% { background-position: 1200px; } + 100% { background-position: 0; } +} + +/* ===== POPUP STYLES ===== */ .popup-overlay { position: fixed; top: 0; @@ -843,7 +983,7 @@ } .popup-close:hover { - background-color: rgba(64, 180, 255, 0.1); /* #40B4FF */ + background-color: rgba(64, 180, 255, 0.1); } .popup-title { @@ -914,6 +1054,7 @@ } } +/* ===== BUBBLES EFFECT ===== */ .bubbles { position: absolute; width: 100%; @@ -930,7 +1071,7 @@ bottom: -20px; width: 40px; height: 40px; - background: rgba(165, 240, 255, 0.2); /* #A5F0FF */ + background: rgba(165, 240, 255, 0.2); border-radius: 50%; opacity: 0.8; animation: rise 10s infinite ease-in; @@ -1008,33 +1149,115 @@ } } -.navbar-mobile-toggle { - display: none; - background: transparent; - border: none; - cursor: pointer; - padding: 5px; - z-index: 20; - width: 40px; - height: 40px; +/* ===== FOOTER ===== */ +.footer { + background-color: #1F5D89; + color: white; + padding: 4rem 2rem 2rem; position: relative; + z-index: 3; + border-top: 1px solid rgba(255, 255, 255, 0.1); + width: 100%; + box-sizing: border-box; } -.navbar-mobile-toggle span { - display: block; - width: 25px; - height: 3px; - background-color: white; - margin: 5px auto; - transition: all 0.3s ease; -} - -.navbar-right { +.footer-content { display: flex; - align-items: center; - gap: 12px; + flex-wrap: wrap; + justify-content: space-between; + max-width: 1200px; + margin: 0 auto; } +.footer-column { + flex: 1; + min-width: 250px; + margin-bottom: 2rem; + text-align: left; + padding: 0 1.5rem; +} + +.footer-column h4 { + font-size: 1.2rem; + margin-bottom: 1.5rem; + color: #A5F0FF; + position: relative; + padding-bottom: 0.75rem; +} + +.footer-column h4:after { + content: ''; + position: absolute; + bottom: 0; + left: 0; + width: 40px; + height: 2px; + background-color: #A5F0FF; +} + +.footer-column ul { + list-style: none; + padding: 0; + margin: 0; +} + +.footer-column ul li { + margin-bottom: 0.8rem; +} + +.footer-column a { + color: rgba(246, 246, 246, 0.8); + text-decoration: none; + transition: all 0.2s; + display: inline-flex; + align-items: center; +} + +.footer-column a:hover { + color: #F6F6F6; + transform: translateX(3px); +} + +.footer-bottom { + border-top: 1px solid rgba(255, 255, 255, 0.1); + padding-top: 1.5rem; + margin-top: 2rem; + text-align: center; + font-size: 0.9rem; + color: rgba(255, 255, 255, 0.7); + max-width: 1200px; + margin-left: auto; + margin-right: auto; +} + +/* ===== ACCESSIBILITY ===== */ +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border-width: 0; +} + +.sr-only.focus:not-sr-only { + position: fixed; + top: 0; + left: 0; + background: #1F5D89; + color: white; + padding: 0.5rem 1rem; + z-index: 999; + width: auto; + height: auto; + clip: auto; + text-decoration: none; +} + +/* ===== RESPONSIVE DESIGN ===== */ @media (max-width: 768px) { .navbar { padding: 0.6rem 1rem; @@ -1059,14 +1282,14 @@ gap: 20px; backdrop-filter: blur(10px); box-shadow: -5px 0 15px rgba(0, 0, 0, 0.2); - visibility: hidden; /* Add this */ - opacity: 0; /* Add this */ + visibility: hidden; + opacity: 0; } .navbar-right.mobile-active { right: 0; - visibility: visible; /* Add this */ - opacity: 1; /* Add this */ + visibility: visible; + opacity: 1; } .navbar-mobile-toggle.active span:nth-child(1) { @@ -1082,43 +1305,130 @@ transform: translateY(-8px) rotate(-45deg); } - /* Iceberg consistency fixes */ + .hero-title { + font-size: 2.5rem; + } + + .hero-subtitle { + font-size: 1.2rem; + } + + .section-title { + font-size: 2rem; + } + + .section-subtitle { + font-size: 1.1rem; + } + + .page-section { + padding: 2rem 1.2rem; + } + + .about-section { + padding: 2.5rem 1.2rem; + } + + .about-image-container { + max-width: 140px; + margin-bottom: 1.5rem; + } + + .accordion-header { + padding: 1rem 1.2rem; + font-size: 1rem; + } + + .accordion-item.active .accordion-content { + padding: 1.2rem; + } + + .accordion-toggle-icon { + font-size: 1.1rem; + } + + .icebergs-container { + min-height: auto; + padding: 1rem 0; + } + .iceberg { width: 220px; height: 180px; - margin: 0 auto; + margin: 1rem auto; } .iceberg img { width: 100%; max-width: 220px; max-height: 180px; - object-fit: contain; } .service-name { font-size: 1.2rem; padding: 10px 16px; - width: auto; - min-width: 160px; - max-width: 90%; + min-width: 150px; + } + + .footer { + padding: 3rem 1.5rem 1.5rem; + } + + .footer-column { + padding: 0 1rem; + } + + .tech-features-grid { + grid-template-columns: 1fr; + } + + .tech-feature-card { + margin-bottom: 1.5rem; } } -/* Desktop consistency for icebergs */ -.iceberg { - position: relative; - width: 250px; - height: 200px; - display: flex; - align-items: center; - justify-content: center; +@media (max-width: 480px) { + .hero-title { + font-size: 2rem; + } + + .hero-subtitle { + font-size: 1.1rem; + } + + .cta-button { + min-width: auto; + width: 100%; + padding: 0.8rem 1.5rem; + } + + .iceberg { + width: 180px; + height: 150px; + } + + .iceberg img { + max-width: 180px; + max-height: 150px; + } + + .service-name { + font-size: 1.1rem; + padding: 8px 14px; + } } -.iceberg img { - width: 100%; - height: auto; - max-width: 250px; - max-height: 200px; - object-fit: contain; +@media (min-width: 769px) and (max-width: 1024px) { + .icebergs-container { + gap: 3%; + } + + .iceberg { + width: 230px; + height: 180px; + } + + .tech-features-grid { + grid-template-columns: repeat(2, 1fr); + } }