@import url("/assets/css/design-tokens.css?v=20261008-polish");
svg{fill:currentColor}
:root{--paper:#fcfaf5;--navy:#10283f;--gold:#795b20;--line:#ded5c5;--muted:#5c6573;--serif:Lora,Georgia,serif;--sans:"IBM Plex Sans",Arial,sans-serif}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--paper);color:var(--navy);font:18px/1.55 var(--sans)}
h1,h2,h3,p,figure{margin:0}
h1,h2,h3{font-family:var(--serif);font-weight:600;line-height:1.16}
a{color:inherit;text-underline-offset:5px}
button,input{font:inherit}
button{cursor:pointer}
a,button,summary{touch-action:manipulation}
a:focus-visible,button:focus-visible,summary:focus-visible,input:focus-visible{outline:3px solid #a47a23;outline-offset:5px}
.wrap{width:min(1296px,calc(100% - 100px));margin-inline:auto}
.skip{position:absolute;top:-100px;left:20px;z-index:20;background:white;padding:12px}
.skip:focus{top:10px}
.editorial-masthead{display:flex;justify-content:space-between;align-items:center;gap:30px;padding:28px 0}
.brand{display:flex;align-items:center;gap:20px;text-decoration:none;font-family:var(--serif);font-size:24px}
.brand img{width:64px;height:64px;object-fit:contain}
.primary{display:flex;gap:40px;flex-wrap:wrap}
.primary a{text-decoration:none;font-size:17px;padding:8px 0}
.primary a:hover,.primary a[aria-current=page]{border-bottom:2px solid var(--gold)}
.hero{display:grid;grid-template-columns:1.3fr .9fr;gap:40px;align-items:center;padding-top:24px;min-height:560px}
.hero-copy{padding:28px 0 36px}
.eyebrow{display:block;color:var(--gold);font-size:15px;letter-spacing:.14em;text-transform:uppercase;margin-bottom:28px}
h1{font-size:clamp(3.1rem,5.6vw,5.5rem);letter-spacing:-.045em;max-width:13ch}
.discipline{font-family:var(--serif);font-size:22px;color:var(--muted);margin-top:25px;line-height:1.5}
.intro{font-family:var(--serif);font-size:21px;line-height:1.55;max-width:45ch;margin-top:26px}
.actions{display:flex;gap:18px;flex-wrap:wrap;margin-top:35px}
.button{display:inline-flex;align-items:center;justify-content:center;gap:20px;border:1px solid var(--navy);padding:var(--action-padding);border-radius:3px;background:var(--navy);color:#fff;text-decoration:none;font-weight:600;font-size:17px;min-height:var(--action-height)}
.button.secondary{color:var(--navy);background:transparent;border-color:var(--gold)}
.button:hover{background:#213d55;color:white}
.button svg,.direction svg{width:22px;height:22px;flex-shrink:0}
.hero-photo{align-self:end;overflow:hidden;height:560px}
.hero-photo img{height:100%;width:100%;object-fit:cover;object-position:50% 18%;mix-blend-mode:multiply;display:block}
.snapshot{display:grid;grid-template-columns:1.15fr 1fr 1fr;border-block:1px solid var(--line);padding:34px 0;align-items:center}
.snapshot>div{padding:0 36px;text-align:center;font-family:var(--serif);font-size:23px;line-height:1.3}
.snapshot>div+div{border-left:1px solid var(--gold)}
.experience{display:flex;align-items:center;justify-content:center;gap:15px}
.experience strong{font-size:53px;color:var(--gold)}
.experience span{max-width:15ch;font-size:20px;text-align:left}
.section{padding-top:65px}
.section-head{display:flex;align-items:center;gap:28px;margin-bottom:30px}
.section-head h2{font-size:45px;letter-spacing:-.035em}
.section-head .rule{height:1px;background:var(--gold);flex:1}
.utility{display:flex;align-items:center;gap:15px;font-size:14px;letter-spacing:.07em;text-transform:uppercase;text-decoration:none;color:var(--gold);font-weight:600;white-space:nowrap}
.utility:hover{text-decoration:underline}
.utility svg{width:20px;height:20px}
.project{display:grid;grid-template-columns:65px 1fr 1.2fr auto;gap:25px;align-items:center;padding:31px 0;border-bottom:1px solid var(--line)}
.project:last-child{border-bottom:0}
.number{font-family:var(--serif);font-size:42px;color:var(--gold)}
.project-title{display:block;font-family:var(--serif);font-size:27px;line-height:1.25;text-decoration:none;font-weight:600}
.project-title:hover{text-decoration:underline}
.project .status{display:block;color:var(--muted);font-family:var(--serif);font-size:17px;margin-top:6px}
.project p{font-size:17px;line-height:1.6;border-left:1px solid var(--line);padding-left:32px;color:var(--navy)}
.direction{color:var(--gold);display:flex;align-items:center;justify-content:center;padding:8px;text-decoration:none}
.library-overview{display:flex;justify-content:space-between;align-items:start;gap:36px;margin-bottom:24px}
.topics{display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:end;max-width:630px;font-size:15px}
.topics a{padding:9px 17px;background:#eee8dc;border-radius:3px;text-decoration:none;display:block}
.topics a:hover{background:#e0d5bd}
.articles{display:grid;grid-template-columns:1fr 1fr;gap:0 60px}
.article{display:grid;grid-template-columns:1fr 25px;gap:18px;padding:29px 0;border-bottom:1px solid var(--line);text-decoration:none}
.article h3{font-size:23px;line-height:1.32}
.article p{font-size:17px;color:var(--muted);margin-top:12px;line-height:1.5}
.article .direction{align-self:center}
.article:hover h3{text-decoration:underline}
.article:nth-last-child(-n+2){border-bottom:0}
.contact{margin-top:62px;background:var(--navy);color:white;padding:47px 0}
.contact-inner{display:grid;grid-template-columns:1.05fr 1fr auto;gap:36px;align-items:center}
.contact .eyebrow{color:#d9b965;margin-bottom:12px;font-size:14px}
.contact h2{font-size:43px;letter-spacing:-.02em}
.contact p{font-size:17px;color:#d7dfe6;max-width:42ch;margin-top:14px}
.contact-details{border-left:1px solid #496075;padding-left:35px;display:grid;gap:17px}
.contact-details a{display:flex;align-items:center;gap:14px;text-decoration:none;font-size:16px;overflow-wrap:anywhere;min-height:30px}
.contact-details a:hover{text-decoration:underline}
.contact-details svg{width:24px;height:24px;color:#d3ad58;flex-shrink:0}
.contact .button{background:transparent;color:#e7c576;border-color:#a68541;padding:16px 24px;font-size:15px}
.contact .button:hover{background:#25415c}
.footer{padding:24px 0}
.footer nav{display:flex;gap:25px;flex-wrap:wrap;font-size:14px}
.footer a{text-decoration:none}
.footer a:hover{text-decoration:underline}
.footer small{display:block;color:var(--muted);margin-top:15px;font-size:14px}
.case-dialog{width:min(760px,calc(100% - 40px));border:1px solid var(--line);background:var(--paper);color:var(--navy);padding:36px;max-height:85vh;overflow:auto}
.case-dialog::backdrop{background:rgba(7,24,43,.6)}
.case-dialog h2{font-size:32px}
.case-dialog p{margin-top:20px;font-size:17px}
.case-dialog .close{float:right;background:transparent;border:1px solid var(--gold);padding:8px 15px;color:var(--navy);margin:0 0 20px 20px}
.case-dialog dl{margin-top:24px}
.case-dialog dt{font-weight:600;font-size:16px;margin-top:15px}
.case-dialog dd{margin:5px 0;font-size:17px}
.case-dialog strong{font-weight:600}
.case-dialog:focus{outline:none}
.no-js-note{margin:20px 0}
@media(min-width:1500px){.hero{min-height:600px}}
@media(max-width:1100px){.wrap{width:calc(100% - 64px)}
.primary{gap:var(--gap-lg)}
.brand{font-size:21px}
.hero{min-height:0;gap:28px}
.hero-photo{height:510px}
.hero-copy{padding:24px 0 30px}
h1{font-size:clamp(3rem,6vw,4.4rem)}
.discipline{font-size:19px}
.intro{font-size:20px;margin-top:25px}
.snapshot>div{font-size:19px;padding:0 20px}
.experience span{font-size:17px}
.project{grid-template-columns:45px 1fr 1.15fr auto;gap:17px}
.project-title{font-size:23px}
.section-head h2{font-size:36px}
.articles{gap:0 40px}
.contact-inner{grid-template-columns:1fr 1fr;gap:25px}
.contact .button{grid-column:2;justify-self:start}
.contact-details{padding-left:25px}}
@media(max-width:760px){.editorial-masthead{align-items:start;flex-direction:column;gap:18px;padding:20px 0}
.brand img{width:48px;height:48px}
.primary{width:100%;justify-content:space-between;gap:10px}
.primary a{font-size:15px}
.hero{grid-template-columns:1fr;gap:0;padding-top:30px}
.hero-copy{padding:0 0 24px}
h1{font-size:clamp(2.8rem,8.8vw,4rem);max-width:16ch}
.intro{font-size:19px;max-width:46ch}
.hero-photo{height:270px;width:min(340px,100%);justify-self:center}
.hero-photo img{object-position:center 20%;object-fit:cover}
.snapshot{padding:23px 0;gap:18px;grid-template-columns:1fr}
.snapshot>div+div{border-left:0}
.snapshot>div{padding:0;font-size:18px}
.experience strong{font-size:41px}
.experience span{max-width:none;font-size:17px}
.section{padding-top:40px}
.section-head{gap:15px;align-items:start;flex-wrap:wrap;margin-bottom:18px}
.section-head h2{font-size:32px}
.section-head .rule{display:none}
.utility{margin-left:auto;padding-top:10px;font-size:12px}
.project{grid-template-columns:42px 1fr 28px;gap:15px;padding:23px 0}
.number{font-size:32px}
.project-title{font-size:22px}
.project .status{font-size:15px}
.project p{grid-column:2;grid-row:2;padding-left:0;border:0;font-size:16px}
.project .direction{grid-column:3;grid-row:1}
.project .project-demo-link{grid-column:2 / -1;grid-row:3;justify-self:start}
.library-overview{display:block}
.topics{margin-top:20px;justify-content:start}
.topics a{font-size:14px;padding:8px 11px}
.articles{grid-template-columns:1fr;gap:0}
.article{padding:23px 0}
.article h3{font-size:22px}
.article p{font-size:16px}
.article:nth-last-child(2){border-bottom:1px solid var(--line)}
.contact{padding:35px 0;margin-top:35px}
.contact-inner{grid-template-columns:1fr;gap:25px}
.contact h2{font-size:35px}
.contact-details{border-left:0;padding:0}
.contact-details a{font-size:15px}
.contact .button{grid-column:1}
.footer nav{gap:17px}
.case-dialog{padding:23px}
.case-dialog h2{font-size:27px}}
@media(max-width:420px){.wrap{width:calc(100% - 40px)}
.button{padding:14px 21px;gap:12px;font-size:16px}
.actions{gap:12px}
.primary a{font-size:14px}
.contact-details a{font-size:14px}
.project-title{font-size:20px}
.project .status{font-size:14px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
@media print{.editorial-masthead,.actions,.utility,.direction,.footer,.button{display:none}
.wrap{width:100%}
.hero{min-height:0;padding-top:0}
.hero-copy{padding-bottom:20px}
h1{font-size:40px}
.hero-photo{height:270px}
.intro{font-size:17px}
.snapshot{padding:15px 0}
.section{padding-top:25px}
.project,.article{break-inside:avoid}
.contact{background:white;color:var(--navy);margin-top:25px;padding:20px 0}
.contact p,.contact-details svg{color:var(--navy)}
.contact-inner{grid-template-columns:1fr 1fr}
.case-dialog{display:none}}
.supporting-work{border-top:1px solid var(--line);padding:24px 0;display:flex;gap:30px;justify-content:space-between;font-size:16px}
.supporting-work>span{color:var(--gold);font-size:14px;letter-spacing:.06em;text-transform:uppercase}
.supporting-work a{text-decoration:none;font-weight:600}
.supporting-work a:hover{text-decoration:underline}
.supporting-work small{display:block;font-weight:400;font-size:14px;color:var(--muted);margin-top:5px}
@media(max-width:760px){.supporting-work{flex-direction:column;gap:18px}}
.library-overview{display:block}
.library-intro{font-size:19px;color:var(--muted);max-width:65ch;margin-bottom:23px}
.topics{display:grid;grid-template-columns:repeat(4,1fr);max-width:none;gap:10px;justify-content:start}
.topics a{font-size:15px;display:flex;align-items:center;min-height:64px;padding:12px 17px}
@media(max-width:1000px){.topics{grid-template-columns:1fr 1fr}}
@media(max-width:600px){.topics{grid-template-columns:1fr 1fr;gap:8px}
.topics a{font-size:14px;padding:10px;min-height:70px}
.library-intro{font-size:17px}}
@media(min-width:1101px){h1{max-width:none;font-size:clamp(3.7rem,4.9vw,5rem)}
.hero{grid-template-columns:1.4fr .9fr;gap:28px}
.hero-photo{height:620px}
.hero-copy{padding:20px 0 24px}
.section-head h2{font-size:52px}
.project-title{font-size:30px}
.project{padding:34px 0}
.project .status{font-size:18px}
.article h3{font-size:25px}}
.career-grid{display:grid;grid-template-columns:1.25fr 1fr;gap:60px}
.career-grid h3{font-size:24px;margin-bottom:23px}
.employers{display:grid;grid-template-columns:1fr 1fr;gap:var(--gap-lg) 30px}
.employers strong{display:block;font-size:17px;line-height:1.4}
.employers span{display:block;font-size:15px;line-height:1.55;color:var(--muted);margin-top:8px}
.credential-summary{padding-left:40px;border-left:1px solid var(--line)}
.credential-summary ul{list-style:none;margin:0;padding:0;font-size:16px}
.credential-summary li{display:flex;justify-content:space-between;gap:20px;padding:6px 0}
.credential-summary li span{color:var(--gold)}
.certifications{font-size:16px;font-weight:600;line-height:1.7;border-top:1px solid var(--line);margin-top:20px;padding-top:18px}
.education{font-size:15px;margin-top:16px;color:var(--muted)}
.education strong{color:var(--navy)}
.career-link{display:inline-block;font-size:15px;color:var(--gold);font-weight:600;margin-top:22px}
@media(max-width:1000px){.career-grid{gap:30px}
.career-grid h3{font-size:22px}
.employers{grid-template-columns:1fr;gap:17px}
.credential-summary{padding-left:25px}
.employers strong{font-size:16px}
.credential-summary ul{font-size:15px}}
@media(max-width:760px){.career-grid{grid-template-columns:1fr;gap:32px}
.employers{grid-template-columns:1fr 1fr;gap:20px}
.credential-summary{padding:25px 0 0;border-left:0;border-top:1px solid var(--line)}
.career-grid h3{font-size:22px}
.credential-summary li{font-size:15px}
.career .utility{font-size:12px}}
@media(max-width:420px){.employers{grid-template-columns:1fr 1fr;gap:20px 15px}
.employers strong{font-size:15px}
.employers span{font-size:14px}}
.footer-professional{display:flex;justify-content:space-between;align-items:center;gap:25px;padding-bottom:24px;margin-bottom:23px;border-bottom:1px solid var(--line)}
.footer-professional p{font-family:var(--serif);font-size:22px}
.footer-professional p span{display:block;font-family:var(--sans);font-size:14px;color:var(--muted);margin-top:7px}
.footer-professional nav{gap:12px}
.footer-professional .social-link{display:inline-flex;align-items:center;gap:10px;border:1px solid var(--line);padding:12px 18px;border-radius:3px;font-size:16px;font-weight:600;min-height:48px}
.social-link svg{width:20px;height:20px;fill:currentColor}
.footer-professional .social-link:hover{border-color:var(--gold);background:#eee8dc;text-decoration:none}
@media(max-width:600px){.footer-professional{align-items:start;flex-direction:column;gap:20px}
.footer-professional p{font-size:21px}
.footer-professional nav{width:100%}
.footer-professional .social-link{font-size:15px}}

.article-browser {display:flex;justify-content:space-between;align-items:center;gap:20px;margin-top:24px;color:var(--muted,#5c6573);font-size:14px}.article-browser[hidden]{display:none}.article-browser>div{display:flex;gap:12px}.article-browser button{min-height:46px;padding:10px 18px;border:1px solid #795b20;background:#fcfaf5;color:#10283f;font:inherit;cursor:pointer;border-radius:3px}.article-browser button:hover{background:#eee7d9}.article-topic{display:block;margin-bottom:12px;font-size:12px;color:#795b20}.article-browser button:focus-visible{outline:3px solid #10283f;outline-offset:3px}@media(max-width:600px){.article-browser{align-items:flex-start;flex-direction:column}.article-browser>div{width:100%}.article-browser button{flex:1}}
/* Reflow the introduction when visitors increase text size. */
.hero-copy{min-width:0}
.hero-copy h1{overflow-wrap:anywhere}
@media(max-width:760px){.hero{grid-template-columns:minmax(0,1fr)}}
.home-work-location{margin-top:20px;padding-left:14px;border-left:2px solid var(--gold);font-size:1rem;line-height:1.6;color:var(--ink)}
.contact-copy-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:12px}
.contact-copy-actions button{min-height:44px;padding:10px 14px;border:1px solid #dfc27d;background:transparent;color:#fff;font:inherit;font-size:.875rem;cursor:pointer}
.contact-copy-actions button:focus-visible{outline:3px solid #dfc27d;outline-offset:3px}
.contact-copy-status{margin:8px 0 0;min-height:1.5em;font-size:.875rem}

.contact-copy-actions .contact-linkedin{display:inline-flex;align-items:center;min-height:44px;padding:8px 14px;color:#fff;border:1px solid #dfc27d;box-sizing:border-box;font-size:.875rem}

/* Contact channels are grouped above secondary footer resources. */
.contact-details{min-width:0}.contact-details>a{overflow-wrap:anywhere}.contact-copy-actions .contact-social{display:inline-flex;align-items:center;min-height:44px;padding:10px 14px;border:1px solid currentColor;border-radius:4px;text-decoration:none}.contact-inner{gap:28px}.contact-inner>.button{align-self:start}.footer nav{gap:12px 20px}.footer-professional p span{display:block;margin-top:6px}@media(max-width:720px){.contact-inner{grid-template-columns:1fr}.contact-details{width:100%}.contact-copy-actions{gap:10px;flex-wrap:wrap}.footer{gap:var(--gap-lg)}.footer nav{display:flex;flex-wrap:wrap}}

.contact-inner{grid-template-columns:minmax(0,1.1fr) minmax(0,1fr)}.contact-details>.button{width:max-content;max-width:100%;margin-top:12px}.contact-details>a.button{color:var(--navy);background:var(--gold-light)}@media(max-width:720px){.contact-inner{grid-template-columns:minmax(0,1fr)}}

.contact-details .contact-copy-status{margin:4px 0;min-height:1.4em;font-size:.875rem;line-height:1.4}.contact-details>.button{margin-top:4px}

/* Direct paths into the portfolio, using existing sections and demo routes. */
.hero-explore{display:flex;align-items:center;gap:8px 18px;flex-wrap:wrap;margin-top:25px;padding-top:18px;border-top:1px solid var(--line);font-size:14px}
.hero-explore>span{color:var(--muted);font-size:12px;letter-spacing:.06em;text-transform:uppercase}
.hero-explore a{display:inline-flex;align-items:center;min-height:44px;font-weight:600;text-decoration:none}
.hero-explore a:hover{text-decoration:underline}
.project-demo-link{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:44px;padding:10px 14px;border:1px solid var(--line);border-radius:3px;white-space:nowrap;text-decoration:none;color:var(--navy);font-size:14px;font-weight:600}
.project-demo-link svg{width:18px;height:18px}
.project-demo-link:hover{background:#eee8dc;border-color:var(--gold)}
#career,#projects,#articles,#contact{scroll-margin-top:110px}
@media(max-width:760px){.hero-explore{gap:4px 16px;margin-top:18px;padding-top:14px}.hero-explore>span{flex-basis:100%}.hero-explore a{font-size:14px}.discipline{margin-top:18px}.intro{margin-top:20px}.actions{margin-top:24px;gap:12px}.actions .button{padding:14px 18px;font-size:15px;gap:10px}.hero .eyebrow{margin-bottom:20px}.home-work-location{margin-top:16px}}
@media print{.hero-explore,.project-demo-link{display:none}}

@media(min-width:1101px){.hero .eyebrow{margin-bottom:20px}.hero .intro{margin-top:20px}.hero .actions{margin-top:26px}.hero-explore{gap:8px 14px;font-size:13px}.hero-explore>span{font-size:11px}}
