@font-face{font-family:literata;font-style:normal;font-weight:400 700;font-display:swap;src:url(/fonts/literata-latin-ext.woff2)format('woff2');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:literata;font-style:normal;font-weight:400 700;font-display:swap;src:url(/fonts/literata-latin.woff2)format('woff2');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:literata;font-style:italic;font-weight:400 700;font-display:swap;src:url(/fonts/literata-italic-latin-ext.woff2)format('woff2');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:literata;font-style:italic;font-weight:400 700;font-display:swap;src:url(/fonts/literata-italic-latin.woff2)format('woff2');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:ibm plex sans;font-style:normal;font-weight:400 600;font-display:swap;src:url(/fonts/ibm-plex-sans-latin-ext.woff2)format('woff2');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:ibm plex sans;font-style:normal;font-weight:400 600;font-display:swap;src:url(/fonts/ibm-plex-sans-latin.woff2)format('woff2');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:ibm plex sans;font-style:italic;font-weight:400;font-display:swap;src:url(/fonts/ibm-plex-sans-italic-latin-ext.woff2)format('woff2');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:ibm plex sans;font-style:italic;font-weight:400;font-display:swap;src:url(/fonts/ibm-plex-sans-italic-latin.woff2)format('woff2');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:ibm plex mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/ibm-plex-mono-400-latin-ext.woff2)format('woff2');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:ibm plex mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/ibm-plex-mono-400-latin.woff2)format('woff2');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:ibm plex mono;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/ibm-plex-mono-600-latin-ext.woff2)format('woff2');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:ibm plex mono;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/ibm-plex-mono-600-latin.woff2)format('woff2');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:ibm plex mono;font-style:italic;font-weight:400;font-display:swap;src:url(/fonts/ibm-plex-mono-400-italic-latin.woff2)format('woff2');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{--brand-primary:#007475;--brand-primary-rgb:0, 116, 117;--brand-primary-hover:#005f60;--brand-secondary:#8a5619;--brand-secondary-hover:#724305;--brand-success:#4f7a5f;--bg-page:#efe7d9;--bg-card:#f9f4eb;--bg-code:#e8dece;--text-primary:#271f19;--text-secondary:#645850;--text-muted:#6f6259;--text-inverse:#ffffff;--border-subtle:#dbd0bf;--border-strong:#c6b8a4;--shadow-sm:0 1px 2px rgba(39, 31, 25, 0.05);--shadow-md:0 4px 12px rgba(39, 31, 25, 0.09);--shadow-hover:0 8px 24px rgba(39, 31, 25, 0.16);--font-display:'Literata', Georgia, 'Times New Roman', serif;--font-body:'Literata', Georgia, 'Times New Roman', serif;--font-ui:'IBM Plex Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;--font-mono:'IBM Plex Mono', ui-monospace, SFMono-Regular, Menlo, monospace;--fs-h1:2.375rem;--fs-h2:1.75rem;--fs-h3:1.375rem;--fs-lead:1.125rem;--fs-body:1rem;--fs-small:0.9375rem;--fs-meta:0.8125rem;--fs-micro:0.75rem;--lh-tight:1.25;--lh-snug:1.45;--lh-loose:1.7;--transition-fast:150ms ease;--transition-base:250ms ease;--transition-slow:400ms ease;--space-xs:0.25rem;--space-sm:0.5rem;--space-md:1rem;--space-lg:1.5rem;--space-xl:2rem;--space-2xl:3rem;--space-3xl:4rem;--radius-sm:4px;--radius-md:8px;--radius-lg:12px;--radius-xl:16px;--radius-full:9999px}[data-theme=dark]{--brand-primary:#66cbc5;--brand-primary-rgb:102, 203, 197;--brand-primary-hover:#8aded8;--brand-secondary:#e2ab75;--brand-secondary-hover:#f2c294;--brand-success:#7fb894;--bg-page:#1b1611;--bg-card:#27221d;--bg-code:#221d17;--text-primary:#e4dfd7;--text-secondary:#aea8a0;--text-muted:#979189;--text-inverse:#1b1611;--border-subtle:#37322b;--border-strong:#4d463e;--shadow-sm:0 1px 2px rgba(0, 0, 0, 0.25);--shadow-md:0 4px 12px rgba(0, 0, 0, 0.35);--shadow-hover:0 8px 24px rgba(0, 0, 0, 0.5)}.icon-moon{display:none}[data-theme=dark] .icon-moon{display:block}[data-theme=dark] .icon-sun{display:none}html:lang(he){--font-display:'Literata', 'Noto Serif Hebrew', 'Frank Ruehl CLM', 'David Libre', 'Times New Roman', serif;--font-body:'Literata', 'Noto Serif Hebrew', 'Frank Ruehl CLM', 'David Libre', 'Times New Roman', serif;--font-ui:'IBM Plex Sans', 'IBM Plex Sans Hebrew', 'Segoe UI', 'Arial Hebrew', 'Noto Sans Hebrew', system-ui, sans-serif}html{scroll-behavior:smooth}body{font-family:var(--font-body);background-color:var(--bg-page);color:var(--text-primary);line-height:var(--lh-loose);min-height:100vh;display:flex;flex-direction:column}h1,h2,h3,h4,h5,h6{font-family:var(--font-display);font-weight:600;line-height:var(--lh-tight);color:var(--text-primary);letter-spacing:-.01em}h1{font-size:var(--fs-h1);font-weight:700;letter-spacing:-.02em}h2{font-size:var(--fs-h2);margin-top:var(--space-3xl);margin-bottom:var(--space-lg);padding-bottom:var(--space-sm);border-bottom:2px solid var(--brand-secondary)}h3{font-size:var(--fs-h3);color:var(--brand-primary);margin-top:var(--space-xl);margin-bottom:var(--space-md)}h4,h5,h6{font-size:var(--fs-lead);font-weight:600}p{margin-bottom:var(--space-lg)}a{color:var(--brand-primary);text-decoration:none;transition:color var(--transition-fast)}a:hover{color:var(--brand-primary-hover)}main p a,main li a{text-decoration:underline;text-decoration-color:var(--border-subtle);text-underline-offset:3px;transition:text-decoration-color var(--transition-fast),color var(--transition-fast)}main p a:hover,main li a:hover{text-decoration-color:var(--brand-primary)}.navbar{background-color:var(--bg-page)!important;border-bottom:1px solid var(--border-subtle);padding:var(--space-md)0;backdrop-filter:blur(8px)}.navbar-brand{font-family:var(--font-display);font-weight:700;font-size:var(--fs-h3);color:var(--text-primary)!important;letter-spacing:-.02em}.navbar-nav .nav-link{color:var(--text-secondary)!important;font-weight:500;padding:var(--space-sm)var(--space-md);border-radius:var(--radius-md);transition:color var(--transition-fast),background-color var(--transition-fast)}.navbar-nav .nav-link:hover{color:var(--brand-primary)!important;background-color:rgba(var(--brand-primary-rgb),.06)}.navbar-nav .nav-link.active{color:var(--brand-primary)!important}.navbar .nav-link i{color:var(--text-muted);transition:color var(--transition-fast),transform var(--transition-fast)}.navbar .nav-link:hover i{color:var(--brand-primary);transform:translateY(-1px)}[data-theme=dark] .navbar{background-color:var(--bg-page)!important;border-bottom-color:var(--border-subtle)}.navbar-container{max-width:1200px;margin:0 auto;padding:0 var(--space-lg);display:flex;align-items:center;justify-content:space-between}.navbar-menu{display:flex;align-items:center;gap:var(--space-md)}.navbar-toggle{display:none;background:0 0;border:none;cursor:pointer;padding:var(--space-sm)}.navbar-toggle span{display:block;width:20px;height:2px;background:var(--text-primary);margin:4px 0}.navbar-social{display:flex;align-items:center;gap:var(--space-sm)}html:lang(he) .navbar-container,html:lang(he) .footer-container{direction:rtl}@media(max-width:767.98px){.navbar-toggle{display:block}.navbar-menu{display:none;position:absolute;top:100%;left:0;right:0;background:var(--bg-page);border-bottom:1px solid var(--border-subtle);flex-direction:column;padding:var(--space-md)}.navbar-menu.active{display:flex}.navbar-nav{display:flex;flex-direction:column;width:100%}.navbar-social{padding-top:var(--space-md);border-top:1px solid var(--border-subtle);flex-wrap:wrap;justify-content:center}}.availability-box{position:relative;background:linear-gradient(135deg,var(--brand-secondary) 0%,#d97a5e 50%,#e89a7a 100%);color:var(--text-inverse);padding:var(--space-xl);border-radius:var(--radius-lg);margin:var(--space-xl)0;box-shadow:var(--shadow-md),0 4px 20px rgba(197,90,68,.25);overflow:hidden}.availability-box::before{content:'';position:absolute;inset:0;background-image:radial-gradient(rgba(255,255,255,.12) 1px,transparent 1px);background-size:16px 16px;pointer-events:none}.availability-box::after{content:'';position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.1),transparent);pointer-events:none}.availability-box p{position:relative;margin:0;z-index:1}.availability-box p:first-child{font-weight:600;font-size:var(--fs-lead);margin-bottom:var(--space-sm)}.availability-box p:last-child{opacity:.95}.availability-box a{color:var(--text-inverse);text-decoration:underline;text-underline-offset:3px;font-weight:600;transition:opacity var(--transition-fast)}.availability-box a:hover{opacity:.85;color:var(--text-inverse)}[data-theme=dark] .availability-box{background:linear-gradient(135deg,var(--brand-secondary) 0%,#f08d75 100%);box-shadow:var(--shadow-md),0 4px 20px rgba(232,122,95,.3)}.project-card{background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);overflow:hidden;margin-bottom:var(--space-lg);transition:transform var(--transition-base),box-shadow var(--transition-base),border-color var(--transition-base)}.project-card:hover{transform:translateY(-4px);box-shadow:var(--shadow-hover);border-color:var(--border-strong)}.project-card-image{width:100%;aspect-ratio:16/9;overflow:hidden;background:linear-gradient(135deg,var(--bg-code) 0%,var(--border-subtle) 100%);position:relative}.project-card-image img{width:100%;height:100%;object-fit:cover;transition:transform var(--transition-slow)}.project-card:hover .project-card-image img{transform:scale(1.03)}.project-card-textonly{border-top:3px solid var(--brand-primary);display:flex;flex-direction:column;justify-content:center}.project-card-body{padding:var(--space-lg)}.project-card-title{margin:0 0 var(--space-sm);font-size:var(--fs-lead)}.project-card-title a{color:var(--brand-primary);text-decoration:none}.project-card-title a:hover{color:var(--brand-primary-hover)}.project-card p{margin:0;color:var(--text-secondary);font-size:var(--fs-small);line-height:var(--lh-snug)}.service-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:var(--space-lg);margin:var(--space-xl)0}.service-card{background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);padding:var(--space-xl);transition:border-color var(--transition-base),box-shadow var(--transition-base)}.service-card:hover{border-color:var(--brand-primary);box-shadow:var(--shadow-sm)}.service-card-icon{width:48px;height:48px;background:linear-gradient(135deg,var(--brand-primary),var(--brand-success));border-radius:var(--radius-md);display:flex;align-items:center;justify-content:center;margin-bottom:var(--space-md);color:var(--text-inverse);font-size:var(--fs-h3)}.service-card h3{font-size:var(--fs-lead);margin:0 0 var(--space-sm);color:var(--text-primary)}.service-card p{margin:0;color:var(--text-secondary);font-size:var(--fs-small);line-height:var(--lh-snug)}.featured-project{background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:var(--radius-xl);overflow:hidden;margin:var(--space-xl)0;display:grid;grid-template-columns:minmax(0,280px)1fr;gap:0}.featured-project-image{aspect-ratio:16/10;overflow:hidden;background:var(--bg-code);align-self:center}.featured-project-image img{width:100%;height:100%;object-fit:cover}.featured-project-content{padding:var(--space-xl);display:flex;flex-direction:column;justify-content:center}.featured-project h2,.featured-project h3{margin:0 0 var(--space-sm);font-size:var(--fs-h3)}.featured-project-title a{color:var(--brand-primary);text-decoration:none}.featured-project-title a:hover{color:var(--brand-primary-hover)}.featured-project p{color:var(--text-secondary);margin-bottom:var(--space-md)}.featured-project-textonly{grid-template-columns:1fr;border-top:3px solid var(--brand-primary)}.featured-project-textonly .featured-project-content{max-width:68ch}@media(max-width:767.98px){.featured-project{grid-template-columns:1fr}}.post-listing{margin-top:var(--space-md)}.post-card{padding:var(--space-lg)0;border-bottom:1px solid var(--border-subtle);display:grid;grid-template-columns:1fr;gap:var(--space-lg);align-items:start}.post-card:has(.post-card-image){grid-template-columns:200px 1fr}.post-card:last-child{border-bottom:none}.post-card-image img{width:200px;aspect-ratio:1200/630;object-fit:cover;border-radius:var(--radius-md);background:var(--bg-code);border:1px solid var(--border-subtle)}.post-card-image{width:200px;aspect-ratio:1200/630;border-radius:var(--radius-md);background:var(--bg-code);border:1px solid var(--border-subtle)}.listing-title{font-family:var(--font-display);font-size:var(--fs-lead);font-weight:600;color:var(--text-primary);margin-bottom:var(--space-xs);line-height:var(--lh-snug);transition:color var(--transition-fast)}.listing-title:hover{color:var(--brand-primary)}.listing-description{color:var(--text-secondary);font-size:var(--fs-small);line-height:var(--lh-snug);margin-bottom:var(--space-sm)}.metadata{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--space-md);font-size:var(--fs-meta);color:var(--text-muted)}.reading-time::before{content:'\00b7';margin-inline-end:var(--space-md)}.post-categories{display:flex;flex-wrap:wrap;gap:var(--space-xs);margin-top:var(--space-sm)}.category-tag{background:var(--bg-code);color:var(--text-secondary);padding:var(--space-xs)var(--space-sm);border-radius:var(--radius-full);font-size:var(--fs-micro);text-transform:uppercase;letter-spacing:.05em;border:1px solid var(--border-subtle)}.highlight{background:var(--bg-code);border:1px solid var(--border-subtle);border-radius:var(--radius-md);margin:var(--space-lg)0;transition:box-shadow var(--transition-fast)}.highlight:hover{box-shadow:var(--shadow-sm)}.highlight pre{padding:var(--space-lg);margin:0;overflow-x:auto;-webkit-overflow-scrolling:touch;background:0 0;border:0}pre,code,kbd,samp{font-family:var(--font-mono);font-size:var(--fs-small);line-height:var(--lh-snug)}:not(pre)>code{background:var(--bg-code);color:var(--brand-primary);padding:.15rem .45rem;border-radius:var(--radius-sm);font-size:.9em;border:1px solid var(--border-subtle)}pre:not(.chroma){background:var(--bg-code);padding:var(--space-lg);border-radius:var(--radius-md);border:1px solid var(--border-subtle);overflow-x:auto}math[display=block]{display:block;overflow-x:auto;overflow-y:hidden;max-width:100%}.contact-form{max-width:600px;display:flex;flex-direction:column;gap:var(--space-md);margin-top:var(--space-lg)}.contact-form .form-group{display:flex;flex-direction:column;gap:var(--space-xs)}.contact-form label{font-weight:600;font-size:var(--fs-small);color:var(--text-primary)}.contact-form input,.contact-form textarea{font-family:inherit;font-size:var(--fs-body);padding:.75rem 1rem;border-radius:var(--radius-md);border:1px solid var(--border-subtle);background:var(--bg-card);color:var(--text-primary);transition:border-color var(--transition-fast),box-shadow var(--transition-fast)}.contact-form input:focus,.contact-form textarea:focus{outline:none;border-color:var(--brand-primary);box-shadow:0 0 0 3px rgba(var(--brand-primary-rgb),.28)}.contact-form button{font-family:var(--font-display);font-weight:600;padding:.875rem 1.5rem;border:none;border-radius:var(--radius-md);background:var(--brand-primary);color:var(--text-inverse);cursor:pointer;transition:background-color var(--transition-fast),transform var(--transition-fast)}.contact-form button:hover{background:var(--brand-primary-hover);transform:translateY(-1px)}.share-buttons{display:flex;align-items:center;gap:.75rem;margin-top:var(--space-xl);padding-top:var(--space-lg);border-top:1px solid var(--border-subtle)}.share-label{font-weight:600;color:var(--text-secondary);font-size:var(--fs-small)}.share-btn{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:var(--radius-full);background:var(--bg-code);color:var(--text-secondary);text-decoration:none;border:1px solid var(--border-subtle);cursor:pointer;transition:all var(--transition-fast);position:relative}.share-btn:hover{transform:translateY(-2px);box-shadow:var(--shadow-sm)}.share-twitter:hover{background:#1da1f2;border-color:#1da1f2;color:#fff}.share-linkedin:hover{background:#0077b5;border-color:#0077b5;color:#fff}.share-mastodon:hover{background:#6364ff;border-color:#6364ff;color:#fff}.share-copy:hover{background:var(--brand-primary);border-color:var(--brand-primary);color:#fff}.share-copy .copy-feedback{position:absolute;top:-32px;left:50%;transform:translateX(-50%);background:var(--brand-success);color:#fff;padding:4px 10px;border-radius:var(--radius-sm);font-size:var(--fs-micro);opacity:0;pointer-events:none;transition:opacity var(--transition-fast);white-space:nowrap}.share-copy.copied .copy-feedback{opacity:1}.skip-link{position:absolute;left:-9999px;top:auto;width:1px;height:1px;overflow:hidden;z-index:1100;text-decoration:none}.skip-link:focus{position:fixed;top:0;left:0;width:auto;height:auto;overflow:visible;background:var(--brand-primary);color:var(--text-inverse);padding:var(--space-sm)var(--space-md);border-radius:0 0 var(--radius-md)0}#content{max-width:900px;margin:0 auto;padding:0 var(--space-lg);width:100%;box-sizing:border-box;flex:1 0 auto}@media(min-width:992px){#content:has(.toc-sidebar){max-width:1200px;display:grid;grid-template-columns:1fr 250px;gap:var(--space-xl)}}.toc-sidebar{position:sticky;top:80px;max-height:calc(100vh - 100px);overflow-y:auto}.toc-sidebar nav h2{font-size:var(--fs-small);margin-bottom:var(--space-sm)}.toc-sidebar nav ul{list-style:none;padding:0;font-size:var(--fs-meta)}.toc-sidebar nav li{margin-bottom:var(--space-xs)}.toc-sidebar nav a{color:var(--text-muted)}.toc-sidebar nav a:hover{color:var(--brand-primary)}.content{max-width:800px;margin-left:auto;margin-right:auto}main img{max-width:100%;height:auto}table{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%}main ul li{margin-bottom:.75rem}main ul li strong{color:var(--brand-primary)}.cta-pill{display:inline-block;font-weight:600;padding:var(--space-sm)var(--space-lg);border:2px solid var(--brand-primary);border-radius:var(--radius-full);color:var(--brand-primary);text-decoration:none;transition:background-color var(--transition-fast),color var(--transition-fast),transform var(--transition-fast)}.cta-pill:hover{background:var(--brand-primary);color:var(--text-inverse);transform:translateY(-1px);text-decoration:none}blockquote,.callout{border-left:4px solid var(--brand-primary);background:var(--bg-code);padding:var(--space-md)var(--space-lg);margin:var(--space-lg)0;border-radius:0 var(--radius-md)var(--radius-md)0}blockquote p:last-child{margin-bottom:0}.about-section{display:flex;align-items:center;gap:var(--space-xl);margin-bottom:var(--space-xl)}.about-image img{width:200px;height:200px;border-radius:50%;object-fit:cover}.about-links{display:flex;flex-wrap:wrap;gap:var(--space-sm);margin-top:var(--space-md)}.about-link{display:inline-flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm)var(--space-md);border-radius:var(--radius-md);background:var(--bg-code);border:1px solid var(--border-subtle);font-size:var(--fs-small);transition:border-color var(--transition-fast)}.about-link:hover{border-color:var(--brand-primary)}@media(max-width:575.98px){.about-section{flex-direction:column;text-align:center}.about-image img{width:100px;height:100px}.about-links{justify-content:center}}@media(max-width:767.98px){.highlight pre code{font-size:var(--fs-meta)}.highlight,pre:not(.chroma){margin-left:calc(var(--space-md) * -1);margin-right:calc(var(--space-md) * -1);border-radius:0;border-left:none;border-right:none}.highlight pre{padding:var(--space-md)}.post-card{grid-template-columns:1fr;gap:var(--space-md)}.post-card-image img{width:100%;aspect-ratio:1200/630}.listing-title{font-size:var(--fs-lead)}.metadata{font-size:var(--fs-meta)}}@media(max-width:575.98px){body{font-size:var(--fs-body)}:root{--fs-h1:1.875rem;--fs-h2:1.5rem;--fs-h3:1.25rem}h2{margin-top:var(--space-xl)}section,.post-listing{margin-top:var(--space-xl);margin-bottom:var(--space-xl)}.project-card{margin-bottom:var(--space-md)}.project-card-body{padding:var(--space-md)}.contact-form input,.contact-form textarea{font-size:16px}.contact-form button{width:100%;padding:var(--space-md)}}.rtl-content{direction:rtl;text-align:right}.rtl-content blockquote,.rtl-content .callout{border-left:none;border-right:4px solid var(--brand-primary);border-radius:var(--radius-md)0 0 var(--radius-md)}.rtl-content pre,.rtl-content code{direction:ltr;text-align:left}.rtl-content table{direction:rtl}.rtl-content table code,.rtl-content table a{direction:ltr;unicode-bidi:embed}[data-theme=dark]{.highlight{border-color:var(--border-subtle)}.about-link{background:var(--bg-card);border-color:var(--border-subtle)}.project-card{background:var(--bg-card)}.contact-form input, .contact-form textarea{background:var(--bg-card);border-color:var(--border-subtle)} :not(pre) > code { background: var(--bg-code); border-color: var(--border-subtle); }}.project-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-xl);align-items:start}.project-grid>.project-card{margin-bottom:0}@media(max-width:767.98px){.project-grid{grid-template-columns:1fr}}.nav-footer{border-top:1px solid var(--border-subtle);padding:var(--space-lg)0}.nav-footer a{color:var(--text-muted);transition:color var(--transition-fast),transform var(--transition-fast)}.nav-footer a:hover{color:var(--brand-primary)}.nav-footer i{transition:transform var(--transition-fast)}.nav-footer a:hover i{transform:translateY(-1px)}.footer-container{max-width:1200px;margin:0 auto;padding:0 var(--space-lg);display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:var(--space-md)}.footer-right{display:flex;gap:var(--space-md)}.footer-right a{color:var(--text-muted)}.footer-right a:hover{color:var(--brand-primary)}@keyframes fadeInUp{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.service-card{animation:fadeInUp .4s ease-out both}.service-card:nth-child(1){animation-delay:.3s}.service-card:nth-child(2){animation-delay:.4s}.service-card:nth-child(3){animation-delay:.5s}.service-card:nth-child(4){animation-delay:.6s}@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}.series-banner{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--space-xs);margin:0 0 var(--space-xl);padding:var(--space-sm)var(--space-md);border-left:3px solid var(--brand-primary);background:var(--bg-code);border-radius:0 var(--radius-sm)var(--radius-sm)0;font-size:var(--fs-meta);letter-spacing:.04em;color:var(--text-muted)}.series-banner-pos{text-transform:uppercase;font-weight:600;color:var(--text-secondary)}.series-banner-name{font-weight:600;color:var(--brand-primary)}.series-nav{margin:var(--space-2xl)0 var(--space-xl);padding:var(--space-lg);border:1px solid var(--border-subtle);border-radius:var(--radius-md);background:var(--bg-card)}.series-nav-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--space-sm);margin-bottom:var(--space-md);padding-bottom:var(--space-sm);border-bottom:1px solid var(--border-subtle)}.series-nav-label{font-size:var(--fs-micro);text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted)}.series-nav-title{font-family:var(--font-display);font-weight:600;font-size:var(--fs-lead)}.series-nav-list{margin:0;padding-left:1.4em;font-size:var(--fs-small)}.rtl-content .series-nav-list{padding-left:0;padding-right:1.4em}.series-nav-list li{margin-bottom:var(--space-xs);line-height:var(--lh-snug)}.series-nav-list li::marker{color:var(--text-muted);font-variant-numeric:tabular-nums}.series-nav-list li.is-current::marker{color:var(--brand-primary);font-weight:700}.series-nav-current{font-weight:600;color:var(--text-primary)}.series-nav-here{margin-left:var(--space-sm);font-size:var(--fs-micro);text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted)}.rtl-content .series-nav-here{margin-left:0;margin-right:var(--space-sm)}.series-nav-steps{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-md);margin-top:var(--space-lg);padding-top:var(--space-md);border-top:1px solid var(--border-subtle)}.series-step{display:flex;flex-direction:column;gap:2px;text-decoration:none}.series-step-next{text-align:right}.rtl-content .series-step-next{text-align:left}.series-step-label{font-size:var(--fs-micro);text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted)}.series-step-title{font-size:var(--fs-small);font-weight:600;color:var(--brand-primary);line-height:var(--lh-tight)}.series-step:hover .series-step-title{text-decoration:underline}@media(max-width:575.98px){.series-nav-steps{grid-template-columns:1fr}.series-step-next,.rtl-content .series-step-next{text-align:inherit}}.series-index-item{padding:var(--space-xl)0;border-bottom:1px solid var(--border-subtle)}.series-index-item:last-child{border-bottom:none}.series-index-title{font-family:var(--font-display);margin-bottom:var(--space-xs)}.series-index-meta{font-size:var(--fs-meta);text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin-bottom:var(--space-sm)}.series-index-desc{color:var(--text-secondary);margin-bottom:var(--space-md)}.series-index-list{margin:0;padding-left:1.4em;font-size:var(--fs-small)}.rtl-content .series-index-list{padding-left:0;padding-right:1.4em}.series-index-list li{margin-bottom:var(--space-xs)}.series-index-list li::marker{color:var(--text-muted)}.series-header{margin-bottom:var(--space-lg)}.series-eyebrow{font-size:var(--fs-micro);text-transform:uppercase;letter-spacing:.08em;margin-bottom:var(--space-sm)}.series-meta{font-size:var(--fs-meta);color:var(--text-muted)}.series-intro{margin-bottom:var(--space-xl);padding-bottom:var(--space-lg);border-bottom:1px solid var(--border-subtle)}.series-listing{margin:0;padding-left:1.6em;counter-reset:none}.rtl-content .series-listing{padding-left:0;padding-right:1.6em}.series-listing-item{padding:var(--space-lg)0;border-bottom:1px solid var(--border-subtle)}.series-listing-item:last-child{border-bottom:none}.series-listing-item::marker{color:var(--text-muted);font-variant-numeric:tabular-nums}.series-listing-item .listing-description{color:var(--text-secondary);margin:var(--space-xs)0 var(--space-sm)}.related-posts{margin:var(--space-xl)0;padding-top:var(--space-lg);border-top:1px solid var(--border-subtle)}.related-posts-title{font-size:var(--fs-micro);text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted);margin-bottom:var(--space-sm)}.related-posts-list{list-style:none;padding:0;margin:0;font-size:var(--fs-small)}.related-posts-list li{margin-bottom:var(--space-xs);line-height:var(--lh-snug)}.related-posts-series{margin-left:var(--space-sm);font-size:var(--fs-micro);text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);white-space:nowrap}.rtl-content .related-posts-series{margin-left:0;margin-right:var(--space-sm)}.term-cloud{list-style:none;padding:0;margin:var(--space-lg)0 0;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));display:grid;gap:var(--space-sm)var(--space-lg)}.term-cloud-item{display:grid;grid-template-columns:1fr 64px auto;align-items:center;gap:var(--space-sm);padding:var(--space-xs)0;border-bottom:1px solid var(--border-subtle)}.term-cloud-link{font-weight:600}.term-cloud-count{font-size:var(--fs-micro);color:var(--text-muted);white-space:nowrap;font-variant-numeric:tabular-nums}.listing-title,.project-card-title,.series-listing-item .listing-title,.related-posts-title,.series-index-title,.series-nav-title{margin-top:0;padding-bottom:0;border-bottom:none}.series-listing-item .listing-title{font-size:var(--fs-lead);margin-bottom:var(--space-xs)}.series-index-title{margin-bottom:var(--space-xs)}.series-index-item{padding:var(--space-lg)0 var(--space-xl)}.series-listing-item{padding:var(--space-md)0 var(--space-lg)}.rtl-content .series-banner{border-left:none;border-right:3px solid var(--brand-primary);border-radius:var(--radius-sm)0 0 var(--radius-sm)}.home-series{list-style:none;padding:0;margin:0 0 var(--space-lg)}.home-series li{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-md);padding:var(--space-sm)0;border-bottom:1px solid var(--border-subtle)}.home-series-name{font-family:var(--font-display);font-weight:600;font-size:var(--fs-lead)}.home-series-count{font-size:var(--fs-micro);color:var(--text-muted);white-space:nowrap;font-variant-numeric:tabular-nums}.nav-lang{font-size:var(--fs-meta);font-weight:600;letter-spacing:.01em;padding:.15rem .5rem;border:1px solid var(--border-subtle);border-radius:var(--radius-sm,4px);white-space:nowrap}.nav-lang:hover{border-color:var(--border-strong);color:var(--brand-primary)}.section-lede{color:var(--text-secondary);font-size:var(--fs-small);margin:calc(var(--space-md) * -1)0 var(--space-lg)}.start-here{list-style:none;padding:0;margin:0;counter-reset:start-here}.start-here-item{counter-increment:start-here;display:grid;grid-template-columns:2.75rem 1fr;gap:var(--space-md);padding:var(--space-lg)0;border-bottom:1px solid var(--border-subtle)}.start-here-item:last-child{border-bottom:none}.start-here-item::before{content:counter(start-here,decimal-leading-zero);font-family:var(--font-display);font-size:var(--fs-h3);font-weight:700;line-height:var(--lh-tight);color:var(--brand-secondary);font-variant-numeric:tabular-nums}.start-here-item .listing-title a{text-decoration:none}.start-here-why{color:var(--text-secondary);font-size:var(--fs-small);line-height:var(--lh-snug);margin:0 0 var(--space-sm)}.meta-series{font-size:var(--fs-micro);text-transform:uppercase;letter-spacing:.05em}.meta-series::before{content:'\00b7';margin-inline-end:var(--space-md)}.views-nav{display:flex;flex-wrap:wrap;gap:var(--space-sm);margin:var(--space-lg)0}.view-tab{font-size:var(--fs-meta);font-weight:600;padding:var(--space-xs)var(--space-md);border:1px solid var(--border-subtle);border-radius:var(--radius-full);background:var(--bg-card);color:var(--text-secondary);text-decoration:none;transition:color var(--transition-fast),border-color var(--transition-fast)}.view-tab:hover{color:var(--brand-primary);border-color:var(--border-strong);text-decoration:none}.view-tab-on,.view-tab-on:hover{background:var(--brand-primary);border-color:var(--brand-primary);color:var(--text-inverse)}.site-search[hidden],.search-results[hidden]{display:none}.site-search{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm)var(--space-md);background:var(--bg-code);border:1px solid var(--border-subtle);border-radius:var(--radius-md);margin:0 0 var(--space-lg);transition:border-color var(--transition-fast),box-shadow var(--transition-fast)}.site-search:focus-within{border-color:var(--brand-primary);box-shadow:0 0 0 3px rgba(var(--brand-primary-rgb),.15)}.site-search-label{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.site-search-icon{flex:none;color:var(--text-muted)}.site-search-input{flex:auto;min-width:0;padding:0;border:0;background:0 0;font-size:var(--fs-small);color:var(--text-primary)}.site-search-input:focus{outline:none}.site-search-input::placeholder{color:var(--text-secondary);opacity:1}.site-search-key{flex:none;margin-inline-start:auto;font-size:var(--fs-micro);color:var(--text-muted);background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:var(--radius-sm);padding:.1rem .4rem}.search-summary{font-size:var(--fs-meta);color:var(--text-muted);margin:0 0 var(--space-sm)}.search-results mark{background:rgba(var(--brand-primary-rgb),.18);color:inherit;padding:0 .1em;border-radius:var(--radius-sm)}.archive-year-head{display:flex;align-items:baseline;gap:var(--space-md)}.archive-year-count{font-size:var(--fs-micro);font-weight:500;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted)}.archive-list{list-style:none;padding:0;margin:0}.archive-list li{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-lg);padding:var(--space-sm)0;border-bottom:1px solid var(--border-subtle)}.archive-list li:last-child{border-bottom:none}.archive-title{font-family:var(--font-display);font-weight:600;color:var(--text-primary);line-height:var(--lh-snug)}.archive-title:hover{color:var(--brand-primary)}.archive-meta{display:inline-flex;gap:var(--space-sm);flex:none;font-size:var(--fs-meta);color:var(--text-muted);white-space:nowrap;font-variant-numeric:tabular-nums}.archive-meta .reading-time::before{margin-inline-end:var(--space-sm)}.term-cloud-bar{display:block;height:4px;border-radius:var(--radius-full);background:var(--bg-code);border:1px solid var(--border-subtle);overflow:hidden}.term-cloud-bar>span{display:block;height:100%;background:var(--brand-secondary)}.project-host{font-family:var(--font-ui);font-size:var(--fs-meta);color:var(--text-muted);margin:0 0 var(--space-sm);overflow-wrap:break-word}@media(max-width:767.98px){.site-search-key{display:none}.archive-list li{display:grid;gap:var(--space-xs)}}@media(max-width:575.98px){.site-search-input{font-size:16px}.start-here-item{grid-template-columns:2rem 1fr;gap:var(--space-sm)}}.chroma{-webkit-text-size-adjust:none}.chroma .err{color:#000}.chroma .lnlinks{outline:none;text-decoration:none;color:inherit}.chroma .lntd{vertical-align:top;padding:0;margin:0;border:0}.chroma .lntable{border-spacing:0;padding:0;margin:0;border:0}.chroma .lnt{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#7f7f7f}.chroma .ln{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#7f7f7f}.chroma .line{display:flex}.chroma .k{color:#a90d91}.chroma .kc{color:#a90d91}.chroma .kd{color:#a90d91}.chroma .kn{color:#a90d91}.chroma .kp{color:#a90d91}.chroma .kr{color:#a90d91}.chroma .kt{color:#a90d91}.chroma .n{color:#000}.chroma .na{color:#77601a}.chroma .nc{color:#39686f}.chroma .no{color:#000}.chroma .nd{color:#000}.chroma .ni{color:#000}.chroma .ne{color:#000}.chroma .nl{color:#000}.chroma .nn{color:#000}.chroma .nx{color:#000}.chroma .py{color:#000}.chroma .nt{color:#000}.chroma .nb{color:#a90d91}.chroma .bp{color:#5b269a}.chroma .nv{color:#000}.chroma .vc{color:#000}.chroma .vg{color:#000}.chroma .vi{color:#000}.chroma .vm{color:#000}.chroma .nf{color:#000}.chroma .fm{color:#000}.chroma .l{color:#1c01ce}.chroma .ld{color:#1c01ce}.chroma .s{color:#c01412}.chroma .sa{color:#c01412}.chroma .sb{color:#c01412}.chroma .sc{color:#2300ce}.chroma .dl{color:#c01412}.chroma .sd{color:#c01412}.chroma .s2{color:#c01412}.chroma .se{color:#c01412}.chroma .sh{color:#c01412}.chroma .si{color:#c01412}.chroma .sx{color:#c01412}.chroma .sr{color:#c01412}.chroma .s1{color:#c01412}.chroma .ss{color:#c01412}.chroma .m{color:#1c01ce}.chroma .mb{color:#1c01ce}.chroma .mf{color:#1c01ce}.chroma .mh{color:#1c01ce}.chroma .mi{color:#1c01ce}.chroma .il{color:#1c01ce}.chroma .mo{color:#1c01ce}.chroma .o{color:#000}.chroma .ow{color:#000}.chroma .or{color:#000}.chroma .c{color:#127200}.chroma .ch{color:#127200}.chroma .cm{color:#127200}.chroma .c1{color:#127200}.chroma .cs{color:#127200}.chroma .cp{color:#633820}.chroma .cpf{color:#633820}[data-theme=dark] .chroma{-webkit-text-size-adjust:none}[data-theme=dark] .chroma .err{color:#f85149}[data-theme=dark] .chroma .lnlinks{outline:none;text-decoration:none;color:inherit}[data-theme=dark] .chroma .lntd{vertical-align:top;padding:0;margin:0;border:0}[data-theme=dark] .chroma .lntable{border-spacing:0;padding:0;margin:0;border:0}[data-theme=dark] .chroma .lnt{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#737679}[data-theme=dark] .chroma .ln{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#6e7681}[data-theme=dark] .chroma .line{display:flex}[data-theme=dark] .chroma .k{color:#ff7b72}[data-theme=dark] .chroma .kc{color:#79c0ff}[data-theme=dark] .chroma .kd{color:#ff7b72}[data-theme=dark] .chroma .kn{color:#ff7b72}[data-theme=dark] .chroma .kp{color:#79c0ff}[data-theme=dark] .chroma .kr{color:#ff7b72}[data-theme=dark] .chroma .kt{color:#ff7b72}[data-theme=dark] .chroma .nc{color:#f0883e;font-weight:600}[data-theme=dark] .chroma .no{color:#79c0ff;font-weight:600}[data-theme=dark] .chroma .nd{color:#d2a8ff;font-weight:600}[data-theme=dark] .chroma .ni{color:#ffa657}[data-theme=dark] .chroma .ne{color:#f0883e;font-weight:600}[data-theme=dark] .chroma .nl{color:#79c0ff;font-weight:600}[data-theme=dark] .chroma .nn{color:#ff7b72}[data-theme=dark] .chroma .nx{color:#e6edf3}[data-theme=dark] .chroma .py{color:#79c0ff}[data-theme=dark] .chroma .nt{color:#7ee787}[data-theme=dark] .chroma .nv{color:#79c0ff}[data-theme=dark] .chroma .vc{color:#79c0ff}[data-theme=dark] .chroma .vg{color:#79c0ff}[data-theme=dark] .chroma .vi{color:#79c0ff}[data-theme=dark] .chroma .vm{color:#79c0ff}[data-theme=dark] .chroma .nf{color:#d2a8ff;font-weight:600}[data-theme=dark] .chroma .fm{color:#d2a8ff;font-weight:600}[data-theme=dark] .chroma .l{color:#a5d6ff}[data-theme=dark] .chroma .ld{color:#79c0ff}[data-theme=dark] .chroma .s{color:#a5d6ff}[data-theme=dark] .chroma .sa{color:#79c0ff}[data-theme=dark] .chroma .sb{color:#a5d6ff}[data-theme=dark] .chroma .sc{color:#a5d6ff}[data-theme=dark] .chroma .dl{color:#79c0ff}[data-theme=dark] .chroma .sd{color:#a5d6ff}[data-theme=dark] .chroma .s2{color:#a5d6ff}[data-theme=dark] .chroma .se{color:#79c0ff}[data-theme=dark] .chroma .sh{color:#79c0ff}[data-theme=dark] .chroma .si{color:#a5d6ff}[data-theme=dark] .chroma .sx{color:#a5d6ff}[data-theme=dark] .chroma .sr{color:#79c0ff}[data-theme=dark] .chroma .s1{color:#a5d6ff}[data-theme=dark] .chroma .ss{color:#a5d6ff}[data-theme=dark] .chroma .m{color:#a5d6ff}[data-theme=dark] .chroma .mb{color:#a5d6ff}[data-theme=dark] .chroma .mf{color:#a5d6ff}[data-theme=dark] .chroma .mh{color:#a5d6ff}[data-theme=dark] .chroma .mi{color:#a5d6ff}[data-theme=dark] .chroma .il{color:#a5d6ff}[data-theme=dark] .chroma .mo{color:#a5d6ff}[data-theme=dark] .chroma .o{color:#ff7b72;font-weight:600}[data-theme=dark] .chroma .ow{color:#ff7b72;font-weight:600}[data-theme=dark] .chroma .or{color:#ff7b72;font-weight:600}[data-theme=dark] .chroma .c{color:#8b949e;font-style:italic}[data-theme=dark] .chroma .ch{color:#8b949e;font-style:italic}[data-theme=dark] .chroma .cm{color:#8b949e;font-style:italic}[data-theme=dark] .chroma .c1{color:#8b949e;font-style:italic}[data-theme=dark] .chroma .cs{color:#8b949e;font-weight:600;font-style:italic}[data-theme=dark] .chroma .cp{color:#8b949e;font-weight:600;font-style:italic}[data-theme=dark] .chroma .cpf{color:#8b949e;font-weight:600;font-style:italic}[data-theme=dark] .chroma .gd{color:#ffa198}[data-theme=dark] .chroma .ge{font-style:italic}[data-theme=dark] .chroma .gr{color:#ffa198}[data-theme=dark] .chroma .gh{color:#79c0ff;font-weight:600}[data-theme=dark] .chroma .gi{color:#56d364}[data-theme=dark] .chroma .go{color:#8b949e}[data-theme=dark] .chroma .gp{color:#8b949e}[data-theme=dark] .chroma .gs{font-weight:600}[data-theme=dark] .chroma .gu{color:#79c0ff}[data-theme=dark] .chroma .gt{color:#ff7b72}[data-theme=dark] .chroma .gl{text-decoration:underline}[data-theme=dark] .chroma .w{color:#6e7681}