@font-face{font-family:Instrument Sans Variable;font-style:normal;font-display:swap;font-weight:400 700;src:url(/_astro/instrument-sans-latin-ext-wght-normal.B5bTHO_g.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Instrument Sans Variable;font-style:normal;font-display:swap;font-weight:400 700;src:url(/_astro/instrument-sans-latin-wght-normal.BbzFLZTg.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(data:font/woff2;base64,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)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/_astro/jetbrains-mono-cyrillic-wght-normal.D73BlboJ.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/_astro/jetbrains-mono-greek-wght-normal.Bw9x6K1M.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/_astro/jetbrains-mono-vietnamese-wght-normal.Bt-aOZkq.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/_astro/jetbrains-mono-latin-ext-wght-normal.DBQx-q_a.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/_astro/jetbrains-mono-latin-wght-normal.B9CIFXIH.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@property --island-bg{syntax:"<color>";inherits:true;initial-value:#16181c}:root{color-scheme:light dark;--bg:light-dark(#fcfbf8,#16181c);--surface:light-dark(#fff,#1c1f24);--surface-2:light-dark(#f5f4f0,#23272d);--surface-3:light-dark(#edebe6,#2b2f36);--border:light-dark(#e8e6e1,#2c3037);--ink:light-dark(#141310,#e6e8eb);--ink-2:light-dark(#3e3c38,#c8ccd2);--ink-3:light-dark(#615e58,#a0a6ae);--ink-4:light-dark(#6e6a63,#9399a2);--accent:light-dark(#c24100,#ff6a2b);--accent-text:light-dark(#c24100,#ff8a57);--accent-display:light-dark(#e0510f,#ff6a2b);--accent-dark:light-dark(#a33700,#ffa47a);--accent-soft-bg:light-dark(#fcece4,#2a1a12);--accent-soft-border:light-dark(#f3cdb9,#4a2a1a);--on-accent:light-dark(#fff,#1a0a02);--header-bg:light-dark(#fcfbf8d9,#16181cd9);--shadow:light-dark(#1413101f,#0009);--live:#16a34a;--tag-oss-fg:light-dark(#8a5a00,#e8b35a);--tag-oss-bg:light-dark(#f7efdd,#2a1f0c);--tag-perso-fg:light-dark(#4a4e9e,#a9adf0);--tag-perso-bg:light-dark(#ececf7,#1c1d33);--tag-tool-fg:light-dark(#3f6e5a,#8fcfb2);--tag-tool-bg:light-dark(#e8f2ec,#13241c);--island-bg:light-dark(#16181c,#1c1f24);--pipe-ok:#3fb950;--pipe-fail:#f85149;--font-body:"Instrument Sans Variable", sans-serif;--font-display:"Instrument Sans Variable", sans-serif;--font-mono:"JetBrains Mono Variable", monospace;--fw-display:600;--track-display:-.02em;--track-display-tight:-.03em;--h1:clamp(2rem, 1.1rem + 4.6vw, 4.125rem);--h2:clamp(1.5rem, 1.15rem + 1.75vw, 2.125rem);--h2-dark:clamp(1.35rem, 1.1rem + 1.25vw, 1.75rem);--h-contact:clamp(1.75rem, .6rem + 5.75vw, 3.25rem);--sp-item:12px;--sp-group:16px;--sp-card:22px;--sp-sub:24px;--sp-block:clamp(1.75rem, 1.2rem + 2.4vw, 2.5rem);--sp-section:clamp(2rem, 1.2rem + 3.5vw, 3.5rem);--sp-major:clamp(2rem, .5rem + 6.5vw, 5rem);--gut:clamp(1.125rem, .7rem + 2vw, 2rem);--header-h:57px;--hero-pad-top:40px;--cta-h:52px;--content-max:1180px;--rail-x:max(8px, (100% - var(--content-max)) / 2);--rs:.3;--r-max:4px;--r-xs:min(2px * var(--rs), var(--r-max));--r-chip:min(5px * var(--rs), var(--r-max));--r-sm:min(8px * var(--rs), var(--r-max));--r-btn:min(10px * var(--rs), var(--r-max));--r-md:min(12px * var(--rs), var(--r-max));--r-card:min(14px * var(--rs), var(--r-max));--r-panel:min(20px * var(--rs), var(--r-max));--r-pill:min(99px * var(--rs), var(--r-max));--cut:12px;--btn-clip:polygon(0 0, calc(100% - var(--cut)) 0, 100% var(--cut), 100% 100%, var(--cut) 100%, 0 calc(100% - var(--cut)))}:root[data-theme=light]{color-scheme:light}:root[data-theme=dark]{color-scheme:dark}.om-island{color-scheme:dark;background:var(--island-bg);color:var(--ink)}@media (width<=900px){:root{--header-h:76px}}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth}section[id]{scroll-margin-top:calc(var(--header-h) + 12px)}body{background:var(--bg);color:var(--ink);font-family:var(--font-body);-webkit-font-smoothing:antialiased;margin:0}a{color:var(--accent-text);text-decoration:none}a:hover{color:var(--accent-dark)}::selection{background:var(--accent);color:var(--on-accent)}img{max-width:100%}@keyframes omPulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.35;transform:scale(.75)}}@keyframes omGlow{0%,to{box-shadow:0 0 10px 2px var(--accent)}50%{box-shadow:0 0 22px 6px var(--accent)}}@keyframes omGlowRed{0%,to{box-shadow:0 0 10px 2px var(--pipe-fail)}50%{box-shadow:0 0 24px 7px var(--pipe-fail)}}.om-sec{max-width:var(--content-max);padding-inline:var(--gut);padding-block:var(--sp-section);margin-inline:auto}.om-rails{isolation:isolate;position:relative}.om-rails:before{content:"";inset-block:0;inset-inline:var(--rail-x);z-index:-1;border-inline:1px solid var(--border);pointer-events:none;position:absolute}.om-rule{background:var(--border);height:1px;position:relative}.om-rule:before,.om-rule:after{content:"";background:var(--bg);border:1px solid var(--ink-4);width:7px;height:7px;position:absolute;top:-3px}.om-rule:before{left:calc(var(--rail-x) - 3px)}.om-rule:after{right:calc(var(--rail-x) - 3px)}.om-kicker{font-family:var(--font-mono);color:var(--accent-text);letter-spacing:.1em;text-transform:uppercase;margin:0 0 10px;font-size:12px}.om-h2{font-family:var(--font-display);font-size:var(--h2);font-weight:var(--fw-display);letter-spacing:var(--track-display);margin:0 0 8px}.om-h2-solo{margin-bottom:var(--sp-block)}.om-sub{color:var(--ink-3);max-width:64ch;margin:0 0 var(--sp-block);font-size:16px;line-height:1.6}.om-grid-3,.om-grid-4{gap:var(--sp-group);display:grid}.om-grid-3{grid-template-columns:repeat(3,1fr)}.om-grid-4{grid-template-columns:repeat(4,1fr)}@media (width<=900px){.om-grid-3,.om-grid-4{grid-template-columns:repeat(2,1fr)}}@media (width<=560px){.om-grid-3,.om-grid-4{grid-template-columns:1fr}}.om-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-card);padding:var(--sp-card);gap:var(--sp-item);flex-direction:column;display:flex}.om-card-hover:hover{border-color:var(--accent)}.om-ruled{gap:1px}.om-ruled>.om-card{box-shadow:0 0 0 1px var(--border);border:0;border-radius:0;position:relative}.om-ruled>.om-card-hover:hover{z-index:1;box-shadow:0 0 0 1px var(--accent)}.om-chip{font-family:var(--font-mono);border-radius:var(--r-chip);padding:3px 8px;font-size:10.5px}.om-btn{min-height:var(--cta-h);border-radius:var(--r-btn);justify-content:center;align-items:center;padding-inline:26px;font-size:15px;font-weight:600;display:inline-flex}.om-btn-primary{background:var(--accent);color:var(--on-accent);white-space:nowrap;font-weight:700}.om-btn-primary:hover{background:var(--accent-dark);color:var(--on-accent)}.om-btn-primary,.om-cut{clip-path:var(--btn-clip)}.om-btn-primary:focus-visible,.om-cut:focus-visible{clip-path:none}.om-btn-outline{border:1.5px solid var(--ink);color:var(--ink);padding-inline:24px}.om-btn-outline:hover{border-color:var(--accent);color:var(--accent-text)}.om-details>summary{cursor:pointer;min-height:44px;font-family:var(--font-mono);color:var(--accent-text);letter-spacing:.02em;align-items:center;font-size:11.5px;list-style:none;display:inline-flex}.om-details>summary::-webkit-details-marker{display:none}.om-details>summary .om-open-label{display:inline}.om-details>summary .om-close-label,.om-details[open]>summary .om-open-label{display:none}.om-details[open]>summary .om-close-label{display:inline}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.om-skip{z-index:100;background:var(--ink);color:var(--bg);font-family:var(--font-mono);border-radius:var(--r-btn);padding:10px 14px;font-size:13px;position:fixed;top:8px;left:8px;transform:translateY(-200%)}.om-skip:focus-visible{transform:none}#contenu:focus{outline:none}
