:root{--font-body: "Trebuchet MS", Trebuchet, Arial, sans-serif;--font-mono: "Courier New", Courier, monospace;--font-ui: "Trebuchet MS", Trebuchet, Arial, sans-serif;--color-text: #1a1a1a;--color-text-muted: #666;--color-link: #3d5f7f;--color-link-hover: #8b0000;--color-link-visited: #3d5f7f;--color-border: #ccc;--color-bg: #fff;--color-bg-code: #f4f4f4;--color-header-bg: #f0f0f0;--syntax-keyword: #d73a49;--syntax-string: #032f62;--syntax-comment: #6a737d;--syntax-number: #005cc5;--syntax-title: #6f42c1;--syntax-attr: #e36209;--max-width: 960px;--gap: 1.5rem}:root[data-theme=dark]{--color-text: #e6e6e6;--color-text-muted: #aaa;--color-link: #4d7399;--color-link-hover: #cc6666;--color-link-visited: #4d7399;--color-border: #555;--color-bg: #0b0b0b;--color-bg-code: #171717;--color-header-bg: #1d1d1d;--syntax-keyword: #ff7b72;--syntax-string: #a5d6ff;--syntax-comment: #8b949e;--syntax-number: #79c0ff;--syntax-title: #d2a8ff;--syntax-attr: #ffa657}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{min-height:100%;font-size:16px;scroll-behavior:smooth}body{min-height:100%;font-family:var(--font-body);font-size:1rem;line-height:1.65;color:var(--color-text);background:var(--color-bg)}#root{min-height:100vh}.site-shell{min-height:100vh;display:flex;flex-direction:column}.container{max-width:var(--max-width);margin:0 auto;padding:0 1rem}.site-main{width:100%;flex:1;padding-block:clamp(1rem,3vw,2rem)}.skip-link{position:absolute;left:1rem;top:.75rem;z-index:10;transform:translateY(-150%);background:var(--color-text);color:var(--color-bg);border:1px solid var(--color-border);padding:.35rem .65rem;font-family:var(--font-ui);font-size:.82rem}.skip-link:focus{transform:translateY(0)}.site-header{background:transparent;padding:1rem 0 0;margin-bottom:var(--gap);border-bottom:1px solid var(--color-border)}.site-header .container{display:flex;align-items:baseline;justify-content:space-between;flex-wrap:wrap;gap:.75rem;padding-bottom:1rem}.site-title{font-family:var(--font-ui);font-size:1.2rem;font-weight:700}.site-title a{color:var(--color-text);text-decoration:none}.site-title a:hover{text-decoration:underline}.site-nav{font-family:var(--font-ui);font-size:.85rem;display:flex;gap:1rem;align-items:baseline}.site-nav a{color:var(--color-link);text-decoration:underline}.site-nav a:hover{color:var(--color-link-hover);text-decoration:none}@media(max-width:640px){.site-header .container{gap:.5rem}.site-title{flex-basis:100%}.site-nav{gap:.75rem;font-size:.8rem}}a{color:var(--color-link);text-decoration:underline}a:hover{color:var(--color-link-hover)}a:visited{color:var(--color-link-visited)}h1,h2,h3,h4{font-family:var(--font-ui);font-weight:700;line-height:1.25;margin-top:var(--gap);margin-bottom:.5rem}h1{font-size:1.4rem;border-bottom:2px solid var(--color-border);padding-bottom:.3rem}h2{font-size:1.15rem;border-bottom:1px solid var(--color-border);padding-bottom:.2rem}h3{font-size:1rem}p{margin-bottom:1rem}ul,ol{margin:0 0 1rem 1.5rem;padding-left:1rem}li{margin-bottom:.25rem}blockquote{border-left:3px solid var(--color-border);padding-left:1rem;color:var(--color-text-muted);font-style:italic;margin:1rem 0}hr{border:none;border-top:1px solid var(--color-border);margin:var(--gap) 0}code{font-family:var(--font-mono);font-size:.88em;background:var(--color-bg-code);padding:.1em .3em;border:1px solid var(--color-border)}pre{background:var(--color-bg-code);border:1px solid var(--color-border);border-left:4px solid #999;padding:1rem;overflow-x:auto;margin-bottom:1rem;font-size:.85rem;line-height:1.5}pre code{background:transparent;border:none;padding:0}.hljs-keyword,.hljs-selector-tag,.hljs-built_in,.hljs-type,.hljs-meta{color:var(--syntax-keyword);font-weight:700}.hljs-string,.hljs-regexp,.hljs-addition{color:var(--syntax-string)}.hljs-comment,.hljs-quote{color:var(--syntax-comment);font-style:italic}.hljs-number,.hljs-literal{color:var(--syntax-number)}.hljs-title,.hljs-section,.hljs-class .hljs-title{color:var(--syntax-title);font-weight:700}.hljs-attr,.hljs-variable,.hljs-template-variable,.hljs-attribute{color:var(--syntax-attr)}img{max-width:100%;height:auto;display:block;margin:1rem 0;border:1px solid var(--color-border)}.page{padding:var(--gap) 0 3rem}.portfolio-home{padding-top:.5rem}.portfolio-hero{padding:2.5rem 0 2rem;margin-bottom:2.5rem;display:flex;flex-direction:column;gap:1.5rem}@media(min-width:768px){.portfolio-hero:has(.portfolio-portrait){display:grid;grid-template-columns:1fr 14rem;grid-template-areas:"copy portrait" "actions portrait";gap:1.5rem 2.5rem;align-items:center}.portfolio-hero:has(.portfolio-portrait) .portfolio-hero-copy{grid-area:copy}.portfolio-hero:has(.portfolio-portrait) .portfolio-portrait{grid-area:portrait}.portfolio-hero:has(.portfolio-portrait) .portfolio-actions{grid-area:actions;margin-top:0}}.eyebrow{margin-bottom:.5rem;color:var(--color-text-muted);font-family:var(--font-mono);font-size:.8rem;text-transform:uppercase;letter-spacing:.05em;font-weight:500}.portfolio-hero h1{margin-top:0;font-size:2.6rem;font-weight:800;line-height:1.2;letter-spacing:-.02em;border-bottom:none;padding-bottom:0;color:var(--color-text)}.portfolio-hero-copy{min-width:0}.portfolio-portrait{width:100%;aspect-ratio:4 / 5;object-fit:cover;border-radius:12px;box-shadow:0 8px 24px #0000001f;margin:0}.portfolio-lead,.blog-heading p:last-child{color:var(--color-text-muted);font-size:1.15rem;line-height:1.6;margin-top:1rem;font-weight:400}.portfolio-actions{display:flex;flex-wrap:wrap;gap:.85rem;margin-top:1.25rem;font-family:var(--font-ui);font-size:.86rem}.portfolio-actions a,.primary-link{display:inline-block;border:1px solid var(--color-border);background:var(--color-header-bg);padding:.35rem .65rem;text-decoration:none}.portfolio-actions a:hover,.primary-link:hover{background:var(--color-border);color:var(--color-text)}.portfolio-section{margin:3.5rem 0}.portfolio-section h2{font-size:1.5rem;font-weight:700;letter-spacing:-.01em;margin-top:0;margin-bottom:1.25rem;padding-bottom:.4rem}.contact-section{display:flex;justify-content:space-between;gap:1rem;align-items:flex-start}.profile-links{margin-left:0;padding-left:0;list-style:none;display:flex;flex-wrap:wrap;gap:.85rem;font-family:var(--font-ui);font-size:.85rem}.contact-section{padding-top:1rem}.contact-links{display:grid;gap:.5rem;justify-items:end;font-family:var(--font-ui);font-size:.82rem}.blog-heading{margin-bottom:1.25rem}.blog-heading h1{margin-top:0}.article-search{margin-bottom:1rem}.article-search label{display:grid;grid-template-columns:minmax(12rem,.45fr) minmax(0,1fr);gap:.75rem;align-items:center;color:var(--color-text-muted)}.article-search input{width:100%;border:1px solid var(--color-border);background:var(--color-bg);color:var(--color-text);font-family:var(--font-ui);font-size:.9rem;padding:.35rem .45rem}.article-tag-filter{display:flex;flex-wrap:wrap;gap:.35rem;margin:0 0 1rem}.article-filter-note{margin:0 0 1rem;color:var(--color-text-muted);font-family:var(--font-mono);font-size:.82rem}.article-list{list-style:none;margin:0;padding:0}.article-list-item{padding:.85rem 0;border-bottom:1px solid var(--color-border);display:flex;gap:1rem;align-items:baseline}.article-list-item:first-child{border-top:1px solid var(--color-border)}.article-list-date{font-family:var(--font-mono);font-size:.78rem;color:var(--color-text-muted);white-space:nowrap;flex-shrink:0}.article-list-title{font-family:var(--font-ui);font-size:.95rem;font-weight:700}.article-list-excerpt{font-size:.88rem;color:var(--color-text-muted);margin-top:.2rem;line-height:1.4}.archives-page h2{border-bottom:none;padding-bottom:0}.archives-page .article-list-item,.archives-page .article-list-item:first-child,.blog-page .article-list-item,.blog-page .article-list-item:first-child{border-top:none;border-bottom:none}.archives-page .article-list-title a,.blog-page .article-list-title a{text-decoration:none}.archives-page .article-list-title a:hover,.blog-page .article-list-title a:hover{text-decoration:underline}.article-header{margin-bottom:var(--gap)}.article-meta{font-family:var(--font-mono);font-size:.78rem;color:var(--color-text-muted);margin-top:.5rem;display:flex;gap:1.5rem;flex-wrap:wrap;align-items:center}.article-tags{display:flex;gap:.4rem;flex-wrap:wrap}.tag{font-family:var(--font-ui);font-size:.72rem;background:var(--color-header-bg);border:1px solid var(--color-border);padding:.1em .45em;text-decoration:none;color:var(--color-text-muted)}.tag:hover{background:var(--color-border);color:var(--color-text)}.tag:visited{color:var(--color-text-muted)}.tag-button{cursor:pointer;line-height:1.35}.tag-button.is-active{background:var(--color-link);border-color:var(--color-link);color:#fff}.article-body{margin-top:var(--gap)}.article-body h1{color:#fff;font-size:clamp(1.5rem,2.5vw,1.9rem)}.article-body h2{border-bottom:none;color:#8ab4df;text-decoration-line:underline;text-decoration-color:currentColor;text-decoration-thickness:2px;text-underline-offset:.25em;text-decoration-skip-ink:auto}.now-footer{margin-top:calc(var(--gap) * 2);padding-top:var(--gap);border-top:1px solid var(--color-border);font-size:.9rem;color:var(--color-text-muted)}.notbyai-badge{display:inline-block;margin-top:calc(var(--gap) * 1.5);line-height:0}.notbyai-badge img{display:block;height:2.5rem;width:auto;border:none}.notbyai-badge:hover{opacity:.85}.article-body>h1:first-child{line-height:1.18;margin-top:0;margin-bottom:2rem;padding-bottom:0;border-bottom:none}@media(max-width:820px){.portfolio-hero,.contact-section{grid-template-columns:1fr;display:grid}.portfolio-portrait{width:min(12rem,60vw)}.contact-links{justify-items:start}.article-search label{grid-template-columns:1fr;gap:.3rem}.portfolio-hero h1{font-size:1.65rem}}.pagination{display:flex;gap:1rem;margin-top:var(--gap);font-family:var(--font-ui);font-size:.85rem;justify-content:space-between}.pagination button{background:none;border:1px solid var(--color-border);padding:.3rem .75rem;cursor:pointer;font-family:var(--font-ui);font-size:.85rem;color:var(--color-link)}.pagination button:hover{background:var(--color-header-bg)}.pagination button:disabled{color:var(--color-text-muted);cursor:default}.site-footer{margin-top:auto;padding:1rem 0;border-top:1px solid var(--color-border);font-family:var(--font-ui);font-size:.75rem;color:var(--color-text-muted);text-align:center}.site-footer .container{padding-top:1rem}.site-footer a{color:var(--color-text-muted)}.loading{color:var(--color-text-muted);font-style:italic;padding:var(--gap) 0}.error{color:#c00;border-left:3px solid #c00;padding-left:.75rem}.success{color:#0a0;border-left:3px solid #0a0;padding-left:.75rem}.back-link{font-family:var(--font-ui);font-size:.82rem;display:block;margin-bottom:var(--gap)}.share-links{border-top:1px solid var(--color-border);margin:2rem 0;padding:.85rem 0;font-family:var(--font-ui);font-size:.84rem}.share-links>span{display:block;margin-bottom:.5rem;color:var(--color-text-muted)}.share-actions{display:flex;flex-wrap:wrap;gap:.55rem;align-items:center}.share-actions a,.share-actions button{border:1px solid var(--color-border);background:var(--color-header-bg);color:var(--color-link);cursor:pointer;font:inherit;line-height:1.2;padding:.3rem .55rem;text-decoration:none}.share-actions a:hover,.share-actions button:hover{background:var(--color-border);color:var(--color-text)}.share-status{margin-top:.55rem;color:var(--color-text-muted);font-size:.78rem}.not-found{max-width:42rem}.not-found h1{margin-top:0}.not-found-actions{display:flex;flex-wrap:wrap;gap:.85rem;align-items:center;margin-top:1.25rem;font-family:var(--font-ui);font-size:.86rem}.article-not-found{max-width:44rem}.article-not-found h1{margin-top:0;margin-bottom:.75rem}.article-not-found-lead{color:var(--color-text-muted);max-width:36rem}.article-not-found-slug{margin-top:1rem;color:var(--color-text-muted);font-family:var(--font-ui);font-size:.82rem}.article-not-found-slug code{color:var(--color-text)}.article-not-found-actions{display:flex;flex-wrap:wrap;gap:.85rem;align-items:center;margin-top:1.5rem;font-family:var(--font-ui);font-size:.86rem}.article-body .article-figure{width:fit-content;max-width:100%;margin:1.5rem 0}.article-body .article-figure>img{margin:0;width:100%}.article-body .article-figure figcaption{margin-top:.5rem;text-align:center;color:var(--color-text-muted);font-size:.85rem;line-height:1.5;overflow-wrap:anywhere}.article-body .article-figure.size-small{width:250px}.article-body .article-figure.size-medium{width:500px}.article-body .article-figure.size-large{width:100%}.article-body .article-figure.align-center{margin-inline:auto}.article-body .article-figure.align-left{float:left;margin:.5rem 1.5rem 1.5rem 0;max-width:45%}.article-body .article-figure.align-right{float:right;margin:.5rem 0 1.5rem 1.5rem;max-width:45%}@media(max-width:600px){.article-body .article-figure.align-left,.article-body .article-figure.align-right{float:none;margin:1rem auto;max-width:100%}}.article-body img.align-center{margin:1.5rem auto;display:block}.article-body img.align-left{float:left;margin:.5rem 1.5rem 1.5rem 0;max-width:45%}.article-body img.align-right{float:right;margin:.5rem 0 1.5rem 1.5rem;max-width:45%}.article-body img.size-small{width:250px}.article-body img.size-medium{width:500px}.article-body img.size-large{width:100%}.article-body img.size-original{width:auto}.article-body h1,.article-body h2,.article-body h3,.article-body h4,.article-body h5,.article-body h6,.article-body hr{clear:both}.article-cover{margin:1.5rem 0;width:100%;max-height:400px;overflow:hidden;border:1px solid var(--color-border)}.article-cover img{width:100%;height:400px;object-fit:cover;display:block;margin:0;border:none}.article-list-content{display:flex;gap:1.5rem;justify-content:space-between;align-items:flex-start;width:100%}.article-list-text{flex:1;min-width:0}.article-list-thumbnail{width:120px;height:68px;flex-shrink:0;border:1px solid var(--color-border);background:var(--color-header-bg);overflow:hidden}.article-list-thumbnail img{width:100%;height:100%;object-fit:cover;margin:0;border:none}@media(max-width:600px){.article-body img.align-left,.article-body img.align-right{float:none;margin:1rem auto;display:block;max-width:100%}.article-list-content{flex-direction:column-reverse;gap:.75rem}.article-list-thumbnail{width:100%;height:140px}}.article-visual{margin:2rem 0;max-width:100%;min-width:0;clear:both}.article-visual h3{margin:0 0 .5rem}.article-visual>p,.article-visual figcaption,.article-visual summary{color:var(--color-text-muted);font-size:.85rem}.article-visual figcaption{text-align:center;margin:.5rem 0}.article-visual summary{cursor:pointer;padding:.5rem 0}.visual-chart{width:100%;height:360px}.visual-diagram{overflow-x:auto;text-align:center;padding:.5rem}.visual-diagram svg{max-width:100%;height:auto}.visual-data{overflow-x:auto}.visual-data table{border-collapse:collapse;width:100%;font-size:.85rem}.visual-data :is(th,td){padding:.4rem;border-bottom:1px solid var(--color-border);text-align:left}.visual-error{color:#e09191}.about-page{padding-top:1.25rem}.about-intro{margin-bottom:1.75rem}.about-intro h1{margin:0;padding:0;border:none;font-size:clamp(1.65rem,3vw,2.1rem);line-height:1.25;letter-spacing:-.02em;color:var(--color-text);overflow-wrap:anywhere;text-wrap:balance}.about-portrait{display:block;width:5rem;height:6.25rem;object-fit:cover;margin:0 0 1.25rem;border:1px solid var(--color-border)}.about-copy>p{margin:0 0 1.25rem;font-size:.975rem;line-height:1.75;overflow-wrap:anywhere}.about-copy>.about-lead{font-size:1.05rem;color:var(--color-text)}.about-copy>p:last-child{margin-bottom:0}.about-reading-link{margin:1.5rem 0 0;font-size:1rem}.about-reading-link .primary-link{display:inline-flex;align-items:center;justify-content:center;gap:.75rem;min-height:56px;min-width:min(100%,220px);max-width:100%;padding:.9rem 1.5rem;font-family:var(--font-ui);font-weight:700}.about-reading-link .primary-link:focus-visible{outline:2px solid var(--color-link);outline-offset:4px}.about-contact{margin-top:2.25rem;font-size:.85rem}.about-direct-links,.about-social-links{display:flex;flex-wrap:wrap;gap:.5rem 1.25rem;margin:0;padding:0;list-style:none}.about-social-links{margin-top:.75rem}.about-contact a{overflow-wrap:anywhere;min-width:0}@media(max-width:640px){.about-page{padding-top:.75rem}.about-intro{margin-bottom:1.5rem}.about-copy>p{font-size:.95rem}.about-copy>.about-lead{font-size:1rem}}.article-suggestions{margin-top:2rem}.article-suggestions h2{border:none;padding:0;margin:0 0 1rem;font-size:1.15rem}.article-suggestions ul{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1.5rem;margin:0;padding:0;list-style:none}.article-suggestions h3{margin:0 0 .4rem;font-size:.95rem;line-height:1.5;overflow-wrap:anywhere}.article-suggestions p{margin:0;color:var(--color-text-muted);font-size:.88rem;line-height:1.4}@media(max-width:640px){.article-suggestions ul{grid-template-columns:1fr}}:root[data-theme=dark]{--color-link: #8ab4df;--color-link-visited: #8ab4df}.site-nav{flex-wrap:wrap;gap:.75rem;font-size:.875rem}.site-nav a{display:inline-flex;align-items:center;min-height:44px;text-decoration-line:none;text-underline-offset:.3em;font-weight:400}.site-nav a:hover{color:#b5d3f0;text-decoration-line:none}.site-nav a[aria-current=page]{color:var(--color-text);text-decoration-line:underline;text-decoration-thickness:2px}a:focus-visible,button:focus-visible{outline:2px solid var(--color-link);outline-offset:3px}.public-page-header{margin-bottom:2rem}.public-page-header h1{margin:0 0 .75rem;padding:0;border:none;color:var(--color-text);font-size:clamp(2rem,4vw,2.6rem);letter-spacing:-.025em}.public-page-header p{margin:0;max-width:42rem;color:var(--color-text-muted);font-size:.95rem}.public-page-meta{margin-top:.75rem;color:var(--color-text-muted);font-family:var(--font-mono);font-size:.8rem}.blog-tags-filter{border:none;min-width:0;display:flex;align-items:center;flex-wrap:wrap;gap:.5rem;margin-bottom:1.5rem;color:var(--color-text-muted);font-size:.85rem}.blog-page .tag{cursor:pointer}.blog-tags-filter .tag{padding:.2rem .5rem}.blog-page .tag.is-active{background:var(--color-text);color:var(--color-bg)}.blog-page .article-tags{margin-top:.5rem}.public-page .article-list-title{font-size:1.05rem;overflow-wrap:anywhere}.public-page .article-list-excerpt{font-size:.95rem;line-height:1.6}.public-page .article-list-content{min-width:0}@media(max-width:600px){.blog-page .article-list-content{flex-direction:column}}.blog-page .article-list-title{font-size:.95rem}.blog-page .article-list-excerpt{font-size:.88rem;line-height:1.4}.archive-year{display:flex;align-items:baseline;gap:.75rem;font-size:1.35rem;margin-top:2rem}.archive-year span{color:var(--color-text-muted);font-size:.8rem;font-weight:400}.now-page .article-body{margin-top:0}.now-page .article-body>:first-child{margin-top:0}.now-page .now-footer{margin-top:1.5rem;padding:0;border:none}.now-page .notbyai-badge,.now-page .notbyai-badge img{margin:0}@media(max-width:640px){.site-header{padding-top:.5rem;margin-bottom:1rem}.site-header .container{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,max-content);width:100%;align-items:center;padding-bottom:.5rem}.site-title{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.site-nav{flex-wrap:nowrap;gap:1rem;min-width:0;max-width:100%;overflow-x:auto;white-space:nowrap}.site-nav a{flex-shrink:0}.public-page{padding-top:1rem}.public-page .article-list-item{flex-direction:column;align-items:stretch;gap:.35rem;padding:1rem 0}}.article-header:has(.article-title){margin-bottom:3rem}.article-header .article-description{color:var(--color-text-muted);font-size:.95rem;line-height:1.5;margin:0 0 1.25rem;max-width:70ch;overflow-wrap:anywhere}.article-header .article-title{color:#fff;font-size:clamp(2.25rem,4.5vw,3.25rem);line-height:1.12;margin:0 0 1rem;padding:0;border:none;overflow-wrap:anywhere}.site-main:has(.article-content--with-toc){max-width:1280px}.article-content--with-toc{display:grid;grid-template-columns:minmax(0,1fr) 230px;align-items:start;gap:3rem}.article-content .article-body{min-width:0}.article-content :is(h1,h2,h3){scroll-margin-top:2rem}.article-toc{position:sticky;top:2rem;max-height:calc(100dvh - 4rem);overflow-y:auto;padding:.5rem .5rem .5rem 0;margin-top:var(--gap);font-family:var(--font-ui);font-size:.85rem}.article-toc-title{color:var(--color-text);font-weight:700;margin-bottom:.75rem}.article-toc ol{list-style:none;padding:0;margin:0}.article-toc li{margin:0 0 .35rem}.article-toc a{display:block;padding:.3rem .5rem;color:var(--color-text-muted);text-decoration:none;overflow-wrap:anywhere;border-radius:4px}.article-toc a:hover,.article-toc a[aria-current=location]{color:#8ab4df;background:var(--color-bg-code)}.article-toc a:focus-visible{outline:2px solid #8ab4df;outline-offset:2px}.article-toc-level-2{padding-left:.5rem}.article-toc-level-3{padding-left:1.25rem}@media(max-width:1000px){.article-content--with-toc{grid-template-columns:minmax(0,1fr);gap:1rem}.article-toc{grid-row:1;position:static;max-height:16rem;margin-top:0}}
