@font-face{font-family:Sora;src:url(/assets/sora-DdqRvwsR.woff2)format("woff2");font-weight:100 800;font-display:swap}@font-face{font-family:DM Sans;src:url(/assets/dm-sans-Xz1IZZA0.woff2)format("woff2");font-weight:100 1000;font-display:swap}html:has(.profile-site){scrollbar-gutter:stable}body:has(.profile-site){background:#122b25;margin:0;overflow-x:visible}.profile-site{--profile-bg:#122b25;--profile-fg:#f0e8d8;--profile-body:#d0dcd2;--profile-muted:#adc0b4;--profile-accent:#bce6cc;--profile-line:#3f5a4c;background:var(--profile-bg);min-height:100svh;color:var(--profile-fg);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;font-synthesis:none;overflow-wrap:anywhere;padding:96px 28px 92px;font:16px/1.65 DM Sans,sans-serif}.profile-site,.profile-site *{box-sizing:border-box}.profile-site :where(h1,h2,h3,p,ul){margin:0}.profile-site :where(p){font-weight:400}.profile-site :where(h1,h2,h3){font-family:Sora,sans-serif;font-weight:550}.profile-site h1{letter-spacing:-.035em;text-wrap:balance;font-size:35px;line-height:1.15}.profile-site h2{font-size:19px;line-height:1.4}.profile-site h3{font-size:18px;font-weight:500;line-height:1.5}.profile-site img{max-width:100%;display:block}.profile-site a{font-weight:inherit;transition:none}.profile-site a:hover{opacity:1}.profile-site a{color:var(--profile-accent);text-underline-offset:.2em;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;text-decoration-thickness:1px}.profile-site :where(a,button,summary,[tabindex]):focus-visible{outline:2px solid var(--profile-accent);outline-offset:5px}.profile-site ::selection{background:var(--profile-accent);color:var(--profile-bg)}@media (hover:hover) and (pointer:fine){.profile-site a:hover{text-decoration-thickness:2px}}.profile-frame{grid-template-columns:250px minmax(0,1fr);align-items:start;gap:86px;max-width:1016px;margin-inline:auto;display:grid}.profile-main{min-width:0}.profile-main:focus{outline:none}.profile-identity{--portrait-size:128px;grid-template-areas:"portrait""copy""nav";align-items:start;gap:12px;display:grid}.profile-copy{grid-area:copy;min-width:0}.profile-portrait{width:var(--portrait-size);height:var(--portrait-size);object-fit:cover;grid-area:portrait}.profile-name{letter-spacing:-.035em;text-wrap:balance;font:550 35px/1.15 Sora,sans-serif}.profile-name a{color:var(--profile-fg);text-decoration:none}.profile-site .profile-role{color:var(--profile-body);margin-top:10px;font-size:16px;line-height:1.5}.profile-site .profile-location{color:var(--profile-muted);margin-top:6px;font-size:13px;line-height:1.5}.profile-nav{flex-wrap:wrap;grid-area:nav;gap:0 18px;font-size:14px;display:flex}.profile-nav a{min-width:24px;min-height:32px;color:var(--profile-muted);align-items:center;display:inline-flex}.profile-nav a[aria-current]{color:var(--profile-accent);text-decoration-style:solid}.profile-skip{z-index:10;padding:8px 14px;position:fixed;top:-100px;left:16px}.profile-site .profile-skip{background:var(--profile-fg);color:var(--profile-bg)}.profile-site .profile-skip:focus{top:12px}.profile-client-logo{object-fit:contain;width:38px;height:38px}.profile-glyph{object-fit:contain;filter:brightness(0)invert();width:16px;height:16px}@media (width>=1000px) and (height>=800px){.profile-identity{position:sticky;top:96px}}@media (width<=999px){.profile-site{padding-top:72px}}@media (width<=800px){.profile-frame{grid-template-columns:205px minmax(0,1fr);gap:40px}.profile-identity{--portrait-size:112px}.profile-site .profile-name{font-size:30px}}@media (width<=620px){.profile-site{padding:32px 22px 56px}.profile-frame{display:block}.profile-identity{--portrait-size:96px;grid-template-columns:minmax(0, 1fr) var(--portrait-size);border-bottom:1px solid var(--profile-line);grid-template-areas:"copy portrait""nav nav";gap:6px 24px;margin-bottom:28px;padding-bottom:12px}.profile-site .profile-role{margin-top:8px;font-size:15px;line-height:1.45}.profile-site .profile-main h1{font-size:32px}}@media print{.profile-site{--profile-bg:#fff;--profile-fg:#111;--profile-body:#222;--profile-muted:#333;--profile-accent:#111;--profile-line:#aaa;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;padding:24px}.profile-identity{position:static}.profile-skip{display:none}.profile-glyph{filter:brightness(0)}}@media (forced-colors:active){.profile-site{--profile-bg:Canvas;--profile-fg:CanvasText;--profile-body:CanvasText;--profile-muted:CanvasText;--profile-accent:LinkText;--profile-line:CanvasText}.profile-glyph{filter:brightness(0)}}@media (forced-colors:active) and (prefers-color-scheme:dark){.profile-glyph{filter:brightness(0)invert()}}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;tab-size:4;font-family:system-ui,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji;line-height:1.15}body{margin:0}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{border-color:currentColor}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:100%;line-height:1.15}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}legend{padding:0}progress{vertical-align:baseline}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}body{color:#f0e8d8;background:#122b25;margin:0;font:16px/1.65 DM Sans,sans-serif}h1,h2,h3{font-family:Sora,sans-serif}a{color:#bce6cc;text-underline-offset:.2em;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.error-boundary{justify-content:center;align-items:center;min-height:50svh;padding:48px 24px;display:flex}.error-boundary :where(a,button,summary):focus-visible{outline-offset:4px;outline:2px solid #bce6cc}.error-boundary-content{text-align:center;width:100%;min-width:0;max-width:600px}.error-boundary-content h1{margin:0 0 16px;font-size:clamp(24px,4vw,32px);line-height:1.3}.error-boundary-content p{color:#adc0b4;margin:0 0 24px}.error-boundary-content details{text-align:left;margin:24px 0}.error-boundary-content summary{cursor:pointer;align-content:center;min-height:44px}.error-boundary-content pre{white-space:pre-wrap;overflow-wrap:anywhere;border-block:1px solid #3f5a4c;padding-block:16px;font-size:14px}.error-boundary-actions{flex-wrap:wrap;justify-content:center;gap:16px;margin-top:24px;display:flex}.error-boundary-actions button,.error-boundary-actions a{color:#bce6cc;min-height:44px;font:inherit;cursor:pointer;background:0 0;border:1px solid;border-radius:0;align-items:center;padding:8px 12px;text-decoration:none;display:inline-flex}@media print{body{color:#111;background:#fff}.error-boundary p,.error-boundary a,.error-boundary button{color:inherit}}.profile-site .profile-client{align-items:center;gap:14px;display:flex}.profile-site .profile-work-row{padding-bottom:30px}.profile-site .profile-work-row+.profile-work-row{border-top:1px solid var(--profile-line);padding-top:28px}.profile-site .profile-work-description{color:var(--profile-body);margin-top:14px}.profile-site .profile-technologies{flex-wrap:wrap;gap:9px 18px;margin-top:16px;padding:0;list-style:none;display:flex}.profile-site .profile-technologies li{color:var(--profile-muted);align-items:center;gap:6px;font-size:13px;display:inline-flex}.profile-site .profile-home-writing{border-top:1px solid var(--profile-line);margin-top:10px;padding-top:27px}.profile-site .profile-home-writing h2 a{color:var(--profile-fg)}.profile-site .profile-home-posts{margin-top:22px}.profile-site .profile-home-post+.profile-home-post{margin-top:23px}.profile-site .profile-home-date{color:var(--profile-muted);margin-top:6px;font-size:12px}.profile-site .profile-home-summary{color:var(--profile-body);margin-top:8px;font-size:14px}.profile-site .profile-blog-heading{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.profile-site .profile-topic-toolbar{border-bottom:1px solid var(--profile-line);gap:6px;padding-bottom:18px;display:grid}.profile-site .profile-topic-toolbar button,.profile-site .profile-topic-toolbar summary{isolation:isolate;min-width:24px;max-width:100%;min-height:44px;color:var(--profile-body);font:inherit;overflow-wrap:anywhere;cursor:pointer;text-underline-offset:4px;background:0 0;border:0;border-radius:4px;padding:8px;font-size:14px;line-height:1.5;position:relative}.profile-site .profile-topic-toolbar button:before,.profile-site .profile-topic-toolbar summary:before{content:"";z-index:-1;border:1px solid color-mix(in srgb, var(--profile-muted) 60%, var(--profile-bg));border-radius:inherit;pointer-events:none;position:absolute;inset:6px 0}.profile-site .profile-topic-toolbar button[aria-pressed=true],.profile-site .profile-topic-toolbar summary[aria-pressed=true]{color:var(--profile-accent);font-weight:600;text-decoration:underline}.profile-site .profile-topic-toolbar button[aria-pressed=true]:before,.profile-site .profile-topic-toolbar summary[aria-pressed=true]:before{border-color:var(--profile-accent)}.profile-site .profile-topic-toolbar button:active:before,.profile-site .profile-topic-toolbar summary:active:before{background:var(--profile-line)}@media (hover:hover) and (pointer:fine){.profile-site .profile-topic-toolbar button:hover,.profile-site .profile-topic-toolbar summary:hover{color:var(--profile-fg)}.profile-site .profile-topic-toolbar button:hover:before,.profile-site .profile-topic-toolbar summary:hover:before{border-color:var(--profile-fg)}}.profile-site .profile-topic-toolbar :where(button,summary,input):focus-visible{outline:2px solid var(--profile-accent);outline-offset:2px}.profile-site .profile-topic-browser{min-width:0;max-width:100%}.profile-site .profile-topic-browser[open]{flex-basis:100%}.profile-site .profile-topic-browser summary{width:fit-content;list-style-position:inside}.profile-site .profile-topic-browser-panel{gap:8px;padding-top:12px;display:grid}.profile-site .profile-topic-browser-panel label{color:var(--profile-body);font-size:13px}.profile-site .profile-topic-browser-panel input{border:1px solid var(--profile-muted);background:var(--profile-bg);width:100%;min-width:24px;min-height:44px;color:var(--profile-fg);font:inherit;border-radius:6px;padding:8px 12px;font-size:16px}.profile-site .profile-topic-browser-panel p{color:var(--profile-muted);font-size:12px}.profile-site .profile-topic-list{max-block-size:min(18rem,50svh);padding:4px;list-style:none;overflow:auto}.profile-site .profile-topic-list li+li{margin-top:4px}.profile-site .profile-topic-list button{text-align:start;flex-wrap:wrap;align-items:baseline;gap:4px 12px;width:100%;display:flex}.profile-site .profile-topic-list button span:first-child{flex:10rem;min-width:0}.profile-site .profile-topic-count{white-space:nowrap;margin-inline-start:auto;font-size:12px}.profile-site .profile-filter-controls{min-width:0}.profile-site .profile-filter-label{color:var(--profile-body);margin-bottom:2px;font-size:13px}.profile-site .tag-filter{flex-wrap:wrap;align-items:start;gap:4px 6px;min-width:0;display:flex}.profile-site .profile-filter-status,.profile-site .profile-selected-topic{flex-wrap:wrap;align-items:center;gap:8px 16px;min-width:0;display:flex}.profile-site .profile-filter-status{justify-content:space-between}.profile-site .profile-selected-topic{color:var(--profile-body);font-size:13px}.profile-site .profile-selected-topic span{overflow-wrap:anywhere;min-width:0}.profile-site .profile-topics button{min-width:24px;color:var(--profile-muted);cursor:pointer;text-underline-offset:5px;background:0 0;border:0;padding:0;font-family:DM Sans,sans-serif}.profile-site .profile-topics button[aria-pressed=true]{color:var(--profile-accent);text-decoration:underline}.profile-site .profile-topics button:active{color:var(--profile-fg)}@media (hover:hover) and (pointer:fine){.profile-site .profile-topics button:hover{-webkit-text-decoration:underline dotted;text-decoration:underline dotted}}.profile-site .profile-topics{flex-wrap:wrap;gap:0 14px;padding:0;list-style:none;display:flex}.profile-site .profile-topics button{min-height:28px;font-size:12px}.profile-site .profile-result-count{color:var(--profile-muted);font-size:12px}.profile-site .profile-empty{margin-top:28px}.profile-site .profile-blog-entry{padding:28px 0}.profile-site .profile-blog-entry+.profile-blog-entry{border-top:1px solid var(--profile-line)}.profile-site .profile-blog-entry h2{max-width:30ch;font-size:22px;font-weight:500;line-height:1.5}.profile-site .profile-blog-meta{color:var(--profile-muted);flex-wrap:wrap;align-items:center;gap:4px 18px;margin-top:12px;font-size:12px;display:flex}.profile-site .profile-post-summary{color:var(--profile-body);margin-top:8px;font-size:15px}@media print{.profile-site .profile-blog-heading{clip-path:none;white-space:normal;width:auto;height:auto;margin:0 0 14px;position:static;overflow:visible}.profile-site .profile-filter-controls,.profile-site .profile-clear-filter{display:none}}@media (width<=620px){.profile-site .profile-blog-entry{padding:23px 0}.profile-site .profile-blog-entry h2{font-size:20px}}.profile-site .blog-post-header h1{max-width:none;font-size:42px;line-height:1.22}.profile-site .profile-standfirst{color:var(--profile-body);margin-top:20px;font-size:19px;line-height:1.7}.profile-site .profile-article-meta{color:var(--profile-muted);flex-wrap:wrap;gap:4px 18px;margin-top:22px;font-size:13px;display:flex}.profile-site .blog-post-header .profile-topics{margin-top:12px}.profile-site .profile-article-body{min-width:0;color:var(--profile-body);font-size:18px;line-height:1.8}.profile-site .profile-article-body .profile-example{min-width:0}.profile-site .profile-article-body .profile-example-hint[aria-hidden=true]{visibility:hidden}.profile-site .profile-article-body .profile-example-hint{color:var(--profile-muted);margin:-14px 0 26px;font-size:12px;line-height:1.5}.profile-site .profile-article-body>p{margin-top:21px}.profile-site .profile-article-body h1,.profile-site .profile-article-body h2,.profile-site .profile-article-body h3,.profile-site .profile-article-body h4,.profile-site .profile-article-body h5,.profile-site .profile-article-body h6{color:var(--profile-fg);margin:42px 0 20px;scroll-margin-top:32px}.profile-site .profile-article-body h1,.profile-site .profile-article-body h2{font-size:24px;line-height:1.4}.profile-site .profile-article-body h3{margin-top:32px;font-size:20px;line-height:1.45}.profile-site .profile-article-body h4,.profile-site .profile-article-body h5,.profile-site .profile-article-body h6{font-family:Sora,sans-serif;font-size:18px}.profile-site .profile-article-body ul,.profile-site .profile-article-body ol{margin:21px 0;padding-left:24px}.profile-site .profile-article-body ul{list-style:outside}.profile-site .profile-article-body li+li{margin-top:8px}.profile-site .profile-article-body li p{margin:12px 0}.profile-site .profile-article-body blockquote{border-left:3px solid var(--profile-line);margin:26px 0;padding-left:18px}.profile-site .profile-article-body code{color:var(--profile-fg);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:15px}.profile-site .profile-article-body pre{border-block:1px solid var(--profile-line);white-space:pre;max-width:100%;margin:26px 0;padding:20px 0;font:13px/1.75 ui-monospace,SFMono-Regular,Menlo,monospace;overflow-x:auto}.profile-site .profile-article-body pre code{font:inherit}.profile-site .profile-article-body img{height:auto;margin:26px 0}.profile-site .profile-article-body table{border-collapse:collapse;max-width:100%;margin:26px 0;display:block;overflow-x:auto}.profile-site .profile-article-body th,.profile-site .profile-article-body td{border-bottom:1px solid var(--profile-line);text-align:left;padding:8px 14px}.profile-site .profile-article-body .profile-contents{border-block:1px solid var(--profile-line);color:var(--profile-muted);margin-top:22px;padding:6px 0;font-size:14px;line-height:1.6}.profile-site .profile-article-body .profile-contents summary{cursor:pointer;align-content:center;min-height:44px}.profile-site .profile-article-body .profile-contents ul{margin:0;padding:8px 0 16px;list-style:none}.profile-site .profile-article-body .profile-contents li p{margin:0}.profile-site .profile-article-body .profile-contents a{min-height:28px;color:var(--profile-muted);display:inline-block}.profile-site .profile-article-body .profile-contents+*{margin-top:30px}.profile-site .profile-article-nav{border-top:1px solid var(--profile-line);margin-top:42px;padding-top:26px;font-size:14px}.profile-site .profile-article-nav a{min-height:32px;display:inline-block}@media (width<=620px){.profile-site .blog-post-header h1{font-size:34px}.profile-site .profile-standfirst,.profile-site .profile-article-body{font-size:17px}.profile-site .profile-article-body h2{font-size:22px}}@media print{.profile-site .profile-contents,.profile-site .profile-article-nav,.profile-site .profile-example-hint{display:none}.profile-site .profile-article-body pre{white-space:pre-wrap;overflow:visible}.profile-site .profile-article-body pre code,.profile-site .profile-article-body pre span{overflow-wrap:anywhere;white-space:inherit!important}}@media print,(forced-colors:active){.profile-site .profile-article-body pre,.profile-site .profile-article-body pre code,.profile-site .profile-article-body pre span{color:var(--profile-fg)!important;background:0 0!important}}
