:root{--paper:#0a0e17;--surface:#10172a;--surface-2:#172036;--ink:#e9ecf3;--slate:#8e98ad;--rule:#212a3e;--cobalt:#8095ff;--blue:#3347f0;--amber:#ffc24b;--hero-ink:#f4f6fb;--hero-grid:#8095ff12;--on-light-button:#0a0e17;--font-display:"Bricolage Grotesque", "Arial Narrow", sans-serif;--font-body:"IBM Plex Sans", system-ui, sans-serif;--step--1:.875rem;--step-0:1.0625rem;--step-1:1.3125rem;--step-2:1.75rem;--gutter:clamp(1rem, 4vw, 3rem);--header-h:4rem;--radius-card:16px;--radius-media:10px;interpolate-size:allow-keywords;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:var(--header-h);-webkit-text-size-adjust:100%}body{background:var(--paper);color:var(--ink);font-family:var(--font-body);font-size:var(--step-0);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0;line-height:1.6}h1,h2,h3,p,ul,ol,figure{margin:0}ul,ol{padding:0;list-style:none}img{max-width:100%;display:block}a{color:inherit;text-underline-offset:.2em;text-decoration-thickness:1px}button{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--cobalt);outline-offset:3px;border-radius:4px}::selection{background:var(--cobalt);color:var(--paper)}.wrap{width:100%;max-width:78rem;padding-inline:var(--gutter);margin-inline:auto}.inline-logo{vertical-align:-.02em;width:auto;height:.72em;margin-inline:.02em;display:inline-block}.muted{color:var(--slate)}.visually-hidden{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.skip-link{z-index:30;background:var(--paper);color:var(--ink);border-radius:6px;padding:.5rem .9rem;position:absolute;top:-3rem;left:1rem}.skip-link:focus{top:.75rem}.button{cursor:pointer;background:0 0;border:1px solid #0000;border-radius:999px;align-items:center;gap:.5rem;min-height:2.9rem;padding:0 1.3rem;font-weight:500;text-decoration:none;transition:background-color .15s,color .15s,border-color .15s;display:inline-flex}.button-light{background:var(--hero-ink);color:var(--on-light-button)}.button-light:hover{background:var(--amber)}.button-outline-light{color:var(--hero-ink);border-color:#ffffff73}.button-outline-light:hover{border-color:var(--hero-ink);background:#ffffff14}.icon-link{width:2.9rem;height:2.9rem;color:var(--hero-ink);opacity:.8;border-radius:999px;place-items:center;display:inline-grid}.icon-link:hover{opacity:1;background:#ffffff1a}.site-header{z-index:20;background:color-mix(in srgb, var(--paper) 86%, transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--rule);transition:background-color .2s,color .2s,border-color .2s;position:sticky;top:0}.site-header-hero{-webkit-backdrop-filter:none;backdrop-filter:none;background:0 0;border-bottom-color:#0000}.site-header-inner{height:var(--header-h);justify-content:space-between;align-items:center;gap:1rem;display:flex}.site-mark{font-family:var(--font-display);white-space:nowrap;font-size:1.5rem;font-weight:800;font-stretch:75%;text-decoration:none}.site-nav{align-items:center;gap:clamp(.85rem,2.5vw,2rem);font-size:.95rem;display:flex}.site-nav a{padding-block:.25rem;text-decoration:none}.site-nav a:hover,.site-nav a[aria-current]{text-underline-offset:.45em;text-decoration:underline;text-decoration-thickness:2px}.site-nav a[aria-current]{-webkit-text-decoration-color:var(--cobalt);text-decoration-color:var(--cobalt)}.site-nav-cv{border:1px solid;border-radius:999px;padding:.3rem .85rem!important}.site-nav-cv:hover{background:var(--ink);color:var(--paper);border-color:var(--ink);text-decoration:none!important}.hero{min-height:min(calc(100svh - var(--header-h)), 60rem);margin-top:calc(-1 * var(--header-h));padding-top:calc(var(--header-h) + clamp(2.5rem, 6vw, 4rem));color:var(--hero-ink);background:radial-gradient(55% 65% at 18% 70%, #3347f06b, transparent 70%), radial-gradient(35% 45% at 88% 18%, #3347f033, transparent 70%), var(--paper);border-bottom:1px solid var(--rule);align-items:flex-end;padding-bottom:clamp(3rem,7vw,6rem);display:flex;position:relative;overflow:hidden}.hero:before{content:"";background-image:linear-gradient(var(--hero-grid) 1px, transparent 1px), linear-gradient(90deg, var(--hero-grid) 1px, transparent 1px);pointer-events:none;background-position:-1px -1px;background-size:56px 56px;position:absolute;inset:0;-webkit-mask-image:radial-gradient(80% 90% at 40% 60%,#000 30%,#0000 85%);mask-image:radial-gradient(80% 90% at 40% 60%,#000 30%,#0000 85%)}.hero-inner{grid-template:"status status""name."1fr"name lede""name actions"/auto minmax(0,1fr);column-gap:clamp(2rem,6vw,6rem);display:grid;position:relative}.hero-status{background:#ffffff0a;border:1px solid #ffffff24;border-radius:999px;grid-area:status;justify-self:start;align-items:center;gap:.6rem;margin-bottom:clamp(2rem,6vw,4rem);padding:.4rem .9rem .4rem .75rem;font-size:.95rem;display:inline-flex}.hero-status-dot{background:var(--amber);border-radius:50%;width:.55rem;height:.55rem;box-shadow:0 0 0 4px #ffc24b2e}.hero-name{font-family:var(--font-display);font-variation-settings:"opsz" 96;letter-spacing:-.01em;cursor:default;-webkit-user-select:none;user-select:none;flex-direction:column;grid-area:name;margin-left:-.04em;font-size:clamp(4.5rem,19vw,19rem);font-weight:800;font-stretch:75%;line-height:.86;display:flex}.hero-line{white-space:nowrap;display:block}.char{font-weight:var(--w,800);animation:1s cubic-bezier(.2,.7,.1,1) backwards settle;animation-delay:calc(var(--i) * 45ms + 80ms);transition:font-weight .38s cubic-bezier(.2,.7,.2,1);display:inline-block}@keyframes settle{0%{opacity:0;font-weight:200;transform:translateY(.14em)}to{opacity:1;font-weight:800;transform:none}}.hero-lede{max-width:34ch;font-size:var(--step-1);color:color-mix(in srgb, var(--hero-ink) 82%, transparent);grid-area:lede;align-self:end;line-height:1.5}.hero-actions{flex-wrap:wrap;grid-area:actions;align-items:center;gap:.6rem;margin-top:1.75rem;padding-bottom:.6rem;display:flex}.section{padding-block:clamp(5rem,10vw,8.5rem)}.section-band{background:var(--surface);border-block:1px solid var(--rule)}.section-head{grid-template-columns:minmax(0,1fr) minmax(0,24rem);align-items:end;gap:1rem 3rem;margin-bottom:clamp(2.5rem,5vw,4rem);display:grid}.section-title{font-family:var(--font-display);font-variation-settings:"opsz" 96;letter-spacing:-.005em;font-size:clamp(3.25rem,8.5vw,7.5rem);font-weight:800;font-stretch:75%;line-height:.88}.section-summary{color:var(--slate);padding-bottom:.4rem;font-size:1.125rem;line-height:1.5}.subhead{font-family:var(--font-display);font-size:var(--step-2);margin-top:4.5rem;margin-bottom:1rem;font-weight:700;font-stretch:85%}.about-statement{max-width:30ch;font-family:var(--font-display);font-variation-settings:"opsz" 48;letter-spacing:-.018em;font-size:clamp(1.75rem,1rem + 2.7vw,3.25rem);font-weight:500;line-height:1.14}.about-grid{border-top:1px solid var(--rule);grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:2.5rem clamp(2rem,6vw,6rem);margin-top:clamp(3rem,6vw,4.5rem);padding-top:2rem;display:grid}.about-text{align-content:start;gap:1rem;max-width:52ch;display:grid}.skills{grid-template-columns:repeat(3,minmax(0,1fr));gap:1.5rem;display:grid}.skills-group h3{color:var(--slate);font-size:var(--step--1);margin-bottom:.6rem;font-weight:500}.skills-group li{font-family:var(--font-display);font-size:1.35rem;font-weight:600;font-stretch:90%;line-height:1.55}.career{--label-col:minmax(15rem, 21rem);border-bottom:1px solid var(--rule)}.career-axis,.role summary,.role-detail{grid-template-columns:var(--label-col) minmax(0, 1fr) 2.25rem;column-gap:clamp(1rem,3vw,2.5rem);display:grid}.career-years{height:1.75rem;color:var(--slate);font-size:var(--step--1);font-variant-numeric:tabular-nums;position:relative}.career-years span{border-left:1px solid var(--rule);padding-bottom:.4rem;padding-left:.4rem;line-height:1.2;position:absolute;bottom:0}.role{border-top:1px solid var(--rule)}.role summary{cursor:pointer;align-items:center;padding:1.35rem 0;list-style:none}.role summary::-webkit-details-marker{display:none}.role-head{align-items:center;gap:1rem;display:flex}.role-logo{flex:none;place-items:center;width:3.25rem;height:3.25rem;display:grid}.role-logo img{object-fit:contain;width:100%;height:100%}.role-name{min-width:0;display:grid}.role-title{font-family:var(--font-display);font-size:1.4rem;font-weight:700;font-stretch:88%;line-height:1.2}.role-company{color:var(--slate)}.role-track{background-image:repeating-linear-gradient(to right, var(--rule) 0 1px, transparent 1px var(--year-step));height:1rem;position:relative}.role-track:before{content:"";border-top:1px dashed var(--rule);position:absolute;top:50%;left:0;right:0}.role-bar{background:var(--ink);border-radius:999px;min-width:.75rem;transition:background-color .15s;position:absolute;top:0;bottom:0}.role summary:hover .role-bar,.role[open] .role-bar{background:var(--cobalt)}.role-current .role-bar:after{content:"";background:var(--amber);width:.7rem;height:.7rem;box-shadow:0 0 0 3px var(--surface);border-radius:50%;position:absolute;top:50%;right:-.35rem;translate:0 -50%}.role-toggle{border:1px solid var(--rule);border-radius:50%;width:2.25rem;height:2.25rem;transition:transform .25s,border-color .15s;position:relative}.role-toggle:before,.role-toggle:after{content:"";background:currentColor;width:.8rem;height:1.5px;position:absolute;top:50%;left:50%;translate:-50% -50%}.role-toggle:after{rotate:90deg}.role summary:hover .role-toggle{border-color:var(--ink)}.role[open] .role-toggle{transform:rotate(45deg)}.role::details-content{height:0;transition:height .32s cubic-bezier(.2, .7, .2, 1), content-visibility .32s allow-discrete;overflow:clip}.role[open]::details-content{height:auto}.role-detail{padding-bottom:1.75rem}.role-detail>*{grid-column:2}.role-dates{font-variant-numeric:tabular-nums;margin-bottom:.75rem;font-weight:600}.role-current .role-dates{color:var(--cobalt)}.role-points{gap:.5rem;max-width:66ch;display:grid}.role-points li{padding-left:1.2rem;position:relative}.role-points li:before{content:"";background:var(--slate);width:.5rem;height:1px;position:absolute;top:.75em;left:0}.filters{flex-wrap:wrap;gap:.5rem;margin-bottom:2rem;display:flex}.filter{border:1px solid var(--rule);cursor:pointer;background:0 0;border-radius:999px;align-items:center;gap:.55rem;min-height:2.6rem;padding:0 1.1rem;font-weight:500;display:inline-flex}.filter:hover{border-color:var(--ink)}.filter[aria-pressed=true]{background:var(--ink);border-color:var(--ink);color:var(--paper)}.filter-count{opacity:.6;font-variant-numeric:tabular-nums;font-size:.8rem}.project-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:1.25rem;display:grid}.project-card{background:var(--surface);border:1px solid var(--rule);border-radius:var(--radius-card);flex-direction:column;padding:.6rem;transition:border-color .15s;display:flex}.project-card:hover{border-color:var(--slate)}.project-media{aspect-ratio:16/10;border-radius:var(--radius-media);background:var(--surface-2);overflow:hidden}.project-media img{object-fit:cover;object-position:top center;width:100%;height:100%}.project-media-contain{background:#f4f6fb}.project-media-contain img{object-fit:contain;object-position:center;padding:1.5rem}.project-body{flex-direction:column;flex:1;gap:.6rem;padding:1.25rem .9rem .6rem;display:flex}.project-year{color:var(--slate);font-size:var(--step--1)}.project-name{font-family:var(--font-display);letter-spacing:-.01em;font-size:1.85rem;font-weight:700;font-stretch:82%;line-height:1.05}.project-desc{max-width:58ch}.project-stack{color:var(--slate);font-size:var(--step--1)}.project-links{flex-wrap:wrap;gap:1.25rem;margin-top:auto;padding-top:.5rem;font-weight:500;display:flex}.project-links a{align-items:center;gap:.4rem;min-height:2rem;display:inline-flex}.project-links a:hover{color:var(--cobalt)}.project-card:first-child{grid-column:1/-1;grid-template-columns:minmax(0,7fr) minmax(0,6fr);gap:.6rem;display:grid}.project-card:first-child .project-media{aspect-ratio:auto;height:100%;min-height:20rem}.project-card:first-child .project-media-contain img{padding:clamp(2.5rem,6vw,5rem)}.project-card:first-child .project-body{justify-content:center;padding:2rem clamp(1rem,3vw,2.5rem)}.project-card:first-child .project-links{margin-top:.5rem}.project-card:first-child .project-name{font-size:clamp(2.25rem,4vw,3.5rem)}.other{border-top:1px solid var(--rule)}.other-row{border-bottom:1px solid var(--rule);grid-template-columns:14rem minmax(0,1fr) 11rem;gap:.5rem 2rem;padding:1.2rem 0;display:grid}.other-name{font-family:var(--font-display);font-size:1.2rem;font-weight:700;font-stretch:88%}.other-row .project-links{justify-content:flex-end;gap:1rem;margin-top:0;padding-top:0;font-size:.95rem}.contact{color:var(--hero-ink);background:radial-gradient(60% 80% at 85% 10%,#ffffff1f,#0000 70%),linear-gradient(160deg,#2c40ea,#1a27a8);padding-top:clamp(5rem,10vw,8.5rem)}.contact .section-summary{color:color-mix(in srgb, var(--hero-ink) 70%, transparent)}.contact-email{font-family:var(--font-display);font-variation-settings:"opsz" 96;letter-spacing:-.01em;text-underline-offset:.12em;text-decoration:underline;text-decoration-thickness:.06em;-webkit-text-decoration-color:color-mix(in srgb, var(--hero-ink) 35%, transparent);text-decoration-color:color-mix(in srgb, var(--hero-ink) 35%, transparent);overflow-wrap:anywhere;font-size:clamp(2.1rem,.6rem + 6.2vw,7rem);font-weight:800;font-stretch:75%;line-height:1;display:inline-block}.contact-email:hover{-webkit-text-decoration-color:var(--amber);text-decoration-color:var(--amber)}.contact-actions{flex-wrap:wrap;gap:.6rem;margin-top:2.5rem;display:flex}.contact-actions .button-light{justify-content:center;min-width:8.5rem}.site-footer{border-top:1px solid color-mix(in srgb, var(--hero-ink) 16%, transparent);color:color-mix(in srgb, var(--hero-ink) 60%, transparent);font-size:var(--step--1);flex-wrap:wrap;justify-content:space-between;gap:.5rem 2rem;margin-top:clamp(4rem,9vw,7rem);padding-block:1.75rem 2.25rem;display:flex}@media (width<=1000px){.career{--label-col:minmax(11rem, 15rem)}.about-grid,.other-row{grid-template-columns:minmax(0,1fr)}.other-row .project-links{justify-content:flex-start}}@media (width<=760px){:root{--header-h:3.5rem}.hero{min-height:0}.hero-inner{grid-template:"status""name""lede""actions"/minmax(0,1fr)}.hero-lede{margin-top:2rem}.hero-name{font-size:31vw}.section-head{grid-template-columns:minmax(0,1fr)}.skills{grid-template-columns:repeat(2,minmax(0,1fr))}.career-axis{display:none}.role summary{grid-template-columns:minmax(0,1fr) 2.25rem;row-gap:.9rem}.role-track{grid-area:2/1/auto/-1}.role-detail{grid-template-columns:minmax(0,1fr)}.role-detail>*{grid-column:1}.project-grid{grid-template-columns:minmax(0,1fr)}.project-card:first-child{display:flex}.project-card:first-child .project-media{aspect-ratio:16/10;min-height:0}.project-card:first-child .project-body{padding:1.25rem .9rem .6rem}}@media (width<=520px){.site-mark{font-size:1.3rem}.site-nav li:not(:last-child){display:none}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.char{transition:none;animation:none}.role-toggle,.button,.site-header{transition:none}.role::details-content{transition:none}}
