:root{color-scheme:dark;--font:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--lake:#1b1b1d;--land:#0c0c0c;--ink:#fff;--on-ink:#17161a;--pane:#101012b8;--pane-blur:blur(14px) saturate(.35);--well:#0000004d;--well-deep:#0000006b;--lip-dark:#0000008c;--lip-light:#ffffff1c;--hair:#ffffff29;--fill:#35c46a;--drain:#ec4a3f;--r-pane:1.375rem;--r-ctl:.75rem;--hit:2.75rem;--t-caption:.8125rem;--t-label:.875rem;--t-body:1rem;--t-prose:1.0625rem;--t-title:1.3125rem;--t-h2:1.75rem;--gutter:1rem;--measure:40rem;--wide:68rem}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;text-size-adjust:100%}body{background:var(--lake);color:var(--ink);font:400 var(--t-body)/1.55 var(--font);-webkit-font-smoothing:antialiased;margin:0}img{max-width:100%;display:block}a{color:inherit;text-underline-offset:.18em;text-decoration-thickness:1px}a:hover{text-decoration-thickness:2px}:focus-visible{outline:2px solid var(--ink);outline-offset:3px;border-radius:4px}::selection{background:var(--ink);color:var(--on-ink)}h1,h2,h3{text-wrap:balance;margin:0}p{margin:0}.num{font-variant-numeric:tabular-nums}.skip{position:absolute;top:0;left:-999px}.skip:focus{left:var(--gutter);top:var(--gutter);z-index:10;background:var(--ink);color:var(--on-ink);border-radius:var(--r-ctl);padding:.5rem .75rem}.wrap{width:min(100% - 2 * var(--gutter), var(--wide));margin-inline:auto}.measure{max-width:var(--measure)}.btn{min-height:var(--hit);border-radius:var(--r-ctl);font:600 .9375rem/1 var(--font);color:var(--ink);background:var(--well);box-shadow:inset 0 1.5px 2px var(--lip-dark), inset 0 -1px 0 var(--lip-light);border:0;justify-content:center;align-items:center;gap:.5rem;padding:0 1.05rem;text-decoration:none;transition:background .12s,box-shadow .12s,transform 80ms;display:inline-flex}.btn:hover{background:var(--well-deep);text-decoration:none}.btn:active{background:var(--well-deep);box-shadow:inset 0 2.5px 4px var(--lip-dark), inset 0 -1px 0 var(--lip-light);transform:translateY(.5px)}.btn-primary{color:var(--on-ink);background:var(--ink);box-shadow:inset 0 1px #ffffff8c,0 1px 1px #00000059,0 4px 10px #0000004d}.btn-primary:hover{background:#ececec}.btn-blue{color:#fff;background:#1f4fd8;font-weight:700;box-shadow:0 1px 2px #00000073,0 4px 12px #00000047}.btn-blue:hover{background:#2a5be6}.btn-blue:active{background:#1a44bd}.btn-primary:active{background:#e0e0e0;box-shadow:inset 0 1px 2px #00000040,0 1px 1px #0000004d}.actions{flex-wrap:wrap;gap:.625rem;display:flex}.hero{isolation:isolate;min-height:min(100svh,56rem);padding:5rem 0 var(--gutter);background:var(--land);align-items:end;display:grid;position:relative}.hero-map{z-index:-1;position:absolute;inset:0}.hero-map img{object-fit:cover;object-position:50% 45%;width:100%;height:100%}.hero-map:after{content:"";background:linear-gradient(to bottom, #1b1b1d00, var(--lake));height:30%;position:absolute;inset:auto 0 0}.hero-map{clip-path:inset(0)}.hero-live{opacity:0;pointer-events:none;width:100%;height:100lvh;transition:opacity 1.2s;position:fixed;top:0;left:0}.hero-live.on{opacity:1}.hero-live #map{position:absolute;inset:0}body.lg .hero .pane[data-glass]{backdrop-filter:none;box-shadow:none;background:#08080a5c}body.lg .hero .pane [data-glass=button]:not([data-glass-off]),body.lg .hero .pane [data-glass=button]:not([data-glass-off]):hover,body.lg .hero .pane [data-glass=button]:not([data-glass-off]):active{box-shadow:none;color:var(--e-glass-ink,var(--ink));background:0 0;transform:none}.hero-inner{align-items:end;gap:1rem;display:grid}.pane{border-radius:var(--r-pane);background:var(--pane);backdrop-filter:var(--pane-blur);padding:1.25rem;box-shadow:inset 0 1px #ffffff17,0 10px 30px #00000059}.hero .pane{gap:1rem;max-width:36rem;display:grid}.name{letter-spacing:-.03em;font-size:clamp(2.6rem,11vw,4.5rem);font-weight:800;line-height:.95}.line{font-size:var(--t-title);font-weight:700;line-height:1.25}.hero-body{font-size:var(--t-body)}.proof{gap:.6rem;margin:0;padding:0;list-style:none;display:grid}.proof li{border-radius:var(--r-ctl);background:var(--well);box-shadow:inset 0 1.5px 2px var(--lip-dark), inset 0 -1px 0 var(--lip-light);padding:.5rem .7rem;font-size:.9375rem;line-height:1.38}@media (width<=40rem){.hero{padding-top:7rem}.hero .pane{gap:.8rem;padding:1.1rem}.proof{gap:.45rem}.proof li{font-size:.875rem}}.map-note{font-size:var(--t-caption);text-align:right;justify-self:end;max-width:22rem;line-height:1.4}.map-note a{font-weight:600}.draft-flag{font-size:var(--t-caption);border:1px dashed var(--ink);border-radius:999px;padding:.15rem .5rem;font-weight:600;display:inline-block}.section{padding:4.5rem 0 1rem}.section>.wrap>h2,.section-head h2{font-size:var(--t-h2);letter-spacing:-.02em;font-weight:800;line-height:1.15}.section-head{max-width:var(--measure);gap:.75rem;margin-bottom:2.25rem;display:grid}.legend{font-size:var(--t-label);flex-wrap:wrap;gap:.5rem 1.25rem;display:flex}.legend span{align-items:center;gap:.5rem;display:inline-flex}.legend i{border-radius:.3rem;width:1.5rem;height:1rem;display:inline-block}.builds{gap:3.5rem;margin:0;padding:0;list-style:none;display:grid}.build{gap:.9rem;max-width:52rem;display:grid}.build h3{font-size:var(--t-title);font-weight:700;line-height:1.25}.build h3 a{text-decoration:none}.build h3 a:hover{text-decoration:underline}.build .summary{max-width:var(--measure)}.build .proofline{max-width:var(--measure);font-size:.9375rem;font-weight:600}.flow{flex-wrap:wrap;align-items:stretch;gap:.5rem 1.4rem;margin:0;padding:0;list-style:none;display:flex}.step{min-width:7.5rem;max-width:13rem;font-size:var(--t-label);flex:8rem;align-content:start;gap:.15rem;padding:.5rem .7rem .6rem;line-height:1.3;display:grid;position:relative}.step .k{font-size:.75rem;font-weight:600}.step .t{font-weight:500}.step+.step:before{content:"";background:var(--hair);width:1.1rem;height:1px;position:absolute;top:50%;left:-1.25rem}.step[data-kind=input],.step[data-kind=output]{border-radius:var(--r-ctl);background:var(--well);box-shadow:inset 0 1.5px 2px var(--lip-dark), inset 0 -1px 0 var(--lip-light)}.step[data-kind=model]{border-radius:var(--r-ctl);border:1.5px dashed var(--ink)}.step[data-kind=code]{border:1.5px solid var(--ink);border-radius:.25rem}.step[data-kind=human]{border-radius:var(--r-ctl);background:var(--ink);color:var(--on-ink);box-shadow:0 1px 1px #00000059,0 4px 10px #0000004d}.legend i[data-kind=io]{background:var(--well);box-shadow:inset 0 1.5px 2px var(--lip-dark), inset 0 -1px 0 var(--lip-light)}.legend i[data-kind=model]{border:1.5px dashed var(--ink)}.legend i[data-kind=code]{border:1.5px solid var(--ink);border-radius:.15rem}.legend i[data-kind=human]{background:var(--ink)}.flow-lg .step{font-size:var(--t-body);max-width:15rem;padding:.7rem .9rem .8rem}@media (width<=40rem){.flow{border-left:1px solid var(--hair);flex-direction:column;gap:.55rem;padding-left:.9rem}.step{flex:none;min-width:0;max-width:none;padding:.4rem .65rem;font-size:.875rem;display:block}.flow-lg .step{max-width:none;padding:.5rem .75rem;font-size:.9375rem}.step+.step:before{display:none}.step .k{font-size:inherit;font-weight:700}.step .k:after{content:": "}}.also{max-width:var(--measure);gap:1rem;display:grid}.also p strong{font-weight:700}.prose{max-width:var(--measure);font-size:var(--t-prose);line-height:1.65}.prose>*+*{margin-top:1.05em}.prose h2{font-size:var(--t-title);margin-top:2.2em;font-weight:700;line-height:1.25}.prose ul,.prose ol{padding-left:1.2em}.prose li+li{margin-top:.5em}.prose code{background:var(--well);border-radius:.3em;padding:.05em .3em;font-size:.92em}.prose strong{font-weight:700}.jobs{gap:2rem;max-width:46rem;margin:0;padding:0;list-style:none;display:grid}.job{gap:.35rem;display:grid}.job h3{font-size:var(--t-title);font-weight:700;line-height:1.25}.job .org{font-weight:600}.job .when{font-size:var(--t-label);font-variant-numeric:tabular-nums}.job ul{max-width:var(--measure);gap:.4rem;margin:.35rem 0 0;padding-left:1.1em;display:grid}@media (width>=52rem){.job{grid-template-columns:11rem 1fr;column-gap:2rem}.job .when{grid-row:1/span 3;padding-top:.3rem}}.foot{padding:5rem 0 3rem}.foot .pane{gap:1rem;max-width:40rem;display:grid}.foot h2{font-size:var(--t-h2);letter-spacing:-.02em;font-weight:800}.small{font-size:var(--t-caption)}.colophon-line{font-size:var(--t-caption);margin-top:2rem}.top{padding:1.25rem 0 0}.case-head{gap:1rem;padding:2.5rem 0 1.5rem;display:grid}.case-head h1{letter-spacing:-.025em;max-width:22ch;font-size:clamp(2rem,7vw,3.25rem);font-weight:800;line-height:1.05}.case-meta{font-size:var(--t-label)}.case-proof{max-width:var(--measure);gap:.5rem;margin:0;padding:0;list-style:none;display:grid}.case-proof li{border-radius:var(--r-ctl);background:var(--well);box-shadow:inset 0 1.5px 2px var(--lip-dark), inset 0 -1px 0 var(--lip-light);padding:.55rem .75rem;font-size:.9375rem;font-weight:600}.disclosure{max-width:var(--measure);border-top:1px solid var(--hair);font-size:var(--t-label);margin-top:3rem;padding-top:1rem}.nextprev{flex-wrap:wrap;gap:.75rem;margin:2.5rem 0 4rem;display:flex}.cv{padding:2rem 0 4rem}.cv-head{gap:.5rem;margin-bottom:2rem;display:grid}.cv-head h1{letter-spacing:-.03em;font-size:clamp(2.2rem,8vw,3.25rem);font-weight:800;line-height:1}.cv-contact{font-size:var(--t-label);flex-wrap:wrap;gap:.25rem 1.25rem;display:flex}.cv h2{font-size:var(--t-title);border-bottom:1px solid var(--hair);max-width:46rem;margin:2.25rem 0 .9rem;padding-bottom:.4rem;font-weight:800}.cv .lane{flex-wrap:wrap;gap:.5rem;margin-top:.75rem;display:flex}.cv .lane .btn[aria-current=page]{background:#ffffff29;box-shadow:inset 0 1px #ffffff24,0 1px 3px #0006}.cv .projects{max-width:var(--measure);gap:.75rem;margin:0;padding:0;list-style:none;display:grid}.cv .projects strong{font-weight:700}.cv .skills{max-width:var(--measure);gap:.5rem;margin:0;display:grid}.cv .skills dt{font-weight:700;display:inline}.cv .skills dd{margin:0;display:inline}.cv .skills div{line-height:1.5}@media (prefers-reduced-motion:reduce){*{transition:none!important}}@media print{:root{color-scheme:light;--ink:#000;--hair:#bbb}@page{size:Letter;margin:.55in .6in}body{color:#000;background:#fff;font-size:10pt;line-height:1.38}.noprint,.skip{display:none!important}.wrap{width:auto}.cv{padding:0}.cv-head{gap:.2rem;margin-bottom:.6rem}.cv-head h1{font-size:22pt}.cv-contact{font-size:9pt}.cv h2{break-after:avoid;border-color:#999;margin:.9rem 0 .4rem;padding-bottom:.15rem;font-size:11.5pt}.jobs{gap:.7rem}.job{break-inside:avoid;grid-template-columns:1fr}.job h3{font-size:11pt}.job .when{grid-row:auto;padding:0;font-size:9pt}.job ul{gap:.15rem}.cv .projects{gap:.3rem}.cv .projects li{break-inside:avoid}a{text-decoration:none}}
