:root{color:#343a37;font-synthesis:none;--muted:#5e6861;--accent:#315f4e;--line:#e2e5df;--soft:#f0f3eb;background:#fcfcfa;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Arial,sans-serif}*{box-sizing:border-box}body{margin:0}a{color:inherit;text-underline-offset:.22em}a:focus-visible{outline-offset:5px;outline:3px solid #9b6034}::selection{background:#dce6cf}.wrap{width:min(1180px,100% - 80px);margin-inline:auto}.site-header{border-bottom:1px solid var(--line);background:#fcfcfa}.header-inner{justify-content:space-between;align-items:center;gap:32px;min-height:94px;display:flex}.wordmark{letter-spacing:-.04em;font-size:1.25rem;font-weight:750;text-decoration:none}.wordmark span,.accent{color:var(--accent)}nav{align-items:center;gap:32px;display:flex}nav a{color:var(--muted);padding:10px 0;font-size:.95rem;text-decoration:none;position:relative}nav a:hover,nav a[aria-current=page]{color:var(--accent)}nav a[aria-current=page]:after{content:"";background:var(--accent);height:2px;position:absolute;bottom:0;left:0;right:0}.site-grid{grid-template-columns:235px minmax(0,1fr);align-items:start;gap:76px;min-height:calc(100vh - 178px);padding-block:58px 90px;display:grid}.profile{scrollbar-width:thin;max-height:calc(100dvh - 64px);position:sticky;top:32px;overflow-y:auto}.profile-avatar{outline:1px solid var(--line);width:130px;height:130px;color:var(--accent);background:#e8eddf;border:6px solid #fcfcfa;border-radius:50%;place-items:center;margin:1px 0 26px 1px;text-decoration:none;display:grid}.profile-avatar>span{letter-spacing:-8px;padding-right:7px;font:italic 68px Georgia,serif}.profile-avatar>span>span{color:#8a9e79}.profile h2{letter-spacing:-.035em;margin:0 0 12px;font-size:1.25rem}.profile p{color:var(--muted);max-width:230px;margin:0;font-size:.9rem;line-height:1.75}.social-links{margin:24px 0 0;padding:0;list-style:none}.social-links li+li{margin-top:5px}.social-links a,.social-pending{border-radius:6px;align-items:center;gap:11px;min-height:42px;margin-left:-10px;padding:7px 10px;font-size:.9rem;text-decoration:none;display:flex}.social-links a:hover{background:var(--soft);color:var(--accent)}.social-links svg{flex-shrink:0}.external-mark{color:var(--muted);margin-left:auto;display:flex}.external-mark svg{width:14px;height:14px;transform:rotate(-45deg)}.social-pending{color:var(--muted)}.social-pending small{margin-top:3px;font-size:.68rem;display:block}.page-content{min-width:0}.page-heading{margin-bottom:30px}.eyebrow{text-transform:uppercase;letter-spacing:.13em;color:var(--accent);margin:0 0 16px;font-size:.68rem;font-weight:650;line-height:1.8}h1,h2,h3{letter-spacing:-.035em;line-height:1.2}h1{margin:0 0 20px;font-size:clamp(2.5rem,4.5vw,3.65rem);font-weight:700}h2{margin:0 0 16px;font-size:1.65rem;font-weight:650}h3{font-size:1.3rem}.lead{color:var(--muted);max-width:620px;margin:0;font-size:1.3rem;line-height:1.55}.prose{max-width:720px;font-size:1rem;line-height:1.85}.prose p{margin:0 0 18px}.prose img{max-width:100%;height:auto}.prose pre{border-radius:6px;padding:18px;overflow-x:auto}.prose a{color:var(--accent)}.interests{flex-wrap:wrap;gap:8px;margin:26px 0 0;padding:0;list-style:none;display:flex}.interests li{background:var(--soft);color:var(--accent);border-radius:4px;padding:7px 11px;font-size:.72rem}.section{border-top:1px solid var(--line);margin-top:42px;padding-top:34px}.section-title-row{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:16px;display:flex}.section-title-row h2{margin-bottom:0}.text-link{color:var(--accent);align-items:center;gap:9px;font-size:.88rem;font-weight:600;text-decoration:none;display:inline-flex}.text-link:hover{text-decoration:underline}.text-link svg{width:17px;height:17px}.section-intro{color:var(--muted);max-width:640px;margin:18px 0 24px;font-size:.93rem;line-height:1.75}.project-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:22px;display:grid}.project-card{border:1px solid var(--line);background:#fff;border-radius:8px;min-width:0;padding:25px}.card-top{color:var(--muted);justify-content:space-between;align-items:center;font-size:.75rem;display:flex}.badge{background:var(--soft);border-radius:4px;padding:5px 8px;font-size:.65rem}.card-content{margin-top:34px}.card-content .eyebrow{margin-bottom:13px;font-size:.62rem}.card-content h3{margin:0 0 14px}.card-content>p:last-child{color:var(--muted);font-size:.9rem;line-height:1.75}.card-note{color:var(--muted);border-top:1px solid var(--line);margin:24px 0 0;padding-top:16px;font-size:.7rem}.empty-state{border:1px solid var(--line);background:#f6f7f2;border-radius:8px;margin-top:34px;padding:32px}.empty-state h2{margin-top:14px;font-size:1.4rem}.empty-state p{color:var(--muted);margin-bottom:0;font-size:.95rem;line-height:1.8}.article-list article{border-top:1px solid var(--line);padding-block:28px}time{color:var(--muted);font-size:.8rem}.article-list h2{margin-top:12px}.article-list p{color:var(--muted);line-height:1.8}.site-footer{border-top:1px solid var(--line);min-height:84px;color:var(--muted);justify-content:space-between;align-items:center;gap:20px;font-size:.75rem;display:flex}.site-footer a{place-items:center;min-width:44px;min-height:44px;display:grid}.skip-link{z-index:10;background:#fff;padding:12px;position:absolute;top:-100px;left:16px}.skip-link:focus{top:16px}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@media (width<=1000px){.site-grid{grid-template-columns:200px minmax(0,1fr);gap:40px}.wrap{width:calc(100% - 48px)}.project-grid{grid-template-columns:1fr}}@media (width<=700px){.wrap{width:calc(100% - 36px)}.header-inner{flex-wrap:wrap;gap:12px;min-height:0;padding-block:22px}nav{gap:26px;width:100%}nav a{font-size:.88rem}.site-grid{grid-template-columns:1fr;gap:36px;padding-block:30px 56px}.profile{border-bottom:1px solid var(--line);grid-template-columns:76px minmax(0,1fr);gap:20px;max-height:none;padding-bottom:26px;display:grid;position:static;overflow:visible}.profile-avatar{border-width:4px;width:74px;height:74px;margin:1px}.profile-avatar>span{letter-spacing:-5px;padding-right:5px;font-size:40px}.profile h2{font-size:1.12rem}.profile p{max-width:440px;font-size:.83rem}.social-links{flex-wrap:wrap;gap:10px 22px;margin-top:12px;display:flex}.social-links li+li{margin-top:0}.social-links a,.social-pending{font-size:.8rem}.social-links svg{width:18px;height:18px}.external-mark{display:none}.social-pending small{margin-left:5px;font-size:.65rem;display:inline}h1{font-size:2.6rem}.lead{font-size:1.15rem}.page-heading{margin-bottom:24px}.section{margin-top:32px;padding-top:28px}.empty-state{padding:24px}.project-grid{grid-template-columns:1fr}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}.cv-actions{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;margin-bottom:24px;display:flex}.cv-download{background:var(--accent);color:#fff;border-radius:6px;padding:12px 20px;font-size:.9rem;font-weight:600;text-decoration:none;display:inline-block}.cv-download:hover{background:#244b3c}.cv-viewer{border:1px solid var(--line);background:#fff;border-radius:6px;width:100%;height:80vh;min-height:480px;display:block}@media (width<=700px){.cv-viewer{height:70vh;min-height:400px}}.project-card{flex-direction:column;display:flex}.card-content h3 a{text-decoration:none}.card-content h3 a:hover{color:var(--accent);text-decoration:underline}.project-stack{color:var(--muted);flex-wrap:wrap;gap:6px 12px;margin:8px 0 24px;padding:0;font-size:.72rem;line-height:1.6;list-style:none;display:flex}.card-links{border-top:1px solid var(--line);justify-content:space-between;align-items:center;gap:10px;margin-top:auto;padding-top:14px;display:flex}.card-links .text-link{font-size:.8rem}.repository-link{min-width:44px;min-height:44px;color:var(--muted);border-radius:5px;place-items:center;display:grid}.repository-link:hover{background:var(--soft);color:var(--accent)}.back-link{margin-bottom:28px}.project-meta{flex-wrap:wrap;align-items:center;gap:24px;display:flex}.prose li{margin-bottom:10px}
