:root{--bg:#f3f1eb;--ink:#20251f;--muted:#62685f;--line:#d2d2c8;--accent:#345c4b;--paper:#faf9f5}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.65 Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}
.wrap{width:min(1120px,calc(100% - 56px));margin:auto}header{border-bottom:1px solid var(--line)}.top{height:76px;display:flex;align-items:center;justify-content:space-between}
.brand{font-size:13px;font-weight:700;letter-spacing:.1em}nav{display:flex;align-items:center;gap:27px}nav a,footer a{font-size:13px;color:var(--muted);text-decoration:none;transition:color .16s ease}nav a:hover,footer a:hover{color:var(--accent)}
.lang button{font:inherit;font-size:12px;color:var(--muted);padding:5px 7px;border:0;background:transparent;cursor:pointer}.lang .active{color:var(--ink);text-decoration:underline;text-underline-offset:4px}
main{padding:62px 0 76px}.hero{display:grid;grid-template-columns:1fr 365px;gap:72px;align-items:center;padding:15px 0 62px;border-bottom:1px solid var(--line)}
.eyebrow,.label,.num{font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--accent);font-weight:700}
h1{font:500 clamp(46px,7vw,84px)/.98 Georgia,"Times New Roman",serif;letter-spacing:-.055em;margin:19px 0 23px}
.lead{max-width:650px;font:400 clamp(19px,2vw,23px)/1.55 Georgia,"Times New Roman",serif;color:#41483f;margin:0}
.meta{font-size:13px;color:var(--muted);margin:22px 0}.actions{display:flex;gap:19px;flex-wrap:wrap}.actions a{font-size:13px;text-decoration:none;border-bottom:1px solid var(--accent);padding-bottom:3px;color:var(--ink);transition:color .16s ease,border-color .16s ease}.actions a:hover{color:var(--accent)}
.portrait{width:100%;height:430px;object-fit:cover;object-position:center 34%;display:block;background:#d5d4cc}
section{padding:48px 0;border-bottom:1px solid var(--line)}.section-head{display:grid;grid-template-columns:230px 1fr;gap:24px;margin-bottom:23px}
h2{font:500 28px/1.2 Georgia,"Times New Roman",serif;letter-spacing:-.025em;margin:0}
.intro{font-size:14px;color:var(--muted);max-width:590px;margin:2px 0}
.project{display:grid;grid-template-columns:48px 245px 1fr;gap:18px;padding:17px 0;border-top:1px solid var(--line);transition:border-color .16s ease}
.project{transition:background-color .18s ease,border-color .18s ease,padding-left .18s ease}.project:hover{border-color:var(--accent);background:rgba(52,92,75,.035);padding-left:7px}.project .num{font:italic 14px Georgia,serif;letter-spacing:0;text-transform:none;transition:transform .18s ease}.project:hover .num{transform:translateX(2px)}.project h3{font-size:15px;margin:0;font-weight:650;line-height:1.45}.project p{font-size:14px;color:var(--muted);margin:0;max-width:650px}
.skills{display:grid;grid-template-columns:230px 1fr;border-top:1px solid var(--line)}.skill{display:contents}.skill strong,.skill p{padding:14px 0;border-bottom:1px solid var(--line);margin:0}.skill strong{font-size:14px;font-weight:600}.skill p{font-size:14px;color:var(--muted)}
.row{display:grid;grid-template-columns:230px 1fr;gap:24px;padding:16px 0;border-top:1px solid var(--line)}.date{font-size:13px;color:var(--muted)}.row h3{font-size:16px;margin:0;font-weight:650}.org{font-size:13px;color:var(--accent);margin:1px 0 4px}.row p{font-size:14px;color:var(--muted);margin:4px 0 0}
.cert-list{display:grid;grid-template-columns:1fr 1fr;column-gap:42px}.cert{padding:12px 0;border-top:1px solid var(--line)}.cert strong{display:block;font-size:14px;font-weight:600;line-height:1.45}.cert span{font-size:12px;color:var(--muted)}
.edu{display:grid;grid-template-columns:1fr 1fr;gap:38px}.edu h3{font-size:15px;margin:0 0 4px}.edu p{font-size:13px;color:var(--muted);margin:0}
footer{padding:21px 0;display:flex;justify-content:space-between;gap:20px;color:var(--muted);font-size:13px}footer div{display:flex;gap:18px}
.hero>div{animation:rise-in .45s ease-out both}.portrait{animation:fade-in .55s ease-out .08s both}
.reveal{opacity:0;transform:translateY(9px);transition:opacity .42s ease-out,transform .42s ease-out}.reveal.is-visible{opacity:1;transform:translateY(0)}
@keyframes rise-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes fade-in{from{opacity:0}to{opacity:1}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{transition:none!important;animation:none!important}.reveal{opacity:1;transform:none}}
@media(max-width:760px){.wrap{width:calc(100% - 40px)}nav{gap:14px}nav a{display:none}.hero{grid-template-columns:1fr;gap:25px;padding-top:30px}.portrait{height:360px;max-width:430px;grid-row:1}.section-head{grid-template-columns:1fr;gap:8px}.project{grid-template-columns:34px 1fr;gap:10px}.project p{grid-column:2}.skills{grid-template-columns:1fr}.skill{display:grid;grid-template-columns:1fr;gap:0}.skill strong{border:0;padding:12px 0 0}.skill p{padding:2px 0 12px}.row{grid-template-columns:1fr;gap:2px}.cert-list,.edu{grid-template-columns:1fr}.cert-list{column-gap:0}footer{display:block}footer div{margin-top:8px}}
.cv-frame{border:1px solid var(--line);background:var(--paper)}.cv-frame iframe{display:block;width:100%;height:min(82vh,1100px);min-height:620px;border:0}.blog-list .row{transition:padding-left .18s ease,border-color .18s ease}.blog-list .row:hover{padding-left:7px;border-color:var(--accent)}.article-body{max-width:760px;color:#41483f;font-size:16px;line-height:1.85;white-space:pre-wrap;overflow-wrap:anywhere}.page-intro{max-width:740px}.back-link{display:inline-block;margin-bottom:20px;font-size:13px;color:var(--accent);text-decoration:none;border-bottom:1px solid var(--accent)}.post-date{font-size:13px;color:var(--muted)}
