@font-face{font-family:Manrope;font-style:normal;font-weight:400 800;font-display:swap;src:url(/fonts/manrope-latin.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:DM Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/dm-mono-400-latin.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:DM Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/dm-mono-500-latin.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{--paper: #f5f4f0;--paper-tint: #ebf0eb;--ink: #17191a;--muted: #5e6463;--line: #c9c9c3;--soft-line: #dcddd8;--accent: #565b94;--accent-soft: #dedff0;--focus: #174c43;--max-width: 1240px;color:var(--ink);background:var(--paper);font-family:Manrope,Arial,sans-serif;font-synthesis:none}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;min-width:320px;background:linear-gradient(115deg,var(--paper) 0%,#faf8f3 58%,var(--paper-tint) 100%);color:var(--ink)}body,button,a{-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}button{font:inherit}button,a{-webkit-tap-highlight-color:transparent}a:focus-visible,button:focus-visible{outline:3px solid var(--focus);outline-offset:4px}::selection{background:var(--accent);color:#fff}::-webkit-scrollbar{width:12px}::-webkit-scrollbar-track{background:var(--paper)}::-webkit-scrollbar-thumb{background:var(--ink);border:3px solid var(--paper);border-radius:8px}.skip-link{position:fixed;z-index:200;left:1rem;top:-4rem;padding:.65rem .9rem;background:var(--ink);color:#fff;transition:top .2s ease}.skip-link:focus{top:1rem}.layout-grid{width:min(calc(100% - 3rem),var(--max-width));margin:0 auto}.section-shell{padding:clamp(5.5rem,10vw,9.5rem) 0;border-top:1px solid var(--line);scroll-margin-top:4rem}.site-header{position:sticky;top:0;z-index:100;background:color-mix(in srgb,var(--paper) 92%,transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--line)}.site-nav{width:min(calc(100% - 3rem),var(--max-width));min-height:4.5rem;margin:0 auto;display:flex;align-items:center;justify-content:space-between;gap:1rem}.wordmark{display:flex;align-items:baseline;gap:.38rem;font-size:.8rem;letter-spacing:.06em}.wordmark span{font-weight:800;font-size:1rem;letter-spacing:-.04em}.wordmark b{font:500 .67rem/1 DM Mono,monospace;letter-spacing:.12em;color:var(--accent)}.nav-links{display:flex;align-items:center;gap:clamp(.8rem,2vw,1.8rem)}.nav-links a{padding:.35rem 0;font-size:.76rem;font-weight:700;color:var(--muted);border-bottom:1px solid transparent}.nav-links a:hover,.nav-links a.active{color:var(--ink);border-color:var(--ink)}.nav-actions{display:flex;align-items:center;gap:.25rem}.language-picker{position:relative}.language-picker>button,.menu-toggle{display:inline-flex;align-items:center;gap:.35rem;min-height:2.5rem;border:1px solid transparent;background:transparent;color:var(--ink);cursor:pointer;font:500 .7rem/1 DM Mono,monospace}.language-picker>button{padding:0 .55rem}.language-picker>button:hover,.menu-toggle:hover{border-color:var(--ink)}.language-picker [role=menu]{position:absolute;inset:calc(100% + .4rem) 0 auto auto;min-width:8rem;padding:.35rem;background:var(--ink);box-shadow:0 12px 24px #17191a2e}.language-picker [role=menu] button{display:block;width:100%;border:0;background:transparent;color:#fff;padding:.65rem;text-align:start;cursor:pointer;font-size:.8rem}.language-picker [role=menu] button:hover,.language-picker [role=menu] button.selected{background:var(--accent)}.menu-toggle{display:none;justify-content:center;width:2.5rem;font-size:1.25rem}.hero{min-height:calc(100vh - 4.5rem);display:grid;align-items:center;border-top:0}.hero-grid{display:grid;grid-template-columns:1.25fr .75fr;gap:clamp(2rem,8vw,8rem);align-items:end}.availability,.record-kind,.project-proof dt{margin:0;font:500 .66rem/1.4 DM Mono,monospace;letter-spacing:.1em;text-transform:uppercase;color:var(--accent)}.hero h1{max-width:800px;margin:1.1rem 0 1.6rem;font-size:clamp(3.6rem,8.2vw,7.2rem);line-height:.88;letter-spacing:-.055em}.hero h1 span{display:block;margin-top:.35em;font-size:clamp(1.25rem,2.6vw,2.45rem);line-height:1.05;letter-spacing:-.035em;color:var(--accent)}.hero-description{max-width:57ch;margin:0;font-size:clamp(1rem,1.5vw,1.2rem);line-height:1.7;color:var(--muted)}.hero-actions{display:flex;flex-wrap:wrap;gap:.75rem;align-items:center;margin:2.35rem 0 1.5rem}.button{display:inline-flex;align-items:center;gap:.7rem;min-height:3.1rem;padding:0 1.15rem;font-size:.78rem;font-weight:800}.button-primary{background:var(--ink);color:#fff}.button-primary:hover{background:var(--accent)}.button-secondary{border:1px solid var(--ink)}.resume-pending{font:500 .7rem/1.4 DM Mono,monospace;color:var(--muted)}.contact-strip{display:flex;gap:.35rem}.contact-strip a{display:grid;width:2.55rem;height:2.55rem;place-items:center;border:1px solid var(--line)}.contact-strip a:hover{color:#fff;background:var(--ink);border-color:var(--ink)}.portrait-plate{margin:0;position:relative;align-self:center}.portrait-plate:before{content:"";position:absolute;inset:-.75rem .75rem .75rem -.75rem;background:var(--accent-soft);z-index:-1}.portrait-plate img{width:100%;aspect-ratio:4 / 5;object-fit:cover;display:block;filter:grayscale(.1) contrast(1.05)}.portrait-plate figcaption{margin-top:.75rem;font:400 .63rem/1.4 DM Mono,monospace;color:var(--muted);text-align:end}.section-intro{display:grid;grid-template-columns:minmax(0,.95fr) minmax(0,1.05fr);gap:2rem;margin-bottom:clamp(2.5rem,6vw,5rem);align-items:baseline}.section-intro h2,.contact-layout h2{margin:0;font-size:clamp(2.15rem,4vw,4.4rem);letter-spacing:-.05em;line-height:.98}.section-intro p{max-width:53ch;margin:0;line-height:1.75;color:var(--muted)}.featured-projects{display:grid;grid-template-columns:repeat(12,1fr);gap:1px;background:var(--line);border:1px solid var(--line)}.featured-project{background:var(--paper);padding:clamp(1.3rem,3vw,2.4rem);min-height:29rem;display:flex;flex-direction:column;gap:2rem}.project-1{grid-column:span 7}.project-2{grid-column:span 5;background:#eef1ee}.project-3{grid-column:span 12;min-height:23rem;display:grid;grid-template-columns:4rem 1fr auto;align-items:start}.project-index{font:500 .72rem/1 DM Mono,monospace;color:var(--accent)}.project-body{display:flex;flex-direction:column;gap:1.7rem}.project-heading h3{margin:0 0 .65rem;font-size:clamp(1.65rem,3vw,3.1rem);letter-spacing:-.045em}.project-heading p{max-width:47ch;margin:0;line-height:1.65;color:var(--muted)}.project-proof{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;margin:0}.project-proof dd{margin:.55rem 0 0;font-size:.82rem;line-height:1.55}.tech-list{display:flex;flex-wrap:wrap;gap:.45rem;list-style:none;padding:0;margin:0}.tech-list li{padding:.4rem .55rem;border:1px solid var(--line);font:500 .63rem/1 DM Mono,monospace}.project-actions{display:flex;flex-wrap:wrap;gap:.9rem;margin-top:auto}.project-actions a{display:inline-flex;align-items:center;gap:.45rem;font-size:.72rem;font-weight:800;border-bottom:1px solid var(--ink);padding-bottom:.2rem}.project-actions a:hover,.project-archive a:hover{color:var(--accent);border-color:var(--accent)}.project-media{margin:0;overflow:hidden;border:1px solid var(--line)}.project-media img{width:100%;aspect-ratio:16 / 9;display:block;object-fit:cover}.project-archive{margin-top:clamp(4.5rem,9vw,8rem)}.project-archive h3,.evidence-columns h3{margin:0 0 1.2rem;font-size:1.1rem;letter-spacing:-.025em}.project-archive ul{list-style:none;margin:0;padding:0;border-top:1px solid var(--line)}.project-archive li{display:grid;grid-template-columns:1.2fr 1fr;gap:1rem;padding:1rem 0;border-bottom:1px solid var(--line)}.project-archive li>div:first-child{display:flex;gap:1rem;align-items:baseline}.project-archive strong{font-size:.92rem}.project-archive li span{font-size:.75rem;color:var(--muted)}.archive-meta{justify-self:end;display:flex;align-items:center;gap:.7rem;text-align:end}.archive-meta a{display:grid;width:1.75rem;height:1.75rem;place-items:center;border:1px solid var(--line)}.experience-section{background:var(--ink);color:#f9faf7}.experience-section .section-intro p,.experience-section .record-organization,.experience-section .experience-ledger li>div>p:last-child{color:#c6cac6}.experience-section .section-intro h2{color:#fff}.experience-section .record-kind{color:#c7c9fc}.experience-ledger{padding:0;margin:0;list-style:none;border-top:1px solid #4a4c4c}.experience-ledger li{display:grid;grid-template-columns:minmax(10rem,.6fr) 1.4fr;gap:2rem;padding:1.6rem 0;border-bottom:1px solid #4a4c4c}.experience-ledger time{font:400 .7rem/1.5 DM Mono,monospace;color:#c7c9fc}.experience-ledger h3{margin:.45rem 0 .25rem;font-size:1.12rem}.experience-ledger p{margin:0;font-size:.84rem;line-height:1.62}.record-organization{margin-bottom:.8rem!important}.evidence-columns{display:grid;grid-template-columns:1fr 1fr;gap:clamp(2rem,8vw,8rem)}.strength-list,.certification-list{list-style:none;margin:0;padding:0;border-top:1px solid var(--line)}.strength-list li,.certification-list li{display:grid;gap:.35rem;padding:1.05rem 0;border-bottom:1px solid var(--line)}.strength-list strong,.certification-list strong{font-size:.92rem}.strength-list span,.certification-list span{max-width:50ch;font-size:.78rem;line-height:1.55;color:var(--muted)}.contact-section{padding-bottom:0}.contact-layout{display:grid;grid-template-columns:1fr 1fr;gap:3rem;align-items:end;min-height:48vh}.contact-layout>div>p{max-width:45ch;margin:1.4rem 0 0;color:var(--muted);line-height:1.7}.contact-links{display:grid;gap:2rem;justify-items:start}.email-link{display:inline-flex;align-items:center;gap:.75rem;padding-bottom:.35rem;font-size:clamp(1.25rem,2.4vw,2.3rem);font-weight:800;letter-spacing:-.04em;border-bottom:2px solid var(--ink)}.email-link:hover{color:var(--accent);border-color:var(--accent)}.contact-links>div{display:flex;flex-wrap:wrap;gap:.7rem 1.1rem}.contact-links>div a{display:inline-flex;align-items:center;gap:.35rem;font-size:.75rem;font-weight:700}.contact-links>div a:hover{color:var(--accent)}.contact-section footer{width:min(calc(100% - 3rem),var(--max-width));margin:clamp(4rem,8vw,7rem) auto 0;padding:1.25rem 0;border-top:1px solid var(--line);color:var(--muted);font:400 .65rem/1.4 DM Mono,monospace}[dir=rtl] .wordmark,[dir=rtl] .portrait-plate figcaption{direction:ltr}[dir=rtl] .archive-meta{justify-self:start;text-align:start}@media(max-width:760px){.layout-grid,.site-nav{width:min(calc(100% - 2rem),var(--max-width))}.site-nav{min-height:4rem}.menu-toggle{display:inline-flex}.nav-links{display:none;position:fixed;inset:4rem 0 auto;padding:1.25rem 1rem 1.5rem;background:var(--paper);border-bottom:1px solid var(--line);flex-direction:column;align-items:stretch;gap:0}.nav-links.open{display:flex}.nav-links a{padding:.95rem 0;border-bottom-color:var(--soft-line)}.hero{min-height:auto;padding-top:5rem}.hero-grid,.section-intro,.contact-layout,.evidence-columns{grid-template-columns:1fr}.hero-grid{gap:3.5rem}.portrait-plate{width:min(75%,24rem);justify-self:end}.section-intro{gap:1rem}.featured-projects{grid-template-columns:1fr}.project-1,.project-2,.project-3{grid-column:auto;min-height:auto;display:flex}.featured-project{padding:1.4rem}.project-proof{grid-template-columns:1fr}.project-archive li{grid-template-columns:1fr;gap:.5rem}.project-archive li>div:first-child{flex-direction:column;gap:.25rem}.archive-meta{justify-self:start;text-align:start;flex-direction:row-reverse}.experience-ledger li{grid-template-columns:1fr;gap:.7rem}.contact-layout{min-height:auto}.contact-links{gap:1.5rem}.email-link{overflow-wrap:anywhere}.section-shell{padding:5rem 0}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.scroll-progress{position:absolute;inset:auto 0 0;height:2px;overflow:hidden;pointer-events:none}.scroll-progress span{display:block;height:100%;background:var(--ink);transform-origin:0 50%;transform:scaleX(0)}[dir=rtl] .scroll-progress span{transform-origin:100% 50%}.nav-links a.nav-resume{padding:.45rem .7rem;border:1px solid var(--ink);font-weight:800}.nav-links a.nav-resume:hover{color:#fff;background:var(--ink);border-color:var(--ink)}.ledger-meta{display:flex;flex-direction:column;gap:.4rem}.record-index{font:500 .66rem/1 DM Mono,monospace;letter-spacing:.12em;color:#9a9ddc}.cv-section{background:var(--paper-tint)}.cv-actions{display:flex;flex-wrap:wrap;align-items:center;gap:.75rem;margin:0 0 clamp(1.6rem,3vw,2.6rem)}.cv-document{display:grid;gap:clamp(1.5rem,3vw,2.4rem);padding:clamp(1.5rem,3.5vw,3rem);background:#fdfdfb;border:1px solid var(--line)}.cv-masthead{display:flex;flex-wrap:wrap;gap:1.2rem 2rem;justify-content:space-between;align-items:flex-start;padding-bottom:1.4rem;border-bottom:1px solid var(--ink)}.cv-identity h3{margin:0;font-size:clamp(1.6rem,3vw,2.4rem);letter-spacing:-.045em}.cv-role{margin:.45rem 0 0;font:500 .68rem/1.4 DM Mono,monospace;letter-spacing:.1em;text-transform:uppercase;color:var(--accent)}.cv-contact{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.3rem 1.4rem;margin:0;padding:0;list-style:none;font:400 .68rem/1.5 DM Mono,monospace;color:var(--muted)}.cv-contact a{display:inline-flex;align-items:center;gap:.3rem}.cv-contact a:hover{color:var(--accent)}.cv-block h4{margin:0 0 .9rem;font:500 .66rem/1.4 DM Mono,monospace;letter-spacing:.1em;text-transform:uppercase;color:var(--accent)}.cv-summary{max-width:80ch;margin:0;line-height:1.72}.cv-toolbox{display:grid;grid-template-columns:repeat(auto-fit,minmax(11rem,1fr));gap:1.1rem;margin:0}.cv-toolbox dt{margin-bottom:.4rem;font-size:.8rem;font-weight:800}.cv-toolbox dd{margin:0;font:400 .7rem/1.6 DM Mono,monospace;color:var(--muted)}.cv-columns{display:grid;grid-template-columns:1.05fr .95fr;gap:clamp(1.5rem,4vw,3rem)}.cv-column{display:grid;gap:clamp(1.6rem,3vw,2.2rem);align-content:start}.cv-record{display:grid;gap:1.2rem;margin:0;padding:0;list-style:none}.cv-record li{padding-bottom:1.2rem;border-bottom:1px solid var(--soft-line)}.cv-record li:last-child{padding-bottom:0;border-bottom:0}.cv-record-head{display:flex;flex-wrap:wrap;gap:.4rem .8rem;align-items:baseline;justify-content:space-between}.cv-record-head h5{margin:0;font-size:.95rem}.cv-record-kind{font:500 .6rem/1.4 DM Mono,monospace;letter-spacing:.1em;text-transform:uppercase;color:var(--accent)}.cv-record-org{margin:.35rem 0 .2rem;font-size:.8rem;font-weight:700}.cv-record time{display:block;margin-bottom:.5rem;font:400 .68rem/1.5 DM Mono,monospace;color:var(--muted)}.cv-record li>p:last-child{margin:0;font-size:.82rem;line-height:1.62;color:var(--muted)}.cv-plain-list{display:grid;gap:.9rem;margin:0;padding:0;list-style:none}.cv-plain-list li{display:grid;gap:.2rem}.cv-plain-list strong{font-size:.84rem}.cv-plain-list span{font-size:.76rem;color:var(--muted)}.cv-plain-list em{font:400 .66rem/1.4 DM Mono,monospace;font-style:normal;color:var(--accent)}.cv-language-list{display:grid;gap:.55rem;margin:0;padding:0;list-style:none}.cv-language-list li{display:flex;justify-content:space-between;gap:1rem;padding-bottom:.55rem;border-bottom:1px solid var(--soft-line);font-size:.82rem}.cv-language-list li:last-child{padding-bottom:0;border-bottom:0}.cv-language-level{font:400 .68rem/1.4 DM Mono,monospace;color:var(--muted)}.cv-tag-list{display:flex;flex-wrap:wrap;gap:.4rem;margin:0;padding:0;list-style:none}.cv-tag-list li{padding:.38rem .5rem;border:1px solid var(--line);font:500 .62rem/1 DM Mono,monospace}.cv-footnote{padding-top:1.1rem;border-top:1px solid var(--line);font:400 .66rem/1.5 DM Mono,monospace;color:var(--muted)}.contact-section footer{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.6rem 1.5rem}.back-to-top{display:inline-flex;align-items:center;gap:.4rem;font-weight:500;letter-spacing:.1em;text-transform:uppercase}.back-to-top:hover{color:var(--accent)}@media(max-width:760px){.cv-toolbox,.cv-columns,.cv-contact{grid-template-columns:1fr}.cv-document{padding:1.25rem}.cv-masthead{flex-direction:column;gap:1rem}.nav-links a.nav-resume{padding:.95rem 0;border:0;border-bottom:1px solid var(--soft-line)}.nav-links a.nav-resume:hover{color:var(--accent);background:transparent}}@media print{@page{margin:10mm}html,body{background:#fff!important;color:#000}.site-header,.skip-link,.scroll-progress{display:none!important}main>section:not(.cv-section){display:none!important}.cv-section{background:#fff!important;border:0!important;padding:0!important}.cv-section .layout-grid{width:100%}.cv-section .section-intro,.cv-actions{display:none!important}.cv-document{padding:0;border:0;gap:.7rem;background:#fff;color:#000}.cv-masthead{padding-bottom:.85rem;border-bottom-color:#000}.cv-identity h3{font-size:1.55rem}.cv-block h4{margin-bottom:.45rem}.cv-summary{font-size:.76rem;line-height:1.45}.cv-column{gap:.9rem}.cv-record{gap:.55rem}.cv-record li{padding-bottom:.55rem}.cv-record-head h5{font-size:.8rem}.cv-record-org{font-size:.7rem;margin:.2rem 0 .15rem}.cv-record time{margin-bottom:.2rem;font-size:.6rem}.cv-record li>p:last-child{font-size:.7rem;line-height:1.42}.cv-plain-list{gap:.42rem}.cv-plain-list strong{font-size:.74rem}.cv-plain-list span{font-size:.66rem}.cv-language-list{gap:.3rem}.cv-language-list li{padding-bottom:.3rem;font-size:.72rem}.cv-toolbox dt{margin-bottom:.22rem;font-size:.7rem}.cv-toolbox dd{font-size:.6rem;line-height:1.42}.cv-tag-list{gap:.3rem}.cv-tag-list li{padding:.25rem .4rem;font-size:.56rem}.cv-footnote{padding-top:.5rem;font-size:.56rem}.cv-masthead{flex-direction:row;align-items:flex-start;gap:.8rem 1.5rem;padding-bottom:.7rem}.cv-identity h3{font-size:1.4rem}.cv-contact{grid-template-columns:repeat(2,minmax(0,1fr));gap:.1rem 1.2rem;font-size:.6rem}.cv-toolbox{grid-template-columns:repeat(2,minmax(0,1fr));gap:.6rem 1.2rem}.cv-columns{grid-template-columns:1fr 1fr;gap:1.3rem}.cv-record li,.cv-block,.cv-plain-list li,.cv-language-list li{break-inside:avoid;page-break-inside:avoid}.cv-contact,.cv-contact a,.cv-summary,.cv-record time,.cv-plain-list span,.cv-toolbox dd{color:#333}.cv-role,.cv-block h4,.cv-record-kind,.cv-plain-list em{color:#3b3f78}a{text-decoration:none}}
