@font-face{font-family:Archivo;src:url(/fonts/Archivo.woff2)format("woff2");font-weight:100 900;font-stretch:62% 125%;font-display:swap}@font-face{font-family:Martian Mono;src:url(/fonts/MartianMono.woff2)format("woff2");font-weight:100 800;font-stretch:75% 112.5%;font-display:swap}:root{--bg:#1a1d21;--bg2:#14161a;--panel:#20242a;--panel2:#272c33;--line:#343a42;--line2:#4d555f;--text:#eceff2;--muted:#aab2bb;--dim:#828b95;--accent:#ffd12e;--accent-2:#ffe16a;--accent-ink:#1a1500;--font:"Archivo", "Inter", system-ui, -apple-system, "Segoe UI", sans-serif;--mono:"Martian Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--max:1040px;--gut:24px;--cell:24px;--hatch:repeating-linear-gradient(135deg, transparent 0 1.5px, #aab2bb29 1.5px 3px);--hazard:repeating-linear-gradient(135deg, var(--accent) 0 9px, transparent 9px 18px);--grid:linear-gradient(#eceff20a 1px, transparent 1px), linear-gradient(90deg, #eceff20a 1px, transparent 1px);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}body{background:var(--bg) var(--grid);background-size:var(--cell) var(--cell);min-height:100dvh;color:var(--text);font-family:var(--font);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0;font-size:17px;line-height:1.5;overflow-x:hidden}a,button{touch-action:manipulation}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}button{font:inherit;color:inherit;border-radius:0}h1,h2,h3{text-transform:uppercase;letter-spacing:0;margin:0;font-weight:800;line-height:1}h1{font-size:clamp(3rem,11vw,6rem);font-stretch:72%;line-height:.88}h2{font-size:clamp(1.9rem,4.2vw,2.8rem);font-stretch:78%}h3{font-size:1.2rem;font-stretch:90%}p,ul{margin:0}.mono{font-family:var(--mono);letter-spacing:.02em;text-transform:uppercase;font-size:.68rem}.dim{color:var(--dim)}.wrap{max-width:var(--max);padding:0 var(--gut);margin:0 auto}.led{background:var(--accent);flex:none;width:7px;height:7px;animation:2.4s step-end infinite blink;display:inline-block}@keyframes blink{0%,70%{opacity:1}71%,to{opacity:.25}}.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.print-only{display:none}@media (prefers-reduced-motion:reduce){.led{animation:none}html{scroll-behavior:auto}*{transition:none!important}}.bar{border-bottom:1px solid var(--line2);background:var(--bg2);z-index:10;position:sticky;top:0}.bar .wrap{height:44px;color:var(--dim);justify-content:space-between;align-items:center;gap:16px;display:flex}.bar .brand{color:var(--text);letter-spacing:.04em;font-weight:600}.bar .brand:hover{color:var(--accent);text-decoration:none}.bar .brand em{color:var(--accent);font-style:normal}.btn{border:1px solid var(--line2);font-family:var(--mono);letter-spacing:.04em;text-transform:uppercase;color:var(--text);background:var(--panel);cursor:pointer;white-space:nowrap;justify-content:center;align-items:center;gap:12px;padding:12px 20px;font-size:.72rem;font-weight:500;transition:background .15s,color .15s,border-color .15s;display:inline-flex}.btn:hover{border-color:var(--muted);background:var(--panel2);text-decoration:none}.btn:focus-visible{outline:1px solid var(--accent);outline-offset:2px}.btn-sm{padding:8px 12px;font-size:.64rem}.btn-outline{color:var(--accent);border:1px dashed var(--accent);background:0 0;width:100%}.btn-outline:hover{border-style:solid;border-color:var(--accent);background:#ffd12e1a}.reveal{font:inherit;color:var(--accent);cursor:pointer;text-decoration:underline;-webkit-text-decoration-color:var(--line2);text-decoration-color:var(--line2);text-underline-offset:3px;background:0 0;border:0;padding:0}.reveal:hover{-webkit-text-decoration-color:var(--accent);text-decoration-color:var(--accent)}.reveal:focus-visible{outline:1px solid var(--accent);outline-offset:2px}.masthead{padding-top:40px}.nameplate{background:var(--panel);border:1px solid var(--line2);grid-template-columns:12px 1fr;display:grid;position:relative;box-shadow:0 30px 60px -30px #000c}.nameplate .stripe{background:var(--hazard);border-right:1px solid var(--line2)}.np-inner{padding:28px 28px 0}.np-kicker{color:var(--accent);align-items:center;gap:10px;margin:0 0 14px;font-weight:500;display:flex}.np-kicker:after{content:"";background:var(--line2);flex:1;height:1px}.np-sub{color:var(--muted);max-width:60ch;margin:18px 0 0;font-size:1.05rem}.np-fields{border-top:1px solid var(--line2);color:var(--muted);grid-template-columns:repeat(5,auto);margin:24px 0 0;display:grid}.np-fields div{border-right:1px solid var(--line);gap:3px;min-width:0;padding:10px 14px;display:grid}.np-fields div:last-child{border-right:0}.np-fields div:nth-child(6){border-top:1px solid var(--line);grid-column:1/-1}.np-fields .np-note{font-family:var(--font);letter-spacing:0;text-transform:none;color:var(--muted);max-width:72ch;font-size:.8rem;font-weight:400;display:block}.np-fields dt{color:var(--dim)}.np-fields dd{color:var(--text);align-items:center;gap:8px;margin:0;font-weight:500;display:inline-flex}.np-fields dd a{color:var(--accent)}.rivet{border:1px solid var(--line2);background:var(--bg2);z-index:1;width:9px;height:9px;position:absolute}.rivet:after{content:"";background:var(--dim);height:1px;margin:auto 0;position:absolute;inset:3px -1px;transform:rotate(45deg)}.rivet.tl{top:5px;left:17px}.rivet.tr{top:5px;right:5px}.rivet.bl{bottom:5px;left:17px}.rivet.br{bottom:5px;right:5px}@media (width<=820px){.np-fields{grid-template-columns:repeat(3,1fr)}.np-fields div:nth-child(3){border-right:0}.np-fields div:nth-child(n+4){border-top:1px solid var(--line)}}@media (width<=600px){.masthead{padding-top:24px}.np-inner{padding:20px 18px 0}.np-fields{grid-template-columns:1fr 1fr}.np-fields div:nth-child(3){border-right:1px solid var(--line)}.np-fields div:nth-child(2n){border-right:0}.np-fields div:nth-child(n+3){border-top:1px solid var(--line)}.np-fields div:nth-child(5){grid-column:1/-1}}.sheet{grid-template-columns:200px 1fr;align-items:start;gap:40px;padding-top:44px;display:grid}.rail{border:1px solid var(--line);background:var(--bg);display:grid;position:sticky;top:64px}.rail-h{border-bottom:1px solid var(--line);color:var(--dim);justify-content:space-between;padding:10px 14px;display:flex}.rail-nav{display:grid}.rail-nav a{color:var(--muted);border-bottom:1px solid var(--line);grid-template-columns:28px 1fr auto;align-items:center;gap:8px;padding:11px 14px;display:grid}.rail-nav a:hover{color:var(--text);background:var(--panel2);text-decoration:none}.rail-nav a b{color:var(--accent);font-weight:500}.rail-nav a i{color:var(--dim);font-style:normal}.rail-nav a:hover i{color:var(--accent)}.rail-block{padding:12px 14px}@media (width<=860px){.sheet{grid-template-columns:1fr;gap:28px;padding-top:32px}.rail{position:static}.rail-nav{grid-template-columns:repeat(3,1fr)}.rail-nav a{border-bottom:0;border-right:1px solid var(--line)}.rail-nav a:last-child{border-right:0}.rail-block{display:none}}@media (width<=480px){.rail-nav a{grid-template-columns:auto 1fr;padding:11px 10px}.rail-nav a i{display:none}}.sec{border-top:1px solid var(--line2);grid-template-columns:34px 1fr;margin-bottom:48px;scroll-margin-top:56px;display:grid}.sec-edge{border-right:1px solid var(--line);position:relative}.sec-edge span{writing-mode:vertical-rl;color:var(--accent);white-space:nowrap;padding:14px 0 0 6px;font-weight:500;display:block;position:sticky;top:64px;transform:rotate(180deg)}.sec-body{min-width:0;padding:18px 0 0 24px}.sec-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:16px;margin-bottom:22px;display:flex}.sec-head .mono{color:var(--dim)}@media (width<=600px){.sec{grid-template-columns:1fr;margin-bottom:36px}.sec-edge{border-right:0;border-bottom:1px solid var(--line)}.sec-edge span{writing-mode:horizontal-tb;padding:10px 0;position:static;transform:none}.sec-body{padding-left:0}}.timeline{border:1px solid var(--line2);background:var(--bg);margin:0;padding:0;list-style:none}.job{border-bottom:1px solid var(--line);grid-template-columns:104px 1fr;display:grid}.job:last-child{border-bottom:0}.job-when{border-right:1px solid var(--line);background:var(--bg2);color:var(--dim);align-content:start;gap:4px;padding:20px 14px;display:grid}.job-when span:first-child{color:var(--text);font-weight:500}.job-when span:last-child:before{content:"↓";color:var(--line2);margin-bottom:4px;display:block}.job-main{min-width:0;padding:20px 22px 22px}.job-org{color:var(--dim);margin:8px 0 14px}.job-org b{color:var(--muted);font-weight:500}.job-details{color:var(--muted);gap:8px;max-width:70ch;padding:0;font-size:.97rem;list-style:none;display:grid}.job-details li{padding-left:18px;position:relative}.job-details li:before{content:"";border:1px solid var(--accent);width:7px;height:7px;position:absolute;top:.58em;left:0}@media (width<=600px){.job{grid-template-columns:1fr}.job-when{border-right:0;border-bottom:1px solid var(--line);grid-auto-flow:column;justify-content:start;gap:10px;padding:10px 16px}.job-when span:last-child:before{content:"→";margin:0 10px 0 0;display:inline}.job-main{padding:16px}}.proj{border:1px solid var(--line2);background:var(--bg);grid-template-columns:1fr 1fr;display:grid}.card{border-right:1px solid var(--line);border-bottom:1px solid var(--line);min-width:0;padding:20px 22px 22px;transition:background .15s}.card:nth-child(2n){border-right:0}.card:nth-last-child(-n+2){border-bottom:0}.card:hover{background:var(--panel)}.card-code{color:var(--dim);justify-content:space-between;gap:10px;margin:0 0 14px;display:flex}.card-code em{color:var(--accent);text-align:right;font-style:normal}.card h3{margin-bottom:8px}.card p:last-child{color:var(--muted);font-size:.95rem}@media (width<=700px){.proj{grid-template-columns:1fr}.card{border-right:0;padding:16px}.card:nth-last-child(-n+2){border-bottom:1px solid var(--line)}.card:last-child{border-bottom:0}}.skills{border:1px solid var(--line2);background:var(--bg);grid-template-columns:1fr 1fr;margin:0;display:grid}.skills div{border-right:1px solid var(--line);border-bottom:1px solid var(--line);gap:8px;min-width:0;padding:16px 22px 18px;display:grid}.skills div:nth-child(2n){border-right:0}.skills div:nth-last-child(-n+2){border-bottom:0}.skills dt{color:var(--accent);font-weight:500}.skills dd{color:var(--text);margin:0;font-size:.97rem}@media (width<=600px){.skills{grid-template-columns:1fr}.skills div{border-right:0;padding:14px 16px 16px}.skills div:nth-last-child(-n+2){border-bottom:1px solid var(--line)}.skills div:last-child{border-bottom:0}}.titleblock{justify-content:flex-end;margin:8px 0 56px;display:flex}.tb{border:1px solid var(--line2);background:var(--bg2);color:var(--muted);grid-template-columns:auto auto auto;min-width:min(100%,560px);display:grid}.tb div{border-right:1px solid var(--line);border-bottom:1px solid var(--line);gap:3px;min-width:0;padding:8px 14px;display:grid}.tb .wide{grid-column:span 2}.tb div:nth-child(2),.tb div:nth-child(4){border-right:0}.tb div:nth-child(n+3){border-bottom:0}.tb span{color:var(--dim)}.tb b{color:var(--text);font-weight:500}.tb b a,.tb b .reveal{font:inherit}@media (width<=600px){.tb{grid-template-columns:1fr 1fr;min-width:100%}.tb div,.tb .wide{border-right:1px solid var(--line);border-bottom:1px solid var(--line);grid-column:auto}.tb div:first-child,.tb div:nth-child(4){border-right:0;grid-column:1/-1}.tb div:nth-child(3){border-right:0}.tb div:nth-child(4){border-bottom:0}}@media print{@page{size:letter;margin:0}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}html{scroll-behavior:auto}body{color:#000;-webkit-print-color-adjust:exact;print-color-adjust:exact;background:#fff;padding:.4in .55in .3in;font-size:9pt;line-height:1.28}.wrap{max-width:none;padding:0}.print-only{display:inline}.screen-only,.bar,.rail,.sec-edge,.rivet,.stripe,.led,.btn,.titleblock{display:none!important}.visually-hidden{clip:auto;white-space:normal;color:#fff;width:auto;height:auto;margin:0;font-size:4pt;line-height:1;position:static;overflow:visible}h1,h2,h3{color:#000}h1{font-size:24pt;font-stretch:80%}h2{font-size:12pt;font-stretch:90%}h3{font-size:10pt;font-stretch:95%}.mono{letter-spacing:.03em;font-size:6.5pt}.masthead{padding:0}.nameplate{box-shadow:none;background:0 0;border:0;border-bottom:2px solid #000;padding-bottom:8pt;display:block}.np-inner{padding:0}.np-kicker{color:#000;margin-bottom:6pt}.np-kicker:after{background:#000}.np-sub{color:#222;max-width:none;margin-top:6pt;font-size:9pt}.np-fields{color:#000;border:0;flex-wrap:wrap;gap:0;margin-top:6pt;display:flex}.np-fields div,.np-fields div:nth-child(n){border:0;padding:0;display:inline}.np-fields .np-note{color:#333;max-width:none;margin-top:2pt;font-size:8pt}.np-fields div+div:before{content:"/";color:#888;margin:0 8pt}.np-fields dt{display:none}.np-fields dd{color:#000;font-weight:500;display:inline}.np-fields dd a{color:#000}.sheet{padding-top:0;display:block}.sec{border-top:0;margin:8pt 0 0;display:block}.sec-body{padding:0}.sec-head{border-bottom:1px solid #000;margin-bottom:5pt;padding-bottom:3pt}.sec-head .mono{color:#555}.timeline,.proj,.skills{background:0 0;border:0}.job{break-inside:avoid;border-bottom:1px solid #bbb;grid-template-columns:80pt 1fr}.job:last-child{border-bottom:0}.job-when{color:#333;background:0 0;border:0;gap:2pt;padding:4pt 0}.job-when span:first-child{color:#000}.job-when span:last-child:before{content:"to";color:#888;margin:0 4pt 0 0;display:inline}.job-main{padding:4pt 0}.job-org{color:#333;margin:2pt 0 4pt}.job-org b{color:#333}.job-details{color:#111;gap:2pt;max-width:none;font-size:8.75pt}.job-details li:before{border-color:#000;width:5px;height:5px;top:.5em}.proj{grid-template-columns:1fr 1fr;gap:4pt 10pt}.card{break-inside:avoid;border:0;border-top:1px solid #bbb;padding:3pt 0}.card-code{color:#333;margin-bottom:3pt}.card-code em{color:#000}.card h3{margin-bottom:3pt}.card p:last-child{color:#111;font-size:8.5pt;line-height:1.32}.skills{grid-template-columns:1fr 1fr;gap:2pt 10pt}.skills div{border:0;border-top:1px solid #bbb;gap:1pt;padding:3pt 0}.skills dt{color:#000}.skills dd{color:#111;font-size:8.75pt}}
