﻿:root{--paper:#f3f5f2;--white:#fff;--ink:#1f2923;--muted:#657168;--soft:#89938b;--line:#dce2dc;--green:#41644e;--pale:#e5eee5;--mono:'DM Mono',monospace;--sans:'Manrope',sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:84px}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased}.site-header{height:68px;position:sticky;top:0;z-index:10;background:#f3f5f2ed;backdrop-filter:blur(12px);border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 max(28px,calc((100vw - 1120px)/2))}.wordmark{display:flex;align-items:center;gap:10px;font-size:10px;font-weight:800;letter-spacing:.07em}.wordmark-icon{width:30px;height:30px;display:grid;place-items:center;background:var(--ink);color:white;border-radius:50%;font:9px var(--mono);letter-spacing:-.08em}.main-nav{display:flex;gap:26px}.main-nav a,.download-button{font-size:10px;font-weight:700;color:#556158}.main-nav a:hover{color:var(--green)}.download-button{background:var(--ink);color:white;padding:11px 15px}.download-button span{margin-left:10px}.resume-shell{width:min(1120px,calc(100% - 56px));margin:42px auto 70px;display:grid;grid-template-columns:252px minmax(0,1fr);align-items:start;gap:42px}.profile-rail{position:sticky;top:98px;background:#e8ede7;border:1px solid #dce3dc;padding:21px 20px}.monogram-card{height:181px;position:relative;display:flex;align-items:center;justify-content:center;background:#d9e3d9;overflow:hidden}.monogram-card:before,.monogram-card:after{content:"";position:absolute;border:1px solid #b6c7b8;border-radius:50%;width:190px;height:190px}.monogram-card:after{width:143px;height:143px;border-style:dashed}.monogram{font-size:57px;font-weight:500;letter-spacing:-.1em;color:var(--green);z-index:1}.monogram-caption{position:absolute;left:13px;bottom:12px;font:8px/1.6 var(--mono);letter-spacing:.12em;color:#607062}.monogram-stamp{position:absolute;right:12px;top:12px;font:7px var(--mono);letter-spacing:.06em;color:#728174}.rail-block{border-top:1px solid #d2dbd2;margin-top:20px;padding-top:16px}.rail-label{font:9px var(--mono);letter-spacing:.1em;color:#79877c;margin:0 0 12px}.rail-block>a,.rail-block>span{display:block;font-size:10px;line-height:1.65;margin:7px 0;color:#47554a;overflow-wrap:anywhere}.rail-block>a:hover{color:var(--green);text-decoration:underline}.language{display:flex;justify-content:space-between;align-items:center;margin:10px 0;font-size:10px}.language-level{font:7px var(--mono);letter-spacing:.08em;color:#788479}.rail-note>p:last-child{font-size:10px;line-height:1.8;color:#69746b;margin:0}.print-link{display:block;border-top:1px solid #d2dbd2;margin-top:20px;padding-top:16px;font-size:9px;font-weight:700;color:var(--green)}.print-link span{float:right}.resume-content{background:var(--white);border:1px solid #e4e8e3;padding:48px 54px 26px;min-width:0}.intro-section{padding:2px 0 30px;border-bottom:1px solid var(--line)}.eyebrow{display:flex;align-items:center;gap:9px;font:9px var(--mono);letter-spacing:.09em;color:#68776c}.availability-dot{width:7px;height:7px;background:#6e9573;border-radius:50%;box-shadow:0 0 0 4px #6e95731d}.intro-section h1{font-size:clamp(42px,5vw,63px);line-height:1.06;letter-spacing:-.075em;font-weight:600;margin:25px 0 17px}.intro-section h1 span{color:var(--green)}.lead{max-width:630px;font-size:12px;line-height:1.9;color:#667169;margin:0}.quick-facts{display:grid;grid-template-columns:1fr 1fr 1fr;gap:12px;margin-top:28px}.quick-facts div{border-left:2px solid #b8c9b7;padding-left:10px}.quick-facts div span{display:block;font:8px var(--mono);letter-spacing:.07em;color:#89938b;margin-bottom:6px}.quick-facts strong{font-size:10px;font-weight:700}.resume-section{padding:32px 0;border-bottom:1px solid var(--line);scroll-margin-top:82px}.section-title{display:flex;align-items:center;gap:12px;margin-bottom:21px}.section-number{font:9px var(--mono);color:#6b866e}.section-title h2{font-size:18px;letter-spacing:-.04em;margin:0;font-weight:700}.timeline{margin-left:4px}.timeline-item{position:relative;margin-left:5px;padding:0 0 23px 19px;border-left:1px solid #cdd8ce}.timeline-item:last-child{padding-bottom:0;border-left-color:transparent}.timeline-marker{position:absolute;left:-4px;top:4px;width:7px;height:7px;border:1px solid #739076;background:white;border-radius:50%}.current .timeline-marker{background:#628368;box-shadow:0 0 0 4px #6283681b}.job-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.job-head h3,.education-item h3{font-size:12px;margin:0 0 5px;font-weight:700}.company{font-size:10px;color:#59665c;margin:0}.company span{color:#89928a;margin-left:4px}.date-badge{flex:none;background:#edf3ed;color:#4e6d52;padding:6px 8px;font:7px var(--mono);letter-spacing:.03em}.timeline-item ul{padding-left:14px;margin:11px 0 0;color:#69746b}.timeline-item li{font-size:10px;line-height:1.75;padding-left:2px;margin:4px 0}.timeline-item li::marker{color:#709071}.education-list{display:grid;gap:16px}.education-item{display:grid;grid-template-columns:37px 1fr;gap:11px;align-items:start}.edu-symbol{width:34px;height:34px;display:grid;place-items:center;background:#eef3ee;color:#5c775f;font:8px var(--mono)}.education-item h3{margin:1px 0 4px}.education-item p{font-size:10px;color:#667169;margin:0;line-height:1.7}.education-item p span{color:#849087;margin-left:5px}.education-note{font-size:8px;color:#89928a;margin:14px 0 0}.skill-groups{display:grid;grid-template-columns:1fr 1fr;gap:10px}.skill-group{background:#f5f7f4;padding:13px 14px;border:1px solid #edf0ec}.skill-group h3{font-size:9px;margin:0 0 7px;font-weight:800;color:#3e5543}.skill-group p{font-size:9px;line-height:1.75;color:#6f7971;margin:0}.projects-section{border-bottom:0;padding-bottom:22px}.project-list{display:grid;grid-template-columns:1fr 1fr;gap:0 23px}.resume-project{border-top:1px solid #e8ece7;padding:13px 0 14px}.project-type{font:7px var(--mono);letter-spacing:.045em;color:#75847a}.resume-project h3{font-size:11px;line-height:1.5;margin:5px 0;font-weight:700}.resume-project p{font-size:9px;line-height:1.8;color:#6c766e;margin:0}.resume-footer{border-top:1px solid var(--line);padding-top:17px;display:flex;justify-content:space-between;gap:10px;font:8px var(--mono);color:#828b83}.resume-footer a{color:var(--green)}@media(max-width:850px){.site-header{padding-inline:20px}.resume-shell{width:min(720px,calc(100% - 36px));grid-template-columns:1fr;gap:16px;margin-top:24px}.profile-rail{position:static;display:grid;grid-template-columns:170px 1fr 1fr;gap:0 18px;padding:15px}.monogram-card{height:152px;grid-row:span 2}.rail-block{margin-top:0;padding-top:7px;border-top:0}.rail-note,.print-link{display:none}.resume-content{padding:38px 38px 23px}}@media(max-width:580px){.site-header{height:60px;padding-inline:15px}.wordmark{font-size:8px;gap:7px}.wordmark-icon{width:27px;height:27px}.main-nav{display:none}.download-button{font-size:9px;padding:10px 11px}.resume-shell{width:calc(100% - 24px);margin:13px auto 32px;gap:10px}.profile-rail{grid-template-columns:105px 1fr;gap:0 12px;padding:11px}.monogram-card{height:114px;grid-row:span 2}.monogram{font-size:40px}.monogram-card:before{width:130px;height:130px}.monogram-card:after{width:98px;height:98px}.monogram-caption{font-size:6px;left:7px;bottom:6px}.monogram-stamp{font-size:6px;top:6px;right:6px}.rail-block{padding-top:3px}.rail-label{font-size:7px;margin-bottom:6px}.rail-block>a,.rail-block>span,.language{font-size:8px;margin:5px 0}.language-level{font-size:6px}.rail-block:nth-of-type(3){grid-column:2}.resume-content{padding:28px 19px 20px}.intro-section h1{font-size:43px;margin:20px 0 13px}.eyebrow{font-size:7px}.lead{font-size:11px}.quick-facts{gap:7px;margin-top:21px}.quick-facts div{padding-left:7px}.quick-facts div span{font-size:6px}.quick-facts strong{font-size:8px;line-height:1.5;display:block}.resume-section{padding:25px 0}.section-title h2{font-size:16px}.job-head{display:block}.date-badge{display:inline-block;margin-top:8px}.company span{display:block;margin:3px 0 0}.timeline-item li{font-size:9px}.education-item p{font-size:9px}.skill-groups,.project-list{grid-template-columns:1fr}.skill-group{padding:11px 12px}.resume-footer{font-size:7px}}
@media print{@page{size:A4;margin:12mm}body{background:#fff;color:#111}.site-header{position:static;height:42px;padding:0;border-bottom:1px solid #ccc;background:white}.main-nav,.download-button,.print-link{display:none!important}.resume-shell{width:100%;margin:12px 0 0;grid-template-columns:190px 1fr;gap:17px}.profile-rail{position:static;display:block;background:#f1f3f0;padding:12px}.monogram-card{height:120px}.resume-content{padding:22px 24px;border:0}.intro-section h1{font-size:37px;margin:15px 0 10px}.lead,.timeline-item li{font-size:8.5px}.quick-facts{margin-top:16px}.resume-section{padding:19px 0}.section-title{margin-bottom:14px}.section-title h2{font-size:15px}.timeline-item{padding-bottom:15px}.education-list{gap:10px}.skill-group{padding:8px}.skill-groups,.project-list{gap:6px 12px}.resume-project{padding:8px 0}.resume-project p,.skill-group p{font-size:7.5px}.resume-project h3{font-size:9px}.resume-footer{font-size:7px}a{color:inherit;text-decoration:none}section,.timeline-item,.education-item,.skill-group,.resume-project{break-inside:avoid}}
.profile-photo{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:50% 24%}.monogram-caption{z-index:2;padding:4px 6px;background:#e8ede7d9}.profile-rail .monogram-card{isolation:isolate}.projects-intro{font-size:10px;color:#738077;margin:-8px 0 11px}.project-preview-list{border-top:1px solid var(--line)}.project-preview-list>a{display:grid;grid-template-columns:28px 1fr auto 20px;align-items:center;gap:8px;padding:12px 0;border-bottom:1px solid var(--line)}.project-preview-list>a>span{font:8px var(--mono);color:#77877a}.project-preview-list strong{font-size:10px}.project-preview-list small{font-size:8px;color:#879088}.project-preview-list b{font-weight:400;color:var(--green)}.project-preview-list>a:hover strong,.all-projects-link:hover{color:var(--green)}.all-projects-link{display:inline-flex;gap:10px;margin-top:14px;font-size:9px;font-weight:800;color:var(--green)}.projects-page{width:min(970px,calc(100% - 56px));margin:50px auto 70px}.projects-hero{position:relative;padding:30px 0 38px;border-bottom:1px solid var(--line)}.back-link{display:inline-block;margin-bottom:34px;font-size:9px;font-weight:700;color:#66736a}.back-link:hover{color:var(--green)}.projects-hero .eyebrow{font-size:8px}.projects-hero h1{font-size:clamp(48px,7vw,78px);line-height:1;letter-spacing:-.08em;font-weight:600;margin:22px 0 18px}.projects-hero h1 span{color:var(--green)}.projects-lead{max-width:560px;font-size:12px;line-height:1.9;color:#667169;margin:0}.project-count{position:absolute;right:4px;bottom:42px;display:flex;align-items:baseline;gap:9px;color:#829087}.project-count strong{font-size:34px;letter-spacing:-.08em;font-weight:500;color:#44644b}.project-count span{font:8px var(--mono);letter-spacing:.08em}.project-catalog{padding-top:13px}.catalog-card{padding:25px 0 26px;border-bottom:1px solid var(--line);scroll-margin-top:85px}.catalog-top{display:flex;justify-content:space-between;gap:15px;color:#7d897f;font:8px var(--mono);letter-spacing:.04em}.catalog-main{display:grid;grid-template-columns:70px 1fr;gap:16px;margin-top:18px}.catalog-glyph{width:61px;height:61px;display:grid;place-items:center;background:#e6ece5;color:#5e7861;font:17px var(--mono);position:relative}.catalog-glyph:after{content:"";position:absolute;inset:7px;border:1px solid #cad6ca}.catalog-main h2{font-size:18px;letter-spacing:-.045em;margin:0 0 8px}.catalog-main p{max-width:700px;font-size:10px;line-height:1.9;color:#68736a;margin:0}.tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:12px}.tags span{padding:5px 8px;background:#f1f4f0;border:1px solid #e6ebe5;color:#667369;font-size:8px}.catalog-footnote{display:grid;grid-template-columns:130px 1fr;gap:12px;margin-top:26px;padding:17px;background:#e9eee8}.catalog-footnote>span{font:8px var(--mono);color:#547458;letter-spacing:.08em}.catalog-footnote p{font-size:9px;line-height:1.8;color:#6c776e;margin:0}.projects-page .resume-footer{margin-top:27px}.main-nav a[aria-current="page"]{color:var(--green)}@media(max-width:580px){.project-preview-list>a{grid-template-columns:23px 1fr 18px}.project-preview-list small{grid-column:2;grid-row:2}.project-preview-list b{grid-column:3;grid-row:1/3}.projects-page{width:calc(100% - 30px);margin:26px auto 38px}.back-link{margin-bottom:27px}.projects-hero{padding:15px 0 30px}.projects-hero h1{font-size:51px}.projects-lead{font-size:10px;padding-right:35px}.project-count{right:0;bottom:23px}.project-count strong{font-size:26px}.project-count span{font-size:6px}.catalog-card{padding:20px 0}.catalog-top{font-size:7px}.catalog-main{grid-template-columns:43px 1fr;gap:11px;margin-top:14px}.catalog-glyph{width:40px;height:40px;font-size:12px}.catalog-glyph:after{inset:5px}.catalog-main h2{font-size:15px}.catalog-main p{font-size:9px}.tags span{font-size:7px}.catalog-footnote{grid-template-columns:1fr;gap:8px;padding:14px}.catalog-footnote p{font-size:8px}}
/* Engineering paper: fine grid, drafting guides, and quiet alignment marks. */
body{background-color:#edf1ed;background-image:linear-gradient(rgba(76,105,83,.055) 1px,transparent 1px),linear-gradient(90deg,rgba(76,105,83,.055) 1px,transparent 1px),linear-gradient(rgba(76,105,83,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(76,105,83,.035) 1px,transparent 1px);background-size:120px 120px,120px 120px,24px 24px,24px 24px;background-position:center top}.resume-shell{position:relative}.profile-rail{background:#e4ebe4;border-color:#d0dbd1}.monogram-card{height:286px;background:#d9e3d9}.profile-photo{object-position:50% 20%}.resume-content{box-shadow:0 8px 36px rgba(40,58,44,.045)}.section-number{position:relative}.section-number:after{content:"";display:inline-block;width:14px;height:1px;background:#a6b8a7;vertical-align:middle;margin-left:6px}.catalog-glyph{background-image:linear-gradient(rgba(76,105,83,.07) 1px,transparent 1px),linear-gradient(90deg,rgba(76,105,83,.07) 1px,transparent 1px);background-size:10px 10px}.projects-page{position:relative}.projects-hero:after{content:"";position:absolute;right:6px;top:20px;width:112px;height:112px;border:1px solid rgba(72,103,78,.14);border-radius:50%;background:repeating-radial-gradient(circle,transparent 0 15px,rgba(72,103,78,.08) 16px 17px);pointer-events:none}.projects-hero:before{content:"";position:absolute;right:61px;top:20px;height:112px;border-left:1px dashed rgba(72,103,78,.17);pointer-events:none}.projects-hero .project-count{z-index:1}
@media(max-width:850px){.profile-rail .monogram-card{height:230px}}
@media(max-width:580px){body{background-size:80px 80px,80px 80px,16px 16px,16px 16px}.profile-rail{grid-template-columns:132px 1fr;gap:0 12px}.profile-rail .monogram-card{height:168px}.profile-photo{object-position:50% 18%}.projects-hero:after{width:76px;height:76px;right:0}.projects-hero:before{right:38px;height:76px}}
body{background-image:linear-gradient(rgba(76,105,83,.055) 1px,transparent 1px),linear-gradient(90deg,rgba(76,105,83,.055) 1px,transparent 1px),linear-gradient(rgba(76,105,83,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(76,105,83,.035) 1px,transparent 1px),url("assets/circuit-traces.svg");background-size:120px 120px,120px 120px,24px 24px,24px 24px,480px 640px;background-position:center top,center top,center top,center top,right 18px top;background-repeat:repeat,repeat,repeat,repeat,repeat-y}
@media(max-width:580px){body{background-image:linear-gradient(rgba(76,105,83,.045) 1px,transparent 1px),linear-gradient(90deg,rgba(76,105,83,.045) 1px,transparent 1px),linear-gradient(rgba(76,105,83,.03) 1px,transparent 1px),linear-gradient(90deg,rgba(76,105,83,.03) 1px,transparent 1px),url("assets/circuit-traces.svg");background-size:80px 80px,80px 80px,16px 16px,16px 16px,340px 454px;background-position:center top,center top,center top,center top,right 8px top;background-repeat:repeat,repeat,repeat,repeat,repeat-y}}
body{background-image:linear-gradient(rgba(76,105,83,.055) 1px,transparent 1px),linear-gradient(90deg,rgba(76,105,83,.055) 1px,transparent 1px),linear-gradient(rgba(76,105,83,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(76,105,83,.035) 1px,transparent 1px),url("assets/circuit-traces.svg"),url("assets/circuit-traces-left.svg");background-size:120px 120px,120px 120px,24px 24px,24px 24px,480px 640px,480px 640px;background-position:center top,center top,center top,center top,right 18px top,left 18px top;background-repeat:repeat,repeat,repeat,repeat,repeat-y,repeat-y}
@media(max-width:580px){body{background-image:linear-gradient(rgba(76,105,83,.045) 1px,transparent 1px),linear-gradient(90deg,rgba(76,105,83,.045) 1px,transparent 1px),linear-gradient(rgba(76,105,83,.03) 1px,transparent 1px),linear-gradient(90deg,rgba(76,105,83,.03) 1px,transparent 1px),url("assets/circuit-traces.svg"),url("assets/circuit-traces-left.svg");background-size:80px 80px,80px 80px,16px 16px,16px 16px,340px 454px,340px 454px;background-position:center top,center top,center top,center top,right 8px top,left 8px top;background-repeat:repeat,repeat,repeat,repeat,repeat-y,repeat-y}}
.areas-intro{max-width:570px;font-size:10px;line-height:1.85;color:#6b776e;margin:-7px 0 16px}.work-area-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.work-area-card{position:relative;min-width:0;padding:15px;background:#f5f7f4;border:1px solid #e7ece6}.work-area-featured{grid-column:1/-1;background:#edf3ed;border-color:#dfe8df}.area-index{font:7px var(--mono);letter-spacing:.07em;color:#849187}.area-icon{float:right;width:30px;height:30px;display:grid;place-items:center;border:1px solid #d2ded2;color:#55745a;font:16px var(--mono)}.work-area-card h3{font-size:13px;letter-spacing:-.03em;margin:16px 0 7px}.work-area-card p{font-size:9px;line-height:1.8;color:#69756c;margin:0}.work-area-featured p{max-width:560px;font-size:10px}.area-tags{display:flex;flex-wrap:wrap;gap:5px;margin-top:11px}.area-tags span{padding:4px 6px;background:#fff;border:1px solid #e1e8e1;font-size:7px;color:#718074}.areas-note{font-size:8px;line-height:1.8;color:#839087;margin:12px 0 0}.current-study{background:#f3f7f2;padding:11px;border:1px solid #e7eee6}.current-study .edu-symbol{background:#dfeadf;font-weight:500}.education-list{gap:10px}
@media(max-width:580px){.work-area-grid{grid-template-columns:1fr}.work-area-featured{grid-column:auto}.work-area-card{padding:13px}.work-area-featured p{font-size:9px}.areas-note{font-size:7.5px}}
@media print{.work-area-card{padding:8px}.work-area-card p{font-size:7.5px}.areas-intro{font-size:8px}}
/* Neutralize the page palette and reserve green for small technical accents. */
:root{--paper:#f2f3f1;--white:#fff;--ink:#171a18;--muted:#4e5650;--soft:#717872;--line:#d9dcd9;--green:#34463a;--pale:#e8ebe8}
body{background-color:#f0f1ef;background-image:linear-gradient(rgba(48,58,51,.045) 1px,transparent 1px),linear-gradient(90deg,rgba(48,58,51,.045) 1px,transparent 1px),linear-gradient(rgba(48,58,51,.025) 1px,transparent 1px),linear-gradient(90deg,rgba(48,58,51,.025) 1px,transparent 1px),url("assets/circuit-traces.svg"),url("assets/circuit-traces-left.svg")}
.profile-rail{background:#e9ebe8;border-color:#d7dad6}.monogram-card{background:#dfe2de}.monogram{color:#252b27}.rail-label,.area-index,.project-type,.section-number{color:#59645b}.rail-block>a,.rail-block>span,.language{color:#252b27}.intro-section h1 span{color:#26352b}.lead,.work-area-card p,.skill-group p,.resume-project p,.catalog-main p{color:#454c47}.work-area-card{background:#f4f5f3;border-color:#e2e4e2}.work-area-featured{background:#eceeeb;border-color:#d9ddda}.area-icon{border-color:#d3d7d3;color:#3b493f}.area-tags span,.tags span{background:#f9faf9;border-color:#e1e3e1;color:#555e57}.current-study,.skill-group{background:#f4f5f3;border-color:#e5e7e5}.current-study .edu-symbol,.edu-symbol{background:#e6e9e6;color:#3d4940}.projects-page .projects-hero h1 span{color:#26352b}.catalog-glyph{background-color:#e7eae7;color:#39463d}.all-projects-link,.print-link,.resume-footer a{color:#34463a}
body{background-size:120px 120px,120px 120px,24px 24px,24px 24px,480px 640px,480px 640px;background-position:center top,center top,center top,center top,right 18px top,left 18px top;background-repeat:repeat,repeat,repeat,repeat,repeat-y,repeat-y}
@media(max-width:580px){body{background-size:80px 80px,80px 80px,16px 16px,16px 16px,340px 454px,340px 454px;background-position:center top,center top,center top,center top,right 8px top,left 8px top;background-repeat:repeat,repeat,repeat,repeat,repeat-y,repeat-y}}
/* Improve reading size across the CV and project pages. */
.main-nav a,.download-button{font-size:11px}.rail-label{font-size:10px}.rail-block>a,.rail-block>span{font-size:11px}.intro-section .eyebrow{font-size:10px}.lead{font-size:14px;line-height:1.85}.quick-facts div span{font-size:9px}.quick-facts strong{font-size:11px}.section-title h2{font-size:20px}.areas-intro{font-size:12px;line-height:1.85}.work-area-card h3{font-size:15px}.work-area-card p,.work-area-featured p{font-size:11px;line-height:1.8}.area-index{font-size:8px}.area-tags span{font-size:8px}.areas-note{font-size:9px}.skill-group h3{font-size:10px}.skill-group p{font-size:10px;line-height:1.8}.project-preview-list strong{font-size:11px}.project-preview-list small{font-size:9px}.all-projects-link{font-size:10px}.projects-hero .eyebrow{font-size:9px}.projects-lead{font-size:14px}.catalog-top{font-size:9px}.catalog-main h2{font-size:20px}.catalog-main p{font-size:12px;line-height:1.85}.tags span{font-size:9px}.catalog-footnote>span{font-size:9px}.catalog-footnote p{font-size:10px}.resume-footer{font-size:9px}
@media(max-width:580px){.main-nav a,.download-button{font-size:10px}.rail-label{font-size:8px}.rail-block>a,.rail-block>span{font-size:9px}.intro-section .eyebrow{font-size:7px}.lead{font-size:12px;line-height:1.85}.quick-facts div span{font-size:7px}.quick-facts strong{font-size:9px}.section-title h2{font-size:18px}.areas-intro{font-size:11px}.work-area-card h3{font-size:14px}.work-area-card p,.work-area-featured p{font-size:10px}.area-index{font-size:7px}.area-tags span{font-size:8px}.areas-note{font-size:8.5px}.skill-group h3{font-size:10px}.skill-group p{font-size:9.5px}.project-preview-list strong{font-size:10px}.project-preview-list small{font-size:8px}.all-projects-link{font-size:9px}.projects-hero .eyebrow{font-size:7px}.projects-lead{font-size:11px}.catalog-top{font-size:7px}.catalog-main h2{font-size:16px}.catalog-main p{font-size:10px;line-height:1.8}.tags span{font-size:8px}.catalog-footnote>span{font-size:8px}.catalog-footnote p{font-size:9px}.resume-footer{font-size:8px}}
.site-header{display:grid;grid-template-columns:1fr auto 1fr}.site-header .main-nav{grid-column:2}.site-header .download-button{justify-self:end}@media(max-width:580px){.site-header{grid-template-columns:1fr}.site-header .download-button{justify-self:end;grid-column:1;grid-row:1}.site-header .main-nav{display:none}}
.main-nav a{display:inline-flex;align-items:center;gap:6px}.main-nav svg,.section-title>svg,.rail-label svg{width:14px;height:14px;flex:none;fill:none;stroke:#606b62;stroke-width:1.55;stroke-linecap:round;stroke-linejoin:round}.main-nav a:hover svg,.section-title>svg{stroke:#44584a}.section-title>svg{width:16px;height:16px}.rail-label{display:flex;align-items:center;gap:6px}.rail-label svg{width:12px;height:12px}
@media(max-width:850px){.main-nav{gap:15px}.main-nav a{font-size:10px}.main-nav svg{width:12px;height:12px}}
/* Brighter, category-specific icon accents. */
.main-nav a svg{width:20px;height:20px;padding:3px;border-radius:6px;transition:transform .18s ease,background-color .18s ease}.main-nav a:nth-child(1) svg{color:#087d73;stroke:#087d73;background:#dff2ed}.main-nav a:nth-child(2) svg{color:#3973c5;stroke:#3973c5;background:#e5edfb}.main-nav a:nth-child(3) svg{color:#ad681b;stroke:#ad681b;background:#f8ecd9}.main-nav a:nth-child(4) svg{color:#bd5266;stroke:#bd5266;background:#f8e6e9}.main-nav a:hover svg{transform:translateY(-2px) scale(1.08)}.section-title>svg{width:23px;height:23px;padding:4px;border-radius:7px;stroke-width:1.8}.work-areas-section .section-title>svg{stroke:#087d73;background:#dff2ed}.skills-section .section-title>svg{stroke:#ad681b;background:#f8ecd9}.projects-section .section-title>svg{stroke:#3973c5;background:#e5edfb}.rail-label svg{stroke:#bd5266;background:#f8e6e9;border-radius:4px;padding:2px;width:17px;height:17px}.main-nav a[aria-current="page"] svg{box-shadow:0 0 0 2px #3973c522}
@media(max-width:850px){.main-nav svg{width:19px;height:19px}}
.contact-link{display:flex!important;align-items:center;gap:8px;width:max-content;max-width:100%;overflow-wrap:anywhere}.contact-link svg{width:15px;height:15px;flex:none;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.contact-link span{min-width:0}.contact-phone svg{color:#087d73}.contact-email svg{color:#ad681b}.contact-linkedin svg{color:#3973c5}.contact-link:hover svg{transform:scale(1.12)}.contact-link svg{transition:transform .18s ease}
@media(max-width:580px){.contact-link{font-size:9px!important;gap:6px}.contact-link svg{width:13px;height:13px}}
.contact-page{width:min(1050px,calc(100% - 56px));margin:44px auto 60px}.contact-page>.back-link{margin:0 0 25px}.contact-layout{display:grid;grid-template-columns:.9fr 1.1fr;gap:55px;align-items:start}.contact-intro{padding:35px 0 0}.contact-intro h1{font-size:clamp(49px,6.4vw,76px);line-height:.99;letter-spacing:-.08em;font-weight:600;margin:24px 0 19px}.contact-intro h1 span{color:#26352b}.contact-intro>p:not(.eyebrow){max-width:380px;font-size:13px;line-height:1.9;color:#454c47}.contact-direct{display:grid;gap:9px;margin-top:30px;max-width:390px}.contact-direct>a{display:grid;grid-template-columns:34px 1fr 17px;gap:10px;align-items:center;padding:10px 11px;background:#f8f9f7;border:1px solid #e1e4e0}.direct-icon{width:31px;height:31px;border-radius:7px;display:grid;place-items:center}.direct-icon svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.direct-mail{color:#ad681b;background:#f8ecd9}.direct-phone{color:#087d73;background:#dff2ed}.direct-linkedin{color:#3973c5;background:#e5edfb}.contact-direct>a>span:nth-child(2){min-width:0}.contact-direct small{display:block;font:7px var(--mono);letter-spacing:.09em;color:#89918a;margin-bottom:4px}.contact-direct strong{display:block;font-size:10px;color:#202622;overflow-wrap:anywhere}.contact-direct b{font-size:13px;font-weight:500;color:#68736b}.contact-direct>a:hover{border-color:#c7d0c8;transform:translateX(2px)}.contact-direct>a{transition:transform .16s ease,border-color .16s ease}.contact-form-card{background:#fff;border:1px solid #e0e4df;padding:30px 32px;box-shadow:0 9px 32px rgba(35,45,37,.05)}.form-kicker{font:8px var(--mono);letter-spacing:.1em;color:#68746b}.form-heading h2{font-size:24px;letter-spacing:-.045em;margin:10px 0 5px}.form-heading>p{font-size:10px;color:#7d867e;margin:0 0 21px}.form-row{margin:14px 0}.form-row label{display:block;font-size:10px;font-weight:700;margin-bottom:7px}.form-row label span{color:#bd5266}.form-row input,.form-row textarea{width:100%;border:1px solid #dce1dc;background:#fafbf9;color:#202622;padding:11px 12px;border-radius:0;font:11px var(--sans);outline:none;transition:border-color .18s ease,box-shadow .18s ease}.form-row textarea{resize:vertical;min-height:130px;line-height:1.7}.form-row input::placeholder,.form-row textarea::placeholder{color:#a0a7a0}.form-row input:focus,.form-row textarea:focus{border-color:#648ba4;box-shadow:0 0 0 3px #648ba41c}.send-button{width:100%;display:flex;justify-content:space-between;align-items:center;border:0;background:#202622;color:white;padding:14px 16px;font:700 11px var(--sans);cursor:pointer;transition:background .18s ease,transform .18s ease}.send-button:hover{background:#34463a;transform:translateY(-1px)}.send-button:disabled{opacity:.65;cursor:wait;transform:none}.form-status{min-height:18px;font-size:10px;line-height:1.6;color:#315b3e;margin:10px 0 0}.form-status.error{color:#a23e47}.privacy-note{font-size:8px;line-height:1.7;color:#858e86;margin:5px 0 0}.privacy-note a{color:#475c4b;text-decoration:underline;text-underline-offset:2px}.form-trap{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}.contact-page .resume-footer{margin-top:35px}
@media(max-width:800px){.contact-layout{grid-template-columns:1fr;gap:28px}.contact-intro{padding:12px 0 0}.contact-intro h1{font-size:58px}.contact-direct{grid-template-columns:1fr 1fr;max-width:none}.contact-direct>a:first-child{grid-column:1/-1}.contact-form-card{padding:27px}}
@media(max-width:580px){.contact-page{width:calc(100% - 30px);margin:25px auto 38px}.contact-page>.back-link{margin-bottom:12px}.contact-layout{gap:20px}.contact-intro h1{font-size:51px;margin:19px 0 14px}.contact-intro>p:not(.eyebrow){font-size:11px}.contact-direct{grid-template-columns:1fr;margin-top:20px}.contact-direct>a:first-child{grid-column:auto}.contact-direct strong{font-size:9px}.contact-form-card{padding:22px 18px}.form-heading h2{font-size:22px}.form-row input,.form-row textarea{font-size:12px}.privacy-note{font-size:7.5px}}
.portal-note{font-size:11px!important;color:#7c877e!important;margin:14px 0 0!important}
/* Link reset, visible keyboard focus, and navigation that stays reachable on small screens. */
a{color:inherit;text-decoration:none}
a:focus-visible,button:focus-visible{outline:2px solid #3973c5;outline-offset:3px}
@media(max-width:580px){.site-header{grid-template-columns:minmax(0,1fr) auto;gap:10px}.site-header .main-nav{display:flex;grid-column:1;grid-row:1;gap:13px;min-width:0;overflow-x:auto;scrollbar-width:none}.site-header .main-nav a{white-space:nowrap}.site-header .main-nav svg{display:none}.site-header .download-button{grid-column:2}}
/* Projects page: paper panel behind the catalogue and a styled detail link. */
.projects-page{background:#fff;border:1px solid #e4e8e3;padding:22px 46px 26px;box-shadow:0 8px 36px rgba(40,58,44,.045)}
.project-detail-link{display:flex;justify-content:space-between;align-items:center;margin:18px 0 0 86px;padding-top:12px;border-top:1px solid #e9ede9;color:#34463a;font-size:11px;font-weight:800}
.project-detail-link:hover{color:#3973c5}
.project-detail-link b{font-weight:400}
.catalog-card:last-child{border-bottom:0}
@media(max-width:580px){.projects-page{padding:14px 16px 20px}.project-detail-link{margin-left:54px;font-size:10px}}
/* Access-code page for the protected project pages. */
.login-page{width:min(620px,calc(100% - 44px));margin:44px auto 60px}
.login-page>.back-link{margin:0 0 20px}
.login-card{background:#fff;border:1px solid #e0e4df;padding:clamp(28px,6vw,54px);box-shadow:0 9px 32px rgba(35,45,37,.05)}
.lock-icon{width:46px;height:46px;display:grid;place-items:center;color:#3973c5;background:#e5edfb;border-radius:12px}
.lock-icon svg{width:23px;height:23px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.login-card .eyebrow{margin:26px 0 12px}
.login-card h1{font-size:clamp(30px,5.4vw,44px);line-height:1.1;letter-spacing:-.06em;font-weight:650;margin:0}
.login-card h1 span{color:#26352b}
.login-intro{max-width:460px;font-size:14px;line-height:1.85;color:#454c47;margin:16px 0 26px}
.login-card label{display:block;font-size:12px;font-weight:700;margin-bottom:8px}
.password-wrap{display:flex;border:1px solid #dce1dc;background:#fafbf9;margin-bottom:12px}
.password-wrap:focus-within{border-color:#648ba4;box-shadow:0 0 0 3px #648ba41c}
.password-wrap input{flex:1;min-width:0;border:0;outline:0;background:transparent;padding:13px;font:14px var(--sans);color:#202622}
.password-wrap button{border:0;background:transparent;padding:0 13px;color:#3973c5;font:700 11px var(--sans);cursor:pointer}
.login-card .form-status{font-size:12px}
.login-help{border-top:1px solid #edf0ed;margin:20px 0 0;padding-top:15px;font-size:12px;line-height:1.8;color:#5d665f}
.login-help a{color:#3973c5;font-weight:700;text-decoration:underline;text-underline-offset:3px}
.login-page .resume-footer{margin-top:28px}
.catalog-footnote a{color:#3973c5;font-weight:700;text-decoration:underline;text-underline-offset:3px}
.project-detail-link svg{width:13px;height:13px;margin-right:7px;vertical-align:-2px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
@media(max-width:580px){.login-page{width:calc(100% - 28px);margin:24px auto 38px}.login-intro{font-size:13px}}
