From c38fde40b06e52de951cf448dccd64ab96d5f77e Mon Sep 17 00:00:00 2001 From: Aboubacar M'houmadi Date: Fri, 6 Feb 2026 18:36:03 +0100 Subject: [PATCH] Initial commit --- .gitignore | 2 + .htaccess | 5 + assets/css/404.css | 331 ++ assets/css/legal.css | 33 + assets/css/main.css | 3552 +++++++++++++++++ assets/data/projects.json | 290 ++ assets/data/team.json | 86 + assets/fonts/custom_font_large.otf | Bin 0 -> 27012 bytes assets/fonts/custom_font_small.otf | Bin 0 -> 52984 bytes .../images/favicon/android-chrome-192x192.png | Bin 0 -> 13435 bytes .../images/favicon/android-chrome-512x512.png | Bin 0 -> 54340 bytes assets/images/favicon/apple-touch-icon.png | Bin 0 -> 12089 bytes assets/images/favicon/favicon-16x16.png | Bin 0 -> 632 bytes assets/images/favicon/favicon-32x32.png | Bin 0 -> 1575 bytes assets/images/favicon/favicon.ico | Bin 0 -> 15406 bytes assets/images/favicon/site.webmanifest | 1 + assets/images/logo.png | Bin 0 -> 60268 bytes assets/images/old-logo.png | Bin 0 -> 15880 bytes assets/js/home.js | 171 + assets/js/main.js | 393 ++ assets/js/pages/404.js | 209 + assets/js/pages/legal.js | 31 + assets/js/pages/realisations.js | 228 ++ assets/js/pages/services.js | 57 + components/favicons.html | 8 + components/footer.html | 39 + components/header.html | 39 + index.html | 289 ++ pages/404.html | 61 + pages/cgv.html | 256 ++ pages/mentions-legales.html | 163 + pages/realisations.html | 334 ++ pages/services.html | 741 ++++ 33 files changed, 7319 insertions(+) create mode 100644 .gitignore create mode 100644 .htaccess create mode 100644 assets/css/404.css create mode 100644 assets/css/legal.css create mode 100644 assets/css/main.css create mode 100644 assets/data/projects.json create mode 100644 assets/data/team.json create mode 100644 assets/fonts/custom_font_large.otf create mode 100644 assets/fonts/custom_font_small.otf create mode 100644 assets/images/favicon/android-chrome-192x192.png create mode 100644 assets/images/favicon/android-chrome-512x512.png create mode 100644 assets/images/favicon/apple-touch-icon.png create mode 100644 assets/images/favicon/favicon-16x16.png create mode 100644 assets/images/favicon/favicon-32x32.png create mode 100644 assets/images/favicon/favicon.ico create mode 100644 assets/images/favicon/site.webmanifest create mode 100644 assets/images/logo.png create mode 100644 assets/images/old-logo.png create mode 100644 assets/js/home.js create mode 100644 assets/js/main.js create mode 100644 assets/js/pages/404.js create mode 100644 assets/js/pages/legal.js create mode 100644 assets/js/pages/realisations.js create mode 100644 assets/js/pages/services.js create mode 100644 components/favicons.html create mode 100644 components/footer.html create mode 100644 components/header.html create mode 100644 index.html create mode 100644 pages/404.html create mode 100644 pages/cgv.html create mode 100644 pages/mentions-legales.html create mode 100644 pages/realisations.html create mode 100644 pages/services.html diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1f34793 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +# Ignore all Markdown files +*.md diff --git a/.htaccess b/.htaccess new file mode 100644 index 0000000..7e619f0 --- /dev/null +++ b/.htaccess @@ -0,0 +1,5 @@ +# Sécurisation minimale +Options -Indexes + +# Page 404 personnalisée +ErrorDocument 404 omegakube/pages/404.html diff --git a/assets/css/404.css b/assets/css/404.css new file mode 100644 index 0000000..28adba4 --- /dev/null +++ b/assets/css/404.css @@ -0,0 +1,331 @@ +:root { + --bg-deep: #0a0a0f; + --bg-primary: #12121a; + --bg-secondary: #1a1a25; + --accent-primary: #8b3a62; + --accent-secondary: #5e2a8b; + --accent-light: #d4a5c9; + --text-primary: #ffffff; + --text-secondary: #b8b8c8; + --text-muted: #6b6b7b; + --glass-bg: rgba(255, 255, 255, 0.03); + --glass-border: rgba(255, 255, 255, 0.08); +} + +* { margin: 0; padding: 0; box-sizing: border-box; } + +body { + font-family: 'Montserrat', sans-serif; + background: var(--bg-deep); + color: var(--text-primary); + min-height: 100vh; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + overflow: hidden; + position: relative; +} + +.bg-grid { + position: fixed; + inset: 0; + background-image: + linear-gradient(rgba(139, 58, 98, 0.03) 1px, transparent 1px), + linear-gradient(90deg, rgba(139, 58, 98, 0.03) 1px, transparent 1px); + background-size: 50px 50px; + pointer-events: none; +} + +.bg-glow { + position: fixed; + width: 600px; + height: 600px; + border-radius: 50%; + filter: blur(150px); + opacity: 0.15; + pointer-events: none; +} + +.bg-glow-1 { + top: -200px; + left: -200px; + background: var(--accent-primary); + animation: float 8s ease-in-out infinite; +} + +.bg-glow-2 { + bottom: -200px; + right: -200px; + background: var(--accent-secondary); + animation: float 8s ease-in-out infinite reverse; +} + +@keyframes float { + 0%, 100% { transform: translate(0, 0); } + 50% { transform: translate(30px, 30px); } +} + +.particles { + position: fixed; + inset: 0; + pointer-events: none; + overflow: hidden; +} + +.particle { + position: absolute; + width: 4px; + height: 4px; + background: var(--accent-light); + border-radius: 50%; + opacity: 0.3; + animation: rise 10s linear infinite; +} + +@keyframes rise { + 0% { transform: translateY(100vh) scale(0); opacity: 0; } + 10% { opacity: 0.3; } + 90% { opacity: 0.3; } + 100% { transform: translateY(-100vh) scale(1); opacity: 0; } +} + +.container { + text-align: center; + z-index: 10; + padding: 2rem; + max-width: 600px; +} + +.error-code { + font-size: clamp(8rem, 25vw, 14rem); + font-weight: 700; + line-height: 1; + position: relative; + margin-bottom: 1rem; + background: linear-gradient(135deg, var(--accent-primary), var(--accent-secondary), var(--accent-light)); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + background-clip: text; + animation: glitch 3s infinite; + cursor: pointer; + user-select: none; + transition: transform 0.3s ease, filter 0.3s ease; +} + +.error-code:hover { + transform: scale(1.05); + filter: brightness(1.2); +} + +.error-code:active { + transform: scale(0.98); +} + +.error-code::before, +.error-code::after { + content: '404'; + position: absolute; + top: 0; + left: 0; + right: 0; + background: linear-gradient(135deg, var(--accent-primary), var(--accent-secondary)); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + background-clip: text; + opacity: 0.8; +} + +.error-code::before { + animation: glitch-1 0.3s infinite linear alternate-reverse; + clip-path: polygon(0 0, 100% 0, 100% 35%, 0 35%); +} + +.error-code::after { + animation: glitch-2 0.3s infinite linear alternate-reverse; + clip-path: polygon(0 65%, 100% 65%, 100% 100%, 0 100%); +} + +@keyframes glitch { + 0%, 90%, 100% { transform: translate(0); } + 92% { transform: translate(-2px, 2px); } + 94% { transform: translate(2px, -2px); } + 96% { transform: translate(-2px, -2px); } + 98% { transform: translate(2px, 2px); } +} + +@keyframes glitch-1 { + 0% { transform: translate(0); } + 100% { transform: translate(-3px, 1px); } +} + +@keyframes glitch-2 { + 0% { transform: translate(0); } + 100% { transform: translate(3px, -1px); } +} + +.error-icon { + width: 80px; + height: 80px; + margin: 0 auto 2rem; + background: var(--glass-bg); + border: 1px solid var(--glass-border); + border-radius: 50%; + display: flex; + align-items: center; + justify-content: center; + animation: pulse-icon 2s ease-in-out infinite; +} + +.error-icon svg { + width: 40px; + height: 40px; + color: var(--accent-light); +} + +@keyframes pulse-icon { + 0%, 100% { transform: scale(1); box-shadow: 0 0 0 0 rgba(139, 58, 98, 0.4); } + 50% { transform: scale(1.05); box-shadow: 0 0 0 15px rgba(139, 58, 98, 0); } +} + +.error-title { + font-size: 1.75rem; + font-weight: 600; + margin-bottom: 1rem; + color: var(--text-primary); +} + +.error-message { + font-size: 1rem; + color: var(--text-muted); + line-height: 1.7; + margin-bottom: 2.5rem; +} + +.error-message span { + color: var(--accent-light); +} + +.buttons { + display: flex; + gap: 1rem; + justify-content: center; + flex-wrap: wrap; +} + +.btn { + display: inline-flex; + align-items: center; + gap: 0.5rem; + padding: 0.875rem 1.75rem; + border-radius: 8px; + font-size: 0.95rem; + font-weight: 600; + text-decoration: none; + transition: all 0.3s ease; + cursor: pointer; + border: none; +} + +.btn svg { width: 18px; height: 18px; } + +.btn-primary { + background: linear-gradient(135deg, var(--accent-primary), var(--accent-secondary)); + color: white; + box-shadow: 0 4px 20px rgba(139, 58, 98, 0.3); +} + +.btn-primary:hover { + transform: translateY(-3px); + box-shadow: 0 8px 30px rgba(139, 58, 98, 0.4); +} + +.btn-secondary { + background: var(--glass-bg); + border: 1px solid var(--glass-border); + color: var(--text-secondary); +} + +.btn-secondary:hover { + background: rgba(255, 255, 255, 0.08); + border-color: var(--accent-primary); + color: var(--text-primary); +} + +.portal { + position: absolute; + width: 300px; + height: 300px; + pointer-events: none; + opacity: 0.1; +} + +.portal-left { left: -100px; top: 50%; transform: translateY(-50%); } +.portal-right { right: -100px; top: 50%; transform: translateY(-50%); } + +.portal-ring { + position: absolute; + inset: 0; + border: 2px solid var(--accent-primary); + border-radius: 50%; + animation: rotate 10s linear infinite; +} + +.portal-ring:nth-child(2) { inset: 20px; border-color: var(--accent-secondary); animation-duration: 8s; animation-direction: reverse; } +.portal-ring:nth-child(3) { inset: 40px; border-color: var(--accent-light); animation-duration: 6s; } + +@keyframes rotate { from { transform: rotate(0deg); } to { transform: rotate(360deg); } } + +.footer { + position: fixed; + bottom: 2rem; + left: 50%; + transform: translateX(-50%); + display: flex; + align-items: center; + gap: 0.5rem; + color: var(--text-muted); + font-size: 0.85rem; + z-index: 10; +} + +.footer a { color: var(--accent-light); text-decoration: none; transition: color 0.3s ease; } +.footer a:hover { color: var(--text-primary); } + +.logo-mini { + font-weight: 700; + background: linear-gradient(135deg, var(--accent-primary), var(--accent-secondary)); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + background-clip: text; +} + +/* Responsive 404 */ +@media (max-width: 768px) { + .error-code { font-size: clamp(5rem, 20vw, 8rem); } + .error-icon { width: 60px; height: 60px; margin-bottom: 1.5rem; } + .error-icon svg { width: 30px; height: 30px; } + .error-title { font-size: 1.4rem; } + .error-message { font-size: 0.9rem; padding: 0 1rem; } + .buttons { flex-direction: column; width: 100%; padding: 0 1rem; } + .btn { width: 100%; justify-content: center; padding: 1rem 1.5rem; } + .portal { display: none; } + .footer { bottom: 1rem; font-size: 0.75rem; } +} + +@media (max-width: 480px) { + .container { padding: 1rem; } + .error-code { font-size: clamp(4rem, 18vw, 6rem); margin-bottom: 0.5rem; } + .error-icon { width: 50px; height: 50px; margin-bottom: 1rem; } + .error-icon svg { width: 24px; height: 24px; } + .error-title { font-size: 1.2rem; } + .error-message { font-size: 0.85rem; margin-bottom: 2rem; } + .btn { font-size: 0.9rem; padding: 0.875rem 1.25rem; } +} + +@media (max-height: 600px) { + .error-icon { display: none; } + .error-code { margin-bottom: 0.5rem; } + .error-title { font-size: 1.2rem; margin-bottom: 0.5rem; } + .error-message { margin-bottom: 1.5rem; } +} \ No newline at end of file diff --git a/assets/css/legal.css b/assets/css/legal.css new file mode 100644 index 0000000..3322083 --- /dev/null +++ b/assets/css/legal.css @@ -0,0 +1,33 @@ +/* assets/css/legal.css - minimal rules for legal pages */ + +/* Layout background patterns */ +.geo-bg { position:absolute; inset:0; background:radial-gradient(#0f1724 0%, transparent 40%); z-index:0; } +.grid-pattern { position:absolute; inset:0; background-image: repeating-linear-gradient(45deg, rgba(255,255,255,0.02) 0 1px, transparent 1px 20px); z-index:0; } + +/* Hero */ +.page-hero { display:flex; align-items:center; justify-content:center; padding:3rem 1rem; background:var(--hero-bg); color:var(--text-on-hero); } +.page-hero .hero-content { max-width:1100px; text-align:center; } + +/* Legal content (text-first layout) */ +.legal-content { padding:2.25rem 1rem; background:transparent; color:var(--text); } +.legal-container { max-width:900px; margin:0 auto; display:block; } +.legal-section { margin-bottom:1.25rem; } +.legal-section h2 { font-size:1.1rem; margin:0 0 .5rem 0; font-weight:700; display:block; } +.legal-card { background:transparent; padding:0; border-radius:0; box-shadow:none; border:none; } +.legal-card p, .legal-card ul { margin:0 0 .75rem 0; line-height:1.6; color:var(--text); } +.page-hero { padding:1.5rem 1rem; background:transparent; color:var(--text); text-align:left; } +.page-hero .hero-content h1 { font-size:1.6rem; margin-bottom:.25rem; } +.page-hero .hero-content p { margin:0 0 .5rem 0; } + + +/* Footer */ +footer .footer-content { display:flex; gap:1rem; flex-wrap:wrap; align-items:center; } +.footer-bottom { text-align:center; padding:1rem 0; font-size:.9rem; } + +/* Nav / responsive */ +#navbar.scrolled { backdrop-filter: blur(4px); box-shadow:0 6px 18px rgba(2,6,23,.12); } +.nav-links { display:flex; gap:1rem; list-style:none; } +.nav-links a.active, .nav-links a[aria-current="true"] { font-weight:700; color:var(--accent); } +.nav-links.active { display:block; } +.mobile-toggle { display:none; /* show via media query */ } +@media (max-width:880px) { .nav-links { display:none; } .mobile-toggle { display:block; } } diff --git a/assets/css/main.css b/assets/css/main.css new file mode 100644 index 0000000..255ab96 --- /dev/null +++ b/assets/css/main.css @@ -0,0 +1,3552 @@ +/* ============================================ + OmégaKube - Styles Globaux + ============================================ */ + +/* Custom Fonts */ +@font-face { + font-family: 'OmegaLarge'; + src: url('../fonts/custom_font_large.otf') format('opentype'); + font-weight: normal; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: 'OmegaSmall'; + src: url('../fonts/custom_font_small.otf') format('opentype'); + font-weight: normal; + font-style: normal; + font-display: swap; +} + +/* ============================================ + Variables & Thèmes + ============================================ */ +:root { + --bg-deep: #1a0f1f; + --bg-secondary: #251528; + --bg-tertiary: #2d1b33; + --accent-primary: #8b3a62; + --accent-secondary: #a64d79; + --accent-light: #c77daa; + --accent-glow: #d4a5c9; + --text-primary: #ffffff; + --text-secondary: #c9b8d0; + --text-muted: #8a7a91; + --glass-bg: rgba(45, 27, 51, 0.7); + --glass-border: rgba(167, 77, 121, 0.3); + --card-bg: rgba(37, 21, 40, 0.8); + --input-bg: #1a0f1f; + --shadow-color: rgba(139, 58, 98, 0.3); + --shape-color: rgba(255, 255, 255, 0.08); + --shape-border: rgba(255, 255, 255, 0.15); +} + +[data-theme="light"] { + --bg-deep: #faf7fb; + --bg-secondary: #f3edf5; + --bg-tertiary: #ebe3ee; + --accent-primary: #8b3a62; + --accent-secondary: #a64d79; + --accent-light: #c77daa; + --accent-glow: #8b3a62; + --text-primary: #1a0f1f; + --text-secondary: #4a3a52; + --text-muted: #6a5a72; + --glass-bg: rgba(255, 255, 255, 0.9); + --glass-border: rgba(139, 58, 98, 0.2); + --card-bg: rgba(255, 255, 255, 0.95); + --input-bg: #ffffff; + --shadow-color: rgba(139, 58, 98, 0.15); + --shape-color: rgba(139, 58, 98, 0.06); + --shape-border: rgba(139, 58, 98, 0.12); +} + +/* ============================================ + Reset & Base + ============================================ */ +* { + margin: 0; + padding: 0; + box-sizing: border-box; +} + +html { + scroll-behavior: smooth; +} + +body { + font-family: 'OmegaSmall', 'Segoe UI', sans-serif; + background: var(--bg-deep); + color: var(--text-primary); + overflow-x: hidden; + line-height: 1.6; + transition: background 0.4s ease, color 0.4s ease; +} + +::-webkit-scrollbar { + width: 8px; +} +::-webkit-scrollbar-track { + background: var(--bg-deep); +} +::-webkit-scrollbar-thumb { + background: var(--accent-primary); + border-radius: 4px; +} + +/* ============================================ + Background Effects + ============================================ */ +.geo-bg { + position: fixed; + inset: 0; + z-index: -2; + background: linear-gradient(135deg, var(--bg-deep) 0%, var(--bg-secondary) 50%, var(--bg-tertiary) 100%); +} + +.grid-pattern { + position: fixed; + inset: 0; + z-index: -1; + background-image: radial-gradient(circle, var(--shape-border) 1px, transparent 1px); + background-size: 40px 40px; + opacity: 0.5; +} + +.geo-shapes { + position: fixed; + inset: 0; + z-index: -1; + pointer-events: none; + overflow: hidden; +} + +.shape { + position: absolute; + opacity: 0.6; + animation: floatShape 20s ease-in-out infinite; +} + +.shape-triangle { + width: 0; + height: 0; + border-left: 30px solid transparent; + border-right: 30px solid transparent; + border-bottom: 52px solid var(--shape-color); +} + +.shape-triangle-outline { + width: 60px; + height: 52px; + background: transparent; + border: 2px solid var(--shape-border); + clip-path: polygon(50% 0%, 0% 100%, 100% 100%); +} + +.shape-square { + width: 40px; + height: 40px; + background: var(--shape-color); +} + +.shape-square-outline { + width: 50px; + height: 50px; + background: transparent; + border: 2px solid var(--shape-border); +} + +.shape-rect { + width: 80px; + height: 30px; + background: var(--shape-color); +} + +.shape-diamond { + width: 40px; + height: 40px; + background: var(--shape-color); + transform: rotate(45deg); +} + +.shape-dots { + display: grid; + grid-template-columns: repeat(4, 8px); + grid-template-rows: repeat(4, 8px); + gap: 6px; +} + +.shape-dots span { + width: 4px; + height: 4px; + background: var(--shape-border); + border-radius: 50%; +} + +.shape:nth-child(1) { top: 10%; left: 5%; animation-delay: 0s; } +.shape:nth-child(2) { top: 20%; right: 10%; animation-delay: -3s; } +.shape:nth-child(3) { top: 60%; left: 8%; animation-delay: -6s; } +.shape:nth-child(4) { top: 75%; right: 5%; animation-delay: -9s; } +.shape:nth-child(5) { top: 40%; left: 3%; animation-delay: -12s; } +.shape:nth-child(6) { top: 85%; left: 15%; animation-delay: -15s; } +.shape:nth-child(7) { top: 15%; right: 20%; animation-delay: -4s; } +.shape:nth-child(8) { top: 50%; right: 3%; animation-delay: -8s; } +.shape:nth-child(9) { top: 30%; left: 12%; animation-delay: -11s; } +.shape:nth-child(10) { top: 90%; right: 15%; animation-delay: -14s; } + +@keyframes floatShape { + 0%, 100% { transform: translateY(0) rotate(0deg); } + 25% { transform: translateY(-20px) rotate(5deg); } + 50% { transform: translateY(-10px) rotate(-3deg); } + 75% { transform: translateY(-25px) rotate(3deg); } +} + +/* ============================================ + Navigation + ============================================ */ +nav { + position: fixed; + top: 0; + left: 0; + right: 0; + z-index: 1000; + padding: 1.5rem 2rem; + transition: all 0.4s ease; +} + +nav.scrolled { + background: var(--glass-bg); + backdrop-filter: blur(20px); + border-bottom: 1px solid var(--glass-border); + padding: 1rem 2rem; +} + +.nav-container { + max-width: 1400px; + margin: 0 auto; + display: flex; + justify-content: space-between; + align-items: center; +} + +.logo { + font-family: 'OmegaLarge', sans-serif; + font-size: 1.6rem; + text-decoration: none; + color: var(--text-primary); + display: flex; + align-items: center; + gap: 0.75rem; + transition: color 0.3s ease; +} + +.logo-icon { + width: 45px; + height: 45px; + flex-shrink: 0; +} + +.logo-icon img { + width: 100%; + height: 100%; + object-fit: contain; +} + +.logo-text { + display: flex; + align-items: baseline; + gap: 0.15rem; +} + +.logo-text .omega { color: var(--text-primary); } +.logo-text .kube { color: var(--accent-light); } +.logo-short { display: none; } + +.nav-right { + display: flex; + align-items: center; + gap: 2rem; +} + +.nav-links { + display: flex; + gap: 2.5rem; + list-style: none; +} + +.nav-links a { + color: var(--text-secondary); + text-decoration: none; + font-weight: 500; + font-size: 0.95rem; + transition: color 0.3s ease; + position: relative; +} + +.nav-links a::after { + content: ''; + position: absolute; + bottom: -5px; + left: 0; + width: 0; + height: 2px; + background: var(--accent-primary); + transition: width 0.3s ease; +} + +.nav-links a:hover, +.nav-links a.active { + color: var(--text-primary); +} + +.nav-links a:hover::after, +.nav-links a.active::after { + width: 100%; +} + +/* Theme Toggle */ +.theme-toggle { + width: 56px; + height: 30px; + background: var(--glass-bg); + border: 1px solid var(--glass-border); + border-radius: 50px; + cursor: pointer; + position: relative; + transition: all 0.3s ease; + display: flex; + align-items: center; + padding: 4px; + flex-shrink: 0; +} + +.theme-toggle:hover { + border-color: var(--accent-primary); +} + +.theme-toggle-thumb { + width: 22px; + height: 22px; + background: linear-gradient(135deg, var(--accent-primary), var(--accent-secondary)); + border-radius: 50%; + transition: transform 0.3s ease; + box-shadow: 0 2px 10px var(--shadow-color); +} + +[data-theme="light"] .theme-toggle-thumb { + transform: translateX(26px); +} + +.theme-toggle .icon-moon, +.theme-toggle .icon-sun { + position: absolute; + width: 14px; + height: 14px; + transition: opacity 0.3s ease; +} + +.theme-toggle .icon-moon { + left: 8px; + opacity: 1; + color: var(--text-muted); +} + +.theme-toggle .icon-sun { + right: 8px; + opacity: 0.4; + color: var(--text-muted); +} + +[data-theme="light"] .theme-toggle .icon-moon { opacity: 0.4; } +[data-theme="light"] .theme-toggle .icon-sun { opacity: 1; } + +.mobile-toggle { + display: none; + flex-direction: column; + gap: 5px; + cursor: pointer; + padding: 5px; + flex-shrink: 0; +} + +.mobile-toggle span { + width: 25px; + height: 2px; + background: var(--text-primary); + transition: all 0.3s ease; +} + +/* Responsive: show mobile toggle and hide nav links on small screens */ +@media (max-width:880px) { + .nav-links { + display: none; + position: absolute; + right: 2rem; + top: 100%; + background: var(--glass-bg); + padding: 0.75rem 1rem; + border-radius: 8px; + box-shadow: 0 6px 18px rgba(2,6,23,.12); + flex-direction: column; + gap: 1rem; + width: auto; + min-width: 160px; + z-index: 1002; + } + .nav-links.active { display: block; } + .mobile-toggle { display: flex; } + + /* Debug helpers: make elements clearly visible during testing */ + /* .mobile-toggle { outline: 2px solid rgba(255,0,0,0.9) !important; } + .nav-links { outline: 2px dashed rgba(0,128,255,0.9) !important; } + .nav-links { z-index: 1100 !important; } */ +} + +/* ============================================ + Hero Sections + ============================================ */ +.hero { + min-height: 100vh; + display: flex; + align-items: center; + justify-content: center; + position: relative; + padding: 6rem 2rem 4rem; +} + +.page-hero { + min-height: 50vh; + display: flex; + align-items: center; + justify-content: center; + position: relative; + padding: 8rem 2rem 4rem; + text-align: center; +} + +.hero-content { + text-align: center; + max-width: 900px; + z-index: 1; +} + +.hero-badge { + display: inline-flex; + align-items: center; + gap: 0.5rem; + background: var(--glass-bg); + border: 1px solid var(--glass-border); + padding: 0.5rem 1.25rem; + border-radius: 4px; + font-size: 0.85rem; + color: var(--accent-light); + margin-bottom: 2rem; + backdrop-filter: blur(10px); + animation: fadeInUp 0.8s ease forwards; +} + +.hero-badge::before { + content: ''; + width: 0; + height: 0; + border-left: 6px solid transparent; + border-right: 6px solid transparent; + border-bottom: 10px solid var(--accent-light); +} + +.hero h1, +.page-hero h1 { + font-family: 'OmegaLarge', sans-serif; + font-size: clamp(3rem, 8vw, 5.5rem); + font-weight: normal; + line-height: 1.1; + margin-bottom: 1.5rem; + animation: fadeInUp 0.8s ease 0.1s forwards; + opacity: 0; +} + +.page-hero h1 { + font-size: clamp(2.5rem, 6vw, 4rem); + opacity: 1; + animation: fadeInUp 0.8s ease forwards; +} + +.hero h1 .highlight, +.page-hero h1 .highlight { + color: var(--accent-light); +} + +.hero p, +.page-hero p { + font-size: 1.25rem; + color: var(--text-secondary); + max-width: 600px; + margin: 0 auto 2.5rem; + animation: fadeInUp 0.8s ease 0.2s forwards; + opacity: 0; +} + +.page-hero p { + margin-bottom: 0; +} + +.hero-buttons { + display: flex; + gap: 1rem; + justify-content: center; + flex-wrap: wrap; + animation: fadeInUp 0.8s ease 0.3s forwards; + opacity: 0; +} + +/* ============================================ + Buttons + ============================================ */ +.btn { + display: inline-flex; + align-items: center; + gap: 0.5rem; + padding: 1rem 2rem; + border-radius: 4px; + font-family: 'OmegaSmall', sans-serif; + font-weight: 500; + font-size: 1rem; + text-decoration: none; + transition: all 0.3s ease; + cursor: pointer; + border: none; +} + +.btn-primary { + background: linear-gradient(135deg, var(--accent-primary), var(--accent-secondary)); + color: white; + box-shadow: 0 4px 20px var(--shadow-color); +} + +.btn-primary:hover { + transform: translateY(-3px); + box-shadow: 0 8px 30px var(--shadow-color); +} + +.btn-secondary { + background: var(--glass-bg); + color: var(--text-primary); + border: 1px solid var(--glass-border); + backdrop-filter: blur(10px); +} + +.btn-secondary:hover { + background: var(--accent-primary); + border-color: var(--accent-primary); + color: white; +} + +@keyframes fadeInUp { + from { + opacity: 0; + transform: translateY(30px); + } + to { + opacity: 1; + transform: translateY(0); + } +} + +/* ============================================ + Sections + ============================================ */ +section { + padding: 8rem 2rem; + position: relative; +} + +.section-header { + text-align: center; + max-width: 700px; + margin: 0 auto 5rem; +} + +.section-tag { + font-size: 0.85rem; + color: var(--accent-light); + text-transform: uppercase; + letter-spacing: 3px; + margin-bottom: 1rem; + display: flex; + align-items: center; + justify-content: center; + gap: 0.75rem; +} + +.section-tag::before, +.section-tag::after { + content: ''; + width: 30px; + height: 1px; + background: var(--accent-primary); +} + +.section-title { + font-family: 'OmegaLarge', sans-serif; + font-size: clamp(2rem, 5vw, 3rem); + font-weight: normal; + margin-bottom: 1rem; +} + +.section-desc { + color: var(--text-secondary); + font-size: 1.1rem; +} + +/* ============================================ + About Section + ============================================ */ +.about { + background: linear-gradient(180deg, transparent 0%, var(--bg-secondary) 50%, transparent 100%); +} + +.about-grid { + max-width: 1200px; + margin: 0 auto; + display: grid; + grid-template-columns: 1fr 1fr; + gap: 4rem; + align-items: center; +} + +.about-content h3 { + font-family: 'OmegaLarge', sans-serif; + font-size: 1.5rem; + margin-bottom: 1.5rem; + color: var(--accent-light); +} + +.about-content p { + color: var(--text-secondary); + margin-bottom: 1.5rem; + font-size: 1.1rem; +} + +.about-stats { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 1.5rem; + margin-top: 2rem; +} + +.stat-item { + text-align: center; + padding: 1.5rem; + background: var(--card-bg); + border: 1px solid var(--glass-border); + border-radius: 4px; + backdrop-filter: blur(10px); + position: relative; + overflow: hidden; +} + +.stat-item::before { + content: ''; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 3px; + background: linear-gradient(90deg, var(--accent-primary), var(--accent-secondary)); +} + +.stat-number { + font-family: 'OmegaLarge', sans-serif; + font-size: 2rem; + color: var(--accent-light); +} + +.stat-label { + font-size: 0.85rem; + color: var(--text-muted); + margin-top: 0.25rem; +} + +.about-card { + background: var(--card-bg); + border: 1px solid var(--glass-border); + border-radius: 4px; + padding: 3rem; + backdrop-filter: blur(20px); + position: relative; + overflow: hidden; +} + +.about-card::before { + content: ''; + position: absolute; + top: 0; + left: 0; + width: 4px; + height: 100%; + background: linear-gradient(180deg, var(--accent-primary), var(--accent-secondary)); +} + +.about-card h4 { + font-family: 'OmegaLarge', sans-serif; + font-size: 1.25rem; + margin-bottom: 1rem; +} + +.about-card p { + color: var(--text-secondary); + line-height: 1.8; +} + +.deco-triangle { + position: absolute; + width: 0; + height: 0; + border-left: 20px solid transparent; + border-right: 20px solid transparent; + border-bottom: 35px solid var(--accent-primary); + opacity: 0.3; + bottom: 20px; + right: 20px; +} + +/* ============================================ + Services + ============================================ */ +.services-grid { + max-width: 1200px; + margin: 0 auto; + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 2rem; +} + +.service-card { + background: var(--card-bg); + border: 1px solid var(--glass-border); + border-radius: 4px; + padding: 2.5rem; + backdrop-filter: blur(10px); + transition: all 0.4s ease; + position: relative; + overflow: hidden; +} + +.service-card::after { + content: ''; + position: absolute; + bottom: 0; + left: 0; + width: 100%; + height: 3px; + background: linear-gradient(90deg, var(--accent-primary), var(--accent-secondary)); + transform: scaleX(0); + transition: transform 0.4s ease; +} + +.service-card:hover { + transform: translateY(-10px); + border-color: var(--accent-primary); + box-shadow: 0 20px 40px var(--shadow-color); +} + +.service-card:hover::after { + transform: scaleX(1); +} + +.service-icon { + width: 70px; + height: 70px; + position: relative; + display: flex; + align-items: center; + justify-content: center; + margin-bottom: 1.5rem; +} + +.service-icon::before { + content: ''; + position: absolute; + width: 100%; + height: 100%; + background: linear-gradient(135deg, var(--accent-primary), var(--accent-secondary)); + clip-path: polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%); +} + +.service-icon svg { + width: 28px; + height: 28px; + color: white; + position: relative; + z-index: 1; +} + +.service-card h3 { + font-family: 'OmegaLarge', sans-serif; + font-size: 1.25rem; + margin-bottom: 1rem; +} + +.service-card p { + color: var(--text-secondary); + margin-bottom: 1.5rem; +} + +.service-features { + list-style: none; +} + +.service-features li { + display: flex; + align-items: center; + gap: 0.75rem; + color: var(--text-secondary); + margin-bottom: 0.75rem; + font-size: 0.95rem; +} + +.service-features li::before { + content: ''; + width: 0; + height: 0; + border-left: 5px solid transparent; + border-right: 5px solid transparent; + border-bottom: 8px solid var(--accent-light); + flex-shrink: 0; +} + +/* Service Detail */ +.service-detail { + background: var(--card-bg); + border: 1px solid var(--glass-border); + border-radius: 4px; + padding: 3rem; + margin-bottom: 3rem; + position: relative; + overflow: hidden; +} + +.service-detail::before { + content: ''; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 4px; + background: linear-gradient(90deg, var(--accent-primary), var(--accent-secondary)); +} + +.service-detail-header { + display: flex; + align-items: center; + gap: 2rem; + margin-bottom: 2rem; +} + +.service-detail-icon { + width: 100px; + height: 100px; + position: relative; + display: flex; + align-items: center; + justify-content: center; + flex-shrink: 0; +} + +.service-detail-icon::before { + content: ''; + position: absolute; + width: 100%; + height: 100%; + background: linear-gradient(135deg, var(--accent-primary), var(--accent-secondary)); + clip-path: polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%); +} + +.service-detail-icon svg { + width: 40px; + height: 40px; + color: white; + position: relative; + z-index: 1; +} + +.service-detail h2 { + font-family: 'OmegaLarge', sans-serif; + font-size: 2rem; + margin-bottom: 0.5rem; +} + +.service-detail h2 + p { + color: var(--text-secondary); + font-size: 1.1rem; +} + +.service-detail-content { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 3rem; +} + +.service-detail-content h3 { + font-family: 'OmegaLarge', sans-serif; + font-size: 1.25rem; + margin-bottom: 1rem; + color: var(--accent-light); +} + +.service-detail-content p { + color: var(--text-secondary); + line-height: 1.8; + margin-bottom: 1.5rem; +} + +.service-detail-content ul { + list-style: none; +} + +.service-detail-content ul li { + display: flex; + align-items: center; + gap: 0.75rem; + color: var(--text-secondary); + margin-bottom: 0.75rem; +} + +.service-detail-content ul li::before { + content: ''; + width: 0; + height: 0; + border-left: 5px solid transparent; + border-right: 5px solid transparent; + border-bottom: 8px solid var(--accent-light); + flex-shrink: 0; +} + +/* ============================================ + Team Carousel + ============================================ */ +.team { + background: linear-gradient(180deg, transparent 0%, var(--bg-secondary) 50%, transparent 100%); +} + +.team-carousel-container { + max-width: 1200px; + margin: 0 auto; + position: relative; + overflow: hidden; + padding: 0.5rem 0; +} + +.team-carousel { + display: flex; + transition: transform 0.5s ease; +} + +.team-card { + flex: 0 0 calc(33.333% - 1.33rem); + margin: 0 1rem; + text-align: center; + padding: 2rem; + background: var(--card-bg); + border: 1px solid var(--glass-border); + border-radius: 4px; + backdrop-filter: blur(10px); + transition: all 0.4s ease; +} + +.team-card:hover { + border-color: var(--accent-primary); + box-shadow: 0 5px 20px var(--shadow-color); + cursor: pointer; +} + +.team-avatar { + width: 120px; + height: 120px; + margin: 0 auto 1.5rem; + position: relative; +} + +.team-avatar::before { + content: ''; + position: absolute; + inset: -4px; + background: linear-gradient(135deg, var(--accent-primary), var(--accent-secondary)); + clip-path: polygon(50% 0%, 100% 25%, 100% 75%, 50% 100%, 0% 75%, 0% 25%); +} + +.team-avatar-inner { + position: absolute; + inset: 0; + background: var(--bg-secondary); + clip-path: polygon(50% 0%, 100% 25%, 100% 75%, 50% 100%, 0% 75%, 0% 25%); + display: flex; + align-items: center; + justify-content: center; + font-family: 'OmegaLarge', sans-serif; + font-size: 2rem; + overflow: hidden; + transition: background 0.3s ease; +} + +.team-avatar-inner img { + width: 100%; + height: 100%; + object-fit: cover; +} + +.team-card h4 { + font-family: 'OmegaLarge', sans-serif; + font-size: 1.1rem; + margin-bottom: 0.25rem; +} + +.team-role { + color: var(--accent-light); + font-size: 0.9rem; + margin-bottom: 1rem; +} + +.team-desc { + color: var(--text-muted); + font-size: 0.9rem; +} + +/* Carousel Controls */ +.carousel-controls { + display: flex; + justify-content: center; + align-items: center; + gap: 1rem; + margin-top: 2rem; +} + +.carousel-btn { + width: 50px; + height: 50px; + background: var(--glass-bg); + border: 1px solid var(--glass-border); + border-radius: 4px; + display: flex; + align-items: center; + justify-content: center; + cursor: pointer; + transition: all 0.3s ease; + color: var(--text-primary); +} + +.carousel-btn:hover { + background: var(--accent-primary); + border-color: var(--accent-primary); +} + +.carousel-btn svg { + width: 24px; + height: 24px; +} + +.carousel-dots { + display: flex; + gap: 0.5rem; +} + +.carousel-dot { + width: 10px; + height: 10px; + background: var(--glass-border); + border-radius: 50%; + cursor: pointer; + transition: all 0.3s ease; +} + +.carousel-dot.active { + background: var(--accent-primary); + width: 30px; + border-radius: 5px; +} + +/* ============================================ + Portfolio + ============================================ */ +.portfolio-grid { + max-width: 1200px; + margin: 0 auto; + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 2rem; +} + +.portfolio-item { + position: relative; + border-radius: 4px; + overflow: hidden; + aspect-ratio: 4/3; + background: var(--card-bg); + border: 1px solid var(--glass-border); + cursor: pointer; + transition: all 0.4s ease; +} + +.portfolio-item:hover { + transform: scale(1.02); + box-shadow: 0 20px 40px var(--shadow-color); +} + +.portfolio-item.hidden { + display: none; +} + +.portfolio-bg { + position: absolute; + inset: 0; + background: linear-gradient(135deg, var(--accent-primary), var(--accent-secondary)); + opacity: 0.4; +} + +.portfolio-content { + position: absolute; + inset: 0; + display: flex; + flex-direction: column; + justify-content: flex-end; + padding: 2rem; + background: linear-gradient(180deg, transparent 0%, var(--bg-deep) 100%); +} + +.portfolio-tag { + font-size: 0.75rem; + color: var(--accent-light); + text-transform: uppercase; + letter-spacing: 2px; + margin-bottom: 0.5rem; + display: flex; + align-items: center; + gap: 0.5rem; +} + +.portfolio-tag::before { + content: ''; + width: 0; + height: 0; + border-left: 4px solid transparent; + border-right: 4px solid transparent; + border-bottom: 7px solid var(--accent-light); +} + +.portfolio-item h4 { + font-family: 'OmegaLarge', sans-serif; + font-size: 1.25rem; +} + +.portfolio-item p { + color: var(--text-muted); + font-size: 0.9rem; + margin-top: 0.5rem; +} + +/* Portfolio Detail */ +.portfolio-detail { + background: var(--card-bg); + border: 1px solid var(--glass-border); + border-radius: 4px; + overflow: hidden; + margin-bottom: 3rem; +} + +.portfolio-detail-image { + width: 100%; + height: 300px; + background: linear-gradient(135deg, var(--accent-primary), var(--accent-secondary)); +} + +.portfolio-detail-content { + padding: 2.5rem; +} + +.portfolio-detail-header { + display: flex; + justify-content: space-between; + align-items: flex-start; + margin-bottom: 2rem; + flex-wrap: wrap; + gap: 1rem; +} + +.portfolio-detail h2 { + font-family: 'OmegaLarge', sans-serif; + font-size: 2rem; + margin-bottom: 0.5rem; +} + +.portfolio-detail-meta { + display: flex; + gap: 2rem; + color: var(--text-muted); + font-size: 0.9rem; +} + +.portfolio-detail-meta span { + display: flex; + align-items: center; + gap: 0.5rem; +} + +.portfolio-detail-meta svg { + width: 16px; + height: 16px; +} + +.portfolio-detail p { + color: var(--text-secondary); + line-height: 1.8; + margin-bottom: 1.5rem; +} + +.portfolio-detail-features { + display: grid; + grid-template-columns: repeat(2, 1fr); + gap: 1rem; + margin-top: 2rem; + list-style: none; +} + +.portfolio-detail-features li { + display: flex; + align-items: center; + gap: 0.75rem; + color: var(--text-secondary); +} + +.portfolio-detail-features li::before { + content: ''; + width: 0; + height: 0; + border-left: 5px solid transparent; + border-right: 5px solid transparent; + border-bottom: 8px solid var(--accent-light); + flex-shrink: 0; +} + +/* ============================================ + Contact + ============================================ */ +.contact { + background: linear-gradient(180deg, transparent 0%, var(--bg-secondary) 100%); +} + +.contact-wrapper { + max-width: 1000px; + margin: 0 auto; + display: grid; + grid-template-columns: 1fr 1fr; + gap: 4rem; +} + +.contact-info h3 { + font-family: 'OmegaLarge', sans-serif; + font-size: 1.5rem; + margin-bottom: 1.5rem; +} + +.contact-info p { + color: var(--text-secondary); + margin-bottom: 2rem; + font-size: 1.1rem; +} + +.contact-links { + display: flex; + flex-direction: column; + gap: 1.5rem; +} + +.contact-link { + display: flex; + align-items: center; + gap: 1rem; + color: var(--text-secondary); + text-decoration: none; + transition: color 0.3s ease; +} + +.contact-link:hover { + color: var(--accent-light); +} + +.contact-link-icon { + width: 50px; + height: 50px; + background: var(--card-bg); + border: 1px solid var(--glass-border); + border-radius: 4px; + display: flex; + align-items: center; + justify-content: center; + transition: all 0.3s ease; +} + +.contact-link:hover .contact-link-icon { + background: var(--accent-primary); + border-color: var(--accent-primary); +} + +.contact-form { + background: var(--card-bg); + border: 1px solid var(--glass-border); + border-radius: 4px; + padding: 2.5rem; + backdrop-filter: blur(10px); + position: relative; +} + +.contact-form::before { + content: ''; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 4px; + background: linear-gradient(90deg, var(--accent-primary), var(--accent-secondary)); +} + +.form-group { + margin-bottom: 1.5rem; +} + +.form-group label { + display: block; + margin-bottom: 0.5rem; + font-weight: 500; + color: var(--text-secondary); +} + +.form-group input, +.form-group textarea { + width: 100%; + padding: 1rem; + background: var(--input-bg); + border: 1px solid var(--glass-border); + border-radius: 4px; + color: var(--text-primary); + font-family: 'OmegaSmall', sans-serif; + font-size: 1rem; + transition: all 0.3s ease; +} + +.form-group input:focus, +.form-group textarea:focus { + outline: none; + border-color: var(--accent-primary); + box-shadow: 0 0 0 3px var(--shadow-color); +} + +.form-group textarea { + resize: vertical; + min-height: 120px; +} + +.form-submit { + width: 100%; +} + +/* ============================================ + Footer + ============================================ */ +footer { + padding: 4rem 2rem 2rem; + border-top: 1px solid var(--glass-border); +} + +.footer-content { + max-width: 1200px; + margin: 0 auto; + display: flex; + justify-content: space-between; + align-items: center; + flex-wrap: wrap; + gap: 2rem; +} + +.footer-links { + display: flex; + gap: 2rem; +} + +.footer-links a { + color: var(--text-muted); + text-decoration: none; + transition: color 0.3s ease; +} + +.footer-links a:hover { + color: var(--text-primary); +} + +.footer-social { + display: flex; + gap: 1rem; +} + +.footer-social a { + width: 44px; + height: 44px; + background: var(--card-bg); + border: 1px solid var(--glass-border); + border-radius: 4px; + display: flex; + align-items: center; + justify-content: center; + color: var(--text-secondary); + transition: all 0.3s ease; +} + +.footer-social a:hover { + background: var(--accent-primary); + border-color: var(--accent-primary); + color: white; +} + +.footer-bottom { + max-width: 1200px; + margin: 2rem auto 0; + padding-top: 2rem; + border-top: 1px solid var(--glass-border); + text-align: center; + color: var(--text-muted); + font-size: 0.9rem; +} + +/* ============================================ + Animations + ============================================ */ +.reveal { + opacity: 0; + transform: translateY(40px); + transition: all 0.8s ease; +} + +.reveal.active { + opacity: 1; + transform: translateY(0); +} + +.reveal-delay-1 { transition-delay: 0.1s; } +.reveal-delay-2 { transition-delay: 0.2s; } +.reveal-delay-3 { transition-delay: 0.3s; } + +/* ============================================ + Responsive + ============================================ */ +@media (max-width: 1024px) { + .services-grid, + .portfolio-grid { + grid-template-columns: repeat(2, 1fr); + } + + .team-card { + flex: 0 0 calc(50% - 1rem); + } +} + +@media (max-width: 768px) { + nav { + padding: 1rem; + } + + nav.scrolled { + padding: 0.75rem 1rem; + } + + .nav-links { + display: none; + position: absolute; + top: 100%; + left: 0; + right: 0; + background: var(--glass-bg); + backdrop-filter: blur(20px); + flex-direction: column; + padding: 2rem; + gap: 1.5rem; + border-bottom: 1px solid var(--glass-border); + } + + .nav-links.active { + display: flex; + } + + .mobile-toggle { + display: flex; + } + + .mobile-toggle.active span:nth-child(1) { + transform: rotate(45deg) translate(5px, 5px); + } + + .mobile-toggle.active span:nth-child(2) { + opacity: 0; + } + + .mobile-toggle.active span:nth-child(3) { + transform: rotate(-45deg) translate(5px, -5px); + } + + .nav-right { + gap: 0.75rem; + } + + .logo-text .logo-full { + display: none; + } + + .logo-short { + display: flex !important; + align-items: baseline; + gap: 0.1rem; + } + + .logo-short .omega-symbol { + color: var(--text-primary); + } + + .logo-short .kube-short { + color: var(--accent-light); + } + + .logo-icon { + width: 35px; + height: 35px; + } + + .logo { + font-size: 1.3rem; + gap: 0.5rem; + } + + .about-grid, + .contact-wrapper { + grid-template-columns: 1fr; + gap: 3rem; + } + + .services-grid, + .portfolio-grid { + grid-template-columns: 1fr; + } + + .service-detail-content, + .portfolio-detail-features { + grid-template-columns: 1fr; + } + + .service-detail-header { + flex-direction: column; + text-align: center; + } + + .team-card { + flex: 0 0 calc(100% - 2rem); + } + + section { + padding: 5rem 1.5rem; + } + + .hero { + padding: 8rem 1.5rem 4rem; + } + + .footer-content { + flex-direction: column; + text-align: center; + } + + .footer-links { + flex-wrap: wrap; + justify-content: center; + } +} + +@media (max-width: 480px) { + .about-stats { + grid-template-columns: 1fr; + gap: 1rem; + } + + .theme-toggle { + width: 48px; + height: 26px; + } + + .theme-toggle-thumb { + width: 18px; + height: 18px; + } + + [data-theme="light"] .theme-toggle-thumb { + transform: translateX(22px); + } + + .carousel-controls { + flex-wrap: wrap; + } +} + +/* ============================================ + Team Member Modal + ============================================ */ +.team-modal-overlay { + position: fixed; + inset: 0; + background: rgba(0, 0, 0, 0.8); + backdrop-filter: blur(10px); + z-index: 2000; + display: flex; + align-items: center; + justify-content: center; + padding: 2rem; + opacity: 0; + visibility: hidden; + transition: all 0.3s ease; +} + +.team-modal-overlay.active { + opacity: 1; + visibility: visible; +} + +.team-modal { + background: var(--card-bg); + border: 1px solid var(--glass-border); + border-radius: 8px; + max-width: 500px; + width: 100%; + position: relative; + transform: scale(0.9) translateY(20px); + transition: transform 0.3s ease; + overflow: hidden; +} + +.team-modal-overlay.active .team-modal { + transform: scale(1) translateY(0); +} + +.team-modal-header { + background: linear-gradient(135deg, var(--accent-primary), var(--accent-secondary)); + padding: 2rem; + text-align: center; + position: relative; +} + +.team-modal-close { + position: absolute; + top: 1rem; + right: 1rem; + width: 36px; + height: 36px; + background: rgba(255, 255, 255, 0.2); + border: none; + border-radius: 50%; + cursor: pointer; + display: flex; + align-items: center; + justify-content: center; + color: white; + transition: all 0.3s ease; +} + +.team-modal-close:hover { + background: rgba(255, 255, 255, 0.3); + transform: rotate(90deg); +} + +.team-modal-close svg { + width: 20px; + height: 20px; +} + +.team-modal-avatar { + width: 120px; + height: 120px; + margin: 0 auto; + position: relative; +} + +.team-modal-avatar::before { + content: ''; + position: absolute; + inset: -4px; + background: rgba(255, 255, 255, 0.3); + clip-path: polygon(50% 0%, 100% 25%, 100% 75%, 50% 100%, 0% 75%, 0% 25%); +} + +.team-modal-avatar-inner { + position: absolute; + inset: 0; + background: var(--bg-secondary); + clip-path: polygon(50% 0%, 100% 25%, 100% 75%, 50% 100%, 0% 75%, 0% 25%); + display: flex; + align-items: center; + justify-content: center; + font-family: 'OmegaLarge', sans-serif; + font-size: 2.5rem; + color: var(--text-primary); +} + +.team-modal-name { + font-family: 'OmegaLarge', sans-serif; + font-size: 1.5rem; + color: white; + margin-top: 1rem; +} + +.team-modal-role { + color: rgba(255, 255, 255, 0.8); + font-size: 0.95rem; + margin-top: 0.25rem; +} + +.team-modal-content { + padding: 2rem; +} + +.team-modal-bio { + color: var(--text-secondary); + line-height: 1.8; + margin-bottom: 1.5rem; +} + +.team-modal-stats { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 1rem; + margin-bottom: 1.5rem; +} + +.team-modal-stat { + text-align: center; + padding: 1rem; + background: var(--glass-bg); + border: 1px solid var(--glass-border); + border-radius: 4px; +} + +.team-modal-stat-value { + font-family: 'OmegaLarge', sans-serif; + font-size: 1.25rem; + color: var(--accent-light); +} + +.team-modal-stat-label { + font-size: 0.75rem; + color: var(--text-muted); + margin-top: 0.25rem; +} + +.team-modal-skills { + display: flex; + flex-wrap: wrap; + gap: 0.5rem; +} + +.team-modal-skill { + padding: 0.5rem 1rem; + background: var(--glass-bg); + border: 1px solid var(--glass-border); + border-radius: 4px; + font-size: 0.85rem; + color: var(--text-secondary); + transition: all 0.3s ease; +} + +.team-modal-skill:hover { + border-color: var(--accent-primary); + color: var(--accent-light); +} + +.team-modal-social { + display: flex; + justify-content: center; + gap: 1rem; + margin-top: 1.5rem; + padding-top: 1.5rem; + border-top: 1px solid var(--glass-border); +} + +.team-modal-social a { + width: 40px; + height: 40px; + background: var(--glass-bg); + border: 1px solid var(--glass-border); + border-radius: 4px; + display: flex; + align-items: center; + justify-content: center; + color: var(--text-secondary); + transition: all 0.3s ease; +} + +.team-modal-social a:hover { + background: var(--accent-primary); + border-color: var(--accent-primary); + color: white; +} + +.team-modal-social a svg { + width: 18px; + height: 18px; +} + +@media (max-width: 480px) { + .team-modal-stats { + grid-template-columns: 1fr; + } + + .team-modal { + margin: 1rem; + } + + .team-modal-header { + padding: 1.5rem; + } + + .team-modal-content { + padding: 1.5rem; + } +} + +/* ============================================ + Pagination + ============================================ */ +.pagination { + display: flex; + justify-content: center; + align-items: center; + gap: 0.5rem; + margin-top: 4rem; + flex-wrap: wrap; +} + +.pagination-btn { + width: 44px; + height: 44px; + background: var(--glass-bg); + border: 1px solid var(--glass-border); + border-radius: 4px; + display: flex; + align-items: center; + justify-content: center; + cursor: pointer; + color: var(--text-secondary); + font-family: 'OmegaSmall', sans-serif; + font-size: 0.95rem; + transition: all 0.3s ease; +} + +.pagination-btn:hover:not(:disabled) { + background: var(--accent-primary); + border-color: var(--accent-primary); + color: white; +} + +.pagination-btn:disabled { + opacity: 0.4; + cursor: not-allowed; +} + +.pagination-btn.active { + background: var(--accent-primary); + border-color: var(--accent-primary); + color: white; +} + +.pagination-btn svg { + width: 20px; + height: 20px; +} + +.pagination-arrow { + width: 50px; +} + +.pagination-ellipsis { + width: 44px; + height: 44px; + display: flex; + align-items: center; + justify-content: center; + color: var(--text-muted); + font-size: 1.2rem; + letter-spacing: 2px; +} + +.pagination-info { + width: 100%; + text-align: center; + margin-top: 1rem; + color: var(--text-muted); + font-size: 0.9rem; +} + +@media (max-width: 480px) { + .pagination-btn { + width: 38px; + height: 38px; + font-size: 0.85rem; + } + + .pagination-arrow { + width: 44px; + } +} + +/* ============================================ + Bento Grid - Projets Phares + ============================================ */ +.bento-grid { + display: grid; + grid-template-columns: repeat(12, 1fr); + grid-template-rows: auto; + gap: 1.5rem; + max-width: 1200px; + margin: 0 auto; +} + +.bento-item { + background: var(--card-bg); + border: 1px solid var(--glass-border); + border-radius: 8px; + overflow: hidden; + transition: all 0.4s ease; + position: relative; +} + +.bento-item:hover { + border-color: var(--accent-primary); + box-shadow: 0 20px 40px var(--shadow-color); + transform: translateY(-5px); +} + +/* Bento Project Layout */ +.bento-project { + grid-column: span 12; + display: grid; + grid-template-columns: 1fr 1fr; + grid-template-rows: auto auto; + gap: 1.5rem; + padding: 0; + background: transparent; + border: none; +} + +.bento-project:hover { + transform: none; + box-shadow: none; +} + +.bento-project .bento-image { + grid-column: 1; + grid-row: 1 / 3; + min-height: 400px; + background-size: cover; + background-position: center; + border-radius: 8px; + position: relative; + overflow: hidden; +} + +.bento-project .bento-image::before { + content: ''; + position: absolute; + inset: 0; + background: linear-gradient(135deg, rgba(139, 58, 98, 0.3), rgba(45, 27, 51, 0.5)); +} + +.bento-project .bento-image::after { + content: ''; + position: absolute; + bottom: 0; + left: 0; + right: 0; + height: 50%; + background: linear-gradient(to top, var(--bg-deep), transparent); +} + +.bento-image-content { + position: absolute; + bottom: 2rem; + left: 2rem; + right: 2rem; + z-index: 1; +} + +.bento-image-content .portfolio-tag { + margin-bottom: 0.75rem; +} + +.bento-image-content h3 { + font-family: 'OmegaLarge', sans-serif; + font-size: 2rem; + margin-bottom: 0.5rem; +} + +.bento-image-content p { + color: var(--text-secondary); + font-size: 1rem; +} + +/* Stats Grid */ +.bento-stats { + grid-column: 2; + grid-row: 1; + display: grid; + grid-template-columns: repeat(2, 1fr); + gap: 1rem; +} + +.bento-stat { + background: var(--card-bg); + border: 1px solid var(--glass-border); + border-radius: 8px; + padding: 1.5rem; + text-align: center; + transition: all 0.3s ease; +} + +.bento-stat:hover { + border-color: var(--accent-primary); + background: var(--glass-bg); +} + +.bento-stat-icon { + width: 50px; + height: 50px; + background: linear-gradient(135deg, var(--accent-primary), var(--accent-secondary)); + border-radius: 8px; + display: flex; + align-items: center; + justify-content: center; + margin: 0 auto 1rem; +} + +.bento-stat-icon svg { + width: 24px; + height: 24px; + color: white; +} + +.bento-stat-value { + font-family: 'OmegaLarge', sans-serif; + font-size: 1.75rem; + color: var(--accent-light); + margin-bottom: 0.25rem; +} + +.bento-stat-label { + font-size: 0.85rem; + color: var(--text-muted); +} + +/* Info Card */ +.bento-info { + grid-column: 2; + grid-row: 2; + background: var(--card-bg); + border: 1px solid var(--glass-border); + border-radius: 8px; + padding: 2rem; + display: flex; + flex-direction: column; +} + +.bento-info h4 { + font-family: 'OmegaLarge', sans-serif; + font-size: 1.1rem; + color: var(--accent-light); + margin-bottom: 1rem; + display: flex; + align-items: center; + gap: 0.5rem; +} + +.bento-info h4::before { + content: ''; + width: 0; + height: 0; + border-left: 5px solid transparent; + border-right: 5px solid transparent; + border-bottom: 8px solid var(--accent-light); +} + +.bento-info p { + color: var(--text-secondary); + line-height: 1.7; + margin-bottom: 1.5rem; + flex-grow: 1; +} + +.bento-features { + display: flex; + flex-wrap: wrap; + gap: 0.5rem; +} + +.bento-feature { + padding: 0.4rem 0.8rem; + background: var(--glass-bg); + border: 1px solid var(--glass-border); + border-radius: 4px; + font-size: 0.8rem; + color: var(--text-secondary); + transition: all 0.3s ease; +} + +.bento-feature:hover { + border-color: var(--accent-primary); + color: var(--accent-light); +} + +/* Tech Stack */ +.bento-tech { + background: var(--card-bg); + border: 1px solid var(--glass-border); + border-radius: 8px; + padding: 1.5rem; +} + +.bento-tech h4 { + font-family: 'OmegaLarge', sans-serif; + font-size: 0.9rem; + color: var(--accent-light); + margin-bottom: 1rem; +} + +.bento-tech-list { + display: flex; + flex-wrap: wrap; + gap: 0.5rem; +} + +.bento-tech-item { + padding: 0.5rem 1rem; + background: var(--glass-bg); + border: 1px solid var(--glass-border); + border-radius: 4px; + font-size: 0.85rem; + color: var(--text-secondary); + display: flex; + align-items: center; + gap: 0.5rem; + transition: all 0.3s ease; +} + +.bento-tech-item:hover { + border-color: var(--accent-primary); + color: var(--accent-light); +} + +.bento-tech-item svg { + width: 16px; + height: 16px; +} + +/* Alternate Layout (Image Right) */ +.bento-project.reverse .bento-image { + grid-column: 2; + grid-row: 1 / 3; +} + +.bento-project.reverse .bento-stats { + grid-column: 1; + grid-row: 1; +} + +.bento-project.reverse .bento-info { + grid-column: 1; + grid-row: 2; +} + +/* Bento Divider */ +.bento-divider { + grid-column: span 12; + height: 1px; + background: linear-gradient(90deg, transparent, var(--glass-border), transparent); + margin: 2rem 0; +} + +@media (max-width: 1024px) { + .bento-project { + grid-template-columns: 1fr; + } + + .bento-project .bento-image { + grid-column: 1; + grid-row: 1; + min-height: 300px; + } + + .bento-project .bento-stats { + grid-column: 1; + grid-row: 2; + } + + .bento-project .bento-info { + grid-column: 1; + grid-row: 3; + } + + .bento-project.reverse .bento-image, + .bento-project.reverse .bento-stats, + .bento-project.reverse .bento-info { + grid-column: 1; + } + + .bento-project.reverse .bento-image { grid-row: 1; } + .bento-project.reverse .bento-stats { grid-row: 2; } + .bento-project.reverse .bento-info { grid-row: 3; } +} + +@media (max-width: 480px) { + .bento-stats { + grid-template-columns: 1fr; + } + + .bento-project .bento-image { + min-height: 250px; + } + + .bento-image-content h3 { + font-size: 1.5rem; + } +} + +/* ============================================ + Project Modal - Galerie + ============================================ */ +.project-modal-overlay { + position: fixed; + inset: 0; + background: rgba(0, 0, 0, 0.9); + backdrop-filter: blur(10px); + z-index: 2000; + display: flex; + align-items: center; + justify-content: center; + padding: 2rem; + opacity: 0; + visibility: hidden; + transition: all 0.3s ease; +} + +.project-modal-overlay.active { + opacity: 1; + visibility: visible; +} + +.project-modal { + background: var(--card-bg); + border: 1px solid var(--glass-border); + border-radius: 12px; + max-width: 900px; + width: 100%; + max-height: 90vh; + overflow: hidden; + position: relative; + transform: scale(0.9) translateY(20px); + transition: transform 0.3s ease; + display: flex; + flex-direction: column; +} + +.project-modal-overlay.active .project-modal { + transform: scale(1) translateY(0); +} + +.project-modal-close { + position: absolute; + top: 1rem; + right: 1rem; + width: 44px; + height: 44px; + background: rgba(0, 0, 0, 0.5); + border: 1px solid rgba(255, 255, 255, 0.2); + border-radius: 50%; + display: flex; + align-items: center; + justify-content: center; + cursor: pointer; + color: white; + transition: all 0.3s ease; + z-index: 10; +} + +.project-modal-close:hover { + background: var(--accent-primary); + border-color: var(--accent-primary); +} + +.project-modal-close svg { + width: 24px; + height: 24px; +} + +/* Gallery */ +.project-gallery { + position: relative; + width: 100%; + height: 350px; + overflow: hidden; +} + +.project-gallery-slides { + display: flex; + width: 100%; + height: 100%; + transition: transform 0.5s ease; +} + +.project-gallery-slide { + min-width: 100%; + height: 100%; + display: flex; + align-items: center; + justify-content: center; + position: relative; +} + +.project-gallery-slide::before { + content: ''; + position: absolute; + inset: 0; + background: linear-gradient(135deg, rgba(139, 58, 98, 0.4), rgba(45, 27, 51, 0.6)); +} + +.gallery-nav { + position: absolute; + top: 50%; + transform: translateY(-50%); + width: 44px; + height: 44px; + background: rgba(0, 0, 0, 0.5); + border: 1px solid rgba(255, 255, 255, 0.2); + border-radius: 50%; + display: flex; + align-items: center; + justify-content: center; + cursor: pointer; + color: white; + transition: all 0.3s ease; + z-index: 5; +} + +.gallery-nav:hover { + background: var(--accent-primary); + border-color: var(--accent-primary); +} + +.gallery-nav svg { + width: 20px; + height: 20px; +} + +.gallery-nav.prev { left: 1rem; } +.gallery-nav.next { right: 1rem; } + +.gallery-dots { + position: absolute; + bottom: 1rem; + left: 50%; + transform: translateX(-50%); + display: flex; + gap: 0.5rem; + z-index: 5; +} + +.gallery-dot { + width: 10px; + height: 10px; + background: rgba(255, 255, 255, 0.4); + border-radius: 50%; + cursor: pointer; + transition: all 0.3s ease; +} + +.gallery-dot.active { + background: white; + width: 30px; + border-radius: 5px; +} + +/* Modal Content */ +.project-modal-content { + padding: 2rem; + overflow-y: auto; + flex-grow: 1; +} + +.project-modal-header { + display: flex; + justify-content: space-between; + align-items: flex-start; + margin-bottom: 1.5rem; + flex-wrap: wrap; + gap: 1rem; +} + +.project-modal-header h2 { + font-family: 'OmegaLarge', sans-serif; + font-size: 1.75rem; + margin-bottom: 0.5rem; +} + +.project-modal-meta { + display: flex; + gap: 1.5rem; + color: var(--text-muted); + font-size: 0.9rem; +} + +.project-modal-meta span { + display: flex; + align-items: center; + gap: 0.5rem; +} + +.project-modal-meta svg { + width: 16px; + height: 16px; +} + +.project-modal-desc { + color: var(--text-secondary); + line-height: 1.8; + margin-bottom: 2rem; +} + +/* Modal Tabs */ +.project-modal-tabs { + display: flex; + gap: 0.5rem; + margin-bottom: 1.5rem; + border-bottom: 1px solid var(--glass-border); + padding-bottom: 1rem; +} + +.project-modal-tab { + padding: 0.75rem 1.25rem; + background: transparent; + border: 1px solid var(--glass-border); + border-radius: 4px; + color: var(--text-secondary); + font-family: 'OmegaSmall', sans-serif; + font-size: 0.9rem; + cursor: pointer; + transition: all 0.3s ease; +} + +.project-modal-tab:hover, +.project-modal-tab.active { + background: var(--accent-primary); + border-color: var(--accent-primary); + color: white; +} + +.project-modal-tab-content { + display: none; +} + +.project-modal-tab-content.active { + display: block; +} + +/* Features Grid */ +.project-features-grid { + display: grid; + grid-template-columns: repeat(2, 1fr); + gap: 1rem; +} + +.project-feature-item { + display: flex; + align-items: center; + gap: 0.75rem; + padding: 1rem; + background: var(--glass-bg); + border: 1px solid var(--glass-border); + border-radius: 4px; + color: var(--text-secondary); + transition: all 0.3s ease; +} + +.project-feature-item:hover { + border-color: var(--accent-primary); +} + +.project-feature-item::before { + content: ''; + width: 0; + height: 0; + border-left: 5px solid transparent; + border-right: 5px solid transparent; + border-bottom: 8px solid var(--accent-light); + flex-shrink: 0; +} + +/* Tech Stack Grid */ +.project-tech-grid { + display: flex; + flex-wrap: wrap; + gap: 0.75rem; +} + +.project-tech-item { + padding: 0.75rem 1.25rem; + background: var(--glass-bg); + border: 1px solid var(--glass-border); + border-radius: 4px; + color: var(--text-secondary); + font-size: 0.9rem; + display: flex; + align-items: center; + gap: 0.5rem; + transition: all 0.3s ease; +} + +.project-tech-item:hover { + border-color: var(--accent-primary); + color: var(--accent-light); +} + +/* Stats Grid in Modal */ +.project-stats-grid { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 1rem; +} + +.project-stat-card { + text-align: center; + padding: 1.5rem; + background: var(--glass-bg); + border: 1px solid var(--glass-border); + border-radius: 8px; +} + +.project-stat-card-value { + font-family: 'OmegaLarge', sans-serif; + font-size: 2rem; + color: var(--accent-light); + margin-bottom: 0.25rem; +} + +.project-stat-card-label { + font-size: 0.85rem; + color: var(--text-muted); +} + +@media (max-width: 768px) { + .project-modal { + max-height: 95vh; + margin: 0.5rem; + } + + .project-gallery { + height: 250px; + } + + .project-modal-content { + padding: 1.5rem; + } + + .project-features-grid, + .project-stats-grid { + grid-template-columns: 1fr; + } + + .project-modal-tabs { + flex-wrap: wrap; + } +} + +/* Portfolio Item Click State */ +.portfolio-item { + cursor: pointer; +} + +.portfolio-item::before { + content: ''; + position: absolute; + inset: 0; + background: transparent; + z-index: 1; + transition: background 0.3s ease; +} + +.portfolio-item:hover::before { + background: rgba(139, 58, 98, 0.1); +} + +.portfolio-item:active { + transform: scale(0.98); +} + +/* ============================================ + Process Timeline + ============================================ */ +.process-section { + padding: 6rem 2rem; + background: linear-gradient(180deg, transparent 0%, var(--bg-secondary) 50%, transparent 100%); +} + +.process-timeline { + max-width: 1000px; + margin: 0 auto; + display: flex; + justify-content: space-between; + position: relative; + padding: 2rem 0; +} + +.process-timeline::before { + content: ''; + position: absolute; + top: 50%; + left: 10%; + right: 10%; + height: 3px; + background: var(--glass-border); + transform: translateY(-50%); + z-index: 0; +} + +.process-timeline::after { + content: ''; + position: absolute; + top: 50%; + left: 10%; + height: 3px; + background: linear-gradient(90deg, var(--accent-primary), var(--accent-secondary)); + transform: translateY(-50%); + z-index: 1; + width: 0%; + transition: width 1s ease; +} + +.process-timeline.animated::after { + width: 80%; +} + +.process-step { + display: flex; + flex-direction: column; + align-items: center; + position: relative; + z-index: 2; + flex: 1; +} + +.process-step-number { + width: 70px; + height: 70px; + background: var(--card-bg); + border: 3px solid var(--glass-border); + border-radius: 50%; + display: flex; + align-items: center; + justify-content: center; + font-family: 'OmegaLarge', sans-serif; + font-size: 1.5rem; + color: var(--text-muted); + margin-bottom: 1.5rem; + transition: all 0.5s ease; + position: relative; +} + +.process-step-number::before { + content: ''; + position: absolute; + inset: -6px; + border-radius: 50%; + background: linear-gradient(135deg, var(--accent-primary), var(--accent-secondary)); + opacity: 0; + z-index: -1; + transition: opacity 0.5s ease; +} + +.process-step.active .process-step-number { + border-color: var(--accent-primary); + color: var(--accent-light); + background: var(--bg-deep); +} + +.process-step.active .process-step-number::before { + opacity: 1; +} + +.process-step-icon { + position: absolute; + width: 30px; + height: 30px; + color: var(--text-muted); + transition: color 0.5s ease; +} + +.process-step.active .process-step-icon { + color: white; +} + +.process-step-content { + text-align: center; + max-width: 150px; +} + +.process-step-title { + font-family: 'OmegaLarge', sans-serif; + font-size: 1rem; + margin-bottom: 0.5rem; + color: var(--text-primary); +} + +.process-step-desc { + font-size: 0.85rem; + color: var(--text-muted); + line-height: 1.5; +} + +@media (max-width: 768px) { + .process-timeline { + flex-direction: column; + gap: 2rem; + padding: 0; + } + + .process-timeline::before, + .process-timeline::after { + top: 10%; + bottom: 10%; + left: 35px; + right: auto; + width: 3px; + height: auto; + transform: none; + } + + .process-timeline::after { + height: 0%; + width: 3px; + } + + .process-timeline.animated::after { + height: 80%; + width: 3px; + } + + .process-step { + flex-direction: row; + gap: 1.5rem; + } + + .process-step-number { + margin-bottom: 0; + flex-shrink: 0; + } + + .process-step-content { + text-align: left; + max-width: none; + } +} + +/* ============================================ + Service Tabs + ============================================ */ +.service-tabs-section { + padding: 6rem 2rem; +} + +.service-tabs-container { + max-width: 1200px; + margin: 0 auto; +} + +.service-tabs-nav { + display: flex; + justify-content: center; + gap: 1rem; + margin-bottom: 3rem; + flex-wrap: wrap; +} + +.service-tab-btn { + display: flex; + align-items: center; + gap: 0.75rem; + padding: 1rem 1.5rem; + background: var(--glass-bg); + border: 1px solid var(--glass-border); + border-radius: 8px; + color: var(--text-secondary); + font-family: 'OmegaSmall', sans-serif; + font-size: 0.95rem; + cursor: pointer; + transition: all 0.3s ease; +} + +.service-tab-btn:hover { + border-color: var(--accent-primary); + color: var(--text-primary); +} + +.service-tab-btn.active { + background: linear-gradient(135deg, var(--accent-primary), var(--accent-secondary)); + border-color: transparent; + color: white; +} + +.service-tab-btn svg { + width: 20px; + height: 20px; +} + +/* Service Tags / Stamps */ +.service-stamp { + position: relative; + display: inline-flex; + align-items: center; + justify-content: center; + padding: 0.3rem 0.6rem; + font-family: 'OmegaLarge', sans-serif; + font-size: 0.65rem; + text-transform: uppercase; + letter-spacing: 1px; + border-radius: 4px; + font-weight: bold; + transform: rotate(12deg); + box-shadow: 0 2px 10px rgba(0, 0, 0, 0.2); + animation: stampPop 0.4s ease; +} + +@keyframes stampPop { + 0% { transform: rotate(12deg) scale(0); opacity: 0; } + 50% { transform: rotate(12deg) scale(1.2); } + 100% { transform: rotate(12deg) scale(1); opacity: 1; } +} + +.service-stamp-free { + background: linear-gradient(135deg, #2ecc71, #27ae60); + color: white; + border: 2px dashed rgba(255, 255, 255, 0.5); +} + +.service-stamp-new { + background: linear-gradient(135deg, #3498db, #2980b9); + color: white; + border: 2px dashed rgba(255, 255, 255, 0.5); +} + +.service-stamp-popular { + background: linear-gradient(135deg, #e74c3c, #c0392b); + color: white; + border: 2px dashed rgba(255, 255, 255, 0.5); +} + +.service-stamp-promo { + background: linear-gradient(135deg, #f39c12, #e67e22); + color: white; + border: 2px dashed rgba(255, 255, 255, 0.5); +} + +.service-stamp-best { + background: linear-gradient(135deg, #9b59b6, #8e44ad); + color: white; + border: 2px dashed rgba(255, 255, 255, 0.5); +} + +/* Stamp on tab button */ +.service-tab-btn { + position: relative; +} + +.service-tab-btn .service-stamp { + position: absolute; + top: -10px; + right: -10px; + font-size: 0.55rem; + padding: 0.2rem 0.5rem; + z-index: 10; +} + +/* Large stamp for service visual */ +.service-visual-stamp { + position: absolute; + top: 20px; + right: 20px; + z-index: 10; + padding: 0.5rem 1rem; + font-size: 0.85rem; + transform: rotate(12deg); + border: 3px dashed rgba(255, 255, 255, 0.6); + box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3); +} + +.service-visual-stamp::before { + content: ''; + position: absolute; + inset: -6px; + border: 2px solid currentColor; + border-radius: 6px; + opacity: 0.3; +} + +/* Stamp in header - inline with transparency */ +.service-tab-header { + position: relative; +} + +.service-tab-header .service-stamp-inline { + display: inline-flex; + margin-left: 1rem; + vertical-align: middle; + transform: rotate(12deg); + opacity: 0.7; + font-size: 0.55rem; + padding: 0.2rem 0.45rem; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15); + transition: opacity 0.3s ease; +} + +.service-tab-header .service-stamp-inline:hover { + opacity: 1; +} + +/* Animated stamp effect */ +.service-stamp-animated { + animation: stampBounce 2s ease infinite; +} + +@keyframes stampBounce { + 0%, 100% { transform: rotate(12deg) scale(1); } + 50% { transform: rotate(12deg) scale(1.05); } +} + +/* Ribbon style stamp */ +.service-ribbon { + position: absolute; + top: 20px; + left: -35px; + background: linear-gradient(135deg, #2ecc71, #27ae60); + color: white; + padding: 0.5rem 3rem; + font-family: 'OmegaLarge', sans-serif; + font-size: 0.75rem; + text-transform: uppercase; + letter-spacing: 1px; + transform: rotate(-45deg); + box-shadow: 0 4px 15px rgba(0, 0, 0, 0.3); + z-index: 10; +} + +.service-ribbon::before, +.service-ribbon::after { + content: ''; + position: absolute; + bottom: -5px; + border: 5px solid #1e8449; + border-bottom-color: transparent; +} + +.service-ribbon::before { + left: 0; + border-left-color: transparent; +} + +.service-ribbon::after { + right: 0; + border-right-color: transparent; +} + +/* Tab Content */ +.service-tab-content { + display: none; + animation: fadeInTab 0.5s ease; +} + +.service-tab-content.active { + display: block; +} + +@keyframes fadeInTab { + from { + opacity: 0; + transform: translateY(20px); + } + to { + opacity: 1; + transform: translateY(0); + } +} + +.service-tab-grid { + display: grid; + grid-template-columns: 1fr 1.2fr; + gap: 3rem; + align-items: center; +} + +/* Service Visual */ +.service-visual { + position: relative; + height: 400px; + background: var(--card-bg); + border: 1px solid var(--glass-border); + border-radius: 12px; + overflow: hidden; + display: flex; + align-items: center; + justify-content: center; +} + +.service-visual::before { + content: ''; + position: absolute; + inset: 0; + background: linear-gradient(135deg, var(--accent-primary), var(--accent-secondary)); + opacity: 0.1; +} + +.service-visual-icon { + position: relative; + z-index: 1; +} + +.service-visual-icon .icon-main { + width: 120px; + height: 120px; + background: linear-gradient(135deg, var(--accent-primary), var(--accent-secondary)); + border-radius: 24px; + display: flex; + align-items: center; + justify-content: center; + animation: floatIcon 3s ease-in-out infinite; + box-shadow: 0 20px 60px var(--shadow-color); +} + +.service-visual-icon .icon-main svg { + width: 60px; + height: 60px; + color: white; +} + +@keyframes floatIcon { + 0%, 100% { transform: translateY(0); } + 50% { transform: translateY(-15px); } +} + +/* Floating elements around icon */ +.service-visual-particles { + position: absolute; + inset: 0; + pointer-events: none; +} + +.particle { + position: absolute; + background: var(--accent-primary); + border-radius: 50%; + opacity: 0.3; + animation: particleFloat 4s ease-in-out infinite; +} + +.particle:nth-child(1) { width: 10px; height: 10px; top: 20%; left: 20%; animation-delay: 0s; } +.particle:nth-child(2) { width: 15px; height: 15px; top: 30%; right: 25%; animation-delay: -1s; } +.particle:nth-child(3) { width: 8px; height: 8px; bottom: 25%; left: 30%; animation-delay: -2s; } +.particle:nth-child(4) { width: 12px; height: 12px; bottom: 20%; right: 20%; animation-delay: -3s; } +.particle:nth-child(5) { width: 6px; height: 6px; top: 50%; left: 15%; animation-delay: -0.5s; } +.particle:nth-child(6) { width: 14px; height: 14px; top: 15%; right: 35%; animation-delay: -1.5s; } + +@keyframes particleFloat { + 0%, 100% { transform: translate(0, 0) scale(1); opacity: 0.3; } + 50% { transform: translate(10px, -20px) scale(1.2); opacity: 0.6; } +} + +/* Service Details */ +.service-tab-details { + padding: 1rem 0; +} + +.service-tab-header { + margin-bottom: 2rem; +} + +.service-tab-header h2 { + font-family: 'OmegaLarge', sans-serif; + font-size: 2.25rem; + margin-bottom: 0.75rem; +} + +.service-tab-header p { + color: var(--text-secondary); + font-size: 1.1rem; + line-height: 1.7; +} + +.service-tab-features { + display: grid; + grid-template-columns: repeat(2, 1fr); + gap: 1rem; + margin-bottom: 2rem; +} + +.service-feature-item { + display: flex; + align-items: center; + gap: 0.75rem; + padding: 1rem; + background: var(--glass-bg); + border: 1px solid var(--glass-border); + border-radius: 8px; + transition: all 0.3s ease; +} + +.service-feature-item:hover { + border-color: var(--accent-primary); + transform: translateX(5px); +} + +.service-feature-icon { + width: 40px; + height: 40px; + background: linear-gradient(135deg, var(--accent-primary), var(--accent-secondary)); + border-radius: 8px; + display: flex; + align-items: center; + justify-content: center; + flex-shrink: 0; +} + +.service-feature-icon svg { + width: 20px; + height: 20px; + color: white; +} + +.service-feature-text h4 { + font-size: 0.95rem; + margin-bottom: 0.2rem; +} + +.service-feature-text p { + font-size: 0.8rem; + color: var(--text-muted); +} + +/* Service CTA */ +.service-tab-cta { + display: flex; + gap: 1rem; + flex-wrap: wrap; +} + +/* Service Highlights */ +.service-highlights { + display: flex; + gap: 2rem; + margin-bottom: 2rem; + padding: 1.5rem; + background: var(--glass-bg); + border: 1px solid var(--glass-border); + border-radius: 8px; +} + +.service-highlight { + text-align: center; + flex: 1; +} + +.service-highlight-value { + font-family: 'OmegaLarge', sans-serif; + font-size: 1.75rem; + color: var(--accent-light); + margin-bottom: 0.25rem; +} + +.service-highlight-label { + font-size: 0.8rem; + color: var(--text-muted); +} + +@media (max-width: 1024px) { + .service-tab-grid { + grid-template-columns: 1fr; + gap: 2rem; + } + + .service-visual { + height: 300px; + } +} + +@media (max-width: 600px) { + .service-tab-features { + grid-template-columns: 1fr; + } + + .service-highlights { + flex-direction: column; + gap: 1rem; + } + + .service-tab-btn { + padding: 0.75rem 1rem; + font-size: 0.85rem; + } + + .service-tab-btn span { + display: none; + } +} + +/* ============================================ + Why Choose Us Section + ============================================ */ +.why-us-grid { + max-width: 1000px; + margin: 0 auto; + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 2rem; +} + +.why-us-card { + text-align: center; + padding: 2.5rem 2rem; + background: var(--card-bg); + border: 1px solid var(--glass-border); + border-radius: 8px; + transition: all 0.3s ease; +} + +.why-us-card:hover { + border-color: var(--accent-primary); + transform: translateY(-5px); +} + +.why-us-icon { + width: 80px; + height: 80px; + margin: 0 auto 1.5rem; + background: linear-gradient(135deg, var(--accent-primary), var(--accent-secondary)); + border-radius: 16px; + display: flex; + align-items: center; + justify-content: center; +} + +.why-us-icon svg { + width: 36px; + height: 36px; + color: white; +} + +.why-us-card h3 { + font-family: 'OmegaLarge', sans-serif; + font-size: 1.2rem; + margin-bottom: 0.75rem; +} + +.why-us-card p { + color: var(--text-secondary); + font-size: 0.95rem; + line-height: 1.6; +} + +@media (max-width: 768px) { + .why-us-grid { + grid-template-columns: 1fr; + } +} + +/* |||||||||||||||||||||||||||||||||||||||||||||| + |||||||||||||||||||||||||||||||||||||||||||||| + |||||||||||||||||||||||||||||||||||||||||||||| */ + +/* ============================================ + Service Stamps / Tags + ============================================ */ +.service-stamp { + position: relative; + display: inline-flex; + align-items: center; + justify-content: center; + padding: 0.3rem 0.6rem; + font-family: 'OmegaLarge', sans-serif; + font-size: 0.65rem; + text-transform: uppercase; + letter-spacing: 1px; + border-radius: 4px; + font-weight: bold; + transform: rotate(12deg); + box-shadow: 0 2px 10px rgba(0, 0, 0, 0.2); +} + +.service-stamp-free { + background: linear-gradient(135deg, #2ecc71, #27ae60); + color: white; + border: 2px dashed rgba(255, 255, 255, 0.5); +} + +.service-stamp-new { + background: linear-gradient(135deg, #3498db, #2980b9); + color: white; + border: 2px dashed rgba(255, 255, 255, 0.5); +} + +.service-stamp-popular { + background: linear-gradient(135deg, #e74c3c, #c0392b); + color: white; + border: 2px dashed rgba(255, 255, 255, 0.5); +} + +.service-stamp-promo { + background: linear-gradient(135deg, #f39c12, #e67e22); + color: white; + border: 2px dashed rgba(255, 255, 255, 0.5); +} + +.service-tab-btn .service-stamp { + position: absolute; + top: -10px; + right: -10px; + font-size: 0.55rem; + padding: 0.2rem 0.5rem; + z-index: 10; +} + +.service-visual-stamp { + position: absolute; + top: 20px; + right: 20px; + z-index: 10; + padding: 0.5rem 1rem; + font-size: 0.85rem; + transform: rotate(12deg); + border: 3px dashed rgba(255, 255, 255, 0.6); + box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3); +} + +.service-tab-header .service-stamp-inline { + display: inline-flex; + margin-left: 1rem; + vertical-align: middle; + transform: rotate(12deg); + opacity: 0.75; + font-size: 0.75rem; + padding: 0.35rem 0.7rem; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15); + transition: opacity 0.3s ease, transform 0.3s ease; +} + +.service-tab-header .service-stamp-inline:hover { + opacity: 1; + transform: rotate(12deg) scale(1.1); +} + +.service-stamp-animated { + animation: stampBounce 2s ease infinite; +} + +@keyframes stampBounce { + 0%, 100% { transform: rotate(12deg) scale(1); } + 50% { transform: rotate(12deg) scale(1.05); } +} + +/* ============================================ + Partners Section - Infinite Logo Carousel + ============================================ */ +.partners-section { + padding: 4rem 0; +} + +.partners-section .section-header { + margin-bottom: 2.5rem; +} + +.partners-marquee { + position: relative; + width: 100%; + overflow: hidden; + padding: 2rem 0 3rem; + -webkit-mask-image: linear-gradient(90deg, transparent 0%, white 8%, white 92%, transparent 100%); + mask-image: linear-gradient(90deg, transparent 0%, white 8%, white 92%, transparent 100%); +} + +.partners-track { + display: flex; + gap: 5rem; + width: max-content; + animation: marqueeInfinite 35s linear infinite; + will-change: transform; + backface-visibility: hidden; + perspective: 1000px; +} + +.partners-track:hover { + animation-play-state: paused; +} + +@keyframes marqueeInfinite { + 0% { + transform: translate3d(0, 0, 0); + } + 100% { + transform: translate3d(-50%, 0, 0); + } +} + +.partner-item { + display: flex; + flex-direction: column; + align-items: center; + gap: 1rem; + flex-shrink: 0; + cursor: pointer; + transition: transform 0.3s ease; +} + +.partner-item:hover { + transform: translateY(-8px); +} + +.partner-logo-icon { + width: 100px; + height: 100px; + display: flex; + align-items: center; + justify-content: center; + font-family: 'OmegaLarge', sans-serif; + font-size: 2rem; + color: var(--text-muted); + background: var(--card-bg); + border: 1px solid var(--glass-border); + border-radius: 20px; + transition: all 0.3s ease; +} + +.partner-item:hover .partner-logo-icon { + color: var(--accent-light); + border-color: var(--accent-primary); + background: var(--glass-bg); + box-shadow: 0 15px 40px rgba(139, 58, 98, 0.3); +} + +.partner-item span { + font-size: 0.95rem; + color: var(--text-muted); + font-weight: 500; + transition: color 0.3s ease; + white-space: nowrap; +} + +.partner-item:hover span { + color: var(--text-primary); +} + +@media (max-width: 768px) { + .partners-track { + gap: 3rem; + animation-duration: 25s; + } + + .partner-logo-icon { + width: 75px; + height: 75px; + font-size: 1.5rem; + border-radius: 14px; + } + + .partner-item span { + font-size: 0.8rem; + } +} + +/* ============================================ + Legal Pages Styles + ============================================ */ +.legal-content { + padding: 4rem 2rem 6rem; + max-width: 900px; + margin: 0 auto; +} + +.legal-container { + display: flex; + flex-direction: column; + gap: 2.5rem; +} + +.legal-section h2 { + font-family: 'OmegaLarge', sans-serif; + font-size: 1.3rem; + color: var(--text-primary); + margin-bottom: 1rem; + display: flex; + align-items: center; + gap: 0.75rem; +} + +.legal-section h2 svg { + width: 22px; + height: 22px; + color: var(--accent-light); +} + +.legal-card { + background: var(--card-bg); + border: 1px solid var(--glass-border); + border-radius: 12px; + padding: 1.5rem 2rem; +} + +.legal-card p { + color: var(--text-secondary); + line-height: 1.7; + margin-bottom: 1rem; +} + +.legal-card p:last-child { + margin-bottom: 0; +} + +.legal-card strong { + color: var(--text-primary); +} + +.legal-card ul { + margin: 1rem 0; + padding-left: 1.5rem; + color: var(--text-secondary); +} + +.legal-card ul li { + margin-bottom: 0.5rem; + line-height: 1.6; +} + +.legal-card ul li::marker { + color: var(--accent-light); +} + +@media (max-width: 768px) { + .legal-content { + padding: 2rem 1rem 4rem; + } + + .legal-card { + padding: 1.25rem 1.5rem; + } + + .legal-section h2 { + font-size: 1.1rem; + } +} diff --git a/assets/data/projects.json b/assets/data/projects.json new file mode 100644 index 0000000..a126358 --- /dev/null +++ b/assets/data/projects.json @@ -0,0 +1,290 @@ +[ + { + "id": 1, + "category": "bot", + "title": "Medieval RP Bot", + "desc": "Un système RP médiéval complet avec économie, métiers, combat stratégique et gestion de royaumes. Développé pour une communauté de 5000+ joueurs actifs.", + "gradient": "linear-gradient(135deg, var(--accent-primary), var(--accent-secondary))", + "year": "2024", + "duration": "3 mois", + "features": ["Système d'économie", "Combat tour par tour", "Gestion de royaumes", "Quêtes automatisées", "Inventaire avancé", "Système de métiers"], + "tech": ["Python", "Discord.py", "PostgreSQL", "Redis", "FastAPI"], + "stats": [{ "value": "5000+", "label": "Joueurs" }, { "value": "150+", "label": "Commandes" }, { "value": "99.9%", "label": "Uptime" }] + }, + { + "id": 2, + "category": "map", + "title": "Cyberpunk City", + "desc": "Ville futuriste immersive avec 5 quartiers distincts, plus de 100 bâtiments accessibles et un système jour/nuit dynamique. Optimisée pour 50 joueurs.", + "gradient": "linear-gradient(135deg, #5E2040, #8b3a62)", + "year": "2024", + "duration": "2 mois", + "features": ["5 quartiers uniques", "100+ bâtiments", "Système jour/nuit", "Zones scriptées", "Éclairage néon", "Optimisé 50 joueurs"], + "tech": ["Fortnite Creative", "UEFN", "Verse", "Lighting"], + "stats": [{ "value": "50K+", "label": "Parties" }, { "value": "100+", "label": "Bâtiments" }, { "value": "50", "label": "Joueurs max" }] + }, + { + "id": 3, + "category": "bot", + "title": "Space Station RP", + "desc": "Bot Sci-Fi avec économie spatiale, gestion de vaisseaux, exploration de planètes et système de factions interstellaires.", + "gradient": "linear-gradient(135deg, #3a1f5e, #8b3a62)", + "year": "2024", + "duration": "4 mois", + "features": ["Économie spatiale", "Gestion de vaisseaux", "Exploration", "Factions", "Combat spatial", "Crafting"], + "tech": ["Python", "Discord.py", "MongoDB", "Docker"], + "stats": [{ "value": "3000+", "label": "Joueurs" }, { "value": "200+", "label": "Commandes" }, { "value": "50+", "label": "Planètes" }] + }, + { + "id": 4, + "category": "graphisme", + "title": "Branding Nova RP", + "desc": "Identité visuelle complète incluant logo, bannières, emojis personnalisés et templates pour un serveur RP majeur.", + "gradient": "linear-gradient(135deg, #2d1b5e, #5E2040)", + "year": "2024", + "duration": "3 semaines", + "features": ["Logo principal", "Déclinaisons logo", "Bannières Discord", "Emojis custom", "Templates", "Guide de style"], + "tech": ["Photoshop", "Illustrator", "After Effects", "Figma"], + "stats": [{ "value": "50+", "label": "Éléments" }, { "value": "8", "label": "Bannières" }, { "value": "30+", "label": "Emojis" }] + }, + { + "id": 5, + "category": "map", + "title": "Tokyo Night", + "desc": "Reconstitution d'un quartier de Tokyo nocturne avec ruelles, néons, boutiques et ambiance authentique pour du RP urbain japonais.", + "gradient": "linear-gradient(135deg, #1a3a5e, #3a5e8b)", + "year": "2024", + "duration": "6 semaines", + "features": ["Ruelles détaillées", "Néons japonais", "Boutiques", "Metro", "Appartements", "Rooftops"], + "tech": ["Fortnite Creative", "UEFN", "Custom Props"], + "stats": [{ "value": "30K+", "label": "Parties" }, { "value": "80+", "label": "Boutiques" }, { "value": "40", "label": "Joueurs max" }] + }, + { + "id": 6, + "category": "bot", + "title": "Western Frontier", + "desc": "Système RP Far West complet avec duels, shérif, hors-la-loi, prospection d'or et gestion de ranch.", + "gradient": "linear-gradient(135deg, #5e3a1a, #8b5e3a)", + "year": "2023", + "duration": "3 mois", + "features": ["Système de duels", "Rôles Sheriff/Outlaw", "Prospection d'or", "Gestion de ranch", "Économie western", "Wanted system"], + "tech": ["Python", "Discord.py", "SQLite", "PIL"], + "stats": [{ "value": "2500+", "label": "Joueurs" }, { "value": "100+", "label": "Commandes" }, { "value": "15+", "label": "Métiers" }] + }, + { + "id": 7, + "category": "graphisme", + "title": "EcoVerse Assets", + "desc": "Pack complet d'icônes et emojis sur thème écologique/nature pour serveur communautaire gaming.", + "gradient": "linear-gradient(135deg, #1a5e3a, #3a8b5e)", + "year": "2024", + "duration": "2 semaines", + "features": ["Pack icônes", "Emojis animés", "Badges ranks", "Séparateurs", "Backgrounds", "Overlays"], + "tech": ["Illustrator", "After Effects", "Photoshop"], + "stats": [{ "value": "100+", "label": "Icônes" }, { "value": "50+", "label": "Emojis" }, { "value": "20", "label": "Badges" }] + }, + { + "id": 8, + "category": "map", + "title": "Apocalypse Zone", + "desc": "Monde post-apocalyptique avec zones de survie, bunkers, véhicules abandonnés et ambiance désolée.", + "gradient": "linear-gradient(135deg, #5e1a3a, #8b3a5e)", + "year": "2023", + "duration": "2 mois", + "features": ["Zones dévastées", "Bunkers secrets", "Véhicules props", "Camps survivants", "Ressources", "Zone radioactive"], + "tech": ["Fortnite Creative", "UEFN", "Environmental Design"], + "stats": [{ "value": "25K+", "label": "Parties" }, { "value": "10", "label": "Zones" }, { "value": "30", "label": "Joueurs max" }] + }, + { + "id": 9, + "category": "bot", + "title": "Academy RP", + "desc": "Système scolaire interactif avec cours, examens, clubs, dortoirs et système de réputation étudiant.", + "gradient": "linear-gradient(135deg, #3a1a5e, #5e3a8b)", + "year": "2024", + "duration": "2 mois", + "features": ["Système de cours", "Examens", "Clubs étudiants", "Dortoirs", "Réputation", "Events scolaires"], + "tech": ["Python", "Discord.py", "PostgreSQL"], + "stats": [{ "value": "4000+", "label": "Étudiants" }, { "value": "50+", "label": "Cours" }, { "value": "20+", "label": "Clubs" }] + }, + { + "id": 10, + "category": "graphisme", + "title": "Golden Crown", + "desc": "Bannières et visuels premium style royal/luxe pour serveur RP médiéval haut de gamme.", + "gradient": "linear-gradient(135deg, #5e5e1a, #8b8b3a)", + "year": "2024", + "duration": "1 mois", + "features": ["Bannières premium", "Logo royal", "Ornements", "Cadres dorés", "Typography", "Animations"], + "tech": ["Photoshop", "Illustrator", "After Effects"], + "stats": [{ "value": "30+", "label": "Visuels" }, { "value": "5", "label": "Animations" }, { "value": "100%", "label": "Satisfaction" }] + }, + { + "id": 11, + "category": "map", + "title": "Mystic Village", + "desc": "Village fantastique médiéval avec magie, créatures et architecture féerique pour RP fantasy.", + "gradient": "linear-gradient(135deg, #1a1a5e, #3a3a8b)", + "year": "2023", + "duration": "5 semaines", + "features": ["Village médiéval", "Tour du mage", "Forêt enchantée", "Taverne", "Marché", "Arène"], + "tech": ["Fortnite Creative", "Custom Lighting"], + "stats": [{ "value": "20K+", "label": "Parties" }, { "value": "50+", "label": "Bâtiments" }, { "value": "35", "label": "Joueurs max" }] + }, + { + "id": 12, + "category": "bot", + "title": "Crime City", + "desc": "Bot GTA-like avec gangs, territoire, trafics, police et système judiciaire complet.", + "gradient": "linear-gradient(135deg, #5e1a1a, #8b3a3a)", + "year": "2024", + "duration": "4 mois", + "features": ["Système de gangs", "Territoires", "Trafics", "Police/Justice", "Prison", "Braquages"], + "tech": ["Python", "Discord.py", "PostgreSQL", "Redis"], + "stats": [{ "value": "6000+", "label": "Joueurs" }, { "value": "250+", "label": "Commandes" }, { "value": "10+", "label": "Gangs" }] + }, + { + "id": 13, + "category": "bot", + "title": "Pirate Bay RP", + "desc": "Aventure pirate complète avec navigation, batailles navales, trésors et commerce maritime.", + "gradient": "linear-gradient(135deg, #1a4a5e, #3a6a8b)", + "year": "2023", + "duration": "3 mois", + "features": ["Navigation", "Batailles navales", "Chasse au trésor", "Commerce", "Équipages", "Îles secrètes"], + "tech": ["Python", "Discord.py", "MongoDB"], + "stats": [{ "value": "3500+", "label": "Pirates" }, { "value": "100+", "label": "Îles" }, { "value": "50+", "label": "Navires" }] + }, + { + "id": 14, + "category": "map", + "title": "Neon District", + "desc": "Quartier cyberpunk détaillé avec clubs, appartements high-tech et ambiance nocturne.", + "gradient": "linear-gradient(135deg, #4a1a5e, #6a3a8b)", + "year": "2024", + "duration": "4 semaines", + "features": ["Nightclubs", "Appartements", "Ruelles néon", "Boutiques tech", "Garages", "Rooftop bars"], + "tech": ["Fortnite Creative", "UEFN", "Neon Effects"], + "stats": [{ "value": "15K+", "label": "Parties" }, { "value": "60+", "label": "Intérieurs" }, { "value": "25", "label": "Joueurs max" }] + }, + { + "id": 15, + "category": "graphisme", + "title": "Cyber UI Pack", + "desc": "Interface futuriste complète avec HUD, menus et éléments interactifs style sci-fi.", + "gradient": "linear-gradient(135deg, #1a5e5e, #3a8b8b)", + "year": "2024", + "duration": "3 semaines", + "features": ["HUD elements", "Menus", "Boutons", "Barres de vie", "Minimap style", "Notifications"], + "tech": ["Figma", "Illustrator", "After Effects"], + "stats": [{ "value": "80+", "label": "Éléments" }, { "value": "10", "label": "Animations" }, { "value": "3", "label": "Thèmes" }] + }, + { + "id": 16, + "category": "bot", + "title": "Dragon Realm", + "desc": "Univers fantasy avec dragons apprivoisables, magie élémentaire et quêtes épiques.", + "gradient": "linear-gradient(135deg, #5e2a1a, #8b4a3a)", + "year": "2023", + "duration": "5 mois", + "features": ["Dragons", "Magie élémentaire", "Quêtes épiques", "Guildes", "Donjons", "Boss fights"], + "tech": ["Python", "Discord.py", "PostgreSQL", "PIL"], + "stats": [{ "value": "4500+", "label": "Joueurs" }, { "value": "30+", "label": "Dragons" }, { "value": "100+", "label": "Quêtes" }] + }, + { + "id": 17, + "category": "map", + "title": "Space Colony", + "desc": "Station spatiale habitable avec modules, serres, hangars et vue sur l'espace.", + "gradient": "linear-gradient(135deg, #1a2a5e, #3a4a8b)", + "year": "2024", + "duration": "6 semaines", + "features": ["Modules habitables", "Serres spatiales", "Hangars", "Passerelles", "Vue espace", "Gravité zéro"], + "tech": ["Fortnite Creative", "UEFN", "Sci-fi Props"], + "stats": [{ "value": "12K+", "label": "Parties" }, { "value": "20", "label": "Modules" }, { "value": "20", "label": "Joueurs max" }] + }, + { + "id": 18, + "category": "graphisme", + "title": "Retro Wave Pack", + "desc": "Style années 80 revisité avec néons, grilles et esthétique synthwave.", + "gradient": "linear-gradient(135deg, #5e1a4a, #8b3a6a)", + "year": "2023", + "duration": "2 semaines", + "features": ["Bannières retro", "Grilles 80s", "Néons rose/bleu", "Typography", "Sun effects", "VHS overlays"], + "tech": ["Photoshop", "After Effects", "Illustrator"], + "stats": [{ "value": "40+", "label": "Éléments" }, { "value": "15", "label": "Animations" }, { "value": "5", "label": "Templates" }] + }, + { + "id": 19, + "category": "bot", + "title": "Zombie Survival", + "desc": "Système survie zombie avec crafting, bases, hordes et coopération entre survivants.", + "gradient": "linear-gradient(135deg, #2a5e1a, #4a8b3a)", + "year": "2024", + "duration": "3 mois", + "features": ["Système de survie", "Crafting", "Construction bases", "Hordes zombies", "Coop", "Ressources"], + "tech": ["Python", "Discord.py", "MongoDB", "Redis"], + "stats": [{ "value": "5500+", "label": "Survivants" }, { "value": "50+", "label": "Items craft" }, { "value": "1000+", "label": "Bases" }] + }, + { + "id": 20, + "category": "map", + "title": "Desert Oasis", + "desc": "Monde désertique immersif avec oasis, ruines anciennes et caravanes nomades.", + "gradient": "linear-gradient(135deg, #5e4a1a, #8b6a3a)", + "year": "2023", + "duration": "5 semaines", + "features": ["Désert vaste", "Oasis centrale", "Ruines anciennes", "Camp nomade", "Tempêtes sable", "Grottes"], + "tech": ["Fortnite Creative", "Environmental FX"], + "stats": [{ "value": "18K+", "label": "Parties" }, { "value": "8", "label": "Zones" }, { "value": "30", "label": "Joueurs max" }] + }, + { + "id": 21, + "category": "bot", + "title": "Mafia Empire", + "desc": "Organisation criminelle RP avec familles, territoires, business illégaux et omerta.", + "gradient": "linear-gradient(135deg, #3a3a3a, #5a5a5a)", + "year": "2024", + "duration": "4 mois", + "features": ["Familles mafieuses", "Territoires", "Business", "Omerta", "Hiérarchie", "Contrats"], + "tech": ["Python", "Discord.py", "PostgreSQL"], + "stats": [{ "value": "3800+", "label": "Membres" }, { "value": "8", "label": "Familles" }, { "value": "150+", "label": "Commandes" }] + }, + { + "id": 22, + "category": "graphisme", + "title": "Fantasy Icons", + "desc": "200+ icônes médiévales pour items, skills, classes et interface de jeu RP.", + "gradient": "linear-gradient(135deg, #4a3a1a, #6a5a3a)", + "year": "2024", + "duration": "1 mois", + "features": ["Icônes items", "Icônes skills", "Icônes classes", "Cadres", "Rarités", "Animations"], + "tech": ["Illustrator", "Photoshop"], + "stats": [{ "value": "200+", "label": "Icônes" }, { "value": "6", "label": "Rarités" }, { "value": "12", "label": "Classes" }] + }, + { + "id": 23, + "category": "map", + "title": "Underwater City", + "desc": "Cité sous-marine style Atlantis avec dômes, tunnels et créatures marines.", + "gradient": "linear-gradient(135deg, #1a3a4a, #3a5a6a)", + "year": "2024", + "duration": "7 semaines", + "features": ["Dômes habitables", "Tunnels verre", "Jardins marins", "Palais central", "Sous-marins", "Créatures"], + "tech": ["Fortnite Creative", "UEFN", "Underwater FX"], + "stats": [{ "value": "22K+", "label": "Parties" }, { "value": "15", "label": "Dômes" }, { "value": "25", "label": "Joueurs max" }] + }, + { + "id": 24, + "category": "bot", + "title": "Superhero League", + "desc": "Univers super-héros avec pouvoirs, missions, vilains et quartier général.", + "gradient": "linear-gradient(135deg, #1a1a4a, #3a3a6a)", + "year": "2023", + "duration": "4 mois", + "features": ["Pouvoirs custom", "Missions", "Vilains IA", "QG héros", "Réputation", "Team-ups"], + "tech": ["Python", "Discord.py", "PostgreSQL", "PIL"], + "stats": [{ "value": "4200+", "label": "Héros" }, { "value": "80+", "label": "Pouvoirs" }, { "value": "200+", "label": "Missions" }] + } +] diff --git a/assets/data/team.json b/assets/data/team.json new file mode 100644 index 0000000..296eaab --- /dev/null +++ b/assets/data/team.json @@ -0,0 +1,86 @@ +[ + { + "name": "Alexandre", + "role": "Développeur Principal", + "avatar": "A", + "bio": "Passionné de développement depuis l'adolescence, Alexandre a découvert le monde du RP Discord en 2019. Depuis, il a développé plus de 50 bots pour des communautés allant de quelques centaines à plusieurs milliers de membres. Son expertise couvre les systèmes d'économie, les mécaniques de jeu complexes et l'optimisation des performances.", + "stats": [ + { "value": "5", "label": "Ans d'exp." }, + { "value": "50+", "label": "Projets" }, + { "value": "★★★", "label": "Expert" } + ], + "skills": ["Python", "Discord.py", "JavaScript", "Node.js", "MongoDB", "API REST"] + }, + { + "name": "Sophie", + "role": "Designer Fortnite", + "avatar": "S", + "bio": "Sophie combine sa passion pour le level design et le storytelling pour créer des environnements Fortnite uniques. Formée en architecture, elle apporte une attention particulière aux détails et à l'ambiance de chaque map. Ses créations ont été jouées par plus de 100 000 joueurs.", + "stats": [ + { "value": "3", "label": "Ans d'exp." }, + { "value": "25+", "label": "Maps" }, + { "value": "100K", "label": "Joueurs" } + ], + "skills": ["Fortnite Creative", "UEFN", "Level Design", "3D", "Lighting", "Scripting"] + }, + { + "name": "Thomas", + "role": "Community Manager", + "avatar": "T", + "bio": "Thomas est le lien entre OmégaKube et ses communautés. Ancien admin de plusieurs serveurs RP majeurs, il comprend les besoins des joueurs et des staff. Il s'assure que chaque projet répond aux attentes et accompagne les clients dans le développement de leur communauté.", + "stats": [ + { "value": "4", "label": "Ans d'exp." }, + { "value": "20K+", "label": "Membres" }, + { "value": "24/7", "label": "Dispo" } + ], + "skills": ["Community Management", "Discord", "Modération", "Events", "Support"] + }, + { + "name": "Marie", + "role": "Graphiste", + "avatar": "M", + "bio": "Marie donne vie aux identités visuelles des projets RP. Diplômée en design graphique, elle maîtrise aussi bien la création de logos que le motion design. Son style unique mélange esthétique gaming et professionnalisme pour des visuels qui marquent les esprits.", + "stats": [ + { "value": "6", "label": "Ans d'exp." }, + { "value": "200+", "label": "Créations" }, + { "value": "★★★", "label": "Expert" } + ], + "skills": ["Photoshop", "Illustrator", "After Effects", "Figma", "Branding", "UI Design"] + }, + { + "name": "Lucas", + "role": "Développeur Backend", + "avatar": "L", + "bio": "Lucas est l'architecte invisible derrière les systèmes les plus robustes d'OmégaKube. Spécialisé dans les bases de données et les API, il conçoit des systèmes d'économie capables de gérer des millions de transactions sans ralentissement.", + "stats": [ + { "value": "4", "label": "Ans d'exp." }, + { "value": "30+", "label": "Systèmes" }, + { "value": "99.9%", "label": "Uptime" } + ], + "skills": ["Python", "PostgreSQL", "Redis", "FastAPI", "Docker", "AWS"] + }, + { + "name": "Emma", + "role": "Scénariste RP", + "avatar": "E", + "bio": "Emma crée les univers et les histoires qui donnent vie aux sessions RP. Autrice de formation, elle conçoit des scénarios immersifs, des personnages mémorables et des quêtes captivantes. Elle aide aussi les clients à développer le lore de leur serveur.", + "stats": [ + { "value": "3", "label": "Ans d'exp." }, + { "value": "40+", "label": "Scénarios" }, + { "value": "∞", "label": "Créativité" } + ], + "skills": ["Écriture", "Worldbuilding", "Game Design", "Narration", "Dialogue"] + }, + { + "name": "Julien", + "role": "Testeur QA", + "avatar": "J", + "bio": "Julien est le gardien de la qualité chez OmégaKube. Aucun bug ne lui échappe. Il teste méticuleusement chaque fonctionnalité, chaque commande, chaque interaction pour garantir une expérience sans accroc aux utilisateurs finaux.", + "stats": [ + { "value": "2", "label": "Ans d'exp." }, + { "value": "500+", "label": "Bugs trouvés" }, + { "value": "0", "label": "Bug raté" } + ], + "skills": ["Testing", "Bug Tracking", "Documentation", "Discord", "Feedback"] + } +] \ No newline at end of file diff --git a/assets/fonts/custom_font_large.otf b/assets/fonts/custom_font_large.otf new file mode 100644 index 0000000000000000000000000000000000000000..74819b8d1ac2c1a6a2641bf445f7390c767db83b GIT binary patch literal 27012 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

E4=2og;=gVHn{A4T?4J4dH;L7sLnw6KPP4-CAcu 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 z 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 dNkl* literal 0 HcmV?d00001 diff --git a/assets/images/favicon/android-chrome-512x512.png b/assets/images/favicon/android-chrome-512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..ea4db2dfb0fd61b24a798872027112c66e682093 GIT binary patch literal 54340 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 literal 0 HcmV?d00001 diff --git a/assets/images/favicon/favicon-16x16.png b/assets/images/favicon/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..3b8f32d55c0950ae38f2659feeb640f728f29528 GIT binary patch literal 632 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 IOydar7u?xy#{d8T literal 0 HcmV?d00001 diff --git a/assets/images/favicon/site.webmanifest b/assets/images/favicon/site.webmanifest new file mode 100644 index 0000000..45dc8a2 --- /dev/null +++ b/assets/images/favicon/site.webmanifest @@ -0,0 +1 @@ +{"name":"","short_name":"","icons":[{"src":"/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"} \ No newline at end of file diff --git a/assets/images/logo.png b/assets/images/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..c870bcf6b6511fa2f31519caeb79010c2071c832 GIT binary patch literal 60268 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

XRNY7l}NKvfkaO(S;t&d*IMTkHx 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 br>V2;CuGoP)hh!2K1^53KojxEKH`4>bqa^f literal 0 HcmV?d00001 diff --git a/assets/images/old-logo.png b/assets/images/old-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..fbf01ecf93115fc0c3683d24338b8bf43c942f26 GIT binary patch literal 15880 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 N=>PjG;I-EJe*g{L(h&dv literal 0 HcmV?d00001 diff --git a/assets/js/home.js b/assets/js/home.js new file mode 100644 index 0000000..8be00d0 --- /dev/null +++ b/assets/js/home.js @@ -0,0 +1,171 @@ +// Home page specific JS: team carousel + modal +document.addEventListener('DOMContentLoaded', () => { + // Fetch team data and render + fetch('assets/data/team.json') + .then(res => res.json()) + .then(members => { + initTeamSection(members); + }) + .catch(err => { + console.error('Failed to load team data', err); + }); + + function initTeamSection(members) { + const carousel = document.getElementById('team-carousel'); + const dotsContainer = document.getElementById('carousel-dots'); + const prevBtn = document.getElementById('carousel-prev'); + const nextBtn = document.getElementById('carousel-next'); + + // Render cards + carousel.innerHTML = members.map((m, i) => ` +

+
+
${m.avatar}
+
+

${m.name}

+

${m.role}

+

${(m.bio || '').split('.').shift()}.

+
+ `).join(''); + + // Carousel logic + const cardsContainer = carousel; // the track + let cards = carousel.querySelectorAll('.team-card'); + let currentIndex = 0; + let cardsPerView = 3; + let autoPlayInterval; + + function updateCardsPerView() { + if (window.innerWidth <= 768) cardsPerView = 1; + else if (window.innerWidth <= 1024) cardsPerView = 2; + else cardsPerView = 3; + } + + function createDots() { + dotsContainer.innerHTML = ''; + const totalDots = Math.max(1, Math.ceil(cards.length / cardsPerView)); + for (let i = 0; i < totalDots; i++) { + const dot = document.createElement('div'); + dot.classList.add('carousel-dot'); + if (i === 0) dot.classList.add('active'); + dot.addEventListener('click', () => goToSlide(i)); + dotsContainer.appendChild(dot); + } + } + + function updateCarousel() { + cards = carousel.querySelectorAll('.team-card'); + if (cards.length === 0) return; + const cardStyle = window.getComputedStyle(cards[0]); + const gap = 32; // matches previous implementation + const cardWidth = cards[0].offsetWidth + gap; + carousel.style.transform = `translateX(-${currentIndex * cardWidth}px)`; + + const dots = dotsContainer.querySelectorAll('.carousel-dot'); + const activeDotIndex = Math.floor(currentIndex / cardsPerView); + dots.forEach((dot, i) => dot.classList.toggle('active', i === activeDotIndex)); + } + + function goToSlide(dotIndex) { + currentIndex = dotIndex * cardsPerView; + if (currentIndex > cards.length - cardsPerView) currentIndex = Math.max(0, cards.length - cardsPerView); + updateCarousel(); + resetAutoPlay(); + } + + function nextSlide() { + currentIndex++; + if (currentIndex > cards.length - cardsPerView) currentIndex = 0; + updateCarousel(); + } + + function prevSlide() { + currentIndex--; + if (currentIndex < 0) currentIndex = Math.max(0, cards.length - cardsPerView); + updateCarousel(); + } + + function startAutoPlay() { + clearInterval(autoPlayInterval); + autoPlayInterval = setInterval(nextSlide, 4000); + } + + function resetAutoPlay() { + clearInterval(autoPlayInterval); + startAutoPlay(); + } + + prevBtn && prevBtn.addEventListener('click', () => { prevSlide(); resetAutoPlay(); }); + nextBtn && nextBtn.addEventListener('click', () => { nextSlide(); resetAutoPlay(); }); + + carousel.addEventListener('mouseenter', () => clearInterval(autoPlayInterval)); + carousel.addEventListener('mouseleave', startAutoPlay); + + updateCardsPerView(); + createDots(); + startAutoPlay(); + + window.addEventListener('resize', () => { + updateCardsPerView(); + createDots(); + currentIndex = 0; + updateCarousel(); + }); + + // Modal logic + const modalOverlay = document.getElementById('team-modal-overlay'); + const modalClose = document.getElementById('team-modal-close'); + const modalAvatar = document.getElementById('modal-avatar'); + const modalName = document.getElementById('modal-name'); + const modalRole = document.getElementById('modal-role'); + const modalBio = document.getElementById('modal-bio'); + const modalStats = document.getElementById('modal-stats'); + const modalSkills = document.getElementById('modal-skills'); + const modalSocial = document.getElementById('modal-social'); + + function openMemberModal(index) { + const member = members[index]; + if (!member) return; + modalAvatar.textContent = member.avatar || member.name.charAt(0); + modalName.textContent = member.name; + modalRole.textContent = member.role; + modalBio.textContent = member.bio; + + modalStats.innerHTML = (member.stats || []).map(stat => ` +
+
${stat.value}
+
${stat.label}
+
+ `).join(''); + + modalSkills.innerHTML = (member.skills || []).map(s => `${s}`).join(''); + + modalSocial.innerHTML = ` +
+ + `; + + if (window.feather && feather.replace) feather.replace(); + + modalOverlay.classList.add('active'); + document.body.style.overflow = 'hidden'; + } + + function closeMemberModal() { + modalOverlay.classList.remove('active'); + document.body.style.overflow = ''; + } + + // Attach click listeners to generated cards + carousel.querySelectorAll('.team-card').forEach(card => { + card.addEventListener('click', () => { + const idx = parseInt(card.dataset.member, 10); + openMemberModal(idx); + }); + }); + + modalClose && modalClose.addEventListener('click', closeMemberModal); + modalOverlay && modalOverlay.addEventListener('click', (e) => { if (e.target === modalOverlay) closeMemberModal(); }); + document.addEventListener('keydown', (e) => { if (e.key === 'Escape' && modalOverlay.classList.contains('active')) closeMemberModal(); }); + } +}); \ No newline at end of file diff --git a/assets/js/main.js b/assets/js/main.js new file mode 100644 index 0000000..9e7fe37 --- /dev/null +++ b/assets/js/main.js @@ -0,0 +1,393 @@ +// OmégaKube - shared scripts + +// Feather icons loader (centralized) +// loads https://unpkg.com/feather-icons when needed and exposes window.ensureFeather() +const FEATHER_URL = 'https://unpkg.com/feather-icons'; +function ensureFeather() { + if (window.__featherLoading) return window.__featherLoading; + if (window.feather && window.feather.replace) return Promise.resolve(window.feather); + window.__featherLoading = new Promise((resolve, reject) => { + const s = document.createElement('script'); + s.src = FEATHER_URL; + s.async = true; + s.onload = () => resolve(window.feather); + s.onerror = () => reject(new Error('Failed to load feather-icons')); + document.head.appendChild(s); + }); + return window.__featherLoading; +} +window.ensureFeather = ensureFeather; + +document.addEventListener('DOMContentLoaded', async () => { + // ensure feather icons are available and replace icons in document + try { await ensureFeather(); if (window.feather && feather.replace) try { feather.replace(); } catch(e) {} } catch (e) {} + + // Load HTML includes (components header/footer) and fix relative paths when necessary + async function loadIncludes() { + const includeSelector = '[data-include]'; + const nodes = Array.from(document.querySelectorAll(includeSelector)); + if (!nodes.length) return; + await Promise.all(nodes.map(async el => { + const url = el.getAttribute('data-include'); + try { + const res = await fetch(url); + if (!res.ok) throw new Error(res.statusText); + const text = await res.text(); + const template = document.createElement('template'); + template.innerHTML = text; + const fragment = template.content; + // adjust relative paths for assets and page links when included from /pages/ + fragment.querySelectorAll('[href], [src]').forEach(node => { + ['href','src'].forEach(attr => { + if (!node.hasAttribute(attr)) return; + const original = node.getAttribute(attr); + + // leave absolute URLs and anchors untouched + if (/^(https?:|\/|#)/.test(original)) return; + + // compute useful bases + const includeUrl = new URL(url, document.baseURI); + const includeDir = includeUrl.pathname.substring(0, includeUrl.pathname.lastIndexOf('/') + 1); + const docUrl = new URL(document.location.href); + const docDir = docUrl.pathname.substring(0, docUrl.pathname.lastIndexOf('/') + 1); + + // find common prefix between include location and current document to infer site root + const includeParts = includeDir.split('/'); + const docParts = docDir.split('/'); + let i = 0; + while (i < includeParts.length && i < docParts.length && includeParts[i] === docParts[i]) i++; + const baseRoot = includeParts.slice(0, i).join('/') || '/'; + + let newVal; + if (original.startsWith('./') || original.startsWith('../')) { + // explicit relative paths should resolve relative to the include file + const resolved = new URL(original, includeUrl); + newVal = resolved.pathname + resolved.search + resolved.hash; + } else { + // treat plain paths (e.g. "assets/..." or "pages/...") as site-root relative + newVal = (baseRoot.endsWith('/') ? baseRoot : baseRoot + '/') + original; + } + + node.setAttribute(attr, newVal); + }); + }); + el.replaceWith(fragment); + } catch (err) { + console.error('Failed to load include', url, err); + } + })); + if (typeof ensureFeather === 'function') { + ensureFeather().then(() => { try { if (window.feather && feather.replace) feather.replace(); } catch (e) {} }).catch(()=>{}); + } else if (window.feather && feather.replace) { + try { feather.replace(); } catch (e) {} + } + } + + // wait for includes to be loaded so subsequent initialization can bind to elements inside them + await loadIncludes(); + + const html = document.documentElement; + + function getPreferredTheme() { + const savedTheme = localStorage.getItem('theme'); + if (savedTheme) return savedTheme; + return window.matchMedia && window.matchMedia('(prefers-color-scheme: light)').matches ? 'light' : 'dark'; + } + + // Apply preferred theme + try { + html.setAttribute('data-theme', getPreferredTheme()); + } catch (e) {} + + // Theme toggle (robust) + const themeToggle = document.getElementById('theme-toggle'); + if (themeToggle) { + // sync aria state + themeToggle.setAttribute('aria-pressed', html.getAttribute('data-theme') === 'dark' ? 'false' : 'true'); + + themeToggle.addEventListener('click', () => { + const currentTheme = html.getAttribute('data-theme'); + const newTheme = currentTheme === 'dark' ? 'light' : 'dark'; + html.setAttribute('data-theme', newTheme); + localStorage.setItem('theme', newTheme); + themeToggle.setAttribute('aria-pressed', newTheme === 'dark' ? 'false' : 'true'); + }); + } + + // Navbar scroll effect + const navbar = document.getElementById('navbar'); + function updateNavbarOnScroll() { + if (!navbar) return; + navbar.classList.toggle('scrolled', window.scrollY > 50); + } + window.addEventListener('scroll', updateNavbarOnScroll); + window.addEventListener('load', updateNavbarOnScroll); + + // Mobile menu + const mobileToggle = document.getElementById('mobile-toggle'); + const navLinks = document.getElementById('nav-links'); + + // mobile menu initialization (debug logs removed) + + // create a toggle function that is safe even if elements are added later + const toggleMenu = () => { + const mt = document.getElementById('mobile-toggle'); + const nl = document.getElementById('nav-links'); + // console.log('[DEBUG] toggleMenu called', { mt: !!mt, nl: !!nl, mtClass: mt ? mt.className : null, nlClass: nl ? nl.className : null }); + if (!mt || !nl) { + // elements missing: abort toggle + // console.log('[DEBUG] toggleMenu aborted: missing elements', { mt, nl }); + return; + } + mt.classList.toggle('active'); + nl.classList.toggle('active'); + // console.log('[DEBUG] toggleMenu toggled', { mtClass: mt.className, nlClass: nl.className }); + const expanded = nl.classList.contains('active') ? 'true' : 'false'; + mt.setAttribute('aria-expanded', expanded); + }; + + // |||||||||||||| ça fait buguer le menu mobile |||||||||||||| + // direct binding if elements exist + // if (mobileToggle && navLinks) { + // if (!mobileToggle.hasAttribute('tabindex')) mobileToggle.setAttribute('tabindex', '0'); + // mobileToggle.setAttribute('aria-expanded', navLinks.classList.contains('active') ? 'true' : 'false'); + + // mobileToggle.addEventListener('click', (e) => { + // console.log('[DEBUG] mobileToggle click handler fired', e.target, e); + // e.preventDefault(); + // toggleMenu(); + // }); + + // mobileToggle.addEventListener('keydown', (e) => { + // if (e.key === 'Enter' || e.key === ' ') { + // console.log('[DEBUG] mobileToggle keydown:', e.key); + // e.preventDefault(); + // toggleMenu(); + // } + // }); + + // navLinks.querySelectorAll('a').forEach(link => { + // link.addEventListener('click', () => { + // console.log('[DEBUG] nav link clicked in mobile menu', link.getAttribute('href')); + // // collapse on link click + // const mt = document.getElementById('mobile-toggle'); + // const nl = document.getElementById('nav-links'); + // if (mt && nl) { + // mt.classList.remove('active'); + // nl.classList.remove('active'); + // mt.setAttribute('aria-expanded', 'false'); + // } + // }); + // }); + // } + + // Global delegation: catch clicks anywhere on page for '#mobile-toggle' (works even if element is replaced) + document.addEventListener('click', (e) => { + const mt = e.target.closest ? e.target.closest('#mobile-toggle') : null; + if (mt) { + // console.log('[DEBUG] delegated click caught for #mobile-toggle', e.target); + e.preventDefault(); + toggleMenu(); + } + }); + + // expose helper for console debugging + window.toggleMobileMenu = toggleMenu; + + // Smooth scroll for anchor links + document.querySelectorAll('a[href^="#"]').forEach(anchor => { + anchor.addEventListener('click', function (e) { + const href = this.getAttribute('href'); + if (!href || href === '#') return; + const target = document.querySelector(href); + if (target) { + e.preventDefault(); + target.scrollIntoView({ behavior: 'smooth', block: 'start' }); + } + }); + }); + + // Highlight active nav link based on current URL + function normalizePath(path) { + if (!path) return '/'; + // treat both '/' and '/index.html' as root + if (path.endsWith('index.html')) { + const p = path.slice(0, -'index.html'.length); + return p === '' ? '/' : p; + } + return path.endsWith('/') ? path : path; + } + + function setActiveNavLink() { + const links = document.querySelectorAll('#nav-links a[href]'); + if (!links.length) return; + const currentPath = normalizePath(window.location.pathname); + const currentHash = window.location.hash || ''; + + let bestMatch = null; + let bestScore = -1; + + links.forEach(link => { + const href = link.getAttribute('href'); + let linkUrl; + try { + linkUrl = new URL(href, document.location.href); + } catch (e) { + return; + } + const linkPath = normalizePath(linkUrl.pathname); + const linkHash = linkUrl.hash || ''; + + let score = 0; + if (linkPath === currentPath) score += 2; + if (linkHash && linkHash === currentHash) score += 4; + // Prefer exact hash matches, then exact path matches + if (score > bestScore) { + bestScore = score; + bestMatch = link; + } + }); + + // Fallback: if on root (/) and there is an index link, pick it + if (!bestMatch) { + links.forEach(link => { + if (!bestMatch && /index\.html$|\/$/.test(link.getAttribute('href') || '')) { + bestMatch = link; + } + }); + } + + links.forEach(l => { l.classList.remove('active'); l.removeAttribute('aria-current'); }); + if (bestMatch) { bestMatch.classList.add('active'); bestMatch.setAttribute('aria-current', 'page'); } + } + + // initialize and listen for navigation/hash changes + setActiveNavLink(); + window.addEventListener('hashchange', setActiveNavLink); + window.addEventListener('popstate', setActiveNavLink); + + // Home page: observe sections so #apropos and #contact become active when visible, + // and revert to "Accueil" when neither section is in view. + let homeSectionObserver = null; + let homeVisibility = {}; + + function initHomeSectionObserver() { + // clean existing observer + if (homeSectionObserver) { + homeSectionObserver.disconnect(); + homeSectionObserver = null; + homeVisibility = {}; + } + + // Instead of requiring a strict '/' path, detect whether the current document + // actually contains any sections referenced by nav links (e.g. #apropos, #contact). + const links = Array.from(document.querySelectorAll('#nav-links a[href]')); + const sectionLinks = links.filter(link => { + try { + const u = new URL(link.getAttribute('href'), document.location.href); + if (!u.hash) return false; + return !!document.querySelector(u.hash); + } catch (e) { + return false; + } + }); + + if (!sectionLinks.length) return; + + const sections = sectionLinks.map(link => { + const hash = new URL(link.getAttribute('href'), document.location.href).hash; + const el = document.querySelector(hash); + return el ? { id: el.id, el, link } : null; + }).filter(Boolean); + + if (!sections.length) return; + + // setup observer + homeSectionObserver = new IntersectionObserver((entries) => { + entries.forEach(entry => { + homeVisibility[entry.target.id] = entry.intersectionRatio || 0; + }); + + // pick the section with highest intersection ratio + let bestId = null; let bestRatio = 0; + Object.entries(homeVisibility).forEach(([id, ratio]) => { + if (ratio > bestRatio) { bestRatio = ratio; bestId = id; } + }); + + const navLinks = Array.from(document.querySelectorAll('#nav-links a[href]')); + // if a section is sufficiently visible, activate its link + if (bestId && bestRatio > 0.15) { + const targetLink = navLinks.find(l => { + try { + return new URL(l.getAttribute('href'), document.location.href).hash === '#' + bestId; + } catch (e) { return false; } + }); + if (targetLink) { + navLinks.forEach(l => { l.classList.remove('active'); l.removeAttribute('aria-current'); }); + targetLink.classList.add('active'); + targetLink.setAttribute('aria-current', 'page'); + return; + } + } + + // fallback: set Accueil active when no section is visible + const indexLink = Array.from(navLinks).find(l => /index\.html$|\/$/.test(l.getAttribute('href') || '')); + navLinks.forEach(l => { l.classList.remove('active'); l.removeAttribute('aria-current'); }); + if (indexLink) { indexLink.classList.add('active'); indexLink.setAttribute('aria-current', 'page'); } + + }, { root: null, threshold: [0, 0.15, 0.3, 0.6] }); + + sections.forEach(s => { + homeVisibility[s.id] = 0; + homeSectionObserver.observe(s.el); + }); + } + + // initialize observer on load and update when navigation changes + initHomeSectionObserver(); + window.addEventListener('resize', () => { if (homeSectionObserver) initHomeSectionObserver(); }); + // re-init observer when URL path changes (i.e., leave/enter index) + const originalSetActive = setActiveNavLink; + function wrappedSetActive() { + // if leaving index, disconnect observer + const path = normalizePath(window.location.pathname); + if (path !== '/') { + if (homeSectionObserver) { homeSectionObserver.disconnect(); homeSectionObserver = null; homeVisibility = {}; } + originalSetActive(); + return; + } + // on index, ensure observer is active and let it control the highlight where possible + initHomeSectionObserver(); + originalSetActive(); + } + + // replace handlers so navigation updates use our wrapped variant + window.removeEventListener('hashchange', setActiveNavLink); + window.removeEventListener('popstate', setActiveNavLink); + window.addEventListener('hashchange', wrappedSetActive); + window.addEventListener('popstate', wrappedSetActive); + + // Reveal on scroll + const revealElements = document.querySelectorAll('.reveal'); + function revealOnScroll() { + if (!revealElements.length) return; + revealElements.forEach(el => { + const elementTop = el.getBoundingClientRect().top; + if (elementTop < window.innerHeight - 100) { + el.classList.add('active'); + } + }); + } + window.addEventListener('scroll', revealOnScroll); + window.addEventListener('load', revealOnScroll); + + // Contact form (if exists) + const contactForm = document.getElementById('contact-form'); + if (contactForm) { + contactForm.addEventListener('submit', function (e) { + e.preventDefault(); + alert('Merci pour votre message ! Nous vous répondrons très bientôt.'); + this.reset(); + }); + } +}); \ No newline at end of file diff --git a/assets/js/pages/404.js b/assets/js/pages/404.js new file mode 100644 index 0000000..ad32a23 --- /dev/null +++ b/assets/js/pages/404.js @@ -0,0 +1,209 @@ +feather.replace(); + +// Particles +const particlesContainer = document.getElementById('particles'); +for (let i = 0; i < 30; i++) { + const particle = document.createElement('div'); + particle.classList.add('particle'); + particle.style.left = Math.random() * 100 + '%'; + particle.style.animationDelay = Math.random() * 10 + 's'; + particle.style.animationDuration = (Math.random() * 5 + 8) + 's'; + particle.style.width = (Math.random() * 4 + 2) + 'px'; + particle.style.height = particle.style.width; + particlesContainer.appendChild(particle); +} + +// Easter Egg: Konami Code (desktop) ou 10 taps (mobile) +const konamiCode = ['ArrowUp', 'ArrowUp', 'ArrowDown', 'ArrowDown', 'ArrowLeft', 'ArrowRight', 'ArrowLeft', 'ArrowRight', 'b', 'a']; +let konamiIndex = 0; +let tapCount = 0; +let tapTimer = null; +const REQUIRED_TAPS = 10; +const errorCodeEl = document.querySelector('.error-code'); + +// Desktop: Konami Code +document.addEventListener('keydown', (e) => { + if (e.key === konamiCode[konamiIndex]) { + konamiIndex++; + if (konamiIndex === konamiCode.length) { + startPortalTransition(); + konamiIndex = 0; + } + } else { + konamiIndex = 0; + } +}); + +// Mobile: 10 taps +function handleTap(e) { + if (e.type === 'touchend') e.preventDefault(); + tapCount++; + + errorCodeEl.style.transform = 'scale(0.95)'; + setTimeout(() => errorCodeEl.style.transform = '', 100); + + if (tapCount >= 3 && tapCount < REQUIRED_TAPS) { + showTapCounter(tapCount, REQUIRED_TAPS); + } + + if (tapTimer) clearTimeout(tapTimer); + tapTimer = setTimeout(() => { tapCount = 0; hideTapCounter(); }, 500); + + if (tapCount >= REQUIRED_TAPS) { + tapCount = 0; + hideTapCounter(); + startPortalTransition(); + } +} + +function showTapCounter(current, total) { + let counter = document.getElementById('tap-counter'); + if (!counter) { + counter = document.createElement('div'); + counter.id = 'tap-counter'; + counter.style.cssText = 'position:fixed;top:20px;left:50%;transform:translateX(-50%);background:rgba(139,58,98,0.9);color:white;padding:0.5rem 1rem;border-radius:20px;font-size:0.85rem;font-weight:600;z-index:1000;'; + document.body.appendChild(counter); + } + counter.textContent = current + ' / ' + total + ' 🔓'; +} + +function hideTapCounter() { + const counter = document.getElementById('tap-counter'); + if (counter) counter.remove(); +} + +errorCodeEl.addEventListener('click', handleTap); +errorCodeEl.addEventListener('touchend', handleTap); + +// Portal Transition +function startPortalTransition() { + const transition = document.createElement('div'); + transition.id = 'portal-transition'; + transition.innerHTML = '
ENTRÉE DANS LA MATRICE
'; + document.body.appendChild(transition); + + const style = document.createElement('style'); + style.id = 'transition-styles'; + style.textContent = '#portal-transition{position:fixed;inset:0;z-index:10000;background:#000;display:flex;align-items:center;justify-content:center;overflow:hidden}.warp-container{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;perspective:500px}.warp-tunnel{position:absolute;width:200vmax;height:200vmax;background:repeating-conic-gradient(from 0deg,transparent 0deg 10deg,rgba(139,58,98,0.1) 10deg 20deg);animation:tunnelSpin 2s linear infinite,tunnelZoom 3s ease-in forwards}@keyframes tunnelSpin{to{transform:rotate(360deg)}}@keyframes tunnelZoom{0%{transform:rotate(0)scale(1);opacity:0}20%{opacity:1}100%{transform:rotate(720deg)scale(20);opacity:0}}.warp-stars{position:absolute;inset:0;background-image:radial-gradient(2px 2px at 20px 30px,#fff,transparent),radial-gradient(2px 2px at 40px 70px,rgba(255,255,255,0.8),transparent),radial-gradient(1px 1px at 90px 40px,#fff,transparent);background-size:350px 200px;animation:starsWarp 3s ease-in forwards}@keyframes starsWarp{0%{transform:scale(1);opacity:0}30%{opacity:1}100%{transform:scale(50);opacity:0}}.warp-center{position:relative;width:150px;height:150px;animation:centerPulse 0.5s ease-in-out infinite,centerGrow 2.5s ease-in forwards}@keyframes centerPulse{0%,100%{filter:brightness(1)}50%{filter:brightness(1.5)}}@keyframes centerGrow{0%{transform:scale(0);opacity:0}20%{transform:scale(1);opacity:1}80%{transform:scale(1);opacity:1}100%{transform:scale(100);opacity:1}}.warp-ring{position:absolute;inset:0;border:4px solid #8b3a62;border-radius:50%;animation:ringPulse 1s ease-in-out infinite;box-shadow:0 0 30px #8b3a62,inset 0 0 30px #8b3a62}.warp-ring:nth-child(2){inset:20px;border-color:#5e2a8b;animation-delay:0.2s;box-shadow:0 0 30px #5e2a8b,inset 0 0 30px #5e2a8b}.warp-ring:nth-child(3){inset:40px;border-color:#d4a5c9;animation-delay:0.4s;box-shadow:0 0 30px #d4a5c9,inset 0 0 30px #d4a5c9}@keyframes ringPulse{0%,100%{transform:scale(1);opacity:1}50%{transform:scale(1.1);opacity:0.8}}.warp-flash{position:absolute;inset:0;background:#fff;opacity:0;animation:flashBang 0.5s ease-out 2.5s forwards}@keyframes flashBang{0%{opacity:0}50%{opacity:1}100%{opacity:0}}.warp-text{position:absolute;font-size:1.5rem;font-weight:700;color:#fff;letter-spacing:0.3rem;z-index:10;opacity:0;animation:textAppear 0.5s ease 0.5s forwards,textFade 0.5s ease 2s forwards}@keyframes textAppear{to{opacity:1}}@keyframes textFade{to{opacity:0;transform:scale(2)}}'; + document.head.appendChild(style); + + setTimeout(() => { + transition.remove(); + style.remove(); + launchGameOfLife(); + }, 3000); +} + +// Game of Life +function launchGameOfLife() { + const gameContainer = document.createElement('div'); + gameContainer.id = 'game-of-life'; + gameContainer.innerHTML = '

🧬 Dimension Secrète

Le Jeu de la Vie de Conway

Règles : Cellule vivante avec 2-3 voisins survit. Cellule morte avec 3 voisins naît.

30px
0
0
0×0
'; + document.body.appendChild(gameContainer); + + const gameStyles = document.createElement('style'); + gameStyles.id = 'gol-styles'; + gameStyles.textContent = '#game-of-life{position:fixed;inset:0;z-index:10000;background:#050508;animation:golIn 0.5s ease}@keyframes golIn{from{opacity:0}to{opacity:1}}#gol-canvas{position:absolute;inset:0;width:100%;height:100%;cursor:crosshair}.gol-ui{position:absolute;top:20px;left:20px;background:rgba(10,10,15,0.95);backdrop-filter:blur(10px);border:1px solid rgba(139,58,98,0.3);border-radius:16px;padding:1rem;min-width:280px;box-shadow:0 20px 60px rgba(0,0,0,0.5)}.gol-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:0.75rem}.gol-header-text h1{font-size:1.1rem;margin-bottom:0.1rem;background:linear-gradient(135deg,#d4a5c9,#8b3a62);-webkit-background-clip:text;-webkit-text-fill-color:transparent}.gol-header-text p{font-size:0.7rem;color:#6b6b7b}.gol-minimize{width:32px;height:32px;border:1px solid rgba(255,255,255,0.1);background:rgba(255,255,255,0.05);border-radius:8px;color:#b8b8c8;cursor:pointer;display:flex;align-items:center;justify-content:center}.gol-minimize:hover{background:rgba(139,58,98,0.3);border-color:#8b3a62;color:#fff}.gol-minimize svg{width:16px;height:16px}.gol-minimize .icon-max{display:none}.gol-ui.minimized .gol-body,.gol-ui.minimized .gol-exit{display:none}.gol-ui.minimized .gol-minimize .icon-min{display:none}.gol-ui.minimized .gol-minimize .icon-max{display:block}.gol-ui.minimized{min-width:auto}.gol-body{display:flex;flex-direction:column;gap:0.75rem}.gol-description{background:rgba(139,58,98,0.1);border:1px solid rgba(139,58,98,0.2);border-radius:8px;padding:0.5rem}.gol-description p{font-size:0.7rem;color:#b8b8c8;margin:0}.gol-description strong{color:#d4a5c9}.gol-controls{display:flex;gap:0.4rem;flex-wrap:wrap}.gol-btn{width:40px;height:40px;border:1px solid rgba(255,255,255,0.1);background:rgba(255,255,255,0.05);border-radius:8px;color:#b8b8c8;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all 0.2s}.gol-btn:hover{background:rgba(139,58,98,0.3);border-color:#8b3a62;color:#fff;transform:translateY(-2px)}.gol-btn svg{width:18px;height:18px}.gol-btn.active{background:linear-gradient(135deg,#8b3a62,#5e2a8b);border-color:transparent;color:#fff}.gol-btn .icon-play{display:none}.gol-btn .icon-pause{display:block}.gol-btn:not(.active) .icon-play{display:block}.gol-btn:not(.active) .icon-pause{display:none}.gol-btn-sm{width:32px;height:32px;font-size:1.2rem;font-weight:bold}.gol-zoom-row,.gol-speed-row{display:flex;align-items:center;gap:0.5rem}.gol-zoom-row span{color:#d4a5c9;font-family:monospace;font-size:0.85rem;min-width:40px;text-align:center}.gol-speed-row{flex-direction:column;align-items:stretch}.gol-speed-row label{font-size:0.75rem;color:#b8b8c8}.gol-speed-row label span{color:#d4a5c9;font-family:monospace}.gol-speed-row input{width:100%;height:6px;-webkit-appearance:none;background:rgba(255,255,255,0.1);border-radius:3px;cursor:pointer}.gol-speed-row input::-webkit-slider-thumb{-webkit-appearance:none;width:16px;height:16px;background:linear-gradient(135deg,#8b3a62,#5e2a8b);border-radius:50%;cursor:pointer}.gol-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:0.5rem}.gol-stat{text-align:center;padding:0.4rem;background:rgba(255,255,255,0.03);border-radius:6px}.gol-stat span{font-size:1rem;font-weight:700;color:#d4a5c9;font-family:monospace;display:block}.gol-stat label{font-size:0.6rem;color:#6b6b7b;text-transform:uppercase}.gol-exit{width:100%;margin-top:0.5rem;padding:0.6rem;background:transparent;border:1px solid rgba(255,255,255,0.1);border-radius:8px;color:#6b6b7b;font-size:0.8rem;cursor:pointer;transition:all 0.2s}.gol-exit:hover{background:rgba(255,50,50,0.2);border-color:rgba(255,50,50,0.5);color:#ff6b6b}@media(max-width:768px){.gol-ui{top:auto;bottom:0;left:0;right:0;border-radius:16px 16px 0 0;max-height:50vh;overflow-y:auto;min-width:auto}.gol-header-text p,.gol-description{display:none}.gol-ui.minimized{max-height:none}}@media(max-width:480px){.gol-ui{padding:0.75rem}.gol-btn{width:36px;height:36px}.gol-btn-sm{width:28px;height:28px}}'; + document.head.appendChild(gameStyles); + + const canvas = document.getElementById('gol-canvas'); + const ctx = canvas.getContext('2d'); + const MAX_CELLS = 150, MIN_SIZE = 4, MAX_SIZE = 30; + let cellSize = MAX_SIZE, minCellSize = MIN_SIZE, cols, rows, grid, nextGrid; + let isRunning = true, generation = 0, speed = 15, lastTime = 0, isDrawing = false, drawValue = 1; + + function initCanvas() { + canvas.width = window.innerWidth; + canvas.height = window.innerHeight; + minCellSize = Math.max(MIN_SIZE, Math.ceil(canvas.width / MAX_CELLS), Math.ceil(canvas.height / MAX_CELLS)); + cellSize = Math.max(minCellSize, Math.min(MAX_SIZE, cellSize)); + cols = Math.ceil(canvas.width / cellSize); + rows = Math.ceil(canvas.height / cellSize); + grid = Array(cols).fill(null).map(() => Array(rows).fill(0)); + nextGrid = Array(cols).fill(null).map(() => Array(rows).fill(0)); + updateUI(); + } + + function addGlider(sx, sy, dir) { + const p = [[[0,1],[1,2],[2,0],[2,1],[2,2]],[[0,1],[1,0],[2,0],[2,1],[2,2]],[[0,0],[0,1],[0,2],[1,2],[2,1]],[[0,0],[0,1],[0,2],[1,0],[2,1]]]; + p[dir % 4].forEach(([dx, dy]) => { const x = (sx + dx) % cols, y = (sy + dy) % rows; if (x >= 0 && x < cols && y >= 0 && y < rows) grid[x][y] = 1; }); + } + + function addGliders(n) { + grid = Array(cols).fill(null).map(() => Array(rows).fill(0)); + for (let i = 0; i < n; i++) addGlider(Math.floor(Math.random() * (cols - 10)) + 5, Math.floor(Math.random() * (rows - 10)) + 5, Math.floor(Math.random() * 4)); + generation = 0; updateUI(); + } + + function randomize() { for (let x = 0; x < cols; x++) for (let y = 0; y < rows; y++) grid[x][y] = Math.random() > 0.7 ? 1 : 0; generation = 0; updateUI(); } + function clear() { for (let x = 0; x < cols; x++) for (let y = 0; y < rows; y++) grid[x][y] = 0; generation = 0; updateUI(); } + + function step() { + for (let x = 0; x < cols; x++) for (let y = 0; y < rows; y++) { + let n = 0; + for (let i = -1; i <= 1; i++) for (let j = -1; j <= 1; j++) if (i || j) n += grid[(x + i + cols) % cols][(y + j + rows) % rows]; + nextGrid[x][y] = grid[x][y] ? (n === 2 || n === 3 ? 1 : 0) : (n === 3 ? 1 : 0); + } + [grid, nextGrid] = [nextGrid, grid]; generation++; updateUI(); + } + + function draw() { + ctx.fillStyle = '#0a0a0f'; ctx.fillRect(0, 0, canvas.width, canvas.height); + ctx.strokeStyle = 'rgba(139,58,98,0.1)'; ctx.lineWidth = 0.5; + for (let x = 0; x <= cols * cellSize; x += cellSize) { ctx.beginPath(); ctx.moveTo(x, 0); ctx.lineTo(x, rows * cellSize); ctx.stroke(); } + for (let y = 0; y <= rows * cellSize; y += cellSize) { ctx.beginPath(); ctx.moveTo(0, y); ctx.lineTo(cols * cellSize, y); ctx.stroke(); } + ctx.shadowColor = 'rgba(139,58,98,0.5)'; ctx.shadowBlur = 8; + for (let x = 0; x < cols; x++) for (let y = 0; y < rows; y++) if (grid[x][y]) { + const g = ctx.createRadialGradient(x * cellSize + cellSize / 2, y * cellSize + cellSize / 2, 0, x * cellSize + cellSize / 2, y * cellSize + cellSize / 2, cellSize); + g.addColorStop(0, '#d4a5c9'); g.addColorStop(0.5, '#8b3a62'); g.addColorStop(1, '#5e2a8b'); + ctx.fillStyle = g; ctx.fillRect(x * cellSize + 1, y * cellSize + 1, cellSize - 2, cellSize - 2); + } + ctx.shadowBlur = 0; + } + + function updateUI() { + let pop = 0; for (let x = 0; x < cols; x++) for (let y = 0; y < rows; y++) pop += grid[x][y]; + document.getElementById('gol-gen').textContent = generation; + document.getElementById('gol-pop').textContent = pop; + document.getElementById('gol-dim').textContent = cols + '×' + rows; + document.getElementById('gol-zoom-val').textContent = cellSize + 'px'; + document.getElementById('gol-speed-val').textContent = speed; + } + + function handleZoom(d) { + const old = cellSize; cellSize = Math.max(minCellSize, Math.min(MAX_SIZE, cellSize + d)); + if (cellSize !== old) { const og = grid, oc = cols, or = rows; initCanvas(); for (let x = 0; x < Math.min(oc, cols); x++) for (let y = 0; y < Math.min(or, rows); y++) grid[x][y] = og[x][y]; updateUI(); } + } + + function getCell(e) { + const r = canvas.getBoundingClientRect(), cx = e.touches ? e.touches[0].clientX : e.clientX, cy = e.touches ? e.touches[0].clientY : e.clientY; + return { x: Math.max(0, Math.min(cols - 1, Math.floor((cx - r.left) / cellSize))), y: Math.max(0, Math.min(rows - 1, Math.floor((cy - r.top) / cellSize))) }; + } + + function gameLoop(t) { if (isRunning && t - lastTime > 1000 / speed) { step(); lastTime = t; } draw(); requestAnimationFrame(gameLoop); } + + canvas.addEventListener('mousedown', e => { isDrawing = true; const c = getCell(e); drawValue = grid[c.x][c.y] ? 0 : 1; grid[c.x][c.y] = drawValue; }); + canvas.addEventListener('mousemove', e => { if (isDrawing) { const c = getCell(e); grid[c.x][c.y] = drawValue; } }); + canvas.addEventListener('mouseup', () => isDrawing = false); + canvas.addEventListener('mouseleave', () => isDrawing = false); + canvas.addEventListener('touchstart', e => { e.preventDefault(); isDrawing = true; const c = getCell(e); drawValue = grid[c.x][c.y] ? 0 : 1; grid[c.x][c.y] = drawValue; }, { passive: false }); + canvas.addEventListener('touchmove', e => { e.preventDefault(); if (isDrawing) { const c = getCell(e); grid[c.x][c.y] = drawValue; } }, { passive: false }); + canvas.addEventListener('touchend', () => isDrawing = false); + canvas.addEventListener('wheel', e => { e.preventDefault(); handleZoom(e.deltaY > 0 ? -1 : 1); }); + + document.getElementById('gol-play').addEventListener('click', function() { isRunning = !isRunning; this.classList.toggle('active', isRunning); }); + document.getElementById('gol-step').addEventListener('click', () => { if (!isRunning) step(); }); + document.getElementById('gol-random').addEventListener('click', randomize); + document.getElementById('gol-clear').addEventListener('click', clear); + document.getElementById('gol-gliders').addEventListener('click', () => addGliders(3)); + document.getElementById('gol-zoom-in').addEventListener('click', () => handleZoom(2)); + document.getElementById('gol-zoom-out').addEventListener('click', () => handleZoom(-2)); + document.getElementById('gol-speed').addEventListener('input', function() { speed = parseInt(this.value); updateUI(); }); + document.getElementById('gol-minimize').addEventListener('click', () => document.querySelector('.gol-ui').classList.toggle('minimized')); + document.getElementById('gol-exit').addEventListener('click', () => { document.getElementById('game-of-life').remove(); document.getElementById('gol-styles').remove(); }); + window.addEventListener('resize', () => { const og = grid, oc = cols, or = rows; initCanvas(); for (let x = 0; x < Math.min(oc, cols); x++) for (let y = 0; y < Math.min(or, rows); y++) grid[x][y] = og[x][y]; updateUI(); }); + + initCanvas(); + addGliders(3); + requestAnimationFrame(gameLoop); +} \ No newline at end of file diff --git a/assets/js/pages/legal.js b/assets/js/pages/legal.js new file mode 100644 index 0000000..67b345f --- /dev/null +++ b/assets/js/pages/legal.js @@ -0,0 +1,31 @@ +// assets/js/pages/legal.js - minimal fallback for legal pages +document.addEventListener('DOMContentLoaded', () => { + // replace feather icons if available (use centralized loader if present) + if (typeof window.ensureFeather === 'function') { + window.ensureFeather().then(() => { try { if (window.feather && feather.replace) feather.replace(); } catch (e) {} }).catch(()=>{}); + } else if (window.feather && feather.replace) { + try { feather.replace(); } catch (e) { /* ignore */ } + } + + // theme fallback (will be overwritten by assets/js/main.js if present) + const html = document.documentElement; + if (!html.getAttribute('data-theme')) html.setAttribute('data-theme', localStorage.getItem('theme') || 'dark'); + const themeToggle = document.getElementById('theme-toggle'); + if (themeToggle) themeToggle.addEventListener('click', () => { + const newTheme = html.getAttribute('data-theme') === 'dark' ? 'light' : 'dark'; + html.setAttribute('data-theme', newTheme); + localStorage.setItem('theme', newTheme); + }); + + // navbar scrolled + const navbar = document.getElementById('navbar'); + if (navbar) window.addEventListener('scroll', () => navbar.classList.toggle('scrolled', window.scrollY > 50)); + + // mobile toggle (minimal) + const mobileToggle = document.getElementById('mobile-toggle'); + const navLinks = document.getElementById('nav-links'); + if (mobileToggle && navLinks) mobileToggle.addEventListener('click', () => { + mobileToggle.classList.toggle('active'); + navLinks.classList.toggle('active'); + }); +}); \ No newline at end of file diff --git a/assets/js/pages/realisations.js b/assets/js/pages/realisations.js new file mode 100644 index 0000000..eb95d55 --- /dev/null +++ b/assets/js/pages/realisations.js @@ -0,0 +1,228 @@ +// Page script for /pages/realisations.html + +document.addEventListener('DOMContentLoaded', async () => { + const dataUrl = '../assets/data/projects.json'; + let allProjects = []; + + try { + const res = await fetch(dataUrl); + if (!res.ok) throw new Error(res.statusText); + allProjects = await res.json(); + } catch (err) { + console.error('Failed to load projects data:', err); + return; + } + + const ITEMS_PER_PAGE = 9; + let currentPage = 1; + let currentFilter = 'all'; + + const portfolioGrid = document.getElementById('portfolio-grid'); + const paginationContainer = document.getElementById('pagination'); + const filterTabs = document.querySelectorAll('.filter-tab'); + + const modalOverlay = document.getElementById('project-modal-overlay'); + const modalClose = document.getElementById('project-modal-close'); + const gallerySlides = document.getElementById('gallery-slides'); + const galleryPrev = document.getElementById('gallery-prev'); + const galleryNext = document.getElementById('gallery-next'); + + const modalTitle = document.getElementById('modal-title'); + const modalCategory = document.getElementById('modal-category'); + const modalDesc = document.getElementById('modal-desc'); + const modalMeta = document.getElementById('modal-meta'); + const modalFeatures = document.getElementById('modal-features'); + const modalTech = document.getElementById('modal-tech'); + const modalStats = document.getElementById('modal-stats'); + + function getFilteredProjects() { + if (currentFilter === 'all') return [...allProjects]; + return allProjects.filter(p => p.category === currentFilter); + } + + function getTotalPages(filtered) { + return Math.ceil(filtered.length / ITEMS_PER_PAGE) || 1; + } + + function getProjectsForPage(filtered, page) { + const start = (page - 1) * ITEMS_PER_PAGE; + return filtered.slice(start, start + ITEMS_PER_PAGE); + } + + function getCategoryLabel(category) { + const labels = { 'bot': 'Bot Discord', 'map': 'Fortnite Map', 'graphisme': 'Graphisme' }; + return labels[category] || category; + } + + function renderProjects() { + const filtered = getFilteredProjects(); + const projects = getProjectsForPage(filtered, currentPage); + + portfolioGrid.innerHTML = projects.map(project => ` +
+
+
+ ${getCategoryLabel(project.category)} +

${project.title}

+

${project.desc.substring(0, 80)}...

+
+
+ `).join(''); + + // activate reveals & icons + setTimeout(() => { + document.querySelectorAll('.portfolio-item.reveal').forEach(el => el.classList.add('active')); + }, 80); + + // ensure icons are replaced for newly injected content + if (window.feather && feather.replace) { + try { feather.replace(); } catch (e) {} + } + } + + function renderPagination() { + const filtered = getFilteredProjects(); + const totalPages = getTotalPages(filtered); + + if (totalPages <= 1) { + paginationContainer.innerHTML = ''; + return; + } + + let html = ``; + + const maxVisible = 5; + let startPage = Math.max(1, currentPage - Math.floor(maxVisible / 2)); + let endPage = Math.min(totalPages, startPage + maxVisible - 1); + if (endPage - startPage < maxVisible - 1) startPage = Math.max(1, endPage - maxVisible + 1); + + if (startPage > 1) { + html += ``; + if (startPage > 2) html += `...`; + } + + for (let i = startPage; i <= endPage; i++) { + html += ``; + } + + if (endPage < totalPages) { + if (endPage < totalPages - 1) html += `...`; + html += ``; + } + + html += ``; + + const startItem = (currentPage - 1) * ITEMS_PER_PAGE + 1; + const endItem = Math.min(currentPage * ITEMS_PER_PAGE, filtered.length); + html += `
Affichage ${startItem}-${endItem} sur ${filtered.length} projets
`; + + paginationContainer.innerHTML = html; + + if (window.feather && feather.replace) { + try { feather.replace(); } catch (e) {} + } + } + + function goToPage(page) { + const filtered = getFilteredProjects(); + const totalPages = getTotalPages(filtered); + if (page < 1 || page > totalPages) return; + currentPage = page; + renderProjects(); + renderPagination(); + portfolioGrid.scrollIntoView({ behavior: 'smooth', block: 'start' }); + } + + function openProjectModal(projectId) { + const project = allProjects.find(p => p.id === Number(projectId)); + if (!project) return; + + modalCategory.textContent = getCategoryLabel(project.category); + modalTitle.textContent = project.title; + modalDesc.textContent = project.desc; + + modalMeta.innerHTML = ` ${project.year} ${project.duration}`; + + modalFeatures.innerHTML = project.features.map(f => `
${f}
`).join(''); + modalTech.innerHTML = project.tech.map(t => `
${t}
`).join(''); + modalStats.innerHTML = project.stats.map(s => ` +
+
${s.value}
+
${s.label}
+
+ `).join(''); + + // gallery slides (use gradient as placeholder slides like original) + gallerySlides.innerHTML = ` + + + + `; + + // reset gallery state + galleryIndex = 0; + updateGallery(); + + if (modalOverlay) modalOverlay.classList.add('active'); + + if (window.feather && feather.replace) { + try { feather.replace(); } catch (e) {} + } + } + + function closeProjectModal() { + if (modalOverlay) modalOverlay.classList.remove('active'); + } + + // Gallery helpers + let galleryIndex = 0; + function updateGallery() { + const slides = gallerySlides ? Array.from(gallerySlides.children) : []; + slides.forEach((s, i) => { + s.style.transform = `translateX(${(i - galleryIndex) * 100}%)`; + s.classList.toggle('active', i === galleryIndex); + }); + } + + function prevSlide() { galleryIndex = Math.max(0, galleryIndex - 1); updateGallery(); } + function nextSlide() { const slides = gallerySlides ? gallerySlides.children.length : 0; galleryIndex = Math.min(slides - 1, galleryIndex + 1); updateGallery(); } + + // Event bindings + filterTabs.forEach(tab => tab.addEventListener('click', (e) => { + filterTabs.forEach(t => t.classList.remove('active')); + tab.classList.add('active'); + currentFilter = tab.dataset.filter || 'all'; + currentPage = 1; + renderProjects(); + renderPagination(); + })); + + paginationContainer.addEventListener('click', (e) => { + const btn = e.target.closest('button[data-page]'); + if (!btn) return; + const page = Number(btn.getAttribute('data-page')); + goToPage(page); + }); + + portfolioGrid.addEventListener('click', (e) => { + const item = e.target.closest('.portfolio-item'); + if (!item) return; + const id = item.getAttribute('data-project-id'); + openProjectModal(id); + }); + + if (modalClose) modalClose.addEventListener('click', closeProjectModal); + if (modalOverlay) modalOverlay.addEventListener('click', (e) => { if (e.target === modalOverlay) closeProjectModal(); }); + window.addEventListener('keydown', (e) => { if (e.key === 'Escape' && modalOverlay.classList.contains('active')) closeProjectModal(); }); + + if (galleryPrev) galleryPrev.addEventListener('click', prevSlide); + if (galleryNext) galleryNext.addEventListener('click', nextSlide); + + // Expose for compatibility + window.openProjectModal = openProjectModal; + window.goToPage = goToPage; + + // Initial render + renderProjects(); + renderPagination(); +}); diff --git a/assets/js/pages/services.js b/assets/js/pages/services.js new file mode 100644 index 0000000..494b7cd --- /dev/null +++ b/assets/js/pages/services.js @@ -0,0 +1,57 @@ +// Services page scripts (moved from inline in pages/services.html) +// Depends on ../main.js which initializes feather and other globals + +(function() { + document.addEventListener('DOMContentLoaded', () => { + // Timeline Animation + const timeline = document.getElementById('process-timeline'); + const steps = document.querySelectorAll('.process-step'); + + function animateTimeline() { + if (!timeline) return; + const timelineTop = timeline.getBoundingClientRect().top; + + if (timelineTop < window.innerHeight - 200) { + timeline.classList.add('animated'); + + // Animate steps sequentially + steps.forEach((step, index) => { + setTimeout(() => { + step.classList.add('active'); + }, index * 400); + }); + } + } + + window.addEventListener('scroll', animateTimeline); + window.addEventListener('load', animateTimeline); + + // Service Tabs + const tabBtns = document.querySelectorAll('.service-tab-btn'); + const tabContents = document.querySelectorAll('.service-tab-content'); + + if (tabBtns.length && tabContents.length) { + tabBtns.forEach(btn => { + btn.addEventListener('click', () => { + const tabId = btn.dataset.tab; + + // Update buttons + tabBtns.forEach(b => b.classList.remove('active')); + btn.classList.add('active'); + + // Update content + tabContents.forEach(content => { + content.classList.remove('active'); + if (content.id === 'tab-' + tabId) { + content.classList.add('active'); + } + }); + + // Re-init feather icons for new content (safe if feather is loaded) + if (window.feather) window.feather.replace(); + }); + }); + } + + }); +})(); diff --git a/components/favicons.html b/components/favicons.html new file mode 100644 index 0000000..de4e503 --- /dev/null +++ b/components/favicons.html @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/components/footer.html b/components/footer.html new file mode 100644 index 0000000..b407fe5 --- /dev/null +++ b/components/footer.html @@ -0,0 +1,39 @@ + + diff --git a/components/header.html b/components/header.html new file mode 100644 index 0000000..7d7ef22 --- /dev/null +++ b/components/header.html @@ -0,0 +1,39 @@ + + diff --git a/index.html b/index.html new file mode 100644 index 0000000..d7d2142 --- /dev/null +++ b/index.html @@ -0,0 +1,289 @@ + + + + + + OmégaKube — L'univers du Role Play réinventé + + + + + +
+
+ + +
+
+
+
+
+
+
+
+
+ + + + +
+
+
+
+ +
+ + +
+
+
+ Créateurs d'univers RP +
+

+ L'univers du
+ Role Play
+ réinventé +

+

Bots Discord personnalisés, maps Fortnite immersives — des expériences sur mesure pour vos communautés gaming.

+ +
+
+ + +
+
+ +

Qui sommes-nous ?

+

Une équipe passionnée dédiée à la création d'expériences RP uniques

+
+
+
+

Notre Mission

+

OmégaKube est né de la passion du Role Play et de l'envie de créer des outils innovants pour les communautés gaming. Nous développons des solutions sur mesure qui transforment l'expérience de jeu.

+

Notre expertise s'étend des bots Discord complexes aux environnements Fortnite immersifs, en passant par la création graphique. Chaque projet est une nouvelle aventure créative.

+
+
+
50+
+
Projets réalisés
+
+
+
10K+
+
Joueurs actifs
+
+
+
3
+
Ans d'expérience
+
+
+
+
+
+

Notre Objectif

+

Créer des outils et environnements RP simples d'utilisation, immersifs et parfaitement adaptés à tous types de serveurs et projets. Chaque communauté mérite une expérience unique qui reflète son identité.

+
+
+
+
+
+ + +
+
+ +

Ce que nous créons

+

Des solutions complètes pour vos projets Role Play

+
+
+
+
+ +
+

Bots Discord RP

+

Des bots entièrement personnalisés pour animer et gérer vos serveurs RP.

+
    +
  • Systèmes d'économie avancés
  • +
  • Gestion des stats et inventaires
  • +
  • Commandes RP personnalisées
  • +
+
+
+
+ +
+

Maps Fortnite RP

+

Des environnements uniques conçus pour des sessions RP mémorables.

+
    +
  • Design d'environnement immersif
  • +
  • Scénarios narratifs intégrés
  • +
  • Optimisation performance
  • +
+
+
+
+ +
+

Créations Graphiques

+

Identité visuelle et assets graphiques pour vos projets.

+
    +
  • Logos et branding
  • +
  • Bannières et visuels
  • +
  • Assets personnalisés
  • +
+
+
+ +
+ + +
+
+ +

Les créateurs

+

Cliquez sur un membre pour en savoir plus

+
+ +
+ + +
+
+
+ +
+ +
+ + +
+
+ + + + +
+
+
+ + +
+
+ +

Nos réalisations

+

Découvrez quelques-uns de nos projets récents

+
+
+
+
+
+ Bot Discord +

Medieval RP Bot

+

Système complet pour serveur fantasy

+
+
+
+
+
+ Fortnite Map +

Cyberpunk City

+

Environnement urbain futuriste

+
+
+
+
+
+ Bot Discord +

Space Station RP

+

Bot Sci-Fi avec économie spatiale

+
+
+
+ +
+ + +
+
+ +

Parlons de votre projet

+

Un projet RP en tête ? Contactez-nous !

+
+
+
+

Discutons ensemble

+

Vous avez un serveur à développer, une map à créer ou besoin d'un bot personnalisé ? Notre équipe est prête à donner vie à vos idées.

+ +
+
+
+ + +
+
+ + +
+
+ + +
+ +
+
+
+ +
+ + + + + diff --git a/pages/404.html b/pages/404.html new file mode 100644 index 0000000..aecd028 --- /dev/null +++ b/pages/404.html @@ -0,0 +1,61 @@ + + + + + + 404 — Page non trouvée | OmégaKube + + + + + + + + +
+
+
+
+ +
+
+
+
+
+
+
+
+
+
+ +
+
+ +
+
404
+

Dimension introuvable

+

+ Oups ! Il semblerait que vous ayez traversé un portail défectueux. + Cette page n'existe pas dans notre univers... ou peut-être a-t-elle été téléportée ailleurs ? +

+ +
+ + + + + + diff --git a/pages/cgv.html b/pages/cgv.html new file mode 100644 index 0000000..eb2c76a --- /dev/null +++ b/pages/cgv.html @@ -0,0 +1,256 @@ + + + + + + Conditions Générales de Vente — OmégaKube + + + + + + +
+
+ + +
+
+
+
+
+
+
+
+
+ + + + +
+
+
+
+ + +
+ +
+
+

Conditions Générales de Vente

+

Conditions applicables aux prestations de l'association OmégaKube

+
+
+ + + +
+ + + + + + diff --git a/pages/mentions-legales.html b/pages/mentions-legales.html new file mode 100644 index 0000000..f312a48 --- /dev/null +++ b/pages/mentions-legales.html @@ -0,0 +1,163 @@ + + + + + + Mentions Légales — OmégaKube + + + + + + +
+
+ + +
+
+
+
+
+
+
+
+
+ + + + +
+
+
+
+ + +
+ +
+
+

Mentions Légales

+

Informations légales relatives à l'association OmégaKube

+
+
+ + + +
+ + + + + + diff --git a/pages/realisations.html b/pages/realisations.html new file mode 100644 index 0000000..327051a --- /dev/null +++ b/pages/realisations.html @@ -0,0 +1,334 @@ + + + + + + Nos Réalisations — OmégaKube + + + + + + +
+
+ + +
+
+
+
+
+
+
+
+
+ + + + +
+
+
+
+ +
+ + +
+
+
+ Notre portfolio +
+

Nos Réalisations

+

Découvrez les projets que nous avons concrétisés pour nos clients et partenaires.

+
+
+ + +
+
+ +

Projets phares

+

Nos réalisations les plus marquantes

+
+ +
+ + +
+
+
+ Bot Discord +

Medieval RP Bot

+

Un système RP médiéval complet pour serveur fantasy

+
+
+
+
+
+ +
+
5000+
+
Joueurs actifs
+
+
+
+ +
+
3 mois
+
Développement
+
+
+
+ +
+
150+
+
Commandes
+
+
+
+ +
+
99.9%
+
Uptime
+
+
+
+

Description

+

Développé pour l'un des plus grands serveurs Discord francophones, ce bot gère l'intégralité de l'expérience RP : économie, métiers, combat tour par tour, gestion de royaumes et alliances, quêtes automatisées et bien plus encore.

+
+ Économie + Combat + Métiers + Royaumes + Quêtes + Events +
+
+
+ +
+ + +
+
+
+ Fortnite Map +

Cyberpunk City

+

Une ville futuriste immersive pour le RP urbain

+
+
+
+
+
+ +
+
50K+
+
Parties jouées
+
+
+
+ +
+
100+
+
Bâtiments
+
+
+
+ +
+
5
+
Quartiers
+
+
+
+ +
+
50
+
Joueurs max
+
+
+
+

Description

+

Néons, gratte-ciels, quartiers distincts et ambiance blade runner. Cette map a été optimisée pour accueillir jusqu'à 50 joueurs simultanément avec un système jour/nuit dynamique et des zones interactives scriptées.

+
+ Néons + Jour/Nuit + Scripts + Optimisé + Immersif +
+
+
+ +
+ + +
+
+
+ Pack Complet +

Nova RP - Lancement

+

Accompagnement complet pour un lancement réussi

+
+
+
+
+
+ +
+
8000+
+
Membres
+
+
+
+ +
+
0→8K
+
En 3 mois
+
+
+
+ +
+
4
+
Services inclus
+
+
+
+ +
+
Top 10
+
Serveur FR
+
+
+
+

Description

+

Un accompagnement clé en main : bot Discord personnalisé, identité visuelle complète, map Fortnite exclusive et stratégie de lancement. En 3 mois, le serveur est passé de 0 à 8000 membres actifs.

+
+ Bot RP + Map Fortnite + Branding + Stratégie + Support +
+
+
+ +
+
+ + +
+
+ +

Tous nos projets

+

Cliquez sur un projet pour voir les détails

+
+ + +
+
+ + + + +
+
+ + +
+ +
+ + + +
+ + +
+
+ + + + +
+
+
+ Bot Discord + +
+ +
+ + + +
+ + + +
+ +
+
+
+
+
+
+ + +
+
+ +

Prêt à créer ensemble ?

+

Votre projet pourrait être le prochain dans notre portfolio

+
+ +
+ +
+ + + + + diff --git a/pages/services.html b/pages/services.html new file mode 100644 index 0000000..e178a80 --- /dev/null +++ b/pages/services.html @@ -0,0 +1,741 @@ + + + + + + Nos Services — OmégaKube + + + + + + +
+
+ + +
+
+
+
+
+
+
+
+
+ + + + +
+
+
+
+ +
+ + +
+
+
+ Ce que nous proposons +
+

Nos Services

+

Des solutions complètes et sur mesure pour donner vie à vos projets Role Play les plus ambitieux.

+
+
+ + +
+
+ +

Comment ça marche ?

+

Un accompagnement clair et structuré, de l'idée à la livraison

+
+ +
+
+
+ +
+
+

Contact

+

Discutons de votre projet et de vos besoins

+
+
+ +
+
+ +
+
+

Devis

+

Proposition détaillée et validation ensemble

+
+
+ +
+
+ +
+
+

Création

+

Développement avec suivi régulier

+
+
+ +
+
+ +
+
+

Livraison

+

Tests, ajustements et support inclus

+
+
+
+
+ + +
+
+ +

Choisissez votre service

+

Cliquez sur un service pour découvrir tous les détails

+
+ +
+ +
+ + + + + +
+ + + +
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+

Bots Discord RP

+

Des bots entièrement personnalisés pour animer et gérer vos serveurs Role Play. Nous développons des systèmes complets adaptés à votre univers et à vos mécaniques de jeu.

+
+ +
+
+
2-4
+
Semaines de dev
+
+
+
1 mois
+
Support inclus
+
+
+
100%
+
Personnalisable
+
+
+ +
+
+
+ +
+
+

Économie virtuelle

+

Monnaie, banque, transactions

+
+
+
+
+ +
+
+

Système de métiers

+

Jobs, skills, progression

+
+
+
+
+ +
+
+

Combat & Stats

+

PvP, PvE, attributs

+
+
+
+
+ +
+
+

Inventaire avancé

+

Items, crafting, échanges

+
+
+
+
+ +
+
+

Factions & Guildes

+

Clans, territoires, guerres

+
+
+
+
+ +
+
+

Panel Admin

+

Interface web de gestion

+
+
+
+ + +
+
+
+ + +
+
+
+ ✦ New +
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+

Maps Fortnite RP

+

Des environnements immersifs créés sur mesure pour vos sessions Role Play. De la ville moderne au village médiéval, nous donnons vie à tous les univers.

+
+ +
+
+
3-6
+
Semaines de création
+
+
+
50+
+
Joueurs supportés
+
+
+
UEFN
+
Compatible
+
+
+ +
+
+
+ +
+
+

Bâtiments détaillés

+

Intérieurs accessibles et déco

+
+
+
+
+ +
+
+

Cycle jour/nuit

+

Ambiance dynamique

+
+
+
+
+ +
+
+

Zones interactives

+

Scripts et triggers

+
+
+
+
+ +
+
+

Optimisation

+

Performance garantie

+
+
+
+
+ +
+
+

Points d'intérêt

+

Lieux uniques et mémorables

+
+
+
+
+ +
+
+

Modifications

+

Ajustements post-livraison

+
+
+
+ + +
+
+
+ + +
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+

Créations Graphiques

+

Une identité visuelle forte et cohérente pour vos projets. Du logo aux bannières, nous créons des visuels qui marquent les esprits et attirent votre communauté.

+
+ +
+
+
1-2
+
Semaines
+
+
+
∞
+
Révisions
+
+
+
HD
+
Qualité
+
+
+ +
+
+
+ +
+
+

Logo & Branding

+

Identité visuelle complète

+
+
+
+
+ +
+
+

Bannières Discord

+

Server banner, splash, icône

+
+
+
+
+ +
+
+

Emojis custom

+

Pack emojis personnalisés

+
+
+
+
+ +
+
+

Icônes & Assets

+

Items, skills, badges

+
+
+
+
+ +
+
+

Animations

+

GIFs et motion design

+
+
+
+
+ +
+
+

Guide de style

+

Charte graphique fournie

+
+
+
+ + +
+
+
+ + +
+
+
+ ✓ Gratuit +
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+

Consulting & Accompagnement Gratuit

+

Bénéficiez de notre expérience pour structurer, lancer et développer votre projet RP. Conseils stratégiques et accompagnement personnalisé.

+
+ +
+
+
50+
+
Projets accompagnés
+
+
+
3 ans
+
D'expérience
+
+
+
24/7
+
Support Discord
+
+
+ +
+
+
+ +
+
+

Audit serveur

+

Analyse de l'existant

+
+
+
+
+ +
+
+

Stratégie croissance

+

Plan de développement

+
+
+
+
+ +
+
+

Formation staff

+

Équipe modération

+
+
+
+
+ +
+
+

Expérience joueur

+

Optimisation UX

+
+
+
+
+ +
+
+

Planning events

+

Calendrier d'animations

+
+
+
+
+ +
+
+

Monétisation

+

Conseils revenus

+
+
+
+ + +
+
+
+ + +
+
+
+ ★ Populaire +
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+

Pack Serveur Complet -20%

+

La solution tout-en-un pour lancer votre projet RP. Bot personnalisé, map Fortnite, identité visuelle et accompagnement : tout est inclus pour un lancement réussi.

+
+ +
+
+
-20%
+
VS services séparés
+
+
+
3 mois
+
Support inclus
+
+
+
Clé en main
+
Prêt à lancer
+
+
+ +
+
+
+ +
+
+

Bot Discord RP

+

Système complet personnalisé

+
+
+
+
+ +
+
+

Map Fortnite

+

Environnement sur mesure

+
+
+
+
+ +
+
+

Pack graphique

+

Logo, bannières, emojis

+
+
+
+
+ +
+
+

Config Discord

+

Serveur prêt à l'emploi

+
+
+
+
+ +
+
+

Documentation

+

Guides et tutoriels

+
+
+
+
+ +
+
+

Support 3 mois

+

Accompagnement lancement

+
+
+
+ + +
+
+
+ +
+
+ + +
+
+ +

Pourquoi nous choisir ?

+

Ce qui fait la différence OmégaKube

+
+ +
+
+
+ +
+

Expertise RP

+

3 ans d'expérience dans l'écosystème Role Play. Nous connaissons vos besoins car nous sommes aussi des joueurs.

+
+
+
+ +
+

Suivi continu

+

Communication régulière pendant le développement. Vous suivez l'avancement et validez chaque étape.

+
+
+
+ +
+

Support inclus

+

Maintenance et assistance après livraison. Nous restons disponibles pour les ajustements et questions.

+
+
+
+ + +
+
+ +

Discutons de votre projet

+

Contactez-nous pour un devis gratuit et personnalisé

+
+ +
+ +
+ + + + +