@font-face{font-family:Newsreader;font-style:normal;font-weight:300 400;font-display:swap;src:url(/fonts/newsreader-latin-var.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:Newsreader Fallback;src:local(Georgia),local(Times New Roman);size-adjust:92.66%;ascent-override:79.32%;descent-override:28.6%;line-gap-override:0%}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:400 500;font-display:swap;src:url(/fonts/plex-sans-latin-var.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:Plex Sans Fallback;src:local(Arial),local(Helvetica Neue);size-adjust:103.15%;ascent-override:99.37%;descent-override:26.66%;line-gap-override:0%}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/plex-mono-latin-400.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:Plex Mono Fallback;src:local(Consolas),local(Menlo);size-adjust:109.13%;ascent-override:93.92%;descent-override:25.2%;line-gap-override:0%}:root{--ground:#000;--surface:#141210;--signal:#f2f0ed;--read:#8c8681;--rule:#4a4542;--dim:#7a756f;--instrument:#7fb6ff;--rule-soft:#282422;--serif:"Newsreader", "Newsreader Fallback", Georgia, "Times New Roman", serif;--sans:"IBM Plex Sans", "Plex Sans Fallback", Arial, system-ui, sans-serif;--mono:"IBM Plex Mono", "Plex Mono Fallback", Consolas, ui-monospace, monospace;--u:clamp(2.75rem, 9vw, 5.5rem);--size-h2:clamp(1.75rem, 4vw, 2.75rem);--size-h3:1.25rem;--size-lead:1.125rem;--size-body:1rem;--size-value:.8125rem;--size-micro:.6875rem;--leading-display:.92;--leading-h2:1.05;--leading-h3:1.25;--leading-lead:1.55;--leading-body:1.65;--track-display:-.03em;--track-h2:-.02em;--track-h3:-.01em;--track-micro:.02em;--measure-lead:58ch;--measure-body:62ch;--hero-pad-top:calc(var(--u) * 1.9);--hero-pad-bottom:calc(var(--u) * 1.2);--hero-h1-lead:calc(var(--u) * .3);--hero-lead-links:calc(var(--u) * .42);--rail:8rem;--rail-gap:clamp(1.5rem, 3.5vw, 3rem);--gutter:clamp(1.25rem, 4vw, 2.5rem);--max:72rem;--section-pad:clamp(3.5rem, 8vw, 6.5rem);--dur-hover:.2s;--dur-underline:.24s;--dur-field-in:1.6s;--dur-decode:1.9s;--dur-crossfade:.26s;--ease:cubic-bezier(.2, .6, .2, 1)}@media (prefers-reduced-motion:reduce){:root{--dur-hover:0s;--dur-underline:0s;--dur-field-in:0s;--dur-decode:0s;--dur-crossfade:0s}}.band{padding:var(--section-pad) 0;border-top:1px solid var(--rule-soft);position:relative}.band-inner{width:100%;max-width:var(--max);padding-inline:var(--gutter);margin:0 auto}.band-row{grid-template-columns:1fr;gap:.75rem;display:grid}.band-rail{flex-wrap:wrap;align-content:start;gap:.15rem 1rem;display:flex}.rail-value{color:var(--signal);font-family:var(--mono);font-size:var(--size-value);font-variant-numeric:tabular-nums;line-height:1.4}.rail-note{color:var(--dim);font-size:var(--size-micro);line-height:1.6}.band-body{min-width:0}.band-title{color:var(--signal);font-family:var(--serif);font-size:var(--size-h2);font-variation-settings:"opsz" 72;font-weight:300;line-height:var(--leading-h2);letter-spacing:var(--track-h2);text-wrap:balance;margin:0}.band-lead{max-width:var(--measure-lead);color:var(--read);font-size:var(--size-lead);line-height:var(--leading-lead);margin:.9rem 0 0}.band-text{max-width:var(--measure-body);color:var(--read);font-size:var(--size-body);line-height:var(--leading-body);margin:0}.link{color:var(--signal);font-size:var(--size-body);font-weight:500;position:relative}.link:after{content:"";width:0;height:1px;transition:width var(--dur-underline) var(--ease);background:currentColor;position:absolute;bottom:-.35em;left:0}.link:hover:after,.link:focus-visible:after{width:100%}.link:focus-visible{outline:2px solid var(--instrument);outline-offset:4px}.link-row{flex-wrap:wrap;gap:1.75rem;display:flex}@media (width>=900px){.band-row{grid-template-columns:var(--rail) minmax(0, 1fr);gap:var(--rail-gap)}.band-rail{height:100%;padding-right:var(--rail-gap);border-right:1px solid var(--rule-soft);flex-direction:column;gap:.15rem}}.band--trace .band-inner{position:relative}.trace{display:none}@media (width>=900px){.trace{top:0;bottom:0;left:calc(var(--gutter) + var(--rail));background:var(--rule-soft);pointer-events:none;width:1px;display:block;position:absolute}.trace-fill{background:var(--dim);transform-origin:top;width:100%;height:100%;display:block;transform:scaleY(1)}@supports (animation-timeline:view()){@media (prefers-reduced-motion:no-preference){.trace-fill{animation:linear both trace-fill;animation-timeline:view();animation-range:entry contain}}}}@keyframes trace-fill{0%{transform:scaleY(0)}to{transform:scaleY(1)}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}}.masthead{z-index:10;background:var(--ground);border-bottom:1px solid var(--rule-soft);position:relative}.masthead__inner{width:100%;max-width:var(--max);padding:1.1rem var(--gutter);justify-content:space-between;align-items:baseline;gap:1.5rem;margin:0 auto;display:flex}.masthead__name{color:var(--signal);font-size:var(--size-body);letter-spacing:-.01em;font-weight:500}.masthead__name:focus-visible,.masthead__link:focus-visible{outline:2px solid var(--instrument);outline-offset:4px}.masthead__links{align-items:baseline;gap:1.75rem;display:flex}.masthead__links:hover .masthead__link,.masthead__links:focus-within .masthead__link{opacity:.6}.masthead__links .masthead__link:hover,.masthead__links .masthead__link:focus-visible{opacity:1}.masthead__link{color:var(--read);font-size:var(--size-body);transition:opacity var(--dur-hover) var(--ease), color var(--dur-hover) var(--ease);position:relative}.masthead__link:hover,.masthead__link:focus-visible{color:var(--signal)}.masthead__link:after{content:"";width:0;height:1px;transition:width var(--dur-underline) var(--ease);background:currentColor;position:absolute;bottom:-.35em;left:0}.masthead__link:hover:after,.masthead__link:focus-visible:after{width:100%}.masthead__link[aria-current=true]{color:var(--signal)}.masthead__link[aria-current=true]:after{background:var(--instrument);width:100%}.masthead__resume{color:var(--signal);font-size:var(--size-body);font-weight:500}@media (width<=639px){.masthead__inner{flex-wrap:wrap;gap:.85rem 1.5rem}.masthead__links{flex-basis:100%;order:3;gap:1.5rem}}.contact-address{overflow-wrap:anywhere;font-size:clamp(1.35rem,5.2vw,2.75rem)}.contact-mail{color:inherit;position:relative}.contact-mail:after{content:"";width:0;height:1px;transition:width var(--dur-underline) var(--ease);background:currentColor;position:absolute;bottom:.02em;left:0}.contact-mail:hover:after,.contact-mail:focus-visible:after{width:100%}.contact-mail:focus-visible,.contact-tel:focus-visible{outline:2px solid var(--instrument);outline-offset:4px}.contact-meta{color:var(--read);font-size:var(--size-body);flex-wrap:wrap;align-items:center;gap:.6rem;margin:1.1rem 0 0;display:flex}.contact-sep{background:var(--rule);width:1.25rem;height:1px}.contact-tel{color:var(--read);font-family:var(--mono);font-size:var(--size-value);font-variant-numeric:tabular-nums}.contact-tel:hover{color:var(--signal)}.contact-links{margin-top:1.8rem}.site-footer{width:100%;max-width:var(--max);padding:2rem var(--gutter) 3.5rem;border-top:1px solid var(--rule-soft);color:var(--dim);font-size:var(--size-micro);margin:0 auto}.tenure{padding-top:calc(var(--section-pad) * .55);margin-top:calc(var(--section-pad) * .55);border-top:1px solid var(--rule-soft)}.dates{white-space:nowrap}.span-bar{background:var(--rule-soft);width:100%;max-width:7rem;height:2px;margin:.7rem 0 .55rem;display:block}.span-bar:before{width:calc(var(--fill) * 100%);background:var(--instrument);content:"";height:100%;display:block}.tenure-company{color:var(--signal);font-family:var(--serif);font-variation-settings:"opsz" 72;letter-spacing:var(--track-h2);margin:0;font-size:clamp(1.6rem,3vw,2.25rem);font-weight:300;line-height:1.05}.roles{flex-direction:column;gap:.5rem;margin:1.1rem 0 0;padding:0;list-style:none;display:flex}.roles li{border-bottom:1px solid var(--rule-soft);flex-wrap:wrap;align-items:baseline;gap:.25rem 1rem;padding-bottom:.5rem;display:flex}.roles li:last-child{border-bottom:0}.role-title{color:var(--signal);font-size:var(--size-body);font-weight:500}.role-dates{color:var(--dim);font-family:var(--mono);font-size:var(--size-micro);font-variant-numeric:tabular-nums}.tenure-body{margin-top:1.35rem}.highlight{max-width:var(--measure-body);border-left:1px solid var(--instrument);margin-top:1.6rem;padding-left:1.15rem}.highlight-name{color:var(--signal);font-size:var(--size-body);letter-spacing:var(--track-h3);margin:0 0 .5rem;font-weight:500}@media (width>=900px){.span-bar{max-width:none}}.hero{z-index:1;background:var(--ground);padding:var(--hero-pad-top) 0 var(--hero-pad-bottom);position:relative;overflow:hidden}.hero__inner{gap:calc(var(--u) * .5);width:100%;max-width:var(--max);padding-inline:var(--gutter);margin:0 auto;display:grid}.hero__name{color:var(--signal);font-family:var(--serif);font-size:var(--u);font-variation-settings:"opsz" 72;font-weight:300;line-height:var(--leading-display);letter-spacing:var(--track-display);text-wrap:balance;margin:0}.hero__lead{max-width:var(--measure-lead);margin:var(--hero-h1-lead) 0 0;color:var(--read);font-size:var(--size-lead);line-height:var(--leading-lead)}.hero__links{margin-top:var(--hero-lead-links);flex-wrap:wrap;gap:1.75rem;display:flex}.hero__link{color:var(--signal);font-size:var(--size-body);font-weight:500;line-height:1.4;position:relative}.hero__link:after{content:"";width:0;height:1px;transition:width var(--dur-underline) var(--ease);background:currentColor;position:absolute;bottom:-.35em;left:0}.hero__link:hover:after,.hero__link:focus-visible:after{width:100%}.hero__link:focus-visible{outline:2px solid var(--instrument);outline-offset:4px}.hero__field{aspect-ratio:1;justify-self:center;width:100%;max-width:20rem;position:relative}.hero__canvas{opacity:0;width:100%;height:100%;transition:opacity var(--dur-field-in) var(--ease);display:block}.hero__canvas.is-ready{opacity:1}@media (width>=900px){.hero__inner{align-items:center;gap:var(--rail-gap);grid-template-columns:minmax(0,30rem) minmax(0,1fr)}.hero__field{justify-self:end;width:auto;max-width:none;height:min(36rem,64vh);margin-left:auto;margin-right:-10vw}}.decode-word{white-space:pre;display:inline-block;position:relative}.decode-ghost{visibility:hidden}.decode-live{white-space:pre;position:absolute;inset:0;overflow:hidden}.decode-done{color:var(--read)}.decode-noise{color:var(--instrument)}.sr-only{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.case,.entry{margin-top:var(--section-pad)}.entry{padding-top:calc(var(--section-pad) * .55);border-top:1px solid var(--rule-soft);margin-top:calc(var(--section-pad) * .55)}.case-name{color:var(--signal);font-family:var(--serif);font-variation-settings:"opsz" 72;letter-spacing:var(--track-h2);margin:0;font-size:clamp(2rem,4.5vw,3.25rem);font-weight:300;line-height:1}.entry-name{color:var(--signal);font-size:var(--size-h3);font-weight:500;line-height:var(--leading-h3);letter-spacing:var(--track-h3);margin:0}.shot{margin:2rem 0 0}.shot-frame{aspect-ratio:16/10;background:var(--surface);border:1px solid var(--rule-soft);width:100%;position:relative;overflow:hidden}.shot-image{object-fit:cover;opacity:0;width:100%;height:100%;transition:opacity var(--dur-crossfade) var(--ease);display:block;position:absolute;inset:0}.shot-image.is-active{opacity:1}.shot-video{object-fit:cover;opacity:0;width:100%;height:100%;transition:opacity var(--dur-crossfade) var(--ease);display:block;position:absolute;inset:0}.shot-video.is-active{opacity:1}.shot-modes{border:1px solid var(--rule-soft);flex-wrap:wrap;gap:0;margin-top:-1px;display:flex}.shot-mode{border:0;border-left:1px solid var(--rule-soft);color:var(--read);font-family:inherit;font-size:var(--size-value);cursor:pointer;transition:color var(--dur-hover) var(--ease), background var(--dur-hover) var(--ease);background:0 0;flex:auto;padding:.55rem .9rem}.shot-mode:first-child{border-left:0}.shot-mode:hover{color:var(--signal)}.shot-mode:focus-visible{outline:2px solid var(--instrument);outline-offset:-2px}.shot-mode[aria-pressed=true]{background:var(--surface);color:var(--signal);box-shadow:inset 0 -1px 0 var(--instrument)}.case-prose{flex-direction:column;gap:1rem;margin-top:2rem;display:flex}.case-subhead{color:var(--signal);font-size:var(--size-body);letter-spacing:var(--track-h3);margin:2.25rem 0 0;font-weight:500}.case-list{max-width:var(--measure-body);color:var(--read);font-size:var(--size-body);line-height:var(--leading-body);flex-direction:column;gap:.7rem;margin:.9rem 0 0;padding:0;list-style:none;display:flex}.case-list li{padding-left:1.15rem;position:relative}.case-list li:before{background:var(--rule);content:"";width:.45rem;height:1px;position:absolute;top:.78em;left:0}.case-stack{max-width:var(--measure-body);color:var(--dim);font-size:var(--size-value);margin:1.6rem 0 0;line-height:1.7}.entry-summary{margin-top:.7rem}.case-links,.entry-links{margin-top:1.6rem}*{box-sizing:border-box}html{background:var(--ground);scroll-behavior:smooth}body{background:var(--ground);color:var(--read);font-family:var(--sans);font-size:var(--size-body);line-height:var(--leading-body);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0}h1,h2,h3,h4,p,figure{margin:0}a{color:inherit;text-decoration:none}button,a{-webkit-tap-highlight-color:transparent}img{max-width:100%}:focus-visible{outline:2px solid var(--instrument);outline-offset:4px}main{position:relative}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}}
