@import"https://fonts.googleapis.com/css2?family=Rajdhani:wght@500;600;700&family=Inter:wght@300;400;500&display=swap";:root,[data-material=glass]{--mat-bg: rgba(15, 15, 20, .75);--mat-border: rgba(255, 255, 255, .08);--mat-blur: blur(14px);--mat-radius: 12px;--mat-shadow: 0 4px 25px rgba(0, 0, 0, .4);--mat-shadow-hover: 0 20px 40px rgba(0, 0, 0, .6), 0 0 20px rgba(96, 165, 250, .1);--mat-border-hover: rgba(96, 165, 250, .3);--nav-bg: rgba(10, 10, 15, .7);--nav-border: rgba(255, 255, 255, .08);--nav-blur: blur(20px) saturate(180%);--nav-shadow: 0 10px 30px rgba(0, 0, 0, .3);--modal-overlay-bg: rgba(5, 5, 10, .65);--modal-overlay-blur: blur(6px);--modal-bg: #0b0c10;--modal-border: rgba(255, 255, 255, .1);--modal-shadow: 0 20px 60px rgba(0, 0, 0, .85);--hero-card-bg: linear-gradient(135deg, rgba(255, 255, 255, .1), rgba(255, 255, 255, .02));--hero-card-blur: blur(20px);--hero-card-border: rgba(255, 255, 255, .15);--hero-card-shadow: 0 30px 60px rgba(0, 0, 0, .4), inset 0 1px 0 rgba(255, 255, 255, .2);--surface-bg: rgba(255, 255, 255, .03);--surface-border: rgba(255, 255, 255, .08);--surface-blur: blur(10px);--surface-bg-hover: rgba(255, 255, 255, .06);--surface-border-hover: var(--accent-color);--btn-surface-bg: rgba(255, 255, 255, .03);--btn-surface-border: rgba(255, 255, 255, .08);--btn-surface-color: #ddd;--admin-sidebar-bg: rgba(255, 255, 255, .03);--admin-sidebar-border: rgba(255, 255, 255, .08);--admin-sidebar-blur: blur(10px);--mission-card-bg: rgba(255, 255, 255, .02);--mission-card-border: rgba(255, 255, 255, .06)}[data-material=liquid-glass]{--mat-bg: rgba(255, 255, 255, .07);--mat-border: rgba(255, 255, 255, .2);--mat-blur: blur(30px) saturate(210%) brightness(1.06);--mat-radius: 16px;--mat-shadow: 0 10px 35px rgba(0, 0, 0, .35), inset 0 1px 0 rgba(255, 255, 255, .3), inset 0 -1px 0 rgba(0, 0, 0, .15);--mat-shadow-hover: 0 25px 50px rgba(0, 0, 0, .55), 0 0 25px rgba(96, 165, 250, .12), inset 0 1px 0 rgba(255, 255, 255, .45);--mat-border-hover: rgba(255, 255, 255, .35);--nav-bg: rgba(15, 15, 22, .7);--nav-border: rgba(255, 255, 255, .15);--nav-blur: blur(20px) saturate(180%) brightness(1.02);--nav-shadow: 0 10px 30px rgba(0, 0, 0, .4), inset 0 1px 0 rgba(255, 255, 255, .15);--modal-overlay-bg: rgba(5, 5, 10, .6);--modal-overlay-blur: blur(4px);--modal-bg: rgba(15, 16, 22, .85);--modal-border: rgba(255, 255, 255, .15);--modal-shadow: 0 30px 80px rgba(0, 0, 0, .65), inset 0 1px 0 rgba(255, 255, 255, .2);--hero-card-bg: linear-gradient(135deg, rgba(255, 255, 255, .12), rgba(255, 255, 255, .03));--hero-card-blur: blur(25px) saturate(200%);--hero-card-border: rgba(255, 255, 255, .22);--hero-card-shadow: 0 30px 60px rgba(0, 0, 0, .45), inset 0 1px 0 rgba(255, 255, 255, .3);--surface-bg: rgba(255, 255, 255, .04);--surface-border: rgba(255, 255, 255, .12);--surface-blur: blur(12px) saturate(180%);--surface-bg-hover: rgba(255, 255, 255, .08);--surface-border-hover: rgba(255, 255, 255, .25);--btn-surface-bg: rgba(255, 255, 255, .05);--btn-surface-border: rgba(255, 255, 255, .12);--btn-surface-color: rgba(255, 255, 255, .95);--admin-sidebar-bg: rgba(10, 10, 15, .8);--admin-sidebar-border: rgba(255, 255, 255, .12);--admin-sidebar-blur: blur(20px) saturate(180%);--mission-card-bg: rgba(255, 255, 255, .02);--mission-card-border: rgba(255, 255, 255, .08)}[data-material=liquid-glass] .timeline-card,[data-material=liquid-glass] .passion-card,[data-material=liquid-glass] .iut-card{background:#ffffff09!important;border:1px solid rgba(255,255,255,.12)!important;backdrop-filter:blur(16px) saturate(180%)!important;-webkit-backdrop-filter:blur(16px) saturate(180%)!important;box-shadow:0 4px 20px #00000040!important}[data-material=solid]{--mat-bg: #1a1b24;--mat-border: rgba(255, 255, 255, .1);--mat-blur: none;--mat-radius: 10px;--mat-shadow: 0 4px 16px rgba(0, 0, 0, .5);--mat-shadow-hover: 0 12px 32px rgba(0, 0, 0, .7);--mat-border-hover: rgba(96, 165, 250, .4);--nav-bg: #101015;--nav-border: rgba(255, 255, 255, .07);--nav-blur: none;--nav-shadow: 0 4px 16px rgba(0, 0, 0, .4);--modal-overlay-bg: rgba(0, 0, 0, .75);--modal-overlay-blur: none;--modal-bg: #111218;--modal-border: rgba(255, 255, 255, .08);--modal-shadow: 0 20px 60px rgba(0, 0, 0, .9);--hero-card-bg: #1a1b24;--hero-card-blur: none;--hero-card-border: rgba(255, 255, 255, .1);--hero-card-shadow: 0 20px 40px rgba(0, 0, 0, .5);--surface-bg: #1e1f2a;--surface-border: rgba(255, 255, 255, .08);--surface-blur: none;--surface-bg-hover: #252635;--surface-border-hover: rgba(255, 255, 255, .2);--btn-surface-bg: #1e1f2a;--btn-surface-border: rgba(255, 255, 255, .1);--btn-surface-color: #ccc;--admin-sidebar-bg: #0e0f16;--admin-sidebar-border: rgba(255, 255, 255, .06);--admin-sidebar-blur: none;--mission-card-bg: #1a1b24;--mission-card-border: rgba(255, 255, 255, .07)}:root{--bg-color: #121318;--text-color: #e0e0e0;--primary-color: #94a3b8;--secondary-color: #0b0c10;--accent-color: #38bdf8;--glass-bg: var(--mat-bg);--glass-border: var(--mat-border);--border-radius-mac: var(--mat-radius);--font-sans: "Inter", sans-serif;--font-display: "Rajdhani", sans-serif;--star-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23000' d='M12 0c.7 6.6 4.7 10.6 12 12-7.3 1.4-11.3 5.4-12 12-.7-6.6-4.7-10.6-12-12 7.3-1.4 11.3-5.4 12-12z'/%3E%3C/svg%3E")}html{scroll-behavior:smooth}*{box-sizing:border-box;margin:0;padding:0}body{background-color:var(--bg-color);color:var(--text-color);font-family:var(--font-sans);overflow-x:hidden;position:relative}section[id],[id^=formation],[id^=experience]{scroll-margin-top:120px}body:not([data-background=aurora]):before{content:"";position:fixed;top:0;left:0;width:100%;height:100%;background-image:linear-gradient(rgba(255,255,255,.02) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.02) 1px,transparent 1px);background-size:50px 50px;z-index:-2}body:not([data-background=aurora]):after{content:"";position:fixed;top:0;left:0;width:100%;height:100%;background:radial-gradient(circle at 18% 25%,rgba(56,189,248,.05) 0%,transparent 42%),radial-gradient(circle at 82% 72%,rgba(99,102,241,.04) 0%,transparent 45%);pointer-events:none;z-index:-1}.portfolio-bg{position:fixed;top:0;left:0;width:100vw;height:100vh;z-index:-3;pointer-events:none;overflow:hidden;background-color:var(--bg-color)}.blob{position:absolute;border-radius:50%;filter:blur(130px);mix-blend-mode:screen;opacity:.32;will-change:transform}.blob-1{top:-10%;left:-10%;width:55vw;height:55vw;background:radial-gradient(circle,rgba(99,102,241,.18) 0%,transparent 80%);animation:float-blob-1 30s infinite alternate ease-in-out}.blob-2{bottom:-15%;right:-10%;width:65vw;height:65vw;background:radial-gradient(circle,rgba(56,189,248,.15) 0%,transparent 80%);animation:float-blob-2 35s infinite alternate ease-in-out}.blob-3{top:25%;right:10%;width:45vw;height:45vw;background:radial-gradient(circle,rgba(139,92,246,.12) 0%,transparent 80%);animation:float-blob-3 26s infinite alternate ease-in-out}.blob-4{bottom:15%;left:5%;width:50vw;height:50vw;background:radial-gradient(circle,rgba(14,165,233,.15) 0%,transparent 80%);animation:float-blob-4 32s infinite alternate ease-in-out}@keyframes float-blob-1{0%{transform:translate(0) scale(1)}50%{transform:translate(10vw,15vh) scale(1.1)}to{transform:translate(-5vw,5vh) scale(.9)}}@keyframes float-blob-2{0%{transform:translate(0) scale(1)}50%{transform:translate(-12vw,-10vh) scale(.85)}to{transform:translate(6vw,-18vh) scale(1.15)}}@keyframes float-blob-3{0%{transform:translate(0) scale(1)}50%{transform:translate(-8vw,12vh) scale(1.2)}to{transform:translate(10vw,-8vh) scale(.85)}}@keyframes float-blob-4{0%{transform:translate(0) scale(1)}50%{transform:translate(14vw,-15vh) scale(.8)}to{transform:translate(-6vw,8vh) scale(1.1)}}h1,h2,h3,h4{font-family:var(--font-display);letter-spacing:.4px;line-height:1.25}.section-header{text-align:center;margin-bottom:4rem;display:flex;flex-direction:column;align-items:center;position:relative;width:100%}.section-category{font-family:var(--font-display);font-size:.85rem;font-weight:600;color:var(--primary-color);letter-spacing:4px;text-transform:uppercase;margin-bottom:.8rem;position:relative;display:inline-block}.section-title{font-family:var(--font-display);font-size:clamp(2rem,5vw,2.75rem)!important;font-weight:700!important;letter-spacing:2px!important;text-transform:uppercase;color:#fff;margin-bottom:0!important;background:none!important;-webkit-text-fill-color:initial!important;position:relative;display:inline-block}.section-title .dot,.hero-name-massive .dot{color:var(--accent-color)}.section-title:after{content:"";display:block;width:36px;height:2px;background:var(--accent-color);margin:1.1rem auto 0;border-radius:2px}.section-subtitle{font-family:var(--font-sans);font-size:clamp(.9rem,1.8vw,1.05rem)!important;font-weight:300!important;color:#a0a0ab!important;max-width:600px;line-height:1.6;margin:1.2rem auto 0!important;text-align:center}a{color:inherit;text-decoration:none}.site-footer{padding:2.5rem 2rem 3rem;text-align:center;border-top:1px solid rgba(255,255,255,.06)}.site-footer p{font-size:.82rem;color:#8b93a3;letter-spacing:.5px}:focus-visible{outline:2px solid var(--accent-color);outline-offset:3px;border-radius:4px}.mac-card:focus-visible,.project-card:focus-visible{outline:2px solid var(--accent-color);outline-offset:2px}.skip-link{position:absolute;left:50%;top:0;transform:translate(-50%,-120%);z-index:10000;padding:.7rem 1.4rem;background:var(--accent-color);color:#08243a;font-family:var(--font-display);font-weight:700;font-size:.85rem;letter-spacing:1px;text-transform:uppercase;border-radius:0 0 8px 8px;transition:transform .2s ease}.skip-link:focus{transform:translate(-50%)}.container{max-width:1200px;margin:0 auto;padding:0 2rem;width:100%}.mac-card{background:var(--mat-bg);backdrop-filter:var(--mat-blur);-webkit-backdrop-filter:var(--mat-blur);border:1px solid var(--mat-border);border-radius:var(--mat-radius);padding:1.1rem;transition:transform .4s cubic-bezier(.16,1,.3,1),box-shadow .4s ease,border-color .4s ease;box-shadow:var(--mat-shadow);position:relative}.mac-card:hover{transform:translateY(-3px);box-shadow:var(--mat-shadow-hover);border-color:var(--mat-border-hover)}.mac-card,.project-card{isolation:isolate}.mac-card:after,.project-card:after{content:"";position:absolute;inset:0;z-index:-1;border-radius:inherit;pointer-events:none;opacity:0;transition:opacity .35s ease;background:radial-gradient(circle 240px at var(--px, 50%) var(--py, 50%),rgba(56,189,248,.09),transparent 62%)}.mac-card:hover:after,.project-card:hover:after{opacity:1}@media(hover:none),(prefers-reduced-motion:reduce){.mac-card:after,.project-card:after{display:none}}@media(max-width:768px){.mac-card{background-color:#141419fa!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important}}.primary-button{background:linear-gradient(135deg,var(--accent-color),#2563eb);color:#fff;border:none;padding:.6rem 1.5rem;font-family:var(--font-display);font-size:.95rem;font-weight:700;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;text-transform:uppercase;letter-spacing:1px;clip-path:polygon(12px 0,100% 0,100% calc(100% - 12px),calc(100% - 12px) 100%,0 100%,0 12px);transition:all .3s ease}.primary-button:hover{filter:brightness(1.15);box-shadow:0 0 15px #38bdf859}.dot{color:var(--accent-color)}@keyframes fadeInUp{0%{opacity:0;transform:translateY(15px)}to{opacity:1;transform:translateY(0)}}.animate-fade-in{animation:fadeInUp .8s cubic-bezier(.16,1,.3,1) both;will-change:transform,opacity}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:var(--bg-color)}::-webkit-scrollbar-thumb{background:#94a3b84d;border-radius:10px}::-webkit-scrollbar-thumb:hover{background:#94a3b88c}@media(max-width:768px){.mac-card p,.tech-modal p,.timeline-desc,.project-desc,.iut-desc,.modal-text,.modal-md,.modal-md__para,.mission-text,.markdown-content,.passion-content p,.mission-card p,.hero-description{text-align:left!important}}.reveal-on-scroll{transform:translateY(30px);transition:opacity 1.2s cubic-bezier(.16,1,.3,1),transform 1.2s cubic-bezier(.16,1,.3,1);will-change:opacity,transform}.js-reveal .reveal-on-scroll{opacity:0}.reveal-visible,.js-reveal .reveal-visible{opacity:1;transform:translateY(0)}.card-click-indicator{position:absolute;top:15px;right:15px;width:28px;height:28px;border-radius:50%;background:#121318b3;border:1px solid rgba(255,255,255,.12);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:center;z-index:5;transition:all .3s cubic-bezier(.16,1,.3,1);pointer-events:none;box-shadow:0 4px 10px #0000004d;color:#ffffffa6}.card-click-indicator svg{width:12px;height:12px;transition:transform .3s cubic-bezier(.16,1,.3,1);display:block}.mac-card:hover .card-click-indicator{color:var(--accent-color);background:#121318f2;border-color:#38bdf873;box-shadow:0 6px 15px #38bdf826}.mac-card:hover .card-click-indicator svg{transform:translate(1px,-1px)}.project-card{padding:0!important;display:flex;flex-direction:column;cursor:pointer;overflow:hidden;height:100%;position:relative}.project-image-container,.project-image-placeholder{width:100%;height:200px;overflow:hidden;border-bottom:1px solid var(--glass-border);position:relative}.favorite-star-badge{position:absolute;top:10px;left:10px;z-index:2;background:#0000008c;color:#ffb300;font-size:.95rem;line-height:1;padding:4px 7px;border-radius:6px;border:1px solid rgba(255,179,0,.5);box-shadow:0 0 8px #ffb3004d;pointer-events:none;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px)}.project-image-container:after{content:"Voir le projet →︎";position:absolute;inset:0;background:#00000085;display:flex;align-items:center;justify-content:center;color:#ffffffe6;font-family:var(--font-display);font-size:.72rem;font-weight:700;letter-spacing:2px;text-transform:uppercase;opacity:0;transition:opacity .25s ease}.project-image{width:100%;height:100%;object-fit:cover;display:block;transition:transform .6s cubic-bezier(.16,1,.3,1);transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.project-card:hover .project-image{transform:scale(1.025) translateZ(0)}.project-card:hover .project-image-container:after{opacity:1}.project-image-placeholder{background:#38bdf808;display:flex;justify-content:center;align-items:center;color:var(--accent-color);font-family:var(--font-display);letter-spacing:2px;text-transform:uppercase}.project-content{padding:1.5rem;display:flex;flex-direction:column;flex-grow:1}.project-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.project-status{font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:1px;display:flex;align-items:center;gap:6px}.project-status:before{content:"";display:inline-block;width:6px;height:6px;border-radius:50%;background:currentColor;box-shadow:0 0 8px currentColor}.status-deployed{color:var(--accent-color)}.status-dev{color:#fc0}.status-archived{color:var(--primary-color)}.project-title{font-size:1.4rem;color:#fff;margin-bottom:.5rem}.project-desc{font-size:.95rem;color:#aaa;line-height:1.5;margin-bottom:1.5rem;flex-grow:1}.project-tech{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:auto;padding-top:1rem;border-top:1px solid rgba(255,255,255,.05)}.tech-pill{background:#ffffff0d;border:1px solid rgba(255,255,255,.1);color:#ccc;padding:.3rem .8rem;border-radius:20px;font-size:.8rem;transition:all .3s ease}.project-card:hover .tech-pill{border-color:var(--accent-color);color:var(--accent-color)}@media(max-width:480px){.project-header{flex-direction:column;align-items:flex-start;gap:.5rem}}body.lightbox-open{overflow:hidden}.lightbox{position:fixed;inset:0;z-index:12000;display:flex;align-items:center;justify-content:center;background:rgba(4,5,10,calc(.93 * var(--lb-dim, 1)));-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);animation:lightboxIn .22s cubic-bezier(.16,1,.3,1);overscroll-behavior:contain}.lightbox--closing{animation:lightboxOut .19s ease forwards;pointer-events:none}@keyframes lightboxIn{0%{opacity:0}to{opacity:1}}@keyframes lightboxOut{0%{opacity:1}to{opacity:0}}.lightbox__stage{position:absolute;inset:0;overflow:hidden;touch-action:none;cursor:zoom-in;-webkit-user-select:none;user-select:none}.lightbox__stage.is-zoomed{cursor:grab}.lightbox__stage.is-zoomed:active{cursor:grabbing}.lightbox__track{display:flex;width:100%;height:100%;will-change:transform}.lightbox__slide{flex:0 0 100%;width:100%;height:100%;display:flex;align-items:center;justify-content:center;box-sizing:border-box;padding:clamp(.75rem,4vw,3.5rem) clamp(3.6rem,8vw,5rem);padding-bottom:clamp(3.2rem,7vh,4.5rem)}.lightbox__img{max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain;display:block;border-radius:6px;box-shadow:0 24px 70px #0009;transform-origin:center center;-webkit-user-drag:none}.lightbox__img.is-animated{transition:transform .26s cubic-bezier(.16,1,.3,1)}.lightbox__close{position:absolute;top:1rem;right:1rem;width:42px;height:42px;border-radius:50%;background:#ffffff12;border:1px solid rgba(255,255,255,.14);color:#fffc;font-size:1.4rem;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .25s cubic-bezier(.16,1,.3,1);z-index:3}.lightbox__close:hover{background:var(--primary-color);border-color:var(--primary-color);color:#fff;transform:rotate(90deg) scale(1.08)}.lightbox__nav{position:absolute;top:50%;transform:translateY(-50%);width:46px;height:46px;border-radius:50%;background:#ffffff0f;border:1px solid rgba(255,255,255,.12);color:#ffffffbf;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background .2s,color .2s,border-color .2s;z-index:3}.lightbox__nav:hover{background:#ffffff24;border-color:#ffffff47;color:#fff}.lightbox__nav--prev{left:1rem}.lightbox__nav--next{right:1rem}.lightbox__footer{position:absolute;bottom:1rem;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:.85rem;padding:.4rem .9rem;border-radius:999px;background:#00000073;border:1px solid rgba(255,255,255,.08);max-width:calc(100% - 2rem);pointer-events:none;z-index:3}.lightbox__counter{font-family:var(--font-display);font-size:.72rem;letter-spacing:2px;color:var(--accent-color);white-space:nowrap}.lightbox__hint{font-size:.72rem;color:#ffffff80;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@media(max-width:900px),(pointer:coarse){.lightbox__nav{top:auto;bottom:.85rem;transform:none;width:42px;height:42px;background:#ffffff17}.lightbox__nav--prev{left:.85rem}.lightbox__nav--next{right:.85rem}.lightbox__slide{padding:3.6rem .6rem 4.2rem}.lightbox__close{top:.6rem;right:.6rem;width:38px;height:38px}.lightbox__hint{display:none}.lightbox__footer{bottom:1.35rem}}@media(prefers-reduced-motion:reduce){.lightbox,.lightbox__img,.lightbox__img.is-animated,.lightbox__track{animation:none;transition:none}}.carousel{width:100%}.carousel__row{display:flex;align-items:center;gap:.5rem}.carousel__viewport{flex:1;min-width:0;display:flex;justify-content:center}.carousel__window{position:relative;width:100%;aspect-ratio:16 / 9;overflow:hidden;border-radius:8px;background:#0a0a0d;border:1px solid rgba(255,255,255,.07);cursor:zoom-in;transition:width .32s cubic-bezier(.16,1,.3,1),height .32s cubic-bezier(.16,1,.3,1);touch-action:pan-y}.carousel__window:focus-visible{outline:2px solid var(--accent-color);outline-offset:3px}.carousel__track{display:flex;height:100%;transform:translate(calc(-1 * var(--offset, 0%)));transition:transform .38s cubic-bezier(.4,0,.2,1);will-change:transform}.carousel__slide{flex:0 0 100%;width:100%;height:100%}.carousel__slide img{width:100%;height:100%;object-fit:contain;display:block;pointer-events:none;-webkit-user-select:none;user-select:none}.carousel__zoom{position:absolute;bottom:8px;right:8px;width:30px;height:30px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:#0000008c;border:1px solid rgba(255,255,255,.14);color:#fffc;opacity:0;transform:scale(.85);transition:opacity .22s,transform .22s;pointer-events:none}.carousel__window:hover .carousel__zoom,.carousel__window:focus-visible .carousel__zoom{opacity:1;transform:scale(1)}@media(hover:none){.carousel__zoom{opacity:.85;transform:scale(1)}}.carousel__nav{flex-shrink:0;width:32px;height:32px;border-radius:50%;background:#ffffff0d;border:1px solid rgba(255,255,255,.1);color:#ffffffa6;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background .18s,border-color .18s,color .18s}.carousel__nav:disabled{opacity:.22;cursor:default;pointer-events:none}.carousel__nav:not(:disabled):hover{background:#ffffff1a;border-color:#ffffff38;color:#fff}.carousel__bars{display:flex;gap:5px;margin-top:8px;padding:0 calc(32px + .5rem)}.carousel__bar{flex:1;height:3px;border-radius:2px;border:none;padding:0;background:#ffffff24;cursor:pointer;transition:background .22s}.carousel__bar.active{background:var(--accent-color)}.carousel__bar:not(.active):hover{background:#ffffff4d}@media(max-width:768px){.carousel__nav{width:28px;height:28px}.carousel__bars{padding:0 calc(28px + .5rem)}}@media(prefers-reduced-motion:reduce){.carousel__window,.carousel__track{transition:none}}.modal-overlay{position:fixed;inset:0;background:var(--modal-overlay-bg);-webkit-backdrop-filter:var(--modal-overlay-blur);backdrop-filter:var(--modal-overlay-blur);display:flex;justify-content:center;align-items:center;z-index:9999;padding:1.5rem}body.modal-open{overflow:hidden;width:100%}.tech-modal{background:var(--modal-bg);width:90vw;max-width:980px;height:88vh;border-radius:14px;border:1px solid var(--modal-border);position:relative;display:flex;flex-direction:column;box-shadow:var(--modal-shadow);color:var(--text-color);overflow:hidden;transform:translateZ(0);backface-visibility:hidden}.close-button{position:absolute;top:1rem;right:1rem;background:#ffffff0d;border:1px solid rgba(255,255,255,.1);color:#ffffffb3;width:34px;height:34px;border-radius:50%;font-size:1.1rem;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .25s cubic-bezier(.16,1,.3,1);z-index:100}.close-button:hover{background:var(--primary-color);border-color:var(--primary-color);color:#fff;transform:rotate(90deg) scale(1.08)}.modal-content-scroll{overflow-y:auto;flex:1;scroll-behavior:smooth}.modal-body-padding{padding:2rem 2.5rem 2.5rem}.modal-meta{display:flex;gap:.6rem;flex-wrap:wrap;margin-bottom:.75rem}.modal-title{font-family:var(--font-display);font-size:2rem;color:#fff;margin:0 0 .6rem;text-transform:uppercase;letter-spacing:2px;padding-right:2.5rem;line-height:1.1}.modal-tagline{font-size:1rem;color:#fffc;font-family:var(--font-sans);font-weight:300;margin:0 0 1.5rem;line-height:1.5;border-left:2px solid var(--primary-color);padding-left:1rem}.modal-carousel{margin-bottom:2rem}.modal-grid{display:grid;grid-template-columns:1.7fr 1fr;gap:2.5rem}.modal-metadata-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:2.5rem;margin-bottom:2rem;padding-bottom:1.5rem;border-bottom:1px solid rgba(255,255,255,.08)}.modal-section-title{font-family:var(--font-display);color:var(--accent-color);margin:0 0 1rem;font-size:.75rem;text-transform:uppercase;letter-spacing:3px;border-left:2px solid var(--accent-color);padding-left:.75rem}.modal-section-title--spaced{margin-top:2rem}.modal-text{line-height:1.75;color:#b0b0b0;white-space:pre-wrap;font-size:.95rem}.modal-md{display:flex;flex-direction:column;gap:.6rem}.modal-md__para{line-height:1.75;color:#b0b0b0;font-size:.95rem;margin:0}.modal-md__para strong{color:#e2e2e2;font-weight:600}.modal-links{display:flex;gap:.75rem;flex-wrap:wrap;margin-top:2rem}.skills-group{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:0}.tag{padding:.3rem .7rem;border-radius:4px;font-size:.72rem;font-family:var(--font-display);font-weight:700;text-transform:uppercase;letter-spacing:1px;white-space:nowrap}.tag-soft{background:#ffffff0d;color:#888;border:1px solid rgba(255,255,255,.1)}.tag-tech{background:#38bdf814;color:var(--accent-color);border:1px solid rgba(56,189,248,.2)}.tag-hard{background:#94a3b81a;color:var(--primary-color);border:1px solid rgba(148,163,184,.22)}.tag.tag-competence{width:100%;margin:0;padding:.55rem .9rem;font-family:var(--font-sans);font-size:.9rem;font-weight:500;line-height:1.45;text-align:left;text-transform:none;letter-spacing:normal;white-space:normal;height:auto}.zoomable-image{position:relative;display:block;padding:0;border:none;background:none;font:inherit;color:inherit;cursor:zoom-in;-webkit-tap-highlight-color:transparent}.zoomable-image__badge{position:absolute;bottom:8px;right:8px;width:30px;height:30px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:#0000008c;border:1px solid rgba(255,255,255,.14);color:#fffc;opacity:0;transform:scale(.85);transition:opacity .22s,transform .22s;pointer-events:none}.zoomable-image:hover .zoomable-image__badge,.zoomable-image:focus-visible .zoomable-image__badge{opacity:1;transform:scale(1)}@media(hover:none){.zoomable-image__badge{opacity:.85;transform:scale(1)}}.modal-header-image-wrap{width:fit-content;max-width:100%;margin:0 auto;flex-shrink:0;border-bottom:1px solid rgba(255,255,255,.07)}.modal-header-image{width:auto;max-width:100%;height:auto;max-height:min(38vh,340px);object-fit:contain;display:block}.secondary-button{background:var(--surface-bg);color:#fff;border:1px solid var(--surface-border);padding:.55rem 1.2rem;font-family:var(--font-display);font-size:.8rem;font-weight:700;text-transform:uppercase;letter-spacing:1px;cursor:pointer;clip-path:polygon(10px 0,100% 0,100% calc(100% - 10px),calc(100% - 10px) 100%,0 100%,0 10px);transition:background .25s,border-color .25s,color .25s;display:inline-flex;align-items:center;text-decoration:none}.secondary-button:hover{background:var(--surface-bg-hover);border-color:var(--accent-color);color:var(--accent-color)}.tech-modal.animate-fade-in{animation:modalEnter .28s cubic-bezier(.16,1,.3,1) both}@keyframes modalEnter{0%{opacity:0;transform:scale(.97) translateY(10px)}to{opacity:1;transform:scale(1) translateY(0)}}@media(max-width:900px){.modal-grid,.modal-hero-grid,.modal-metadata-grid{grid-template-columns:1fr;gap:2rem}.modal-body-padding{padding:1.5rem 1.75rem 2rem}.modal-title{font-size:1.6rem}}@media(max-width:600px){.modal-overlay{padding:.75rem;align-items:flex-end}.tech-modal{width:100vw;height:92vh;border-radius:14px 14px 0 0;max-width:100%}.modal-body-padding{padding:1.25rem 1.25rem 2rem}.modal-title{font-size:1.35rem;letter-spacing:1px}.modal-tagline{font-size:.9rem;margin-bottom:1.25rem}.modal-carousel{margin-bottom:1.5rem}.close-button{top:.75rem;right:.75rem;width:30px;height:30px;font-size:1rem}.tag{font-size:.68rem;padding:.25rem .55rem}.modal-header-image{max-height:30vh}.modal-grid,.modal-hero-grid,.modal-metadata-grid,.missions-list{grid-template-columns:1fr;gap:1.5rem}.modal-metadata-grid{margin-bottom:1.5rem;padding-bottom:1.25rem}.missions-list{gap:.75rem;margin-bottom:1.5rem}.modal-hero-grid{text-align:center}.modal-hero-right{order:-1}.modal-hero-img{max-height:28vh}.modal-meta{justify-content:center}.modal-title{padding-right:0}}.demo-link-button{background:linear-gradient(135deg,#00f2fe,#4facfe);color:#0c0d14!important;border:none;padding:.65rem 1.6rem;font-family:var(--font-display);font-size:.85rem;font-weight:800;text-transform:uppercase;letter-spacing:1.5px;cursor:pointer;clip-path:polygon(10px 0,100% 0,100% calc(100% - 10px),calc(100% - 10px) 100%,0 100%,0 10px);transition:all .3s cubic-bezier(.16,1,.3,1);display:inline-flex;align-items:center;gap:8px;box-shadow:0 0 15px #4facfe59;text-decoration:none}.demo-link-button:hover{filter:brightness(1.15);box-shadow:0 0 25px #4facfebf;transform:translateY(-2px)}.demo-link-button:active{transform:translateY(0)}.modal-md{font-size:.95rem;line-height:1.7;color:#ffffffd9;margin-bottom:2rem;-webkit-hyphens:none;hyphens:none}.modal-md__para{margin-bottom:1rem}.modal-md__h1,.modal-md__h2,.modal-md__h3,.modal-md__h4,.modal-md__h5,.modal-md__h6{color:#fff;margin-top:2.25rem;margin-bottom:.85rem;font-family:var(--font-display);font-weight:700;text-align:left;-webkit-hyphens:none;hyphens:none}.modal-md>:first-child{margin-top:0}.modal-md__h1{font-size:1.6rem;border-bottom:1px solid rgba(255,255,255,.1);padding-bottom:.3rem}.modal-md__h2{font-size:1.4rem}.modal-md__h3{font-size:1.12rem;color:#fff;letter-spacing:.3px;padding-bottom:.5rem;border-bottom:1px solid rgba(255,255,255,.08)}.modal-md__h4{font-size:1rem;color:#ffffffeb}.modal-md__hr{border:none;border-top:1px dashed rgba(255,255,255,.15);margin:2rem 0 1.5rem}.modal-md__list{padding-left:1.5rem;margin-bottom:1rem}.modal-md__list--ul{list-style-type:square}.modal-md__list--ol{list-style-type:decimal}.modal-md__list-item{margin-bottom:.55rem;line-height:1.65;text-align:left}.modal-md__list-item::marker{color:var(--accent-color)}.inline-code{background:#ffffff14;color:#fa4;padding:.15rem .35rem;border-radius:4px;font-family:monospace;font-size:.85rem}.modal-hero-grid{display:grid;grid-template-columns:1.6fr 1fr;gap:2.5rem;margin-bottom:2rem;align-items:center}.modal-hero-left{display:flex;flex-direction:column}.modal-hero-right{width:fit-content;max-width:100%;margin:0 auto;overflow:hidden;border-radius:12px;border:1px solid rgba(255,255,255,.08);box-shadow:0 10px 30px #0006;background:#0a0a0d;display:flex;justify-content:center;align-items:center}.modal-hero-img{width:auto;max-width:100%;height:auto;max-height:min(34vh,300px);object-fit:contain;display:block;transition:transform .5s cubic-bezier(.16,1,.3,1)}.modal-hero-right:hover .modal-hero-img{filter:brightness(1.08)}.missions-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1rem;margin-bottom:2rem}.mission-item-card{background:var(--mission-card-bg);border:1px solid var(--mission-card-border);border-left:3px solid var(--accent-color);padding:1rem 1.25rem;border-radius:6px;transition:background .25s cubic-bezier(.16,1,.3,1),border-color .25s,transform .25s;display:flex;gap:.75rem;align-items:flex-start}.mission-item-card:hover{background:var(--surface-bg-hover);border-color:var(--surface-border);transform:translateY(-2px)}.mission-icon{color:var(--accent-color);flex-shrink:0;margin-top:2px;font-size:.95rem;font-weight:700}.mission-text{color:#ddd;font-size:.92rem;line-height:1.5;margin:0}@media(max-width:900px){.modal-grid,.modal-hero-grid,.modal-metadata-grid,.missions-list{grid-template-columns:1fr}.modal-hero-right{order:-1}}@media(max-width:600px){.modal-grid,.modal-hero-grid,.modal-metadata-grid,.missions-list{grid-template-columns:1fr;gap:1.5rem}.missions-list{gap:.75rem}.modal-hero-grid{text-align:center}.modal-hero-right{order:-1}.modal-hero-img{max-height:28vh}}.home-page{display:flex;flex-direction:column;width:100%}.main-content-container{max-width:1200px;margin:0 auto;padding:8rem 2rem;display:flex;flex-direction:column;gap:10rem}.hero-fullscreen{min-height:100vh;width:100%;display:flex;align-items:center;justify-content:center;position:relative;padding:0 5%;overflow:hidden}.hero-content-wrapper{display:grid;grid-template-columns:1.2fr 1fr;gap:4rem;align-items:center;max-width:1300px;width:100%;z-index:2}.hero-text-side{display:flex;flex-direction:column;align-items:flex-start}.telemetry-badge{background:#38bdf80d;border:1px solid rgba(56,189,248,.3);color:var(--accent-color);padding:.4rem 1rem;font-family:var(--font-display);font-size:.9rem;letter-spacing:2px;border-radius:4px;margin-bottom:1.5rem;text-transform:uppercase}.hero-name-massive{font-family:var(--font-display);font-size:clamp(4rem,8vw,6.5rem);font-weight:700;line-height:1;margin:0 0 .5rem;letter-spacing:-2px;text-transform:uppercase;color:#fff}.hero-name-massive .dot{font-size:.55em;vertical-align:baseline}.hero-role{font-family:var(--font-sans);font-size:clamp(1.2rem,2vw,1.8rem);font-weight:300;color:#ccc;margin-bottom:1.5rem}.highlight-text{color:var(--primary-color);font-style:italic}.hero-description{font-size:1.1rem;line-height:1.7;color:#888;max-width:500px;margin-bottom:2.5rem;border-left:2px solid rgba(56,189,248,.35);padding-left:1.5rem}.hero-action-bay{display:flex;gap:1.5rem;flex-wrap:wrap}.cta-button{padding:.85rem 2.2rem;font-family:var(--font-display);font-size:1rem;font-weight:700;text-transform:uppercase;letter-spacing:1.5px;border-radius:100px;cursor:pointer;transition:all .3s cubic-bezier(.16,1,.3,1);display:inline-flex;align-items:center;justify-content:center;gap:8px}.cta-button.primary{background:var(--accent-color);color:#08243a;border:1px solid var(--accent-color)}.cta-button.primary:hover{transform:translateY(-1px);background:#7dd3fc;border-color:#7dd3fc}.cta-button.secondary{background:#ffffff08;color:#fffffff2;border:1px solid rgba(255,255,255,.15);margin-left:0;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.cta-button.secondary:hover{background:#ffffff14;border-color:#ffffff4d;color:#fff;transform:translateY(-1px)}.cta-button .btn-icon{display:inline-block;font-size:1.1rem;transition:transform .25s cubic-bezier(.16,1,.3,1)}.cta-button.primary:hover .btn-icon{transform:translate(4px)}.cta-button.secondary:hover .btn-icon{transform:translateY(3px)}.icon{margin-right:8px}.hero-visual-side{display:flex;justify-content:center;align-items:center;position:relative}.apple-id-card{position:relative;width:280px;height:380px;border-radius:24px;padding:8px;background:var(--hero-card-bg);backdrop-filter:var(--hero-card-blur);-webkit-backdrop-filter:var(--hero-card-blur);border:1px solid var(--hero-card-border);box-shadow:var(--hero-card-shadow);transition:transform .6s cubic-bezier(.16,1,.3,1),box-shadow .6s ease;overflow:hidden;transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.apple-id-card:hover{transform:translate3d(0,-4px,0);box-shadow:0 40px 80px #0009,0 0 40px #38bdf81a,inset 0 1px #ffffff4d}.apple-id-photo-wrapper{width:100%;height:100%;border-radius:16px;overflow:hidden;position:relative;background:var(--secondary-color, #0b0c10)}.apple-id-photo{width:100%;height:100%;object-fit:cover;object-position:center;transition:transform .8s ease;filter:contrast(105%)}.apple-id-card:hover .apple-id-photo{transform:scale(1.015)}.apple-id-glare{position:absolute;top:0;left:-150%;width:50%;height:100%;background:linear-gradient(to right,#fff0,#ffffff14,#fff0);transform:skew(-25deg);animation:glare-sweep 7s infinite ease-in-out;pointer-events:none}@keyframes glare-sweep{0%{left:-150%}20%{left:200%}to{left:200%}}.scroll-indicator{position:absolute;bottom:2rem;left:50%;transform:translate(-50%);display:flex;flex-direction:column;align-items:center;gap:1rem;cursor:pointer;z-index:10;opacity:.6;transition:opacity .3s}.scroll-indicator:hover{opacity:1}.scroll-text{font-family:var(--font-display);font-size:.8rem;color:var(--accent-color);letter-spacing:3px;text-transform:uppercase}.scroll-line{width:2px;height:60px;background:#ffffff1a;position:relative;overflow:hidden}.scroll-line:after{content:"";position:absolute;top:0;left:0;width:100%;height:50%;background:var(--accent-color);animation:scrollDown 2s ease-in-out infinite}@keyframes scrollDown{0%{transform:translateY(-100%)}to{transform:translateY(200%)}}.mini-tag{font-size:.72rem;padding:.25rem .6rem;background:#ffffff0a;border:1px solid rgba(255,255,255,.09);border-radius:4px;color:#9ca3af;font-family:var(--font-sans);font-weight:500;text-transform:uppercase;letter-spacing:.5px}.card-soft-skills{display:flex;gap:.5rem;margin-top:1.2rem;flex-wrap:wrap}.parcours-split{display:grid;grid-template-columns:1fr 1fr;gap:4rem}.subsection-title{font-family:var(--font-display);text-transform:uppercase;font-size:1.8rem;color:var(--accent-color);margin-bottom:2rem;border-bottom:1px solid rgba(255,255,255,.05);padding-bottom:.5rem}.timeline-grid{display:flex;flex-direction:column;gap:2rem;position:relative;padding-left:40px}.timeline-grid:before{content:"";position:absolute;left:15px;top:10px;bottom:10px;width:1px;background:linear-gradient(to bottom,transparent,rgba(255,255,255,.28) 12%,rgba(255,255,255,.28) 88%,transparent)}.timeline-card:before{content:"";position:absolute;left:-30px;top:1.9rem;width:9px;height:9px;border-radius:50%;background:var(--bg-color);border:1.5px solid #6b7280;box-sizing:border-box;transition:border-color .3s ease,background .3s ease;z-index:2}.timeline-card:hover:before{background:var(--accent-color);border-color:var(--accent-color)}.passions-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:2.5rem}.iut-grid{display:grid;grid-template-columns:1fr 1fr;gap:2.5rem}.projects-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:2.5rem;perspective:1000px}.timeline-card{cursor:pointer;padding:1.5rem!important;position:relative}.timeline-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.8rem;padding-right:36px}.timeline-company{color:#fff;font-weight:700;font-size:1rem;text-transform:uppercase;letter-spacing:1px}.timeline-period{color:#a0a0ab;font-size:.85rem;font-weight:600}.timeline-title{letter-spacing:.2px;font-size:1.2rem;margin-bottom:.5rem}.timeline-desc{color:#888;font-size:.95rem;line-height:1.5}.formation-type-badge,.experience-type-badge{display:inline-block;padding:.3rem .8rem;background:#ffffff08;border:1px solid var(--glass-border);border-radius:4px;font-size:.75rem;text-transform:uppercase;margin-top:1.2rem;color:#ccc}.passion-card{padding:0!important;overflow:hidden;display:flex;flex-direction:column}.passion-image{width:100%;height:220px;overflow:hidden}.passion-image img{width:100%;height:100%;object-fit:cover;transition:transform .6s ease}.passion-card:hover{transform:translateZ(0)}.passion-card:hover .passion-image img{transform:none}.passion-content{padding:1.5rem}.passion-content p{line-height:1.6;color:#888}.iut-card{display:flex;flex-direction:column;height:100%}.iut-card:hover{transform:translateZ(0)}.iut-card h3{font-size:1.3rem;margin-bottom:1rem;color:#fff;line-height:1.3}.iut-desc{font-size:.95rem;color:#888;margin-bottom:2rem;line-height:1.6;flex-grow:1}.linked-projects-area{margin-top:2rem;padding-top:1.5rem;border-top:1px solid rgba(255,255,255,.05)}.linked-projects-area h4{font-size:.85rem;color:#9ca3af;text-transform:uppercase;letter-spacing:1px;margin-bottom:1rem}.linked-projects-pills{display:flex;flex-wrap:wrap;gap:.5rem}.project-pill{background:#38bdf814;color:var(--accent-color);padding:.4rem .95rem;border-radius:100px;font-size:.78rem;font-weight:600;cursor:pointer;border:1px solid rgba(56,189,248,.2);transition:all .25s cubic-bezier(.16,1,.3,1)}.project-pill:hover{background:#38bdf82e;border-color:#38bdf873;color:#fff;transform:translateY(-2px)}.loading-screen{height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--accent-color);font-family:var(--font-display);letter-spacing:3px}.loader-ring{width:50px;height:50px;border:2px solid transparent;border-top-color:var(--primary-color);border-right-color:var(--accent-color);border-radius:50%;animation:spin 1s linear infinite;margin-bottom:1rem}@media(max-width:992px){.hero-fullscreen{align-items:flex-start;padding-top:120px;padding-bottom:60px;height:auto}.hero-content-wrapper{grid-template-columns:1fr;text-align:center;margin-top:0}.hero-text-side{align-items:center}.hero-description{border-left:none;border-top:2px solid rgba(56,189,248,.35);padding-left:0;padding-top:1.5rem}.hero-action-bay{justify-content:center}.iut-grid{grid-template-columns:1fr}.apple-id-card{transform:scale(.9) translateZ(0);margin-top:2rem}.apple-id-card:hover{transform:scale(.9) translate3d(0,-3px,0)}.parcours-split{grid-template-columns:1fr;gap:3rem}}@media(max-width:768px){.hero-name-massive{font-size:2.5rem}.hero-role{font-size:1.1rem}.hero-description{font-size:.95rem}.main-content-container{padding:4rem 1.5rem;gap:6rem}.hero-action-bay{flex-direction:column;width:100%;gap:1rem}.primary-button,.secondary-button{width:100%;font-size:.9rem;padding:.6rem 1rem}.subsection-title{font-size:1.4rem}.apple-id-card{transform:scale(.8) translateZ(0);margin-top:1rem}.apple-id-card:hover{transform:scale(.8) translate3d(0,-5px,0)}.timeline-title{letter-spacing:.2px;font-size:1.1rem}.timeline-desc{font-size:.85rem}.timeline-company{font-size:.9rem}.timeline-header{flex-direction:column;align-items:flex-start;gap:.3rem}.timeline-period{font-size:.8rem}}@media(max-width:480px){.hero-name-massive{font-size:2rem}.hero-role{font-size:1rem}.timeline-grid{padding-left:32px}.timeline-card:before{left:-24.5px;top:1.6rem}.timeline-grid:before{left:12px}.hero-description{font-size:.9rem;padding-top:1rem}.main-content-container{padding:2rem 1rem;gap:3rem}.timeline-card{padding:1rem!important}.project-title{font-size:1.2rem}.project-desc{font-size:.85rem}.apple-id-card{transform:scale(.75) translateZ(0);margin-top:0}.apple-id-card:hover{transform:scale(.75) translate3d(0,-5px,0)}}.skill-info{display:flex;justify-content:space-between;align-items:center;margin-bottom:.8rem}.skill-label{display:flex;align-items:center;gap:.8rem}.skill-icon{width:22px;height:22px;object-fit:contain;filter:drop-shadow(0 0 5px rgba(56,189,248,.2))}.skill-name{color:#fff;font-weight:600;font-size:.95rem}.skill-percentage{color:#888;font-size:.85rem;font-weight:500}.skill-bar-bg{width:100%;height:6px;background:#ffffff0d;border-radius:10px;overflow:hidden;border:1px solid rgba(255,255,255,.03)}.skill-bar-fill{height:100%;background:linear-gradient(90deg,var(--primary-color),var(--accent-color));border-radius:10px;box-shadow:0 0 10px #38bdf84d;transition:width 1s cubic-bezier(.16,1,.3,1)}.show-more-container{display:flex;justify-content:center;margin-top:3rem;width:100%}.show-more-btn{background:transparent;color:var(--accent-color);border:1px solid rgba(56,189,248,.3);padding:.8rem 2.5rem;font-family:var(--font-display);font-size:.9rem;font-weight:600;text-transform:uppercase;letter-spacing:2px;border-radius:100px;cursor:pointer;transition:all .3s cubic-bezier(.16,1,.3,1);position:relative;overflow:hidden}.show-more-btn:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(56,189,248,.1),transparent);transition:left .5s}.show-more-btn:hover{background:#38bdf80d;border-color:var(--accent-color);box-shadow:0 0 20px #38bdf833;transform:translateY(-2px)}.show-more-btn:hover:before{left:100%}.projects-controls{display:flex;gap:1rem;align-items:center;margin-bottom:2rem;justify-content:flex-end;flex-wrap:wrap}.sort-select-wrapper{display:flex;align-items:center;gap:.5rem}.sort-select-label{font-size:.85rem;opacity:.7;font-family:var(--font-display);text-transform:uppercase;letter-spacing:1px}.custom-select-container{position:relative;min-width:140px;-webkit-user-select:none;user-select:none}.custom-select-trigger{width:100%;padding:.45rem 1rem;font-size:.85rem;background:var(--surface-bg);border:1px solid var(--surface-border);border-radius:6px;color:#fff;cursor:pointer;outline:none;display:flex;justify-content:space-between;align-items:center;gap:10px;transition:background .2s ease,border-color .2s ease}.custom-select-trigger:hover,.custom-select-trigger.open{border-color:var(--surface-border-hover);background:var(--surface-bg-hover)}.custom-select-chevron{font-size:.65rem;opacity:.6;transition:transform .2s ease}.custom-select-trigger.open .custom-select-chevron{transform:rotate(180deg)}.custom-select-options{position:absolute;top:calc(100% + 5px);left:0;right:0;background:var(--modal-bg);backdrop-filter:var(--surface-blur);-webkit-backdrop-filter:var(--surface-blur);border:1px solid var(--surface-border);border-radius:6px;overflow:hidden;z-index:100;box-shadow:0 10px 25px #00000080;animation:slideDown .15s ease-out}@keyframes slideDown{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}.custom-option{padding:.5rem 1rem;font-size:.85rem;color:#ddd;cursor:pointer;transition:all .2s ease;text-align:left}.custom-option:hover{background:#38bdf814;color:var(--accent-color)}.custom-option.selected{background:#38bdf826;color:var(--accent-color);font-weight:600}.fav-toggle-btn{padding:.4rem 1rem;font-size:.82rem;display:inline-flex;align-items:center;gap:6px;background:var(--btn-surface-bg);border:1px solid var(--btn-surface-border);color:var(--btn-surface-color);transition:background .25s ease,border-color .25s ease,color .25s ease,transform .25s ease;border-radius:6px;cursor:pointer}.fav-toggle-btn.active{background:#ffb3001f;border-color:#ffb300;color:#ffb300;box-shadow:0 0 10px #ffb30026}.fav-toggle-btn:hover{filter:brightness(1.1);transform:translateY(-1px)}#formations{padding-top:2rem}.section-spacer{height:6rem}.fav-toggle-icon{font-size:1rem}.iut-card__head{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;margin-bottom:.6rem}.iut-card__count{flex-shrink:0;font-size:.72rem;color:#8b93a3;font-variant-numeric:tabular-nums;white-space:nowrap}.project-pill--experience{border-color:#38bdf852;color:#7dd3fc}.project-pill--formation{border-color:#ffffff1f;color:#9ca3af}.project-pill--rest{border-style:dashed;color:#8b93a3}.project-pill--rest:hover{border-style:solid;color:var(--accent-color)}.contact-page{padding:120px 2rem 5rem;max-width:1100px;margin:0 auto;min-height:100vh}.contact-content{align-items:center;display:grid;grid-template-columns:350px 1fr;gap:3rem}.static-card:hover{transform:none!important;box-shadow:0 4px 30px #00000080!important;border-color:var(--glass-border)!important}.contact-info-card{display:flex;flex-direction:column;gap:2.5rem;height:fit-content;background:#0f0f1499}.info-card-title{font-family:var(--font-sans);font-weight:500;font-size:1.4rem;color:#fff;margin-bottom:.5rem}.info-item{display:flex;align-items:flex-start;gap:1.2rem}.info-icon{width:44px;height:44px;display:flex;justify-content:center;align-items:center;border-radius:12px;background:#38bdf80d;border:1px solid rgba(56,189,248,.15);color:var(--accent-color);flex-shrink:0;transition:all .3s ease}.info-icon svg{width:20px;height:20px}.info-item:hover .info-icon{background:#38bdf826;transform:translateY(-2px)}.info-text{display:flex;flex-direction:column;gap:.3rem;margin-top:.1rem}.info-text h4{font-family:var(--font-sans);font-weight:600;color:#fff;font-size:1.05rem}.info-text p{color:#999;font-size:.95rem;margin:0}.social-links a{color:var(--accent-color);text-decoration:none;transition:opacity .3s ease;font-weight:500}.social-links a:hover{opacity:.7}.social-links .separator{color:#8b93a3;margin:0 10px}.contact-form{display:flex;flex-direction:column;gap:1.8rem}.form-group-row{display:grid;grid-template-columns:1fr 1fr;gap:1.8rem}.form-group{display:flex;flex-direction:column;gap:.6rem}.form-group label{font-family:var(--font-sans);color:#bbb;font-size:.9rem;font-weight:500}.clean-input{background:#0000004d;border:1px solid rgba(255,255,255,.08);padding:1rem 1.2rem;border-radius:10px;color:#fff;font-family:var(--font-sans);font-size:1rem;transition:all .3s ease;width:100%}.clean-input::placeholder{color:#fff3}.clean-input:focus{outline:none;background:#00000080;border-color:var(--accent-color);box-shadow:0 0 0 1px var(--accent-color)}.submit-btn{margin-top:.5rem;align-self:flex-end}@media(max-width:992px){.contact-content{grid-template-columns:1fr;gap:2rem}}@media(max-width:768px){.form-group-row{grid-template-columns:1fr;gap:1.5rem}.submit-btn{width:100%}}.status-message{padding:1rem;border-radius:8px;font-size:.95rem;font-weight:500;text-align:center;margin-top:1rem;animation:slideUp .3s ease}.status-message.success{background:#38bdf81a;color:var(--accent-color);border:1px solid rgba(56,189,248,.2)}.status-message.error{background:#94a3b81a;color:var(--primary-color);border:1px solid rgba(148,163,184,.2)}@keyframes slideUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.submit-btn.loading{opacity:.7;cursor:not-allowed}.navbar{position:fixed;top:1.5rem;left:0;right:0;display:flex;justify-content:center;z-index:1000}.navbar-glass{background:var(--nav-bg);backdrop-filter:var(--nav-blur);-webkit-backdrop-filter:var(--nav-blur);border:1px solid var(--nav-border);padding:.5rem 2.2rem;border-radius:100px;display:flex;align-items:center;gap:2rem;box-shadow:var(--nav-shadow),0 4px 20px #0003;transition:border-color .3s ease,box-shadow .3s ease}.navbar:hover .navbar-glass{border-color:#38bdf838;box-shadow:var(--nav-shadow)}.nav-links{display:flex;gap:1.5rem;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:1.5px;font-family:var(--font-display);align-items:center}.nav-links a{position:relative;opacity:.7;padding:.3rem 0;transition:opacity .25s ease,color .25s ease}.nav-links a:hover{opacity:1;color:#fff}.nav-links a.active{opacity:1;color:var(--accent-color)}.nav-links a:after{content:"";position:absolute;bottom:-2px;left:0;width:100%;height:2px;background:linear-gradient(90deg,var(--primary-color),var(--accent-color));transform:scaleX(0);transform-origin:right;transition:transform .3s cubic-bezier(.16,1,.3,1);border-radius:2px}.nav-links a.active:after{transform:scaleX(1);transform-origin:left}.nav-logo{font-weight:800;font-size:1.1rem;letter-spacing:-.5px;text-transform:uppercase;font-family:var(--font-display);background:linear-gradient(135deg,#fff,#a0a0ab);-webkit-background-clip:text;-webkit-text-fill-color:transparent}.dot{color:var(--accent-color);-webkit-text-fill-color:var(--accent-color)}.lang-switcher{background:#ffffff0d;border:1px solid rgba(255,255,255,.1);color:#a0a0ab;padding:.35rem .75rem;border-radius:100px;cursor:pointer;font-size:.7rem;font-weight:700;transition:all .25s ease;margin-left:.5rem}.lang-switcher:hover{background:#ffffff1a;color:#fff;border-color:var(--accent-color);box-shadow:0 0 10px #38bdf833}@media(hover:none){.nav-links a:before,.lang-switcher:before,.nav-admin:before{content:"";position:absolute;inset:-11px -8px}.lang-switcher,.nav-admin{position:relative}}.nav-admin{display:inline-flex;align-items:center;gap:.35rem;margin-left:.5rem;padding:.35rem .7rem;border-radius:100px;background:#38bdf814;border:1px solid rgba(56,189,248,.25);color:#7dd3fc;font-size:.7rem;font-weight:700;letter-spacing:1px;text-decoration:none;transition:background .25s ease,border-color .25s ease,color .25s ease}.nav-admin:hover{background:#38bdf82e;border-color:#38bdf88c;color:#e0f2fe}.nav-admin svg{flex-shrink:0}@media(max-width:992px){.navbar-glass{padding:.5rem 1.5rem;gap:1.5rem}}@media(max-width:768px){.navbar{top:1rem}.navbar-glass{padding:.4rem 1rem;gap:1rem}.nav-links{gap:.7rem;font-size:.65rem}.nav-logo{font-size:.9rem}}@media(max-width:480px){.nav-links a:not(.nav-contact){display:none}.navbar-glass{gap:1rem}}.sky{position:absolute;top:0;left:0;right:0;height:100vh;z-index:-1;pointer-events:none;overflow:hidden;-webkit-mask-image:linear-gradient(to bottom,#000 0%,#000 55%,transparent 96%);mask-image:linear-gradient(to bottom,#000 0%,#000 55%,transparent 96%)}.sky__layer{position:absolute;top:0;left:0;border-radius:50%;background:transparent;will-change:opacity}.sky__layer--far{width:1px;height:1px;box-shadow:97.53vw 49.08vh #ffffff1a,67.59vw 94.02vh #ffffff29,75.71vw 38.82vh #ffffff42,57.66vw 77.13vh #ffffff29,34.28vw 75.32vh #ffffff24,50.71vw 3.18vh #ffffff26,1.49vw 12.13vh #fff3,34.67vw 93.66vh #ffffff45,65.7vw 76.96vh #ffffff26,85.8vw 9.08vh #ffffff42,3.62vw 23.93vh #ffffff3b,25.06vw 12.15vh #fff3,11.62vw 51.78vh #ffffff36,4.41vw 51.62vh #ffffff38,71.73vw 20.05vh #ffffff2e,33.09vw 26.17vh #ffffff42,42.2vw 46.98vh #ffffff1a,94.76vw 68.49vh #ffffff40,61.75vw 65.91vh #ffffff26,80.32vw 63.15vh #ffffff21,61.21vw 16.5vh #ffffff30,37.63vw 8.04vh #ffffff21,6.54vw 38.09vh #ffffff29,84.58vw 81.31vh #ffffff38,62.67vw 38.91vh #ffffff24,13.58vw 5.89vh #ffffff3b,35.43vw 8.39vh #ffffff29,46.6vw 50.46vh #ffffff42,87.42vw 61.67vh #ffffff47,14.98vw 35.75vh #ffffff36,66.34vw 45.38vh #ffffff1c,12.07vw 66.18vh #ffffff36,86.31vw 18.03vh #ffffff42,69.63vw 34.85vh #ffffff2e,1.67vw 62.73vh #ffffff21,93.61vw 11.61vh #ffffff42,23.71vw 89.11vh #ffffff1a,46.97vw 65.36vh #fff3,59.81vw 97vh #ffffff2e,33.07vw 32.63vh #ffffff47,20.83vw 39.48vh #ffffff2e,69.84vw 60.65vh #ffffff42,10.48vw 93.07vh #ffffff1c,20.95vw 16.77vh #ffffff1f,94.37vw 16.65vh #ffffff29,49.3vw 82.94vh #ffffff47,97.22vw 32.4vh #ffffff3b,96.59vw 76.12vh #ffffff47,79.19vw 97.35vh #ffffff24,57.6vw 9.11vh #ffffff1f,76.83vw 22.65vh #ffffff1c,34.81vw 49.16vh #ffffff2b,85.18vw 40.94vh #ffffff2b,43.56vw 66.56vh #ffffff3b,74.34vw 50.22vh #ffffff1f,30.25vw 67.03vh #ffffff42,41.16vw 84.04vh #ffffff36,84.8vw 52.13vh #ffffff40,53.46vw 96.54vh #ffffff30,5.03vw 98.13vh #fff3,59.45vw 46.73vh #ffffff38,43.42vw 37.61vh #ffffff3b,25.07vw 46.11vh #ffffff2b,24.14vw 62.89vh #ffffff38,80.4vw 10.46vh #ffffff24,40.1vw 26.68vh #ffffff45,38.18vw 89.03vh #ffffff2b,5.93vw 76.58vh #ffffff47,50.65vw 33.98vh #ffffff45,64.97vw 4.8vh #ffffff3b,15.35vw 24.94vh #ffffff29,13.16vw 79.74vh #ffffff3d,74.89vw 81.42vh #ffffff38,22.26vw 76.74vh #ffffff42,48.32vw 25.15vh #ffffff1c,95.09vw 87.27vh #ffffff38,89.37vw 91.7vh #ffffff29;animation:skyBreathe 11s ease-in-out infinite}.sky__layer--mid{width:1.5px;height:1.5px;box-shadow:26.21vw 62.79vh #ffffff47,70.09vw 12.29vh #ffffff38,77.09vw 90.07vh #ffffff5e,64.62vw 83.29vh #ffffff73,88.24vw 11.12vh #ffffff3d,21.16vw 17.68vh #ffffff4f,71.82vw 28.44vh #ffffff40,37.92vw 82.12vh #ffffff40,14.4vw 53.84vh #ffffff3b,2.99vw 79.15vh #ffffff4f,8.68vw 37.84vh #ffffff59,70.69vw 59.76vh #ffffff4a,28.4vw 29.67vh #ffffff63,25.22vw 78.52vh #ffffff4f,63vw 15.84vh #ffffff6e,63.71vw 58.7vh #ffffff3d,1.81vw 21.9vh #fff6,59.48vw 40.39vh #ffffff5c,88.6vw 29.91vh #ffffff61,46.74vw 68.04vh #ffffff5c,42.64vw 46.28vh #ffffff52,96.85vw 92.93vh #ffffff45,97.49vw 64.8vh #ffffff54;animation:skyBreathe 7.5s ease-in-out infinite -2.5s}.sky__layer--near{width:2px;height:2px;box-shadow:31.9vw 44.75vh #ffffff78,15.1vw 71.66vh #ffffff96,82.58vw 95.39vh #ffffffa8,65.74vw 45.4vh #ffffff8f,16.36vw 23.8vh #ffffff96,33.04vw 90.74vh #ffffffb3,71.12vw 17.75vh #ffffff8f,57.28vw 93.65vh #ffffff87;animation:skyBreathe 5s ease-in-out infinite -1s}@keyframes skyBreathe{0%,to{opacity:.75}50%{opacity:1}}.sky__shooting{position:absolute;top:-10%;width:90px;height:1px;background:linear-gradient(90deg,#fff0,#bae6fdd9);opacity:0;transform:rotate(35deg);will-change:transform,opacity}.sky__shooting:after{content:"";position:absolute;right:0;top:-.5px;width:2px;height:2px;border-radius:50%;background:#e0f2fe;box-shadow:0 0 6px 1px #bae6fdb3}.sky__shooting--a{left:12%;animation:skyShoot 27s linear infinite 6s}.sky__shooting--b{left:58%;animation:skyShoot 39s linear infinite 21s}.sky__shooting--c{left:78%;animation:skyShoot 34s linear infinite 33s}@keyframes skyShoot{0%{transform:translateZ(0) rotate(35deg);opacity:0}1%{opacity:0}2%{opacity:1}7%{opacity:1}9%{transform:translate3d(38vw,52vh,0) rotate(35deg);opacity:0}to{transform:translate3d(38vw,52vh,0) rotate(35deg);opacity:0}}@media(max-width:768px){.sky__layer--far{opacity:.5}.sky__shooting{display:none}}@media(prefers-reduced-motion:reduce){.sky__layer{animation:none}.sky__shooting{display:none}}
