@font-face{font-family:Manrope;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/manrope-latin-400-normal.PaqtzbVb.woff2) format("woff2"),url(/_astro/manrope-latin-400-normal.8tf8FM3T.woff) format("woff")}@font-face{font-family:Manrope;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/manrope-latin-ext-400-normal.CMDvPJRp.woff2) format("woff2"),url(/_astro/manrope-latin-ext-400-normal.C-X6QNXX.woff) format("woff")}@font-face{font-family:Manrope;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/manrope-latin-500-normal.BYYD-dBL.woff2) format("woff2"),url(/_astro/manrope-latin-500-normal.DMZssgOp.woff) format("woff")}@font-face{font-family:Manrope;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/manrope-latin-ext-500-normal.dm74KBQw.woff2) format("woff2"),url(/_astro/manrope-latin-ext-500-normal.EtoS1VaI.woff) format("woff")}@font-face{font-family:Manrope;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/manrope-latin-600-normal.4f0koTD-.woff2) format("woff2"),url(/_astro/manrope-latin-600-normal.BqgrALkZ.woff) format("woff")}@font-face{font-family:Manrope;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/manrope-latin-ext-600-normal._gBojHdJ.woff2) format("woff2"),url(/_astro/manrope-latin-ext-600-normal.u5Pl7hTU.woff) format("woff")}@font-face{font-family:Manrope;font-style:normal;font-display:swap;font-weight:700;src:url(/_astro/manrope-latin-700-normal.BZp_XxE4.woff2) format("woff2"),url(/_astro/manrope-latin-700-normal.DGRFkw-m.woff) format("woff")}@font-face{font-family:Manrope;font-style:normal;font-display:swap;font-weight:700;src:url(/_astro/manrope-latin-ext-700-normal.DYOwVNan.woff2) format("woff2"),url(/_astro/manrope-latin-ext-700-normal.eVCcYqtJ.woff) format("woff")}body.cv-body{display:block;padding:0;background:#101310}body.cv-body:before,body.cv-body:after{display:none}body.cv-body main{width:100%}.portfolio{--paper:#eef0e8;--muted:#a6afa3;--line:#31382f;--lime:#c3ec88;color:var(--paper);font-family:var(--font-body);max-width:1280px;margin:auto;padding:0 56px}.portfolio a{color:inherit}.portfolio a:hover{color:var(--lime)}.portfolio button{font:inherit;cursor:pointer}.portfolio :focus-visible{outline:2px solid var(--lime);outline-offset:5px}.portfolio-nav{min-height:100px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);gap:24px}.wordmark{font-size:34px;font-weight:800;letter-spacing:-.04em}.wordmark span{color:var(--lime)}.nav-sections,.nav-tools{display:flex;align-items:center;gap:30px}.nav-sections a{font-size:14px;padding:14px 0}.nav-tools{gap:16px}.terminal-link{display:flex;gap:12px;align-items:center;padding:10px 15px;border:1px solid var(--line);border-radius:4px;font-size:13px;min-height:44px}.terminal-link span{color:var(--lime);font-family:var(--font-mono)}.portfolio .lang-toggle{background:transparent;border:0;box-shadow:none;padding:6px;color:var(--muted)}.portfolio .lang-dot{display:none}.portfolio .lang-current{color:var(--paper)}.cv-root{display:block;width:100%}.profile-hero{display:grid;grid-template-columns:1.3fr 1fr;gap:64px;padding:78px 0 64px;align-items:center}.hero-main h1{font-size:clamp(48px,5.8vw,78px);font-weight:600;line-height:1.03;letter-spacing:-.04em;text-wrap:balance}.hero-main h1>span{color:var(--lime)}.hero-statement{margin:30px 0 18px;font-size:clamp(22px,2.4vw,30px);line-height:1.3;letter-spacing:-.025em}.hero-intro{max-width:48ch;color:var(--muted);font-size:16px;line-height:1.8}.hero-actions{display:flex;align-items:center;gap:28px;margin-top:30px;flex-wrap:wrap}.button{display:inline-flex;align-items:center;justify-content:space-between;gap:32px;min-height:50px;padding:12px 20px;border-radius:3px;font-size:14px;font-weight:700;transition:background .16s ease-out;position:relative;overflow:hidden}.portfolio .primary{background:var(--lime);color:#172110}.portfolio .primary:hover{background:#d7f4af;color:#172110}.portfolio .primary:before{content:"";position:absolute;inset:0;background:linear-gradient(115deg,transparent 30%,rgba(23,33,16,.16) 46%,rgba(23,33,16,.16) 54%,transparent 70%);transform:translate(-120%);transition:transform .5s ease-out;pointer-events:none}.portfolio .primary:hover:before,.portfolio .primary:focus-visible:before{transform:translate(120%)}.text-link{font-size:14px;display:inline-flex;align-items:center;gap:12px;min-height:44px;text-underline-offset:6px}.text-link:hover{text-decoration:underline}.hero-aside{min-width:0;padding-top:20px}.security-map{position:relative;aspect-ratio:1.25;width:100%;margin-bottom:28px}.security-map svg{width:100%;height:100%}.map-grid{stroke:var(--line);stroke-width:.6;opacity:.65}.map-path{stroke:#66755d;stroke-width:1}.shield{fill:#171e14;stroke:var(--lime);stroke-width:1.2}.shield-inner{stroke:#66755d;stroke-width:.7}.shield-check{stroke:var(--lime);stroke-width:3;stroke-linecap:round;stroke-linejoin:round}.map-nodes{fill:var(--lime)}.map-label{position:absolute;font:10px var(--font-mono);color:var(--muted);letter-spacing:.1em;background:#101310;padding:5px}.map-label-top{right:0;top:4%}.map-label-bottom{left:0;bottom:4%}.aside-line{padding:18px 0;border-top:1px solid var(--line);display:flex;gap:12px;align-items:baseline;font-size:13px;line-height:1.7}.status-dot{width:6px;height:6px;background:var(--lime);border-radius:50%;flex-shrink:0}.aside-bottom{display:flex;justify-content:space-between;color:var(--muted);font:12px var(--font-mono);gap:16px}.focus-strip{display:flex;justify-content:space-between;gap:20px;border-block:1px solid var(--line);padding:21px 0;font:11px var(--font-mono);letter-spacing:.06em;color:var(--muted)}.cv-root section{scroll-margin-top:30px}.section-heading{display:flex;justify-content:space-between;align-items:baseline;gap:24px;margin-bottom:32px}.portfolio h2{font-size:clamp(28px,3vw,40px);font-weight:500;line-height:1.2;letter-spacing:-.035em;text-wrap:balance}.section-heading>span{color:var(--muted);font-size:13px}.work-section,.experience-section,.writing-section{padding-top:86px}.featured-work{display:grid;grid-template-columns:1fr 1fr;gap:28px}.work-feature{min-width:0}.project-art{background:#1c261a;height:236px;padding:25px;display:flex;flex-direction:column;justify-content:space-between;overflow:hidden;border-radius:3px}.work-feature-1 .project-art{background:#202823}.art-caption,.art-foot{font:10px var(--font-mono);letter-spacing:.08em;color:#b5c5aa}.art-foot{font-size:9px}.proxy-diagram{display:flex;align-items:center;gap:12px;font:12px var(--font-mono);color:#b5c5aa}.proxy-diagram strong{font-size:24px;font-weight:500;color:var(--lime);border:1px solid #667f51;padding:21px 16px}.diagram-line{flex:1;height:1px;background:#667f51;position:relative}.diagram-line:after{content:"";position:absolute;right:0;top:-2px;width:5px;height:5px;background:var(--lime)}.radar-diagram{display:flex;flex-direction:column;gap:16px;align-items:center;font:12px var(--font-mono)}.radar-diagram>div{display:flex;gap:8px}.radar-diagram>div>span{border:1px solid #5f7565;padding:12px 9px;font-size:10px}.radar-diagram code{color:#c3ddc9}.project-details{padding:24px 0}.project-title-row{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:16px}.project-title-row h3{font-size:26px;font-weight:500;letter-spacing:-.03em}.project-title-row h3 span{font-size:20px;color:var(--muted)}.project-kind{font:10px var(--font-mono);color:var(--muted);white-space:nowrap}.project-details>p,.project-row p{color:var(--muted);font-size:14px;line-height:1.85}.project-tags{display:flex;gap:8px 14px;flex-wrap:wrap;margin-top:18px;font:11px var(--font-mono);color:#c0ccb8}.project-row{display:grid;grid-template-columns:1fr 2fr;gap:48px;border-top:1px solid var(--line);padding:30px 0}.project-row h3{font-size:18px;font-weight:500;line-height:1.5}.project-row small{display:block;color:var(--muted);margin-top:12px}.experience-row{display:grid;grid-template-columns:1fr 2fr;gap:48px;padding:32px 0;border-top:1px solid var(--line)}.experience-when{display:flex;align-items:flex-start;flex-direction:column;gap:14px;font:12px var(--font-mono);color:var(--muted)}.current-label{color:var(--lime)}.experience-row h3{font-size:24px;font-weight:500}.experience-role{margin:8px 0 20px;color:var(--paper);font-size:14px;line-height:1.7}.experience-row ul{padding-left:17px;font-size:14px;color:var(--muted);line-height:1.9}.experience-row li+li{margin-top:6px}.about-section{display:grid;grid-template-columns:1.3fr 1fr;gap:80px;padding:70px 0;margin-top:50px;border-block:1px solid var(--line)}.about-copy{margin-top:26px;font-size:15px;line-height:1.95;color:var(--muted)}.education-list{margin-top:30px;display:grid;gap:20px}.education-list h3{font-size:15px;font-weight:600;margin-bottom:6px}.education-list p{font-size:13px;line-height:1.7;color:var(--muted)}.skills-column>h3{font-size:22px;font-weight:500;margin-bottom:28px}.skill-group{margin-bottom:20px}.skill-group h4{font-size:12px;color:var(--lime);font-weight:500;margin-bottom:7px}.skill-group p{color:var(--muted);font-size:13px;line-height:1.9}.spoken-languages{display:flex;flex-wrap:wrap;gap:12px;font-size:12px;padding-top:16px;border-top:1px solid var(--line)}.credentials-section{padding-top:60px}.credentials{display:grid;grid-template-columns:repeat(3,1fr);gap:28px;margin-top:28px}.credentials>div{border-top:1px solid var(--line);padding-top:20px}.credentials h3{color:var(--lime);font-size:17px;font-weight:500}.credentials p{font-size:14px;line-height:1.7;margin:8px 0}.credentials span{color:var(--muted);font-size:12px;line-height:1.6}.writing-row{display:grid;grid-template-columns:110px 1fr 24px;align-items:baseline;gap:30px;padding:25px 0;border-top:1px solid var(--line)}.writing-row time{color:var(--muted);font:11px var(--font-mono)}.writing-row h3{font-size:18px;font-weight:500;line-height:1.6}.contact-section{padding:70px 0;margin-top:80px;border-top:1px solid var(--line)}.contact-section h2{color:var(--muted);font-size:25px;margin-bottom:20px}.contact-email{font-size:clamp(24px,4vw,48px);letter-spacing:-.035em;overflow-wrap:anywhere}.contact-links{display:flex;gap:24px;flex-wrap:wrap;align-items:center;margin-top:26px;font-size:13px}.contact-links a,.contact-links button{min-height:44px;display:inline-flex;align-items:center}.contact-links button{border:0;color:var(--muted);background:transparent}.contact-links button:hover,.copy-status{color:var(--lime)}.portfolio-footer{border-top:1px solid var(--line);padding:28px 0;display:flex;justify-content:space-between;flex-wrap:wrap;gap:20px;font-size:11px;color:var(--muted)}@media(max-width:1000px){.portfolio{padding:0 32px}.profile-hero{gap:32px}.nav-sections{gap:20px}.about-section{gap:40px}.proxy-diagram{gap:7px}.proxy-diagram strong{font-size:20px;padding:18px 10px}.art-caption{font-size:9px}}@media(max-width:700px){.portfolio{padding:0 22px}.portfolio-nav{min-height:82px;gap:10px;flex-wrap:wrap;padding:12px 0}.nav-sections{order:3;width:100%;justify-content:space-between;border-top:1px solid var(--line);gap:12px}.nav-tools{gap:8px}.nav-sections a{font-size:13px;padding:12px 0}.wordmark{font-size:29px}.terminal-link{font-size:12px;padding:8px 12px}.profile-hero{grid-template-columns:1fr;padding:46px 0 32px;gap:30px}.hero-main h1{font-size:58px}.hero-statement{font-size:26px;margin-top:25px}.hero-aside{padding:0}.security-map{display:none}.aside-line{font-size:12px;margin:0}.aside-bottom{font-size:11px}.focus-strip{font-size:9px;gap:14px;flex-wrap:wrap;justify-content:flex-start;padding:18px 0}.section-heading{align-items:flex-start;flex-direction:column;gap:12px;margin-bottom:26px}.work-section,.experience-section,.writing-section{padding-top:54px}.featured-work{grid-template-columns:1fr;gap:24px}.project-art{height:215px}.project-details>p,.project-row p{font-size:14px}.project-row,.experience-row{grid-template-columns:1fr;gap:16px;padding:26px 0}.project-row h3{font-size:20px}.experience-when{flex-direction:row;gap:18px}.about-section{grid-template-columns:1fr;gap:40px;padding:45px 0;margin-top:25px}.credentials{grid-template-columns:1fr;gap:24px}.writing-row{grid-template-columns:1fr 20px;gap:10px}.writing-row time{grid-column:1/-1}.writing-row h3{font-size:16px}.contact-section{margin-top:45px;padding:45px 0}.portfolio-footer{line-height:1.8}.hero-actions{gap:22px}.hero-intro{font-size:15px}}@media(max-width:360px){.portfolio{padding:0 16px}.hero-main h1{font-size:49px}.radar-diagram>div{gap:4px}.radar-diagram>div>span{padding:10px 6px}.proxy-diagram{font-size:10px}}@media print{body.cv-body{background:#fff}.portfolio{--paper:#111;--muted:#444;--line:#ccc;--lime:#23451b;padding:0;color:#111}.portfolio-nav,.hero-aside,.hero-actions,.focus-strip,.project-art,.contact-links,.portfolio-footer{display:none}.profile-hero{display:block;padding:0 0 24px}.hero-main h1{font-size:36px}.hero-main h1 br{display:none}.hero-statement{font-size:20px}.featured-work,.about-section{display:block}.work-section,.experience-section,.writing-section,.credentials-section{padding-top:25px}.project-row,.experience-row{gap:20px;padding:16px 0}.project-details,.experience-row,.credentials>div{break-inside:avoid}.about-section,.contact-section{margin-top:25px;padding:25px 0}.skills-column{margin-top:24px}.contact-email{font-size:22px}.portfolio a[href]:after{content:none}}.cv-root.wr-root,.cv-root.art-root{margin:0 auto;padding:110px 28px 60px;font-family:var(--font-body);color:var(--color-text);max-width:900px}.cv-root.art-root{max-width:776px}.wr-root .cv-hero{margin-bottom:44px}.wr-root .cv-hero-label{display:none}.wr-root .cv-hero-name{font-size:clamp(40px,6vw,64px);letter-spacing:-.04em;margin-bottom:20px}.wr-root .cv-hero-tagline{font-size:16px;line-height:1.8;color:var(--color-text-dim)}.wr-root .cv-cta-row{display:flex;gap:24px;margin-top:24px;flex-wrap:wrap}.wr-root .cv-cta{min-height:44px;display:inline-flex;align-items:center}.wr-root .cv-project-tag{font:11px var(--font-mono);color:var(--color-text-dim);padding:4px 8px;border:1px solid var(--color-border)}.wr-root .cv-footer{margin-top:40px;color:var(--color-text-dim);font-size:12px}@media(max-width:640px){.cv-root.wr-root,.cv-root.art-root{padding:120px 22px 40px}}@media print{.cv-root.wr-root,.cv-root.art-root{padding:0;max-width:none}.wr-root .cv-cta-row{display:none}}
