@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/resume/_astro/ibm-plex-mono-latin-400-normal.DMJ8VG8y.woff2)format("woff2"),url(/resume/_astro/ibm-plex-mono-latin-400-normal.CvHOgSBP.woff)format("woff")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/resume/_astro/ibm-plex-mono-latin-500-normal.DSY6xOcd.woff2)format("woff2"),url(/resume/_astro/ibm-plex-mono-latin-500-normal.CB9ihrfo.woff)format("woff")}:root{color-scheme:light;--paper:#f3f2ec;--ink:#111;--muted:#5d5d58;--line:#dddcd5;--accent:#111;--accent-wash:#e8e7df;--sans:"IBM Plex Mono", ui-monospace, SFMono-Regular, Consolas, "Liberation Mono", monospace;--surface:#f3f2ec;--surface-muted:#e8e7df;--hero-start:#f3f2ec;--hero-end:#f3f2ec;--ring:#dddcd5;--ring-wash:transparent;--control-border:#777770;--control-surface:transparent;--hover-border:#777770;--dot:#777770;--selection:#dddcd5;--underline:#777770;--hero-shadow:none;--card-shadow:none;--card-hover-shadow:none}:root[data-theme=dark]{color-scheme:dark;--paper:#20201e;--ink:#eeede6;--muted:#b6b5ad;--line:#45453f;--accent:#eeede6;--accent-wash:#32322d;--surface:#20201e;--surface-muted:#32322d;--hero-start:#20201e;--hero-end:#20201e;--ring:#45453f;--ring-wash:transparent;--control-border:#92928a;--control-surface:transparent;--hover-border:#92928a;--dot:#92928a;--selection:#45453f;--underline:#92928a;--hero-shadow:none;--card-shadow:none;--card-hover-shadow:none}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){color-scheme:dark;--paper:#20201e;--ink:#eeede6;--muted:#b6b5ad;--line:#45453f;--accent:#eeede6;--accent-wash:#32322d;--surface:#20201e;--surface-muted:#32322d;--hero-start:#20201e;--hero-end:#20201e;--ring:#45453f;--ring-wash:transparent;--control-border:#92928a;--control-surface:transparent;--hover-border:#92928a;--dot:#92928a;--selection:#45453f;--underline:#92928a;--hero-shadow:none;--card-shadow:none;--card-hover-shadow:none}}*{box-sizing:border-box}[hidden]{display:none!important}html{font-synthesis:none;scroll-behavior:smooth;scroll-padding-top:2rem}body{background:var(--paper);color:var(--ink);font:400 13px/1.8 var(--sans);margin:0}::selection{background:var(--selection)}a{color:inherit;text-underline-offset:.3em;text-decoration-thickness:1px}a:hover{color:var(--accent)}a,button{transition:color .14s,background-color .14s}button{font:inherit}:focus-visible{outline:2px solid var(--accent);outline-offset:5px}img,svg{max-width:100%}figure,p,h1,h2,h3,h4,ul,dl,dd{margin:0}h1,h2,h3,h4{overflow-wrap:anywhere;font-weight:500;line-height:1.4}.shell{width:min(1000px,100% - 96px);margin-inline:auto}.skip-link{background:var(--ink);color:var(--paper);z-index:10;padding:.75rem 1rem;position:fixed;top:-6rem;left:1rem}.skip-link:focus{top:1rem}.sample-banner{text-align:center;border-bottom:1px solid var(--line);color:var(--muted);padding:7px 24px;font-size:10px}.sample-dot{background:var(--accent);vertical-align:middle;width:4px;height:4px;margin-right:6px;display:inline-block}.hero{background:0 0;margin:0;padding:36px 0;position:relative}.hero:after{content:"";border-top:1px solid var(--dot);border-right:1px solid var(--dot);pointer-events:none;width:10px;height:10px;position:absolute;top:36px;right:0}.hero h1{font:400 52px/1.15 var(--sans);letter-spacing:-.065em;text-wrap:balance;max-width:850px;padding-right:20px}.profile-line{color:var(--muted);margin-top:16px;font-size:12px}.profile-line span{padding-inline:5px}.intro{text-wrap:pretty;max-width:650px;margin-top:26px;font-size:16px;line-height:1.85}.hero-actions{flex-wrap:wrap;align-items:center;gap:24px;margin-top:28px;display:flex}.hero-actions .text-link{border:0;border-bottom:1px solid var(--control-border);background:0 0;padding:8px 0;text-decoration:none}.hero-actions .text-link:hover{color:var(--muted);border-color:var(--ink)}.text-link{color:var(--accent);font-size:12px}.social-links{color:var(--muted);flex-wrap:wrap;gap:22px;margin-top:22px;font-size:11px;display:flex}.social-links a{align-items:center;gap:6px;text-decoration:none;display:inline-flex}.social-icon{width:14px;height:14px;color:var(--muted);flex-shrink:0;display:block}.social-links a .social-icon{transition:transform .18s,color .18s}.social-links a:hover .social-icon{color:var(--accent);transform:translateY(-1px)}.other-work h3 a,.work-copy>.text-link,.contact-end a{transition:color .18s,text-decoration-color .18s}.other-work h3 a:hover,.selected-work h3 a:hover{text-decoration:underline;text-decoration-color:var(--underline)}.button{border:0;border-bottom:1px solid var(--control-border);color:var(--accent);align-items:center;gap:15px;padding:8px 0;font-size:12px;text-decoration:none;display:inline-flex}.button:hover{background:var(--accent-wash)}.eyebrow,.meta{font:11px/1.7 var(--sans);color:var(--muted)}.resume-section{border-top:1px solid var(--line);padding:36px 0}.portfolio-section{grid-template-columns:160px minmax(0,1fr);gap:40px;display:grid}.section-rail h2{color:var(--muted);margin-top:10px;font-size:11px;font-weight:400;line-height:1.7}.portfolio-section .section-rail h2:before{content:none}.section-index{color:var(--muted);font-variant-numeric:tabular-nums;font-size:10px;display:block}.section-content{min-width:0}.experience+.experience{border-top:1px solid var(--line);margin-top:28px;padding-top:28px}.company-heading{justify-content:space-between;align-items:baseline;gap:15px;margin-bottom:18px;display:flex}.company-heading h3{letter-spacing:-.04em;font-size:19px;font-weight:400}.role{border-left:1px solid var(--line);padding-left:17px;position:relative}.role:before{content:"";background:var(--dot);width:5px;height:5px;box-shadow:0 0 0 3px var(--paper);position:absolute;top:8px;left:-3px}.role+.role{margin-top:20px}.role-heading{justify-content:space-between;align-items:baseline;gap:15px;display:flex}.role-heading h4{letter-spacing:-.02em;font-size:14px;font-weight:500}.role-heading .meta{flex-shrink:0;font-size:10px}.role>p{color:var(--muted);margin-top:9px;font-size:13px}.role ul{margin-top:10px;padding-left:16px;font-size:13px}.role li+li{margin-top:6px}.role li::marker{color:var(--muted)}.selected-work{background:0 0;border:0;padding:0 0 30px;position:relative}.selected-work:hover,.selected-work:focus-within{background:0 0}.selected-work+.selected-work{border-top:1px solid var(--line);margin-top:0;padding-top:30px}.work-meta{justify-content:space-between;align-items:baseline;gap:15px;display:flex}.selected-work h3{letter-spacing:-.04em;margin-top:12px;font-size:23px}.selected-work h3 a,.other-work h3 a{text-decoration:none}.selected-work h3 span{color:var(--muted);font-size:13px}.work-copy>p{color:var(--muted);margin-top:9px;font-size:13px}.tags{color:var(--muted);font:10px/1.7 var(--sans);flex-wrap:wrap;gap:8px 15px;margin-top:12px;padding:0;list-style:none;display:flex}.work-copy>.text-link{margin-top:12px;display:inline-block}.selected-work .project-screenshot{margin-top:18px}.selected-work .project-screenshot img{border:1px solid var(--line)}.selected-work .pipeline{border-bottom:0;margin-top:18px;padding-bottom:0}.other-work{justify-content:space-between;gap:24px;display:flex}.other-work+.other-work{border-top:1px solid var(--line);margin-top:20px;padding-top:20px}.other-work h3{letter-spacing:-.02em;font-size:16px}.other-work h3 span{color:var(--muted);font-size:12px}.other-work p{color:var(--muted);margin-top:7px;font-size:13px}.expertise{font-size:13px}.expertise>div{grid-template-columns:145px minmax(0,1fr);align-items:baseline;gap:20px;display:grid}.expertise>div+div{margin-top:13px}.expertise dt{color:var(--ink);font-weight:500}.expertise dd{color:var(--muted);font-size:12px}.skill-trigger{font:inherit;color:inherit;cursor:pointer;text-decoration:underline dotted var(--underline);text-underline-offset:4px;background:0 0;border:0;border-radius:2px;padding:1px 0;transition:color .16s,background-color .16s}.skill-trigger:hover,.skill-trigger[aria-expanded=true]{color:var(--accent);background:var(--accent-wash);text-decoration-style:solid}.skill-hint{color:var(--muted);margin-top:12px;font-size:10px}.skill-evidence{border:0;border-top:1px solid var(--line);background:0 0;margin-top:18px;padding:18px 0 0}.skill-evidence summary{cursor:pointer;color:var(--accent);font-size:12px}.evidence-heading{justify-content:space-between;align-items:baseline;gap:16px;display:flex}.evidence-heading h3{color:var(--muted);font-size:12px;font-weight:400}.evidence-heading h3 span{color:var(--ink);font-weight:500}.evidence-close{color:var(--muted);cursor:pointer;background:0 0;border:0;padding:3px;font-size:11px}.evidence-close:hover{color:var(--accent)}.skill-evidence ul{margin-top:12px;padding:0;list-style:none}.skill-evidence li+li{border-top:1px solid var(--line);margin-top:12px;padding-top:12px}.evidence-link{font-size:13px;font-weight:500;text-decoration:none}.evidence-link:hover{text-decoration:underline}.evidence-link span{color:var(--muted);font-size:11px}.evidence-excerpt{color:var(--muted);margin-top:6px;font-size:12px}.role li{scroll-margin-block:25px}.role li:target{background:var(--accent-wash);box-shadow:0 0 0 5px var(--accent-wash);border-radius:2px}.visually-hidden{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.principles article+article{margin-top:16px}.principles h3{font-size:14px}.principles p{color:var(--muted);margin-top:6px;font-size:13px}.education{grid-template-columns:1fr auto;gap:5px 20px;display:grid}.education h3{font-size:14px}.education p{color:var(--muted);grid-column:1;font-size:13px}.education p.education-honors{font-size:12px}.education .meta{grid-area:1/2}.education+.education{margin-top:20px}.education-highlights{color:var(--muted);grid-column:1/-1;margin-top:8px;padding-left:18px;font-size:13px}.education-highlights li+li{margin-top:8px}.certification h3{font-size:14px}.certification p{color:var(--muted);margin-top:5px;font-size:13px}.certification .text-link{align-items:center;gap:8px;min-height:44px;margin-top:8px;padding-block:8px;display:inline-flex}.certification+.certification{margin-top:20px}.contact-end{border-top:1px solid var(--line);grid-template-columns:160px minmax(0,1fr);gap:40px;padding:32px 0 44px;display:grid}.contact-end p{color:var(--muted);font-size:13px}.contact-end a{color:var(--accent);overflow-wrap:anywhere;font-size:13px}.site-footer{border-top:1px solid var(--line);color:var(--muted);justify-content:space-between;gap:20px;padding:20px 0 30px;font-size:10px;display:flex}.site-footer a{text-decoration:none}.showcase{padding-bottom:45px}.showcase-intro{padding:56px 0 40px}.showcase-intro>.eyebrow{margin-top:35px}.showcase h1,.not-found h1{font:400 clamp(28px, 4vw, 44px)/1.3 var(--sans);letter-spacing:-.055em;margin:18px 0}.showcase-intro .intro{max-width:650px}.showcase-links{flex-wrap:wrap;align-items:center;gap:24px;margin-top:25px;display:flex}.pipeline{border-block:1px solid var(--line);margin-top:24px;padding:22px 0}.pipeline svg{width:100%;height:auto;color:var(--accent);margin-top:16px;display:block}.pipeline svg.pipeline-tall{display:none}.diagram-number{font:10px var(--sans);fill:var(--muted)}.diagram-label{font:13px var(--sans);fill:var(--ink)}.pipeline figcaption{color:var(--muted);max-width:550px;margin-top:12px;font-size:11px}.project-screenshot{margin-top:25px}.project-screenshot img{width:100%;height:auto;display:block}.project-screenshot figcaption{color:var(--muted);margin-top:10px;font-size:11px}.case-sections .resume-section{grid-template-columns:150px minmax(0,1fr);gap:36px;display:grid}.case-sections .section-number{display:none}.case-sections .section-content p{color:var(--muted);font-size:14px}.not-found{max-width:650px;padding:65px 0 100px}.not-found p{margin-bottom:25px}@media (width>=701px) and (width<=1100px){.hero h1{font-size:44px}}@media (width<=700px){.shell{width:calc(100% - 40px)}.sample-banner{padding-inline:14px;font-size:9px}.hero{margin:0;padding:28px 0}.hero h1{font-size:32px}.hero:after{top:28px}.section-rail{align-items:baseline;gap:12px;display:flex}.section-rail h2{margin-top:0}.profile-line{font-size:12px}.intro{font-size:16px}.portfolio-section,.contact-end,.case-sections .resume-section{grid-template-columns:1fr;gap:14px}.resume-section{padding-block:22px}.section-rail h2{font-size:12px}.role-heading{flex-direction:column;gap:4px}.company-heading h3{font-size:18px}.expertise>div{grid-template-columns:105px minmax(0,1fr);gap:15px}.contact-end{gap:10px;padding-block:22px 28px}.pipeline svg.pipeline-wide{display:none}.pipeline svg.pipeline-tall{max-width:300px;margin:18px auto;display:block}}@media (width<=600px){.expertise>div{grid-template-columns:minmax(0,1fr);gap:4px}.expertise>div+div{margin-top:18px}.expertise dd,.certification .text-link{font-size:13px}.certification+.certification{margin-top:28px}.profile-line,.social-links,.hero-actions .text-link,.role-heading .meta{font-size:12px}}.print-only{display:none}.document-controls{justify-content:space-between;gap:20px;max-width:790px;margin:28px auto;display:flex}.document-controls>div{align-items:center;gap:18px;font-size:12px;display:flex}.document-controls button{border:1px solid var(--line);color:var(--ink);cursor:pointer;background:0 0;border-radius:2px;padding:5px 13px}.resume-document{color-scheme:light;color:#111;background:#fff;max-width:790px;margin:0 auto 48px;padding:52px 60px;font:11pt/1.4 Arial,sans-serif;box-shadow:0 2px 16px #242a2808}.resume-document h1{letter-spacing:0;margin-bottom:6px;font:700 22pt/1.1 Arial,sans-serif}.document-title{margin-bottom:5px;font-size:12pt}.document-contact{overflow-wrap:anywhere;font-size:9pt}.document-summary{margin-top:14px}.document-sample{margin-bottom:15px;font-size:8pt;font-weight:700}.document-section{margin-top:18px}.document-section h2{break-after:avoid;margin-bottom:7px;font:700 12pt/1.3 Arial,sans-serif}.document-section p{orphans:2;widows:2;margin-top:4px}.document-section p.document-strong{break-after:avoid;margin-top:9px;font-weight:700}.document-bullet{text-indent:-12px;padding-left:12px}@media (width<=700px){.document-controls{flex-wrap:wrap}.resume-document{padding:28px 20px;font-size:10pt}.resume-document h1{font-size:20pt}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition:none!important;animation:none!important}}@page{size:A4;margin:16mm}@media print{*,:before,:after{transition:none!important;animation:none!important}html{color-scheme:light!important}html,body{color:#000;background:#fff}.shell{width:auto;margin:0}.site-header,.site-footer,.sample-banner,.skip-link,.document-controls,.portfolio-main>:not(.print-only){display:none!important}.print-only{display:block}.resume-document{max-width:none;box-shadow:none;margin:0;padding:0;font-size:10.5pt}.resume-document a{color:#000;text-decoration:none}.document-section{margin-top:13px}.resume-section{break-inside:avoid}}html{scrollbar-gutter:stable}.header-bar,.site-header{border-bottom:1px solid var(--rule,var(--line));flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 16px;padding:18px 0;display:flex}.site-home{letter-spacing:-.02em;min-height:44px;color:var(--ink);align-items:center;font-size:15px;font-weight:500;text-decoration:none;display:inline-flex}.header-actions{align-items:center;gap:20px;max-width:100%;margin-left:auto;display:flex}.header-nav{min-width:0;color:var(--secondary,var(--muted));flex-wrap:wrap;align-items:center;gap:4px 25px;font-size:12px;display:flex}.header-nav a{white-space:nowrap;align-items:center;min-height:44px;text-decoration:none;display:inline-flex;position:relative}.header-nav a:after{content:"";background:var(--ink);transform-origin:0;width:100%;height:1px;transition:transform .18s;position:absolute;bottom:6px;left:0;transform:scaleX(0)}.header-nav a:hover:after,.header-nav a:focus-visible:after{transform:scaleX(1)}.theme-toggle{width:60px;height:44px;color:var(--secondary,var(--muted));cursor:pointer;background:0 0;border:0;flex-shrink:0;justify-content:space-between;align-items:center;padding:7px;display:inline-flex;position:relative}.theme-track{border:1px solid var(--rule,var(--line));background:var(--hover,var(--surface-muted));border-radius:2px;transition:border-color .18s;position:absolute;inset:6px 0}.theme-track:before{content:"";background:var(--paper);width:24px;height:24px;transition:transform .2s;position:absolute;top:3px;left:3px}.theme-toggle:hover .theme-track{border-color:var(--registration,var(--hover-border))}.theme-toggle[aria-checked=true] .theme-track:before{transform:translate(28px)}.theme-icon{pointer-events:none;width:16px;height:16px;position:relative}.theme-sun,.theme-toggle[aria-checked=true] .theme-moon{color:var(--ink)}.theme-toggle[aria-checked=true] .theme-sun{color:var(--secondary,var(--muted))}@media (width<=700px){.header-actions{gap:12px}.header-nav{column-gap:20px}}@media (width<=600px){.header-bar,.site-header{grid-template-columns:minmax(0,1fr) 60px;align-items:center;gap:4px 16px;padding:12px 0;display:grid}.site-home{grid-area:1/1;width:fit-content}.header-actions{display:contents}.theme-toggle{grid-area:1/2}.header-nav{grid-area:2/1/auto/-1;font-size:13px}}@media (prefers-reduced-motion:no-preference){@view-transition{navigation:auto}.header-bar,.site-header{view-transition-name:site-header}.header-identity h1,.hero h1{view-transition-name:site-name}::view-transition-group(*){animation-duration:.32s;animation-timing-function:cubic-bezier(.22,1,.36,1)}::view-transition-old(root){animation:.18s both site-page-out}::view-transition-new(root){animation:.32s cubic-bezier(.22,1,.36,1) both site-page-in}}@keyframes site-page-out{to{opacity:0}}@keyframes site-page-in{0%{opacity:0}to{opacity:1}}@media (prefers-reduced-motion:reduce){@view-transition{navigation:none}}
