:root{color-scheme:light dark;supported-color-schemes:light dark}body{word-break:normal;word-wrap:break-word;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;padding-top:constant(safe-area-inset-top);padding-right:constant(safe-area-inset-right);padding-bottom:constant(safe-area-inset-bottom);padding-left:constant(safe-area-inset-left);padding-top:env(safe-area-inset-top);padding-right:env(safe-area-inset-right);padding-bottom:env(safe-area-inset-bottom);padding-left:env(safe-area-inset-left)}blockquote,q{quotes:none;margin:0}mark{background-color:rgba(12,242,143,.2)}mark{padding-left:.15em;padding-right:.15em;border-radius:3px}code,tt,kbd,samp{font-family:ui-monospace,SFMono-Regular,sf mono,cascadia code,jetbrains mono,source code pro,Menlo,Consolas,liberation mono,monospace;font-weight:400;font-size:85%}pre{display:block;text-align:left;font-size:80%;line-height:1.5em;margin:0;padding:16px;border-radius:3px;background-color:#f6f8fa;-o-tab-size:4;-moz-tab-size:4;tab-size:4;overflow:auto}code,kbd,tt,samp{color:#c33;padding:.2em .4em;margin:0;font-size:85%;background-color:#f9f6f6;border-radius:3px}pre code,pre kbd,pre tt,pre samp{display:inline;font-size:inherit;color:inherit;padding:0;border-radius:0;background-color:initial}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}table thead{color:#1d2b4c}table tr:nth-child(even){background-color:#f3f6fa}del{opacity:.5}abbr,acronym{cursor:help}.image-container,.image-container .link,.image-container .caption{display:block}.image-container{text-align:center}.image-container .title{display:inline-block;opacity:.6;font-size:.875em;text-align:initial;min-height:22px;padding:10px 5px}#header{padding-top:20px;padding-bottom:20px;min-height:64px;background-color:#fff}.header.wrap{overflow:hidden}.header.wrap,.nav.wrap{margin-top:-5px}.header.wrap>*,.nav.wrap>*{margin-top:5px}.header.left-side,.header.right-side{display:inline-block;text-align:initial}.header.left-side{float:left}.header.right-side{float:right}.site.home:hover{text-decoration:none}.site.logo{height:42px;border-radius:3px;vertical-align:middle;margin-right:8px;margin-left:15px}.site.logo:hover{transform:translate(3px,-3px)}.nav.item{display:inline-block;padding:4px 6px}.footer-wrap{display:block;text-align:center}.date{font-size:.875em}.langs{display:inline-block;list-style:none;font-size:.875em}.lang{margin-left:10px}.note.list{margin:0;padding:0;list-style:none}.note.list .item{width:100%;margin-top:16px;margin-bottom:32px;background-color:#fff;border-radius:6px}.category:hover{opacity:.5;text-decoration:none}.note{display:block;text-decoration:none}.note:hover{text-decoration:none}.note.title,.site.name{font-size:1.125em;font-weight:600}.mldr{opacity:.6}.note.title,.note.date,.note.content,.note.imgs,.note.labels{margin:5px 0}.note.content{color:#000}.note.content:hover{color:#000}.note.imgs{display:block;border:0 solid transparent}.note.imgs .img{object-fit:cover;height:80px;min-width:80px;max-width:120px;border-radius:4px;border:1px solid #e6e6e6;margin:5px 0 0 5px}.cover{width:100%}.article.header{text-align:center}.article.date{margin-top:24px}.tag,.category{display:inline-block;font-weight:600;margin:5px 8px 5px 0}.tag::before{content:"\23";opacity:.5}.tag::after{content:'';position:absolute;width:100%;height:1px;bottom:0;left:0;background-color:#d41534;transform:scaleX(0);transform-origin:left;transition:transform .3s ease-in-out}.tag:hover::after{transform:scaleX(1)}.tag{color:#d41534;text-decoration:none;position:relative;display:inline-block}.article.labels,.article.license,.article.author,.article.navigation,.article.discussion,.article.share{margin-top:32px}.article.discussion{border-top:1px dashed #e6e6e6;border-bottom:1px dashed #e6e6e6}.article.navigation p{margin:0}.article.navigation p+p{margin-top:5px}.article.navigation .link{font-weight:600}.article.license{background-color:#ecf4fb;border-radius:4px;margin:.8em;padding:.925em 1.4em;border:1px solid #b7d8ef}.article.author{text-align:center}.article.author>*{margin-top:16px}.article.author .avatar{display:block;max-width:130px;margin:auto;border-radius:3px}.article.author .name{font-size:1.25em}.article.author .bio{color:#586069}.article.author .details .item{display:inline-block;margin-left:10px;margin-right:10px}.article.author .details .item:hover{text-decoration:none;opacity:.5}.slogan,.date,.license{color:rgba(23,81,153,.72)}.pagination{display:block;text-align:center;margin:30px 0}.pagination ul{display:inline-block;list-style:none;font-weight:600;padding:0;margin:0}.pagination ul li{display:inline}.pagination ul li a{color:#d41534;float:left;padding:8px 16px;text-decoration:none}.pagination ul li a.active{background-color:#d41534;color:#fff}.pagination ul li a:hover:not(.active){background-color:#eb3549;color:#fff}.article-container{border-radius:6px}.article.markdown-body{display:block;margin-bottom:20px;background-size:20px 20px;background-position:50%}.article.markdown-body img{border-radius:3px}.article.markdown-body blockquote,.article.markdown-body q{color:#6a737d}.article.markdown-body blockquote{padding:0 1em;border-left:.25em solid #dfe2e5}.article.markdown-body q::before,.article.markdown-body q::after{opacity:.6}.article.markdown-body q::before{content:"\275D"}.article.markdown-body q::after{content:"\275E"}.article.markdown-body ol,.article.markdown-body ul{margin-bottom:20px;margin-block-end:20px;-webkit-margin-after:20px;padding-inline-start:40px;-webkit-padding-start:40px;padding-left:40px}.article.markdown-body hr{opacity:.4;border-top-style:dashed;border-top-color:inherit}.article.markdown-body table{display:block;width:100%;overflow:auto}.article.markdown-body table tr{border:0}.article.markdown-body table th{font-weight:600}.article.markdown-body table td,.article.markdown-body table th{min-width:86px;padding:6px 13px;border:1px solid #e6e6e6}.article.markdown-body table th:empty{padding:0;border:0}.article.markdown-body .plstable th{max-width:25%}.article.markdown-body li+li{margin-top:20px}.article.markdown-body>*,.article.markdown-body li>*,.article.markdown-body blockquote>*,.article.markdown-body .footnotes>*{margin-top:20px;margin-bottom:20px}.article.markdown-body>:first-child,.article.markdown-body li>:first-child,.article.markdown-body blockquote>:first-child{margin-top:20px}.article.markdown-body>:last-child,.article.markdown-body li>:last-child,.article.markdown-body blockquote>:last-child{margin-bottom:0}@media(max-width:1012px){.note.list .item,.article-container{padding:24px;border-radius:0;box-shadow:none}.article.bottom{padding-left:8px;padding-right:8px}}.article.markdown-body .katex-display{display:inline-block}.article.markdown-body .katex,.article.markdown-body .MathJax{margin:0;padding:0}.article.markdown-body .katex-display,.article.markdown-body .MathJax_Display{margin:0;padding:.2em .4em}.article.markdown-body .MathJax{outline:none}.article.markdown-body .lntable{border-radius:3px;border:1px solid #e6e6e6}.article.markdown-body .lntable .lntd .lnt{display:block;margin:0;padding:0}.article.markdown-body .lntable .lntd{min-width:0;padding:0 5px;border:0}.article.markdown-body .lntable .lntd pre{overflow:visible;width:100%;margin-left:-15px;margin-right:-15px;border:0}.article.markdown-body .lntable tr>:first-child{border-right:1px dashed #e6e6e6}ol,ul{margin:0;padding:0;margin-block-start:0;margin-block-end:0;margin-inline-start:0;margin-inline-end:0;padding-inline-start:0;-webkit-margin-before:0;-webkit-margin-after:0;-webkit-margin-start:0;-webkit-margin-end:0;-webkit-padding-start:0}:-webkit-any(article,aside,nav,section) :-webkit-any(article,aside,nav,section) h1{margin-block-start:0;margin-block-end:0}dl{margin:0;margin-block-start:0;margin-block-end:0;margin-inline-start:0;margin-inline-end:0;-webkit-margin-before:0;-webkit-margin-after:0;-webkit-margin-start:0;-webkit-margin-end:0}dd{margin-left:0;margin-inline-start:0;-webkit-margin-start:0}table{line-height:inherit;font-weight:400;font-size:inherit}th{font-weight:600}tt,code,kbd,samp,pre{font-family:monospace}pre{margin:0;white-space:pre;word-break:normal;word-wrap:normal}blockquote{margin:0;margin-block-start:0;margin-block-end:0;margin-inline-start:0;margin-inline-end:0}mark{color:currentColor;background-color:#ff0}nav.navigation-bar{display:flex;align-items:center;height:100%;font-family:red hat display,sans-serif}:root{--parchment:#FAF7F5;--warm-white:#FFFCFB;--ink:#262222;--ink-soft:#504848;--ink-muted:#948888;--coral:#CC545D;--coral-soft:#DB7A82;--sage:#6B8F72;--sage-soft:#94B89C;--clay:#BEB2AE;--border:#EAE2DE;--border-light:#F2ECE9;--max-width:1200px;--reading-width:680px;--page-padding:2.5rem;--section-padding:6rem}::selection{background-color:var(--coral-soft);color:var(--warm-white)}body::after{content:'';position:fixed;inset:0;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.65' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='200' height='200' filter='url(%23noise)' opacity='1'/%3E%3C/svg%3E");opacity:.03;pointer-events:none;z-index:9999}*,*::before,*::after{box-sizing:border-box}html{font-size:16px;color-scheme:light}body{font-family:dm sans,sans-serif;font-size:1rem;font-weight:400;line-height:1.7;color:var(--ink-soft);background-color:var(--parchment);margin:0;padding:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}h1,h2,h3,h4,h5,h6{font-family:fraunces,serif;font-weight:400;color:var(--ink);line-height:1.2;margin-top:0;margin-bottom:.75em}h1{font-size:3.5rem;letter-spacing:-.03em}h2{font-size:2rem}h3{font-size:1.5rem}h4{font-size:1.2rem}h5,h6{font-size:1rem}p{line-height:1.7;margin-bottom:1em;margin-top:0}strong{font-weight:500;color:var(--ink)}a{color:var(--ink-soft);text-decoration:none;transition:color .3s ease}a:hover,a:focus{color:var(--coral)}#header{position:sticky;top:0;z-index:100;background-color:rgba(250,247,245,.92);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-bottom:1px solid var(--border-light)}.header.wrap{max-width:var(--max-width);margin:0 auto;padding:1rem var(--page-padding);display:flex;align-items:center;justify-content:space-between}.site.home{font-family:fraunces,serif;font-size:1.3rem;font-weight:400;color:var(--ink);text-decoration:none;display:flex;align-items:center}.site.logo{display:none}.navigation-bar{display:flex;align-items:center;margin:0;padding:0}.navigation-bar li{list-style:none;padding:0;margin:0}.navigation-bar a,.nav-item{font-family:jetbrains mono,monospace;font-size:.72rem;font-weight:300;text-transform:uppercase;letter-spacing:.15em;color:var(--ink-muted);text-decoration:none;transition:color .3s ease}.navigation-bar a:hover,.nav-item:hover{color:var(--coral)}#content{min-height:calc(100vh - 120px)}.page{max-width:var(--max-width);margin:0 auto;padding:4rem var(--page-padding);box-sizing:border-box;width:100%}.article-container{max-width:var(--reading-width);margin:0 auto;padding:0}.article.header{margin-bottom:2rem}.article.header h1,.article.title{font-family:fraunces,serif;font-size:2.5rem;font-weight:400;letter-spacing:-.02em;color:var(--ink);margin-bottom:.5rem;line-height:1.2}.article.date{font-family:jetbrains mono,monospace;font-size:.62rem;font-weight:300;text-transform:uppercase;letter-spacing:.12em;color:var(--ink-muted);margin-bottom:0}.article.date .langs{margin-left:1rem}.article.date .lang a{font-family:jetbrains mono,monospace;font-size:.62rem;color:var(--ink-muted);transition:color .3s ease}.article.date .lang a:hover{color:var(--coral)}.article.markdown-body{font-family:dm sans,sans-serif;font-size:1rem;line-height:1.75;color:var(--ink-soft);max-width:var(--reading-width)}.article.markdown-body h1,.article.markdown-body h2,.article.markdown-body h3,.article.markdown-body h4{font-family:fraunces,serif;color:var(--ink)}.article.markdown-body>*:first-child,.article.markdown-body>div:first-child>*:first-child{margin-top:0}.article.markdown-body p a{color:var(--ink-soft);border-bottom:1px solid var(--border);transition:color .3s ease,border-color .3s ease;padding-bottom:1px}.article.markdown-body p a:hover{color:var(--coral);border-color:var(--coral-soft)}.article.markdown-body blockquote{border-left:2px solid var(--coral-soft);padding-left:1.5rem;margin-left:0;color:var(--ink-muted);font-style:italic}.article.labels,.note.labels{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1.5rem;margin-top:0}a.tag,a.category{font-family:jetbrains mono,monospace;font-size:.58rem;font-weight:300;text-transform:uppercase;letter-spacing:.12em;color:var(--sage);background:0 0;border:1px solid var(--sage-soft);padding:.2em .6em;border-radius:2px;text-decoration:none;transition:background .3s ease,color .3s ease}a.tag:hover,a.category:hover{background:var(--sage);color:var(--warm-white)}ul.note.list{list-style:none;padding:0;margin:0;border-top:1px solid var(--border)}ul.note.list .item{border-bottom:1px solid var(--border);background-color:initial}ul.note.list .item a.note{display:block;padding:1.25rem 0;text-decoration:none;color:inherit;transition:padding-left .3s ease}ul.note.list .item:hover a.note{padding-left:.8rem}p.note.title{font-family:fraunces,serif;font-size:1.15rem;font-weight:400;color:var(--ink);margin:0 0 .25rem;transition:color .3s ease}ul.note.list .item:hover p.note.title{color:var(--coral)}p.note.date{font-family:jetbrains mono,monospace;font-size:.58rem;font-weight:300;text-transform:uppercase;letter-spacing:.12em;color:var(--ink-muted);margin:0 0 .4rem}p.note.content{font-size:.9rem;color:var(--ink-muted);margin:0;line-height:1.6}.pagination{padding:2rem 0}.pagination ul{list-style:none;padding:0;margin:0;display:flex;gap:.5rem}.pagination ul li a{font-family:jetbrains mono,monospace;font-size:.62rem;font-weight:300;letter-spacing:.1em;color:var(--ink-muted);padding:.4em .7em;border:1px solid var(--border);border-radius:2px;transition:color .3s ease,border-color .3s ease;display:block}.pagination ul li a:hover,.pagination ul li a.active{color:var(--coral);border-color:var(--coral-soft)}section.article.header h2{font-family:fraunces,serif;font-size:1.8rem;font-weight:400;color:var(--ink);margin-bottom:2rem}.page>section h1{font-family:fraunces,serif;font-size:1.8rem;font-weight:400;color:var(--ink);margin-bottom:2rem}#footer{border-top:1px solid var(--border);background-color:var(--warm-white);margin-top:auto}.footer-content{max-width:var(--max-width);margin:0 auto;padding:2rem var(--page-padding);display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:1.5rem}.footer-copyright{font-family:jetbrains mono,monospace;font-size:.58rem;font-weight:300;text-transform:uppercase;letter-spacing:.12em;color:var(--ink-muted)}.footer-links{display:flex;gap:1.5rem;flex-wrap:wrap;align-items:center}.footer-links a{font-family:jetbrains mono,monospace;font-size:.6rem;font-weight:300;text-transform:uppercase;letter-spacing:.12em;color:var(--ink-muted);text-decoration:none;transition:color .3s ease}.footer-links a:hover{color:var(--coral)}.hero{max-width:var(--max-width);margin:0 auto;padding:var(--section-padding)var(--page-padding);display:grid;grid-template-columns:1fr 1fr;gap:4rem;align-items:center}.hero-text{min-width:0}.hero-label{font-family:jetbrains mono,monospace;font-size:.62rem;font-weight:300;text-transform:uppercase;letter-spacing:.18em;color:var(--ink-muted);margin-bottom:1.25rem;opacity:0;animation:fadeUp .5s ease .3s forwards}.hero-headline{font-family:fraunces,serif;font-size:3.5rem;font-weight:400;letter-spacing:-.03em;color:var(--ink);line-height:1.15;margin-bottom:1.25rem;opacity:0;animation:fadeUp .5s ease .5s forwards}.hero-headline em{font-style:italic;color:var(--coral)}.hero-description{font-size:1rem;line-height:1.75;color:var(--ink-soft);max-width:480px;margin-bottom:0;opacity:0;animation:fadeUp .5s ease .7s forwards}@keyframes fadeUp{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.hero-visual{display:flex;align-items:center;justify-content:center;opacity:0;animation:fadeUp .5s ease .9s forwards}.venn-wrap{width:100%;max-width:340px}.venn-wrap svg{width:100%;height:auto;animation:breathe 8s ease-in-out infinite}@keyframes breathe{0%,100%{transform:scale(1)}50%{transform:scale(1.025)}}.homepage-section{border-top:1px solid var(--border-light)}.homepage-section-inner{max-width:var(--max-width);margin:0 auto;padding:var(--section-padding)var(--page-padding)}.homepage-section-alt{background-color:var(--warm-white)}.section-label{font-family:jetbrains mono,monospace;font-size:.6rem;font-weight:300;text-transform:uppercase;letter-spacing:.18em;color:var(--ink-muted);margin-bottom:1.5rem}.section-heading{font-family:fraunces,serif;font-size:1.5rem;font-weight:400;color:var(--ink);margin-bottom:2rem}.writing-grid{display:grid;grid-template-columns:1fr 1fr;gap:1.25rem}.writing-card{border:1px solid var(--border);border-radius:2px;padding:1.5rem;text-decoration:none;color:inherit;display:block;transition:border-color .3s ease,transform .3s ease}.writing-card:hover{border-color:var(--coral-soft);transform:translateY(-2px);color:inherit}.writing-card-meta{font-family:jetbrains mono,monospace;font-size:.56rem;font-weight:300;text-transform:uppercase;letter-spacing:.12em;color:var(--ink-muted);margin-bottom:.75rem;display:flex;gap:.75rem;align-items:center;flex-wrap:wrap}.status-badge{font-family:jetbrains mono,monospace;font-size:.52rem;font-weight:300;text-transform:uppercase;letter-spacing:.1em;color:var(--clay);border:1px solid var(--clay);padding:.15em .5em;border-radius:2px;line-height:1.4}.status-badge.published{color:var(--sage);border-color:var(--sage-soft)}.writing-card-title{font-family:fraunces,serif;font-size:1.15rem;font-weight:400;color:var(--ink);margin-bottom:.5rem;line-height:1.3}.writing-card-summary{font-size:.875rem;line-height:1.6;color:var(--ink-muted);margin:0}.projects-list{list-style:none;padding:0;margin:0;border-top:1px solid var(--border)}.project-item{border-bottom:1px solid var(--border)}.project-item a{display:grid;grid-template-columns:4rem 1fr auto;gap:1.5rem;align-items:baseline;padding:1rem 0;text-decoration:none;color:inherit;transition:padding-left .3s ease}.project-item:hover a{padding-left:.8rem}.project-year{font-family:jetbrains mono,monospace;font-size:.58rem;font-weight:300;color:var(--ink-muted);letter-spacing:.08em;white-space:nowrap}.project-title{font-family:fraunces,serif;font-size:1rem;font-weight:400;color:var(--ink);transition:color .3s ease}.project-item:hover .project-title{color:var(--coral)}.project-type{font-family:jetbrains mono,monospace;font-size:.56rem;font-weight:300;text-transform:uppercase;letter-spacing:.1em;color:var(--ink-muted);white-space:nowrap}.about-strip{display:grid;grid-template-columns:1fr 1fr;gap:4rem;align-items:start}.about-text p{font-size:1rem;line-height:1.75;color:var(--ink-soft)}.about-text a{color:var(--ink-soft);border-bottom:1px solid var(--border);transition:color .3s ease,border-color .3s ease;padding-bottom:1px}.about-text a:hover{color:var(--coral);border-color:var(--coral-soft)}.about-details{border:1px solid var(--border);border-radius:2px;padding:1.5rem}.about-detail-row{display:grid;grid-template-columns:6rem 1fr;gap:1rem;padding:.6rem 0;border-bottom:1px solid var(--border-light)}.about-detail-row:last-child{border-bottom:none}.about-detail-label{font-family:jetbrains mono,monospace;font-size:.58rem;font-weight:300;text-transform:uppercase;letter-spacing:.12em;color:var(--ink-muted);padding-top:.15em}.about-detail-value{font-size:.875rem;color:var(--ink-soft);line-height:1.6}.about-detail-value a{color:var(--ink-soft);border-bottom:1px solid var(--border);transition:color .3s ease,border-color .3s ease}.about-detail-value a:hover{color:var(--coral);border-color:var(--coral-soft)}.content-section{max-width:var(--reading-width);margin:0 auto;box-sizing:border-box;width:100%}.about-page-intro{font-size:1.1rem;line-height:1.8;color:var(--ink-soft);margin-bottom:2rem}.about-page-intro strong{font-weight:500;color:var(--ink)}.lang-tag{font-family:jetbrains mono,monospace;font-size:.52rem;font-weight:300;text-transform:uppercase;letter-spacing:.12em;color:var(--ink-muted);border:1px solid var(--border);padding:.15em .5em;border-radius:2px;line-height:1.4}.project-meta{display:flex;align-items:center;gap:.5rem}.callout-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem;margin:2rem 0}.callout{border:1px solid var(--border);border-radius:2px;padding:1.25rem;background:var(--warm-white)}.callout p{margin:0;font-size:.9rem;color:var(--ink-soft);line-height:1.6}.tools-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1rem;margin:2rem 0}.tool-card{border:1px solid var(--border);border-radius:2px;padding:1.25rem;text-decoration:none;color:inherit;display:flex;flex-direction:column;min-height:130px;transition:border-color .3s ease,transform .3s ease;background:var(--warm-white)}.tool-card:hover{border-color:var(--coral-soft);transform:translateY(-2px);color:inherit}.tool-card.primary{background:var(--parchment);min-height:160px}.tool-card.primary:hover{border-color:var(--coral-soft)}.tool-name{font-family:fraunces,serif;font-weight:400;font-size:1.05rem;color:var(--ink);margin-bottom:.5rem}.tool-card.primary .tool-name{font-size:1.2rem}.tool-description{font-size:.875rem;color:var(--ink-muted);line-height:1.6;flex-grow:1}.tool-url{font-family:jetbrains mono,monospace;font-size:.58rem;font-weight:300;color:var(--ink-muted);margin-top:.75rem;padding-top:.6rem;border-top:1px solid var(--border-light);letter-spacing:.05em}.secondary-tools-heading{font-family:jetbrains mono,monospace;font-size:.62rem;font-weight:300;text-transform:uppercase;letter-spacing:.15em;color:var(--ink-muted);margin-top:2rem;margin-bottom:1rem}.prompts-section{margin:2rem 0}.prompts-dropdown{margin-bottom:1rem;border:1px solid var(--border);border-radius:2px}.prompts-dropdown summary{cursor:pointer;user-select:none;list-style:none;padding:1rem 1.25rem}.prompts-dropdown summary::-webkit-details-marker{display:none}.prompts-dropdown summary h3{display:inline-block;margin:0;font-size:1rem;padding-left:1.5rem;position:relative}.prompts-dropdown summary h3::before{content:'▶';position:absolute;left:0;font-size:.7em;top:.2em;transition:transform .2s ease;color:var(--coral)}.prompts-dropdown[open] summary h3::before{transform:rotate(90deg)}.prompts-dropdown ul{margin:0;padding:0 1.25rem 1rem 2.5rem}.prompts-dropdown li{margin-bottom:.75rem;color:var(--ink-soft);font-size:.9rem;line-height:1.6}.cv-header{margin-bottom:3rem}.cv-name{font-family:fraunces,serif;font-size:2.5rem;font-weight:400;letter-spacing:-.02em;color:var(--ink);margin-bottom:.5rem}.cv-section{margin-bottom:2.5rem}.cv-section-title{font-family:jetbrains mono,monospace;font-size:.62rem;font-weight:300;text-transform:uppercase;letter-spacing:.18em;color:var(--ink-muted);border-bottom:1px solid var(--border);padding-bottom:.5rem;margin-bottom:1.5rem}.cv-item{margin-bottom:1.5rem}.cv-item-header{display:flex;justify-content:space-between;align-items:baseline;flex-wrap:wrap;gap:.5rem;margin-bottom:.25rem}.cv-item-title{font-family:fraunces,serif;font-size:1.05rem;font-weight:400;color:var(--ink)}.cv-item-org{font-size:.9rem;color:var(--ink-muted);font-style:normal}.cv-item-date{font-family:jetbrains mono,monospace;font-size:.58rem;font-weight:300;color:var(--ink-muted);letter-spacing:.08em;white-space:nowrap}.cv-item-body{font-size:.9rem;color:var(--ink-soft);line-height:1.65;margin-top:.4rem}.error-page{text-align:center;padding:6rem var(--page-padding);max-width:var(--max-width);margin:0 auto}.error-page h2{font-family:fraunces,serif;font-size:2rem;color:var(--ink);margin-bottom:1rem}.error-page p{color:var(--ink-muted);font-family:jetbrains mono,monospace;font-size:.65rem;font-weight:300;text-transform:uppercase;letter-spacing:.15em;margin-bottom:2rem}.error-page ul{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;align-items:center;gap:.75rem}.error-page ul li a{font-family:jetbrains mono,monospace;font-size:.68rem;font-weight:300;text-transform:uppercase;letter-spacing:.12em;color:var(--ink-muted);transition:color .3s ease;text-decoration:none}.error-page ul li a:hover{color:var(--coral)}.image-on-the-right{max-width:100%;margin-bottom:1em;text-align:center}.text-on-the-left{width:100%}.clearfix::after{content:"";display:table;clear:both}.page-break{page-break-before:always;margin-top:4rem}@media print{.tool-card{break-inside:avoid}body::after{display:none}#header{position:static}}@media(max-width:900px){:root{--section-padding:4rem}.hero{grid-template-columns:1fr;gap:2rem}.hero-visual{display:none}.hero-headline{font-size:2.8rem}.about-strip{grid-template-columns:1fr;gap:2rem}.project-item a{grid-template-columns:3.5rem 1fr}.project-type{display:none}}@media(max-width:700px){.writing-grid{grid-template-columns:1fr}.tools-grid{grid-template-columns:1fr;gap:.75rem}}@media(max-width:600px){:root{--page-padding:1.5rem;--section-padding:3rem}.page{padding:2rem 1.5rem}.article-container{padding:2rem 0}.hero{padding:3rem 1.5rem}.hero-headline{font-size:2.2rem}h1{font-size:2.2rem}h2{font-size:1.6rem}h3{font-size:1.25rem}.footer-content{flex-direction:column;align-items:flex-start;gap:1rem}.image-on-the-right{float:none;width:100%;margin-left:0}.text-on-the-left{width:100%;float:none}}@media(min-width:900px){.image-on-the-right{float:right;width:30%;margin-left:2em;margin-bottom:1em}.text-on-the-left{width:60%;float:left}}.article.license{margin-top:3rem;padding-top:1.5rem;border-top:1px solid var(--border-light);font-size:.8rem;color:var(--ink-muted)}.article.navigation{margin-top:3rem;padding-top:1.5rem;border-top:1px solid var(--border-light)}.article.navigation a.link{font-family:jetbrains mono,monospace;font-size:.65rem;font-weight:300;text-transform:uppercase;letter-spacing:.1em;color:var(--ink-muted);transition:color .3s ease}.article.navigation a.link:hover{color:var(--coral)}pre,.chroma{color:#24292e;background-color:#f6f8fa}.chroma .err{color:#d73a49}.chroma .lntd{vertical-align:top;padding:0;margin:0;border:0}.chroma .lntable{border-spacing:0;padding:0;margin:0;border:0;width:auto;overflow:auto;display:block}.chroma .hl{display:block;width:100%;background-color:#fffbdd}.chroma .lnt{margin-right:.4em;padding:0 .4em;color:#7f7f7f}.chroma .ln{margin-right:.4em;padding:0 .4em;color:#7f7f7f}.chroma .k{color:#d73a49}.chroma .kc{color:#d73a49}.chroma .kd{color:#d73a49}.chroma .kn{color:#d73a49}.chroma .kp{color:#d73a49}.chroma .kr{color:#d73a49}.chroma .kt{color:#d73a49}.chroma .na{color:#6f42c1}.chroma .nb{color:#6f42c1}.chroma .bp{color:#6f42c1}.chroma .nc{color:#6f42c1}.chroma .no{color:#6f42c1}.chroma .nd{color:#6f42c1}.chroma .ni{color:#6f42c1}.chroma .ne{color:#6f42c1}.chroma .nf{color:#6f42c1}.chroma .nl{color:#6f42c1}.chroma .nn{color:#6f42c1}.chroma .nx{color:#22863a}.chroma .nt{color:#22863a}.chroma .nv{color:#6f42c1}.chroma .vc{color:#6f42c1}.chroma .vg{color:#6f42c1}.chroma .vi{color:#6f42c1}.chroma .s{color:#032f62}.chroma .sa{color:#032f62}.chroma .sb{color:#032f62}.chroma .sc{color:#032f62}.chroma .dl{color:#032f62}.chroma .sd{color:#032f62}.chroma .s2{color:#032f62}.chroma .se{color:#032f62}.chroma .sh{color:#032f62}.chroma .si{color:#032f62}.chroma .sx{color:#032f62}.chroma .sr{color:#032f62}.chroma .s1{color:#032f62}.chroma .ss{color:#032f62}.chroma .m{color:#005cc5}.chroma .mb{color:#005cc5}.chroma .mf{color:#005cc5}.chroma .mh{color:#005cc5}.chroma .mi{color:#005cc5}.chroma .il{color:#005cc5}.chroma .mo{color:#005cc5}.chroma .o{color:#d73a49}.chroma .ow{color:#d73a49}.chroma .p{color:#d73a49}.chroma .c{color:#6a737d}.chroma .ch{color:#6a737d}.chroma .cm{color:#6a737d}.chroma .c1{color:#6a737d}.chroma .cs{color:#6a737d}.chroma .cp{color:#6a737d}.chroma .cpf{color:#6a737d}.chroma .gd{color:#6f42c1;background-color:#fdd}.chroma .ge{color:#6f42c1}.chroma .gr{color:#a00}.chroma .gh{color:#6a737d}.chroma .gi{color:#6f42c1;background-color:#dfd}.chroma .go{color:#888}.chroma .gp{color:#555}.chroma .gs{}.chroma .gu{color:#aaa}.chroma .gt{color:#a00}.chroma .gl{text-decoration:underline}.chroma .w{color:#bbb}@media(prefers-color-scheme:dark){pre,.chroma{color:#f8f8f2;background-color:#282a36}.chroma .lntd{vertical-align:top;padding:0;margin:0;border:0}.chroma .lntable{border-spacing:0;padding:0;margin:0;border:0;width:auto;overflow:auto;display:block}.chroma .hl{display:block;width:100%;background-color:#ffc}.chroma .lnt{margin-right:.4em;padding:0 .4em;color:#7f7f7f}.chroma .ln{margin-right:.4em;padding:0 .4em;color:#7f7f7f}.chroma .k{color:#ff79c6}.chroma .kc{color:#ff79c6}.chroma .kd{color:#8be9fd;font-style:italic}.chroma .kn{color:#ff79c6}.chroma .kp{color:#ff79c6}.chroma .kr{color:#ff79c6}.chroma .kt{color:#8be9fd}.chroma .na{color:#50fa7b}.chroma .nb{color:#8be9fd;font-style:italic}.chroma .nc{color:#50fa7b}.chroma .nf{color:#50fa7b}.chroma .nl{color:#8be9fd;font-style:italic}.chroma .nt{color:#ff79c6}.chroma .nv{color:#8be9fd;font-style:italic}.chroma .vc{color:#8be9fd;font-style:italic}.chroma .vg{color:#8be9fd;font-style:italic}.chroma .vi{color:#8be9fd;font-style:italic}.chroma .s{color:#f1fa8c}.chroma .sa{color:#f1fa8c}.chroma .sb{color:#f1fa8c}.chroma .sc{color:#f1fa8c}.chroma .dl{color:#f1fa8c}.chroma .sd{color:#f1fa8c}.chroma .s2{color:#f1fa8c}.chroma .se{color:#f1fa8c}.chroma .sh{color:#f1fa8c}.chroma .si{color:#f1fa8c}.chroma .sx{color:#f1fa8c}.chroma .sr{color:#f1fa8c}.chroma .s1{color:#f1fa8c}.chroma .ss{color:#f1fa8c}.chroma .m{color:#bd93f9}.chroma .mb{color:#bd93f9}.chroma .mf{color:#bd93f9}.chroma .mh{color:#bd93f9}.chroma .mi{color:#bd93f9}.chroma .il{color:#bd93f9}.chroma .mo{color:#bd93f9}.chroma .o{color:#ff79c6}.chroma .ow{color:#ff79c6}.chroma .c{color:#6272a4}.chroma .ch{color:#6272a4}.chroma .cm{color:#6272a4}.chroma .c1{color:#6272a4}.chroma .cs{color:#6272a4}.chroma .cp{color:#ff79c6}.chroma .cpf{color:#ff79c6}.chroma .gd{color:#8b080b}.chroma .ge{text-decoration:underline}.chroma .gh{font-weight:700}.chroma .gi{font-weight:700}.chroma .go{color:#44475a}.chroma .gu{font-weight:700}.chroma .gl{text-decoration:underline}}