:root{--text:#6b6375;--text-h:#08060d;--bg:#fafaf9;--border:#e5e4e7;--code-bg:#f4f3ec;--accent:#2563eb;--accent-bg:#2563eb14;--accent-border:#2563eb59;--social-bg:#f4f3ec80;--hero-ink:#4d4d33;--hero-ink-hover:#8a8a5c;--hero-ink-fg:#f4f4f1;--hero-beige:#f5f5f0;--hero-beige-hover:#e7e7da;--hero-muted:#727272;--hero-avatar-ring:#f5f5f0;--shadow:#0000000f 0 10px 15px -3px, #00000008 0 4px 6px -2px;--sans:"Inter", system-ui, sans-serif;--heading:"Inter", system-ui, sans-serif;--mono:ui-monospace, Consolas, monospace;font:17px/148% var(--sans);letter-spacing:.16px;color:var(--text);background:var(--bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transition:background .3s,color .3s}@container (width<=500px){.hos-500{display:none}}@container (width<=350px){.hos-350{display:none}}@media screen and (width<=750px){.m-hos-750{display:none}}[data-theme=dark]{--text:#9ca3af;--text-h:#f3f4f6;--bg:#16171d;--border:#2e303a;--code-bg:#1f2028;--accent:#60a5fa;--accent-bg:#60a5fa1f;--accent-border:#60a5fa73;--social-bg:#2f303a80;--hero-ink:#e8e8ed;--hero-ink-hover:#c4c4cc;--hero-ink-fg:#16171d;--hero-beige:#2e303a;--hero-beige-hover:#3d4050;--hero-muted:#9ca3af;--hero-avatar-ring:#3d4050;--shadow:#0006 0 10px 15px -3px, #00000040 0 4px 6px -2px}body{margin:0}#root{text-align:center;box-sizing:border-box;flex-direction:column;width:100%;max-width:100%;min-height:100svh;margin:0 auto;transition:border-color .3s,background .3s;display:flex}h1,h2,h3{font-family:var(--heading);color:var(--text-h);font-weight:500}h1{letter-spacing:-1.5px;margin:0;font-size:56px;line-height:1.1}@media (width<=1024px){h1{font-size:36px}}h2{letter-spacing:-.22px;margin:0 0 8px;font-size:24px;line-height:118%}@media (width<=1024px){h2{font-size:20px}}h3{margin:0 0 6px;font-size:18px;font-weight:600}p{margin:0}code,.mono{font-family:var(--mono);color:var(--text-h);border-radius:4px;display:inline-flex}code{background:var(--code-bg);padding:3px 7px;font-size:15px;line-height:135%}a{color:inherit;text-decoration:none}@media (width>=401px){.m-400{display:none}}.portrait{text-align:left;container-type:inline-size}.content-wrap{box-sizing:border-box;width:100%;max-width:1000px;margin:0 auto;padding:0 16px 32px}.top-nav{flex-direction:row;align-items:center;gap:20px;max-width:1000px;height:60px;margin:0 auto;padding:0 16px;display:flex}.nav-avatar{object-fit:cover;border-radius:50%;width:40px;height:40px}.nav-name{color:var(--text-h);margin:0;font-size:.9rem}.nav-spacer{flex:1}.nav-text-link{color:inherit;border-bottom:2px solid var(--hero-ink);cursor:pointer;padding:4px 8px;font-size:.9rem;text-decoration:none;transition:all .2s ease-in-out}.nav-text-link:hover{background-color:var(--hero-ink);color:var(--hero-ink-fg)}.theme-toggle{cursor:pointer;opacity:.85;background:0 0;border:none;padding:4px 8px;font-size:16px;line-height:1;transition:opacity .2s}.theme-toggle:hover{opacity:1}.hero-header{flex-direction:row;align-items:center;gap:32px;display:flex}.hero-col{flex:1;width:100%}.hero-col-intro{padding:96px 0}.hero-col-bio{flex-direction:column;justify-content:flex-end;min-height:210px;padding:96px 0;display:flex}.hero-avatar{border:2px solid var(--hero-avatar-ring);object-fit:cover;transform-origin:0;border-radius:50%;width:70px;height:70px;margin:0 auto 16px 0;transition:transform .2s ease-in-out;transform:translate(-2px)}.hero-avatar:hover{transform:scale(3)}.hero-greeting{color:var(--text-h);margin:0;font-size:3rem;font-weight:400;line-height:1.1}.hero-role{color:var(--text-h);margin:0 0 16px;font-size:2rem;font-weight:400;line-height:1.1}.hero-role-word{animation:.35s ease-out role-in;display:inline-block}@keyframes role-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.hero-bio{color:var(--hero-muted);max-width:36rem;margin:0 0 16px;font-size:1rem;line-height:1.5}.hero-actions{flex-wrap:wrap;gap:8px;display:flex}.btn{cursor:pointer;border:2px solid var(--hero-ink);border-radius:4px;padding:8px 16px;font-size:.9rem;text-decoration:none;transition:all .2s ease-in-out;display:inline-block}.btn-primary{background-color:var(--hero-ink);color:var(--hero-ink-fg)}.btn-primary:hover{background-color:var(--hero-ink-hover);border-color:var(--hero-ink-hover)}.btn-secondary{background-color:var(--hero-beige);color:var(--hero-ink)}.btn-secondary:hover{background-color:var(--hero-beige-hover)}@container (width<=750px){.hero-header{flex-direction:column;align-items:flex-start;gap:16px}.hero-col-intro,.hero-col-bio{padding:32px 0}.hero-col-bio{justify-content:flex-start;min-height:0}.hero-greeting{font-size:2.25rem}.hero-role{font-size:1.5rem}}.section{text-align:left;padding:32px 0}.section .section-header{align-items:center;gap:12px;margin-bottom:20px;display:flex}.section .section-header .section-icon{color:var(--accent);font-size:20px}.section .section-header h2{font-size:20px}.section .section-header .section-link{color:var(--text);border-radius:6px;margin-left:auto;padding:4px 12px;font-size:14px;transition:all .2s}.section .section-header .section-link:hover{color:var(--text-h);background:var(--accent-bg)}.project-grid{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px;display:grid}.project-grid .project-card{border:1px solid var(--border);text-align:left;background:0 0;border-radius:12px;padding:24px;transition:all .25s}.project-grid .project-card:hover{border-color:var(--accent);background:var(--accent-bg);transform:translateY(-1px)}.project-grid .project-card h3{font-size:16px;font-family:var(--mono);color:var(--text-h);margin-bottom:6px}.project-grid .project-card .project-desc{color:var(--text);margin-bottom:14px;font-size:14px;line-height:145%}.project-grid .project-card .tags{flex-wrap:wrap;gap:6px;display:flex}.project-grid .project-card .tags .tag{font-size:12px;font-family:var(--mono);background:var(--code-bg);color:var(--text);border:1px solid var(--border);border-radius:4px;padding:3px 8px}.project-grid .project-card-featured{background:var(--code-bg);grid-column:1/-1;grid-template-columns:minmax(220px,36%) 1fr;padding:0;display:grid;overflow:hidden}.project-grid .project-card-featured:hover{background:var(--code-bg)}.project-grid .project-card-featured .project-body{flex-direction:column;padding:24px;display:flex}.project-grid .project-card-featured h3{font-size:17px}.project-grid .project-card-featured .project-cta{font-size:13px;font-family:var(--mono);color:var(--accent);margin-top:auto;padding-top:12px}.project-grid .project-visual{color:#fff;flex-direction:column;justify-content:flex-end;min-height:200px;padding:24px;display:flex;position:relative;overflow:hidden}.project-grid .project-visual-zjspt{background:linear-gradient(145deg,#0d4f3c 0%,#1a7a5e 45%,#2d9b78 100%)}.project-grid .project-visual-badge{font-size:11px;font-family:var(--mono);text-transform:uppercase;letter-spacing:.06em;background:#fff3;border:1px solid #ffffff59;border-radius:999px;padding:4px 10px;position:absolute;top:16px;right:16px}.project-grid .project-visual-kicker{text-transform:uppercase;letter-spacing:.12em;opacity:.85;margin-bottom:8px;font-size:11px}.project-grid .project-visual-title{font-family:var(--heading);letter-spacing:-.03em;font-size:2.5rem;font-weight:600;line-height:1}.project-grid .project-visual-sub{opacity:.92;max-width:16rem;margin-top:10px;font-size:13px;line-height:1.35}@media (width<=720px){.project-grid .project-card-featured{grid-template-columns:1fr}.project-grid .project-visual{min-height:160px}}@media (width<=600px){.project-grid{grid-template-columns:1fr}}.experience-list{flex-direction:column;gap:20px;display:flex}.experience-list .experience-item{text-align:left;border-left:2px solid var(--border);padding:20px;transition:border-color .2s}.experience-list .experience-item:hover{border-color:var(--accent)}.experience-list .experience-item .role{color:var(--text-h);margin-bottom:4px;font-size:16px;font-weight:500}.experience-list .experience-item .company{color:var(--accent);font-size:14px;font-family:var(--mono);margin-bottom:2px}.experience-list .experience-item .date{color:var(--text);margin-bottom:10px;font-size:13px}.experience-list .experience-item ul{color:var(--text);margin:0;padding-left:18px;font-size:14px;line-height:145%}.experience-list .experience-item ul li{margin-bottom:4px}.experience-list .experience-item-featured{border-left:none;border:1px solid var(--border);background:linear-gradient(135deg, var(--code-bg) 0%, var(--bg) 55%, #1a7a5e14 100%);border-radius:12px;padding:24px}.experience-list .experience-item-featured:hover{border-color:#1a7a5e}.experience-list .experience-featured-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:12px;display:flex}.experience-list .experience-featured-head .date{margin-bottom:0}.experience-list .experience-site-link{font-family:var(--mono);border:1px solid var(--border);background:var(--bg);color:var(--text-h);border-radius:6px;flex-shrink:0;padding:8px 14px;font-size:13px;transition:all .2s}.experience-list .experience-site-link:hover{color:var(--text-h);background:#1a7a5e1f;border-color:#1a7a5e}.experience-list .experience-lead{color:var(--text-h);max-width:52rem;margin-bottom:14px;font-size:15px;line-height:1.5}.skills-grid{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:10px;display:grid}.skills-grid .skill-category{background:var(--code-bg);border:1px solid var(--border);text-align:left;border-radius:8px;padding:14px 16px;transition:all .2s}.skills-grid .skill-category:hover{border-color:var(--accent)}.skills-grid .skill-category h4{text-transform:uppercase;letter-spacing:.8px;color:var(--accent);margin:0 0 8px;font-size:11px;font-weight:600}.skills-grid .skill-category p{color:var(--text);font-size:13px;font-family:var(--mono);margin:0;line-height:145%}@media (width<=600px){.skills-grid{grid-template-columns:1fr 1fr}}.certifications{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));align-items:stretch;gap:16px;display:grid}.certifications .cert{border:1px solid var(--border);border-radius:8px;transition:all .2s}.certifications .cert:hover{border-color:var(--accent);transform:translateY(-1px)}.certifications .cert-with-preview{font-family:var(--sans);text-align:left;background:var(--code-bg);flex-direction:column;padding:0;display:flex;overflow:hidden}.certifications .cert-preview{border-bottom:1px solid var(--border);width:100%;height:auto;display:block}.certifications .cert-preview-badge{box-sizing:border-box;object-fit:contain;background:var(--bg);max-height:220px;padding:20px 24px}.certifications .cert-label{font-family:var(--mono);color:var(--text-h);padding:12px 16px 4px;font-size:14px}.certifications .cert-meta{color:var(--text);font-size:12px;font-family:var(--sans);padding:0 16px 12px}.education-list{flex-direction:column;gap:12px;display:flex}.education-list .education-item{text-align:left;background:var(--code-bg);border:1px solid var(--border);border-radius:8px;padding:14px 16px;transition:all .2s}.education-list .education-item:hover{border-color:var(--accent)}.education-list .education-item .degree{color:var(--text-h);margin-bottom:2px;font-size:15px;font-weight:500}.education-list .education-item .school{color:var(--accent);font-size:14px;font-family:var(--mono);margin-bottom:2px}.education-list .education-item .year{color:var(--text);font-size:13px}.social-links{gap:10px;margin-top:24px;display:flex}.social-links .social-link{border:1px solid var(--border);width:40px;height:40px;color:var(--text);border-radius:8px;justify-content:center;align-items:center;font-size:18px;transition:all .2s;display:flex}.social-links .social-link:hover{border-color:var(--accent);color:var(--text-h);background:var(--accent-bg)}.contact{text-align:left;flex-direction:column;gap:8px;font-size:15px;display:flex}.contact .contact-line{color:var(--text);align-items:center;gap:10px;display:flex}.contact .contact-line .icon{color:var(--accent);text-align:center;width:18px}.contact .contact-line a,.contact .contact-line span{font-family:var(--mono);color:var(--text);font-size:14px}:is(.contact .contact-line a,.contact .contact-line span):hover{color:var(--text-h)}.contact .contact-line a{text-decoration:none}.footer{text-align:center;border-top:1px solid var(--border);color:var(--text);justify-content:space-between;margin-top:auto;padding:24px 0;font-size:13px;display:flex}@media (width<=600px){.footer{flex-direction:column;gap:8px}}.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}
