:root{--bg: #05070d;--fg: #ffffff;--muted: rgba(255, 255, 255, .78);--glass: rgba(255, 255, 255, .08);--border: rgba(103, 253, 251, .25);--primary: #67fdfb;--accent: #91e7fd;--glow: 0 0 25px rgba(103, 253, 251, .5), 0 0 50px rgba(189, 253, 145, .2);--font-pixel: "Pixelify Sans", sans-serif;--font-body: "Pixelify Sans", sans-serif;--shadow-pixel: 4px 4px 0 rgba(0, 0, 0, .5);--shadow-pixel-hover: 6px 6px 0 rgba(0, 0, 0, .6)}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;image-rendering:auto}html,body{margin:0;padding:0;background:var(--bg);color:var(--fg);font-family:var(--font-body);font-size:18px;scroll-behavior:smooth;overflow-x:hidden}#webgl{position:fixed;inset:0;width:100%;height:100%;display:block;z-index:0;contain:strict;will-change:auto;transform:translateZ(0)}.container{width:100%;max-width:1200px;margin-inline:auto;padding-inline:0}.title-section{position:relative;display:inline-block;font-family:var(--font-pixel);font-size:clamp(.8rem,1.5vw,1.4rem);font-weight:400;letter-spacing:2px;text-transform:uppercase;color:#67fdfb;-webkit-text-fill-color:#67fdfb;background:none;-webkit-background-clip:unset;background-clip:unset;text-shadow:2px 2px 0 rgba(0,0,0,.6);padding-bottom:16px;margin-bottom:35px;border-bottom:4px dashed rgba(103,253,251,.4);will-change:auto;transform:none;animation:none}.title-section:before,.title-section:after{display:none}.cta{display:inline-flex;align-items:center;justify-content:flex-start;gap:8px;position:relative;overflow:hidden;background:#67fdfb;color:#000;text-decoration:none;font-family:var(--font-pixel);font-weight:500;font-size:1.1rem;padding:12px 20px;border-radius:0;margin-top:8px;border:2px solid #67fdfb;transition:transform .1s steps(2),box-shadow .1s steps(2);box-shadow:var(--shadow-pixel);width:fit-content;min-width:160px;text-align:left;will-change:auto;animation:none}.cta:hover{transform:translate(-2px,-2px);box-shadow:var(--shadow-pixel-hover)}@media (min-width: 768px){.cta{min-width:300px}}@media (min-width: 1200px){.cta{min-width:340px}}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:20px;margin-top:32px}.card{border:2px solid var(--border);background:#05070dcc;border-radius:0;min-height:160px;display:flex;align-items:center;justify-content:center;transition:transform .1s steps(2),box-shadow .1s steps(2),border-color .1s steps(2);position:relative;overflow:hidden}.card:before{display:none}.card:hover{transform:translate(-2px,-2px);border-color:#67fdfb;box-shadow:var(--shadow-pixel-hover);background:#0a1020e6}.card:hover:before{opacity:0}.project-card{cursor:pointer;flex-direction:column;padding:0;text-align:left;align-items:flex-start;justify-content:flex-start;position:relative;overflow:hidden}.card-image{width:100%;height:180px;background-size:cover;background-position:center;position:relative;transition:transform .4s ease}.card-image:after{content:"";position:absolute;inset:0;background:linear-gradient(to top,rgba(5,7,13,.9),transparent)}.card-content{padding:24px 24px 60px;width:100%;position:relative;z-index:2;flex:1;display:flex;flex-direction:column}.card-content h3{margin:0;font-size:1.25rem;color:var(--fg);line-height:1.3}.card-tag{display:inline-block;font-size:.75rem;color:#67fdfb;opacity:.9;margin-bottom:8px;text-transform:uppercase;letter-spacing:.1em;font-weight:700}.card-link{font-size:.9rem;font-weight:600;color:#fff6;transition:color .3s ease,transform .3s ease;position:absolute;bottom:24px}.project-card:hover .card-link{color:#67fdfb;transform:translate(4px)}.large-project{width:100%;min-height:350px;grid-column:1 / -1;margin-top:40px;display:block;padding:0;overflow:hidden;position:relative;cursor:pointer;transition:transform .1s steps(2),box-shadow .1s steps(2),border-color .1s steps(2)}.large-project:hover{transform:translate(-2px,-2px);box-shadow:var(--shadow-pixel-hover);border-color:#67fdfb;background:#0a1020e6}.large-project-image{position:absolute;top:0;left:0;bottom:0;width:50%;background-size:cover;background-position:center;overflow:hidden}.large-project-image:after{content:"";position:absolute;inset:0;background:linear-gradient(to right,rgba(5,7,13,0) 50%,var(--bg) 100%);z-index:1}.large-project-content{margin-left:50%;width:50%;padding:40px;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;z-index:2;position:relative}.large-project h3{font-family:var(--font-pixel);font-size:1.1rem;margin-bottom:16px;color:#fff;background:none;background-clip:unset;-webkit-background-clip:unset;-webkit-text-fill-color:#fff;text-shadow:2px 2px 0 rgba(0,0,0,.5)}.large-project p{font-size:1.15rem;color:var(--muted);line-height:1.6;margin-bottom:24px;max-width:90%}.large-project .card-tag{font-family:var(--font-body);font-size:1.1rem;background:#67fdfb1a;padding:8px 14px;border-radius:0;margin-bottom:20px;border:1px solid var(--border)}.large-project:hover .large-project-image{filter:brightness(1.1)}@media (max-width: 900px){.large-project{display:flex;flex-direction:column;height:auto}.large-project-image{position:relative;width:100%;height:250px}.large-project-image:after{background:linear-gradient(to bottom,rgba(5,7,13,0) 0%,var(--bg) 100%)}.large-project-content{margin-left:0;width:100%;padding:30px 24px;align-items:flex-start}}.card-image{width:100%;height:200px;background-size:cover;background-position:center;transition:transform .5s ease}.project-card:hover .card-image{transform:scale(1.05)}.placeholder-img{width:100%;height:200px;background:#05070d;display:flex;align-items:center;justify-content:center;border-bottom:1px solid rgba(103,253,251,.2);position:relative;overflow:hidden}.placeholder-img:after{content:"IMAGE MANQUANTE";font-family:Orbitron,sans-serif;color:#67fdfb;font-size:.9rem;letter-spacing:.1em;text-shadow:0 0 10px rgba(103,253,251,.5);opacity:.8}.placeholder-img:before{content:"";position:absolute;inset:0;background:radial-gradient(circle at center,rgba(103,253,251,.1) 0%,transparent 70%)}.skills-list{display:flex;flex-direction:column;gap:20px;margin-top:36px}.skill-item{display:flex;align-items:center;gap:20px;background:#05070dcc;border:2px solid var(--border);padding:20px 28px;border-radius:0;transition:transform .1s steps(2),box-shadow .1s steps(2),border-color .1s steps(2);position:relative;overflow:hidden}.skill-item:before{display:none}.skill-item:hover{transform:translate(-2px,-2px);border-color:#67fdfb;box-shadow:var(--shadow-pixel-hover);background:#0a1020e6}.skill-item:hover:before{opacity:0}.skill-icon{width:44px;height:44px;display:flex;align-items:center;justify-content:center;background:#67fdfb0f;border:2px solid var(--border);border-radius:0;padding:10px;flex-shrink:0;transition:none}.skill-item:hover .skill-icon{background:#67fdfb1f}.skill-icon svg{width:100%;height:100%;fill:currentColor;color:#67fdfb;opacity:.85}.skill-info{width:170px;flex-shrink:0}.skill-name{font-weight:700;font-size:.95rem;color:#fff;display:block;letter-spacing:.02em}.skill-track{flex-grow:1;height:14px;background:#ffffff0f;border-radius:10px;overflow:hidden;position:relative;display:flex;margin:0 16px}.skill-segment{height:100%;position:relative}.skill-segment.p-ctf{background:#ff6b6b;box-shadow:0 0 12px #ff6b6b4d}.skill-segment.p-portfolio{background:#67fdfb;box-shadow:0 0 12px #67fdfb4d}.skill-segment.p-game{background:#bdfd91;box-shadow:0 0 12px #bdfd914d}.skill-segment.p-app{background:#fca5a5;box-shadow:0 0 12px #fca5a54d}.skill-segment.p-ecommerce{background:#a5b4fc;box-shadow:0 0 12px #a5b4fc4d}.skill-segment.p-linux{background:#fbbf24;box-shadow:0 0 12px #fbbf244d}.skill-total{width:60px;text-align:right;font-weight:900;font-size:1.25rem;color:#fff;text-shadow:0 0 12px rgba(255,255,255,.1);flex-shrink:0;letter-spacing:-.02em}.skill-segment:hover:after{content:attr(data-project) " (" attr(data-percent) ")";position:absolute;bottom:20px;right:0;background:#05070df2;color:#fff;padding:8px 14px;border-radius:10px;font-size:.78rem;font-weight:600;white-space:nowrap;pointer-events:none;z-index:100;border:1px solid rgba(255,255,255,.15);box-shadow:0 10px 25px #00000080;transform:translateY(-5px);animation:fadeIn .2s ease}.skills-legend{display:flex;gap:16px;flex-wrap:wrap;justify-content:center;margin-bottom:8px;margin-top:32px}.legend-item{display:flex;align-items:center;gap:10px;padding:8px 16px;background:#ffffff08;border:1px solid rgba(255,255,255,.08);border-radius:30px;font-size:.78rem;color:#ffffffb3;font-weight:600;letter-spacing:.04em;transition:all .3s ease;cursor:default}.legend-item:hover{background:#ffffff12;border-color:#fff3;transform:translateY(-2px);box-shadow:0 6px 18px #0003;color:#fff}.legend-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}@media (max-width: 768px){.skill-item{flex-wrap:wrap;gap:12px;padding:16px 20px}.skill-info{width:auto;flex-grow:1}.skill-track{width:100%;flex-basis:100%;order:3;margin:4px 0 0}.skill-total{order:2}}.navbar{position:fixed;top:0;left:0;width:100%;z-index:1000;background:#05070df2;border-bottom:2px solid rgba(103,253,251,.3);padding:0 24px;height:70px;display:flex;align-items:center;transition:none}.nav-container{display:grid;grid-template-columns:auto 1fr auto;align-items:center;width:100%;max-width:1200px;margin:0 auto;gap:16px}.nav-logo{font-family:var(--font-pixel);font-size:1.1rem;font-weight:700;color:var(--fg);text-decoration:none;text-transform:uppercase;letter-spacing:.15em;z-index:1001;text-shadow:2px 2px 0 rgba(0,0,0,.5)}.nav-menu{display:flex;gap:16px;list-style:none;margin:0;padding:0;align-items:center;justify-self:center}.nav-link{color:var(--muted);text-decoration:none;font-family:var(--font-body);font-size:1.1rem;font-weight:400;text-transform:uppercase;letter-spacing:.1em;transition:none;position:relative;padding:8px 0}.nav-link:after{content:"";position:absolute;bottom:0;left:0;width:0%;height:2px;background:var(--primary);transition:width .1s steps(3)}.nav-link:hover{color:#67fdfb;text-shadow:none}.nav-link:hover:after{width:100%}.has-dropdown{position:relative}.dropdown{position:absolute;top:100%;left:50%;transform:translate(-50%) translateY(10px);background:#05070dfa;border:2px solid var(--border);border-radius:0;padding:8px;min-width:180px;opacity:0;visibility:hidden;transition:opacity .1s steps(2);box-shadow:var(--shadow-pixel);list-style:none;flex-direction:column;display:flex;gap:4px}.has-dropdown:hover .dropdown{opacity:1;visibility:visible;transform:translate(-50%) translateY(0)}.dropdown-link{display:block;padding:10px 16px;color:var(--muted);text-decoration:none;font-family:var(--font-body);font-size:1.1rem;transition:none;border-radius:0;white-space:nowrap}.dropdown-link:hover{background:#67fdfb26;color:var(--primary);transform:none}.hamburger{display:none;cursor:pointer;z-index:2000;width:44px;height:auto;background:transparent;border:none;box-shadow:none;border-radius:0;padding:10px 0;position:fixed;top:8px;right:20px;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:0;transition:transform .3s ease;margin-top:0}.hamburger:hover{transform:scale(1.1)}.bar{display:block;width:32px;height:3px;background-color:#fff!important;border-radius:3px;transition:all .3s ease;box-shadow:0 0 10px var(--primary),0 0 20px #67fdfb66;margin:4px 0}@media (min-width: 1251px){.hamburger{display:none!important}}.hamburger.active .bar:nth-child(1){transform:translateY(11px) rotate(45deg)}.hamburger.active .bar:nth-child(2){opacity:0;transform:translate(-100%)}.hamburger.active .bar:nth-child(3){transform:translateY(-11px) rotate(-45deg)}.mobile-nav{position:fixed;top:0;left:0;width:100%;height:100svh;background:#05070dfa;z-index:1900;display:flex;flex-direction:column;justify-content:flex-start;align-items:center;transform:translateY(-100%);transition:transform .6s cubic-bezier(.2,1,.3,1);overflow-y:auto;padding:80px 24px 40px}.mobile-nav.active{transform:translateY(0)}.mobile-menu-content{display:flex;flex-direction:column;align-items:flex-start;gap:12px;min-width:280px}.mobile-link{font-size:1.8rem;color:var(--fg);text-decoration:none;font-weight:800;text-transform:uppercase;letter-spacing:.05em;transition:all .3s;opacity:0;transform:translateY(20px);width:100%;text-align:left}.mobile-nav.active .mobile-link,.mobile-nav.active .mobile-divider,.mobile-nav.active .mobile-toggle{opacity:1;transform:translateY(0);transition:opacity .5s ease,transform .5s ease}.mobile-nav.active .mobile-link:nth-child(1){transition-delay:.1s}.mobile-nav.active .mobile-divider:nth-child(2){transition-delay:.15s}.mobile-nav.active .mobile-link:nth-child(3){transition-delay:.2s}.mobile-nav.active .mobile-link:nth-child(4){transition-delay:.25s}.mobile-nav.active .mobile-link:nth-child(5){transition-delay:.3s}.mobile-nav.active .mobile-link:nth-child(6){transition-delay:.35s}.mobile-nav.active .mobile-divider:nth-child(7){transition-delay:.4s}.mobile-nav.active .mobile-link:nth-child(8){transition-delay:.45s}.mobile-nav.active .mobile-toggle{transition-delay:.5s}.mobile-link.sub{font-size:1.2rem;color:var(--muted);font-weight:500;margin-top:-4px;border-left:2px solid var(--primary);padding-left:16px;margin-left:4px}.mobile-divider{width:100%;background:none;margin:24px 0 12px;border-bottom:1px solid rgba(255,255,255,.1);padding-bottom:4px;font-size:.75rem;color:var(--primary);text-transform:uppercase;letter-spacing:.2em;font-weight:700;opacity:0;transform:translateY(20px);text-align:left}.mobile-link:hover{color:var(--primary);text-shadow:var(--glow);padding-left:10px}.mobile-toggle{align-self:flex-start;margin-top:32px;display:flex!important;align-items:center;gap:16px}.perf-toggle-container{display:flex;align-items:center}.perf-label{font-size:.9rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--fg);display:block!important;opacity:1!important}.mobile-toggle{display:none!important}@media (max-width: 1250px){.nav-menu{display:none}.desktop-only{display:none!important}.perf-toggle-container.mobile-toggle{display:flex!important;margin-top:16px;transform:scale(1.2)}.hamburger{display:block}}.curtain{position:fixed;inset:0;background:linear-gradient(135deg,#0a1420,#0d1f2d);z-index:9999;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:opacity 1s ease-out;display:none!important}.curtain-label{font-family:var(--font-pixel);color:#67fdfb;font-size:1rem;letter-spacing:.2em;text-transform:uppercase;margin:0 0 24px 24px}.loader{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;background:#000;z-index:10000}.loader.hidden{display:none}.loader-box{background:#05070df2;border:2px solid var(--border);padding:24px 28px;border-radius:0;min-width:300px;text-align:center;box-shadow:var(--shadow-pixel)}.loader-title{font-family:var(--font-pixel);letter-spacing:.15em;text-transform:uppercase;font-size:1rem;opacity:.8;margin-bottom:12px;color:#67fdfb}.bar{width:100%;height:8px;background:#67fdfb1a;border-radius:0;border:1px solid var(--border);overflow:hidden;position:relative}.bar-progress{height:100%;width:0%;background:#67fdfb;border-radius:0;transition:width .1s steps(10);animation:none}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.bar-text{margin-top:16px;font-family:var(--font-pixel);font-size:1rem;font-weight:400;color:#67fdfb;text-shadow:2px 2px 0 rgba(0,0,0,.5);letter-spacing:.05em;text-align:right}.topbar{position:fixed;top:24px;left:24px;z-index:20;animation:fadeIn 1.8s ease .5s forwards;opacity:0}.hero{position:relative;z-index:10;min-height:100svh;display:flex;flex-direction:column;justify-content:flex-end;gap:28px;padding:24px 24px 8svh 40px;max-width:1100px;animation:slideUp 1.8s ease .6s forwards;opacity:0}.hero h1{font-size:3.5rem;line-height:1.25;margin:0;font-weight:900;text-shadow:var(--glow);max-width:20ch}.hero p{opacity:.9;max-width:60ch;margin:0;font-size:1.1rem;line-height:1.6}.soft{background:linear-gradient(90deg,#67fdfb,#91e7fd,#bdfd91,#67fdfb);background-size:300% 100%;background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent;animation:shine 4s ease-in-out infinite alternate;will-change:background-position;text-shadow:0 0 5px rgba(103,253,251,.6),0 0 15px rgba(145,231,253,.4),0 0 25px rgba(189,253,145,.2)}.scroll-hint{position:absolute;left:50%;transform:translate(-50%);bottom:24px;z-index:10;opacity:.7;font-size:13px;will-change:transform,opacity;animation:pulse 2.4s infinite ease-in-out}.section{position:relative;z-index:10;max-width:1200px;width:90%;margin-inline:auto;margin-bottom:0;padding:60px 40px;background:#0000001a;border-radius:0;border:1px solid var(--border);border-bottom:none;content-visibility:auto;contain-intrinsic-size:0 800px}.section:last-of-type{border-bottom:1px solid var(--border)}.section h2{font-size:clamp(28px,4.5vw,44px);margin:0 0 30px;text-shadow:var(--glow);border-bottom:1px solid var(--border);padding-bottom:15px;display:inline-block}.section p{opacity:.92;max-width:72ch}.contact-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px;margin-top:36px}.contact-card{display:flex;align-items:center;gap:16px;padding:20px 24px;background:#05070dcc;border:2px solid var(--border);border-radius:0;text-decoration:none;position:relative;overflow:hidden;transition:transform .1s steps(2),box-shadow .1s steps(2),border-color .1s steps(2)}.contact-card:before{display:none}.contact-card:hover{transform:translate(-2px,-2px);border-color:#67fdfb;box-shadow:var(--shadow-pixel-hover);background:#0a1020e6}.contact-card:hover:before{opacity:0}.contact-card--wide{grid-column:span 2}.contact-icon{width:44px;height:44px;min-width:44px;display:flex;align-items:center;justify-content:center;background:var(--accent-bg, rgba(255, 255, 255, .06));border:2px solid var(--border);border-radius:0;color:var(--accent, #67fdfb);transition:none}.contact-icon svg{width:22px;height:22px;fill:currentColor}.contact-card:hover .contact-icon{background:#67fdfb1f;border-color:#67fdfb}.contact-info{flex-grow:1}.contact-label{display:block;font-family:var(--font-pixel);font-size:.9rem;font-weight:400;color:#fff6;text-transform:uppercase;letter-spacing:.12em;margin-bottom:4px}.contact-value{display:block;font-size:1.1rem;color:#fff;font-weight:400;letter-spacing:.01em}.contact-arrow{width:22px;height:22px;color:var(--accent, #67fdfb);opacity:.3;flex-shrink:0;transition:none}.contact-card:hover .contact-arrow{transform:translate(4px);opacity:1;filter:none}@media (max-width: 768px){.contact-grid{grid-template-columns:1fr}.contact-card--wide{grid-column:span 1}}.footer{position:relative;z-index:10;padding:80px 24px;border-top:2px dashed rgba(103,253,251,.2);opacity:.75;text-align:center;font-family:var(--font-body);font-size:1rem;letter-spacing:.1em}#projet-personnel{background:linear-gradient(to bottom,#0000,#0000001a 20% 100%);border-top:none}.projet-personnel{display:flex;flex-direction:column;gap:60px;max-width:1200px;margin-inline:auto}.pp-intro{text-align:center}.pp-lead{font-size:1.1rem;opacity:.9;max-width:70ch;margin-inline:auto}.pp-trailer{display:flex;justify-content:center;align-items:center}.pp-trailer-box{width:100%;max-width:800px;aspect-ratio:16/9;background:var(--glass);border:1px dashed var(--border);border-radius:20px;display:flex;align-items:center;justify-content:center;color:var(--muted);font-size:1rem;text-transform:uppercase;letter-spacing:.1em;box-shadow:0 0 25px #ffffff0a;transition:all .3s ease}.pp-trailer-box:hover{border-color:var(--accent);transform:scale(1.01);box-shadow:0 0 30px #91e7fd4d}.pp-gallery{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:24px;margin-top:16px}.pp-image{border:1px solid var(--border);background:var(--glass);border-radius:20px;aspect-ratio:16/10;display:flex;align-items:center;justify-content:center;opacity:.8;font-size:.9rem;color:var(--muted);transition:all .3s ease;box-shadow:0 0 15px #ffffff0d}.pp-image:hover{transform:translateY(-4px) scale(1.02);border-color:var(--accent);box-shadow:0 0 30px #67fdfb40}.pp-content{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:40px}.pp-content h3{font-size:1.2rem;margin-bottom:8px;color:var(--accent);text-shadow:var(--glow)}.pp-content p,.pp-content ul{opacity:.9;line-height:1.6}.pp-content ul{padding-left:20px}.pp-conclusion{text-align:center;margin-top:40px}.pp-conclusion p{opacity:.9;max-width:65ch;margin:0 auto 16px}.apprentissage-parcours{margin-top:40px}.apprentissage-subtitle{font-size:1.5rem;font-weight:900;color:#67fdfb;text-transform:uppercase;letter-spacing:.1em;display:flex;align-items:center;gap:12px;margin-bottom:12px;text-shadow:0 0 20px rgba(103,253,251,.3)}.apprentissage-parcours-desc{font-size:1rem;color:var(--muted);margin-bottom:32px}.apprentissage-separator{display:flex;align-items:center;gap:20px;margin:56px 0 8px}.apprentissage-separator-line{flex:1;height:1px;background:linear-gradient(90deg,transparent,rgba(255,255,255,.15),transparent)}.apprentissage-separator-label{font-size:.8rem;font-weight:700;text-transform:uppercase;letter-spacing:.15em;color:#ffffff59;white-space:nowrap}.but2-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:28px;margin-top:32px}@media (max-width: 900px){.but2-grid{grid-template-columns:1fr}}.but2-card{background:#ffffff08;border:1px solid rgba(255,255,255,.08);border-radius:20px;padding:0;overflow:hidden;transition:transform .4s cubic-bezier(.16,1,.3,1),border-color .4s ease,box-shadow .4s ease;display:flex;flex-direction:column;position:relative}.but2-card:before{content:"";position:absolute;inset:0;border-radius:20px;opacity:0;transition:opacity .4s ease;pointer-events:none;z-index:0}.but2-card:hover{transform:translateY(-6px)}.but2-card:hover:before{opacity:1}.but2-card.realiser:hover{border-color:#ff6b6b80;box-shadow:0 12px 40px #ff6b6b26}.but2-card.realiser:before{background:radial-gradient(ellipse at top,rgba(255,107,107,.06),transparent 70%)}.but2-card.optimiser:hover{border-color:#fbbf2480;box-shadow:0 12px 40px #fbbf2426}.but2-card.optimiser:before{background:radial-gradient(ellipse at top,rgba(251,191,36,.06),transparent 70%)}.but2-card.administrer:hover{border-color:#fca5a580;box-shadow:0 12px 40px #fca5a526}.but2-card.administrer:before{background:radial-gradient(ellipse at top,rgba(252,165,165,.06),transparent 70%)}.but2-card.gerer:hover{border-color:#bdfd9180;box-shadow:0 12px 40px #bdfd9126}.but2-card.gerer:before{background:radial-gradient(ellipse at top,rgba(189,253,145,.06),transparent 70%)}.but2-card.conduire:hover{border-color:#67fdfb80;box-shadow:0 12px 40px #67fdfb26}.but2-card.conduire:before{background:radial-gradient(ellipse at top,rgba(103,253,251,.06),transparent 70%)}.but2-card.collaborer:hover{border-color:#a5b4fc80;box-shadow:0 12px 40px #a5b4fc26}.but2-card.collaborer:before{background:radial-gradient(ellipse at top,rgba(165,180,252,.06),transparent 70%)}.but2-card.parcours-card:hover{border-color:#67fdfb80;box-shadow:0 12px 40px #67fdfb1f}.but2-card.parcours-card:before{background:radial-gradient(ellipse at top,rgba(103,253,251,.05),transparent 70%)}.but2-header{padding:20px 24px;background:#ffffff08;font-weight:800;font-size:1.15rem;letter-spacing:.08em;text-transform:uppercase;border-bottom:1px solid rgba(255,255,255,.06);display:flex;align-items:center;gap:14px;line-height:1;position:relative;z-index:1}.but2-header svg{display:block;flex-shrink:0;opacity:.9}.but2-header span{display:block}.but2-card.realiser .but2-header{color:#ff6b6b;border-bottom-color:#ff6b6b26;background:#ff6b6b0a}.but2-card.optimiser .but2-header{color:#fbbf24;border-bottom-color:#fbbf2426;background:#fbbf240a}.but2-card.administrer .but2-header{color:#fca5a5;border-bottom-color:#fca5a526;background:#fca5a50a}.but2-card.gerer .but2-header{color:#bdfd91;border-bottom-color:#bdfd9126;background:#bdfd910a}.but2-card.conduire .but2-header{color:#67fdfb;border-bottom-color:#67fdfb26;background:#67fdfb0a}.but2-card.collaborer .but2-header{color:#a5b4fc;border-bottom-color:#a5b4fc26;background:#a5b4fc0a}.but2-body{padding:28px 24px;flex-grow:1;position:relative;z-index:1}.but2-list{list-style:none;padding:0;margin:0}.but2-list li{margin-bottom:12px;font-size:.92rem;color:#ffffffb3;display:flex;gap:10px;line-height:1.55;transition:color .2s ease,transform .2s ease}.but2-list li:hover{color:#fff;transform:translate(4px)}.but2-list li:before{content:"▹";color:inherit;font-weight:700;opacity:.5;flex-shrink:0}.but2-level{display:inline-flex;align-items:center;gap:6px;font-size:.68rem;font-weight:700;text-transform:uppercase;letter-spacing:.15em;background:#ffffff0a;border:1px solid rgba(255,255,255,.1);padding:5px 14px;border-radius:20px;margin-bottom:20px;color:#ffffff73}.but2-level svg{opacity:.6}.but2-justification{font-size:.9rem;color:#ffffffbf;font-style:italic;margin-top:20px;margin-bottom:0;padding:16px 18px;background:#ffffff05;border-left:3px solid rgba(255,255,255,.12);border-radius:0 12px 12px 0;line-height:1.6}.but2-objectives-text{font-size:.95rem;color:#ffffffbf;line-height:1.65;margin:0}.but2-objectives-text strong{color:#fff}.but2-track-container{display:flex;align-items:center;gap:20px;margin-top:24px}.but2-track-wrapper{flex-grow:1}.but2-track-labels{display:flex;margin-top:6px;font-size:.72rem;font-weight:600;color:#ffffff80}.but2-track-label{text-align:center;position:relative}.but2-track-label:before{content:"";position:absolute;top:-6px;left:50%;width:1px;height:4px;background:#ffffff26}.but2-total{font-size:1.7rem;font-weight:900;text-shadow:0 0 12px rgba(255,255,255,.08);min-width:56px;text-align:right;line-height:1}@media (max-width: 768px){.pp-gallery{grid-template-columns:1fr}}@keyframes shine{0%{background-position:0% 0%}50%{background-position:100% 0%}to{background-position:0% 0%}}@keyframes buttonShine{0%{background-position:0% 0%;box-shadow:0 0 20px #67fdfb40,0 0 40px #bdfd9126}50%{background-position:100% 0%;box-shadow:0 0 35px #67fdfb80,0 0 70px #bdfd914d}to{background-position:0% 0%;box-shadow:0 0 25px #67fdfb4d,0 0 50px #bdfd9133}}@keyframes titleGradientMove{0%{background-position:0% 0%}to{background-position:100% 0%}}@keyframes titleHue{}@keyframes titlePulse{0%,to{transform:scale(1) translateZ(0)}50%{transform:scale(1.03) translateZ(0)}}@keyframes shineSweep{0%{transform:translate(-150%) skew(-30deg);opacity:.2}50%{transform:translate(150%) skew(-30deg);opacity:.6}to{transform:translate(300%) skew(-30deg);opacity:.2}}@keyframes lineGlow{0%{opacity:.4;width:40%}50%{opacity:1;width:80%}to{opacity:.6;width:60%}}@keyframes curtainUp{0%{transform:translateY(0)}to{transform:translateY(-100%)}}@keyframes fadeIn{to{opacity:1}}@keyframes slideUp{0%{transform:translateY(40px);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes pulse{0%,to{opacity:.6;transform:translateY(0) translateZ(0)}50%{opacity:1;transform:translateY(-4px) translateZ(0)}}@media (max-width: 768px){.hero{padding:16px 16px 8svh 20px;gap:16px}.hero h1{font-size:clamp(28px,8vw,48px)}.hero p{font-size:.95rem;line-height:1.5}.cta{padding:12px 18px;font-size:.9rem}.section{width:100%;padding:40px 20px;border-left:none;border-right:none}.section h2{font-size:clamp(22px,6vw,32px)}.grid{grid-template-columns:1fr;gap:16px}.card{min-height:120px}.topbar{top:12px;left:12px}}@media (min-width: 1600px){.hero h1{font-size:clamp(60px,5vw,100px)}.hero p{font-size:1.25rem}.section h2{font-size:clamp(40px,3vw,64px)}}.pp-separator{width:100%;height:1px;background:linear-gradient(90deg,transparent,var(--border),transparent);margin:80px 0 50px;position:relative;opacity:.8}.pp-separator:after{content:"///";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background:var(--bg);padding:0 12px;color:var(--muted);font-size:10px;letter-spacing:4px;font-weight:700}.pp-subtitle{font-size:clamp(1.4rem,2vw,1.8rem);margin:0 0 8px;text-transform:uppercase;letter-spacing:1px;font-weight:800;background:linear-gradient(60deg,#67fdfb,#91e7fd,#bdfd91,#67fdfb,#91e7fd,#bdfd91);background-size:300% 100%;-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;animation:titleGradientMove 10s linear infinite;border-left:3px solid var(--accent);padding-left:16px}.pp-desc-sm{margin:0 0 40px;color:var(--muted);font-size:.95rem;padding-left:20px;max-width:600px}.pp-grid-bento{display:grid;grid-template-columns:repeat(8,1fr);grid-auto-rows:auto;gap:20px}@media (max-width: 1024px){.pp-grid-bento{grid-template-columns:1fr!important;gap:48px}.bento-item,.bento-item.large-top,.bento-item.small-middle,.bento-item.full-bottom,.bento-item.full-mid,.bento-item.full{grid-column:span 1!important;width:100%;height:auto!important;background:transparent!important;border:none!important;box-shadow:none!important;display:flex;flex-direction:column!important;align-items:flex-start}.bento-item .bento-overlay{position:relative!important;inset:auto!important;background:none!important;padding:0 0 16px 4px!important;width:100%;pointer-events:auto}.bento-item h4{font-size:1.4rem;color:var(--primary);text-shadow:var(--glow)}.bento-item .bento-image{position:relative!important;width:100%;height:auto!important;aspect-ratio:1/1;object-fit:cover;border-radius:16px;border:1px solid var(--border);box-shadow:0 4px 20px #0000004d}}.bento-item{position:relative;background:#ffffff08;border:1px solid rgba(255,255,255,.08);border-radius:20px;overflow:hidden;transition:transform .4s cubic-bezier(.16,1,.3,1),border-color .4s ease,box-shadow .4s ease;display:flex;flex-direction:column;justify-content:center;align-items:center;--zoom-hover: 1.05;--scale-base: 1.4;cursor:pointer}.bento-item:hover{transform:translateY(-5px);border-color:#67fdfb4d;box-shadow:0 12px 40px #0000004d,0 0 20px #67fdfb14;z-index:5}.bento-item:hover .bento-image{will-change:transform}.bento-item.large-top{grid-column:span 4;height:550px}.bento-item.small-middle{grid-column:span 2;height:280px}.bento-item.full-bottom,.bento-item.full-mid{grid-column:span 8;height:810px}.bento-item.full{grid-column:span 8;height:840px}.bento-item.terminal{background:#0006;align-items:stretch;justify-content:flex-start}.bento-overlay{position:absolute;bottom:0;left:0;width:100%;padding:20px;background:linear-gradient(to top,rgba(5,7,13,.9),transparent);z-index:10;pointer-events:none;display:flex;flex-direction:column;align-items:flex-start}.bento-item h4{margin:0;font-size:1.1rem;font-weight:700;color:var(--fg);text-shadow:0 2px 10px rgba(0,0,0,.5)}.bento-image{position:absolute;top:0;left:0;width:100%;height:100%;object-fit:contain;object-position:center;background-color:#000;z-index:0;transform:scale(var(--scale-base)) translateZ(0);transition:transform .6s cubic-bezier(.25,.8,.25,1)}.bento-item:hover .bento-image{transform:scale(calc(var(--scale-base) * var(--zoom-hover)))}@media (max-width: 1024px){.pp-grid-bento{grid-template-columns:repeat(4,1fr)}.bento-item.large-top{grid-column:span 2}.bento-item.small-middle{grid-column:span 1}.bento-item.full-bottom{grid-column:span 4;height:400px}}@media (max-width: 600px){.pp-grid-bento{display:flex;flex-direction:column;gap:16px}.bento-item.large-top,.bento-item.small-middle,.bento-item.full-bottom{width:100%;height:250px}.pp-separator{margin:60px 0 40px}.pp-conclusion{display:flex;flex-direction:column;align-items:center;text-align:center}.cta{width:auto!important;min-width:200px;justify-content:center;margin-left:auto;margin-right:auto}}.cta-secondary{display:block;margin:16px auto 0;background:linear-gradient(135deg,#7bffa3,#67fdfb);box-shadow:0 4px 15px #7bffa34d;width:fit-content}.pp-conclusion{text-align:center}.cta-secondary:hover{transform:translateY(-2px) scale(1.02);box-shadow:0 6px 25px #7bffa380}.devlog-main-title{font-size:clamp(3rem,7vw,6rem);font-weight:900;text-transform:uppercase;letter-spacing:.05em;line-height:1.1;background:linear-gradient(135deg,#67fdfb,#7bffa3,#ffdf59,#ff8fe7,#67fdfb);background-size:300% 100%;-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;will-change:transform;transform:translateZ(0);animation:titleGradientMove 10s linear infinite,titlePulse 6s ease-in-out infinite alternate}.devlog-section{margin-bottom:0;padding:80px 40px;min-height:auto}.devlog-section:first-of-type{padding-top:120px}.devlog-week-title{font-size:clamp(2rem,5vw,3.5rem);font-weight:800;background:linear-gradient(135deg,#67fdfb,#7bffa3);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;margin-bottom:8px}.devlog-date{font-size:.95rem;color:#fff9;margin-bottom:32px;font-style:italic}.devlog-content{margin-top:32px}.devlog-content h3{font-size:1.5rem;font-weight:700;color:#67fdfb;margin:32px 0 16px}.devlog-content p{font-size:1.05rem;line-height:1.8;margin-bottom:24px;color:#ffffffd9}.devlog-gallery{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:24px;margin:32px 0}.devlog-image-item{position:relative}.devlog-image-placeholder{width:100%;aspect-ratio:16/9;background:linear-gradient(135deg,#67fdfb1a,#7bffa31a);border-radius:12px;border:1px solid rgba(103,253,251,.2);display:flex;align-items:center;justify-content:center;font-size:1.1rem;font-weight:600;color:#67fdfbb3;transition:all .3s ease;position:relative;overflow:hidden}.image-caption{position:absolute;bottom:16px;left:20px;right:20px;padding:0;background:none;color:#fff;font-size:.95rem;font-weight:600;font-style:normal;text-align:left;margin:0;text-shadow:2px 2px 8px rgba(0,0,0,.8);transition:transform .3s ease}.badge{background:linear-gradient(135deg,#67fdfb26,#7bffa326);color:#fff;padding:8px 18px;border-radius:50px;font-size:.85rem;font-weight:600;letter-spacing:.08em;border:1px solid rgba(103,253,251,.3);transition:all .3s ease}.badge-back{background:linear-gradient(135deg,#67fdfb26,#7bffa326);color:#fff;padding:10px 20px;border-radius:50px;font-size:.9rem;font-weight:600;text-decoration:none;border:1px solid rgba(103,253,251,.3);transition:all .3s ease;display:inline-flex;align-items:center;gap:8px}.badge-back:hover{background:linear-gradient(135deg,#67fdfb40,#7bffa340);border-color:#67fdfb99;transform:translateY(-2px);box-shadow:0 4px 15px #67fdfb4d}.badge-back span{font-size:1.2rem}.devlog-image-placeholder:hover{border-color:#67fdfb80;background:linear-gradient(135deg,#67fdfb26,#7bffa326);transform:translateY(-4px);box-shadow:0 8px 30px #67fdfb33}.devlog-image-item{position:relative;overflow:hidden;border-radius:12px}@media (max-width: 768px){.cta-secondary{margin-left:0;margin-top:12px;display:block}.devlog-section{padding:60px 24px}.devlog-gallery{grid-template-columns:1fr;gap:20px}.devlog-content h3{font-size:1.3rem}.devlog-content p{font-size:1rem}}.lightbox{position:fixed;inset:0;z-index:2000;background:#000000d9;display:flex;align-items:center;justify-content:center;opacity:0;pointer-events:none;transition:opacity .3s ease;cursor:zoom-out}.lightbox.active{opacity:1;pointer-events:auto}.lightbox-content{position:relative;max-width:90%;max-height:90%;display:flex;justify-content:center;align-items:center}#lightbox-img{width:100%;max-width:1000px;max-height:85vh;object-fit:contain;border-radius:0;border:2px solid var(--border);box-shadow:0 0 50px #000c,0 0 100px #67fdfb26;transform:scale(.9);transition:transform .3s steps(3)}.lightbox.active #lightbox-img{transform:scale(1)}.lightbox-close{position:absolute;top:24px;right:24px;color:var(--primary);font-family:var(--font-pixel);font-size:1.5rem;font-weight:700;cursor:pointer;background:#05070df2;border:2px solid var(--primary);border-radius:0;width:44px;height:44px;display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow-pixel);z-index:2100;transition:transform .1s steps(2);line-height:1}.lightbox-close:hover{transform:translate(-2px,-2px);box-shadow:var(--shadow-pixel-hover);background:var(--primary);color:#000}.project-modal{position:fixed;inset:0;z-index:2000;display:flex;align-items:center;justify-content:center;opacity:0;pointer-events:none;transition:opacity .1s steps(2)}.project-modal.active{opacity:1;pointer-events:auto}.project-modal-backdrop{position:absolute;inset:0;background:#05070dcc}.project-modal-container{position:relative;width:90%;max-width:800px;max-height:85vh;background:#05070df2;border:2px solid var(--border);border-radius:0;box-shadow:var(--shadow-pixel);display:flex;flex-direction:column;overflow:hidden;opacity:0;transform:translateY(20px);transition:transform .1s steps(3),opacity .1s steps(3)}.project-modal.active .project-modal-container{opacity:1;transform:translateY(0)}.project-modal-close{position:absolute;top:16px;right:20px;font-family:var(--font-pixel);font-size:1.3rem;font-weight:700;color:var(--primary);cursor:pointer;z-index:10;line-height:1;background:#05070df2;border:2px solid var(--primary);border-radius:0;width:38px;height:38px;display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow-pixel);transition:transform .1s steps(2)}.project-modal-close:hover{color:#000;background:var(--primary);border-color:var(--primary);transform:translate(-2px,-2px);box-shadow:var(--shadow-pixel-hover)}.project-modal-content{padding:40px;overflow-y:auto;-webkit-overflow-scrolling:touch;scroll-behavior:smooth;scrollbar-width:thin;scrollbar-color:var(--border) transparent}.project-modal-content::-webkit-scrollbar{width:6px}.project-modal-content::-webkit-scrollbar-track{background:transparent}.project-modal-content::-webkit-scrollbar-thumb{background-color:var(--border);border-radius:3px}#modal-title{margin:0 0 8px;font-family:var(--font-pixel);font-size:1rem;color:#fff;text-shadow:2px 2px 0 rgba(0,0,0,.5)}.modal-meta{margin-bottom:24px;padding-bottom:16px;border-bottom:2px dashed rgba(103,253,251,.2)}.modal-tags{font-family:var(--font-pixel);font-size:.9rem;color:#67fdfb;text-transform:uppercase;letter-spacing:.05em}.modal-body p{line-height:1.7;color:var(--muted);font-family:var(--font-body);font-size:1.15rem;margin-bottom:16px}.modal-body h4{color:var(--fg);font-family:var(--font-pixel);margin:24px 0 12px;font-size:1.2rem}.modal-img{width:100%;border-radius:0;margin:24px 0;border:2px solid var(--border);box-shadow:var(--shadow-pixel)}@media (max-width: 768px){.project-modal-container{width:100%;height:100%;max-height:100%;border-radius:0;border:none}.project-modal-close{top:20px;right:20px;background:#00000080;width:40px;height:40px;display:flex;align-items:center;justify-content:center;border-radius:50%}.lightbox-close{top:20px;right:20px;font-size:2.5rem;background:#00000080;width:48px;height:48px;display:flex;align-items:center;justify-content:center;border-radius:50%}}.perf-toggle-container{display:flex;align-items:center;gap:10px;margin-right:24px}.perf-switch{position:relative;display:inline-block;width:48px;height:24px}.perf-switch input{opacity:0;width:0;height:0}.slider{position:absolute;cursor:pointer;inset:0;background-color:#05070de6;transition:transform .1s steps(2),background-color .1s steps(2);border:2px solid var(--border);box-shadow:2px 2px #00000080;border-radius:0!important}.slider:before{position:absolute;content:"";height:14px;width:14px;left:3px;bottom:3px;background-color:var(--muted);transition:transform .1s steps(2),background-color .1s steps(2);border-radius:0!important}input:checked+.slider{background-color:#67fdfb33;border-color:var(--primary);box-shadow:2px 2px #67fdfb66}input:checked+.slider:before{transform:translate(22px);background-color:var(--primary);box-shadow:none}.slider.round{border-radius:0!important}.perf-label{font-family:var(--font-pixel);font-size:.75rem;text-transform:uppercase;letter-spacing:.05em;color:var(--primary);font-weight:700;width:75px}@media (max-width: 1450px){.perf-toggle-container{margin-right:16px}.perf-label{display:none}}@media (max-width: 1024px){.pp-conclusion{display:flex!important;flex-direction:column!important;align-items:center!important;justify-content:center!important;text-align:center!important}.pp-conclusion .cta,.pp-conclusion .cta-secondary,.cta,.cta-secondary{align-self:center!important;margin-left:0!important;margin-right:0!important;margin-top:16px!important;width:fit-content!important;min-width:200px;display:flex!important;justify-content:center!important;text-align:center!important}#main-illustration-card .bento-image{object-fit:contain!important;background:#000}}.feature-grid{display:flex;flex-direction:column;gap:32px;margin:32px 0}.feature-row{display:flex;align-items:center;gap:30px;background:#ffffff05;border:1px solid rgba(255,255,255,.05);padding:20px;border-radius:16px;transition:transform .3s ease,border-color .3s ease}.feature-row:hover{border-color:#ffffff26;background:#ffffff0a}.feature-row:nth-child(2n){flex-direction:row-reverse}.feature-info{flex:1;min-width:280px}.feature-info h4{margin-top:0;margin-bottom:12px;font-size:1.1rem;color:#fff;border-bottom:2px solid;display:inline-block;padding-bottom:4px}.feature-info p{font-size:.95rem;line-height:1.6;color:#ffffffd9;margin:0}.feature-img-container{flex:1.3;border-radius:12px;overflow:hidden;box-shadow:0 10px 30px #0000004d;border:1px solid rgba(255,255,255,.1);cursor:zoom-in;position:relative;transition:transform .3s ease}.feature-img-container:hover{transform:scale(1.02);z-index:10}.feature-img-container img{width:100%;height:auto;display:block}.feature-row.full-width{flex-direction:column!important;align-items:stretch}.feature-row.full-width .feature-img-container{width:100%;flex:none;margin-top:16px}@media (max-width: 850px){.feature-row,.feature-row:nth-child(2n){flex-direction:column;align-items:stretch}.feature-info{min-width:auto}.feature-img-container{width:100%;margin-top:16px}}.sprint-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:20px;margin:30px 0}.sprint-card{background:#ffffff08;border:1px solid rgba(255,255,255,.1);border-radius:12px;padding:20px;position:relative;transition:transform .2s ease,border-color .2s}.sprint-card:hover{border-color:#67fdfb4d;background:#ffffff0d;transform:translateY(-2px)}.sprint-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px;border-bottom:1px solid rgba(255,255,255,.1);padding-bottom:8px}.sprint-title{font-weight:700;color:var(--primary);font-size:1rem;margin:0}.sprint-date{font-size:.8rem;color:var(--muted);font-family:monospace}.sprint-details{font-size:.85rem;line-height:1.5;color:#fffc;margin:0;padding-left:16px}.sprint-final{background:#67fdfb1a;border:1px solid var(--primary)}.ctf-cats{display:flex;flex-wrap:wrap;gap:10px;margin-top:16px}.ctf-cat-tag{background:#ffffff0d;border:1px solid rgba(255,255,255,.1);padding:6px 12px;border-radius:20px;font-size:.8rem;color:#a5b4fc}.project-section{margin-bottom:48px;position:relative}.section-header{display:flex;align-items:center;gap:12px;margin-bottom:24px;padding-bottom:12px;border-bottom:1px solid rgba(255,255,255,.1);color:#fff;font-size:1.3rem;letter-spacing:.02em}.section-header svg{width:24px;height:24px;opacity:.9}.tech-stack-row{display:flex;flex-wrap:wrap;gap:12px;margin-bottom:24px}.tech-badge{display:flex;align-items:center;gap:8px;background:#ffffff0d;border:1px solid rgba(255,255,255,.1);padding:8px 16px;border-radius:8px;font-size:.9rem;color:#fff;transition:all .2s}.tech-badge:hover{background:#67fdfb1a;border-color:#67fdfb4d;transform:translateY(-2px)}.contribution-stats{display:grid;gap:16px;margin-top:20px}.stat-row{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}.stat-label{font-size:.9rem;color:#fffc}.stat-value{font-weight:700;color:#67fdfb;font-family:monospace}.progress-bar{height:6px;background:#ffffff1a;border-radius:3px;overflow:hidden}.progress-fill{height:100%;background:linear-gradient(90deg,#67fdfb,#1dd1a1);border-radius:3px}.debug-terminal{background:#1e1e1e;border:1px solid #333;border-radius:8px;padding:16px;font-family:Consolas,Monaco,monospace;font-size:.85rem;color:#d4d4d4;max-height:400px;overflow-y:auto}.debug-entry{margin-bottom:16px;padding-bottom:16px;border-bottom:1px solid #333}.debug-entry:last-child{border-bottom:none;margin-bottom:0}.debug-code{color:#ff6b6b;font-weight:700}.debug-msg{color:#9cdcfe;margin-bottom:4px;display:block}.debug-sol{color:#6a9955;display:block;padding-left:16px;border-left:2px solid #6a9955;margin-top:4px}.tech-stack{display:flex;flex-wrap:wrap;gap:12px;margin:20px 0}.tech-badge{display:inline-flex;align-items:center;gap:8px;background:#ffffff0d;border:1px solid rgba(255,255,255,.15);padding:8px 16px;border-radius:8px;font-size:.85rem;font-weight:600;color:#ffffffe6;transition:all .2s ease}.tech-badge:hover{background:#ffffff14;border-color:var(--primary);transform:translateY(-2px)}.tech-badge svg{width:18px;height:18px;opacity:.8}.contribution-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px;margin-top:20px}.contribution-item{background:#ffffff08;border-left:3px solid var(--primary);padding:16px;border-radius:0 8px 8px 0}.contribution-label{font-size:.8rem;color:#fff9;text-transform:uppercase;letter-spacing:.05em;margin-bottom:8px}.contribution-value{font-size:1.8rem;font-weight:700;color:var(--primary);line-height:1}.contribution-desc{font-size:.85rem;color:#ffffffb3;margin-top:8px}.obstacles-list{display:grid;gap:12px;margin-top:16px}.obstacle-item{background:#ff6b6b0d;border-left:3px solid #ff6b6b;padding:14px 18px;border-radius:0 8px 8px 0;display:grid;gap:6px}.obstacle-title{font-weight:600;color:#ff6b6b;font-size:.9rem}.obstacle-desc{font-size:.85rem;color:#ffffffb3;line-height:1.5}.obstacle-solution{font-size:.85rem;color:#67fdfbe6;font-style:italic}.obstacle-solution:before{content:"→ ";font-weight:700}.accordion-container{border:1px solid rgba(255,255,255,.1);border-radius:8px;overflow:hidden;background:#ffffff05}.accordion-item{border-bottom:1px solid rgba(255,255,255,.05)}.accordion-item:last-child{border-bottom:none}.accordion-header{display:flex;justify-content:space-between;align-items:center;padding:14px 18px;cursor:pointer;background:#ff6b6b0d;border-left:3px solid #ff6b6b;transition:all .2s ease;-webkit-user-select:none;user-select:none}.accordion-header:hover{background:#ff6b6b14}.accordion-header.active{background:#ff6b6b1a}.accordion-title{font-weight:600;color:#ff6b6b;font-size:.9rem;display:flex;align-items:center;gap:8px}.accordion-toggle{color:#ffffff80;font-size:1.2rem;transition:transform .2s ease}.accordion-header.active .accordion-toggle{transform:rotate(180deg)}.accordion-content{max-height:0;overflow:hidden;transition:max-height .3s ease;background:#0003}.accordion-content.active{max-height:500px}.accordion-body{padding:16px 18px;display:grid;gap:8px}.accordion-desc{font-size:.85rem;color:#ffffffb3;line-height:1.5}.accordion-solution{font-size:.85rem;color:#67fdfbe6;font-style:italic;padding-top:8px;border-top:1px solid rgba(255,255,255,.05)}.accordion-solution:before{content:"→ ";font-weight:700}.game-cta-container{display:flex;gap:16px;justify-content:center;align-items:center;flex-wrap:wrap;margin-top:28px}.steam-btn{background:linear-gradient(135deg,#171a21,#1b2838)!important;color:#c5c3c0!important;border:1px solid rgba(102,192,244,.3)!important;box-shadow:0 0 20px #66c0f426!important;font-family:inherit;font-weight:700!important;letter-spacing:.5px;padding:12px 24px!important;transition:all .3s cubic-bezier(.25,.8,.25,1)!important;overflow:hidden;position:relative}.steam-btn:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(102,192,244,.2),transparent);transition:.5s}.steam-btn:hover:before{left:100%}.steam-btn:hover{background:linear-gradient(135deg,#1b2838,#2a475e)!important;color:#fff!important;border-color:#66c0f4!important;box-shadow:0 0 35px #66c0f466,inset 0 0 10px #66c0f433!important;transform:translateY(-3px) scale(1.02)}.steam-btn svg{fill:#c5c3c0;transition:fill .3s ease,filter .3s ease;filter:drop-shadow(0 0 2px rgba(0,0,0,.5))}.steam-btn:hover svg{fill:#fff;filter:drop-shadow(0 0 8px rgba(102,192,244,.8))}.unity-btn{background:#ffffff08!important;color:#ffffffb3!important;border:1px solid rgba(255,255,255,.1)!important;box-shadow:none!important;font-weight:500!important}.unity-btn:hover{background:#ffffff1a!important;color:#fff!important;border-color:#fff6!important;transform:translateY(-2px);box-shadow:0 5px 20px #0003!important}.progress-link-text{font-size:.9rem;color:#ffffff80;text-decoration:none;padding:8px 16px;border-radius:8px;transition:all .2s ease;display:inline-flex;align-items:center;gap:6px}.progress-link-text:hover{color:#fff;background:#ffffff0d}.steam-btn{background:linear-gradient(135deg,#2a475e,#66c0f4)!important;color:#fff!important;border:1px solid rgba(102,192,244,.6)!important;box-shadow:0 0 25px #66c0f466,inset 0 0 15px #ffffff1a!important;font-weight:700!important;text-shadow:0 1px 2px rgba(0,0,0,.3)!important}.steam-btn svg{fill:#fff!important;filter:drop-shadow(0 0 4px rgba(255,255,255,.6))!important}.steam-btn:hover{background:linear-gradient(135deg,#66c0f4,#1b2838)!important;box-shadow:0 0 40px #66c0f499,inset 0 0 20px #fff3!important;transform:translateY(-3px) scale(1.05)!important;border-color:#fff!important}.unity-btn{background:#ffffff1a!important;color:#fff!important;border:1px solid rgba(255,255,255,.3)!important;box-shadow:0 0 15px #ffffff1a!important;font-weight:600!important}.unity-btn:hover{background:#ffffff40!important;border-color:#fff!important;box-shadow:0 0 25px #ffffff4d!important;transform:translateY(-3px)!important}.progress-link-text{color:#fffc!important;font-weight:500!important;border:1px solid transparent}.progress-link-text:hover{color:#fff!important;background:#ffffff1a!important;border-color:#fff3!important}.bento-item .bento-image{position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover!important;object-position:center;z-index:1;border-radius:20px}.bento-item .bento-overlay{z-index:2}.skill-tooltip{position:fixed;top:0;left:0;background:#0a1020f2;border:1px solid rgba(255,255,255,.15);padding:8px 16px;border-radius:8px;color:#fff;font-size:.9rem;pointer-events:none;z-index:9999;box-shadow:0 10px 30px #00000080;opacity:0;transition:opacity .15s ease,transform .1s linear;white-space:nowrap}.skill-tooltip.visible{opacity:1}.skill-segment:hover:after{display:none!important}.skill-segment{transition:filter .2s ease,transform .2s ease;cursor:crosshair}.skill-segment:hover{filter:brightness(1.4) drop-shadow(0 0 5px rgba(255,255,255,.5));transform:scaleY(1.15);z-index:10}.legend-dot.p-perso{background:#f472b6;box-shadow:0 0 8px #f472b6}.skill-segment.p-perso{background:#f472b6;box-shadow:0 0 12px #f472b64d}.bg-glow-spot{position:absolute;width:400px;height:400px;background:radial-gradient(circle,rgba(103,253,251,.06) 0%,rgba(145,231,253,.02) 40%,transparent 70%);filter:blur(60px);pointer-events:none;z-index:-1;border-radius:50%;will-change:transform,opacity;transform:translateZ(0)}.reveal{opacity:0;transform:translateY(40px);transition:opacity .3s steps(4),transform .3s steps(4);will-change:opacity,transform}.reveal-left{opacity:0;transform:translate(-40px);transition:opacity .3s steps(4),transform .3s steps(4);will-change:opacity,transform}.reveal-right{opacity:0;transform:translate(40px);transition:opacity .3s steps(4),transform .3s steps(4);will-change:opacity,transform}.reveal-scale{opacity:0;transform:scale(.94);transition:opacity .3s steps(4),transform .3s steps(4);will-change:opacity,transform}.reveal.active,.reveal-left.active,.reveal-right.active,.reveal-scale.active{opacity:1;transform:translate(0) scale(1)}.delay-100{transition-delay:.1s}.delay-200{transition-delay:.2s}.delay-300{transition-delay:.3s}.delay-400{transition-delay:.4s}.delay-500{transition-delay:.5s}.pp-collage-gallery{position:relative;width:100%;height:540px;margin:60px 0}.collage-img{position:absolute;border-radius:20px;border:1px solid rgba(255,255,255,.12);box-shadow:0 20px 50px #0009;overflow:hidden;transition:transform .6s cubic-bezier(.16,1,.3,1),box-shadow .6s cubic-bezier(.16,1,.3,1),border-color .4s ease,z-index .3s ease;cursor:pointer;background:#000;will-change:transform}.collage-img img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .8s cubic-bezier(.16,1,.3,1)}@keyframes float-main{0%{transform:translateY(0) rotate(-1.5deg)}50%{transform:translateY(-8px) rotate(-1deg)}to{transform:translateY(0) rotate(-1.5deg)}}@keyframes float-offset-1{0%{transform:translateY(0) rotate(2deg)}50%{transform:translateY(-6px) rotate(3deg)}to{transform:translateY(0) rotate(2deg)}}@keyframes float-offset-2{0%{transform:translateY(0) rotate(-2.5deg)}50%{transform:translateY(-10px) rotate(-1.5deg)}to{transform:translateY(0) rotate(-2.5deg)}}.collage-img-main{left:6%;top:8%;width:52%;height:84%;z-index:2;animation:float-main 6s ease-in-out infinite}.collage-img-offset-1{right:6%;top:2%;width:38%;height:50%;z-index:1;animation:float-offset-1 7s ease-in-out infinite}.collage-img-offset-2{right:14%;bottom:2%;width:34%;height:44%;z-index:3;animation:float-offset-2 8s ease-in-out infinite}.collage-img:hover{z-index:10!important;animation-play-state:paused;transform:scale(1.05) rotate(0) translateY(-10px)!important;border-color:var(--primary);box-shadow:0 25px 60px #67fdfb59}.collage-img:hover img{transform:scale(1.06)}@media (max-width: 900px){.pp-collage-gallery{height:auto;display:flex;flex-direction:column;gap:30px;margin:30px 0}.collage-img{position:relative!important;inset:auto!important;width:100%!important;height:auto!important;aspect-ratio:16/10;box-shadow:0 10px 25px #0000004d;animation:none!important;transform:none!important}.collage-img:hover{transform:translateY(-5px) scale(1.02)!important}}.music-playlist-container{width:100%}.music-tracks-list,.music-category-section{display:flex;flex-direction:column;gap:12px}.category-title{cursor:pointer;display:flex;align-items:center;justify-content:space-between;-webkit-user-select:none;user-select:none;font-family:var(--font-pixel);color:var(--primary);margin:0;padding:10px 0;border-bottom:1px solid rgba(103,253,251,.2)}.category-title .toggle-container{display:flex;align-items:center;font-size:.8rem}.category-title .toggle-text:before{content:"Réduire";font-size:.65rem;margin-right:12px;font-family:var(--font-body);color:var(--muted);text-transform:uppercase;letter-spacing:1px}.category-title .toggle-arrow{transition:transform .2s;display:inline-block}.music-category-section.closed .category-title .toggle-arrow{transform:rotate(-90deg)}.music-category-section.closed .category-title .toggle-text:before{content:"Voir toutes les pistes"}.music-category-section.closed .track-row:not(:nth-of-type(1)){display:none}.track-row{display:flex;align-items:center;gap:16px;padding:14px 20px;background:#05070d99;border:1px solid rgba(103,253,251,.1);border-radius:0;transition:none;cursor:pointer;position:relative;overflow:hidden}.track-row.playing-now{background:#67fdfb26;border-color:#67fdfb}.track-row:hover{background:#67fdfb0f;border-color:var(--border);transform:none}.row-play-btn{width:36px;height:36px;border-radius:0;background:#ffffff14;border:1px solid var(--border);color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:none}.row-play-btn svg{width:18px;height:18px;margin-left:1px}.track-row:hover .row-play-btn,.track-row.playing-now .row-play-btn{background:var(--primary);color:#000;transform:none}.track-details{flex:1}.track-details h4{font-size:1rem;margin:0 0 2px;color:#fff}.track-row.playing-now .track-details h4{color:#67fdfb}.track-details p{font-size:.85rem;color:var(--muted);margin:0}.track-duration{font-size:.9rem;color:var(--muted)}.sticky-player{position:fixed;bottom:0;left:0;width:100%;background:#05070dd9;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-top:2px solid var(--primary);z-index:9998;transform:translateY(100%);transition:transform .3s cubic-bezier(.16,1,.3,1);box-shadow:0 -10px 40px #00000080}.sticky-player.visible{transform:translateY(0)}.sticky-player-container{max-width:1200px;margin:0 auto;padding:12px 24px;display:flex;align-items:center;justify-content:space-between;gap:24px}.sticky-player-info{display:flex;align-items:center;gap:16px;flex:1;min-width:200px}.sticky-album-cover{width:56px;height:56px;background-size:cover;background-position:center;border:1px solid var(--border);position:relative}.sticky-track-text h4{font-family:var(--font-pixel);margin:0 0 4px;font-size:.95rem;color:#fff}.sticky-track-text p{margin:0;font-size:.8rem;color:var(--muted)}.sticky-player-center{flex:2;display:flex;flex-direction:column;align-items:center;gap:8px}.sticky-player-controls{display:flex;align-items:center;gap:16px}.sticky-ctrl-btn{background:none;border:none;color:var(--muted);cursor:pointer;padding:4px}.sticky-ctrl-btn:hover{color:#fff}.sticky-ctrl-btn svg{width:24px;height:24px}.sticky-play-btn{width:40px;height:40px;border-radius:50%;background:#fff;color:#000;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center}.sticky-play-btn:hover{transform:scale(1.05)}.sticky-play-btn svg{width:24px;height:24px}.sticky-player-timeline{display:flex;align-items:center;gap:12px;width:100%;max-width:500px;font-size:.75rem;color:var(--muted)}.sticky-close-btn{position:absolute;top:16px;right:24px;background:none;border:none;color:var(--muted);cursor:pointer;padding:4px;z-index:10}.sticky-close-btn:hover{color:#fff}.sticky-close-btn svg{width:24px;height:24px}.sticky-player-volume{flex:1;display:flex;align-items:center;justify-content:flex-end;gap:12px;min-width:150px;padding-right:40px}.progress-bar-container,.volume-slider-bar{height:6px;background:#ffffff1a;border:1px solid var(--border);cursor:pointer}.progress-bar-container{flex:1}.volume-slider-bar{width:80px}.progress-bar-fill,.volume-slider-fill{height:100%;background:var(--primary);pointer-events:none}.music-wave{position:absolute;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;gap:3px;opacity:0}.music-wave.active{opacity:1}.music-wave-bar{width:3px;background:var(--primary);animation:pulse-wave 1s ease-in-out infinite alternate;animation-play-state:paused}.music-wave.active .music-wave-bar{animation-play-state:running}.music-wave-bar:nth-child(1){height:10px;animation-delay:.1s}.music-wave-bar:nth-child(2){height:24px;animation-delay:.3s}.music-wave-bar:nth-child(3){height:16px;animation-delay:0s}@keyframes pulse-wave{0%{transform:scaleY(.3)}to{transform:scaleY(1)}}@media (max-width: 768px){.sticky-player-container{padding:8px 16px;flex-wrap:wrap;gap:8px}.sticky-player-volume{display:none}.sticky-player-center{flex:1 1 100%;order:3}.sticky-player-info{flex:1}.sticky-player-controls{position:absolute;top:16px;right:50px}.sticky-close-btn{top:16px;right:16px}.sticky-player-timeline{max-width:100%}}@media (max-width: 600px){.album-cover-wrapper{width:100%;height:200px;flex:0 0 200px}}.music-category-section{display:flex;flex-direction:column;gap:12px}.category-title{font-size:.85rem;text-transform:uppercase;letter-spacing:2px;color:var(--muted);margin:24px 0 10px;display:flex;align-items:center;border-bottom:1px solid rgba(255,255,255,.06);padding-bottom:8px;font-weight:700}.music-category-section:first-child .category-title{margin-top:0}.pp-media-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:24px;width:100%;max-width:960px;margin:0 auto 40px}@media (max-width: 768px){.pp-media-grid{grid-template-columns:1fr;gap:16px}}.player-volume-container{display:flex;align-items:center;gap:10px;margin:16px 0;width:100%;max-width:220px}.volume-icon{cursor:pointer;width:18px;height:18px;color:var(--muted);transition:color .3s ease,transform .2s ease;flex-shrink:0}.volume-icon:hover{color:#67fdfb!important;transform:scale(1.1)}.volume-slider-bar{flex:1;height:5px;background:#ffffff1a;border-radius:4px;position:relative;cursor:pointer;transition:background .3s ease}.volume-slider-bar:hover{background:#ffffff2e}.volume-slider-fill{height:100%;background:linear-gradient(90deg,#667eea,#67fdfb);border-radius:4px;width:80%;position:relative;transition:width .1s ease}img,canvas,video,audio{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-user-drag:none}#dither-fog{position:fixed;inset:-200px;z-index:1;pointer-events:none;background-image:url('data:image/svg+xml,%3Csvg viewBox="0 0 200 200" xmlns="http://www.w3.org/2000/svg"%3E%3Cfilter id="noiseFilter"%3E%3CfeTurbulence type="fractalNoise" baseFrequency="0.75" numOctaves="1" stitchTiles="stitch"/%3E%3CfeColorMatrix type="matrix" values="1 0 0 0 0  0 1 0 0 0  0 0 1 0 0  0 0 0 9 -4"/%3E%3C/filter%3E%3Crect width="100%25" height="100%25" filter="url(%23noiseFilter)"/%3E%3C/svg%3E');background-repeat:repeat;background-size:100px 100px;opacity:.15;mix-blend-mode:overlay;animation:fogDrift 40s steps(100) infinite;will-change:transform}@keyframes fogDrift{0%{transform:translate(0)}25%{transform:translate(-30px,20px)}50%{transform:translate(-60px,-10px)}75%{transform:translate(-20px,-40px)}to{transform:translate(0)}}body.low-perf #dither-fog{display:none!important}.nav-link,.cta,.card-link,.dropdown-link,.mobile-link,.project-modal-close,.lightbox-close{transition:transform .1s steps(2),color .1s steps(2)!important}#ui-dither-overlay{position:fixed;inset:0;z-index:9999;pointer-events:none;background-image:url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" width="4" height="4"%3E%3Crect width="2" height="2" x="2" y="0" fill="%23000000" /%3E%3Crect width="2" height="2" x="0" y="2" fill="%23000000" /%3E%3C/svg%3E');background-size:4px 4px;background-repeat:repeat;image-rendering:pixelated;opacity:.15}body.low-perf #ui-dither-overlay{display:none!important}
