@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/fraunces-vietnamese-opsz-normal.Czevyj-6.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:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/fraunces-latin-ext-opsz-normal.CJcjJNj7.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:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/fraunces-latin-opsz-normal.DihXLNYH.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:Fraunces Variable;font-style:italic;font-display:swap;font-weight:100 900;src:url(/_astro/fraunces-vietnamese-opsz-italic.DxWqP7Ku.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:Fraunces Variable;font-style:italic;font-display:swap;font-weight:100 900;src:url(/_astro/fraunces-latin-ext-opsz-italic.CGbN9UgK.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:Fraunces Variable;font-style:italic;font-display:swap;font-weight:100 900;src:url(/_astro/fraunces-latin-opsz-italic.lSdLDfvT.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:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-cyrillic-ext-wght-normal.DjL33-gN.woff2)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:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-cyrillic-wght-normal.BEAKL7Jp.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-vietnamese-wght-normal.6IgcOCM7.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:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-latin-ext-wght-normal.DC-KSUi6.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:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-latin-wght-normal.BgDaEnEv.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:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-cyrillic-ext-wght-normal.X_5orZeX.woff2)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:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-cyrillic-wght-normal.DiZS0aHC.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-symbols2-wght-normal.CO5SzqOn.woff2)format("woff2-variations");unicode-range:U+2000-2001,U+2004-2008,U+200A,U+23B8-23BD,U+2500-259F}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-vietnamese-wght-normal.DadHysG0.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:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-latin-ext-wght-normal.Bwz-egvJ.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:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-latin-wght-normal.XN7g48iV.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}:root{--bg:#09090c;--surface:#ffffff09;--surface-2:#ffffff12;--solid:#111217;--line:#ffffff17;--line-2:#ffffff2e;--ink:#f4f3ee;--muted:#a4a4ad;--dim:#74747e;--accent:#3b8cff;--blue:#0a72f0;--blue-deep:#0a4fb0;--ok:#35d39a;--bad:#ff7a70;--warn:#ffb454;--code-bg:#0d0e12;--p:var(--accent);--display:"Fraunces Variable", "Iowan Old Style", Georgia, serif;--body:"Geist Variable", ui-sans-serif, system-ui, -apple-system, sans-serif;--mono:"Geist Mono Variable", ui-monospace, "SF Mono", Menlo, monospace;--wrap:1120px;--gutter:clamp(16px, 4vw, 40px);--radius:18px;color-scheme:dark}:root[data-theme=light]{--bg:#f6f5f1;--surface:#fff;--surface-2:#efede7;--solid:#fff;--line:#12121c1a;--line-2:#12121c3d;--ink:#121216;--muted:#5c5d67;--dim:#85868f;--accent:#0a62d6;--ok:#0d8f62;--bad:#c9382c;--warn:#a8650a;color-scheme:light}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:96px;overflow-x:clip}body{background:var(--bg);color:var(--ink);font-family:var(--body);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0;font-size:17px;line-height:1.6;overflow-x:clip}img,svg,video,canvas{max-width:100%;display:block}a{color:inherit;text-decoration-color:color-mix(in srgb, currentColor 35%, transparent);text-underline-offset:.2em;text-decoration-thickness:1px}a:hover{text-decoration-color:currentColor}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:6px}h1,h2,h3,h4{font-family:var(--display);font-optical-sizing:auto;letter-spacing:-.022em;text-wrap:balance;margin:0;font-weight:540;line-height:1.04}p{text-wrap:pretty;margin:0}button{font-family:inherit}a,button,summary{touch-action:manipulation;-webkit-tap-highlight-color:transparent}.anim-bouton{appearance:none;color:inherit;font:inherit;text-decoration:underline;text-decoration-color:color-mix(in srgb, currentColor 35%, transparent);text-underline-offset:.2em;cursor:pointer;background:0 0;border:0;margin-left:10px;padding:0}.anim-bouton:hover{color:var(--ink)}::selection{background:var(--blue);color:#fff}[hidden]{display:none!important}.wrap{width:100%;max-width:calc(var(--wrap) + var(--gutter) * 2);padding-inline:var(--gutter);margin-inline:auto}.mono,.eyebrow{font-family:var(--body);letter-spacing:0;font-size:.88rem;font-weight:500}.eyebrow{color:var(--muted)}.eyebrow b{display:none}.skip{position:absolute;left:-999px}.skip:focus{z-index:100;background:var(--ink);color:var(--bg);border-radius:8px;padding:8px 12px;top:12px;left:12px}.top{z-index:30;padding-inline:var(--gutter);margin-top:12px;position:sticky;top:12px}.top-in{max-width:var(--wrap);border:1px solid var(--line);background:color-mix(in srgb, var(--bg) 68%, transparent);backdrop-filter:blur(22px)saturate(1.6);border-radius:16px;justify-content:space-between;align-items:center;gap:12px;height:56px;margin-inline:auto;padding:0 8px 0 18px;display:flex;position:relative;box-shadow:inset 0 1px #ffffff0f,0 10px 30px -18px #0009}.brand{font-family:var(--display);letter-spacing:-.015em;white-space:nowrap;align-items:center;gap:10px;min-height:40px;font-size:1.12rem;font-weight:560;text-decoration:none;display:inline-flex}.brand-mark{background:var(--ink);width:28px;height:28px;color:var(--bg);font-family:var(--mono);letter-spacing:0;border-radius:8px;place-items:center;font-size:.72rem;font-weight:700;display:grid}.nav{align-items:center;gap:clamp(0px,.8vw,6px);display:flex}.nav a{min-width:40px;min-height:40px;color:var(--muted);white-space:nowrap;border-radius:10px;justify-content:center;align-items:center;padding:8px 12px;font-size:.92rem;font-weight:500;text-decoration:none;display:inline-flex}.nav a:hover,.nav a[aria-current=page]{color:var(--ink)}.nav a[aria-current=page]{background:var(--surface-2)}.theme{appearance:none;border:1px solid var(--line);color:var(--ink);cursor:pointer;background:0 0;border-radius:11px;flex:none;place-items:center;width:40px;height:40px;margin-left:4px;display:grid}.theme:hover{border-color:var(--line-2)}.theme svg{width:16px;height:16px}@media (width<=740px){html{scroll-padding-top:128px}.top-in{flex-wrap:wrap;gap:0;height:auto;padding:4px 6px}.brand{padding-left:10px}.brand-word{font-size:1rem}.nav{flex:100%;justify-content:flex-start;gap:0 4px}.nav a{padding:8px clamp(3px,1.6vw,12px);font-size:.86rem}.theme{margin:0;position:absolute;top:4px;right:6px}}@media (width<=440px){.nav{justify-content:space-between;gap:0}.nav a[href="/projets/"]{display:none}}.btn{border:1px solid var(--ink);background:var(--ink);color:var(--bg);font:600 .95rem/1.2 var(--body);cursor:pointer;border-radius:999px;justify-content:center;align-items:center;gap:8px;padding:12px 20px;text-decoration:none;transition:transform .15s,background .15s,border-color .15s;display:inline-flex}.btn:hover{transform:translateY(-1px)}.btn.bleu{background:var(--blue);border-color:var(--blue);color:#fff}.btn.ghost{background:var(--surface);color:var(--ink);border-color:var(--line)}.btn.ghost:hover{border-color:var(--line-2)}.btn.petit{padding:8px 14px;font-size:.86rem}.btn svg{flex:none;width:16px;height:16px}.chip{color:var(--muted);white-space:nowrap;align-items:center;gap:7px;font-size:.88rem;font-weight:500;display:inline-flex}.chip.p{color:color-mix(in srgb, var(--p) 72%, var(--ink))}.dot{background:var(--ok);border-radius:50%;flex:none;width:6px;height:6px}.card{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface)}.section{padding-block:clamp(56px,9vw,112px)}.section-head{flex-wrap:wrap;justify-content:space-between;align-items:end;gap:20px;margin-bottom:clamp(24px,4vw,44px);display:flex}.section-head h2{letter-spacing:-.028em;font-size:clamp(2.1rem,5.2vw,3.4rem)}.section-head p.sous{max-width:56ch;color:var(--muted);margin-top:14px}.more{white-space:nowrap;font-size:.95rem;font-weight:500}.tete{padding-block:clamp(48px,8vw,96px) clamp(24px,4vw,40px)}.tete h1{letter-spacing:-.03em;margin-top:14px;font-size:clamp(2.7rem,8vw,5.2rem);font-weight:520}.chapo{max-width:56ch;color:var(--muted);margin-top:20px;font-size:clamp(1.08rem,2vw,1.28rem);line-height:1.45}.chapo a{color:var(--ink)}.retour{color:var(--muted);text-decoration:none}.retour:hover{color:var(--ink)}.barre{background:var(--surface-2);border-radius:99px;height:6px;overflow:hidden}.barre i{background:var(--p);border-radius:99px;width:0;height:100%;transition:width .5s cubic-bezier(.2,.8,.2,1);display:block}.parcours-grille{grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr));gap:14px;display:grid}.parcours-carte{flex-direction:column;gap:14px;padding:22px;text-decoration:none;transition:border-color .2s,transform .2s;display:flex;position:relative;overflow:hidden}.parcours-carte:before{content:"";background:radial-gradient(120% 90% at 100% 0%, color-mix(in srgb, var(--p) 16%, transparent), transparent 60%);pointer-events:none;position:absolute;inset:0}.parcours-carte:hover{border-color:color-mix(in srgb, var(--p) 55%, transparent);transform:translateY(-2px)}.parcours-carte>:not(canvas){position:relative}.parcours-carte canvas.ascii-fond{opacity:.32;-webkit-mask-image:linear-gradient(200deg,#000 0%,#0006 38%,#0000 70%);mask-image:linear-gradient(200deg,#000 0%,#0006 38%,#0000 70%)}.signe{width:44px;height:44px;font-family:var(--mono);color:color-mix(in srgb, var(--p) 75%, var(--ink));background:color-mix(in srgb, var(--p) 13%, transparent);border:1px solid color-mix(in srgb, var(--p) 34%, transparent);border-radius:12px;place-items:center;font-size:.82rem;font-weight:600;display:grid}.parcours-haut{justify-content:space-between;align-items:center;gap:10px;display:flex}.parcours-carte h3{letter-spacing:-.02em;font-size:1.55rem}.parcours-carte p{color:var(--muted);font-size:.95rem;line-height:1.5}.parcours-pied{gap:10px;margin-top:auto;padding-top:6px;display:grid}.parcours-chiffres{font-variant-numeric:tabular-nums;color:var(--muted);justify-content:space-between;gap:10px;font-size:.84rem;display:flex}.lessons{gap:8px;margin:0;padding:0;list-style:none;display:grid}.lesson a{border:1px solid var(--line);background:var(--surface);border-radius:16px;grid-template-columns:44px minmax(0,1fr) auto;align-items:center;gap:6px 16px;padding:16px 18px 16px 14px;text-decoration:none;transition:border-color .2s,background .2s;display:grid}.lesson a:hover{border-color:color-mix(in srgb, var(--p) 55%, transparent);background:var(--surface-2)}.lesson .num{width:40px;height:40px;font-family:var(--mono);color:color-mix(in srgb, var(--p) 75%, var(--ink));background:color-mix(in srgb, var(--p) 12%, transparent);border:1px solid color-mix(in srgb, var(--p) 30%, transparent);border-radius:12px;place-items:center;font-size:.8rem;font-weight:600;display:grid}.lesson[data-fait] .num{background:var(--p);border-color:var(--p);color:#08090c}.lesson h3{font-family:var(--body);letter-spacing:-.015em;font-size:1.1rem;font-weight:620;line-height:1.25}.lesson p{color:var(--muted);margin-top:3px;font-size:.9rem;line-height:1.45}.lesson .meta{flex-wrap:wrap;justify-content:flex-end;font-size:.84rem;display:flex}.lesson .meta .chip{font-size:inherit;font-weight:400}.lesson .meta .chip+.chip:before{content:"·";color:var(--dim);margin-right:7px}@media (width<=760px){.lesson a{grid-template-columns:44px minmax(0,1fr)}.lesson .meta{grid-column:2;justify-content:flex-start;margin-top:4px}}.foot{border-top:1px solid var(--line);color:var(--muted);margin-top:clamp(40px,8vw,96px);padding-block:36px 56px;font-size:.9rem}.foot .wrap{flex-wrap:wrap;justify-content:space-between;gap:16px 32px;display:flex}.foot nav{flex-wrap:wrap;gap:20px;display:flex}.prose{max-width:72ch;font-size:1.05rem;line-height:1.72}.prose>*+*{margin-top:1.15em}.prose h2{letter-spacing:-.035em;border-top:1px solid var(--line);margin-top:2.6em;padding-top:1em;font-size:clamp(1.6rem,3.4vw,2.05rem);line-height:1.12}.prose h3{font-family:var(--body);letter-spacing:-.015em;margin-top:2em;font-size:1.22rem;font-weight:650;line-height:1.25}.prose ul,.prose ol{padding-left:1.3em}.prose li+li{margin-top:.4em}.prose li::marker{color:var(--dim)}.prose strong{font-weight:650}.prose a{color:var(--accent)}.prose blockquote{color:var(--muted);margin-inline:0;padding:0;font-size:.98rem}.prose blockquote>*+*{margin-top:.7em}.prose :not(pre)>code{font-family:var(--mono);background:var(--surface-2);border:1px solid var(--line);overflow-wrap:anywhere;border-radius:6px;padding:.14em .42em;font-size:.85em}.prose pre,pre.code{font-family:var(--mono);color:#e8e6df;tab-size:4;border:1px solid #ffffff17;border-radius:14px;margin:0;padding:16px 18px;font-size:.85rem;line-height:1.65;overflow-x:auto;background:var(--code-bg)!important}.prose pre code{font-family:inherit}.bloc-code{position:relative}.bloc-code .copier-code{appearance:none;color:#cfcdc6;font:500 .75rem var(--mono);letter-spacing:.04em;cursor:pointer;opacity:0;background:#14151be6;border:1px solid #ffffff24;border-radius:8px;padding:5px 9px;transition:opacity .15s;position:absolute;top:8px;right:8px}.bloc-code:hover .copier-code,.copier-code:focus-visible{opacity:1}@media (hover:none){.bloc-code .copier-code{opacity:1}}.prose table{border-collapse:collapse;width:100%;font-size:.93rem;line-height:1.5;display:block;overflow-x:auto}.prose th,.prose td{text-align:left;border-bottom:1px solid var(--line);vertical-align:top;padding:10px 16px 10px 0}.prose th{color:var(--muted);white-space:nowrap;font-size:.82rem;font-weight:600}.prose table code{white-space:nowrap}.prose hr{border:0;border-top:1px solid var(--line);margin-block:2.4em}.prose details{border:1px dashed var(--line-2);border-radius:12px;padding:0 16px}.prose summary{cursor:pointer;color:var(--muted);padding:10px 0;font-size:.9rem;font-weight:550}.prose summary:hover{color:var(--ink)}.prose details[open]{border-style:solid;padding-bottom:14px}.prose details>*+*{margin-top:.7em}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}.ascii-hote{isolation:isolate;position:relative;overflow:hidden}canvas.ascii-fond{z-index:-1;pointer-events:none;width:100%;height:100%;color:var(--p);opacity:.5;position:absolute;inset:0;-webkit-mask-image:linear-gradient(#000 0%,#0000008c 45%,#0000 92%);mask-image:linear-gradient(#000 0%,#0000008c 45%,#0000 92%)}:root[data-theme=light] canvas.ascii-fond{opacity:.38}.schema{border:1px solid var(--line);background:var(--surface);border-radius:18px;margin:1.6em 0;padding:clamp(14px,2.4vw,24px);overflow-x:auto}.schema svg{width:100%;min-width:520px;height:auto;font-family:var(--body);display:block}.schema figcaption{color:var(--muted);text-align:center;margin-top:12px;font-size:.88rem}.schema text{fill:var(--ink);text-anchor:middle;font-size:15px}.schema .s-t{font-weight:620}.schema .s-st{fill:var(--muted);font-size:12.5px}.schema .s-ta{fill:color-mix(in srgb, var(--p) 72%, var(--ink));font-weight:620}.schema .s-code{font-family:var(--mono);font-size:13px}.schema .s-g{text-anchor:start}.schema .s-d{text-anchor:end}.schema .s-boite{fill:var(--solid);stroke:var(--line-2);stroke-width:1.5px}.schema .s-boite-accent{fill:color-mix(in srgb, var(--p) 14%, var(--solid));stroke:var(--p);stroke-width:1.5px}.schema .s-plein{fill:var(--p)}.schema text.s-sur-plein{fill:#08090c;font-weight:650}.schema .s-zone{fill:color-mix(in srgb, var(--ink) 3%, transparent);stroke:var(--line);stroke-dasharray:4 5}.schema .s-trait{fill:none;stroke:var(--line-2);stroke-width:1.5px}.schema .s-fleche{fill:none;stroke:var(--p);stroke-width:2px;stroke-linecap:round;stroke-linejoin:round}.schema .s-pointe{fill:var(--p)}.schema .s-flux{fill:none;stroke:var(--p);stroke-width:2px;stroke-dasharray:5 7;animation:1.4s linear infinite s-couler}.schema .s-doux{opacity:.45}.schema .s-ok{fill:var(--ok)}.schema .s-non{fill:var(--bad)}@keyframes s-couler{to{stroke-dashoffset:-24px}}:root[data-anim=off] .schema .s-flux{animation-play-state:paused}.python{border:1px solid var(--line-2);background:var(--surface);--p:var(--ok);border-radius:16px;padding:18px}.python canvas.ascii-fond{opacity:.16;-webkit-mask-image:linear-gradient(90deg,#000 0%,#00000080 55%,#000000d9 100%);mask-image:linear-gradient(90deg,#000 0%,#00000080 55%,#000000d9 100%)}:root[data-theme=light] .python canvas.ascii-fond{opacity:.2}.python-titre,.python-etat,.python-aide{background:var(--bg);border-radius:8px;width:fit-content;padding:2px 8px;position:relative}.python .python-editeur{background:var(--code-bg);resize:none;white-space:normal;border:1px solid #ffffff17;padding:0;overflow:hidden}.python .python-editeur:focus-within{outline:2px solid var(--ok);outline-offset:2px}.python-etat:empty{display:none}.cm-tooltip.cm-tooltip-autocomplete{color:#e8e6df;font-family:var(--mono);background:#16171d;border:1px solid #ffffff24;border-radius:10px;font-size:.82rem;overflow:hidden;box-shadow:0 14px 34px -10px #0009}.cm-tooltip.cm-tooltip-autocomplete>ul>li{padding:4px 10px}.cm-tooltip.cm-tooltip-autocomplete>ul>li[aria-selected]{background:var(--ok);color:#04130d}.python-titre{color:var(--muted);margin:0 0 12px;font-size:.88rem;font-weight:600;display:block}.python-code,.python-sortie{width:100%;font-family:var(--mono);tab-size:4;border-radius:12px;margin:0;font-size:.85rem;line-height:1.65;display:block}.python-code{background:var(--code-bg);color:#e8e6df;caret-color:var(--ok);resize:vertical;white-space:pre;border:1px solid #ffffff17;padding:14px 16px;overflow-x:auto}.python-code:focus-visible{outline:2px solid var(--ok);outline-offset:2px}.python-barre{flex-wrap:wrap;align-items:center;gap:8px 10px;margin-top:12px;display:flex}.python-barre button{border:1px solid var(--line-2);background:var(--surface);color:var(--ink);font:600 .9rem/1.2 var(--body);cursor:pointer;border-radius:999px;align-items:center;gap:7px;padding:9px 16px;display:inline-flex}.python-barre button:hover{border-color:var(--ink)}.python-barre .python-run{background:var(--ok);border-color:var(--ok);color:#04130d}:root[data-theme=light] .python-barre .python-run{color:#fff}.python-barre .python-run:hover{filter:brightness(1.08);border-color:var(--ok)}.python-barre .python-run:disabled{opacity:.55;cursor:default;filter:none}.python-run svg{width:12px;height:12px}.python-etat{color:var(--muted);font-size:.88rem}.python-aide{color:var(--dim);margin:10px 0 0;font-size:.8rem}.python-sortie{background:var(--code-bg);color:#e8e6df;white-space:pre-wrap;overflow-wrap:anywhere;border:1px solid #ffffff17;max-height:340px;margin-top:12px;padding:12px 16px;overflow-y:auto}.python-sortie[hidden]{display:none}.python-erreur{color:#ff7a70}.python-vide{color:#a9a79f;font-family:var(--body)}
