@font-face{font-family:plex sans;src:url(/fonts/plex-sans-var.woff2)format("woff2");font-weight:100 700;font-display:swap}@font-face{font-family:plex mono;src:url(/fonts/plex-mono-400.woff2)format("woff2");font-weight:400;font-display:swap}@font-face{font-family:plex mono;src:url(/fonts/plex-mono-500.woff2)format("woff2");font-weight:500;font-display:swap}:root{--bg:#0f1215;--surface:#161a1f;--line:#272d34;--text:#ebe8e1;--muted:#9da4ac;--ok:#5fd0b0;--warn:#f0795b;--sans:"Plex Sans", system-ui, -apple-system, "Segoe UI", sans-serif;--mono:"Plex Mono", ui-monospace, "SF Mono", Menlo, Consolas, monospace;color-scheme:dark}@media(prefers-color-scheme:light){:root:not([data-theme=dark]){--bg:#f5f3ee;--surface:#fffdf9;--line:#dcd8ce;--text:#171a1e;--muted:#59606a;--ok:#0b7a63;--warn:#c2452a;color-scheme:light}}:root[data-theme=light]{--bg:#f5f3ee;--surface:#fffdf9;--line:#dcd8ce;--text:#171a1e;--muted:#59606a;--ok:#0b7a63;--warn:#c2452a;color-scheme:light}*,*::before,*::after{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:5rem;-webkit-text-size-adjust:100%}body{margin:0;background:var(--bg);color:var(--text);font:1.0625rem/1.6 var(--sans);-webkit-font-smoothing:antialiased}h1,h2,h3,h4,p,ul,ol,dl,dd,figure{margin:0;padding:0}ul,ol{list-style:none}a{color:inherit;text-decoration-color:var(--ok);text-underline-offset:.2em}a:hover{color:var(--ok)}:focus-visible{outline:2px solid var(--ok);outline-offset:3px;border-radius:2px}::selection{background:var(--ok);color:var(--bg)}.wrap{max-width:68rem;margin-inline:auto;padding-inline:1.5rem}.skip{position:absolute;left:-999px}.skip:focus{left:1rem;top:1rem;z-index:10;background:var(--surface);padding:.5rem .75rem}.meta,.label,.when,.eyebrow,.tags,.signal figcaption,.spotlight figcaption,.top nav,.skills dt,.foot{font-family:var(--mono);font-size:.8125rem;letter-spacing:.01em}.top{position:sticky;top:0;z-index:5;background:color-mix(in srgb,var(--bg) 86%,transparent);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}.top-in{display:flex;align-items:center;gap:1.5rem;min-height:3.5rem}.brand{font-weight:600;text-decoration:none;margin-right:auto;white-space:nowrap}.top nav{display:flex;gap:1.5rem}.top nav a{color:var(--muted);text-decoration:none}.top nav a:hover{color:var(--text)}.theme{display:grid;place-items:center;width:2.25rem;height:2.25rem;background:0 0;border:1px solid var(--line);border-radius:50%;color:var(--muted);cursor:pointer}.theme:hover{color:var(--text);border-color:var(--muted)}.hero{padding-block:clamp(3rem,9vw,6.5rem)0}.eyebrow{display:flex;align-items:center;gap:1rem;color:var(--muted);line-height:1.5}.eyebrow img{border-radius:50%;border:1px solid var(--line)}.eyebrow b{color:var(--text);font-weight:500}h1{margin-top:2rem;max-width:16ch;font-size:clamp(2.5rem,7.2vw,5rem);font-weight:500;line-height:1.02;letter-spacing:-.035em;text-wrap:balance}.lede{margin-top:1.5rem;max-width:40rem;font-size:clamp(1.125rem,2vw,1.3125rem);color:var(--muted);text-wrap:pretty}.actions{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:2rem}.btn{padding:.65rem 1.1rem;border:1px solid var(--line);border-radius:999px;background:var(--surface);font-weight:500;text-decoration:none;transition:border-color .15s}.btn:hover{border-color:var(--ok)}.signal{margin-top:clamp(2.5rem,6vw,4rem)}.signal svg{display:block;width:100%;height:clamp(7rem,16vw,11rem);overflow:visible}.signal path,.signal line{vector-effect:non-scaling-stroke}.stop-warn{stop-color:var(--warn)}.stop-ok{stop-color:var(--ok)}.signal-line{fill:none;stroke:url(#sig);stroke-width:2;stroke-linejoin:round;stroke-linecap:round}.signal-threshold{stroke:var(--muted);stroke-width:1;stroke-dasharray:3 6;opacity:.55}.signal-band{fill:var(--ok);opacity:.13}.signal figcaption{display:flex;justify-content:space-between;gap:1rem;margin-top:.75rem;padding-top:.75rem;border-top:1px solid var(--line);color:var(--muted)}.is-warn{color:var(--warn)}.is-ok{color:var(--ok)}@media(prefers-reduced-motion:no-preference){.signal-line{stroke-dasharray:1;stroke-dashoffset:1;animation:draw 2.4s .2s cubic-bezier(.6,0,.2,1)forwards}.signal-band{opacity:0;animation:fade .9s 2s forwards}@keyframes draw{to{stroke-dashoffset:0}}@keyframes fade{to{opacity:.13}}}.band{display:grid;grid-template-columns:11rem minmax(0,1fr);gap:2rem;margin-top:clamp(4rem,9vw,7rem)}.label{position:sticky;top:5rem;align-self:start;padding-top:.35rem;color:var(--muted);font-weight:400;text-transform:uppercase;letter-spacing:.12em}h3{font-size:1.25rem;font-weight:600;line-height:1.3;letter-spacing:-.01em}.meta,.when{color:var(--muted)}.about{max-width:44rem;font-size:clamp(1.25rem,2.4vw,1.625rem);line-height:1.4;letter-spacing:-.01em;text-wrap:pretty}.pillars{display:grid;grid-template-columns:repeat(3,1fr);margin-top:3rem;border-top:1px solid var(--line)}.pillars>li{padding:1.5rem 1.5rem 1.5rem 0}.pillars>li+li{padding-left:1.5rem;border-left:1px solid var(--line)}.pillars p{margin-top:.75rem;color:var(--muted);font-size:1rem}.tags{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:1.25rem}.tags li{padding:.15rem .55rem;border:1px solid var(--line);border-radius:999px;color:var(--muted);font-size:.75rem}.facts{display:grid;grid-template-columns:repeat(3,1fr);gap:1.5rem;padding-top:2rem;border-top:1px solid var(--line)}.facts dt{font-size:clamp(1.75rem,3.6vw,2.5rem);font-weight:500;letter-spacing:-.03em;line-height:1.1;color:var(--ok)}.facts dd{margin-top:.5rem;max-width:20ch;color:var(--muted);font-size:.9375rem;line-height:1.45}.spotlight blockquote{margin:0;padding-left:1.5rem;border-left:2px solid var(--ok)}.spotlight blockquote p{max-width:44rem;font-size:clamp(1.375rem,2.8vw,1.875rem);font-weight:500;line-height:1.3;letter-spacing:-.02em;text-wrap:pretty}.spotlight blockquote p::before{content:"\201C"}.spotlight blockquote p::after{content:"\201D"}.spotlight figcaption{display:flex;flex-wrap:wrap;justify-content:space-between;gap:.5rem 1.5rem;margin-top:1.5rem;padding-top:.75rem;border-top:1px solid var(--line);color:var(--muted)}.spotlight figcaption a{color:var(--text)}.spotlight figcaption a:hover{color:var(--ok)}.role{padding-block:2rem;border-top:1px solid var(--line)}.role:first-child{padding-top:0;border-top:0}.role header{display:grid;grid-template-columns:1fr auto;column-gap:1.5rem;align-items:baseline}.role .meta{grid-column:1;margin-top:.25rem}.role .meta b{color:var(--text);font-weight:500}.role .when{grid-column:2;grid-row:1;white-space:nowrap}.role .summary{margin-top:1.25rem;max-width:44rem;font-size:1.1875rem;line-height:1.5;text-wrap:pretty}.more{margin-top:2rem;font-weight:500}.role h4{margin-top:1.5rem;font-size:1rem;font-weight:600}.role ul{margin-top:.6rem;max-width:46rem;color:var(--muted);font-size:1rem}.role header+ul{margin-top:1rem}.role ul li{position:relative;padding-left:1.25rem}.role ul li+li{margin-top:.4rem}.role ul li::before{content:"";position:absolute;left:0;top:.72em;width:.5rem;height:1px;background:var(--ok)}.projects{display:grid;grid-template-columns:repeat(2,1fr);gap:1rem}.project{display:flex;flex-direction:column;padding:1.5rem;background:var(--surface);border:1px solid var(--line);border-radius:.75rem}.project.is-featured,.project:last-child:nth-child(even){grid-column:1/-1}.project.is-featured h3{font-size:clamp(1.5rem,3vw,2rem);letter-spacing:-.02em}.project.is-featured>p:not(.meta,.links){max-width:40rem}.project h3{margin-top:.5rem;font-family:var(--mono);font-weight:500;overflow-wrap:anywhere}.project>p:not(.meta,.links){margin-top:.75rem;color:var(--muted);font-size:1rem}.project-foot{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:1rem 1.25rem;margin-top:auto;padding-top:1.25rem}.project .links{display:flex;flex-wrap:wrap;gap:1.25rem;font-weight:500;font-size:.9375rem}.stack{display:flex;gap:.4rem;margin-left:auto}.stack li{display:grid;place-items:center;width:2rem;height:2rem;border:1px solid var(--line);border-radius:.4rem;color:var(--muted)}.stack svg{width:1.05rem;height:1.05rem;fill:currentColor}.skills>div{display:grid;grid-template-columns:9rem 1fr;gap:1rem;padding-block:.9rem;border-top:1px solid var(--line)}.skills>div:first-child{border-top:0;padding-top:0}.skills dt{color:var(--muted);padding-top:.2rem}.closing{max-width:34rem;font-size:clamp(1.5rem,3.4vw,2.25rem);font-weight:500;line-height:1.2;letter-spacing:-.02em;text-wrap:balance}.contact{display:flex;flex-wrap:wrap;gap:.75rem 1.75rem;margin-top:2rem;font-weight:500}.foot{display:flex;flex-wrap:wrap;justify-content:space-between;gap:.5rem 2rem;margin-top:clamp(4rem,9vw,7rem);padding-block:1.5rem 2.5rem;border-top:1px solid var(--line);color:var(--muted)}.lost{min-height:100vh;display:grid;align-content:center}@media(max-width:52rem){.band{grid-template-columns:1fr;gap:1.25rem}.label{position:static}.pillars{grid-template-columns:1fr}.pillars>li,.pillars>li+li{padding:1.5rem 0;border-left:0}.pillars>li+li{border-top:1px solid var(--line)}.projects{grid-template-columns:1fr}.top nav{display:none}}@media(max-width:34rem){.facts{grid-template-columns:1fr}.facts dd{max-width:none}.role header{grid-template-columns:1fr}.role .when{grid-column:1;grid-row:auto;margin-top:.25rem}.skills>div{grid-template-columns:1fr;gap:.15rem}.signal-mid{display:none}}