@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-latin-400-normal-C38fXH4l.woff2) format("woff2"),url(/assets/inter-latin-400-normal-CyCys3Eg.woff) format("woff")}@font-face{font-family:Inter;font-style:italic;font-display:swap;font-weight:400;src:url(/assets/inter-latin-400-italic-D1l0FflY.woff2) format("woff2"),url(/assets/inter-latin-400-italic-BmFrN47l.woff) format("woff")}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-latin-600-normal-LgqL8muc.woff2) format("woff2"),url(/assets/inter-latin-600-normal-CiBQ2DWP.woff) format("woff")}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/inter-latin-700-normal-Yt3aPRUw.woff2) format("woff2"),url(/assets/inter-latin-700-normal-BLAVimhd.woff) format("woff")}@font-face{font-family:Bricolage Grotesque;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/bricolage-grotesque-latin-500-normal-DEDBoLFO.woff2) format("woff2"),url(/assets/bricolage-grotesque-latin-500-normal-CV-uA8Lw.woff) format("woff")}@font-face{font-family:Bricolage Grotesque;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/bricolage-grotesque-latin-600-normal-nxTgbNFE.woff2) format("woff2"),url(/assets/bricolage-grotesque-latin-600-normal-Bw0J83-2.woff) format("woff")}@font-face{font-family:Bricolage Grotesque;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/bricolage-grotesque-latin-700-normal-gtcctNPv.woff2) format("woff2"),url(/assets/bricolage-grotesque-latin-700-normal-DvJDmrLu.woff) format("woff")}:root{--font-display: "Bricolage Grotesque", system-ui, sans-serif;--font-body: "Inter", system-ui, sans-serif;--font-mono: ui-monospace, "Cascadia Code", "SFMono-Regular", Consolas, monospace;--accent-color: #0066ff;--accent-hover: #004dcc;--text-dark: #242629;--text-medium: #242629;--text-muted: #626971;--border-color: #e1e4e8;--surface-subtle: #f6f7f9}*{box-sizing:border-box}html{color-scheme:light;scroll-padding-top:1.5rem;font-size:112.5%}body{max-width:920px;margin:0 auto;padding:2.75rem 1.5rem;background:#fff;color:var(--text-dark);font:1rem/1.75 var(--font-body)}[hidden],.lang-fr .en-text,.lang-en .fr-text{display:none!important}h1,h2,h3,h4,h5,h6{font-family:var(--font-display);line-height:1.3;text-wrap:balance;color:var(--text-dark)}h1{margin:0;font-size:clamp(1.8rem,4vw,2.35rem);font-weight:700;letter-spacing:-.035em}h2{font-size:1.4rem;font-weight:600}h3{font-size:1.2rem;font-weight:600}p{margin:0 0 1rem}a{color:var(--accent-color);text-decoration:none;overflow-wrap:anywhere}a:hover{color:var(--accent-hover)}button{font:inherit;cursor:pointer}:focus-visible{outline:3px solid var(--accent-color);outline-offset:4px;border-radius:2px}main:focus{outline:none}main{min-width:0;overflow-wrap:anywhere}section{margin-bottom:2.5rem}.site-nav{position:relative;display:flex;align-items:center;justify-content:center;margin-bottom:3.5rem;font:600 .9rem/1.4 var(--font-display);min-height:52px}.nav-links{display:flex;align-items:center;justify-content:center;gap:.15rem;padding:.3rem;border:1px solid var(--border-color);border-radius:999px;background:var(--surface-subtle);box-shadow:0 1px 2px #1218280d}.nav-links a{display:inline-flex;align-items:center;justify-content:center;min-height:38px;padding:0 .9rem;border-radius:999px;color:var(--text-dark);text-decoration:none;white-space:nowrap;transition:color .14s ease,background-color .14s ease,box-shadow .14s ease}.nav-links a[aria-current=page]{color:var(--accent-color);background:#fff;box-shadow:0 1px 4px #1218281a}.nav-links a:hover{background:#fff}.lang-switch{position:absolute;right:0;min-width:44px;min-height:44px;padding:.4rem;border:1px solid var(--border-color);border-radius:999px;background:#fff;color:var(--text-medium);font:600 .75rem var(--font-body);transition:color .14s ease,border-color .14s ease,background-color .14s ease}.lang-switch:hover{color:var(--accent-color);background:var(--surface-subtle);border-color:#c9ced6}.skip-link{position:absolute;left:1rem;top:0;padding:.75rem 1rem;background:#fff;transform:translateY(-150%);z-index:10}.skip-link:focus{transform:translateY(0)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.home-page{width:100%;padding-top:1rem}.profile-header{display:grid;grid-template-columns:180px minmax(0,1fr);align-items:center;gap:clamp(2rem,6vw,4rem);margin:0 0 3.5rem}.portrait-frame{display:block;width:180px;aspect-ratio:1;overflow:hidden;border-radius:43% 57% 54% 46%/39% 44% 56% 61%;background:var(--surface-subtle);transform:rotate(-1.5deg)}.markdown-body .home-portrait{width:100%;height:100%;object-fit:cover;object-position:center 58%;border-radius:0;margin:0;transform:scale(1.3);transform-origin:center 58%}.profile-identity{min-width:0}.profile-identity h1{margin:0 0 .55rem;font-size:clamp(2rem,5vw,3.1rem);line-height:1;letter-spacing:-.05em;white-space:nowrap}.profile-links{display:flex;align-items:center;gap:.3rem}.profile-links a{display:inline-flex;align-items:center;justify-content:center;width:42px;height:42px;border-radius:50%;color:var(--text-dark);transition:filter .14s ease,background-color .14s ease}.profile-links a:hover{color:inherit;background:var(--surface-subtle);filter:brightness(.82)}.profile-links svg{width:1.1rem;height:1.1rem}.profile-links .profile-link-email{color:#ea4335}.profile-links .profile-link-resume{width:auto;margin-left:.25rem;padding:0 .7rem;gap:.4rem;border-radius:999px;color:var(--accent-color);font-size:.78rem;font-weight:700}.profile-links .profile-link-github{color:#181717}.profile-links .profile-link-linkedin{color:#0a66c2}.home-body{width:100%}.home-body li::marker{color:var(--accent-color)}.section-title{font-size:1.05rem;margin:0 0 1rem;letter-spacing:.025em}.section-title:before{content:"# ";color:var(--text-muted)}.markdown-body{color:var(--text-medium)}.markdown-body a{text-decoration:none}.markdown-body a:hover{background:var(--surface-subtle)}.markdown-body>:first-child{margin-top:0}.markdown-body>:last-child{margin-bottom:0}.markdown-body h2{margin:2.25rem 0 .85rem}.markdown-body h3{margin:1.75rem 0 .75rem}.markdown-body ul,.markdown-body ol{padding-left:1.4rem;margin:.75rem 0 1.25rem}.markdown-body li{margin-bottom:.4rem}.markdown-body blockquote{border-left:3px solid var(--accent-color);background:var(--surface-subtle);margin:1.5rem 0;padding:1rem 1.25rem}.markdown-body blockquote>:last-child{margin-bottom:0}.markdown-body img{display:block;max-width:100%;height:auto;border-radius:.5rem;margin:1.5rem auto}.markdown-body figure{margin:1.5rem 0}figcaption{text-align:center;color:var(--text-muted);font-size:.875rem;margin-top:.7rem}audio,video{width:100%;max-width:100%}.news-year{margin-bottom:1.75rem}.news-year h2{margin:0 0 .65rem}.news-year-items{list-style:none;margin:0;padding:0 0 0 1rem}.news-item{display:grid;grid-template-columns:5.5rem minmax(0,1fr);gap:1rem;padding:.3rem 0;font-size:1em;line-height:1.65}.news-date,.blog-date,.page-header time{font:.8rem/1.7 var(--font-body);font-variant-numeric:tabular-nums;color:var(--text-muted)}.news-date{padding-top:.2rem}.article-back{display:inline-flex;align-items:center;gap:.45rem;margin-bottom:1.35rem;font:500 .82rem/1.4 var(--font-body);text-decoration:none}.article-back svg{width:1.45rem;height:1.1rem;overflow:visible;fill:none;stroke:var(--accent-color);stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.article-back:hover{color:var(--accent-color)}.page-header{margin-bottom:2rem}.page-header time{display:block;margin-bottom:.65rem}.blog-entry{display:grid;grid-template-columns:145px minmax(0,1fr);align-items:center;gap:1.25rem;padding:.65rem 0}.blog-thumb{display:block;aspect-ratio:16 / 9;overflow:hidden;border-radius:.55rem;background:var(--surface-subtle)}.blog-thumb img{display:block;width:100%;height:100%;margin:0;object-fit:cover;transition:transform .16s ease}.blog-thumb:hover img{transform:scale(1.04)}.blog-entry-content{min-width:0}.blog-title{margin:0;font:400 1em/1.5 var(--font-body)}.blog-title a{color:var(--text-dark);text-decoration:none}.blog-title a:hover,.blog-title a:focus-visible{color:var(--text-dark);background:var(--surface-subtle)}.blog-draft,.blog-post-status{display:inline-block;font:.7rem/1.5 var(--font-mono);color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em}.blog-draft{margin-left:.6rem}.blog-post-status{margin-bottom:.5rem}.resume-header{display:flex;align-items:center;justify-content:space-between;gap:1.5rem;margin-bottom:1.25rem}.resume-header h1{margin-bottom:.4rem}.resume-header p{margin-bottom:0;color:var(--text-muted)}.resume-download{display:inline-flex;align-items:center;justify-content:center;gap:.55rem;flex:none;min-height:44px;padding:.55rem .9rem;border-radius:999px;background:var(--accent-color);color:#fff;font:600 .85rem/1.4 var(--font-body);text-align:center}.resume-download:hover{background:var(--accent-hover);color:#fff}.resume-download svg{width:1rem;height:1rem}.resume-viewer{display:block;width:100%;height:min(75vh,900px);min-height:560px;border:1px solid var(--border-color);border-radius:.5rem;background:var(--surface-subtle)}.resume-fallback{margin-top:.7rem;color:var(--text-muted);font-size:.85rem}.resume-fallback a{text-decoration:underline;text-underline-offset:.15em}.article-figure{max-width:550px;margin:2rem auto}.article-figure img{width:100%;height:auto;border-radius:.5rem}pre{max-width:100%;overflow-x:auto;border:1px solid var(--border-color);border-radius:.5rem;padding:1rem;margin:1.5rem 0;background:var(--surface-subtle);line-height:1.6}code{font:.85em/1.6 var(--font-mono);background:var(--surface-subtle);padding:.1rem .25rem;border-radius:.2rem}pre code{padding:0;background:transparent;font-size:.85rem}[data-article] pre.code-block{position:relative;padding-top:3.5rem;background:#1f2329;border-color:#343b45;color:#f4f4f4}[data-article] pre.code-block code{color:inherit;background:transparent;font-family:var(--font-mono);text-shadow:none}[data-article] :not(pre)>code[class*=language-]{background:var(--surface-subtle);color:var(--text-dark);text-shadow:none;white-space:normal}.copy-code{position:absolute;top:.4rem;right:.5rem;min-height:44px;min-width:58px;padding:.3rem .65rem;border:1px solid #8795a5;border-radius:.3rem;background:#2b323d;color:#fff;font:.8rem var(--font-body)}.copy-code:hover{background:#3c4654}.copy-code:focus-visible{outline-color:#fff}.table-scroll{max-width:100%;overflow-x:auto;margin:1.5rem 0}table{width:100%;border-collapse:collapse;font-size:.95rem}th,td{text-align:left;padding:.65rem .8rem;border:1px solid var(--border-color)}th{background:var(--surface-subtle)}hr{border:0;border-top:1px solid var(--border-color);margin:2.5rem 0}.gallery{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;margin:2rem 0}.gallery img{width:100%;height:220px;object-fit:cover;margin:0}.katex-display{max-width:100%;overflow-x:auto;overflow-y:hidden;padding:.4rem 0}.site-footer{margin-top:3.5rem;padding-top:1rem;border-top:1px solid var(--border-color);color:var(--text-muted);font-size:.85rem}.site-footer p{margin-bottom:.65rem}@media(max-width:700px){.profile-header{grid-template-columns:minmax(0,1fr);justify-items:center;gap:1.5rem;margin-bottom:2.75rem;text-align:center}.profile-links{justify-content:center}}@media(max-width:580px){body{padding:1.1rem .85rem;font-size:1rem}.site-nav{margin-bottom:2.5rem}.nav-links{gap:.05rem;padding:.2rem;font-size:.78rem}.nav-links a{min-height:36px;padding:0 .55rem}.home-page{padding-top:0}.portrait-frame{width:150px}.profile-identity h1{font-size:clamp(2rem,10vw,2.6rem)}.blog-entry{grid-template-columns:105px minmax(0,1fr);gap:.75rem;padding:.5rem 0}.news-item{grid-template-columns:minmax(0,1fr);gap:.1rem;padding:.4rem 0}.gallery{grid-template-columns:minmax(0,1fr)}.gallery img{height:auto}.resume-header{align-items:flex-start;flex-direction:column}.resume-viewer{height:70vh;min-height:450px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
