@font-face{font-family:Aurora Monaco;src:url(/fonts/Monaco.otf)format("opentype");font-weight:400;font-style:normal;font-display:swap}:root{--bg:#05060b;--text:#d9d9d9;--text-secondary:#cbc6e6;--text-disabled:#8b8c91;--gray:#3e4151;--delimiter:#5a5a62;--blue:#73bff9;--purple:#d2befb;--orange:#f5ba60;--success:#dff3ac;--error:#edb3b6;--teal:#8fe3d6;--font:"Aurora Monaco", "Monaco", "Menlo", "JetBrains Mono", "SF Mono", ui-monospace, monospace;--size:16px;--margin-x:50px;--margin-top:30px;--row:30px;--header-row:40px;--section-gap:20px;--column:900px;--fade:.1s linear}*,:before,:after{box-sizing:border-box}html{background:var(--bg);color:var(--text);font:400 var(--size) / var(--row) var(--font);font-variant-numeric:tabular-nums;-webkit-font-smoothing:antialiased;-webkit-text-size-adjust:100%}body{padding:var(--margin-top) var(--margin-x) calc(var(--margin-top) * 2);margin:0}h1,h2,p,dl,dd,ul{font:inherit;margin:0;padding:0}::selection{background:var(--purple);color:var(--bg)}a,button{color:var(--text-disabled);font:inherit;cursor:pointer;transition:color var(--fade);background:0 0;border:0;padding:0;text-decoration:none}a:hover,a:focus-visible,button:hover,button:focus-visible{color:var(--text)}:focus-visible{outline:1px solid var(--delimiter);outline-offset:4px}.page{max-width:var(--column);margin:0 auto}.top{justify-content:space-between;align-items:flex-start;gap:var(--section-gap) 4ch;flex-wrap:wrap;display:flex}.top-right{height:var(--header-row);align-items:center;gap:2ch;display:flex}.lang{line-height:var(--header-row)}.icon{display:flex}.icon svg{fill:currentColor;width:22px;height:22px}h1{font-size:32px;line-height:var(--header-row)}h1 a,h1 a:hover{color:var(--text)}.subtitle{color:var(--text-disabled)}.section{margin-top:calc(var(--row) + var(--section-gap))}.section>h2{line-height:var(--header-row);color:var(--text-secondary);margin:0 0 10px -1ch}.row{min-height:var(--row);justify-content:space-between;gap:2ch;display:flex}.row dd{text-align:right}.projects{list-style:none}.projects li+li{margin-top:var(--section-gap)}.project{color:var(--text-disabled);display:block;position:relative}.project:before{content:"";top:calc(var(--row) / 2 - 4px);background:var(--gray);width:8px;height:8px;transition:background-color var(--fade);border-radius:50%;position:absolute;left:-22px}.project-head{justify-content:space-between;gap:2ch;display:flex}.project-name{color:var(--text);transition:color var(--fade)}.project-meta{color:var(--text);gap:2ch;display:flex}.year{margin-left:2ch}.project-desc{transition:color var(--fade);display:block}.project:hover:before,.project:focus-visible:before{background:var(--accent)}.project:hover .project-name,.project:focus-visible .project-name{color:var(--accent)}.project:hover .project-desc,.project:focus-visible .project-desc{color:var(--text)}.back{margin-top:calc(var(--row) + var(--section-gap));display:inline-block}.back+.section{margin-top:var(--section-gap)}.pager-prev,.pager-next{--gutter:calc((100vw - var(--column)) / 2);position:fixed;top:50%}@media (width<=1240px){.pager{display:none}}.pager-prev{left:calc(var(--gutter) / 2);transform:translate(-50%,-50%)}.pager-next{right:calc(var(--gutter) / 2);transform:translate(50%,-50%)}a.pager-prev:hover,a.pager-prev:focus-visible,a.pager-next:hover,a.pager-next:focus-visible{color:var(--to)}span.pager-prev,span.pager-next{color:var(--gray);cursor:default;-webkit-user-select:none;user-select:none}.stack{gap:2ch;display:flex}.tech{align-items:center;gap:1ch;display:inline-flex}.tech svg{width:16px;height:16px;fill:var(--tech)}.tech-rust{--tech:#dea584}.tech-ts{--tech:#7fb0e8}.tech-cpp{--tech:#9cbfe6}.tech-vulkan{--tech:#e58a8d}.tech-python{--tech:#f2d16b}.tech-pytorch{--tech:#f0907c}.tech-sklearn{--tech:var(--orange)}h2 .accent{color:var(--accent)}.body{margin-top:var(--section-gap)}.shot{width:100%;height:auto;margin:calc(var(--section-gap) * 2) 0;cursor:zoom-in;display:block}.lightbox{background:var(--bg);cursor:zoom-out;border:0;width:100vw;max-width:none;height:100dvh;max-height:none;margin:0;padding:0}.lightbox[open]{display:flex}.lightbox img{max-height:100%;margin:auto}html[lang=en] .story[lang=fr],html[lang=fr] .story[lang=en]{display:none}.story{margin-top:calc(var(--section-gap) * 2)}.story h3{margin:calc(var(--row) + var(--section-gap)) 0 10px;font:inherit;color:var(--text-secondary);text-transform:uppercase}.story p+p{margin-top:var(--section-gap)}.story sup{font-size:.7em;line-height:0}.story figure{margin:calc(var(--section-gap) * 2) 0}.story .shot{margin:0}.story figcaption{color:var(--text-disabled);margin-top:10px}@media (width<=700px){:root{--margin-x:24px}h1{font-size:26px}.top{position:relative}h1{padding-right:6ch}.lang{position:absolute;top:0;right:0}.project-head,.project-meta{flex-wrap:wrap;row-gap:0}.project:before{width:6px;height:6px;left:-16px;top:calc(var(--row) / 2 - 3px)}}@media (prefers-reduced-motion:reduce){*,:before{transition:none!important}}.place{align-items:center;gap:1.5ch;display:flex}.flag{flex:none;width:21px;height:14px}
