*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth;scrollbar-gutter:stable;width:100%}body{width:100%;margin:0}img,picture,svg,video,canvas{max-width:100%;display:block}.skip-link{width:1px;height:1px;position:absolute;top:auto;left:-9999px;overflow:hidden}.skip-link:focus,.skip-link:active{z-index:9999;border:1px solid var(--border);background:var(--surface-2);width:auto;height:auto;box-shadow:var(--shadow-soft);color:var(--text);border-radius:10px;padding:.5rem 1rem;top:1rem;left:1rem;overflow:visible}:focus-visible{outline:3px solid var(--accent);outline-offset:3px;border-radius:6px}button,a{cursor:pointer}input,textarea{cursor:text}:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#1a1b26;--bg-2:#181a24;--surface:#202332;--surface-2:#262a3c;--surface-3:#1c1f2d;--text:#c0caf5;--text-2:#a9b1d6;--muted:#818bb5;--border:#3b4261;--blue:#7aa2f7;--cyan:#7dcfff;--teal:#73daca;--purple:#bb9af7;--magenta:#9d7cd8;--green:#9ece6a;--yellow:#e0af68;--orange:#ff9e64;--red:#f7768e;--accent:var(--blue);--accent-2:var(--yellow);--accent-3:var(--cyan);--radius-sm:8px;--radius-md:12px;--radius-lg:16px;--shadow-soft:0 4px 14px rgba(10,15,30,.18)}[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#e1e2e7;--bg-2:#edf0f5;--surface:#fff;--surface-2:#f6f7fb;--surface-3:#eceef4;--text:#1f2335;--text-2:#2f3555;--muted:#56617e;--border:#d2d6e3;--blue:#1d63be;--cyan:#006a80;--teal:#126d60;--purple:#6948d7;--magenta:#7c3cc8;--green:#24673e;--yellow:#8a5a12;--orange:#9a4f12;--red:#aa2d46;--accent:var(--blue);--accent-2:var(--yellow);--accent-3:var(--cyan);--shadow-soft:0 4px 14px rgba(21,32,55,.1)}html,body{background-color:var(--bg);min-height:100%;color:var(--text);font-family:var(--font-body),system-ui,-apple-system,"Segoe UI",sans-serif;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;transition:background-color .25s,color .25s}body{background-image:linear-gradient(180deg,var(--bg)0%,var(--bg-2)100%);flex-direction:column;min-height:100vh;display:flex}main{flex:1 0 auto}.site-container{width:calc(100% - 40px);max-width:1440px;margin-left:auto;margin-right:auto}::selection{background:color-mix(in srgb,var(--blue)28%,transparent);color:var(--text)}@media (min-width:600px){.site-container{width:calc(100% - 64px)}}@media (min-width:1200px){.site-container{width:calc(100% - 96px)}}@media (prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}}@media print{@page{size:A4;margin:15mm}body{-webkit-print-color-adjust:exact;print-color-adjust:exact}}
.site-header-toolbar{min-height:80px}.site-header-surface{box-shadow:none}.mobile-nav-dialog{border:0;border-left:1px solid var(--border);background:var(--surface);width:min(280px,100vw - 32px);height:100dvh;max-height:none;color:var(--text);margin:0 0 0 auto;padding:64px 16px 16px}.mobile-nav-dialog::backdrop{background:rgba(10,12,20,.68)}.mobile-nav-close{border:1px solid var(--border);background:var(--surface-2);width:44px;height:44px;color:var(--text);font:500 1.5rem/1 var(--font-body);border-radius:8px;place-items:center;padding:0;display:grid;position:absolute;top:14px;right:14px}.mobile-nav-list{gap:4px;margin:0;padding:0;list-style:none;display:grid}.mobile-nav-link{min-height:44px;color:var(--text-2);border-left:2px solid transparent;border-radius:8px;padding:12px 14px;font-weight:500;text-decoration:none;transition:background-color .16s,color .16s;display:block}.mobile-nav-link-active{background:var(--surface-2);color:var(--text)}.mobile-nav-link:focus-visible{background:var(--surface-2);color:var(--text)}@media (hover:hover) and (pointer:fine){.mobile-nav-link:hover{background:var(--surface-2);color:var(--text)}}@media (max-width:899px){.site-header-toolbar{min-height:72px}}@supports (animation-timeline:scroll()){.site-header-toolbar{animation:linear both compact-header;animation-timeline:scroll(root);animation-range:0 32px}.site-header-surface{animation:linear both elevate-header;animation-timeline:scroll(root);animation-range:0 32px}@media (max-width:899px){.site-header-toolbar{animation-name:compact-header-mobile}}}@keyframes compact-header{to{min-height:66px}}@keyframes compact-header-mobile{to{min-height:64px}}@keyframes elevate-header{to{box-shadow:var(--shadow-soft)}}
.hero-scroll-cue{opacity:1;transform:translateY(0)}.home-link-arrow{transition:transform .16s}.MuiButton-root:focus-visible .home-link-arrow{transform:translate(4px)}.home-career-grid{grid-template-columns:repeat(3,minmax(0,1fr));min-width:0;transition:grid-template-columns .22s cubic-bezier(.2,.8,.2,1);display:grid;position:relative}.home-career-rail{z-index:0;background:var(--border);height:1px;position:absolute;top:50%;left:0;right:0}.home-career-item{z-index:1;min-width:0;min-height:380px;color:var(--text);grid-template-rows:1fr 48px 1fr;padding-left:24px;padding-right:24px;text-decoration:none;display:grid;position:relative}.home-career-content{text-align:center;grid-row:1;align-self:end;width:100%;max-width:42ch;margin-left:auto;margin-right:auto;padding-top:12px;padding-bottom:12px}.home-career-item--middle .home-career-content{grid-row:3;align-self:start}.home-career-period{color:var(--career-tone);font-weight:600}.home-career-title{color:var(--text);font-family:var(--font-display);letter-spacing:-.025em;margin-top:4px;margin-bottom:4px;font-size:1.25rem;font-weight:700;line-height:1.2;transition:color .16s,font-size .22s cubic-bezier(.2,.8,.2,1)}.home-career-item:focus-visible .home-career-title{color:var(--career-tone);font-size:1.85rem}.home-career-dot{border:3px solid var(--career-tone);background:var(--bg);border-radius:50%;grid-row:2;width:18px;height:18px;margin:auto;transition:background-color .16s,transform .22s cubic-bezier(.2,.8,.2,1)}.home-career-item:focus-visible .home-career-dot{background:var(--career-tone);transform:scale(1.08)}@media (min-width:1024px) and (hover:hover) and (pointer:fine){.home-career-item:hover .home-career-title{color:var(--career-tone);font-size:1.85rem}.home-career-item:hover .home-career-dot{background:var(--career-tone);transform:scale(1.08)}.home-career-grid:has(.home-career-item--first:-webkit-any(:hover,:focus-visible)){grid-template-columns:1.3fr 1fr 1fr}.home-career-grid:has(.home-career-item--first:-moz-any(:hover,:focus-visible)){grid-template-columns:1.3fr 1fr 1fr}.home-career-grid:has(.home-career-item--first:is(:hover,:focus-visible)){grid-template-columns:1.3fr 1fr 1fr}.home-career-grid:has(.home-career-item--middle:-webkit-any(:hover,:focus-visible)){grid-template-columns:1fr 1.3fr 1fr}.home-career-grid:has(.home-career-item--middle:-moz-any(:hover,:focus-visible)){grid-template-columns:1fr 1.3fr 1fr}.home-career-grid:has(.home-career-item--middle:is(:hover,:focus-visible)){grid-template-columns:1fr 1.3fr 1fr}.home-career-grid:has(.home-career-item--last:-webkit-any(:hover,:focus-visible)){grid-template-columns:1fr 1fr 1.3fr}.home-career-grid:has(.home-career-item--last:-moz-any(:hover,:focus-visible)){grid-template-columns:1fr 1fr 1.3fr}.home-career-grid:has(.home-career-item--last:is(:hover,:focus-visible)){grid-template-columns:1fr 1fr 1.3fr}.MuiButton-root:hover .home-link-arrow{transform:translate(4px)}}@media (max-width:1023px){.home-career-grid{overscroll-behavior-inline:contain;scroll-snap-type:x mandatory;scrollbar-width:none;-webkit-overflow-scrolling:touch;gap:16px;margin-left:-20px;margin-right:-20px;padding:0 20px 12px;scroll-padding-inline:20px;display:flex;overflow-x:auto}.home-career-grid::-webkit-scrollbar{display:none}.home-career-rail,.home-career-dot{display:none}.home-career-item{border:1px solid var(--border);border-top:2px solid var(--career-tone);border-radius:var(--radius-md);background:var(--surface-3);scroll-snap-align:start;scroll-snap-stop:always;flex:0 0 min(82vw,380px);min-height:0;padding:24px;display:block}.home-career-content,.home-career-item--middle .home-career-content{text-align:left;max-width:none;padding:0}.home-career-title{color:var(--career-tone);font-size:1.4rem}.home-career-item:-webkit-any(:hover,:focus-visible) .home-career-title{color:var(--career-tone);font-size:1.4rem}.home-career-item:-moz-any(:hover,:focus-visible) .home-career-title{color:var(--career-tone);font-size:1.4rem}.home-career-item:is(:hover,:focus-visible) .home-career-title{color:var(--career-tone);font-size:1.4rem}}@media (min-width:600px) and (max-width:899px){.home-career-grid{margin-left:-32px;margin-right:-32px;padding-left:32px;padding-right:32px;scroll-padding-inline:32px}}@media (max-width:899px){.hero-actions>*{white-space:nowrap;flex:1 1 0;min-width:0}}@media (max-width:359px){.hero-actions{flex-direction:column}.hero-actions>*{width:100%}}@supports (animation-timeline:scroll()){.hero-scroll-cue{animation:linear both hide-scroll-cue;animation-timeline:scroll(root);animation-range:0 80px}}@keyframes scrollCueFloat{0%,to{transform:translateY(0)}50%{transform:translateY(6px)}}@keyframes hide-scroll-cue{to{opacity:0;transform:translateY(8px)}}
.editorial-document-layout{grid-template-columns:250px minmax(0,1fr);align-items:start;gap:max(48px,min(6vw,88px));margin-top:80px;display:grid}.local-section-nav{align-self:start;position:-webkit-sticky;position:sticky;top:100px}.local-section-nav-list{border-left:1px solid var(--border);margin:0;padding:0;list-style:none}.local-section-nav-item{margin:0;padding:0}.local-section-nav-link{color:var(--text-2);border-left:2px solid transparent;margin-left:-1px;padding:10px 16px;font-size:.95rem;font-weight:500;line-height:1.4;text-decoration:none;transition:border-color .16s,color .16s;display:block}.local-section-nav-link:-webkit-any(:hover,:focus-visible){color:var(--text)}.local-section-nav-link:-moz-any(:hover,:focus-visible){color:var(--text)}.local-section-nav-link:is(:hover,:focus-visible){color:var(--text)}.local-section-nav-link--active{border-left-color:var(--cyan);color:var(--cyan);font-weight:700}.case-study-section,.cv-section{border-top:1px solid var(--border);padding:64px 0;scroll-margin-top:108px}.case-study-section:first-child,.cv-section:first-child{border-top:0;padding-top:0}@media (max-width:899px){.editorial-document-layout{margin-top:40px;display:block}.local-section-nav{z-index:5;overscroll-behavior-inline:contain;border-top:1px solid var(--border);border-bottom:1px solid var(--border);background:var(--bg);scrollbar-width:none;margin:0 -20px 36px;padding:0 20px;top:64px;overflow-x:auto}.local-section-nav::-webkit-scrollbar{display:none}.local-section-nav-list{border-left:0;width:max-content;display:flex}.local-section-nav-link{white-space:nowrap;border-bottom:2px solid transparent;border-left:0;margin:0;padding:14px 12px 12px}.local-section-nav-link--active{border-bottom-color:var(--cyan)}.case-study-section,.cv-section{padding:40px 0;scroll-margin-top:118px}}@media (min-width:600px) and (max-width:899px){.local-section-nav{margin-left:-32px;margin-right:-32px;padding-left:32px;padding-right:32px}}
.project-thumbnail{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface-2);width:100%;overflow:hidden}.project-thumbnail-image{object-fit:cover;object-position:top left;transition:transform .2s cubic-bezier(.2,.8,.2,1)}.project-thumbnail-frame{min-width:0;display:block}.project-card-clickable{cursor:pointer;position:relative}.project-card-navigation{align-self:flex-start;display:inline-flex}.project-card-overlay-link{z-index:1;border-radius:inherit;position:absolute;top:0;bottom:0;left:0;right:0}.project-card-overlay-link:focus-visible{outline:3px solid var(--project-card-link-tone,var(--accent));outline-offset:-3px}.project-card-detail-cue{color:var(--project-card-link-tone,var(--blue));pointer-events:none;align-items:center;gap:7px;padding:4px 0;font-size:.875rem;font-weight:700;line-height:1.75;display:inline-flex}.project-card-detail-arrow{transition:transform .16s}.project-card-clickable:has(.project-card-overlay-link:focus-visible) .project-card-detail-arrow{transform:translate(4px,-2px)}.project-card-secondary-action{z-index:2;position:relative}.projects-spotlight{--project-card-link-tone:var(--purple);border:1px solid var(--border);border-top:2px solid var(--purple);border-radius:var(--radius-md);background:var(--surface-3);grid-template-columns:minmax(0,1.6fr) minmax(340px,1fr);transition:border-color .16s;display:grid;overflow:hidden}.projects-spotlight>.project-thumbnail-frame{border-right:1px solid var(--border)}.projects-spotlight .project-thumbnail,.projects-secondary .project-thumbnail{border:0;border-radius:0}.projects-spotlight:focus-within{border-color:color-mix(in srgb,var(--purple)56%,transparent)}.projects-highlight-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;display:grid}.projects-highlight-list>*{border-left:2px solid;padding-left:14px}.projects-secondary{--project-card-link-tone:var(--project-secondary-tone);border:1px solid var(--border);border-top:2px solid var(--project-secondary-tone);border-radius:var(--radius-md);background:var(--surface);flex-direction:column;height:100%;transition:transform .2s cubic-bezier(.2,.8,.2,1),border-color .16s;display:flex;overflow:hidden}.projects-secondary--green{--project-secondary-tone:var(--green)}.projects-secondary--cyan{--project-secondary-tone:var(--cyan)}.projects-secondary>.project-thumbnail-frame{border-bottom:1px solid var(--border)}.projects-secondary:focus-within{border-color:var(--project-secondary-tone)}.projects-archive-row{--project-card-link-tone:var(--cyan);border-top:1px solid var(--border);grid-template-columns:240px minmax(0,1fr) auto;align-items:center;gap:28px;padding:24px 12px;transition:background-color .16s;display:grid}.projects-archive-row:focus-within{background:color-mix(in srgb,var(--cyan)4%,transparent)}.project-detail-header{grid-template-columns:minmax(0,2fr) minmax(300px,1fr);align-items:start;gap:max(48px,min(7vw,104px));display:grid}.project-detail-meta{border-left:1px solid var(--border);gap:24px;padding-left:32px;display:grid}.project-evidence-band{border-top:1px solid var(--border);border-bottom:1px solid var(--border);background:var(--surface-3);grid-template-columns:repeat(3,minmax(0,1fr));margin:48px 0 0;padding:0;display:grid}.project-evidence-band>*{border-top:3px solid;min-width:0;padding:24px}.project-evidence-band>*+*{border-left:1px solid var(--border)}.case-study-numbered-row{border-top:1px solid var(--border);grid-template-columns:56px minmax(0,1fr);gap:20px;padding:24px 0;display:grid}.case-study-numbered-row:last-child{padding-bottom:0}.case-study-solution{border-top:2px solid var(--solution-tone);grid-template-columns:42px minmax(0,1fr);align-items:start;gap:14px;min-height:100%;padding:20px 16px 22px 0;transition:background-color .16s;display:grid}.next-project-link{border-top:1px solid var(--border);border-bottom:1px solid var(--border);color:inherit;grid-template-columns:minmax(0,1fr) minmax(260px,360px) 32px;align-items:center;gap:max(28px,min(5vw,64px));padding:32px 0;text-decoration:none;transition:background-color .16s;display:grid;position:relative}.next-project-link:focus-visible{background:color-mix(in srgb,var(--purple)4%,transparent)}.next-project-thumbnail{border-radius:8px}.next-project-arrow{color:var(--purple);transition:transform .16s}.next-project-link:focus-visible .next-project-arrow{transform:translate(4px,-4px)}.lightbox-thumbnail{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface-2);width:100%;padding:0;display:block;position:relative;overflow:hidden}.lightbox-dialog{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);width:min(1120px,100vw - 32px);max-width:none;box-shadow:var(--shadow-soft);color:var(--text);padding:0;overflow:hidden}.lightbox-dialog::backdrop{background:rgba(10,12,20,.78)}.lightbox-image{background:var(--bg);width:100%;height:min(80vh,820px);position:relative}.lightbox-close{z-index:1;border:1px solid var(--border);background:var(--surface);width:40px;height:40px;color:var(--text);font:500 1.6rem/1 var(--font-body);border-radius:8px;place-items:center;padding:0;display:grid;position:absolute;top:8px;right:8px}.lightbox-close:focus-visible{border-color:var(--cyan);color:var(--cyan)}@media (hover:hover) and (pointer:fine){.project-card-clickable:hover .project-card-detail-arrow{transform:translate(4px,-2px)}.projects-spotlight:hover{border-color:color-mix(in srgb,var(--purple)56%,transparent)}.projects-spotlight:hover .project-thumbnail-image{transform:scale(1.01)}.projects-secondary:hover{border-color:var(--project-secondary-tone);transform:translateY(-3px)}.projects-secondary:hover .project-thumbnail-image{transform:scale(1.015)}.projects-archive-row:hover{background:color-mix(in srgb,var(--cyan)4%,transparent)}.case-study-solution:hover{background:var(--solution-tint)}.next-project-link:hover{background:color-mix(in srgb,var(--purple)4%,transparent)}.next-project-link:hover .next-project-arrow{transform:translate(4px,-4px)}.lightbox-close:hover{border-color:var(--cyan);color:var(--cyan)}}@media (max-width:899px){.projects-spotlight{grid-template-columns:minmax(0,1fr)}.projects-spotlight>.project-thumbnail-frame{border-right:0;border-bottom:1px solid var(--border)}.project-detail-header{grid-template-columns:minmax(0,1fr);gap:40px}.project-detail-meta{border-top:1px solid var(--border);border-left:0;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px 20px;padding-top:28px;padding-left:0}.project-detail-meta>:nth-child(n+3){grid-column:1/-1}.project-evidence-band{grid-template-columns:minmax(0,1fr)}.project-evidence-band>*{border-top-width:2px;padding:16px 18px}.project-evidence-band>*+*{border-left:0}.case-study-solution{background:var(--solution-tint);padding:18px 14px}}@media (min-width:700px) and (max-width:899px){.projects-secondary{grid-template-columns:minmax(190px,.85fr) minmax(0,1.15fr);min-height:230px;display:grid}.projects-secondary>.project-thumbnail-frame{border-right:1px solid var(--border);border-bottom:0;min-height:100%}.projects-secondary .project-thumbnail{height:100%;aspect-ratio:auto!important}.projects-secondary-content{height:100%}.projects-archive-row{grid-template-columns:200px minmax(0,1fr);gap:20px}.projects-archive-row>:last-child{grid-column:2}}@media (max-width:699px){.projects-highlight-list{grid-template-columns:minmax(0,1fr)}.projects-archive-row{grid-template-columns:minmax(0,1fr);gap:16px;padding-left:0;padding-right:0}.projects-archive-row>:last-child{grid-column:1}.projects-archive-row .project-thumbnail{aspect-ratio:2!important}.case-study-numbered-row{grid-template-columns:40px minmax(0,1fr);gap:12px}.next-project-link{grid-template-columns:minmax(0,1fr) 24px;gap:24px 12px}.next-project-thumbnail{grid-area:2/1/auto/-1}.next-project-arrow{grid-area:1/2}}@media (max-width:599px){.project-detail-header{gap:32px}.lightbox-dialog{width:calc(100vw - 16px);max-height:calc(100dvh - 16px)}.lightbox-image{height:min(86dvh,820px)}.lightbox-close{width:44px;height:44px}}@media (prefers-reduced-motion:reduce){.projects-spotlight:-webkit-any(:hover,:focus-within) .project-thumbnail-image{transform:none}.projects-spotlight:-moz-any(:hover,:focus-within) .project-thumbnail-image{transform:none}.projects-spotlight:is(:hover,:focus-within) .project-thumbnail-image{transform:none}.projects-secondary:-webkit-any(:hover,:focus-within){transform:none}.projects-secondary:-moz-any(:hover,:focus-within){transform:none}.projects-secondary:is(:hover,:focus-within){transform:none}.projects-secondary:-webkit-any(:hover,:focus-within) .project-thumbnail-image{transform:none}.projects-secondary:-moz-any(:hover,:focus-within) .project-thumbnail-image{transform:none}.projects-secondary:is(:hover,:focus-within) .project-thumbnail-image{transform:none}.project-card-clickable:-webkit-any(:hover,:focus-within) .project-card-detail-arrow{transform:none}.project-card-clickable:-moz-any(:hover,:focus-within) .project-card-detail-arrow{transform:none}.project-card-clickable:is(:hover,:focus-within) .project-card-detail-arrow{transform:none}.next-project-link:-webkit-any(:hover,:focus-visible) .next-project-arrow{transform:none}.next-project-link:-moz-any(:hover,:focus-visible) .next-project-arrow{transform:none}.next-project-link:is(:hover,:focus-visible) .next-project-arrow{transform:none}}
.cv-header{border-bottom:1px solid var(--border);grid-template-columns:minmax(0,7fr) minmax(320px,5fr);align-items:start;gap:max(48px,min(7vw,104px));padding-bottom:56px;display:grid}.cv-header-meta{border-left:1px solid var(--border);gap:24px;padding-left:32px;display:grid}.cv-document-layout{margin-top:72px}.cv-section-heading{align-items:center;gap:12px;margin-bottom:32px;display:flex}.cv-section-icon{color:var(--cv-section-tone);flex:none;display:inline-flex}.cv-section-icon svg{font-size:1.7rem}.cv-experience-row{border-top:1px solid var(--border);border-left:3px solid transparent;grid-template-columns:180px minmax(0,1fr);gap:32px;padding:36px 24px;transition:background-color .18s,border-color .18s;display:grid}.cv-experience-list{gap:10px;margin:0;padding-left:20px;display:grid}.cv-experience-list li::marker{color:var(--experience-tone)}.cv-supporting-experience,.cv-qualification-row{border-top:1px solid var(--border);justify-content:space-between;align-items:baseline;gap:24px;padding:16px 0;display:flex}.cv-education-row{border-top:1px solid var(--border);grid-template-columns:180px minmax(0,1fr);align-items:start;gap:32px;padding:28px 0;display:grid}.cv-skills-directory{border-top:1px solid var(--border);border-bottom:1px solid var(--border);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.cv-skills-column{min-width:0}.cv-skills-column:first-child{border-right:1px solid var(--border);padding-right:24px}.cv-skills-column:last-child{padding-left:24px}.cv-skill-group{border-bottom:1px solid var(--border);grid-template-columns:24px minmax(0,1fr);align-content:start;align-items:center;gap:12px;min-width:0;padding:18px 16px;transition:background-color .16s;display:grid;position:relative}.cv-skill-group:last-child{border-bottom:0}.cv-skill-group:before{background:var(--skill-tone);content:"";width:2px;position:absolute;top:18px;bottom:18px;left:0}.cv-skill-icon{color:var(--skill-tone);display:inline-flex}.cv-skill-icon svg{font-size:1.25rem}.cv-skill-title{color:var(--skill-tone)}.cv-skill-tools{grid-column:2}.cv-certification-row{border-top:1px solid var(--border);gap:12px;padding:20px 0;display:grid}.cv-certification-link{color:var(--text);-webkit-text-decoration-color:var(--green);text-decoration-color:var(--green);text-underline-offset:4px;align-items:center;gap:6px;font-weight:600;-webkit-text-decoration-line:underline;text-decoration-line:underline;text-decoration-thickness:1px;transition:color .16s;display:inline-flex}.cv-certification-link:-webkit-any(:hover,:focus-visible){color:var(--green)}.cv-certification-link:-moz-any(:hover,:focus-visible){color:var(--green)}.cv-certification-link:is(:hover,:focus-visible){color:var(--green)}@media (hover:hover) and (pointer:fine){.cv-experience-row:hover{border-left-color:var(--experience-tone);background:var(--experience-tint)}.cv-skill-group:hover{background:color-mix(in srgb,var(--skill-tone)6%,transparent)}}@media (max-width:899px){.cv-header{grid-template-columns:minmax(0,1fr);gap:40px;padding-bottom:40px}.cv-header-meta{border-top:1px solid var(--border);border-left:0;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px 20px;padding-top:28px;padding-left:0}.cv-header-meta>:last-child{grid-column:1/-1}.cv-section-heading{margin-bottom:24px}.cv-document-layout{margin-top:40px}.cv-experience-row{border-left-color:var(--experience-tone);grid-template-columns:minmax(0,1fr);gap:18px;padding:28px 0 30px 18px}}@media (max-width:699px){.cv-education-row{grid-template-columns:minmax(0,1fr);gap:14px}.cv-skills-directory{grid-template-columns:minmax(0,1fr)}.cv-skills-column:first-child,.cv-skills-column:last-child{border-right:0;padding:0}.cv-skills-column:first-child .cv-skill-group:last-child{border-bottom:1px solid var(--border)}.cv-skill-group{grid-template-columns:24px minmax(92px,.7fr) minmax(0,1.3fr);gap:10px;padding:16px 4px 16px 14px}.cv-skill-title{overflow-wrap:anywhere;font-size:1rem;line-height:1.35}.cv-skill-tools{grid-column:3}.cv-supporting-experience,.cv-qualification-row{flex-direction:column;align-items:flex-start;gap:6px}}@media (max-width:599px){.cv-header{gap:32px;padding-bottom:32px}.cv-header-meta{grid-template-columns:minmax(0,1fr)}.cv-header-meta>:last-child{grid-column:auto}}
.contact-layout{grid-template-columns:minmax(0,7fr) minmax(360px,5fr);align-items:start;gap:max(64px,min(9vw,128px));display:grid}.contact-address{border-top:2px solid var(--cyan);padding-top:28px;font-style:normal}.contact-action{--contact-tone:var(--cyan);--contact-tint:color-mix(in srgb,var(--contact-tone)7%,transparent);min-width:0;color:var(--text);grid-template-columns:24px minmax(0,1fr) 24px;align-items:center;gap:14px;text-decoration:none;transition:background-color .16s,border-color .16s,color .16s;display:grid}.contact-action--email{--contact-tone:var(--orange)}.contact-action--linkedin{--contact-tone:var(--blue)}.contact-action--phone{--contact-tone:var(--green)}.contact-action--github{--contact-tone:var(--purple)}.contact-action--pdf{--contact-tone:var(--red)}.contact-action--primary,.contact-action--secondary{border:1px solid var(--border);border-radius:10px;padding:16px}.contact-action--primary{border-color:var(--contact-tone);background:var(--contact-tone);color:#10131d}[data-theme=light] .contact-action--primary{color:#fff}.contact-action--primary:focus-visible{border-color:var(--contact-tone);background:color-mix(in srgb,var(--contact-tone)88%,white)}[data-theme=light] .contact-action--primary:focus-visible{background:color-mix(in srgb,var(--contact-tone)88%,black)}.contact-action--secondary:focus-visible{border-color:var(--contact-tone);background:var(--contact-tint);color:var(--contact-tone)}.contact-action--quiet:focus-visible{border-color:var(--contact-tone);background:var(--contact-tint);color:var(--contact-tone)}.contact-action--quiet{border-top:1px solid var(--border);padding:18px 4px}.contact-action-icon{color:var(--contact-tone)}.contact-action--primary .contact-action-icon{color:currentColor}.contact-action-label,.contact-action-value{color:currentColor;display:block}.contact-action-label{opacity:.78;margin-bottom:2px}.contact-action-value{overflow-wrap:anywhere;font-weight:600}.contact-action-arrow{justify-self:end;transition:transform .16s}.contact-action:focus-visible .contact-action-arrow{transform:translate(4px)}.footer-icon-link{--footer-tone:var(--text);--footer-tint:color-mix(in srgb,var(--footer-tone)8%,transparent);width:38px;height:38px;color:var(--text-2);border-radius:8px;place-items:center;text-decoration:none;transition:background-color .16s,color .16s;display:grid}.footer-icon-link--linkedin{--footer-tone:var(--blue)}.footer-icon-link--github{--footer-tone:var(--purple)}.footer-icon-link--cv{--footer-tone:var(--red)}.footer-icon-link:focus-visible{background:var(--footer-tint);color:var(--footer-tone)}@media (hover:hover) and (pointer:fine){.contact-action--primary:hover{border-color:var(--contact-tone);background:color-mix(in srgb,var(--contact-tone)88%,white)}[data-theme=light] .contact-action--primary:hover{background:color-mix(in srgb,var(--contact-tone)88%,black)}.contact-action--secondary:hover,.contact-action--quiet:hover{border-color:var(--contact-tone);background:var(--contact-tint);color:var(--contact-tone)}.contact-action:hover .contact-action-arrow{transform:translate(4px)}.footer-icon-link:hover{background:var(--footer-tint);color:var(--footer-tone)}}@media (max-width:899px){.contact-layout{grid-template-columns:minmax(0,1fr);gap:40px}.footer-icon-link{width:44px;height:44px}}@media (max-width:599px){.contact-layout{gap:32px}}@media (max-width:430px){.contact-action{grid-template-columns:22px minmax(0,1fr) 22px;gap:10px}.contact-action--primary,.contact-action--secondary{padding:14px}.contact-action--quiet{padding:16px 2px}.contact-action--primary .contact-action-value{font-size:.95rem;line-height:1.35}}@media (prefers-reduced-motion:reduce){.contact-action:-webkit-any(:hover,:focus-visible) .contact-action-arrow{transform:none}.contact-action:-moz-any(:hover,:focus-visible) .contact-action-arrow{transform:none}.contact-action:is(:hover,:focus-visible) .contact-action-arrow{transform:none}}
@font-face{font-family:Space Grotesk;font-style:normal;font-weight:400;font-display:swap;src:url(../media/32687112bd2dd8db-s.cfdd66c2.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Space Grotesk;font-style:normal;font-weight:400;font-display:swap;src:url(../media/28868e710e86be81-s.c30238d4.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Space Grotesk;font-style:normal;font-weight:400;font-display:swap;src:url(../media/0c89a48fa5027cee-s.p.4564287c.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Space Grotesk;font-style:normal;font-weight:500;font-display:swap;src:url(../media/32687112bd2dd8db-s.cfdd66c2.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Space Grotesk;font-style:normal;font-weight:500;font-display:swap;src:url(../media/28868e710e86be81-s.c30238d4.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Space Grotesk;font-style:normal;font-weight:500;font-display:swap;src:url(../media/0c89a48fa5027cee-s.p.4564287c.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Space Grotesk;font-style:normal;font-weight:600;font-display:swap;src:url(../media/32687112bd2dd8db-s.cfdd66c2.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Space Grotesk;font-style:normal;font-weight:600;font-display:swap;src:url(../media/28868e710e86be81-s.c30238d4.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Space Grotesk;font-style:normal;font-weight:600;font-display:swap;src:url(../media/0c89a48fa5027cee-s.p.4564287c.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Space Grotesk;font-style:normal;font-weight:700;font-display:swap;src:url(../media/32687112bd2dd8db-s.cfdd66c2.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Space Grotesk;font-style:normal;font-weight:700;font-display:swap;src:url(../media/28868e710e86be81-s.c30238d4.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Space Grotesk;font-style:normal;font-weight:700;font-display:swap;src:url(../media/0c89a48fa5027cee-s.p.4564287c.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Space Grotesk Fallback;src:local(Arial);ascent-override:89.71%;descent-override:26.62%;line-gap-override:0.0%;size-adjust:109.69%}.space_grotesk_92ca16f6-module__qxYaia__className{font-family:Space Grotesk,Space Grotesk Fallback;font-style:normal}.space_grotesk_92ca16f6-module__qxYaia__variable{--font-display:"Space Grotesk","Space Grotesk Fallback"}
@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(../media/7fea77d1d19108bf-s.c949a514.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(../media/1bcd0e671759a44c-s.a3ed597e.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(../media/e15f58668ad64cb8-s.319fa961.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(../media/90c51ce8fb754fe8-s.323431dc.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(../media/57215795b8570f5c-s.0f2c7ba8.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(../media/03fc1b4a8d284b5e-s.p.af4fcd24.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,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 Sans;font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(../media/7fea77d1d19108bf-s.c949a514.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(../media/1bcd0e671759a44c-s.a3ed597e.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(../media/e15f58668ad64cb8-s.319fa961.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(../media/90c51ce8fb754fe8-s.323431dc.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(../media/57215795b8570f5c-s.0f2c7ba8.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(../media/03fc1b4a8d284b5e-s.p.af4fcd24.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,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 Sans;font-style:normal;font-weight:600;font-stretch:100%;font-display:swap;src:url(../media/7fea77d1d19108bf-s.c949a514.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:600;font-stretch:100%;font-display:swap;src:url(../media/1bcd0e671759a44c-s.a3ed597e.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:600;font-stretch:100%;font-display:swap;src:url(../media/e15f58668ad64cb8-s.319fa961.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:600;font-stretch:100%;font-display:swap;src:url(../media/90c51ce8fb754fe8-s.323431dc.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:600;font-stretch:100%;font-display:swap;src:url(../media/57215795b8570f5c-s.0f2c7ba8.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:600;font-stretch:100%;font-display:swap;src:url(../media/03fc1b4a8d284b5e-s.p.af4fcd24.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,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 Sans;font-style:normal;font-weight:700;font-stretch:100%;font-display:swap;src:url(../media/7fea77d1d19108bf-s.c949a514.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:700;font-stretch:100%;font-display:swap;src:url(../media/1bcd0e671759a44c-s.a3ed597e.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:700;font-stretch:100%;font-display:swap;src:url(../media/e15f58668ad64cb8-s.319fa961.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:700;font-stretch:100%;font-display:swap;src:url(../media/90c51ce8fb754fe8-s.323431dc.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:700;font-stretch:100%;font-display:swap;src:url(../media/57215795b8570f5c-s.0f2c7ba8.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:700;font-stretch:100%;font-display:swap;src:url(../media/03fc1b4a8d284b5e-s.p.af4fcd24.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,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 Sans Fallback;src:local(Arial);ascent-override:101.32%;descent-override:27.18%;line-gap-override:0.0%;size-adjust:101.17%}.ibm_plex_sans_3cb8396d-module__cUKRjW__className{font-family:IBM Plex Sans,IBM Plex Sans Fallback;font-style:normal}.ibm_plex_sans_3cb8396d-module__cUKRjW__variable{--font-body:"IBM Plex Sans","IBM Plex Sans Fallback"}
