:root{color-scheme:dark;--green:#1dbf60;--text:#efefef;--line:#4b4b4b;--width:1300px}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:110px}body{margin:0;background:#000;color:var(--text);font-family:Lato,Arial,sans-serif;font-size:22px;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 24px}h1{font-size:50px}h2{font-size:40px}h3{font-size:28px}h4{font-size:24px}h5{font-size:22px}p{margin:0 0 22px}button,a{-webkit-tap-highlight-color:transparent}a:focus-visible,button:focus-visible{outline:2px solid var(--green);outline-offset:6px}[hidden]{display:none!important}.container{width:min(var(--width),calc(100% - 100px));margin-inline:auto}.header{height:90px;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:152px;height:12px}.header nav{display:flex;gap:38px;align-items:center}.header nav a{font:600 20px Montserrat,Arial,sans-serif;color:#fff}.header nav a:hover{color:var(--green)}.header nav a[aria-current]{text-decoration:underline;text-underline-offset:6px;text-decoration-thickness:1px}.menu-toggle{background:none;border:1px solid #555;padding:8px 12px;font-size:16px}.skip{position:fixed;z-index:100;top:8px;left:10px;transform:translateY(-160%);background:#000;padding:10px}.skip:focus{transform:translateY(0)}.hero{height:1080px;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:20px;margin:0;font-size:50px}.home-content{padding-top:60px}.intro{text-align:center;margin-bottom:38px}.intro h1{font-size:65px;line-height:1.15;font-weight:700;letter-spacing:-1.5px}.intro h1 span{display:block;color:var(--green);margin-top:6px}.intro hr{width:10%;border:0;border-top:2px solid #fff;margin:30px auto 20px}.intro>p{font-size:26px}.bio p{margin-bottom:28px}.prose{overflow-wrap:anywhere}.prose blockquote{border-left:3px solid var(--green);padding:0 0 0 25px;margin:40px 0;font-size:24px;font-style:italic}.highlights{display:grid;grid-template-columns:repeat(3,1fr);gap:32px;text-align:center;margin:45px 0}.highlights p{margin:8px 0;font-size:20px}.highlights h4{margin-bottom:15px}.divider{font-size:24px;display:flex;align-items:center;gap:26px;justify-content:center;text-align:center;margin:60px auto;max-width:80%}.divider:before,.divider:after{content:'';flex:1;border-top:1px dotted #aaa;min-width:20px}.divider span{flex-shrink:1}.feature{display:grid;grid-template-columns:1fr 1fr;gap:50px;align-items:center;padding:0 25px;margin-bottom:70px}.feature.reverse .feature-image{order:2}.feature img{width:100%}.feature h3{font-size:25px}.feature .button{margin-top:30px}.button{border:1px solid #fff;padding:17px 38px;display:inline-block;font:600 14px 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:20px}.button.solid:hover{background:#fff}.button span{margin-left:20px}.center{text-align:center}.more{margin:50px 0}.about{display:grid;grid-template-columns:2fr 1fr;gap:55px}.about>img{width:300px;margin:0 auto}.footer{border-top:1px solid var(--line);margin-top:70px;padding:50px 0 35px;text-align:center}.footer h2{font-size:24px}.social-links{display:flex;flex-wrap:wrap;justify-content:center;gap:14px 26px}.social-links a{font-size:18px;color:#eee}.social-links a:hover{color:var(--green)}.projects,.publications{padding-top:65px}.projects>.divider:first-child{margin-top:0}.masonry{columns:3;column-gap:10px}.project-card{break-inside:avoid;position:relative;margin:0 0 10px;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:7px 7px 6px;opacity:1;transform:none;pointer-events:none}.card-caption h3{max-width:100%;overflow-wrap:anywhere;font-size:22px;line-height:1.3;margin:0;text-shadow:0 1px 3px #0009}.card-caption p{font-size:15px;margin:0;color:#ddd}.project-card:hover .card-caption,.project-card:focus-within .card-caption{opacity:1;transform:none}.carousel-track{display:flex;gap:20px;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;overscroll-behavior-x:contain}.carousel-track .project-card{flex:0 0 calc((100% - 40px)/3);scroll-snap-align:start;margin:0}.carousel-track img{aspect-ratio:1;object-fit:cover}.detail{padding-top:65px}.detail h1{font-size:40px;max-width:1000px;margin-bottom:45px}.breadcrumb{font-size:16px;margin-bottom:24px}.detail-grid{display:grid;grid-template-columns:2fr 1fr;gap:45px;align-items:start}.gallery a{display:block;margin-bottom:24px}.gallery img{width:100%}.project-description{font-size:20px}.metadata{margin-top:35px;font-size:17px}.metadata>div{border-top:1px solid #333;padding:15px 0}.metadata dt{font-family:Montserrat,sans-serif;color:white;font-weight:600}.metadata dd{margin:5px 0 0}.previous-next{display:flex;justify-content:space-between;align-items:center;border-top:1px solid #333;margin-top:60px;padding-top:30px;gap:24px;font-size:16px}.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:13px;margin-bottom:8px}.publications{max-width:1100px}.publication{margin:0 0 42px;padding:0 0 30px;border-bottom:1px solid #292929}.publication h3{font-size:23px;margin-bottom:15px}.publication p,.publication h5{font:400 20px/1.6 Lato,sans-serif;margin-bottom:12px}.publication a{display:inline-block;margin-right:18px}.blog-index,.simple{padding-top:70px;min-height:55vh}.blog-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:60px 40px}.blog-list img,.text-cover{aspect-ratio:16/10;object-fit:cover;width:100%;margin-bottom:20px}.blog-list h2{font-size:28px}.blog-list time,.article time{font-size:16px;color:#aaa;display:block;margin-bottom:14px}.read-more{font-size:17px}.text-cover{display:flex;flex-direction:column;justify-content:center;align-items:center;background:#0a2113;color:var(--green);font:600 65px Montserrat,sans-serif}.text-cover span{font:400 18px Lato,sans-serif;color:#bbb;margin-top:15px}.article{padding-top:65px;max-width:1000px}.article h1{font-size:44px}.article h2{font-size:34px;margin-top:40px}.article h3{margin-top:32px}.article img{margin:30px auto;max-height:750px;object-fit:contain}.article ul,.article ol{padding-left:28px}.prose li{margin-bottom:10px}.prose pre{overflow-x:auto}.prose table{font-size:16px;border-collapse:collapse;display:block;overflow-x:auto;max-width:100%}.prose td,.prose th{padding:12px;border:1px solid #444;text-align:left}.routstack{display:grid;grid-template-columns:240px minmax(0,1fr);gap:55px;padding-top:70px}.routstack aside{position:sticky;top:120px;align-self:start}.routstack aside h2{font-size:20px}.routstack aside a{display:block;font-size:16px;margin:12px 0}.routstack article h1{font-size:44px}.routstack article h2{font-size:32px;margin-top:40px}.routstack article img{max-width:600px;width:100%;margin:25px auto}.lightbox{border:0;background:#080808;color:#fff;padding:45px 20px 15px;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:16px;text-align:center;margin:12px 0 0}.lightbox-close{position:absolute;right:8px;top:0;background:none;border:none;font-size:36px;width:44px;height:44px}
@media(min-width:1025px) and (max-width:1400px){.container{--width:1100px}.header nav{gap:30px}}
@media(max-width:1024px){body{font-size:20px}.container{width:calc(100% - 60px)}.header{height:auto;min-height:80px;flex-wrap:wrap;padding:22px 30px;gap:20px}.header nav{gap:22px}.header nav a{font-size:16px}.hero{height:75vw;min-height:450px}.intro h1{font-size:48px}.feature{grid-template-columns:1fr;gap:35px;padding:0;max-width:750px;margin:0 auto 70px}.feature.reverse .feature-image{order:0}.feature h3{font-size:28px}.about{grid-template-columns:2fr 1fr;gap:30px}.highlights{gap:20px}.highlights p{font-size:17px}.masonry{columns:2}.detail-grid{grid-template-columns:1.4fr 1fr;gap:30px}.routstack{grid-template-columns:190px minmax(0,1fr);gap:30px}.card-caption{opacity:1;transform:none}}
@media(max-width:680px){html{scroll-padding-top:85px}.container{width:calc(100% - 40px)}.header{min-height:72px;padding:20px;gap:16px}.header nav{width:100%;flex-wrap:wrap;gap:18px}.header.enhanced nav{display:none;flex-direction:column;align-items:stretch;padding:15px 0}.header.enhanced nav.open{display:flex}.header.enhanced nav a{padding:9px 0;font-size:20px}.hero{height:65vh;min-height:360px;max-height:600px}.hero h1{font-size:40px}.home-hero img{object-position:57% center}.home-content{padding-top:45px}.intro h1{font-size:42px;letter-spacing:-1px}.intro>p{font-size:22px}.intro hr{width:60px}h1{font-size:40px}h2{font-size:32px}.bio p{margin-bottom:24px}.prose blockquote{font-size:21px;padding-left:18px}.highlights{grid-template-columns:1fr;gap:32px;margin:45px 0}.highlights p{font-size:19px}.divider{max-width:100%;font-size:19px;gap:15px;margin:45px auto}.feature h3{font-size:26px}.feature .button{margin-top:12px}.about{grid-template-columns:1fr}.about>img{width:260px}.footer{margin-top:45px;padding-top:35px}.social-links{gap:15px 23px}.masonry{columns:1}.card-caption{padding:6px 6px 5px}.carousel-track .project-card{flex-basis:88%}.carousel-track{gap:15px}.detail{padding-top:40px}.detail h1{font-size:32px;margin-bottom:28px}.detail-grid{grid-template-columns:1fr}.previous-next{flex-wrap:wrap;font-size:14px;gap:18px}.previous-next .all-projects{order:3;flex:1 0 100%}.publications{padding-top:40px}.publications>h2{font-size:30px}.publication h3{font-size:23px}.blog-list{grid-template-columns:1fr;gap:42px}.blog-index,.simple{padding-top:40px}.article{padding-top:40px}.article h1{font-size:32px}.article h2{font-size:28px}.routstack{grid-template-columns:1fr;padding-top:40px;gap:30px}.routstack aside{position:static;border-bottom:1px solid #333;padding-bottom:20px}.routstack aside nav{display:flex;gap:0 18px;flex-wrap:wrap}.routstack article h1{font-size:34px}.routstack article h2{font-size:28px}.routstack aside a{margin:5px 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:10px;row-gap:0;align-items:start}.masonry.enhanced .project-card{margin-bottom:10px}
@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:48px;height:48px;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;color:#eee}.social-links svg{width:26px;height:26px;display:block}.social-links a:hover{background:#142319;color:var(--green)}.carousel-track::-webkit-scrollbar{display:none}
@media(max-width:680px){.social-links{gap:4px}.social-links a{width:44px;height:44px}.hero{height:65svh}.intro h1{font-size:clamp(32px,10.7vw,42px)}.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,3px));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:6px;
 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:12px}
.home-content .feature-image img,.home-content .about>img{border-radius:12px}
img[src$="/media/eyecam.jpg"]{clip-path:inset(0 5px 0 0)}
.home-content .feature-image img[src$="/media/eyecam.jpg"]{clip-path:inset(0 5px 0 0 round 12px)}

/* Titles stay over the image; only the image zooms on hover. */
.project-card img{min-height:240px;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:60px}
.masonry.enhanced .project-card{margin-bottom:10px}
.project-card img.image-cover-tall,.gallery img.image-cover-tall{padding:clamp(18px,3vw,44px)}

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