:root{--vs-bg:#fbfbfa;--vs-band:#edf0fa;--vs-hair:#e1e3ea;--vs-ink:#191b22;--vs-body:#3a3d47;--vs-muted:#626674;--vs-accent:#2a47c2;--vs-accent-hover:#1c3399;--vs-accent-underline:#2a47c252;--vs-accent-wash:#2a47c20f;--vs-focus:#2a47c2;--vs-tile:#fff;--vs-tile-border:#dde1ec;--vs-tile-ink:#191b22;--vs-figure:#d6ddf5;--vs-social-bg:#fff;--vs-social-border:#dde1ec;--vs-font-serif:"Newsreader", "Iowan Old Style", Georgia, serif;--vs-font-sans:"Public Sans", "Helvetica Neue", Arial, sans-serif;--vs-max:720px;--vs-gutter:24px;--vs-ease-out:cubic-bezier(.22, 1, .36, 1);--vs-ease-in-out:cubic-bezier(.65, 0, .35, 1);--vs-dur-fast:.16s;--vs-dur-base:.22s;--vs-dur-slow:.38s;--vs-dur-enter:.56s;--vs-stagger:45ms}.dark{--vs-bg:#11131a;--vs-band:#171b2a;--vs-hair:#262a38;--vs-ink:#ecedf2;--vs-body:#c5c8d3;--vs-muted:#9497a6;--vs-accent:#9db1ff;--vs-accent-hover:#c3d0ff;--vs-accent-underline:#9db1ff61;--vs-accent-wash:#9db1ff14;--vs-focus:#9db1ff;--vs-tile:#f3f4f8;--vs-tile-border:#f3f4f8;--vs-tile-ink:#191b22;--vs-figure:#252b44;--vs-social-bg:#222738;--vs-social-border:#30364a}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--vs-bg);color:var(--vs-ink);font-family:var(--vs-font-sans);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0;font-size:16px;line-height:1.5}h1,h2,h3,h4,p,ul{margin:0}ul{padding:0;list-style:none}img{display:block}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0;padding:0}:focus-visible{outline:2px solid var(--vs-focus);outline-offset:3px;border-radius:3px}.vs-wrap{max-width:var(--vs-max);padding:0 var(--vs-gutter);margin:0 auto}.vs-link{color:inherit;text-underline-offset:4px;text-decoration-line:underline;text-decoration-thickness:1px;-webkit-text-decoration-color:var(--vs-accent-underline);text-decoration-color:var(--vs-accent-underline);transition:color var(--vs-dur-fast) ease-out, text-decoration-color var(--vs-dur-base) ease-out, text-underline-offset var(--vs-dur-base) var(--vs-ease-out)}.vs-link:hover{color:var(--vs-accent-hover);text-underline-offset:5px;text-decoration-color:currentColor}.vs-link-quiet{color:inherit;text-underline-offset:5px;transition:color var(--vs-dur-fast) ease-out, text-decoration-color var(--vs-dur-base) ease-out;text-decoration-line:underline;text-decoration-color:#0000;text-decoration-thickness:1px}.vs-link-quiet:hover{color:var(--vs-accent-hover);-webkit-text-decoration-color:var(--vs-accent-underline);text-decoration-color:var(--vs-accent-underline)}.vs-ext{vertical-align:.12em;opacity:0;width:.62em;height:.62em;transition:opacity var(--vs-dur-base) ease-out, transform var(--vs-dur-base) var(--vs-ease-out);margin-left:.3em;display:inline-block;transform:translate(-3px,3px)}a:hover .vs-ext,a:focus-visible .vs-ext{opacity:1;transform:translate(0)}.vs-band{background:var(--vs-band)}.vs-topbar{justify-content:flex-end;padding-top:16px;display:flex}.vs-icon-btn{width:44px;height:44px;color:var(--vs-accent);transition:background-color var(--vs-dur-fast) ease-out, color var(--vs-dur-fast) ease-out;border-radius:22px;margin-right:-12px;position:relative}.vs-icon-btn:hover{background:var(--vs-accent-wash);color:var(--vs-accent-hover)}.vs-icon-btn svg{transition:opacity var(--vs-dur-base) ease-out, transform var(--vs-dur-slow) var(--vs-ease-out);margin:auto;position:absolute;inset:0}.vs-icon-sun{opacity:0;transform:rotate(-60deg)scale(.6)}.vs-icon-moon,.dark .vs-icon-sun{opacity:1;transform:none}.dark .vs-icon-moon{opacity:0;transform:rotate(60deg)scale(.6)}.vs-hero{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:24px 32px;padding-top:40px;display:flex}.vs-hero-text{flex-direction:column;flex:340px;gap:10px;padding-bottom:40px;display:flex}.vs-name{font-family:var(--vs-font-serif);letter-spacing:-.015em;font-size:clamp(42px,9vw,54px);font-weight:400;line-height:1.05}.vs-title{font-family:var(--vs-font-serif);color:var(--vs-accent);font-size:24px;font-style:italic;line-height:1.3}.vs-location{color:var(--vs-muted);font-size:14px}.vs-social{flex-wrap:wrap;gap:0 4px;margin-top:6px;margin-left:-2px;display:flex}.vs-social-btn{width:44px;height:44px;color:var(--vs-ink);transition:color var(--vs-dur-fast) ease-out, transform var(--vs-dur-base) var(--vs-ease-out);border-radius:22px;justify-content:center;align-items:center;text-decoration:none;display:inline-flex;position:relative}.vs-social-btn:before{content:"";background:var(--vs-social-bg);border:1px solid var(--vs-social-border);width:40px;height:40px;transition:border-color var(--vs-dur-base) ease-out, background-color var(--vs-dur-fast) ease-out;border-radius:20px;position:absolute}.vs-social-btn>*{position:relative}.vs-social-btn:hover{color:var(--vs-accent-hover);transform:translateY(-1px)}.vs-social-btn:hover:before{border-color:var(--vs-accent-underline);background:var(--vs-accent-wash)}.vs-social-letter{font-family:var(--vs-font-serif);font-size:20px;font-weight:500;line-height:1;transform:translateY(2px)}@supports (text-box:trim-both cap alphabetic){.vs-social-letter{text-box:trim-both cap alphabetic;transform:none}}.vs-portrait{flex:0 0 176px;align-items:flex-end;height:196px;display:flex}.vs-portrait img,.vs-portrait svg{object-fit:contain;object-position:bottom;width:176px;height:196px;display:block}.vs-section{padding-top:64px}.vs-label{letter-spacing:.14em;text-transform:uppercase;color:var(--vs-accent);margin-bottom:8px;font-size:12px;font-weight:600}.vs-company{border-bottom:1px solid var(--vs-hair);padding:28px 0}.vs-company-head{align-items:center;gap:14px;display:flex}.vs-tile{background:var(--vs-tile);border:1px solid var(--vs-tile-border);width:40px;height:40px;transition:border-color var(--vs-dur-base) ease-out, transform var(--vs-dur-base) var(--vs-ease-out);border-radius:10px;flex:0 0 40px;justify-content:center;align-items:center;display:flex}.vs-tile img{width:22px;height:22px}.vs-tile-letter{font-family:var(--vs-font-serif);color:var(--vs-tile-ink);font-size:20px;line-height:1}.vs-company:has(.vs-company-name a:hover) .vs-tile{border-color:var(--vs-accent-underline);transform:translateY(-1px)}.vs-company-meta{flex-wrap:wrap;flex:auto;justify-content:space-between;align-items:baseline;gap:2px 16px;display:flex}.vs-company-name{font-family:var(--vs-font-serif);font-size:24px;font-weight:500;line-height:1.2}.vs-company-loc{color:var(--vs-muted);font-size:14px}.vs-roles{margin-top:18px;padding-left:54px}.vs-role+.vs-role,.vs-collapse-inner .vs-role{margin-top:22px}.vs-role-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:2px 16px;margin-bottom:6px;display:flex}.vs-role-title{font-size:16px;font-weight:600}.vs-years{color:var(--vs-accent);font-variant-numeric:tabular-nums;font-size:14px}.vs-role-desc{font-family:var(--vs-font-serif);color:var(--vs-body);text-wrap:pretty;font-size:18px;line-height:1.6}.vs-collapse{transition:grid-template-rows var(--vs-dur-base) var(--vs-ease-in-out);grid-template-rows:0fr;display:grid}.vs-collapse[data-open=true]{transition-duration:var(--vs-dur-slow);transition-timing-function:var(--vs-ease-out);grid-template-rows:1fr}.vs-collapse-inner{min-height:0;overflow:hidden}.vs-collapse-inner>*{opacity:0;transition:opacity .14s ease-in,transform .14s ease-in;transform:translateY(-6px)}.vs-collapse[data-open=true] .vs-collapse-inner>*{opacity:1;transition:opacity .32s ease-out calc(70ms + var(--i,0) * var(--vs-stagger)), transform var(--vs-dur-slow) var(--vs-ease-out) calc(70ms + var(--i,0) * var(--vs-stagger));transform:none}.vs-text-btn{min-height:44px;color:var(--vs-accent);text-underline-offset:4px;text-decoration:underline;text-decoration-thickness:1px;-webkit-text-decoration-color:var(--vs-accent-underline);text-decoration-color:var(--vs-accent-underline);transition:color var(--vs-dur-fast) ease-out, text-decoration-color var(--vs-dur-base) ease-out;align-items:center;gap:6px;margin-top:8px;font-size:14px;font-weight:500;display:inline-flex}.vs-text-btn:hover{color:var(--vs-accent-hover);text-decoration-color:currentColor}.vs-chev{width:14px;height:14px;transition:transform var(--vs-dur-slow) var(--vs-ease-out)}[aria-expanded=true] .vs-chev{transform:rotate(180deg)}.vs-btn-label{transition:opacity 90ms ease-out}.vs-project{border-bottom:1px solid var(--vs-hair);flex-wrap:wrap;gap:4px 24px;padding:24px 0;display:flex}.vs-project-years{color:var(--vs-accent);font-variant-numeric:tabular-nums;flex:0 0 96px;font-size:14px;line-height:28px}.vs-project-body{flex-direction:column;flex:360px;gap:6px;min-width:0;display:flex}.vs-project-title{font-family:var(--vs-font-serif);font-size:21px;font-weight:500;line-height:28px}.vs-project-desc{color:var(--vs-body);text-wrap:pretty;font-size:15px;line-height:1.65}.vs-project-stack{color:var(--vs-muted);margin-top:2px;font-size:13px}.vs-pill-btn{border:1px solid var(--vs-accent);min-height:44px;color:var(--vs-accent);transition:background-color var(--vs-dur-fast) ease-out, color var(--vs-dur-fast) ease-out, border-color var(--vs-dur-fast) ease-out;border-radius:22px;align-items:center;gap:8px;margin-top:20px;padding:0 20px;font-size:14px;font-weight:500;display:inline-flex}.vs-pill-btn:hover{background:var(--vs-accent-wash);color:var(--vs-accent-hover);border-color:var(--vs-accent-hover)}.vs-footer{border-top:1px solid var(--vs-hair);color:var(--vs-muted);margin-top:72px;padding:20px 0 56px;font-size:13px}@keyframes vs-rise{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.js .vs-rise{animation:vs-rise var(--vs-dur-enter) var(--vs-ease-out) both;animation-delay:calc(80ms + var(--i,0) * 70ms)}.js .vs-reveal{opacity:0;transition:opacity var(--vs-dur-enter) ease-out, transform var(--vs-dur-enter) var(--vs-ease-out);transform:translateY(12px)}.js .vs-reveal.is-visible{opacity:1;transform:none}html.theme-fading body,html.theme-fading body *{transition:background-color var(--vs-dur-slow) ease, color var(--vs-dur-slow) ease, border-color var(--vs-dur-slow) ease, text-decoration-color var(--vs-dur-slow) ease!important}::view-transition-old(root){animation-duration:var(--vs-dur-slow);animation-timing-function:ease}::view-transition-new(root){animation-duration:var(--vs-dur-slow);animation-timing-function:ease}@media (width<=560px){.vs-roles{padding-left:0}.vs-portrait{flex-basis:136px;height:152px}.vs-portrait img,.vs-portrait svg{width:136px;height:152px}.vs-hero-text{padding-bottom:8px}}@media (prefers-reduced-motion:reduce){.js .vs-rise{animation:none}.js .vs-reveal{opacity:1;transition:none;transform:none}.vs-collapse,.vs-collapse[data-open=true]{transition:none}.vs-collapse-inner>*,.vs-collapse[data-open=true] .vs-collapse-inner>*{transition:opacity .12s linear;transform:none}.vs-chev,.vs-icon-btn svg,.vs-tile,.vs-ext,.vs-social-btn{transition-property:opacity;transform:none!important}::view-transition-old(root){animation:none}::view-transition-new(root){animation:none}}
