:root{--ink:#080d18;--panel:#0d1424;--rule:#1e2a3f;--text:#c9d3e3;--dim:#7e8da8;--accent:#e8b04b;--mono:"IBM Plex Mono", ui-monospace, "SFMono-Regular", Menlo, monospace;--serif:"Source Serif 4", Georgia, "Times New Roman", serif;--rail:17rem;--gutter:2rem;--measure:34rem}*,:before,:after{box-sizing:border-box}html{background:var(--ink);color-scheme:dark}body{background:var(--ink);color:var(--text);font-family:var(--serif);font-variant-numeric:tabular-nums;-webkit-font-smoothing:antialiased;margin:0;font-size:1.0625rem;line-height:1.65}a{color:inherit;text-decoration-color:var(--rule);text-underline-offset:.25em}a:hover{text-decoration-color:var(--accent)}:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.rail{padding:var(--gutter);border-bottom:1px solid var(--rule);background:var(--panel)}.rail-photo{object-fit:cover;filter:grayscale()contrast(1.05);mix-blend-mode:luminosity;border-radius:2px;width:4.5rem;height:4.5rem}.rail-name{font-family:var(--mono);letter-spacing:.01em;margin:.9rem 0 0;font-size:1rem;font-weight:600}.rail-role{font-family:var(--mono);color:var(--dim);margin:.15rem 0 0;font-size:.8125rem;font-weight:400}.rail nav{font-family:var(--mono);margin-top:1.75rem;font-size:.875rem}.rail nav a{color:var(--dim);padding:.3rem 0;text-decoration:none;display:block}.rail nav a:hover,.rail nav a[aria-current=page]{color:var(--text)}.rail nav a[aria-current=page]{box-shadow:inset 2px 0 0 var(--accent);padding-left:.6rem}.rail-contact{border-top:1px solid var(--rule);font-family:var(--mono);color:var(--dim);margin-top:1.75rem;padding-top:1.25rem;font-size:.8125rem}.rail-contact a{color:var(--text);padding:.15rem 0;display:block}.rail-contact p{margin:.6rem 0 0}.readout{padding:var(--gutter);max-width:calc(var(--measure) + 12rem)}.lede{letter-spacing:-.015em;text-wrap:balance;max-width:18ch;margin:.5rem 0 0;font-size:clamp(1.75rem,5vw,2.6rem);line-height:1.18}.standfirst{max-width:var(--measure);color:var(--dim)}.figures{background:var(--rule);border-block:1px solid var(--rule);grid-template-columns:1fr;gap:1px;margin:2.5rem 0;display:grid}.figures div{background:var(--ink);padding:.9rem 0 1rem}.figures dt{font-family:var(--mono);color:var(--dim);margin-bottom:.3rem;font-size:.75rem}.figures dd{font-family:var(--mono);color:var(--text);margin:0;font-size:1.5rem;font-weight:500}.work{border-top:1px solid var(--rule);margin:3rem 0}.work-row{border-bottom:1px solid var(--rule);color:inherit;grid-template-columns:5.5rem 1fr;gap:0 1.25rem;padding:1.15rem 0;text-decoration:none;display:grid}.work-row:hover .work-name{color:var(--accent)}.work-when{font-family:var(--mono);color:var(--dim);padding-top:.35rem;font-size:.8125rem}.work-name{font-size:1.2rem;line-height:1.3;transition:color .12s linear}.work-note{color:var(--dim);max-width:var(--measure);margin:.2rem 0 0;font-size:.95rem}.work-stack{font-family:var(--mono);color:var(--dim);margin-top:.45rem;font-size:.75rem}.prose{max-width:var(--measure)}.prose h2{font-family:var(--mono);letter-spacing:.02em;color:var(--text);margin:2.75rem 0 .75rem;font-size:.9375rem;font-weight:600}.prose h2:before{content:"";border-top:1px solid var(--accent);width:1.75rem;margin-bottom:.75rem;display:block}.prose p{margin:0 0 1rem}.prose ul{margin:0 0 1rem;padding-left:1.1rem}.prose li{margin-bottom:.4rem}.action{border:1px solid var(--rule);font-family:var(--mono);border-radius:2px;margin-top:1rem;padding:.55rem 1.1rem;font-size:.875rem;text-decoration:none;display:inline-block}.action:hover{border-color:var(--accent);color:var(--accent)}.cv-post{border-bottom:1px solid var(--rule);padding:1.35rem 0}.cv-post:first-of-type{border-top:1px solid var(--rule)}.cv-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:0 .75rem;display:flex}.cv-company{font-size:1.1rem}.cv-dates{font-family:var(--mono);color:var(--dim);font-size:.8125rem}.cv-title{font-family:var(--mono);color:var(--dim);margin:.1rem 0 .6rem;font-size:.8125rem}.cv-post ul{max-width:var(--measure);margin:0;padding-left:1.1rem}.cv-skills{border-top:1px solid var(--rule);margin:0}.cv-skills div{border-bottom:1px solid var(--rule);padding:.85rem 0}.cv-skills dt{font-family:var(--mono);color:var(--dim);margin-bottom:.25rem;font-size:.75rem}.cv-skills dd{margin:0;font-size:.95rem}@media (prefers-reduced-motion:no-preference){.work-row,.figures{animation:.42s cubic-bezier(.2,.7,.3,1) backwards draw}.work-row:first-child{animation-delay:60ms}.work-row:nth-child(2){animation-delay:.12s}.work-row:nth-child(3){animation-delay:.18s}.work-row:nth-child(4){animation-delay:.24s}.work-row:nth-child(5){animation-delay:.3s}.work-row:nth-child(6){animation-delay:.36s}}@keyframes draw{0%{clip-path:inset(0 100% 0 0);opacity:.4}to{clip-path:inset(0);opacity:1}}@media (width<=59.99rem){.rail{grid-template-columns:auto 1fr;align-items:center;gap:0 1rem;display:grid}.rail-photo{grid-row:span 2;width:3.25rem;height:3.25rem}.rail-name{align-self:end;margin:0}.rail-role{align-self:start}.rail nav{grid-column:1/-1;gap:1.25rem;margin-top:1.25rem;display:flex}.rail nav a[aria-current=page]{box-shadow:inset 0 -2px 0 var(--accent);padding-left:0}.rail-contact{grid-column:1/-1;margin-top:1.25rem;padding-top:1rem}}@media (width>=60rem){body{grid-template-columns:var(--rail) minmax(0, 1fr);min-height:100vh;display:grid}.figures{grid-template-columns:repeat(3,1fr)}.rail{border-bottom:0;border-right:1px solid var(--rule);align-self:start;height:100vh;position:sticky;top:0}.readout{padding:4.5rem 3rem}}.shots{background:var(--rule);border-block:1px solid var(--rule);gap:1px;margin:2rem 0;display:grid}.shot{background:var(--ink);margin:0;padding:1rem}.shot img{border:1px solid var(--rule);border-radius:2px;max-width:100%;height:auto;display:block}.shots.pair .shot img{width:auto;max-height:22rem;margin-inline:auto}.shot figcaption{font-family:var(--mono);color:var(--dim);margin-top:.65rem;font-size:.75rem;line-height:1.5}.diagram{border-block:1px solid var(--rule);margin:2rem 0;padding:1.5rem 1rem}.diagram svg{width:100%;height:auto;display:block}.dossier{border-top:1px solid var(--rule);margin:0 0 2rem}.dossier div{border-bottom:1px solid var(--rule);grid-template-columns:8rem 1fr;gap:0 1rem;padding:.6rem 0;display:grid}.dossier dt{font-family:var(--mono);color:var(--dim);padding-top:.2rem;font-size:.75rem}.dossier dd{margin:0;font-size:.95rem}.back{font-family:var(--mono);color:var(--dim);margin-bottom:1.5rem;font-size:.8125rem;display:inline-block}@media (width>=48rem){.shots.pair{grid-template-columns:1fr 1fr}}
