@import "https://fonts.googleapis.com/css2?family=Syne:wght@400;700;800&family=Instrument+Serif:ital@0;1&family=JetBrains+Mono:wght@300;400&display=swap";:root{--orange:#e8550a;--orange-dim:#b34008;--anthracite:#1a1a1e;--anthracite-mid:#26262c;--anthracite-light:#3a3a42;--cream:#f2ede4;--cream-dim:#d9d3c8;--white:#fafaf8;--font-display:"Syne", sans-serif;--font-mono:"JetBrains Mono", monospace;--font-serif:"Instrument Serif", serif;--clip-btn:polygon(0 0, calc(100% - 12px) 0, 100% 12px, 100% 100%, 12px 100%, 0 calc(100% - 12px))}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{background:var(--anthracite);color:var(--cream);font-family:var(--font-display);cursor:none;overflow-x:hidden}body:after{content:"";opacity:.025;pointer-events:none;z-index:9000;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)'/%3E%3C/svg%3E");position:fixed;inset:0}.cursor{background:var(--orange);pointer-events:none;z-index:9999;border-radius:50%;width:10px;height:10px;transition:width .2s,height .2s;position:fixed;transform:translate(-50%,-50%)}.cursor-ring{border:1.5px solid var(--orange);pointer-events:none;z-index:9998;opacity:.5;border-radius:50%;width:36px;height:36px;transition:width .3s,height .3s,opacity .3s;position:fixed;transform:translate(-50%,-50%)}body:hover .cursor-ring{opacity:1}@keyframes pulse{0%,to{box-shadow:0 0 #4caf5066}50%{box-shadow:0 0 0 6px #4caf5000}}@keyframes ticker{0%{transform:translate(0)}to{transform:translate(-50%)}}.fade-in{opacity:0;transition:opacity .8s,transform .8s;transform:translateY(30px)}.fade-in.visible{opacity:1;transform:translateY(0)}.alternance-banner{z-index:99;font-family:var(--font-mono);color:var(--cream-dim);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#1a1a1eeb;border-bottom:1px solid #e8550a33;align-items:center;gap:12px;padding:10px 48px;font-size:.72rem;display:flex;position:fixed;top:72px;left:0;right:0}.alternance-dot{background:#4caf50;border-radius:50%;flex-shrink:0;width:7px;height:7px;animation:2s infinite pulse}.banner-cv{font-family:var(--font-mono);color:var(--orange);letter-spacing:.05em;margin-left:auto;font-size:.72rem;text-decoration:none;transition:opacity .2s}.banner-cv:hover{opacity:.7}nav{z-index:100;justify-content:space-between;align-items:center;width:100%;padding:24px 48px;display:flex;position:fixed;top:0}nav:before{content:"";background:linear-gradient(to bottom, var(--anthracite) 0%, transparent 100%);z-index:-1;position:absolute;inset:0}.nav-logo{font-family:var(--font-display);letter-spacing:.1em;text-transform:uppercase;color:var(--cream);font-size:1rem;font-weight:800;text-decoration:none}.nav-logo span{color:var(--orange)}.nav-links{gap:40px;list-style:none;display:flex}.nav-links a{font-family:var(--font-mono);color:var(--cream-dim);letter-spacing:.05em;font-size:.75rem;text-decoration:none;transition:color .2s}.nav-links a:hover,.nav-links a.active{color:var(--orange)}.hero{grid-template-rows:1fr auto;min-height:100vh;padding:0 48px 64px;display:grid;position:relative;overflow:hidden}.hero-bg-text{font-family:var(--font-display);color:#0000;-webkit-text-stroke:2px #e8550a33;white-space:nowrap;pointer-events:none;-webkit-user-select:none;user-select:none;letter-spacing:-.04em;font-size:clamp(120px,20vw,280px);font-weight:800;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.hero-bg{font-family:var(--font-display);color:#0000;-webkit-text-stroke:1px #e8550a0f;pointer-events:none;-webkit-user-select:none;user-select:none;letter-spacing:-.04em;white-space:nowrap;font-size:clamp(100px,16vw,220px);font-weight:800;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.hero-line{background:linear-gradient(to bottom, transparent 0%, var(--orange) 30%, var(--orange) 70%, transparent 100%);opacity:.2;width:1px;height:100%;position:absolute;top:0;right:200px}.hero-content{z-index:1;flex-direction:column;justify-content:flex-end;padding-top:160px;display:flex;position:relative}.hero-label{font-family:var(--font-mono);letter-spacing:.15em;text-transform:uppercase;color:var(--orange);z-index:1;align-items:center;gap:12px;margin-bottom:24px;font-size:.75rem;display:flex;position:relative}.hero-label:before{content:"";background:var(--orange);width:32px;height:1px;display:block}.hero-eyebrow{font-family:var(--font-mono);letter-spacing:.15em;text-transform:uppercase;color:var(--orange);align-items:center;gap:12px;margin-bottom:24px;font-size:.75rem;font-weight:300;display:flex}.hero-eyebrow:before{content:"";background:var(--orange);width:32px;height:1px;display:block}.hero-title{font-family:var(--font-display);letter-spacing:-.04em;color:var(--cream);margin-bottom:40px;font-size:clamp(52px,8vw,120px);font-weight:800;line-height:.9}.hero-title em{font-family:var(--font-serif);color:var(--orange);font-style:italic;font-weight:400}.hero-bottom{z-index:1;justify-content:space-between;align-items:flex-end;display:flex;position:relative}.hero-desc{max-width:450px;font-family:var(--font-mono);color:var(--cream-dim);font-size:1rem;font-weight:400;line-height:1.7}.hero-sub{font-family:var(--font-mono);color:var(--cream-dim);z-index:1;max-width:520px;margin-top:24px;font-size:.85rem;font-weight:300;line-height:1.7;position:relative}.hero-cta{align-items:center;gap:16px;display:flex}.hero-quote-block{z-index:1;background:#e8550a0a;border-left:2px solid #e8550a4d;max-width:560px;margin-top:40px;padding:32px 40px;position:relative}.hero-quote-mark{font-family:var(--font-serif);color:var(--orange);opacity:.4;margin-bottom:-16px;font-size:4rem;line-height:1}.hero-quote-text{font-family:var(--font-serif);color:var(--cream-dim);font-size:1.1rem;font-style:italic;line-height:1.7}.btn-primary{background:var(--orange);color:var(--anthracite);font-family:var(--font-display);letter-spacing:.05em;text-transform:uppercase;cursor:none;clip-path:var(--clip-btn);border:none;padding:16px 32px;font-size:.85rem;font-weight:700;text-decoration:none;transition:background .2s,transform .2s;display:inline-block}.btn-primary:hover{background:var(--cream);transform:translate(-2px,-2px)}.btn-ghost{color:var(--cream-dim);border:1px solid var(--anthracite-light);font-family:var(--font-display);letter-spacing:.05em;text-transform:uppercase;cursor:none;clip-path:var(--clip-btn);padding:16px 32px;font-size:.85rem;font-weight:700;text-decoration:none;transition:border-color .2s,color .2s,transform .2s;display:inline-block}.btn-ghost:hover{border-color:var(--orange);color:var(--orange);transform:translate(-2px,-2px)}.section-label{font-family:var(--font-mono);letter-spacing:.2em;text-transform:uppercase;color:var(--orange);align-items:center;gap:12px;margin-bottom:24px;font-size:.7rem;display:flex}.section-label:before{content:"//";opacity:.5}.ticker{border-top:1px solid var(--anthracite-light);border-bottom:1px solid var(--anthracite-light);white-space:nowrap;background:var(--anthracite-mid);padding:14px 0;overflow:hidden}.ticker-inner{gap:64px;animation:30s linear infinite ticker;display:inline-flex}.ticker-item{font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--cream-dim);align-items:center;gap:64px;font-size:.7rem;display:flex}.ticker-item:after{content:"◆";color:var(--orange);font-size:.5rem}.about{grid-template-columns:1fr 1fr;align-items:center;gap:80px;padding:120px 48px;display:grid}.about-title{font-family:var(--font-display);letter-spacing:-.03em;color:var(--cream);margin-bottom:32px;font-size:clamp(36px,4vw,60px);font-weight:800;line-height:1}.about-title em{font-family:var(--font-serif);color:var(--orange);font-style:italic;font-weight:400}.about-text{font-family:var(--font-mono);color:var(--cream-dim);margin-bottom:20px;font-size:1rem;font-weight:300;line-height:1.8}.stats-grid{background:var(--anthracite-light);grid-template-columns:1fr 1fr;gap:2px;display:grid}.stat-box{background:var(--anthracite-mid);padding:32px;position:relative;overflow:hidden}.stat-box:before{content:"";background:var(--orange);width:3px;height:0;transition:height .4s;position:absolute;top:0;left:0}.stat-box:hover:before{height:100%}.stat-number{font-family:var(--font-display);letter-spacing:-.04em;color:var(--cream);margin-bottom:8px;font-size:3rem;font-weight:800;line-height:1}.stat-number span{color:var(--orange)}.stat-label{font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--cream-dim);font-size:.7rem}.services{background:var(--anthracite-mid);padding:120px 48px}.services-header{justify-content:space-between;align-items:flex-end;margin-bottom:64px;display:flex}.services-title{font-family:var(--font-display);letter-spacing:-.03em;color:var(--cream);font-size:clamp(36px,4vw,56px);font-weight:800;line-height:1}.services-title em{font-family:var(--font-serif);color:var(--orange);font-style:italic;font-weight:400}.services-grid{background:var(--anthracite-light);grid-template-columns:repeat(3,1fr);gap:2px;display:grid}.service-card{background:var(--anthracite);padding:48px 40px;transition:background .3s;position:relative;overflow:hidden}.service-card:hover{background:#1e1e24}.service-card:after{content:"";background:var(--orange);transform-origin:0;height:2px;transition:transform .3s;position:absolute;bottom:0;left:0;right:0;transform:scaleX(0)}.service-card:hover:after{transform:scaleX(1)}.service-num{font-family:var(--font-mono);color:var(--orange);letter-spacing:.1em;opacity:.7;margin-bottom:32px;font-size:.7rem}.service-icon{margin-bottom:24px;font-size:2rem;display:block}.service-name{font-family:var(--font-display);color:var(--cream);letter-spacing:-.01em;margin-bottom:16px;font-size:1.25rem;font-weight:700}.service-desc{font-family:var(--font-mono);color:var(--cream-dim);font-size:.95rem;font-weight:300;line-height:1.7}.service-stack{flex-wrap:wrap;gap:8px;margin-top:28px;display:flex}.stack-tag{font-family:var(--font-mono);letter-spacing:.08em;border:1px solid var(--anthracite-light);color:var(--cream-dim);text-transform:uppercase;padding:4px 10px;font-size:.65rem;transition:border-color .2s,color .2s}.service-card:hover .stack-tag{border-color:var(--orange);color:var(--orange)}.projects{padding:120px 48px}.projects-header{justify-content:space-between;align-items:flex-end;margin-bottom:64px;display:flex}.projects-title{font-family:var(--font-display);letter-spacing:-.03em;color:var(--cream);font-size:clamp(36px,4vw,56px);font-weight:800;line-height:1}.projects-title em{font-family:var(--font-serif);color:var(--orange);font-style:italic;font-weight:400}.project-featured{background:var(--anthracite-light);grid-template-columns:1fr 1fr;gap:2px;margin-bottom:2px;display:grid}.project-card{background:var(--anthracite-mid);cursor:none;padding:56px 48px;transition:background .3s;position:relative;overflow:hidden}.project-card:hover{background:#222228}.project-card .project-bg-num{font-family:var(--font-display);color:#0000;-webkit-text-stroke:2px #e8550a26;-webkit-user-select:none;user-select:none;pointer-events:none;letter-spacing:-.05em;font-size:180px;font-weight:800;line-height:1;position:absolute;top:-20px;right:-10px}.project-type{font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--orange);align-items:center;gap:8px;margin-bottom:20px;font-size:.7rem;display:flex}.project-type:before{content:"";background:var(--orange);width:20px;height:1px;display:block}.project-name{font-family:var(--font-display);letter-spacing:-.03em;color:var(--cream);margin-bottom:16px;font-size:2rem;font-weight:800;line-height:1}.project-desc{font-family:var(--font-mono);color:var(--cream-dim);max-width:380px;font-size:.95rem;font-weight:300;line-height:1.7}.project-arrow{border:1px solid var(--anthracite-light);width:48px;height:48px;color:var(--cream-dim);justify-content:center;align-items:center;font-size:1.2rem;transition:border-color .2s,color .2s,transform .2s,background .2s;display:flex;position:absolute;bottom:40px;right:40px}.project-card:hover .project-arrow{border-color:var(--orange);color:var(--orange);background:#e8550a14;transform:translate(-4px,-4px)}.project-row{background:var(--anthracite-light);grid-template-columns:repeat(3,1fr);gap:2px;display:grid}.project-mini{background:var(--anthracite-mid);cursor:none;padding:40px 36px;transition:background .3s;position:relative;overflow:hidden}.project-mini:hover{background:#222228}.project-mini:before{content:"";background:var(--orange);transform-origin:0;height:2px;transition:transform .3s;position:absolute;top:0;left:0;right:0;transform:scaleX(0)}.project-mini:hover:before{transform:scaleX(1)}.project-mini-type{font-family:var(--font-mono);color:var(--orange);letter-spacing:.1em;text-transform:uppercase;margin-bottom:16px;font-size:.65rem}.project-mini-name{font-family:var(--font-display);color:var(--cream);letter-spacing:-.02em;margin-bottom:12px;font-size:1.1rem;font-weight:700}.project-mini-desc{font-family:var(--font-mono);color:var(--cream-dim);font-size:.72rem;font-weight:300;line-height:1.6}.contact{background:var(--anthracite-mid);grid-template-columns:1fr 1fr;align-items:center;gap:80px;padding:120px 48px;display:grid;position:relative;overflow:hidden}.contact:before{content:"PARLONS";font-family:var(--font-display);color:#0000;-webkit-text-stroke:1px #e8550a0d;pointer-events:none;-webkit-user-select:none;user-select:none;white-space:nowrap;letter-spacing:-.04em;font-size:160px;font-weight:800;position:absolute;bottom:-40px;right:-20px}.contact-title{font-family:var(--font-display);letter-spacing:-.04em;color:var(--cream);margin-bottom:32px;font-size:clamp(40px,5vw,72px);font-weight:800;line-height:.95}.contact-title em{font-family:var(--font-serif);color:var(--orange);font-style:italic;font-weight:400;display:block}.contact-sub{font-family:var(--font-mono);color:var(--cream-dim);margin-bottom:40px;font-size:1rem;font-weight:300;line-height:1.7}.contact-links{flex-direction:column;gap:2px;display:flex}.contact-link{background:var(--anthracite);justify-content:space-between;align-items:center;padding:24px 32px;text-decoration:none;transition:background .2s;display:flex;position:relative;overflow:hidden}.contact-link:before{content:"";background:var(--orange);z-index:0;width:0;transition:width .3s;position:absolute;top:0;bottom:0;left:0}.contact-link:hover:before{width:4px}.contact-link-label{font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--cream-dim);z-index:1;font-size:.7rem;position:relative}.contact-link-value{font-family:var(--font-display);color:var(--cream);z-index:1;font-size:.95rem;font-weight:700;transition:color .2s;position:relative}.contact-link:hover .contact-link-value{color:var(--orange)}.contact-arrow{color:var(--cream-dim);z-index:1;font-size:1rem;transition:color .2s,transform .2s;position:relative}.contact-link:hover .contact-arrow{color:var(--orange);transform:translate(4px)}footer{border-top:1px solid var(--anthracite-light);justify-content:space-between;align-items:center;padding:32px 48px;display:flex}footer span{font-family:var(--font-mono);color:var(--cream-dim);letter-spacing:.05em;opacity:.5;font-size:.7rem}.footer-orange{color:var(--orange);opacity:1!important}.legend{background:var(--anthracite-mid);border-bottom:1px solid var(--anthracite-light);flex-wrap:wrap;gap:32px;padding:32px 48px;display:flex}.legend-item{align-items:center;gap:12px;display:flex}.legend-desc{font-family:var(--font-mono);color:var(--cream-dim);font-size:.7rem}.badge{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;white-space:nowrap;border-radius:2px;padding:4px 10px;font-size:.6rem}.badge-maitrise{color:var(--orange);background:#e8550a26;border:1px solid #e8550a4d}.badge-pratique{color:var(--cream);border:1px solid var(--anthracite-light);background:#f2ede414}.badge-apprentissage{color:#4caf50;background:#4caf501a;border:1px solid #4caf504d}.stack-section{padding:80px 48px}.stack-section.alt{background:var(--anthracite-mid)}.stack-header{margin-bottom:48px}.stack-title{font-family:var(--font-display);letter-spacing:-.03em;color:var(--cream);font-size:clamp(28px,3vw,44px);font-weight:800;line-height:1}.stack-title em{font-family:var(--font-serif);color:var(--orange);font-style:italic;font-weight:400}.stack-grid{background:var(--anthracite-light);grid-template-columns:repeat(3,1fr);gap:2px;display:grid}.tech-card{background:var(--anthracite);flex-direction:column;gap:12px;padding:36px 32px;transition:background .3s;display:flex;position:relative;overflow:hidden}.tech-card:hover{background:#1e1e24}.tech-card:after{content:"";background:var(--orange);transform-origin:0;height:2px;transition:transform .3s;position:absolute;bottom:0;left:0;right:0;transform:scaleX(0)}.tech-card:hover:after{transform:scaleX(1)}.tech-top{justify-content:space-between;align-items:center;display:flex}.tech-icon{font-size:1.4rem}.tech-name{font-family:var(--font-display);color:var(--cream);letter-spacing:-.01em;font-size:1.1rem;font-weight:700}.tech-desc{font-family:var(--font-mono);color:var(--cream-dim);flex:1;font-size:.75rem;font-weight:300;line-height:1.7}.tech-projects{font-family:var(--font-mono);color:var(--orange);letter-spacing:.05em;opacity:.7;font-size:.65rem}.soft-section{background:var(--anthracite-mid);padding:80px 48px}.soft-title{font-family:var(--font-display);letter-spacing:-.03em;color:var(--cream);margin-top:24px;margin-bottom:48px;font-size:clamp(28px,3vw,44px);font-weight:800;line-height:1}.soft-title em{font-family:var(--font-serif);color:var(--orange);font-style:italic;font-weight:400}.soft-grid{background:var(--anthracite-light);grid-template-columns:repeat(4,1fr);gap:2px;display:grid}.soft-card{background:var(--anthracite);padding:40px 32px;transition:background .3s;position:relative;overflow:hidden}.soft-card:hover{background:#1e1e24}.soft-card:before{content:"";background:var(--orange);transform-origin:0;height:2px;transition:transform .3s;position:absolute;top:0;left:0;right:0;transform:scaleX(0)}.soft-card:hover:before{transform:scaleX(1)}.soft-icon{margin-bottom:16px;font-size:1.6rem;display:block}.soft-name{font-family:var(--font-display);color:var(--cream);margin-bottom:12px;font-size:1rem;font-weight:700}.soft-desc{font-family:var(--font-mono);color:var(--cream-dim);font-size:.75rem;font-weight:300;line-height:1.7}.cta-section{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:40px;padding:80px 48px;display:flex}.cta-text h2{font-family:var(--font-display);letter-spacing:-.03em;color:var(--cream);margin-bottom:12px;font-size:clamp(28px,3vw,44px);font-weight:800;line-height:1}.cta-text h2 em{font-family:var(--font-serif);color:var(--orange);font-style:italic;font-weight:400}.cta-text p{font-family:var(--font-mono);color:var(--cream-dim);font-size:.78rem}.cta-actions{flex-wrap:wrap;gap:16px;display:flex}.story{grid-template-columns:1fr 1fr;align-items:start;gap:80px;padding:120px 48px;display:grid}.story-text,.story-timeline{flex-direction:column;display:flex}.story-title{font-family:var(--font-display);letter-spacing:-.03em;color:var(--cream);margin-bottom:32px;font-size:clamp(36px,4vw,56px);font-weight:800;line-height:1}.story-title em{font-family:var(--font-serif);color:var(--orange);font-style:italic;font-weight:400}.story-p{font-family:var(--font-mono);color:var(--cream-dim);margin-bottom:20px;font-size:.95rem;font-weight:300;line-height:1.8}.story-p strong{color:var(--cream);font-weight:400}.timeline{flex-direction:column;gap:0;display:flex}.tl-item{grid-template-columns:56px 1px 1fr;gap:0 24px;padding-bottom:40px;display:grid;position:relative}.tl-item:last-child{padding-bottom:0}.tl-year{font-family:var(--font-mono);color:var(--orange);letter-spacing:.08em;text-align:right;padding-top:4px;font-size:.65rem}.tl-dot{background:var(--orange);z-index:1;border-radius:50%;flex-shrink:0;width:8px;height:8px;margin:4px auto 0;position:relative}.tl-item:not(:last-child) .tl-dot:after{content:"";background:var(--anthracite-light);width:1px;height:calc(100% + 32px);position:absolute;top:8px;left:50%;transform:translate(-50%)}.tl-content{padding-left:8px}.tl-title{font-family:var(--font-display);color:var(--cream);margin-bottom:8px;font-size:1rem;font-weight:700}.tl-desc{font-family:var(--font-mono);color:var(--cream-dim);font-size:.75rem;font-weight:300;line-height:1.7}.skills{background:var(--anthracite-mid);padding:80px 48px}.skills-title{font-family:var(--font-display);letter-spacing:-.03em;color:var(--cream);margin-bottom:48px;font-size:clamp(28px,3vw,44px);font-weight:800;line-height:1}.skills-title em{font-family:var(--font-serif);color:var(--orange);font-style:italic;font-weight:400}.skills-grid{background:var(--anthracite-light);grid-template-columns:repeat(3,1fr);gap:2px;display:grid}.skill-block{background:var(--anthracite);padding:36px 32px;transition:background .3s;position:relative;overflow:hidden}.skill-block:hover{background:#1e1e24}.skill-block:after{content:"";background:var(--orange);transform-origin:0;height:2px;transition:transform .3s;position:absolute;bottom:0;left:0;right:0;transform:scaleX(0)}.skill-block:hover:after{transform:scaleX(1)}.skill-icon{margin-bottom:16px;font-size:1.6rem;display:block}.skill-name{font-family:var(--font-display);color:var(--cream);margin-bottom:16px;font-size:1rem;font-weight:700}.skill-tags{flex-wrap:wrap;gap:6px;display:flex}.skill-tag{font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;border:1px solid var(--anthracite-light);color:var(--cream-dim);padding:3px 8px;font-size:.6rem;transition:border-color .2s,color .2s}.skill-block:hover .skill-tag{color:var(--orange);border-color:#e8550a66}.elsewhere{padding:80px 48px}.elsewhere-title{font-family:var(--font-display);letter-spacing:-.03em;color:var(--cream);margin-bottom:48px;font-size:clamp(28px,3vw,44px);font-weight:800;line-height:1}.elsewhere-title em{font-family:var(--font-serif);color:var(--orange);font-style:italic;font-weight:400}.elsewhere-grid{background:var(--anthracite-light);grid-template-columns:repeat(2,1fr);gap:2px;display:grid}.elsewhere-card{background:var(--anthracite-mid);align-items:flex-start;gap:24px;padding:40px 36px;transition:background .3s;display:flex;position:relative;overflow:hidden}.elsewhere-card:hover{background:#222228}.elsewhere-card:after{content:"";background:var(--orange);transform-origin:0;height:2px;transition:transform .3s;position:absolute;bottom:0;left:0;right:0;transform:scaleX(0)}.elsewhere-card:hover:after{transform:scaleX(1)}.elsewhere-icon{background:var(--orange);border-radius:50%;flex-shrink:0;width:8px;height:8px;margin-top:8px}.elsewhere-title-item{font-family:var(--font-display);color:var(--cream);margin-bottom:12px;font-size:1rem;font-weight:700}.elsewhere-desc{font-family:var(--font-mono);color:var(--cream-dim);font-size:.78rem;font-weight:300;line-height:1.7}.filters{background:var(--anthracite-mid);border-bottom:1px solid var(--anthracite-light);flex-wrap:wrap;gap:2px;padding:32px 48px;display:flex}.filter-btn{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;border:1px solid var(--anthracite-light);color:var(--cream-dim);cursor:none;background:0 0;padding:10px 20px;font-size:.7rem;transition:border-color .2s,color .2s,background .2s}.filter-btn:hover,.filter-btn.active{border-color:var(--orange);color:var(--orange);background:#e8550a0f}.projects-grid{background:var(--anthracite-light);grid-template-columns:repeat(3,1fr);gap:2px;padding:48px;display:grid}.card{background:var(--anthracite-mid);transition:background .3s;position:relative;overflow:hidden}.card:hover{background:#222228}.card-xl{grid-column:span 2}.card-lg,.card-md{grid-column:span 1}.card-inner{flex-direction:column;gap:16px;height:100%;padding:48px 40px;display:flex;position:relative}.card:after{content:"";background:var(--orange);transform-origin:0;height:2px;transition:transform .3s;position:absolute;top:0;left:0;right:0;transform:scaleX(0)}.card:hover:after{transform:scaleX(1)}.card-header{justify-content:space-between;align-items:center;display:flex}.card-type{font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--orange);font-size:.65rem}.card-year{font-family:var(--font-mono);color:var(--cream-dim);opacity:.6;font-size:.65rem}.card-num{font-family:var(--font-display);color:#0000;-webkit-text-stroke:1px #e8550a33;letter-spacing:-.04em;pointer-events:none;-webkit-user-select:none;user-select:none;font-size:4rem;font-weight:800;line-height:1}.card-title{font-family:var(--font-display);color:var(--cream);letter-spacing:-.02em;font-size:1.2rem;font-weight:700;line-height:1.2}.card-desc{font-family:var(--font-mono);color:var(--cream-dim);flex:1;font-size:.8rem;font-weight:300;line-height:1.7}.card-result{background:#e8550a0a;border-left:2px solid #e8550a4d;padding:16px 20px}.card-result-label{font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--orange);opacity:.8;margin-bottom:6px;font-size:.6rem}.card-result-text{font-family:var(--font-mono);color:var(--cream-dim);font-size:.72rem;font-weight:300;line-height:1.6}.card-stack{flex-wrap:wrap;gap:6px;display:flex}.card-arrow{border:1px solid var(--anthracite-light);width:40px;height:40px;color:var(--cream-dim);justify-content:center;align-self:flex-end;align-items:center;font-size:1rem;text-decoration:none;transition:border-color .2s,color .2s,transform .2s,background .2s;display:inline-flex}.card:hover .card-arrow{border-color:var(--orange);color:var(--orange);background:#e8550a14;transform:translate(-2px,-2px)}.main{grid-template-columns:1fr 1fr;min-height:calc(100vh - 120px);margin-top:120px;display:grid}.left{background:var(--anthracite-mid);flex-direction:column;justify-content:space-between;gap:48px;padding:80px 48px;display:flex;position:relative;overflow:hidden}.left-bg{font-family:var(--font-display);color:#0000;-webkit-text-stroke:1px #e8550a0f;-webkit-user-select:none;user-select:none;pointer-events:none;letter-spacing:-.04em;font-size:clamp(100px,16vw,200px);font-weight:800;position:absolute;bottom:-20px;left:-10px}.left-label{font-family:var(--font-mono);letter-spacing:.2em;text-transform:uppercase;color:var(--orange);align-items:center;gap:12px;margin-bottom:24px;font-size:.7rem;display:flex}.left-label:before{content:"//";opacity:.5}.left-title{font-family:var(--font-display);letter-spacing:-.04em;color:var(--cream);margin-bottom:24px;font-size:clamp(36px,4vw,56px);font-weight:800;line-height:.95}.left-title em{font-family:var(--font-serif);color:var(--orange);font-style:italic;font-weight:400;display:block}.dispo{align-items:center;gap:10px;margin-bottom:20px;display:flex}.dispo-dot{background:#4caf50;border-radius:50%;width:8px;height:8px;animation:2s infinite pulse}.dispo-text{font-family:var(--font-mono);color:#4caf50;letter-spacing:.05em;font-size:.72rem}.left-desc{font-family:var(--font-mono);color:var(--cream-dim);font-size:.85rem;font-weight:300;line-height:1.7}.left .contact-links{flex-direction:column;gap:2px;display:flex}.left .contact-link{background:var(--anthracite);justify-content:space-between;align-items:center;padding:20px 28px;text-decoration:none;transition:background .2s;display:flex;position:relative;overflow:hidden}.left .contact-link:before{content:"";background:var(--orange);z-index:0;width:0;transition:width .3s;position:absolute;top:0;bottom:0;left:0}.left .contact-link:hover:before{width:4px}.contact-link-left{z-index:1;flex-direction:column;gap:4px;display:flex;position:relative}.contact-link-arrow{color:var(--cream-dim);z-index:1;font-size:1rem;transition:color .2s,transform .2s;position:relative}.left .contact-link:hover .contact-link-arrow{color:var(--orange);transform:translate(4px)}.left .contact-link:hover .contact-link-value{color:var(--orange)}.right{flex-direction:column;justify-content:center;padding:80px 48px;display:flex}.contact-cta{text-align:center;flex-direction:column;justify-content:center;align-items:center;min-height:100%;padding:3rem 2rem;display:flex}.contact-cta-icon{opacity:.9;margin-bottom:1.5rem;font-size:4rem}.contact-cta-title{font-family:var(--font-serif);color:var(--cream);margin-bottom:1rem;font-size:2.5rem;font-weight:400;line-height:1.2}.contact-cta-desc{font-family:var(--font-mono);color:var(--cream-dim);max-width:500px;margin:0 auto 2.5rem;font-size:1rem;font-weight:300;line-height:1.7}.contact-cta-email{font-family:var(--font-mono);color:var(--orange);border:2px solid var(--orange);letter-spacing:.02em;background:#e8550a14;border-radius:4px;margin-bottom:2.5rem;padding:1.2rem 2.5rem;font-size:1.4rem;text-decoration:none;transition:all .3s;display:inline-block}.contact-cta-email:hover{background:#e8550a26;transform:translateY(-3px);box-shadow:0 6px 20px #e8550a40}.contact-cta-divider{color:var(--cream-dim);font-family:var(--font-mono);letter-spacing:.15em;text-transform:uppercase;width:100%;max-width:400px;margin:2.5rem 0;font-size:.75rem;position:relative}.contact-cta-divider:before,.contact-cta-divider:after{content:"";background:var(--anthracite-light);width:40%;height:1px;position:absolute;top:50%}.contact-cta-divider:before{left:0}.contact-cta-divider:after{right:0}.contact-cta-buttons{gap:1rem;margin-bottom:3rem;display:flex}.contact-cta-btn{font-family:var(--font-display);letter-spacing:.05em;text-transform:uppercase;border-radius:4px;align-items:center;gap:.5rem;padding:1rem 1.75rem;font-size:.8rem;font-weight:700;text-decoration:none;transition:all .3s;display:flex}.contact-cta-btn-secondary{border:1px solid var(--anthracite-light);color:var(--cream);background:0 0}.contact-cta-btn-secondary:hover{border-color:var(--cream);background:#ffffff08;transform:translateY(-2px)}.contact-cta-btn-arrow{font-family:var(--font-mono);transition:transform .3s}.contact-cta-btn:hover .contact-cta-btn-arrow{transform:translate(4px)}.contact-cta-info{border-top:1px solid var(--anthracite-light);gap:2.5rem;width:100%;max-width:500px;padding-top:2.5rem;display:flex}.contact-cta-info-item{text-align:center;flex-direction:column;flex:1;gap:.5rem;display:flex}.contact-cta-info-label{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.12em;color:var(--cream-dim);opacity:.7;font-size:.65rem}.contact-cta-info-value{font-family:var(--font-mono);color:var(--cream);font-size:.85rem;font-weight:400}@media (width<=1024px){nav{padding:20px 32px}.nav-links{gap:24px}.alternance-banner{padding:10px 32px}.hero{padding:0 32px 48px}.hero-line{right:100px}.hero-bottom{flex-direction:column;align-items:flex-start;gap:32px}.hero-desc{max-width:100%}.about{gap:60px;padding:80px 32px}.services{padding:80px 32px}.services-grid{grid-template-columns:repeat(2,1fr)}.projects{padding:80px 32px}.project-featured{grid-template-columns:1fr}.project-row{grid-template-columns:1fr 1fr}.contact{gap:60px;padding:80px 32px}footer{padding:24px 32px}.stack-grid,.soft-grid{grid-template-columns:repeat(2,1fr)}.legend{padding:24px 32px}.stack-section,.soft-section,.cta-section{padding:60px 32px}.story{gap:60px;padding:80px 32px}.skills{padding:60px 32px}.skills-grid{grid-template-columns:repeat(2,1fr)}.elsewhere{padding:60px 32px}.filters{padding:24px 32px}.projects-grid{grid-template-columns:repeat(2,1fr);padding:32px}.card-xl{grid-column:span 2}.main{grid-template-columns:1fr;margin-top:110px}.left,.right{padding:60px 32px}}@media (width<=768px){body{cursor:auto}.cursor,.cursor-ring{display:none}nav{padding:16px 24px}.nav-links{gap:16px}.nav-links a{font-size:.7rem}.alternance-banner{flex-wrap:wrap;gap:8px;padding:8px 24px;font-size:.65rem;top:64px}.banner-cv{margin-left:0}.hero{min-height:90vh;padding:0 24px 40px}.hero-bg-text{font-size:clamp(80px,15vw,120px)}.hero-bg{font-size:clamp(60px,12vw,100px)}.hero-line{display:none}.hero-content{padding-top:140px}.hero-eyebrow,.hero-label{margin-bottom:20px;font-size:.65rem}.hero-title{margin-bottom:32px;font-size:clamp(40px,12vw,72px)}.hero-sub{font-size:.8rem}.hero-bottom{flex-direction:column;align-items:flex-start;gap:28px}.hero-desc{max-width:100%;font-size:.9rem}.hero-cta{flex-direction:column;gap:12px;width:100%}.btn-primary,.btn-ghost{text-align:center;width:100%;padding:14px 24px;font-size:.8rem}.ticker-inner{gap:40px}.ticker-item{gap:40px;font-size:.65rem}.about{grid-template-columns:1fr;gap:48px;padding:60px 24px}.about-title{margin-bottom:24px;font-size:clamp(32px,10vw,48px)}.about-text{font-size:.9rem}.stats-grid{grid-template-columns:1fr}.stat-box{padding:24px}.stat-number{font-size:clamp(48px,12vw,72px)}.services{padding:60px 24px}.services-title{font-size:clamp(32px,10vw,48px)}.services-grid{grid-template-columns:1fr}.service-card{padding:36px 28px}.projects{padding:60px 24px}.projects-header{flex-direction:column;align-items:flex-start;gap:24px;margin-bottom:48px}.projects-title{font-size:clamp(32px,10vw,48px)}.project-card{padding:40px 28px}.project-card .project-bg-num{font-size:120px}.project-name{font-size:1.5rem}.project-row{grid-template-columns:1fr}.contact{grid-template-columns:1fr;gap:48px;padding:60px 24px}.contact:before{font-size:100px}.contact-title{margin-bottom:24px;font-size:clamp(32px,10vw,48px)}footer{text-align:center;flex-direction:column;gap:12px;padding:20px 24px}footer span{font-size:.65rem}.stack-grid,.soft-grid{grid-template-columns:1fr}.legend{flex-direction:column;gap:16px;padding:20px 24px}.stack-section,.soft-section{padding:48px 24px}.cta-section{flex-direction:column;align-items:flex-start;padding:48px 24px}.tech-card{padding:28px 24px}.soft-card{padding:32px 24px}.story{grid-template-columns:1fr;gap:48px;padding:60px 24px}.skills{padding:48px 24px}.skills-grid{grid-template-columns:1fr}.elsewhere{padding:48px 24px}.elsewhere-grid{grid-template-columns:1fr}.filters{padding:16px 24px}.projects-grid{grid-template-columns:1fr;padding:16px 24px}.card-xl,.card-lg{grid-column:span 1}.main{margin-top:100px}.left,.right{padding:48px 24px}.contact-cta{padding:2rem 1.5rem}.contact-cta-icon{font-size:3rem}.contact-cta-title{font-size:2rem}.contact-cta-email{padding:1rem 1.75rem;font-size:1.1rem}.contact-cta-buttons{flex-direction:column;width:100%;max-width:300px}.contact-cta-btn{justify-content:center;width:100%}.contact-cta-info{flex-direction:column;gap:1.5rem}.contact-cta-divider{font-size:.7rem}}@media (width<=480px){.hero-title{font-size:clamp(32px,10vw,56px)}.about-title,.services-title,.projects-title,.contact-title,.stack-title,.soft-title{font-size:clamp(28px,9vw,40px)}}
