@font-face{font-family:Instrument Sans Variable;font-style:normal;font-display:swap;font-weight:400 700;font-stretch:75% 100%;src:url(/_astro/instrument-sans-latin-ext-wdth-normal.C5E2Gvlv.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Instrument Sans Variable;font-style:normal;font-display:swap;font-weight:400 700;font-stretch:75% 100%;src:url(/_astro/instrument-sans-latin-wdth-normal.BVScPF0l.woff2)format("woff2-variations");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:Pixelify Sans Variable;font-style:normal;font-display:swap;font-weight:400 700;src:url(/_astro/pixelify-sans-cyrillic-wght-normal.BfQLqnEI.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Pixelify Sans Variable;font-style:normal;font-display:swap;font-weight:400 700;src:url(/_astro/pixelify-sans-latin-ext-wght-normal.CsF3XSp0.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Pixelify Sans Variable;font-style:normal;font-display:swap;font-weight:400 700;src:url(/_astro/pixelify-sans-latin-wght-normal.Cbhn5ptY.woff2)format("woff2-variations");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}:root{--crust:#11111b;--mantle:#181825;--base:#1e1e2e;--surface0:#313244;--surface1:#45475a;--overlay:#7f849c;--subtext0:#a6adc8;--subtext1:#bac2de;--text:#cdd6f4;--mauve:#cba6f7;--peach:#fab387;--vannevar:#d4f25a;--atlassian:#7fb2ff;--chewy:#9aa5ff;--pnnl:#f4a95f;--paper:var(--crust);--ink:var(--text);--ink-soft:var(--subtext1);--ink-faint:var(--overlay);--rule:var(--surface0);--amber:var(--peach);--amber-soft:#f9e2af;--glass:#11111be0;--glass-edge:#cdd6f424;--sans:"Instrument Sans Variable", ui-sans-serif, system-ui, sans-serif;--pixel:"Pixelify Sans Variable", var(--sans);--measure:40rem;--gutter:clamp(1.25rem, 4.5vw, 3.5rem);--page:78rem;--mark:3.5rem;color-scheme:dark}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--paper);color:var(--ink);font-family:var(--sans);font-variant-numeric:tabular-nums;font-kerning:normal;-webkit-font-smoothing:antialiased;margin:0;font-size:1.0625rem;line-height:1.6}h1,h2,h3,h4,h5,p,ol,ul,figure{margin:0}ol,ul{padding:0;list-style:none}a{color:inherit;text-underline-offset:.22em;text-decoration-line:underline;text-decoration-color:#ffffff47;text-decoration-thickness:1px;transition:text-decoration-color .12s,color .12s}a:hover{color:var(--amber-soft);text-decoration-color:currentColor}:focus-visible{outline:2px solid var(--amber);outline-offset:3px;border-radius:2px}[tabindex="-1"]:focus{outline:none}::selection{background:var(--amber);color:#1d1c28}.skip-link{left:var(--gutter);z-index:20;background:var(--ink);color:var(--paper);padding:.5rem .875rem;position:absolute;top:.75rem;transform:translateY(-200%)}.skip-link:focus{transform:none}.button,.copy,.badge,.walk-skip,.walk-toolkit,.walk-hint,.walk-lede,.walk-card,.walk-toast{--px:3px;clip-path:polygon(0 var(--px), var(--px) var(--px), var(--px) 0, calc(100% - var(--px)) 0, calc(100% - var(--px)) var(--px), 100% var(--px), 100% calc(100% - var(--px)), calc(100% - var(--px)) calc(100% - var(--px)), calc(100% - var(--px)) 100%, var(--px) 100%, var(--px) calc(100% - var(--px)), 0 calc(100% - var(--px)))}.button,.copy{--face:var(--peach);--lit:#fde3cf;--shade:#c9825a;--label:var(--crust);background:var(--face);min-height:2.75rem;box-shadow:inset 3px 3px 0 var(--lit), inset -3px -3px 0 var(--shade);color:var(--label);font-family:var(--pixel);cursor:pointer;border:0;align-items:center;padding:0 1.25rem;font-size:1.25rem;font-weight:500;line-height:1;text-decoration:none;transition:transform 80ms steps(2,end);display:inline-flex}.button.is-quiet,.copy{--face:var(--surface0);--lit:var(--surface1);--shade:var(--crust);--label:var(--text)}.copy-email{justify-content:center;min-width:9.5rem}.button:hover,.copy:hover{color:var(--label);transform:translateY(-2px)}.button:active,.copy:active{box-shadow:inset -3px -3px 0 var(--lit), inset 3px 3px 0 var(--shade);transform:translateY(1px)}.masthead{z-index:5;width:min(100%, var(--page));padding:1.25rem var(--gutter);color:#fff;justify-content:space-between;align-items:center;gap:1.5rem;margin-inline:auto;display:flex;position:absolute;inset:0 0 auto}.wordmark{clip-path:polygon(0 4px,4px 4px,4px 0,calc(100% - 4px) 0,calc(100% - 4px) 4px,100% 4px,100% calc(100% - 4px),calc(100% - 4px) calc(100% - 4px),calc(100% - 4px) 100%,4px 100%,4px calc(100% - 4px),0 calc(100% - 4px));display:block}.wordmark img{width:3.125rem;height:3.125rem;image-rendering:pixelated;display:block}.masthead nav{color:#ffffffc7;gap:clamp(1rem,3vw,2.25rem);display:flex}.masthead nav a{text-decoration:none}.walk{height:690vh;position:relative}.walk.is-unavailable{height:100svh}.walk.is-unavailable .walk-timeline,.walk.is-unavailable .walk-hint{display:none}.walk-view{color:#fff;touch-action:pan-y;background:#1f2148;height:100svh;position:sticky;top:0;overflow:hidden}.walk-room{image-rendering:pixelated;pointer-events:none;position:absolute}.pixel-wipe{z-index:50;width:100%;height:100%;image-rendering:pixelated;pointer-events:none;position:fixed;inset:0}.walk-canvas{image-rendering:pixelated;cursor:pointer;position:absolute;bottom:0;left:0}.walk-intro,.walk-card,.walk-skip,.walk-toolkit{opacity:0;visibility:hidden;transition:opacity .32s,transform .42s cubic-bezier(.2,.8,.2,1),visibility 0s linear .42s}.walk-intro.is-shown,.walk-card.is-shown,.walk-skip.is-shown,.walk-toolkit.is-shown{opacity:1;visibility:visible;transition-delay:0s;transform:none}.walk-intro{right:var(--gutter);top:clamp(5.5rem,12vh,7.5rem);left:max(var(--gutter), calc((100% - var(--page)) / 2 + var(--gutter)));pointer-events:none;max-width:40rem;position:absolute;transform:translateY(-12px)}.walk-intro h1 img{width:min(32rem,78vw);height:auto;image-rendering:pixelated;margin-left:-.25rem;display:block}.walk-actions>a:not(.button){text-shadow:0 1px 2px #0c0b1ab3,0 0 18px #0c0b1a73}.walk-intro h1 span{display:block}.walk-lede{background:var(--glass);max-width:33rem;color:var(--text);text-wrap:pretty;margin-top:1rem;padding:.75rem 1rem;font-size:clamp(1.0625rem,1.5vw,1.25rem);line-height:1.45}.walk-actions{pointer-events:auto;flex-wrap:wrap;align-items:center;gap:.75rem 1.75rem;margin-top:1.75rem;display:flex}.walk-hint{background:var(--glass);color:#ffffffdb;padding:.4rem .875rem;font-size:.9375rem;display:inline-block}.hint-tap{display:none}@media (hover:none){.hint-key{display:none}.hint-tap{display:inline}}kbd{background:var(--surface0);min-width:1.75em;box-shadow:inset 2px 2px 0 var(--surface1), inset -2px -2px 0 var(--crust);font-family:var(--pixel);text-align:center;color:var(--text);margin-inline:.1em;padding:.2em .45em .25em;font-size:1rem;line-height:1;display:inline-block}.walk-toolkit{top:1.25rem;left:var(--gutter);max-width:calc(100% - 2 * var(--gutter) - 10rem);background:var(--glass);-webkit-backdrop-filter:blur(10px);pointer-events:none;align-items:baseline;gap:.75rem;padding:.5rem .875rem;font-size:.875rem;display:flex;position:absolute;transform:translateY(-8px)}.walk-skip{top:1.25rem;right:var(--gutter);background:var(--glass);font-family:var(--pixel);white-space:nowrap;padding:.5rem .875rem;font-size:1.0625rem;text-decoration:none;position:absolute}.walk-skip:hover{background:var(--surface0)}.walk-toolkit-count{font-family:var(--pixel);color:var(--amber-soft);white-space:nowrap;font-size:1.0625rem}.walk-toolkit-items{color:#ffffffb8;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.walk-card{top:4.5rem;right:var(--gutter);width:min(27rem, calc(100% - 2 * var(--gutter)));background:var(--glass);-webkit-backdrop-filter:blur(12px);max-height:calc(100% - 13rem);padding:1.25rem 1.5rem 1.375rem;position:absolute;overflow:auto;transform:translateY(10px);box-shadow:0 18px 50px -20px #06051099}.walk-card.is-left{right:auto;left:var(--gutter)}.walk-card header{justify-content:space-between;align-items:baseline;gap:1rem;margin-bottom:.875rem;display:flex}.walk-card h2{font-variation-settings:"wdth" 80;letter-spacing:-.015em;text-wrap:balance;font-size:1.625rem;font-weight:640;font-stretch:80%;line-height:1.1}.walk-card header p{color:#fff9;white-space:nowrap;font-size:.9375rem}.walk-role+.walk-role{border-top:1px solid var(--glass-edge);margin-top:.875rem;padding-top:.875rem}.walk-role h3{font-size:1rem;font-weight:580;line-height:1.4}.walk-role .walk-role-years{color:#ffffff8c;margin-top:0;font-size:.875rem}.walk-role p,.walk-role li{color:#ffffffc7;font-size:.9375rem;line-height:1.5}.walk-role p{margin-top:.125rem}.walk-role ul{gap:.25rem;margin-top:.5rem;display:grid}.walk-role li{padding-left:1rem;position:relative}.walk-role li:before{content:"";background:var(--amber);width:.3125rem;height:.3125rem;position:absolute;top:.62em;left:.125rem}.walk-contact>p{color:#ffffffc7}.walk-email{font-variation-settings:"wdth" 75;letter-spacing:-.02em;text-underline-offset:.14em;overflow-wrap:anywhere;margin-top:.5rem;font-size:clamp(1.625rem,3.2vw,2.125rem);font-weight:620;font-stretch:75%;text-decoration-thickness:2px;display:inline-block}.walk-contact-row{flex-wrap:wrap;align-items:center;gap:.75rem 1.5rem;margin-top:1rem;display:flex}.walk-toasts{pointer-events:none;position:absolute;inset:0}.walk-toast{left:calc((var(--wx) - var(--cam)) * var(--scale) * 1px);bottom:calc(132 * var(--scale) * 1px);white-space:nowrap;background:#110f21cc;padding:.25rem .625rem;font-size:.875rem;font-weight:600;animation:1.6s cubic-bezier(.2,.8,.2,1) forwards toast;position:absolute}.walk-toast.is-level{background:var(--amber);color:#1d1c28;padding:.375rem .875rem;font-size:1rem}@keyframes toast{0%{opacity:0;transform:translate(-50%,8px)scale(.9)}14%{opacity:1;transform:translate(-50%)scale(1)}75%{opacity:1}to{opacity:0;transform:translate(-50%,-26px)}}.walk-timeline{left:var(--gutter);right:var(--gutter);height:calc(var(--soil,25) * var(--scale,3) * 1px);align-items:center;transition:opacity .32s;display:flex;position:absolute;bottom:0}.walk-timeline.is-inside{opacity:0;pointer-events:none}.walk-track{background:#ffffff29;height:2px;margin-top:-1.0625rem;position:absolute;top:50%;left:0;right:0}.walk-track span{background:var(--amber);transform-origin:0;position:absolute;inset:0;transform:scaleX(0)}.walk-timeline ol{position:absolute;inset:0}.walk-timeline li{top:50%;left:calc(var(--at) * 100%);position:absolute;transform:translate(-50%,-1.0625rem)}.walk-timeline li:first-child{transform:translateY(-1.0625rem)}.walk-timeline li:first-child button{align-items:flex-start}.walk-timeline li:last-child{transform:translate(-100%,-1.0625rem)}.walk-timeline li:last-child button{align-items:flex-end}.walk-timeline button{color:#ffffff9e;font:inherit;cursor:pointer;background:0 0;border:0;flex-direction:column;align-items:center;gap:.125rem;padding:.875rem .25rem .25rem;font-size:.8125rem;font-weight:560;line-height:1.2;display:flex;position:relative}.walk-timeline button:before{content:"";background:#ffffff59;width:8px;height:8px;position:absolute;top:-3px}.walk-timeline li:first-child button:before{left:-4px}.walk-timeline li:not(:first-child):not(:last-child) button:before{left:calc(50% - 4px)}.walk-timeline li:last-child button:before{right:-4px}.walk-timeline button.is-passed{color:var(--amber-soft)}.walk-timeline button.is-passed:before{background:var(--amber)}.walk-timeline button:hover{color:#fff}.walk-year{color:#ffffff80;font-weight:400}.resume,.colophon{width:min(100%, var(--page));padding-inline:var(--gutter);margin-inline:auto}main{background:linear-gradient(#2a2029 0 6px,#1f1a24 6px 12px,#171520 12px 18px,#0000 18px) 0 580vh/100% 18px no-repeat}.resume{padding-top:clamp(3.5rem,8vw,6rem)}.pixel{font-family:var(--pixel)}.sheet{--notch:8px;background:var(--base);clip-path:polygon(0 var(--notch), var(--notch) var(--notch), var(--notch) 0, calc(100% - var(--notch)) 0, calc(100% - var(--notch)) var(--notch), 100% var(--notch), 100% calc(100% - var(--notch)), calc(100% - var(--notch)) calc(100% - var(--notch)), calc(100% - var(--notch)) 100%, var(--notch) 100%, var(--notch) calc(100% - var(--notch)), 0 calc(100% - var(--notch)));padding:clamp(1.5rem,4.5vw,4rem)}.sheet-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:1.5rem 3rem;padding-bottom:clamp(1.5rem,3vw,2.5rem);display:flex}.sheet-name{font-family:var(--pixel);letter-spacing:-.01em;color:var(--text);font-size:clamp(3rem,7.5vw,5.75rem);font-weight:600;line-height:.95}.sheet-role{color:var(--subtext0);margin-top:.625rem;font-size:1.1875rem}.badges{flex-wrap:wrap;gap:.625rem;display:flex}.badge{background:var(--surface0);color:var(--text);box-shadow:inset 3px 3px 0 var(--surface1), inset -3px -3px 0 var(--crust);align-items:stretch;text-decoration:none;transition:transform 80ms steps(2,end);display:inline-flex}.badge:hover{color:var(--text);background:var(--surface1);transform:translateY(-2px)}.badge:active{transform:translateY(1px)}.badge-icon{place-items:center;padding:.375rem .25rem .375rem .5rem;display:grid}.badge-icon img{width:2rem;height:2rem;image-rendering:pixelated}.badge-label{font-family:var(--pixel);align-self:center;padding:0 .875rem 0 .375rem;font-size:1.1875rem}.sheet-head-label{font-family:var(--pixel);color:var(--mauve);align-items:center;gap:1rem;font-size:1.75rem;font-weight:500;line-height:1.2;display:flex}.sheet-head-label:after{content:"";background:repeating-linear-gradient(90deg, var(--surface1) 0 3px, transparent 3px 6px);flex:1;height:3px}.log{gap:2.5rem;margin-top:2rem;display:grid;position:relative}.log:before{content:"";top:var(--mark);bottom:0;left:calc(var(--mark) / 2 - 1.5px);background:repeating-linear-gradient(var(--surface1) 0 6px, transparent 6px 12px);width:3px;position:absolute}.entry{--accent:var(--vannevar);grid-template-columns:var(--mark) minmax(0, 1fr);gap:1.5rem;display:grid;position:relative}.entry.is-atlassian{--accent:var(--atlassian)}.entry.is-chewy{--accent:var(--chewy)}.entry.is-pnnl{--accent:var(--pnnl)}.mark{width:var(--mark);height:var(--mark);background:var(--surface0);clip-path:polygon(0 4px,4px 4px,4px 0,calc(100% - 4px) 0,calc(100% - 4px) 4px,100% 4px,100% calc(100% - 4px),calc(100% - 4px) calc(100% - 4px),calc(100% - 4px) 100%,4px 100%,4px calc(100% - 4px),0 calc(100% - 4px));place-items:center;display:grid}.mark img{width:2.625rem;height:2.625rem;image-rendering:pixelated}.entry-body h4{letter-spacing:-.01em;color:var(--accent);padding-top:.125rem;font-size:1.5rem;font-weight:620;line-height:1.2}.role{margin-top:.625rem;position:relative}.role+.role{margin-top:1.5rem}.role+.role:before{content:"";top:.45em;left:calc(-1.5rem - var(--mark) / 2 - 5px);background:var(--accent);width:10px;height:10px;position:absolute}.role-line{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.125rem 1.5rem;display:flex}.role-line h5{color:var(--text);font-size:1.0625rem;font-weight:560}.years{color:var(--subtext0);white-space:nowrap;font-size:.9375rem}.bullets{max-width:46rem;color:var(--subtext1);text-wrap:pretty;gap:.375rem;margin-top:.5rem;font-size:1rem;line-height:1.55;display:grid}.bullets li{padding-left:1.125rem;position:relative}.bullets li:before{content:"";background:var(--accent);width:.375rem;height:.375rem;position:absolute;top:.62em;left:.125rem}.sheet-foot{grid-template-columns:minmax(0,1fr) minmax(0,2.2fr);gap:2rem clamp(2rem,5vw,4rem);margin-top:3rem;display:grid}.school{color:var(--text);margin-top:1rem;font-weight:560}.degree{color:var(--subtext1)}.skills{gap:.5rem;margin-top:1rem;display:grid}.skills div{grid-template-columns:8.5rem minmax(0,1fr);gap:.75rem;display:grid}.skills dt{color:var(--mauve);font-size:1.125rem;line-height:1.5}.skills dd{color:var(--subtext1);text-wrap:pretty;margin:0}.after{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:3rem clamp(2rem,6vw,5rem);padding-block:clamp(3rem,7vw,5rem);display:grid}.about{grid-template-columns:6rem minmax(0,1fr);align-items:start;gap:1.5rem;margin-top:1.25rem;display:grid}.about-avatar{width:6rem;height:auto;image-rendering:pixelated}.prose{color:var(--subtext1);text-wrap:pretty;gap:1rem;display:grid}.contact{color:var(--subtext0);margin-top:1.25rem}.email{font-variation-settings:"wdth" 75;color:var(--peach);overflow-wrap:anywhere;margin-top:.25rem;font-size:clamp(1.75rem,3.6vw,2.75rem);font-weight:600;font-stretch:75%;line-height:1.15;text-decoration-thickness:2px;display:block}.email-row{flex-wrap:wrap;align-items:center;gap:1rem 1.5rem;margin-top:1rem;display:flex}.elsewhere{flex-wrap:wrap;gap:1.125rem;display:flex}.elsewhere a{transition:transform 80ms steps(2,end);display:block}.elsewhere a:hover{transform:translateY(-2px)}.elsewhere img{width:2.5rem;height:2.5rem;image-rendering:pixelated;display:block}.colophon{color:var(--ink-faint);flex-wrap:wrap;justify-content:space-between;gap:.5rem 2rem;padding-block:1.5rem 2.5rem;font-size:.875rem;display:flex}@media (width<=60rem){.sheet-foot,.after{grid-template-columns:1fr}}@media (width<=44rem){.masthead nav .nav-about,.walk-toolkit-items{display:none}.walk-toolkit{max-width:none}.walk-skip{left:auto;right:var(--gutter);translate:none}.walk-intro{top:5.5rem}.walk-card,.walk-card.is-left{top:4.25rem;left:var(--gutter);right:var(--gutter);width:auto;max-height:calc(100% - 15rem);padding:1rem 1.125rem 1.125rem}.walk-card h2{font-size:1.375rem}.walk-timeline button{min-height:2.75rem;padding:.75rem .125rem .25rem;font-size:.75rem}.walk-year{display:none}.walk-timeline li:nth-last-child(2){transform:translate(-78%,-1.0625rem)}.walk-timeline li:nth-last-child(2) button:before{left:calc(78% - 4px)}.walk-timeline li:last-child button:before{right:0}:root{--mark:2.5rem}.mark img{width:1.75rem;height:1.75rem}.entry{gap:.875rem}.role+.role:before{left:calc(-.875rem - var(--mark) / 2 - 5px)}.skills div{grid-template-columns:1fr;gap:0}.entry-body h4{font-size:1.3125rem}}@media (prefers-reduced-motion:reduce){.walk-toast{animation-duration:10ms}}
