:root{--color-text:#333;--color-text-light:#666;--color-bg:#fff;--color-bg-alt:#f9f9f9;--color-accent:#5b21b6;--color-accent-hover:#7c3aed;--color-accent-gradient:linear-gradient(135deg, #3b0a45 0%, #5b21b6 50%, #7c3aed 100%);--color-border:#e0e0e0;--font-body:"Inconsolata", monospace;--font-heading:"Inconsolata", monospace;--font-mono:"Inconsolata", monospace;--spacing-xs:0.5rem;--spacing-sm:1rem;--spacing-md:1.5rem;--spacing-lg:2rem;--spacing-xl:3rem;--spacing-xxl:4rem;--max-width:880px;--max-width-wide:1200px;--border-radius:4px}*,*::before,*::after{box-sizing:border-box}html{font-size:100%;-webkit-text-size-adjust:100%}body{margin:0;padding:0;font-family:var(--font-body);font-size:1rem;line-height:1.6;color:var(--color-text);background-color:var(--color-bg)}h1,h2,h3,h4,h5,h6{font-family:var(--font-heading);font-weight:600;line-height:1.2;margin-top:var(--spacing-lg);margin-bottom:var(--spacing-sm);color:var(--color-text)}h1{font-size:2.5rem}h2{font-size:2rem}h3{font-size:1.75rem}h4{font-size:1.5rem}h5{font-size:1.25rem}h6{font-size:1rem}p{margin-top:0;margin-bottom:var(--spacing-sm)}a{color:var(--color-accent);text-decoration:none;transition:color .2s ease}a:hover{color:var(--color-accent-hover);text-decoration:underline}a:focus{outline:2px solid var(--color-accent);outline-offset:2px}#main-content a{text-decoration:none;color:#000;padding:0 5px;background-image:linear-gradient(#ffff00,#ffff00);background-size:100% 50%;background-repeat:no-repeat;background-position:0 100%;transition:background-size .2s ease}#main-content a:hover,#main-content a:focus{background-size:100% 100%;color:#000}.container{max-width:var(--max-width);margin-left:auto;margin-right:auto;padding-left:var(--spacing-sm);padding-right:var(--spacing-sm)}.container-wide{max-width:var(--max-width-wide)}.site-header{padding:var(--spacing-md)0;border-bottom:1px solid var(--color-border);background-color:var(--color-bg)}.header-content{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:var(--spacing-sm)}.site-title{font-family:var(--font-heading);font-size:1.5rem;font-weight:700;color:var(--color-text);text-decoration:none}.site-title:hover{color:var(--color-accent);text-decoration:none}.nav-list{list-style:none;margin:0;padding:0;display:flex;gap:var(--spacing-md)}.nav-link{color:var(--color-text);font-weight:500}.nav-link:hover,.nav-link.active{color:var(--color-accent)}main{min-height:60vh;padding:var(--spacing-xl)0}.site-footer{padding:var(--spacing-lg)0;border-top:1px solid var(--color-border);background-color:var(--color-bg-alt)}.footer-content{text-align:center}.footer-nav{display:inline-flex;align-items:center;gap:var(--spacing-xs);margin-bottom:var(--spacing-sm);font-size:.95rem;flex-wrap:wrap;justify-content:center}.footer-nav-label{font-weight:500;color:var(--color-text-light)}.footer-nav-link{color:var(--color-text);text-decoration:none}.footer-nav-link:hover{color:var(--color-accent);text-decoration:underline}.footer-nav-separator{color:var(--color-text-light)}.copyright{font-size:.875rem;color:var(--color-text-light);margin-bottom:var(--spacing-sm)}@media(max-width:767px){h1{font-size:2rem}h2{font-size:1.75rem}h3{font-size:1.5rem}.header-content{align-items:flex-start}.menu-toggle-label{display:block;align-self:flex-end;cursor:pointer;font-weight:600;letter-spacing:.1em;color:var(--color-text);border:1px solid var(--color-border);border-radius:var(--border-radius);padding:.35rem .85rem;text-transform:uppercase;font-size:.875rem;background-color:var(--color-bg);transition:all .2s ease}.nav{display:none;width:100%;order:3}.nav-list{flex-direction:column;gap:var(--spacing-sm);width:100%;padding-top:var(--spacing-sm)}.menu-toggle:checked~.nav{display:block}.menu-toggle:checked~.menu-toggle-label{color:#fff;background:var(--color-accent-gradient);border-color:var(--color-accent)}}@media(min-width:768px){.nav{display:block}.menu-toggle-label{display:none}.container{padding-left:var(--spacing-md);padding-right:var(--spacing-md)}}.home-header{text-align:center;margin-bottom:var(--spacing-xl)}.profile-photo{width:150px;height:150px;border-radius:50%;object-fit:cover;border:4px solid var(--color-accent)}.home-content{margin-bottom:var(--spacing-xxl)}.home-section{margin-top:var(--spacing-xxl);margin-bottom:var(--spacing-xxl)}.home-section h2{font-size:1.75rem;margin-bottom:var(--spacing-lg);text-align:center}.social-links-inline{display:flex;justify-content:center;align-items:center;flex-wrap:wrap;gap:var(--spacing-xs);font-weight:500}.social-link-inline{color:var(--color-text);text-decoration:none;padding:.125rem .25rem;border-bottom:1px solid transparent;transition:color .2s ease,border-color .2s ease}.social-link-inline:hover{color:var(--color-accent);border-color:var(--color-accent);text-decoration:none}.social-separator{color:var(--color-text-light);margin:0 .25rem}.menu-toggle{position:absolute;width:1px;height:1px;margin:-1px;padding:0;border:0;clip:rect(0 0 0 0);clip-path:inset(100%);overflow:hidden;white-space:nowrap}.projects-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:var(--spacing-lg)}.project-card{padding:var(--spacing-md);border:1px solid var(--color-border);border-radius:var(--border-radius);transition:all .2s ease}.project-card:hover{border-color:var(--color-accent);box-shadow:0 4px 12px rgba(0,0,0,.1)}.project-title{margin-top:0;font-size:1.25rem}.project-title a{color:var(--color-text)}.project-title a:hover{color:var(--color-accent)}.project-description{color:var(--color-text-light);margin-bottom:var(--spacing-sm)}.project-tags{list-style:none;margin:0;padding:0;display:flex;gap:var(--spacing-xs);flex-wrap:wrap;margin-top:var(--spacing-sm)}.tag{font-size:.875rem;padding:.25rem .5rem;background-color:var(--color-bg-alt);border-radius:var(--border-radius);color:var(--color-text-light)}.project-status{font-size:.75rem;text-transform:uppercase;font-weight:600;color:var(--color-accent);margin-top:var(--spacing-xs);display:inline-block}@media(max-width:767px){.nav{width:100%}.nav-list{width:100%;padding-top:var(--spacing-sm)}}.the-pune-experiment-list .page-header{text-align:center;margin-bottom:var(--spacing-xxl)}.page-description{color:var(--color-text-light);max-width:600px;margin:var(--spacing-md)auto}.page-description img{display:block;max-width:100%;height:auto;margin:var(--spacing-md)0}.post-count{color:var(--color-text-light);font-size:.875rem;margin-top:var(--spacing-sm)}.posts{display:flex;flex-direction:column;gap:var(--spacing-xl)}.post-card{padding-bottom:var(--spacing-lg)}.post-title{margin-top:0;margin-bottom:var(--spacing-xs);font-size:1.75rem}.post-title a{color:var(--color-text)}.post-title a:hover{color:var(--color-accent);text-decoration:none}.post-meta{font-size:.875rem;color:var(--color-text-light);margin-bottom:var(--spacing-sm)}.post-meta .separator{margin:0 var(--spacing-xs)}.post-summary{color:var(--color-text);margin-bottom:var(--spacing-sm);line-height:1.6}.posts.posts--compact{gap:var(--spacing-sm)}.post-card--compact{padding-bottom:var(--spacing-sm)}.post-card--compact .post-title{font-size:1.35rem}.post-card--compact .post-meta{display:flex;flex-wrap:wrap;align-items:center;gap:var(--spacing-xs)}.post-card--compact .post-section{text-transform:capitalize}.archive-list{display:flex;flex-direction:column;gap:var(--spacing-xl)}.archive-year-title{font-size:1.5rem;margin-bottom:var(--spacing-sm)}.archive-items{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--spacing-xs)}.archive-item{display:flex;gap:var(--spacing-md);align-items:baseline;padding-bottom:var(--spacing-xs);border-bottom:1px solid var(--color-border)}.archive-item:last-child{border-bottom:none}.archive-date{font-size:.875rem;color:var(--color-text-light);min-width:5rem}.archive-link{color:var(--color-text)}.archive-link:hover{color:var(--color-accent);text-decoration:none}.post .post-header{text-align:center;margin-bottom:var(--spacing-xl);padding-bottom:var(--spacing-lg);border-bottom:1px solid var(--color-border)}.post h1{margin-bottom:var(--spacing-sm)}.post-content{font-size:1.125rem;line-height:1.8;margin-bottom:var(--spacing-xxl)}.post-content h2{margin-top:var(--spacing-xxl);margin-bottom:var(--spacing-md)}.post-content h3{margin-top:var(--spacing-xl);margin-bottom:var(--spacing-sm)}.post-content ul,.post-content ol{margin-bottom:var(--spacing-md);padding-left:var(--spacing-lg)}.post-content li{margin-bottom:var(--spacing-xs)}.post-content code{font-family:var(--font-mono);font-size:.95em;background-color:rgba(17,24,39,.95);color:#f8f8f2;padding:.35em .6em;border-radius:calc(var(--border-radius) * 2);border:1px solid rgba(0,0,0,.2);box-shadow:0 8px 20px rgba(15,23,42,.15)}.post-content pre{background-color:rgba(17,24,39,.95);color:#f8f8f2;padding:calc(var(--spacing-md) * 1.2);border-radius:calc(var(--border-radius) * 2);border:1px solid rgba(0,0,0,.2);box-shadow:0 10px 30px rgba(15,23,42,.15);overflow-x:auto;margin-bottom:var(--spacing-md)}.post-content pre code{background-color:initial;padding:0;color:inherit}.post-content img{max-width:100%;height:auto;border-radius:var(--border-radius);margin:var(--spacing-lg)0}.post-content blockquote{border-left:4px solid var(--color-accent);padding-left:var(--spacing-md);margin-left:0;margin-right:0;color:var(--color-text-light);font-style:italic}.post-content hr{border:none;text-align:center;margin:var(--spacing-xl)0;height:auto}.post-content hr::before{content:"...";display:inline-block;color:var(--color-text-light);font-size:1.5rem;letter-spacing:.5em;font-weight:400}.post-body,.page-body{display:block}.post-toc,.page-toc{margin:var(--spacing-xl)0;padding:0 0 var(--spacing-md);font-size:.95rem}.post-toc--mobile,.page-toc--mobile{border-bottom:1px solid var(--color-border)}.post-toc--desktop,.page-toc--desktop{display:none}.post-toc-title,.page-toc-title{font-size:.875rem;letter-spacing:.08em;text-transform:uppercase;color:var(--color-text-light);margin:0 0 var(--spacing-sm)}.post-toc nav,.page-toc nav{font-size:.95rem}.post-toc nav ul,.page-toc nav ul{list-style:none;margin:0;padding-left:0}.post-toc nav li,.page-toc nav li{margin-bottom:.5rem}.post-toc nav li:last-child,.page-toc nav li:last-child{margin-bottom:0}.post-toc nav li ul,.page-toc nav li ul{margin-top:.35rem;margin-left:var(--spacing-sm);padding-left:var(--spacing-sm);border-left:1px dashed var(--color-border)}.post-toc nav a,.page-toc nav a{color:inherit}.post-toc nav a:hover,.page-toc nav a:hover{color:var(--color-accent)}@media(min-width:1200px){.post-toc--mobile,.page-toc--mobile{display:none}.post-layout-wrapper.post--with-toc,.page-layout-wrapper.page--with-toc{max-width:var(--max-width);margin:0 auto;padding-left:var(--spacing-md);padding-right:var(--spacing-md);position:relative}.post-layout-wrapper.post--with-toc .post,.page-layout-wrapper.page--with-toc .page{width:100%}.post-layout-wrapper.post--with-toc .container,.page-layout-wrapper.page--with-toc .container{max-width:100%;padding-left:0;padding-right:0;margin-left:0;margin-right:0}.post-toc--desktop,.page-toc--desktop{display:block;position:fixed;right:calc((100vw - var(--max-width))/2 - 220px - var(--spacing-xl) - var(--spacing-md));top:calc(var(--spacing-lg) * 2);width:220px;max-height:calc(100vh - var(--spacing-lg) * 2)}.post-toc--desktop .post-toc-inner,.page-toc--desktop .page-toc-inner{border-bottom:none;margin:0;padding:0;max-height:calc(100vh - var(--spacing-lg) * 2);overflow-y:auto;border-left:1px solid var(--color-border);padding-left:var(--spacing-lg);background-color:var(--color-bg)}.post-toc--desktop nav ul,.page-toc--desktop nav ul{padding-left:0}@media(max-width:1400px){.post-toc--desktop,.page-toc--desktop{display:none}.post-toc--mobile,.page-toc--mobile{display:block}}}.post-footer{padding-top:var(--spacing-lg);border-top:1px solid var(--color-border);margin-bottom:var(--spacing-lg)}.post-divider{margin:var(--spacing-xl)0;border:0;border-top:1px solid var(--color-border)}.mermaid{position:relative;margin-bottom:var(--spacing-md);width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;padding-bottom:var(--spacing-sm)}.mermaid svg{display:block;width:auto;min-width:480px;max-width:none}.mermaid::after{content:"Benoit Lamouche - lamouche.fr";display:block;margin-top:var(--spacing-sm);text-align:center;font-size:.75rem;color:var(--color-text-light);letter-spacing:.05em}.post-nav{padding-top:var(--spacing-lg);border-top:1px solid var(--color-border)}.back-link{color:var(--color-accent);font-weight:500}.post-tags{display:flex;align-items:center;flex-wrap:wrap;gap:var(--spacing-xs);font-size:.875rem}.tags-label{color:var(--color-text-light);font-weight:500;margin-right:var(--spacing-xs)}.tag-list{list-style:none;margin:0;padding:0;display:flex;gap:var(--spacing-xs);flex-wrap:wrap}.tag-link{display:inline-flex;align-items:center;justify-content:center;padding:.25rem .5rem;border-radius:var(--border-radius);background-color:initial;color:var(--color-text);font-size:.875rem;transition:color .2s ease,background-color .2s ease}.tag-link:hover{background-color:var(--color-bg-alt);color:var(--color-accent);text-decoration:none}figure{margin:var(--spacing-lg)0}figure img{display:block;max-width:100%;height:auto}figcaption{font-size:.875rem;color:var(--color-text-light);text-align:center;margin-top:var(--spacing-xs);font-style:italic}.post-featured-image{width:100%;margin-bottom:var(--spacing-xl);border-radius:var(--border-radius);overflow:hidden}.post-featured-image img{width:100%;height:auto;display:block}.post-card-image{width:100%;margin-bottom:var(--spacing-md);border-radius:var(--border-radius);overflow:hidden}.post-card-image img{width:100%;height:auto;display:block;transition:transform .3s ease}.post-card:hover .post-card-image img{transform:scale(1.02)}@media(max-width:768px){.post-featured-image,.post-card-image{margin-left:calc(-1 * var(--spacing-md));margin-right:calc(-1 * var(--spacing-md));width:calc(100% + 2 * var(--spacing-md));border-radius:0}}.page .page-header-single{text-align:center;margin-bottom:var(--spacing-xxl);padding-bottom:var(--spacing-lg);border-bottom:1px solid var(--color-border)}.page .page-header-single h1{margin-bottom:var(--spacing-sm)}.page .page-content{font-size:1.125rem;line-height:1.8;max-width:800px;margin:0 auto var(--spacing-xxl)}.page .page-content h2{margin-top:var(--spacing-xxl);margin-bottom:var(--spacing-md);font-size:1.75rem}.page .page-content h3{margin-top:var(--spacing-xl);margin-bottom:var(--spacing-sm);font-size:1.375rem}.page .page-content ul,.page .page-content ol{margin-bottom:var(--spacing-md);padding-left:var(--spacing-lg)}.page .page-content li{margin-bottom:var(--spacing-xs)}.page .page-content code{font-family:var(--font-mono);font-size:.9em;background-color:var(--color-bg-alt);padding:.2em .4em;border-radius:3px}.page .page-content img{display:block;max-width:100%;height:auto;margin:var(--spacing-lg)0}.page .page-content figure{margin:var(--spacing-lg)0}.page .page-content figure img{margin:0 auto}.page .page-content a{color:var(--color-accent)}.page .page-content a:hover{text-decoration:underline}.page .page-content hr{border:none;text-align:center;margin:var(--spacing-xl)0;height:auto}.page .page-content hr::before{content:"...";display:inline-block;color:var(--color-text-light);font-size:1.5rem;letter-spacing:.5em;font-weight:400}.projects-page .page-content{max-width:1200px}.projects-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:var(--spacing-lg);margin-top:var(--spacing-xxl)}.project-card{padding:var(--spacing-lg);border:1px solid var(--color-border);border-radius:var(--border-radius);background-color:var(--color-bg);transition:all .3s ease}.project-card:hover{border-color:var(--color-accent);box-shadow:0 4px 12px rgba(0,0,0,.1);transform:translateY(-2px)}.project-name{margin-top:0;margin-bottom:var(--spacing-xs);font-size:1.375rem}.project-name a{color:var(--color-text);text-decoration:none}.project-name a:hover{color:var(--color-accent)}.project-status{display:inline-block;padding:.25rem .5rem;font-size:.75rem;font-weight:600;text-transform:uppercase;border-radius:var(--border-radius);margin-bottom:var(--spacing-sm);letter-spacing:.05em}.project-status--active{background-color:#10b981;color:#fff}.project-status--archived{background-color:#6b7280;color:#fff}.project-status--wip{background-color:#f59e0b;color:#fff}.project-description{color:var(--color-text);margin-bottom:var(--spacing-md);line-height:1.6}.project-tags{display:flex;flex-wrap:wrap;gap:var(--spacing-xs);margin-bottom:var(--spacing-md)}.project-tag{display:inline-block;padding:.25rem .5rem;background-color:var(--color-bg-alt);border-radius:var(--border-radius);font-size:.875rem;color:var(--color-text-light)}.project-link{display:inline-block;color:var(--color-accent);font-weight:500;text-decoration:none;transition:all .2s ease}.project-link:hover{text-decoration:underline;transform:translateX(4px)}@media(max-width:768px){.projects-grid{grid-template-columns:1fr}}.breadcrumb{margin-bottom:var(--spacing-lg);padding:var(--spacing-sm)0}.breadcrumb-list{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;align-items:center;font-size:.875rem}.breadcrumb-item{display:flex;align-items:center}.breadcrumb-separator{margin:0 var(--spacing-xs);color:var(--color-text-light)}.breadcrumb-item a{color:var(--color-accent);text-decoration:none}.breadcrumb-item a:hover{text-decoration:underline}.breadcrumb-item--active{color:var(--color-text-light)}@media(max-width:768px){.breadcrumb{font-size:.8rem}}.pagination{margin-top:var(--spacing-xxl);padding-top:var(--spacing-lg);border-top:1px solid var(--color-border)}.pagination-list{list-style:none;margin:0;padding:0;display:flex;justify-content:space-between;align-items:center;gap:var(--spacing-md)}.pagination-item{flex:none}.pagination-item--info{flex:auto;text-align:center}.pagination-link{display:inline-block;padding:var(--spacing-sm)var(--spacing-md);background-color:var(--color-bg-alt);border:1px solid var(--color-border);border-radius:var(--border-radius);color:var(--color-text);text-decoration:none;font-weight:500;transition:all .2s ease}.pagination-link:hover{background:var(--color-accent-gradient);color:#fff;border-color:var(--color-accent)}.pagination-link--disabled{opacity:.5;cursor:not-allowed;background-color:initial}.pagination-link--disabled:hover{background-color:initial;color:var(--color-text);border-color:var(--color-border)}.pagination-info{color:var(--color-text-light);font-size:.875rem}@media(max-width:768px){.pagination-list{flex-direction:column;gap:var(--spacing-sm)}.pagination-item{width:100%}.pagination-link{width:100%;text-align:center}.pagination-item--info{order:-1}}.error-404{min-height:60vh;display:flex;align-items:center;justify-content:center}.error-404-content{text-align:center;max-width:600px;margin:0 auto;padding:var(--spacing-xxl)0}.error-404-code{font-size:6rem;font-weight:700;color:var(--color-accent);line-height:1;margin-bottom:var(--spacing-md)}.error-404-title{font-size:2rem;margin-bottom:var(--spacing-md)}.error-404-message{font-size:1.125rem;color:var(--color-text-light);margin-bottom:var(--spacing-xxl);line-height:1.6}.error-404-actions{display:flex;gap:var(--spacing-md);justify-content:center;margin-bottom:var(--spacing-xxl)}.btn{display:inline-block;padding:var(--spacing-sm)var(--spacing-lg);border-radius:var(--border-radius);text-decoration:none;font-weight:500;transition:all .2s ease}.btn--primary{background:var(--color-accent-gradient);color:#fff;border:2px solid var(--color-accent)}.btn--primary:hover{background-color:initial;color:var(--color-accent)}.btn--secondary{background-color:initial;color:var(--color-accent);border:2px solid var(--color-accent)}.btn--secondary:hover{background:var(--color-accent-gradient);color:#fff}.error-404-suggestions{margin-top:var(--spacing-xxl);padding-top:var(--spacing-lg);border-top:1px solid var(--color-border)}.error-404-suggestions h2{font-size:1.25rem;margin-bottom:var(--spacing-md)}.error-404-suggestions ul{list-style:none;padding:0;margin:0}.error-404-suggestions li{margin-bottom:var(--spacing-sm)}.error-404-suggestions a{color:var(--color-accent);text-decoration:none}.error-404-suggestions a:hover{text-decoration:underline}.notebook-recent{margin-top:var(--spacing-xxl);margin-bottom:var(--spacing-xxl)}.notebook-recent .section-title{font-size:1.5rem;margin-bottom:var(--spacing-lg)}.notebook-recent-list{display:flex;flex-direction:column;gap:var(--spacing-lg)}.notebook-featured-card{display:flex;flex-direction:column;gap:var(--spacing-md);padding:var(--spacing-md)0}.notebook-featured-image{display:block;border-radius:var(--border-radius);overflow:hidden;background-color:initial;padding:0;background-image:none!important}.notebook-featured-image:hover,.notebook-featured-image:focus{background-image:none!important}.notebook-featured-image img{width:100%;aspect-ratio:8/3;height:auto;object-fit:cover;display:block}.notebook-featured-content{display:flex;flex-direction:column;gap:var(--spacing-sm)}.notebook-featured-title{font-size:1.5rem;margin:0}.notebook-featured-title a{color:inherit;text-decoration:none}.notebook-featured-title a:hover{color:var(--color-accent)}.notebook-featured-meta{display:flex;align-items:center;gap:var(--spacing-xs);color:var(--color-text-light);font-size:.95rem}.notebook-featured-summary{font-size:1.05rem;color:var(--color-text-light);margin:0}@media(max-width:768px){.notebook-featured-card{flex-direction:column}.notebook-featured-image{width:100%;flex-basis:auto}}@media(max-width:768px){.error-404-code{font-size:4rem}.error-404-title{font-size:1.5rem}.error-404-actions{flex-direction:column}.btn{width:100%}}