:root{--paper:#eef1f2;--ink:#18212b;--slate:#5b6672;--rule:#c9d1d7;--cobalt:#2b4fd6;--running:#1c8c68;--wash:#e1e7f8;--surface:#f7f9f9;--sec-skills:#2b4fd6;--sec-xp:#0d7166;--sec-edu:#7b3fc2;--sec-perso:#9a5400;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--paper:#141a21;--ink:#e6ebef;--slate:#9aa6b2;--rule:#2c3641;--cobalt:#7d97ff;--running:#4cc79c;--wash:#1e2843;--surface:#19212a;--sec-skills:#7d97ff;--sec-xp:#3cc4b4;--sec-edu:#b89bff;--sec-perso:#f2a848;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}:root[data-theme=dark]{--paper:#141a21;--ink:#e6ebef;--slate:#9aa6b2;--rule:#2c3641;--cobalt:#7d97ff;--running:#4cc79c;--wash:#1e2843;--surface:#19212a;--sec-skills:#7d97ff;--sec-xp:#3cc4b4;--sec-edu:#b89bff;--sec-perso:#f2a848;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--paper);color:var(--ink);font-variation-settings:"wdth" 100;margin:0;font-family:Archivo,system-ui,sans-serif;font-size:1rem;line-height:1.55}a{color:var(--cobalt);text-underline-offset:.18em;text-decoration-thickness:1px}a:hover{text-decoration-thickness:2px}:focus-visible{outline:2px solid var(--cobalt);outline-offset:3px;border-radius:2px}ul{margin:0;padding:0;list-style:none}h1,h2,h3,p{margin:0}.wrap{max-width:1200px;margin:0 auto;padding:0 16px}@media (width>=720px){.wrap{padding:0 40px}}.hero{border-bottom:1px solid var(--rule);padding:48px 0 32px}.hero>.wrap{container-type:inline-size}.name{font-variation-settings:"wdth" 125;letter-spacing:-.02em;text-transform:uppercase;font-size:clamp(1.6rem,9vw,6.9rem);font-weight:820;line-height:.88}@supports (font-size:1cqi){.name{font-size:clamp(1.6rem,9.90099cqi,6.9rem)}}.name span{display:block}.role{font-variation-settings:"wdth" 88;letter-spacing:-.005em;margin-top:20px;font-size:clamp(1.25rem,2.6vw,1.95rem);font-weight:500}.hero-meta{color:var(--slate);flex-wrap:wrap;gap:8px 32px;margin-top:16px;display:flex}.hero-title{color:var(--ink);font-weight:600}.hero>.wrap{position:relative}.hero-controls{gap:8px;display:flex;position:absolute;top:-36px;right:16px}@media (width>=720px){.hero-controls{right:40px}}.hero-toggle{font:inherit;color:var(--slate);border:1px solid var(--rule);cursor:pointer;background:0 0;border-radius:999px;align-items:center;padding:3px 12px;font-size:.85rem;font-weight:550;transition:border-color .15s,color .15s;display:inline-flex;position:relative}.hero-toggle .ico{vertical-align:0;margin-right:.4em}.hero-toggle:before,.skill:before,.filter-status button:before,.arch summary:after{content:"";height:44px;position:absolute;top:50%;left:0;right:0;transform:translateY(-50%)}.hero-toggle:hover{color:var(--ink);border-color:var(--cobalt)}.hero-actions{flex-wrap:wrap;align-items:center;gap:8px 16px;margin-top:24px;display:flex}.pdf-button{max-width:100%;min-height:44px;font:inherit;text-align:start;color:var(--paper);background:var(--cobalt);border:1px solid var(--cobalt);cursor:pointer;border-radius:999px;justify-content:center;align-items:center;padding:8px 20px;font-size:.95rem;font-weight:600;line-height:1.25;transition:background-color .15s,border-color .15s,color .15s,box-shadow .15s;display:inline-flex}.pdf-button .ico{vertical-align:0;margin-right:.5em}.pdf-button:hover{box-shadow:0 0 0 3px var(--wash)}.pdf-button[aria-busy=true]{cursor:progress;color:var(--cobalt);background:var(--wash)}.pdf-status{color:var(--slate);font-size:.9rem}.pdf-status:empty{display:none}.empty{color:var(--slate);max-width:60ch;margin-top:16px}.grid{grid-template-columns:minmax(0,1fr);gap:0;display:grid}.page{overflow-x:clip}@media (width>=960px){.grid{grid-template-columns:300px minmax(0,1fr);gap:64px}.rail{align-self:start;max-height:100vh;position:sticky;top:0;overflow-y:auto}}.rail{min-width:0;padding:28px 0 8px}@media (width>=960px){.rail{margin-inline:-6px;padding-inline:6px}}.rail-block+.rail-block{margin-top:32px}.rail h2,.main h2{font-variation-settings:"wdth" 100;color:var(--slate);margin-bottom:12px;font-size:.95rem;font-weight:700}.main h2{color:var(--ink);font-variation-settings:"wdth" 112;letter-spacing:-.01em;margin-bottom:4px;font-size:1.56rem;font-weight:750}.skills-intro{color:var(--slate);max-width:34ch;margin:-6px 0 12px;font-size:.9rem}.skills{flex-wrap:wrap;gap:8px;display:flex}.skill{font:inherit;color:var(--ink);border:1px solid var(--rule);cursor:pointer;background:0 0;border-radius:999px;padding:6px 14px;font-size:.95rem;font-weight:550;transition:background-color .15s,border-color .15s,color .15s;position:relative}.skill:hover{border-color:var(--cobalt)}.skill[aria-pressed=true]{background:var(--cobalt);border-color:var(--cobalt);color:var(--paper)}.filter-status{min-height:1.5em;color:var(--slate);margin-top:15px;font-size:.9rem}.filter-status button{font:inherit;color:var(--cobalt);text-underline-offset:.18em;cursor:pointer;background:0 0;border:0;padding:0;text-decoration:underline;position:relative}@media (width<=959px){.rail-skills{z-index:5;--bleed:16px;margin:0 calc(-1 * var(--bleed));padding:7px var(--bleed);background:var(--paper);border-bottom:1px solid var(--rule);position:sticky;top:0}.rail-skills h2,.skills-intro{display:none}.skills{--fade:32px;scrollbar-width:none;min-width:0;padding:5px var(--bleed);margin:0 calc(-1 * var(--bleed));scroll-padding-inline:max(var(--fade), var(--bleed));overscroll-behavior-x:contain;flex-wrap:nowrap;overflow-x:auto}.skills::-webkit-scrollbar{display:none}.skill{flex:none}.filter-status{margin:9px 0 5px}.filter-status:empty{display:none}}@media (width>=720px) and (width<=959px){.rail-skills{--bleed:40px}}.contact-note{color:var(--slate);max-width:34ch;margin:-5px 0 10px;font-size:.9rem}.contact li+li{margin-top:6px}.contact a{color:var(--ink);-webkit-text-decoration-color:var(--rule);text-decoration-color:var(--rule)}.contact a:hover{color:var(--cobalt);text-decoration-color:currentColor}.ico{vertical-align:-.2em;flex:none;width:1.1em;height:1.1em;margin-right:.5em;display:inline-block}.contact .has-copy{flex-wrap:wrap;align-items:center;gap:2px 10px;display:flex}.contact .has-copy>a{overflow-wrap:anywhere;min-width:0}.copy{font:inherit;color:var(--slate);border:1px solid var(--rule);cursor:pointer;text-align:start;background:0 0;border-radius:999px;flex:none;align-items:center;max-width:100%;padding:2px 10px;font-size:.8rem;font-weight:550;line-height:1.4;transition:border-color .15s,color .15s;display:inline-flex;position:relative}.copy:hover,.copy[data-state=done]{color:var(--ink);border-color:var(--cobalt)}.copy .ico{vertical-align:0;width:1em;height:1em;margin-right:.4em}.copy-labels{display:inline-grid}.copy-labels>span{grid-area:1/1}.copy[data-state=idle] .copy-labels>span+span,.copy[data-state=done] .copy-labels>span:first-child{visibility:hidden}.visually-hidden{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.muted{color:var(--slate)}@media screen and (width<=959px),screen and (pointer:coarse){.contact li+li{margin-top:0}.contact a{padding:10px 0;display:inline-block}.copy{margin-block:10px}.copy:before{content:"";height:44px;position:absolute;top:50%;left:-1px;right:-1px;transform:translateY(-50%)}}.main{min-width:0;padding:28px 0 80px}.entry,.project{scroll-margin-top:120px}@media (width<=959px){.entry,.project{scroll-margin-top:128px}}.section+.section{margin-top:56px}.entries{border-top:1px solid var(--rule);margin-top:12px}.entry{border-bottom:1px solid var(--rule);grid-template-columns:minmax(0,1fr);gap:4px 32px;padding:24px 0;transition:opacity .2s;display:grid}@media (width>=720px){.entry{grid-template-columns:9.5rem minmax(0,1fr)}}.when{color:var(--slate);font-variant-numeric:tabular-nums;font-weight:500}.when .now{color:var(--running);font-weight:650}.when .now:before{content:"";vertical-align:.12em;background:currentColor;border-radius:50%;width:7px;height:7px;margin-right:6px;display:inline-block}.entry h3{font-variation-settings:"wdth" 100;font-size:1.25rem;font-weight:700;line-height:1.25}.where{color:var(--slate);margin-top:2px}.body{min-width:0;max-width:66ch}.body>p,.points{margin-top:12px}.points li{padding-left:18px;position:relative}.points li+li{margin-top:4px}.points li:before{content:"";background:var(--slate);width:7px;height:1px;position:absolute;top:.72em;left:2px}.tags{flex-wrap:wrap;gap:6px;margin-top:14px;display:flex}.tag{background:var(--surface);border:1px solid var(--rule);color:var(--slate);border-radius:4px;padding:1px 9px;font-size:.8rem;font-weight:550}.tag.hit{background:var(--cobalt);border-color:var(--cobalt);color:var(--paper)}.competences{border-top:1px solid var(--rule);max-width:66ch;margin:12px 0 0;padding-top:16px}.competences dt{font-weight:700}.competences dd{margin:2px 0 0}.competences dd+dt{margin-top:12px}.projects{border-left:2px solid var(--rule);margin-top:18px}.project{padding-left:18px;transition:opacity .2s}.project+.project{margin-top:4px}.project summary{cursor:pointer;align-items:baseline;gap:12px;min-height:44px;padding:8px 0;list-style:none;display:flex}.project summary::-webkit-details-marker{display:none}.project summary:before{content:"";border-left:6px solid var(--slate);border-top:5px solid #0000;border-bottom:5px solid #0000;flex:none;width:0;height:0;transition:transform .15s;transform:translateY(-1px)}.project[open] summary:before{transform:translateY(-1px)rotate(90deg)}.project-name{font-size:1.08rem;font-weight:700}.project summary:hover .project-name{color:var(--cobalt)}.project-body{padding:0 0 16px 18px}.arch{margin-top:14px}.arch summary{cursor:pointer;width:fit-content;max-width:100%;min-height:44px;color:var(--cobalt);border:1px solid color-mix(in srgb, var(--accent) 42%, var(--rule));border-left:3px solid var(--accent);background:color-mix(in srgb, var(--accent) 8%, var(--surface));box-shadow:0 0 0 1px color-mix(in srgb, var(--accent) 10%, transparent);border-radius:4px;align-items:center;gap:10px;padding:7px 14px 7px 12px;font-weight:650;list-style:none;transition:background-color .15s,border-color .15s,box-shadow .15s,transform .15s;display:flex;position:relative}.arch summary::-webkit-details-marker{display:none}.arch summary:before{content:"";border-top:5px solid #0000;border-bottom:5px solid #0000;border-left:6px solid;flex:none;width:0;height:0;transition:transform .15s;transform:translateY(-1px)}.arch[open] summary:before{transform:translateY(-1px)rotate(90deg)}.arch summary:hover,.arch[open] summary{background:color-mix(in srgb, var(--accent) 14%, var(--surface));border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb, var(--accent) 16%, transparent)}.arch summary:hover{transform:translateY(-1px)}.project-body>p{max-width:66ch}.is-filtering .entry.dim,.is-filtering .project.dim{opacity:.32}.is-filtering .entry.dim:hover,.is-filtering .project.dim:hover{opacity:.7}.entry.match{box-shadow:inset 3px 0 0 var(--cobalt);margin-left:-19px;padding-left:16px}@media (width<=719px){.entry.match{margin-left:-16px;padding-left:13px}}.project.match{border-left:2px solid var(--cobalt);margin-left:-2px}figure{margin:18px 0 4px}.diagram-scroll{overscroll-behavior-x:contain;scrollbar-width:thin;min-width:0;max-width:640px;overflow-x:auto}.diagram-scroll:focus-visible{outline-offset:-2px}:is(.diagram-scroll,.skills)[data-fade=end]{-webkit-mask-image:linear-gradient(to right, #000 calc(100% - var(--fade,40px)), transparent);-webkit-mask-image:linear-gradient(to right, #000 calc(100% - var(--fade,40px)), transparent);mask-image:linear-gradient(to right, #000 calc(100% - var(--fade,40px)), transparent)}:is(.diagram-scroll,.skills)[data-fade=start]{-webkit-mask-image:linear-gradient(to left, #000 calc(100% - var(--fade,40px)), transparent);-webkit-mask-image:linear-gradient(to left, #000 calc(100% - var(--fade,40px)), transparent);mask-image:linear-gradient(to left, #000 calc(100% - var(--fade,40px)), transparent)}:is(.diagram-scroll,.skills)[data-fade=start\ end]{-webkit-mask-image:linear-gradient(to right, transparent, #000 var(--fade,40px), #000 calc(100% - var(--fade,40px)), transparent);-webkit-mask-image:linear-gradient(to right, transparent, #000 var(--fade,40px), #000 calc(100% - var(--fade,40px)), transparent);mask-image:linear-gradient(to right, transparent, #000 var(--fade,40px), #000 calc(100% - var(--fade,40px)), transparent)}.diagram-scroll:focus-visible{-webkit-mask-image:none;mask-image:none}.skills:has(:focus-visible){-webkit-mask-image:none;mask-image:none}.diagram{width:100%;min-width:520px;max-width:640px;height:auto;display:block}@media (width>=720px){.entry .arch>figure{margin-left:calc(-9.5rem - 32px)}}.diagram .box{fill:var(--surface);stroke:var(--rule);stroke-width:1.2px}.diagram .box.key{stroke:var(--cobalt)}.diagram .lbl{fill:var(--ink);font:600 13px Archivo,sans-serif}.diagram .sub{fill:var(--slate);font:400 11.5px Archivo,sans-serif}.diagram .wire{stroke:var(--slate);stroke-width:1.2px;fill:none}.diagram .wire.logs{stroke-dasharray:3 3}.diagram .head{fill:var(--slate)}figcaption{color:var(--slate);max-width:60ch;margin-top:8px;font-size:.88rem}.section{--accent:var(--slate)}.section--skills{--accent:var(--sec-skills)}.section--xp{--accent:var(--sec-xp)}.section--edu{--accent:var(--sec-edu)}.section--perso{--accent:var(--sec-perso)}.main .section>h2{color:var(--accent);align-items:center;gap:12px;display:flex}.main .section>h2:before{content:"";background:currentColor;border-radius:2px;flex:none;width:4px;height:.8em}.section .entries,.section .competences{border-top:2px solid var(--accent)}.section .when{color:var(--accent)}.section .points li:before{background:var(--accent)}.section .competences dt{color:var(--accent)}.section .tag{border-color:color-mix(in srgb, var(--accent) 30%, var(--rule));background:color-mix(in srgb, var(--accent) 7%, var(--surface))}.section .tag.hit{background:var(--accent);border-color:var(--accent);color:var(--paper)}.section .projects{border-left-color:color-mix(in srgb, var(--accent) 45%, var(--rule))}.section .project summary:before{border-left-color:var(--accent)}.section .project summary:hover .project-name,.section .arch summary{color:var(--accent)}.section .entry.match{box-shadow:inset 3px 0 0 var(--accent)}.section .project.match{border-left-color:var(--accent)}.section .diagram .box.key{stroke:var(--accent)}.langs li+li{margin-top:4px}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important}}@media print{:root,:root[data-theme],:root:not([data-theme=light]){--paper:#fff;--ink:#18212b;--slate:#5b6672;--rule:#c9d1d7;--cobalt:#2b4fd6;--running:#1c8c68;--wash:#e1e7f8;--surface:#fff;--sec-skills:#2b4fd6;--sec-xp:#0d7166;--sec-edu:#7b3fc2;--sec-perso:#9a5400;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}.hero-controls,.hero-actions{display:none}body{font-size:10.5pt}.hero{padding-top:0}.name{font-size:40pt}.grid{grid-template-columns:200px minmax(0,1fr);gap:28px}.rail{max-height:none;position:static}.rail-skills h2{display:block}.rail-skills{background:0 0;border:0;margin:0;padding:0;position:static}.skills{flex-wrap:wrap;margin:0;padding:0;overflow:visible}.skills[data-fade]{-webkit-mask-image:none;mask-image:none}.skills-intro,.filter-status,.copy,.ico{display:none}.skill{padding:2px 8px;border-color:var(--rule)!important;color:var(--ink)!important;background:0 0!important}.entry,.project{break-inside:avoid;opacity:1!important;box-shadow:none!important;margin-left:0!important;padding-left:0!important}.project-body{display:block!important}figure{display:none}a{color:var(--ink);text-decoration:none}}
