:root{--ink:#10231e;--forest:#0b2f26;--green:#176b52;--mint:#dff3e9;--cream:#f6f3eb;--paper:#fffdf7;--orange:#e36f39;--line:#d7ddd7;--muted:#60706a;--shadow:0 24px 70px rgba(11,47,38,.12)}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--cream);color:var(--ink);font-family:"DM Sans",sans-serif;line-height:1.65}img{display:block;max-width:100%}a{color:inherit;text-decoration:none}.skip-link{position:absolute;left:-999px;top:10px;background:#fff;padding:.7rem;z-index:99}.skip-link:focus{left:10px}
.site-header{position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;padding:1rem clamp(1.25rem,5vw,5rem);background:rgba(246,243,235,.9);border-bottom:1px solid rgba(16,35,30,.1);backdrop-filter:blur(16px)}.brand{display:flex;align-items:center;gap:.75rem;font-weight:700}.brand-mark{display:grid;place-items:center;width:2.35rem;height:2.35rem;border-radius:50%;background:var(--forest);color:#fff;font:600 .82rem "IBM Plex Mono"}.site-header nav{display:flex;align-items:center;gap:1.6rem;font-size:.92rem;font-weight:600}.site-header nav a:hover{color:var(--green)}.nav-cta{padding:.6rem 1rem;border:1px solid var(--forest);border-radius:999px}.menu-button{display:none;border:0;background:none;padding:.5rem}.menu-button span{display:block;width:24px;height:2px;margin:5px;background:var(--ink)}
.hero{min-height:calc(100vh - 73px);display:grid;grid-template-columns:minmax(0,1.15fr) minmax(360px,.85fr);gap:clamp(3rem,7vw,8rem);align-items:center;padding:clamp(4rem,8vw,8rem) clamp(1.25rem,7vw,8rem);background:radial-gradient(circle at 80% 15%,rgba(23,107,82,.14),transparent 31%)}.eyebrow{font:600 .75rem "IBM Plex Mono";text-transform:uppercase;letter-spacing:.09em}.status-dot{display:inline-block;width:.55rem;height:.55rem;margin-right:.55rem;border-radius:50%;background:#25a56f;box-shadow:0 0 0 5px rgba(37,165,111,.14)}h1,h2,h3,p{margin-top:0}h1{max-width:850px;margin:.9rem 0 1.5rem;font-size:clamp(3rem,6.6vw,6.9rem);line-height:.94;letter-spacing:-.065em}h1 em{font-family:"Newsreader";font-weight:600;color:var(--green)}.hero-intro{max-width:700px;font-size:clamp(1.05rem,1.5vw,1.3rem);color:var(--muted)}.hero-actions{display:flex;flex-wrap:wrap;gap:.8rem;margin:2rem 0 3rem}.button{display:inline-flex;justify-content:center;align-items:center;padding:.9rem 1.25rem;border:1px solid var(--forest);border-radius:6px;font-weight:700;transition:.2s}.button:hover{transform:translateY(-2px)}.button-primary{background:var(--forest);color:#fff}.button-secondary{background:transparent}.quick-facts{display:flex;gap:2rem;margin:0}.quick-facts div{padding-right:2rem;border-right:1px solid var(--line)}.quick-facts div:last-child{border:0}.quick-facts dt{font-size:1.25rem;font-weight:700}.quick-facts dd{margin:0;color:var(--muted);font-size:.77rem}
.prescription{position:relative;padding:2rem;background:var(--paper);border:1px solid #ded9cd;border-radius:4px;box-shadow:var(--shadow);transform:rotate(1deg)}.prescription:before{content:"";position:absolute;inset:8px;border:1px solid rgba(16,35,30,.08);pointer-events:none}.rx-head{display:flex;align-items:center;gap:.75rem;padding-bottom:1.2rem;border-bottom:2px solid var(--forest)}.rx-head strong,.rx-head small{display:block}.rx-head small{color:var(--muted)}.rx-symbol{font:600 3rem/1 "Newsreader";color:var(--green)}.rx-date{margin-left:auto;font:400 .7rem "IBM Plex Mono"}.rx-row{display:grid;grid-template-columns:95px 1fr;gap:1rem;padding:.75rem 0;border-bottom:1px solid var(--line);font-size:.85rem}.rx-row span,.rx-body>span{font:400 .69rem "IBM Plex Mono";text-transform:uppercase;color:var(--muted)}.rx-body{padding:1.25rem 0}.rx-body p{margin:.35rem 0 1rem;font:600 1.28rem/1.35 "Newsreader"}.rx-signature{text-align:right;font:italic 1.7rem "Newsreader";color:var(--green)}.rx-signature small{display:block;font:400 .58rem "IBM Plex Mono";text-transform:uppercase;color:var(--muted)}
.section{padding:clamp(5rem,9vw,9rem) clamp(1.25rem,7vw,8rem);border-top:1px solid var(--line)}.section-label{margin-bottom:2rem;font:400 .72rem "IBM Plex Mono";letter-spacing:.1em;text-transform:uppercase;color:var(--green)}.about-grid{display:grid;grid-template-columns:1fr 1fr;gap:clamp(2rem,8vw,9rem)}.about-grid h2,.section-heading h2{font-size:clamp(2.3rem,4.7vw,5rem);line-height:1.02;letter-spacing:-.045em}.body-copy{font-size:1.1rem;color:var(--muted)}
.skills{background:var(--forest);color:#fff}.skills .section-label{color:#83d5b9}.skills-grid{display:grid;grid-template-columns:repeat(4,1fr);border:1px solid rgba(255,255,255,.17)}.skills-grid article{min-height:280px;padding:1.7rem;border-right:1px solid rgba(255,255,255,.17)}.skills-grid article:last-child{border:0}.skills-grid article>span{font:400 .72rem "IBM Plex Mono";color:#83d5b9}.skills-grid h3{margin:3.5rem 0 1rem;font-size:1.25rem}.skills-grid p{color:#b6c9c2;font-size:.92rem}.toolbelt{display:flex;flex-wrap:wrap;gap:.65rem;margin-top:2rem}.toolbelt span{padding:.55rem .9rem;border:1px solid rgba(255,255,255,.23);border-radius:99px;font:400 .72rem "IBM Plex Mono"}
.section-heading{display:flex;justify-content:space-between;align-items:end;gap:3rem;margin-bottom:3rem}.section-heading h2{max-width:800px;margin:0}.section-heading>p{max-width:370px;color:var(--muted)}.flagship{display:grid;grid-template-columns:1.12fr .88fr;gap:3rem;padding:clamp(1.5rem,4vw,3.5rem);background:var(--paper);border:1px solid var(--line);box-shadow:0 12px 40px rgba(16,35,30,.06)}.project-meta{display:flex;flex-wrap:wrap;justify-content:space-between;gap:.75rem;margin-bottom:1.4rem;font:400 .68rem "IBM Plex Mono";text-transform:uppercase;color:var(--muted)}.badge{padding:.35rem .55rem;border-radius:3px}.badge.active{background:var(--mint);color:var(--green)}.badge.archive{background:#ece9df}.flagship h3{max-width:650px;margin-bottom:1rem;font-size:clamp(2rem,3.8vw,4rem);line-height:1;letter-spacing:-.04em}.project-lead{font-size:1.1rem;color:var(--muted)}.project-points{padding-left:1.2rem}.project-points li{margin:.55rem 0}.progress-block{margin:2rem 0}.progress-title{display:flex;justify-content:space-between;font:400 .75rem "IBM Plex Mono"}.progress-track{height:7px;margin:.65rem 0;background:#e2e6e1;border-radius:99px;overflow:hidden}.progress-track span{display:block;width:68%;height:100%;background:var(--green)}.milestones{display:flex;justify-content:space-between;gap:.5rem;font-size:.62rem;color:#93a09b}.milestones .done{color:var(--green)}.milestones .current{color:var(--orange);font-weight:700}.text-link{display:inline-flex;gap:.45rem;align-items:center;border-bottom:1px solid;font-weight:700;color:var(--green)}.architecture-card{align-self:center;padding:1rem;background:#fff;border:1px solid var(--line)}.architecture-card img{width:100%;aspect-ratio:4/3;object-fit:contain}.architecture-card span{display:block;padding:.85rem .2rem 0;font:400 .68rem "IBM Plex Mono";text-transform:uppercase}.project-grid{display:grid;grid-template-columns:1fr 1fr;gap:1.5rem;margin-top:1.5rem}.project-card{display:flex;flex-direction:column;min-height:330px;padding:2rem;border:1px solid var(--line)}.project-card h3{font-size:1.7rem}.project-card p{color:var(--muted)}.project-card>.text-link,.card-links{margin-top:auto}.card-links{display:flex;gap:1.5rem}
.experience-card{display:grid;grid-template-columns:.75fr 1.25fr;gap:4rem;padding:3rem;background:var(--paper);border-top:4px solid var(--green)}.experience-date{font:400 .72rem "IBM Plex Mono";color:var(--green)}.experience-card h2{margin:.6rem 0 0;font-size:2.3rem}.experience-card>div p{color:var(--muted)}.experience-card li{margin:.8rem 0}.education{display:grid;grid-template-columns:.35fr .65fr 1fr;gap:2rem;padding:1.5rem 0;border-bottom:1px solid var(--line)}.education span{font:400 .72rem "IBM Plex Mono";text-transform:uppercase;color:var(--green)}.education p{margin:0;color:var(--muted)}.contact{background:var(--orange);color:#171b19}.contact-inner{max-width:1000px}.contact h2{margin:.7rem 0 1.3rem;font-size:clamp(2.8rem,6vw,6rem);line-height:.98;letter-spacing:-.055em}.contact>div>p:not(.eyebrow){max-width:700px;font-size:1.1rem}.contact-links{display:flex;align-items:center;flex-wrap:wrap;gap:1.5rem;margin-top:2rem;font-weight:700}.button-light{background:#fff;border-color:#fff}footer{display:flex;justify-content:space-between;padding:1.5rem clamp(1.25rem,7vw,8rem);background:var(--forest);color:#b6c9c2;font-size:.75rem}.reveal{opacity:0;transform:translateY(20px);transition:opacity .7s ease,transform .7s ease}.reveal.visible{opacity:1;transform:none}
@media(max-width:950px){.hero{grid-template-columns:1fr;min-height:auto}.prescription{max-width:630px}.skills-grid{grid-template-columns:1fr 1fr}.skills-grid article:nth-child(2){border-right:0}.skills-grid article:nth-child(-n+2){border-bottom:1px solid rgba(255,255,255,.17)}.flagship{grid-template-columns:1fr}.architecture-card{max-width:680px}.section-heading{align-items:start;flex-direction:column}.quick-facts{flex-wrap:wrap}}
@media(max-width:720px){.site-header nav{display:none;position:absolute;top:100%;left:0;right:0;flex-direction:column;align-items:stretch;padding:1.25rem;background:var(--cream);border-bottom:1px solid var(--line)}.site-header nav.open{display:flex}.menu-button{display:block}.hero{padding-top:4rem}h1{font-size:clamp(3rem,15vw,5rem)}.quick-facts{display:grid;grid-template-columns:1fr 1fr}.quick-facts div{border:0}.prescription{padding:1.35rem;transform:none}.rx-date{display:none}.about-grid,.project-grid,.experience-card{grid-template-columns:1fr}.skills-grid{grid-template-columns:1fr}.skills-grid article{min-height:auto;border-right:0;border-bottom:1px solid rgba(255,255,255,.17)!important}.skills-grid article:last-child{border-bottom:0!important}.skills-grid h3{margin-top:1.5rem}.milestones{display:grid;grid-template-columns:1fr 1fr}.education{grid-template-columns:1fr;gap:.3rem}.experience-card{padding:1.5rem}.project-card{min-height:280px}footer{flex-direction:column;gap:.35rem}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.reveal{opacity:1;transform:none;transition:none}.button{transition:none}}
