:root{--header-height: 90px;--footer-height: 50px;--sidebar-width: 240px}html{margin:0;padding:0;overflow-x:hidden;color-scheme:light !important;print-color-adjust:exact !important;-webkit-print-color-adjust:exact !important;color-adjust:exact !important}html[data-darkreader-mode],html[data-darkreader-mode] *,html[data-darkreader-scheme],html[data-darkreader-scheme] *{color-scheme:light !important}body{margin:0;padding:0;background:url("/assets/images/fond_perdu.png") no-repeat center center !important;background-size:cover !important;background-attachment:fixed !important;font-family:Georgia, "Times New Roman", serif;min-height:100vh;width:100%;print-color-adjust:exact !important;-webkit-print-color-adjust:exact !important;color-adjust:exact !important;color:inherit !important;overflow:hidden}body *,body *::before,body *::after{print-color-adjust:exact !important;-webkit-print-color-adjust:exact !important;color-adjust:exact !important}.site-header{position:fixed;top:0;left:0;right:0;z-index:100;flex-shrink:0;background:#120B08;padding:1rem 2rem;border-bottom:1px solid rgba(255,255,255,0.2)}.header-inner{max-width:1400px;margin:0 auto;display:flex;align-items:center;justify-content:space-between;gap:2rem;flex-wrap:wrap;padding:0 1rem}.header-brand{display:flex;align-items:center;gap:1rem;text-decoration:none;color:inherit}.header-brand:hover .site-title{text-decoration:none}.logo img{width:72px;display:block}.site-title{color:#F5F5F5;font-size:2.1rem;font-weight:400;margin:0;text-transform:uppercase;letter-spacing:0.25em;display:flex;gap:0.15em;justify-content:center}.title-syl{position:relative;display:inline-block;z-index:1}.title-syl::after{content:"";position:absolute;bottom:-0.15em;left:0;height:0.2em;background:rgba(139,99,77,0.45);width:0;z-index:-1;border-radius:2px;animation:highlight-syl 1s ease forwards}.title-syl:nth-child(1)::after{animation-delay:0s}.title-syl:nth-child(2)::after{animation-delay:1s}.title-syl:nth-child(3)::after{animation-delay:2s}@keyframes highlight-syl{to{width:calc(100% - 0.2em)}}.site-subtitle{color:#d8ccb0;font-size:0.85rem;letter-spacing:0.1em;margin-top:0.2rem}.header-slogan{display:flex;flex-direction:column;align-items:center;text-align:center;flex:1;min-width:0;gap:0.1rem}.slogan-label,.slogan-quote{color:#F5F5F5;font-style:italic;font-size:1.3rem;letter-spacing:0.03em;white-space:nowrap}.header-keywords{display:flex;flex-direction:column;align-items:center;flex-shrink:0;gap:0.15rem}.kw-line{white-space:nowrap;text-align:center}.kw-dot{color:#666;font-size:1rem}.kw{font-size:1rem;font-weight:500;letter-spacing:0.03em;white-space:nowrap}.kw-1{color:#ff8a7a}.kw-2{color:#f0c040}.kw-3{color:#7ec8f0}.kw-4{color:#6ee0b0}.kw-5{color:#c0a0f0}.kw-6{color:#f0a060}.kw-7{color:#f09aba}.kw-8{color:#90d890}.kw-9{color:#60d0d0}.kw-10{color:#d0a0e0}.menu-toggle{display:none;background:none;border:none;padding:0.5rem;cursor:pointer;color:#F5F5F5}.mobile-nav{display:none}.site-body{position:fixed;top:var(--header-height);bottom:var(--footer-height);left:0;right:0;display:grid;grid-template-columns:var(--sidebar-width) 1fr;z-index:1}.site-sidebar{background:#120B08;overflow-y:auto;padding:1rem 0;border-right:1px solid rgba(255,255,255,0.1);scrollbar-width:thin;scrollbar-color:#444 #120B08}.site-sidebar::-webkit-scrollbar{width:6px}.site-sidebar::-webkit-scrollbar-track{background:#120B08}.site-sidebar::-webkit-scrollbar-thumb{background:#444;border-radius:3px}.sidebar-nav{display:flex;flex-direction:column}.nav-link{display:block;color:#d8ccb0;text-decoration:none;font-size:0.85rem;letter-spacing:0.05em;transition:color 0.15s, background 0.15s;border-left:3px solid transparent}.nav-link:hover{color:#F5F5F5;background:rgba(255,255,255,0.05);text-decoration:none}.nav-link--active{color:#F5F5F5;border-left-color:#d8ccb0;background:rgba(255,255,255,0.08)}.nav-link--l1{padding:0.6rem 1rem;font-size:0.9rem;text-transform:uppercase;letter-spacing:0.1em}.nav-link--l2{padding:0.45rem 1rem 0.45rem 1.5rem}.nav-link--l3{padding:0.35rem 1rem 0.35rem 2.2rem;font-size:0.8rem}.nav-link--l4{padding:0.3rem 1rem 0.3rem 3rem;font-size:0.75rem;opacity:0.85}.nav-group-header{display:flex;align-items:center}.nav-group-header .nav-link{flex:1;min-width:0}.nav-toggle{display:flex;align-items:center;justify-content:center;width:32px;height:32px;background:none;border:none;cursor:pointer;padding:0;flex-shrink:0}.nav-toggle-icon{display:block;width:0;height:0;border-left:5px solid #d8ccb0;border-top:4px solid transparent;border-bottom:4px solid transparent;transition:transform 0.2s}.nav-toggle[aria-expanded="true"] .nav-toggle-icon{transform:rotate(90deg)}.nav-children{overflow:hidden;max-height:0;transition:max-height 0.25s ease}.nav-children[aria-hidden="false"]{max-height:500px}.page-wrapper{position:relative;z-index:1;min-width:0;overflow-y:auto;overflow-x:hidden;scrollbar-width:thin;scrollbar-color:#666 #1a1a1a}.page-wrapper::-webkit-scrollbar{width:10px}.page-wrapper::-webkit-scrollbar-track{background:#1a1a1a}.page-wrapper::-webkit-scrollbar-thumb{background:#666;border-radius:4px}.page-wrapper::-webkit-scrollbar-thumb:hover{background:#888}.page-wrapper::before{content:"";position:fixed;top:var(--header-height);left:var(--sidebar-width);right:0;bottom:var(--footer-height);background:url("/assets/images/fond_pc.png?v=7") no-repeat center top;background-size:auto max(100%, 700px);z-index:0;pointer-events:none}.parchment{position:relative;z-index:1;width:100%;max-width:1100px;min-width:0;flex-shrink:0;box-sizing:border-box;margin:0 auto;overflow:hidden}.parchment-middle{position:relative;z-index:1;min-width:0;margin:0;padding:0;line-height:1.8;font-size:1rem;color:#0d0d0d !important;text-transform:none;overflow-x:hidden;print-color-adjust:exact !important;-webkit-print-color-adjust:exact !important;color-adjust:exact !important}.parchment-middle,.parchment-middle *,.parchment-middle *::before,.parchment-middle *::after,html[data-darkreader-mode] .parchment-middle,html[data-darkreader-mode] .parchment-middle *,html[data-darkreader-scheme] .parchment-middle,html[data-darkreader-scheme] .parchment-middle *{color:#0d0d0d !important;print-color-adjust:exact !important;-webkit-print-color-adjust:exact !important;color-adjust:exact !important}.parchment-content{position:relative;z-index:1;max-width:min(96ch, calc(100% - 60px));width:100%;margin:0 auto;padding:1.25rem 2rem 4rem 8rem;box-sizing:border-box;overflow-wrap:break-word;word-wrap:break-word;overflow-x:hidden;color:#0d0d0d !important;print-color-adjust:exact !important;-webkit-print-color-adjust:exact !important;color-adjust:exact !important}.parchment-content,.parchment-content *,.parchment-content *::before,.parchment-content *::after,html[data-darkreader-mode] .parchment-content,html[data-darkreader-mode] .parchment-content *,html[data-darkreader-scheme] .parchment-content,html[data-darkreader-scheme] .parchment-content *,body .parchment-content,body .parchment-content *{color:#0d0d0d !important;print-color-adjust:exact !important;-webkit-print-color-adjust:exact !important;color-adjust:exact !important}.page-home .parchment-content{text-align:center}.page-home .home-grid{display:inline-block;text-align:left;margin-top:2rem}.parchment-content .post-title,.parchment-content h1,html[data-darkreader-mode] .parchment-content .post-title,html[data-darkreader-mode] .parchment-content h1{text-align:center;color:#0d0d0d !important;print-color-adjust:exact !important;-webkit-print-color-adjust:exact !important;color-adjust:exact !important}.parchment-content *,.parchment-content *::before,.parchment-content *::after,html[data-darkreader-mode] .parchment-content *,html[data-darkreader-scheme] .parchment-content *,body .parchment-content *{color:#0d0d0d !important;print-color-adjust:exact !important;-webkit-print-color-adjust:exact !important;color-adjust:exact !important}.parchment-content h1,.parchment-content h2,.parchment-content h3,.parchment-content h4,.parchment-content h5,.parchment-content h6,html[data-darkreader-mode] .parchment-content h1,html[data-darkreader-mode] .parchment-content h2,html[data-darkreader-mode] .parchment-content h3,html[data-darkreader-mode] .parchment-content h4,html[data-darkreader-mode] .parchment-content h5,html[data-darkreader-mode] .parchment-content h6{color:#0d0d0d !important;print-color-adjust:exact !important;-webkit-print-color-adjust:exact !important;color-adjust:exact !important}.parchment-content p,.parchment-content li,.parchment-content span,.parchment-content div,.parchment-content blockquote,.parchment-content code,.parchment-content pre,.parchment-content strong,.parchment-content em,.parchment-content b,.parchment-content i,.parchment-content u,html[data-darkreader-mode] .parchment-content p,html[data-darkreader-mode] .parchment-content li,html[data-darkreader-mode] .parchment-content span,html[data-darkreader-mode] .parchment-content div,html[data-darkreader-mode] .parchment-content blockquote,html[data-darkreader-mode] .parchment-content code,html[data-darkreader-mode] .parchment-content pre{color:#0d0d0d !important;print-color-adjust:exact !important;-webkit-print-color-adjust:exact !important;color-adjust:exact !important}.post-meta,.post-meta *,html[data-darkreader-mode] .post-meta,html[data-darkreader-mode] .post-meta *{text-align:center;font-size:0.9em;color:rgba(13,13,13,0.6) !important;margin-top:0.5rem;margin-bottom:1.5rem;print-color-adjust:exact !important;-webkit-print-color-adjust:exact !important;color-adjust:exact !important}.post-date,.post-modified{font-style:italic}.meta-separator{margin:0 0.5rem}.parchment-content>*:first-child{margin-top:0}.parchment-middle p{margin-bottom:1em}.parchment-content a,.parchment-content a:link,.parchment-content a:visited,.parchment-content a:hover,.parchment-content a:active,.parchment-content a:focus,html[data-darkreader-mode] .parchment-content a,html[data-darkreader-mode] .parchment-content a:link,html[data-darkreader-mode] .parchment-content a:visited,html[data-darkreader-mode] .parchment-content a:hover,html[data-darkreader-mode] .parchment-content a:active,html[data-darkreader-mode] .parchment-content a:focus{color:#0d0d0d !important;text-decoration:none !important;border-bottom:1px solid rgba(13,13,13,0.3) !important;print-color-adjust:exact !important;-webkit-print-color-adjust:exact !important;color-adjust:exact !important}.parchment-content a:hover,html[data-darkreader-mode] .parchment-content a:hover{color:#0d0d0d !important;border-bottom-color:rgba(13,13,13,0.6) !important}.parchment-content hr{border:none;height:24px;margin:2em 0;background:url("/assets/images/separateur.png") no-repeat center;background-size:contain;opacity:0.8}.home-grid{list-style:none;padding-left:0;margin:2em 0;color:#0d0d0d !important;display:grid;grid-template-columns:repeat(auto-fit, minmax(250px, 1fr));gap:1.5rem}.home-card{padding:1.5rem;border:1px solid rgba(13,13,13,0.2);border-radius:4px;background:rgba(255,255,255,0.05)}.home-card h2{margin-top:0;margin-bottom:0.5rem;color:#0d0d0d !important;font-size:1.1rem}.home-card p{margin-bottom:0.75rem;color:#0d0d0d !important}.home-card .more-link{color:#0d0d0d !important;text-decoration:none !important;border-bottom:1px solid rgba(13,13,13,0.3) !important;font-size:0.9rem}.home-card .more-link:hover{border-bottom-color:rgba(13,13,13,0.6) !important}.project-list,.product-list{list-style:none;padding-left:0;margin:1.5em 0}.project-list li,.product-list li{margin:1em 0;padding-left:0}.project-list a,.product-list a{color:#0d0d0d !important;text-decoration:none !important;border-bottom:1px solid rgba(13,13,13,0.3) !important;font-size:1.05rem;font-weight:500}.project-list a:hover,.product-list a:hover{border-bottom-color:rgba(13,13,13,0.6) !important}.product-resume,.project-resume{display:block;margin-top:0.25rem;font-size:0.9rem;font-weight:normal;opacity:0.85}.status-badge{display:inline-block;font-size:0.7rem;padding:0.2em 0.5em;border-radius:3px;margin-left:0.5em;font-weight:500;letter-spacing:0.02em}.status-fonctionnel{background:rgba(76,140,76,0.25);color:#2d5a2d}.status-proto{background:rgba(200,140,50,0.25);color:#7a5a1a}.status-cours{background:rgba(70,120,170,0.2);color:#2a4a6a}.status-conception{background:rgba(100,100,100,0.2);color:#3a3a3a}.status-avenir{background:rgba(130,80,170,0.2);color:#5a2d7a}.site-footer{position:fixed;bottom:0;left:0;right:0;z-index:100;flex-shrink:0;background:#120B08;color:#a89f8a;font-size:0.75rem;letter-spacing:0.08em;padding:1.25rem 1rem;border-top:1px solid #222}.footer-inner{max-width:1400px;margin:0 auto;display:flex;justify-content:space-between;flex-wrap:wrap;gap:1rem}.footer-left,.footer-right{display:flex;align-items:center;gap:0.5rem}.footer-right span{opacity:0.6}.site-footer a{color:#F5F5F5;text-decoration:none}.site-footer a:hover{color:#F5F5F5;text-decoration:underline}@media (min-width: 1200px) and (max-width: 1499px){:root{--sidebar-width: 200px}}@media (max-width: 1199px){.site-header{padding:0.5rem 1rem}.header-inner{justify-content:space-between;flex-wrap:nowrap;position:relative;gap:0}.header-brand{flex-shrink:0;gap:0.5rem}.logo img{width:38px}.site-title{font-size:1rem;letter-spacing:0.15em}.title-syl::after{height:0.18em;bottom:-0.12em}.site-subtitle{font-size:0.7rem}.header-slogan,.header-keywords{display:none}.menu-toggle{display:flex;align-items:center;justify-content:center;width:44px;height:44px;flex-shrink:0}.menu-toggle-icon{width:24px;height:2px;background:currentColor;box-shadow:0 -6px 0 currentColor, 0 6px 0 currentColor}.mobile-nav{display:flex;flex-direction:column;position:absolute;top:100%;left:0;right:0;background:#120B08;border-bottom:1px solid rgba(255,255,255,0.2);padding:0.5rem 0;z-index:10;max-height:70vh;overflow-y:auto}.mobile-nav[aria-hidden="true"]{display:none}.mobile-nav-link{display:block;color:#d8ccb0;text-decoration:none;padding:0.65rem 1rem;font-size:0.95rem;transition:color 0.15s, background 0.15s}.mobile-nav-link:hover{color:#F5F5F5;background:rgba(255,255,255,0.05);text-decoration:none}.mobile-nav-link--l1{text-transform:uppercase;letter-spacing:0.1em;color:#F5F5F5;font-size:1rem}.mobile-nav-link--l2{padding-left:1.5rem}.mobile-nav-link--l3{padding-left:2.2rem;font-size:0.85rem}.mobile-nav-link--l4{padding-left:3rem;font-size:0.8rem;opacity:0.85}.mobile-nav-header{display:flex;align-items:center}.mobile-nav-header .mobile-nav-link{flex:1;min-width:0}.mobile-nav-toggle{display:flex;align-items:center;justify-content:center;width:40px;height:40px;background:none;border:none;cursor:pointer;padding:0;flex-shrink:0}.mobile-nav-toggle-icon{display:block;width:0;height:0;border-left:5px solid #d8ccb0;border-top:4px solid transparent;border-bottom:4px solid transparent;transition:transform 0.2s}.mobile-nav-toggle[aria-expanded="true"] .mobile-nav-toggle-icon{transform:rotate(90deg)}.mobile-nav-children{overflow:hidden;max-height:0;transition:max-height 0.25s ease}.mobile-nav-children[aria-hidden="false"]{max-height:500px}.mobile-nav-sep{height:1px;background:rgba(255,255,255,0.15);margin:0.5rem 1rem}.site-body{grid-template-columns:1fr}.site-sidebar{display:none}.page-wrapper::before{left:0;background-image:url("/assets/images/fond_mobile.png")}.parchment{width:100%;max-width:none}.parchment-content{max-width:calc(100% - 10vw);width:100%;margin:0 auto;padding:1rem 5vw;font-size:1rem}.parchment-content img,.parchment-content video,.parchment-content iframe{max-width:100%;height:auto}.site-footer{padding:0.75rem 1rem;font-size:0.75rem}.footer-inner{justify-content:center}.footer-right{display:none}}.parchment-content pre{font-size:0.8rem;line-height:1.5;overflow-x:auto;max-width:100%}.parchment-content code{font-size:0.8rem}.parchment-content table{margin-left:auto;margin-right:auto;border-collapse:collapse}.parchment-content th,.parchment-content td{padding:0.4em 0.8em;border:1px solid rgba(13,13,13,0.2);text-align:left}.parchment-content th{font-weight:bold;border-bottom:2px solid rgba(13,13,13,0.3)}.module-header{text-align:center;margin-bottom:2rem}.module-header h1{margin-bottom:0.25rem}.module-tagline{font-style:italic;font-size:1.05rem;opacity:0.85;margin-bottom:1rem}.module-links{display:flex;align-items:center;justify-content:center;gap:0.75rem;flex-wrap:wrap}.module-badge{display:inline-block;padding:0.3em 0.8em;border:1px solid rgba(13,13,13,0.3) !important;border-radius:4px;font-size:0.8rem;font-weight:500;letter-spacing:0.05em;text-transform:uppercase}.module-badge:hover{background:rgba(13,13,13,0.05)}.module-install{font-size:0.85rem;padding:0.3em 0.6em;background:rgba(13,13,13,0.05);border-radius:3px}.card-install{display:block;font-size:0.8rem;margin:0.5rem 0;padding:0.25em 0.5em;background:rgba(13,13,13,0.05);border-radius:3px}.card-links{display:flex;gap:1rem;margin-top:0.5rem}.pyodide-demo{margin:1.5rem 0;padding:1.25rem;border:1px solid rgba(13,13,13,0.15);border-radius:6px;background:rgba(255,255,255,0.08)}.demo-input{width:100%;padding:0.6rem 0.75rem;font-family:Georgia, "Times New Roman", serif;font-size:0.95rem;border:1px solid rgba(13,13,13,0.25);border-radius:4px;background:rgba(255,255,255,0.3);color:#0d0d0d !important;box-sizing:border-box}.demo-input:focus{outline:2px solid rgba(13,13,13,0.3);outline-offset:1px}.demo-btn{margin-top:0.5rem;padding:0.5rem 1.5rem;font-family:Georgia, "Times New Roman", serif;font-size:0.9rem;background:#F5F5F5 !important;color:#120B08 !important;-webkit-text-fill-color:#120B08 !important;text-fill-color:#120B08 !important;border:1px solid rgba(13,13,13,0.3);border-radius:4px;cursor:pointer;letter-spacing:0.05em}.demo-btn:hover{background:#e8e0d0 !important}.demo-btn:disabled{opacity:0.5;cursor:wait}.module-badge{color:#0d0d0d !important;-webkit-text-fill-color:#0d0d0d !important}.demo-input--ipa{font-family:"Noto Sans", "DejaVu Sans", "Lucida Grande", Arial, sans-serif;font-size:1.1rem}.demo-output{margin-top:0.75rem;padding:0.75rem;font-family:"Courier New", Courier, monospace;font-size:0.82rem;line-height:1.5;background:rgba(13,13,13,0.03);border:1px solid rgba(13,13,13,0.1);border-radius:4px;white-space:pre-wrap;overflow-x:auto;min-height:2rem;color:#0d0d0d !important;-webkit-text-fill-color:#0d0d0d !important}.ipa-keyboard{display:flex;flex-wrap:wrap;gap:0.3rem;margin-bottom:0.5rem}.ipa-key{display:inline-block;padding:0.25rem 0.5rem;border:1px solid rgba(13,13,13,0.2) !important;border-radius:4px;font-family:"Noto Sans", "DejaVu Sans", Arial, sans-serif;font-size:0.85rem;cursor:pointer;user-select:none;background:rgba(255,255,255,0.3) !important;color:#0d0d0d !important;-webkit-text-fill-color:#0d0d0d !important}.ipa-key:hover{background:rgba(13,13,13,0.08) !important}.ipa-key small{font-size:0.65rem;opacity:0.6;color:#0d0d0d !important;-webkit-text-fill-color:#0d0d0d !important}html[data-darkreader-mode],html[data-darkreader-mode] body,html[data-darkreader-mode] .parchment-middle,html[data-darkreader-mode] .parchment-content,html[data-darkreader-mode] .parchment-content *,html[data-darkreader-scheme],html[data-darkreader-scheme] body,html[data-darkreader-scheme] .parchment-middle,html[data-darkreader-scheme] .parchment-content,html[data-darkreader-scheme] .parchment-content *{color-scheme:light !important;print-color-adjust:exact !important;-webkit-print-color-adjust:exact !important;color-adjust:exact !important}html[data-darkreader-mode] .parchment-content,html[data-darkreader-mode] .parchment-content *,html[data-darkreader-scheme] .parchment-content,html[data-darkreader-scheme] .parchment-content *{filter:none !important;-webkit-filter:none !important;backdrop-filter:none !important;-webkit-backdrop-filter:none !important}.parchment-middle,.parchment-content,.parchment-content *,.parchment-content *::before,.parchment-content *::after{-webkit-text-fill-color:#0d0d0d !important;text-fill-color:#0d0d0d !important}
