/* Contemporary editorial styling, using the established palette and typefaces. */
:root{--bg:#f7f8f5;--ink:#1c2929;--sub:#586662;--line:#dbe1dc;--accent:#b9e36a}
body{font-size:1rem;line-height:1.7;-webkit-font-smoothing:antialiased}
.wrap{width:min(1240px,calc(100% - 96px))}
.nav{position:sticky;top:0;z-index:60;isolation:isolate;height:96px;gap:32px;border:0}
.nav::before{content:"";position:absolute;z-index:-1;inset:0 50%;width:100vw;transform:translateX(-50%);background:rgba(247,248,245,.94);border-bottom:1px solid var(--line);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}
.brand{font-size:30px;letter-spacing:-.075em}
.navlinks{gap:30px;font-size:.875rem;font-weight:500}
.navlinks a{position:relative;padding:8px 0}
.navlinks a::after{content:"";position:absolute;left:0;right:0;bottom:2px;height:1px;background:#648247;transform:scaleX(0);transform-origin:left;transition:transform 180ms ease}
.navlinks a:hover::after,.navlinks a.is-current::after{transform:scaleX(1)}
.navlinks a.is-current{color:#45633d}
.nav-toggle{display:none}
.navmark{font-size:.75rem;font-weight:600;letter-spacing:.1em}
.portfolio-home section[id]{scroll-margin-top:112px}
.eyebrow{font-size:.75rem;letter-spacing:.12em;font-weight:600;color:#5c7566;line-height:1.6}
.section{padding:100px 0}
.sectionhead{margin-bottom:44px}
.sectionhead h2,.about h2,.contact h2{font-weight:700;font-size:clamp(2.25rem,4vw,3.6rem);line-height:1.14;letter-spacing:-.05em}
/* Name, introduction and portrait form two complete, aligned columns. */
.hero-modern{padding:46px 0 84px;min-height:0}
.hero-modern .hero-meta{align-items:center;gap:24px}
.hero-modern .status{font-size:.8125rem}
.hero-layout{display:grid;grid-template-columns:minmax(0,1fr) 38%;gap:72px;margin-top:54px;align-items:start}
.hero-main{min-width:0}
.hero-modern h1{font-size:clamp(4rem,7.8vw,7rem);line-height:1.02;font-weight:800;letter-spacing:-.065em;margin:0 0 30px}
.hero-modern .hero-fields{font-size:1.0625rem;line-height:1.65;max-width:34rem;margin:0 0 18px;text-wrap:pretty}
.hero-modern .hero-equation{font-size:.8125rem;color:#58703f;font-weight:700;line-height:1.6;letter-spacing:.085em;margin:0 0 32px}
.hero-modern .hero-description{font-size:1.0625rem;line-height:1.8;max-width:34.5rem;margin:0;color:var(--sub)}
.hero-modern .portrait{width:100%;aspect-ratio:1;object-fit:cover;object-position:center 35%;border-radius:14px}
.hero-modern .hero-aside{margin:28px 0 0 0;padding:0 0 0 20px;gap:3px;max-width:100%;width:auto;border-color:#b7c7b6}
.hero-modern .hero-aside>span{font-size:.75rem;margin-bottom:4px;letter-spacing:.05em}
.hero-modern .hero-aside strong{font-size:.9375rem;font-weight:600;line-height:1.55}
.hero-modern .hero-aside small{font-size:.875rem;line-height:1.6}
.hero-modern .textlink{margin-top:28px;display:inline-block;padding-bottom:7px;border-color:#809774;font-size:.875rem;font-weight:600}
/* Project media carry the design; thin borders and restrained surfaces frame them. */
#projects{border-top:1px solid var(--line)}
#projects .sectionhead{display:grid;grid-template-columns:1fr 1.15fr;gap:64px;align-items:start}
#projects .sectionhead>p{margin:4px 0 0;max-width:40rem;font-size:1rem;line-height:1.8}
.projectgrid{gap:28px}
.project-link{display:block;min-width:0;color:inherit;text-decoration:none;border-radius:14px}
.project-link--featured{grid-column:1 / -1}
.project-link:focus-visible{outline:3px solid #648247;outline-offset:5px}
.project-link .projectcard{height:100%}
.projectcard{border:1px solid var(--line);border-radius:14px;overflow:hidden;display:flex;flex-direction:column;background:#fff;box-shadow:none;transition:none}
.projectcard:hover{transform:none;box-shadow:none}
.projectcard .cardimage{height:auto;aspect-ratio:16 / 10;background:#101716;flex-shrink:0}
.projectcard .cardimage video{width:100%;height:100%;object-fit:contain}
.projectcard .cardbody{padding:30px;flex:1;display:flex;flex-direction:column}
.cardbody .eyebrow{font-size:.75rem;letter-spacing:.09em;line-height:1.6}
.cardbody h3{font-size:1.625rem;font-weight:700;letter-spacing:-.035em;line-height:1.25;margin:14px 0 16px}
.cardbody p{margin:0 0 26px;min-height:0;line-height:1.75;color:var(--sub)}
.cardbody small{margin-top:auto;padding-top:16px;font-size:.8125rem;font-weight:500;line-height:1.65;color:#49624a;border-color:#e4e9e2}
.project-cta{width:max-content;margin-top:18px;padding-bottom:3px;border-bottom:1px solid #8da181;color:#314d37;font-size:.875rem;font-weight:600}
.projectcard--featured{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,.75fr)}
.projectcard--featured .cardimage{min-height:420px;aspect-ratio:auto}
.projectcard--featured .cardbody{justify-content:center;padding:44px}
.projectcard--featured .cardbody small{margin-top:0}
.industry-summary{height:100%;min-height:0;padding:38px;background:#263b35;gap:22px}
.industry-summary strong{font-size:clamp(1.625rem,3vw,2.375rem);font-weight:500;letter-spacing:-.025em}
.industry-summary>span{font-size:1rem;font-weight:600}
.industry-summary small{font-size:.75rem;letter-spacing:.09em}
#projects .remote-sensing-image{background:#303431}
#projects .remote-sensing-image img{object-fit:contain;transform:none}
/* Compact experience and education with a consistent reading rhythm. */
.dark{background:#20332d;color:#f7faf4}
.dark .eyebrow{color:var(--accent)}
.timeline,.timeline>div{border-color:#4c6056}
.timeline>div{grid-template-columns:29% 1fr;padding:30px 0}
.timeline time{font-size:.875rem;color:#c1cfc6}
.timeline h3{font-size:1.375rem;font-weight:600;letter-spacing:-.02em}
.timeline strong{font-size:.875rem;font-weight:500;color:#c2df9a}
.timeline p{font-size:1rem;line-height:1.7;max-width:43rem;margin-top:10px}
.education{gap:56px}
.education>div{border-top:1px solid #9aaf92;padding-top:26px}
.education h3{font-size:1.5rem;font-weight:700;line-height:1.35}
.education p{line-height:1.75}
/* The supplied lab photograph makes the existing About section personal. */
.about{background:#e9eee5}
.about-modern{display:grid;grid-template-columns:44% minmax(0,1fr);gap:80px;align-items:center}
.lab-photo{margin:0;min-width:0}
.lab-photo img{width:100%;height:auto;aspect-ratio:4 / 5;object-fit:cover;object-position:center 57%;border-radius:14px}
.about-copy{min-width:0}
.about-copy h2{margin:16px 0 32px}
.about-copy h2 em{font-style:normal;color:#648247}
.about-copy p{font-size:1.0625rem;line-height:1.85;color:#43544b;margin:0 0 22px;max-width:34rem}
.about-copy p:last-child{margin-bottom:0}
/* Contact and footer retain the existing actions. */
.contact-grid{gap:80px}
.contact-intro h2{font-size:clamp(2rem,3.5vw,3.2rem);max-width:31rem}
.contact-intro>p{margin-top:24px}
.contact-email{font-size:1rem;margin-top:8px;border-color:#84977b}
.contact-form{border-radius:14px;padding:32px;border-color:var(--line);background:#fff}
.form-field input,.form-field textarea{border-radius:6px;border-color:#bcc9bc;background:#fafbf9;font-size:1rem}
.form-field label{font-size:.875rem;font-weight:600}
.contact-send{border-radius:6px;font-size:.9375rem;font-weight:600;padding:14px 24px;background:#243c31}
.contact .form-note{font-size:.8125rem;line-height:1.7}
footer{background:var(--bg);color:var(--sub);padding:30px 0;border-top:1px solid var(--line)}
.footergrid{gap:24px;flex-wrap:wrap;font-size:.8125rem}
.footergrid strong{font-size:.8125rem;color:var(--ink);letter-spacing:.04em}
.footergrid a{text-underline-offset:5px}
.footergrid a:hover{text-decoration:underline}
/* Existing project pages share the same quiet visual language. */
.casehero{border-radius:14px;overflow:hidden;background:#e9eee5}
.casebody{max-width:850px}
.casebody h2{font-weight:700}
.callout{border-radius:10px;background:#e9eee5}
@media(max-width:1050px){
 .wrap{width:calc(100% - 64px)}
 .navmark{display:none}
 .hero-layout{gap:42px}
 .hero-modern h1{font-size:clamp(4rem,8.3vw,6rem)}
 #projects .sectionhead{gap:40px}
 .about-modern{gap:44px}
 .contact-grid{gap:44px}
}
@media(max-width:800px){
 .wrap{width:min(600px,calc(100% - 40px))}
 .nav{height:80px;gap:22px}
 .navlinks{gap:18px;font-size:.8125rem;overflow-x:auto;padding:12px 0;min-width:0}
 .nav-toggle{align-items:center;gap:10px;margin-left:auto;padding:9px 0;border:0;background:transparent;color:var(--ink);font:600 .8125rem/1 Manrope,sans-serif;letter-spacing:.04em;cursor:pointer}
 .nav-enhanced .nav-toggle{display:inline-flex}
 .nav-toggle-icon{position:relative;display:block;width:20px;height:14px}
 .nav-toggle-icon span{position:absolute;left:0;width:20px;height:1px;background:currentColor;transition:transform 180ms ease,top 180ms ease,opacity 180ms ease}
 .nav-toggle-icon span:nth-child(1){top:1px}
 .nav-toggle-icon span:nth-child(2){top:7px}
 .nav-toggle-icon span:nth-child(3){top:13px}
 .nav.is-open .nav-toggle-icon span:nth-child(1){top:7px;transform:rotate(45deg)}
 .nav.is-open .nav-toggle-icon span:nth-child(2){opacity:0}
 .nav.is-open .nav-toggle-icon span:nth-child(3){top:7px;transform:rotate(-45deg)}
 .nav.nav-enhanced .navlinks{position:absolute;top:calc(100% - 8px);right:0;display:flex;flex-direction:column;align-items:stretch;width:min(300px,calc(100vw - 40px));gap:0;overflow:visible;padding:14px 20px;background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:0 18px 45px -24px rgba(28,41,41,.45);opacity:0;visibility:hidden;pointer-events:none;transform:translateY(-8px);transition:opacity 180ms ease,transform 180ms ease,visibility 180ms ease}
 .nav.nav-enhanced.is-open .navlinks{opacity:1;visibility:visible;pointer-events:auto;transform:translateY(0)}
 .nav.nav-enhanced .navlinks a{width:100%;padding:11px 2px;font-size:.9375rem}
 .nav.nav-enhanced .navlinks a::after{bottom:7px;right:auto;width:28px}
 .section{padding:70px 0}
 .hero-modern{padding:30px 0 64px}
 .hero-modern .hero-meta{display:block}
 .hero-modern .status{margin-top:12px}
 .hero-layout{grid-template-columns:minmax(0,1fr);gap:36px;margin-top:36px}
 .hero-modern h1{font-size:clamp(3.75rem,12vw,5.25rem);margin-bottom:24px}
 .hero-modern .hero-fields{font-size:1rem;margin-bottom:16px}
 .hero-modern .hero-equation{margin-bottom:26px;font-size:.75rem}
 .hero-modern .hero-description{font-size:1rem;line-height:1.8}
 .hero-visual{display:grid;grid-template-columns:52% minmax(0,1fr);gap:22px;align-items:center}
 .hero-modern .portrait{width:100%;border-radius:10px}
 .hero-modern .hero-aside{margin:0;padding-left:14px}
 .hero-modern .hero-aside strong{font-size:.875rem}
 .hero-modern .hero-aside small{font-size:.8125rem}
 #projects .sectionhead{grid-template-columns:1fr;gap:22px;margin-bottom:32px}
 #projects .sectionhead>p{margin:0}
 .projectgrid{gap:24px}
 .project-link--featured{grid-column:auto}
 .projectcard .cardbody{padding:26px}
 .cardbody h3{font-size:1.5rem}
 .projectcard--featured{grid-template-columns:1fr}
 .projectcard--featured .cardimage{min-height:0;aspect-ratio:16 / 10}
 .projectcard--featured .cardbody{padding:26px}
 .timeline>div{grid-template-columns:1fr;gap:12px}
 .education{gap:34px}
 .about-modern{grid-template-columns:1fr;gap:36px}
 .lab-photo{max-width:440px;width:100%}
 .lab-photo img{aspect-ratio:4 / 5}
 .about-copy h2{margin-bottom:26px}
 .about-copy p{font-size:1rem}
 .contact-grid{gap:34px}
 .contact-form{padding:26px}
 .footergrid{gap:16px 26px}
}
@media(max-width:380px){
 .hero-visual{grid-template-columns:1fr}
 .hero-modern .portrait{max-width:280px}
 .hero-modern .hero-aside{margin-top:2px}
 .hero-modern h1{font-size:3.5rem}
}

/* Legal contact information */
.legal-page{padding:76px 0 96px;min-height:70vh}
.legal-page h1{font:700 clamp(2.75rem,5vw,4.5rem)/1.1 Manrope,sans-serif;letter-spacing:-.05em;margin:18px 0 48px}
.legal-page section{max-width:42rem;margin:0 0 36px}
.legal-page h2{font:600 1.25rem/1.4 Manrope,sans-serif;margin:0 0 16px}
.legal-page address{font-style:normal;font-size:1rem;line-height:1.9;color:var(--sub)}
.legal-page p{margin:8px 0;color:var(--sub)}
.legal-page a{text-decoration:underline;text-underline-offset:4px;overflow-wrap:anywhere}
@media(max-width:800px){.legal-page{padding:48px 0 64px}.legal-page h1{margin-bottom:36px}}

/* Pointer-only feedback for the project cards; transforms do not reflow the grid. */
@media (hover:hover) and (pointer:fine){
 #projects .projectcard{position:relative;transition:transform 220ms ease,box-shadow 220ms ease,border-color 220ms ease}
 #projects .projectcard:hover{z-index:1;transform:translateY(-5px) scale(1.012);border-color:#9cb68c;box-shadow:0 18px 38px -16px rgba(28,41,41,.26)}
 #projects .project-link:hover .project-cta{border-color:#314d37}
}
@media (prefers-reduced-motion:reduce){
 #projects .projectcard{transition:none}
 #projects .projectcard:hover{transform:none}
 .navlinks a::after,.nav-toggle-icon span,.nav.nav-enhanced .navlinks{transition:none}
}

/* A compact editorial tool index keeps every name visible within the About copy. */
#about .about-copy>p:last-of-type{margin-bottom:0}
#about .about-toolkit{position:relative;max-width:34rem;margin-top:28px;padding-top:18px;border-top:1px solid #c5d1c0}
#about .about-toolkit::before{content:"";position:absolute;left:0;top:-1px;width:48px;height:2px;background:#648247;transform-origin:left;animation:about-toolkit-accent 8s ease-in-out infinite alternate}
#about .about-toolkit-label{display:block;margin-bottom:10px;color:#52694a;font:700 .75rem/1.4 Manrope,sans-serif;letter-spacing:.12em;text-transform:uppercase}
#about .about-toolkit ul{display:flex;flex-wrap:wrap;gap:6px 20px;list-style:none;margin:0;padding:0}
#about .about-toolkit li{margin:0;padding:0}
#about .about-toolkit-core{color:#41613d;font:600 1.375rem/1.35 Manrope,sans-serif;letter-spacing:-.025em}
#about .about-toolkit .about-toolkit-workflow{margin-top:12px}
#about .about-toolkit .about-toolkit-engineering{margin-top:8px}
#about .about-toolkit-workflow,#about .about-toolkit-engineering{color:#43544b;font-size:.9375rem;line-height:1.55}
@keyframes about-toolkit-accent{from{transform:scaleX(.65);opacity:.55}to{transform:scaleX(1);opacity:1}}
@media(max-width:1050px){
 #about .about-toolkit ul{column-gap:16px}
 #about .about-toolkit-core{font-size:1.25rem}
}
@media(max-width:800px){
 #about .about-toolkit{margin-top:26px;padding-top:18px}
 #about .about-toolkit ul{gap:6px 16px}
 #about .about-toolkit-core{font-size:1.25rem}
}
@media(prefers-reduced-motion:reduce){
 #about .about-toolkit::before{animation:none;transform:none;opacity:.8}
}
