/* ============================================
   VARIABLES CSS - Gestion des thèmes
   ============================================ */
:root{--bg-primary:#0a0a0f;--bg-secondary:#131318;--bg-card:#1a1a24;--text-primary:#ffffff;--text-secondary:#a0a0b0;--accent-cyan:#00f5ff;--accent-magenta:#ff00e5;--accent-yellow:#ffaa00;--accent-green:#00ff88;--gradient-primary:linear-gradient(135deg, var(--accent-cyan) 0%, var(--accent-magenta) 100%);--gradient-secondary:linear-gradient(135deg, var(--accent-green) 0%, var(--accent-yellow) 100%);--shadow-sm:0 2px 8px rgba(0, 245, 255, 0.1);--shadow-md:0 4px 20px rgba(255, 0, 229, 0.2);--shadow-lg:0 8px 40px rgba(0, 245, 255, 0.3);--shadow-glow:0 0 20px rgba(0, 245, 255, 0.4);--spacing-xs:0.5rem;--spacing-sm:1rem;--spacing-md:2rem;--spacing-lg:4rem;--spacing-xl:6rem;--radius-sm:4px;--radius-md:8px;--radius-lg:16px;--transition-fast:0.2s ease;--transition-base:0.3s ease;--transition-slow:0.5s ease;--font-display:'Righteous', cursive;--font-title:'Bebas Neue', cursive;--font-body:'JetBrains Mono', monospace}body.light-mode{--bg-primary:#fbf1c7;--bg-secondary:#f9f5d7;--bg-card:#f2e5bc;--text-primary:#3c3836;--text-secondary:#665c54;--accent-cyan:#076678;--accent-magenta:#8f3f71;--accent-yellow:#b57614;--accent-green:#79740e;--accent-orange:#af3a03;--accent-red:#9d0006;--gradient-primary:linear-gradient(135deg, #af3a03 0%, #8f3f71 100%);--gradient-secondary:linear-gradient(135deg, #79740e 0%, #b57614 100%);--shadow-sm:0 2px 8px rgba(60, 56, 54, 0.1);--shadow-md:0 4px 20px rgba(60, 56, 54, 0.15);--shadow-lg:0 8px 40px rgba(60, 56, 54, 0.2);--shadow-glow:0 0 20px rgba(175, 58, 3, 0.3)}*{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth;overflow-x:hidden}body{font-family:var(--font-body);background-color:var(--bg-primary);color:var(--text-primary);line-height:1.6;overflow-x:hidden;transition:background-color var(--transition-base), color var(--transition-base)}::selection{background:var(--accent-cyan);color:var(--bg-primary)}body.light-mode::selection{background:var(--accent-orange);color:var(--bg-primary)}.navbar{position:fixed;top:0;left:0;width:100%;background:rgba(10, 10, 15, 0.8);backdrop-filter: blur(20px);border-bottom:2px solid rgba(0, 245, 255, 0.1);z-index:1000;transition:all var(--transition-base)}body.light-mode .navbar{background:rgba(251, 241, 199, 0.9);border-bottom:2px solid rgba(175, 58, 3, 0.2)}.navbar.scrolled{box-shadow:var(--shadow-md)}.nav-container{max-width:1400px;margin:0 auto;padding:1rem 2rem;display:flex;justify-content:space-between;align-items:center}.logo{font-family:var(--font-display);font-size:1.5rem;font-weight:700;letter-spacing:2px}.logo-bracket{color:var(--accent-cyan);font-size:1.8rem}body.light-mode .logo-bracket{color:var(--accent-orange)}.logo-text{background:var(--gradient-primary);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.nav-links{display:flex;gap:2rem;align-items:center}.nav-link{color:var(--text-secondary);text-decoration:none;font-size:0.9rem;font-weight:500;text-transform:uppercase;letter-spacing:1px;position:relative;transition:color var(--transition-fast)}.nav-link::after{content:'';position:absolute;bottom:-5px;left:0;width:0;height:2px;background:var(--gradient-primary);transition:width var(--transition-base)}.nav-link:hover{color:var(--text-primary)}.nav-link:hover::after{width:100%}.nav-cta{padding:0.5rem 1.5rem;background:var(--gradient-primary);border-radius:var(--radius-sm);color:var(--bg-primary) !important;font-weight:700}.nav-cta::after{display:none}.theme-toggle{background:var(--bg-card);border:2px solid rgba(0, 245, 255, 0.2);color:var(--text-primary);width:45px;height:45px;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:1.2rem;transition:all var(--transition-base)}body.light-mode .theme-toggle{border-color:rgba(175, 58, 3, 0.3)}.theme-toggle:hover{background:var(--accent-cyan);color:var(--bg-primary);transform:rotate(20deg);box-shadow:var(--shadow-glow)}body.light-mode .theme-toggle:hover{background:var(--accent-orange)}.mobile-menu-btn{display:none;flex-direction:column;gap:5px;background:transparent;border:none;cursor:pointer}.mobile-menu-btn span{width:25px;height:3px;background:var(--text-primary);transition:all var(--transition-base)}.hero{position:relative;min-height:100vh;display:flex;align-items:center;justify-content:center;overflow:hidden;padding:6rem 2rem 4rem}.hero-bg{position:absolute;top:0;left:0;width:100%;height:100%;z-index:0}.grid-pattern{position:absolute;top:0;left:0;width:100%;height:100%;background-image:linear-gradient(rgba(0, 245, 255, 0.03) 1px, transparent 1px), linear-gradient(90deg, rgba(0, 245, 255, 0.03) 1px, transparent 1px);background-size:50px 50px;animation:gridMove 20s linear infinite}body.light-mode .grid-pattern{background-image:linear-gradient(rgba(175, 58, 3, 0.05) 1px, transparent 1px), linear-gradient(90deg, rgba(175, 58, 3, 0.05) 1px, transparent 1px)}@keyframes gridMove{0%{transform:translate(0, 0)}100%{transform:translate(50px, 50px)}}.gradient-orb{position:absolute;border-radius:50%;filter: blur(80px);opacity:0.3;animation:float 15s ease-in-out infinite}.orb-1{width:500px;height:500px;background:radial-gradient(circle, var(--accent-cyan) 0%, transparent 70%);top:-10%;left:-10%;animation-delay:0s}.orb-2{width:400px;height:400px;background:radial-gradient(circle, var(--accent-magenta) 0%, transparent 70%);bottom:-10%;right:-10%;animation-delay:5s}.orb-3{width:350px;height:350px;background:radial-gradient(circle, var(--accent-green) 0%, transparent 70%);top:50%;left:50%;transform:translate(-50%, -50%);animation-delay:10s}body.light-mode .orb-1{background:radial-gradient(circle, var(--accent-orange) 0%, transparent 70%);opacity:0.2}body.light-mode .orb-2{background:radial-gradient(circle, var(--accent-magenta) 0%, transparent 70%);opacity:0.2}body.light-mode .orb-3{background:radial-gradient(circle, var(--accent-yellow) 0%, transparent 70%);opacity:0.2}@keyframes float{0%,100%{transform:translate(0, 0) scale(1)}33%{transform:translate(30px, -30px) scale(1.1)}66%{transform:translate(-30px, 30px) scale(0.9)}}.hero-content{position:relative;z-index:1;text-align:center;max-width:900px}.glitch{font-family:var(--font-title);font-size:clamp(3rem, 10vw, 7rem);font-weight:900;text-transform:uppercase;letter-spacing:0.1em;background:var(--gradient-primary);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;position:relative;animation:glitch 5s infinite}@keyframes glitch{0%,100%,90%{transform:translate(0)}92%{transform:translate(-2px, 2px)}94%{transform:translate(2px, -2px)}96%{transform:translate(-2px, -2px)}98%{transform:translate(2px, 2px)}}.glitch::after,.glitch::before{content:attr(data-text);position:absolute;top:0;left:0;width:100%;height:100%;background:var(--gradient-primary);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.glitch::before{animation:glitchBefore 3s infinite;clip-path:polygon(0 0, 100% 0, 100% 45%, 0 45%)}.glitch::after{animation:glitchAfter 3s infinite;clip-path:polygon(0 55%, 100% 55%, 100% 100%, 0 100%)}@keyframes glitchBefore{0%,100%,93%{transform:translate(0);opacity:1}94%{transform:translate(-3px, 0);opacity:0.8}}@keyframes glitchAfter{0%,100%,93%{transform:translate(0);opacity:1}94%{transform:translate(3px, 0);opacity:0.8}}.hero-subtitle{font-size:clamp(1rem, 2vw, 1.3rem);color:var(--text-secondary);margin:2rem 0;font-weight:400;letter-spacing:2px}.typed-text{border-right:3px solid var(--accent-cyan);padding-right:5px;animation:blink 1s step-end infinite}body.light-mode .typed-text{border-right-color:var(--accent-orange)}@keyframes blink{0%,100%{border-color:transparent}50%{border-color:var(--accent-cyan)}}.hero-cta{margin-top:3rem;display:flex;flex-direction:column;align-items:center;gap:3rem}.btn{display:inline-flex;align-items:center;gap:1rem;padding:1rem 2.5rem;font-family:var(--font-body);font-size:1rem;font-weight:700;text-decoration:none;text-transform:uppercase;letter-spacing:2px;border-radius:var(--radius-md);transition:all var(--transition-base);position:relative;overflow:hidden}.btn-primary{background:var(--bg-card);color:var(--text-primary);border:2px solid var(--accent-cyan);box-shadow:0 0 20px rgba(0, 245, 255, 0.3)}body.light-mode .btn-primary{border-color:var(--accent-orange);box-shadow:0 0 20px rgba(175, 58, 3, 0.3)}.btn-primary::before{content:'';position:absolute;top:0;left:-100%;width:100%;height:100%;background:var(--gradient-primary);transition:left var(--transition-base);z-index:-1}.btn-primary:hover::before{left:0}.btn-primary:hover{transform:translateY(-3px);box-shadow:0 0 40px rgba(0, 245, 255, 0.6);color:var(--bg-primary);border-color:transparent}body.light-mode .btn-primary:hover{box-shadow:0 0 40px rgba(175, 58, 3, 0.6)}.btn-icon{animation:bounce 2s infinite}@keyframes bounce{0%,100%{transform:translateY(0)}50%{transform:translateY(-5px)}}.scroll-indicator{opacity:0.6}.scroll-mouse{width:30px;height:50px;border:2px solid var(--accent-cyan);border-radius:15px;position:relative}body.light-mode .scroll-mouse{border-color:var(--accent-orange)}.scroll-wheel{width:4px;height:10px;background:var(--accent-cyan);border-radius:2px;position:absolute;top:8px;left:50%;transform:translateX(-50%);animation:scrollWheel 2s infinite}body.light-mode .scroll-wheel{background:var(--accent-orange)}@keyframes scrollWheel{0%{top:8px;opacity:1}100%{top:28px;opacity:0}}.projects{padding:var(--spacing-xl) 2rem;background:var(--bg-secondary);position:relative}.container{max-width:1400px;margin:0 auto}.section-header{margin-bottom:var(--spacing-lg)}.section-title{font-family:var(--font-title);font-size:clamp(2.5rem, 6vw, 4rem);display:flex;align-items:center;gap:1rem}.title-number{font-size:1.5rem;color:var(--accent-cyan);font-family:var(--font-body)}body.light-mode .title-number{color:var(--accent-orange)}.title-text{background:var(--gradient-primary);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.section-line{width:200px;height:3px;background:var(--gradient-primary);margin-top:1rem;animation:expandLine 1s ease-out}@keyframes expandLine{0%{width:0}100%{width:200px}}.projects-grid{display:grid;grid-template-columns:repeat(auto-fit, minmax(350px, 1fr));gap:2rem}.project-card{background:var(--bg-card);border-radius:var(--radius-lg);overflow:hidden;border:2px solid transparent;transition:all var(--transition-base);opacity:0;transform:translateY(50px);animation:fadeInUp 0.6s ease forwards}.project-card:nth-child(1){animation-delay:0.1s}.project-card:nth-child(2){animation-delay:0.2s}.project-card:nth-child(3){animation-delay:0.3s}@keyframes fadeInUp{to{opacity:1;transform:translateY(0)}}.project-card:hover{transform:translateY(-10px) scale(1.02);border-color:var(--accent-cyan);box-shadow:var(--shadow-glow)}body.light-mode .project-card:hover{border-color:var(--accent-orange)}.project-image{width:100%;height:250px;object-fit:cover;transition:transform var(--transition-slow)}.project-card:hover .project-image{transform:scale(1.1)}body.light-mode .project-image{filter: saturate(0.8) brightness(0.95)}body.light-mode .project-card:nth-child(3) .project-image{filter: saturate(0.9) hue-rotate(-165deg) brightness(1) contrast(1.1)}.project-content{padding:1.5rem}.project-title{font-family:var(--font-display);font-size:1.8rem;margin-bottom:1rem;background:var(--gradient-primary);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.project-description{color:var(--text-secondary);font-size:0.95rem;margin-bottom:1.5rem;line-height:1.8}.project-tags{display:flex;flex-wrap:wrap;gap:0.5rem;margin-bottom:1.5rem}.tag{padding:0.4rem 1rem;background:rgba(0, 245, 255, 0.1);border:1px solid var(--accent-cyan);border-radius:var(--radius-sm);font-size:0.75rem;font-weight:600;text-transform:uppercase;letter-spacing:1px;color:var(--accent-cyan);transition:all var(--transition-fast)}body.light-mode .tag{background:rgba(175, 58, 3, 0.1);border-color:var(--accent-orange);color:var(--accent-orange)}.tag:hover{background:var(--accent-cyan);color:var(--bg-primary);transform:translateY(-2px)}body.light-mode .tag:hover{background:var(--accent-orange)}.project-link{display:inline-flex;align-items:center;gap:0.5rem;color:var(--text-primary);text-decoration:none;font-weight:700;font-size:0.9rem;text-transform:uppercase;letter-spacing:1px;transition:all var(--transition-fast)}.project-link:hover{color:var(--accent-cyan);gap:1rem}body.light-mode .project-link:hover{color:var(--accent-orange)}.about{padding:var(--spacing-xl) 2rem;background:var(--bg-primary)}.about-content{display:grid;grid-template-columns:1fr 1fr;gap:4rem;align-items:center}.about-description{font-size:1.1rem;color:var(--text-secondary);line-height:1.8;margin:2rem 0}.about-skills{display:flex;flex-wrap:wrap;gap:1rem;margin-top:2rem}.skill-tag{padding:0.8rem 1.5rem;background:var(--bg-card);border:2px solid var(--accent-cyan);border-radius:var(--radius-md);font-weight:700;text-transform:uppercase;letter-spacing:1px;transition:all var(--transition-base)}body.light-mode .skill-tag{border-color:var(--accent-orange)}.skill-tag:hover{background:var(--accent-cyan);color:var(--bg-primary);transform:translateY(-5px);box-shadow:var(--shadow-glow)}body.light-mode .skill-tag:hover{background:var(--accent-orange)}.about-stats{display:grid;grid-template-columns:1fr;gap:2rem}.stat-item{text-align:center;padding:2rem;background:var(--bg-card);border-radius:var(--radius-lg);border:2px solid transparent;transition:all var(--transition-base)}.stat-item:hover{border-color:var(--accent-cyan);transform:scale(1.05)}body.light-mode .stat-item:hover{border-color:var(--accent-orange)}.stat-number{font-family:var(--font-title);font-size:4rem;background:var(--gradient-primary);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;font-weight:900}.stat-label{color:var(--text-secondary);font-size:0.9rem;text-transform:uppercase;letter-spacing:2px;margin-top:0.5rem}.footer{background:var(--bg-secondary);padding:3rem 2rem;border-top:2px solid rgba(0, 245, 255, 0.1)}body.light-mode .footer{border-top-color:rgba(175, 58, 3, 0.2)}.footer-content{max-width:1400px;margin:0 auto;text-align:center}.footer-social{display:flex;justify-content:center;gap:1.5rem;margin-bottom:2rem}.social-link{width:50px;height:50px;display:flex;align-items:center;justify-content:center;background:var(--bg-card);border:2px solid var(--accent-cyan);border-radius:50%;color:var(--text-primary);font-size:1.3rem;text-decoration:none;transition:all var(--transition-base)}body.light-mode .social-link{border-color:var(--accent-orange)}.social-link:hover{background:var(--accent-cyan);color:var(--bg-primary);transform:translateY(-5px) rotate(360deg);box-shadow:var(--shadow-glow)}body.light-mode .social-link:hover{background:var(--accent-orange)}.footer-text{color:var(--text-secondary);font-size:0.9rem}.heart{color:var(--accent-magenta);animation:heartbeat 1.5s infinite}body.light-mode .heart{color:var(--accent-red)}@keyframes heartbeat{0%,100%{transform:scale(1)}50%{transform:scale(1.2)}}.modal{display:none;position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0, 0, 0, 0.85);backdrop-filter: blur(10px);z-index:10000;opacity:0;transition:opacity var(--transition-base)}body.light-mode .modal{background:rgba(60, 56, 54, 0.8)}.modal.active{display:flex;align-items:center;justify-content:center;opacity:1}.modal-content{background:var(--bg-card);border:2px solid var(--accent-cyan);border-radius:var(--radius-lg);max-width:600px;width:90%;max-height:90vh;overflow-y:auto;padding:2rem;position:relative;animation:modalSlideIn 0.4s ease;box-shadow:var(--shadow-glow)}body.light-mode .modal-content{border-color:var(--accent-orange)}@keyframes modalSlideIn{from{transform:translateY(-50px) scale(0.9);opacity:0}to{transform:translateY(0) scale(1);opacity:1}}.modal-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:2rem;padding-bottom:1rem;border-bottom:2px solid rgba(0, 245, 255, 0.2)}body.light-mode .modal-header{border-bottom-color:rgba(175, 58, 3, 0.2)}.modal-title{font-family:var(--font-title);font-size:2rem;background:var(--gradient-primary);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.modal-close{width:40px;height:40px;background:transparent;border:2px solid var(--accent-cyan);border-radius:50%;color:var(--text-primary);font-size:1.5rem;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all var(--transition-base)}body.light-mode .modal-close{border-color:var(--accent-orange)}.modal-close:hover{background:var(--accent-cyan);color:var(--bg-primary);transform:rotate(90deg)}body.light-mode .modal-close:hover{background:var(--accent-orange)}.contact-form{display:flex;flex-direction:column;gap:1.5rem}.form-group{display:flex;flex-direction:column;gap:0.5rem}.form-label{font-family:var(--font-body);font-weight:700;font-size:0.9rem;text-transform:uppercase;letter-spacing:1px;color:var(--text-primary)}.form-label .required{color:var(--accent-magenta)}body.light-mode .form-label .required{color:var(--accent-red)}.form-input,.form-textarea{font-family:var(--font-body);padding:1rem;background:var(--bg-secondary);border:2px solid rgba(0, 245, 255, 0.2);border-radius:var(--radius-md);color:var(--text-primary);font-size:0.95rem;transition:all var(--transition-base)}body.light-mode .form-input,body.light-mode .form-textarea{border-color:rgba(175, 58, 3, 0.3)}.form-input:focus,.form-textarea:focus{outline:none;border-color:var(--accent-cyan);box-shadow:0 0 0 3px rgba(0, 245, 255, 0.1)}body.light-mode .form-input:focus,body.light-mode .form-textarea:focus{border-color:var(--accent-orange);box-shadow:0 0 0 3px rgba(175, 58, 3, 0.1)}.form-textarea{min-height:150px;resize:vertical}.form-input::placeholder,.form-textarea::placeholder{color:var(--text-secondary);opacity:0.6}.form-error{color:var(--accent-magenta);font-size:0.85rem;margin-top:0.25rem;display:none}body.light-mode .form-error{color:var(--accent-red)}.form-error.active{display:block}.form-input.error,.form-textarea.error{border-color:var(--accent-magenta)}body.light-mode .form-input.error,body.light-mode .form-textarea.error{border-color:var(--accent-red)}.form-submit{padding:1rem 2rem;background:var(--bg-card);border:2px solid var(--accent-cyan);border-radius:var(--radius-md);color:var(--text-primary);font-family:var(--font-body);font-size:1rem;font-weight:700;text-transform:uppercase;letter-spacing:2px;cursor:pointer;transition:all var(--transition-base);position:relative;overflow:hidden}body.light-mode .form-submit{border-color:var(--accent-orange)}.form-submit::before{content:'';position:absolute;top:0;left:-100%;width:100%;height:100%;background:var(--gradient-primary);transition:left var(--transition-base);z-index:-1}.form-submit:hover::before{left:0}.form-submit:hover{color:var(--bg-primary);border-color:transparent;box-shadow:var(--shadow-glow);transform:translateY(-2px)}.form-submit:disabled{opacity:0.5;cursor:not-allowed;transform:none}.form-submit:disabled:hover{color:var(--text-primary);border-color:var(--accent-cyan);box-shadow:none}body.light-mode .form-submit:disabled:hover{border-color:var(--accent-orange)}.form-submit:disabled::before{left:-100%}.form-message{padding:1rem;border-radius:var(--radius-md);font-size:0.95rem;text-align:center;display:none;animation:fadeIn 0.3s ease}.form-message.success{background:rgba(0, 255, 136, 0.1);border:2px solid var(--accent-green);color:var(--accent-green)}body.light-mode .form-message.success{background:rgba(121, 116, 14, 0.1)}.form-message.error{background:rgba(255, 0, 229, 0.1);border:2px solid var(--accent-magenta);color:var(--accent-magenta)}body.light-mode .form-message.error{background:rgba(157, 0, 6, 0.1);border-color:var(--accent-red);color:var(--accent-red)}.form-message.active{display:block}.btn-loader{display:inline-block;width:16px;height:16px;border:2px solid var(--text-primary);border-top-color:transparent;border-radius:50%;animation:spin 0.6s linear infinite;margin-left:0.5rem}@keyframes spin{to{transform:rotate(360deg)}}@media (max-width: 968px){.nav-links{position:fixed;top:70px;left:-100%;width:100%;height:calc(100vh - 70px);background:var(--bg-secondary);flex-direction:column;justify-content:center;transition:left var(--transition-base);border-top:2px solid rgba(0, 245, 255, 0.1)}body.light-mode .nav-links{border-top-color:rgba(175, 58, 3, 0.2)}.nav-links.active{left:0}.mobile-menu-btn{display:flex}.mobile-menu-btn.active span:nth-child(1){transform:rotate(45deg) translate(7px, 7px)}.mobile-menu-btn.active span:nth-child(2){opacity:0}.mobile-menu-btn.active span:nth-child(3){transform:rotate(-45deg) translate(7px, -7px)}.projects-grid{grid-template-columns:1fr}.about-content{grid-template-columns:1fr;gap:3rem}}@media (max-width: 640px){.hero{padding:5rem 1rem 3rem}.nav-container{padding:1rem}.section-title{flex-direction:column;align-items:flex-start;gap:0.5rem}.projects-grid{grid-template-columns:1fr;gap:1.5rem}}.hidden{display:none !important}.fade-in{animation:fadeIn 0.5s ease}@keyframes fadeIn{from{opacity:0}to{opacity:1}}::-webkit-scrollbar{width:10px}::-webkit-scrollbar-track{background:var(--bg-secondary)}::-webkit-scrollbar-thumb{background:var(--accent-cyan);border-radius:5px}body.light-mode::-webkit-scrollbar-thumb{background:var(--accent-orange)}::-webkit-scrollbar-thumb:hover{background:var(--accent-magenta)}body.light-mode::-webkit-scrollbar-thumb:hover{background:var(--accent-red)}