:root{color-scheme:dark;--green:#1dbf60;--text:#efefef;--line:#4b4b4b;--width:81.25rem}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:6.875rem}body{margin:0;background:#000;color:var(--text);font-family:Lato,Arial,sans-serif;font-size:1.375rem;line-height:1.55}a{color:var(--green);text-decoration:none;transition:color .2s}a:hover{color:#fff}img{display:block;max-width:100%;height:auto}button{font:inherit;color:inherit;cursor:pointer}h1,h2,h3,h4,h5,h6{font-family:Montserrat,Arial,sans-serif;color:#fff;font-weight:600;line-height:1.25;margin:0 0 1.5rem}h1{font-size:3.125rem}h2{font-size:2.5rem}h3{font-size:1.75rem}h4{font-size:1.5rem}h5{font-size:1.375rem}p{margin:0 0 1.375rem}button,a{-webkit-tap-highlight-color:transparent}a:focus-visible,button:focus-visible{outline:0.125rem solid var(--green);outline-offset:0.375rem}[hidden]{display:none!important}.container{width:min(var(--width),calc(100% - 6.25rem));margin-inline:auto}.header{height:5.625rem;display:flex;align-items:center;justify-content:space-between;padding:0 3%;background:#000;position:sticky;top:0;z-index:20}.brand{flex-shrink:0}.brand img{width:9.5rem;height:0.75rem}.header nav{display:flex;gap:2.375rem;align-items:center}.header nav a{font:600 1.25rem Montserrat,Arial,sans-serif;color:#fff}.header nav a:hover{color:var(--green)}.header nav a[aria-current]{text-decoration:underline;text-underline-offset:0.375rem;text-decoration-thickness:1px}.menu-toggle{background:none;border:1px solid #555;padding:0.5rem 0.75rem;font-size:1rem}.skip{position:fixed;z-index:100;top:0.5rem;left:0.625rem;transform:translateY(-160%);background:#000;padding:0.625rem}.skip:focus{transform:translateY(0)}.hero{height:67.5rem;position:relative;display:grid;place-items:center;overflow:hidden}.hero>img{position:absolute;width:100%;height:100%;object-fit:cover;object-position:center}.hero h1{position:relative;background:#0006;width:100%;text-align:center;padding:1.25rem;margin:0;font-size:3.125rem}.home-content{padding-top:3.75rem}.intro{text-align:center;margin-bottom:2.375rem}.intro h1{font-size:4.0625rem;line-height:1.15;font-weight:700;letter-spacing:-0.09375rem}.intro h1 span{display:block;color:var(--green);margin-top:0.375rem}.intro hr{width:10%;border:0;border-top:0.125rem solid #fff;margin:1.875rem auto 1.25rem}.intro>p{font-size:1.625rem}.bio p{margin-bottom:1.75rem}.prose{overflow-wrap:anywhere}.prose blockquote{border-left:0.1875rem solid var(--green);padding:0 0 0 1.5625rem;margin:2.5rem 0;font-size:1.5rem;font-style:italic}.highlights{display:grid;grid-template-columns:repeat(3,1fr);gap:2rem;text-align:center;margin:2.8125rem 0}.highlights p{margin:0.5rem 0;font-size:1.25rem}.highlights h4{margin-bottom:0.9375rem}.divider{font-size:1.5rem;display:flex;align-items:center;gap:1.625rem;justify-content:center;text-align:center;margin:3.75rem auto;max-width:80%}.divider:before,.divider:after{content:'';flex:1;border-top:1px dotted #aaa;min-width:1.25rem}.divider span{flex-shrink:1}.feature{display:grid;grid-template-columns:1fr 1fr;gap:3.125rem;align-items:center;padding:0 1.5625rem;margin-bottom:4.375rem}.feature.reverse .feature-image{order:2}.feature img{width:100%}.feature h3{font-size:1.5625rem}.feature .button{margin-top:1.875rem}.button{border:1px solid #fff;padding:1.0625rem 2.375rem;display:inline-block;font:600 0.875rem Montserrat,Arial,sans-serif;color:#fff;line-height:1.5}.button:hover{background:var(--green);border-color:var(--green);color:#000}.button.solid{background:var(--green);border-color:var(--green);font-size:1.25rem}.button.solid:hover{background:#fff}.button span{margin-left:1.25rem}.center{text-align:center}.more{margin:3.125rem 0}.about{display:grid;grid-template-columns:2fr 1fr;gap:3.4375rem}.about>img{width:18.75rem;margin:0 auto}.footer{border-top:1px solid var(--line);margin-top:4.375rem;padding:3.125rem 0 2.1875rem;text-align:center}.footer h2{font-size:1.5rem}.social-links{display:flex;flex-wrap:wrap;justify-content:center;gap:0.875rem 1.625rem}.social-links a{font-size:1.125rem;color:#eee}.social-links a:hover{color:var(--green)}.projects,.publications{padding-top:4.0625rem}.projects>.divider:first-child{margin-top:0}.masonry{columns:3;column-gap:0.625rem}.project-card{break-inside:avoid;position:relative;margin:0 0 0.625rem;overflow:hidden}.project-card img{width:100%;transition:transform .5s}.project-card a{display:block;position:relative;overflow:hidden;color:#fff}.project-card a::after{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;background:linear-gradient(to bottom,rgba(0,0,0,0) 20%,rgba(0,0,0,.02) 35%,rgba(0,0,0,.09) 50%,rgba(0,0,0,.22) 65%,rgba(0,0,0,.43) 80%,rgba(0,0,0,.62) 90%,rgba(0,0,0,.78) 100%)}.card-caption{position:absolute;inset:auto 0 0;z-index:2;padding:0.4375rem 0.4375rem 0.375rem;opacity:1;transform:none;pointer-events:none}.card-caption h3{max-width:100%;overflow-wrap:anywhere;font-size:1.375rem;line-height:1.3;margin:0;text-shadow:0 1px 0.1875rem #0009}.card-caption p{font-size:0.9375rem;margin:0;color:#ddd}.project-card:hover .card-caption,.project-card:focus-within .card-caption{opacity:1;transform:none}.carousel-track{display:flex;gap:1.25rem;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;overscroll-behavior-x:contain}.carousel-track .project-card{flex:0 0 calc((100% - 2.5rem)/3);scroll-snap-align:start;margin:0}.carousel-track img{aspect-ratio:1;object-fit:cover}.detail{padding-top:4.0625rem}.detail h1{font-size:2.5rem;max-width:62.5rem;margin-bottom:2.8125rem}.breadcrumb{font-size:1rem;margin-bottom:1.5rem}.detail-grid{display:grid;grid-template-columns:2fr 1fr;gap:2.8125rem;align-items:start}.gallery a{display:block;margin-bottom:1.5rem}.gallery img{width:100%}.project-description{font-size:1.25rem}.metadata{margin-top:2.1875rem;font-size:1.0625rem}.metadata>div{border-top:1px solid #333;padding:0.9375rem 0}.metadata dt{font-family:Montserrat,sans-serif;color:white;font-weight:600}.metadata dd{margin:0.3125rem 0 0}.previous-next{display:flex;justify-content:space-between;align-items:center;border-top:1px solid #333;margin-top:3.75rem;padding-top:1.875rem;gap:1.5rem;font-size:1rem}.previous-next>a{flex:1}.previous-next>a:last-child{text-align:right}.previous-next .all-projects{flex:0 0 auto;text-align:center}.previous-next small{display:block;color:#aaa;font-size:0.8125rem;margin-bottom:0.5rem}.publications{max-width:68.75rem}.publication{margin:0 0 2.625rem;padding:0 0 1.875rem;border-bottom:1px solid #292929}.publication h3{font-size:1.4375rem;margin-bottom:0.9375rem}.publication p,.publication h5{font:400 1.25rem/1.6 Lato,sans-serif;margin-bottom:0.75rem}.publication a{display:inline-block;margin-right:1.125rem}.blog-index,.simple{padding-top:4.375rem;min-height:55vh}.blog-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:3.75rem 2.5rem}.blog-list img,.text-cover{aspect-ratio:16/10;object-fit:cover;width:100%;margin-bottom:1.25rem}.blog-list h2{font-size:1.75rem}.blog-list time,.article time{font-size:1rem;color:#aaa;display:block;margin-bottom:0.875rem}.read-more{font-size:1.0625rem}.text-cover{display:flex;flex-direction:column;justify-content:center;align-items:center;background:#0a2113;color:var(--green);font:600 4.0625rem Montserrat,sans-serif}.text-cover span{font:400 1.125rem Lato,sans-serif;color:#bbb;margin-top:0.9375rem}.article{padding-top:4.0625rem;max-width:62.5rem}.article h1{font-size:2.75rem}.article h2{font-size:2.125rem;margin-top:2.5rem}.article h3{margin-top:2rem}.article img{margin:1.875rem auto;max-height:46.875rem;object-fit:contain}.article ul,.article ol{padding-left:1.75rem}.prose li{margin-bottom:0.625rem}.prose pre{overflow-x:auto}.prose table{font-size:1rem;border-collapse:collapse;display:block;overflow-x:auto;max-width:100%}.prose td,.prose th{padding:0.75rem;border:1px solid #444;text-align:left}.routstack{display:grid;grid-template-columns:15rem minmax(0,1fr);gap:3.4375rem;padding-top:4.375rem}.routstack aside{position:sticky;top:7.5rem;align-self:start}.routstack aside h2{font-size:1.25rem}.routstack aside a{display:block;font-size:1rem;margin:0.75rem 0}.routstack article h1{font-size:2.75rem}.routstack article h2{font-size:2rem;margin-top:2.5rem}.routstack article img{max-width:37.5rem;width:100%;margin:1.5625rem auto}.lightbox{border:0;background:#080808;color:#fff;padding:2.8125rem 1.25rem 0.9375rem;max-width:94vw;max-height:94vh}.lightbox::backdrop{background:#000e}.lightbox img{max-height:75vh;max-width:85vw;object-fit:contain;margin:auto}.lightbox p{font-size:1rem;text-align:center;margin:0.75rem 0 0}.lightbox-close{position:absolute;right:0.5rem;top:0;background:none;border:none;font-size:2.25rem;width:2.75rem;height:2.75rem}
@media(min-width:1025px) and (max-width:1400px){.container{--width:68.75rem}.header nav{gap:1.875rem}}
@media(max-width:1024px){body{font-size:1.25rem}.container{width:calc(100% - 3.75rem)}.header{height:auto;min-height:5rem;flex-wrap:wrap;padding:1.375rem 1.875rem;gap:1.25rem}.header nav{gap:1.375rem}.header nav a{font-size:1rem}.hero{height:75vw;min-height:28.125rem}.intro h1{font-size:3rem}.feature{grid-template-columns:1fr;gap:2.1875rem;padding:0;max-width:46.875rem;margin:0 auto 4.375rem}.feature.reverse .feature-image{order:0}.feature h3{font-size:1.75rem}.about{grid-template-columns:2fr 1fr;gap:1.875rem}.highlights{gap:1.25rem}.highlights p{font-size:1.0625rem}.masonry{columns:2}.detail-grid{grid-template-columns:1.4fr 1fr;gap:1.875rem}.routstack{grid-template-columns:11.875rem minmax(0,1fr);gap:1.875rem}.card-caption{opacity:1;transform:none}}
@media(max-width:680px){html{scroll-padding-top:5.3125rem}.container{width:calc(100% - 2.5rem)}.header{min-height:4.5rem;padding:1.25rem;gap:1rem}.header nav{width:100%;flex-wrap:wrap;gap:1.125rem}.header.enhanced nav{display:none;flex-direction:column;align-items:stretch;padding:0.9375rem 0}.header.enhanced nav.open{display:flex}.header.enhanced nav a{padding:0.5625rem 0;font-size:1.25rem}.hero{height:65vh;min-height:22.5rem;max-height:37.5rem}.hero h1{font-size:2.5rem}.home-hero img{object-position:57% center}.home-content{padding-top:2.8125rem}.intro h1{font-size:2.625rem;letter-spacing:-1px}.intro>p{font-size:1.375rem}.intro hr{width:3.75rem}h1{font-size:2.5rem}h2{font-size:2rem}.bio p{margin-bottom:1.5rem}.prose blockquote{font-size:1.3125rem;padding-left:1.125rem}.highlights{grid-template-columns:1fr;gap:2rem;margin:2.8125rem 0}.highlights p{font-size:1.1875rem}.divider{max-width:100%;font-size:1.1875rem;gap:0.9375rem;margin:2.8125rem auto}.feature h3{font-size:1.625rem}.feature .button{margin-top:0.75rem}.about{grid-template-columns:1fr}.about>img{width:16.25rem}.footer{margin-top:2.8125rem;padding-top:2.1875rem}.social-links{gap:0.9375rem 1.4375rem}.masonry{columns:1}.card-caption{padding:0.375rem 0.375rem 0.3125rem}.carousel-track .project-card{flex-basis:88%}.carousel-track{gap:0.9375rem}.detail{padding-top:2.5rem}.detail h1{font-size:2rem;margin-bottom:1.75rem}.detail-grid{grid-template-columns:1fr}.previous-next{flex-wrap:wrap;font-size:0.875rem;gap:1.125rem}.previous-next .all-projects{order:3;flex:1 0 100%}.publications{padding-top:2.5rem}.publications>h2{font-size:1.875rem}.publication h3{font-size:1.4375rem}.blog-list{grid-template-columns:1fr;gap:2.625rem}.blog-index,.simple{padding-top:2.5rem}.article{padding-top:2.5rem}.article h1{font-size:2rem}.article h2{font-size:1.75rem}.routstack{grid-template-columns:1fr;padding-top:2.5rem;gap:1.875rem}.routstack aside{position:static;border-bottom:1px solid #333;padding-bottom:1.25rem}.routstack aside nav{display:flex;gap:0 1.125rem;flex-wrap:wrap}.routstack article h1{font-size:2.125rem}.routstack article h2{font-size:1.75rem}.routstack aside a{margin:0.3125rem 0}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{transition:none!important;animation:none!important}}
/* Place projects in their original reading order, packing natural image heights. */
.masonry.enhanced{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-auto-rows:1px;column-gap:0.625rem;row-gap:0;align-items:start}.masonry.enhanced .project-card{margin-bottom:0.625rem}
@media(max-width:1024px){.masonry.enhanced{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:680px){.masonry.enhanced{grid-template-columns:minmax(0,1fr)}}

.social-links a{width:3rem;height:3rem;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;color:#eee}.social-links svg{width:1.625rem;height:1.625rem;display:block}.social-links a:hover{background:#142319;color:var(--green)}.carousel-track::-webkit-scrollbar{display:none}
@media(max-width:680px){.social-links{gap:0.25rem}.social-links a{width:2.75rem;height:2.75rem}.hero{height:65svh}.intro h1{font-size:clamp(2rem,10.7vw,2.625rem)}.detail-grid,.feature,.about{min-width:0}.project-card{min-width:0}}

/* White presentation surfaces for the transparent Mentra product imagery. */
img.image-white{background:#fff}
.project-card img.image-cover-tall,.gallery img.image-cover-tall{aspect-ratio:4/3;object-fit:contain;background:#f7f7f7}

/* Quiet page entrances; content stays visible without JavaScript. */
@keyframes load-clear{
 from{filter:blur(var(--entrance-blur,0.1875rem));opacity:.65}
 to{filter:none;opacity:1}
}
.header .brand,.header nav,.header .menu-toggle{
 animation:load-clear 900ms cubic-bezier(.22,1,.36,1) both;
}
.hero>img{
 --entrance-blur:0.375rem;
 animation:load-clear 900ms cubic-bezier(.22,1,.36,1) both;
}
@media print{
 .header .brand,.header nav,.header .menu-toggle,.hero>img{animation:none!important;filter:none!important;opacity:1!important;transform:none!important}
}

/* A little breathing room around homepage project photography. */
.home-content .feature-image{width:70%;justify-self:center}
.more .button{border-radius:0.75rem}
.home-content .feature-image img,.home-content .about>img{border-radius:0.75rem}
img[src$="/media/eyecam.jpg"]{clip-path:inset(0 0.3125rem 0 0)}
.home-content .feature-image img[src$="/media/eyecam.jpg"]{clip-path:inset(0 0.3125rem 0 0 round 0.75rem)}

/* Titles stay over the image; only the image zooms on hover. */
.project-card img{min-height:15rem;object-fit:cover}
@media(hover:hover) and (prefers-reduced-motion:no-preference){.project-card a:hover img{transform:scale(1.035)}}
.projects>.carousel{margin-bottom:3.75rem}
.masonry.enhanced .project-card{margin-bottom:0.625rem}
.project-card img.image-cover-tall,.gallery img.image-cover-tall{padding:clamp(1.125rem,3vw,2.75rem)}

.project-image-pending{min-height:15rem;aspect-ratio:4/3;background:#151515}
.detail-grid.no-image{grid-template-columns:minmax(0,47.5rem)}
.detail-grid.no-image .gallery{display:none}

/* Scale desktop typography and layout together; retain mobile sizing. */
html{font-size:100%}
@media(min-width:1025px){html{font-size:85%}}
