@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:400 700;font-display:swap;src:url(/fonts/ibm-plex/sans-latin-variable.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/ibm-plex/mono-latin-regular.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{color-scheme:light;--paper: #e5e8fa;--surface: #ffffff;--ink: #0a2540;--muted: #425466;--rule: #dfe1ee;--accent: #5346d7;--section-ink: #433e70;--rail: #f8f7fd;--section-rail: 14rem;--gutter: 2.25rem;--font-text: "IBM Plex Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-detail: "IBM Plex Mono", ui-monospace, "Cascadia Code", monospace;background:var(--paper);color:var(--ink);font-family:var(--font-text);font-size:16px;line-height:1.7;-webkit-font-smoothing:antialiased}*{box-sizing:border-box}body{position:relative;isolation:isolate;min-height:100svh;margin:0;padding:4.5rem 2rem;background-color:var(--paper);background-image:url(/textures/canvas.svg),linear-gradient(125deg,#dce7fc,#ece4f8 48%,#dff0eb)}body:before{content:"";position:fixed;z-index:-1;inset:0;background:url(/textures/field.svg) center / cover no-repeat;pointer-events:none}::selection{background:#e2dfff;color:var(--ink)}a{color:var(--accent);text-decoration-thickness:1px;text-underline-offset:.2em;text-decoration-color:color-mix(in srgb,currentColor 35%,transparent)}a:hover{color:var(--ink);text-decoration-color:currentColor}a:focus-visible,summary:focus-visible{outline:2px solid var(--accent);outline-offset:4px}h1,h2,h3,p,ul,dl,dd{margin:0}h1,h2,h3{line-height:1.3}.resume{max-width:66rem;margin:0 auto;border:1px solid var(--rule);border-radius:14px;background:url(/textures/paper.svg) var(--surface);box-shadow:0 1px 2px #0a254008,0 8px 24px -12px #0a254018,0 32px 80px -32px #0a25402b;overflow-wrap:anywhere}.resume-header{position:relative;isolation:isolate;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:2.5rem;padding:3.5rem var(--gutter);border-radius:14px 14px 0 0;background-color:var(--rail);background-image:url(/textures/paper.svg);overflow:hidden}.resume-header:after{content:"";position:absolute;z-index:-1;inset:0 0 0 auto;width:62%;background:url(/textures/contours.svg) right center / cover no-repeat;mask-image:linear-gradient(to right,transparent,#000 65%);pointer-events:none}h1{font-size:clamp(2.25rem,4.8vw,3.625rem);font-weight:600;line-height:1.08;letter-spacing:-.035em}.headline{margin-top:.75rem;color:var(--muted);font-size:1.0625rem}.contact{border-left:1px solid var(--rule);padding-left:1.75rem;color:var(--muted);font-family:var(--font-detail);font-size:.8125rem}.email{margin-top:.2rem}.contact-line{display:flex;align-items:center;gap:.6rem;width:fit-content}.resume-icon{flex-shrink:0}.contact-line .resume-icon{width:15px;height:15px;color:var(--muted)}.profile-links{display:flex;flex-wrap:wrap;gap:.35rem .85rem;list-style:none;padding:0;margin-top:.75rem}.profile-links a,.project-list a{display:inline-flex;align-items:center;gap:.25rem}.profile-links .resume-icon,.project-list .resume-icon{width:13px;height:13px}.resume-section{display:grid;grid-template-columns:var(--section-rail) minmax(0,1fr);border-top:1px solid var(--rule)}.resume-section>h2{display:grid;grid-template-columns:1.25rem minmax(0,1fr);align-content:start;gap:.65rem;padding:2rem 1.25rem 2rem var(--gutter);background-color:var(--rail);background-image:url(/textures/paper.svg);color:var(--section-ink);font-size:1rem;font-weight:600;line-height:1.4;letter-spacing:-.015em}.resume-section>h2 .resume-icon{width:1.25rem;height:1.25rem;margin-top:.075rem;stroke-width:1.65}.section-content{min-width:0;border-left:1px solid var(--rule);padding:2rem var(--gutter);color:var(--muted)}.summary p+p{margin-top:.8rem}.summary p,.accomplishments,.project-list p,.skills-list dd{max-width:76ch}h3{color:var(--ink);font-size:1.0625rem;font-weight:600;letter-spacing:-.015em}.entry-heading{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:.35rem 1rem}.date{color:var(--muted);font-family:var(--font-detail);font-size:.8125rem;font-variant-numeric:tabular-nums}.employer{display:flex;flex-wrap:wrap;align-items:baseline;gap:.25rem .75rem;margin-top:.5rem;font-size:.875rem}.employer strong{color:var(--ink);font-weight:600}.employer span{border-left:1px solid var(--rule);padding-left:.75rem}.accomplishments{margin-top:1.1rem;padding-left:1.1rem;list-style-type:square}.accomplishments li{padding-left:.2rem}.accomplishments li+li{margin-top:.65rem}.accomplishments li::marker{color:var(--accent);font-size:.7em}.role+.role{border-top:1px solid var(--rule);margin-top:2rem;padding-top:2rem}.project-list{list-style:none;padding:0}.project-list p{margin-top:.4rem}.project-list li+li{border-top:1px solid var(--rule);margin-top:1.25rem;padding-top:1.25rem}.skills-list>div+div{margin-top:1rem}.skills-list dt{color:var(--ink);font-size:.875rem;font-weight:600}.skills-list dd{margin-top:.25rem}.education>p{margin-top:.5rem}.education .emphasis{margin-top:.2rem;font-size:.875rem}.machine-summary{border-top:1px solid var(--rule);border-radius:0 0 14px 14px;padding-inline:var(--gutter);background:url(/textures/paper.svg) var(--rail)}.machine-summary>summary{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding-block:1rem;color:var(--muted);font-family:var(--font-detail);font-size:.8125rem;font-weight:400;list-style:none;cursor:pointer}.machine-summary>summary::-webkit-details-marker{display:none}.machine-summary>summary:hover{color:var(--accent)}.machine-summary>summary .resume-icon{width:16px;height:16px}.machine-summary[open]>summary .resume-icon{transform:rotate(90deg)}.machine-summary dl{padding-bottom:1.5rem;color:var(--muted);font-size:.8125rem}.machine-summary dl>div{display:grid;grid-template-columns:9rem minmax(0,1fr);gap:.25rem 1rem;border-top:1px solid var(--rule);padding-block:.65rem}.machine-summary dt{color:var(--section-ink);font-weight:600}@media(max-width:900px){:root{--section-rail: 12rem;--gutter: 1.5rem}body{padding:2rem 1.5rem}.resume-header{grid-template-columns:1fr;gap:1.5rem;padding-block:2.5rem}.contact{border-left:0;padding-left:0}}@media(max-width:600px){:root{--gutter: 1.25rem}body{padding:1rem .75rem}.resume-header{padding-block:2rem}.resume-header:after{width:100%;opacity:.7}h1{font-size:clamp(1.875rem,7.8vw,2.75rem)}.headline{font-size:1rem}.resume-section{grid-template-columns:1fr}.resume-section>h2{padding:1rem var(--gutter)}.machine-summary dl>div{grid-template-columns:1fr}.section-content{border-left:0;border-top:1px solid var(--rule);padding:1.5rem var(--gutter)}}@media print{:root{background:#fff;color:#000;font-size:10pt;line-height:1.4;--gutter: 0;--ink: #000000;--muted: #000000;--accent: #000000;--section-ink: #000000}body{padding:0;background:#fff}.resume{max-width:none;border:0;border-radius:0;background:#fff;box-shadow:none}body:before,.resume-header:after,.resume-icon,.machine-summary{display:none}.resume-header{display:block;padding:0 0 1rem;border-radius:0;background:none;overflow:visible}h1{font-size:24pt}.headline{margin-top:.25rem}.contact{border:0;padding:0;margin-top:.5rem}.profile-links{margin-top:.25rem}.resume-section{display:block}.resume-section>h2{display:block;padding:.75rem 0 .5rem;background:none}.section-content{padding:0 0 .75rem;border:0}.accomplishments li+li{margin-top:.3rem}.role+.role,.project-list li+li{margin-top:.75rem;padding-top:.75rem}h1,h2,h3,.entry-heading,.employer{break-after:avoid}li,.skills-list>div,.education{break-inside:avoid}}
