:root{--ink: #0a0a0a;--paper: #ffffff;--rule: #111111;--rule-muted: #9a9a9a;--mark: #c4c4c4;--wash-strong: rgba(10, 10, 10, .11);--wash-soft: rgba(10, 10, 10, .055);--grain-opacity: .16;--font-sans: "Inter", "Helvetica Neue", Helvetica, Arial, sans-serif;--font-script: "Retro Floral", "Helvetica Neue", Helvetica, Arial, sans-serif;--content-max: 840px;--page-pad: 32px;--rail: 173px;--ease-out: cubic-bezier(.16, 1, .3, 1)}:root[data-theme=dark]{--ink: #f2f2f2;--paper: #0a0a0a;--rule: #ededed;--rule-muted: #8f8f8f;--mark: #4f4f4f;--wash-strong: rgba(242, 242, 242, .13);--wash-soft: rgba(242, 242, 242, .065);--grain-opacity: .2;color-scheme:dark}@font-face{font-family:Retro Floral;src:url(../fonts/retro-floral.regular.ttf) format("truetype");font-weight:400;font-style:normal;font-display:swap}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;text-size-adjust:100%}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--font-sans);font-size:15px;line-height:1.6;font-synthesis-weight:none;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}h1,h2,h3,p,ul{margin:0}ul{padding:0;list-style:none}a{color:inherit;text-decoration:none;background-image:linear-gradient(currentColor,currentColor);background-repeat:no-repeat;background-position:0 100%;background-size:0% 1px;transition:background-size .24s cubic-bezier(.22,.61,.36,1)}a:hover,a:focus-visible{background-size:100% 1px}:focus-visible{outline:2px solid var(--ink);outline-offset:4px}.skip-link{position:absolute;left:-9999px;top:0;z-index:10;padding:8px 14px;background:var(--paper);border:1px solid var(--ink);font-size:13px}.skip-link:focus{left:12px;top:12px}::selection{background:var(--ink);color:var(--paper)}.backdrop{position:fixed;inset:0;z-index:0;overflow:hidden;pointer-events:none;background:var(--paper)}.backdrop__wash{position:absolute;inset:-12%;background:radial-gradient(ellipse at 24% 16%,var(--wash-strong),transparent 58%),radial-gradient(ellipse at 72% 48%,var(--wash-soft),transparent 52%);opacity:.7;animation:backdrop-wash-one 16s ease-in-out infinite alternate;will-change:transform,opacity}.backdrop__wash--two{background:radial-gradient(ellipse at 78% 28%,var(--wash-soft),transparent 48%),radial-gradient(ellipse at 22% 76%,var(--wash-strong),transparent 56%);animation:backdrop-wash-two 24s ease-in-out infinite alternate}.backdrop__grain{position:absolute;inset:0;background-repeat:repeat;opacity:var(--grain-opacity);mix-blend-mode:multiply;animation:grain-breathe 8s ease-in-out infinite alternate;will-change:opacity}:root[data-theme=dark] .backdrop__grain{mix-blend-mode:screen}html[data-motion=off] .backdrop__wash,html[data-motion=off] .backdrop__grain,html.no-bg-motion .backdrop__wash,html.no-bg-motion .backdrop__grain{animation:none}@keyframes backdrop-wash-one{0%{transform:translate3d(-6%,-3%,0) scale(1.02) rotate(-.6deg);opacity:.6}to{transform:translate3d(6%,3.5%,0) scale(1.12) rotate(.6deg);opacity:1}}@keyframes backdrop-wash-two{0%{transform:translate3d(5%,3%,0) scale(1.08) rotate(.5deg);opacity:.66}to{transform:translate3d(-5%,-3%,0) scale(1) rotate(-.5deg);opacity:1}}@keyframes grain-breathe{0%{opacity:calc(var(--grain-opacity) * .6)}to{opacity:var(--grain-opacity)}}.utility{position:absolute;top:clamp(12px,2vw,22px);right:var(--page-pad);z-index:3;display:flex;align-items:center;gap:16px}.utility__button{appearance:none;padding:0 0 2px;border:0;background-color:transparent;background-image:linear-gradient(currentColor,currentColor);background-repeat:no-repeat;background-position:0 100%;background-size:0% 1px;color:var(--ink);font-family:var(--font-sans);font-size:10px;font-weight:600;line-height:1.2;letter-spacing:.14em;text-transform:uppercase;cursor:pointer;opacity:.62;transition:opacity .18s ease,background-size .24s cubic-bezier(.22,.61,.36,1)}.utility__button:hover,.utility__button:focus-visible{opacity:1;background-size:100% 1px}.page{position:relative;z-index:1;width:100%;max-width:calc(var(--content-max) + (var(--page-pad) * 2));margin:0 auto;padding:clamp(48px,6.5vw,80px) var(--page-pad) 0}.masthead__grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(288px,331px);gap:24px;align-items:start}.masthead__left{min-width:0}.masthead__identity-row{display:grid;grid-template-columns:80px minmax(0,1fr);column-gap:24px;align-items:start}.masthead__mark{display:block;width:80px;height:80px;color:var(--mark);font-family:var(--font-script);font-size:14rem;font-weight:400;line-height:.62;letter-spacing:-.04em;text-align:left;text-indent:0;text-transform:uppercase;white-space:nowrap;transform:rotate(-8deg) translateY(-4px);transform-origin:0 50%;pointer-events:none;-webkit-user-select:none;user-select:none;z-index:0}.masthead__identity{position:relative;z-index:1;text-align:right}.masthead__name{font-size:clamp(2.8rem,5vw,3.5rem);font-weight:800;line-height:.9;letter-spacing:.005em;text-transform:uppercase}.masthead__name span{display:block}.masthead__title{margin-top:13px;font-size:12.5px;font-weight:500;line-height:1.4;letter-spacing:.14em;text-transform:uppercase}.masthead__divider{height:0;margin:28px 0 0;border:0;border-top:4px solid var(--ink);background:transparent}.masthead__summary{padding-top:4px;font-size:13px;line-height:1.55;letter-spacing:.005em}.contact{display:flex;flex-wrap:wrap;align-items:center;margin-top:14px;font-size:11.5px;letter-spacing:.02em}.contact__item{display:inline-flex;align-items:center}.contact__item+.contact__item:before{content:"";width:0;height:12px;margin:0 12px;border-left:1px solid var(--ink)}.main{margin-top:clamp(48px,5.4vw,64px)}.section{margin-top:56px}.section:first-child{margin-top:0}.section__heading{display:grid;grid-template-columns:var(--rail) minmax(0,1fr);align-items:center}.section__label{font-size:21px;font-weight:400;line-height:1.15;letter-spacing:.015em;text-transform:uppercase}.section__rule{display:block;width:100%;height:0;border-top:1px solid var(--rule);background:transparent;transform:translateY(.5px)}.section__body{margin-top:18px;margin-left:var(--rail)}.skills{display:grid;gap:20px}.skills__label{margin-bottom:7px;font-size:9.5px;font-weight:600;line-height:1.4;letter-spacing:.14em;text-transform:uppercase}.skills__list{display:flex;flex-wrap:wrap;gap:7px}.skills__tag{display:inline-flex;align-items:center;padding:5px 12px 6px;border:1px solid var(--rule);border-radius:999px;font-size:12.5px;line-height:1.3;letter-spacing:.01em;overflow-wrap:anywhere}@media(hover:hover)and (pointer:fine){.skills__tag{transition:color .18s ease,background-color .18s ease,border-color .18s ease}.skills__tag:hover{background:var(--ink);border-color:var(--ink);color:var(--paper)}}.experience{display:grid;gap:34px}.entry{break-inside:avoid}.entry__meta{display:flex;flex-wrap:wrap;align-items:baseline;font-size:15px;line-height:1.5}.entry__company{font-weight:700}.entry__separator{margin:0 8px;color:var(--rule-muted);font-weight:400}.entry__period{font-style:italic;font-weight:400}.entry__role{margin-top:2px;font-size:15px;font-weight:700;line-height:1.5;letter-spacing:.005em}.entry__achievements{display:grid;gap:6px;margin-top:9px;padding-left:17px;list-style:disc}.entry__achievement{font-size:13.5px;line-height:1.55}.entry__achievement::marker{font-size:.8em}.projects{display:grid;gap:28px}.project__name{font-size:15px;font-weight:700;line-height:1.45;letter-spacing:.005em}.project__description{margin-top:3px;font-size:13.5px;line-height:1.55}.project__meta{display:grid;grid-template-columns:94px minmax(0,1fr);gap:8px;margin-top:6px;font-size:11.5px;line-height:1.5}.project__meta-label{padding-top:1px;font-size:8.5px;font-weight:600;line-height:1.7;letter-spacing:.13em;text-transform:uppercase}.education{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:28px}.education__school{font-size:15px;font-weight:700;line-height:1.35;letter-spacing:.005em}.education__years{margin-top:5px;font-size:12px;font-style:italic;line-height:1.4}.education__degree{margin-top:3px;font-size:13.5px;line-height:1.5}.colophon{margin-top:clamp(64px,8vw,96px);border-top:1px solid var(--rule)}.colophon__line{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:center;padding:18px 0 clamp(32px,4.5vw,48px);font-size:11.5px;letter-spacing:.05em}.colophon__name{letter-spacing:.1em;text-transform:uppercase}.colophon__dot{margin:0 10px;color:var(--rule-muted)}.has-motion .masthead__mark,.has-motion .masthead__name span,.has-motion .masthead__title,.has-motion .masthead__summary,.has-motion .contact,.has-motion .contact__item{opacity:0}.has-motion .masthead__name span{transform:translateY(22px)}.has-motion .masthead__title,.has-motion .masthead__summary{transform:translateY(12px)}.has-motion .masthead__divider{transform:scaleX(0);transform-origin:left center}.has-motion .contact{transform:translateY(8px)}.has-motion .contact__item{transform:translateY(6px)}.has-motion.is-loaded .masthead__mark{opacity:1;transition:opacity 1.1s ease 80ms}.has-motion.is-loaded .masthead__name span{opacity:1;transform:none;transition:opacity .8s ease,transform .95s var(--ease-out)}.has-motion.is-loaded .masthead__name span:nth-child(1){transition-delay:.12s}.has-motion.is-loaded .masthead__name span:nth-child(2){transition-delay:.2s}.has-motion.is-loaded .masthead__title{opacity:1;transform:none;transition:opacity .8s ease .29s,transform .9s var(--ease-out) .29s}.has-motion.is-loaded .masthead__summary{opacity:1;transform:none;transition:opacity .9s ease .26s,transform 1s var(--ease-out) .26s}.has-motion.is-loaded .masthead__divider{transform:scaleX(1);transition:transform 1.1s var(--ease-out) .34s}.has-motion.is-loaded .contact{opacity:1;transform:none;transition:opacity .8s ease .43s,transform .9s var(--ease-out) .43s}.has-motion.is-loaded .contact__item{opacity:1;transform:none;transition:opacity .6s ease,transform .7s var(--ease-out)}.has-motion.is-loaded .contact__item:nth-child(1){transition-delay:.43s}.has-motion.is-loaded .contact__item:nth-child(2){transition-delay:485ms}.has-motion.is-loaded .contact__item:nth-child(3){transition-delay:.54s}.has-motion.is-loaded .contact__item:nth-child(4){transition-delay:595ms}.has-motion.is-loaded .contact__item:nth-child(5){transition-delay:.65s}.has-motion [data-reveal]{opacity:0;transform:translateY(15px)}.has-motion [data-reveal].is-revealed{opacity:1;transform:none;transition:opacity .65s ease var(--reveal-delay, 0ms),transform .8s var(--ease-out) var(--reveal-delay, 0ms)}.has-motion .section__heading .section__rule{transform:scaleX(0) translateY(.5px);transform-origin:left center}.has-motion .section__heading.is-revealed .section__rule{transform:scaleX(1) translateY(.5px);transition:transform .9s var(--ease-out) .12s}.has-motion .skills__group .skills__tag{opacity:0}.has-motion .skills__group.is-revealed .skills__tag{animation:tag-in .5s var(--ease-out) both;animation-delay:calc(var(--stagger, 0) * 16ms + .14s)}@keyframes tag-in{0%{opacity:0;transform:translateY(7px)}to{opacity:1;transform:none}}@media(max-width:1000px){.masthead__grid{grid-template-columns:minmax(0,1fr);gap:24px}.masthead__identity-row{display:flex;flex-direction:column;align-items:center;gap:16px}.masthead__identity{text-align:center}.masthead__name{font-size:clamp(2.5rem,10vw,3.2rem)}.masthead__mark{width:auto;height:auto;margin-bottom:-6px;font-size:clamp(4.5rem,12vw,6rem);line-height:.62;letter-spacing:-.04em;text-align:center;transform:rotate(-8deg);transform-origin:50% 50%}.masthead__title{margin-top:11px}.masthead__summary{max-width:34em;margin:0 auto;padding-top:0;text-align:center}.contact{justify-content:center}}@media(max-width:640px){:root{--page-pad: 20px}.page{padding-top:40px}.masthead__name{font-size:clamp(2.25rem,10.5vw,2.8rem)}.masthead__title{font-size:11px;letter-spacing:.14em}.masthead__summary{font-size:12.5px}.masthead__divider{margin-top:24px;border-top-width:2px}.contact{gap:6px 16px;font-size:11.5px}.contact__item+.contact__item:before{display:none}.main,.section{margin-top:44px}.section__heading{display:block}.section__label{font-size:16px}.section__rule{margin-top:10px}.section__body{margin-top:18px;margin-left:0}.skills{gap:18px}.skills__tag{padding:4px 10px 5px;font-size:11px}.skills__label{margin-bottom:6px;font-size:9px}.experience{gap:30px}.entry__achievement{font-size:13px}.projects{gap:24px}.project__meta{grid-template-columns:minmax(0,1fr);gap:2px;margin-top:7px;font-size:11px}.project__meta-label{padding-top:0}.education{grid-template-columns:minmax(0,1fr);gap:20px}.colophon__line{font-size:11px}.colophon__dot{margin:0 6px}}@media(prefers-reduced-motion:reduce){a,.utility__button{transition:none}html:not([data-motion=on]) .backdrop__wash,html:not([data-motion=on]) .backdrop__grain{animation:none}.has-motion .masthead__name span,.has-motion .masthead__title,.has-motion .masthead__summary,.has-motion .masthead__divider,.has-motion .contact,.has-motion .contact__item,.has-motion [data-reveal],.has-motion .skills__tag{opacity:1;transform:none;animation:none;transition:none}.has-motion .masthead__mark{opacity:1;transition:none}}@page{size:auto;margin:13mm 15mm}@media print{:root,:root[data-theme=dark]{--ink: #0a0a0a;--paper: #ffffff;--rule: #111111;--rule-muted: #9a9a9a;--mark: #9c9c9c;color-scheme:light}html,body{background:var(--paper);color:var(--ink)}.backdrop,.utility{display:none!important}.theme-toggle{display:none}body{font-size:10pt;line-height:1.45}a{color:var(--ink);background-image:none}.skip-link{display:none}.page{max-width:none;padding:0}.has-motion .masthead__mark{opacity:1!important;transition:none!important}.has-motion .masthead__name span,.has-motion .masthead__title,.has-motion .masthead__summary,.has-motion .masthead__divider,.has-motion .contact,.has-motion .contact__item,.has-motion [data-reveal],.has-motion .skills__tag{opacity:1!important;transform:none!important;animation:none!important;transition:none!important}.has-motion .section__heading .section__rule{transform:translateY(.5px)}.masthead{break-inside:avoid;break-after:avoid}.masthead__grid{grid-template-columns:minmax(0,1fr) 62mm;gap:6mm}.masthead__identity-row{display:grid;grid-template-columns:13mm minmax(0,1fr);column-gap:5mm;align-items:start}.masthead__identity{text-align:right}.masthead__mark{width:13mm;height:auto;color:#9c9c9c;font-family:var(--font-script);font-size:30pt;line-height:.62;letter-spacing:-.04em;text-transform:uppercase;transform:rotate(-9deg)}.masthead__name{font-size:24pt;line-height:.9;letter-spacing:.005em}.masthead__title{margin-top:2mm;font-size:7.5pt;letter-spacing:.14em}.masthead__divider{margin-top:3.5mm;border-top-width:1.5pt;border-top-color:var(--ink);background:transparent}.masthead__summary{max-width:none;margin:0;padding-top:1mm;font-size:7.6pt;line-height:1.4;text-align:left}.contact{justify-content:flex-start;margin-top:2.2mm;font-size:7.2pt}.contact__item+.contact__item:before{height:2.4mm;margin:0 3mm;border-left-width:.5pt;border-left-color:var(--ink)}.main{margin-top:6mm}.section{margin-top:5mm}.section__heading{grid-template-columns:36mm minmax(0,1fr);break-after:avoid;page-break-after:avoid}.section__label{font-size:9pt}.section__body{margin-top:2.5mm;margin-left:36mm}.skills{gap:2.5mm}.skills__label{margin-bottom:.8mm;font-size:6pt}.skills__list{gap:1.2mm}.skills__tag{padding:.8pt 4pt;border-color:var(--ink);font-size:7.2pt}.skills__group{break-inside:avoid;page-break-inside:avoid}.experience{gap:4mm}.entry{break-inside:avoid;page-break-inside:avoid}.entry__meta,.entry__role{font-size:9pt}.entry__achievements{gap:.8mm;margin-top:1.4mm}.entry__achievement{font-size:8.4pt;line-height:1.38}.projects{gap:4mm}.project{break-inside:avoid;page-break-inside:avoid}.project__name{font-size:9pt}.project__description{margin-top:.7mm;font-size:8.4pt;line-height:1.38}.project__meta{grid-template-columns:23mm minmax(0,1fr);gap:2mm;margin-top:1mm;font-size:7.6pt;line-height:1.36}.project__meta-label{padding-top:.4mm;font-size:6pt}.education{grid-template-columns:repeat(2,minmax(0,1fr));gap:6mm}.education__item{break-inside:avoid;page-break-inside:avoid}.education__school{font-size:9pt}.education__years{margin-top:.7mm;font-size:7.2pt}.education__degree{margin-top:.4mm;font-size:8pt}.colophon{margin-top:6mm;border-top-color:var(--ink);break-inside:avoid}.colophon__line{padding:2.2mm 0 0;font-size:7.2pt}}
