@font-face{font-family:'Barlow Condensed';font-style:normal;font-weight:300;font-display:swap;src:url('fonts/barlow-condensed.woff') format('woff')}
@font-face{font-family:'DM Sans';font-style:normal;font-weight:400;font-display:swap;src:url('fonts/dm-sans.woff') format('woff')}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:400;font-display:swap;src:url('fonts/ibm-plex-mono.woff') format('woff')}
:root{--bg:#061f1b;--surface:#0c2923;--text:#f4e6ce;--muted:#b9bca9;--line:#344b40;--accent:#f1dcb9;--display:'Barlow Condensed','Arial Narrow',sans-serif;--mono:'IBM Plex Mono',monospace;--sans:'DM Sans',Arial,sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:100px}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--sans);font-size:1.0rem;line-height:1.6}a{color:inherit;text-decoration:none}button,a{-webkit-tap-highlight-color:transparent}a:focus-visible{outline:2px solid var(--accent);outline-offset:6px}::selection{background:var(--accent);color:var(--bg)}.skip{position:fixed;top:-100px;left:20px;z-index:20;padding:12px;background:var(--accent);color:var(--bg)}.skip:focus{top:15px}.header,main,footer{width:min(1200px,calc(100% - 96px));margin:auto}.header{height:100px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.wordmark{display:flex;gap:20px;align-items:center}.monogram{font-family:var(--mono);font-weight:600;font-size:1.75rem;letter-spacing:-2px}.monogram span{color:var(--accent)}.wordmark-caption{font:0.75rem/1.5 var(--mono);letter-spacing:1px;max-width:120px}nav{display:flex;align-items:center;gap:28px;font-size:0.875rem}nav a{color:var(--muted)}nav a:hover,nav a.active{color:var(--accent)}nav .nav-contact{color:var(--text);margin-left:12px}.nav-contact span{margin-left:8px}.hero{padding:78px 0 72px;display:grid;grid-template-columns:1.55fr 1fr;gap:70px;align-items:center}.eyebrow{font:0.75rem/1.6 var(--mono);letter-spacing:1.6px;color:var(--muted);margin:0 0 25px}.cross{color:var(--accent);font-size:1.25rem;margin-right:12px}.muted{color:var(--line);padding:0 10px}h1{font-size:clamp(3.5rem,6.5vw,5.5rem);line-height:1.03;letter-spacing:-5px;font-weight:550;margin:28px 0}h1>span{color:var(--accent)}.cursor{font-weight:400}.role{font-size:1.5rem;line-height:1.35;letter-spacing:-.5px;margin:0 0 24px}.intro{color:var(--muted);max-width:480px;font-size:1.0625rem;line-height:1.8}.actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:32px}.button{padding:14px 20px;font-size:0.875rem;display:flex;gap:25px;align-items:center;border:1px solid var(--line);transition:background .2s,transform .2s}.button:hover{transform:translateY(-3px)}.primary{background:var(--accent);border-color:var(--accent);color:#1e3628;font-weight:650}.primary:hover{background:#e5e8c3}.secondary:hover{background:var(--surface)}.profile-panel{border:1px solid var(--line);background:var(--surface);position:relative}.panel-top,.panel-bottom{padding:17px 22px;display:flex;justify-content:space-between;font:0.75rem/1.5 var(--mono);letter-spacing:1px;color:var(--muted)}.panel-top{border-bottom:1px solid var(--line)}.panel-top span:last-child{color:var(--accent)}.panel-body{padding:26px 30px}.code-comment{font:0.75rem var(--mono);color:var(--muted);margin:0 0 18px}.panel-title{font-size:2.125rem;font-weight:500;line-height:1.15;letter-spacing:-1px;margin:0 0 32px}.panel-title>span,h2>span{color:var(--accent)}dl{margin:0}dl>div{display:grid;grid-template-columns:100px 1fr;gap:15px;border-top:1px solid var(--line);padding:15px 0}dt{font:0.75rem/1.8 var(--mono);color:var(--muted);letter-spacing:.6px}dd{margin:0;font-size:0.875rem;line-height:1.55}.panel-bottom{border-top:1px solid var(--line);color:var(--accent);font-size:0.75rem}.credentials-strip{border-top:1px solid var(--line);border-bottom:1px solid var(--line);display:grid;grid-template-columns:1fr 1.35fr 1.15fr;padding:25px 0}.credentials-strip>div{padding:0 28px;border-left:1px solid var(--line)}.credentials-strip>div:first-child{padding-left:0;border:0}.credentials-strip strong{font-weight:500;font-size:1.5rem;letter-spacing:-.6px}.credentials-strip strong span{color:var(--muted);font-size:1.125rem}.credentials-strip p{font-size:0.8125rem;color:var(--muted);margin:4px 0 0}.section{padding:96px 0;border-bottom:1px solid var(--line)}.section-head{display:grid;grid-template-columns:1fr 1.4fr;column-gap:70px;margin-bottom:44px}.section-head .eyebrow{grid-column:1/-1;margin-bottom:20px}.section-head>p:last-child{color:var(--muted);max-width:480px;align-self:end;margin:0 0 5px}h2{font-size:2.75rem;line-height:1.12;letter-spacing:-1.8px;font-weight:500;margin:0}h3{font-size:1.4375rem;line-height:1.35;letter-spacing:-.5px;font-weight:500;margin:0}.job{display:grid;grid-template-columns:230px 1fr;gap:45px;border-top:1px solid var(--line);padding:34px 0}.job:last-child{padding-bottom:0}.job-meta p{font:0.75rem/1.7 var(--mono);color:var(--muted);margin:8px 0}.job-meta p:last-child{font-family:var(--sans);font-size:0.8125rem}.tag{display:inline-block;color:var(--accent);border:1px solid #92a67c;padding:4px 8px;font:0.75rem/1.5 var(--mono);letter-spacing:1px;margin-bottom:5px}.company{font:0.75rem var(--mono);letter-spacing:1px;color:var(--accent);margin:0 0 12px}.job h3 span{font:0.75rem var(--mono);color:var(--muted);white-space:nowrap;margin-left:8px}.job ul{padding-left:19px;margin:20px 0;color:var(--muted)}.job li{padding-left:6px;margin:8px 0}.job-content>p:not(.company){color:var(--muted)}.chips{display:flex;flex-wrap:wrap;gap:7px}.chips span{border:1px solid var(--line);background:#2b4934;padding:4px 9px;font:0.75rem/1.5 var(--mono);color:#e2e8ce}.skills-grid{display:grid;grid-template-columns:1fr 1fr;border-top:1px solid var(--line);border-left:1px solid var(--line)}.skill{padding:30px;border-right:1px solid var(--line);border-bottom:1px solid var(--line)}.skill-index{font:0.75rem var(--mono);color:var(--accent);display:block;margin-bottom:24px}.skill p{color:var(--muted);max-width:390px;font-size:1.0rem;margin:13px 0 24px}.projects{display:grid;grid-template-columns:1.05fr 1fr;gap:30px}.project{border:1px solid var(--line);padding:28px}.featured{background:var(--surface);display:flex;flex-direction:column}.project-top{display:flex;justify-content:space-between;gap:10px;color:var(--muted);font:0.75rem var(--mono)}.project h3{font-size:1.3125rem}.featured h3{font-size:2.0rem;margin:20px 0 5px;letter-spacing:-1px}.project p:not(.eyebrow){font-size:1.0rem;color:var(--muted)}.project .eyebrow{font-size:0.75rem;margin-bottom:13px;letter-spacing:1px}.project-list{display:grid;gap:14px}.project-list .project{padding:23px 26px}.project-list p:last-child{margin-bottom:0}.lab-stack{margin:24px 0;border-top:1px solid var(--line)}.lab-stack>div{display:flex;justify-content:space-between;gap:15px;padding:16px 0;border-bottom:1px solid var(--line)}.lab-stack span{font:0.75rem/1.8 var(--mono);color:var(--muted)}.lab-stack strong{font:0.8125rem/1.6 var(--mono);font-weight:400}.project-note{margin-top:auto}.learning{display:grid;grid-template-columns:1fr 1.4fr;gap:70px}.degree{margin:30px 0}.degree h3{margin-top:10px;font-size:1.375rem}.degree p,.school p{color:var(--muted);font-size:1.0rem}.school h3{font-size:1.125rem}.certifications>p{margin:0 0 20px}.certifications ul{list-style:none;padding:0;margin:0;border-top:1px solid var(--line)}.certifications li{display:flex;justify-content:space-between;align-items:center;gap:15px;padding:20px 0;border-bottom:1px solid var(--line)}.certifications small{font:0.75rem var(--mono);color:var(--muted);white-space:nowrap}.contact{padding:95px 0 85px}.contact h2{font-size:4.0rem;letter-spacing:-2.8px;margin-bottom:28px}.email{font-size:clamp(1.0rem,2.5vw,1.75rem);border-bottom:1px solid var(--line);padding-bottom:10px;display:inline-block;overflow-wrap:anywhere}.email span{color:var(--accent);margin-left:15px}.email:hover{color:var(--accent)}.contact-details{display:flex;gap:30px;color:var(--muted);font-size:0.875rem;margin-top:24px}footer{border-top:1px solid var(--line);display:flex;align-items:center;gap:28px;padding:24px 0 35px}footer p{font-size:0.75rem;color:var(--muted);flex:1}footer>a:last-child{font:0.75rem var(--mono);letter-spacing:1px;color:var(--muted)}@media(min-width:1600px){.hero{padding-top:105px;padding-bottom:95px}}@media(max-width:1000px){.header,main,footer{width:calc(100% - 56px)}.wordmark-caption{display:none}.hero{gap:35px}.hero h1{font-size:4.0rem;letter-spacing:-3.8px}.panel-body{padding:24px}.panel-title{font-size:1.8125rem}.section-head,.learning{gap:35px}.credentials-strip strong{font-size:1.25rem}.job{grid-template-columns:190px 1fr;gap:25px}.button{gap:13px;padding:13px 15px}.projects{gap:18px}.project{padding:24px}}@media(max-width:720px){html{scroll-padding-top:24px}.header,main,footer{width:calc(100% - 40px)}.header{height:82px}nav{gap:18px;font-size:0.8125rem}nav .nav-contact{display:none}.hero{grid-template-columns:1fr;padding:48px 0;gap:38px}.hero h1{font-size:clamp(3.0rem,11.7vw,5.0rem);letter-spacing:-3px}.eyebrow{font-size:0.75rem;letter-spacing:1.1px}.role{font-size:1.4375rem}.intro{font-size:1.0rem}.profile-panel{max-width:none}.panel-body{padding:24px}.panel-title{font-size:1.875rem}.panel-body dl{display:grid;grid-template-columns:1fr 1fr;gap:0 20px}dl>div{display:block}dt{margin-bottom:7px}.credentials-strip{grid-template-columns:1fr;padding:0}.credentials-strip>div,.credentials-strip>div:first-child{border:0;border-bottom:1px solid var(--line);padding:20px 0}.credentials-strip>div:last-child{border-bottom:0}.credentials-strip strong{font-size:1.5rem}.credentials-strip p{font-size:0.875rem}.section{padding:60px 0}.section-head{display:block;margin-bottom:30px}h2{font-size:2.25rem;letter-spacing:-1.5px}.section-head>p:last-child{margin-top:20px}.job{display:block;padding:26px 0}.job-meta{margin-bottom:20px}.job-meta p{display:inline-block;margin:4px 14px 4px 0}.job-meta .tag{display:table}.job h3{font-size:1.375rem}.job h3 span{display:block;margin:9px 0 0}.job ul{font-size:1.0rem}.skills-grid,.projects,.learning{grid-template-columns:1fr}.skill{padding:25px}.skill h3{font-size:1.4375rem}.skill p{font-size:1.0rem}.chips span{font-size:0.75rem}.skill-index{margin-bottom:18px}.project .eyebrow{font-size:0.75rem}.project p:not(.eyebrow){font-size:1.0rem}.learning{gap:30px}.certifications li{font-size:1.0rem}.contact{padding:60px 0}.contact h2{font-size:2.9375rem;letter-spacing:-2px}.email{font-size:1.0625rem}.email span{margin-left:3px}.contact-details{flex-wrap:wrap;gap:12px 25px}footer{gap:15px;flex-wrap:wrap}footer p{font-size:0.75rem}footer>a:last-child{font-size:0.75rem}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important}}@media print{body{background:white;color:black}.header,footer,.profile-panel,.actions{display:none}.header,main,footer{width:100%}.hero{padding:0;display:block}h1,h1>span{font-size:2.5rem;color:black}.section{padding:25px 0}.job,.project,.skill{break-inside:avoid}.contact{padding:25px 0}.contact h2{font-size:1.875rem}:root{--muted:#444;--accent:#374c08;--line:#aaa;--surface:#fff}.chips span{background:white;color:black}}

/* Typography and responsive refinements */
h1,h2,.panel-title{font-family:var(--display);font-weight:300;text-transform:uppercase}
h1{font-size:clamp(5.5rem,9.2vw,8.125rem);line-height:.93;letter-spacing:-2.5px;margin:24px 0 30px}
h1>span{color:var(--text)}.cursor{display:none}
h2{font-size:3.75rem;line-height:1;letter-spacing:-1px}.panel-title{font-size:2.875rem;letter-spacing:0}
.header{height:104px}.wordmark-caption{font-size:0.75rem}.monogram{font-family:var(--display);font-weight:500;font-size:2.125rem;letter-spacing:-1px}
nav a{display:inline-flex;align-items:center;min-height:44px}nav a:hover,nav a.active{text-decoration:underline;text-underline-offset:6px}.nav-contact{border:1px solid var(--line);padding:0 14px}
.hero{gap:65px}.hero-main,.profile-panel,.section-head>*,.projects>*,.learning>*{min-width:0}
.role{font-size:1.375rem}.intro{color:var(--text)}.panel-top,.panel-bottom{font-size:0.75rem;letter-spacing:.6px}.panel-body{padding:28px}
dl>div{grid-template-columns:105px 1fr;gap:12px}dt{font-size:0.75rem}dd{font-size:0.875rem}.code-comment{font-size:0.75rem}
.chips span{font-size:0.75rem}.company{font-size:0.75rem}.button{min-height:48px}.button:hover{transform:translateY(-2px)}
.section-head{grid-template-columns:1fr 1.4fr}.contact h2{font-size:5.25rem;letter-spacing:-1px}.lab-stack span{font-size:0.75rem}
.email{min-height:44px}.contact-details a{display:inline-flex;align-items:center;min-height:44px}.contact-details{align-items:center}footer>a:last-child{min-height:44px;display:flex;align-items:center}
@media(max-width:1000px){.hero{gap:30px}.hero h1{font-size:clamp(4.25rem,9.5vw,6.0rem);letter-spacing:-1.5px}.panel-title{font-size:2.25rem}.panel-body{padding:22px}dl>div{display:block}dt{margin-bottom:6px}.credentials-strip>div{padding:0 20px}}
@media(max-width:720px){.header{height:auto;min-height:82px;gap:16px;flex-wrap:wrap;padding:14px 0}nav{gap:18px}nav a{font-size:0.875rem}.hero{gap:32px;padding-top:40px}.hero h1{font-size:clamp(4.25rem,15.4vw,6.875rem);line-height:.94;letter-spacing:-1.5px}h2{font-size:3.0rem}.panel-title{font-size:2.5rem}.panel-body{padding:24px}.credentials-strip>div,.credentials-strip>div:first-child{padding:20px 0}.contact h2{font-size:4.0rem}.section-head .eyebrow{font-size:0.75rem}.eyebrow{font-size:0.75rem}.panel-bottom{letter-spacing:0;font-size:0.75rem}.certifications li{flex-wrap:wrap;gap:6px 14px}.email{font-size:clamp(0.875rem,4vw,1.25rem)}.contact-details{gap:8px 20px}.lab-stack>div{flex-wrap:wrap}.wordmark .monogram{font-size:1.875rem}.school p{font-size:1.0rem}}
@media(max-width:360px){nav{gap:12px}nav a{font-size:0.8125rem}.panel-body dl{grid-template-columns:1fr}.panel-bottom{padding:16px;font-size:0.75rem}.hero h1{font-size:4.0rem}.actions{display:grid}.button{justify-content:space-between}.contact h2{font-size:3.5rem}}
@media print{h1,h1>span{font-size:3.0rem;color:black}h2,.contact h2{font-size:2.25rem}.chips span{color:black;background:white}.company,.tag{color:black}.intro{color:black}.learning{gap:25px}.section-head{margin-bottom:20px}.hero{padding:0}.credentials-strip{margin-top:20px}.contact{break-inside:avoid}}

h1,h2,h3{overflow-wrap:anywhere}nav{flex-wrap:wrap}.panel-top,.panel-bottom{gap:12px}.profile-panel dd{overflow-wrap:anywhere}.skills-grid>*,.job-content,.job-meta{min-width:0}.lab-stack strong{overflow-wrap:anywhere}.contact-details a:hover,footer>a:hover{text-decoration:underline;text-underline-offset:5px}
p,li,dd,dt{overflow-wrap:anywhere}.project-list{min-width:0}.project-list>.project{min-width:0}.panel-body dl>div{min-width:0}@media(max-width:720px){.panel-body dl{grid-template-columns:repeat(auto-fit,minmax(min(100%,10rem),1fr))}}
/* Keep the resume's sections reachable on long screens. */
.header{position:sticky;top:0;z-index:10;background:var(--bg);height:86px}
@media(max-width:720px){.header{height:auto;min-height:82px;padding:12px 0;gap:4px}.wordmark{width:100%;justify-content:space-between}.wordmark-caption{display:block;max-width:none;font-size:.75rem;letter-spacing:.6px}nav{width:100%;justify-content:space-between;gap:8px}nav a{font-size:.875rem}nav .nav-contact{display:inline-flex;margin:0;padding:0;border:0}.nav-contact span{margin-left:4px}html{scroll-padding-top:120px}.section{scroll-margin-top:-35px}}
@media(max-width:360px){nav a{font-size:.8125rem}.wordmark-caption{font-size:.75rem;max-width:170px;text-align:right}.nav-contact span{display:none}}
.wordmark-caption{overflow-wrap:anywhere}.wordmark{min-width:0}.monogram{flex-shrink:0}@media(max-height:550px){.header{position:relative}}
/* Reflow by available reading space, including larger text preferences. */
main{container-type:inline-size}
.header{height:auto;min-height:86px;padding-top:14px;padding-bottom:14px;gap:20px;flex-wrap:wrap}
.header nav{row-gap:8px}
.hero{align-items:start}
@container (max-width:50rem){
 .hero,.section-head,.projects,.learning,.skills-grid{grid-template-columns:1fr}
 .hero{gap:38px}
 .section-head{row-gap:20px}
 .section-head>p:last-child{max-width:650px}
 .job{grid-template-columns:1fr;gap:16px}
 .credentials-strip{grid-template-columns:1fr;padding:0}
 .credentials-strip>div,.credentials-strip>div:first-child{padding:20px 0;border:0;border-bottom:1px solid var(--line)}
 .credentials-strip>div:last-child{border-bottom:0}
}
@media(max-width:720px){.header{padding-top:12px;padding-bottom:12px;gap:4px}}
@media print{main{container-type:normal}.header{display:none}}

/* Woodland palette with a quiet, irregular paper grain. */
body{background-color:var(--bg);background-image:url('grain.svg'),radial-gradient(ellipse at 10% 0%,#36503a66,transparent 58%),linear-gradient(120deg,#183b2b,#203e2a 60%,#183629);background-size:240px 240px,100% 1200px,100% 100%;background-repeat:repeat,no-repeat,no-repeat}
.header{background-color:var(--bg);background-image:url('grain.svg');background-size:240px 240px}
.profile-panel,.featured{background-color:var(--surface);background-image:url('grain.svg');background-size:240px 240px;box-shadow:0 5px 22px #0a1c1520}
.skill,.project-list .project{background-color:#203c2c55}
h1>span{color:#d4dfb2}.role{color:#e1e6cd}.eyebrow,.company,.skill-index{color:#cfdbad}
.primary{background-image:url('grain.svg');background-size:240px 240px}.secondary{background-color:#152d2040}
.chips span{background-image:url('grain.svg');background-size:240px 240px}.tag{background-color:#b6c88b0c}
@media print{body,.header,.profile-panel,.featured,.primary,.chips span{background-image:none}body{background:white}.skill,.project-list .project{background:transparent}h1>span,.role,.eyebrow,.company,.skill-index{color:black}.profile-panel,.featured{box-shadow:none}}

/* Deep evergreen and parchment, informed by the supplied reference. */
body{background-color:var(--bg);background-image:url('organic-grain.svg'),radial-gradient(ellipse at 90% 25%,#2a382922,transparent 60%);background-size:720px 720px,100% 100%;background-repeat:repeat,no-repeat}
.header{background-color:#061f1bf5;background-image:url('grain.svg');border-color:#53605270}
.profile-panel,.featured{background-color:#0c2923bb;background-image:url('organic-grain.svg');background-size:720px 720px;box-shadow:none}
.skill,.project-list .project{background-color:#0a241ddd}
.chips span{background-color:#16352b;color:#d6d6bd;background-image:none}
.tag{color:#dfd7b5;border-color:#69745a;background-color:#2c3b2320}
h1,h2,.panel-title{font-family:Georgia,'Times New Roman',serif;text-transform:none;font-weight:400}
h1{font-size:clamp(4rem,6.8vw,6rem);line-height:1.02;letter-spacing:-3px;margin:22px 0 24px}
h1>span{color:var(--text)}h2{font-size:2.8rem;line-height:1.13;letter-spacing:-1.3px}
.panel-title{font-size:2.25rem;line-height:1.15;letter-spacing:-.8px}.role{color:#dfd8c4}
.eyebrow,.company,.skill-index{color:#c6c5a8}.primary{color:#13291f;background-color:var(--accent);border-color:var(--accent)}.primary:hover{background-color:#fff0d8}
.secondary{background-color:#0a241d80}.hero{padding-top:58px;padding-bottom:60px}.contact h2{font-size:4.3rem}
nav a{color:#d0cbb7}.monogram{color:#f4e6ce}.panel-bottom{color:#cfcaab}.muted{color:#889278}
@media(max-width:1000px){.hero h1{font-size:clamp(3.5rem,7.5vw,5.3rem)}.panel-title{font-size:2rem}}
@media(max-width:720px){
 .header,main,footer{width:calc(100% - 36px)}
 .header{min-height:0;padding:10px 0 5px;row-gap:3px}
 .wordmark .monogram{font-size:1.65rem}.wordmark-caption{font-size:.75rem;letter-spacing:.2px}
 nav a{font-size:.875rem;min-height:44px}nav{gap:5px}
 .hero{padding-top:28px;padding-bottom:34px;gap:28px}
 .hero .eyebrow{margin-bottom:16px;font-size:.75rem;letter-spacing:.6px}
 .hero h1{font-size:clamp(2.75rem,11.5vw,4.6rem);line-height:1.06;letter-spacing:-1.7px;margin:18px 0 20px}
 .role{font-size:1.15rem;line-height:1.5;margin-bottom:16px}.intro{font-size:1rem;line-height:1.75;margin-bottom:0}
 .actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:24px}
 .button{padding:12px;gap:8px;justify-content:space-between;font-size:.875rem;min-height:48px}
 .panel-top,.panel-bottom{padding:13px 18px}.panel-body{padding:20px}.panel-title{font-size:1.85rem;margin-bottom:22px}.code-comment{margin-bottom:14px}
 .panel-body dl{grid-template-columns:1fr}.panel-body dl>div{display:grid;grid-template-columns:6.5rem minmax(0,1fr);gap:14px;padding:13px 0}
 dt{font-size:.75rem}dd{font-size:.875rem}.panel-bottom{font-size:.75rem}
 .section{padding:46px 0}.section-head{margin-bottom:26px}h2{font-size:2.25rem;letter-spacing:-.8px}
 .section-head .eyebrow{margin-bottom:14px}.section-head>p:last-child{margin-top:16px;font-size:1rem;line-height:1.75}
 .job{padding:24px 0}.job-meta{margin-bottom:15px}.job h3{font-size:1.25rem}.job ul{margin-top:16px;line-height:1.75}
 .skill,.project,.project-list .project{padding:22px}.skill p,.project p:not(.eyebrow){line-height:1.75}
 .featured h3{font-size:1.65rem}.lab-stack{margin:18px 0}.lab-stack>div{padding:13px 0}
 .contact{padding:48px 0}.contact h2{font-size:2.85rem;line-height:1.12;letter-spacing:-1px}
 .email{font-size:clamp(.875rem,3.9vw,1.1rem);line-height:1.7}.contact-details{margin-top:16px}footer{gap:14px;padding-bottom:24px}
}
@media(max-width:360px){.actions{grid-template-columns:1fr}.panel-body dl>div{grid-template-columns:1fr;gap:4px}.wordmark-caption{max-width:190px}.hero h1{font-size:2.75rem}}
@media print{body,.profile-panel,.featured{background:white;background-image:none}.header{display:none}.skill,.project-list .project{background:transparent}h1,h1>span,h2,.panel-title,.role,.eyebrow,.company,.skill-index,.panel-bottom{color:black}.chips span{color:black;background:white}}
@media(max-width:720px){.actions{grid-template-columns:repeat(auto-fit,minmax(min(100%,9.5rem),1fr))}.panel-body{container-type:inline-size}}
@container(max-width:18rem){.panel-body dl>div{grid-template-columns:1fr;gap:4px}}
/* Short, composited transitions; content stays visible without JavaScript. */
.header::after{content:'';position:absolute;left:0;right:0;bottom:-1px;height:2px;background:var(--accent);transform:scaleX(var(--reading-progress,0));transform-origin:left;opacity:.65;pointer-events:none}
.header.is-scrolled{box-shadow:0 10px 24px #00100a35}
nav a{position:relative;text-decoration:none!important}
nav a::after{content:'';position:absolute;bottom:7px;left:0;right:0;height:1px;background:var(--accent);transform:scaleX(0);transform-origin:left;transition:transform 220ms ease}
nav a.active::after,nav a:hover::after,nav a:focus-visible::after{transform:scaleX(1)}
.nav-contact::after{left:12px;right:12px}
.button span,.email span{display:inline-block;transition:transform 220ms ease}
.button:hover span,.button:focus-visible span{transform:translateY(2px)}
.secondary:hover span,.email:hover span{transform:translate(2px,-2px)}
.skill,.project,.profile-panel{transition:transform 280ms cubic-bezier(.2,.7,.2,1),border-color 280ms ease}
@media(hover:hover) and (pointer:fine){.skill:hover,.project:hover{transform:translateY(-3px);border-color:#8a9171}.profile-panel:hover{border-color:#7a876b}}
.hero{position:relative;isolation:isolate}
.hero-visual{position:absolute;inset:0;z-index:-1;overflow:hidden;pointer-events:none;opacity:.42;-webkit-mask-image:radial-gradient(ellipse 50% 50% at 50% 50%,#000 10%,transparent 100%);mask-image:radial-gradient(ellipse 50% 50% at 50% 50%,#000 10%,transparent 100%)}
.hero-visual picture,.hero-visual img{display:block;width:100%;height:100%}
.hero-visual img{object-fit:cover;object-position:center;transform:scale(1.05)}
.hero-visual::after{content:'';position:absolute;inset:0;background:linear-gradient(90deg,#061f1bf2 0%,#061f1bd9 36%,#061f1b20 100%)}
.hero-main,.profile-panel{position:relative}
.hero .profile-panel{background-color:#0b261feb}
@media(max-width:720px){.nav-contact::after{left:0;right:0}.hero-visual{opacity:.27;inset:0 0 auto;height:600px}.hero-visual::after{background:linear-gradient(90deg,#061f1bcc,#061f1b70),linear-gradient(0deg,#061f1b,transparent 50%)}.hero-visual img{object-position:65% center}}
@media(prefers-reduced-motion:reduce){.hero-visual img,.skill:hover,.project:hover,.button:hover,.button span,.email span{transform:none!important}.header::after{display:none}nav a::after{transition:none}html{scroll-behavior:auto}}
@media print{.hero-visual,.header::after{display:none}.skill,.project{transform:none!important}}
.hero-visual{opacity:.68}
@media(max-width:720px){.hero-visual{opacity:.45}}
/* Blend the header with the page; use a full-width scrim only while scrolling. */
.header{width:100%;margin:0;padding-inline:max(48px,calc((100% - 1200px)/2));background:transparent;box-shadow:none;isolation:isolate;border-bottom-color:#53605245}
.header::before{content:'';position:absolute;inset:0 0 -18px;z-index:-1;pointer-events:none;background:linear-gradient(to bottom,#061f1bfa 0%,#061f1bf2 75%,#061f1b00 100%);opacity:0;transition:opacity 180ms ease}
.header.is-scrolled{box-shadow:none}
.header.is-scrolled::before{opacity:1}
@media(max-width:1000px){.header{padding-inline:28px}}
@media(max-width:720px){.header{padding-inline:18px}}
@media(prefers-reduced-motion:reduce){.header::before{transition:none}}
@media print{.header::before{display:none}}
