:root{--paper:#fcfcfa;--ink:#182b3c;--body:#52606a;--accent:#256c70;--line:#dfe4e4;--soft:#f0f4f3}
*{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:24px}
body{margin:0;background:var(--paper);color:var(--body);font-family:Arial,Helvetica,sans-serif;font-size:16px;line-height:1.75;-webkit-font-smoothing:antialiased}
a{color:var(--ink);text-underline-offset:5px;text-decoration-thickness:1px}
a:hover{color:var(--accent)}
a:focus-visible{outline:3px solid var(--accent);outline-offset:6px;border-radius:2px}
.wrap{width:min(100% - 96px,1040px);margin-inline:auto}
.site-header{display:flex;align-items:center;justify-content:space-between;padding-top:34px}
.wordmark{font-size:25px;font-weight:700;letter-spacing:-1.5px;text-decoration:none}
.wordmark span,h1 span{color:var(--accent)}
.header-note{font-size:10px;letter-spacing:1.7px;color:#657078}
.intro{max-width:800px;padding:112px 0 102px}
.eyebrow{color:var(--accent);font-size:10px;letter-spacing:1.8px;font-weight:700;line-height:1.6;margin:0 0 23px}
.status-dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--accent);margin-right:8px;vertical-align:1px}
h1,h2,h3,h4,p{margin-top:0}
h1{color:var(--ink);font-size:clamp(46px,6.5vw,76px);line-height:1.12;letter-spacing:-3.8px;font-weight:600;margin-bottom:25px}
.intro-line{color:var(--ink);font-size:clamp(25px,3.3vw,37px);line-height:1.35;letter-spacing:-.9px;margin-bottom:25px}
.intro-copy{max-width:610px;font-size:17px;line-height:1.85;margin-bottom:27px}
.contact-links{display:flex;gap:29px;font-size:13px;font-weight:600}
.contact-links a{text-decoration:none;border-bottom:1px solid #aebfc0;padding-bottom:3px}
.contact-links span{margin-left:12px;color:var(--accent)}
.section{border-top:1px solid var(--line);padding:48px 0 57px;display:grid;grid-template-columns:235px 1fr;gap:35px}
.section-label{display:flex;gap:16px;align-items:baseline}
.section-number{font-size:10px;color:var(--accent);font-variant-numeric:tabular-nums}
.section-label h2{font-size:14px;line-height:1.5;color:var(--ink);font-weight:600}
.section-content p{margin-bottom:19px;font-size:14px}
.section-content p:last-child{margin-bottom:0}
.section-content .lead{font-size:22px;line-height:1.5;color:var(--ink);letter-spacing:-.4px;margin-bottom:20px}
.section-content .personal-note{font-size:12px;color:#68737b;padding-top:4px}
.project{background:var(--soft);border:1px solid #e2e9e6;padding:31px 33px;border-radius:3px}
.project .eyebrow{font-size:9px;margin-bottom:15px}
.project h3{color:var(--ink);font-size:29px;line-height:1.25;letter-spacing:-.8px;font-weight:500;margin-bottom:12px}
.project .project-name{color:var(--accent);font-size:12px;font-weight:600;margin-bottom:22px}
.project-details{display:grid;grid-template-columns:1fr 1fr;gap:25px;border-top:1px solid #d8e2df;margin-top:25px;padding-top:23px}
.project-details h4{color:var(--ink);font-size:12px;margin-bottom:7px}
.project-details p{font-size:12px;line-height:1.8}
.tags{display:flex;flex-wrap:wrap;gap:8px;list-style:none;padding:0;margin:26px 0 0}
.tags li{font-size:10px;color:#466163;border:1px solid #ccd9d5;padding:3px 9px;border-radius:3px}
.experience{padding:0 0 27px;margin-bottom:28px;border-bottom:1px solid var(--line)}
.experience:last-child{border:0;margin:0;padding:0}
.role-heading{display:flex;justify-content:space-between;gap:15px;align-items:baseline}
.role-heading h3{font-size:16px;line-height:1.5;color:var(--ink);font-weight:600;margin-bottom:3px}
.date{white-space:nowrap;font-size:10px;color:#727d84}
.experience .organization{font-size:12px;color:var(--accent);margin-bottom:12px}
.experience p{font-size:13px}
.closing{border-top:1px solid var(--line);padding:61px 0 70px;margin-left:270px}
.closing .eyebrow{margin-bottom:14px}
.closing h2{font-weight:500;font-size:29px;letter-spacing:-.7px;line-height:1.35;color:var(--ink);max-width:440px;margin-bottom:15px}
.closing p:not(.eyebrow){font-size:14px;max-width:440px;margin-bottom:22px}
.email-link{font-size:14px;text-decoration:none;border-bottom:1px solid #aebfc0;padding-bottom:6px}
.email-link span{color:var(--accent);margin-left:14px}
.site-footer{border-top:1px solid var(--line);display:flex;justify-content:space-between;padding-block:23px 30px;font-size:10px;color:#758087}
.skip-link{position:absolute;left:20px;top:-100px;padding:8px 14px;background:var(--paper);z-index:1}
.skip-link:focus{top:12px}
@media(min-width:1400px){.intro{padding-top:132px}}
@media(max-width:760px){.wrap{width:calc(100% - 44px)}.site-header{padding-top:24px}.header-note{font-size:8px;letter-spacing:1px}.intro{padding:75px 0 65px}h1{letter-spacing:-2.5px}.intro-copy{font-size:15px}.section{grid-template-columns:1fr;gap:21px;padding:30px 0 39px}.section-label h2{margin-bottom:0}.section-label{gap:12px}.closing{margin-left:0;padding:40px 0 48px}.project{padding:25px}.role-heading{flex-wrap:wrap;gap:0 16px}.date{margin-bottom:8px}.site-footer{gap:15px;font-size:9px}.project h3{font-size:26px}}
@media(max-width:430px){.project-details{grid-template-columns:1fr;gap:20px}.desktop-break{display:none}.intro-line{font-size:27px}.eyebrow{font-size:9px;letter-spacing:1.3px}.site-footer{flex-direction:column;gap:4px}.closing h2{font-size:27px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}

/* Compact, centered portfolio with native keyboard-accessible disclosures. */
body{text-align:center}
.wrap{width:min(100% - 48px,740px)}
.site-header{flex-direction:column;gap:5px;padding-top:22px}
.intro{max-width:650px;margin-inline:auto;padding:39px 0 30px}
.intro .eyebrow{margin-bottom:16px}
h1{font-size:clamp(43px,7vw,65px);margin-bottom:16px;letter-spacing:-2.8px}
.intro-line{font-size:clamp(23px,3.5vw,29px);margin-bottom:17px}
.intro-copy{max-width:565px;margin-inline:auto;font-size:14px;line-height:1.8;margin-bottom:20px}
.contact-links{justify-content:center;gap:16px;margin-top:22px}
.contact-links a{display:inline-flex;align-items:center;justify-content:center;width:44px;min-height:44px;border:0;padding:0}
.contact-icon{width:24px;height:24px;flex-shrink:0;object-fit:contain}
.linkedin-icon{background:#0077b5;border-radius:2px}
.gmail-icon{width:28px;height:28px}
details.section{display:block;border:0;padding:0}
details.section + details.section{border-top:1px solid var(--line)}
details.section:last-of-type{border-bottom:0}
.resume-row{display:table;margin:24px auto 0;padding:11px 32px;border:1px solid #b9ceca;border-radius:12px;background:var(--soft);color:var(--ink);font-size:14px;font-weight:600;line-height:1.5;text-decoration:none;transition:background .2s,border-color .2s}
.resume-row:hover{background:#e3eeea;border-color:var(--accent);color:var(--accent)}
summary{position:relative;list-style:none;cursor:pointer;padding:18px 42px;user-select:none;color:var(--ink)}
summary::-webkit-details-marker{display:none}
summary::marker{content:""}
summary h2{display:inline;font-size:14px;font-weight:600;line-height:1.5;margin:0}
summary:hover{background:var(--soft);color:var(--accent)}
summary:focus-visible{outline:2px solid var(--accent);outline-offset:-3px}
.expand-icon{position:absolute;right:23px;top:50%;width:10px;height:10px;transform:translateY(-50%)}
.expand-icon::before,.expand-icon::after{content:"";position:absolute;background:var(--accent);left:0;top:4px;width:10px;height:1px}
.expand-icon::after{transform:rotate(90deg)}
details[open] .expand-icon::after{transform:rotate(0)}
.section-content{max-width:620px;margin-inline:auto;padding:12px 16px 30px}
.section-content .lead{font-size:20px}
.project{padding:26px;border:0}
.project-details{gap:24px;border-top:0}
.tags{justify-content:center}
.role-heading{flex-direction:column;align-items:center;gap:0}
.role-heading h3{margin-bottom:2px}
.date{margin-bottom:6px}
.experience{padding-bottom:23px;margin-bottom:23px;border-bottom:0}
.experience-list{padding-top:17px}
.site-footer{border-top:0;flex-direction:column;gap:3px;padding-block:20px}
@media(max-width:760px){.wrap{width:calc(100% - 40px)}.intro{padding:32px 0 27px}.site-header{padding-top:18px}.section-content{padding-inline:5px}.project{padding:23px 18px}.header-note{font-size:9px}.role-heading{gap:0}.site-footer{gap:3px}}

/* Decorative pipeline spans the viewport behind the centered content. */
body{isolation:isolate}
.pipeline-background{position:fixed;inset:0;z-index:-1;pointer-events:none;opacity:.12;overflow:hidden}
.pipeline-background svg{display:block;width:100%;height:100%}
.background-shell{stroke:url(#background-metal);stroke-width:76;stroke-linecap:round}
.background-core{stroke:url(#background-water);stroke-width:53;stroke-linecap:round}
.background-flow{stroke:#d2fff1;stroke-width:10;stroke-linecap:round;stroke-dasharray:6 65;animation:background-flow 18s linear infinite}
.background-joints{fill:#b2c7c7;stroke:#446b73;stroke-width:3}
@keyframes background-flow{to{stroke-dashoffset:-710}}
@media(max-width:760px){.pipeline-background{opacity:.09}}
@media(prefers-reduced-motion:reduce){.background-flow{animation:none}}
