@font-face{font-family:inter;src:url(../media/Inter-s.p.17djzg046q86k.woff2)format("woff2");font-display:swap;font-weight:100 900}@font-face{font-family:inter Fallback;src:local(Arial);ascent-override:89.79%;descent-override:22.36%;line-gap-override:0.0%;size-adjust:107.89%}.inter_950d5e3d-module__Myatha__className{font-family:inter,inter Fallback}.inter_950d5e3d-module__Myatha__variable{--font-inter:"inter", "inter Fallback"}
@font-face{font-family:besley;src:url(../media/Besley_Italic-s.p.2wul4f8w85bak.woff2)format("woff2");font-display:swap;font-style:italic}@font-face{font-family:besley Fallback;src:local(Arial);ascent-override:112.13%;descent-override:38.13%;line-gap-override:0.0%;size-adjust:111.47%}.besley_42102654-module__ulnoga__className{font-family:besley,besley Fallback;font-style:italic}.besley_42102654-module__ulnoga__variable{--font-besley:"besley", "besley Fallback"}
.blog{--sans:var(--font-inter), -apple-system, BlinkMacSystemFont, sans-serif;--serif:var(--font-besley), Baskerville, Georgia, "Times New Roman", serif;--mono:ui-monospace, "SF Mono", SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;--size-s:.8125rem;--size-m:.9375rem;--size-xl:1.225rem;--bold:600;--light:350;--bg:#fff;--text:#000000e6;--text-2:#000000b3;--text-3:#00000080;--border:#0000001a;--code-bg:#0000000a;font-family:var(--sans);font-feature-settings:"ss03" 1;font-size:var(--size-m);letter-spacing:-.02em;color:var(--text);background:var(--bg);box-sizing:border-box;overflow-wrap:break-word;text-rendering:optimizelegibility;flex-direction:column;max-width:38rem;min-height:100vh;margin:0 auto;padding:6rem 1.5rem 1.5rem;line-height:1.75;display:flex}:root[data-site-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}:root[data-site-theme=dark] .blog{--bg:#0c0c0c;--text:#ffffffe6;--text-2:#fff6;--text-3:#ffffff3d;--border:#ffffff1a;--code-bg:#ffffff0a}@media (max-width:768px){.blog{padding:4rem 1.35rem 1.35rem}}html:has(.blog){scroll-behavior:smooth}body:has(.blog){background:#fff}[data-site-theme=dark] body:has(.blog){background:#0c0c0c}.blog main{flex-direction:column;flex:1;display:flex}.blog a{color:inherit}.blog ::selection{background:var(--border)}.blog :focus-visible{outline:1.5px dashed var(--text-3);border-radius:.25rem}.blog .blog-skip-link{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;text-decoration:none;position:absolute;overflow:hidden}.blog .blog-skip-link:focus,.blog .blog-skip-link:focus-visible{z-index:100;clip:auto;white-space:normal;background:var(--bg);width:auto;height:auto;color:var(--text);border:1px solid var(--border);border-radius:.25rem;margin:0;padding:.5rem .75rem;position:fixed;top:1rem;left:1rem;overflow:visible}.blog .blog-header{justify-content:space-between;align-items:center;display:flex}.blog .theme-toggle{width:1.5rem;height:1.5rem;color:var(--text);opacity:.4;cursor:pointer;background:0 0;border:none;justify-content:flex-end;align-items:center;padding:0;transition:opacity .2s ease-out;display:flex}.blog .theme-toggle:hover{opacity:1}@media (hover:none) and (pointer:coarse){.blog .theme-toggle:hover{opacity:.4}}.blog .page-title{font-size:22px;line-height:1.5em;font-weight:var(--bold);margin:0}.blog .page-title a{text-decoration:none}.blog .page-title a:hover{text-decoration:underline;-webkit-text-decoration-color:var(--text-2);text-decoration-color:var(--text-2)}.blog .date{white-space:nowrap;font-weight:var(--light);color:var(--text-2);opacity:.75;letter-spacing:-.08em;font-variant-numeric:tabular-nums;flex-shrink:0;align-items:baseline;gap:.6rem;margin:0;display:flex}.blog .lang{text-transform:uppercase;letter-spacing:.04em;font-size:.7rem}.blog .empty{color:var(--text-2)}.blog .post-list{margin:0 0 3rem;padding:0;list-style:none}.blog .post-list a{padding:.6rem 0;text-decoration:none;transition:opacity .15s ease-out;display:block}.blog .post-item{align-items:baseline;gap:.75rem;display:flex}.blog .post-title{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.blog .divider{background:var(--border);flex:auto;align-self:center;min-width:2rem;height:.5px}.blog .post-summary{font-size:var(--size-s);color:var(--text-2);margin:.1rem 0 0;line-height:1.5}@media (hover:hover) and (pointer:fine){.blog .post-list:hover a{opacity:.4}.blog .post-list:hover a:hover{opacity:1}.blog .post-list a:hover .date{color:var(--text-2);opacity:1}}.blog .post-nav{align-self:flex-start}.blog .back-link{font-family:var(--serif);font-style:italic;font-size:var(--size-m);letter-spacing:0;color:var(--text-2);align-items:center;gap:.375rem;margin-bottom:2.5rem;text-decoration:none;display:inline-flex}.blog .back-link svg{flex-shrink:0;width:.8rem;height:.8rem}.blog .back-link:hover{color:var(--text)}.blog .post-header{margin-bottom:1rem}.blog .prose{margin-bottom:6rem}.blog .prose>:first-child{margin-top:0}.blog .prose p,.blog .prose ul,.blog .prose ol,.blog .prose li,.blog .prose blockquote,.blog .prose td,.blog .prose th{font-size:var(--size-m)}.blog .prose p{margin:1.75em 0}.blog .prose h1,.blog .prose h2,.blog .prose h3,.blog .prose h4{font-size:var(--size-m);font-weight:var(--bold);margin:2.75em 0 1.5em;line-height:1.75}.blog .prose h1,.blog .prose h2{font-size:var(--size-xl)}.blog .prose strong{font-weight:var(--bold)}.blog .prose em{font-family:var(--serif);letter-spacing:0;font-style:italic}.blog .prose a{text-decoration:underline;transition:text-decoration-color .2s ease-out,color .2s ease-out}.blog .prose a:hover{color:var(--text-2)}.blog .prose img{max-width:100%;height:auto;margin:2em 0;display:block}.blog .prose hr{border:0;border-top:1px solid var(--border);margin:2.5em 0}.blog .prose blockquote{border-left:2px solid var(--border);margin:0 0 1.75em .125em;padding:0 0 0 1.375em}.blog .prose blockquote p{margin:0}.blog .prose code{background:var(--code-bg);font-family:var(--mono);font-feature-settings:"liga" 0, "calt" 0;border-radius:5px;padding:2.5px 5px;font-size:.9em}.blog .prose pre{background:var(--code-bg);border-radius:6px;margin:1.75em 0;padding:1rem;line-height:1.5;overflow-x:auto}.blog .prose pre code{font-size:var(--size-s);background:0 0;padding:0}.blog .prose ul{margin:0 0 1.75em 1rem;padding:0;line-height:1.35;list-style:none}.blog .prose ul ul,.blog .prose ol ul{margin:.5em 0 .5em .625rem}.blog .prose ul li{margin-bottom:.5em;padding-left:.125rem;position:relative}.blog .prose ul li:before{content:"";background:var(--text-3);border-radius:50%;width:.3125rem;height:.3125rem;position:absolute;top:calc(.675em - .15625rem);left:-.785rem}.blog .prose ul.contains-task-list li:before{content:none}.blog .prose ol{counter-reset:item;margin:0 0 1.75em 1.5rem;padding:0;line-height:1.35}.blog .prose ol li{margin-bottom:.5em;padding-left:.125rem;display:block;position:relative}.blog .prose ol li:before{content:counter(item) ".";counter-increment:item;width:1.5rem;color:var(--text-2);font-variant-numeric:tabular-nums;position:absolute;left:-1.4rem}.blog .prose table{border-collapse:separate;border-spacing:0;border:1px solid var(--border);border-radius:6px;width:100%;margin:1.75em 0;overflow:hidden}.blog .prose th,.blog .prose td{text-align:left;border-right:1px solid var(--border);border-bottom:1px solid var(--border);padding:.5em .75em}.blog .prose th:last-child,.blog .prose td:last-child{border-right:0}.blog .prose tr:last-child td{border-bottom:0}.blog .prose th{background:var(--code-bg);font-weight:var(--bold)}.blog .prose :is(h1,h2,h3,h4){scroll-margin-top:6rem}.blog .toc{display:none}@media (min-width:72rem){.blog .post-nav{z-index:10;width:10rem;position:fixed;top:6rem;left:calc(50% - 31rem)}.blog .back-link{margin-bottom:2.5rem}.blog .toc{opacity:1;display:block}}.blog .toc ul,.blog .toc li{margin:0;padding:0;list-style:none}.blog .toc-link{color:#0000;white-space:nowrap;text-indent:2rem;cursor:pointer;width:100%;height:1.125rem;min-height:1rem;font-size:0;line-height:1.125rem;text-decoration:none;display:block;position:relative;overflow:hidden}.blog .toc-link:before{content:"";background:var(--text-3);opacity:.4;width:1.75rem;height:1px;transition:all .1s ease-out;position:absolute;top:50%;left:0;transform:translateY(-50%)}.blog .toc-link:after{content:attr(data-text);max-width:100%;font-size:var(--size-s);color:var(--text);white-space:nowrap;text-overflow:ellipsis;opacity:0;pointer-events:none;line-height:1.125rem;transition:opacity .2s ease-out,left .2s ease-out;position:absolute;top:0;left:-.5rem;overflow:hidden}.blog .toc-link:hover:after{opacity:1;left:-.75rem}.blog .toc-level-0 .toc-link:hover:after{opacity:0}.blog .toc-link:hover:before,.blog .toc-link.active:before{opacity:.8;background:var(--text)}.blog .toc-level-1 .toc-link:hover:before,.blog .toc-level-2 .toc-link:hover:before,.blog .toc-level-3 .toc-link:hover:before{width:.75rem}.blog .prose .mermaid-diagram{cursor:zoom-in;border-radius:6px;justify-content:center;margin:1.5em 0;display:flex;overflow-x:auto}.blog .prose .mermaid-diagram:focus-visible{outline:1.5px dashed var(--text-3);outline-offset:4px}.blog .prose .mermaid-diagram svg{max-width:100%;height:auto}.blog .prose .mermaid-diagram .cluster rect{rx:4px;ry:4px}.blog .prose pre.mermaid{color:#0000;-webkit-user-select:none;user-select:none;min-height:12rem}.blog .prose pre.mermaid-loading{background:linear-gradient(90deg, var(--code-bg) 0%, var(--border) 50%, var(--code-bg) 100%);background-size:200% 100%;animation:1.5s ease-in-out infinite blog-skeleton}.blog .prose pre.mermaid-error{color:var(--text-2);-webkit-user-select:auto;user-select:auto;border:1px dashed var(--border)}.blog .prose pre.mermaid-error:before{content:"Le diagramme n'a pas pu être affiché";font-size:var(--size-s);margin-bottom:.5em;display:block}@keyframes blog-skeleton{0%{background-position:200% 0}to{background-position:-200% 0}}.blog .mermaid-lightbox{z-index:9999;background:color-mix(in srgb, var(--bg) 60%, transparent);-webkit-backdrop-filter:blur(24px);backdrop-filter:blur(24px);cursor:zoom-out;justify-content:center;align-items:center;padding:1.5rem;display:flex;position:fixed;inset:0}.blog .mermaid-lightbox__content{background:var(--bg);width:fit-content;max-width:min(95vw,72rem);max-height:90vh;box-shadow:0 12px 48px color-mix(in srgb, var(--text) 12%, transparent);cursor:default;border-radius:8px;padding:1rem;overflow:auto}.blog .mermaid-lightbox__content svg{width:auto;max-width:none;height:auto;display:block}body.mermaid-lightbox-open{overflow:hidden}.blog .blog-footer{font-size:var(--size-s);font-weight:var(--light);color:var(--text-2);opacity:.75;justify-content:space-between;align-items:center;margin-top:4rem;line-height:1.75;display:flex}.blog .footer-links{gap:1.25rem;display:flex}.blog .blog-footer a{text-decoration:none}.blog .blog-footer a:hover{color:var(--text)}@media (prefers-reduced-motion:reduce){html:has(.blog){scroll-behavior:auto}.blog *{transition-duration:.01ms!important}}
