@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/fonts/inter-latin-wght-normal.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+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Fraunces;font-style:normal;font-weight:300 700;font-display:swap;src:url(/fonts/fraunces-latin-wght-normal.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}*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{color-scheme:dark;--surface:oklch(18% .004 270);--surface-raised:oklch(22% .005 270);--surface-hover:oklch(21% .005 270);--text:oklch(94% .005 270);--text-muted:oklch(76% .008 270);--text-faint:oklch(65.5% .01 270);--accent:oklch(75% .13 35);--accent-strong:oklch(80% .12 38);--accent-contrast:oklch(18% .004 270);--gold:oklch(82% .13 85);--portrait-halo:oklch(100% 0 0 / .3);--mark-mono-lift:grayscale(1) invert(1) brightness(1.75);--mark-chip-bg:oklch(93% .004 270);--border:oklch(30% .006 270);--border-strong:oklch(52% .008 270);--grid-line:oklch(100% 0 0 / .045);--grid-line-lit:oklch(100% 0 0 / .12);--header-veil:oklch(18% .004 270 / .9);--font-sans:"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-serif:"Fraunces", Georgia, "Times New Roman", serif;--font-mono:ui-monospace, "Cascadia Code", "SF Mono", Menlo, Consolas, monospace;--rail:9.5rem;--gutter:3rem;--measure:49.5rem;--content-width:68rem;--radius:.375rem;--header-height:3.75rem;--grid-offset:3.8125rem;--spot-x:50%;--spot-y:-20%;--grid-dim-mask:linear-gradient( to right, rgb(0 0 0 / 100%) 0, rgb(0 0 0 / 100%) calc(50% - 39rem) , rgb(0 0 0 / 30%) calc(50% - 32rem) , rgb(0 0 0 / 30%) calc(50% + 32rem) , rgb(0 0 0 / 100%) calc(50% + 39rem) , rgb(0 0 0 / 100%) 100% )}.light-mode{color-scheme:light;--surface:oklch(98% .002 270);--surface-raised:#ffffff;--surface-hover:oklch(96% .003 270);--text:oklch(20% .01 270);--text-muted:oklch(40% .01 270);--text-faint:oklch(48% .01 270);--accent:oklch(50% .15 30);--accent-strong:oklch(44% .15 30);--accent-contrast:#ffffff;--gold:oklch(66% .135 78);--portrait-halo:oklch(30% .01 270 / .22);--mark-mono-lift:none;--mark-chip-bg:var(--surface-raised);--border:oklch(89% .005 270);--border-strong:oklch(62% .01 270);--grid-line:oklch(0% 0 0 / .05);--grid-line-lit:oklch(0% 0 0 / .12);--header-veil:oklch(98% .002 270 / .9)}html{scroll-behavior:smooth}[id]{scroll-margin-top:5rem}body{font-family:var(--font-sans);background-color:var(--surface);color:var(--text);line-height:1.6;transition:background-color .2s ease,color .2s ease}body:before,body:after{content:"";position:fixed;inset:0;z-index:-1;background-image:linear-gradient(to right,var(--grid-line) 1px,transparent 1px),linear-gradient(to bottom,var(--grid-line) 1px,transparent 1px);background-size:4rem 4rem;background-position:calc(50% - 2rem) var(--grid-offset);pointer-events:none;mask-image:var(--grid-dim-mask)}body:after{background-image:linear-gradient(to right,var(--grid-line-lit) 1px,transparent 1px),linear-gradient(to bottom,var(--grid-line-lit) 1px,transparent 1px);opacity:0;mask-image:radial-gradient(18rem circle at var(--spot-x) var(--spot-y),rgb(0 0 0/100%),transparent 70%),var(--grid-dim-mask);mask-composite:intersect}@media (pointer:fine){body:after{opacity:1}}h1,h2,h3,h4{line-height:1.2;font-weight:650;text-wrap:balance}h1{font-family:var(--font-serif);font-weight:550;font-optical-sizing:auto;font-size:clamp(2.5rem,2rem + 2.75vw,4rem);letter-spacing:-.01em;line-height:1.08}h2{font-size:clamp(1.3rem,1.2rem + .5vw,1.5rem);letter-spacing:-.01em}h3{font-size:1.125rem}a{color:var(--text);text-decoration:underline;text-decoration-color:var(--border-strong);text-underline-offset:.2em;transition:color .15s ease,text-decoration-color .15s ease}a:hover{color:var(--accent-strong);text-decoration-color:currentColor}:where(a,button,[tabindex]:not([tabindex="-1"])):focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:2px}::selection{background:var(--accent);color:var(--accent-contrast)}img{max-width:100%;height:auto}.meta{font-family:var(--font-mono);font-size:.8125rem;color:var(--text-faint);letter-spacing:.01em}.label{font-family:var(--font-mono);font-size:.75rem;font-weight:500;text-transform:uppercase;letter-spacing:.09em;color:var(--text-faint);line-height:1.4}.skip-to-content{position:absolute;inset-inline-start:.5rem;top:-3rem;z-index:20;background:var(--surface-raised);color:var(--text);border:1px solid var(--border-strong);border-radius:var(--radius);padding:.5rem 1rem;text-decoration:none;transition:top .15s ease}.skip-to-content:focus-visible{top:.5rem}.page{max-width:var(--content-width);margin-inline:auto;padding-inline:clamp(1rem,.5rem + 2.5vw,3rem)}.site-header{position:sticky;top:0;z-index:10;background:var(--header-veil);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-bottom:1px solid var(--border)}.site-header .page{display:flex;align-items:center;justify-content:space-between;gap:1rem;min-height:var(--header-height);flex-wrap:wrap;padding-block:.5rem}.wordmark{font-family:var(--font-serif);font-weight:500;font-size:1.25rem;color:var(--text);text-decoration:none;letter-spacing:0}.wordmark:hover{color:var(--text)}.wordmark-i:after{content:"";display:inline-block;width:.21em;height:.21em;border-radius:50%;background:var(--accent);vertical-align:.585em;margin-inline-start:-.245em;margin-inline-end:.035em;transition:background-color .2s ease}.wordmark:hover .wordmark-i:after{background:var(--accent-strong)}.theme-toggle{display:inline-flex;align-items:center;justify-content:center;width:2.25rem;height:2.25rem;background:0 0;border:1px solid var(--border);border-radius:var(--radius);color:var(--text-muted);cursor:pointer;transition:color .15s ease,border-color .15s ease,transform .15s ease}.theme-toggle:hover{color:var(--text);border-color:var(--border-strong)}.theme-toggle:active{transform:scale(.92)}.theme-toggle svg{width:1.125rem;height:1.125rem}.theme-toggle .sun-rays{transform-origin:center;transition:transform .35s ease,opacity .35s ease}.theme-toggle .sun-core{transition:r .35s ease}.theme-toggle .moon-mask-circle{transition:cx .35s ease,cy .35s ease,r .35s ease}.theme-toggle .sun-rays{opacity:1;transform:scale(1)}.theme-toggle .sun-core{r:5px}.theme-toggle .moon-mask-circle{cx:24px;cy:10px;r:6px}.light-mode .theme-toggle .sun-rays{opacity:0;transform:scale(.2)}.light-mode .theme-toggle .sun-core{r:8px}.light-mode .theme-toggle .moon-mask-circle{cx:18px;cy:7px;r:7px}.site-footer{border-top:1px solid var(--border);margin-top:clamp(3rem,2rem + 4vw,5rem);padding-block:2rem}.site-footer .page{display:flex;justify-content:space-between;gap:1rem;flex-wrap:wrap}.rail-layout{display:grid;grid-template-columns:minmax(0,1fr);gap:1.25rem}.rail{display:flex;align-items:baseline;justify-content:space-between;gap:1rem}.rail-body{max-width:var(--measure);min-width:0}.rail-heading{font-family:var(--font-serif);font-weight:520;font-optical-sizing:auto;font-size:clamp(1.625rem,1.45rem + .9vw,2rem);letter-spacing:-.005em;line-height:1.1;color:var(--text)}@media (min-width:60rem){.rail-layout{grid-template-columns:var(--rail) minmax(0,1fr);gap:0 var(--gutter)}.rail{display:block;position:sticky;top:5.5rem;align-self:start}.rail>*+*{margin-top:.5rem}}.section{padding-block:clamp(2.5rem,2rem + 2vw,4rem)}@media (max-width:34rem){.section{padding-block:2rem}}.section+.section{border-top:1px solid var(--border)}.row{position:relative;padding-block:1.5rem}.row:first-child{padding-top:0}.row:last-child{padding-bottom:0}.row+.row{border-top:1px solid var(--border)}.row:before,.row:after{content:"";position:absolute;inset-block:.75rem;opacity:0;transition:opacity .15s ease}.row:first-child:before,.row:first-child:after{top:-.75rem}.row:last-child:before,.row:last-child:after{bottom:-.75rem}.row:before{z-index:1;inset-inline-start:-1.25rem;width:2px;background:var(--accent)}.row:after{z-index:0;inset-inline:-1.25rem -1rem;border-radius:0 var(--radius) var(--radius)0;background:var(--surface-hover)}.row:hover:before,.row:hover:after{opacity:1}.row>*{position:relative;z-index:1}.row-head{display:block}.row-meta{display:block;margin-top:.25rem}.row-meta-group{display:flex;align-items:center;gap:.9rem;margin-top:.35rem}.row-title{font-size:1.125rem;font-weight:600}.row-title a{color:var(--text);text-decoration:none}.row-title a:hover{color:var(--accent-strong)}.row-title-sub{color:var(--text-muted);font-weight:400}.row-role{margin-top:.35rem}.row-text{color:var(--text-muted);margin-top:.6rem}.row .link-row{margin-top:.85rem}@media (min-width:60rem){.row-head{display:flex;align-items:baseline;justify-content:space-between;gap:1.5rem}.row-meta,.row-meta-group{margin-top:0;white-space:nowrap}}.company-mark{display:inline-flex;align-items:center;flex:none}.company-mark img{height:1.5rem;width:auto;max-width:5rem;filter:grayscale(1) invert(1) brightness(1.4) opacity(.85);transition:filter .3s ease}.light-mode .company-mark img{filter:grayscale(1) opacity(.7)}.row:hover .company-mark img,.company-mark:hover img{filter:none}.lang{display:inline-flex;align-items:center;gap:.4rem}.lang:before{content:"";width:.5rem;height:.5rem;border-radius:50%;background:var(--lang-color, var(--text-faint));flex:none}.star-badge{display:inline-flex;align-items:center;gap:.3rem;color:var(--gold)}.light-mode .star-badge{color:var(--text-muted)}.light-mode .star-badge svg{color:var(--gold)}.star-badge svg{width:.8125rem;height:.8125rem;fill:none;stroke:currentColor;stroke-width:1.8;transition:fill .2s ease,transform .3s ease}.row:hover .star-badge svg{fill:currentColor;transform:scale(1.2)}.link-row{display:flex;flex-wrap:wrap;gap:.35rem 1.1rem;font-size:.9375rem}.icon-link{display:inline-flex;align-items:center;gap:.4rem;color:var(--text-muted);text-decoration:none;transition:color .15s ease}.icon-link svg{width:1rem;height:1rem;flex:none;color:var(--accent);transition:transform .2s ease}.icon-link:hover{color:var(--accent)}.icon-link:hover svg{transform:translateY(-2px)}.icon-link.primary-link{color:var(--text);font-weight:550}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important}body:after{opacity:0}}@media (forced-colors:active){body:before,body:after{display:none}.theme-toggle,.skip-to-content{border-color:ButtonBorder}.lang:before{background:CanvasText}.row:hover:before{background:Highlight}.row:after{display:none}.company-mark img{filter:none}}@media print{:root,.light-mode{--surface:#ffffff;--surface-raised:#ffffff;--surface-hover:#ffffff;--text:#000000;--text-muted:#1a1a1a;--text-faint:#444444;--accent:#000000;--accent-strong:#000000;--accent-contrast:#ffffff;--gold:#000000;--portrait-halo:transparent;--mark-mono-lift:none;--border:#999999;--border-strong:#666666}body:before,body:after{display:none}.site-header,.site-footer,.theme-toggle,.skip-to-content{display:none}body{background:#fff;color:#000}a{color:inherit;text-decoration:underline}.company-mark img{filter:none}.section,.row{page-break-inside:avoid}}.site-footer[data-astro-cid-gcn2mc3v] a[data-astro-cid-gcn2mc3v]{color:var(--text-muted);text-decoration:underline;text-underline-offset:.2em}.site-footer[data-astro-cid-gcn2mc3v] a[data-astro-cid-gcn2mc3v]:hover{color:var(--text)}.hero[data-astro-cid-ewxirvlt]{position:relative;padding-block:clamp(3rem,2rem + 4vw,5.5rem) clamp(2.25rem,1.75rem + 2vw,3.25rem);border-bottom:1px solid var(--border)}.hero-portrait[data-astro-cid-ewxirvlt]{position:relative;width:fit-content;align-self:start}.hero-portrait[data-astro-cid-ewxirvlt]:before{content:"";position:absolute;inset:0;border-radius:var(--radius);box-shadow:0 0 1.5rem 0 var(--portrait-halo);opacity:0;pointer-events:none;transition:opacity .4s ease,transform .2s ease}.hero-portrait[data-astro-cid-ewxirvlt] img[data-astro-cid-ewxirvlt]{width:7rem;aspect-ratio:3/4;height:auto;border-radius:var(--radius);border:1px solid var(--border);object-fit:cover;display:block;filter:brightness(.92);transition:filter .4s ease,border-color .4s ease,transform .2s ease}.hero-portrait[data-astro-cid-ewxirvlt]:hover:before{opacity:1}.hero-portrait[data-astro-cid-ewxirvlt]:hover img[data-astro-cid-ewxirvlt]{filter:none;border-color:var(--border-strong)}.hero-portrait[data-astro-cid-ewxirvlt]:active img[data-astro-cid-ewxirvlt],.hero-portrait[data-astro-cid-ewxirvlt]:active:before{transform:scale(.98)}.hero-role[data-astro-cid-ewxirvlt]{margin-top:.85rem}.hero-role[data-astro-cid-ewxirvlt] .slash[data-astro-cid-ewxirvlt]{color:var(--accent)}.hero-caret[data-astro-cid-ewxirvlt]{display:inline-block;width:.55em;height:1em;margin-inline-start:.35em;vertical-align:text-bottom;background:var(--accent)}@media (prefers-reduced-motion:no-preference){.hero-caret[data-astro-cid-ewxirvlt]{animation:caret-blink 1.4s steps(1) infinite}.hero-role[data-astro-cid-ewxirvlt]:hover .hero-caret[data-astro-cid-ewxirvlt]{animation-play-state:paused;opacity:1}@keyframes caret-blink{50%{opacity:0}}}.hero-lede[data-astro-cid-ewxirvlt]{color:var(--text-muted);margin-top:1.1rem;font-size:1.0625rem}.hero-actions[data-astro-cid-ewxirvlt]{display:flex;align-items:center;flex-wrap:wrap;gap:.75rem 1.75rem;margin-top:1.6rem}.hero-social[data-astro-cid-ewxirvlt]{font-size:.9375rem}.hero-social[data-astro-cid-ewxirvlt] svg{width:1.125rem;height:1.125rem}@media (min-width:60rem){.hero-portrait[data-astro-cid-ewxirvlt] img[data-astro-cid-ewxirvlt]{width:var(--rail)}}@media (max-width:59.9375rem){.hero[data-astro-cid-ewxirvlt]{text-align:center}.hero-portrait[data-astro-cid-ewxirvlt]{margin-inline:auto}.hero-actions[data-astro-cid-ewxirvlt]{justify-content:center}}@media print{.hero-actions[data-astro-cid-ewxirvlt]{display:none}}.sr-only[data-astro-cid-qz6brpfc]{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.timeline[data-astro-cid-fcqqxzlm]{position:relative;padding-inline-start:2rem}.timeline[data-astro-cid-fcqqxzlm]:before{content:"";position:absolute;inset-block:.5rem .25rem;inset-inline-start:.3125rem;width:1px;background:var(--border)}.timeline[data-astro-cid-fcqqxzlm] .row[data-astro-cid-fcqqxzlm]:after{inset-inline-start:-.75rem}.timeline[data-astro-cid-fcqqxzlm] .row[data-astro-cid-fcqqxzlm]:before{z-index:2;inset-inline-start:-2rem;top:calc(1.5rem + .3em);width:.6875rem;height:.6875rem;border-radius:50%;border:2px solid var(--text-faint);background:var(--surface);opacity:1;transition:border-color .2s ease,box-shadow .2s ease}.timeline[data-astro-cid-fcqqxzlm] .row[data-astro-cid-fcqqxzlm]:first-child:before{top:.3em}.timeline[data-astro-cid-fcqqxzlm] .row[data-astro-cid-fcqqxzlm]:hover:before{border-color:var(--accent);box-shadow:0 0 .75rem color-mix(in oklab,var(--accent) 55%,transparent)}.timeline[data-astro-cid-fcqqxzlm] .row[data-astro-cid-fcqqxzlm].current:before{border-color:var(--accent);background:var(--accent)}@media (prefers-reduced-motion:no-preference){.timeline[data-astro-cid-fcqqxzlm] .row[data-astro-cid-fcqqxzlm].current:before{animation:dot-pulse 3.2s ease-out infinite}@keyframes dot-pulse{0%{box-shadow:0 0 color-mix(in oklab,var(--accent) 50%,transparent)}55%,to{box-shadow:0 0 0 .55rem transparent}}}.row-title[data-astro-cid-fcqqxzlm] .company-mark[data-astro-cid-fcqqxzlm]{margin-inline-end:.4rem;padding:.25rem;border-radius:.3125rem;background:var(--mark-chip-bg);border:1px solid var(--border);vertical-align:-.35em}.timeline[data-astro-cid-fcqqxzlm] .row[data-astro-cid-fcqqxzlm] .company-mark[data-astro-cid-fcqqxzlm] img[data-astro-cid-fcqqxzlm]{filter:none}@media (forced-colors:active){.timeline[data-astro-cid-fcqqxzlm]:before{background:CanvasText}.timeline[data-astro-cid-fcqqxzlm] .row[data-astro-cid-fcqqxzlm]:before{border-color:CanvasText;background:Canvas}.timeline[data-astro-cid-fcqqxzlm] .row[data-astro-cid-fcqqxzlm].current:before{background:CanvasText}}.course-list[data-astro-cid-lfgp4y4n]{list-style:none}.course-row[data-astro-cid-lfgp4y4n]{display:grid;grid-template-columns:1.75rem minmax(0,1fr) auto auto;align-items:baseline;column-gap:.65rem;padding-block:.55rem;font-size:.9375rem}.course-row[data-astro-cid-lfgp4y4n]>[data-astro-cid-lfgp4y4n]:nth-child(n+3){margin-inline-start:.35rem}.course-row[data-astro-cid-lfgp4y4n]+.course-row[data-astro-cid-lfgp4y4n]{border-top:1px solid var(--border)}.course-name[data-astro-cid-lfgp4y4n]{color:var(--text-muted);transition:color .15s ease}.course-mark[data-astro-cid-lfgp4y4n]{justify-content:center;align-self:center}span[data-astro-cid-lfgp4y4n].course-mark img[data-astro-cid-lfgp4y4n]{height:1.125rem;max-width:2.5rem}.course-row[data-astro-cid-lfgp4y4n]:hover .company-mark img{filter:var(--mark-mono-lift)}.course-row[data-astro-cid-lfgp4y4n]:hover .course-name[data-astro-cid-lfgp4y4n]{color:var(--text)}.course-provider[data-astro-cid-lfgp4y4n]{color:var(--text-faint)}.course-cert[data-astro-cid-lfgp4y4n]{width:1.5rem;height:1.5rem;justify-content:center;align-self:center}@media (max-width:34rem){.course-row[data-astro-cid-lfgp4y4n]{grid-template-columns:1.75rem minmax(0,1fr) auto}.course-name[data-astro-cid-lfgp4y4n]{grid-column:2}.course-mark[data-astro-cid-lfgp4y4n]{align-self:baseline}.course-row[data-astro-cid-lfgp4y4n]>.meta[data-astro-cid-lfgp4y4n]{grid-column:2}.course-cert[data-astro-cid-lfgp4y4n]{grid-column:3;grid-row:1}}.contact-list[data-astro-cid-t5ff57ns]{display:flex;flex-wrap:wrap;gap:1.5rem 3.5rem}.contact-row[data-astro-cid-t5ff57ns]{display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto;column-gap:.85rem;align-items:center}.contact-row[data-astro-cid-t5ff57ns] dt[data-astro-cid-t5ff57ns]{display:contents}.contact-row[data-astro-cid-t5ff57ns] .contact-icon{grid-row:1/3;width:1.5rem;height:1.5rem;color:var(--accent)}.contact-name[data-astro-cid-t5ff57ns]{grid-column:2;grid-row:1}.contact-row[data-astro-cid-t5ff57ns] dd[data-astro-cid-t5ff57ns]{grid-column:2;grid-row:2;font-size:.9375rem;line-height:1.4}.copy-btn[data-astro-cid-t5ff57ns]{display:inline-flex;align-items:center;justify-content:center;width:1.75rem;height:1.75rem;margin-inline-start:.4rem;vertical-align:-.45em;background:0 0;border:0;border-radius:.25rem;color:var(--text-faint);cursor:pointer;transition:color .15s ease,transform .15s ease}.copy-btn[data-astro-cid-t5ff57ns]:hover{color:var(--text)}.copy-btn[data-astro-cid-t5ff57ns]:active{transform:scale(.88)}.copy-btn[data-astro-cid-t5ff57ns] svg{width:.9375rem;height:.9375rem}.copy-btn[data-astro-cid-t5ff57ns] .check-icon{display:none}.copy-btn[data-astro-cid-t5ff57ns].copied{color:var(--accent)}.copy-btn[data-astro-cid-t5ff57ns].copied .copy-icon{display:none}.copy-btn[data-astro-cid-t5ff57ns].copied .check-icon{display:block}.copy-status[data-astro-cid-t5ff57ns]{margin-top:.75rem;min-height:1.25rem}@media (max-width:59.9375rem){.contact-list[data-astro-cid-t5ff57ns]{flex-direction:column;gap:1.4rem;width:fit-content;margin-inline:auto}.copy-status[data-astro-cid-t5ff57ns]{text-align:center}}@media print{.copy-btn[data-astro-cid-t5ff57ns]{display:none}}