@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;450;500;550;600;650;700&family=IBM+Plex+Mono:wght@400;500&family=Instrument+Serif:ital@0;1&display=swap');

:root{--green:#11261e;--green-2:#19392c;--lime:#d2ec9c;--paper:#f8f9f5;--white:#fff;--ink:#203a2d;--muted:#627168;--line:#d7dfd5;--light-line:#365143;--sans:'DM Sans',Arial,sans-serif;--serif:'Instrument Serif',Georgia,serif;--mono:'IBM Plex Mono',monospace}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:105px}body{margin:0;background:var(--paper);color:var(--ink);font:16px/1.7 var(--sans);-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}p,h1,h2,h3,h4,figure{margin:0}a,summary{touch-action:manipulation;-webkit-tap-highlight-color:transparent}a:focus-visible,summary:focus-visible{outline:3px solid #78a653;outline-offset:5px}::selection{background:var(--lime);color:var(--green)}.wrap{width:min(1220px,calc(100% - 96px));margin-inline:auto}.skip{position:fixed;left:20px;top:-100px;padding:10px 20px;background:var(--lime);color:var(--green);z-index:100}.skip:focus{top:15px}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}
header{height:90px;display:flex;align-items:center;gap:35px;padding:0 48px;position:sticky;top:0;z-index:10;background:rgba(17,38,30,.97);color:var(--paper);border-bottom:1px solid var(--light-line);backdrop-filter:blur(12px)}.brand{display:flex;align-items:center;gap:13px;font-size:14px;font-weight:650;line-height:1.4}.brand-sub{display:block;font-size:12px;font-weight:400;color:#b5c9ba;letter-spacing:.2px}.brand-box{display:flex;align-items:center;justify-content:center;position:relative;width:40px;height:44px;font-size:27px;font-weight:500;border:1px solid var(--lime);color:var(--lime);padding-top:6px}.brand-box small{font:8px var(--mono);position:absolute;top:4px;left:4px}header nav{display:flex;gap:26px;margin-left:auto;font-size:14px}header nav a{padding:12px 0;transition:color .2s}header nav a:hover{color:var(--lime)}.language-switch{display:flex;gap:1px;border:1px solid #506453;padding:3px}.language-switch a{font:12px var(--mono);padding:7px 8px}.language-switch a[aria-current]{background:var(--lime);color:var(--green)}.language-switch a:hover{background:var(--green-2);color:var(--lime)}
.hero{background:var(--green);color:var(--paper);overflow:hidden}.hero-grid{display:grid;grid-template-columns:1.45fr 1fr;gap:75px;padding-block:62px 48px;align-items:center}.eyebrow,.section-marker{display:block;font:12px/1.65 var(--mono);letter-spacing:1.2px;text-transform:uppercase}.hero .eyebrow{color:var(--lime)}.divider{padding:0 12px;color:#8ca489}h1{font-weight:500;font-size:clamp(54px,6.1vw,86px);line-height:1.03;letter-spacing:-3px;margin:25px 0 24px}em{font-family:var(--serif);font-weight:400;font-style:italic}h1 em{color:var(--lime)}.hero-tagline{font-size:22px;font-weight:450;line-height:1.4;margin-bottom:14px;letter-spacing:-.3px}.hero-intro{font-size:17px;color:#b9cbbf;max-width:510px;line-height:1.8}.actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:29px}.button{min-height:51px;display:inline-flex;justify-content:space-between;align-items:center;gap:25px;padding:13px 20px;font-size:14px;border:1px solid #5a715e;transition:transform .2s,background .2s}.button:hover{transform:translateY(-2px);background:var(--green-2)}.primary{background:var(--lime);border-color:var(--lime);color:var(--green);font-weight:600}.primary:hover{background:#e0f3b8}.cv-languages{display:flex;flex-wrap:wrap;gap:9px;font-size:12px;color:#b9cbbf;margin-top:14px}.cv-languages a{text-decoration:underline;text-underline-offset:4px}.hero-caption{display:flex;align-items:center;gap:12px;color:#b9cbbf;font-size:13px;margin-top:33px}.caption-line{height:1px;width:30px;background:#a1b184}.portrait{max-width:394px;width:100%;justify-self:end;position:relative}.portrait-frame{position:relative;isolation:isolate}.portrait-frame::after{content:'';position:absolute;inset:14px -14px -14px 14px;border:1px solid #718964;z-index:-1}.portrait-frame img{display:block;width:100%;height:auto;aspect-ratio:4/5;object-fit:cover;background:#c4c3bb;border-radius:2px}.portrait-mark{position:absolute;bottom:-12px;left:-22px;display:flex;align-items:center;justify-content:center;padding-top:9px;width:66px;height:70px;background:var(--lime);color:var(--green);font-size:43px;line-height:1;border:5px solid var(--green)}.portrait-mark small{position:absolute;left:7px;top:4px;font:9px var(--mono)}figcaption{display:flex;justify-content:space-between;gap:10px;font:10px var(--mono);letter-spacing:.6px;padding-top:31px;color:#b9cbbf}.hero-bottom{display:flex;align-items:center;justify-content:space-between;gap:20px;border-top:1px solid var(--light-line);padding-block:22px;color:#c0d0c5;font:12px var(--mono)}.hero-bottom a{color:var(--lime)}
.section-marker{color:#50733e;margin-bottom:22px}h2{font-size:clamp(35px,3.6vw,51px);font-weight:500;line-height:1.14;letter-spacing:-1.5px}h2 em{color:#4c7442}.about{display:grid;grid-template-columns:1fr 1.08fr;gap:80px;padding-block:84px}.about-copy{padding-top:6px}.about-copy p{font-size:17px;color:var(--muted);line-height:1.85}.about-copy p+p{margin-top:18px}.section-heading{display:flex;align-items:end;justify-content:space-between;gap:45px;margin-bottom:32px}.section-heading>p{max-width:300px;color:var(--muted);font-size:15px;padding-bottom:4px}.work-section{padding-block:68px;background:#edf1e9;border-block:1px solid var(--line)}.project-index{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:34px}.project-index a{display:flex;gap:22px;align-items:center;justify-content:space-between;font-size:13px;border:1px solid #b9cab5;padding:8px 13px;border-radius:3px;background:#f8faf5}.project-index a:hover{background:#dce8d4}.project-index span{font:11px var(--mono);color:#547649}.project-collection{margin-top:33px;scroll-margin-top:110px}.collection-heading{display:flex;align-items:end;justify-content:space-between;gap:20px;margin-bottom:15px}.collection-heading .eyebrow{font-size:10px;letter-spacing:.8px;color:#6d7d6b;margin-bottom:5px}.collection-heading h3{font-size:20px;line-height:1.4;font-weight:500;letter-spacing:-.3px}.collection-count{font:13px var(--mono);color:#7b8d74}.projects{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;align-items:start}.project{background:var(--white);border:1px solid #d4dfcf;border-radius:3px;transition:border-color .2s,box-shadow .2s}.project:hover{border-color:#829b71;box-shadow:0 4px 15px #203a2d06}.project-accordion>summary{display:flex;align-items:center;gap:15px;min-height:96px;padding:17px 19px;cursor:pointer;list-style:none}.project-accordion>summary::-webkit-details-marker{display:none}.mini-element{width:39px;height:42px;display:flex;align-items:center;justify-content:center;font-size:22px;border:1px solid #b9cbae;color:#476b36;background:#f5f8ef;flex-shrink:0}.project-summary-text{min-width:0;flex:1}.project-code{display:block;color:#697d62;font:10px/1.6 var(--mono);letter-spacing:.3px;margin-bottom:5px}.project-title{display:block;font-size:17px;font-weight:550;line-height:1.35;letter-spacing:-.15px}.detail-icon{font-size:22px;line-height:1;color:#668355;transition:transform .2s}.project-accordion[open]>summary{border-bottom:1px solid var(--line)}.project-accordion[open] .detail-icon{transform:rotate(45deg)}.project-panel{padding:21px}.project-panel>p{font-size:16px;color:#52654f;line-height:1.8;margin-bottom:18px}.tags{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:23px}.tags span{font-size:12px;line-height:1.7;padding:2px 8px;border:1px solid #d6e0cf;border-radius:3px;background:#f8faf5;color:#4c6943}.detail-body h4{font:11px var(--mono);letter-spacing:.5px;color:#527841;margin-bottom:8px}.detail-body p,.detail-body li{font-size:14px;color:#5b6c55;line-height:1.8}.detail-body p{margin-bottom:20px}.detail-body ul{padding-left:18px;margin:0}.detail-body li{margin:5px 0}.planned{border-style:dashed}.work-footnote{font-size:12px;color:#74806d;margin-top:24px}.experience{display:grid;grid-template-columns:.9fr 1.2fr;gap:80px;padding-block:82px}.job{border-top:1px solid var(--line);padding:22px 0;display:block}.job:first-child{border-top:0;padding-top:0}.job-date{font:12px var(--mono);color:#718567;margin-bottom:11px}.job h3{font-size:21px;font-weight:550;line-height:1.4;margin-bottom:3px}.company{display:block;font-size:15px;color:#587546}.job p{margin-top:13px;font-size:15px;color:var(--muted);line-height:1.8}.skills-section{background:var(--green);color:var(--paper);padding-block:70px}.skills-section .section-marker,.skills-section h2 em{color:var(--lime)}.skills-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:30px;margin-top:42px;padding-block:26px 36px;border-block:1px solid var(--light-line)}.skill-number{font:12px var(--mono);color:#9bb17f}.skill-group h3{font-size:20px;font-weight:500;line-height:1.4;margin:15px 0 14px}.skill-group p{font-size:15px;color:#b3c6b8;line-height:1.9}.learning{display:grid;grid-template-columns:1fr 1.3fr 1fr;gap:35px;padding-top:35px}.learning .eyebrow{color:var(--lime);font-size:11px;margin-bottom:13px}.learning h3{font-size:17px;font-weight:500;line-height:1.5;margin-bottom:7px}.learning p{font-size:14px;line-height:1.95;color:#b3c6b8}.cv-section{padding-block:78px}.cv-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.cv-card{border:1px solid #c7d3c0;background:var(--white);padding:24px;display:grid;grid-template-columns:51px 1fr;gap:17px;align-items:center;border-radius:4px}.cv-code{width:51px;height:61px;border:1px solid #b3c4a8;background:#f2f6eb;font:19px var(--mono);color:#4d6b39;display:flex;align-items:center;justify-content:center}.cv-card h3{font-size:23px;font-weight:500;line-height:1.3}.cv-card p{font-size:12px;color:var(--muted);margin-top:7px}.cv-actions{grid-column:1/-1;display:flex;justify-content:space-between;gap:15px;border-top:1px solid var(--line);padding-top:16px;margin-top:3px;font-size:14px}.cv-actions a{padding-block:4px}.cv-actions a:last-child{color:#426c2a;font-weight:550}.cv-actions a:hover{text-decoration:underline;text-underline-offset:5px}.contact{padding-block:67px;background:#e8eee1;border-top:1px solid #cfdac5}.contact-grid{display:grid;grid-template-columns:1.6fr 1fr;align-items:center;gap:80px}.contact h2{font-size:clamp(34px,3.5vw,49px)}.contact p{font-size:15px;color:var(--muted);margin:22px 0}.contact-email{display:inline-flex;align-items:center;gap:30px;font-size:clamp(15px,1.65vw,22px);border-bottom:1px solid #8caa73;padding-bottom:10px}.contact-email span{color:#608740}.contact-links a{display:flex;align-items:center;justify-content:space-between;padding:18px 0;border-bottom:1px solid #c0cfb4;font-size:16px}.contact-links a:hover{color:#597d39}footer{background:var(--green);color:#b2c5b7;font-size:12px}footer>.wrap{display:flex;gap:24px;justify-content:space-between;align-items:center;padding-block:24px}footer a{color:var(--lime)}
.element-composition{max-width:350px;width:100%;justify-self:end;transform:rotate(3deg);position:relative;margin:18px 14px 18px 0}.orbit-label{font:10px/1.6 var(--mono);letter-spacing:1px;color:#b9cbbf;margin-bottom:12px}.element{border:1px solid #b6d68c;padding:19px 23px 15px;color:var(--lime);background:linear-gradient(145deg,#2b4a2f,#152c20 65%);box-shadow:15px 15px 0 -1px var(--green),15px 15px 0 0 var(--light-line)}.element-top{display:flex;justify-content:space-between;font:15px var(--mono)}.element-symbol{font-size:180px;line-height:1.18;font-weight:500;letter-spacing:-15px}.element-period{font-size:100px;letter-spacing:-5px}.element-name{font:17px var(--mono);letter-spacing:7px;margin-bottom:20px}.element-foot{border-top:1px solid #6a8456;padding-top:12px;display:flex;justify-content:space-between;font:10px var(--mono);letter-spacing:1px}.formula{display:flex;justify-content:space-between;gap:8px;margin-top:36px;font:10px var(--mono);color:#b9cbbf;transform:rotate(-3deg)}.formula b{color:var(--lime);font-weight:400}
@media(max-width:1100px){.element-composition{max-width:300px}.element-symbol{font-size:145px}.element-period{font-size:83px}.formula{font-size:9px}}
@media(max-width:620px){.element-composition{justify-self:center;max-width:255px;margin:8px 12px 14px 0}.element-symbol{font-size:138px}.element-period{font-size:77px}.element-top{font-size:12px}.element-name{font-size:15px;margin-bottom:15px}.orbit-label{font-size:9px}.element-foot{font-size:9px}.formula{font-size:8px}}
@media print{.element-composition{display:none}}
@media(min-width:1500px){.hero-grid{padding-block:72px 55px}.portrait{max-width:410px}}
@media(max-width:1100px){.wrap{width:calc(100% - 64px)}header{padding-inline:32px;gap:22px}header nav{gap:17px;font-size:13px}.brand{font-size:13px}.brand-sub{font-size:11px}.hero-grid{gap:40px;grid-template-columns:1.25fr 1fr}h1{font-size:65px}.hero-tagline{font-size:20px}.hero-intro{font-size:16px}.hero .eyebrow{font-size:10px}.portrait{max-width:335px}.portrait figcaption{font-size:9px}.about,.experience{gap:40px}.skills-grid{gap:22px}.skill-group h3{font-size:18px}.cv-card{padding:18px;gap:12px}.cv-card h3{font-size:20px}.contact-grid{gap:40px}}
@media(max-width:800px){header{padding-inline:24px;gap:15px}.brand-sub{display:none}header nav{gap:14px;font-size:12px}.brand{font-size:12px;gap:9px}.brand-box{width:34px;height:38px;font-size:24px}.language-switch a{padding:7px 6px}.hero-grid{gap:30px}.hero h1{font-size:54px;letter-spacing:-2px}.hero-tagline{font-size:18px}.button{padding:12px 14px;font-size:13px;gap:12px}.portrait figcaption{flex-direction:column;gap:7px}.hero-caption{font-size:12px}.about-copy p{font-size:16px}.section-heading{gap:30px}.section-heading>p{max-width:230px;font-size:14px}.skills-grid{grid-template-columns:1fr 1fr;gap:28px}.learning{grid-template-columns:1fr 1fr}.learning>div:last-child{grid-column:1/-1}.cv-card{grid-template-columns:1fr;text-align:left}.cv-code{width:40px;height:48px;font-size:16px}.cv-actions{flex-direction:column;gap:5px}.contact-email{font-size:16px;gap:13px}.experience{grid-template-columns:.85fr 1.15fr}}
@media(max-width:620px){.wrap{width:calc(100% - 40px)}html{scroll-padding-top:135px}header{height:auto;min-height:103px;flex-wrap:wrap;padding:13px 20px 9px;gap:10px;align-content:center}.brand{flex:1;font-size:13px}.brand-sub{display:block;font-size:10px}header nav{width:100%;order:3;justify-content:space-between;border-top:1px solid #34513f;padding-top:5px;gap:12px;margin:0;font-size:12px}header nav a{padding:6px 0}.language-switch{margin-left:auto}.language-switch a{padding:7px 8px}.hero-grid{grid-template-columns:1fr;padding-top:33px;padding-bottom:33px;gap:35px}.hero .eyebrow{font-size:10px;letter-spacing:.7px}.hero h1{font-size:clamp(49px,12vw,72px);line-height:1.03;letter-spacing:-2px;margin-block:20px}.hero-tagline{font-size:20px;max-width:390px}.hero-intro{font-size:16px;max-width:440px}.actions{margin-top:23px}.button{padding:13px 16px;font-size:14px;gap:18px}.hero-caption{margin-top:23px}.cv-languages{font-size:12px}.portrait{max-width:290px;justify-self:center;margin-right:5px}.portrait figcaption{flex-direction:row;font-size:8px;gap:10px}.portrait-frame::after{inset:10px -10px -10px 10px}.portrait-mark{width:56px;height:62px;left:-14px;font-size:37px}.hero-bottom{display:grid;grid-template-columns:1fr 1fr;gap:14px;font-size:10px;padding-block:20px}.hero-bottom>:nth-child(even){text-align:right}.about{grid-template-columns:1fr;gap:26px;padding-block:48px}.section-marker{font-size:10px;margin-bottom:15px}h2{font-size:36px;letter-spacing:-.8px;line-height:1.16}.about-copy p{font-size:16px}.section-heading{display:block;margin-bottom:25px}.section-heading>p{max-width:100%;margin-top:20px;font-size:15px}.work-section{padding-block:45px}.project-index{gap:7px;margin-bottom:27px}.project-index a{font-size:12px;padding:7px 10px;gap:13px}.projects{grid-template-columns:1fr}.project-collection{margin-top:27px;scroll-margin-top:140px}.collection-heading h3{font-size:19px}.collection-heading .eyebrow{font-size:9px}.collection-heading{gap:12px}.collection-count{font-size:12px}.project-accordion>summary{min-height:91px;padding:15px;gap:12px}.project-title{font-size:16px}.project-code{font-size:9px}.mini-element{width:34px;height:38px;font-size:20px}.project-panel{padding:18px}.project-panel>p{font-size:15px}.tags{gap:5px}.tags span{font-size:11px}.work-footnote{font-size:11px}.experience{grid-template-columns:1fr;padding-block:48px;gap:30px}.job h3{font-size:20px}.job p{font-size:15px}.skills-section{padding-block:45px}.skills-grid{gap:27px 20px;margin-top:26px;padding-bottom:29px}.skill-group h3{font-size:17px;margin-top:10px}.skill-group p{font-size:14px;line-height:1.9;overflow-wrap:anywhere}.learning{grid-template-columns:1fr;gap:25px;padding-top:27px}.learning .eyebrow{margin-bottom:8px}.cv-section{padding-block:47px}.cv-grid{grid-template-columns:1fr;gap:10px}.cv-card{padding:19px;grid-template-columns:47px 1fr;gap:14px}.cv-code{width:47px;height:54px;font-size:18px}.cv-card h3{font-size:23px}.cv-actions{flex-direction:row;grid-column:1/-1;gap:12px;padding-top:12px}.contact{padding-block:44px}.contact-grid{grid-template-columns:1fr;gap:24px}.contact h2{font-size:35px}.contact-email{font-size:15px;gap:12px;overflow-wrap:anywhere}.contact-links a{font-size:15px;padding-block:15px}footer>.wrap{flex-wrap:wrap;font-size:11px;gap:10px}footer>.wrap>span:nth-child(2){order:3;flex-basis:100%}footer a{margin-left:auto}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important}}
@media print{header,.hero .actions,.cv-languages,.project-index,.contact,footer,.hero-bottom,.cv-section{display:none!important}body,.hero,.work-section,.skills-section{background:#fff!important;color:#111!important}.wrap{width:100%}.hero-grid{grid-template-columns:1fr 150px;gap:20px;padding:20px 0}.hero h1{font-size:38px}.hero h1 em,h2 em,.hero-intro,.hero-tagline,.hero .eyebrow,.skill-group p,.skills-section .section-marker{color:#111!important}.portrait-mark,.portrait-frame::after{display:none}.portrait{max-width:130px}.portrait figcaption{display:none}.hero-caption{color:#333;margin-top:10px}.about,.experience{padding-block:20px;gap:25px}h2{font-size:28px}.work-section,.skills-section{padding:25px 0}.project{break-inside:avoid}.project-panel{display:block!important}.projects{grid-template-columns:1fr 1fr}.project-accordion>summary{break-after:avoid}.skills-grid,.learning{color:#111}.learning p,.learning .eyebrow{color:#333}.contact-email{color:#111}}
