:root{--clr-primary-1: hsl(205, 86%, 17%);--clr-primary-2: hsl(205, 77%, 27%);--clr-primary-3: hsl(205, 72%, 37%);--clr-primary-5: hsl(205, 78%, 60%);--clr-primary-8: hsl(205, 86%, 81%);--clr-navy: #102a42;--clr-navy-soft: #243a52;--clr-text: #243a52;--clr-muted: #48647f;--clr-page: #d6eaec;--clr-card: #f7fbfc;--clr-white: #fff;--clr-line: #b7d3d8;--clr-accent: #1a6aa2;--radius: 12px;--shadow: 0 2px 10px rgba(16, 42, 66, .08);--max: 1040px;--nav-height: 4.25rem}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{font-family:Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Helvetica Neue,sans-serif;background:var(--clr-page);color:var(--clr-text);line-height:1.6;font-size:1.05rem}img{max-width:100%;display:block}a{color:var(--clr-accent);text-decoration:none}a:hover{text-decoration:underline}ul{list-style:none}h1,h2,h3{color:var(--clr-navy);line-height:1.2;font-weight:700}h1{font-size:clamp(2rem,4vw,3rem);letter-spacing:-.02em;margin-bottom:.75rem}h2{font-size:1.5rem;margin-bottom:.75rem}h3{font-size:1.15rem;margin-bottom:.4rem}p{margin-bottom:.85rem}.app-shell{min-height:100vh;display:flex;flex-direction:column}main{flex:1;width:min(var(--max),calc(100% - 2rem));margin:0 auto;padding:2rem 0 3rem}.skip-link{position:absolute;left:.75rem;top:-3rem;background:var(--clr-navy);color:var(--clr-white);padding:.5rem .8rem;z-index:20}.skip-link:focus{top:.75rem}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.email-text{text-transform:none;letter-spacing:0;font-variant:normal}.nav{background:#eef4f5;border-bottom:1px solid var(--clr-line);position:sticky;top:0;z-index:10}.nav-center{width:min(var(--max),calc(100% - 2rem));margin:0 auto;min-height:var(--nav-height);display:flex;align-items:center;justify-content:space-between;gap:1rem}.nav-brand{display:flex;align-items:center;gap:.7rem;color:var(--clr-navy);text-decoration:none;font-weight:700}.nav-brand:hover{text-decoration:none}.nav-logo{width:40px;height:40px;border-radius:8px}.nav-name{font-size:1rem}.nav-toggle{border:0;background:var(--clr-navy);color:var(--clr-white);width:2.5rem;height:2.5rem;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer}.nav-links{display:none;gap:.35rem}.nav-links.is-open{display:flex;flex-direction:column;position:absolute;left:0;right:0;top:var(--nav-height);background:#eef4f5;border-bottom:1px solid var(--clr-line);padding:.75rem 1rem 1rem}.nav-link{color:var(--clr-navy);text-decoration:none;padding:.55rem .8rem;border-radius:8px;border-bottom:2px solid transparent}.nav-link:hover,.nav-link.is-active{text-decoration:none;background:#d6eaec;border-bottom-color:#75b8c0}.page-block+.page-block{margin-top:2.5rem}.page-intro{margin-bottom:1.5rem}.eyebrow{color:var(--clr-muted);font-size:.95rem;margin-bottom:.4rem}.hero-grid{display:grid;gap:1.75rem;align-items:center}.hero-photo{margin:0;justify-self:center;max-width:22rem;width:100%;position:relative}.hero-photo:before{content:"";position:absolute;top:-.7rem;right:-.7rem;bottom:-.7rem;left:-.7rem;border:.55rem solid var(--clr-navy);border-radius:14px;z-index:0}.hero-photo img{position:relative;z-index:1;width:100%;height:auto;object-fit:cover;border-radius:10px;box-shadow:var(--shadow)}.hero-headline{font-size:1.15rem;color:var(--clr-navy-soft);font-weight:600;margin-bottom:1rem}.lede{max-width:42rem;font-size:1.08rem}.cta-row{display:flex;flex-wrap:wrap;gap:.7rem;margin-top:1.4rem}.btn{display:inline-flex;align-items:center;gap:.45rem;background:var(--clr-navy);color:var(--clr-white);border:2px solid var(--clr-navy);border-radius:8px;padding:.65rem 1rem;font-weight:600;text-decoration:none}.btn:hover{background:var(--clr-navy-soft);text-decoration:none}.btn-ghost{background:transparent;color:var(--clr-navy)}.btn-ghost:hover{background:var(--clr-white);color:var(--clr-navy)}.section-heading{display:flex;justify-content:space-between;align-items:baseline;gap:1rem;margin-bottom:1rem}.block-title{margin:2rem 0 .9rem}.card-grid{display:grid;gap:1rem}.info-card,.project-card,.contact-card{background:var(--clr-card);border-radius:var(--radius);box-shadow:var(--shadow);padding:1.25rem 1.3rem}.cert-badge{width:72px;height:72px;object-fit:contain;margin-bottom:.6rem}.info-kicker{color:var(--clr-muted);font-size:.9rem;margin-bottom:.25rem}.project-subtitle,.project-role{color:var(--clr-muted);font-size:.95rem}.project-links{display:flex;flex-wrap:wrap;gap:1rem;margin-top:.75rem}.text-link{font-weight:600}.tag-list{display:flex;flex-wrap:wrap;gap:.45rem;margin:.85rem 0 0}.tag-list li{background:#e4f1f4;color:var(--clr-navy);border-radius:999px;padding:.25rem .7rem;font-size:.9rem}.tag-list a{color:inherit;font-weight:600}.stack{display:grid;gap:1rem}.smaller-work{margin-top:2rem}.smaller-list{display:grid;gap:.6rem}.smaller-list a{font-weight:600}.cert-strip,.timeline,.contact-list{display:grid;gap:1rem}.bullet-list{list-style:disc;padding-left:1.15rem}.bullet-list li{margin-bottom:.35rem}.contact-card{display:flex;align-items:center;gap:.9rem;color:var(--clr-navy);text-decoration:none}.contact-card:hover{text-decoration:none;box-shadow:0 4px 16px #102a421f}.contact-card svg{flex-shrink:0;font-size:1.35rem;color:var(--clr-accent)}.contact-card span{display:grid}.footer{border-top:1px solid var(--clr-line);background:#eef4f5;padding:1.25rem 0}.footer-inner{width:min(var(--max),calc(100% - 2rem));margin:0 auto;display:flex;flex-direction:column;gap:.75rem}.footer-copy{margin:0;color:var(--clr-muted)}.footer-links{display:flex;flex-wrap:wrap;gap:1rem}.footer-links a{display:inline-flex;align-items:center;gap:.4rem;color:var(--clr-navy);font-weight:600}@media screen and (min-width:800px){.nav-toggle{display:none}.nav-links,.nav-links.is-open{display:flex;flex-direction:row;position:static;border:0;padding:0;background:transparent}.hero-grid{grid-template-columns:1.15fr .85fr;gap:2.5rem}.card-grid,.cert-strip{grid-template-columns:1fr 1fr}.footer-inner{flex-direction:row;justify-content:space-between;align-items:center}}@media screen and (min-width:980px){.featured-grid{grid-template-columns:1fr 1fr 1fr}.cert-strip{grid-template-columns:1fr 1fr 1fr 1fr}}
